Философ Зенон и цикл for
Философ Зенон и цикл for
Посмотрим, как с помощью операции "запятая" можно разрешить старый парадокс. Греческий философ Зенон утверждал, что пущенная стрела никогда не достигнет цели. Сначала, говорил он, стрела пролетит половину расстояния до цели. После этого ей останется пролететь половину всего расстояния, но сначала она должна будет пролететь половину того, что ей осталось пролететь, и т. д. до бесконечности. Поскольку расстояние полета разбито на бесконечное число частей, для достижения цели стреле может потребоваться бесконечное время. Мы сомневаемся, однако, что Зенон вызвался бы стать мишенью для стрелы, полагаясь только на убедительность своего аргумента. Применим количественный подход и предположим, что за одну секунду полета стрела пролетает первую половину расстояния. Тогда за последующую 1/2 секунды она пролетит половину того, что осталось от половины, за 1/4 - половину того, что осталось после этого, и т д. Полное время полета представляется в виде суммы бесконечного ряда 1 + 1/2 + 1/4 + 1/8 + 1/16 -1- ... . Мы можем написать короткую программу для нахождения суммы первых нескольких членов.
/* Зенон*/
#define LIMIT 15
main ( )
{
int count;
float sum, x;
for(sum = 0.0, x = 1.0, count = 1; count <= LIMIT; count++, x *= 2.0)
{
sum + = 1.0/x;
printf(" sum = %f когдаcount = %d. " , sum, count);
}
}
В результате выполнения программы получим значения сумм, соответствующих первым 15 членам ряда:
sum = 1.000000 когда count = 1.
sum = 1.500000 когда count = 2.
sum = 1.750000 когда count = 3.
sum = 1.875000 когда count = 4.
sum = 1.937500 когда count = 5.
sum = 1.968750 когда count = 6.
sum = 1.984375 когда count = 7.
sum = 1.992188 когда count = 8.
sum = 1.996094 когда count = 9.
sum = 1.998047 когда count = 10.
sum = 1.999023 когда count = 11.
sum = 1.999512 когда count = 12.
sum = 1.999756 когда count = 13.
sum = 1.999878 когда count = 14.
sum = 1.999939 когда count = 15.
Можно видеть, что, хотя мы и добавляем новые члены, сумма, по-видимому, стремится к какому-то пределу. И действительно, математики показали, что при стремлении числа членов к бесконечности сумма ряда сходится к 2,0, что и демонстрируется нашей программой. Какая радость! Если бы Зенон оказался прав, движение было бы невозможно. (Но если бы движение было невозможно, то не было бы Зенона ).
Что можно сказать по поводу самой программы? В ней показано, что в одном выражении можно использовать более, чем одну операцию "запятая". В спецификации цикла мы инициализировали переменные sum, x и count. После задания условий выполнения цикла оставшаяся часть программы оказывается очень короткой.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Цикл for
Цикл for В общем случае оператор цикла for имеет три раздела (инициализация, условие и итерация) и записывается следующим образом:for ([инициализация;] [условие;] [итерация]){ тело цикла}В разделе инициализации обычно выполняется присваивание начальных значений переменным
Цикл for…in
Цикл for…in Оператор цикла for…in предназначен для просмотра всех свойств объекта. Для каждого свойства указанный цикл выполняет операторы, содержащиеся в теле цикла:for (переменная in объект) { тело цикла}Цикл for…in можно использовать для вывода на экран всех свойств объекта в
Цикл while
Цикл while Цикл while похож на цикл for. В нем также условие выхода из цикла проверяется перед выполнением итерации, однако в цикле while, в отличие от for, нет встроенного счетчика и выражения, его изменяющего.Оператор while записывается в следующем виде:while (условие) { тело
Цикл do…while
Цикл do…while Этот цикл является примером цикла с пост-условием и записывается в следующем виде:do { тело цикла} while (условие);В этом случае цикл выполняется до тех пор, пока проверяемое после ключевого слова while условие не станет ложным (false). Так как условие проверяется уже
Цикл
Цикл К 2007 г. Эд Уитакер выполнил свою миссию. Бо?льшая часть системы Bell была снова собрана в крупнейшую в мире коммуникационную компанию, во главе которой стоял он сам. В возрасте 65 лет, доказав все, что можно, Уитакер объявил, что уходит{375}. В соответствии с обычаями начала
2.2.1. Цикл типа “пока” (цикл с предусловием)
2.2.1. Цикл типа “пока” (цикл с предусловием) Пример 1.4: Нахождение наибольшего общего делителя двух целых положительных чисел с помощью известного алгоритма Евклида.Пока X ? Y делать если X> Y то X:=X-Y иначе Y:=Y-X; Писать (‘НОД=’, X);WHILE X <> Y DO IF X> Y THEN X:=X-Y ELSE Y:=Y-X; WRITE
2.2.2. Цикл типа “до” (цикл с постусловием)
2.2.2. Цикл типа “до” (цикл с постусловием) Этот цикл выполняется не менее одного разаПример 1.5: Решение предыдущей задачи. Цикл с постусловиемПовторять если X> Y то X:=X-Y иначе Y:=Y-X до X=Y;Писать (‘НОД=’, X);REPEAT IF X> Y THEN X:=X-Y ELSE Y:=Y-X UNTIL X=Y;WRITE (‘НОД=’, X);REPEAT –
2.2.1. Цикл типа “пока” (цикл с предусловием)
2.2.1. Цикл типа “пока” (цикл с предусловием) Пример 2.4: Программа находит наибольший общий делитель двух целых чисел.#include <assert. h>#include <stdio. h>int main (){int x, y;printf (“Введите два целых числа через пробел ”);int r = scanf (”%d%d”, &x, &y);assert (r == 2);while (x!= y) if (x> y) x = x – y; else y =
ЦИКЛ for
ЦИКЛ for В цикле for все три вышеуказанных действия собраны вместе. Используя цикл for, фрагмент, приведенный выше, можно записать в виде одного оператора: for(count = 1; count <= NUMBER; count++) printf(" Будь моим Валентином! "); В круглых скобках содержатся три выражения,
18.5. Цикл for
18.5. Цикл for Общий формат цикла:for имя_перемениой in list doкоманда1 команда… doneЦикл for однократно обрабатывает всю информацию для каждого значения, включенного в список list. Чтобы получить доступ к каждому значению в списке, достаточно задать параметр имя_переменной. Командой
18.6. Цикл until
18.6. Цикл until Цикл until позволяет выполнять ряд команд, пока условие остается истинным. Практически цикл until противоположен по смыслу циклу while. Цикл while является более предпочтительным, но в определенных случаях цикл until лучше справляется с работой. Формат цикла until:until
18.7. Цикл while
18.7. Цикл while Цикл while выполняет ряд команд до тех пор, пока истинно условие. Этот цикл используется также для просмотра данных из файла ввода. Формат цикла while:while команда doкоманды1команды2doneМежду конструкциями while и do находится несколько команд, хотя в общем случае
Голубятня: «Писатель, доктор, ядерный физик, философ-теоретик, но самое главное — такой же, как ты, человек» Сергей Голубицкий
Голубятня: «Писатель, доктор, ядерный физик, философ-теоретик, но самое главное — такой же, как ты, человек» Сергей Голубицкий Опубликовано 13 июля 2013 Наша киносуббота посвящена последнему фильму Пола Томаса Андерсона «Мастер» (2012, The Master,