Цикли в мові C

Інкремент та декремент

Перш, ніж вивчати цикли, слід познайомитися з часто використовуваним мовою C способом збільшення/зменшення значень змінних на одиницю. Звичайно, C працюють такі форми зміни значень як, наприклад, a += 1 або a -= 1. Однак частіше використовують операції інкрементування (оператор інкременту "++") і декрементування (оператор декремента "--"): i++ або + +i, i-- або --i. Внаслідок цих операцій змінні збільшуються або зменшуються на одиницю.

Запам'ятайте, коли ви бачите вирази типу ++i або i++, то в результаті виконання значення i змінюється. Не треба робити так: i = ++i. Це зовсім зайве.

Коли знак інкременту чи декременту стоїть перед змінною, то маємо префіксна форма операції (++i, --i), а коли після змінної, то постфіксна форма (i++, i--). Коли ці вирази не беруть участь у побудові складніших виразів, то між префіксною та постфіксною формами жодної різниці немає: що i++, що ++i — не має значення, в результаті ми отримаємо значення i на одиницю більше.

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

, виведе на екрані:

Пояснюється такий результат так:

значення змінної a було збільшено на одиницю, після чого це значення було надано змінної c;

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

Ще один приклад:

На екрані буде виведено:

Це результат логічних виразів, де 0 означає брехню, а 1 – істину. У разі, коли x порівнюється з нулем, його значення ще збільшено, і коли порівнюється у, його значення вже більше нуля.

Застосовувати оператори інкременту та декременту можна також до змінних речовинного типу.

Цикл while

Цикл while у мові програмування C працює так само, як і в інших мовах програмування. За аналогією з умовним виразом в інструкції if, умовний вираз при while полягає в круглі дужки. Якщо тіло циклу включає кілька виразів точкою, що розділяються з комою, то все тіло полягає у фігурні дужки.

Завдання

  1. Встановіть змінну star значення 0. Поки значення star не досягне 55 виводьте на екран у рядок по одній зірочці (*).
  2. За допомогою циклу while запрограмуйте виведення на екран цифрових кодів та значень таблиці символів ASCII від 31 до 127 включно. При цьому після кожного десятого символу перейдіть на новий рядок. (Підказка: щоб переходити на новий рядок, у циклі while треба використовувати інструкцію if , за умови якої залишок 1 від розподілу на 10 порівнюється з нулем.)
    цикли
  3. Використовуючи зовнішній та вкладений цикли while організуйте виведення таблиці множення на екран.
    мові

1 Операція знаходження залишку від поділу у мові C позначається знаком відсотка (%).

Цикл do-while

Цикл do-while відрізняється від while лише тим, що його тіло буде виконане хоча б один раз, незалежно від умови виконання циклу. Синтаксис циклу do-while можна описати так (фігурні дужки можна опустити, якщо вираз лише один):

Цей цикл називають циклом зпостумовою. Його використовують набагато рідше за звичайне while. У принципі, майже завжди можна обійтися без нього, але в певних ситуаціях його використання спрощує код. Допустимо, потрібно вивести на екран окремі цифри числа. Будь-яке число складається з однієї цифри, навіть число 0. Можна вирішити це завдання з використанням циклу while:

Але в цьому випадку, якщо a дорівнює 0, цикл не виконається жодного разу. Довелося б перед циклом використовувати інструкцію if, в якій порівнювати змінну з 0. Використання ж циклу do-while вирішує цю проблему, тому що його тіло один раз виконається навіть за нульового значення змінної:

Представимо синтаксис заголовка циклу for мови програмування C так:

for (частина1; частина2; частина3)

Заголовок циклу for включає три частини, розділених крапкою з комою; причому кожна частина то, можливо складної, тобто. складатися з кількох виразів, розділених простою комою. У першій частині зазвичай вказуються змінні та часто їх початкові значення; у другій – за допомогою логічного вираження задаються умови, за яких виконується тіло циклу; в третю частину містяться вирази, які виконуються в кінці кожної ітерації циклу (найчастіше тут змінюється значення змінної, заданої в першій частині заголовка).

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

Завдання

Напишіть програму з використанням циклу for, що виводить на екран таблицю множення (Підказка: як і у випадку з while слід використовувати два цикли — зовнішній та вкладений.)

Оператори break і continue

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

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

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

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