Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Русский_Проект:Изучение Visual Basic


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Русский_Проект:Рассылка Второй выпуск

1 Новости сайта
2 Алгоритмы
3 Функции API

Новости сайта

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

Алгоритмы

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

***Словесный алгоритм***

Данный алгоритм основан на выдвижении двух гипотез:
1.Максимальным элементом массива является его первый элемент<
2.Минимальным элементом массива также является его первый элемент
То есть первому элементу присваивается максимальное и минимальное значение.Затем с помощью цикла массив сканируется от второго элемента до последнего.При каждом шаге цикла очередной элемент массива сравнивается с гипотетическими максимальным и минимальным значениями.
Если очередной элемент массива оказывается больше гипотетического максимального значения,то первая гипотеза изменяется-максимальным становится новое значение.Аналогично работаем со второй гипотезой.После завершения цикла откорректированные гипотезы превращаются в решение задачи.
***Реализация алгоритма на Visual Basic***
Dim Max As Double, Min As Double
Dim myArray As Variant
Dim counter As Double
'Создаем массив из пяти чисел
myArray = Array(3, 6, 2, 8, 4)
Max = myArray(0) 'считаем,что первый элемент самое большое число
Min = myArray(0)'считаем,что первый элемент самое маленькое число
For counter = 0 To 4 'начинаем цикл
If myArray(counter) > Max Then Max = myArray(counter)
If myArray(counter) < Min Then Min = myArray(counter)
Next counter
Print Min, Max

Поиск минимального и максимального чисел может встречаться часто в вашей практике.Поэтому есть смысл оформить данный алгоритм в виде процедуры:
Public Sub FindMinAndMax(myArray() As Double, Size As Long, Min As Double, Max As Double)
Dim counter As Long
Min = myArray(0): Max = myArray(0)
For counter = 1 To Size
    If myArray(counter) > Max Then Max = myArray(counter)
    If myArray(counter) < Min Then Min = myArray(counter)
Next counter
End Sub

В этой процедуре массив myArray и размерность массива Size являются входными параметрами,а Min и Max -выходными.
Теперь можно использовать эту процедуру в вашей программе:
Private Sub Command1_Click()
Dim myArray1(0 To 2) As Double
Dim min1 As Double, max1 As Double
' Присваиваем значения массиву
myArray1(0) = 3
myArray1(1) = 9
myArray1(2) = 1
FindMinAndMax myArray1(), 2, min1, max1
' Выводим минимальное и максимальные значения
Print min1, max1
End Sub
------------------

Функции API

Функция GetDriveType

Для определения типов дисков используйте функцию API
 GetDriveType:
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Это могут быть жесткие диски,флоппи-диски, CD-ROM и др. Функция возвращает тип диска.Если 0-значит ошибка,если 1-значит диск не существует,другие возвращаемые значения означают следующее:

DRIVE_UNKNOWN=0 Тип устройства определить не удалось
DRIVE_NO_ROOT_DIR=1 Корневой директории не существует
DRIVE_REMOVABLE = 2 Сменный диск(напр.дискетта или любой сменный диск)
DRIVE_FIXED = 3 Жесткий диск
DRIVE_REMOTE = 4 Сетевой диск
DRIVE_CDROM = 5 CD-ROM
DRIVE_RAMDISK = 6 Эмулируемый в оперативной памяти так называемый RAM-диск

Параметры

nDrive
Корневой каталог диска,как "c:\" или "a:\"

Пример
' Определяем тип диска D:
Dim drivetype As Long

drivetype = GetDriveType("d:\")
If drivetype = 1 Then Debug.Print "Диск D:\ не существует."
If drivetype = DRIVE_REMOVABLE Then Print "Диск D:\ сменный диск."
If drivetype = DRIVE_FIXED Then Print "Диск D:\ жесткий диск."
If drivetype = DRIVE_CDROM Then Print "Диск D:\ CD-ROM."
' и т.д.

Не стесняйтес,высылайте ваши предложения по адресу vbasic@rambler.ru Давайте делать рассылку вместе!


http://subscribe.ru/
E-mail: ask@subscribe.ru
Поиск

В избранное