- •Паскаль программа
- •Алфавит языка
- •Идентификаторы
- •Структура программы
- •Синтаксис и семантика заголовка
- •Синтаксис и семантика раздела описаний
- •Раздел операторов
- •Правила оформления программы
- •Правила выполнения программы
- •Типы данных Понятие типа
- •Константы и переменные
- •Данные целого типа
- •Операции с данными целого типа
- •Данные действительного типа7
- •Операции с данными действительного типа
- •Возведение в степень
- •Приведение типов
- •Выражения
Константы и переменные
Перед чтением рекомендуется перечитать Раздел описаний.
Для представления величин (данных) в программе используют константы и переменные. И у тех и у других есть имя5 (идентификатор) и значение. Различие в том, что значение константы в процессе выполнения программы изменить нельзя, а значение переменной можно.
Условно переменные разделим на входные (то, что дано), выходные (результат: то, что нужно получить) и промежуточные, необходимые в процессе вычислений. Например, для программы вычисления наибольшего общего делителя (алгоритм Евклида), входные переменные m и n, промежуточная переменная r. Выходная переменная тоже n. Эти переменные должны иметь тип «натуральные числа». Но такого типа в Паскале нет. Поэтому придется использовать какой-то целый тип. От размера типа зависит диапазон чисел, для которых можно использовать программу. Если описать переменные так:
Var
m, n : integer;
r :integer;
то самым большим числом на входе можно взять 32767 = 216 – 1.
Важно! Значение переменных, описанных в разделе Var, не определено. Иногда можно встретить определение переменной как ячейки памяти, в которой содержится значение переменной. Подразумевается, что описание переменной связывает адрес этой ячейки с именем переменной, то есть имя используется как адрес ячейки памяти, где содержится значение. Но само значение еще не определено.
В алгоритме Евклида значение остатка r сравнивается с нулем. 0 – целая константа. Можно (но не обязательно) определить константу со значением 0, например, так:
Const
Zero = 0;
В процессе компиляции в тексте программы идентификатор Zero будет заменен своим числовым значением.
Тип константы Zero не очевиден. Ноль есть в любом целочисленном типе. В разделе констант можно описать типизированную константу, указав и тип и значение:
Const
Zero: integer = 0;
Но теперь Zero стала обычной переменной целого типа, начальное значение которой определено и равно нулю.
Контроль использования переменных осуществляется на этапе компиляции. Компилятор обычно пресекает попытки установить для переменной значение неподходящего типа. Многие языки программирования автоматически приводят значение переменной к нужному типу. Как правило, такое неявное преобразование типа у начинающих программистов является источником трудно обнаруживаемых ошибок. В Паскале неявное преобразование типа можно считать скорее исключением, чем правилом. Исключение сделано только в отношении констант и переменных типа INTEGER (целые), которые разрешается использовать в выражениях типа REAL (действительные). Запрет на автоматическое преобразование типов не означает, что в Паскале нет средств преобразования данных. Они есть, но их нужно использовать явно.
Данные целого типа
Используются целые числа в диапазоне, определяемом размером машинного слова (байт, слово, двойное слово) и способом представления (знаковое или беззнаковое целое).
В зависимости от разрядности регистра и знаковой или беззнаковой интерпретации его содержимого определяется диапазон целых чисел. В Паскале целые числа представлены следующими типами:
Таблица 5. Целые типы
Тип |
Диапазон |
Разрядность |
Shortint |
‑128..127 |
8 |
Integer |
‑32768..32767 |
16 |
Longint |
‑2147483648..2147483647 |
32 |
Byte |
0..255 |
8 |
Word |
0..65535 |
16 |
Для определения наибольших значений типов Integer и Longint можно использовать встроенные константы MaxInt = 32767 и MaxLongint = 2147483647.
Среды Delphi и Lazarus позволяют работать с 64-х битовыми знаковыми числами. Это тип int64.
Программист определяет диапазон значений данных (входных, промежуточных, выходных) и подбирает соответствующий тип данных.
Правила записи числовых констант. Используются десятичные и шестнадцатеричные константы. Цифры десятичной системы: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Цифры шестнадцатеричной системы: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f (буквы строковые или прописные). Запись шестнадцатеричной константы начинается со знака $. Например, $ff, $1A, $B800. Шестнадцатеричные константы могут быть только неотрицательными. Десятичные константы могут быть отрицательными. Например, -1, 1024, 0.
Именованные константы определяются в разделе const.
Переменные описывают в разделе var.
Упражнения.
Записать на Паскале следующие целые числа: 5!; LXIV; 1, 10 6; -5*10 3.
Записать на Паскале следующие целые числа в шестнадцатеричной системе счисления: 16, 256, 1024.
Записать в Паскале следующие двоичные числа в шестнадцатеричной системе счисления: 11111010, 01010101, 110111, 101010, 10000000000.
Привести примеры положительных и отрицательных целых чисел, не представимых в Паскале.