Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Организация программ обработки одномерных массивов
Массив данных в программе рассматривается как переменная структурированного (составного) типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент. Переменные, представляющие элементы массивов, называются переменными с индексами в отличие от простых переменных, представляющих в программе элементарные данные. Индекс в обозначении компонент массивов может быть константой, переменной или выражением целого типа. Если за каждым элементом массива закреплен только один индекс - его порядковый номер, то такой массив называется одномерным. Пример: числовая последовательность четных натуральных чисел 2, 4, 6, ¼, N представляет собой одномерный массив, элементы которого можно обозначить А(1)=2, А(2)=4, А(3)=6, ¼, А(К)=2 × (К+1), где К - номер элемента, а 2, 4, 6, ¼, N - значения. Индекс (порядковый номер элемента) записывается в круглых скобках после имени массива. Например, A(7) - седьмой элемент массива А; D(6) - шестой элемент массива D. Для размещения массива в памяти компьютера отводится область памяти, размер которой определяется типом, длиной и количеством элементов массива. Существует две разновидности массивов: статические и динамические. Статические массивы При объявлении такого массива значения его верхней и нижней границ не могут быть изменены в программе. Данный вид массивов описывается так же, как и переменные - при помощи служебного слова Dim с последующим указанием типа после служебного слова As. При этом может быть указана как верхняя граница, так и обе границы одновременно. Например, Dim A(9) As Integer Dim B(l To 10) As Single В данном случае оба массива содержат одно и то же количество элементов. Однако нумерация элементов массива А начинается с нуля, в то время как нумерация элементов В - с единицы. Для явного указания границ следует использовать служебное слово То, в то время как при описании стандартного массива с нумерацией элементов от нуля необходимо просто указать значение верхней границы. Динамические массивы используются в том случае, когда количество элементов массива заранее неизвестно и будет определяться в процессе выполнения программы. Описание динамических массивов осуществляется в два этапа:
1. объявить массив с использованием служебного слова Dim, но без указания размерности; 2. в нужном месте программы описать данный массив с требуемым значением для размерности при помощи оператора ReDim. Например,
С элементами массива удобно работать, используя цикл For. В этом случае в качестве счетчика цикла будет использоваться значение индекса элемента. Цикл ввода элементов массива с последующим их выводом в окно Immediate на языке VBA можно записать как показано в Листинге 9 и Листинге 10. Листинг 9. Введение последовательности чисел 1, 2, –5, 6, –111, 0 в память компьютера Sub Ввод_статического_массива() Dim i, N As Integer Dim A(6) As Single For i = 1 To 6 A(i) = InputBox("Введите" & i & "-й элемент массива") Debug.Print i; "-й элемент ", A(i) Next i End Sub Листинг 10. Заполнение одномерного массива элементами, отвечающими данному соотношению: a 1=1; a 2=1; ai = ai –2+ ai –1 (i = 3, 4, ¼, n) Sub Ввод_динамического_массива() Dim i, N As Integer Dim A() As Single N = InputBox("Введите количество элементов") ReDim A(N) As Single A(1) = 1 A(2) = 1 For i = 3 To N A(i) = A(i - 1) + A(i - 2) Next i For i = 1 To N Debug.Print i; "-й элемент ", A(i) Next i End Sub В пункте 2.6.4 были построены математические модели и блок-схемы наиболее распространенных алгоритмов обработки одномерных массивов. Рассмотрим примеры программ, где алгоритм представляет собой обработку массива данных. Листинг 11. Определение общей и средней суммы оборота Sub Пример7_1() Dim A() As Single Dim S, C As Single Dim i, N As Integer N = InputBox("Введите количество элементов массива") ReDim A(N) As Single For i = 1 To N A(i) = InputBox("Введите" & i & "-й элемент массива") Debug.Print i; "-й оборот ", A(i) Next i S = 0 For i = 1 To N S = S + A(i) Next i С = S / N Debug.Print "общая сумма оборота за месяц= "; S Debug.Print "средняя сумма оборота за месяц= "; С End Sub Примечание. Порядок вычисления произведения элементов массива такой же, как показано в Листинге 11. Отличие в том, что первоначальное значение произведения Р = 1 и формула для накопления произведения имеет вид: P = P * A(i).
Листинг 12. Нахождение количества дней с оборотом, равным плану D Sub Пример7_2() Dim A() As Single Dim D As Single Dim i, K, N As Integer D = InputBox("Введите план оборота за день") N = InputBox("Введите количество элементов массива") ReDim A(N) As Single For i = 1 To N A(i) = InputBox("Введите" & i & "-й элемент массива") Debug.Print i; "-й оборот ", A(i) Next i K = 0 For i = 1 To N If A(i) = D Then K = K + 1 End If Next i Debug.Print "количество дней c оборотом "; D; "= "; K End Sub Листинг 13. Определение максимального оборота предприятия за данный период и номера дня с максимальным оборотом Sub Пример7_3() Dim A() As Single Dim M As Single Dim i, NM, N As Integer N = InputBox("Введите количество элементов массива") ReDim A(N) As Single For i = 1 To N A(i) = InputBox("Введите" & i & "-й элемент массива") Debug.Print i; "-й оборот ", A(i) Next i M = A(1) NM = 1 For i = 2 To N If A(i) > M Then M = A(i) NM = i End If Next i Debug.Print "Номер дня с максимальным оборотом="; NM Debug.Print "Максимальный оборот предприятия= "; M End Sub Листинг 14. Организация нового массива, содержащего информацию об ежедневном отчислении денежных средств в дополнительный фонд Sub Пример7_4() Dim A() As Single Dim B() As Single Dim i, N As Integer N = InputBox("Введите количество элементов массива") ReDim A(N) As Single ReDim B(N) As Single For i = 1 To N A(i) = InputBox("Введите" & i & "-й элемент массива") Debug.Print i; "-й оборот "; A(i) Next i For i = 1 To N B(i) = 0.05 * A(i) Next i For i = 1 To N Debug.Print i; "-е отчисление "; B(i) Next i End Sub Листинг 14. Накопление общего веса продуктов, срок хранения которых менее 1 месяца Sub Пример8() Dim K() As Single Dim C() As Single Dim P() As String Dim S As Single Dim i, N As Integer N = InputBox("Введите количество элементов массива") ReDim K(N) As Single ReDim C(N) As Single ReDim P(N) As String For i = 1 To N P(i) = InputBox("Введите" & i & "-й продукт") K(i) = InputBox("Введите" & i & "-й вес") C(i) = InputBox("Введите" & i & "-й срок хранения") Next i Debug.Print "N", "Наименование", "Вес, кг", "Срок хранения, дни" S = 0 For i = 1 To N If C(i) < 30 Then S = S + K(i) End If Debug.Print i, P(i), K(i), C(i) Next i Debug.Print "Вес продуктов со сроком хранения меньше месяца= "; S End Sub Листинг 15. Сортировка веса продуктов по возрастанию Данный фрагмент можно использовать как самостоятельную программу, описав переменные и массив, или добавить к программе листинга 14. ………………………… For i = 1 To N - 1 l = i For j = i To N If K(j) <= K(l) Then l = j Next j Pr = K(i): K(i) = K(l): K(l) = Pr Next i For i = 1 To N Debug.Print "K("; i; ")= "; K(i) Next i …………………………
|
||||||||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 97; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.28.21 (0.024 с.) |