Программирование на basic массивы

Программирование на basic массивы

Массив представляет собой набор данных одного типа. Например, объявим массив элементов типа Integer:

Dim nums(5) As Integer nums(0) = 0 nums(1) = 1 nums(2) = 2 nums(3) = 3 Console.WriteLine(nums(3))

Здесь мы объявили массив из 6 элементов типа Integer. По умолчанию всем шести элементам в массиве присваивается 0. Затем первым четырем элементам массива мы присваиваем некоторые значения. Обратите внимание, что индексация в массиве начинается с нуля. При этом мы не можем выйти за рамки установленной длины массива в 6 элементов. А следующий код вызовет исключение ArrayIndexOutOfRange, поскольку восьмого элемента в массиве не существует, в нем определено только 6 элементов:

Dim nums(5) As Integer nums(7) = 7

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

В таком случае нам его еще предстоит инициализировать. Мы это можем сделать так:

Dim nums() As Integer nums = New Integer(5) <> nums(0) = 0 nums(1) = 1 nums(2) = 2 nums(3) = 3

В данном примере мы c помощью ключевого слова New указываем, что хотим создать новый объект. Также указываем размер массива. А фигурные скобки служат для инициализации массива. Однако нам необязательно присваивать все значения массива после объявления. Мы можем все сделать уже при объявлении массива:

Dim nums2 As Integer() = New Integer(5)

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

Читайте также:  Обучение разработке java приложений

‘Не указываем размер массива Dim nums1 As Integer() = New Integer() ‘Сокращенный синтаксис инициализации Dim nums2 As Integer() =

В первой главе мы уже говорили, что тип переменной может выводиться компилятором автоматически. То же самое применимо и к массиву. Например:

Кроме размера массив характеризуется таким понятием как размерность (dimension). В предыдущих примерах мы использовали одномерные массивы. Но массивы бывают и многомерными. Например:

'Одномерный массив Dim nums1 As Integer() = 'Двухмерный массив Dim nums2 As Integer(,) = , > Console.WriteLine(nums2(1, 1))

Здесь мы создали двухмерный массив, который можно представить в виде таблицы:

Источник

Основы программирования на Бейсике. Массивы

Решение задач с использованием массивов

Задание:
Найти все 3-хзначные числа, заканчивающихся на 2, 4, 8 и
делящихся на 6.
Ответ:
CLS
FOR I=100 TO 999
I3 = I – INT(I/10)*10
IF (I3 = 2) OR (I3 = 4) OR (I3 = 8) THEN
IF I/6 = INT(I/6) THEN
PRINT I
END IF
END IF
NEXT I

3.

Ответьте на вопросы
1. Для чего используется оператор цикла?
2. Назовите структуру цикла?
3. Что указывается в заголовке цикла?
4. Как записывается заголовок цикла в Бейсике?
5. Что показывает оператор NEXT?
6. Какие действия происходят по оператору
NEXT?
7. Что показывает тело цикла ?
.

4.

Определения
Массивом называется упорядоченная
совокупность однородных величин, обозначенных
каждая одним и тем же именем с различными
целочисленными индексами,
изменяющимися по порядку.
Массив — это набор однородных данных (чисел,
символов, слов).

5.

6.

Одномерный массив
Одномерный массив можно рассматривать как
список однотипных элементов.
Например, одномерными массивами являются:
•список фамилий студентов группы
•численные данные о средней температуре за
месяц
•буквы русского алфавита

7.

Каждый элемент массива обозначается именем массива и
индексом.
Индекс определяет положение элемента массива относительно его
начала, его порядковый номер.
() =
i
A(i)
1
2
3
4
5
1.6
5
-6.02
8.78
-10.1
А(1) = 1,6
А(2) = 5
А(3) = -6,02
А(4) = 8,78
А(5) = -10,1
Дан массив D:
i
D(i)
1.
2.
1
2
3
4
5
6
7
5
2.5
-6
7
8.1
-5.6
0.2
Из скольких элементов состоит этот массив? – 7
D(2) = ?
D(4) = ?
D(5) = ?
D(7) = ?
Если в программе используется массив, то он должен быть описан.

8.

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

9.

