- •Введение
- •Особенности программирования на Visual Basic
- •1.1. Интегрированная среда разработки ide
- •1.2. Проекты, программы
- •1.3. Стандартные элементы управления
- •Панель элементов управления
- •Написание скриптов с помощью объекта ScriptControl
- •Общие свойства элементов управления
- •1.4. Этапы программирования
- •Первый этап: выбор формы и настройка её свойств
- •Второй этап: разработка интерфейса
- •Третий этап: работа со свойствами элементов управления
- •Четвёртый этап: написание программного кода задачи
- •Начало написания программы
- •Набирайте текст программы только строчными буквами!
- •Объявление переменных
- •Ввод начальных данных
- •Программирование задачи
- •Вывод результатов
- •2. Практические задания по Visual Basic
- •Задание № 1. Знакомство с элементами управления
- •1. Постановка задачи. Последовательность
- •Задание № 2. Разработка многодокументного интерфейса
- •Задание № 3. Программирование задач с линейной структурой алгоритма
- •Задание № 4. Программирование вычислительных задач разветвляющейся структуры
- •Задание № 5. Программирование вычислительных задач циклической структуры
- •Задание № 6. Одномерные массивы
- •Задание № 7. Программирование двумерных массивов
- •Задание № 8. Процедуры-подпрограммы Sub и процедуры-функции Function
- •Задание № 9. Приближенное вычисление определенного интеграла
- •Приложение
- •If условие Then оператор1 [: оператор2 [: оператор3 ]… ]
- •If условие Then оператор1 Else оператор2
- •Область видимости переменных и их объявление
- •Рекомендуемая литература
- •Содержание
Программирование задачи
Программирование задачи зависит от разработанного алгоритма. Этот алгоритм может быть предварительно представлен в виде блок-схемы или сразу в виде готовой программы на VB. Все зависит от сложности задачи и профессиональности программиста. Чтобы облегчить себе жизнь при программировании, надо знать, как можно больше функций Visual Basic и основные приемы, способы программирования типовых задач. Это дает возможность мыслить алгоритмически и догадываться о наиболее простом решении задачи. Но если это решение не самое простое и быстрое, ничего страшного. Студенты, основная специальность которых не связана с программированием, должны уметь быстро получить результат решения поставленной задачи с использованием программирования. Поэтому вопрос составления оптимальных программ перед ними не стоит. Это дело чести профессиональных программистов.
К основным несложным приемам, способам программирования, знание которых может помочь решению вычислительных задач, можно отнести:
максимальное использование логических операций (And, Or, Not, Xor, Imp, Fqv) при решении задач с ветвящейся структурой алгоритма;
использование циклов с известным числом повторений и свободное применение счетчика цикла при решении задач с циклической структурой алгоритма;
применение циклов с предусловием и с постусловием;
использование логических переменных;
получение сумм и произведений элементов массивов, удовлетворяющих определенному критерию;
использование счетчиков;
нахождение максимального и минимального элементов в массивах;
сортировка массивов;
организация перебора вариантов с помощью вложенных циклов.
Во втором разделе приведены примеры заданий, в которых эти способы и приёмы программирования используются.
Вывод результатов
Вывод результатов решения задачи можно осуществить:
В этикетки Label или в текстовые поля TextBox с помощью оператора присваивания. Например:
lblSumma.Caption = intSum
‘значение переменной целого типа intSum присваивается
‘этикетке lblSumma.
txtПроизведение.Text = sngПроизведение
‘значение переменной sngПроизведение типа Single
‘присваивается текстовому полю txtПроизведение
На форму или в графические поля с помощью оператора Print. Например:
frmMatr.CurrentX = 250
‘координата Х, определяющая на форме начало печати,
‘отсчет Х направо от левого края формы
frmMatr.CurrentY = 500
‘координата Y, определяющая на форме начало печати,
‘отсчет Y от верхнего края формы вниз
frmMatr.Print “Сумма положительных элементов равна “; intSum
‘на форме frmMatr будет выдан текст, заключенный в операторе
‘ в двойных кавычках (но на форме этих кавычек уже не будет!),
‘а за ним значение переменной intSum; при выдаче на текущую форму
‘название формы перед Print можно не приводить.
picGrafWin.Print “Сумма равна “; sngSumma
‘в графическое поле picGrafWin будут выданы: текст, который
‘заключен в двойных кавычках, и сумма sngSumma.
Иногда результаты расчетов требуется выдать в табличном виде. Приведем пример такой выдачи. Особенность этого примера состоит в том, что построенная с помощью графических объектов Line и этикеток Label шапка таблицы может быть перенесена в любое место формы, и данные все равно будут выдаваться в таблицу. Какого-либо изменения программы для этого не потребуется.
Форма с шапкой таблицы представлена на рис. 1.9.
Line3
Линии в шапке таблицы имеют такие имена: Line1 – верхняя горизонтальная линия, Line2 – нижняя горизонтальная, Line3 – левая вертикальная (указана на рис. 1.9), Line4 – вторая вертикальная после Line3, Line5 – правая крайняя вертикальная линия.
В процедуре, приведенной ниже, выдача текста и дальнейшее построение таблицы привязаны к свойствам X1 и Y2 линий шапки. Поэтому перемещение шапки не требует изменения программы для выдачи в нее результатов.
Процедура такой выдачи будет такой:
Private Sub cmdPrintTab_Click()
CurrentY = Line2.Y2 + TextHeight("4") / 2
str1 = CurrentY ‘ координата Y, определяющая
‘ начало выдачи 1-й строки в таблице
i = 0
msi = 1 'msi – для регулирования межстрочного интервала
' для примера рассчитывается Sinx от 0 до 3,14 радиан:
For x = 0 To 3.14 Step 0.157
i = i + 1 ‘ счетчик выданных строк
y = Sin(x)
CurrentY = str1 + msi * TextHeight("4") * (i - 1)
' число 700 подбирается один раз, чтобы выдать
' результаты в нужном месте столбца:
CurrentX = Line3.X1 + 700: Print FormatNumber(x, 2);
CurrentX = Line4.X1 + 700: Print FormatNumber(y, 2)
Next x
DrawWidth = 2: yk = CurrentY + TextHeight("4") / 2
Line3.Y2 = yk: Line4.Y2 = yk: Line5.Y2 = yk
' рисуется нижняя линия:
Line (Line3.X1, yk)-(Line5.X1, yk)
End Sub
В этой процедуре используется функция TextHeight() для определения координаты Y следующей строки выдачи. В качестве текста как аргумента можно задать хотя бы один и любой символ. Функция возвращает высоту строки с учетом заданного размера шрифта.
На принтер можно выдать:
форму со всеми текстами на ней и графикой с помощью метода формы PrintForm. При этом можно не выдавать управляющие элементы (например, командные кнопки), сделав их перед выдачей невидимыми. В процедуре, приведенной ниже, перед печатью формы Form2 кнопки cmdPrintForm и cmdPrinter делаются невидимыми, а после выдачи – видимыми:
Private Sub cmdPrintForm_Click()
cmdPrintForm.Visible = False
cmdPrinter.Visible = False
Form2.PrintForm
cmdPrintForm.Visible = True
cmdPrinter.Visible = True
End Sub
с помощью объекта Printer и методов Print, Line, Circle, Pset и PaintPicture. Используя их, копируем текст или графику, создаваемую этими методами, на объект Printer, а затем выдаем на печать с помощью метода EndDoc.
Если требуется выдача результатов на принтер, необходимо создать процедуру (не событийную), в которой будет содержаться решение задачи и выдача результатов, но перед всеми указанными выше методами привести наименование объектов. Эти объекты – формальные параметры процедуры. Приведем пример по разработки программы с выдачей результатов на форму и на принтер.
Private Sub cmdPrinter_Click()
ГрафП Form2, Printer
End Sub
Private Sub Form_Click()
ГрафП Form2, Form2
End Sub
Private Sub ГрафП (nForm As Object, Dest As Object)
Dim intR As Integer, intCX As Integer, intCY As Integer
intCX = 6050 ‘координата Х центра окружности
intCY = 4120 ‘координата Y центра окружности
intR = 3000 ‘радиус окружности
If Dest Is Printer Then
intCX = 6000
intCY = 8000
End If
Dest.CurrentX = 3000: Dest.CurrentY = 500 ‘координаты
‘начала выдачи текста на Form2 или на листе при печати
Dest.Print "Выдача текста и графики "
Dest.Circle (intCX, intCY), intR
If Not (Dest Is nForm) Then
Dest.PaintPicture nForm.Picture1, 250, 1500, 2280, 2280
End If
If Dest Is Printer Then Printer.EndDoc
End Sub
Форма Form2 после запуска программы и щелчка по форме кнопкой мыши имеет вид, изображенный на рис. 1.9.
Поясним программу. В процедуре ГрафП первый формальный параметр nForm – объект-источник (объект Form2), второй Dest – объект-адресат (объект Printer или другая форма). Если в программе не используются методы графики (PaintPicture, Line, Circle, Pset), то в процедуре первый формальный параметр будет отсутствовать.
В объект Picture1 рисунок вставлен заранее в процессе конструирования формы. Но на объект Printer этот трактор из формы надо перерисовать с помощью метода PaintPicture. Поэтому в процедуре есть проверка, в результате которой метод PaintPicture будет выполняться, если адресат картинки и источник картинки различны.
После этого для печати результатов достаточно обратиться к процедуре ГрафП с формальными параметрами Form2 и Printer (см. процедуру cmdPrinter_Click()), а для выполнения программы с выводом результатов на форму – обратиться к процедуре ГрафП с параметрами Form2 и Form2 (см. процедуру Form_Click()).
Если добавить новую форму Form3, из Form2 откроем ее и обратимся к процедуре ГрафП с параметрами Form2 и Form3, то на форме Form3 получим копию формы Form2 (но без кнопки).