Основы алгоритмизации и программирования. Часть первая. Алгоритмический язык. Операторы. Асламова В.С - 19 стр.

UptoLike

Составители: 

37
(
statement2). Компилятор Turbo Pascal всегда выбирает каждому else
ближайший предшествующий
if, (то есть else всегда относится к
последнему
if). В общем случае, чтобы четко определить, что чему
подчинено, используйте
begin…end аналогично круглым скобкам в
арифметических выражениях
if expression1 then begin
if expression2 then
statement2 end else
statement2 end else
statement1;
Рисунок 27 Принцип действия условного оператора без else
Рисунок 28 Принцип действия условного оператора с else
Оператор 1
Условие
выполняется?
Передача
управления
Передача
управления?
Оператор 3
нет
нет
да
да
Оператор 1
Условие
выполняется?
Передача
управления
Передача
управления?
Оператор 2
нет
нет
да
да
Оператор 3
38
Пример 7 Условный оператор
Составить программу для определения подходящего возраста
кандидатуры для вступления в брак, используя ограничения. Возраст
девушки равен половине возраста мужчины плюс 7. Возраст мужчины
определяется, соответственно, как удвоенный возраст девушки минус14.
В начале выполнения программы будем
задавать вопрос: “Кто Вы, мужчина или
женщина? Ответьте M или D.” Пол запоминаем в
символьной п
еременной P, а в переменной V –
возраст человека. Если возраст меньше 17лет, то
будем рекомендовать подождать с браком. Если
пол женский, то будем вычислять возраст
кандидата по формуле К = 2*V – 14, если пол
мужской, то К = V/2 + 7. Если значение P не
совпадает ни с M, ни с D, то выдается
сообщение, что произошла ошибка при вводе
пола, и передаем уп
равление на начало
программы.
Программа 1
Var P:char; {Пол кандидата}
V,K:real; {Возраст человека. Возраст кандидата}
Repeat
Begin write(Кто Вы мужчина или
женщина? Ответьте M или D’);
Readln(P);
Until (P=D) or (P=d) or (P=M) or (P=m);
{Выход из цикла при правильном ответе}
write(‘Ваш возраст’); readln(V);
if V<17 then begin
writeln(‘Вы еще молоды’);
exit {Процедура завершения программы}
end;
if (P=D) or (P=d) then K
:
= 2*V-14
else K
:
= V/2+7;
writeln(‘Подходящий возраст кандидата ’,K,’ лет’);
End.
нет
да
P='d' or P=D''?
нет
да
НАЧАЛО
Печать
пол? M/ D
P='M ' or
P=‘D?
Печать
возраст? V
V<17?
Печать
Вы еще
молоды
нет
да
K=2*V–14
K=V/2+7
Печать
Возраст
кандидата K
КОНЕЦ
Р
исунок 29. Блок-
схема программы
1.
(statement2). Компилятор Turbo Pascal всегда выбирает каждому else   Пример 7 Условный оператор
ближайший предшествующий if, (то есть else всегда относится к              Составить программу для определения подходящего возраста
последнему if). В общем случае, чтобы четко определить, что чему     кандидатуры для вступления в брак, используя ограничения. Возраст
подчинено, используйте begin end аналогично круглым скобкам в        девушки равен половине возраста мужчины плюс 7. Возраст мужчины
арифметических выражениях                                            определяется, соответственно, как удвоенный возраст девушки минус14.
if expression1 then begin                                                                                 В начале выполнения программы будем
                                                                           НАЧАЛО
   if expression2 then                                                                              задавать вопрос: “Кто Вы, мужчина или
      statement2 end else                                                                           женщина? Ответьте M или D.” Пол запоминаем в
   statement2 end else                                                      Печать
                                                                                                    символьной переменной P, а в переменной V –
statement1;                                                                пол? M/ D
                                                                                                    возраст человека. Если возраст меньше 17лет, то
                                                                                                    будем рекомендовать подождать с браком. Если
                                                                            P='M' or        нет
          Условие       нет                                                                         пол женский, то будем вычислять возраст
        выполняется?                                                        P=‘D’?                  кандидата по формуле К = 2*V – 14, если пол
                                                                                    да              мужской, то К = V/2 + 7. Если значение P не
                да                                                                                  совпадает ни с M, ни с D, то выдается
                                                                            Печать
         Оператор 1                  Оператор 3                           возраст? V                сообщение, что произошла ошибка при вводе
                                                                                                    пола, и передаем управление на начало
                                                                                            нет     программы.
          Передача      нет                                                  V<17?
         управления?
                                                                                                    Программа 1
                                                                                     да
                да
                                                                             Печать                 Var P:char;            {Пол кандидата}
          Передача                                                           Вы е ще
         управления
                                                                                                    V,K:real; {Возраст человека. Возраст кандидата}
                                                                             молоды
                                                                                                            Repeat
Рисунок 27 Принцип действия условного оператора без else                                                       Begin write(‘Кто Вы мужчина или
                                                                                            нет     женщина? Ответьте M или D’);
                                                                          P='d' or P=D''?
                                                                                                                    Readln(P);
          Условие           нет                                                     да
        выполняется?
                                                                                                            Until (P=D) or (P=d) or (P=M) or (P=m);
                                                                           K=2*V–14                      {Выход из цикла при правильном ответе}
                 да                                                                                    write(‘Ваш возраст’); readln(V);
          Оператор 1              Оператор 2                                K=V/2+7                 if V<17 then begin
                                                                                                            writeln(‘Вы еще молоды’);
                                                                             Печать                    exit        {Процедура завершения программы}
          Передача          нет
                                                                             Возраст                                end;
         управления?                                                       кандидата K
                                                                                                                      if (P=D) or (P=d) then K := 2*V-14
                 да
                                                                            КОНЕЦ                             else K := V/2+7;
           Передача               Оператор 3
          управления                                                                                writeln(‘Подходящий возраст кандидата ’,K,’ лет’);
                                                                     Рисунок 29. Блок-            End.
                                                                     схема программы
Рисунок 28 Принцип действия условного оператора с else               №1.


                                                               37    38