Типы переменных в Паскале: описание, свойства, примеры. Программирование
Для того чтобы машина смогла обработать какие бы то ни было входные данные, она должна «понимать», к какому типу принадлежат переменные, в которые занесены значения. При отсутствии информации о формате данных компьютер не сможет определить, допустима ли в конкретном случае та или иная операция: например, интуитивно понятно, что нельзя возвести букву в степень или взять интеграл от строки. Таким образом, пользователь должен определить, какие действия позволительно осуществлять с каждой переменной.
Как и в других языках программирования высокого уровня, типы переменных в Паскале оптимизированы для выполнения задач различной направленности, имеют различный диапазон значений и длину в байтах.
Подразделение типов переменных
Типы переменных в Паскале делятся на простые и структурированные. Простые включают в себя вещественные и порядковые типы. К структурированным относятся массивы, записи, множества и файлы. Отдельно выделяются указатели, объекты и процедурные типы.
Рассмотрим порядковые и вещественные типы. К порядковым относятся 5 целых типов, перечисляемый и тип-диапазон.
Порядковые типы
Существует 5 целых типов, различающихся длиной в байтах и диапазоном значений.
Длина Byte и ShortInt - 1 байт. Различие между ними состоит в том, что Byte хранит только неотрицательные значения, а ShortInt позволяет хранить и отрицательные (от -128 до +127). Аналогично соотносятся друг с другом типы Word и Integer, с тем лишь различием, что их размер - 2 байта.
Наконец, LongInt позволяет хранить и отрицательные, и положительные значения, используя 4 байта - в числовом измерении 16-й степени в обе стороны от нуля. Различные виды переменных в Паскале способствуют эффективному решению пользовательских задач, поскольку в каждом конкретном случае может требоваться как малый, так и большой диапазон значений, а также не исключено наличие ограничений по объему выделяемой памяти.
Важно понимать, что нуль занимает столько же места в памяти, сколько и любое другое число. Таким образом, при формировании диапазона значений минимальное отрицательное число по модулю будет на единицу больше, чем положительное: например, от -128 до +127.
Переменные, принадлежащие к могут принимать значение TRUE (истина) или FALSE (ложь) и требуют 1 байт памяти.
Тип CHAR позволяет хранить любой из множества символов, существующих в памяти компьютера. При этом в символьных переменных в Паскале реально хранится лишь код знака, в соответствии с которым отображается его графическая форма.
Вещественные типы
Среди типов переменных в Паскале выделяется несколько числовых с возможностью записи дробной части. Различие между типами Single, Real, Double и Extended сводится к диапазону принимаемых значений, количеству значащих цифр после запятой и размеру в байтах.
В соответствии с порядком, представленным выше, переменная каждого типа будет занимать 4, 6, 8 или 10 байт.
Массивы
Структурированные типы данных являются сложными и позволяют объединять в рамках одной переменной ряд простых значений. Яркий пример представляет собой массив, который можно задать следующим образом:
String=array of char;
Таким образом, мы получили тип под названием String, позволяющий задавать переменные длиной в 100 символов. В последней строке задан непосредственно одномерный массив Y, имеющий тип String. Описание переменных в Паскале осуществляется путём размещения с левой стороны идентификатора, а справа, после знака равенства, значения переменной.
Диапазон индексов, записанный в позволяет обращаться к каждому конкретному элементу массива:
В данном случае мы произвели чтение второго элемента созданного ранее массива Y.
Частным случаем одномерного массива являются и строковые переменные в Паскале, ведь строка - это последовательность символов, т. е. элементов типа char.
Записи
Запись состоит из нескольких полей, заполненных данными любых типов кроме файлового. В целом переменная такого типа похожа на элемент базы данных. Например, можно занести в неё имя человека и номер его телефона:
type NTel = Record
В первой строке слева указывается имя типа, а справа - служебное слово record. Во второй строке задано поле с именем, в третьей - номер телефона. Слово «end» говорит о том, что мы ввели все поля, которые хотели, и на этом процесс создания записи завершается.
Наконец в последней строке мы задаём переменную One, имеющую тип NTel.
Обращаться можно как к записи в целом, так и к отдельным её компонентам, например: one.NAME (т. е. имя_переменной.имя_поля_записи).
Файлы
Паскаль позволяет работать с текстовыми, типизированными и нетипизированными файлами, которые представляют собой структурированную последовательность компонент, имеющих одинаковый тип.
При чтении из файла или записи в него может использоваться как полный адрес, так и краткая его форма:
‘C:\Folder\File2.txt’
Краткая форма используется в случае размещения файла в папке, где хранится сама программа, обращающаяся к нему. Полная форма может использоваться в любых обстоятельствах.
Задать переменную файлового типа можно следующим образом:
f1: file of integer;
Для работы с файлами используются различные функции и процедуры, связывающие переменную с файлом на диске, открывающие его для чтения, записи и перезаписи, закрывающие по окончании работы, позволяющие создавать новое имя и удаляющие файл с компьютера.
В заключение
Без умения использовать различные типы переменных в Паскале пользователь не сможет реализовать даже простейшую задачу. Для того чтобы программа выполняла алгоритм без ошибок, требуется выучить как служебные слова, так и синтаксис, поскольку машина умеет «понимать» команды только в том случае, если они написаны единственно верным способом.
Федеральное агентство по образованию
Реферат
«ТИПЫ ДАННЫХ В ПАСКАЛЕ»
1. Типы данных
Любые данные, т.е. константы, переменные, свойства, значения функций или выражения характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти ПК.
Вообще язык Object Pascal характеризуется разветвленной структурой типов данных (рис. 1.1). В языке предусмотрен механизм создания новых типов, благодаря чему общее количество используемых в программе типов может быть сколь угодно большим.
Обрабатываемые в программе данные подразделяются на переменные, константы и литералы:
Константы представляют собой данные, значения которых установлены в разделе объявления констант и не изменяются в процессе выполнения программы.
Переменные объявляются в разделе объявления переменных, но в отличие от констант получают свои значения уже в процессе выполнения программы, причем допускается изменение этих значений. К константам и переменным можно обращаться по именам.
Литерал не имеет идентификатора и представляется в тексте программы непосредственно значением.
Тип определяет множество значений, которые могут принимать элементы данных, и совокупность допустимых над ними операций.
В этой и четырех последующих главах приводится подробное описание всех типов.
1.1 Простые типы
К простым типам относятся порядковые, вещественные типы и тип дата-время.
Порядковые типы отличаются тем, что каждый из них имеет конечное количество возможных значений. Эти значения можно определенным образом упорядочить (отсюда - название типов) и, следовательно, с каждым из них можно сопоставить некоторое целое число - порядковый номер значения.
Вещественные типы , строго говоря, тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однако количество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным.
Тип дата-время предназначен для хранения даты и времени. Фактически для этих целей он использует вещественный формат.
1.1.1 Порядковые типы
К порядковым типам относятся (см. рис. 1.1) целые, логические, символьный, перечисляемый и тип-диапазон. К любому из них применима функция Ord(x), которая возвращает порядковый номер значения выражения X.
Рис. 1.1 - Структура типов данных
Для целых типов функция ord(x) возвращает само значение х, т. е. Ord(X) = х для х, принадлежащего любому целому типу. Применение Ord(x) к логическому , символьному и перечисляемому типам дает положительное целое число в диапазоне от 0 до 1 (логический тип ), от 0 до 255 (символьный ), от 0 до 65535 (перечисляемый ). Тип-диапазон сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции ord(х) зависит от свойств этого типа.
К порядковым типам можно также применять функции:
pred(x) - возвращает предыдущее значение порядкового типа (значение, которое соответствует порядковому номеру ord (х) -1, т. е. оrd(рred(х)) = оrd(х) - 1;
succ (х) - возвращает следующее значение порядкового типа, которое соответствует порядковому номеру ord (х) +1, т. е. оrd(Succ(х)) = оrd(х) + 1.
Например, если в программе определена переменная
то функция PRED(с) вернет символ "4", а функция SUCC(с) - символ "6".
Если представить себе любой порядковый тип как упорядоченное множество значений, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция pred(x) не определена для левого, a succ (х) - для правого конца этого отрезка.
Целые типы . Диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать один, два, четыре или восемь байтов. В табл. 1.1 приводятся названия целых типов, длина их внутреннего представления в байтах и диапазон возможных значений.
Таблица 1.1 - Целые типы
Название | Длина, байт | Диапазон значений |
Cardinal | 4 | 0. .. 2 147 483 647 |
Byte | 1 | 0...255 |
Shortint | 1 | -128...+127 |
Smallint | 2 | -32 768...+32 767 |
Word | 2 | 0...65 535 |
Integer | 4 | |
Longint | 4 | -2 147 483 648...+2 147 483 647 |
Int64 | 8 | -9*1018...+9*1018 |
LongWord | 4 | 0. . .4 294 967 295 |
Типы LongWord и Int64 впервые введены в версии 4, а типы Smallint и Cardinal отсутствуют в Delphi 1. Тип integer для этой версии занимает 2 байта и имеет диапазон значений от -32768 до +32767, т. е. совпадает с Smallint .
При использовании процедур и функций с целочисленными параметрами следует руководствоваться “вложенностью” типов, т.е. везде, где может использоваться word , допускается использование Byte (но не наоборот), в Longint “входит” Smallint , который, в свою очередь, включает в себя Shortint .
Перечень процедур и функций, применимых к целочисленным типам, приведен в табл. 1.2. Буквами b, s, w, i, l обозначены выражения соответственно типа Byte , Shortint, Word, Integer и Longint ,
х - выражение любого из этих типов; буквы vb, vs, vw, vi, vl, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.
Таблица 1.2 - Стандартные процедуры и функции, применимые к целым типам
Обращение | Тип результата | Действие |
abs (x) | x | Возвращает модуль x |
chr(b) | Char | Возвращает символ по его коду |
dec (vx [, i]) | - | Уменьшает значение vx на i, а при отсутствии i - на 1 |
inc(vx[,i]) | - | Увеличивает значение vx на i, а при отсутствии i -на 1 |
Hi(w) | Byte | Возвращает старший бант аргумента |
Hi(I) | То же | Возвращает третий по счету байт |
Lo(i) | “ | Возвращает младший байт аргумента |
Lo(w) | “ | То же |
odd(l) | Boolean | Возвращает True, если аргумент-нечетное число |
Random(w) | Как у параметра | Возвращает псевдослучайное число, равномерно распределенное в диапазоне 0...(w-l) |
sqr(x) | X | Возвращает квадрат аргумента |
swap(i) | Integer | Меняет местами байты в слове |
swap (w) | Word | Тоже |
При действиях с целыми числами тип результата будет соответствовать типу операндов, а если операнды относятся к различным целым типам - общему типу, который включает в себя оба операнда. Например, при действиях с shortint и word общим будет тип integer . В стандартной настройке компилятор Delphi не вырабатывает код, осуществляющий контроль за возможной проверкой выхода значения из допустимого диапазона, что может привести к недоразумениям.
Логические типы . К логическим относятся типы Boolean, ByteBool, Bool, wordBool и LongBool . В стандартном Паскале определен только тип Boolean , остальные логические типы введены в Object Pascal для совместимости с Windows: типы Boolean и ByteBool занимают по одному байту каждый, Bool и WordBool - по 2 байта, LongBool - 4 байта. Значениями логического типа может быть одна из предварительно объявленных констант False (ложь) или True (истина).
Поскольку логический тип относится к порядковым типам, его можно использовать в операторе цикла счетного типа. В Delphi 32 для Boolean значение
Ord (True) = +1, в то время как для других типов (Bool, WordBool и т.д.)
Ord (True) = -1, поэтому такого рода операторы следует использовать с осторожностью! Например, для версии Delphi 6 исполняемый оператор showMessage (" --- ") в следующем цикле for не будет выполнен ни разу:
for L:= False to True do
ShowMessage ("--);
Если заменить тип параметра цикла L в предыдущем примере на Boolean , цикл будет работать и сообщение дважды появится на экране. [Для Delphi версии 1 и 2 ord (True) =+1 для любого логического типа.]
Символьный тип . Значениями символьного типа является множество всех символов ПК. Каждому символу приписывается целое число в диапазоне 0...255. Это число служит кодом внутреннего представления символа, его возвращает функция ord.
Для кодировки в Windows используется код ANSI (назван по имени American National Standard Institute - американского института стандартизации, предложившего этот код). Первая половина символов ПК с кодами 0... 127 соответствует таблице 1.3. Вторая половина символов с кодами 128...255 меняется для различных шрифтов. Стандартные Windows-шрифты Arial Cyr, Courier New Cyr и Times New Roman для представления символов кириллицы (без букв “ё” и “Ё”) используют последние 64 кода (от 192 до 256): “А”... “Я” кодируются значениями 192..223, “а”... “я” - 224...255. Символы “Ё” и “ё” имеют соответственно коды 168 и 184.
Таблица 1.3 - Кодировка символов в соответствии со стандартом ANSI
Код | Символ | Код. | Символ | Код. | Символ | Код | Символ |
0 | NUL | 32 | BL | 64 | @ | 96 | " |
1 | ЗОН | 33 | ! | 65 | А | 97 | а |
2 | STX | 34 | “ | 66 | В | 98 | b |
3 | ЕТХ | 35 | # | 67 | С | 99 | с |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | Е | 101 | е |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | " | 71 | G | 103 | д |
8" | BS | 40 | ( | 72 | Н | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | К | 107 | k |
12 | FF | 44 | F | 76 | L | 108 | 1 |
13 | CR | 45 | - | 77 | М | 109 | m |
14 | SO | 46 | 78 | N | 110 | n | |
15 | SI | 47 | / | 79 | 0 | 111 | о |
16 | DEL | 48 | 0 | 80 | Р | 112 | P |
17 | DC1 | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | S | 115 | s |
20 | DC 4 | 52 | 4 | 84 | Т | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | ETB | 55 | 7 | 87 | W | 119 | W |
24 | CAN | 56 | 8 | 88 | х | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | У |
26 | SUB | 58 | : | 90 | Z | .122 | z |
27 | ESC | 59 | ; | 91 | t | 123 | { |
28 | FS | 60 | < | 92 | \ | 124 | 1 |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | Л | 126 | ~ |
31 | US | 63 | F | 95 | 127 | r |
Символы с кодами 0...31 относятся к служебным кодам. Если эти коды используются в символьном тексте программы, они считаются пробелами.
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. ...
Почти все целочисленные типы данных относятся к . Эти типы данных представляют целые числа в определённом диапазоне. Конкретные наименования целочисленных типов и диапазоны значений зависят от конкретного языка программирования, от компилятора и от режима компиляции. Подробнее об этом надо узнавать в документации на компилятор.
Например, тип данных Integer в Delphi имеет диапазон -2147483648…2147483647, в то время как в Turbo Pascal тип данных Integer представляет числа в диапазоне -35768…32767. В Free Pascal диапазон значений типа Integer определяется выбранным режимом.
Так как Lazarus использует компилятор Free Pascal, то всё сказанное о типах данных по отношению к Free Pascal справедливо и для Lazarus.
Итак, целочисленные типы данных Free Pascal перечислены в таблице 13.1.
Таблица 13.1. Целочисленные типы данных Free Pascal (Lazarus).
Тип | Размер, байт | Диапазон значений |
Byte | 1 | 0…255 |
Shortint | 1 | -128…127 |
Smallint | 2 | -35768…32767 |
Word | 2 | 0…65535 |
Integer | 2 или 4 | Зависит от режима компиляции |
Cardinal | 4 | 0…4294967295 |
Longint | 4 | -2147483648…2147483647 |
Longword | 4 | 0...4294967295 |
Int64 | 8 | -9223372036854775808...9223372036854775807 |
QWord | 8 | 0...18446744073709551615 |
ПРИМЕЧАНИЕ
В Free Pascal типы Int64
и QWord
не являются
! Это означает, что вы не можете использовать их, например, для индексных переменных в циклах. Однако я привёл их здесь, чтобы отдельно не описывать в будущем и собрать в одном месте все целочисленные типы Free Pascal. Если какие-то слова вам не понятны - не пугайтесь. В своё время я обо всём расскажу подробнее.
А теперь несколько пояснений к таблице.
В колонке ТИП приведены идентификаторы типов данных (ключевые слова, которые указывают компилятору, к какому типу относятся те или иные данные). Как использовать эти идентификаторы, вы узнаете в следующих уроках.
В колонке РАЗМЕР указан размер, который занимает тип данных в памяти компьютера. Например, целое положительное число можно представить разными типами: Byte , Word , Cardinal и др. Однако число типа Cardinal будет занимать в памяти 4 байта, в то время как число типа Byte – всего лишь 1 байт. Поэтому, если вы точно знаете, что число, с которым вы работаете, никогда не примет значение больше 255, то лучше определять его как тип Byte , так как это позволит сэкономить место в памяти компьютера. Хотя здесь не всё так однозначно (нюансы распределения памяти и других ресурсов компьютера выходят за рамки ).
В колонке ДИАПАЗОН указан диапазон значений, которым оперирует тип данных. Например, число типа Byte может принимать значения от 0 до 255.
А теперь практика. Напишем программу, которая выводит на экран диапазоны значений всех целочисленных типов данных. Исходный код этой программы приведён ниже:
Листинг 13.1. Программа вывода на экран диапазонов целых чисел. program td; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; begin Writeln("Byte: ", Low(Byte), "..", High(Byte)); Writeln("Shortint: ", Low(Shortint), "..", High(Shortint)); Writeln("Smallint: ", Low(Smallint), "..", High(Smallint)); Writeln("Word: ", Low(Word), "..", High(Word)); Writeln("Integer: ", Low(Integer), "..", High(Integer)); Writeln("Cardinal: ", Low(Cardinal), "..", High(Cardinal)); Writeln("Longint: ", Low(Longint), "..", High(Longint)); Writeln("Longword: ", Low(Longword), "..", High(Longword)); Writeln("Int64: ", Low(Int64), "..", High(Int64)); Writeln("QWord: ", Low(QWord), "..", High(QWord)); Readln; end.
Стандартная функция Low определяет минимальное значение типа данных. Фунцкия High определяет максимальное значение. С функциями WriteLn и ReadLn вы уже немного знакомы. Более подробно о подпрограммах (процедурах и функциях) мы будем говорить в соответствующем разделе .
Напоследок скажу, как записываются целочисленные данные в программе. Да также как и везде - просто пишите число, без кавычек и каких-либо дополнительных символов. Например, так
10
178
35278
Правда, это относится к числам в десятичной системе счисления. Наверняка вы уже знаете, что есть и другие системы. Наиболее широко распространены двоичная, десятичная и шестнадцатеричная системы счисления .
Free Pascal поддерживает четыре формата записи целого числа:
- Десятичная запись . Просто число, например 10.
- Шестнадцатеричная запись . Число с префиксом $. Например, шестнадцатеричное число $10 равно десятичному 16.
- Восьмеричная запись . Число с префиксом &. Например, восьмеричное число &10 равно десятичному 8.
- Двоичная запись . Число с префиксом %. Например, двоичное число %10 равно десятичному 2.
Домашнее задание:
Создайте программу, которая выводит на экран диапазоны значений целых чисел (листинг 13.1). Откомпилируйте программу и запустите её. Убедитесь, что эти значения соответствуют указанным в таблице 13.1.
В исходном коде программы найдите строку, которая задаёт режим компиляции:
{$mode objfpc}{$H+}
В этой строке вместо слова objfpc напишите слово tp . То есть итоговая строка должна выглядеть так:
{$mode tp}{$H+}
Запустите программу. Посмотрите диапазон значений типа Integer . Сделайте выводы.
Учитесь думать как программист, то есть логически. Никто вам до пенсии не будет всё разжёвывать, как это делаю сейчас я. Надо привыкать думать самостоятельно. Иначе вы скатитесь к “обезьяньему принципу обучения”, и тогда ваши шансы стать классным программистом приблизятся к нулю. Чтобы помочь вам не скатиться на уровень “зубрёжки”, я буду периодически оставлять пробелы в вашем обучении, чтобы вы постарались сами додуматься до каких-то вещей.
Намного лучше, если вы сами додумаетесь до неправильного решения , сами найдёте ошибку и сами её исправите, чем будете всегда использовать чужие правильные решения и тупо их копировать.
Простейшим числовым типом данных в Паскале являются целые типы, предназначенные для хранения целых чисел. Целые числа в Паскале принято делить на два типа: со знаком и без знака. Числа со знаком – это целочисленный тип, в который входят как положительные, так и отрицательные числа, без знака – только положительные.
Ниже приведены две таблицы с целочисленными типами. Сначала выпишем типы целых чисел со знаком :
Тип | Байт | Диапазон значений |
shortint | 1 | -128 ... 127 |
smallint | 2 | -32768 ... 32767 |
integer, longint | 4 | -2147483648 ... 2147483647 |
int64 | 8 | -9223372036854775808 ... 9223372036854775807 |
А это целочисленные типы без знака :
Тип | Байт | Диапазон значений |
byte | 1 | 0 ... 255 |
word | 2 | 0 ... 65535 |
longword, cardinal | 4 | 0 ... 4294967295 |
uint64 | 8 | 0 ... 18446744073709551615 |
Как видно, в первой колонке стоит название типа, во второй – количество байт, занимаемое в памяти числами этого типа, в третьей – соответственно диапазон возможных значений. В числах со знаком есть два типа – integer и longint (буквально «целый» и «длинный целый»), которые являются синонимами. То есть вы можете в разделе описаний использовать как одно название, так и другое.
Аналогично во второй таблице (неотрицательные целые числа в Паскале) есть также два целочисленных типа-синонима размером 4 байта – longword и cardinal , поэтому используйте либо одно, либо другое.
Ещё можно заметить, что если числа первой таблицы условно перенести в правую часть относительно нуля (сдвинуть интервал вправо так, чтобы минимальным числом оказался 0), то мы получим интервалы целых чисел второй таблицы, лежащие в соответствующих строках. Так, если в 1-байтовом типе shortint к левой и правой границам прибавить 128, то получим тип byte (0..255); если в 2-байтовом типе smallint к границам прибавить 32768, то получим соответствующий 2-байтовый тип без знака word (0..65535) и т.д.
Всё это случается потому, что в целочисленных типах без знака числа могут быть разделены ровно надвое: половина чисел – в отрицательную часть, половина – в положительную. А почему тогда в числах со знаком левая граница по абсолютной величине на 1 больше за правую границу? – спросите вы. Например, в типе shortint минимум -128, тогда как максимум всего 127 (по модулю на 1 меньше). А это потому, что в правую часть входит также и 0, и об этом надо знать и помнить.
Так зачем же целые числа в Паскале делить на столько типов? Почему не обойтись, например, наибольшим из целочисленных типов в PascalABC.Net и Free Pascal – int64 – это почти 9 с половиной квинтиллионов (!) как с минусом, так и с плюсом? Да по простой банальной (?) причине – экономия памяти. Если вам надо сложить два небольших однобайтовых положительных числа (0..255), а вы эти числа описали как int64 (8 байт), то на это ушло в 8 раз больше памяти. А если программа большая и переменных много, то экономия памяти встает очень резко. Причем нет смысла использовать целые типы со знаком, если в задаче речь идет о таких величинах, как длина, масса, расстояние, время и т.п.
В разделе сайта Задачник Абрамяна (подраздел Integer) понаблюдайте за использованием различных целочисленных типов в Паскале.