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

Рис. 4.7.5-5

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

Button2_Click( ).

Эта процедура события при щелчке на кнопке Отсортировать массив очищает объект текстового поля, а затем сортирует массив с помощью метода Array.Sort. Процесс сортировки очень быстр. И снова единственным замедлением является перестройка объекта текстового поля по одной строке в цикле For...Next - процесс, который отображается в объекте ProgressBar1 и его свойстве Value.

8.Далее можно щелкнуть на кнопке Переупорядочить массив.

Программа использует метод Array.Reverse() для обработки RandArray, переупорядочивая его в обратном порядке. Это значит, что первый элемент становится последним, а последний - первым.

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

Button3_Click( ).

Эта процедура события идентична процедуре события Button2_Click( ), за одним исключением:

Array.Sort(RandArray)превратилась в Array.Reverse(RandArray)

9.Для завершения программы необходимо щелкнуть на кнопке Конец отладки

(StopDebugging).

10.В окне Редактора кода (Edit Code) необходимо найти оператор программы,

который объявляет массив RandArray:

Dim RandArray(0 To 499) As Long

11. Заменить499 в объявлении массива на 2999. Теперь оператор должен выглядеть

следующим образом:

Dim RandArray(0 To 2999) As Long

12.Снова запустить программу, чтобы посмотреть, как объявление и заполнение массива из 3000 элементов влияет на производительность программы.

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

4.7.6. Элементы управления для работы со списками

Для работы со списками используются элементы управления ListBox и ComboBox. Элемент управления ListBox представляет собой список значений, расположенных в одну или несколько колонок, из которых пользователь может выбрать одно из предложенных значений. Значения в списке могут размещаться в одну или несколько колонок в

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 206

зависимости от значения свойства MultiColumn. Если элементы списка расположены в нескольких колонках, с помощью свойства ColumnWidth можно изменить заданную по умолчанию ширину колонок. В том случае, если элементы списка не помещаются в выделенную для них в форме область, появляются полосы прокрутки. Чтобы полосы прокрутки всегда отображались, необходимо присвоить значение True свойству

ScrollAlwaysVisible.

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

Формирование списков может быть статическим, средствами визуального программирования или динамическим, в процессе выполнения программы. Для статического заполнения используется свойство-коллекция Items. Программное добавление в конец списка производится методом Add( ) этой коллекции:

ИмяСписка.Items.Add(Выражение).

Для добавления строки в заданное место в списке используется метод Insert( ):

ИмяСписка.Items.Insert (ИндексВСписке, Выражение).

Индекс в списке начинается с 0. Количество элементов в списке можно получить через свойство Count коллекции Items:

Dim КоличествоЭлементовВСписке As Integer = ИмяСписка.Items.Count.

Доступ к элементу списка может производиться по индексу:

ВыбранныйЭлемент= ИмяСписка.Items(ИндексЭлемента),

а индекс элемента может быть определён по его значению:

ИндексЭлемента = ComboBox1.FindString(ЗначениеЭлемента).

Удаление элемента в списке с указанным значением производится методом

Remove(), например:

ListBox1.Items.Remove(ЗначениеЭлемента).

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

RemoveAt( ):

ListBox1.Items RemoveAt(ИндексЭлемента).

Удаление всех элементов списка производится методом Clear( ).Например:

ListBox1.Items.Clear( ).

Значение элемента, выбранного пользователем, указано в свойстве Text:

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 207

MsgBox("Пользователь выбрал "& ListBox1.Text).

Индекс элемента, выбранного пользователем, указан в свойстве SelectedIndex:

MsgBox("Выбран " & ListBox1.SelectedIndex & "-й элемент списка").

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

ComboBox1.Items.Add(ComboBox1.Text),

а пример добавления введённого элемента в указанную позицию списка:

ComboBox1.Items.Insert(ИндексЭлемента, ComboBox1.Text).

Список может быть отсортирован по возрастанию значений кодов:

ComboBox1.Sorted = True

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

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 208

4.7.7. Задачи для самостоятельного решения по теме «Программирование алгоритмов формирования и обработки одномерных массивов»

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

1)Используя функцию случайных чисел, заполнить числовой массив a(n), причем элементы массива должны представлять собой: действительные числа из отрезка (0,1); целые положительные числа, не превосходящие 100; целые числа из интервала (-10;10).

