Задача № 6. Вывести на экран наибольшее из двух чисел



Формулировка. Даны два числа. Вывести на экран то из них, которое больше.

Решение. Собственно, это самая простая задача, с помощью которой можно продемонстрировать использование условного оператора if. Напомним, как нужно использовать этот оператор. Мы вводим с клавиатуры числа в переменные a и b типа integer, затем в операторе if проверяем булевское выражение «a > b»: если оно истинно, то выполняется then-блок оператора, если ложно – else-блок. Соответственно,если a больше b (условие в заголовке истинно), то в then-блоке мы выводим a, а если a не больше b (условие в заголовке ложно), то выводим b (хотя сюда попадает и случай, когда a = b, что, впрочем, не нарушает решения).

На языке Pascal мы можем записать весь оператор с if- и then-блоками в одну строчку следующим образом:

if a > b then writeln(a) else writeln(b);

Данная строка легко понятна и читаема по причине того, что мы выполняем столь простой набор операторов в обоих блоках ветвления оператора if. Однако в более сложных примерах мы будем с первых же написанных строчек следовать принципу аккуратного оформления кода, чтобы не появлялось привычки «вытягивать» операторы ветвлений и другие конструкции в одну строчку, так как в будущем это может сильно сказаться на удобочитаемости и простоте понимания написанного программного кода, особенно при увеличении количества вложенных в блок операторов (которые, например, тоже могут быть операторами ветвления). Не стоит забывать о том, что при вложенности в тело какого-либо оператора хотя бы одного составного оператора или другой сложной конструкции требуется равномерный отступ для подчиненной конструкции с адекватной расстановкой операторных скобок! Например, для оператора if это распределение конструкций по мнемонической модели if- end, else- end, согласно которой эти ключевые слова должны стоять на одном уровне по вертикали, а их содержимое должно быть немного смещено вправо.

Конечно, для простейшей конструкции с условным оператором это вовсе не самоцель, и можно разместить ее в одной строке, если оби ветви оператора (и if-блок, и else-блок) не содержат составного оператора. В нашем же примере «аккуратное оформление» показывается лишь в качестве введения.

 

Код:

1. program MaxOfTwo; 2. 3. var 4.   a, b: integer; 5. 6. begin 7.   readln(a, b); 8.   if a > b then begin 9.     writeln(a) 10.   end 11.   else begin 12.     writeln(b) 13.   end 14. end.

При таком оформлении хорошо видно, какой код выполняется при истинности условия, а какой – при его ложности.

Задача № 7. Вывести на экран наибольшее из трех чисел

Формулировка. Даны три числа. Вывести на экран то из них, которое больше.

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

 


Несмотря на то, что выполняется всего одна инструкция вывода, при написании кода мы все ветвления будем помещать в отдельный составной оператор. Напомним: это значит, что при движении от более общего уровня к частному все конструкции нужно смещать на два пробела относительно родительского блока/оператора.

Код:

1. program MaxOfThree; 2. 3. var 4.   a, b, c: integer; 5. 6. begin 7.   readln(a, b, c); 8.   if a > b then begin 9.     if a > c then begin 10.       writeln(a) 11.     end 12.     else begin 13.       writeln(c) 14.     end 15.   end 16.   else begin 17.     if b > c then begin 18.       writeln(b) 19.     end 20.     else begin 21.       writeln(c) 22.     end 23.   end 24. end.

Задача № 8. Вывести название дня недели по его номеру

Формулировка. Вывести название дня недели по его номеру.

Решение. Задача простейшим образом решается с помощью оператора выбора case. Напомним, что этот оператор позволяет организовать ветвления в зависимости от значений некоторой переменной, для каждого из которых можно предусмотреть выполнение различных действий. Причем если значению переменной не соответствует ни один вариант, выполняется else-блок (если он присутствует). Кстати, не стоит забывать, что после перечисления всех вариантов оператора case необходимо написать ключевое слово end (выходит, ключевое слово case является еще и открывающей операторной скобкой).

Для того чтобы воспользоваться оператором case, нам необходимо произвести ввод номера дня недели в некоторую переменную i типа byte и по этому номеру вывести название текущего дня недели. Кстати, благодаря else-блоку в этой программке мы впервые предусмотрим сообщение об ошибке, связанной с некорректно введенным номером, которому не соответствует ни один из дней недели.

Код:

1. program DaysOfTheWeek; 2. 3. var 4.   i: byte; 5. 6. begin 7.   readln(i); 8.   case i of 9.     1: writeln('Monday'); 10.     2: writeln('Tuesday'); 11.     3: writeln('Wednesday'); 12.     4: writeln('Thursday'); 13.     5: writeln('Friday'); 14.     6: writeln('Saturday'); 15.     7: writeln('Sunday') 16.     else writeln('This day of the week does not exist!') 17.   end 18. end.

Кстати, в каждом из вариантов ветвлений может быть помещен составной оператор, но при описании вариантов мы не стали использовать операторные скобки, так как на этот раз они наоборот испортили бы все оформление кода, которое сейчас является достаточно гармоничным.


Дата добавления: 2018-10-25; просмотров: 538; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!