Студопедия

КАТЕГОРИИ:


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

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




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

Сумматоры

Сумматор - это переменная величина, в которой вы подсчитываете сумму чего-либо. Для чего нужны сумматоры? Ну хотя бы для того, чтобы подсчитать общее количество золота, которое вы нашли в нескольких кладах в компьютерной игре.

 

Если вы поняли идею счетчика, то понять идею сумматора вам будет нетрудно. Посмотрим, как будет работать следующий фрагмент:

s=0 'Обнуляем сумматор. Это не менее важно, чем обнулить счетчик

m: a = InputBox("Введите очередное число")

s=s+a 'Увеличиваем сумматор

Debug.Print "Сумма="; s

GoTo m

 

В ячейке s накапливается сумма вводимых чисел a, поэтому назовем эту ячейку сумматором. Отличие сумматора от счетчика в том, что счетчик увеличивается на 1 оператором c=c+1, а сумматор - на суммируемое число оператором s=s+a.

Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.

Программа:

Private Sub Command2_Click()

N = InputBox("Сколько чисел будем складывать?")

s = 0

For i = 1 To N

a = InputBox("Введите очередное число")

s = s + a

Next i

Debug.Print "Сумма равна"; s

End Sub

Задание 53: Пусть N=2, a=5 и 3. Тогда по этой программе Visual Basic напечатает 8. Что он напечатает, если:

1) Вместо s=0 написать s=10.

2) Вместо s=s+a написать s=s+a+1.

3) Строки Next и Debug.Print поменять местами.

4) Строки s=0 и For поменять местами.

5) Строки For и InputBox поменять местами.

6) Строки s=s+a и Next поменять местами.

7) Вместо For i=1 To N написать For i=2 To N.

Задания 54-56: Написать программы для следующих задач:

54) Во дворце 40 залов. Известны длина и ширина каждого зала. Вычислить площадь пола всего дворца.

55) Вычислить средний балл учеников вашего класса по физике.

56) Вычислить произведение N произвольных чисел. Подсказка: Несмотря на то, что произведение - не сумма, эта программа будет отличаться от программы суммирования всего двумя существенными символами (какими?), а структура обеих программ совершенно одинакова.

Реальная процедура на 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;




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


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


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



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




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