2)Заполнить массив a(n) целыми случайными числами, причем каждый последующий элемент должен быть не меньшим, чем предыдущий, то есть a(1) a(2) ... a(n).

3)Составить массив из n (n>2) чисел, в котором первые два элемента задаются с клавиатуры, а все последующие равны сумме двух предыдущих элементов.

4)Создать такой числовой массив a(n), в котором элементы с четными и нечетными номерами кратны данным числам p и q, соответственно.

5)Не используя дополнительный массив, переписать данный массив в обратном порядке.

6)Для заданного числового массива вычислить сумму: всех его элементов; квадратов всех его элементов; элементов с четными (нечетными) номерами; его положительных (отрицательных) элементов.

7)Для заданного числового массива вычислить произведение: всех его элементов; квадратов всех его элементов; элементов с четными (нечетными) номерами; его положительных (отрицательных) элементов.

8)Даны вещественное число r и массив размера n. Найти элемент массива, который наиболее близок к данному числу.

9)Дан массив a(n). Записать в новый массив b(l) и вывести: только элементы с четными (нечетными) номерами; только элементы с номерами, большими (не превосходящими) заданное число k; только элементы с номерами от k до m; только элементы, не превосходящие данного числа p; только элементы, величина которых находится между данными числами p и q; весь массив в виде таблицы из k столбцов, где k - натуральное число (k n, k 10).

10)В заданном числовом массиве найти отрицательный максимальный элемент и его номер.

11)В заданном числовом массиве найти максимальный (минимальный) элемент первой и (или) второй половины массива.

12)В заданном числовом массиве найти максимальный (минимальный) элемент с четным и (или) нечетным номером.

13)В заданном числовом массиве найти максимальное (минимальное) четное и (или) нечетное число, входящее в массив.

14)В данном числовом массиве размерности n подсчитать количество четных (нечетных) чисел; положительных (отрицательных) элементов, равных данному числу m.

15)В данном числовом массиве размерности n подсчитать количество элементов, равных квадрату натурального числа; элементов, равных удвоенному натуральному нечетному числу.

16)В числовом массиве размерности n подсчитать количество таких элементов a(i), которые превосходят все предыдущие элементы, то есть - a(i) > a(1), a(i) > a(2), ... , a(i) > a(i-1).

17)В данном числовом массиве размерности n подсчитать количество чисел, входящих в массив один раз; количество различных чисел, входящих в данный массив.

18)Переставить в данном массиве a(n) элементы с четными и нечетными номерами; m последних элементов в середину массива (после k-го элемента).

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 209

19)

Дан массив a(n), элементами которого являются положительные числа. Вычислить

 

среднее арифметическое: элементов с четными номерами и сравнить его со средним

 

арифметическим элементов с нечетными номерами; первой (второй) половины его

20)

элементов; четных (нечетных) чисел, входящих в массив.

Массив a(n) образован из целых положительных чисел. Вычислить среднее

 

арифметическое всех элементов массива и найти: количество и сумму элементов,

 

превосходящих среднее арифметическое всех элементов массива; элемент, наиболее

 

близкий к среднему арифметическому всех элементов массива; элемент, наиболее

21)

отклоняющийся от среднего арифметического всех элементов массива.

В данный возрастающий массив включить данное число, не нарушая возрастания.

22)

Проверить, является ли данный числовой массив a(n) упорядоченным по возрастанию

23)

(убыванию).

В заданный массив a(n)после элемента с номером k включить: данное число; m данных

24)

чисел (m<n).

Из заданного массива a(n) исключить все элементы с четными (нечетными) номерами;

 

элемент с порядковым номером k. Кроме того, вывести количество удаленных элементов,

25)

если их более одного, или сообщение об отсутствии элемента, подлежащего удалению.

Из заданного массива a(n) исключить первый элемент, равный данному числу p; все

 

элементы, равные данному числу p; все элементы, кратные данному числу p; группу из m

 

элементов, начиная сk-го элемента; все повторяющиеся элементы так, чтобы из

 

нескольких равных элементов в массиве остался только первый. Кроме того, вывести

 

количество удаленных элементов, если их более одного, или сообщение об отсутствии

26)

элемента, подлежащего удалению.

Из заданного массива a(n) исключить все повторяющиеся элементы. Кроме того, вывести

 

