Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмічна мова Паскаль.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
311 Кб
Скачать
☆

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

Оператор вибору дає змогу програмувати алгоритми з декількома гілками розгалуження без використання оператора переходу, що є вимогою структурного програмування. Однак це не означає, що взагалі не можна вживати оператор переходу. Не можна тільки безпідставно передавати управління з одного кінця програми в інший, щоб потім знов повернутися назад. Але цей оператор стає незамінним, якщо необхідно обійти достатньо велику частину програми, до якої потім не треба повертатися в цій реалізації програми, але яка буде необхідною для виконання в її другій реалізації. Тобто коли гілки розгалуження занадто громіздкі, щоб створювати складені оператори. Необхідність в передачі управління не наступному оператору, а оператору , розташованому , скажімо, раніше в програмі, виникає не тільки в програмах з розгалуженням, а і в циклічних програмах.

Повний синтаксис оператора переходу:

GO TO < мітка> ;

< Мітка> – описаний в блоці LABEL ідентифікатор або цифри від 0 до 9999, якими позначається оператор. Мітка відокремлюється від оператора символом “:”. Якщо це цифри, то нулі на початку не є значущими, тобто мітки 0001 та 1 еквівалентні. Мітка може стояти в програмі будь-де , але кожна з них може з’явитися в програмі лише один раз.

Оператор переходу забезпечує безумовну передачу управління оператору з указаною міткою. Звичайно мітки розміщуються у операторів, але можуть стояти і у службового слова END, що забезпечує перехід на кінець поточного блока BEGIN…END .

Слід уникати переходів з передачею управління в середину складених операторів, особливо в той , де є оператор переходу. Оператор безумовного переходу достатньо ефективно забезпечує вихід із вкладеного оператора у зовнішній, що є достатньо безпечним засобом повернути управління зовнішньому оператору.

Область дії операторів переходу та пов’язаних з ними міток обмежується блоком, в якому описані мітки ( основний блок. процедура або функція ). Тому заборонені переходи за допомогою оператора переходу між процедурами та між процедурами та основним блоком.

При практичному програмуванні , як вже відмічалося, необхідність в використанні оператора переходу виникає не часто, але іноді один перехід дозволяє уникнути дуже широких циклів.

Приклад. Дани три числа A,B,C. Упорядкувати їх за спаданням, тобто змінній A присвоїти найбільше значення з трьох даних, а змінній C – найменше.

Використаємо відомий алгоритм сортування “бульбашки” (“пузырька” російською ) .

PROGRAM SORTUVANNIA;

LABEL 10;

VAR

A,B,C,X: REAL;

BEGIN

WRITELN(‘ВВЕСТИ A,B,C);READ(A,B,C);

WRITELN(A,B,C);

10: IF A<B THEN BEGIN X:=A; A:=B; B:=X END;

IF B<C THEN BEGIN X:=B; B:=C; C:=X; GO TO 10 END;

WRITELN (A,B,C)

END.

В програмі введено допоміжну змінну X для тимчасового зберігання значення однієї із змінних, які за алгоритмом обмінюються значеннями.

3.4. Циклічні програми в тп

Циклічним процесам відповідають базові структури “ЦИКЛ ДО” та “ЦИКЛ ПОКИ” :

ні

так

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

Організація циклів за допомогою умовного оператора

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

Приклад. Скласти програму табуляції функції y=f(x) , якщо x змінюється від xпоч до xкінц з кроком h.

PROGRAM TABUL;

LABEL 1;

VAR

X,XP,XK,H,Y: REAL;

BEGIN

WRITELN (‘ВВЕСТИ XP,XK,H‘`);

READ (XP,XK,H );

X:=XP;

1:Y:= ……………; { Обчислення значення функції }

WRITELN ( ‘X= ‘,X,’ Y= ‘,Y);

X:=X+H;

IF X<=XK THEN GOTO 1

END.

Тут для xпоч введений ідентифікатор XP, для xкінц – XK. Структура програми не залежить від виду функції f(x), який визначає тільки оператор присвоювання з міткою “1”, на що звертає увагу коментар в фігурних дужках.

Програма відповідає базовій структурі “ЦИКЛ ДО”. Кількість повторень не рахується, але вона легко визначається за формулою:

K=[(XK-XP)/H]+1,

де перша складова суми – це ціла частина виразу в квадратних дужках.