Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пр1. Паскаль программа. Числовые типы.docx
Скачиваний:
2
Добавлен:
09.11.2019
Размер:
81.04 Кб
Скачать

Константы и переменные

Перед чтением рекомендуется перечитать Раздел описаний.

Для представления величин (данных) в программе используют константы и переменные. И у тех и у других есть имя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.

Упражнения.

  1. Записать на Паскале следующие целые числа: 5!; LXIV; 1, 10 6; -5*10 3.

  2. Записать на Паскале следующие целые числа в шестнадцатеричной системе счисления: 16, 256, 1024.

  3. Записать в Паскале следующие двоичные числа в шестнадцатеричной системе счисления: 11111010, 01010101, 110111, 101010, 10000000000.

  4. Привести примеры положительных и отрицательных целых чисел, не представимых в Паскале.