Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритми та структури даних ЗПІ-91-20210115T104612Z-001 / Лекція 2. Способи запису алгоритмів.docx
Скачиваний:
35
Добавлен:
15.01.2021
Размер:
138.41 Кб
Скачать

2.2. Базові конструкції структурного програмування

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

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

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

Послідовністю називається конструкція, що реалізовує послідовне виконання двох або більше операторів (простих або складних).

Розгалуження задає виконання того чи іншого оператора залежно від виконання якої-небудь умови. Реалізується за допомогою операторів if та switch.

Цикл реалізує багатократне виконання операторів. Реалізується за допомогою операторів циклу.

Рис. 2.2. Базові конструкції структурного програмування

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

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

У мовах об’єктно-орієнтованого програмування (C#, Java) ідеї структурного програмування використовуються на найнижчому рівні — при написанні методів класу.

2.3. Прості алгоритми. Обчислення n! і чисел Фібоначчі (нерекурсивні алгоритми)

Розглянемо різні форми запису алгоритмів на прикладі простих задач.

2.3.1. Знаходження факторіала цілого числа

Постановка задачі:

Обчислити факторіал n! де

, де

Приклад. Для n=5, n!=1*2*3*4*5

Словесний опис алгоритму

Крок 1. Оголосити змінні: n – кількість членів ряду (ціле), fact – обчислене значення факторіалу (довге ціле), i – змінна циклу (ціле).

Крок 2. Ввести число членів ряду і призначити його змінній n, призначити fact =1.

Крок 3. Цикл. Починаючи з елементу i=2 до n

fact := fact * i

Крок 4. Вивести результат на консоль

Реалізація алгоритму на мові C#.

static void Main(string[] args)

{

long fact=1;

int n = int.Parse(Console.ReadLine());

for (int i = 2; i <= n; i++)

fact *= i;

Console.WriteLine("fact= " + fact);

Console.ReadKey();

}

2.3.2. Знаходження чисел Фібоначчі

Постановка задачі: Обчислити вказану кількість чисел Фібоначчі.

Обчислення чисел Фібоначчі задається формулами:

F(1)=1,F(2)=1;F(3)=2, F(n+1)=F(n)+F(n-1)

Таким чином, це послідовність чисел, у якій кожне наступне число дорівнює сумі двох попередніх чисел. Назва ряду чисел походить від імені середньовічного математика Леонардо Пізанського (відомого як Фібоначчі).

Приклад:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946

Словесний опис алгоритму

Крок 1. Оголосити змінні:

n - кількість елементів ряду;

a, b - значення двох перших елементів ряду;

c - буферна змінна;

i - лічильник.

Крок 2. Ввести значення n з консолі

Крок 3. Призначити a і b значення 1 і 1 відповідно (це перші числа ряду Фібоначчі). Вивести їх на екран.

Крок 4. Цикл. Починаючи з 3-го елементу до n

- виводити на екран суму a і b

- зберегти значення змінної b в c

- записати в b суму a і b,

- призначити a значення с.

Реалізація алгоритму на мові C#

static void Main(string[] args)

{

int a = 1;

int b = 1;

int c = 0;

Console.WriteLine("Введіть кількість чисел послідовності");

int n = int.Parse(Console.ReadLine());

Console.WriteLine("Перше число = " + a);

Console.WriteLine("Друге число = " + b);

for (int i = 2; i < n; i++)

{

c = a + b;

Console.WriteLine("Наступний член ряду= " + c);

a = b;

b = c;

}

Console.ReadKey();

}