Организация ветвлений. Операторы выбора

Автор работы: Пользователь скрыл имя, 30 Октября 2013 в 23:53, лабораторная работа

Описание работы

В языке Паскаль алгоритмическая базовая конструкция выбора может быть реализована с помощью двух структурных операторов – IF и CASE, называемых операторами выбора. С их помощью можно выбрать для выполнения один из составных операторов (или ни одного оператора).

Файлы: 1 файл

Лабораторная рабоат№2.docx

— 45.38 Кб (Скачать файл)

2. Организация ветвлений. Операторы выбора

 

В языке Паскаль алгоритмическая  базовая конструкция выбора может быть реализована с помощью двух структурных операторов – IF и CASE, называемых операторами выбора. С их помощью можно выбрать для выполнения один из составных операторов (или ни одного оператора).

2.2.1. Оператор ветвления IF

 

Оператор IF можно представить  в общей форме записи как

 

IF <Условие>  THEN  <Оператор 1>  ELSE  <Оператор 2>,

 

где конструкция «Условие» есть логическое выражение, которое принимает два значения типа BOOLEAN: TRUE, FALSE (истинно или ложно).

Само логическое выражение  складывается из операций сравнения: >, >=, <, <=, =, <>. Результат сравнения может быть TRUE или FALSE.

Логические выражения  могут формироваться также и  с помощью трех логических операций: NOT, AND, OR. Приоритеты всех используемых в Паскале операций  таковы:

 

Высший: ( )

NOT *, /, DIV, MOD

AND

OR +, -

Низший: >, =, < , >=, <>, <=

 

В качестве условия может  быть использована и логическая  переменная, например:

 

I and J or K ---> (I and J) or K;

not X and Y  ---> (not X) and Y, где  I, J, K, X, Y – переменные типа  BOOLEAN;

(A < B) or (B = 0), где A, B – переменные простого типа.

 

В операторе IF всегда за словами THEN и ELSE должен следовать один оператор. Этим оператором может быть не только оператор присваивания, но и любой другой. Если хотя бы один из них является снова оператором IF, то полученную конструкцию называют   вложением.

 

П р и м е р :

IF <условие1> THEN  <ветвь 1>

ELSE  IF <условие2> THEN  <ветвь 2>

ELSE  <ветвь 3>;

Такое вложение используется для уменьшения числа необходимых проверок. Этот метод часто обеспечивает большую эффективность, чем составное условие, однако одновременно он уменьшает надежность программы. Не рекомендуется использовать более двух-трех уровней вложения IF. Вложения могут идти и после слова THEN.

Первый способ предпочтительнее, чем второй, так как конструкция THEN-IF менее удобна, чем ELSE-IF. С помощью  конструкции ELSE-IF чаще всего осуществляется выбор одного из нескольких альтернативных вариантов. Заметим, однако, что иногда такое вложение можно заменить на последовательность операторов короткой формы  IF-THEN. Это видно на следующем примере:

 

program QUARD;

       var A, B, C : real; D : real;

              begin

                   read (A, B, C); D := sqr (B) – 4 * A - C;

 

1-й вариант

2-й вариант

if D < 0 then write ('Не имеет корней');

if D < 0 then write ('Нет корней')

else  if D = 0 then write ('Один корень') 

if D = 0 then  write ('Один корень');         

if D > 0 then write ('Два корня');

  else write ('Два корня');                      

 

    

                            

 

end.

Рис. 2. Пример программы двух разных вложений

 

Однако в данном примере 2-й вариант более эффективен, так как имеет на одно сравнение  меньше, и в случае D < 0 сразу  же дает ответ, не делая последующих проверок.

В Паскале существует специальный  оператор, позволяющий сделать выбор  из нескольких альтернатив – множественное  ветвление, или оператор варианта.

2.2.2. Оператор варианта CASE

 

Оператор варианта состоит  из выражения и списка операторов, каждому из которых предшествует одна или более констант, называемых  константами выбора.


Общая форма записи

CASE <выражение> OF

константы: оператор;

....................

константы: оператор

ELSE  <оператор>

END;

 

 

Выражение, стоящее между CASE и OF, называется  селектором. Константы (значения выражения), предшествующие двоеточию, называются метками случаев. Порядок работы оператора: сначала вычисляется значение селектора, затем выполняется оператор, одна из меток которого совпадает со значением селектора. Все остальные операторы не выполняются, и управление передается следующему после END оператору. В случае короткой формы оператора CASE при несовпадении значения селектора (ключа) ни с одной из констант из списка никакой оператор не подлежит исполнению. Если же в операторе есть строка ELSE, то при несовпадении значения селектора ни с одной  константой  выполняется оператор, следующий за ELSE.

