Оператори безумовного та умовного переходів

Мета роботи – вивчення та набуття навичок використання операторів безумовного та умовного переходів для організації розгалуження програм.

 

8.1. Загальні відомості

 

Природній хід програми полягає у послідовному виконанні операторів. Для зміни цього стандартного алгоритму у ТВ передбачені засоби розгалуження: оператори безумовного, умовного та обчислює мого переходу. Такі оператори дозволяють створювати паралельні послідовності та послідовності, що розходяться.

 

Оператор безумовного переходу goto

Організує безумовний перехід за заданою адресою.

 

Формат: goto Мітка(або номер рядка).

Оператор goto має бути або один у рядку або останні у багатооператорному рядку.

 

Приклад:

 

a=5

b=75

goto s

w:

print sin(q)*sqr(b/a)

stop

s:

q=cos(a)*exp(b/a)

…………………..

goto w

 

Ця програма має дві гілки: 1 – перехід до мітки s та продовження розрахунку; 2 – перехід до мітки w та виведення на друк результату обчислення з наступною зупинкою.

 

Оператор умовного переходу if….then…else (якщо…тоді….інакше).

Цей оператор обирає один з двох варіантів продовження програми в залежності від істинності умови що стоїть за службовим словом if.

 

Формат:

if умова then оператор [else оператори]

умова – будь-яке відношення або логічний вираз. Якщо умова істинна то виконується оператор, що є наступним за службовим словом then до службового слова else. У протилежному випадку виконується оператор, що є наступним за else.

 

Наприклад, якщо a>b*c то при виконанні програма переходить на мітку m1.

 

Програма 1

cls

input a

b=1

c=5

if a>b*c then goto m1

print "second"

goto m3

m1:

print "first"

print "a>b*c"

m3:

на екран буде виведено значення a>b*c та first, у іншому випадку, тобто, якщо умова не виконується на екран буде виведено повідомлення second. У такій формі запису, якщо умова виконується, то виконується те що йде за службовим словом then, у іншому випадку – оператор наступний за оператором умовного переходу.

 

Програма 2

cls

input a

b=1

c=5

if a>(b*c) then goto m1 else m2

m1:

print "a>b*c"

print "first"

goto m3

m2:

print "second"

m3:

У прикладі 2 використовується службове слово else. Така форма запису працює наступним чином: якщо умова виконується то програма виконує те що стоїть за службовим словом then, тобто виконується оператор goto m1 (перехід на рядок програми з міткою m1).У протилежному випадку виконується те, що стоїть за службовим словом else, тобто goto m2 (перехід на рядок програми з міткою m2 та подальше послідовне виконання ). Оператор goto після службових слів then та else загалом може не використовуватись.

При перевірці нерівності змінної нулю оператор можна записати наступним чином

if a then

(читається: якщо а не дорівнює нулю, то виконується те, що стоїть за службовим словом then).

Крім розглянутих конструкцій, для перевірки складних умов можуть використовуватись логічні вирази. Наприклад:

if a*b/2>20 and c>d/3 then m1 else n1

Конструкція if….then…else це один оператор і тому вона повинна знаходитись у одному рядку.

Оператор on … goto (у залежності від … перейти) обмежує перехід по одному із заданих параметрів в залежності від значення числового вказівника.

Формат запису:

on числовий вказівник goto список адрес

Числовий вказівник – це числова змінна або арифме6тичний вираз значення, яких автоматично округлюється до найближчого цілого числа. Якщо в результаті округлення отримано 1 то перехід буде виконано по першій адресі списку, якщо 2, - по другій адресі списку й так далі. Якщо значення числового вказівника дорівнює нулю, або більше кількості адрес, то оператор on … goto не виконується і керування програмою передається оператору, що є наступним за ним.

Параметр "список адрес" – це перелік, що розділений комами, міток та номерів рядків. У такому списку можуть бути до 255 адрес.

Приклад

input "Адреса":t

on t goto m1, 25,n

………………

m1:

print " Перехід за 1-ю адресою"

stop

25 print " Перехід за 2-ю адресою "

stop

n:

print " Перехід за 3-ю адресою "

Ця програма виконується наступним чином: якщо по запиту команди input ввести 1, 2, або 3, то відповідне значення буде присвоєно змінній t та буде здійснено перехід за першою, другою або третьою адресами.

Замість змінної у операторі on … goto може використовуватись арифметичний вираз (наприклад, sng(g)+2), що не змінює принципів розгалуження програми.

 

8.2. Послідовність виконання роботи

8.2.1. Увімкнути комп’ютер та завантажити ТВ.

8.2.2. Відповідно до варіанту завдання (див. лаб. роб. № 4) для алгоритму, що розгалужується розробити декілька програм з використання операторів умовного та безумовного переходів різних конструкцій. Набрати текст та відлагодити програму.

8.2.3. Результати обчислень вивести на екран з необхідними коментарями.

8.2.4. У разі успішного виконання переписати виведені результати до протоколу.

8.2.5. Переписати тексти працюючих програм до протокол.

8.2.6. Відповідно до варіанту завдання (див. лаб. роб. № 4) для циклічного алгоритму, розробити декілька програм з використання операторів умовного та безумовного переходів різних конструкцій. Набрати текст та відлагодити програму.

8.2.7. Результати обчислень вивести на екран з необхідними коментарями.

8.2.8. У разі успішного виконання переписати виведені результати до протоколу.

8.2.9. Переписати тексти працюючих програм до протокол.

 

8.3. Зміст протоколу.

 

8.3.1. Протокол лабораторної роботи має містити теоретичну частину в обсязі необхідному для виконання та захисту лабораторної роботи алгоритми та тексти програм.

8.3.2. Результати виконання лабораторної роботи повинні бути відображені відповідно до вимог п.8.2.

8.3.3. Студенти, що не мають належним чином оформлений протокол до виконання та захисту лабораторної роботи не допускаються