Розробка і реалізація програм з розгалуженим алгоритмом (Лабораторна робота № 2)

Страницы работы

Содержание работы

Лабораторна робота №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 := (–bsqrt(D)) /2/a;

                 Writeln (' Real roots of quadratic equation:');

                 Writeln (' x1 = ', X1);

                 Writeln (' x2 = ', X2);

          end;

end.               

Похожие материалы

Информация о работе