Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Praktikum_po_programmirovaniyu.doc
Скачиваний:
23
Добавлен:
09.12.2018
Размер:
2.5 Mб
Скачать

2.1. Структура типов в Turbo Pascal

Язык Паскаль был разработан в 70-е годы 20 века швейцарским инженером Н. Виртом. Изначально язык создавался как инструмент для обучения программированию как систематической дисциплине. Однако очень скоро обнаружилась чрезвычайная эффективность языка Паскаль в самых разнообразных приложениях: от численных расчетов до разработки сложных программных систем: компиляторов, операционных систем, баз данных.

Паскаль является глубоко типизированным языком, то есть, каждая переменная характеризуется своим типом. Под типом понимается множество значений, которые может принимать переменная, а также множество операций, допустимых над переменными этого типа.

Тип каждой переменной должен быть обязательно определен в разделе описания переменных и не может быть изменен в процессе выполнения программы. Переменная может участвовать в операциях, допустимых только для ее типа. Такой подход способствует большей аккуратности и ответственности при составлении программ, позволяет автоматически проверять программы на корректность при компиляции и в конечном итоге способствует повышению надежности программ.

Дадим более подробную характеристику некоторым типам, представленным на рисунке.

14

    1. Стандартные скалярные типы. Типы целых чисел

Типы целых чисел, используемые в Паскале, представлены в табл. 2.1.

15

Таблица 2.1

Тип

Диапазон значений

Размер памяти

ShortInt

-128..127

8 бит, со знаком

Integer

-32768..32767

16 бит, со знаком

LongInt

-2147483648..214748364

32 бита, со знаком

Byte

0..255

8 бит, без знака

Word

0..65535

16 бит, без знака

Comp

-2^63+1..2^63-1

64 бита, со знаком

Минимальный адресуемый элемент данных состоит из восьми двоичных разрядов и называется байтом. Содержимое байта можно рассматривать как число без знака или как число со знаком. Под знак отводится самый левый двоичный разряд. Знак плюс кодируется нулем, знак минус – единицей.

Все положительные целые числа хранятся в прямом коде, то есть в своем двоичном представлении с нулем в знаковом разряде. Отрицательные числа хранятся в дополнительном коде, который формируется в соответствии со следующим алгоритмом (рассмотрим алгоритм на примере числа ):

1. Сначала записывается двоичное представление абсолютного значения числа. .

2. Выполняется побитовая инверсия представления,

16

полученного на предыдущем шаге. Преобразованное число будет равно .

3. К младшему разряду полученного двоичного представления добавляется единица. Число в дополнительном коде равно .

Поскольку в знаковом разряде находится 1, то это означает, что число отрицательное. Для нахождения абсолютного значения числа по его представлению в дополнительном коде выполняются следующие действия:

1. Выполняется побитовая инверсия заданного представления: .

2. К младшему разряду полученного результата прибавляется единица: =.

В зависимости от способа представления чисел в различных типах (знаковое или беззнаковое) одно и тоже двоичное представление числа в разных типах будет соответствовать разным значениям в десятичном представлении. Например, двоичное представление в типе byte (беззнаковое представление) будет соответствовать , а в типе ShortInt (знаковое представление) - .

При выполнении арифметических операций над целыми числами может возникнуть переполнение, то есть ситуация, когда двоичное представление числа не умещается в том количестве бит, которое отведено для переменной этого типа. Например, если выполнять операцию возведения в степень для переменной типа ShortInt, занимающей в памяти 8 бит, то результат будет таким:

-

-

17

-

Двоичное представление правильного результата = будет таким: . Поскольку тип ShortInt является знаковым, то появление 1 в левом крайнем разряде означает, что число отрицательное, а значит оно представлено в дополнительном коде. Переход от дополнительного кода к абсолютному значению дает: . Последнее двоичное представление соответствует .

Для того, чтобы прервать выполнение программы при возникновении переполнения, устанавливают опции Overflow checking (Проверка переполнения) и Range checking (Проверка выхода за границы допустимого диапазона) в панели Runtime errors (Ошибки времени выполнения) пункта Compiler меню Options.

Над данными целого типа определены следующие арифметические операции:

+, -, *, / - выполняются так же, как в обычных арифметических выражениях.

Целочисленное деление (div) - в качестве результата выдает только целую часть частного, остаток отбрасывается (23 div 5 = 4).

Деление по модулю (mod) вычисляет остаток, полученный при целочисленном делении (23 mod 5 = 3).