Студопедия
rus | ua | other

Home Random lecture






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


Date: 2015-10-07; view: 409.


Вложение циклов в разветвления и наоборот

Реальная процедура на Visual Basic может представлять собой сложную мозаику из циклических и разветвляющихся частей, вложенных друг в друга. Мы уже видели в 6.3, как в оператор цикла были вложены операторы ветвления. В свою очередь в них могут быть вложены операторы цикла, и так до бесконечности.

Для тренировки определите, что напечатает следующий фрагмент:

Private Sub Command1_Click()

For i = 1 To 5

a = 9

If i * i = a Then

For k = 5 To 8

Debug.Print k;

Next k

Else

Debug.Print 1997

End If

Next i

End Sub

Здесь внутрь For i = 1 To 5 вложен If i * i = a , а внутрь него вложен For k = 5 To 8.

Ответ:

5 6 7 8 1997

Вложенные циклы или цикл внутри цикла - весьма распространенная конструкция при программировании.

Поставим себе задачу - напечатать таблицу умножения. В следующем виде:

 

1*1= 1*2= 1*3= 1*4= 1*5= 1*6= 1*7= 1*8= 1*9= 1*10=
2*1= 2*2= 2*3= 2*4= 2*5= 2*6= 2*7= 2*8= 2*9= 2*10=
3*1= 3*2= 3*3= 3*4= 3*5= 3*6= 3*7= 3*8= 3*9= 3*10=
4*1= 4*2= 4*3= 4*4= 4*5= 4*6= 4*7= 4*8= 4*9= 4*10=
5*1= 5*2= 5*3= 5*4= 5*5= 5*6= 5*7= 5*8= 5*9= 5*10=
6*1= 6*2= 6*3= 6*4= 6*5= 6*6= 6*7= 6*8= 6*9= 6*10=
7*1= 7*2= 7*3= 7*4= 7*5= 7*6= 7*7= 7*8= 7*9= 7*10=
8*1= 8*2= 8*3= 8*4= 8*5= 8*6= 8*7= 8*8= 8*9= 8*10=
9*1= 9*2= 9*3= 9*4= 9*5= 9*6= 9*7= 9*8= 9*9= 9*10=
10*1= 10*2= 10*3= 10*4= 10*5= 10*6= 10*7= 10*8= 10*9= 10*10=

 

Начнем с малого - пусть нужно напечатать

1*1=1

Вот фрагмент программы:

 

Фрагмент 1

a=1

b=1

proizv = a * b

Print a, "*" ,b, "=" ,proizv

Здесь в операторе Print 5 элементов:

* сомножитель a,

* символ знака умножения "*",

* сомножитель b,

* символ "=",

* значение произведения proizv

 

Усложним задачу. Попробуем заставить компьютер напечатать первую строку таблицы:

1*1= 1*2= 1*3= 1*4= 1*5= 1*6= 1*7= 1*8= 1*9= 1*10=

 

Замечаем, что здесь нам нужно решить 9 элементарных задач на вычисление произведения, первую из которых решает фрагмент 1. Все они очень похожи и различаются лишь значением второго сомножителя. Таким образом, для решения каждой из 9 задач подошел бы наш фрагмент 1, если бы в нем в операторе b=1 вместо единицы стояла нужная цифра. В данном случае идеально подходит оператор For:

 

Фрагмент 2

a = 1

For b = 1 To 10

proizv = a * b

Print a; "*"; b; "="; proizv;


<== previous lecture | next lecture ==>
Сумматоры | Поиск максимального из чисел
lektsiopedia.org - 2013 год. | Page generation: 0.035 s.