Переменные — некие данные, которы могут изменять свои значения в процессе выполнения программ.
В Паскале переменные объявляются перед основным блоком программы, в блоке var;
Так как язык Паскаль является сильно типизированным языком программирования, то во время объявления переменной необходимо явно указать её тип.
В паскале существуют различные типы, но так же можно задать свой тип.
В разных компилятарах одни и теже типы могут иметь разный диапазон значений и из за этого иметь разный объём выделяемой памяти.
Рассмотрим основные типы данных и приведём примеры их объявлений.
Целочисленные типы данных:
Тип [attr rowspan="2"] | Borland Pascal / Turbo Pascal / Object Pascal [attr colspan="2"] | Delphi [attr colspan="2"] | Pascal ABC [attr colspan="2"] | |||
Диапазон | Размер(байт) | Диапазон | Размер(байт) | Диапазон | Размер(байт) | |
Byte | 0..255 | 1 | 0..255 | 1 | 0..255 | 1 |
ShortInt | -128..127 | 1 | -128..127 | 1 | -128..127 | 1 |
SmallInt | - | - | −32768..32767 | 2 | −32768..32767 | 2 |
Word | 0..65535 | 2 | 0..65535 | 2 | 0..65535 | 2 |
Integer | -32768..32767 | 2 | −2147483648..2147483647 | 2-4 | −2147483648..2147483647 | 4 |
Cardinal | - | - | 0..4294967295 | 4 | 0..4294967295 | 4 |
LongWord | - | - | 0..4294967295 | 4 | 0..4294967295 | 4 |
LongInt | -2147483648..2147483647 | 4 | -2147483648..2147483647 | 4 | -2147483648..2147483647 | 4 |
Int64 | - | - | -9223372036854775808..9223372036854775807 | 8 | -9223372036854775808..9223372036854775807 | 8 |
QWord | - | - | 0..18446744073709551615 | 8 | - | - |
UInt64 | - | - | - | - | 0..18446744073709551615 | 8 |
Что бы объявить целочисленную переменную в блоке var надо указать имя и тип переменной по следующему шаблону:
<имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>:<тип>;
Как видно из шаблона, можно объявлять сразу несколько переменных.
Пример объявления целочисленных переменных:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var b:Byte; Sh,Sh2,Sh3,Sh4:ShortInt; Sm:SmallInt; W:Word; I:Integer; c:Cardinal; LW:LongWord; LI:LongInt; I64:Int64; QW:QWord; UI:UInt64; |
Вещественные типы данных:
Тип [attr rowspan="2"] | Borland Pascal / Turbo Pascal / Object Pascal / Delphi<code>[attr colspan="3"] ,Pascal ABC [attr colspan="3"] | |||||
Диапазон | Мантисса | Размер(байт) | Диапазон | Мантисса | Размер(байт) | |
Real | 2.9*10E38-39…1.7*10E38 | 11-12 | 6 | -1.8*10E308…1.8*10E308 | 15 | 8 |
Double | 5.0*10E308-324…1.7*10E308 | 7-8 | 8 | -1.8*10E308…1.8*10E308 | 15 | 8 |
Single | 1.5*10E38-45…3.4*10E38 | 15-16 | 4 | -1.8*10E38…1.8*10E38 | 7 | 4 |
Extended | 1.9*10E-4951…1.1*10E4932 | 19-20 | 10 | - | - | - |
Comp | -2E64+1…2E63-1 | 10-20 | 8 | - | - | - |
Что бы объявить вещественную переменную в блоке var надо указать имя и тип переменной так-же как и при объявлении целочисленных переменных:
<имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>:<тип>;
Пример объявления вещественных переменных:
1 2 3 4 5 6 7 |
var R:Real; D:Double; Si:Single; Ex:Extended; Co:Comp; |
Массивы
Массив(array) в pascal — это ограниченное, упорядоченное множество однородных элементов. То есть все элементы в массиве имеют одинаковый тип имеют определённый номер элемента и при объявлении массива задаётся его максимальный размер.
Borland Pascal и Turbo Pascal могут иметь максимальное число элементов в массиве 256.
FreePascal, Delphi, Object Pascal массивы ограничиваются размером выделяемой памяти в 2 Гб — 1 байт.
(например переменная типа byte в Delphi занимает 1 байт следовательно максимальный размер массива равен (2*1024*1024*1024-1)/1=2147483647 элементов.)
Что бы объявить массив, в блоке var надо указать тип индекса и тип элементов, по следующему шаблону:
<имя массива 1>,<имя массива 2>,…,<имя массива 3>:array[<тип индекса>] of <тип элементов>;
Пример объявления массивов:
1 2 3 4 5 6 7 |
var a:array[0..24] of integer; a2:array[1..10,1..10,1..10,1..10] of byte; a3,a4:array[100..234] of real; |
Строковые и литерные типы
Char — литерный тип, занимает 2 байта памяти. Переменная с этим типом может содержать 1 символ.
String — строковый тип, является массив из Литерных символов, где 0-ое значение занято размером строки.
В Pascal изначально надо задать размер строки. Максимальный размер строки 255 символов. По умолчанию, если размер строки не указан явно, в Borland Pascal и Turbo Pascal размер строки будет равен 255 символов, в UCSD Pascal — 80. В FreePascal и Delphi не ограниченная переменная string имеет на самом деле тип AnsiString который может занимать максимальный размер в памяти до 2 Гб это 2147483646 символов.
В Object Pascal строковая переменная так же имеет ограничение в 2 Гб.
Что бы объявить строку, в блоке var надо указать тип string и возможно указать кол-во элементов, по следующему шаблону:
<имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>:string;
или
<имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>:string[<кол-во символов в строке>];
Пример объявления строковой переменной:
1 2 3 4 5 |
var s:string; s1,s2:string[80]; |
Множество.
В Pascal так же существует такой тип данных, как множество. В отличии от массивов элемент в множестве не имеет своего порядкового номера. Что делает лёгким такие задачи, как сравнить множества между собой, или посмотреть есть ли элемент в этом множестве.
Что бы объявить множество, в блоке var надо указать тип set и указать элементы множества.
Пример объявления множества:
1 2 3 4 5 6 7 |
var m :set of 'a'..'z'; m1, m2 :set of '1'..'3'; m3:set of (M,D,A,L); |
Пользовательские типы.
В Pascal есть возоможноcть создавать свои типы, основываясь на уже существующих.
Для определения своих типов необходимо до блока var вставить блок type и определить собственные типы.
Что бы создать тип на основе строки, надо в блоке type создать тип по шаблону:
<имя типа> = string[<максимальная длина строки>]
Что бы создать тип на основе массива, надо в блоке type создать тип по шаблону:
<имя типа> = array [<тип индекса>] of <тип элементов>;
Что бы создать тип на основе множества, надо в блоке type создать тип по шаблону:
<имя типа> = set of <элементы множества>;
Дальше можно использовать эти типы, для объявления переменных в блоке var.
Пример создание своего типа на основе существующего:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
type MyString = string[10]; MyIntegerArray = array[0..255] of Integer; MySet = set of 'a'..'z'; var String: MyString; A: MyArray; Set1: MySet; |
Так же возможно создать cостовные типы(record). Которые были предвестниками объектно-ориентированному программированию. В Delphi это в дальнейшем перерасло в классы ( calass), а в Object Pascal в объекты(object).
Что бы использовать состовной тип, надо в блоке type объявить его по следующему шаблону:
type <имя типа> = record
<имя элемента 1>: <тип элемента>;
<имя элемента 2>: <тип элемента>;
…
<имя элемента n>: <тип элемента>;
end ;
Дальше этот тип можно присвоить в блоке var вашей переменной по шаблону:
<имя переменной>:<тип>;
Что бы в дальнейшем обратиться к элементу надо написать имя элемента после имени переменной, через точку. Шаблон:
<имя переменной>.<имя элемента>;
Пример использования записей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
program ListWorkers; type worker = record {объявляем тип записи worker} fio : String [255]; {fio элемент записи worker, строка из 255 символов} birthday:String[10]; {birthday элемент записи worker, строка из 10 символов} end; ListWorkers = array[1..10] of worker; {определяем ещё один тип ListWorkers это массив из 10 элементов типа worker} var List:ListWorkers; {объявляем переменную List типом ListWorkers} begin List[1].fio:='Vasya Pupkin'; {Присваиваем элементу fio первого элемента из массива List[1] значение 'Vasya Pupkin'} List[1].birthday:='01.01.2000';{Присваиваем элементу birthday первого элемента из массива List[1] значение '01.01.2000'} end. |
Комментарии: