Сборник практических работ по информатике
  • Регистрация
1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 Голоса)

Управляющие конструкции языка. Операторы ветвления и выбора.

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

В нашей жизни часто возникают ситуации, которые разрешаются не однозначно. Самый простой пример: когда Вы подходите к перекрестку, Вы не сразу переходите дорогу. В начале Вы смотрите на светофор. Если У светофора зеленый сигнал, Тогда Вы переходите дорогу, Иначе ждете.

Для наглядности изобразим этот процесс в виде схемы. Из схемы видно, что в начале процесс линейный, т. е. есть только один путь. После того, как проверили сигнал, возможны 2 варианта дальнейших действий. Такой процесс, который имеет несколько возможных исходов, в зависимости от различных условий, называется Ветвлением.

Рассмотренный сейчас пример – один из возможных операторов ветвления – Условный оператор. В начале проверяется условие, а потом выполняется одно из 2-х возможных вариантов действий.

В первом примере не зря выделены 3 слова: Если тогда иначе. Именно из этих слов и будет состоять условный оператор в Pascal. Только не на русском, а на английском языке – If Then Else.

Представим оператор в виде схемы.

Полная форма условного оператора записывается так:

If условие Then оператор_1 Else оператор_2.

Рассмотрим пример: вести с клавиатуры число. Определить, положительное оно или отрицательное, о чем вывести сообщение на экран.

В начале, перед тем как решать задачу на компьютере, составим схему:

Теперь можно составлять программу. Откройте файл lesson6.pas из Вашей рабочей директории. В нем пример этой рабочей программы.

Задание для закрепления. Ввести с клавиатуры 2 числа. Вывести на экран большее из чисел.

Блок-схема

Программа

Program a1;

Var a, b :real;

Begin

Readln(a);

Readln(b);

if a > b then

Writeln('Bolshee chislo ', a) else

WriteLn('Bolshee chislo ', b);

End.

Рассмотрим еще один пример. Ввести два числа. Если первое больше второго, увеличить его в 2 раза и вывести его на экран.

Попробуйте представить эти условия в виде схем. Чем они отличаются от предыдущих примеров?

В этом случае в операторе ветвления нет оператора_2. Такая форма условного оператора называется сокращенной, записывается она так:

If условие Then оператор_1.

В виде схемы представляется так.

Получается, что в этом случае, вместо оператора_1 нужно выполнить сразу 2 оператора. Как это сделать?

Если после Then или Else требуется выполнение более, чем одного оператора, их заключают в операторные скобки - Begin и End.

подпись: …
begin
 readln(a,b);
if a>bthen 
begin
 a := a*2;
 writeln (‘new a ’, a);
end;
 end.
Решение нашей задачи:

Хочется обратить внимание на строку a := a*2. В математике такая запись имеет смысл, только при а = 0. В Pascal Вы рассматриваете не равенство, а оператор присваивания. В начале выполняются действия справа от знака :=, а затем результат помещается в ячейку, имя которой стоит слева от знака :=.

Задание для закрепления. Ввести 2 числа. Если они равны, то первое увеличить в 2 раза, а второе уменьшить в 2 раза. На экран вывести обе переменные.

Блок-схема

Программа

Program a2;

Var a, b :real;

Begin

Readln(a);

Readln(b);

if a = b then

begin

a:= a * 2;

b:= b / 2;

Writeln('a = ', a);

Writeln('b = ', b);

end;

End.

Оператор множественного выбора Case Of.

Иногда приходится решать задачи, когда использовать условный оператор If Then Else не удобно. Например, в зависимости от введенной цифры (от 1 до 7) вывести на экран соответствующий день недели. Тогда, при помощи оператора If решение будет выглядеть следующим образом.

Program z1;

Var

R : Integer;

Begin

ReadLn (r);

If r = 1 Then WriteLn ('понедельник')

Else If r = 2 Then WriteLn ('вторник')

Else If k = 3 Then WriteLn ('среда')... и т. д.

… …

End.

