Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебная практика по VBA.doc
Скачиваний:
2
Добавлен:
21.08.2019
Размер:
614.4 Кб
Скачать

6. Практическая работа № 6. Процедуры и функции

Задача.

Список студентов группы отсортировать по алфавиту

В практике программирования часто бывает необходимо выполнять одни и те же вычисления, но при различных исходных данных. Чтобы исключить посторенние одинаковых записей и сделать программу проще и понятнее, можно выделить эти повторяющиеся вычисления в самостоятельную часть программы, которая может быть использована многократна. Такая автономная часть программы, реализующая определённый алгоритм и допускающая обращение к ней из различных частей общей программы называется процедурой. Любая процедура содержит заголовок и раздел операторов. Синтаксис объявления процедуры:

Frame1

ОбластьВидимости – это одно из двух ключевых слов: Public или Private. Они устанавливают к какому классу принадлежит процедура – к классу глобальных или к классу локальных процедур. По умолчанию процедура относится к классу Public.

Для вызова процедуры используется следующий оператор:

Call ИмяПроцедуры (СписокПараметровВызова)

Функция – эта процедура, возвращающая результат. Поэтому её надо применять, когда вызывающая программа должна вернуть только один результат.

Также можно использовать бесскобочную запись оператора:

Frame2

Для определения функции используется следующих синтаксис:

Frame3

Сортировка

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

  • Откройте приложение MS Excel.

  • Выполните команду СервисàМакросРедактор Visual Basic или нажмите <Alt+F11>.

  • Добавьте форму (команда Insert UserForm).

  • Для изменения размеров формы используйте указатель мыши помещённый в правый нижний угол окна Формы(UserForm).

  • Разработайте пользовательский интерфейс, расположив на форме с помощью панели инструментов управления (ViewToolBox), следующие объекты управления: Label (Метка), TextBox (Текстовое поле), CommandButton (Командная кнопка), ListBox (Список).

  • В окне Properties (Свойства) для каждого объекта управления установить свойства, приведённые в таблице 5.

Таблица 5

Элемент управления

Свойства

Значения

UserForm

Caption

Сортировка

Label1

Caption

В группе

Label2

Name

lblKolichestvo

Caption

BackColor

&H00FFFFFF&

BolderStyle

1-fmBolderStyleSingle

Label3

Caption

Не сортированный список группы

ListBox1

Name

lstNeSortSpisok

Label4

Caption

Сортированный список

ListBox2

Name

lstSortSpisok

CommandButton1

Name

cmdStart

Caption

Пуск

Обменная сортировка

Простая обменная сортировка (в просторечии называемая «методом пузырька») для массива a[1], a[2], ..., a[n] работает следующим образом. Начиная с конца массива, сравниваются два соседних элемента (a[n] и a[n-1]). Если выполняется условие a[n-1] > a[n], то значения элементов меняются местами. Процесс продолжается для a[n-1] и a[n-2] и т.д., пока не будет произведено сравнение a[2] и a[1]. Понятно, что после этого на месте a[1] окажется элемент массива с наименьшим значением. На втором шаге процесс повторяется, но последними сравниваются a[3] и a[2]. И так далее. На последнем шаге будут сравниваться только текущие значения a[n] и a[n-1]. Понятна аналогия с пузырьком, поскольку наименьшие элементы (самые «легкие») постепенно «всплывают» к верхней границе массива.

  • Блок-схема:

Составим блок-схему процедуры сортировки списка группы.

  • Примерный интерфейс программы может выглядеть так:

  • Код программы:

Dim Spisok() As String

Dim Kolichestvo As Integer

Private Sub cmdStart_Click()

Dim i As Integer

Call VvodSpiskaGruppy

Call SortirovkaSpiskaGruppy

For i = 1 To Kolichestvo

lstSortSpisok.AddItem Spisok(i)

Next

End Sub

Sub VvodSpiskaGruppy()

Dim i As Integer

Kolichestvo = InputBox("Введите количество студентов в группе",”Ввод числа”)

lblKolichestvo.Caption = Str(Kolichestvo)+” человек(а)”

ReDim Spisok(Kolichestvo)

For i = 1 To Kolichestvo

Spisok(i)=InputBox("Введите фамилию и инициалы "+Str(i)+" студента группы","Ввод ФИО")

lstNeSortSpisok.AddItem Spisok(i)

Next

End Sub

Sub SortirovkaSpiskaGruppy()

Dim i As Integer

Dim j As Integer

Dim Temp As String

For i = 1 To Kolichestvo–1

For j = i+1 To Kolichestvo

If Spisok(i) > Spisok(j) Then

Temp = Spisok(i) : Spisok(i) = Spisok(j) : Spisok(j) = Temp

End If

Next

Next

End Sub

  • Введите 10 фамилий студентов вашей группы и посмотрите как работает программа.

  • Сохраните файл под именем «Сортировка списка методом «пузырька»».