Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по методике.doc
Скачиваний:
85
Добавлен:
13.05.2015
Размер:
1.11 Mб
Скачать

Вопрос 17.Методика изложения темы «Массивы» в разделе «Программирование» школьного курса информатики.

План ответа

  • Понятие массива, характеристики массива (имя, тип, значение элементов, размерность, размер).

  • Описание массивов.

  • Стандартные задачи на обработку массивов (перечислить).

  • Пример одной из сортировок (на выбор).

  • Фрагмент методики изложения данного раздела для конкретного языка программирования (на выбор).

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

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

Обозначается массив следующим образом:

ИмяМассива(Индекс)

Массивы могут быть различных типов: числовые, стро­ковыеи так далее. Например, одномерный строковый мас­сив strA (I), содержащий буквы русского алфавита, можно представить себе в виде следующей таблицы:

Индексы являются целыми числами (в данном случае от

  1. до 33). Обращение к элементу массива производится по имени элемента, состоящему из имени массива и значения индекса, например strA (5).

Каждый элемент массива может принимать собственное значение. Так, значением элемента массива strA(5) являет­ся строка "д"

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

Например, объявление одномерного строкового массива, содержащего 33 элемента, производится следующим обра­зом:

Dim strA(l То33) As String

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

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

Заполнение с клавиатуры. Первый способ состоит в том, что значения элементов массива вводятся пользователем с клавиатуры, например с помощью функции InputBox. Тог­да для заполнения рассмотренного выше строкового массива strA(bytl) буквами русского алфавита можно использо­вать следующую событийную процедуру:

DimstrA(lТо 33) AsString, bytlAsByte' Заполнение массива с клавиатуры Subcmdl_Click()

Forbytl = 1 To33

strA(bytl) = InputBox("Введите букву", _"Заполнение массива")

Next bytlEnd Sub

Заполнение с помощью оператора присваивания. Второй способ заполнения массива состоит в использовании опера­тора присваивания. Заполним числовой массив bytA(bytl) целыми случайными числами в интервале от 1 до 100.

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

Для получения последовательности случайных чисел в заданном интервалеА<Х <В необходимо использовать сле­дующую формулу:

(В-А)* Rnd + А

Получение целочисленной последовательности случай­ных чисел из интервала 0 <X< 100 достигается использова­нием функции выделения целой части числа:

Int(Rnd * 100)

Создадим событийную процедуру для заполнения одно­мерного целочисленного массива случайными числами:

Dim bytA(l То 100), bytl As Byte ' Заполнение массива присваиванием Sub cmdl_Click()

For bytl = 1 To 100

bytA(bytl) = Int(Rnd * 100)

Next bytl

End Sub

  1. Поиск в массивах

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

Создадим проект, который в строковом массиве, содер­жащем русский алфавит, осуществляет поиск заданной бук­вы и определяет ее порядковый номер в алфавите.

ЛУ Проект «Поиск в строковом массиве»

  1. Поместить на форму frml кнопку cmdl и создать для нее событийную процедуру cmdl_Click (), реализующую за­полнение массива буквами русского алфавита путем их последовательного ввода с клавиатуры.

Для реализации поиска создадим событийную процедуру, в которой запрашивается буква для поиска и в цикле произ­водится ее сравнение со всеми элементами массива. В случае совпадения буквы и значения элемента массива переменной bytN присваивается значение индекса данного элемента. Ре­зультат поиска выведем на форму.Поместить на форму кнопку cmd2 и создать для нее собы­тийную процедуру cmd2_Click (), реализующую поиск: Dim strA(l То 33) As String, bytl, bytN As Byte

'Поиск элемента Sub cmd2_Click()

strB = InputBox("Введите искомую букву",

"Поиск")

For bytl = 1 To 33

If strB = strA(bytl) Then bytN = bytl Next bytl

номер:

strB;

frml.Print "БукваиееbytN End Sub

  1. Запустить проект. Щелк­нуть по кнопкеЗаполнить массив и последовательно ввести буквы русского ал­фавита. Щелкнуть по кноп­ке Поиск и ввести искомую букву, например «г».

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

Осуществим поиск наименьшего элемента (то есть эле­мента с наименьшим значением) в числовом массиве, состо­ящем из 100 элементов.

Сначала заполним массив целыми случайными числами в цикле с использованием генератора случайных чисел функ­ции Rnd и функции выделения целой части числа Int.

