Инструменты пользователя

Инструменты сайта


cikly

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

cikly [2019/02/13 15:00]
cikly [2020/06/13 13:45] (текущий)
Строка 1: Строка 1:
 +====== Циклы С++ ======
 +Циклы: while, do while.
 +
 +Другое название цикла - конструкция повторения. А, каждое повторение действия - ШАГ ЦИКЛА или ИТЕРАЦИЯ.
 +
 +**Распространенным заблуждением является то, что управляющая переменная может изменяться только на единицу - это не так. Главное, чтобы переменная изменялась любым логичным образом.**
 +
 +====== Общий синтаксис и порядок выполнения цикла while ======
 +<file>
 +while(утверждение)
 +{
 + действие для повторения;
 +}
 +</file>
 +  - Прежде всего осуществляется проверка утверждения.
 +  - Если утверждение в круглых скобках истинно, выполнятся действие, находящееся внутри фигурных скобок.
 +  - Если утверждение в круглых скобках ложно, программа перейдет на следующую строчку за закрывающейся фигурной скобкой цикла.
 +  - Если утверждение в круглых скобках было истинно и действие выполнилось, снова следует проверка утверждения.
 +
 +Как видите, проверка утверждения повторяется при каждом выполнении цикла. Как только оно перестает быть верным, цикл завершается. Обратите внимания, что если утверждение ложно с самого начала, действие внутри цикла не будет выполнено ни разу.
 +<note tip>Если в цикле выполняется только одно действие - фигурные скобки можно не применять.</note>
 +====== Общий синтаксис и принцип работы do while ======
 +<file>
 +do
 +{
 + действие;
 +}
 +while(условие);
 +</file>
 +
 +Цикл do while похож на цикл while. Разница состоит в том, что в while проверка условия производится сразу же при входе в цикл, и, лишь затем, если условие истинно - выполняется действие. В do while в любом случае сначала выполняется действие и только потом идет проверка условия. Если условие истинно, выполнение действия продолжается, а если нет, то выполнение передается следующему за while оператору. <note tip>Другими словами, в отличие от while внутри do while действие хотя бы один раз выполняется.</note><note tip>do while очень удобно применять для проверки вводимых значений пользователем. Код в этом случае удобней. Фигурные скобки тоже не обязательны для одного выражения в цикле</note>
 +====== Общий синтаксис и принцип работы for ======
 +Оператор **for** теоретически является полной аналогией while, а практически позволяет организовать цикл с более удобным управлением.
 +
 +Общий синтаксис и принцип работы конструкции for:<file>
 +for(инициализация переменной;проверка условия;изменение переменной)
 +{
 + действие;
 +}
 +Например
 +
 +#include <iostream>
 +void main()
 +{
 + for(int i=1;i<=5;i++)
 + {
 + cout<<i;
 + }
 +}
 +</file>
 +<note tip>Ни одна из частей цикла for не является обязательной.</note>
 +  * Создание и инициализацию управляющей переменной можно сделать до цикла.<file>
 +// здесь создание переменной производится до цикла, а инициализация в цикле.
 +int x;
 + for(x=1;x<=100;x++)
 + {
 + cout<<x;
 + }</file>
 +  * Изменение управляющей переменной можно перенести внутрь тела цикла, как это происходит в while и do while.<file>
 + for(int x=1;x<=100;)
 + {
 + cout<<x;
 + x++;
 + }
 +</file>
 +  * Условие конструкции также можно пропустить, однако в этом случае оно будет считаться по умолчанию истинным. Таким образом, мы получаем постоянно истинное условие и, как следствие - **ВЕЧНЫЙ ЦИКЛ**.<file>
 +
 + for(int x=1;;x++)
 + {
 + cout<<x;
 +
 + }</file>
 +
 +<file>
 +#include <stdlib.h>
 +#include <stdio.h>
 +/*Программа отображает символы и их соответствующие символы из таблицы ASCII.*/
 +int main() {
 +    unsigned char a;
 +    for (a=32;a<128;a++)
 +        printf("%3d = '%c''\n",a,a);
 +
 +    return (EXIT_SUCCESS);
 +}
 +</file>
 +====== Оператор break и continue ======
 +Нередко при работе с циклами, возникает необходимость искусственно прервать выполнение цикла. Для этого используется, уже знакомый вам (по изучению switch), **оператор break**. Этот оператор должен находиться в теле цикла, в том месте где необходимо сделать остановку.<note important>break может быть использован либо в цикле, либо в операторе switch. Любое другое размещение приводит к ошибке на этапе компиляции.</note>
 +**Оператор continue** используется для прерывания текущей итерации цикла и осуществления перехода на следующий шаг. В ряде случаев, такие действия являются необходимыми.
 +
 +Если выполняется оператор continue, то в зависимости от вида цикла происходит следующее:
 +  * Циклы while и do while останавливают выполнение шага и переходят к проверке условия.
 +  * Цикл for также останавливает выполнение шага. Но, сначала переходит к изменению управляющей переменной, а потом уже к проверке условия.