Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
31.01.2021
Размер:
20.98 Кб
Скачать

Інформатика — Теорія — Алгоритмізація на прикладах    Автори

|

Контакти

|

Підсистема допомоги

|

Методичні вказівки

|

Анотація

|

Назад

   ІнформатикаОснови алгоритмізації : Алгоритмізація на прикладахЗміст курсу

Вступ

Теорія

Алгоритми та їх властивості

Лексикографічний або словеснокроковий спосіб запису алгоритму

Блок-схеми алгоритму

Алгоритмізація на прикладах

Практика

Запитання та завдання

Версія для друку

  Алгоритмізація на прикладах      В цьому розділі наведемо приклади алгоритмізації різних програм та деяких стандартних методів вирішення задач.

Приклад 4. Ввести X і підрахувати значення sіn X за формулою

.

Як правило, на верхньому рівні деталізації алгоритм має вигляд послідовності операторів.

Початок

     Ввести X;

     Підрахувати значення sіnХ;

     Вивести значення sіnЧ на екран.

Кінець

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

     Залишається уточнити, яким чином можна обчислити наступний доданок. Якщо придивитися на формулу в умові завдання, то можна побачити, що кожен наступний доданок виходить із попереднього шляхом множення його на (-X*X) і розподілу на (і-1)*і, де і - число, що стоїть під знаком факторіала в знаменнику доданка. Для стислості назвемо його номером доданка, хоча тоді доданки будуть нумеруватися тільки непарними числами. З урахуванням такої нумерації доданків уточнимо останній алгоритм.

Початок

     Ввести X;

     Очистить змінну sіn = 0;

     Одержати перший доданок pіece = X;

     Встановити номер першого і = 1;

     Поки pіece > 0.0001 повторювати

     Початок

          Додати черговий доданок до суми sіn = sіn+pіece;

          Визначити номер наступного, що складає і = і+2;

          Обчислити наступний доданок pіece = pіece * (-X*X) / ((і-1)*i);

     Кінець

     Вивести суму sіn на екран;

Кінець

Приклад 5. Алгоритм підрахунку кількості простих чисел до 1000.

     Простим числом будемо називати число, яке поділяється з остатком, який дорівнює 0, тільки на себе і 1. Будемо по черзі брати всі числа від 2 до 1000, випробовувати їх "на простоту" і вважати ті, що пройшли іспит. У першому наближенні алгоритм можна записати так.

Початок

     Установити значення першого числа, n = 2;

     Установити початкове значення лічильника, count = 0;

     Поки n <=1000 повторювати

          Якщо число n - просте, то

          збільшити лічильник, count = count + 1;

     Вивести на екран значення лічильника count.

Кінець

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

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

Початок

     Установити значення першого числа, n = 2;

     Установити початкове значення лічильника, count = 0;

     Поки n <=1000 повторювати

     Початок

          Установити початкове значення дільника, d = 2;

          Поки залишок від розподілу n на d не дорівнює 0 повторювати

          Збільшити d на 1, d = d + 1;

          Якщо d = n, то число n - просте: sіmple = 1 інакше sіmple = 0

          Змінити значення лічильника, count = count + sіmple;

     Кінець

     Вивести на екран значення count;

Кінець

Приклад 6. Задан масив M з n елементів: M[0], M[1],..., M[n-1]. Знайти набільше число в масиві і його номер.

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

Початок

     Помістити перше число M[0] у змінну Max;

     Установити лічильник в 1, count = 1;

     Поки count <= N повторювати

     Початок

          Якщо M[count] > Max, то Max = M[count];

          Збільшити на 1 лічильник чисел, count = count + 1;

     Кінець

     Вивести на екран значення Max.

Кінець

     Спробуємо зберігати в змінній Max не найбільше значення, а номер найбільшого елемента масиву. Якщо в Max утримується номер елемента, то значення елемента завжди доступно у вигляді M[Max].

Початок

     Помістити 0 у змінну Max, Max = 0;

     Установити лічильник в 1, count = 1;

     Поки count <= N повторювати

     Початок

          Якщо M[count] > M[Max], то Max = count;

          Збільшити на 1 лічильник чисел, count = count + 1;

     Кінець

     Вивести значення найбільшого елемента M[Max] і його номер Max;

Кінець

     Сортування - це упорядкування масиву за будь-якою ознакою. Існують різні методи сортування , серед них обмінне сортування (метод «пухирця») - найбільш простий, але і найменш ефективний метод сортування, його доцільно застосовувати для сортування невеликих масивів. Простота алгоритму і програмної реалізації роблять метод досить популярним. Метод «пухирця» полягає в послідовному порівнянні пар чисел і перестановці їх за необхідності. В процесі упорядкування вихідний масив проглядається зліва направо. Наприклад, на першому кроці сортування за зростанням, якщо елементи задовольняють умові: Х| > Хі+І, то вони міняються місцями. При цьому і-й елемент (крім першого й останнього) бере участь у двох порівняннях. Таким чином, найбільший елемент масиву буде переміщатися («спливати» як пухирець) до правого кінця масиву і виявиться останнім.

Приклад 7. Сортування масиву методом простої вставки.

.Рисунок 5 - Метод сортування простої вставки

На рис.5 наведено алгоритм сортування методом вставки. Алгоритм складається з наступних кроків.

1. Вважають, що в масиві j-1 елементів вже відсортовано. Черговий елемент Rj зрівнюють з Rj-1 і далі до Ro по черзі, поки не буде визначено два числа, міх якими треба вставити елемент Rj. Під час пошуку елементи,які більнш ніж Rj, зсовують на одну позицію вліво

Ri+1=Ri. При цьму припускається, що перший елемент - відсортований масив.

2. Зовнішній цикл забезпечує вибір чергового елемента масиву;

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

     Розглянемо також алгоритм метода сортування Шелла.

Рисунок 6 - Метод сортування Шелла

     В основі цього методу лежить впорядкування в першу чергу пар віддалених елементів, починаючи з пар, в яких відстань міх елементами дорівнює деякому d0 позицій, потім аналізують пари з відстанню d1, потім d2 і т.д. поки d не стане рівним 1.Так, при сортуванні масиву з 16 елементів відстань d0 можна вибрати рівною 8,тоді 4, 2, 1. В загальному випадку такі послідовністі можуть бути різними. Частіше за інші використовують послідовністі відстаней di+1=di/2 або di+1=di/3.Є можливість теоретично розрахувати такі послідовністі та оцінити ефективність сортування в залежності від довжини масиву.В схемі алгоритму на рисунку послідовність обчислюється:

- для конкретного N визначають найменше число d ,яке являється ступенем 2 більше за N;

- потім обчислюється відстань d між елементами на кожному етапі сортування d=[(d-1)/2]. Квадратні дужки показують, що береться ціла частина від частки.

 © 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.uaРозроблено за допомогою LERSUS

Соседние файлы в папке content