Бесконечный цикл

Для создания бесконечного цикла можно использовать любой оператор цикла, но чаще всего для этого выбирают оператор for. Так как в операторе for может отсутствовать любая секция, бесконечный цикл проще всего сделать, оставив пустыми все секции. Это хорошо показано в следующем примере:

for( ; ; ) printf("Этот цикл крутится бесконечно.\n");

Варианты цикла for

В предыдущем разделе рассмотрена наиболее общая форма цикла for. В языке С допускаются некоторые его варианты, позволяющие во многих случаях увеличить мощность и гибкость программы.

Один из распространенных способов усиления мощности цикла for — применение оператора "запятая" для создания двух параметров цикла.Оператор "запятая" связывает несколько выражений, заставляя их выполняться вместе.

В следующем примере обе переменные (х и у) являются параметрами цикла for и обе инициализируются в этом цикле:

for(x=0, y=0; x+y<10; ++x) { y = getchar(); y = y - '0'; /* Вычитание из y ASCII-кода нуля */ . . .}

Здесь запятая разделяет два оператора инициализации. При каждой итерации значение переменной хувеличивается, а значение у вводится с клавиатуры. Для выполнения итерации как х, так и удолжны иметь определенное значение. Несмотря на то что значение увводится с клавиатуры, оно должно быть инициализировано таким образом, чтобы выполнилось условие цикла при первой итерации. Если у не инициализировать, то оно может случайно оказаться таким, что условие цикла примет значение ЛОЖЬ, тело цикла не будет выполнено ни разу.

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

Следующий пример демонстрирует применение составного условия цикла для проверки пароля, вводимого пользователем. Пользователю предоставляются три попытки ввода пароля. Программа выходит из цикла, когда использованы все три попытки или когда введен верный пароль.

void sign_on(void){ char str[20]; int x; for(x=0; x<3 && strcmp(str, "password"); ++x) { printf("Пожалуйста, введите пароль:"); gets(str); } if(x==3) return; /* Иначе пользователь допускается */ . . . . }

Функция sign_on() использует стандартную библиотечную функцию strcmp(), которая сравнивает две строки и возвращает 0, если они совпадают.

Следует помнить, что








Дата добавления: 2015-04-25; просмотров: 787;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.