Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_1_05_ВНУ.doc
Скачиваний:
2
Добавлен:
08.09.2019
Размер:
1.71 Mб
Скачать

Структури керування

Методологією сучасного програмування є програмування структурне, що виникло в 70-ті роки. Детальніше його теорію розглянемо нижче, тут лише зазначимо, що фундаментом струк­турного програмування є така теорема про структурування: якою б складною не була задача, програму, за допомогою якої її розв'язують, можна скласти з використанням обмеженої кіль­кості структур керування. Базовими елементарними є струк­тури:

послідовного виконання;

розгалуження;

циклу з передумовою.

Ці структури характеризуються функціональною повно­тою, тобто будь-який алгоритм можна реалізувати у вигляді композицій цих трьох конструкцій.

Ідеї структурного програмування вперше найповніше ві­дображені в мові Паскаль. Під час проектування програм мовою Паскаль, крім базових, використовують ще такі чотири елементарні структури:

скороченого розгалуження;

вибору;

циклу з параметром;

циклу з післяумовою.

У мові Паскаль є засоби (безпосередньо оператори) для реалізації цих структур.

Структура послідовного виконання

Часто розв'язування задачі полягає в послідовному вико­нанні певних дій. Програма, що реалізує такий процес, зводиться до виконання операторів одного за одним. Кожен опе­ратор описує частину процесу - підпроцес. Послідовність підпроцесів обов'язково виконується, починаючи з першого і закінчуючи останнім, причому виконання кожного підпроцесу повинно завершуватися до початку виконання наступного. Процес, який можна подати як послідовність підпроцесів, на­зивається послідовним.

У мові Паскаль засобом, що реалізує структуру послідов­ності, є складений оператор:

begin

s1;

s2;

. . . 

sN

end ;

Усередині складеного оператора дозволені довільні пере­ходи і вихід з будь-якого місця, однак заборонений вхід у нього не через його початок.

Структура розгалуження

Часто в програмі потрібно передбачити декілька варіантів можливих дій так, щоб вибір одного з них відбувався уже під час виконання програми. Зокрема, для обчислення коренів квад­ратного рівняння програма має два шляхи: обчислення дійсних коренів та обчислення комплексних коренів. Після оцінки дискримінанта D<0 залежно від вхідних даних розв'язування відбувається одним з можливих шляхів. У мові Паскаль струк­туру розгалуження реалізують за допомогою умовного опера­тора, який дає змогу вибирати одну з двох дій залежно від ре­зультату обчислення логічного виразу. Цей логічний вираз називається умовою, або предикатом.

Умовний оператор

Загальний вигляд умовного оператора такий:

if <логічний вираз>

then <оператор>

else <оператор>.

Якщо значення умови, заданої бульовим виразом, є true, то виконується оператор, що стоїть після then, якщо значен­ня умови дорівнює false, то виконується оператор, що стоїть після else.

Простим прикладом використання умовного оператора може бути обчислення функції за однією з двох формул залежно від значення аргументу:

Оператор, що реалізує ці обчислення, має вигляд:

If x>0

then y:=ln(x)

else y:=exp(x).

Залежно від результату бульового виразу виконується один з альтернативних операторів.

Умовний оператор може і не мати конструкції else, така форма називається скороченою:

if <булевий вираз> then <оператор>

У випадку такої конструкції умовного оператора, якщо булевий вираз має значення true, виконується оператор, що є після then, а якщо бульовий вираз дорівнює false, то жодні дії не виконуються.

Кожен з операторів може бути складеним. Наприклад,

if not a

then

begin

х:=х+1;

у:=у+1

end

else

begin

x:=abs(x);

y:=abs(y)

end;

Складений оператор використовують тоді, коли після then або else потрібно записати групу операторів, однак згідно з синтаксисом тут повинен бути лише один оператор.

Оператори, що стоять після then або else, самі можуть бути умовними, тоді маємо вкладену конструкцію умовного опера­тора. Нехай, наприклад, треба обчислити функцію за однією із формул залежно від значення аргументу:

Це можна виконати кількома способами:

1) If x>=1 then y:=sqrt(x) else

if x>0 then y:=x else y:=sqr(x);

2) if x>0 then

if x>=1 then y:=sqrt(x)

else y:=x;

else

y:=sqr(x);