![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Глава 8. Типичные маленькие программыСодержание книги
Поиск на нашем сайте
Каждому программисту известны такие слова, как счетчик, сумматор, вложенные циклы и другие подобные понятия, составляющие элементарную технику программирования. Без них не обходится ни одна реальная программа, и если мы хотим идти дальше, то нам без них не обойтись. В этой главе я не буду вводить новых операторов, а покажу, как программировать типичные задачи, в том числе и те, что используют упомянутые понятия. Вычислительная циклическая программа Задача: Во дворце 40 залов. Известны длина, ширина и высота каждого зала. Вычислить площадь пола и объем каждого зала. Сначала напишем фрагмент для одного зала: Dlina = InputBox ("Введите длину") 'Начало фрагмента Shirina = InputBox ("Введите ширину") Visota = InputBox ("Введите высоту") S = Dlina * Shirina 'Площадь пола V = S * Visota 'Объем Debug.Print "Площадь пола="; S, "Объем зала="; V 'Конец фрагмента Для решения задачи этот фрагмент нужно выполнить 40 раз, для чего вполне естественно вложить его в оператор For: Private Sub Command1_Click() For i = 1 To 40 Dlina = InputBox("Введите длину") 'Начало фрагмента Shirina = InputBox("Введите ширину") Visota = InputBox("Введите высоту") S = Dlina * Shirina 'Площадь пола V = S * Visota 'Объем Debug.Print "Площадь пола="; S, "Объем зала="; V 'Конец фрагмента Next i End Sub Полужирным шрифтом я выделил новые по сравнению с предыдущим фрагментом строки. Чтобы программа подходила для любого числа залов, нужно вместо For i = 1 To 40 написать N = InputBox("Сколько залов во дворце?") For i = 1 To N
Задание 47: Даны стороны N кубиков. Вычислить объем каждого. Роль ошибок Пусть во дворце три зала размерами 20*15*4, 30*20*5 и 10*5*3. В этом случае, выполняя программу предыдущего параграфа, мы вводим N=3 и оператор For выполняет цикл три раза. Мы знаем, что по ошибочной программе компьютер выдает ошибочные результаты. Например, если в нашей программе мы вместо V=S*visota напишем V=S+visota, то результаты будут такими: Площадь пола=300 Объем зала=304 Площадь пола=600 Объем зала=605 Площадь пола=50 Объем зала=53 Если же случайно вместо For i=1 To N написать For i=2 To N то результаты будут такими: Площадь пола=300 Объем зала=1200 Площадь пола=600 Объем зала=3000 На этом программа закончит работу и не спросит размеров третьего зала. Вам не кажется странным, что она посчитала 1 и 2 залы, а не 2 и 3? Если кажется, то учтите, что пользователь ничего не знает об ошибке в программе, а компьютер не говорит ему, размеры какого по счету зала ему нужно вводить.
Задания 48-49: Определите без компьютера, что напечатает компьютер, если 48) строку For i=1 To N поместить на три строки ниже, а именно - перед строкой S = Dlina * Shirina 49) поменять местами строки Debug.Print и Next
Если задания не получаются, введите программы в компьютер и используйте пошаговый режим. Счетчики Счетчик - это переменная величина, в которой вы что-нибудь подсчитываете. Для чего нужны счетчики? Ну хотя бы для того, чтобы подсчитать количество жизней главного персонажа в компьютерной игре.
Задача 1: В компьютер с клавиатуры вводятся числа. Компьютер после ввода каждого числа должен печатать, сколько среди них уже введено положительных. Фрагмент, решающий задачу: c=0 'Обнуляем счетчик m: a = InputBox("Введите очередное число") If a>0 Then c=c+1 Debug.Print "Из них положительных -", c GoTo m Пояснения: В 6.4 мы придумали переменную i, которую назвали счетчиком циклов. Здесь мы тоже придумали переменную c. Она у нас выполняет роль счетчика положительных чисел. Сердце счетчика - оператор c=c+1. Именно он в нужный момент увеличивает счетчик на 1. Но и без If a>0 Thenтоже никак нельзя. Если бы его не было, то c подсчитывал бы все числа без разбору, то есть был бы обыкновенным счетчиком циклов. В нашем же фрагменте увеличение с на 1 выполняется не всегда, а лишь при положительном а. Обязательно прокрутите программу в пошаговом режиме. В сложных программах не забывайте обнулять счетчик перед входом в цикл, а не то он начнет считать вам не с нуля, а бог знает с чего. Как бы вам понравилось, если бы таксист в начале поездки не обнулил счетчик?
В нашем фрагменте значения счетчика печатаются при каждом выполнении цикла. Изменим задачу. Задача 2: В компьютер вводится ровно 200 чисел. Компьютер должен подсчитать и один раз напечатать, сколько среди них положительных. Программа: Private Sub Command2_Click() c = 0 'Обнуляем счетчик For i = 1 To 200 a = InputBox("Введите очередное число") If a > 0 Then c = c + 1 Next i Debug.Print "Из них положительных -"; c End Sub Пояснения: Путь рассуждений здесь тот же, что и в первой задаче. В результате применения оператора For тело цикла выполняется ровно 200 раз, благодаря чему счетчик с накапливает нужное значение. Оператор Debug.Print выполняется только один раз и печатает последнее накопленное значение, потому что в ячейке с будет находиться именно оно..
Задание 50: Что будет, если 1) Вместо c=0 написать c=10. 2) Вместо c=c+1 написать c=c+2. 3) Строки Next и Debug.Print поменять местами. 4) Строки c=0 и For поменять местами. 5) Строки For и InputBox поменять местами.
А в следующей программе мы используем уже два счетчика. Изменим задачу. Задача 3: В компьютер вводится ровно 200 чисел. Компьютер должен подсчитать и один раз напечатать, сколько среди них положительных чисел и сколько нулей. Программа: Private Sub Command3_Click() c_полож = 0 'Обнуляем счетчик положительных чисел c_нулей = 0 'Обнуляем счетчик нулей For i = 1 To 200 a = InputBox("Введите очередное число") If a > 0 Then c_полож = c_полож + 1 If a = 0 Then c_нулей = c_нулей + 1 Next i Debug.Print "Из них положительных -"; c_полож, "Нулей -"; c_нулей End Sub Как узнать, насколько Лев Толстой любил слово "добро"? Для этого достаточно, используя с минимальными изменениями нижеприведенную программу, ввести в компьютер слово за словом его произведения. Задача 4: В компьютер один за другим вводятся произвольные символы. Ввод заканчивается символом " / ". Подсчитать, какой процент от общего числа введенных символов составляют символ " W " и символ ": " по отдельности. Здесь мы организуем три счетчика одновременно: сW - для подсчета букв W, сDv - для подсчета двоеточий, а также i - счетчик общего числа введенных символов, кроме " / ". Программа: Private Sub Command4_Click() Dim i As Integer, cW As Integer, cDv As Integer Dim procent_W As Integer, procent_Dv As Integer Dim simvol As String
i = 0: cW = 0: cDv = 0 'Обнуляем все три счетчика Do simvol = InputBox("Введи символ") If simvol <> "/" Then i = i + 1 'Если это не /, то "посчитай" его Select Case simvol Case "W" 'Если это W, то cW = cW + 1 'увеличь счетчик символов W Case ":" 'Если это:, то cDv = cDv + 1 'увеличь счетчик символов: Case "/" 'Если это /, то Exit Do 'завершай работу цикла End Select Loop procent_W = Round(100 * cW / i) 'Вычисляй процент символов W procent_Dv = Round(100 * cDv / i) 'Вычисляй процент символов: Debug.Print procent_W, procent_Dv End Sub
Задание 51: В компьютер вводится N чисел. Подсчитать из них количество положительных, отрицательных и тех, что превышают число 10. Задание 52: В компьютер вводятся пары целых чисел. Подсчитать, сколько среди них пар, дающих в сумме число 13. Подсчет закончить после ввода пары нулей. Сумматоры Сумматор - это переменная величина, в которой вы подсчитываете сумму чего-либо. Для чего нужны сумматоры? Ну хотя бы для того, чтобы подсчитать общее количество золота, которое вы нашли в нескольких кладах в компьютерной игре.
Если вы поняли идею счетчика, то понять идею сумматора вам будет нетрудно. Посмотрим, как будет работать следующий фрагмент: 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 произвольных чисел. Подсказка: Несмотря на то, что произведение - не сумма, эта программа будет отличаться от программы суммирования всего двумя существенными символами (какими?), а структура обеих программ совершенно одинакова.
|
|||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 526; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.183.165 (0.01 с.) |