Уроки №5-6 тема: " Программирование ветвящихся алгоритмов. Оператор выбора "

Вид материалаУрок

Содержание


Program future
Оператор ветвления.
IF "условие" Then "оператор 1" Else "оператор 2"
IF a >= 0 Then b:= Sqrt(a) Else begin WriteLn ( 'a
Else оператор2
Program Example 2; Var
End.III. Закрепление. Практическая работа
Program Example 3; Var х
Вложенные условные операторы (желательно рассмотреть, если позволяет время)
Program ves
A2='средняя категория'; Then
Подобный материал:
УРОКИ № 5-6
ТЕМА: " Программирование ветвящихся алгоритмов. Оператор выбора ".

  1. Оператор варианта.

Оператор служит для выбора одного из помеченных вариантов действия (операторов), в зависимости от значения "параметра". Оператор имеет вид:


C
Список помеченных операторов
ASE параметр OF
метка 1: оператор 1;
метка 2: оператор 2;
. . . . . . . . . . . . . . . . .
метка N: оператор N

ELSE оператор N+1
END;


Здесь "параметр" - выражение или переменная порядкового (перечисляемого) типа. Перечисляемый тип определяется как упорядоченный набор идентификаторов, заданных путем их перечисления.

Из "списка помеченных операторов" выполняется оператор с меткой, включающей значение "параметра", иначе оператор после слова Else. Конструкция Else "оператор" может отсутствовать.

Метка варианта - не обычная метка: это не обязательно целое число, она не описывается в разделе LABEL, на неё нельзя ссылаться в операторе GOTO.

Напомним, что "оператор" может иметь вид: Begin "операторы" end;

Обратите внимание, что синтаксис языка предполагает один оператор для каждой альтернативы; при необходимости задания нескольких операторов следует сгруппировать их в составной оператор. В то же время ветвь else допускает последовательность операторов, разделённых символом ";"


Пример 1. Определить порядок целого числа N от 0 до 999:

case N of

0..9: writeln('однозначное');

10..99: writeln('двузначное');

100..999: writeln('трехзначное')

else writeln('Число "N" не входит в указанный диапазон')

end;


Пример2. Пример программы случайного предсказания одного из десяти вариантов ближайшего будущего с вероятностью 1/20, в остальных случаях - вы "неудачник".


PROGRAM FUTURE;

var N: word;

Begin

writeln('ПРЕДСКАЗАНИЕ БУДУЩЕГО');

Randomize; N:=Random(20)+1; { N - случайное число от 1 до 20 }

writeln; write('Вас ожидает _');


case N of

1: writeln('счастье');

2: writeln('пятерка');

3: writeln('дорога');

4: writeln('двойка');

5: writeln('болезнь');

6: writeln('здоровье');

7: writeln('деньги');

8: writeln('любовь');

9: writeln('встреча');

10: writeln('проблемы')

else writeln('неудача') end;

writeln('Нажми Enter');

readln;

END.


Здесь функция Random(x) генерирует случайное число, с равномерной плотностью распределения на заданном интервале. Для инициализации распределения в начале программы необходимо вызвать процедуру Randomize.

Блок-схема команды выбор:

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


Условный оператор включает в себя операторы, которые выполняются или не выполняются в зависимости от записанного в операторе условия. Оператор имеет вид:

IF "условие" Then "оператор 1" Else "оператор 2";

где "условие" - выражение логического типа; "оператор 1" выполняется, если условие верно (True), "оператор 2" выполняется, если условие не верно (False).


Например, вычисление квадратного корня из числа "a" проводится при условии a>=0, операторами: IF a >= 0 Then b:= Sqrt(a) Else begin WriteLn ( 'a<0' ); Readln; Halt end;


Оператор Halt прекращает выполнение программы.


Блок-схема выполнения условного оператора имеет вид:



В условном операторе может отсутствовать блок Else оператор2; т. е. условный оператор может иметь вид: IF "условие" Then "оператор1";



Например: IF a<0 Then a:= abs(a);


Пример 3.

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

Program Example 2;

Var x,y: Integer;

Begin

Writeln('введите 2 числа');

{вводим два целых числа через пробел } Readln(х,у);

If x>y Then Writein(х) {если (If) х больше у, то (Then) выводим х,}

Else Writeln(у);{иначе (Else) выводим у}

Readln;

End.


III. Закрепление. Практическая работа


1. Написать программу, проверяющую, принадлежит ли число, введенное с клавиатуры, интервалу (0; 5).

Решение.


Число х принадлежит заданному интервалу лишь в том случае, если одновременно выполня­ются оба условия: (х>0) и (х<5).

Program Example 3;

Var х: Integer;

Begin

Writein('Введите число х'); Readin(х);

If (x>0)and(x<5) Then Writein(х,' принадлежит (0,5)') Else Writein(х,' не принадлежит (0,5)');

End.

2. В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки, и свиньи. Написать программу, которая позволяет ввести номер года и печатает его название по старояпонскому календарю. Справка: 1996 – год крысы – начало очередного цикла.


  1. Вложенные условные операторы (желательно рассмотреть, если позволяет время)

При решении задач часто приходится рассматривать не два, а большее количество вариантов. Это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор.


Условный оператор управляет только одним оператором, поэтому если требуется произвести более 1 действия, то необходимо использовать составной оператор (операторные скобки).

Условные операторы могут быть встроенными. И в тоже время не каждый встроенный оператор может иметь ELSE. В этом случае появляется неоднозначность, которая решается следующим образом: ELSE всегда относится к ближайшему IF.

Пример 4. Определить весовую категорию в зависимости от веса спортсмена.


PROGRAM VES; { определение весовой категории спортсмена }

Условная схема программы

CONST A1='легкая категория';

A2='средняя категория'; Then

A3='тяжелая категория'; IF Writeln(A1)

A4='сверхтяжелая категория'; Else

var V : integer; Then

IF Writeln(A2)

BEGIN Else

write('введите вес спортсмена V='); Then

readln(v); IF Writeln(A3)

Else

IF V < 62 then writeln(A1)

else Writeln(A4)


IF V < 75 then writeln(A2) { вложенный условный оператор }

else


IF V < 88 then writeln(A3) { вложенный условный оператор }

else writeln(A4);


writeln('Нажмите Enter'); readln;

END.

Файл Ves.pas


IV. Домашнее задание.
  1. Выучить конспект.
  2. Написать программы на Паскале для решения задач:
  1. По заданному числу от 1 до 7 определить название дня недели.(primer4.pas)
  2. Вывести на экран номер четверти, которой при­надлежит точка с координатами (х, у) , при условии, что (х<>0) и (у<>0) . (файл nom_chet.pas)