#3 Типы данных в языке Pascal. Объявление переменных. Целые числа integer. Оператор присваивания. Инициализация в Паскаль
![]()
Примечание: далее мы начнём говорить о типах данных в Паскале. Выясним следующие:
- все данные в паскале имеют в определённый момент времени выполнения программы какой-то тип (разные данные -разный);
- узнаем какие конструкции обладают типом данных;
- поговорим о первом типе данных, который служит для описания целых чисел и имеет название «integer«. А о данный других типов поговорим уже в следующих уроках;
Деление данных на виды «по представлению в коде программы» на языке Pascal
Рассмотрим три вида представления данных в коде программы на языке Паскаль («виды представления данных«):
- В виде литералов — т.е. быть явно записаны в программе, например, как числа или строки в кавычках.
- По именам переменных. Переменная — это псевдоним (имя) для хранящихся в ней данных (например, числа или строки).
Любая переменная похожа на звание чемпиона — конкретный человек носящий это звание меняется, но само звание звучит одинаково (не меняется) для разных людей в разные годы.
Здесь звание чемпиона — это имя переменной, а конкретный человек — данные, в данный момент записанные в неё. Значения переменных в программе можно менять сколько угодно раз.
В отличие от литерала, переменная может сколько угодно раз в теле программы менять своё значение.
Подробнее о переменных мы поговорим далее в этом уроке.
Выражение — последовательность действий над фрагментами данных, приводящая к каком-то результату. В Паскале этот результат всегда имеет определённый тип. Выражения работающие с числами называют арифметическими выражениями. Существуют и другие типы выражений.
Подробнее о выражениях мы поговорим далее.
Таким образом, любые данные к коде программы на языке Паскаль можно отнести к одному из трёх видов:
- или к переменным
- или к литералам
- или к результатам выражений
Сильная типизация
Паскаль — язык т.н. статической («сильной» .»постоянной») типизации. Это значит, что для каждой переменной требуется, чтобы переменная было объявлена с указанием к какому типу она принадлежит до использования этой переменной в теле программы. Далее мы изучим базовые типы данных и, как следствие, переменные, которые используются в Паскале.
Типы данных в Pascal
В Паскале выделяют 5 типов данных (в списке сразу укажем ключевые слова, с помощью которых обозначаются эти типы в программном коде):
- integer — целые числа.
- real — вещественные числа.
- boolean — логический тип данных (значения типа да/нет, истина/лож).
- char — символьный тип.
- string — строковый тип.
В этом уроке мы будем говорить об понятия общих для всех типов данных на примере конкретного типа данных — integer (целые числа).
Чем отличаются «виды представления данных» от типов данных
Если виды представление данных — это просто различная форма записи обращения к какой либо информации в коде программы, то деление на типы данных — позволяет отнести к одной группе данные вне зависимости от их вида.
Как мы увидим позднее одного и того же типа могут быть и переменные и литералы и результаты выражений, а , в связи с чем, можно нарисовать такую диаграмму, иллюстрирующую соотношение между типами данных и видами представления данных:
Объявление переменных
Объявление переменных — это уведомление компилятора Паскаль о том, что в вашей программе будут использоваться переменные с указанными именами, каждая из которых имеет определённый (указанный в секции объявления) тип.
При объявлении переменной всегда указывают:
- Имя переменной.
- Тип переменной.
Объявление переменных происходит после ключевого слова var, до до тела программы.
В общем виде объявление переменной можно записать так (как схему):
Пример объявления переменных по одной:
То есть сначала идёт имя переменной, потом двоеточие, а потом один из типов данных (integer, string или иной — смотря какой требуется).
Объявление переменных списком
Также переменные можно объявлять списком (переменные одного типа можно просто перечислить через запятую, а потом после двоеточия указать типа):
— в списке имена переменных разделяются запятой, переносы строк между элементами списка значения не имеют.
В этом уроке мы поговорим о типе integer и рассмотрим примеры работы с этим типом данных.
Объявление целочисленных переменных
Integer — тип данных соответствующий целым числам.
Объявим переменную такого типа:
Можно объявить несколько переменных немного по-разному:
Перед запуском программы, все переменные которые используются в её теле необходимо объявить.
Если вы объявите какие-то переменные, но использовать их не будете, то к ошибке это не приведёт, но считается плохим стилем.
Оператор присваивания
Оператор — это знак операции, например знак суммы это «$+$».
Оператор присваивания обозначается знаком (из двух символов):
$:=$
Этот оператор позволяет записывать значение в переменную («запоминать это значение в переменной»), схема его работы такова:
Или, опять же схематично:
А теперь как это выглядит с конкрентыми именами переменных и значениями в коде (пример работы оператора присваивания):
Присваивание переменным литералов и вывод значений переменных на экран
Далее, в теле программы мы можем записывать в данную переменную значения, например:
— если это литералы, то они должны быть целочисленными, так как типы данных при присваивании в Паскаль всегда должны совпадать.
После операции присваивания ставится точка с запятой.
Целый тип также поддерживает ноль и отрицательные значения:
Присваивание значений одних переменных другим переменным
Можно присваивать одним переменным значение других, например:
Вывод значений переменных на экран
Чтобы узнать чему стало равно значение переменной $a$ можно вывести её значение в консоль, передав как аргумент в стандартную процедуру writeln() или write(). Тогда наш код будет выглядеть так:
Что мы получим в консоли? Запустите код, объявив обе переменные и оформив тело программы (его содержимое это и есть последние 3 строчки).
Переменные тоже можно передавать во writeln() в любом количестве, разделяя запятой, например две шутки:
в том числе и вперемежку с литералами, например символьными:
Присваивание переменным результатов выражений
Переменным можно присваивать результаты выражений. Для для переменных числового типа (integer или real) такие выражения называются арифметическими.
Целочисленным переменным можно присваивать значения выражений, которые получаются в результате выполнения операций:
- $+$ суммы (сложения)
- $-$ разности (вычитание)
- $*$ произведения (умножение)
— так как эти операции возвращают тип integer. Операцию же деления $/$ использовать нельзя, так она возвращает другой тип — real (вещественные числа). В Паскале любая попытка присвоить переменной данные другого типа приводит к ошибке («падению» программы).
Что определяет тип арифметических выражений
Также в выражения, значения которых можно присваивать переменным типа integer должны входить только:
- целочисленные литералы
- или целочисленные переменные.
Можно сказать что тип, который возвращается выражением (тип его результата) определяется двумя моментами:
- типом операций (допустимые перечислены выше)
- типом операндов. Операнды — это аргументы операций, подобно аргументам процедуры на их
основе производятся какие-то действия. Но операнды операций, в отличие от аргументов процедур, записываются не в скобках, а справа и слева от знака операций, так как мы это делаем в математических выражениях:
Таким образом, допустимы выражения:
А также выражения с участием других переменных:
Работа с результатом выражений
Результат выражения представляет собой данные, которые в Паскале всегда обладают с каким-то конкретным типом, потому с выражениями можно делать то же что и с переменными и литералами, а именно:
- Присваивать их значения переменным, например: a := 22 + 3* 999;
- Делать одни выражения частью других (в этом случае части называют подвыражениями), например сделаем предыдущее выражение подвыражением:
Подвыражение — это любая часть основного выражения, в которой есть хотя бы один оператор (как и выражение всегда обладает каким-то возвращаемым значение известного типа). Например:
Это подвыражение выражения:
Во write() и writeln() также можно передавать любое количество аргументов-выражений, а также аргументов другого вида:
Инициализация переменной
Инициализация переменной — это первое присваивание какого-то значения переменной. Это может быть:
- или значение литерала
- или считывание значения для переменной извне (например, пользователь может вводить значение переменных в консоли, но об этом мы поговорим в следующих уроках)
- или присваивание данной переменной значения другой, уже инициализированной переменной.
- или значение выражения, в котором или одни литералы или инициализированные переменные или и то и то
Таким образом один из примеров выше мы могли бы переписать с такими комментариями:
Программа выполняется сверху вниз построчно — перезапись значений переменных
Программа выполняется сверху вниз построчно, т. е. сначала первая строка тела программы потом вторая и т.д. — а потому значение переменной в каждой строке программы (по мере её достижения) меняется в случае если очередной раз присваивается какое-то другое значение, отличное от того, что было раньше.
Для одного из приведённых примеров справа в комментариях допишем чему оказываются равны переменные после выполнения очередной строки:
— то есть (во время выполнения программы) после её выполнения, например:
— с помощью комментариев для последней строки показано, что значение меняется после выполнения операции присваивания «сразу после точки с запятой», и если в следующих строках переменной не присваивают какое-то другое значение, то оно и не меняется.
Разбор практических примеров
Пример №1
У вас есть целочисленная переменная $a$ и два строковых литерала:
и второй:
Присвойте переменной $a$ значение и выведете на экран фразу с этим значением — используя указанные выше литералы (можно не только их, но их обязательно), например для:
Должно выводиться:
Начнём писать код, в теле программы:
— таким образом мы выполнили первое требование задачи, присвоив значение переменной. Далее от нас хотят, чтобы программа выводила фразу, где число яблок зависит от значения переменной $a$ (а точнее равно ему), при этом про число груш ничего не сказано.
Второй момент — необходимо использовать литералы в точности так как они приведены в условии, что ж попробуем вывести фразу, используя значение переменной и указанные литералы:
— раз про груши ничего не сказано, то их число выводим просто в составе строкового литерала (оно не будет меняться пока мы не изменим сам литерал), а вот число яблок передаём в процедуру как значение переменной $a$.
Заметьте, что литерал:
‘ и 8 груш’
мы начали с пробела, чтобы при выводе он не «склеился» со словом «яблок«.
Запустите последний код. Чего-то там не хватает? А именно — в консоли мы получим:
— почему склеилось имя и значения? Чтобы понять это нужно внимательно посмотреть на код вызова процедуры:
— как мы можем видеть, здесь в конце первого аргумента-литерала нет пробела, а значит значение переменной $a$ (которое есть само по себе просто число, а значит содержать пробелов не может) просто выведется вплотную к первому аргументу. Чтобы исправить эту ситуацию, можно было бы изменить первый литерал, добавив в его конец символ-пробел:
НО: таким образом мы бы не следовали строго условию задачи использовать указанные строковые литералы (‘У Коли’ и ‘ яблок’), так как фактически
— это разные литералы (в первом на один символ больше и этот символ — пробел). А значит, чтобы не модифицировать первый строковый литерал, просто добавим в вызов ещё один аргумент — символьный литерал (а точнее — пробел):
— что и будет подходящим вызовом процедуры writeln() для решения задачи.
Пример №2
Пусть у вас есть задача:
Васе $m$ лет, а Паше $k$ лет. Напишите программу, в которая считает разницу между возрастом Васи и Паши (то есть выясняет насколько Вася старше Паши).
Конкретные значения возрастов этих двух человек задайте в коде в виде двух переменных, которым присвойте целые численные значения (используя целочисленные литералы). Результат запишите в третью переменную и выведите значение на экран.
Начнём решать данную задачу. В начале условия сказано, что возраста обоих героев надо задать как значения переменных, давайте сделаем это с помощью оператора присваивания:
Далее разницу их возрастов просят записать в третью переменную, что ж сделаем и это:
В самом конце нас просили вывести значение разницы на экран, сделаем и это используя вызов стандартной процедуры writeln(), в качестве пояснения пользователю передав строковый литерал как аргумент перед вторым аргументом-переменной:
То есть в данный момент мы имеем код:
Осталось объявить все используемые в теле программы переменные. В данном случае их 3 штуки, объявим их через запятую в секции var до начала тела программы:
Запустите этот код и посмотрите как он работает, если консоль закрывается сразу после выполнения кода, используйте вызов для задержки консоли.
Видео-пояснения
К этому уроку есть следующие видео:
Задачи для самостоятельного решения
Теоретические вопросы:
Объясните что здесь происходит.
И ещё один вопрос:
Будет ли работать код:
Объясните что здесь происходит.
Два задания к этому коду:
- Ответьте на вопросы в комментариях письменно.
- Запустите этот код, предварительно объявив используемые переменные, и выведите в консоль с write() или writeln() значения переменных, в строках, где в комментариях к коду задан вопрос.
- Запишите строку, в которой с помощью одного writeln() выводятся результаты трёх разных (любых) арифметических выражений.
- Сделайте то же самое, но выводя уже три переменные, каждой из которых предварительно присвойте значение одного из арифметических выражений.
Задачи:
(напишите код и продемонстрируйте его работу):
двумя способами (чтобы в консоли получилось оба варианта):
- в столбик
- в строчку, разделив пробелами
Подсказка: если не получается решить самостоятельно и/или есть желание посмотреть на другие варианты решения — смотрите этот разбор.
Присвойте переменной $a$ значение и выведете на экран фразу с этим значением — используя указанные выше литералы (можно не только их, но их обязательно), например для:
Подсказка: если не получается решить самостоятельно и/или есть желание посмотреть на другие варианты решения — смотрите этот разбор.
Переменные в Паскаль
Одно из из самых основных понятий в паскале это понятие переменной . В данном уроке
мы разберем что такое переменная , для чего она нужна и что с ней можно делать.
Для простоты понятия переменной , мы будем представлять её в качестве некой коробки , которая в свою очередь имеет свое имя ( адрес , по которому мы будем ссылаться на неё ) и значение внутри «коробки» ( переменной ). И в дальнейшем свой тип.

