КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Програмування циклів
Важно. То Если То Если н_з £ к_з к_з – н_з + 1 раз, для второго варианта н_з ³ к_з н_з – к_з +1 раз, . Детерминированность цикла обеспечивается тем, что в теле цикла нельзя изменять значение счетчика. Если это сделать, компилятор сообщит об ошибке. Значения переменных, которые входят в выражение н_з и к_з, изменять можно, но это не будет влиять на количество итераций, поскольку эти выражения вычисляются лишь один раз – при входе в цикл.
Тело цикла может быть простым оператором, вложенным или пустым. В таком случае за словом do сразу ставится точка.
Пример: For i:=1 to 3 do c:=2*i; {используется простой оператор.}
For i:=3 downto 1 do begin c:=2/i; b:=3+i end; {используется составной оператор}
For i:=1 to 3 do; {используется пустой оператор}
Следующие циклы будут проигнорированы: For i:=5 to 4 do...; For i:=4 downto 5 do...;, а цикл For i:=5 to 5 do...; выполнится лишь один раз. Сколько раз будет выполняться тело следующего цикла? k:=0; For i:=1 to k+3 do k:=k+1; Цикл будет выполняться три раза, так как выражение k+3 вычисляется один раз до начала цикла, и изменеие значения k в цикле на количество итераций не повлияет.
Оператор for имеет следующие ограничения: 1.Шаг изменения счетчика циклов может быть лишь +1 (если используется ключевое слово to), или –1 (если используется ключевое слово downto). 2.Переменная-счетчик цикла может быть лишь порядкового типа и должна быть локальной для блока, в котором находится оператор for. 3.Циклы For.. to/downto.. do допускают вложенность при условии, что никакой из вложенных циклов не модифицирует переменные – параметры внешних циклов. 4.Для Object Pascal Delphi 6, после выхода из цикла переменная счетчик будет иметь значение на единицу больше чем конечное значение своего диапазона. Но не следует использовать это в программах. Лучше присвоить новое значение счетчику после окончания цикла – так будет конкретнее. В некоторых версиях языка Pascal (Lazarus) после выхода из цикла параметр имеет значение равное конечному значению своего диапазона.
Решим задачу. Нужно написать программу для перевода значения температуры, заданной по шкале Цельсия, в значение, которое отвечает шкале Кельвина Обозначим начальное значение температуры (first temperature) в Цельсиях - C_F, а конечное значение (last temperature) - C_L. Температуру в Кельвинах - K. Параметр цикла обозначим переменной T. В цикле выполняются два оператора. Их следует превратить в один составной оператор с помощью операторных скобок begin... end.
program Ex_8; var C_f, C_L, t: integer; K:real; begin writeln('Enter first temperature in Celcius '); readln(C_f); writeln('Enter last temperature in Celcius '); readln(C_L); writeln('Celcius','Kelvin':8); For T:=C_f to C_L do begin K:=T+273.15; writeln(T:4,K:11:2); end; readln end. Задача. Вычислить сумму конечного числа слагаемых, используя цикл с параметром. При вычислении пропустить сомножители которые равны нулю или бесконечности. Числитель будет равеннулю когда k=2 и k=3. Знаменатель раве нулю когда k=–4. Эти точки нужно исключить из вычисления.
program Project1; var z:real; k,k1,k2:integer; begin write('Enter k1='); readln(k1); write('Enter k2='); readln(k2); z:=0; for k:=k1 to k2 do if (k<>2)and (k<>3)and (k<>–4) then z:=z+(k-2)*(k-3)/(k+4); writeln('z=',z:6:2); readln end.
Алгоритм, в якому є послідовність операцій, яку треба повторювати багато разів, називається циклічним, а сама послідовність операцій, яка повторюється, називається циклом.
В мові Pascal можливо організувати три види циклів: 1. З параметром (оператор For.. to/downto.. do). 2. З передумовою (оператор While.. do). 3. З постумовою (Repeat.. until). Цикл складається із заголовку циклу та тіла.
Кожне виконання тіла циклу називається його ітерацією. Змінні значення яких модифікуються в тілі циклу і впливають на умову завершення циклу називаються параметрами циклу. Оператор циклу з лічильником (For.. to/downto.. do) Розглянемо задачу обчислення факторіалу додатного цілого числа N. Легко побачити, що , тому обчислення можна звести до багато разового виконання оператору factorial:=factorial*i; де i = 2, 3,..., n, а початкове значення змінної factorial дорівнює 1.
Тіло циклу складатиметься з однієї вищезгаданої операції присвоєння, а кількість повторень становитиме n. Таким чином, умовою завершення циклу буде виконання певної кількості ітерацій. Відстежити істинність такої умови дозволяє спеціальний різновид параметру циклу – лічильник ітерацій.
Дата добавления: 2014-01-07; Просмотров: 436; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |