Типы данных: integer, real, boolean, char, string

Урок разбирает пять основных типов данных Паскаля и объясняет, какой тип выбрать для каждой задачи.

Тип данных — это вид информации, который хранит переменная: целое число, дробь, символ, строка или логическое значение.

Зачем нужны типы

Почему нельзя просто сказать «это переменная» и складывать в неё что угодно? Потому что компьютеру важно знать, как хранить и обрабатывать данные. Число 5 и текст «5» в памяти выглядят по-разному: число можно умножить, а текст — склеить с другим текстом. Тип данных — это и есть указание машине, какого рода значение лежит в переменной и что с ним можно делать.

Аналогия: на кухне разные продукты хранят по-разному. Молоко — в холодильнике, крупу — в банке, специи — в маленьких ёмкостях. Нельзя налить молоко в банку для соли. Так и типы: каждый создан под свой вид данных. Паскаль строго следит за типами — и это снова его дисциплинирующая черта: вы не сможете случайно сложить число с буквой и получить бессмыслицу.

integer — целые числа

Тип integer хранит целые числа — без дробной части: 0, 7, -42, 1000. Это самый частый тип в школьных задачах: количество предметов, номер дня, возраст, счёт в игре. С целыми числами работают сложение, вычитание, умножение и особые операции целочисленного деления (о них — в отдельном уроке).

var
  count: integer;
begin
  count := 25;
  count := count * 4;
  writeln(count);   // 100
end.

У integer есть границы: примерно от минус двух миллиардов до плюс двух миллиардов. Для школьных задач этого хватает с запасом. Если нужны очень большие числа, в Паскале есть тип int64 с гораздо более широким диапазоном.

real — дробные числа

Тип real (от англ. «вещественный») хранит числа с дробной частью: 3.14, -0.5, 100.0. Обратите внимание: разделитель целой и дробной части — точка, а не запятая. 3.14 — правильно, 3,14 — ошибка.

var
  price: real;
begin
  price := 149.90;
  writeln('Цена со скидкой: ', price * 0.8);
end.

Важная особенность: результат обычного деления / в Паскале всегда имеет тип real, даже если делится нацело. 10 / 2 даст 5.0, а не 5. Поэтому переменную для хранения результата деления объявляйте как real. Ещё помните, что дробные числа в компьютере хранятся приближённо, поэтому иногда в выводе всплывают «хвосты» вроде 31.400000000000002 — это нормально для всех языков, не только Паскаля.

boolean — логический тип

Тип boolean хранит всего два возможных значения: true (истина) и false (ложь). Он отвечает на вопросы «да или нет»: число чётное? пользователь старше 18? игра окончена? Логические переменные — основа всех условий и проверок в программе.

var
  isAdult: boolean;
  age: integer;
begin
  age := 20;
  isAdult := age >= 18;   // сравнение даёт true или false
  writeln(isAdult);       // True
end.

Здесь выражение age >= 18 проверяется и даёт true, которое сохраняется в isAdult. Логический тип неразрывно связан с условным оператором if, который мы изучим в следующем разделе.

char — одиночный символ

Тип char хранит ровно один символ: букву, цифру-как-знак, знак препинания, пробел. Символ записывается в одинарных кавычках, как и строка, но содержит только один знак: 'A', '7', '?', ' '.

var
  grade: char;
begin
  grade := 'A';
  writeln('Ваша оценка: ', grade);
end.

Зачем отдельный тип для одного символа, если есть строки? Char экономнее и удобнее, когда нужно перебирать строку буква за буквой или работать с отдельными знаками — например, проверять, является ли символ цифрой. С этим типом мы подробно поработаем в разделе про строки.

string — строки текста

Тип string хранит текст любой длины: слово, фразу, целое предложение. Это, по сути, последовательность символов. Строки записываются в одинарных кавычках.

var
  greeting, name: string;
begin
  name := 'Аня';
  greeting := 'Привет, ' + name + '!';   // склейка строк
  writeln(greeting);
end.

Строки можно склеивать (конкатенировать) знаком +: 'Привет, ' + 'мир' даст 'Привет, мир'. Это удобно для составления сообщений из частей. Запустите аналог на Python:

name = 'Аня'
greeting = 'Привет, ' + name + '!'
print(greeting)

Вывод:

Привет, Аня!

Таблица-памятка по типам

ТипЧто хранитПример значения
integerцелые числа42, -7, 0
realдробные числа3.14, -0.5
booleanистину или ложьtrue, false
charодин символ'A', '?'
stringтекст'Привет, мир'

Попробуй сам

Объявите четыре переменные: name: string, age: integer, height: real, initial: char. Присвойте им данные о себе и выведите фразу вроде «Меня зовут Аня, мне 15 лет, мой рост 1.62 м, моя первая буква А». Поэкспериментируйте с врезкой на Python:

name = 'Аня'
age = 15
height = 1.62
initial = 'А'
print('Меня зовут ' + name + ', мне', age, 'лет, рост', height, 'м, буква', initial)

Вывод:

Меня зовут Аня, мне 15 лет, рост 1.62 м, буква А

Частые ошибки

  • Запятая вместо точки в real. Дробные числа пишутся через точку: 3.14, а не 3,14.
  • Результат деления в integer. Деление / всегда даёт real. Если присвоить его переменной типа integer, будет ошибка несовместимости типов.
  • Несколько символов в char. В переменную типа char нельзя положить 'AB' — только один символ. Для нескольких нужен string.
  • Сложение числа и строки. 'возраст' + 15 — ошибка: нельзя складывать строку и число. Число надо сначала превратить в строку или выводить через запятую в writeln.

Итоги

  • Тип данных говорит машине, какой вид информации хранит переменная и что с ней можно делать.
  • integer — целые, real — дробные (через точку), boolean — истина/ложь, char — один символ, string — текст.
  • Деление / всегда даёт real; строки склеиваются знаком +.
  • Паскаль строго следит за совместимостью типов — нельзя смешивать несовместимые виды данных.
Проверьте себя
1. Какой тип нужно выбрать для хранения роста человека в метрах (например, 1.75)?
Ainteger
Breal
Cchar
Dboolean
2. Сколько символов можно хранить в переменной типа char?
AСколько угодно
BРовно один
CНе больше 255
DТолько цифры
3. Какой результат у выражения 10 / 2 в Паскале и какого он типа?
A5, тип integer
B5.0, тип real
C5, тип real
DОшибка, нельзя делить
Поддержать проект