Разное

Массивы vb net: Массивы — Visual Basic | Microsoft Learn

Массивы в Visual Basic.NET

Последнее обновление: 30.10.2015

Массив представляет собой набор данных одного типа. Например, объявим массив элементов типа 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

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


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) {0, 1, 2, 3, 4, 5}

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


'Не указываем размер массива
Dim nums1 As Integer() = New Integer() {0, 1, 2, 3, 4, 5}
'Сокращенный синтаксис инициализации
Dim nums2 As Integer() = {0, 1, 2, 3, 4, 5}

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


Dim nums = {0, 1, 2, 3, 4, 5}

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


'Одномерный массив
Dim nums1 As Integer() = {0, 1, 2, 3, 4, 5}
'Двухмерный массив
Dim nums2 As Integer(,) = {{0, 1, 2}, {3, 4, 5}}
Console.WriteLine(nums2(1, 1))

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

Одномерный массив nums1

0

1

2

3

4

5

Двухмерный массив nums2

0

1

2

3

4

5

Изменение размера массива

При инициализации массива нам надо указать его размер, либо размер выводится из количества элементов.

Однако иногда бывают ситуации, когда надо по ходу программы добавить еще один элемент в массив. Это можно сделать с помощью ключевого слова ReDim.


Dim nums1 As Integer() = {0, 1, 2, 3, 4, 5}
ReDim nums1(8)

ReDim пересоздает массив с новым размером. Чтобы сохранить все прежние элементы, нам надо также использовать ключевое слово Preserve.

Dim nums1 As Integer() = {0, 1, 2, 3, 4, 5} ReDim Preserve nums1(8)

Некоторые методы и свойства массивов
  • Свойство Length позволяет получить количество элементов массива

  • Свойство Rank позволяет получить размерность массива

  • Метод Reverse изменяет порядок следования элементов массива на обратный

  • Метод Sort сортирует элементы массива

Примеры использования:


Dim nums1 As Integer() = {8, 1, 5, 3, 4, 2}
Dim lenght As Integer = nums1. Length()
Console.WriteLine("количество элементов: {0}", lenght)
Dim rank As Integer = nums1.Rank()
Console.WriteLine("размерность массива: {0}", rank)
nums1.Reverse()
Array.Sort(nums1)
Console.WriteLine(nums1(1))

НазадСодержаниеВперед

Visual Basic.NET. Массивы

Урок из серии «Программирование на Visual Basic.NET для школьников»

В предыдущем  уроке рассказывалось о работе с текстовыми файлами. В этом уроке мы познакомимся со структурой данных, которая называется массив, рассмотрим способы заполнения массивов.

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

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

Преимущество в использовании массивов состоит в том, что:

  • Не нужно придумывать большое количество имен для идентификации ячеек, предназначенных для хранения информации в памяти. Достаточно  одного имени — имени массива. Доступ к отдельным элементам будет  осуществляется по имени массива и порядковому номеру (индексу) элемента в массиве.
  • Использование переменных  в качестве индексов позволяет применять для обработки массивов операторы цикла.

Итак ….

Содержание

  1. Что такое массив?
  2. Как массивы хранятся в памяти компьютера
  3. Объявление массива
  4. Заполнение массива
  5. Проект «Заполнение массива»

Что такое массив?

Массив – это набор однотипных переменных или объектов, объединенных одним именем.

В массиве элементы пронумерованы. Номер элемента в массиве называется индексом.

Массив может быть одномерным или многомерным.

Размерность массива соответствует числу индексов, необходимых для идентификации отдельного элемента. Можно задать до 32 индексов, хотя случаи использования более трех индексов очень редки.

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

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

Индекс  элементов массива начинается с нуля, то есть первый элемент в одномерном массиве имеет индекс, равный нулю, второй – единице и так далее. Записывается индекс в круглых скобках рядом с именем

Доступ к элементу массива производится по его имени, состоящему из имени массива и значению индекса, например N(5).

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

Например, оператор:

a(1) = a(0)

присваивает второму элементу массива значение, равное значению первого элемента.

Как массивы хранятся в памяти компьютера

Как хранятся переменные, мы уже знаем. В зависимости от типа данных переменная получает больше или меньше ячеек памяти. Например, для действительных чисел надо выделять больше ячеек, чем для целых, а для символьных строк надо выделять столько ячеек, сколько в строке символов.

Массиву надо выделить столько места (смежных ячеек памяти), чтобы его хватило всем элементам массива. Поэтому прежде чем использовать массив в программе, программист обязательно должен его объявить.

