Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вкладені цикли

Цикли

Розвилка

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

Приклад 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. Кінець

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

Можливі випадки, коли усередині тіла циклу необхідно повторювати деяку послідовність операторів, тобто організувати внутрішній цикл. Така структура отримала назву циклу в циклі або вкладених циклів. Глибина вкладення циклів (тобто кількість вкладених один в одного циклів) може бути різною.

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

Приклад вкладених циклів «для»

Обчислити суму елементів заданої матриці А(5,3).

МатрицяА   S:= 0; пцдляi от1 до5 пцдляj от1 до3 S:=S+A[i,j] кц кц

Приклад вкладених циклів «поки»

Обчислити добуток тих елементів заданої матриці A(10,10), які розташовані на перетині парних рядків і парних стовпців.

  i:=2; P:=1 пцпокаi <= 10 j:=2 пцпокаj <= 10 P:=P*A[i,j] j:=j+2 кц i:=i+2 кц
<== предыдущая лекция | следующая лекция ==>
Лінійні алгоритми | Рівень мови програмування
Поделиться с друзьями:


Дата добавления: 2013-12-12; Просмотров: 609; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.