Керівні структури та основні конструкції мов програмування. Керівні структури Visual Basic Керівні структури. Загальні відомості про цикли

Операції та оператори мови програмування Сі. приклади програм.

Керівні структури та основні конструкції мов програмування

Розміщена в пам'яті комп'ютера програма на момент виконання займає певну область пам'яті. У кожний момент часу стан програми характеризується двома типами відомостей:

Станом деяких осередків пам'яті, які ми розуміємо як змінні;

Активною точкою програми, тобто тією командою програми, яка виконується на даний момент.

Отже, можна виділити і два основні класи дій, які можуть виконувати обчислювальна система:

Дії, які виділяють область пам'яті під змінні програми (описи).

Дії, що змінюють точку виконання програми (оператори, інструкції, конструкції).

Різні сукупності дій другого класу називають керуючими структурами.

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

У 60-ті роки стало ясно, що в основі більшості труднощів, які зазнають групи розробки програмного забезпеченнялежало безконтрольне використання передачі управління. Вина була покладена на оператор goto, який дозволяє програмісту передавати управління в програмі за однією з можливих адрес у дуже широкому діапазоні. Поняття так званого структурного програмування стало майже синонімічним «виключенням оператора goto».

Дослідження Бома та Якопіні показало, що програмування можливе і за повної відсутності операторів goto. Зміна стилю програмування на програмування без goto стала для програмістів епохальним девізом. Але лише у роки широкі кола професійних програмістів почали приймати структурне програмування всерйоз. Результати виявилися вражаючими, оскільки групи розробки програмного забезпечення повідомляли про зменшення часу розробки, частішу поставку систем у термін та завершення проектів у рамках бюджету. Ключом до успіху є те, що програми, створені на основі методів структурного програмування, більш зрозумілі, їх простіше налагоджувати і модифікувати і, найголовніше, ймовірніше, що вони написані без помилок.
Робота Бома та Якопіні в 1966 році показала, що всі програми можуть бути написані з використанням всього трьох керуючих структур, а саме: послідовної структури, структури вибору та структури повторення. Цей результат встановлений Бомом і Якопіні у 1966 р. шляхом доказу того, що будь-яку програму можна перетворити на еквівалентну, що складається лише з цих структур та їх комбінацій. При цьому послідовна структура, по суті, є вбудованою в мову С. Якщо не зазначено інакше, комп'ютер автоматично виконує оператори один за одним у порядку їх запису.

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

До керуючих структур відносяться:

· Структура слідування;

· Структура розгалуження;

>> Керівні структури. Загальні відомостіпро цикли

Навчальні курси:

Керівні структури. Загальні відомості про цикли

Керівні структури

Загальні відомості про цикли

Цикли – це повторення операцій до тих пір, поки вірна певна логічна умова. Наприклад, задамо умовою циклу, що певна змінна а менше 10.

