- •Программирование на языке Паскаль в среде Turbo Pascal версии 6 и 7
- •Глава 7. Составные типы данных 29
- •Глава 8. Подпрограммы и функции 46
- •Глава 9. Файлы 50
- •Глава 10. Динамические переменные (списки) 58
- •Тип и функциональные возможности языка
- •Структура программы на Паскале
- •Алфавит языка
- •Правила написания имен
- •Структура блока описаний
- •Глава 2. Простые типы данных в языке Паскаль Понятие и классификация типов данных
- •Целочисленные типы
- •Вещественные типы
- •Логический тип
- •Символьный тип
- •Интервальный тип пользователя
- •Перечисляемый тип пользователя
- •Глава 3. Встроенные функции Понятие и классификация типов функций
- •Математические функции
- •Функции преобразования типов
- •Глава 4. Выражения Понятие и классификация типов выражений
- •Арифметические операции
- •Логические операции
- •Отношения
- •Битовые операции
- •Глава 5. Выполняемые операторы языка (для программ линейной структуры) Понятие и классификация
- •Классификация инструкций Паскаля
- •Оператор присваивания
- •Простейшие операторы ввода с клавиатуры
- •Простейшие операторы вывода на экран дисплея
- •Глава 6. Выполняемые управляющие операторы языка Простые управляющие операторы
- •Оператор безусловного перехода.
- •Оператор продолжения цикла.
- •Операторы ветвлений
- •Оператор условного перехода.
- •Неполный условный оператор.
- •Полный условный оператор.
- •Операторы циклов
- •Оператор арифметического цикла
- •Операторы итеративных циклов
- •Организация цикла с помощью условного перехода
- •Оператор итеративного цикла с предусловием
- •Оператор итеративного цикла с постусловием
- •Глава 7. Составные типы данных Классификация составных типов
- •Массивы Основные определения
- •Вывод массива
- •Примеры программ работы с массивами
- •Сортировки массива
- •Алгоритмы основных методов сортировок
- •Строки Строковые переменные
- •Стандартные (встроенные) процедуры работы со строками
- •Стандартные (встроенные) функции работы со строками
- •Структуры
- •Глава 8. Подпрограммы и функции Понятие подпрограмм в языке Паскаль.
- •Процедуры.
- •Описание и вызов функций
- •Параметры процедур и функций
- •Глава 9. Файлы Классификация внешних данных
- •Стандартные процедуры работы с файлами
- •Процедуры
- •Функции
- •Особенности работы с текстовыми файлами
- •Пример работы с текстовыми файлами.
- •Двоичные файлы (в машинных кодах) Типизированные файлы
- •Процедуры при работе с типизированными файлами
- •Функции при работе с типизированными файлами
- •Пример работы с типизированными файлами.
- •Файлы без типов
- •Процедуры, используемые при работе с нетипизированными файлами
- •Функции, используемые при работе с нетипизированными файлами.
- •Глава 10. Динамические переменные (списки) Понятие динамических переменных
- •Списочные данные
- •Односвязные списки
- •Двусвязные списки
- •Нульсвязные списки
- •Глава 11.Стандартный модуль работы с текстовым экраном Crt
- •2) Координаты экрана
- •3) Управление графическим режимом
- •4) Управление экраном и окном
- •5) Управление цветом
- •6) Вывод точек
- •7) Вывод линий
- •8) Вывод и закраска контуров
- •9) Окружности, эллипсы, дуги
- •10) Вывод текста
- •11) Последовательность работ при использовании графического режима
- •11) Пример программы приложения
Логические операции
Логические операции встречаются только в логических выражениях и применяются к логическим операндам. Логические выражения в Паскале используются в виде условий выбора одного из двух альтернативных путей при организации ветвлений или при решении о выходе из цикла. Результат такой операции всегда тоже логического типа.
Таблица 7. Таблица истинности для основных двоичных логических функций
|
отрицание |
конъюнкция |
дизъюнкция |
сложение по модулю 2 |
импликация |
эквиваленция |
штрих Шеффера |
стрелка Пирса | |
P |
Q |
┐P |
P ^Q |
P V Q |
P Q |
P->Q |
P<->Q |
P | Q |
P ↓ Q |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
В Турбо Паскале всего имеется четыре логических операции, одна из них - унарная - not (отрицание), остальные - бинарные. Их названия:
and - "и" (логическое умножение, коньюнкция),
or - "или" (логическое сложение, дизьюнкция),
xor - "исключающее или" (сложение по модулю 2).
В следующей таблице представлены результаты всех возможных вариантов выполнения логических операций.
Таблица 8. Логические операции Турбо-Паскаля
P |
Q |
not Q |
P and Q |
P or Q |
P xor Q |
False False True True |
False True False True |
True False |
False False False True |
False True True True |
False True True False |
Вычисление сложных логических выражений может выполняться как по полной, так и по укороченной схеме. По полной схеме вычисление проводится до конца, по укороченной - до момента, когда результат становится определенным. В качестве примеров можно привести следующие выражения:
P and ( Q or not S) и not P or Q and S
При P=False первое выражение будет равно False, а второе - True независимо от значений Q и S, поэтому вычислять Q и S и действия с ними не имеет смысла. Обычно Турбо Паскаль использует укороченную схему, как более быструю, но возможно заказать и полный режим с помощью специальной директивы. Как и для унарного "-", знаку операции "not" может предшествовать знак бинарной операции (но не наоборот!) и знаки операций должны разделяться пробелами. Например:
P and not Q - правильно, P not and Q - неправильно.
Отношения
Операции отношений возможны для сравнимых величин, т.е. для однотипных простых данных и для некоторых составных данных (строк, множеств), для которых эти операции определены специальным образом. Любые однотипные данные можно сравнивать на тождественность ("равно", "не равно"), упорядоченные типы можно также сравнивать на относительное расположение ("меньше", "больше").
В качестве знаков операций отношений в Турбо Паскале используются:
= - равно;
<> - не равно;
< - меньше;
<= - меньше или равно;
> - больше;
>= - больше или равно.
Особенностью операций отношений является то, что результат всегда логического типа, независимо от сравниваемых операндов. Причем, в качестве операндов могут выступать и выражения:
2.1*sin(X)-0.5 >= Y+Z или J < N-1
Отметим, что в Турбо Паскале логический тип - частный случай перечисляемого типа со значениями False и True, поэтому эти значения - упорядочены, и можно написать, что False < True. Аналогично, упорядоченными являются символьные данные, и можно утверждать, что
'А' < 'Б' -> True; '1' < 'A' -> True; 'a' < 'A' -> False.
В качестве составной части, отношения могут входить в сложные логические выражения, например (при NoError и EndArray - логического типа):
((J < N-1) or (X>=1.0)) and NoError and not EndArray;