Главная страница
Навигация по странице:

  • Описание процедуры

  • Описание функции

  • Введение 8 Этапы создания Windowsприложения 8


    Скачать 6.98 Mb.
    НазваниеВведение 8 Этапы создания Windowsприложения 8
    АнкорVisual Basic 2005 (word97).doc
    Дата22.12.2017
    Размер6.98 Mb.
    Формат файлаdoc
    Имя файлаVisual Basic 2005 (word97).doc
    ТипРеферат
    #12532
    страница47 из 63
    1   ...   43   44   45   46   47   48   49   50   ...   63

    10.7. Сортировка массива структур


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

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

    Dim z As Gorod

    Сортировка методом пузырька предполагает использование логической переменной для хранения информации о состоянии массива: отсортирован он или нет. Опишем соответствующую переменную.

    Dim sort As Boolean

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

    Do

    Перед началом внутреннего цикла предполагаем, что массив отсортирован.

    sort = True

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

    For i = 0 To n – 1

    Сравниваем значение среднесуточной температуры в текущем элементе и в следующем за ним. Для вычисления среднесуточной температуры мы используем специальный метод Srednee, который описан в разделе 10.1.

    If a(i).Srednee < a(i + 1).Srednee Then

    Если среднесуточная температура в i-м городе меньше, чем среднесуточная температура в (i+1)-м городе, значит, эти города в массиве идут в неправильном порядке, и, следовательно, массив неупорядочен. Меняем значение переменной sort на противоположное.

    sort = False

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

    z = a(i)

    a(i) = a(i + 1)

    a(i + 1) = z

    End If

    Next

    Перестановка элементов будет продолжаться до тех пор, пока массив не станет отсортированным.

    Loop Until sort

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

    lstGorod.Items.Add("-------------------------------")

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

    lstGorod.Items.Add("Массив после сортировки")

    lstGorod.Items.Add("-------------------------------")

    Организуем цикл для вывода всех элементов массива структур.

    For i = 0 To n

    На каждом шаге цикла с помощью метода Print (см. раздел 10.1) формируем строку из данных, записанных в очередном элементе массива. Эту строку выводим в окно списка.

    lstGorod.Items.Add(a(i).Print)

    Next

    Полный текст программы представлен в приложении 51. Пример работы программы приведен на рис. 69.


    Рис. 69. Пример работы программы сортировки нового массива структур

    11. Использование подпрограмм


    Любую сложную задачу можно представить как совокупность более простых подзадач, связанных между собой. Как правило, решение каждой подзадачи оформляется в виде самостоятельного законченного фрагмента программы. Такой фрагмент, оформленный определенным образом, называется подпрограммой.

    11.1. Определение процедуры и функции. Описание процедуры и функции


    Подпрограммы делятся на два класса: процедуры и функции. Сформулируем основные определения.

    Процедура – самостоятельная часть программного кода, имеющая имя и параметры, выполняющая некоторую последовательность действий и изменяющая значения некоторых своих параметров.

    Функция – это самостоятельная часть кода, имеющая имя и вычисляющая на основе своих параметров (аргументов) некоторое значение, которое затем передается вызывающей программе.

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

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

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

    Выходной параметр – это переменная, значение которой вычисляется или изменяется в процессе работы подпрограммы. Заметим, что один и тот же параметр может одновременно быть и входным и выходным.

    Рассмотрим синтаксические особенности описания процедур и функций.

    Описание процедуры

    Область видимости Sub Имя процедуры _

    (Список параметров)

    Операторы

    End Sub
    Область видимости задается одним из двух ключевых слов: Private или Public. Она определяет доступность процедуры из других модулей проекта. Процедура, описанная как Private, доступна только в том модуле, в котором она описана. Процедура, описанная как Public, доступна во всех модулях проекта.

    Sub – ключевое слово Visual Basic 2005, показывающее, что данная подпрограмма является процедурой.

    Имя процедуры – уникальное название процедуры, построенное по правилу имен (см. раздел 4.1), которое отличает данную подпрограмму от всех других элементов проекта.

    Список параметров – это перечисленные через запятую входные и выходные параметры. Количество параметров может быть произвольным. Комбинация входных и выходных параметров может быть любой. У процедуры могут быть только входные параметры, могут быть только выходные параметры. Список параметров может вообще отсутствовать, но круглые скобки ставить все равно необходимо. Каждый параметр в списке описывается отдельно по следующей схеме.

    Режим передачи Имя параметра As Тип данных

    Режим передачи параметра определяет способ передачи данных в подпрограмму. Существует два способа передачи: по ссылке и по значению. Оба способа рассмотрены в разделе 11.2.

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

    Тип данных показывает, к какому типу данных принадлежит данный параметр.

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

    Описание процедуры заканчивается ключевым словосочетанием End Sub.

    Описание функции

    Область видимости Function Имя функции _

    (Список параметров) As Тип результата

    Операторы

    Return Результат

    End Function
    Область видимости задается одним из двух ключевых слов: Private или Public. Она определяет доступность функции из других модулей проекта. Функция, описанная как Private, доступна только в том модуле, в котором она описана. Функция, описанная как Public, доступна во всех модулях проекта.

    Function – ключевое слово Visual Basic 2005, показывающее, что данная подпрограмма является функцией.

    Имя функции – уникальное название функции, построенное по правилу имен (см. раздел 4.1), которое отличает данную подпрограмму от всех других элементов проекта.

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

    Режим передачи Имя параметра As Тип данных

    Режим передачи параметра определяет способ передачи данных в подпрограмму. Существует два способа передачи: по ссылке и по значению. Оба способа рассмотрены в разделе 11.2.

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

    Тип данных показывает, к какому типу данных принадлежит данный параметр.

    После списка параметров указывается Тип результата, который возвращает функция. Эта часть описания является обязательной. Даже если отсутствует список параметров, Тип результата указывать необходимо.

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

    1. С помощью оператора Return. После ключевого слова Return через пробел указывается возвращаемое значение. Этот оператор немедленно прекращает выполнение данной функции и возвращает управление в вызывающую программу.

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

    Имя функции = Возвращаемый результат

    Заметим, что данный оператор присваивания в отличие от оператора Return не приводит к немедленному завершению функции.
    Среди операторов, входящих в состав функции, может встречаться один особый оператор: Exit Function. Он немедленно прекращает выполнение данной функции, но не возвращает результат в вызывающую программу.

    Описание функции заканчивается ключевым словосочетанием End Function.

    Пример использования процедур и функций при решении задач рассмотрен в разделе 11.3.
    1   ...   43   44   45   46   47   48   49   50   ...   63


    написать администратору сайта