Опорный конспект Форма ф со пгу 18. 2/05 Министерство образования и науки Республики Казахстан
Вид материала | Конспект |
СодержаниеЦиклические конструкции в программах Цикл while Пример: #inсlude Цикл do...while |
- Опорный конспект лекции ффсо пгу 18. 2/05 Министерство образования и науки Республики, 1108.14kb.
- Опорный конспект лекции фсо пгу 18. 2/07 Министерство образования и науки Республики, 1449.98kb.
- Опорный конспект лекции фсо пгу 18. 2/07 Министерство образования и науки Республики, 337.81kb.
- Опорный конспект лекции фсо пгу 18. 2/07 Министерство образования и науки Республики, 909.59kb.
- Методические указания Форма ф со пгу 18. 2/05 Министерство образования и науки Республики, 98.43kb.
- Методические указания Форма ф со пгу 18. 2/07 Министерство образования и науки Республики, 249.4kb.
- Опорный конспект лекции фсо пгу 18. 2/07 Министерство образования и науки Республики, 290.94kb.
- Программа дисциплины Форма для студентов ф со пгу 18. 2/07 Министерство образования, 272.92kb.
- Методические указания Форма ф со пгу 18. 2/05 Министерство образования и науки Республики, 121.19kb.
- Программа дисциплины Форма для студентов ф со пгу 18. 2/07 Министерство образования, 299.49kb.
Циклические конструкции в программах
Наряду с операторами (или группами операторов), которые могут выполняться в зависимости от каких-либо условий, существуют еще и операторы, которые могут выполняться несколько раз в одной и той же последовательности. Такой вид конструкции в программе известен как цикл. Есть три основных типа циклов (хотя два из них можно рассматривать как разновидность одного). Это цикл while ("пока"), цикл for ("для") и цикл do...while ("делать ... пока"). Рассмотрим их по порядку.
Цикл while
Цикл while является наиболее общим и может использоваться вместо двух других типов циклических конструкций. В принципе можно сказать, что по-настоящему для программирования необходим только цикл while, а другие типы циклических конструкций служат лишь для удобства написания программ.
Пример:
#inсlude
main()
int len;
len=0;
puts("Наберите предложение, затем нажмите <Ввод>");
while ( getchar() != '\n')
len++;
printf("\nВаше предложение имеет длину %d символов\n",len);
Эта программа позволяет ввести предложение с клавиатуры и подсчитать при этом, сколько раз вы нажали на клавиши клавиатуры до тех пор, пока не нажали на клавишу <Ввод> (соответствует специальному символу конца строки - '\n'). Затем программа сообщит
вам сколько символов (символ '\n' не подсчитывается) вы ввели.
Оператор while имеет следующий формат:
while (выражение)
оператор
где "выражение" принимает нулевое или отличное от нуля значение,
а "оператор" может представлять собой как один оператор, так и
составной оператор.
В процессе выполнения цикла while вычисляется значение "выражения". Если оно истинно, то "оператор", следующий за ключевым словом while, выполняется и "выражение" вычисляется снова. Если "выражение" ложно, то цикл while завершается и программа продолжает выполняться дальше.
Цикл for
Цикл for является одним из основных видов циклов, которые имеются во всех универсальных языках программирования, включая Си. Однако, версия цикла for, используемая в Си, как вы увидите, обладает большей мощностью и гибкостью.
Основная идея, заложенная в его функционирование, заключается в том, что операторы, находящиеся внутри цикла, выполняются фиксированное число раз, в то время как переменная цикла (известная еще как индексная переменная) пробегает определенный ряд значений. Например, модифицируем программу, о которой говорилось выше, в следующую:
#include
main()
char *msg;
int indx;
msg = "Здравствуй, мир";
for (indx = 1; indx <= 10; indx++ )
printf("Время #%2d: %s\n",indx,msg);
Эта программа делает те же действия, что и программа с циклом while, которую мы уже разобрали.
Теперь приведем основной формат цикла for:
for (выр1; выр2; выр3)
оператор
Так же, как и в цикле while, "оператор" в теле цикла for обычно является одним из операторов программы, но может использоваться и составной оператор, заключенный в фигурные скобки (...).
Заметим, что параметры цикла for, заключенные в скобки, должны разделяться точкой с запятой (позиционный параметр), которая делит в свою очередь пространство внутри скобок на три сектора. Каждый параметр, занимающий определенную позицию, означает следующее:
- выр1 - обычно задает начальное значение индексной переменной;
- выр2 - условие продолжения цикла;
- выр3 - обычно задает некоторую модификацию (приращение) индексной переменной за каждое выполнение цикла.
Основной вариант цикла for эквивалентен следующей конструкции, выраженной с помощью цикла while:
выр1;
while (выр2)
оператор;
выр3;
Вы можете опускать одно, несколько или даже все выражения в операторе for, однако о необходимости наличия точек с запятой вы должны помнить всегда. Если вы опустите "выр2", то это будет равносильно тому, что значение выражения "выр2" всегда будет иметь значение 1 (истина) и цикл никогда не завершится (такие циклы из-
вестны еще как бесконечные).
Во многих случаях вам поможет использование оператора запятая (,), который позволяет вводить составные выражения в оператор цикла for.
Пример:
#include
main()
char *msg;
int up,down;
msg = "Здравствуй, мир";
for (up = 1, down = 9; up <= 10; up++, down--)
printf("%s: %2d растет, %2d уменьшается \n",msg,up,down);
Заметьте, что и первое и последнее выражение в этом цикле for состоит из двух выражений, инициализирующих и модифицирующих переменные up и down. Вы можете сделать эти выражения сколь угод-
но сложными.
Цикл do...while
Последним видом цикла является цикл do...while.
Пример:
#include
#include
main()
float a,b,ratio;
do
printf("\nВведите два числа: ");
scanf("%f %f", &a, &b);
if (b == 0.0)
printf("\n Деление на ноль!");
else
ratio = a/b;
printf("\nРезультат деления двух чисел: %f",ratio);
printf("\nНажми 'q' для выхода или любую клавишу для"
" продолжения")
while ( getch() != 'q');
Эта программа вычисляет результат деления одного числа на другое. Затем просит вас нажать любую клавишу. Если вы нажмете клавишу 'q', то выражение в операторе цикла while в конце программы примет значение "ложь" и цикл (а значит и программа) завершится. Если вы введете какой-либо другой символ, отличный от 'q', то выражение будет иметь значение "истина" и цикл повторится.
Формат цикла do...while можно представить в виде:
do оператор while (выр);
Основным отличием между циклом while и циклом do...while в том, что операторы внутри do...while всегда выполняются хотя бы один раз (т.к. проверка условия выполнения цикла осуществляется после выполнения последовательности операторов, составляющих тело цикла). Это похоже на цикл repeat...until в Паскале с одним, однако, различием: цикл repeat выполняется дотехпор, пока его условие не станет истинным; а цикл do...while выполняется пока истина.