Кількість повторень циклу по змінній

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

Будь-яка програма являє собою структуру, побудовану з трьох типів базових конструкцій:

- послідовне виконання - одноразове виконання операцій в тому порядку, в якому вони записані в тексті програми;

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

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

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

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

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

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

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

Блок-схема будується з обмеженого набору блоків. а також стрілок, що з'єднують їх в порядку виконання. Техніка малювання спрощується при використанні комп'ютерних засобів, зокрема, пакета MS VISIO або SMART DRAW 5. Ці пакети дозволяють створювати блок-схеми з готових блоків. Блоки легко масштабуються, доповнюються написами, з'єднуються лініями. При переміщенні блоків лінії слідують за блоками.

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

1) Блоки початку і кінця кожної програмної одиниці.

2) Блоки, що складаються з простих операторів, мають один вхід і один вихід

Блок-схема програми з лінійною структурою має наступний вигляд:

Блок «Дії» може включати в себе кілька простих операторів.

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

Оператори, що складаються з одного рядка, називаються простими операторами. Оператори, які включають в себе блоки, називаються складовими операторами

Необов'язкове ім'я може бути призначено будь-якого складеному оператору і має бути правильним унікальним ім'ям Фортрана, складеним за його правилами. Якщо ім'я оператора призначено, воно обов'язково повинно бути вказано в його завершальній рядку. Приклади використання імен будуть приведені при описі операторів.

Основні види керуючих операторів - оператори переходу і оператори циклів.

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

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

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

Тут дія - виконуваний простий оператор, який буде виконаний за умови істинності логічного виразу.

Блок-схема оператора If.

Оператор застосовується, якщо при виконанні умови потрібно виконати декілька операторів.

Ключове слово then пишеться в тому ж рядку, що і логічний вираз.

Зображення даного оператора на блок-схемі:

Блок дій може містити довільне число будь-яких виконуваних операторів (простих і складових), крім оператора End. Цей блок буде виконуватися, якщо логічний вираз істинно, і не буде виконуватися, якщо воно помилкове.

Обмін значеннями змінних x і y при x

Зверніть увагу на використання імені оператора.

Якщо необхідно виконати альтернативні дії, конструкція If. then може бути розширена блокомelse:

Увага . Ключове слово then пишеться в тому ж рядку, що і логічний вираз, ключове слово else - в окремому рядку. Якщо немає «блоку false», то і else краще не писати.

Зображення даного оператора на блок-схемі:

У такій конструкції при виконанні умови, заданої логічним виразом. виконується Блок true. якщо умова не виконується - Блок false.

Оператор If з трьома і більше блоками

У найбільш повній формі оператор If. then. else може містити кілька блоків альтернативних дій, що додаються конструкцією elseif. then:

Блок default. виконується при невиконанні всіх умов

Ключове слово Elseif, логічне вираз і словоthen пишуться в одному рядку. Це один складений оператор, і завершальний Endif теж тільки один.

Гілок Elseif. then в операторі може бути кілька, гілка Else може бути відсутнім.

Зображення такої конструкції на блок-схемі:

Оператор виконується наступним чином: послідовно перевіряються логічні вирази в дужках, поки не буде знайдено справжнє. Тоді перевірка припиниться, і буде виконаний відповідний блок, а потім управління буде передано операторуEndif. Якщо серед усіх умов немає жодного справжнього, виконається Блок default. Якщо ж в цій ситуації гілка Else відсутня, не буде виконано жодних дій.

Це найбільш загальна форма структурного оператора If. Очевидно, що оператор If. then. else з двома блоками є її окремим випадком і може бути отриманий видаленням гілок Elseif. Якщо, крім того, видалити гілку Else. то в операторі If залишиться тільки один блок.

Спробуємо реалізувати ту ж конструкцію, використовуючи вбудовані операториIf

Легко переконатися в лаконічності і наочності багатоблокових оператораIf.

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

Якщо в програмі кілька операторовIf. можна дати ім'я кожному з них. Ім'я оператора є необов'язковим, але якщо воно вказане в його заголовку, то стає обов'язковим для завершальній рядки оператора. Застосування імен операторів А1, А2, А3 також продемонстровано на прикладі 2.

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

У загальному вигляді конструкція виглядає так:

Блок-схема оператора select:

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

Приклад (змінної Range присвоюється значення в залежності від значення абсолютної величини змінної Number):

Integer. Number, Range

Select case (abs (Number))

Безумовний перехід GoTo

Оператор безумовного переходу вважається застарілим. Зловживання їм заплутує структуру програми і призводить до важко що виявляється помилок. Сучасні мови програмування (в тому числі Фортран) дозволяють в більшості випадків обходитися без нього.

Оператор має вигляд:

Тут мітка - ціле число без знака, що складається не більше, ніж з 5 цифр.

Попередження. Якщо Ви все-таки вирішите використовувати операторGoTo. то майте на увазі, що оператор без мітки, наступний за GoTo, ніколи не отримає управління.

