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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Первые пять строк вывода программы выглядят так:

унции тариф

1 $0.46

2 $0.66

3 $0.86

4 $1.06

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

Операция запятой в программе применяется в выражениях инициализации и обновления. Ее наличие в первом выражении приводит к инициализации переменных ounces и cost. Второе ее вхождение вызывает увеличение на 1 переменной ounces и увеличение на 20 (значение константы NEXT 0Z) переменной cost на каждой итерации. Все вычисления делаются в спецификациях цикла for (рис. 6.4).

Рис 64 Операция запятой и цикл for Использование операции запятой не - фото 167

Рис. 6.4. Операция запятой и цикл for

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

ounces++, cost = ounces * FIRST_0Z

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

Во-вторых, значение всего выражения, содержащего операцию запятой, является значением операнда в правой части. Результат выполнения оператора

х = (у = 3, {z = ++у +2) + 5);

выглядит так: переменной у присваивается 3, значение у инкрементируется до 4, к этому значению 4 добавляется 2, результирующее значение 6 присваивается переменной z, к z добавляется 5 и, наконец, финальное значение переменной z, равное 11, присваивается переменной х. Объяснение, почему кто-то мог все это делать, выходит за рамки настоящей книги. С другой стороны, предположим, что вы по неосторожности указали запятую при записи числа:

houseprice = 249,500;

Здесь нет синтаксической ошибки. Взамен компилятор С интерпретирует это как выражение запятой, с houseprice = 249 в качестве левого подвыражения и 500 — в ка-

224 Глава 6

честве правого. Следовательно, значение всего выражения запятой — это выражение в правой части, а подоператор в левой части присваивает переменной houseprice значение 249. Таким образом, результат совпадает с результатом выполнения следующего кода:

houseprice = 249;

500;

Вспомните, что любое выражение становится оператором, если в его конце добавить точку с запятой, поэтому 500; является оператором, который ничего не делает. С другой стороны, оператор

houseprice = (249,500);

присваивает переменной houseprice значение 500.

Запятая применяется также в качестве разделителя, так что запятые в выражении

char ch, date;

и в операторе

printf("%d %d\n", chimps, chumps); представляют собой разделители, а не операции запятой.

Сводка: новые операции Операции присваивания

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

+= Добавляет величину справа от знака операции к значению слева от знака.

-= Вычитает величину справа от знака операции из значения слева от знака.

*= Умножает значение переменной слева от знака операции на величину справа от знака. /= Делит значение переменной слева от знака операции на величину справа от знака.

%= Возвращает остаток от деления значения переменной слева от знака операции на величину справа от знака.

Пример

rabbits *= 1.6; эквивалентна

rabbits = rabbits * 1.6;

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

contents *= old_rate + 1.2;

дает тот же результат, что и такой оператор:

contents = contents * (old_rate + 1.2);

Операция запятой

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

for (step = 2, fargo = 0; fargo < 1000; step *= 2) fargo += step;

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

греческий философ Зенон и цикл for

Давайте посмотрим, как с помощью цикла for и операции запятой можно разрешить древний парадокс. Гфеческий философ Зенон утверждал, что стрела никогда не поразит своей цели. Сначала, говорил он, стрела пролетает половину пути до цели. Затем она пролетает половину оставшегося пути, затем — половину того пути, который остался, и так до бесконечности. Поскольку весь путь стрелы разбит на бесконечное количество частей, утверждал Зенон, стреле потребуется бесконечно большой промежуток времени для достижения конца пути. Однако мы сомневаемся в том, что Зенон добровольно согласился бы стать живой мишенью, чтобы доказать свою правоту.

Применим количественный подход и предположим, что стреле требуется одна секунда, чтобы пролететь первую половину пути. Затем ей понадобится 1/2 секунды, чтобы пролететь половину оставшегося пути, еще 1/4 секунды, чтобы преодолеть половину пути, который остался после этого, и т.д. Полное время пролета стрелы можно представить в виде следующей бесконечной последовательности:

1 + 1/2 + 1/4 + 1/8 + 1/16 + ...

Короткая программа в листинге 6.14 вычисляет сумму нескольких первых элементов этой последовательности. Переменная power of two принимает значения 1.0, 2.0, 4.0, 8.0 и т.д.

Листинг 6.14. Программа zeno.c

Результат выполнения программы в ходе которого суммируются первые 15 элементов - фото 168

Результат выполнения программы, в ходе которого суммируются первые 15 элементов последовательности, выглядит следующим образом:

Введите желаемое количество элементов последовательности: 15 Время = 1.000000, когда количество элементов = 1.

Время = 1.500000, когда количество элементов = 2.

Время = 1.750000, когда количество элементов = 3.

Время = 1.875000, когда количество элементов = 4.

Время = 1.937500, когда количество элементов = 5.

Время = 1.968750, когда количество элементов = 6.

Время = 1.984375, когда количество элементов = 7.

Время = 1.992188, когда количество элементов = 8.

Время = 1.996094, когда количество элементов = 9.

226 Глава 6

Время = 1.998047, когда количество элементов = 10.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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