1-1 Программирование С++ / html / modules / 006 / content / content4
.htmlІнформатика — Теорія — Алгоритмізація на прикладах Автори
|
Контакти
|
Підсистема допомоги
|
Методичні вказівки
|
Анотація
|
Назад
ІнформатикаОснови алгоритмізації : Алгоритмізація на прикладахЗміст курсу
Вступ
Теорія
Алгоритми та їх властивості
Лексикографічний або словеснокроковий спосіб запису алгоритму
Блок-схеми алгоритму
Алгоритмізація на прикладах
Практика
Запитання та завдання
Версія для друку
Алгоритмізація на прикладах В цьому розділі наведемо приклади алгоритмізації різних програм та деяких стандартних методів вирішення задач.
Приклад 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