Array M. УЭИТ - Язык Си - руководство для начинающих
- Название:Язык Си - руководство для начинающих
- Автор:
- Жанр:
- Издательство:Мир
- Год:1988
- Город:Москва
- ISBN:5-03-001309-1 /русск./
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Array M. УЭИТ - Язык Си - руководство для начинающих краткое содержание
Язык Си — руководство для начинающих
Язык Си - руководство для начинающих - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
sum = 1.999878 когда count = 14.
sum = 1.999939 когда count = 15.
Можно видеть, что, хотя мы и добавляем новые члены, сумма, по-видимому, стремится к какому-то пределу. И действительно, математики показали, что при стремлении числа членов к бесконечности сумма ряда сходится к 2,0, что и демонстрируется нашей программой. Какая радость! Если бы Зенон оказался прав, движение было бы невозможно. (Но если бы движение было невозможно, то не было бы Зенона ).
Что можно сказать по поводу самой программы? В ней показано, что в одном выражении можно использовать более, чем одну операцию "запятая". В спецификации цикла мы инициализировали переменные sum, xи count. После задания условий выполнения цикла оставшаяся часть программы оказывается очень короткой.
ЦИКЛ С УСЛОВИЕМ НА ВЫХОДЕ: do while
Оба цикла, whileи for, являются циклами с предусловиями. Проверка истинности условия осуществляется перед началом каждой итерации цикла. В языке Си имеется также конструкция цикла с постусловием (условием на выходе), где истинность условия проверяется после выполнения каждой итерации цикла. Этот подход реализуется с помощью цикла do while, который иллюстрируется следующим примером.
do
{
ch = getchar( );
putchar(ch);
}
while(ch != ' \n')
Это сильно отличается от записи, например, такого вида
while((ch = getchar( )) != '\n') putchar(ch);
Различие начинается с того момента, когда прочитан символ "новая строка". Цикл whileпечатает все символы вплоть до появления первого символа "новая строка", а цикл do while- все символы вплоть до символа "новая строка" включительно . Только после печати этого символа в цикле производится проверка, является ли последний прочитанный символ символом "новая строка" В цикле whileэти действия осуществляются перед проверкой истинности условия. В общем виде цикл do whileзаписывается следующим образом:
do
оператор
while (выражение);
Такой оператор может быть как простым, так и составным.
РИС. 8.5. Структура цикла do while.
Тело цикла do whileвсегда выполняется по крайней мере один раз, поскольку проверка осуществляется только после его завершения. Тело цикла forили while, возможно, не будет выполнено ни разу, поскольку проверка осуществляется перед началом его выполнения. Использовать цикл do whileлучше всего в тех случаях когда должна быть выполнена по крайней мере одна итерация, к примеру, мы могли бы применить цикл do whileв нашей программе угадывания числа. На псевдокоде алгоритм работы программы можно тогда записать следующим образом:
do
{
выдвиньте предположение получите ответ вида д, б, или м }
while(ответ не совпадает с д)
Вы должны избегать использования цикла do while, структура которого аналогична представленной ниже в записи на псевдокоде.
спросите пользователя, хочет ли он продолжать
do
некоторый умный вздор
while (oтвет будет да)
В данном случае, после того как пользователь ответит "нет", "некоторый умный вздор" будет выполнен, поскольку проверка осуществляется слишком поздно.
Резюме: оператор do while
I. Ключевые слова: do while
II. Общие замечания:
Оператор do whileопределяет действия, которые циклически выполняются до тех пор, пока проверяемое выражение не станет ложным, или равным нулю. Оператор do while- это цикл с постусловием ; решение, выполнять или нет в очередное раз тело цикла, принимается после его прохождения. Поэтому тело цикла будет выполнено по крайней мере один раз. Оператор , образующий тело цикла, может быть как простым, так и составным.
III. Форма записи
do оператор
while(выражение);
Выполнение оператора повторяется до тех пор, пока выражение не станет ложным , или равным нулю.
IV. Пример
do
scanf(" %d" , amp;number);
while(number != 20);
КАКОЙ ЦИКЛ ЛУЧШЕ?
После того как вы решили, что вам необходимо использовать оператор цикла, возникает вопрос: циклом какого вида лучше всего воспользоваться? Во-первых, решите, нужен ли вам цикл с предусловием или же с постусловием. Чаще вам нужен будет цикл с предусловием. По оценкам Кернигана и Ритчи; в среднем циклы с постусловием ( do while) составляют только 5% общего числа используемых циклов. Существует несколько причин, по которым программисты предпочитают пользоваться циклами с. предусловием; в их числе один общий принцип, согласно которому лучше посмотреть, куда вы прыгаете, до прыжка, а не после. Вторым моментом является то, что программу легче читать, если проверяемое условие находится в начале цикла. И наконец, во многих случаях важно, чтобы тело цикла игнорировалось полностью, если условие вначале не выполняется.
Положим, вам необходимо использовать цикл с предусловием. Что лучше: цикл forили цикл while? Отчасти это дело вкуса, поскольку все, что вы можете сделать с помощью одного, вы можете сделать и с помощью другого. Для превращения цикла forв цикл whileнужно опустить первое и третье выражения:
for(; проверка условия;)
Такая спецификация эквивалентна записи
while(проверка условия)
Для превращения цикла whileв цикл forнеобходимо предварительно осуществить инициализацию некоторых выбранных переменных и включить в тело цикла операторы, корректирующие их значения:
инициализация;
while (проверка условия)
{
тело;
коррекция;
}
Данная запись по своим функциональным возможностям эквивалентна следующей:
for(инициализация; проверка условия, коррекция) тело;
Исходя из соображений стиля программирования, применение цикла torпредставляется более предпочтительным в случае, когда в цикле используется инициализация и коррекция переменной, а применение цикла while- в случае, когда этого нет. Поэтому использование цикла whileвполне оправданно в случае
while((ch = getchar( )) != EOF)
Применение цикла forпредставляется более естественным в случаях, когда в циклах осуществляется счет прохождений с обновлением индекса:
for (count = 1; count <= 100; count++)
ВЛОЖЕННЫЕ ЦИКЛЫ
Вложенным называется цикл, находящийся внутри другого цикла. В этом разделе рассматривается пример, в котором вложенные циклы используются для нахождения всех простых чисел, не превышающих данного значения. Простое число - это такое число, которое делится нацело только на 1 и само на себя. Первыми простыми числами будут 2, 3, 5, 7 и 11.
Читать дальшеИнтервал:
Закладка: