Лекция: Счетчики
Счетчик — это переменная величина, в которой вы что-нибудь подсчитываете. Для чего нужны счетчики? Ну хотя бы для того, чтобы подсчитать количество жизней главного персонажа в компьютерной игре.
Задача 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. Подсчет закончить после ввода пары нулей.