Лабораторна робота №2
Тема: "Розробка і реалізація програм з розгалуженим алгоритмом"
Завдання:
а) скласти програму для обчислення коренів біквадратного рівняння, що коректно обчислює та виводить на екран комплексно-спряжені корені;
б) скласти програму для обчислення функції логарифма, основа та аргумент якої вводяться з клавіатури. Передбачити реакцію на від’ємні аргументи;
в) скласти програму для обчислення степеня з довільною основою та довільним показником.
Теоретичні відомості:
При розробці програм часто виникає необхідність направляти процес обчислень по одному з кількох можливих шляхів в залежності від істинності певної умови. Наприклад, при вирішенні квадратних рівнянь, якщо дискримінант є невід’ємним, то слід обчислювати дійсні корені, в іншому випадку – комплексно спряжені. Алгоритми такого типу називаються розгалуженими, а їх графічне представлення у вигляді блок-схеми показано на рис. 2.1. Як видно з рис. 2.1, виконання програми починається зі спільної точки (блок 1) та йде по однозначно визначеному шляху (блок 1 – блок 2 – блок 3). В певний момент алгоритм розгалужується, тобто з’являється два можливих шляхи виконання програми (на рис. 2.1 перший шлях визначається віткою, що містить блоки 4 та 7, а другий шлях – блоки 5 та 8). Вибір шляху здійснюється на основі перевірки істинності певної умови. Так в даному прикладі, якщо дискримінант менший нуля, то виконання програми йде по другому шляху (блоки 5, 8), в іншому випадку виконуються блоки 4,6 з першого шляху. Після завершення виконання розгалуженої ділянки алгоритму процес знову об’єднується в єдиний потік. В прикладі після виконання будь якого з шляхів виконується блок 9 (Кінець).
Рис. 2.1. Блок-схема
розгалуженого алгоритму
для розрахунку квадратних рівнянь
В мові Паскаль для реалізації розгалужених алгоритмів застосовується кілька операторів, базовим з яких являється умовний оператор if. Синтаксис цього оператора в загальному вигляді представлено нижче:
if Логічний_Вираз then begin
Послідовність_операторів_1;
end
else begin
Послідовність_операторів_2;
end;
Графічне представлення даного оператора показано на блок-схемі, рис. 2.2.
Рис. 2.2. Блок-схема загального вигляду умовного оператора if
Реалізацію описаної програми для розв’язку квадратного рівняння представлено нижче:
program Quadratic_Equation;
var a, b, c: Real;
D, X1, X2, ReX1, ReX2, ImX1, ImX2: Real;
begin
Writeln ('Please, input parameters a, b and c:');
Readln (a, b, c);
D := sqr(b) – 4*a*c;
if D < 0 then begin
ReX1 := –b/2/a;
ReX2 := –b/2/a;
ImX1 := sqrt(abs(D))/2/a;
ImX2 := –sqrt(abs(D))/2/a;
Writeln ('Complex roots of quadratic equation:');
Writeln (' x1 = ', ReX1, ' + ', ImX1, 'i');
Writeln (' x2 = ', ReX2, ' + ', ImX2, 'i');
end
else begin
X1 := (–b + sqrt(D)) /2/a;
X2 := (–b – sqrt(D)) /2/a;
Writeln (' Real roots of quadratic equation:');
Writeln (' x1 = ', X1);
Writeln (' x2 = ', X2);
end;
end.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.