количество удаленных элементов, если их более одного, или сообщение об отсутствии

27)

элемента, подлежащего удалению.

Дана точка a и множество b из n точек. Найти номер точки из множества b, наиболее

28)

близкой от точки a.

Из заданного массива, элементами которого являются положительные числа, исключить

 

максимальный и минимальный элементы, после чего найти среднее арифметическое

29)

оставшихся элементов.

Из заданного возрастающего массива исключить: первый элемент, превосходящий

 

данное число p; элемент, предшествующий данному числу p; все элементы, значения

30)

которых находятся между данными числами p и q.

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

 

была упорядочена по возрастанию, а вторая половина - по убыванию (и наоборот); так,

 

чтобы первые m элементов были упорядочены по возрастанию, а остальные - по

 

убыванию (и наоборот).

31)

Дан целочисленный массив a(10). Вывести номер первого (последнего) из тех его

 

элементов a(i), которые удовлетворяют двойному неравенству: a(1) < a(i)< a(10). Если

32)

таких элементов нет, то вывести 0.

Проверить, образуют ли элементы целочисленного массива размера n арифметическую

 

(геометрическую) прогрессию. Если да, то вывести разность (знаменатель) прогрессии,

 

если нет - 0.

33)

Дан массив ненулевых целых чисел размера n. Проверить, чередуются ли в нем четные

 

и нечетные (положительные и отрицательные) числа. Если чередуются, то вывести 0,

34)

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

Дан массив размера n. Определить количество его промежутков монотонности (то есть

35)

участков, на которых его элементы возрастают или убывают).

Даны два массива a и b размера 5, элементы которых упорядочены по возрастанию.

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

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 210

4.7.8. Тестовые задания по теме «Программирование алгоритмов формирования и обработки одномерных массивов»

1.Массив - это

1)совокупность данных одного типа, объединенных общим именем

2)совокупность данных одного типа

3)набор индексированных данных

4)набор разных данных

5)набор однотипных файлов на диске

2.Индексом массива может быть

1)выражение любого типа

2)любое целочисленное выражение

3)только целочисленные переменные

4)переменные любого типа

3.На размерность массива указывает

1)значения индексов

2)суммарное количество индексов

3)количество индексов

4)сумма значений индексов

4.В программе массив объявляется оператором

1)Rem

2)For

3)Do

4)Dim

5.Оператор Dim

1)резервирует область памяти для элементов массива

2)резервирует имя для элементов массива

3)выстраивает элементы массива в линейку

4)подсчитывает количество элементов массива

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

1)For

2)If

3)Select Case

5)в списке нет правильного ответа

7.Сортировка массива – это

1)упорядочивание элементов массива либо по возрастанию, либо по убыванию

2)перезапись элементов массива в обратном порядке

3)удаление нулевых элементов массива

4)в списке нет правильного ответа

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 211

8.Значением параметра цикла в операторе For при вводе и обработке массивов является

1)значение элемента массива

2)номер элемента массива

3)размерность элемента массива

4)размер массива

9.Определите правильный результат выполнения следующего фрагмента

программы

...

Dim a (0 To 5) As Single For i=0 To 5

a(i) =i Next i

TextBox1.Text = CStr(a(i))

1)5

2)сообщение об ошибке

3)6

4)0

10.После выполнения фрагмента программы

Dim a (0 To 5) As Single For i=1 To 7

TextBox1.Text=TextBox1.Text & CStr(a(i))& “ “ Next i

массив будет напечатан

1)в столбец

2)в строку

3)со сдвигом

4)нет верного ответа

11.Фрагмент программы

For i=k To n-1 a(i) = a(i+1)

Next i

выполняет

1)сжатие массива “ сдвигом влево”

2)сжатие массива “ сдвигом вправо”

3)удаление первых K элементов массива

4)удаление последних N-K элементов массива

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 212

12. Фрагмент программы

i=0 Do

If a(i) = 0 Then For j=i To n-1

a(j) = a(j+1) Next j

n = n-1 Else

i = i + 1 End If

Loop While i<=n

1)удаляет из массива нулевые элементы

2)перемещает нулевые элементы влево

3)перемещает нулевые элементы вправо

4)оставляет все по-прежнему

13.Фрагмент программы подсчитывает

