Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 516; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.144.162 (0.007 с.) |