Урок #2 -- Введение в типы данных - Pascal

Видео: https://www.youtube.com/watch?v=wbrBO4uSCig

Продолжим наше изучение языка программирования Паскаль. Обсудим какие типы данных бывают в Паскале.

Выделяют три группы типов данных (переменных):

  • Логические
  • Текстовые
  • Числовые

Числовые типы

В Паскале имеется 2 числовых типа:

  • integer -- целые числа
  • real -- вещественные числа

С числовыми типами мы уже сталкивались в первом уроке.
Объявлять данные переменные можно так:

var
  x, y, z: integer; // три переменных целого типа
  myCoolVar : integer; // одна переменная целого типа  с именем myCoolVar
  tt, b: real; // две переменные вещественного типа
 

Изучите пример кода, работающего с переменными вещественного и целого типа:

// пример работы с числовыми типами
program TypeUsingExamples;
var
  x, y, z: integer; // 
  sd: integer;
  myVal, oneMore: real;

begin
  x := 5; // присваиваем переменной целого типа,целое значение
  z := x; // присваивание целочисленной переменному значения другой переменной того же типа.
  writeln(z); // вывод значения переменной без комментария
  
  z := 15;
  writeln('z= ', z); // вывод значения с комментарием
  
  oneMore := 7.8123452346; // присваивания дроби вещественной переменной
  writeln(oneMore); // печать значения вещественного типа 
  
  y := z + x; // складываем две целочисленные переменные,присваиваем результат третей переенной того же типа
  writeln('y1= ', y); 
  
  // y :=  x + oneMore; 
  // <--- в предыдущей строки ошибка! при сложении целого с вещественным получаем вещественый тип,
   //   который нельзя присваивать переменной целого типа
  
  myVal := 45.7;
  oneMore :=  y + myVal; // сложение целого и вещественного значений и присвоение результата вещественной переменной (что допустимо)
  writeln('oneMore == ', oneMore);
  
end.

"Текстовые" типы

Символьных типов также имеется два:

  • char -- для единственного символа (собственно символьный тип)
  • string -- строковый тип, для хранения строк.

Рассмотрим пример работы со строками:

// пример работы с символьными и строковыми типами данных
program SymbolTypesExample;
var 
  str, str2: string; // две переменных строкового типа
  firstStr: string;
  ch, j, p : char; // одна переменная символьного типа

begin
 // присвоение значение и вывод на экран переменных строкового типа
  str := 'Привет Мир!';
  writeln(str);
  
  str2 := 'Привет ВГУ!'; 
  writeln(str2);
  
  firstStr := '#';
  writeln(firstStr);
  
// далее поработаем с типом char

  ch := '%'; //  присваивание значения переменной символьного типа
  writeln('ch равно: ', ch);
  
// Сложение строк

  firstStr := str + ' ___ ' + str2; // конкатенация двух строк и строкового литерала
  writeln('firstStr1 = [', firstStr, ']');

  firstStr := str + ' * ' + ch + '^'; // конкатенация (сложение) строк и символа
  writeln('firstStr2 = [', firstStr, ']');
  
end.

Логический тип

Логические переменный позволяются моделировать ответы типа да/нет и значения истина/ложь
Логические тип в Паскаль только один -- boolean, который может принивать только два значения (одно из двух в конкретный момент времени):

  1. true -- истина
  2. false -- ложь

Именно логический тип используется оператором if для определения необходимости выполнения основного или альтернативного (еlse) действия/набор действий.

Рассмотрим пример, демонстрирующий возможности использования переменных логического типа:

// простой пример использования переменных логического типа
program BooleanTypeUsage;
var 
  b, c: boolean; 
begin
  b := true; // истина
  c := false; // ложь
  
  write('Для c ');
  if (c) then 
  begin //если c истинно, то выполнится блок ниже
    writeln('это так!');
  end else // а если ложно то другой:
  begin
    writeln('это не так!');
  end;
  
  write('Для b ');
  if (b) then 
  begin //если c истинно, то выполнится блок ниже
    writeln(' это так!');
  end else // а если ложно то другой:
  begin
    writeln('это не так!');
  end;
 
end.

А также пример, где показано как можно записывать результаты логических выражений в переменные логического типа:

program BooleanTypeUsage;
var 
  b, c, d, e, h : boolean; // 5 переменных логического типа
  i, j: integer; // две переменных целого типа
begin
   
  b :=  8 < 20; //  присваиваем логического значение выражения переменной логического типа
  c :=  9 > 4; //  аналогично
  d := 56 >= 34;  //  аналогично
  
  i := 28;
  j := 26;
  
  h :=  i > j;  //  присваиваем логическое значение выражения переменной логического типа (использование переменных)
  
  write('Для c ');
  if (c) then 
  begin //если c истинно, то выполнится блок ниже
    writeln('это так!');
  end else // а если ложно то другой:
  begin
    writeln('это не так!');
  end;
  
  write('Для b ');
  if (b) then 
  begin //если c истинно, то выполнится блок ниже
    writeln(' это так!');
  end else // а если ложно то другой:
  begin
    writeln('это не так!');
  end;
  
  write('Для h ');
  if (h) then 
  begin //если c истинно, то выполнится блок ниже
    writeln(' это так!');
  end else // а если ложно то другой:
  begin
    writeln('это не так!');
  end;
  
end.  

Улучшим последний пример, для этого уменьшим дублирование строковых литералов, создав две переменные типа string (посмотрите как они используются):

program BooleanTypeUsage;
var
  b, c, d, e, h : boolean; // 5 переменных логического типа
  i, j: integer; // две переменных целого типа
  comTrue, comFalse: string; // две переменные строкового типа
begin
    
  b :=  8 < 20; //  присваиваем логического значение выражения переменной логического типа
  c :=  9 > 4; //  аналогично
  d := 56 >= 34;  //  аналогично
   
  i := 28;
  j := 26;
  
  comTrue := 'это так!'; // запишем комментарий (литерал) в переменную для многократного использования
  comFalse := 'это не так!';
   
  h :=  i > j;  //  присваиваем логическое значение выражения переменной логического типа (использование переменных)
   
  write('Для c ');
  if (c) then
  begin 
    writeln(comTrue);
  end else 
  begin
    writeln(comFalse);
  end;
   
  write('Для b ');
  if (b) then
  begin 
    writeln(comTrue); // используем строковую переменную для вывода комментария
  end else 
  begin
    writeln(comFalse);
  end;
   
  write('Для h ');
  if (h) then
  begin 
    writeln(comTrue);
  end else 
  begin
    writeln(comFalse);
  end;
   
end.