КАТЕГОРИИ: Архитектура-(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 Вот фрагмент программы:
Фрагмент 1 a=1 b=1 proizv = a * b Print a, "*",b, "=",proizv Здесь в операторе Print 5 элементов: * сомножитель a, * символ знака умножения "*", * сомножитель b, * символ "=", * значение произведения proizv
Усложним задачу. Попробуем заставить компьютер напечатать первую строку таблицы:
Замечаем, что здесь нам нужно решить 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; Просмотров: 1069; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |