#7 Char Символьный тип данных в Pascal

В этом уроке мы продолжим изучать типы данных в Pascal.

Мы уже рассмотрели следующие типы данных:

  • integer -- целые числа.
  • real -- вещественные числа.
  • boolean -- логические значение true/false ("истина"/"ложь", "да"/"нет").
  • char -- символы. Изучим в этом уроке.

Символьные переменные

Переменные типа char объявляются как и переменные другого типа:

var a, b: char; // объявляем две переменные символьного типа

Символьные литералы

Ранее мы уже говорили о символьных литералах (и литералах нескольких других типов), в коде программы символьные литералы представлены одинарными символами взятыми в кавычки.

Значения литералов можно записывать в переменные:

var a, b: char; // объявляем две переменные символьного типа
begin 
  a := 'a';
  a := '5';
  a := ' '; // одинарный пробел -- тоже символ
  a := '#';
  b := a; // теперь b равно '#'
end.

Выражения с участием данных типа char

Сравнение символов

Данные типа char, как и остальные простые типы в Паскаль, могут сравниваться с данными того же типа, результат при таком сравнении данных имеет тип boolean. Также напомним, что выражение, результат которого является логическим типом (boolean), само называют логическим.

Примеры сравнения символов рассмотрим ниже.

Разбор задач

Пример №1

Объявите переменную символьного типа, сравните её с произвольным символьным литералом и выведите полученное в ходе сравнения значения на экран.

program qwe;
var a: char; // объявляем переменную символьного типа
begin
  
  a := '2'; { присваиваем переменной символ,
  например, символ цифры 2}
  
  { далее сравниваем значение переменной, 
    например,с символом решётки: }
  writeln('a = `#` : ', a = '#'); // выводим результат сравнения с пояснением слева
  
end.

Пример №2

Объявите две переменные символьного типа, присвойте им значения, сравните их и выведите полученные значения на экран.

program qwe;
var a,b: char; // объявляем две переменные символьного типа
begin
  
  a := 'b';
  b := 'b'; // присваиваем обеим переменным символьные литералы (в данном случае одинаковые)
  
  writeln('a = b : ', a = b); // выводим результат сравнения с пояснением слева
  
end.

Пример №3

Задача:

Получите от пользователя значения двух переменных символьных переменных, сравните их и выведите полученные значения на экран.

Решение:

program qwe;
var a,b: char; // объявляем две переменные символьного типа
begin

  writeln('vvedite simvol a:');
  readln(a); // читаем пользовательский ввод (консоль)
  
  writeln('vvedite simvol b:');
  readln(b); // читаем пользовательский ввод (консоль)
  
  writeln('a = b : ', a = b); // выводим результат сравнения с пояснением слева
  
  {ниже снова выведем результат сравнения,
  но уже подставив в пояснение знаечния литералов
   - чтобы было понятно какие именно значения сравнивались::}
  writeln(a, ' = ' , b,' : ', a = b); // выводим результат сравнения с пояснением слева
  
end.

Пример №4

Получите от пользователя три символьных значения.
Выведете на экран результат проверки составного условия:
""Первое первое значение равно третьему, но не равно второму"".

В этой задаче требуется провести сразу два сравнения, "потребовав" одновременности их выполнения, за одновременность отвечает логическая операция AND, используем её:

program Project1;

var a, b, c: char; // секция объявления переменных 
// в этих переменных мы сохраним полученные значения

begin  // начало тела программы

  //получим значения переменных от пользователя

  writeln('vvedite perviy simvol: ');
  readln(a);
  writeln('vvedite vtoroi simvol: ');
  readln(b);
  writeln('vvedite tretiy simvol: ');
  readln(c);

  writeln('otvet:', (a = b) AND (a <> c));

  readln(); // удерживаем консоль

end. 

Например:

Самостоятельная работа

Вопросы

  • Что такое литерал? Чем он отличается от переменной?
  • Литералы какого типа вы знаете? (ответ см. там)
  • Что такое аргумент процедуры?
    1. Опишите тип char. Какой вид должны иметь литералы типа char в программном коде?
    2. Литералы какие типов вы знаете? Как они записываются в программном коде?

    Задачи

    1. Объявите три переменные типа char, присвойте им значения и выведите эти значения на экран:
      • одним вызовов write (все три) -- т.е. передав несколько аргументов.
      • отдельно вызывая writeln для вывод значения каждой переменной
    2. Получите от пользователя значения переменной, сравните его со значением символа пятёрки $5$ и выведите результат сравнения на экран.
    3. Получите от пользователя значения двух символьных переменных, сравните значение каждой с символьным литералом (используйте два разных) и выведите два результата сравнения на экран -- 1) сравнение первой переменной с первым литералом и 2) сравнения второй переменной со вторым литералом.
    4. Получите от пользователя значения три символьных значения, выясните -- равны ли все они друг другу и уведомьте о результатах сравнения пользователя, выведя итог в консоль.
      Подсказка: для получения итогового результата нескольких сравнений используйте одну из логических операций.
    5. Получите от пользователя значения четырёх символьных значения, выясните -- выполняется ли следующее условие:

      """первая переменная равна третьей, не равна второй или третья равна четвертой"""

      Составьте по указанному условию логическое выражение и выведите его результат на экран.