Розвилка
Досить часто та або інша дія має бути виконана залежно від значення логічного виразу, що виступає як умова. У таких випадках використовується розвилка.
Приклад 1. Обчислити значення функції
1. Ввести x. 2. Якщоx_12, B> y:=_x2 3. Якщоx<0, то y:=x4 4. y := x–2 5. Вивестиy 6. Кінець |
При тестуванні алгоритмів з розвилкою необхідно підбирати такі початкові дані, щоб можна було перевірити всі гілки. У приведеному вище прикладі повинно бути принаймні три тестові набори.
Приклад 2. Дано натуральне число n. Якщо число непарне і його подвоєння не приведе до виходу за 32767 (двобайтове ціле число із знаком), подвоїти його, інакше — залишити без зміни.
Щоб задовольнити умові подвоєння, число n має бути непарним і менше 16384.
1. Ввести число n 2. Якщочисло n непарне і меньше 16384, то n:= n* 2 3. Виведення n 4. Кінець |
Розглянутий приклад ілюструє неповну розвилку. Також слід зазначити, тут логічний вираз, що є умовою, містить 2 операнди.
Цикли
Якщо які-небудь оператори необхідно виконати кілька разів, то їх не переписують кожного разу наново, а організовують цикл.
Приклад 1. Підрахувати кількість непарних цифр в записі натурального числа n.
Ідея рішення. Із заданого числа вибирати з молодшого розряду цифру за цифрою до тих пір, поки воно не вичерпається, тобто стане рівним нулю. Кожну непарну цифру враховувати.
1. Ввести число n 2. K := 0 {підготуватилічильник} 3. Якщоn = 0, переход к п. 7 4. Якщоn mod 10 mod 2 = 1, то K := K +1 5. n := n div 10 6. Перехідк п. 3 7. ВивестиK 8. Кінець |
Завдання вирішене двома способами. Зліва рішення оформлене з використанням циклу з передумовою, справа — з постумовою.
Приклад 2. Дана послідовність, загальний член якої визначається формулою
Обчислити при n>2 суму тих її членів, які більше заданого числа e.
При рішенні задачі знаходиться черговий член послідовно і, якщо він більше e, додається до суми.
1. Ввести 2. S := 0 3. A := 1/4 4. n := 3 5. ПорівнятиА з. ЯкщоA>=, перейти доп. 10 6. S := S + A 7. A := (n-1)/(n*n) 8. n := n + 1 9. Перехіддоп. 5 10. ВиведенняS 11. Кінець |
У розглянутих вище прикладах кількість повторень заздалегідь невідома. У першому воно залежить від кількості цифр в записі натурального числа, в другому — від числа e.
У тих же випадках, коли кількість кроків відома з умови завдання, простіше і вигідніше використовувати цикл з параметром.
Приклад 3. Знайти добуток перших к натуральних чисел, кратних трьом.
При складанні алгоритму врахуємо, що перше натуральне число, кратне 3, є трійка, а всі подальші більші попереднього на 3.
1. Введенняk 2. P := 1 {тутнакопичуємдобуток} 3. T := 0 {тутбудутьчисла, кратні3} 4. I := 1 5. ЯкщоI >k, перейтидо п. 10 6. T := T + 3 7. P := P * T 8. I := I + 1 9. Перейти до п. 5 10. Виведення P 11. Кінець |
Інші приклади будуть записані вже на МПВР. У даній же публікації зроблена спроба продемонструвати, що вивчення програмування розумно починати власне з розробки алгоритмів, не акцентуючи спочатку уваги на записі алгоритму на тій або іншій мові програмування. В той же час автор, будучи прихильником структурного підходу до програмування, пропонує дотримуватися цього підходу і при програмуванні на рівні блок-схем.
Дата добавления: 2015-07-22; просмотров: 592;