русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-23; просмотров: 1565; Нарушение авторских прав


Лабораторная работа №7

Алгоритмизация и программирование задач с использованием одномерных массивов

Цель:

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

Результат обучения:

o знать синтаксис объявления массива;

o знать правила записи переменной с индексом;

o знать алгоритмы ввода/вывода одномерного массива;

o уметь программировать задачи по обработке одномерных массивов.

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

Массив представляет собой набор однотипных элементов. Переменная массив имеет одно имя (например, а), а каждый элемент массива имеет свой порядковый номер, называемый индексом: a(1), a(2), a(3), …, a(n).

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

Индексом может быть произвольное выражение порядкового типа, заключенное в скобки. Например, Sum(True]), Vect( i + 1 ).

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

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

Dim <список массивов>

Например:

Dim SomeArr (100) As Single, a(5) As Integer, F(20) As String

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

Во всех версиях языка Бейсик по умолчанию минимальное значение индекса равно нулю. В приведенном примере массив SomeArr может иметь 101 элемент, индексы которого изменяются от 0 до 100. Можно задать нужное минимальное значение индекса в начале программы с помощью команды



Option base <константа>

Константа определяет минимальное значение индекса. Например, команды

Option base 1985

Dim DD (2010)

описывают массив с двадцатью пятью элементами, а индекс приобретает значение некоторого числа из диапазона 1985 … 2010.

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

Dim R() As Single

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

Рассмотрим практические примеры работы с массивами.

Пример 1.

Условие задачи:

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

Схема алгоритма:

При обработке массивов часто используется структура «цикл с параметром», так как индекс массива представляет собой счетчик и изменяется с шагом, равным 1.

Форма Программа
Private Sub CommandButton1_Click() Dim a() As Single Dim n As Integer, S As Single, i As Integer n = Val(TextBox1.Text) 'Ввод кол-ва элементов массива ReDim a(n) As Single For i = 1 To n 'Ввод элементов массива a(i) = InputBox("Введите a(" + Str(i) + ")") Next i S = 0 'Вычисление суммы элементов массива For i = 1 To n S = S + a(i) Next i S = S / n TextBox2.Text = Str(S) 'Вывод результата End Sub

С помощью текстового поля TextBox1 определяется переменная n, значение которой используется для определения граничного индекса. Redim позволяет выделить память под динамический массив.

Массив а — это массив вещественных чисел. Индекс элементов массивы изменяется в интервале от 0 до n.

Переменная i используется в качестве параметра оператора цикла. Переменная n — количество элементов массива, исходная величина. S — результат вычислений. В этой переменной накапливается сумма элементов массива.

Рассмотрим отдельно фрагмент ввода массива.

For i = 1 To n 'Ввод элементов массива

a(i) = InputBox("Введите a(" + Str(i) + ")")

Next i

Ввод массива (и вывод тоже) необходимо производить поэлементно. Ввести массив — это значит ввести все его элементы. Индекс элемента массива должен пробежать все значения от 1 до n. Для этого организуем цикл, в котором индекс массива является параметром цикла. Оператор For здесь особенно уместен.

Ввод элементов массива осуществляется с помощью функции InputBox. Эта функция выводит на экран диалоговое окно. В качестве аргумента функции используется строковая константа-подсказка: "Введите a(" + Str(i) + ")"

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

For i = 1 To n ‘ Ввод элементов массива

a(i) = Cells(1, i)

Next i

У свойства Cells два параметра. Первый — номер строки таблицы. I — номер столбца. При этом, элементы массива должны быть предварительно введены в ячейки таблицы.

Для расчета суммы используется прием накопления суммы.

S = 0

For i = 1 To n

S = S + a(i)

Next i

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

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

Пример 2.

Условие задачи:

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

Схема алгоритма:

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

S = 0

For i = 1 To n

If a(i) = 0 Then S = S + 1

Next i

В переменной S накапливается значение количества элементов. Эти элементы массива а удовлетворяют условию аi = 0. Суммируются единицы, которые в результате дадут нам значение общего количества элементов, отвечающих заданному условию.

Пример 3.

Условие задачи:

Найти максимальный элемент последовательности, состоящей из n элементов.

Приведем фрагмент схемы:

Программа:

max = a(1)

For i = 2 To n

If a(i) > max Then max = a(i)

Next i

Переменная max принимает значение первого элемента массива а. Над всеми остальными элементами массива выполняется однотипная операция: элемент массива сравнивается с переменной max. Если встречается элемент массива больший max, то max приобретает значение этого элемента. Если условие ai > max не выполняется, то присваивания не происходит. По окончании цикла в переменной max останется значение самого большого элемента.

Пример 4.

Условие задачи:

Разработать алгоритм и написать программу сортировки одномерного массива по возрастанию.

Для решения задачи воспользуемся алгоритмом, который получил название «метод пузырька». Этот алгоритм заключается в следующем.

Перебираются все элементы массива и производятся сравнения: первый элемент со вторым второй с третьим, и так далее до n–го. Если значение некоторого элемента больше значения следующего элемента, то эти элементы меняются местами.

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

Фрагмент схемы алгоритма:

Форма Программа
Private Sub CommandButton1_Click() Dim x() As Single Dim n As Integer, Y As Single, i As Integer, j As Integer n = Val(TextBox1.Text) ReDim x(n) As Single For i = 1 To n ' Ввод массива x(i) = Cells(i) Next i For i = 2 To n ‘Проход For j = n To i Step -1 ‘Цикл для сравнения If x(j - 1) > x(j) Then Y = x(j - 1): x(j - 1) = x(j): x(j) = Y ‘Перестановка End If Next j Next i R = "" ‘Формируем строку для вывода For i = 1 To n R = R + Str(x(i)) + vbCrLf Next i TextBox2.Text = R ‘Вывод результата End Sub

Этот алгоритм можно реализуется с помощью двух циклов For — внутреннего и внешнего. Число повторений внешнего цикла на 1 меньше числа элементов массива (так как последовательность из одного значения проверять нет смысла). Число повторений внутреннего цикла последовательно сокращаться от n до 1.

Внешний цикл по i определяет количество проходов. Цикл по j создан для сравнения пар элементов массива. Сравниваются два элемента, расположенных рядом. Если XJ-1 > XJ, то осуществляется перестановка элементов местами. Для того чтобы не потерять значение одного из переставляемых элементов, вводится вспомогательная переменная Y, которая представляет собой буфер для хранения x[j-1].

Вывод результата осуществляется в текстовое поле TextBox2. В текстовое поле выводится строковая переменная R. Эта переменная предварительно формируется в цикле и представляет собой строку из значений элементов массива x(i) и символа перевода курсора на новую строку — vbCrLf. VbCrLf — константа языка Visual Basic. Для того чтобы в текстовое поле вывести текст, состоящий из нескольких строк, необходимо свойству MultiLine компонента TextBox2 присвоить значение True. Свойство MultiLine может принимать два значения: True и False. Если MultiLine = True, то возможен вывод в несколько строк. Если MultiLine = False, то вывод осуществляется в одну строчку.



<== предыдущая лекция | следующая лекция ==>
Часть 2. Обязательное задание (6 баллов). | Самостоятельная работа


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.449 сек.