Цикли, робота з pascal, статті, програмування - програмування c, delphi, c #

У минулому випуску ми освоїли розширення конструкції if. then. else, а саме процедуру goto.

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

Ми по порядку і своєчасно будемо їх все вивчати. Сьогодні продовжуємо вивчення конструкцій, а саме нової конструкції - циклів. Цикли - це невід'ємна частина програми. Насправді ця конструкція проста, але багато іноді не розуміють самого її принципу - навіщо це і як використовується? Имено тому я спочатку хочу розповісти про те, що таке цикли і коли вони можуть знадобитися.

Почнемо з прикладу. Давайте уявимо, що нам було потрібно написати програму, яка буде виводити 10 раз рядок, введену користувачем. Я перепрошую за такий примітивний приклад, але на його роботі найкраще зрозуміти дану тему.

Отже, рішення програми очевидно:

  1. Ми читаємо в змінну рядок.
  • Десять разів виводимо її на екран.

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

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

    Щоб продемонструвати, як працює цей цикл, давайте напишемо програму, наведену вище:

    Подивіться уважно на програму. Бачите слово FOR. Це і є початок циклу. Обясняется його синтаксис:

    1. Цикл починається словом FOR.

  • Після нього йде присвоювання який-небудь змінної початкового значення. Саме починаючи з цього значення і буде відбуватися відлік.
  • Далі йде слово TO.
  • Після цього вказується звичайно значення наведеної змінної. До цього значення буде проводитися відлік.
  • В кінці заголовка циклу ставитися слово do.
  • Після цього йдуть всі дії, які повинні бути зациклені. Тут діє теж правило, що і в конструкції if. then. else - про вкладеність. Тобто якщо після слова do має бути кілька дій, а не одне, то всі вони полягають в конструкцію begin. end; Пам'ятайте про це, інакше цикли неможливо будуть правильно працювати - виконуватися буде тільки перша дія, а решта будуть порушені тільки після виконання циклу.
  • Це і все, що потрібно знати про синтаксис циклу FOR. Тепер давайте напишемо програму, яка буде використовувати його - для закріплення нового матеріалу. Тож почнемо.

    Необхідно написати програму, яка буде збільшувати значення введеної змінної на 10, розкриваючи при це кожен свій крок, тобто її висновок повинен бути таким (для прикладу візьмемо, що ми ввели число 7):

    Рішення я обяснять по кроках не буду (ні до чого це, вірно?), А відразу наведу текст програми:

    Зверніть увагу на рядок Writeln (I, '.', A, '+', I, '=', A + I); - тут я наводжу її більшим шрифтом, щоб було легше розібратися. Вона добре демонструє множинність параметрів процедури Writeln. чи не так? Крім того, зверніть увагу, що я використовую процедуру Writeln. а не Write - для того, щоб переносити рядок після кожного виведення. Таким чином рядки будуть виводитися в стовпчик.

    Зауважте також, що я використовую в циклі тип Byte. Справа в тому, що Byte займає менше пам'яті, ніж Integer або Word. тим самим програма ставати оптимізувати. Адже ми заздалегідь знаємо, що в циклі значення НЕ перевалить через 10, вірно? Навіщо ж використовувати типи, здатні зберігати значення набагато більші?

    Ну а тепер продовжую тему циклів. Є ще деякі речі, які вам необхідно знасть про циклі For. Зокрема, це межі діапазону і дію, вироблене в циклі. Що я маю на увазі? Ось дивіться, наприклад ми пишемо:

    For I: = 1 to 10 do

    Що при цьому буде відбувається зі змінною i?

    1. Вона буде прирівняна до одиниці;

    2. Вона буде збільшуватися на одиницю з кожним новим початком циклу (це називається итерацией - новий прохід;), поки не стане дорівнює 10.

    Звернули увагу, вона буде збільшуватися? А ось якщо написати так:

    For I: = 10 to 1 do

    Мінлива адже повинна зменшуватися? Судячи зі значень - так. Але якщо так написати в програмі, цикл не буде виконаний. Паскаль не видасть помилки, програма піде на виконання, але цикл працювати не буде. Чому? Просто в циклі For при кожній новій ітерації (проході) Паcкаль збільшує на 1 змінну і перевіряє - вона більше заданого кінцевого значення? Якщо так, цикл завершено. Ось і тут - змінна I збільшується на 1, вона тепер дорівнює 11, тобто більше кінцевого значення (більше 1), цикл завершено. Тобто він порожній - працювати не буде. Початкове значення відразу ж ставати більше кінцевого.

    Однак, іноді необхідно, щоб змінна в циклі зменшувалася. Наприклад, модифікований варіант попередньої програми - зменшувати на 10 значення введеної змінної. Як же бути? Саме для цих цілей і існує розширення синтаксису циклу FOR. яке дозволяє зменшувати значення, тобто задавати "від більшого до меншого".

    Для того, щоб використовувати цю можливість, Вам необхідно замінити службове слово to словом downto. тобто оформлення стане таким:

    For I: = 10 downto 1 do

    Просто, вірно? Але тим не менше робота циклу зовсім змінюється. Давайте тепер модифікуємо нашу програму, тобто зробимо, щоб вона зменшувалася на 10. Тільки зменшувати будемо з 10 до 1, а не з 1 до 10, як ми робили раніше. Зробимо ще одне, щоб удосконалити програму: так як ми буде віднімати відразу 10 з введеного числа, не хотілося б, щоб воно було менше 10. Навіщо, скажете ви? Нехай буде. Та ні, візьмемо це просто як умова, щоб хоч якось розширити інтерфейс. Отже, ми будемо перевіряти введене число на більше / менше нуля, після чого віднімати з нього числа від 10 до 1. Приклад програми:

    От і все. Розберіться в цій програмі, тут вам все знайоме.

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

    Програмування для чайників.

    Схожі статті