В данном случае мы имеем некую переменную с именем «a» , значение которой принимает число 17. В паскале такое выражение записывается так a:= 17;. Обратите внимание на знак := ( двоеточие и равно , означает присвоить ) пробелы между ними и перед ставить не нужно.
Следует заметить , что имена переменных могут состоять из отдельных слов , например age:= 21; или my_age:= 21;. В названии переменных можно использовать латинские буквы , арабские цифры , а также символ подчеркивания _ . Использовать цифры в начале переменной нельзя ! ( 21age:= 21; ).
Переменные name и NaMe совершенно одинаковые , то есть паскаль не обращает внимания на регистр переменных.

Как видно из картинки выше , переменные могут нести в себе не только целые значения ( integer ), но и вещественные и строковые и некоторые другие.
a:= 3.5; — Вещественная переменная real
b:= «Hello»; — Строковая переменная string
Целочисленный тип переменной
Вещественный тип переменной
Вещественные переменные несут в себе нецелые числа . Например 3.5 , 2.7 . 1/2 тоже является вещественным значением и равна 0.5
Пример объявления такой переменной :
Строковой тип переменной
Строковые переменные несут в себе символы или последовательность символов. Значение такой переменной строго записывается в кавычках. Например b:= «hello»;
Пример объявления такой переменной :
Существуют ещё два типа переменных . Логический ( boolean ) и символьный ( char ).
Переменные логического типа имеют только два значения true и false , а переменные символьного типа несут в себе только один символ. ( Явная схожесть с строковых типом , однако в строковой переменной можно использовать сразу несколько символов , в отличии от символьного , в котором можно использовать только один символ )
Пример объявления символьной переменной :
Переменные имеют свою диапазон значений , к примеру переменная типа integer (целочисленная) не может превышать значение 32767 или быть меньше чем -32768.
Посмотреть таблицы с названием типов и их диапазонами можно здесь.
Все переменные объявляются в блоке var ( между словами var и begin ).