В Бейсике описание размера массива делается с помощью оператора
DIM, который имеет следующий синтаксис:
DIM имя массива (максимальное число элементов массива)
Например:
DIM D(7)
1
2
3
4
5
6
7
D
DIM S(5) — где S имя массива, 5- максимальное число элементов массива,
DIM M(25) — M имя массива, 25- максимальное число элементов массива.
Первый элемент массива имеет номер 0. Наличие именно этого
дополнительного элемента и приводит к тому, что массив занимает на
один элемент больше памяти, чем это задано в его описании, но с
единицы нам привычнее и удобнее, поэтому нулевой элемент можно
пропустить.
В момент описания массива (при обработке оператора DIM и
выделению массиву места в памяти) значения элементов массива не
определены; это значит, что в числовом массиве могут быть любые
числа.

10.

Доступ к элементам массива
Мы должны обращаться к отдельным элементам массива,
чтобы присвоить им значения, вывести их на печать,
использовать в выражении и т. д.
Для обращения к отдельному элементу массива мы должны
указать имя массива и после него в скобках номер этого
элемента в массиве: S(1), S(2), S(3).
Значение в скобках называется индексом массива.
Минимальное значение индекса 0, максимальное
значение индекса — это значение, заданное в операторе
DIM.
Индекс — это метка ячейки памяти которая используется для
обращения к этой ячейке.

11.

Элементы массива могут быть введены с клавиатуры с помощью
оператора INPUT или с помощью операторов DATA, READ или иным
способом. Например,
Ввод массива осуществляется с помощью цикла:
FOR I = 1 TO 7
INPUT A(I)
NEXT I
Вывод массива тоже осуществляется с помощью цикла:
FOR I = 1 TO 7
PRINT A(I)
NEXT I
Чтобы обратиться к элементу массива, надо указать его имя и индекс.
D(1) = 0
D(7) = 100

12.

Присваивание значений элементам массива
Первый способ
CLS
DIM S(5) в этой строке объявлен массив с именем S и пятью элементами
S(1)=53
S(2)=31
S(3)=-32
в этих строках элементам массива присваиваются значения
S(4)=44
S(5)=-23
PRINT «S(1) равно » ; S(1)
PRINT «S(2) равно » ; S(2)
PRINT «S(3) равно » ; S(3)
PRINT «S(4) равно » ; S(4)
PRINT «S(5) равно » ; S(5)
Результаты работы этой программы будут выглядеть так:
53
31
-32
44
-23

13.

Второй способ (заполнение массива с помощью оператора INPUT)
CLS
INPUT “введите количество элементов массива”; N
DIM A(N)
FOR I=1 TO N
PRINT “введите”; I; “элемент массива”
INPUT A(I)
NEXT I
FOR I=1 TO N
PRINT A(I)
NEXT I
Результаты работы программы для 3-х элементов будут выглядеть так:
Введите 1 элемент массива
? 23
Введите 2 элемент массива
? -54
Введите 3 элемент массива
? 21
23
-54
21

14.

Третий способ (заполнение массива с помощью оператора DATA)
CLS
DATA 23, 13, 98, -8, 7
DIM M(5)
FOR I=1 TO 5
READ M(I)
PRINT M(I)
NEXT I
Результаты работы этой программы будут выглядеть так:
23
13
98
-8
7
Четвертый способ (следующий короткий программный модуль
генерирует случайные числа и записывает их в массив):
DIM S(100)
FOR I=1 ТО 100
S(I) = 1+INT(100*RND)
NEXT I

15.

Алгоримы обработки одномерных массивов.
Формирование массива случайным образом из
области [A;B]
FOR I=1 TO N
M(I)=INT(RND*(A+B))-A
NEXT I
Вывод массива в строку
FOR I=1 TO N
PRINT M(I);» «;
NEXT I
Вывод массива в столбец
FOR I=1 TO N
PRINT M(I)
NEXT I

16.

Поиск минимального элемента массива
MIN=M(1);
FOR I=2 TO N
IF M(I) NEXT I
Перестановка элементов на четных и нечетных местах
FOR I=2 TO N STOP 2
P=M(I-1):M(I-1)=M(I):M(I)=P
NEXT I
Объединение 2-х массивов
FOR I=1 TO N STEP 2
M(2*I-1)=A(I):M(2*I)=B(I)
NEXT I