Объявление массива

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

Объявим одномерный целочисленный массив, содержащий 10 элементов.

Dim N(9) As Integer

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

Заполнение массива

Для начала работы с массивом необходимо его предварительно заполнить, то есть присвоить элементам массива определенные значения.

Это можно сделать различными способами:

  • заполнить массив случайными числами;
  • заполнить массив символами с клавиатуры;
  • заполнить массив из файла.

Проект «Заполнение массива»

Задание. Заполнить числовой массив случайными числами, строковый массив пятью символами, введенными с клавиатуры, и строковый массив буквами русского алфавита из текстового файла.

  1. Создадим графический интерфейс проектаДля этого поместить на форму:
    • Список ListBox1 для вывода целочисленного массива, заполненного случайными числами;
    • Список ListBox2  для вывода строкового массива, заполненного символами с клавиатуры;
    • Список ListBox3  для вывода строкового массива, заполненного символами алфавита из файла;
    • Кнопки Button1, Button2, Button3 для создания обработчиков событий.

  2. Заполним массив N(I) целыми случайными числами из диапазона от 1 до 100.На языке Visual Basic.NET для генерации случайных чисел используется функцию Rnd(). При запуске программы функция Rnd() дает псевдослучайную (т.е. каждый раз повторяющуюся) последовательность чисел из диапазона [0, 1].Для получения числовой последовательности случайных чисел из промежутка [0; 100], умножим полученное с помощью функции Rnd() число но 100 и выделим из полученного числа целую часть: Int(Rnd()* 100). Для получения случайных чисел из произвольного интервала [A;B] можно воспользоваться следующей формулой:

    (B – A) * Rnd() +A.

    Для генерации различающихся между собой последовательностей случайных чисел рекомендуется использовать оператор Randomize(), который использует аргумент для инициализации генератора случайных чисел Rnd(), задавая его новое начальное значение. Если аргумент опущен, то в качестве нового значения используется значение, возвращаемое системным таймером.

    Обработчик события заполнения массива случайными числами

    ' Заполнение массива случайными числами
          Dim i, N(9) As integer
          Randomize()
          ListBox1.Items. Clear()
          For i = 0 To 9
              N(i) = Int(Rnd() * 100)
              ListBox1.Items.Add(Str(N(I)))
          Next i
  3. Заполним массив с клавиатуры.Для ввода элементов массива с клавиатуры можно использовать функцию InputBox(). Аргументами этой функции являются две строки, которые отображаются в диалоговом окне ввода, а значением функции – символ, введенный пользователем.Обработчик события заполнения массива с клавиатуры:
    'Заполнение текстового массива из 5 элементов с клавиатуры Dim A(4) As String Dim i As integer For I = 0 To 4 A(I) = InputBox("Введите " + Str(I + 1) + " элемент массива:", "Ввод элементов массива с клавиатуры") ListBox2.Items.Add(A(I)) Next I
  4. Заполним строковый массив буквами русского алфавита из текстового файла.Создадим в текстовом редакторе файл и введем первые 10 букв русского алфавита по одной букве в строке. Файл должен содержать только коды самих символов (не должен содержать управляющие коды форматирования текста) и, следовательно, должен создаваться в простейшем текстовом редакторе типа Блокнот. Сохраним файл alfavit.txt в кодировке Unicode.Для чтения из файла предназначен класс объектов StreamWriter из пространства имен System.IO. Поэтому добавим следующие операторы в самом начале кода, перед объявлением класса формы, которое начинается с Public Class Form1.
    Imports System Imports System.IO

    В обработчике события заполнения массива из файла объявим массив и переменную, которая будет ссылкой на объект StreamReader. В цикле со счетчиком произведем чтение букв алфавита из файла с использованием метода ReadLine() и введем буквы в список.

    Обработчик события заполнения массива из файла:

     
    'Заполнение текстового массива из  файла
    Dim B(32) As String
    Dim sr As StreamReader
    sr = New StreamReader("alfavit.txt") 
    For I = 0 To 9
        B(I) = sr.ReadLine()
        ListBox3.Items.Add(B(I))
    Next I

    Более подробно о работе с текстовым файлом можно посмотреть здесь.

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

    Так как не все элементы массива помещаются в список, появляется вертикальная полоса прокрутки.


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

В следующем уроке научимся выполнять поиск элементов в массиве.

Следующий урок: Обработка массива. Поиск максимального элемента

До встречи в следующем уроке.