Это не удобно - очень много вложенных друг в друга условных операторов. Оператор Cаse - оператор выбора используется следующим образом.

Case k of

Символ1 : Begin <операторы1> End;

Символ2 : Begin <операторы2> End;

Символ3 : Begin <операторы3> End;

Символ4 : Begin <операторы4> End;

.......

Else Begin <операторы> End;

End;

Где вместо символа стоит переменная перечисляемого типа (символьный - переменные этого типа содержат только один символ или типа Integer) а после : набор операторов, которые надо выполнить.

Обратите внимание. Что вместе с оператором Case of Всегда Используется окончание оператора – End. Часть после Else не обязательна, как и для оператора If Then Else.

Для нашего примера:

Program z1;

Var

T : Integer;

Begin

ReadLn(t);

Case t of

1 : WriteLn ('понедельник');

2 : WriteLn ('вторник');

3 : WriteLn ('среда');

4 : WriteLn ('четверг');

........

Else WriteLn ('такого дня недели нет');

End;

End.

Как видно из примера, оператор Case удобен, когда надо выбрать значение переменной из конечного набора каких-либо значений.

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

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

Program z1;

Var

W : Integer;

Begin

ReadLn(w);

Case w of

1, 3, 5 : WriteLn ('Рабочий день ');

2, 4, 6, 7 : WriteLn ('Выходной день ');

Else WriteLn ('такого дня недели нет');

End;

Задачи на урок:

1.  Ввести номер месяца, на экран вывести, сколько дней в этом месяце.

Блок-схема

Программа

Program t1;

Var

A: integer;

Begin

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

ReadLn (a);

Case a of

1, 3, 5, 7, 8, 10, 12 : WriteLn (' 31 день');

4, 6, 9, 11 : WriteLn ('30 дней');

2 : WriteLn ('28 дней'); else

WriteLn ('Нет такого месяца.’);

End;

End.

2.  Напечатать расписание занятий на введенный Вами день.

Блок-схема

Программа

Program t2;

Var a: integer;

Begin

WriteLn('Введите день недели');

ReadLn (a);

Case a of

1:WriteLn ('укр. язык, геометрия, физика, история, англ. язык, биология');

2:Writeln (' физика, химия, информатика, ЗО, геометрия, русский язык, литература');

3:WriteLn ('физика, МХК, алгебра, физкультура, труд');

4:WriteLn ('литература, физика, физкультура, рус. язык, астрономия, информатика, история');

5:Writeln ('укр. литература, биология, история, англ. язык, химия, ЧиО');

6, 7 :WriteLn ('Это выходной день');

Else WriteLn ('В неделе 7 дней, а не ', a);

End;

End.

Задания для самостоятельной работы.

Определите при помощи какого оператора ветвления удобнее решать задачи и решите их.

1.  Известно, что доктор принимает пациентов в первой половине дня по четным числам месяца и во второй половине дня по нечетным числам месяца. Ввести с клавиатуры число и определить принимает ли сегодня доктор.

2.  Ввести с клавиатуры дату, используя при этом 3 переменные: например 28.01.1997 (вводите в переменные a, b, c без точек!) Напишите программу вывода даты с написанием месяца прописью. Для нашего примера выведется: 28 января 1997 года.

3.  Ввести 3 числа. Проверить, есть ли среди введенных чисел равные. Если есть – вывести на экран слово «Да» и значение равных чисел.

Добавить комментарий


Защитный код
Обновить

По темам:

История Украины

Культурология

Высшая математика

Информатика

Охотоведение

Статистика

География

Военная наука

Английский язык

Генетика

Разное

Технологиеские темы

Украинский язык

Филология

Философия

Химия

Экология

Социология

Физическое воспитание

Растениевосдство

Педагогика

История

Психология

Религиоведение

Плодоводство

Экономические темы

Бухгалтерские темы

Маркетинг

Иностранные языки

Ветеринарная медицина

Технические темы

Землеустройство

Медицинские темы

Творчество

Лесное и парковое хозяйство