вівторок, 12 лютого 2019 р.

Алгоритми з розгалуженнями для опрацювання величин

Цілі: сформувати уявлення про синтаксис і семантику скороченої і повної форм операторів розгалуження; сформувати вміння обирати дії залежно від виконання умови, складати, виконувати, змінювати алгоритми з розгалуженнями;
розвивальна: розвивати логічне мислення та креативність;
Розгалуження - це така форма організації дій, при якій в залежності від виконання або невиконання деякої умови здійснюється або одна, або друга послідовність дій.
алг об'їзд небезпечної ділянки
поч
Якщо ремонт закінчено
то проїхати 5 км по відремонтованому шосе
інакше їхати 10 км в об'їзд
Все.
1. Складена команда — це конструкція такого вигляду:
begin
<команда 1>;
……………..;
<команда n>;
end;
Складена команда трактується як одна команда.
2. Логічний вираз — це засіб записування умов для відшукання потрібних даних. Логічний вираз може приймати значення true (істинність) або false (хибність). Логічні вирази бувають прості та складені.
Простий — це два арифметичні вирази, з'єднані символом відношення, а складений — це прості логічні вирази, з'єднані назвами логічних операцій: not, and і or.
3. Команда розгалуження if (умовна команда) має два різновиди.
1. Повна команда розгалуження має вигляд
if < логічний вираз > then <команда 1> else < команда 2 >;
1q2.jpg
Дія команди. Якщо логічний вираз істинний, то виконується команда 1, в протилежному випадку — команда 2. Команди 1 та 2 можуть бути простими або складеними. Приклад. Нехай х=9. У результаті виконання команд if x>7 then y:=x*x else y:=sin(x); if x<5 then z:=exp(x) else z:=sqrt(x); отримаємо y=81,z=3.
2. Коротка команда розгалуження має вигляд
if <логічний вираз > then <команда 1>;
11q2.jpg
Дія команди. Якщо логічний вираз істинний, то виконується команда 1, інакше виконується команда, яка знаходиться за даною конструкцією.
Приклад. Нехай х=25. Тоді у результаті виконання команд if x>12 then y:=2*x; z:=10; if x<5 then z:=exp(x); отримаємо y=50,z=10.
3. Команда goto — це команда безумовного переходу, яка змінює послідовність виконання інших команд програми шляхом переходу до виконання команди, що має позначку (мітку):
goto <позначка>;
Позначка може стояти перед довільною командою в програмі. Вона відокремлюється від команди двокрапкою (:)
<позначка> : <команда>;
Позначку треба заздалегідь оголосити на початку програми у розділі label:
label <список позначок>;
Позначка може починатися з букви або бути числом від 0 до 9999.
Зауваження. Не можна передавати керування команді, яка є в середині підпрограми чи в середині складеної команди.
5. Команда вибору (case) має вигляд
case <вираз> of
<список значень 1> : <команда 1>;
……………………………………;
< список значень n> : <команда n> else <команда n+1>
end;
Тут вираз — це проста змінна цілого, символьного, перерахованого або логічного типу; списки значень — сталі або діапазони, тип яких збігається з типом виразу. Якщо список значень складається з декількох елементів,
то вони перераховуються через кому. Складова частина else <команда п+1> може бути відсутня — тоді матимемо коротку форму команди case.
Дія команди. Якщо значення виразу збігається зі значенням з списку і, то виконується команда з номером і, а інші команди цієї конструкції не виконуються. Якщо значення виразу не збігається з жодним значенням з
жодного списку, то виконується команда n+1 або, у випадку короткої форми, наступна команда після команди case.
ІІІ. Закріплення. Розв’язування задач.
Задача 1. Обчислити і вивести значення складеної функції у у деякій заданій користувачем точці х, якщо
2q1.jpg
program Myfunction;
uses Crt;
var x,y:real;
begin
writeln ('Bвeдіть x');
readln(x);
if x < -1 then y:=ln(abs(x)) else
if (x>=-l) and (x<l) then y:=sin(x) else y:=cos(x);
writeln('x=',x:5:2,' y=',y:5:2);
readln;
end.
Задача 2. Ввести декілька наборів коефіцієнтів квадратного рівняння ax2+bx+c=0 і вивести повідомлення чи рівняння матиме дійсні корені, чи ні.
program Rivnyannya;
label 99,finish;
var a,b,c,d,x,y:real;
begin
99: writeln('Bвeдiть коефіцієнти квадратного рівняння');
readln(a,b,c);
if a=0 then goto finish;
d:=b*b-4*a*c;
if d>=0 then writeln('Данe рівняння має дійсні розв’язки') else
begin
writeln(‘Дaнi введені некоректно');
writeln('Рівняння дійсних розв'язків не має');
goto 99;
end;
finish: readln
end.
Задача 3. Нехай населені пункти позначені номерами від 1 до 8. Вартість одного квитка до конкретного пункту k визначається так:
2q2.jpg
Скільки коштуватимуть т квитків до населеного пункту, номер якого вводять з клавіатури?
program Kvytky;
var k,m,cina:integer;
begin
writeln('Введіть номер пункту та кількість квитків:');
readln(k,m);
case k of
1  : cina:=22;
2..4  : cina:=25;
5,6  : cina:=30
else cina:=35 end;
write(m, ' квитків до пункту ', k, ' коштують ');
writeln(m*cina);
readln
end.
Якщо під час виконання програми ввести дані так: 3 5, то на ікрині отримаємо: 5 квитків до пунку 3 коштують 125.




Немає коментарів:

Дописати коментар