Краткие теоретические сведения. Цель работы: приобрести навыки в составлении циклических программ, изучить назначение и правила использования операторов цикла

Лабораторная работа №14

ОРГАНИЗАЦИЯ ЦИКЛОВ

Цель работы: приобрести навыки в составлении циклических программ, изучить назначение и правила использования операторов цикла.

Краткие теоретические сведения

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

Например. Пусть требуется опреде­лить остаток от деления числа М на число N (М и N — про­извольные натуральные числа). Самый простой способ реше­ния этой задачи заключается в следующем: проверяем, не меньше ли М, чем N (если М < N, то М и есть остаток от де­ления М на N); если М ³ N, то уменьшаем значение М на значение N (т.е. вычитаем из М число N и дальнейшие дей­ствия осуществляем с результатом этой операции, который для удобства мы снова обозначим М); снова проверяем, не стало ли М меньше N, если не стало, то еще раз уменьшаем значение М на величину значения N и т. д.

Эти две операции (сравнения и вычитания) повторяются до тех пор, пока очередное значение М не станет меньше значе­ния N. Значение М в этот момент и будет остатком от деле­ния заданных вначале чисел.

Как видно, в этом примере несколько раз повторяется одна и та же последовательность действий.

Компьютер может заданное число раз выполнить одни и те же действия с разными данными. Повторяющиеся действия в программировании называются циклом. Если изобразить цикл в виде блок-схемы, то получатся две разные структуры (рис. 5). Цикл не может выполняться вечно, в этом случае нарушается свойство алгоритма решить задачу за конечное чис­ло шагов. Цикл заканчивается по какому-либо условию. Про­верка этого условия может производиться в начале каждого повторяющегося шага, в этом случае цикл называется пока. При проверке условия в конце каждого шага цикл называется до. Разновидностью цикла до является цикл пересчет.

Рис. 5. Циклические структуры

В цикле пока сначала проверяется условие, и если оно вы­полняется, т. е. логическое выражение истинно, то выполня­ется оператор и снова проверяется условие. Записанное в цикле пока условие является условием продолжения цикла. Как только оно перестанет выполняться, цикл завершится. На рисунке 5 выход из ромба «+» (или да) означает выполнение условия цикла, «—» (или нет) — невыполнение. Цикл пока не выполнится ни разу, если условие при входе в структуру ока­залось ложным. Как правило, цикл пока содержит условие повторения, а цикл до — условие окончания работы цикла. Обе структуры имеют один вход и один выход. Однако цикл до всегда выполняется хотя бы один раз, потому что условие проверяется после выполнения действия. Это затрудняет про­верку правильности программы, поэтому лучше использовать цикл пока. Оператор в цикле может быть простым или со­ставным, заключенным в операторные скобки. В этом случае в цикле могут повторяться несколько операторов, а не один. Повторяющиеся в цикле операторы называются телом цикла. Циклы можно организовывать, используя различные сред­ства Паскаля.

Оператор безусловного перехода. Этот оператор позволяет перейти без проверки условия либо на один из предыдущих операторов, либо на один из последующих, т. е. изменить по­рядок выполнения команд.

Общий вид оператора: goto n;

где п — целое число, не более чем из четырех цифр, называе­мое меткой. Метка появляется в программе три раза:

1) в опи­сательной части в разделе Label;

2) в операторе goto;

3) перед оператором, на который осуществляется безусловный пере­ход, в этом случае метка от оператора отделяется двоеточием.

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

Исходные данные Первый шаг Второй шаг Третий шаг НОД (А, В) = 5
А =25 А= 10 А =10 А=5  
В= 15 В=15 В=5 В=5  

program P 5;

label 1,2;

var a, b: integer;

Begin

write (‘введите два натуральных числа’);

readln (a, b);

1: if a = b then goto 2;

if a > b then a: = a - b

else b: = b - a;

goto 1;

2: write (‘НОД = ‘, a);

readln;

End.

Оператор цикла пока. Циклический процесс можно организовать без использования специальных операторов. Но удобнее с операторами цикла пока, который имеет вид: while условие do оператор;

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

program P6;

var a, b: integer;

Begin

write (‘введите два натуральных числа’);

readln (а, b):

while a<>b do

if a>b then a: = a - b

else b: = b - a;

write (‘НОД = ‘, a);

readln;

End.

Оператор цикла до. Проверка условия в цикле до осу­ществляется после выполнения оператора. Если условие в цик­ле пока является условием продолжения повторений, то усло­вие в цикле до — условием выхода из цикла, его завершением. Поэтому для одной и той же задачи эти условия противопо­ложны. Общий вид оператора: repeat оператор until условие;

Между словами repeat (повторить) и until (до тех пор пока) можно записать любое количество операторов без использова­ния операторных скобок. Перед словом until не ставится точ­ка с запятой.

Программа нахождения наибольшего общего делителя при­мет вид:

program P7;

var a, b: integer;

Begin

write (‘введите два натуральных числа’);

readln (a, b);

Repeat

if a > b then a: = a - b;

if b > a then b: = b - a

until a = b;

write (‘НОД = ‘,a);




double arrow
Сейчас читают про: