Читайте также:
|
|
Одна из типичных задач программирования формулируется примерно так. Имеется большое количество данных, например, тех же температур или высот. С этими данными компьютер должен что-нибудь сделать, например, вычислить среднегодовую температуру, количество морозных дней, максимальную взятую высоту и т.п. Раньше мы уже вычисляли подобные вещи, и при этом данные вводили в компьютер с клавиатуры одно за другим в одну и ту же ячейку памяти (см. Глава 8). Однако, программистская практика показывает, что удобно, а часто и необходимо иметь данные в оперативной памяти сразу все, а не по очереди. Тогда для задачи про температуру нам понадобится 365 ячеек. Эти 365 ячеек мы и назовем массивом. Итак, массивом можно назвать ряд ячеек памяти, отведенных для хранения значений индексированной переменной. Вопрос о том, как большое количество значений оказывается в памяти, отложим на будущее (16.2).
Знаете, что напоминает одномерный массив? Список ListBox, который мы проходили в 15.5. Такой же аккуратный ряд пронумерованных элементов.
Рассмотрим на простом примере, как Visual Basic управляется с массивами. Предположим, в зоопарке живут три удава. Известна длина каждого удава в сантиметрах (500, 400 и 600). Какая длина получится у трех удавов, вытянутых в линию?
Обозначим длину первого удава - dlina(1), второго - dlina(2), третьего - dlina(3). Прикажем Visual Basic отвести под эту индексированную переменную массив ячеек в памяти:
Dim dlina (1 To 3) As Integer
Здесь 1 - нижняя граница индекса, 3 - верхняя граница индекса. Слово To обозначает до. В целом эту строку можно перевести так: Отвести в памяти под переменную dlina ряд ячеек типа Integer, пронумерованных от 1 до 3.
Вот программа полностью:
Dim dlina(1 To 3) As Integer
Dim summa As Integer
Private Sub Command1_Click()
dlina(1) = 500
dlina(2) = 400
dlina(3) = 600
'В этот момент в трех ячейках памяти уже находятся числа
'и с ними можно выполнять арифметические действия
summa = dlina(1) + dlina(2) + dlina(3)
Debug.Print summa
End Sub
Если смысл написанного выше вам неясен, запустите отладочный пошаговый режим выполнения программы и загляните в текущие значения dlina(1), dlina(2), dlina(3), summa.
Теперь запишем ту же программу в предположении, что длины удавов заранее неизвестны и мы их вводим при помощи InputBox:
Dim dlina(1 To 3) As Integer
Private Sub Command1_Click()
dlina(1) = InputBox("Введите длину 1-го удава")
dlina(2) = InputBox("Введите длину 2-го удава")
dlina(3) = InputBox("Введите длину 3-го удава")
Debug.Print dlina(1) + dlina(2) + dlina(3)
End Sub
Вопрос: Что напечатает следующий фрагмент:
i = 2: a(3) = 10: a(i) = 100: a(i + 6) = a(i) + a(5 - i): i = 0: Debug.Print a(i + 3) + a(2) + a(i + 8)
Ответ: 220
Пояснение: i = 2; a(3) = 10; a(2) = 100; a(2 + 6) = a(2) + a(5 - 2); i = 0; Debug.Print a(0 + 3) + a(2) + a(0 + 8)
Теперь решим ту же задачу про удавов в предположении, что удавов не три, а тысяча:
Dim dlina(1 To 1000) As Integer
Dim summa As Integer
Private Sub Command1_Click()
'Вводим длины тысячи удавов, хоть это и утомительно и никто так не делает:
For i = 1 To 1000
dlina(i) = InputBox("Введите длину " & i & "-го удава")
Next
'Здесь на первом выполнении цикла i=1 и поэтому компьютер вводит число в ячейку dlina(1),
'на втором - i=2 и поэтому компьютер вводит число в ячейку dlina(2) и т.д.
'Определяем суммарную длину тысячи удавов:
summa = 0
For i = 1 To 1000
summa = summa + dlina(i)
Next
Debug.Print summa
End Sub
Отлаживая эту программу, возьмите, конечно, вместо числа 1000 число 3.
Решим еще одну задачу. Дан ряд из 10 произвольных чисел: a(1), a(2),..., a(10). Подсчитать и напечатать суммы восьми троек стоящих рядом чисел: a(1)+a(2)+a(3), a(2)+a(3)+a(4), a(3)+a(4)+a(5),......, a(8)+a(9)+a(10).
Dim a(1 To 10) As Integer
Private Sub Command1_Click()
a(1) = 23: a(2) = 28: a(3) = 4: a(4) = 0: a(5) = 12
a(6) = 10: a(7) = 23: a(8) = 2: a(9) = 9: a(10) = 1
For i = 1 To 8
Debug.Print a(i) + a(i + 1) + a(i + 2)
Next
End Sub
Задание 116:. Напишите с использованием массива программу вычисления среднегодовой температуры (Для отладки в компьютере годом можно считать неделю).
Задание 117:. Подсчитайте количество теплых дней в году (когда температура выше 20 град.).
Задание 118:. Каким по порядку идет самый жаркий день?
Задание 119:. Вычислить и распечатать первые 70 чисел Фибоначчи.
Дата добавления: 2015-11-16; просмотров: 61 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Проект - Гонки (игра) | | | Использование массивов при программировании игр |