Цикл буде виконуватися доти (тобто ув'язнені в нього оператори виконуватимуться стільки разів), поки ця умова не стане правильною.

Є три види циклів: for, do...while, while. Розглянемо, наприклад, конструкцію циклу for.

for (Ініціалізація змінної; Умова; Зміна змінної після кожного виконання блоку операторів циклу)
{
тіло циклу
}

Розглянемо приклад використання циклу for (листинг 3.1).

Лістинг 3.1.
Приклад використання циклу for

Ця програма виведе на екран десять зірочок на одному рядку. Необов'язково ініціалізувати змінну-лічильник у циклі (змінною-лічильником називається така змінна, від якої залежить кількість виконань тіла циклу). Розглянемо приклад програми без оголошення змінної-лічильника у циклі (листинг 3.2).

Лістинг 3.2.
Приклад програми без оголошення змінної-лічильника у циклі

Можна використовувати не одну змінну-лічильник, а кілька. Розглянемо приклад подібної програми, поданий у лістингу 3.3.

Лістинг 3.3.
Приклад використання кількох змінних-лічильників

Розглянемо цикл while. У цьому циклі як параметр вказується будь-яка умова. Умову перевіряють перед виконанням циклу. Схема циклу while має наступний вигляд.

while (умова)
{
тіло циклу
}

Розглянемо приклад програми, яка використовує цикл while (листинг 3.4).

Лістинг 3.4.
Приклад використання циклу while

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

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

Приклад хибної програми.

Розглянемо тепер цикл do...while.
Він дуже схожий із циклом while і відрізняється лише тим, що перевіряє умову не до чергового виконання циклу, а після виконання. Схема циклу do...while наведена нижче.

Найпростіша структура - дотримання. Її можна уявити так:

Модулі "а" і "в" можуть містити як один оператор, так і будь-яку кількість наступних один за одним структур, у т.ч. та розглянутих далі.

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

Структури ЯКЩО-ІНАЧЕ бувають вкладені одна в одну, наприклад, в такий спосіб.

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

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

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

При розробці алгоритмів часто виникає вкрай важливість повторення будь-якої операції або групи операцій. Для зображення таких фрагментів алгоритму передбачені спеціальні структури – цикли. Вони бувають трьох типів: цикл-поки, цикл-до і цикл з лічильником. Робота циклу-поки зображується наступною блок-схемою.

Перед першим виконанням блоку операторів, який прийнято називати тілом циклу, перевіряється умова "Р" і, якщо воно істинно, тіло циклу виконується, і управління повертається на початок циклу. Далі знову перевіряється умова, і так доти, поки умова циклу стане помилковим. І тут виконання циклу припиняється. Він виконується доти, доки умова виконується.

Цикл-до організовано інакше.

Перевірка істинності умови циклу проводиться після виконання тіла циклу, і вихід із нього здійснюється за умови істинності умови. Τᴀᴋᴎᴎᴩᴀᴈᴏᴍ, тіло циклу виконується завжди один раз на відміну від циклу-поки, що при невиконанні умови циклу не виконується жодного разу.

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

З неї видно, що цей цикл є окремим випадком циклу-поки, Але оскільки даний випадок зустрічається часто, то в мовах програмування, зокрема, VBA, для опису циклу з лічильником введений спеціальний оператор.
Розміщено на реф.
Тому ми й виділили для цього циклу спеціальну структуру.

Як приклад розглянемо блок-схему знаходження максимального елемента таблиці з N чисел.

Тут Мах – максимальне число, i – номер числа у таблиці чисел X, N – розмір таблиці. Блок-схема містить наступні структурні конструкції: слідування, цикл-поки, який виконується до тих пір, поки номер перевіряється менше або дорівнює розміру таблиці, і розвилку, в якій вибирається шлях, що містить привласнення поточного числа з таблиці змінної Мах, в тому випадку , якщо ця змінна менше поточного числа.

Основні керуючі структури - поняття та види. Класифікація та особливості категорії "Основні керуючі структури" 2017, 2018.

^ Програмування операторів умовного переходу if-еlsе Програмування операторів вибору switch i»- Програмування операторів циклу while, do-while та for Мова асемблера - мова машинних команд. Він підтримує лише базові механізми організації програм. У ньому відсутні керуючі конструкції, які є природними для мов високого рівня. Мова йдепро підтримку конструкцій типу операторів вибору, організації циклів тощо. У минулому розділі ми започаткували обговорення цих питань, розглянувши принципи організації циклів у програмах на асемблері. Мета цієї глави - розробити шаблони керуючих конструкцій на асемблері, аналогічні до типових операторів мови високого рівня. Вчинимо просто - відкриємо будь-який підручник з мови С або C++, складемо список наведених у ньому керуючих операторів і покажемо способи їх реалізації на асемблері. Типовий список буде наступним: оператори вибору: ? умовний оператор if-else; ? перемикач switch; Ш оператори циклу: П цикл із передумовою while; П цикл з умовою do-while; Пітераційний цикл for; ^ оператори continue та break.

Ще за темою Розділ 11 Програмування типових керуючих структур:

  1. Глава 2 Негативне та позитивне програмування
оператори if, if-else і switch, є найважливішими засобами управління виконанням програми мовою Сі. Вони мають використовуватися для реалізації загальної структури програми. Три оператори, що розглядаються нижче, зазвичай розглядаються рідше, оскільки занадто часто їх використання погіршує читаність програми, збільшує ймовірність помилок і ускладнює її модифікацію. Ніклаус Вірт дав визначення структурного програмування як програмування без goto .

Оператор break

Оператор break використовується для виходу з оператора while, do, for, switch, що безпосередньо його містить. Управління передається на оператор, що йде за оператором, з якого здійснено вихід. Оператор break має форму

while((ch=getchar()) != EOF) /* читається символ ch=getchar(). Якщо вона не збігається з EOF, виконується тіло оператора while */ ( if(ch=="\n") break; putchar(ch); )

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

Оператор continue

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

while((ch=getchar()) != EOF) /* читається символ ch=getchar(). Якщо вона не збігається з EOF, виконується тіло оператора while */ ( if(ch=="\n") continue; putchar(ch); )

У версії з оператором continue просто пропускаються символи "новий рядок", а вихід із циклу відбувається лише коли читається ознака EOF .

Оператор goto

Оператор goto призначений для безумовної передачі керування до оператора із зазначеною міткою. Він має таку форму:

goto мітка;

Керніган та Рітчі вважають оператор goto "надзвичайно поганим" засобом і пропонують застосовувати його якомога рідше або не застосовувати зовсім. Наведемо приклад запису оператора:

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

part1: printf("точка переходу\n");

Якщо без операторів goto, break, continue, return ніяк не обійтися, то при використанні goto переходьте вперед за кодом, а не назад.

Оператор break краще не використовувати для передчасного виходу із циклу, його корисно використовувати всередині оператора switch.

Оператор continue небажано використовуватиме модифікації логіки циклів.

Чому небажано використовувати функції з багатьма операторами return. Один із принципів структурного програмування полягає в тому, що програма повинна мати одну точку входу та одну точку виходу. Функції з багатьма операторами return складніші для читання, ніж ті, які мають лише один оператор return в кінці тіла функції.