Условный оператор
Оценка 4.8

Условный оператор

Оценка 4.8
docx
информатика
03.05.2020
Условный оператор
0.1. Условный оператор
25.docx

0.1. Условный оператор IF  или  как компьютер делает выбор

Идею разветвления в программе я изложил в 2.8. Сейчас добавлю только, что вся мыслительная деятельность во всех программах (в том числе и той, что выиграла в шахматы у Каспарова) осуществляется только при помощи ветвления (выбора).

 Теперь посмотрим, как писать разветвляющиеся программы на Паскале.

Выучим сначала три английских слова:

if

читается "иф"

переводится  "если"

then

читается "зэн"

переводится  "то"

else

читается "элз"

переводится  "иначе"

Теперь приведем пример нового для вас оператора:

IF          a=28   THEN WriteLn (f)      ELSE               k:=44

Переводится он так:

ЕСЛИ   a=28   ТО       печатай f       ИНАЧЕ          присвой переменной k значение 44.

Другими словами, мы предлагаем компьютеру сначала подумать, правда ли, что  a=28 , и если правда, то выполнить оператор WriteLn (f), в противном случае выполнить оператор k:=44 . Таким образом, мы с вами впервые написали оператор, при выполнении которого компьютер не просто выполняет, что приказано, а сначала думает и делает выбор (пока одного из двух).

Мы видим, что оператор if включает в себя другие операторы, которые выполняются или не выполняются в зависимости от какого-то условия. Чтобы понять, зачем может пригодиться оператор if, рассмотрим следующую задачу.

Задача 1. Компьютер должен перемножить два числа -  167 и 121. Если их произведение превышает 2000, то компьютер должен напечатать текст ПРОИЗВЕДЕНИЕ БОЛЬШОЕ, иначе текст ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ. После этого компьютер в любом случае должен напечатать само произведение.

Программа:

VAR a,b,y :Integer;

BEGIN
     a:=167; 

     b:=121;

     y:=a*b;

     if   y>20000      then WriteLn ('ПРОИЗВЕДЕНИЕ  БОЛЬШОЕ')

                            else  WriteLn ('ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ');

     WriteLn (y)

END.

Пояснение: В программе 5 операторов, последний – WriteLn (y). Поскольку эти 5 операторов выполняются по порядку, то он выполнится обязательно.

 

Задача 2. В компьютер вводятся два произвольных положительных числа - длины сторон двух кубиков. Компьютер должен подсчитать объем одного кубика - большего по размеру . 

Обозначим a1 - сторону одного кубика, a2 - сторону другого, bol - сторону большего кубика, V - объем кубика. Приведем три варианта программы:

 

ВАРИАНТ 1

 

VAR a1,a2 : Real;

BEGIN

   ReadLn (a1,a2);

   if a1>a2 then WriteLn (a1*a1*a1  : 15:5)

                 else WriteLn (a2*a2*a2  : 15:5)

END.

ВАРИАНТ 2

 

VAR a1,a2,V : Real;

BEGIN

   ReadLn (a1,a2);

   if a1>a2 then V:=a1*a1*a1

                 else V:=a2*a2*a2;

   WriteLn (V  : 15:5)

END.

ВАРИАНТ 3

 

VAR a1,a2,bol,V : Real;

BEGIN                        

   ReadLn (a1,a2);

   if  a1>a2 then  bol:=a1

                  else  bol:=a2; 

   V:=bol*bol*bol;         

   WriteLn (V  : 15:5)

END.

 

Поясним последний вариант. Программа состоит из четырех операторов, которые выполняются в порядке записи. Первым после запуска выполняется оператор ReadLn (a1,a2), который ждет от нас ввода двух чисел. Пусть мы сегодня ввели числа 3 и 2. Компьютер понимает, что a1 равно 3, a2 равно 2, и переходит к выполнению оператора if. Он видит, что 3>2, и поэтому выполняет оператор bol:=a1, а оператор bol:=a2 не выполняет. В результате в ячейке bol оказывается число 3. Затем компьютер переходит к следующему оператору  -  V:=bol*bol*bol  и вычисляет V=3*3*3=27. Следующий оператор  WriteLn (V  : 15:5)  печатает число 27.00000 .

Если завтра мы запустим эту же программу и введем числа 6 и 10, то компьютер увидит, что утверждение 6>10 ложно, и поэтому выполнит оператор bol:=a2, а оператор bol:=a1 выполнять не станет. В результате  в ячейке bol окажется число 10 и будет напечатано число 1000.00000 .

 

А теперь, дорогой читатель, вам пришла пора освоить пошаговый режим выполнения программы на компьютере. В обычном режиме компьютер выполняет программу настолько быстро, что вы не успеваете заметить, в каком порядке он выполняет отдельные операторы программы, а без этого часто невозможно понять ее логику. Пошаговый режим заставляет компьютер при выполнении программы задерживаться на каждой строке программы столько, сколько нужно человеку. Сейчас вам необходимо проделать то, что сказано в части IV в пункте «Пошаговый режим» параграфа «Исправление ошибок. Отладка программы».

 

Итак, если паровая машина избавила человека от тяжелого физического труда, то оператор if избавил человека от тяжелого умственного труда, в нашем случае - от необходимости решать, какое из двух чисел больше другого.

Оператор if можно записывать и без части else. Напримерif s<t then w:=a+1. Это означает, что если s<t, то нужно выполнить оператор w:=a+1, в противном случае ничего не делать, а просто перейти к следующему оператору.

Для примера рассмотрим простейшую задачу: В компьютер вводится слово. Компьютер должен просто распечатать его. Однако, если введенным словом будет "колхозник", то компьютер должен напечатать вместо него слово "фермер".

Вот как будет выглядеть наша программа-"цензор":

VAR  Slovo : String;
BEGIN
     ReadLn (Slovo);    { переменная Slovo будет иметь  значением строку символов, введенных с клавиатуры }
     if  Slovo = 'колхозник'  then  Slovo := 'фермер';
     WriteLn (Slovo)
END.


 

Скачано с www.znanio.ru

Условный оператор IF или как компьютер делает выбор

Условный оператор IF или как компьютер делает выбор

ВАРИАНТ 1 VAR a1,a2 :

ВАРИАНТ 1 VAR a1,a2 :

Slovo = 'колхозник' then

Slovo = 'колхозник' then
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
03.05.2020
Посмотрите также: