- •Введение в object pascal
- •Лекция 1. Интегрированная Среда и Состав языка Object Pascal
- •1.1 Работа с окнами
- •1.2 Редактирование в Object Pascal
- •1.3 Команды меню
- •1.4 «Горячие» клавиши в Object Pascal
- •1.5 Состав языка
- •1.5.1 Алфавит и ключевые слова
- •1.5.2 Идентификаторы
- •1.5.3 Знаки операций, разделители, выражения и операторы
- •Лекция 2. Описательная часть программы
- •2.1 Структура программы
- •2.2 Описание констант
- •2.3 Описание и использование меток
- •2.4 Комментарии
- •Лекция 3. Описание переменных
- •3.1 Структура раздела описания переменных
- •3.2 Классификация типов данных
- •3.2.1 Целочисленные типы
- •3.2.2 Логический тип
- •3.2.3 Символьный тип
- •3.2.4 Вещественные типы
- •3.3 Описание типов пользователя
- •Лекция4. Выражения
- •4.1 Порядок выполнения операций
- •4.2 Выражения целого типа
- •4.3 Вещественные выражения
- •4.4 Логические выражения
- •Лекция 5. Программы Линейной структуры
- •5.1 Операторы ввода (Read, Readln)
- •5.2 Операторы вывода (Write, Writeln)
- •5.2.1 Форматирование численных значений
- •5.2.2 Вывод строковых, символьных и логических значений
- •5.2.3 Вывод вещественных значений в экспоненциальном формате
- •5.2.4 Расположение данного в поле вывода. Примеры
- •5.3 Оператор присваивания
- •5.4 Составной оператор
- •5.5 Стандартные процедуры и функции
- •5.5.1 Понятие процедуры и функции
- •5.5.2 Описание некоторых стандартных процедур и функций
- •5.5.3 Примеры программ линейной структуры
- •Лекция 6. Операторы ветвления (выбора)
- •6.1 Оператор ветвления if
- •6.2 Оператор множественного выбора (варианта) - case
- •Лекция 7. Операторы организации циклов
- •7.1 Цикл типа for
- •7.1.1 Прямая форма оператора for
- •7.1.2 Обратная форма оператора for
- •7.1.3 Советы для начинающих и примеры
- •7.2 Цикл типа While
- •7.3 Цикл типа Repeat... Until
- •7.4 Дополнительные операторы при программировании циклов
- •7.4.1 Досрочный выход из цикла - break
- •7.4.2 Переход к следующей итерации цикла - continue
- •Лекция 8. Массивы
- •8.1 Одномерные массивы
- •8.2 Сортировка одномерного массива
- •8.3 Массивы с большей размерностью
- •8.4 Констант-массивы
- •8.5 Генератор случайных чисел
- •8.5.1 Описание функции Random
- •8.5.2 Применение случайных чисел при работе с массивами
- •Лекция 9. Строки
- •9.1 Строковый тип
- •9.2 Операции над строками
- •Лекция 10. Записи и множества
- •10.1 Запись
- •10.2 Множества
- •11 Пользовательские процедуры и функции
- •11.1 Описание функции и процедуры
- •11.2 Понятие формальных и фактических параметров
- •11.3 Способы передачи параметров в подпрограмму через заголовок
- •11.4 Область видимости идентификаторов
- •12 Файлы
- •12.1 Основные понятия
- •12.2 Типизированные файлы
- •12.3 Текстовые файлы
4.4 Логические выражения
Понятие логического выражения или выражения типа Boolean во многом базируется на понятии операций отношения. В Object Pascal реализованы следующие операции отношения:
= - равно;
<> - не равно;
> - больше чем;
< - меньше чем;
>= - больше или равно;
<= - меньше или равно.
Эти операции используют в качестве операндов выражения практически всех скалярных и базовых типов: вещественного, целого, логического, символьного и строкового.
При выполнении операций отношения допускается смешение типов Real (всех вещественных), Integer (всех целых). Результат операции для любых операндов всегда логического типа - { false, true }.
Примеры:
А = В { результат равен true, если А равно В
и false, если А не равно В}
А <> В { результат равен true, если А не
равно В и false, если А равно В}
А > В { результат равен true, если А больше
В и false в противном случае}
А > 0 { результат равен true, если А больше
нуля и false в противном случае}
В операциях сравнения для символов и строк необходимо вспомнить, что у каждого элемента скалярного, перечислимого типа есть свой код - порядковый номер. Его можно получить, используя функцию Ord. Заведомо известно, что коды всех букв упорядочены согласно таблице ASCII (смотри п.3.2.3), а коды всех цифр упорядочены по их арифметическим значениям. Данное отношение порядка и позволяет сравнивать любые символы и строки.
Пример:
'А' < 'D'
'X' < 'Y'
'2' < '5'
'ABCD' < 'АВСЕ'
'ABC' < 'ABCD'
Кроме операций отношения в логических выражениях используются скобки и логические связки (операции с операндами типа Boolean):
унарная (имеющая один операнд): not;
бинарные (имеющие два операнда): and, or, xor.
Запись бинарных логических связок осуществляется следующим образом:
<логическое выражение - первый операнд> <логическая связка> <логическое выражение - второй операнд> ;
При использовании логических связок необходимо большое внимание уделять расстановке скобок так, как при совместном использовании операций сравнения и логических связок можно легко ошибиться. Логические связки имеют более высокий приоритет, чем операции сравнения.
Примеры логических выражений со связками:
(А>5) and (Т<10)
((М<3) or (Х<0)) and Z.
С помощью произвольных логических выражений X и Y можно легко показать смысл логических связок. Напомним, что выражения X и Y могут иметь только одно из двух значений {false, true}.
X and Y - ("конъюнкция") данное логическое выражение истинно, тогда и только тогда, когда X и Y одновременно истинны.
X or Y - ("дизъюнкция") данное логическое выражение истинно, когда по крайней мере одно из выражений X или Y истины.
X xor Y - ("исключающая дизъюнкция") данное логическое выражение истинно, когда X<>Y и ложно в обратном случае.
not Х - ("отрицание") данное логическое выражение истинно, когда X— ложно и ложно, когда X— истинно.
Используя операции отношения на множестве логических значений можно определить и другие операции математической логики.
Например:
(X, Y:Boolean)
Х<= Y- импликация;
Х = Y— эквивалентность;
Х <> Y— исключающее или.
Сами логические операции очень удобно определять с помощью таблиц истинности, в которых единица соответствует логическому значению true, а ноль - false.
Пусть X и Y это логические операнды. Для всевозможных комбинаций их значений построим таблицу истинности логических выражений X and Y, X or Y, X xor Y, not X, X<=Y , Х = Y.
X |
Y |
X and Y |
X or Y |
Х <> Y |
Х<= Y |
X =Y |
not Х |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
При вычислении логических выражений можно воспользоваться установкой компилятора {$В-} или {$В+}. Она отвечает за режим оптимизации вычисления логических выражений. Например, в логическом выражении
(2<>2) and (a<y) and (t<z)
достаточно вычислить первый элемент конъюнкции, чтобы сказать, что всё логическое выражение ложно. Но в некоторых случаях режим оптимизации приводит к ошибкам. Например, в той части логического выражения, которая была отброшена в результате оптимизации вызывалась функция, имеющая логическое значение и выполняющая полезную работу, но в результате оптимизации функция не будет вызвана и это приведет к ошибке.