У деяких випадках необхідно завершити виконання програми, не чекаючи фізичного кінця програми, наприклад, в разі виявлення явної помилки.

Оператор Stop має вигляд:

При виконанні цього оператора виконання програми припиняється, на екран монітора виводиться символьний рядок, записана в операторі. Рядок в операторі Stop може бути відсутнім.

Приклад. Використання оператора Stop щоб уникнути поділу на 0 або дуже маленьке число.

Ділення на 0 не відбудеться, тому що додаток закриється раніше.

Оператор Stop завжди перериває роботу програми, незалежно від того, використовується він в головній програмі або в підпрограмі.

Оператор End служить для компілятора ознакою завершення тексту програми або підпрограми. Тому оператор End завжди повинен бути останнім оператором в тексті програми або підпрограми.

Оператор Return, на відміну від Stop, використовується тільки в підпрограма. Його виконання завершує роботу підпрограми і передає управління в зухвалу програму.

Циклом називається багаторазове виконання однієї і тієї ж послідовності операцій до тих пір, поки виконується деяка задана умова (умова продовження циклу). Один прохід циклу називається итерацией.

Зображення циклу на блок-схемі:

Для організації циклів в Фортране використовується оператор циклу Do.

Загальне уявлення всіх різновидів конструкцііDo:

[Ім'я:] заголовок циклу

Є три різновиди циклів в Фортране:

- цикл по змінній (з фіксованим числом повторень).

- Цикл Do while (цикл за умовою).

- нескінченний цикл.

Загальні правила для всіх різновидів оператора циклу:

2) Тіло циклу може містити вкладені прості і складові оператори, оператори циклу можуть бути вкладеними в інші блоки. Перетин блоків не дозволяється: блок, що почався всередині іншого блоку, в цьому ж зовнішньому блоці повинен і закінчитися. Дотримання цього правила спрощується, якщо програма написана «драбинкою».

Приклад. У тілі циклу міститься оператор If.

Do k = 1,10 If (k<5) then Write(*,*) ‘<5’ Else Enddo Write(*,*) ‘>= 5 'endif

Do k = 1,10 If (k<5) then Write(*,*) ‘<5’ Else Write(*,*) ‘>= 5 'endif Enddo

3) У циклах, і тільки в них. можна використовувати оператори Exit і Cycle. змінюють порядок проходження операторів.

4) Як будь-якому складеному оператору, циклу можна давати ім'я. Ім'я є необов'язковим, але якщо воно вказане в заголовку циклу, то стає обов'язковим для завершального End do.

Оператор Exit припиняє виконання циклу. Управління передається першому виконуваного оператору, безпосередньо наступного за циклом.

У загальному вигляді оператор Exit має атрибут ім'я циклу:

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

Оператор Cycle передає управління на початок циклу. При цьому оператори, розташовані між Cycle іEnd do, не виконуються.

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

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

Приклади на застосування операторовExit і Cycle будуть розглянуті при розгляді операторів циклу.

Цикл по змінної

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

Загальне уявлення оператора циклу по змінній:

[Ім'я:] Doпеременная = початкове значення, кінцеве значення, крок

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

x - ціла або речова змінна, звана змінної циклу.

xn, xk - числові вирази, що задають діапазон зміни x.

step - числове вираження, що задає крок зміни x. Якщо параметр step відсутня, то він приймається рівним 1.

Зображення циклу по змінній на блок-схемі:

Кількість повторень циклу по змінній

Цикл по змінної називають також циклом з фіксованим числом повторень. Кількість повторень розраховується компілятором за формулою:

Увага! З формули видно, що крок зміни змінної циклу step не може дорівнювати 0. Можна отримати повідомлення про помилку виконання «Поділ на 0», навіть якщо в програмі немає жодної операції ділення.

У формулі використані функції:

- Int - функція, що визначає цілу частину свого єдиного аргументу. У цій формулі аргументом функції Int є арифметичний вираз у внутрішніх дужках.

- Max - функція, яка обирає максимальне значення серед своїх аргументів. У цій формулі у функції Max два аргументи: 0 (нуль) і результат обчислення функції Int. Якщо другий аргумент - позитивний, то він і є число повторень циклу, якщо негативний, то kp = 0. і цикл не виконається жодного разу.

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

(Xk - xn + step) / step = (8.7 - 1.25 + 1.1) / 1.1 = 8.55 / 1.1 = 7.77

Int (7.77) = 7; Max (0, 7) = 7; Відповідь: kp = 7

(Xk - xn + step) / step = (-4 - 2 + 0.33) / 0.33 = -5.67 / 0.33 = -17.2

Int (-17.2) = -17; Max (0, -17) = 0; Відповідь: kp = 0

(Xk - xn + step) / step = (3 - 1 - 0.33) / (-0.33) = -0.67 / 0.33 = -2.0

Int (-2.0) = -2; Max (0, -2) = 0; Відповідь: kp = 0

З прикладів видно, що цикл не виконається жодного разу, тобто kp = 0. якщо

Схожі статті