Алгоритмы с ветвящейся структурой
МБОУ «СОШ №2» городского округа Судак
Жолтикова Елена Михайловна
Игра в числа (линейный алгоритм) :
Задумайте число.
Умножьте его на 2, прибавьте к результату 4, разделите результат на 2, прибавьте к результату 7, умножьте результат на 8, вычтите из результата 12, разделите результат на 4, отнимите от результата 11.
Сколько у Вас получилось? ……
Вы задумали число - …….
Трассировочная таблица
команды
а
а:=
а:= a*2
а:= a+4
а:= a/2
а:= a+7
а:= a*8
а:= a-12
а:= a/4
а:= a-11
“ Камень, ножницы, бумага” з адача на ветвления
- Краткая история
- Игра зародилась в Китае во II веке до н.э. Оттуда и появились слова “Цу, Е, Фа”, что с китайского обозначает “пожалуйста, начинайте”. Из Азии игра попала в Европу и приобрела популярность в 1920 годах, распространяясь по всему миру.
Ветвление - это
алгоритмическая конструкция, в которой в зависимости от условия выполняется та или иная последовательность действий.
“ Камень, ножницы, бумага” з адача на ветвления
- Краткая история
- Игра зародилась в Китае во II веке до н.э. Оттуда и появились слова “Цу, Е, Фа”, что с китайского обозначает “пожалуйста, начинайте”. Из Азии игра попала в Европу и приобрела популярность в 1920 годах, распространяясь по всему миру.
Описание
“ Камень, ножницы, бумага” – популярная игра на руках, известная во многих странах мира.
Часто используется как методика жеребьёвки для выбора персоны для какой-либо цели (наряду с бросанием монеты, вытягиванием соломинок и т. п.).
- Победитель определяется по следующим правилам:
- Камень побеждает ножницы (“камень затупляет или ломает ножницы”).
- Бумага побеждает камень (“бумага накрывает камень”).
- Ножницы побеждают бумагу (“ножницы разрезают бумагу”).
Если игроки показали одинаковый знак, то засчитывается ничья и игра переигрывается.
Решение:
Формат команды ветвления такой:
если
то
иначе
Ветвление является структурной командой .
- Его исполнение происходит в несколько шагов:
- проверка условия (выполнения логического выражения) и выполнение команд на одной из ветвей «да» или «нет».
- проверка условия (выполнения логического выражения) и
- выполнение команд на одной из ветвей «да» или «нет».
- Поэтому в трассировочной таблице записываются не команды алгоритма, а отдельные операции, выполняемые компьютером на каждом шаге.
Команда ветвления
Неполная форма команды ветвления
Блок-схема алгоритма решения задачи выбора большего из двух
алг БИД1
вещ А, В, С
нач
ввод А, В
если А В
то С:=А
иначе С:=В
кв
вывод С
кон
Program BID1;
var А, В, С: real;
begin
readln(А, В);
if АВ
then С:=А
else С:=В;
writeln(С)
end.
Блок-схема алгоритма решения задачи выбора большего из двух
алг БИД2
вещ А, В, С
нач
ввод А,В
С:=А
если ВА
то С:=В
кв
вывод С
Кон
Program BID2;
var А, В, С : real;
begin
readln(А, В);
С: =А;
if ВА
then С:=В;
write(С)
end.
Сложные ветвящиеся алгоритмы (последовательное ветвление: найти наибольшее значение среди трех величин: А , В , С .
Program BIT1;
var А, В, C, D: real;
begin
readln(А, В, C);
if AB
then D:=A else D:=B;
if CD
then D:=C;
writeln(D)
end.
Программирование вложенных ветвлений (поиск большего из трех)
Program BIT2;
var А, В, C, D: real;
begin
readln(А, В, C);
if AB
then if AC then D:=A else D:=B
else if BC then D:=B else D:=C;
writeln(D)
end.
Вложенный условный оператор
Задача: в переменных a и b записаны возрасты Андрея и Бориса. Кто из них старше?
?
Сколько вариантов?
if a b then
writeln( 'Андрей старше' )
else
if a = b then
writeln( 'Одного возраста')
else
writeln( 'Борис старше' );
вложенный условный оператор
?
Зачем нужен?
Условный оператор
if then begin
{что делать, если условие верно}
end
else begin
{что делать, если условие неверно}
end;
Особенности:
- перед else НЕ ставится точка с запятой вторая часть ( else …) может отсутствовать (неполная форма) если в блоке один оператор, можно убрать слова begin и end
- перед else НЕ ставится точка с запятой
- вторая часть ( else …) может отсутствовать (неполная форма)
- если в блоке один оператор, можно убрать слова begin и end
22
22
Логические выражения
Простой формой логического выражения является операция отношения .
Как и в АЯ, в Паскале допускаются все виды отношений (ниже указаны их знаки):
(меньше);
(больше или равно);
(больше);
= (равно);
(меньше или равно);
(не равно).
Логические операции
третий вариант программы определения наибольшего числа из трех.
Program BIT3;
var А, В, С, D: real;
begin
readln(А,В,С);
if (А=В) and (А=С) then D:=A;
if (В=А) and (В=С) then D:=B;
if (C=A) and (C=B) then D:=C;
writeln(D)
end.
Сложные логические выражения
В Паскале присутствуют все три основные логические операции:
and — И (конъюнкция),
or — ИЛИ (дизъюнкция),
not — НЕ (отрицание).
Сложные логические выражения четвертый вариант программы определения наибольшего числа из трех.
Program BIT4;
var А, В, С, D: real;
begin
readln(А,В,С);
if (A=B) and (A=C) then D:=A
else if (B=A) and (B=C) then D:=B
else if (C=A) and (C=B) then D:=C;
writeln(D)
end.
Сложные логические выражения
Отношения, связываемые логическими операциями, заключаются в скобки . Так надо делать всегда! Например, требуется определить, есть ли среди чисел A , B , C хотя бы одно отрицательное.
if (Аor (Вor (С
then write( 'YES ’) else write('NO');
или
if not (А= 0) or not (B= 0) or not (C= 0) then write( 'YES ’) else write('NO');
Программа с условным оператором
var s, t: integer ; begin readln (s);
readln (t);
if (s 10) or (t 10)
then writeln ('ДА')
else writeln ('НЕТ')
end .
Было проведено 9 запусков программы, при которых в качестве значений переменных s и t вводились следующие пары чисел:
(1, 2); (11, 2); (1, 12); (11, 12); (–11, –12); (–11, 12);
(–12, 11); (10, 10); (10, 5) .
Сколько было запусков, при которых программа напечатала «ДА»?
5
алг СОРТИРОВКА
вещ X , Y , C
нач
ввод X , Y
если XY
то C := X
X:=Y
Y := С
кв
вывод X , Y
кон
Program SORTING ;
var X, Y, С: real;
begin
readln(X, Y);
if XY
then begin С:=X;
X: =Y;
Y:=C
end;
write(X,Y)
end.
Оператор ветвления на Pascal
- Опорный конспект . pps
Решение задач:
Вводятся параметры конверта – a×b и открытки c×d. Определить, поместится ли открытка в конверт?
Решение.
Конверты бывают такой формы:
Открытки бывают двух видов:
b
a
d
d
c
c
Блок-схема
начало
a, b, c, d
((ac)and(bd))or((ad)and(bc))
нет
да
Не поместится
Поместится
конец
34
“ Камень, ножницы, бумага”
начало
- начало
“ Камень, ножницы, бумага” з адача на ветвления
Выберите один из вариантов: Камень – 0, Ножницы – 1, Бумага – 2. Ваш выбор --
- Выберите один из вариантов: Камень – 0, Ножницы – 1, Бумага – 2. Ваш выбор
z
- z
x:=random(3 )
- x:=random(3)
(z=0) and (x=0) or (z=1) and (x=1) or (z=2) and (x=2)
нет
да
ничья
- (z=0) and (x=1) or (z=1) and (x=2) or (z=2) and (x=0)
(z=0) and (x=1) or (z=1) and (x=2) or (z=2) and (x=0)
да
нет
Вы выиграли
Вы проиграли
Вы проиграли
конец
- конец
назад
Решить задачу:
Суточный рацион коровы составляет a кг сена, b кг силоса и c кг комбикорма. В хозяйстве, содержащем стадо из k голов, осталось x центнеров сена, y тонн силоса и z мешков комбикорма по 50 кг. Сколько еще дней хозяйство сможет кормить коров по полному рациону.
Домашнее задание
Текст программы
program z5;
var
a,b,c,x,y,z,kol,r:real;
Begin
readln (a,b,c);
readln (x,y,z);
readln (r);
x:=int(x*100/a);
y:=int(y*1000/b);
z:=int(z*50/c);
kol:=0;
if (x=r) and (y=r) and (z=r) then
begin
if (x
if (y
if (z
end;
writeln (kol);
end.
Домашнее задание
§12 , Вопросы и задания 6, 7, 8, 9
§13 , Вопросы и задания 2, 4, 5, 6