fy"> Семантика (сенс) циклу for така, що спочатку виконується начальная_інструкція - вона Ініціалізація змінну, яка використовується в циклі. Потім перевіряється умова. Якщо воно істинне, то виконуються інструкції, обчислюється вираз, і управління передається назад в початок циклу for з тією різницею, що начальная_інструкція вже не виконується. Це продовжується до тих пір, поки умова не стане ложно, після чого управління передається следующей_інструкціі. Кожен прохід циклу називається итерацией циклу.
Начальной_інструкціей може бути просто оголошення або ж складний вираз або інструкція.
Цикл for є ітераційної інструкцією, зазвичай використовується з збільшується або зменшується змінної. Наприклад, в наступному коді інструкція for використовується для складання цілих чисел від 1го до 10и:
rez=0; (int i=1; i <= 10; + + i) +=i;
Коли інструкція for починає виконуватися, керуючої змінної i задається початкове значення 1. Потім перевіряється умова продовження циклу i <= 10. Оскільки початкове значення i дорівнює 1, це умова задовольняється, так що оператор тіла інструкції підсумовує до значення змінної rez, рівному 0, значення лічильника i, рівне 1. Потім керуюча змінна i збільшується на одиницю у вираженні + + i і цикл знову починається з перевірки умови його продовження. Оскільки значення i тепер 2, гранична величина не перевищена, так що програма знову виконує тіло циклу. Цей процес триває, поки керуюча змінна i не збільшиться до 11 - це призведе до того, що умова продовження циклу порушиться і повторення припиниться. Виконання програми продовжиться з першого оператора, розташованого після циклу for.
Інший приклад показує, як оператор кома може бути використаний для ініціалізації більше однієї змінної.
(j=0, i=1; i <= 10; + + i)
j +=i;
Основне призначення використання оператора кома - допомогти програмісту використовувати декілька виразів завдання початкових значень і (або) декілька виразів прирощення змінних. Наприклад, в одній структурі for може бути декілька керуючих змінних, яким треба задавати початкове значення і які треба змінювати. Наприклад:
(i=0, j=0; i <3, j <`4; i + +, j +=2) << i * j;
Даний цикл проведе дві ітерації, після яких значення лічильника i стане рівним 2, а значення лічильника j=4. При цьому умова для другого лічильник не виконується (тому j строго повинен бути менше 4) і цикл буде перервано. На екрані буде виведено 02.
У циклі for може бути присутнім локальне оголошення змінної управління циклом, як у наступному прикладі.
for (int i=0; i
Ціла мінлива i тепер є оголошеної в програмі. Це може вносити плутанину, тому краще оголошувати всі програмні змінні на початку блоку.
Будь-яке або всі вирази в інструкції for можуть бути відсутні, але дві крапки з комою повинні бути обов'язково. Якщо пропущена начальная_інструкція, то ніяка ініціалізація в циклі for не виконується. Якщо пропущено вираз, то не виробляється прирощення, а в разі відсутності умови не проводиться перевірка. Є спеціальне правило для тих випадків, коли пропущено умова; в такій ситуації компілятор буде вважати умов...