Как объявляются переменные ?
Вначале пишем имя своей переменной , например «a» далее следует задать тип нашей переменной . Это зависит от того , какой мы хотим её видеть. Например для хранения вашего имени в переменной , нам понадобится тип string. А для возраста тип integer.
Записывается это так — a:integer; Один и тот же тип можно задать нескольким переменным сразу . Например a,b,c:real;
Следует помнить о том , что каждая переменная до того , как мы присвоим ей какое-либо значение , имеет значение равное 0
Операции с переменными
С каждой переменной можно проводить свои операции . Например складывание , вычитание , деление , возведение в корень и многие другие.

Как видно на картинке , целочисленная переменная «a» имеет значение 10 , а целочисленная переменная «b» имеет значение 7 . Значение переменной «c» равно разнице «a и b» , проще говоря равно 3.
Остальные арифметические операции выполняются аналогично . Умножение заменяется знаком * , а деление / .
При таком взаимодействии переменных, большое внимание следует уделять типам переменных . Так к примеру существуют две переменные «a и b» , «a» равно 1 , «b» равно 2 . Переменная c равна частному «a на b» ( a/b ). В таком случае переменная «c» принимает вещественный тип.
Команды ввода и вывода на экран :
Для того , чтобы вывести переменную на экран нам понадобится команда writeln();.
Для того , чтобы ввести значение некоторой переменной через клавиатуру , нам понадобится команда readln();
Вывод на экран значения переменной «name» осуществляется так — writeln(name);.
Запись значения переменной с клавиатуры осуществляется так — readln(name);.
Остальные операции и функции с переменными вы можете посмотреть здесь.
Отличие writeln() от write()
Многие задаются таким вопросом : В чем отличие команды writeln() от команды write(). Отличий совсем немного , но они есть.
Команда writeln() — выводит определенную информация на экран ( текст, переменную и т.п ) и при этом переводит последующий текст на следующую строку ( линию ). Проще говоря , текст внутри writeln() занимает всю строку , а остальной текст будет печататься на следующей строке.
В случае , когда мы используем команду write() , последующий текст не переводится.
Наглядный пример работы данных команд :
program mypascal;
begin
write(‘Привет ‘);
writeln(‘ друг !’);
write(‘Как твои дела ?’);
На экран будут выведены две строчки. В первой строке будет написано » Привет друг ! «. Во второй строке будет написано «Как твои дела ?».
Отличия команды readln() и read() аналогичны.
Write — писать ; ln ( line ) — линия.
Ввод данных с клавиатуры в паскаль
Переменные в Паскаль Ввод данных с клавиатуры в паскаль
В этом уроке мы разберём переменные в Паскаль, ввод данных с клавиатуры в программах на Паскаль, узнаем, как задавать переменные с клавиатуры.Переменные в программировании используются для хранения данных, которые впоследствии можно использовать в программе. У каждой переменной в Паскаль есть имя, по которой к ней обращаются и тип значений, которая она может приниматьВ Pascal существует пять основных типов данных переменных. В таблице приведены основные типы переменных в Паскаль

