Простые и составные условия

advertisement
8 КЛАСС
Простые и составные условия
1.1 Принятие решений в программе. Простые условия
Как известно, операторы (команды) ввода и вывода, оператор (команда)
присваивания позволяют составлять линейные программы, в которых все
команды выполняются последовательно, одна за другой. Но в жизни, решая те
либо иные задачи, часто приходится принимать решения в зависимости от
создавшейся ситуации либо от некоторого условия (условий). Например, если
сделаны уроки, можно отдохнуть; если холодно – необходимо теплее одеться;
если в театральной кассе имеются билеты, можно пойти в театр на спектакль,
иначе можно просто погулять в парке.
Принимая решения, человек
рассуждает, анализируя ситуацию. В программировании можно также
создавать программы, умеющие выполнять выбор. Для этого существуют
команды, которые позволяют компьютеру принимать решения в зависимости
от выполнения некоторого условия. Одной из таких команд является
условный оператор языка программирования Pascal
If
условие then оператор_1 else оператор_2;
В переводе на русский язык данная форма записи означает: если
выполняется условие, то исполняется оператор_1, иначе исполняется
оператор_2.
Рассмотрим на примере, как работает оператор if.
Например, необходимо дать задание компьютеру проверить, знают ли
ученики таблицу умножения.
Пример 1. Проверка знаний таблицы умножения
program proverka;
var a:integer;
begin
writeln('Cколько будет 3x5?');
readln(a); {запрашивается ответ, вводимый с клавиатуры,
1
который записывается в переменную а}
if a=15 then writeln('Верно')
else writeln('Неверно');
{оператор if проверяет и анализирует значение переменной
а. Если а=15, то компьютер выводит сообщение «Верно», в
противном случае сообщает «Неверно»}
end.
Результат выполнения программы в случае ввода числа 15:
Cколько будет 3x5?
15
Верно
При ином ответе, например, 25, появится сообщение:
Cколько будет 3x5?
25
Неверно
Как видно из результатов, эта программа умеет «рассуждать», сравнивая
число, которое вы ввели с клавиатуры с правильным ответом. И делает это она
с помощью оператора if.
Оператор if анализирует некоторое условие, например, a>b либо a=15
либо а>0. Действия, которые затем будут выполняться, зависят от того,
выполняется либо не выполняется конкретное условие. Эти действия
(операторы) называются ветвями программы.
Условие - это выражение, стоящее в операторе if..then сразу после
слова if. В зависимости от этого условия (его истинности или ложности)
компьютер выполняет ту либо иную ветвь программы.
Для обозначения оператора if на блок-схемах используются ромбы,
называемые блоками проверки условия. Алгоритмическая конструкция
ветвления представлена на рисунке 2.1.
2
Условие
выполнен
о
да (then)
оператор_1
нет (else)
оператор_2
Рис. 2.1
А вот как будет выглядеть блок-схема алгоритма, реализованного в
примере 1. (рис. 2.2)
Begin
3x15=?; Ввод а
then
a=15 ?
else
Неверн
о
Верно
End
Рис. 2.2
Простое условие - это математическое сравнение двух выражений по
величине (сравнение двух величин). Операции сравнения на языке
программирования можно записать при помощи следующих знаков (таблица
1):
Таблица 1. Операции сравнения
Знак
Операция сравнения
=
Равно
<
Меньше
<=
Меньше либо равно
3
>
Больше
>=
Больше либо равно
<>
Не равно
Примеры простых условий:
a<>b
A<=0
A+3*c>=20
В качестве оператора_1 и оператора_2 может быть любая из уже
известных вам команд.
1.2 Составные условия
При решении различных задач иногда возникает необходимость
проверять выполнение двух (как например, 0<a<5) и более условий. Такие
условия называют составными. Для записи составных условий на языке
программирования используют следующие логические операции:
 and – логическое «и»;
 or – логическое «или»;
 xor – логическое «исключающее или»;
 not – логическое отрицание.
