Назад к списку статей

Разработка программ на Visual Basic

  Как создать программу на Visual Basic? Как и любую другую на каком угодно языке.

1. Постановка задачи.

     Продумать, что должна делать программа, какие данные для неё потребуются, как эти данные в программу попадут, как они будут обрабатываться и в каком виде выводиться.
2. Проектирование интерфейса.
     Означает помещение на форму нужных управляющих элементов, меток, кнопок, изображений и т.п. Этот этап создает внешний вид программы.
3. Составление программного кода.
     Означает реализацию поставленной задачи при помощи языка программирования. Фактически, обеспечение связанного взаимодействия всех элементов интерфейса: кнопок, меток и т.д.
4. Отладка программы.
   
Этот этап часто может занимать всего больше времени. В действительности означает тщательную проверку работы программы во всех предусмотренных (и непредусмотренных) ситуациях. Требует возврата к третьему и даже зачастую ко второму этапу для обеспечения работы программы, так, как это задумывалось в первом.

Итак, рассмотрим создание простых программ на языке программирования Visual Basic (VB).
     Предложенные программы прошли обкатку в средах программирования VB5  и  VB6.  Для их использования в  средах VB2005 и выше требуются минимальные переделки типа: свойство будет называться не Caption, а Text. (Фирма Microsoft так быстро клепает несовместимые программные среды, что за ней очень сложно угнаться, тем более в обучении программированию.)

Общие пояснения
Сравни картинки
Цифровые часы
Угадайка
Ахил и черепаха
Совершенные числа
Выбери любимый цвет
Проверь реакцию
Выбор файла



Общие вопросы создания программы на Visual Basic    В начало


 Процесс практического создания программы на VB можно  разделить на три этапа.
      Каждый этап выполняется отдельно и полностью. Переход к следующему возможен после выполнения предыдущего.
1. Визуальное проектирование.
    
Заключается в размещении элементов управления на форме будущей программы.
2. Изменение и установка свойств.
     Производится настройка исходных свойств элементов управления.
3. Ввод программного кода.
     Непосредственное создание кода программы и ввод его согласно взаимодействия элементов программы.
        Я для наглядности процесс создания программы представляю в виде таблицы.
 

Визуальное проектирование.  Размещение элементов управления на форме

Изменение и установка свойств элементов управления.

Ввод программного кода.

Первый элемент управления  Свойство 1 = ?, Свойство 2 = ? Команды, которые выполняющиеся, как реакция на определенное событие для данного элемента управления
Второй элемент управления

...

 
... ... ...

CommandButton

Caption = Выход из программы

End

    В процессе обучения большинство программ пишется для экспериментальных целей. Это означает, что во время эксперимента уясняется работа какой либо функции, программной конструкции или проверяется возможность и особенности вывода той или иной информации. Но программирование в конечном смысле это не самоцель, а инструмент для использования во благо человека.
        При отдаче приоритета этапу постановки задачи, нужно признаться, что все остальные тоже имеют свое значение. Ненадлежащая оценка важности каждого наносит серьезный ущерб программе.
        Неудобный, запутанный, непонятный интерфейс это огромный минус программы. Очень часто отказываются от программы из-за того, что с ней неудобно работать, пусть даже она выполняет полезные вещи.
        Создание программного кода это отдельная песня. Серьезные авторитеты давно ломают копья в попытке отнести его к творческому процессу или обыкновенному применению инструмента - языка программирования. На мой взгляд, там где инструмент можно применить тремя, пятью, двадцатью способами, что очень часто встречается в программировании, значит это не вульгарное кодирование, а на самом деле что то другое. В конечном счете именно программный код решает поставленную программе задачу, а значит, если он делает это быстро и качественно, значит программист-кодировщик справился с поставленной перед ним задачей.
        Тот кто писал программы, знает, что, на первый взгляд безупречный код, при его выполнении, то есть во время работы программы, может начать выделывать странные вещи. Грубые ошибки выявляются еще до запуска программы. Программисты шутят: если при первой компиляции программы не выявилось ошибок, пусть системщик проверит компилятор. Но есть еще и логические ошибки, когда программа что то считает, и что то выдает, но потом оказывается, что считала и выдавала она совсем не то.
       Отладка программы - серьезная вещь. Не зря фирмы платят за это деньги специальным людям. Программист исходя из своего, как сейчас любят говорить менталитета, никогда не сделает это так, как простой пользователь. Мой опыт программиста невелик и то, программа, работающая не один год вдруг отказалась работать из за того, что в последней строке файла данных забыли при вводе нажать Enter.
         Итак разрешите представить на ваш суд учебные программы на языке Visual Basic. Исходя из вышесказанного, в каждом проекте представлена последовательность действий по созданию программного продукта.

  
   Чтобы научиться программировать нужно писать программы. Вначале они могут быть самыми простыми...

 

