Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Pascal.rtf
Скачиваний:
5
Добавлен:
22.11.2019
Размер:
2.69 Mб
Скачать

Тема 5 Управління послідовністю дій у програмах мовою Паскаль

Послідовний (лінійний) обчислювальний процес

Н айпростішим видом обчислювального процесу є послідовний або лінійний обчислювальний процес, коли всі дії виконуються одна за одною (рис. 4).

Розглянемо приклад: скласти програму для обчислення об’єму та площі поверхні прямокутного паралелепіпеда, якщо задані довжини ребер a, b, c (дійсні числа).

Вхідними даними цієї задачі будуть довжини ребер a, b, c типу real.

Вихідними даними цієї задачі будуть: площа поверхні S та об’єм V також типу real.

Математична постановка задачі:

  1. Площа поверхні паралелепіпеда визначається за формулою:

,

де a та b – сторони основи паралелепіпеду, c – висота.

  1. Об’єм паралелепіпеда :

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

  1. Введення даних для змінних a, b, c.

  2. Обчислення S та V.

  3. Виведення значення S та V на екран.

Схема алгоритму наведена на рис. 5.

var

a,b,c,S,V:real;

begin

WriteLn (‘Введіть довжини ребер паралелепіпеда a, b, c:’);

Read (a,b,c);

S:= 2*a*b+4*b*c;

V:=a*b*c;

Writeln (‘S= “, S:7:3, ‘V= ’, V:7:3);

end.

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

Розгалужений обчислювальний процес

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

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

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

В

так

иконується перевірка логічної умови та перехід в залежності від його істинності на виконання одного з операторів S1 або S2. Після чого обчислення повертається до “спільного русла” , тобто виконується оператор S3. Не слід забувати, що оператори S1 та S2 є альтернативними. Якщо < умова > істинна, то виконується оператор S1, якщо ні, то S2.

Приклади алгоритму з розгалуженим обчислювальним процесом:

  1. Алгоритм знаходження коренів квадратного рівняння ax2 +bx+c=0 поданий на рис. 7.

  2. Алгоритм знаходження найбільшого значення з двох змінних a= max (x, y) поданий на рис. 8.

Реалізація розгалужень у програмах мовою Pascal

У програмах мовою Паскаль розгалужений обчислювальний процес може бути заданий двома операторами:

Оператор перевірки умови IF - THEN - ELSE

Оператор – перемикач case – of – else .

Оператор IF - THEN - ELSE

Синтаксис оператора перевірки умови такий:

IF <Умова > THEN <оператор1 > ELSE <оператор2 >;

При виконанні оператора IF по-перше обчислюється <Умова >. <Умова > - логічний вираз, результат якого булового типу (true / false). Якщо <Умова> істинна, то виконується <оператор1>, інакше виконується <оператор2>.

Частина ELSE не є обов’язковою, тобто оператор перевірки умови може бути заданий так:

IF <Умова > THEN <оператор1 >;

У випадку, коли оператор IF використовується у скороченому записі без частини ELSE, при значенні результату умови false нічого не виконується, оператор після THEN пропускається.

Зверніть увагу на те, що перед ключовим словом ELSE;” не ставиться.

Оператор case – of – else

Оператор IF дозволяє вибрати тільки одну з двох можливих дій в залежності від виконання або невиконання умови. На практиці дуже часто виникає ситуація, коли необхідно приймати більш складні рішення, тобто вибирати не з двох, а набагато більшої кількості варіантів. Для реалізації такого “сильно” розгалуженого процесу використовується оператор – перемикач CASE.

Синтаксис опису оператора – перемикача:

CASE <вираз > OF

<константа1> :<oператор1 > ;

<константа2> :<oператор2 > ;

. . .

<константаN> :<oператорN >

ELSE <оператор > ;

END;

<Вираз> є селектором, тобто в залежності від того, яке значення він приймає обирається та чи інша гілка оператору CASE, для якої значення виразу співпадає зі значенням константи (<конст. 1>, <конст. 2> або <конст. N>). Тип виразу може бути одним з дискретних типів: цілочисельним , символьним або логічним.

CASE - константи повинні бути унікальними й відповідати типу виразу – селектора.

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

Case f of

0..5, 10..17 : <оператор1>;

6..9, 18, 20 : <оператор2>;

19 : <оператор3>

else <оператор4>;

end;

Якщо значення цілочисельної змінної f буде від 0 до 5 або від 10 до 17, то виконується <оператор1>.

Якщо значення f буде від 6 до 9 або 18 або 20, то виконується <оператор2>.

Якщо значення f буде 19, то виконується <оператор3>.

Якщо f приймає якесь інше значення, то виконується <оператор4>.

Приклад 1. Скласти програму для обчислення ХР, де Х - дійсне число, р – ціле (р£5).

Program EX_2;

VAR

XP,X : real;

P : integer;

Begin

WRITELN ( ‘ПРОГРАМА ВИКОНУЄ ОБЧИСЛЕННЯ ХР,ДО Х5’ );

WRITELN ( ‘ВВЕДІТЬ Х: ‘);

READ (X);

WRITELN ( ‘ВВЕДІТЬ ПОКАЗНИК СТЕПЕНІ Р’ );

READ (P);

CASE P OF

1: XP:=X;

2: XP:=SQR;

3: XP:=SQR(X)*X;

4: XP:=SQR(SQR(X));

5: XP:=SQR(SQR(X))*X;

ELSE WRITE ( ‘ПОКАЗНИК СТЕПЕНІ ПЕРЕВИЩУЄ 5’ );

END;

WRITELN (‘ОТРИМАНЕ ЗНАЧЕННЯ :‘, XP:10);

END.

Приклад 2. Вивести на екран повідомлення `БУКВА` або `ЦИФРА` в залежності від введеного символу.

Var

C: char;

Begin

WriteLn( ‘Введіть символ ’ );

ReadLn (C);

CASE C OF

‘A’..’Z’, ‘a’..’z’ :WRITELN ( ‘БУКВА’ );

‘0’..’9’ : WRITELN ( ‘ЦИФРА’ );

END;

End.

Складений оператор

Правила запису операторів мови Паскаль говорять, що після ключових слів then, else, do або в кожній гілці оператору case може бути виконаний тільки один програмний оператор.

Якщо при деяких умовах виникає необхідність виконувати послідовність з декількох операторів то їх об’єднують в один складений оператор.

Складений оператор – це група операторів, що об’єднані операторними дужками. Роль операторних дужок виконують BEGIN та END.

Н априклад, для реалізації схеми алгоритму на рис. 9 необхідно оператор if задати так:

If x>0 then

Begin

A:=sqr(x);

B:=1/x;

End;

Контрольні запитання за темою

  1. Що являє собою лінійний обчислювальний процес?

  2. Що таке математична постановка задачі?

  3. Що таке алгоритм? Які властивості алгоритму ви знаєте? Які позначення використовуються при графічному описі алгоритму?

  4. Що таке розгалужений обчислювальний процес? Як він позначається в схемі алгоритму?

  5. Які оператори мови Паскаль, що реалізують розгалужений процес ви знаєте?

  6. Які правила запису та використання оператору if – else?

  7. Які правила запису та використання оператору case – of?

  8. Для чого у програмах використовується складений оператор?