Pascal: Занятие №1. Часть 3: Типы данных в Паскаль
Типы данных в Паскале
Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.
Например, сложение текстовых данных, или как это правильно называется в программировании — конкатенация — это обычное слияние строк, тогда как сложение числовых данных происходит поразрядно, кроме того, дробные и целые числа складываются тоже по-разному. То же самое касается и других операций.
Рассмотрим наиболее распространенные в Pascal типы данных.
Целочисленные типы данных в Паскаль
Тип
Диапазон
Требуемая память (байт)
byte
0..255
1
shortint
-128..127
1
integer
-32768.. 32767
2
word
0..65535
2
longint
-2147483648..2147483647
4
Нужно иметь в виду, что при написании программ в паскале integer (в переводе с англ. целое) является наиболее часто используемым, так как диапазон значений наиболее востребуем. Если необходим более широкий диапазон, используется longint (long integer, в переводе с англ. длинное целое). Тип byte в Паскале используется, когда нет необходимости работать с отрицательными значениями, то же самое касается и типа word (только диапазон значений здесь значительно больше).
Примеры того, как описываются (объявляются) переменные в Паскале:
Pascal
PascalABC.NET
program a1; var x,y:integer; <целочисленный тип>myname:string; <строковый тип>begin x:=1; y:=x+16; myname:=’Петр’; writeln (‘имя: ‘,myname, ‘, возраст: ‘, y) end.
program a1; begin var x, y: integer; <целочисленный тип>var myname: string; <строковый тип>x := 1; y := x + 16; myname := ‘Петр’; print($’имя: , возраст: ‘) end.
Результат: имя: Петр, возраст: 17
Комментарии в Паскале
[Название файла: L1task5.pas ]
Вещественные типы данных в Паскаль
Вещественные числа в Паскале и вообще в программировании — это название дробных чисел.
Тип real в Паскале — наиболее часто используемый из вещественных типов.
Выше были представлены простые типы данных в Паскаль, к которым относятся:
Для вывода значений переменных вещественного типа обычно используется форматированный вывод:
Наряду с простыми типами в языке еще используются структурированные типы данных и указатели, которым будут посвящены последующие уроки по Паскалю.
Константы в Паскале
Зачастую в программе заранее известно, что переменная будет принимать какое-то конкретное значение и не менять его на протяжении выполнения всей программы. В таком случае необходимо использовать константу.
Объявление константы в Паскале происходит до объявления переменных (до служебного слова var ) и выглядит следующим образом:
Пример описания константы в Паскале:
Pascal
PascalABC.NET
const x=17; var myname:string; begin myname:=’Петр’; writeln (‘имя: ‘,myname, ‘, возраст: ‘, х) end.
const x = 17; begin var myname := ‘Петр’; print($’имя: , возраст: ‘) end.
«Красивый» вывод целых и вещественных чисел
Для того чтобы после вывода значений переменных оставались отступы, чтобы значения не «сливались» друг с другом, принято через двоеточие указывать какое количество символов нужно предусмотреть для вывода значения:
Вывод вещественных чисел
Арифметические операции в Паскале
ДЕЙСТВИЕ
РЕЗУЛЬТАТ
СМЫСЛ
2 + 3
5
плюс
4 — 1
3
минус
2 * 3
6
умножить
17 div 5
3
целочисленное деление
17 mod 5
2
остаток от целочисленного деления
Порядок выполнения операций
var a: integer; b: real; begin a := 1; writeln(‘a := 1; a = ‘,a); a += 2; // Увеличение на 2 writeln(‘a += 2; a = ‘,a); a *= 3; // Умножение на 3 writeln(‘a *= 3; a = ‘,a); writeln; b := 6; writeln(‘b := 6; b = ‘,b); r /= 2; writeln(‘b /= 2; b = ‘,b); end.
Стандартные арифметические процедуры и функции Pascal
Здесь стоит более подробно остановиться на некоторых арифметических операциях.
Пример операции inc:
Более сложное использование процедуры inc: Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.
Пример использования функции odd:
begin WriteLn(Odd(5)); WriteLn(Odd(4)); end.
Пример использования процедуры sqr в Pascal:
var x:integer; begin x:=3; writeln(sqr(x)); <ответ 9>end.
Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:
Пример использования процедуры sqrt в Pascal:
var x:integer; begin x:=9; writeln(sqrt(x)); <ответ 3>end.
Внимание! В настоящее время рекомендуется использовать технологию .NET 5 для создания кроссплатформенных приложений на .NET-языках. Однако, она не поддерживаются в PascalABC.NET. Для использования .NET 5 рекомендуется применять такие среды разработки, как Visual Studio и Rider.
Содержание
Синтаксис программ [ править ]
Минимальная структура программы:
Константы [ править ]
В данной секции располагаются определенные пользователем константы. Синтаксис объявления констант выглядит так:
Секция «var» [ править ]
Данная секция предназначена для переменных и массивов. Переменные объявляются так:
Простейшие типы [ править ]
Тип строка [ править ]
Операция
Описание
s1 + s2
Объединение строк
s1*n
Дублирование строки n раз
Тип целое число integer [ править ]
Тип вещественное число real [ править ]
Декларация переменной типа real:
Пример присваивания переменной данного типа:
Тип символ [ править ]
Тип символ или «char» используется в основном для хранения одного любого символа вне зависимости от того, является ли данный символ буквой или цифрой. Объявление переменной символьного типа:
Данный раздел программы содержит все команды, выполняемые при ее запуске. Данная секция программы выглядит так:
Комментарии [ править ]
Массивы [ править ]
P. S. Для работы с массивами существует учебный модуль Arrays.
Статические [ править ]
Статические массивы имеют фиксированный размер. Общий синтаксис объявления данных массивов выглядит так:
Матрицы [ править ]
Двумерные [ править ]
, где N, M количество строчек и столбцов соответственно.
Трехмерные [ править ]
Трехмерный матрицы обладают третьим измерением:
N-мерные матрицы [ править ]
Декларация N-мерной матрицы:
, где A..Z означают количество элементов в соответствующем измерении.
Статические и динамические массивы [ править ]
Динамические массивы позволяют управлять количеством элементом в каждом из их измерений во время выполнения программы.
Пример объявления массива:
Статический
Динамический
Вызов SetLength (для динамического массива)
Векторный
Понятие индекса массива [ править ]
Составим таблицу, которую следует запомнить:
N-мерный массив
Общий синтаксис указания элемента массива
Пример
Векторный
Индекс в виде значения элемента массива [ править ]
Индексом может быть значение элемента массива:
Операторы, стандартные процедуры и функции [ править ]
Вывода на экран [ править ]
Вывод текста [ править ]
Вывод значений переменных [ править ]
Вывод значений произвольного количества переменных:
Для перехода на новую строку после вывода последнего значения используйте Writeln вместо Write.
Ввод данных с клавиатуры [ править ]
Условный оператор [ править ]
Общий синтаксис условного оператора if:
Команды . будут выполнены только при истинности условия.
Сравнение [ править ]
Условные обозначения в программировании операций сравнения приведены в таблице:
Операция
Эквивалент в Паскале
≤ (меньше или равно)
≥ (больше или равно)
>=
> (больше)
>
= (равно)
=
≠ (не равно)
<>
Общий синтаксис сравнения двух величин:
Оператор case [ править ]
Оператор case используется для сопоставления значения некоторого выражения с константными значениями:
Оператор цикла while [ править ]
Оператор цикла позволяет выполнять группу операторов (или один) циклически пока условие является истинным.
Счетчик [ править ]
Оператор break [ править ]
Для выхода из цикла можно использовать break:
Новая итерация цикла [ править ]
Для завершения текущей итерации цикла и начала другой используйте оператор continue.
Функции [ править ]
Общий синтаксис описания функции:
Можно устанавливать значение переменной Result для указания возвращаемого значения.
В этом уроке речь пойдёт о переменных в языке Pascal. Давайте попробуем на образах понять, что же такое переменная.
Переменная представляет собой «ящик», в который мы можем что-то положить, что-то заменить и что-то удалить, и у этого ящика есть какой-то размер, получается в него может поместится далеко не всё.
Мы можем что-то достать из ящика и показать это, потом положить обратно.
Получается — переменная своеобразный ящик, с которым можно работать.
Насчёт содержимого ящика: в зависимости от типа ящика, можно положить в него различные предметы.
Так же и с переменными в Pascal: им задаётся специальный тип, благодаря которому в переменную можно положить ( записать ), например числа, или строковые значения.
Отличие языка Паскаль от других в том, что этот язык дисциплинирует программиста, в Паскаль всё строго — все типы переменных должны соответствовать их содержимому. О типах переменных мы с Вами поговорим в следующем уроке.
Если давать определение как в умных книжках, то
Переменная — содержит в себе адрес области ( ячейки ) памяти, которая выделяется в момент компиляции ( запуска ) программы, и при помощи переменной мы можем получить «доступ» к той области ( ячейки ) памяти и выполнить какие-то действия с данными, которые там находятся.
Поскольку область памяти выделяется в момент запуска программы, то в этой области памяти может что-то находится, поэтому опытные программисты всегда советуют после объявления переменной очищать её.
Все переменные в языке Паскаль ( Pascal — как Вам удобнее ) должны быть объявлены в разделе — var.
До этого мы говорили о структуре Паскаль, и там мы упоминали об этом разделе.
Поскольку язык Паскаль — строгий язык, то и объявление переменных должно быть соблюдено верно.
Мы должны сначала написать слово — var — это зарезервированное слово — поэтому его можно использовать только в объявлении переменных.
После слова var мы можем объявлять переменные, что мы имеем в виду под словом объявлять — в программе в разделе var, если он есть в программе, будут считываться все переменные и их типы, после в памяти будут выделены ячейки с определёнными типами, и нашим переменным будут присвоены адресы к этим ячейкам ( областям ) памяти, после чего в них можно будет записывать именно те данные, которые будут соответствовать типу переменных.
И так, насчёт объявления переменных, пишем var, после перечисляем названия переменных на английском языке через запятую, после последней переменной ставится двоеточие и пишется тип этих переменных. Вот пример:
Описания переменных внутри блока и автовывод типов
В большинстве случаев переменные описываются в блоке begin-end и описание совмещается с инициализацией:
Это решает сразу несколько проблем:
При таком способе возникает одна проблема: если надо накопить сумму вещественных, то такой код приведет к ошибке типов:
Для исправления этой ошибки всё равно придётся говорить о типах и инициализировать sum одним из двух способов:
Цикл for var
Это делает невозможным использование счётчика цикла вне цикла
Цикл loop
Если количество повторений цикла заранее известно, но неважен номер повторения, то используется цикл loop:
Множественное описание переменных с инициализацией
Можно инициализировать сразу несколько переменных в момент описания:
Вывод
Для вывода вместо процедуры Write предпочтительно использовать процедуру Print. В отличие от Write она разделяет элементы вывода пробелами. Например:
Для вывода нескольких значений с пояснениями рекомендуется использовать интерполированные строки:
вместо режущего глаз
Ввод принято осуществлять, используя функции вида ReadInteger, ReadReal и т.д.:
Это позволяет совмещать описание переменной с инициализацией и автовыводом типа. В качестве дополнительных бонусов: можно делать приглашение к вводу как параметр функции ввода и вводить сразу несколько переменных одного типа:
Для ввода с контролем ошибок используется функция TryRead. Она возвращает False если ввод осуществлён неверно (введено не число или число выходит за границы диапазона). Типичный пример её использования:
Тип BigInteger
Для работы с длинными целыми используется тип BigInteger. Например, чтобы вычислить 100!, достаточно написать следующий код:
Некоторые полезные стандартные процедуры, функции и операции
Для обмена значений двух переменных a и b используйте стандартную функцию Swap(a,b) :
Разумеется, первый раз необходимо показать, что обмен значений осуществляется через третью переменную:
Но далее следует использовать Swap.
Минимальное и максимальное среди множества значений можно вычислить, используя стандартные функции Min и Max:
Для возведения в степень используется операция ** :
Для проверки принадлежности диапазону используется конструкция x in a..b :
Эта операция эффективна и переводится в
Диапазоны также можно использовать для вещественных значений и для символов:
Для проверки принадлежности множеству значений используется либо множество:
Условная операция
Если переменной необходимо присвоить значение в зависимости от условия, то вместо условного оператора иногда нагляднее использовать условную операцию:
Методы в стандартных типах
Например, чтобы вывести значение переменной базового типа, можно использовать метод Print:
Из других интересных методов для начинающих для целых типов отметим:
Например, в следующей программе вычисляется количество четных двузначных из 10 введённых:
Для вещественных значений полезными являются методы
В частности, удобно использовать цепочечную точечную нотацию:
Для всех числовых типов также определены константы MinValue и MaxValue. Чтобы обратиться к ним, следует использовать имя типа:
Кортежи
Присваивание (a,b) := (b,a) позволяет поменять значения двух переменных.
Использование кортежей даже в начальных задачах крайне многообразно.
В данном уроке будут рассматриваться понятия переменной, типов данных. Ввод и вывод данных. Решены задачи по теме.
Опытный программист знает, а новичку полезно узнать, что главными элементами любой программы являются переменные, константы и операторы.
Переменными называют величины, значения которых изменятся в процессе выполнения программы.
Константами называются величины, которые не изменяют своего значения.
Операторы описывают те действия, которые должна выполнять программа.
Тип переменной является важнейшей характеристикой переменной. Определяет вид данных, содержащихся в переменной, набор операций, которые можно выполнять над этими данными. В Паскале существуют много типов переменных, для начала познакомимся с двумя:
Описать переменную — это значит указать после зарезервированного слова Var имя и тип переменной. Например:
Var a: integer;
Var a,b: real;
Для ввода данных используются команды (операторы) Read или Readln. Команда Readln отличается от команды Read тем, что после ввода необходимого количества данных осуществляется переход курсора на следующую строку.
Для вывода данных используются команды (операторы) Write и Writeln. Команда Writeln отличается от команды Write тем, что после вывода необходимого количества данных осуществляется переход курсора на следующую строку.
Более подробную теорию и решение задач смотрите в видеоуроке.
Нажмите PLAY, чтобы начать просмотр видеоурока.
Рассмотрим решение следующих задач:
program z2; Var x: integer; begin
Составьте программу, в которой осуществляется ввод целого числа с клавиатуры и вывод на экран монитора значения этого числа, увеличенного на 10.
Program z3; Var x: integer; Begin write(‘введите число ‘); readln(x); write(‘Если вы добавите к числу 10, то получится,’,10+x); End.
Составьте программу, в которой осуществляется ввод трёх целых чисел с клавиатуры и вывод на экран монитора значения их суммы.
Program z4; uses crt; Var x,y,z: integer; Begin writeln(‘введите 3 числа ‘); readln(x,y,z); write(‘Сумма чисел =’,x+y+z); End.
Program z5; uses crt; Var x,y: integer; Begin writeln(‘введите 2 числа ‘); readln(x,y); write(‘Произведение чисел =’,x*y); End.
Узнайте больше и освойте новые языки программирования!