Предисловие дорогие друзья !

Вид материалаДокументы

Содержание


Глава 3 управляющие структуры языка паскаль
Подобный материал:
1   ...   4   5   6   7   8   9   10   11   ...   29

ГЛАВА 3 УПРАВЛЯЮЩИЕ СТРУКТУРЫ ЯЗЫКА ПАСКАЛЬ

§14. Условия в языке Паскаль.


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

Пример 19. необходимо решить линейное уравнение вида аx=b.

Решение. Из курса математики известно, если а не равно 0, то х=b/а, иначе если b не равно 0, то решения нет. Если a и b одновременно равны 0, то уравнение имеет бесконечное множество решений. Исходными данными для решения задачи являются значения переменных a и b. Результат работы программы или найденное значение х, или одно из сообщений: «Решений нет», «Х — любое число».

Перечислим последовательность действий для решения:

1. Задать коэффициенты А и В.

2. Проверить значение коэффициента А и, в зависимости от полученного ответа, выполнить:

— либо найти значение Х, если А0;

— либо (если А=0) проверить значение В и, в зависимости от полученного ответа выдать сообщение:
  • «Решений нет», если В0;
  • «Х — любое число», если В=0.



Изобразим алгоритм графически (рисунок 11).





Рис. 11

В языке Паскаль условия можно сформировать, используя знаки отношений. Как и в математике, для сравнения данных предусмотрены следующие операции отношений:

= равно,

< меньше,

> больше,

<= меньше или равно,

=> больше или равно,

<> меньше или равно.

Величины, присутвующие в отношении, называют операндами отношения. Если операндами отношения будут арифметические данные, то получим логическое значение: истинно выражение или ложно. В языке Паскаль для обозначения истинности выражения используется логическая константа TRUE, а для обозначения ложного выражения — константа FALSE. В качестве операндов могут выступать и выражения.

примеры.

а) отношение 6<2 (читается «шесть меньше двух?») даёт ложный результат FALSE;

б) отношение А<>В (читается «А не равно В?») даёт истинный результат TRUE при А=10 и В=3;

в) отношение C=4*T-R даёт ложный результат FALSE при С=6, Т=2, R=3.

В алгоритмах работы с числовыми и символьными переменными такие отношения между величинами и используются в качестве условий. Условия, содержащие в себе одно отношение, называются простыми. Из простых условий, которые являются выражениями логического типа, можно получать составные, используя служебные слова AND («и»), OR («или»), NOT («не») и скобки для указания порядка проверки условий. AND, OR, NOT являются логическими операторами.

Обозначим простые условия буквами А и В. тогда результат применения логических операторов к простым условиям будет следующим:

А

В

A AND B

A OR B

NOT A

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

TRUE

FALSE

TRUE

TRUE

TRUE

FALSE

FALSE

TRUE

FALSE

TRUE

TRUE

TRUE

TRUE

FALSE

При записи составных условий важно учитывать то, что логические операторы имеют более низкий приоритет, чем операторы сравнения, поэтому простые условия следует брать в скобки. Напомним приоритеты логических операторов: NOT, AND, OR.

Отрицание NOT даёт ложный результат, если операнд истинный, и наоборот даёт истинный результат, если операнд ложный.

Например, результат операции NOT (A=10) истинный при а=5; ложный при А=10.

Условие вида А AND B даёт истинный результат только в том случае, если оба операнда истинные. Если же хотя бы один операнд ложный, то результат также будет ложным. Ложный результат будет получен и тогда, когда оба операнда ложные.

Например, результат операции (А>5) AND (C=3) истинный при А=10, С=3; ложный при А=2, С=3; А=10, С=1; А=2, С=1.

Условие вида А OR B даёт ложный результат только в том случае, если оба операнда ложные. Если же хотя бы один операнд истинный, то результат будет истинным. Истинный результат будет получен и тогда, когда оба операнда истинные.

Например, результат операции (А>5) OR (C=3) ложный: при А=2, С=1; истинный: при А=10, С=1; А=10, С=3; А=2, С=3.

Результатом проверки любого условия является либо TRUE («истинно», если условие соблюдается), либо FALSE («ложно», если условие не соблюдается).

В отличие от математики, в языке Паскаль нельзя записывать двойные неравенства, например, нельзя записать 5<=х<=20. в этом случае необходимо использовать составное условие с использованием операции AND: (5<=х) AND (х<=20).

Пример 20. Определить значение составного условия

(A>3) AND (B=A+6) OR NOT (C=4)

при А=2, В=8, С=5.

Порядок выполнения операций следующий:

а) выполняется операция сравнения A>3 в первых скобках, результат её FALSE (так как 2<3);

б) выполняются действия во вторых скобках в соответствии с приоритетом — сначала вычисляется значание А+6, а затем сравнивается значение В со значением А+6, и в результате получаем TRUE так как 8=8);

в) выполняется операция сравнения С=4 в третьих скобках, результат её FALSE (так как 54);

г) выполняется операция NOT (С=4), равная NOT FALSE и результат её TRUE;

д) выполняется операция AND над первыми и вторыми скобками (FALSE AND TRUE), результат её FALSE;

е) выполняется операция OR над выражениями слева и справа от неё (FALSE OR TRUE) и результат её TRUE.

Таким образом, получаем окончательный результат логического выражения — TRUE.

В языке Паскаль логические константы TRUE (истина) и FALSE (ложь) можно использовать в явном виде или обозначать именем в разделе CONST, например:

CONST

T=TRUE;

F=FALSE;

LC=TRUE;

Переменная логического типа также может принимать значение TRUE (истина) или FALSE (ложь). Как мы уже говорили, в языке Паскаль все переменные должны быть описаны (объявлены) перед тем, как их будут использовать. Описывается переменная логического типа в разделе VAR с помощью служебного слова BOOLEAN (логический), например:

VAR

LOGIC: BOOLEAN;

A: BOOLEAN;

L1, L2, L3: BOOLEAN;

В разделе операторов такой переменной можно присвоить значение логической константы, например:

L1:=true; L3:=L1; L2:=FALSE;

Отношения также можно использовать в правой части оператора присваивания. Например, при описании переменных

VAR L1, L2: BOOLEAN;

можно указать

L1:=A<>B;

L2:=C=4*T-R;

Переменная L1 получит значение TRUE, а переменная L2 — значение FALSE при А=10 и В=3; С=6, Т=2, R=3.

Логические константы упорядочены таким образом, что FALSE
вопросы и задания.
  1. Что такое простое условие? Какие операции отношения используются в нём?
  2. Что является результатом выполнения различных операций отношения?
  3. Влияют ли круглые скобки на порядок вычисления логических операций в логических выражениях?
  4. Что такое составное условие? Какие логические операции используются в нём? Каков приоритет их выполнения? Как изменить этот приоритет?
  5. Определить значение логического выражения (A>B) AND (B=A+2) OR NOT (C<>B) при следующих значениях переменных: А=7, В=9, С=5.
  6. Вычислить значение логического выражения, если A=TRUE, B=FALSE, C=FALSE:

а) A OR B; б) A AND B; в) B OR C.
  1. Вычислить значение логического выражения, если X=FALSE, Y=TRUE, Z=FALSE:

а) X OR Z; б) X AND Y; в) X AND Z.
  1. Вычислить значение логического выражения, если A=TRUE, B=FALSE, C=FALSE:

а) NOT A AND B; б) A OR NOT B; в) A AND B OR C.
  1. Вычислить значение логического выражения, если X= TRUE, Y=TRUE, Z=FALSE:

а) NOT X AND Y; б) X OR NOT Y; в) X OR Y AND Z.
  1. Вычислить значение логического выражения:

a) (a>5) and (b>5) and (a<20) and (b<30);

b) not(a<15) or not(b<30);

c) c or d and (b=20) ïðè a=10, b=20, c=true, d=false
  1. Вычислить следующие выражения при a=True и b=False:

a) a Or b And Not a ;    б) (a Or b) And Not a ;

в) Not a And b;             г) Not (a And b) .
  1. Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:

а) целые  n и k  оба кратны трем;

б) только одна из  логических переменных a и b  имеет значение True.
  1. Нарисовать на плоскости (x,y) область, в которой истинно указанное выражение:

(Abs(x)<=1) And (Abs(y)>=1).
  1. Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:

а) x принадлежит отрезку [0,1];    б)  x принадлежит отрезку [0,1];   в) x принадлежит отрезку [2,5]  или  x принадлежит отрезку [-1,1];

г) числа  x, y, z  равны между собой;

д) из чисел x, y, z только два равны между собой;

е) p делится нацело на q.
  1. Нарисовать на плоскости (x, y) область, в которой и только в которой истинно указанное выражение:

а) (y >= x) And (y+x>=0) And (y<=1);

б) (Sqr(x)+Sqr(y)>1) And y>0) And (Abs(x)<=1).
  1. Напишите программу, определяющую значение величины q после выполнения каждой из следующих команд присваивания:
  1. q:=(a
  2. q:=(a<=b) or (b>=c).
  1. Пусть a, b, c – имена целых переменных с положительными значениями. Напишите булево выражение, значением которого является TRUE тогда и только тогда, когда:

а) a, b, c имеют одинаковые значения;

б) a, b, c задают стороны тупоугольного треугольника;

в) a, b, c задают стороны прямоугольного треугольника;

г) a, b, c задают стороны остроугольного треугольника;

д) a, b, c задают стороны разностороннего треугольника;

е) a, b, c задают стороны равнобедренного треугольника.