- •Практическое задание № 1. Знакомство с vba
- •Практическое задание № 2. Линейное программирование
- •Практическое занятие № 3. Программирование ветвлений
- •Практическая работа № 4. Программирование повторений
- •Практическая работа № 5. Работа с массивами
- •6. Практическая работа № 6. Процедуры и функции
- •7. Практическое занятие № 7. Файлы. Последовательный доступ
- •8. Практическое занятие № 8. Файлы с произвольным доступом
- •Задания самостоятельной работы
- •1. Линейное программирование
- •2. Программирование ветвлений
- •3. Программирования циклов
- •4. Массивы
- •5. Файлы
- •Список литературы
6. Практическая работа № 6. Процедуры и функции
Задача.
Список студентов группы отсортировать по алфавиту |
В практике программирования часто бывает необходимо выполнять одни и те же вычисления, но при различных исходных данных. Чтобы исключить посторенние одинаковых записей и сделать программу проще и понятнее, можно выделить эти повторяющиеся вычисления в самостоятельную часть программы, которая может быть использована многократна. Такая автономная часть программы, реализующая определённый алгоритм и допускающая обращение к ней из различных частей общей программы называется процедурой. Любая процедура содержит заголовок и раздел операторов. Синтаксис объявления процедуры:
ОбластьВидимости – это одно из двух ключевых слов: Public или Private. Они устанавливают к какому классу принадлежит процедура – к классу глобальных или к классу локальных процедур. По умолчанию процедура относится к классу Public.
Для вызова процедуры используется следующий оператор:
Call ИмяПроцедуры (СписокПараметровВызова) |
Функция – эта процедура, возвращающая результат. Поэтому её надо применять, когда вызывающая программа должна вернуть только один результат.
Также можно использовать бесскобочную запись оператора:
Для определения функции используется следующих синтаксис:
Сортировка
Сортировка – одна из наиболее активно изучаемых тем в компьютерных алгоритмах по ряду причин. Во-первых, сортировка – это задача, которая часть встречается во многих приложениях. Почти любой список данных будет нести больше смысла, если его отсортировать каким-либо образом.
Откройте приложение 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 фамилий студентов вашей группы и посмотрите как работает программа.
Сохраните файл под именем «Сортировка списка методом «пузырька»».