Алгоритми і програми з розгалуженнями.
1 Оператор безумовного переходу goto.
Команду переходу використовують щоб змінити порядок виконання команд у програмі.
Вона має такий вигляд:
Goto – перекладається "перейти на", де "мітка" – це адрес команди оператора, на який потрібно перейти. Мітка може бути числом від 0 до 9999 або ідентифікатор, після якого є символ:.
Приклади міток: 10:, 222:, m1:, alpha:. Усі мітки можна оголосити у розділі оголошення міток на початку програми так:
Наприклад:
label 10:, 222:, m1:, alpha:.
Задача Скласти програму обчислення функції:
для трьох різних значень x = 3,4,5 з клавіатури з використанням команди переходу goto.
Програма:
Program FUN_Y;
label 10;
var x, y: real;
Begin
10: write ’введіть значення х:’;
read ln x;
y: = 35 sin x + cos 2x/3.5-4absx;
write ln x:6:2, y:6:2
Goto 10;
End.
2. Умовні оператори.
У повсякденній діяльності часто доводиться аналізувати різноманітні ситуації, умови і залежно від них приймати ті чи інші рішення.
Команди розгалуження або умовні оператори змінюють порядок виконання дій у алгоритмі в залежності від виконання чи невиконання певних умов. Розгалуження бувають декількох видів. Найпростішим видом є "неповне розгалуження".
Неповне розгалуження реалізується за допомогою команди if якщо:
Виконання команди: команда може бути один оператор або група операторів. Якщо виконується умова в блок-схемі – вітка "так", то виконається оператори чи група операторів після слова then. Якщо ж умова не виконується в блок-схемі – вітка "ні", то ця команда не буде виконуватися і буде виконуватися наступний після if оператор команда.
Умова – це логічний вираз, які бувають прості і складені.
Простий логічний вираз – це два арифметичні вирази, з’єднані символом відношення порівняння.
У Паскалі символи відношень записуються такбільше,менше,
= - більше або дорівнює не менше, = - менше або дорівнює не більше,
= - дорівнює, - не дорівнює.
Наприклад: x5; x+y=2x; x y.
Складені логічні вирази – це прості логічні вирази, до яких застосовані логічні операції not не, and і, or або.
Наприклад. Побудувати вираз, який буде використовуватися для визначення студентів, які не отримали оцінки "2" з інформатики тобто отримали інші оцінки. Для позначення оцінки використаємо числову змінну ocinka. Шуканий вираз можна записати так:
А. notocinka=z або ocinka 2.
Приклад.
Записати подвійну нерівність
0x3 для дійсних х можна так: x0 and x3.
Примітка. Прості логічні вирази, які входять у складені, записують у круглих дужках.
Приклад.
На мові Паскаль таку складену умову можна записати так:
X 4 or x -5.
Задача. Скласти програму, де у змінні а та b ввести два цілих числа. Третій змінній с присвоїти значення більшого з-поміж уведених. Якщо числа рівні, то змінні с присвоїти значення будь-якого з чисел.
Program twonumbers;
Var a, b, c: integer;
Begin
write ’Введіть два числа’;
read lna, b;
if ab then c:=a;
if ab then c:=b;
if a=b then c:=a;
write ln ‘c=’, c; read ln
End.
Задача. Увести будь-яке значення х і обчислити значення функції у, яка задана формулою
Program F1
Var x, y: real;
Begin
write ‘Введіть х:’;
read ln x;
if x0 then y:=x+3 else y:=x-5;
write ln ‘y=’,y;
read ln
End.
Повне розгалуження.
Повне розгалуження реалізують за допомогою повної команди розгалуження if.
Ifумоваthenкоманда 1elseкоманда 2;
|
|
Виконання команди:
Якщо умова виконується в блок-схемі – вітка "так", то виконується команда 1 або серія команд 1, якщо ні – то команда 2 серія команд 2.
Зауваження. На місці команди 1 та команди 2 може бути теж команда розгалуження if.
Приклад. Визначимо більше число з-поміж двох чисел:
If a=b then c:=a else c:=b;
Де a i b – два числа, а с – проміжна змінна куди заносимо більше з 2-х чисел.
Оператор вибору case.
Якщо потрібно здійснити вибір з великої кількості варіантів, зручно використовувати оператор команду вибору case:
Case вираз-селекторof
список 1:команда 1;
список 2:команда 2;
…
список n:команда n;
Else команда
End;
|
|
Виконання оператора:
Якщо значення виразу збігається зі значенням з найбільшого списку чи діапазону, то виконується відповідна команда, що записана після двокрапки ":" і на цьому виконання команди case закінчується, якщо ні, то виконується команда після слова else. Складової частини else команди може бути.
Задача. У багатьох університетах поточні знання студентів протягом семестру оцінюють за стобальною системою. Потім бали переводять в оцінки: відмінно,добре,задовільно,незадовільно.
Оцінки визначають так:
Бали Оцінка
88-100 відмінно
71-87 добре
50-70 задовільно
0-49 незадовільно
Скласти програму, яка для конкретного студента name і його кількості балів bal виводить його оцінку mark.
Program Marks;
var bal: integer; name, mark: string;
Begin
write ‘Введіть прізвище’;
readln name;
write ‘Введіть бали’;
readln bal;
Case bal of
88…100: mark:= ‘відмінно’;
71…87: mark:= ‘добре’;
50…70: mark:= ‘задовільно’;
0…49: mark:= ‘незадовільно’;
else mark: = ‘0’
End;
If mark ‘0’ then writeln name:15, mark:15
Else writeln ‘помилка під час введення кількості балів’:
End.
Або інший приклад:
case k of
1; cina:=22,
2,3: cina:=35;
4: cina:=50;
else cina:=97
end;
3. Складена команда.
Складена команда – це команда, в якій декілька команд об’єднано в одну за допомогою службових слів begin та end:
begin
команда 1;
команда 2;
…
команда n;
end;
|
|
Задача. Скласти програму, яка дає довідку про назву столиці St та кількість населення nas, у мільйонах деякої країни kr з такого переліку: Угорщина, Італія, Україна.
program Countries;
var kr, st: string; nas: integer;
begin
write ‘Введіть назву країни’;
readln kr;
if kr = ‘Угорщина’ then
begin
st:= ‘Будапешт’;
nas:=11
end;
if kr = ‘Італія’ then
begin
st:= ‘Рим’;
nas:=60
end;
if kr = ‘Україна’ then
began
st:= ‘Київ’;
nas:= 48
end;
writeln ‘Столиця - ’, st, ‘населення-’, nas, ‘млн осіб’
end.