Чтобы использовать переменные в Паскаль их необходимо объявить в начале программы по формату
var название_переменной: тип_переменной;
Чтобы присвоить переменной в Паскаль значение необходимо использовать оператор присваивания двоеточие и равно :=
Чтобы вывести значение переменной в Паскаль используется оператор
write (переменная);
Пример программы на Паскаль в которой переменным присваивается значения и они выводятся на экран
var a: string;
var b: integer;
begin
a := 'Строковая переменная ';
b := 12;
write(a, b);
end.
Для ввода данных в Паскаль используется команда
read(переменная);
При выполнении этой команды программа в pascal запросит данные, их нужно ввести в графу «Ввод данных». После этого введённые данные будут записаны в переменную.
Как и в случае в write() , можно использовать команду readln() , тогда после того, как данные были введены, будет осуществлён переход на следующую строку.
Пример программы на Паскаль в которой вводятся две переменные с клавиатуры и выводится на экран их сумма
var a, b: integer;
begin
write('Введите первое число. ');
readln(a);
write('Введите второе число. ');
readln(b);
write(a + b);
end.
Пример программы на Паскаль, запрашивающей имя и фамилию, затем приветствующую по имени и фамилии.
var name, surname: string;
begin
writeln('Введите Ваше имя.');
readln(name);
writeln('Введите Вашу фамилию. ');
readln(surname);
write('Здравствуйте, ', name, ' ', surname, '.');
end.
Перейти к содержанию
Следующая тема Условия в Паскаль