Изучение принципов алгоритмического программирования на языке Pascal

       

Стандартные типы данных


Память ЭВМ представлена последовательностью ячеек – машинных слов. Каждое слово имеет свой адрес в памяти ЭВМ и, в свою очередь, состоит из одного или нескольких байт. Для увеличения удобства обращения с данными в языках высокого уровня предусмотрен стандартный набор типов данных. Тип данных – характеристика множества значений, которые могут принимать переменные этого типа.

Традиционно, типы данных подразделяются на несколько подвидов:

а) логический – (boolean). Выражение логического типа может принимать всего два значения, соответствующие логической истине и логической лжи. В различных языках принят разный синтаксис обозначения логических констант. Так, логическая истина

обозначается «, «.T.», «true», «истина», «да». В свою очередь, ложь

может быть обозначена «0», «.F.», «false», «ложь», «нет». В языке Pascal в качестве логических констант приняты «false» и «true».

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

Значения логического типа возникают, в частности, в результате операций сравнения.

б) целочисленный – (integer). Переменные и выражения целочисленных типов предназначены для хранения числовой информации, если не требуются вычисления с использованием дробной части. Например, целочисленные переменные могут быть использованы для вычисления порядкового номера, количества счётных единиц и т.п. Следует помнить, что выражения, использующие только целочисленные расчёты, на многих процессорах выполняются значительно быстрее, чем расчёты, в которых присутствуют значения с дробной частью. В некоторых языках целочисленный тип делится на две разновидности – знаковый и беззнаковый. Значения первой разновидности типа позволяют представлять как положительные, так и отрицательные числа. Значения второй – только неотрицательные числа, но большие по абсолютной величине в два раза. Целочисленные типы данных в языке Pascal различаются и по размеру занимаемой памяти. Целочисленные переменные могут занимать 1, 2, 4 или 8 байт оперативной памяти.


В арифметических выражениях целочисленные значения различных разновидностей могут использоваться совместно. Единственное ограничение – результаты расчётов не должны вызывать выхода за пределы предусмотренного для заданной разновидности диапазона значений, называемого арифметическим переполнением.
В таблице 1 приведён краткий перечень целочисленных типов данных языка Pascal и диапазоны значений, соответствующие этим типам.
 
Таблица 1. Целочисленные типы данных языка Pascal



Название
Размер (байт)
Минимальное значение
Максимальное значение
byte
1
0
255 (28-1)
shortint
1
-128 (-27)
127 (27-1)
word
2
0
65535 (216-1)
integer
2
-32768 (-215)
32767 (215-1)
longint
4
-2147483648 (-231)
2147483647 (231-1)
comp
8
-263
263-1

Как видно из таблицы, увеличение размера переменной на один байт позволяет расширить диапазон значений в 256 раз.
Константы целочисленных типов представляют собой последовательности цифр без разделителей (!), перед которыми может быть установлен знак «—» - минус (например, 12, -40, 200000).
В некоторых случаях применяются константы шестнадцатеричной системы счисления. Перед такими константами должен быть установлен знак «$» (например, $0B0F5, $20, $7C).
в) вещественный – (real). Данный тип применяется, если вычисления не могут быть выполнены без использования дробных значений. Значения вещественного типа возвращаются многими стандартными математическими функциями и операцией деления. 
Вещественные значения разделяются на разновидности согласно их точности и диапазону принимаемых значений. В памяти ЭВМ такие значения представлены в форме с плавающей точкой. Общий вид вещественного числа с плавающей точкой:
.
Здесь константа M
называется мантиссой
числа, а P – порядком. Обе константы могут принимать как отрицательные, так нулевые и положительные значения.
Основная проблема вычислений с использованием плавающей арифметики заключается в возможном переполнении и антипереполнении


переменной. Это происходит из- за того, что обе константы ограничены количеством разрядов. Если представить, что порядок содержит 3 десятичных разряда, то возможный диапазон значений положительных чисел примерно от 10-999
до 10999. Если умножить второе число на 10 – произойдёт переполнение, если разделить первое на 10 – антипереполнение, так как в обоих случаях не будет хватать разрядной сетки порядка для представления числа. Второе следствие переполнения – поглощение значений. Допустим, требуется сложить 10100 и 1070. Вопреки законам арифметики, сумма будет равна 10100, так как разрядности мантиссы не хватит для покрытия разницы в 30 порядков между этими слагаемыми.
На рис. 3 изображена числовая прямая, на которой отмечены интервалы возможных значений, принимаемых вещественными переменными.
Рис. 3. Числовая прямая вещественных значений
В таблице 2 приведён краткий перечень вещественных типов данных языка Pascal и положительные диапазоны значений, соответствующие этим типам. Отрицательные диапазоны симметричны положительным относительно нуля.
Таблица 2. Вещественные типы данных языка Pascal

Название
Размер (байт)
Минимальное значение
Максимальное значение
single
4
1.5×10-45
3.4×1038
real
6
2.9×10-39
1.7×1038
double
8
5.0×10-324
1.7×10308
extended
10
3.4×10-4932
1.1×104932

Константы вещественного типа в тексте программы могут быть представлены в формах с фиксированной и плавающей точкой. В первом случае имеет место традиционная запись десятичной дроби с разделителем – точкой (например, 23, 145.7, -206.322, 10.0001). Во втором – запись, включающая мантиссу и порядок, разделённые буквой «E» (например, 0.23E8, 1.56E-6, -3E10).
г) символьный – (char, string). Переменные строковых типов используются для хранения и обработки текстовой информации. Переменная типа char содержит одиночный символ, типа string – последовательность символов.  Константы символьного типа бывают двух разновидностей, первая из которых подразумевает использование символа, вторая – кода символа. В первом случае символ должен быть заключён одинарные кавычки (апострофы) (например, ‘A‘, ‘e‘, ‘%‘), во втором – перед кодом символа должен быть указан знак «#» (например, #32, #65, #255). В строковых константах допускается комбинирование этих способов (например, ‘System‘#32‘error‘). Если сам символ апострофа входит в строковую константу, его следует продублировать или заменить на #39 (например, ‘7 o‘‘clock‘,‘7 o‘#39‘clock‘).

Содержание раздела