Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Тут можно читать онлайн Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература, издательство Вильямс, год 0101. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - описание и краткое содержание, автор Стивен Прата, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать книгу онлайн бесплатно, автор Стивен Прата
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Примеры

5 > 2 истинно и принимает значение 1.

(2 + а) == а ложно и принимает значение 0.

Неопределенные циклы и циклы со счетчиком

Некоторые примеры цикла while представляли собой неопределенные циклы.. Это означает, что заранее нельзя сказать, сколько раз цикл выполнится до того, как выражение станет ложным. Например, когда в листинге 6.1 использовался интерактивный цикл для суммирования целых чисел, заранее не было известно, сколько чисел будет введено. Тем не менее, в других примерах применялись циклы со счетчиком. Такие циклы выполняют заранее известное количество итераций. В листинге 6.10 приведен пример оператора цикла while со счетчиком.

Листинг 6.10. Программа sweetie1.c

И хотя форма цикла использованная в листинге 610 работает прекрасно это не - фото 162

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

216 Глава 6

Чтобы организовать цикл, который должен быть повторен фиксированное количество раз, необходимо выполнить три действия.

1. Инициализировать счетчик.

2. Сравнить показание счетчика с некоторой граничной величиной.

3. Инкрементировать значение счетчика на каждом проходе цикла.

О сравнении позаботится условие цикла while. Операция инкремента отвечает за увеличение значения счетчика. В листинге 6.10 инкрементирование делается в конце цикла. Такой подход устраняет возможность случайно пропустить действие инкрементирования. Следовательно, было бы лучше объединить действия по проверке и обновлению в одно выражение, применив конструкцию count++ <= NUMBER, но инициализация счетчика по-прежнему выполняется за пределами цикла, сохраняя вероятность забыть сделать это. Опыт нас учит: то, что может случиться, рано или поздно произойдет, поэтому давайте более подробно рассмотрим управляющий оператор, который позволяет избежать таких проблем.

Цикл for

Цикл for собирает все три указанных выше действия (инициализацию, проверку и обновление) в одном месте. Используя цикл for, предыдущую программу можно заменить кодом, приведенным в листинге 6.11.

Листинг 6.11. Программа sweetie2.c

В круглых скобках следующих за ключевым словом for содержатся три выражения - фото 163

В круглых скобках, следующих за ключевым словом for, содержатся три выражения, разделенные двумя точками с запятой. Первое выражение — это инициализация. Она осуществляется только один раз при первом запуске цикла for. Второе выражение представляет собой условие проверки; оно вычисляется перед каждым потенциальным проходом цикла. Когда выражение имеет значение false (когда значение счетчика count больше, чем NUMBER), цикл завершается. Третье выражение, которое выполняет изменение или обновление, вычисляется в конце каждой итерации. В листинге 6.10 оно применяется для инкрементирования значения count, но этим его использование не ограничивается. Оператор for завершается следующим за ним простым или составным оператором. Каждое из трех выражений является полным, так что любой побочный эффект в управляющем выражении, такой как инкремент значения переменной, происходит до вычисления другого выражения. Структура цикла for иллюстрируется на рис. 6.3.

В качестве еще одного примера в листинге 6.12 показана программа, в которой цикл for применяется для вывода таблицы кубов.

Управляющие операторы С: циклы 217

Рис 63 Структура цикла for Программа в листинге 612 выводит целые числа - фото 164

Рис. 6.3. Структура цикла for

Программа в листинге 612 выводит целые числа от 1 до 6 и результат их - фото 165

Программа в листинге 6.12 выводит целые числа от 1 до 6 и результат их возведения в куб.

n n в кубе

1 1

2 8

3 27

4 64

5 125

6 216

Первая строка цикла for немедленно сообщает всю информацию о параметрах цикла: начальное значение num, конечное значение num и величину, на которую num увеличивается при каждом проходе цикла.

Использование цикла for для повышения гибкости

Хотя цикл for выглядит похожим па цикл DO в языке FORTRAN, цикл FOR в языке Pascal и цикл FOR... NEXT в языке BASIC, он обладает гораздо большей гибкостью, чем любой из них. Эта гибкость является результатом того, как могут применяться три выражения в спецификации оператора for. В примерах, приведенных до сих пор, первое выражение использовалось для инициализации счетчика, второе выражение — для установки предельного значения счетчика и третье выражение — для увеличения значения счетчика на 1. Применяемый подобным образом оператор for языка С во многом подобен упомянутым выше операторам. Тем не менее, он обладает и множеством других возможностей, девять из которых описаны далее.

218 Глава 6

• Вы можете применять операцию декремента для реализации обратного отсчета значений счетчика вместо прямого.

/* for_down.c */

#include int main(void)

{

int secs;

for (secs = 5; secs > 0; secs--) printf ("%d секунд(ы) !\n", secs);

printf("Ключ на зажигание!\n"); return 0;

}

Ниже показан вывод:

5 секунд(ы)!

4 секунд(ы)!

3 секунд(ы)!

2 секунд(ы)!

1 секунд(ы)!

Ключ на зажигание!

• При желании можно считать двойками, десятками и т.д.

/* for_13s.c */

#include int main(void)

{

int n; // счет с интервалом 13, начиная с 2

for (n=2;n<60;n=n+13) printf("%d \n", n); return 0;

}

Значение переменной n на каждой итерации увеличивается на 13, давая следующий вывод:

2

15

28

41

54

• Можно делать подсчет по символам, а не числам.

/* for_char.c */

#include int main(void)

{

char ch;

for (ch = 'a'; ch <= 'z'; ch++)

printf("Значение ASCII для %c равно %d.\n", ch, ch); return 0;

}

В программе предполагается, что для символов в системе используется кодировка ASCII. Ниже показан фрагмент выходных данных:

Значение ASCII для а равно 97.

Значение ASCII для b равно 98.

Управляющие операторы С: циклы 219

Значение ASCII для х равно 120.

Значение ASCII для у равно 121.

Значение ASCII для z равно 122.

Программа работает, т.к. символы хранятся в памяти в виде целых чисел, поэтому цикл в любом случае имеет дело с целыми числами.

• Можно выполнять проверку условия, отличного от количества итераций. В программе for cube.с строку

for (num = 1; num <= 6; num++)

можно заменить такой строкой:

for (num = 1; num*num*num <= 216; num++)

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

• Можно позволить некоторой величине расти не в арифметической, а в геометрической прогрессии; т.е. вместо добавления каждый раз фиксированного значения можно умножать на фиксированное значение.

/* for_geo. с * /

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Прата читать все книги автора по порядку

Стивен Прата - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования C. Лекции и упражнения (6-е изд.) 2015 отзывы


Отзывы читателей о книге Язык программирования C. Лекции и упражнения (6-е изд.) 2015, автор: Стивен Прата. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x