Предисловие дорогие друзья !
Вид материала | Документы |
СодержаниеГлава 3 управляющие структуры языка паскаль |
- К. Бальмонт Дорогие друзья, сегодня мы в гостях у замечательного русского поэта Константина, 164.76kb.
- Медникова Надежда Александровна учитель начальных классов моу «Уинская сош» Пермский, 91.48kb.
- И в шутку и всерьез Ведущий Добрый день, дорогие друзья! Вот и пришла весна, вот, 339.91kb.
- Играют 2 команды. Вопросы викторины, 53.15kb.
- Летние каникулы в праге, 322.16kb.
- Мои дорогие литературные друзья, 136.81kb.
- Ведущий: Дорогие, друзья! Разрешите поздравить вас с большим и дорогим для всех праздником, 124.29kb.
- Отчет о конференции 17-18 апреля дорогие друзья!, 182.44kb.
- Дорогие друзья и единомышленники, 134.05kb.
- Сценарий для 7-8 классов «Старая сказка на новый лад», 52.44kb.
ГЛАВА 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 (так как 54);
г) выполняется операция 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
вопросы и задания.
- Что такое простое условие? Какие операции отношения используются в нём?
- Что является результатом выполнения различных операций отношения?
- Влияют ли круглые скобки на порядок вычисления логических операций в логических выражениях?
- Что такое составное условие? Какие логические операции используются в нём? Каков приоритет их выполнения? Как изменить этот приоритет?
- Определить значение логического выражения (A>B) AND (B=A+2) OR NOT (C<>B) при следующих значениях переменных: А=7, В=9, С=5.
- Вычислить значение логического выражения, если A=TRUE, B=FALSE, C=FALSE:
а) A OR B; б) A AND B; в) B OR C.
- Вычислить значение логического выражения, если X=FALSE, Y=TRUE, Z=FALSE:
а) X OR Z; б) X AND Y; в) X AND Z.
- Вычислить значение логического выражения, если A=TRUE, B=FALSE, C=FALSE:
а) NOT A AND B; б) A OR NOT B; в) A AND B OR C.
- Вычислить значение логического выражения, если X= TRUE, Y=TRUE, Z=FALSE:
а) NOT X AND Y; б) X OR NOT Y; в) X OR Y AND Z.
- Вычислить значение логического выражения:
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
- Вычислить следующие выражения при 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) .
- Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:
а) целые n и k оба кратны трем;
б) только одна из логических переменных a и b имеет значение True.
- Нарисовать на плоскости (x,y) область, в которой истинно указанное выражение:
(Abs(x)<=1) And (Abs(y)>=1).
- Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:
а) x принадлежит отрезку [0,1]; б) x принадлежит отрезку [0,1]; в) x принадлежит отрезку [2,5] или x принадлежит отрезку [-1,1];
г) числа x, y, z равны между собой;
д) из чисел x, y, z только два равны между собой;
е) p делится нацело на q.
- Нарисовать на плоскости (x, y) область, в которой и только в которой истинно указанное выражение:
а) (y >= x) And (y+x>=0) And (y<=1);
б) (Sqr(x)+Sqr(y)>1) And y>0) And (Abs(x)<=1).
- Напишите программу, определяющую значение величины q после выполнения каждой из следующих команд присваивания:
- q:=(a
- q:=(a<=b) or (b>=c).
- Пусть a, b, c – имена целых переменных с положительными значениями. Напишите булево выражение, значением которого является TRUE тогда и только тогда, когда:
а) a, b, c имеют одинаковые значения;
б) a, b, c задают стороны тупоугольного треугольника;
в) a, b, c задают стороны прямоугольного треугольника;
г) a, b, c задают стороны остроугольного треугольника;
д) a, b, c задают стороны разностороннего треугольника;
е) a, b, c задают стороны равнобедренного треугольника.
2>