Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по паскалю.doc
Скачиваний:
1
Добавлен:
03.01.2020
Размер:
582.14 Кб
Скачать

6.3. Логический тип

ЛОГИЧЕСКИЙ ( или БУЛЕВЫЙ) ТИП определяется в разделе объявлений словом Boolean (в честь английского математика Джорджа Буля, автора алгебры логики). К логическому типу относятся такие переменные (аргументы, функции, выражения), которые могут принимать одно из двух значения – False (Ложь) или True (Истина). Для хранения логической переменной в памяти ЭВМ отводится один байт.

Операции, разрешенные для логических переменных:

  1. Операции отношения ( <, >, <=, >=, =, <>), при выполнении которых предполагается, что False < True.

  2. Логические операции: логическое отрицание Not (НЕ), логическое сложение Or (ИЛИ), логическое умножение And (И), логическая операция Xor (“исключающее ИЛИ”).

Примечания.

1. Результатом выполнения любой операции отношения, независимо от типа переменных или выражений в правой и левой части от знака отношения, является значение Истина или Ложь, то есть любая операция отношения имеет булевский тип. Поэтому, очевидно, что переменная У в формуле У := 2 > 3; должна быть описана как переменная типа Boolean и принимает значение Ложь.

2. Перечисленные выше логические операции применимы не только к логическим переменным, но и к любым целым (имеющим, например, тип byte, integer и т.д.). При этом логические операции выполняются поразрядно над двоичными кодами целых чисел. Очевидно, что при этом тип целых чисел, участвующих в логических операциях, должен быть один и тот же. Например, операторы

У1:=37 And 25; У2:=37 Or 25;

выполняются следующим образом: числа из десятичной системы счисления переводятся в двоичную

37(10)=100101(2), 25(10)=11001(2)

и над соответствующими разрядами двоичных кодов выполняются операция логического умножения

100101 & 011001 = 000001(2) =1(10)

и операция логического сложения

100101 v 011001 = 111101(2) = 61(10) ,

то есть будут получены следующие значения: У1=1, У2=61.

6.4. Типы данных, определяемые программистом

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

ПЕРЕЧИСЛИМЫЙ ТИП позволяют задавать некоторую произвольную, упорядоченную по усмотрению программиста, последовательность, элементы которой являются значениями переменных. Например, в программе необходимо установить соответствие между числами и названиями дней недели или задать упорядоченную последовательность родственных связей по мужской линии. Для этого удобно объявить перечислимые типы:

Type

Name_day = (понедельник, вторник, среда, четверг, пятница, суббота, воскресенье);

Rod_m = (прадед, дед, отец, сын, внук, правнук);

Тогда объявленные переменные

Var

Day: Name_day;

Rodstv1, Rodstv2: Rod_m;

могут принимать значения, перечисленные при объявлении типов, и в операторном разделе программы можно записать:

day:=среда; rodstv1:=отец; rodstv2:=прадед;

Между значениями перечислимого типа и порядковыми номерами этих значений устанавливается следующее соответствие: первому значению присваивается номер 0, второму значению – 1 и т.д. Максимальное количество значений перечислимого типа равно 255. Поэтому к переменным перечислимого типа применимы функции определения предшествующего и последующего элемента. Например, при выполнении операторов rodstv1:=pred(сын); rodstv2:=succ(сын); переменные получают значения rodstv1=отец; rodstv2=внук.

Примечание. Выражения Pred(понедельник), Succ(воскресенье), pred(прадед), succ(правнук) не корректны, так как в списке значений перечислимого типа для первых элементов не определены предшественники, а для последних элементов не определены последователи, и применение этих выражений в операторах вызовет при выполнении программы сообщение об ошибке.

ТИП-ДИАПАЗОН задает подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона. Например:

Type

T1=0..9;

Т2=’0’..’9’;

Т3=’a’..’z’;

Здесь тип Т1 определяет ограниченный диапазон целых чисел – от 0 до 9, разделителем границ диапазона являются две точки. Типы Т2 и Т3 определяют ограниченные наборы символов, поэтому здесь и цифры воспринимаются программой как символы и они также как и буквы должны заключаться в апострофы.