Типы данных: 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; строки склеиваются знаком+. - Паскаль строго следит за совместимостью типов — нельзя смешивать несовместимые виды данных.