Основы программирования на языке C


Цикл с предусловием


Существует три вида циклов: while, for и do. Цикл while имеет следующую форму:

while (e) s;

Оператор s выполняется до тех пор, пока значение выражения e равно "истина". Значение e вычисляется перед каждым выполнением оператора s.

В предшествующих лекциях мы пользовались этой формой цикла. Рассмотрим еще один пример его работы:

/* угадывание числа */ # include <stdio.h> main( ) { int i = 1; char res; printf("Задумайте целое число от 1 до 100. Компьютер попытается угадать его. \n"); printf ("Отвечайте y если догадка правильна и"); printf("\n n, если программа ошибается \n"); printf("И так, ваше число %d?\n",i); /*получение ответа */ while((res = getchar( )) !='y') if(res !='\n') /* пропуск символа новая строка */ printf("Ну тогда оно равно %d\n" ,++i); printf("Число угадано!\n"); }

!Это довольно простая программа. Она написана правильно и решает поставленную задачу, но делает это крайне неэффективно. Данный пример показывает, что правильность написания - не единственный критерий, по которому необходимо оценивать программу. При этом очень важна ее эффективность!

В наших примерах до сих пор использовались условные выражения, но вообще говоря, это могут быть выражения произвольного типа. В качестве оператора можно использовать простой оператор с символом "точка с запятой" в конце или составной оператор, заключенный в фигурные скобки. Если выражение истинно (или в общем случае равно единице), то оператор, входящий в цикл while, выполняется один раз, а затем выражение проверяется снова. Эта последовательность действий, состоящая из проверки и выполнения оператора, периодически повторяется до тех пор, пока выражение не станет ложным (или в общем случае равным нулю). Каждый такой шаг называется итерация. Данная структура аналогична структуре оператора if. Основное отличие заключается в том, что в операторе if проверка условия и (возможное) выполнение оператора осуществляется только один раз, а в цикле while эти действия производятся, вообще говоря, неоднократно.

!При построении цикла while вы должны включить в него какие-нибудь конструкции, изменяющие величину проверяемого выражения так, чтобы в конце концов оно стало ложным. В противном случае выполнение цикла никогда не завершится.




Содержание  Назад  Вперед