Уроки №5-6 тема: " Программирование ветвящихся алгоритмов. Оператор выбора "
Вид материала | Урок |
- Практикум решения задач на ЭВМ содержание текущего и промежуточного контроля, 173.8kb.
- Программирование ветвлений на Паскале Оператор ветвления на Паскале, 166.05kb.
- Программа дисциплины Математическое программирование Семестры, 10.84kb.
- 1 Алгоритмизация и программирование Алгоритмы, виды алгоритмов, описания алгоритмов., 172.44kb.
- Программа вступительного экзамена по специальности 05. 13. 18 Математическое моделирование,, 115.33kb.
- Контрольная работа по темам «Линейное программирование на Паскале» и«Условный оператор», 4.21kb.
- Разработка урока информатики Тема "условный оператор", 8 класс, 82.32kb.
- «Понятие об алгоритме. Примеры алгоритмов. Свойства алгоритмов. Типы алгоритмов, построение, 84.9kb.
- Урок: «типы алгоритмов. Линейные алгоритмы» Тема: Типы алгоритмов. Линейные алгоритмы, 101.98kb.
- Вариант №1 Задание 1 Программирование алгоритмов разветвляющейся структуры, 24.83kb.
УРОКИ № 5-6
ТЕМА: " Программирование ветвящихся алгоритмов. Оператор выбора ".
- Оператор варианта.
![](images/185287-nomer-m4c921411.png)
C
![](images/185287-nomer-70b0adcf.gif)
Список помеченных операторов
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.
Блок-схема команды выбор:
- Оператор ветвления.
Условный оператор включает в себя операторы, которые выполняются или не выполняются в зависимости от записанного в операторе условия. Оператор имеет вид:
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 прекращает выполнение программы.
Блок-схема выполнения условного оператора имеет вид:
![](images/185287-nomer-4196849a.png)
В условном операторе может отсутствовать блок Else оператор2; т. е. условный оператор может иметь вид: IF "условие" Then "оператор1";
![](images/185287-nomer-17718c99.png)
Например: 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 – год крысы – начало очередного цикла.
- Вложенные условные операторы (желательно рассмотреть, если позволяет время)
При решении задач часто приходится рассматривать не два, а большее количество вариантов. Это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор.
Условный оператор управляет только одним оператором, поэтому если требуется произвести более 1 действия, то необходимо использовать составной оператор (операторные скобки).
Условные операторы могут быть встроенными. И в тоже время не каждый встроенный оператор может иметь ELSE. В этом случае появляется неоднозначность, которая решается следующим образом: ELSE всегда относится к ближайшему IF.
Пример 4. Определить весовую категорию в зависимости от веса спортсмена.
PROGRAM VES; { определение весовой категории спортсмена }
Условная схема программы
C
![](images/185287-nomer-5d3221dc.gif)
![](images/185287-nomer-m157f2982.gif)
![](images/185287-nomer-m1e7b22e6.gif)
![](images/185287-nomer-m3c73fc3f.gif)
![](images/185287-nomer-m2249a58b.gif)
![](images/185287-nomer-5d3221dc.gif)
v
![](images/185287-nomer-m3c73fc3f.gif)
![](images/185287-nomer-m2249a58b.gif)
![](images/185287-nomer-m157f2982.gif)
![](images/185287-nomer-m1e7b22e6.gif)
B
![](images/185287-nomer-5d3221dc.gif)
w
![](images/185287-nomer-m3c73fc3f.gif)
![](images/185287-nomer-m2249a58b.gif)
![](images/185287-nomer-m157f2982.gif)
![](images/185287-nomer-m1e7b22e6.gif)
![](images/185287-nomer-21dbc3ca.gif)
I
![](images/185287-nomer-m157f2982.gif)
![](images/185287-nomer-m1e7b22e6.gif)
![](images/185287-nomer-72236713.gif)
IF V < 75 then writeln(A2) { вложенный условный оператор }
else
IF V < 88 then writeln(A3) { вложенный условный оператор }
else writeln(A4);
writeln('Нажмите Enter'); readln;
END.
Файл Ves.pas
IV. Домашнее задание.
- Выучить конспект.
- Написать программы на Паскале для решения задач:
- По заданному числу от 1 до 7 определить название дня недели.(primer4.pas)
- Вывести на экран номер четверти, которой принадлежит точка с координатами (х, у) , при условии, что (х<>0) и (у<>0) . (файл nom_chet.pas)
0>