Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Циклы while




Циклы с предусловием

Циклы

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

Обобщенная блок-схема цикла состоит из следующих блоков(см. раздел 1.3): задание начальных значений, проверка условия продолжения (окончания) цикла, тело цикла, изменение условия продолжения (окончания) цикла.

Примеры. Программирование циклов без использования инструкции цикла.

Дано: {ai}, i=1...100. Найти сумму(ai>0) и сумму(ai<0).

C

u=v=0; i=0; // Инициализация цикла

begin: if (i>=100) goto end; // Условие окончания

if (a[ i ]>0)u+=a[ i ]; if (a[ i ]<0)v+=a[ i ]; // Тело цикла

i++; // Изменение условия

goto begin; // Переход к началу

end:;

Basic

u=0: v=0: i=0 ' Инициализация цикла

begin: if i>=100 then goto konec ' Условие окончания

if a(i)>0 then u+=a(i) ' Тело

if a(i)<0 then v+=a(i) ' цикла

i+=1 ' Изменение условия

goto begin ' Переход к началу

konec:..................................

Дано: {ai}, i=1...100. Найти y=max{ai} и его номер.

С

MaxElem=a[0]; NumbMaxElem=i=1; // Инициализация цикла

Begin: if (i>=100) goto End; // Условие окончания

if (MaxElem<a[ i ]){ // Тело

MaxElem=a[ i ]; NumbMaxElem=i+1; //

} // цикла

i++; // Изменение условия

goto Begin; // Переход к началу

End:;

Basic

MaxElem=a(0): NumbMaxElem=1: i=1 ' Инициализация цикла

Begin: if i>=100 goto Konec ' Условие окончания

if MaxElem<a(i) then MaxElem=a(i): NumbMaxElem=i+1' Тело цикла

i+=1 ' Изменение условия

goto Begin ' Переход к началу

Konec:...........................................

Различают циклы с пред условием (тело цикла может ни разу не выполняться)и пост условием (тело цикла выполняется хотя бы 1 раз).

Пример. Цикл с постусловием.

MaxElem=a(0): NumbMaxElem=1: i=1

Begin: if MaxElem<a(i) then MaxElem=a(i): NumbMaxElem=i+1

i+=1

if i<100 goto Begin

Konec:...........................................

Наиболее употребительный тип инструкции цикла. Существует несколько форм таких инструкций и в языке C, и в языке Basic. Назовем их условно циклы while и циклы for.

C

Формат:

while (<условие>)<инструкция>;

Эквивалентная схема:

label: if (<условие>)<инструкция>; goto label;

...........................................................................

Замечания.

1. Тело цикла – 1 инструкция. Следовательно, при необходимости выполнения в теле нескольких действий нужно использовать составную инструкцию.

2. Для того, чтобы цикл когда-либо закончился (не произошло зацикливания), необходимо в теле цикла изменять переменные, входящие в условие.

3. Заметим, что задание начальных значений в инструкцию не входит. Следовательно, для этой цели необходимо использовать отдельные инструкции, расположив их перед инструкцией while.

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

Пример. Найти Sxn/n!,n=1,2,..., пока |un|>5e-6.

Рекуррентное соотношение: un/un-1=xn*(n-1)!/xn-1*n!=x/n àun=un-1*x/n

s=0;

u=n=1;

while (fabs (u)>5e-6){

u *= x/n;

s += u;

n++;

}




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 349; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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