Вернуться назад Распечатать

Turbo Pascal. While do – цикл з передумовою

Turbo Pascal хоч і не є всесвітньо улюбленим додатком для програмування, але творці, які роблять перші кроки у написанні ПО, починають знайомство саме з цим середовищем. Вона дає поняття про розгалуження, операторів, функцій та процедур, а також багатьох інших речах. Наприклад, при вивченні програміст зіткнеться з циклами в Turbo Pascal: While, For і Repeat.
Turbo Pascal. While do – цикл з передумовою

Поняття циклу та його різновиди

Циклом називають багаторазово повторювані дії. У даної середовищі використовуються: з параметром (For to do); з передумовою (While do); з післяумовою (Repeat until). Перший вид використовується, коли заздалегідь відомо, скільки кроків у вирішенні завдання. Однак існує ряд завдань, коли немає інформації про те, скільки разів будуть повторюватися ті чи інші дії. У такому разі в Pascal цикл While стає незамінним, як, в принципі, і Repeat.


Структура циклу

В чому полягає суть роботи в Pascal While, For і Repeat циклів? У таких конструкцій виділяють заголовок і тіло. У першої складової зазначаються змінні, які будуть «працювати», задаються умови на перевірку істинності, період, до якого тіло буде виконуватися. У другій складової прописуються вирази, які повинні використовуватися в разі виконання умови, тобто True, а не False. Коли ітерація виконується на останньому рядку коду, тоді вона повертається до заголовка, де перевіряється умова. У разі істини операції повторюються, а у випадку невиконання умови, програма «виходить» з циклу та виконує подальші операції.


Таким чином виглядає цикл While. Pascal ABC і такі програми вимагають написання такого коду: While Умова do; Begin; Тіло циклу; End. У разі якщо в тілі циклу буде виконуватись 1 оператор (1 дія), тоді «дужки begin end можна опустити.

Блок-схема циклу

В Turbo Pascal While має наступні особливості: всередині конструкції можна використовувати складні умови; після слова do не повинно бути крапки з комою (це вважається помилкою в Turbo Pascal і Pascal ABC); змінна, константа або вираз, що служить при отриманні відповіді False виходом їх підпрограми, повинні бути обов'язково логічного типу, тобто Boolean. Таким чином виглядає блок-схема даного різновиду циклу. Вона показує черговість виконання дій.

Алгоритм роботи циклу

У найпростіших середовищах програмування, в т. ч. і в Pascal ABC, цикл While діє за наступним принципом: задані ітерації, тобто повторення, будуть проходити стільки разів, поки умова буде істинною (True); як тільки умова не виконується і дає відповідь False (або інакше «Брехня»), оператор виходить з циклу; як тільки це сталося, програма «пішла» в конструкції, що стоять після циклу. Це є істотною відмінністю While від Repeat, тобто циклу з передумовою від постусловия. Дуже важливо передбачити у тілі циклу кінцеве зміна заданої змінної в заголовку While. У будь-якому випадку має колись настати ситуація, що дає значення False. Інакше відбудеться зациклення, і тоді доведеться скористатися додатковими заходами для виходу з компілятора. Такі помилки вважаються грубими і недопустимими.

Як вийти з програми під час зациклення?

Часто трапляється ситуація, коли оператор While Pascal видає зациклення в написаному програмному коді. Що це означає? Ітерація повторюється нескінченну кількість разів, оскільки умова завжди істинно. Наприклад, ось фрагмент програми: While 2>1 do; Write(1). В такому випадку, щоб перервати виконання завдання, достатньо натиснути CTRL + F2. Є ще 2 способи контролювати подібну поведінку програми. Приміром, якщо вписати в код Continue, яке передасть управління на початок циклічної конструкції (тут умова виходу з циклу контролюється, тобто виконання поточної ітерації буде перервано). Тоді управління передається в циклі While попередню перевірку. Оператор Break здатний перервати виконання всього циклу і передати управління наступної ітерації. Тут вихід з конструкції контролюватися не буде. На зображенні показано приклади використання даних операторів.

Рішення завдань

Розглянемо в дії цикл While. Pascal завдання пропонує вирішити найрізноманітніші. Зупинимося поки на найпростіших, щоб зрозуміти принцип роботи. Вирішені завдання в програмі Pascal ABC. Але будуть представлені і зображення класичної середовища Turbo Pascal для порівняння. Завдання 1: дана функція Y=5-X^2/2. Скласти таблицю значень з кроком sh=05 на проміжку[-5;5]. Алгоритм дій: задати для змінної Х початкове значення дорівнює -5 (тобто початок проміжку); обчислювати значення Y, поки змінна x не досягне кінця вказаного відрізка; вивести на екран значення функції та абсциси (Х); збільшити Х на заданий крок. Ось так виглядає код в програмі Pascal ABC.
Як виглядає код в програмі Turbo Pascal. Зображення нижче наочно показує це.
Завдання 2: дано масив А, що складається з цілих додатних і від'ємних чисел. У ньому міститься 10 елементів. Необхідно сформувати матрицю, в якій будуть відображені позитивні елементи масиву А, що мають парний індекс. Відобразити на екрані суму квадратів в числі з нової матриці.
Алгоритм дій: Необхідно написати підпрограму, яка буде «працювати» тільки з елементами масиву А, що мають парний індекс. У циклі значення змінної, що відповідає за парність індексу, буде збільшуватися на 2. Якщо число з парним індексом матриці А відповідає умові х>0 тоді лічильник елементів масиву збільшується на 1. Нинішнє значення змінної-лічильника буде індексом копируемого числа в масиві Ст. Спочатку змінної суми, що відповідає за знаходження суми квадратів натуральних чисел, присвоюється 0. Потім буде виконуватися операція: до попередньої суми додається нове значення квадрата. Не варто лякатися, якщо не всі позитивні числа перейшли з однієї матриці в іншу. Потрібно бути уважними. Багато починаючі програмісти в паніці переписують код. Слід ретельно вивчити умову: позитивні числа, що знаходяться на парних місцях», тобто що мають індекси, кратні 2.
Ручне трасування необхідна для того, щоб переконатися у правильності обчислень. Часом з допомогою цього методу можна виявити помилки, які не попадаються на очі при звичайній перевірці написаного коду.
Якщо провести ручні розрахунки, то можна переконатися, що програма працює правильно. Це, в свою чергу, говорить про те, що алгоритм створення коду вірний, послідовність дій призводить до логічного кінця.