17.

Самостоятельная работа
Задание 1:
Найти сумму элементов массива D, длиной 7 элементов
CLS
DIM A (7)
FOR I = 1 TO 7
INPUT A(I)
NEXT I
S=0
FOR I = 1 TO 7
S = S + A(I)
NEXT I
PRINT “S=”; S

18.

Задание 2:
Составить программу, которая обнуляет все отрицательные числа.
CLS
DIM D (7)
FOR I = 1 TO 7
INPUT A(I)
NEXT I
FOR I = 1 TO 7
IF A(I) < 0 THEN
A(I) = 0
NEXT I
FOR I = 1 TO 7
PRINT A(I)
NEXT I

19.

Задание 3:
Найти среднее арифметическое всех положительных чисел массива
D.
CLS
DIM D (7)
FOR I = 1 TO 7
INPUT A(I)
NEXT I
S=0
FOR I = 1 TO 7
IF A(I) > 0 THEN
S = S + A(I)
NEXT I
S=S/7
PRINT “S=”; S

20.

Вопросы для повторения
1. Что называется массивом?
2. Как обозначается элементы массива?
3. Каким оператором описывается одномерный массив в
Бейсике?
4. С помощью какого оператора осуществляется ввод и
вывод одномерного массива?
5. Какой оператор является телом цикла при вводе
массива?
6. Какой оператор является телом цикла при выводе
массива?
Задание1:
16 учащихся одного класса получили оценки. Составить программу
которая подсчитывает, сколько учащихся получили оценку «5»
Задание2:
Составить программу, которая увеличивает все значения таблицы
А(20) в два раза.

Источник

Использование массивов

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

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

Dim curExpense(364) As Currency 

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

Sub FillArray() Dim curExpense(364) As Currency Dim intI As Integer For intI = 0 to 364 curExpense(intI) = 20 Next End Sub 

Изменение нижней границы

Используйте оператор Option Base в верхней части модуля , чтобы изменить индекс по умолчанию первого элемента с 0 на 1. В следующем примере инструкция Option Base изменяет индекс для первого элемента, а инструкция Dim объявляет переменную массива с 365 элементами.

Option Base 1 Dim curExpense(365) As Currency 

Можно также в явном виде установить нижнюю границу массива, используя выражение To, как показано в следующем примере.

Dim curExpense(1 To 365) As Currency Dim strWeekday(7 To 13) As String 

Хранение значений Variant в массивах

Существует два способа создания массивов значений Variant . Один способ — объявление массива с типом данных Variant, как показано в следующем примере:

Dim varData(3) As Variant varData(0) = "Claudia Bendel" varData(1) = "4242 Maple Blvd" varData(2) = 38 varData(3) = Format("06-09-1952", "General Date") 

Другой способ — присвоение массива, возвращаемого функцией Array, переменной Variant, как показано в следующем примере.

Dim varData As Variant varData = Array("Ron Bendel", "4242 Maple Blvd", 38, _ Format("06-09-1952", "General Date")) 

Независимо от способа создания массива элементы в массиве значений Variant идентифицируют по индексу. Например, в любом из предыдущих примеров может быть добавлен следующий оператор.

MsgBox "Data for " & varData(0) & " has been recorded." 

Использование многомерных массивов

В Visual Basic допускается объявлять массивы с 60 размерностями, максимум. Например, следующий оператор объявляет 2-мерный массив 5 на 10.

Dim sngMulti(1 To 5, 1 To 10) As Single 

Если рассматривать массив как матрицу, первый аргумент представляет строки, а второй аргумент представляет столбцы.

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

Sub FillArrayMulti() Dim intI As Integer, intJ As Integer Dim sngMulti(1 To 5, 1 To 10) As Single ' Fill array with values. For intI = 1 To 5 For intJ = 1 To 10 sngMulti(intI, intJ) = intI * intJ Debug.Print sngMulti(intI, intJ) Next intJ Next intI End Sub 

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Обратная связь

Были ли сведения на этой странице полезными?

Источник

Оцените статью