Выражение «селектор» может  относиться к любому скалярному типу, кроме REAL. Метки случаев должны принадлежать тому же типу, что и селектор. Нежелательно, чтобы одна и та же метка появлялась более одного раза в операторе CASE. Если же это произойдет (компилятор не проверяет повторяемость меток), то выполнится тот оператор, который соответствует первому вхождению метки в список констант.

Оператор CASE особенно удобно использовать, во-первых, когда характер действий определяется значениями, которые не попадают в последовательно расположенные интервалы, во-вторых, когда нескольким дискретным значениям селектора соответствует одно и то же действие.

П р и м е р  1. Печать названия десятичных цифр.

 

program DICITS;

var  DIGIT: integer;

begin

writeln ('Введите цифру');

readln (DIGIT);

case DIGIT of

0: writeln ('нуль');

1: writeln ('один');

..................

9: writeln ('девять');

else writeln ('это не цифра');

end;

end.

П р и м е р  2.  Печать номера квартала года.

 

program NUMKVART;

var  MESIATZ: 1..12;

begin

write ('Введите номер месяца года – ');

read (MESIATZ);

case MESIATZ of

1, 2, 3: writeln ('Первый квартал');

4, 5, 6: writeln ('Второй квартал');

7, 8, 9: writeln ('Третий квартал');

10, 11, 12: writeln ('Четвертый квартал');

end;

end.

 

Примечание. В операторе CASE формально нет условий как таковых, однако проверка условий осуществляется в неявном виде на предмет совпадения константы со значением селектора.

Лабораторная  работа №2

Цель работы: научиться решать задачи на разветвляющиеся алгоритмы; научиться использовать в программах условный оператор if и оператор выбора case.

Общие сведения

Алгоритм называется разветвляющимся, если он содержит несколько ветвей, отличающихся друг от друга содержанием  вычислений. Выход вычислительного  процесса на ту или иную ветвь алгоритма  определяется исходными данными  задачи.

Перед выполнением работы необходимо ознакомиться с правилами  записи логических выражений, операций сравнения, операторов if, case.

Пример. Дано действительное x. Для функции f, график которой представлен на рисунке, вычислить f(x).

 

Решение задачи.

Математическая модель: функция  вычисляется по следующей формуле:

Составим схему алгоритма, детализировав все блоки (рис. 2).

 

Дальнейшая детализация  не требуется. Переводим алгоритм на язык Паскаль.

Program example1;

var x, f:Real;

begin

  Write('Введите x: '); Readln(x);

  if x<-1 then f:= -x-1 else

     if (x>=-1) and (x<0) then f:= x-1 else

       if (x>=0) and (x<1) then f:= -x+1 else f:= x+1;

  Writeln('F= ',f:6:2);

  Readln;

end.

 

Рис. 3. Блок-схема  ветвления в 4-х направлениях

 

Варианты заданий

Задание 1. Используя оператор if, вычислить заданное выражение для данных типа Integer:

а)     b)

c)    d)

 

Задание 2. Найти алгоритм решения задачи и реализовать его с помощью оператора (операторов) if-then-else:

  1. Составить программу, реализующую эпизод сказки: машина спрашивает, куда пойдет герой, и в зависимости от ответа (налево – (-1), прямо – 0, направо – 1), печатает, что произойдет с героем.
  2. Морской бой. Машина задумывает два числа от 0 до 9. Игрок пытается их угадать, вводя свои два числа. Если они совпали (в любом сочетании), то игрок выиграл.
  3. В Атлантическом океане терпит бедствие пассажирский теплоход «Посудина». Все пассажиры будут спасены, если на помощь успеют два судна. Судно продержится на плаву t часов. Скорость судов-спасателей 40 узлов. Составить программу, определяющую спасутся ли пассажиры. Известны расстояния от трех судов-спасателей до тонущего судна.
  4. Через старый мост движется поток автомашин. Одновременно на мосту могут находиться 3 машины. Если на мост въедут 3 легковых или 2 легковых и грузовик – мост выдержит. Если 2 грузовика и легковая или 3 грузовика – рухнет.

 

Задание 3. Используя оператор выбора, составить программы решения следующих задач.

  1. По номеру дня недели вывести на печать рабочий это день или выходной, считая выходными субботу и воскресенье.
  2. По номеру месяца указать, к какому времени года он относится.
  3. По номеру месяца вывести на печать количество дней в нем.
  4. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна. Дан номер единицы массы и масса тела M в этих единицах (M - вещественное число). Вывести массу данного тела в килограммах.

Информация о работе Организация ветвлений. Операторы выбора