Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 407; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.