Практическое руководство. Инициализация переменной массива — Visual Basic

Редактировать

Твиттер LinkedIn Фейсбук Электронное письмо

  • Статья
  • 4 минуты на чтение

Вы инициализируете переменную массива, включив литерал массива в предложение New и указав начальные значения массива. Вы можете либо указать тип, либо разрешить его вывод из значений литерала массива. Дополнительные сведения о том, как выводится тип, см. в разделе «Заполнение массива начальными значениями» в разделе Массивы.

Чтобы инициализировать переменную массива с помощью литерала массива

  • Либо в предложении New , либо при присвоении значения массива укажите значения элементов внутри фигурных скобок ( {} ). В следующем примере показано несколько способов объявления, создания и инициализации переменной, содержащей массив с элементами типа

    Char .

     ' Следующие пять строк кода создают один и тот же массив.
    ' Предпочтительный синтаксис находится в строках с chars1 и chars2.
    Dim chars1 = {"%"c, "&"c, "@"c}
    Dim chars2 As Char() = {"%"c, "&"c, "@"c}
    Dim chars3() As Char = {"%"c, "&"c, "@"c}
    Dim chars4 As Char() = New Char(2) {"%"c, "&"c, "@"c}
    Dim chars5() As Char = New Char(2) {"%"c, "&"c, "@"c}
     

    После выполнения каждого оператора создаваемый массив имеет длину 3 с элементами с индексами от 0 до 2, содержащими начальные значения. Если вы указываете и верхнюю границу, и значения, вы должны включить значение для каждого элемента от индекса 0 до верхней границы.

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

Чтобы инициализировать переменную многомерного массива с помощью литералов массива

  • Вложите значения в фигурные скобки ( {} ) в фигурные скобки. Убедитесь, что литералы вложенных массивов выводятся как массивы одного типа и длины. В следующем примере кода показано несколько примеров инициализации многомерного массива.

     Диммеры = {{1, 2}, {3, 4}, {5, 6}}
    Dim customerData = {{"City Power & Light", "http://www.cpandl.com/"},
                        {"Wideworld Importers", "http://wideworldimporters.com"},
                        {"Издательство Люцерн", "http://www. lucernepublishing.com"}}
    ' Вы можете вкладывать литералы массивов для создания массивов, содержащих более двух
    ' размеры.
    Dim twoSidedCube = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}
     
  • Вы можете явно указать границы массива или не указывать их, чтобы компилятор вывел границы массива на основе значений литерала массива. Если вы указываете как верхние границы, так и значения, вы должны включить значение для каждого элемента от индекса 0 до верхней границы в каждом измерении. В следующем примере показано несколько способов объявления, создания и инициализации переменной, содержащей двумерный массив с элементами типа Short

    .
     ' Следующие пять строк кода создают один и тот же массив.
    ' Предпочтительный синтаксис находится в строках с score1 и scores2.
    Тусклые баллы1 = {{10S, 10S, 10S}, {10S, 10S, 10S}}
    Dim scores2 As Short(,) = {{10, 10, 10}, {10, 10, 10}}
    Dim scores3(,) As Short = {{10, 10, 10}, {10, 10, 10}}
    Dim scores4 As Short(,) = New Short(1, 2) {{10, 10, 10}, {10, 10, 10}}
    Dim scores5(,) As Short = New Short(1, 2) {{10, 10, 10}, {10, 10, 10}}
     

    После выполнения каждого оператора созданный массив содержит шесть инициализированных элементов с индексами (0,0) , (0,1) , (0,2) , (1,0) , (1,1) и (1,2) . Каждая ячейка массива содержит значение 10 .

  • В следующем примере выполняется итерация по многомерному массиву. В консольном приложении Windows, написанном на Visual Basic, вставьте код в метод Sub Main() . Последние комментарии показывают вывод.

     Dim числа = {{1, 2}, {3, 4}, {5, 6}}
    'Пройтись по массиву.
    Для index0 = 0 Для чисел.GetUpperBound(0)
        Для index1 = 0 К числам.GetUpperBound(1)
            Debug.Write (числа (index0, index1).ToString и "")
        Следующий
        Отладка.WriteLine("")
    Следующий
    ' Вывод
    1 2
    3 4
    5 6
     

Чтобы инициализировать переменную зубчатого массива с помощью литералов массива

  • Вложите значения объекта в фигурные скобки ( {} ). Хотя вы также можете вкладывать литералы массива, которые задают массивы разной длины, в случае зубчатого массива убедитесь, что вложенные литералы массива заключены в круглые скобки ( () ). Круглые скобки принудительно оценивают литералы вложенного массива, и результирующие массивы используются в качестве начальных значений зубчатого массива. В следующем примере кода показаны два примера инициализации зубчатого массива.

     ' Создать зубчатый массив массивов разной длины.
    Dim jaggedNumbers = {({1, 2, 3}), ({4, 5}), ({6}), ({7})}
    ' Создаем зубчатый массив байтовых массивов.
    Затемненные изображения = {Новый байт() {}, Новый байт() {}, Новый байт() {}}
     
  • В следующем примере выполняется перебор зубчатого массива. В консольном приложении Windows, написанном на Visual Basic, вставьте код в метод Sub Main() . Последние комментарии в коде показывают вывод.

     ' Создать зубчатый массив массивов разной длины.
    Dim jaggedNumbers = {({1, 2, 3}), ({4, 5}), ({6}), ({7})}
    Для indexA = 0 To jaggedNumbers.Length - 1
        Для indexB = 0 To jaggedNumbers(indexA).Length - 1
            Debug.Write(jaggedNumbers(indexA)(indexB) & "")
        Следующий
        Отладка. WriteLine("")
    Следующий
    ' Вывод:
    1 2 3
    4 5
    6
    7
     

См. также

  • Массивы
  • Устранение неполадок с массивами

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

Отправить и просмотреть отзыв для

Этот продукт Эта страница

Просмотреть все отзывы о странице

Размеры массива — Visual Basic

Редактировать

Твиттер LinkedIn Фейсбук Электронное письмо

  • Статья
  • 3 минуты на чтение

Измерение — это направление, в котором вы можете изменять спецификацию элементов массива. Массив, содержащий общую сумму продаж за каждый день месяца, имеет одно измерение (день месяца). Массив, содержащий общий объем продаж по отделам на каждый день месяца, имеет два измерения (номер отдела и день месяца). Число измерений массива называется его 9.0143 ранг .

Примечание

Свойство Rank можно использовать для определения количества измерений в массиве.

Работа с измерениями

Вы указываете элемент массива, указывая индекс или индекс для каждого из его измерений. Элементы являются смежными по каждому измерению от индекса 0 до самого высокого индекса для этого измерения.

На следующих рисунках показана концептуальная структура массивов с разными рангами. Каждый элемент на иллюстрациях показывает значения индекса, которые к нему обращаются. Например, вы можете получить доступ к первому элементу второй строки двумерного массива, указав индексы (1, 0) .

Одно измерение

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

 Dim ageCounts(120) As UInteger
 

Два измерения

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

 Dim officeCounts(40, 5) As Byte
 

Двумерный массив также называется прямоугольным массивом .

Три измерения

Некоторые массивы имеют три измерения, например значения в трехмерном пространстве. Такой массив использует три индекса, которые в данном случае представляют координаты x, y и z физического пространства. В следующем примере объявляется переменная для хранения трехмерного массива 90 143 90 144 температур воздуха в различных точках трехмерного объема.

 Тусклый воздухТемпературы(99, 99, 24) Как сингл
 

Более трех измерений

Хотя массив может иметь до 32 измерений, редко бывает больше трех.

Примечание

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

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

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

 Dim salesAmounts(30) As Double
 

Теперь предположим, что вы хотите отслеживать одну и ту же информацию не только для каждого дня месяца, но и для каждого месяца года. Вы можете объявить двумерный массив с 12 строками (для месяцев) и 31 столбцом (для дней), как показано в следующем примере.

 Dim salesAmounts(11, 30) As Double
 

Теперь предположим, что вы решили хранить информацию в массиве более одного года. Если вы хотите отслеживать объемы продаж за 5 лет, вы можете объявить трехмерный массив с 5 слоями, 12 строками и 31 столбцом, как показано в следующем примере.

 Dim salesAmounts(4, 11, 30) As Double
 

Обратите внимание, что, поскольку каждый индекс варьируется от 0 до своего максимума, каждое измерение salesAmounts объявляется на единицу меньше требуемой длины для этого измерения. Обратите также внимание, что размер массива увеличивается с каждым новым измерением. Три размера в предыдущих примерах — 31, 372 и 1860 элементов соответственно.

Примечание

Вы можете создать массив без использования оператора Dim или оператора Новый пункт . Например, вы можете вызвать метод CreateInstance, или другой компонент может передать вашему коду массив, созданный таким образом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *