- •Лабораторная работа №1. Работа в среде Norton Commander
- •Лабораторная работа n 2. Среда программирования turbo pascal 7.0
- •Лабораторная работа n 3. Программирование в среде turbo pascal 7.0
- •Лабораторная работа n°4.Ознакомление со средствами компиляции и отладки в среде Turbo Pascal 7.0.
- •Лабораторная работа n 5. Ввод/вывод на языке программирования Паскаль
- •Лабораторная работа n 6.Программирование алгоритмов линейной структуры
- •Лабораторная работа n 7. Программирование алгоритмов ветвящейся структуры
- •Лабораторная работа n 8. Программирование алгоритмов циклической структуры
- •Лабораторная работа n 9.Одномерные массивы
- •Лабораторная работа n 10. Многомерные массивы
Лабораторная работа n 7. Программирование алгоритмов ветвящейся структуры
=================================
Операторы отношения. Условный оператор.
=======================================
Цель и задача работы : изучить логический тип BOOLEAN, логичес-
---------------------- кие операторы AND, OR, NOT, и операторы
отношения. Понятия логический оператор и
условный опреатор.
Теоретические положения.
------------------------
Логический тип в Паскале обозачается стандартным именем BOOL-
еан. Множество значений этого типа содержит всего два истинностные
значения, каковыми являются идентификаторы FALSE (ложь) и TRUE (ис-
тина). Логический тип относится к упорядоченным типам языка, т.е.
Определен так, что FALSE<TRUE, причем они имеют порядковые номера
0 и 1 соответственно.
Если в левой части оператора присваивания указана переменная
типа BOOLEAN, то в правой части оператора должно быть задано логи-
ческое выражение.
Логическое-выражение = выражение.
Для работы с логическими переменными в языке определены три
логические операции (NOT - отрицание, AND - логическое умножение,
OR - логическое сложение) и операции отношения ("=","<>","<",">",
"<=","=>").
Таблица истинности для логических операций с операндами A и B
-------------------------------------------------------------
+-------+-------+-------+-------+---------+--------+
I A I B I NOT A I NOT B I A AND B I A OR B I
+-------+-------+-------+-------+---------+--------+
I TRUE I TRUE I FALSE I FALSE I TRUE I TRUE I
+-------+-------+-------+-------+---------+--------+
I TRUE I FALSE I FALSE I TRUE I FALSE I TRUE I
+-------+-------+-------+-------+---------+--------+
I FALSE I TRUE I TRUE I FALSE I FALSE I TRUE I
+-------+-------+-------+-------+---------+--------+
I FALSE I FALSE I TRUE I TRUE I FALSE I FALSE I
+-------+-------+-------+-------+---------+--------+
В разветвляющихся вычислительных процессах отдельные этапы вы-
числения (операторы) выполняются в зависимости от некоторых усло-
вий. Для задания подобного рода разветвляющихся алгоритмов служит
условный оператор.
Формат оператора:
оператор-IF = "IF" ["("] условие [")"] "THEN" оператор
["ELSE" оператор]
условие = логическое-выражение.
IF (Если), THEN (то), ELSE (иначе).
Если условие выполняется (логическое выражение принимает значе-
ние TRUE), то выполняется оператор, стоящий после THEN, иначе выпол-
няется оператор, стоящий после ELSE. Условный оператор может быть
полным (конструкция : IF <условие> THEN <оператор> ELSE <оператор>)
и сокращенным (конструкция : IF <условие> THEN <оператор>).
Схемы алгоритмов работы полного и сокращенного условного оператора.
-------------------------------------------------------------------
Полный условный оператор
------------------------
I
/^\
/ \
истинно /логичес- \ ложно
+------<кое выражение>------+
I \ / I
I \ / I
+-----+----+ \ / +-----+----+
I оператор I I оператор I
+-----+----+ +-----+----+
I I
+-------------+-------------+
I
сокращенный условный оператор
-----------------------------
I
/^\
/ \
истинно /логичес- \ ложно
+------<кое выражение>------+
I \ / I
I \ / I
+-----+----+ \ / I
I оператор I I
+-----+----+ I
I I
+-------------+-------------+
I
Обратим внимание, что в условном операторе по синтаксису между
символами THEN и ELSE, и после ELSE может присутствовать только
один оператор.
Если необходимо несколько операторов, то нужно использовать состав-
ной оператор.
Составным оператором являеся последовательность операторов,
об'единенных в один оператор путем заключения этой последователь-
ности в операторные скобки - служебные слова BEGIN (начало) и END
(конец).
Пример : BEGIN
-------- A:=2; C:=3;
B:=C DIV A;
END;
Довольно часто встречаются случаи, когда вычислительный про-
цесс надо разветвлять не по двум, а по K (K>2) возможным путям. Это
можно сделать и с помощью условного оператора, однако запись в этом
случае становиться громоздкой и не наглядной:
IF B1
THEN S1
ELSE IF B2
THEN S2
ELSE
..............
IF Bк
THEN Sк;
во многих случаях для программиста может быть более удобен опера-
тор варианта. Идея оператора состоит в следующем. Все операторы,
среди которых производится выбор для исполнения, перечисляются в
явном виде в операторе варианта (ясно, что число таких операторов
фиксированно). Выбор среди них оператора, подлежащего исполнению,
производиться с помощью заданного в операторе варианта селектора
оператора - выражения перечисляемого типа. При этом каждый из вы-
бириемых для исполнения операторов снабжается своеобразной "меткой"
- меткой варианта, роль которой выполняет то значение селектора
(т.е. константа того же типа, что и селектор), при котором должен
выполняться этот оператор. Предусмотрен и такой случай, когда дан-
ный оператор должен выполняться при любом из нескольких возможных
значений селектора - в этом случае оператор снабжается соответс-
твующим списком меток варианта. При выполнении оператора варианта
сначала вычисляется значение селектора. Затем выполняется тот опе-
ратор, одна из меток которого совпадает со значением селектора и
метка варианта - это не то же самое, что и метка оператора, поэ-
тому ее нельзя использовать в операторе перехода.
Формат оператор вариант:
опеатор-CASE = "CASE" ["("] выражение [")"] "OF" элемент-
списка-случаев (*";" элемент-списка-случаев*) "END"
элемент-списка-случаев = [метка-случая ":" (*метка-случая
":"*) оператор
метка-случая = константа.
I
+-----+-----+
I Выражение I
+---+-+-+---+
I I I
+----------------+ I +------- ... ------+
I I I
IМетка1 Iметка2 IметкаK
+----+-----+ +----+-----+ +----+-----+
I оператор I I оператор I ... I Оператор I
+----+-----+ +----+-----+ +----+-----+
I I I
+------------------+--------- ... ------+
I
Примеры : CASE (I MOD 2) оF
--------- 0:M:=0;
1:M:=1;
END;
CASE SYM OF
'+':K:=1;
'-','*':K:=2;
END;
Варианты заданий :
------------------
Написать прогамму выполняющие операторы S1, S2, S3 в зависи-
мости от следующего условия:
IF ((A=B) AND (C>D)=TRUE OR NOT A)
THEN IF ((TRUE<>A) AND (C-D<3))
THEN S1
ELSE S2
ELSE S3;
где S1, S2, S3 процедуры вывода на экран дисплея поясняющей
информации о выполнении того или иного условного оператора.
Следует обратить внимание на ввод значений переменных типа BOOLEAN.
В языке программиравания Паскаль из стандартного файла ввода INPUT,
нельзя ввести значение переменной этого типа. Ввод значений этого
типа можно осуществить программно с помощью других типов, обычно CHAR.
+-----------+---------------------------+
I Номер I значения I
I варианта +-------+-------+-----+-----+
I I A I B I C I D I
+-----------+-------+-------+-----+-----+
I 1 I TRUE I FALSE I 5 I 2 I
+-----------+-------+-------+-----+-----+
I 2 I TRUE I FALSE I 2 I 5 I
+-----------+-------+-------+-----+-----+
I 3 I FALSE I TRUE I 5 I 2 I
+-----------+-------+-------+-----+-----+
I 4 I FALSE I TRUE I 2 I 5 I
+-----------+-------+-------+-----+-----+
I 5 I TRUE I TRUE I 6 I 6 I
+-----------+-------+-------+-----+-----+
I 6 I TRUE I TRUE I 0 I 7 I
+-----------+-------+-------+-----+-----+
I 7 I FALSE I FALSE I 5 I 5 I
+-----------+-------+-------+-----+-----+
I 8 I FALSE I TRUE I 10 I 9 I
+-----------+-------+-------+-----+-----+
I 9 I FALSE I TRUE I 10 I 7 I
+-----------+-------+-------+-----+-----+
I 10 I TRUE I FALSE I 2 I 2 I
+-----------+-------+-------+-----+-----+
I 11 I FALSE I TRUE I 8 I 10 I
+-----------+-------+-------+-----+-----+
I 12 I FALSE I FALSE I -15 I -12 I
+-----------+-------+-------+-----+-----+
I 13 I FALSE I FALSE I 0 I 3 I
+-----------+-------+-------+-----+-----+
I 14 I FALSE I FALSE I 10 I 1 I
+-----------+-------+-------+-----+-----+
I 15 I TRUE I TRUE I 10 I 1 I
+-----------+-------+-------+-----+-----+
I 16 I TRUE I FALSE I 10 I 1 I
+-----------+-------+-------+-----+-----+
I 17 I TRUE I FALSE I -1 I -4 I
+-----------+-------+-------+-----+-----+
I 18 I FALSE I TRUE I 2 I -1 I
+-----------+-------+-------+-----+-----+
I 19 I TRUE I FALSE I -1 I 2 I
+-----------+-------+-------+-----+-----+
I 20 I FALSE I FALSE I 2 I -1 I
+-----------+-------+-------+-----+-----+
I 21 I TRUE I TRUE I 0 I 3 I
+-----------+-------+-------+-----+-----+
I 22 I TRUE I FALSE I 0 I 3 I
+-----------+-------+-------+-----+-----+
I 23 I FALSE I TRUE I 0 I 7 I
+-----------+-------+-------+-----+-----+
I 24 I FALSE I TRUE I 0 I 3 I
+-----------+-------+-------+-----+-----+
I 25 I TRUE I TRUE I 2 I -1 I
+-----------+-------+-------+-----+-----+
I 26 I FALSE I FALSE I 1 I 2 I
+-----------+-------+-------+-----+-----+
I 27 I TRUE I FALSE I 4 I 1 I
+-----------+-------+-------+-----+-----+
I 28 I FALSE I TRUE I 2 I 8 I
+-----------+-------+-------+-----+-----+
I 29 I FALSE I TRUE I -3 I -1 I
+-----------+-------+-------+-----+-----+
I 30 I TRUE I TRUE I 0 I -2 I
+-----------+-------+-------+-----+-----+
I 31 I TRUE I FALSE I 1 I 6 I
+-----------+-------+-------+-----+-----+
I 32 I FALSE I FALSE I 3 I 3 I
+-----------+-------+-------+-----+-----+