Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Понятно о Visual Basic.NET. Самоучитель.Ч2.2005...docx
Скачиваний:
43
Добавлен:
25.11.2019
Размер:
4.02 Mб
Скачать
      1. Мощь одномерных массивов

Внутри скобок мы можем писать не только числа, но и переменные, и выражения. От этого программа сразу станет с непривычки менее понятной, однако приобретет необыкновенную мощь.

Привыкаем к переменным и выражениям в качестве индексов. Сначала мы должны привыкнуть к переменным и выражениям в качестве индексов. Вот три эквивалентных варианта программы, распечатывающей длины удавов. Вы должны без компьютера убедиться, что все три варианта распечатают одно и то же.

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

Dim dlina() As Integer = {0, 500, 400, 600}

Debug.WriteLine(dlina(1))

Debug.WriteLine(dlina(2))

Debug.WriteLine(dlina(3))

End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

Dim dlina() As Integer = {0, 500, 400, 600}

Dim i As Integer

i = 1

Debug.WriteLine(dlina(i))

i = 2

Debug.WriteLine(dlina(i))

i = i + 1

Debug.WriteLine(dlina(i))

End Sub

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

Dim dlina() As Integer = {0, 500, 400, 600}

Dim i As Integer = 1

Dim k As Integer = 10

Debug.WriteLine(dlina(i))

Debug.WriteLine(dlina(k - 8))

i = 2

k = 1

Debug.WriteLine(dlina(k + i))

End Sub

Мощи здесь пока не видно, увидите чуть позже.

Вопрос: Продолжаем привыкать. Не подходя к компьютеру, ответьте, что напечатает следующая процедура:

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

Dim a(100), i As Integer

i = 2 : a(3) = 10 : a(i) = 100 : a(i + 6) = a(i) + a(5 - i) : i = 0 : Debug.WriteLine(a(i + 3) + a(2) + a(i + 8))

End Sub

Ответ: 220

Хорошо бы вы получили правильный ответ самостоятельно. Если не смогли получить, значит вы не понимаете чего-то важного или просто невнимательны. В этом случае читайте пояснение:

Первая ступенька: i = 2 a(3) = 10 a(2) = 100 a(2 + 6) = a(2) + a(5 - 2) i = 0 Debug.WriteLine( a(0 + 3) + a(2) + a(0 + 8))

Вторая ступенька: i = 2 a(3) = 10 a(2) = 100 a(8) = a(2) + a(3) i = 0 Debug.WriteLine( a(3) + a(2) + a(8))

Третья ступенька: i = 2 a(3) = 10 a(2) = 100 a(8) = 110 i = 0 Debug.WriteLine( 10 + 100 + 110)

Цикл – мощное оружие при работе с массивами. Теперь решим задачу про суммарную длину удавов в предположении, что удавов не 3, а 1000:

Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click

Dim Число_удавов As Integer = 1000

'Верхняя граница индекса может быть выражена переменной величиной:

Dim dlina(Число_удавов) As Integer

Dim summa, i As Integer

'Вводим с клавиатуры длины тысячи удавов, хоть это и утомительно и никто так не делает.

'Здесь на первом выполнении цикла i=1 и поэтому компьютер вводит число в ячейку dlina(1),

'на втором - i=2 и поэтому компьютер вводит число в ячейку dlina(2) и т.д.

For i = 1 To Число_удавов

dlina(i) = InputBox("Введите длину " & i & "-го удава")

Next

'Определяем суммарную длину тысячи удавов:

summa = 0

For i = 1 To Число_удавов

summa = summa + dlina(i)

Next

Debug.WriteLine(summa)

End Sub

Отлаживая эту программу, возьмите, конечно, вместо числа 1000 какое-нибудь маленькое число.

Пример. Продолжаем привыкать к индексам. Решим еще одну задачу. Дан ряд из 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)

Вот программа:

Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click

Dim a() As Integer = {0, 5, 3, 4, 0, 20, 10, 23, 2, 9, 1000}

Dim i As Integer

For i = 1 To 8

Debug.WriteLine(a(i) + a(i + 1) + a(i + 2))

Next

End Sub

Вот что она напечатает:

12

7

24

30

53

35

34

1011

Следующие два задания очень важны, так как это ваши первые задания по массивам.

Напишите с использованием массива программу вычисления среднегодовой температуры. Подсчитайте также количество теплых дней в году (когда температура выше 20 градусов). Узнайте, каким по порядку идет самый жаркий день. (Для отладки в компьютере годом можно считать неделю.)

Вычислить и распечатать первые 139 чисел Фибоначчи.