Простые условия при этом обязательно заключаются в скобки, так как
логические операции имеют более высокий приоритет, чем операции
сравнения.
Правила выполнения логических операций
1. Составное условие, состоящее из двух простых условий, соединенных
операцией and, верно (истинно) только тогда, когда верны оба простых
условия.
2. Составное условие, состоящее из двух простых условий, соединенных
операцией or, верно тогда, когда верно хотя бы одно из простых
условий.
3. Составное условие not
верно только тогда, когда простое условие
4
ложно.
4. Составное условие, состоящее из двух простых условий, соединенных
операцией xor, верно тогда, когда верно только одно из условий.
Примеры использования логических операций:
(2>5) and (2>3) - неверно (ложно)
(1<5) and (1>0) - верно (истинно)
(3>2) or (3<1)
- верно
(3>2) or (2>0)
- верно
(1>2) or (1<0)
- неверно
not (5 > 6)
- верно
not (6 > 5)
- неверно
(2=0) xor (2<>2) - неверно
(2=0) xor (2>0) - верно
(3>0) xor (2>0)
- неверно
Рассмотрим применение составных условий на примере
программы,
которая определяет, является ли введенное число двузначным.
Пример 2. Двузначное число
Program c2;
var a:integer;
begin
write ('Введите целое число: ');
readln (a);
{исходное число}
if (a>=10) and (a<=99)then write ('число двузначное')
else write('число не двузначное');
{если (a>=10)и(a<=99), то вывести сообщение
'число двузначное', иначе - 'число не двузначное'}
end.
Результат выполнения программы в случае ввода числа 45:
Введите целое число: 45
число двузначное
5
Результат выполнения программы в случае ввода числа 125:
Введите целое число: 125
число не двузначное
Рассмотренная выше форма условного оператора if..then..else
называется полной. Она позволяет выполнять программу по одной из двух
ветвей. Такую алгоритмическую конструкцию называют ветвлением (по
аналогии с развилкой ветвей дерева). В языке программирования Pascal
существует также cокращенная форма условного оператора, которая
применяется в тех случаях, когда какое-либо действие (группу действий)
нужно выполнить только при выполнении заданного условия.
Сокращенная форма условного оператора имеет вид:
If
условие then оператор;
Если условие
верно,
то выполняется оператор, иначе
управление
передается следующему за if оператору программы. Блок – схема
сокращенной формы записи алгоритма с ветвлением представлена на рисунке
2.3
да (then)
Условие
выполнено
?
Нет (else)
оператор
Рис. 2.3
Следующий пример демонстрирует использование сокращенной формы
условного оператора.
Необходимо ввести некоторое целое число и, если оно четное,
уменьшить его в 2 раза.
Алгоритм решения этой задачи в виде блок-схемы выглядит так
6
(рис. 2.4):
Begin
Ввод а
then
else
a mod
2=0?
a:=a div 2
Вывод
а
end
Рис. 2.4
Программа, реализующая данный алгоритм, представлена в примере 3.
Пример 3. Уменьшение четного числа в два раза
program c2_2;
var a:integer;
begin
write('Введите целое число: ');
readln(a);
if (a mod 2=0) then
a:=a div 2;
write(a);
end.
Результат выполнения программы в случае ввода числа 16:
Введите целое число: 16
8
Результат выполнения программы в случае ввода числа 13:
7
Введите целое число: 13
13
1.3 Составной оператор
При составлении программ на языке программирования часто бывает так,
что в случае выполнения либо невыполнения некоторого условия в операторе
if
необходимо осуществить несколько действий. В
этом случае
последовательность действий (несколько операторов подряд) объединяют в
одну группу, заключенную между словами begin и end.
Пример:
If x>0 then
Begin
x:=x*2;
write (x);
end;
Такая группа
(begin
x:=x*2;
write
(x);
end) называется
составным оператором и рассматривается как единое целое.
Общий вид составного оператора может выглядеть следующим образом:
Begin
Оператор1;
Оператор2;
……………
End;
Зарезервированные слова Begin и End часто называют открывающей и
закрывающей операторными скобками.
Рассмотрим пример, демонстрирующий использование составного
оператора.
Пусть дано некоторое целое число. Требуется составить
программу, которая выводит на экран монитора сообщение о том, какое это
число:
положительное
либо
отрицательное.
И
если
это
число
положительное, уменьшает его в 2 раза, в противном случае возводит его в
8
квадрат.
Алгоритм решения данной задачи в виде блок-схемы представлен на
рисунке 2.5.
Рис. 2.5
Программа, реализующая данный алгоритм, может выглядеть так:
Пример 4. Положительное либо отрицательное число?
program chislo;
var a,r:integer;
begin
write('Введите целое число: ');
readln(a);
9
if a > 0 then
begin writeln('положительное');
r:=a div 2;{число уменьшается в 2 раза }
end
else
begin writeln('отрицательное');
r:=a*a;{число возводится в квадрат}
end;
write ('r=',r)
end.
Результат выполнения программы в случае ввода числа -5:
Введите целое число: -5
отрицательное
r=25
Результат выполнения программы в случае ввода числа 8:
Введите целое число: 8
положительное
r=4
Важно помнить:
1. Нельзя ставить «;» перед словом else.
2. При записи составных операторов каждое зарезервированное слово
begin должно быть «закрыто» словом end, то есть следует соблюдать
правила вложенности операторных скобок.
Коротко о главном
 Проверять условия в программе на языке программирования можно
с помощью условного оператора If..then.
 Полная форма условного оператора:
If условие then оператор_1 else оператор_2;
10
 Оператор If работает следующим образом: сначала проверяется
условие и, если оно выполняется, то исполняется оператор_1,
иначе исполняется оператор_2.
 Сокращенная форма условного оператора:
If условие then оператор;
 Простое условие - это математическое сравнение двух выражений
по величине (сравнение двух величин).
 Простые условия объединяют в составные с помощью логических
операций: and, or, xor, not.
 Общий вид составного оператора:
Begin
Оператор1;
Оператор2;
……………
End;.
1. В каких случаях в программе используется условный оператор if?
2. Какой вид имеет полная форма условного оператора if?
3. Какой вид имеет сокращенная форма условного оператора if?
1. Как на блок-схеме изображается полная форма алгоритмической
конструкции с ветвлением?
2. Какие операции сравнения используют для записи простых условий?
3. Как образуются составные условия?
4. Что такое составной оператор?
Упражнения
1.
Составить программу, которая проверяет знание даты основания города
Минска. Программа должна запросить: «В каком году был основан город
Минск (например, в 1067 либо в 993 либо в 1147 )?» и в случае верного
ответа сообщать «Верно», в противном случае «Вы ошиблись».
11
2.
Составить программу, которая определяет, является ли данное число
четным.
3.
Составить программу, которая вводит число с клавиатуры, и, если оно
отрицательное, возводит его в квадрат.
4.
Составить программу, которая проверяет, делится ли на 3 данное число.
5.
Составить программу, которая проверяет, равны ли 3 данных целых
числа.
12
Download