k = 0 s = 0

For i = 0 To 5

If a(i) = 0 Then k = k+1 If a(i)<0 Then s = s + a(i)

Next i

TextBox1.Text=CStr(s) & “ “ & CStr(k)

1)сумму элементов, меньших 0, и количество положительных элементов

2)количество всех элементов и сумму положительных элементов

3)количество элементов, равных 0, и сумму отрицательных элементов

4)произведение отрицательных элементов и сумму элементов, равных 0

14.Что выполняет следующий фрагмент программы

For i = 0 To n-1

For j = i + 1 To n If a(i)<a(j) Then

r = a(i) : a(i) = a(j) : a(j) = r End If

Next j Next i

1)упорядочивает массив по убыванию

2)упорядочивает массив по возрастанию

3)меняет максимальный и минимальный элементы местами

4)формирует массив из положительных элементов массива

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 213

15. Вычисляемое в программе значение переменной К равно (2)

Dim A(10),I, K As Integer K=0

For I=l To 10

A(I) = I Next I

For I = l To 10

If Int(A(I)/2)<=2 Then K = K + 1 Next I

1)7

2)3

3)5

4)10

5)4

16.Следующий фрагмент программы

j = -1

For i = 0To n

If a(i) > 0 Then

j = j + 1 : m(j) = i

End If Next i

...

1)записывает индексы положительных элементов массива aв массив m

2)переписывает массив а в массивm

3)переписывает в массив m положительные элементы массива а

4)изменяет порядок расположения элементов в массиве а

17. В результате работы программы на экран будет отображено значение переменной N,

которая является

DIM B(100), М, I, N As Integer Sub Button1_Click( )

For I =

0

To 100

B(I) = INT(RND*100)

Next

I

 

 

M = B(1)

100

For I =

1

If

 

B(I)< M Then

End

 

M = B(I) : N = I

I

If

Next

 

 

TextBox1.Text = CStr(N)

End Sub

 

 

 

 

 

1)

значением минимального элемента массива

 

 

2)

индексом минимального элемента массива

 

 

3)

значением максимального элемента массива

Страница 214

 

4)

индексом максимального элемента массива

 

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов

 

18. Переменная S после выполнения программы при заданных значениях элементов массива А={ 0, 1, 0, 1, 0, 1, 0} примет значение

S = 0

For К = 0 Тo 6 Step 2

If A(K)>O Then S = S + 1

End If Next

1)7

2)4

3)3

4)2

5)0

19.Следующий фрагмент программы выполняет

k = 2 : n = 10 For i = k To n-1

a(i) = a(i+1) Next i

1)удалениеk-го элемента массива

2)расширение массива “сдвигом вправо”

3)удаление k первых элементов массива

4)удаление последних n-k элементов массива

20.Следующий фрагмент программы выполняет

n = Ubound(a)

m =(n+1)\2 : j = n For i =0 To m

r =a(i) : a(i)=a(j) a(j)=r : j=j-1

Next i

1)перестановку элементов массива а в обратном порядке

2)удаление из массива а первых m элементов

3)замену первой половины элементов массива а значениями его второй половины

4)обмен значениями соседних элементов в массиве а

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 215

21. В результате выполнения следующего фрагмента программы происходит

j = -1

For i = 0To 10 If a(i)<0 Then

j =j+1 : b(j)=a(i)^2 End If

Next i

1)формирование массива b из квадратов отрицательных элементов массива a

2)упорядочение массива а по возрастанию

3)формируется новый массив b по возрастанию

4)формируется новый массив b по убыванию

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

Dim a(31)As Integer a(0) = 0

For i = 31 To 1 Step -1 a(i) = i +1

Next i

TextBox1.Text= CStr(a(31))

1)0

2)30

3)31

4)32

23.В результате выполнения следующего фрагмента программы выводится

Dim a(6) As Integer a(0)=0

For i =1 To 3

For j=1 To -3

a(j) = a(j)+ 1 Next j

Next i

TextBox1.Text = CStr(a(6))

1)0

2)9

3)3

4)сообщение об ошибке

Перейти к Теме 4.6 Теме 4.8 Огл.

Тема 4.7. Программа алгоритмовформирования и обработки одномерных массивов Страница 216

Соседние файлы в папке УчеП-Раз-4-Инф-270100