СРАВНИ КАРТИНКИ   В начало

Это очень простая программа. Но, однако же, демонстрирует алгоритмическую структуру ветвление.

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

Суть программы: игра из детства, которая заключается в определении количества различий на двух картинках. Программа предлагает их подсчитать и ввести. Если вы были внимательны и определили их правильно программа вас похвалит, а иначе предложить попытать счастья еще раз. Внимание: переменной (KolRaz), которая хранит число различий картинок, их количество присваивает хозяин программы.

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

Помести элемент на форму Измени его свойства Двойной щелчок мыши: введи код.
Image 1 Stretch = True
Picture =
Первая из картинок
 
Image 2 Stretch = True
Picture =
Вторая из картинок
 
Command Button 1 Caption = Сколько различий имеют картинки KolRaz=3
N=Val(InputBox("
Введите количество различий на картинках")
If  KolRaz=N Then MsgBox("
Правильно!!!")
    Else MsgBox("
Вы ошиблись!!!")
End If

Программа может быть усовершенствована:
  - картинки можно брать настоящие и только лишь вносить изменения
 - можно использовать не одну пару, а несколько
 - можно подсчитывать количество угаданных с первого раза.

 

ЦИФРОВЫЕ ЧАСЫ     В начало

Это совсем простая программа. Она демонстрирует использование невидимого элемента управления - таймера и системной переменной Time$.

   Программа выводит цифровые часы на фоне выбранного вами изображения.
   Обратите внимание на размер и цвет
цифр часов и изображения фона.  Для лучшей читаемости цифры на фоне должны выглядеть контрастно.
  
 С точки зрения улучшения программы можно выполнить следующее.
 - Растянуть изображение на весь экран, включив свойство формы WindowState = Maximize.
 - Поместить на форму маленькую кнопочку
для растягивания картинки на весь экран со следующим кодом
  
Image1.Width = Form1.Width
   Image1.Height = Form1.Height
(но можно это сделать и без кнопочки)
- Заставить программу показывать часы в разных местах экрана, и выводить их
по-другому, чтобы исключить моргание.

 

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

Помести элемент на форму Измени его свойства Двойной щелчок мыши: введи код.
Image 1 Stretch = True
Picture =
Выбрать фоновое изображение
 
Timer 1 Interval = 1000 Label1.Caption = TimeS
Label 1 Font ?
BackStyle = Transparant
Caption = ""
 
Command Button 1 Caption=Max Image1.Width = Form1.Width
Image1.Height = Form1.Height
Form 1 (помещать не надо) WindowState=Maximize  

Усовершенствованная  программа выглядит уже совсем по другому.  С хорошим фоном и с доделками не стыдно и на рабочий стол поставить.

 

 





 


 

УГАДАЙ-КА     В начало

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

   Компьютер загадывает число от 0 до 100.
Нужно угадать его, вводя числа. Компьютер после каждого ввода выдает подсказку о том: больше введенное число, чем загаданное или меньше.
    Возможные улучшения.
- Убрать Rem из первой процедуры, чтобы подсмотреть число, загаданное компьютером;
- доработать интерфейс (вид) программы;
- выводить на форму введенное число или все введенные;
- считать число попыток, за которые число будет угадано.

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

 Помести элемент на   форму  Измени его свойства   Двойной щелчок мыши: введи код.
Label 1 Caption = Угадай число Font ?  
Label 2 Caption = ""
Font ?
 
Label 3 Caption = ""
Font ?
 
Command Button 1 Caption = Загадать число В левом верхнем списке выбрать элемент General и объявить целочисленную переменную A.  
Dim A As Integer
Rem Дальше код самой процедуры
   Randomize (Timer)
   A = Int(Rnd * 100)
   Rem Label3.Caption = Str(A)
 
Command Button 2 Caption = Загадать число B = Val(InputBox("Введи число"))
If A < B Then Label2.Caption = "Меньше"
If A > B Then Label2.Caption = "Больше"
If A = B Then MsgBox ("Молодец! Угадал!")

 
Command Button 3 Caption = Выход  End

Ахилл и черепаха (из рубрики: Ох, уж эти греки)     В начало

    Это, дошедшая до нас из древности, простая арифметическая задача об Ахилле и черепахе.
 
 Ахилл увидел черепаху, которая находилась от него в 100 шагах, и решил ее догнать. Ахилл движется в 10 раз быстрее черепахи. На каком расстоянии от начала погони он ее настигнет, считая, что двигаются они по одной линии?
    Философы древности утверждали, что никогда. Как бы близко он к ней ни приближался, черепаха все равно будет уходить вперед.
    Ну у древних греков компьютера не было, а мы в два счета это расстояние определим.
Кстати, это одно из замечательных чисел. Чем оно замечательно? Посчитай и увидишь!

   Договоримся, что Ахил шел со скоростью 1000 шагов в час. Будем измерять путь Ахила и черепахи каждую секунду, и сравнивать пройденные ими пути.
Как только их пути сравняются, значит он ее догнал.
   
 
      
Поле для эксперимента.
- Проверьте работу программы на других скоростях;
- Измените типы вычисляемых значений;
- Попытайтесь определить почему результаты вычислений отличаются.

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

 Помести элемент на   форму  Измени его свойства   Двойной щелчок мыши: введи код.
Label 1 Caption = "Догнал ли Ахилл черепаху"  Font ?  
Label 2 Caption = "Скорость Ахила"
Font ?
 
Label 3 Caption = "Скорость черепахи"
Font ?
 
Label 4 Caption = "Догнал на расстоянии" Font ?  
Text1 1000  
Text2 100  
Text3 Очистить поле  
Command Button 1 Caption = Найти расстояние В левом верхнем списке выберем элемент General и объявим  переменные.  
Dim Sa As Single
Dim Sch As Double
Rem Дальше код самой процедуры
 
 Sa = 0
  Sch = 100
While Sa < Sch
    Sch = Sch + Val(Text2.Text) / 3600
    Sa = Sa + Val(Text1.Text) / 3600
Wend
Text3.Text = Str(Sch)
Command Button 2 Caption = Выход End

 
Совершенные числа (из рубрики: Ох, уж эти греки)     В начало

    Программа предназначена для нахождения совершенных чисел.
Совершенным называется число, которое равно сумме своих делителей, кроме самого числа. Греки знали четыре таких числа. Данная программа позволяет их найти.
 

   Информация для эксперимента

    Замечательное свойство совершенных чисел, открытое, как полагают, учениками Пифагора гласит: если число р=1+2+4+...+2n - простое, то число 2n*p совершенное.
    Попробуйте написать программу нахождения совершенных чисел, используя это свойство.
    Известно, что пока
не найдено нечетных совершенных чисел, поэтому проверку можно ускорить, исключив из поиска нечетные.
    На форме реализуйте показ числа, которое проверяется, так как, если вы будете искать пятое совершенное число:
 33550336, которое нашли только в 15 веке, вам будет скучно смотреть на застывший экран.
 

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

 Помести элемент на   форму

 Измени его свойства   Двойной щелчок мыши: введи код.
Label 1 Caption = Совершенные числа, Font?
 
 
Label 2  Caption = Конечное значение = , Font ?
 
 
TextBox1 Text =10000
Font ?
 
TextBox2  Text Очистить
MultiLine = True
ScrollBars = Vertical
 Font ?
 
Command Button 1 Caption = Найти,
 Font ?
 
Rem Начать поиск с числа
I = 3
Rem Цикл с условием, пока I < заданного для поиска
While I < Val(Text1.Text)
Rem Начальное значение суммы делителей
Sum = 0
Rem Цикл нахождения суммы делителей
For K = 1 To I - 1
Rem Нахождение остатка от деления, если он равен нулю, то делитель найден
Ost = I Mod K
If Ost = 0 Then Sum = Sum + K
Next K
Rem Если число равно сумме делителей то оно совершенное
If I = Sum Then
Text2.Text = Text2.Text & Str(Sum) & vbCrLf
Rem Обновить отображение в текстовом поле
Text2.Refresh
End If
Rem Задать следующее число для проверки
I = I + 1
Rem Конец цикла поиска чисел
Wend
 
Command Button 2 Caption = Выход End

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

ВЫБЕРИ ЛЮБИМЫЙ ЦВЕТ     В начало

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

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

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

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

 Помести элемент на   форму  Измени его свойства   Двойной щелчок мыши: введи код.
Label 1 Caption = Мой любимый цвет, Font ?  
Label 2 Caption = Твой цвет - это число, Font ?  
Sape    
TextBox Text  - Очистить  
Command Button Caption = Выбор цвета  cdMyDialog.ShowColor
Form1.Shape1.FillColor = cdMyDialog.Color
Text1.Text = cdMyDialog.Color
 


ПРОВЕРЬ СВОЮ РЕАКЦИЮ     В начало

    Это  уже не очень простая программа.  В ней мы используем невидимый элемент управления - Timer. Элемент управления - геометрическая фигура. И, не пугайтесь, функцию аппаратно программного интерфейса (API) GetTickCount. Функция после своего вызова возвращает значение равное количеству миллисекунд прошедших с момента запуска операционной системы. Обращаясь к ней, мы довольно точно можем вычислять временные промежутки.
   
Лирическое отступление. Пренебрежительное отношение к Visual Basic заканчивается, как только программист начинает использовать в своих программах всю мощь функций API операционной системы. Я согласен, что полноценную динамичную игрушку на VB написать сложно. Вам все равно придется обращаться к DirectX или OpenGL. Из VB это делать нерационально.  Все остальные программы можно смело писать в среде VB, если вы на ТЫ с API. Смотрите, как это совершенно запросто делает элементарная программа.

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

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

 Помести элемент на   форму  Измени его свойства   Двойной щелчок мыши: введи код.

Form1 (Еее не надо помещать она уже есть)

  Private Sub Form_Load()
Rem Верхнюю и нижнюю строки VB вставит сам Form1.Shape1.FillColor = &H0
End Sub

 
Label 1 Caption = Проверь свою реакцию, Font ?  
Sape Shape1.Shape= Овал  
Timer    a = GetTickCount
Shape1.FillColor = &HFF
Timer1.Enabled = False
 
Command Button 1 Caption = Старт В левом верхнем списке выберите элемент General и объявите функцию API .  
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long
И переменные Dim a As Long, b As Long
Rem А ниже код реакции на нажатие кнопки
Randomize (Timer)
Timer1.Interval = Rnd * 3000
Timer1.Enabled = True
 
Command Button 2 Caption = Стоп  b = GetTickCount
MsgBox Str$((b - a) / 1000) + " секунды.", , "Время реакции"
Shape1.FillColor = &H0
 
Command Button 3 Caption = Выход  End


 

Выбор файла     В начало

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

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

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

Помести на форму

Измени или установи свойства Двойной щелчок введи код.
DriveListBox Размер окна показа Перед процедурой выбора диска объявите переменную: Dim MyPath as String
Rem Дальше код самой процедуры
Dir1.Path = Drive1.Drive
TextBox Text - Очистить  
TextBox Text - Очистить  
DirListBox Размер окна показа Text1.Text = Dir1.Path
File1.Path = Dir1.Path
File1.Pattern = Text3.Text
MyPath = File1.Path
FileListBox Размер окна показа If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"
Text2.Text = MyPath & File1.FileName
Label Caption - Выбран файл  по  Маске :  
TextBox Text = *.*  
CommandButton Caption = Выход End

Дополнение: Увеличив размер формы и поместив на нее элемент управления Image, можно превратить модуль выбора файла в программу просмотра изображений.

      Для элемента управления Image1 установите свойство Stretch = True, а к коду FileListBox добавьте строчку:

If UCase(Right(Text2.Text, 3)) = "JPG" Then Image1.Picture = LoadPicture(Text2.Text)
Строчка проверяет расширение файла и если это файл изображения загружает его для просмотра.

Программа может также просматривать файлы BMP и GIF. Выполните доработку самостоятельно.

В процессе создания даже таких простых проектов 3 стадии создания программ на VB прочно закладываются в память.