Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
61
Добавлен:
18.05.2015
Размер:
127.49 Кб
Скачать

Диаграммы Найси-Шнейдермана For While Repeat

For

Program P1; Var i,S:integer; Begin

S:=0;

For i:=1 to 5 do

S:=S+i;

Writeln(‘S=’,S:

5);

End.

Программы

While

Repeat

Program P2;

Program P3;

Var i,S:integer;

Var i,S:integer;

Begin

Begin

S:=0; i:=1;

S:=0; i:=1;

While i<=5 do

Repeat

Begin

S:=S+i;

S:=S+i;

I:=i+1;

I:=i+1;

Until i>=6;

End;

Writeln(S);

Writeln(‘S=’,S);

End.

End.

 

Вложенные циклы

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

посредством любых рассмотренных ранее операторов (For, While, Repeat … Until).

Пример.

Старинная задача. Сколько можно купить быков, коров и телят, если бык стоит 10 рублей, корова

– 5 рублей, теленок – полтинник (0,5 рубля), при условии, что на 10 рублей надо купить 100 голов скота.

Решение: обозначим через b – количество быков, k – количество коров, t – количество телят. После этого можно записать два уравнения:

10b + 5 k + 0,5t = 100

и

b + k + t = 100

Преобразуем их:

 

 

 

20b + 10k + t = 200

и

b + k + t = 100

На 100 рублей можно купить:

 

не более 10 быков, т.е. 0 ≤ b ≤ 10,

не более 20 коров, т.е.

0 ≤ k ≤ 20,

не более 200 телят, т.е. 0 ≤ t ≤ 200.

Таким образом, получаем:

 

Var b, k, t: Integer;

 

 

Begin

 

 

 

For b: = 0 To 10 Do

 

 

For k: = 0 To

20 Do

 

For t: = 0 To

200 Do

 

If (20*b+10*k+t=200) and (b+k+t=100) Then WriteLn ( ‘быков ‘ ,b, ‘ коров ‘ ,k, ‘ телят ‘ ,t)

End.

Сколько раз будет проверяться условие в данной программе (сколько раз будет выполняться оператор If)? Переменная b принимает 11 различных значений (от 0 до 10), для каждого значения переменной b переменная k изменяется от 0 до 20, а для каждого значения переменной k переменная t изменяется от 0 до 200.

Таким образом, условие будет проверяться 11 * 21* 201 = 46431 раз. Но если известно количество быков и коров, то количество телят можно вычислить по формуле

t = 100 – (b + k) и цикл по переменной t можно исключить.

Соседние файлы в папке Технологии обработки информации(лекции)