Проект «Поиск в числовом массиве»

  1. Поместить на форму frml кнопку cmdl и создать для нее событийную процедуру cmdl_Click (), реализующую за­полнение массива случайными числами.

Значение минимального элемента будем хранить в пере­менной bytMin, а его индекс — в переменной bytN. Будем считать сначала, что минимальный элемент равен первому элементу массива bytA(l), поэтому присвоим переменной bytMin его значение.

Затем в цикле сравним последовательно элементы масси­ва со значением переменной bytMin. Если какой-либо эле­мент окажется меньше, присвоим его значение переменной bytMin, а его индекс — переменной bytN — и так до самого последнего элемента. Результат поиска выведем на форму.

  1. Поместить на форму кнопку cmd2 и создать для нее собы­тийную процедуру cmd2_Click (), реализующую поиск:

Dim bytA (1 То 100), bytl, bytN As Byte Sub cmd2_Click()

’Поиск минимального элемента bytMin = bytA(l) bytN = 1

For bytl = 2 To 100 If bytA(bytl) <bytMin Then bytMin = bytA(bytl) : bytN = bytl

Next bytl

frml.Print "Минимальный элемент bytMin;

"его индекс"; bytN End Sub

  1. Запустить проект. Щелк­нуть по кнопкам Запол­нить массив и Найти Min элемент несколько раз. На форме будут напечата­ны результаты поиска ми­нимального элемента для различных вариантов за­полнения массива.

  1. Сортировка массива

Рассмотрим задачу упорядочения (сортировки) числового массива по возрастанию значений его элементов. Пусть у нас имеется целочисленный числовой массив bytA(bytl), состоящий из 10 элементов и заполненный случайными чис­лами. Представим массив в виде таблицы (табл. 5.9).

Идея алгоритма состоит в следующем. Проводим поиск минимального элемента в массиве среди элементов с 1-го по 10-й. Далее меняем найденный минимальный элемент мес­тами с элементом с индексом 1 (выполняем перестановку).

Проводим поиск минимального элемента среди элементов со 2-го по 10-й и делаем перестановку.

Повторяем процедуру поиска минимального элемента сре­ди оставшихся неупорядоченных элементов многократно. Повторение реализуем с помощью цикла со счетчиком, мак­симальное значение которого составляет N-1, где N— коли­чество элементов массива (в рассматриваемом случае цикл повторяется 9 раз). В результате массив упорядочивается.

Поиск минимального элемента проводится многократно, поэтому реализуем его как общую процедуру МинЭлемент (bytl, bytNAsByte), где bytl является входным пара­метром, a bytN — выходным параметром.

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

Проект «Сортировка числового массива»

  1. Поместить на форму frml кнопку cmdl и создать для нее событийную процедуру cmdlClick (), реализующую за­полнение массива случайными числами.

  2. Определить переменные для всего программного модуля. Преобразовать событийную процедуру из проекта «По­иск в числовом массиве» в общую процедуру МинЭле­мент (bytl, bytNAsByte):

Dim bytA(l To 10), bytMin, bytl, bytJ, bytK, bytR, bytNAs Byte

'Общая процедура поиска минимального элемента Sub МинЭлемент (bytl, bytNAs Byte) bytMm = bytA(bytl) bytN = bytl

For bytJ = bytl + 1 To 10 If bytA(bytJ) <bytMinThen bytMin = bytA(bytJ) : bytN = bytJ

Next bytJEnd Sub

Создать событийную процедуру сортировки. Для осуще­ствления перестановки использовать промежуточную пере­менную bytR. Для визуализации процесса сортировки для каждого цикла перестановки элементов (цикл по перемен­ной bytl) в цикле по переменной bytK выводить в тексто­вое поле txtSort значения элементов массива.

  1. 'Событийная процедура сортировки

Private Sub cmd2_Click() txtSort.Text = ""

For bytl = 1 To 9

'Вызов общей процедуры поиска минимального элемента

Call МинЭлемент(bytl, bytN)

'Перестановка bytR = bytA(bytl) bytA(bytl) = bytA(bytN)

bytA(bytN) = bytR

'Печать массива для каждого цикла перестановки For bytK = 1 То 10

txtSort.Text = txtSort.Text + Str(bytA(bytK)) Next bytK Next bytl End Sub

  1. Запустить проект. Щелк­нуть по кнопкамЗапол­нить массив и Сортиро­вать. В текстовом поле будет реализована визуа­лизация процесса сорти­ровки числового массива по шагам.