- •Федеральная служба воздушного транспорта россии
- •Теоретическая часть
- •1.1 Меню среды программирования
- •1.2 Основы языка Visual Basic
- •Переменные и константы
- •Операции
- •Конкатенация строк
- •Функции
- •Условные операторы (ветвление по условию)
- •Лабораторная работа № 4 Массивыи циклы
- •Теоретическая часть
- •1.1 Меню среды программирования
- •1.2. Массивы
- •Массивы объектов
- •Циклы со счетчиком
- •2. Порядок выполнения работы
- •Лабораторная работа № 5 Процедуры и функции
- •Теоретическая часть
- •1.1 Меню среды программирования
- •1.2 Процедуры и функции
- •2. Порядок выполнения работы
- •Лабораторная работа № 6 Построение графиков
- •Теоретическая часть
- •1.1 Системы координат компонентов vb
- •1.2. Управление цветом
- •1.3. Графические методы
- •2. Порядок выполнения работы
1.2. Управление цветом
Поле рисования имеет 2 основных цвета, заданных соответствующими свойствами:
BackColor – цвет фона, используется при очистке области рисования.
ForeColor - цвет переднего плана, используется при рисовании. Для рисования конкретным цветом предварительно нужно установить этот цвет на переднем плане, а затем вызывать методы рисования этим цветом.
Значение цвета задается встроенными константами VB, например: vbRed - красный, vbGreen – зеленый и т.д.
Для установки цвета используется операция присваивания, например, чтобы нарисовать в графическом окне Picture1 линию белого цвета на желтом фоне необходимо запрограммировать
Picture1.BackColor=vbYellow
Picture1.Cls
Picture1.ForeColor=vbWhite
Pictire.Line (0,0)-(100,100)
1.3. Графические методы
Метод |
Описание |
Cls |
Стирает все изображение в поле рисования |
Pset |
Рисует одну точку (пиксел) заданным цветом |
Point |
Возвращает цвет заданной точки (пиксела) |
Line |
Рисует линию, контурный или закрашенный прямоугольник |
Circle |
Рисует окружность, эллипс или дугу |
PaintPicture |
Выводит картинку из массива данных в произвольном месте |
Методом Clsможно в любой момент очистить поле рисования, которое закрашивается цветом фона (свойствоBackColor):
[object].Cls
Без параметра objectметод очищает всю экранную форму, в коде которой он исполняется.
Например, очистка поля рисования графического окна Picture1с закраской в черный цвет:
Picture1.BackColor=vbBlack
Picture1.Cls
Метод Pset устанавливает цвет пиксела в заданной точке:
[object].Pset (x,y) [, color]
Параметры x и y могут быть целыми, дробными или числовым выражением любой сложности.
Если цвет colorне задан, по умолчанию используется цвет переднего плана (свойство ForeColor).
Например, нарисовать точку голубого цвета с координатами x=100, y=200 в графическом окне Picture1:
Picture1.Pset (100,200), vbBlue
Метод Lineчертит линию между двумя точками с координатами (x1,y1) и (x2,y2) :
Line (x1,y1) – (x2,y2) [, color]
Или из предыдущей точки черчения в заданную точку с координатами (x2,y2):
Line – (x2,y2) [, color]
Параметры x1,y1,x2,y2 могут быть целыми, дробными или числовым выражением любой сложности.
Если цвет colorне задан, по умолчанию используется цвет переднего плана (свойство ForeColor).
Например, нарисовать линию синего цвета между точками (x=100, y=200) и (x=300, y=400) в графическом окне Picture1:
Picture1.Line (100,200) – (300,400) , vbCyan
2. Порядок выполнения работы
2.1 Откройте проект Satm5.
2.2 Расположите ЭУ на форме frmSa:
перейдите в окно Project Explorerи сделайте активной форму с именемfrmSa,
расположите на форме командную кнопку (по умолчанию будет создана кнопка с именем Command1),
задайте ей свойства согласно таблице 2.1:
Таблица 2.1
Объект |
Свойство |
Значение |
Command1 |
Name |
CmdGrph |
|
Caption |
&Graph |
|
Font** |
Arial, (полужирный) Bold,12 |
|
MousePoiter |
NoDrop |
|
TabIndex |
6 |
2.3 Добавьте в проект новую форму – форму 3:
перейдите в окно Project Explorerи убедитесь в том, что активна формаfrmSa,
выберите в строке меню системы программирования пункт Project,
выполните команду Add Form. В появившемся окне Add Form на закладке New предлагается по умолчанию Form,
в окне Add Form нажмите кнопку Open. Обратите внимание на то, что в окне проекта появилась новая форма, которая по умолчанию называется Form1.
2.4 Для добавления в проект формы 4 и формы5 повторите п. 2.2.
2.5 Задайте свойства формам Form1, Form2 и Form3 согласно таблице 2.2. Переход от одной форме к другой осуществляйте двойным щелчком на пиктограмме формы в окнеProject Explorer.
Таблица 2.2
Объект |
Свойство |
Значение |
Form1, Form3, Form2 |
Height |
8340 |
|
Width |
11760 |
|
Top |
0 |
|
BoderStyle |
1- Fixed Single |
Form1 |
Name |
frmGrph1 |
|
Caption |
График зависимости давления от высоты |
Form2 |
Name |
frmGrph2 |
|
Caption |
График зависимости плотности от высоты |
Form3 |
Name |
frmGrph3 |
|
Caption |
Графики зависимости температуры и скорости звука от высоты |
2.6 Задайте пути для сохранения проекта в своей личной папке:
перейдите в окно Project Explorerи убедитесь в том, что активна форма с именемfrmSa,
откройте меню File,
в открывшемся диалоговом окне Save File As :
убедитесь, что открыта ваша личная папка на диске Z:,
укажите имя файла satm6-1, нажмите на кнопку “Save“,
перейдите в окно Project Explorerи сделайте активной форму с именемfrmTabl,
сохраните форму с именем satm6-2,
аналогичным образом сохраните формы frmGrph1, frmGrph2иfrmGrph3соответственно с именамиsatm6-3 satm6-4 satm6-5.
откройте меню File,
выполните команду Save Project As,
в открывшемся диалоговом окне Save Project As введите имя файлаsatm6(по умолчанию оно будетsatm5) и нажмите на кнопку “Save“
2.7 Расположите ЭУ на форме frmGrph1:
перейдите в окно Project Explorerи сделайте активной форму с именемfrmGrph1,
расположите на форме командные кнопки Command1, Command2иCommand3,
задайте им свойства согласно таблице 2.3:
Таблица 2.3
Объект |
Свойство |
Значение |
Группа командных кнопок |
Font** |
Arial, (полужирный) Bold,11 |
|
MousePoiter |
NoDrop |
Command1 |
Name |
CmdCnl |
|
Caption |
&Cancel |
|
Cancel |
True |
|
TabIndex |
2 |
Command2 |
Name |
CmdNxt |
|
Default |
True |
|
Caption |
&Next |
|
TabIndex |
0 |
Command3 |
Name |
CmdExt |
|
Caption |
&Exit |
|
TabIndex |
1 |
2.7 Расположите ЭУ на формах frmGrph2иfrmGrph3
перейдите в окно Project Explorerи сделайте активной форму с именемfrmGrph2,
выполните п. 2.6,
повторите предыдущие пункты с соответствующими изменениями.
2.8 Создайте предварительный код для обработки нажатия кнопки Graphна формеfrmSa:
перейдите в окно Project Explorerи сделайте активной форму с именемfrmSa,
выполните двойной щелчек на кнопке Graph
введите в тело процедуры Private Sub cmdGrph_Click() текст
FrmGrph1.Show
Me.Hide
2.9 Создайте коды для обработки нажатий кнопок на форме frmGrph1:
перейдите в окно Project Explorerи сделайте активной форму с именемfrmGrph1,
выполните двойной щелчек на кнопке Cancel
введите в тело процедуры Private Sub cmdCnl_Click() текст
End
выполните двойной щелчек на кнопке Next
введите в тело процедуры Private Sub cmdNxt_Click() текст
FrmGrph2.Show
Me.Hide
выполните двойной щелчек на кнопке Exit
введите в тело процедуры Private Sub cmdExt_Click() текст
frmSa.Show
Me.Hide
2.10 Создайте коды для обработки нажатий кнопок на формах frmGrph2иfrmGrph3(повторите п 2.8 с соответствующими изменениями).
2.11 Протестируйте программу с пустыми формами
запустите программу на выполнение в среде VB5.0,
установите курсор на кнопку Graphи нажмите клавишуEnter– вызывается формаfrmGrph1,
установите курсор на кнопку Nextи нажмите левую клавишу мыши. На экран выводится формаfrmGrph2,
установите курсор на кнопку Nextи нажмите клавишуEnter. ФормаfrmGrph3становится активной.
нажмите клавишу Esc. Обратите внимание на то, что происходит выход из программы с удалением всех форм с экрана.
2.11 Разместите на форме frmGrph1графическое окно для вывода графика зависимости давления от высоты (высота – по оси Y снизу вверх от 0 до 15000 м, давление - по оси X слева направо от 10000 до 110000 паскалей).
перейдите в окно Project Explorerи сделайте активной формуfrmGrph1,
откройте форму frmGrph1кнопкойView Objectна панели инструментовObject Explorer(вторая слева),
щелчком мыши выберите компонент PictureBoxиз палитры компонентовToolbox(вторая слева кнопка в верхнем ряду палитры),
при нажатой кнопке мыши нарисуйте на форме frmGrph1прямоугольник графического окна максимально возможного размера,
задайте свойства графического окна в соответствии с таблицей:
Свойство |
Значение |
Name |
PctP_h |
ScaleMode |
0 – User |
ScaleLeft |
10000 |
ScaleTop |
15000 |
ScaleWidth |
100000 |
ScaleHight |
-15000 |
AutoRedraw |
True |
разместите вокруг графического окна надписи с указанием граничных значений высоты и давления:
слева от левой вертикальной рамки внизу надпись «0 км»
слева от левой вертикальной рамки вверху надпись «15 км»,
снизу под нижней горизонтальной рамкой слева надпись «10000 па»,
снизу под нижней горизонтальной рамкой справа надпись «110000 па»,
(точное положение, размер надписей и их шрифт выбрать самостоятельно, по аналогии с графиками функций, приведенными в литературе),
сохраните обновленную форму кнопкой Saveна панели инструментов VB.
2.12 Разместите на форме frmGrph2графическое окно для вывода графика зависимости плотности от высоты (высота – по оси Y снизу вверх от 0 до 15000 м, плотность - по оси X слева направо от 0,2 до 1,25).
перейдите в окно Project Explorer, сделайте активной формуfrmGrph2, и откройте ее,
выберите компонент PictureBoxиз палитры компонентовToolboxи при нажатой кнопке мыши нарисуйте на формеfrmGrph2прямоугольник графического окна максимально возможного размера,
задайте свойства графического окна в соответствии с таблицей:
-
Свойство
Значение
Name
PctR_h
ScaleMode
0 – User
ScaleLeft
0,2
ScaleTop
15000
ScaleWidth
1,05
ScaleHight
-15000
AutoRedraw
True
разместите вокруг графического окна надписи с указанием граничных значений высоты и плотности:
слева от левой вертикальной рамки внизу надпись «0 км»
слева от левой вертикальной рамки вверху надпись «15 км»,
снизу под нижней горизонтальной рамкой слева надпись «0,2»,
снизу под нижней горизонтальной рамки справа надпись «1,25»,
(точное положение, размер надписей и их шрифт выбрать самостоятельно, по аналогии с графиками функций, приведенными в литературе),
сохраните обновленную форму кнопкой Saveна панели инструментов VB.
2.13 Разместите на форме frmGrph3графическое окно для вывода графиков зависимостей температуры и скорости звука от высоты в одной системе координат (высота – по оси Y снизу вверх от 0 до 15000 м, скорость/температура - по оси X слева направо от 200 до 350).
перейдите в окно Project Explorer, сделайте активной формуfrmGrph3, и откройте ее,
разместите компонент PictureBoxиз палитры компонентовToolboxна формеfrmGrph3с максимально возможным размером,
задайте свойства графического окна в соответствии с таблицей:
Свойство |
Значение |
Name |
PctA_h |
ScaleMode |
0 – User |
ScaleLeft |
200 |
ScaleTop |
15000 |
ScaleWidth |
150 |
ScaleHight |
-15000 |
AutoRedraw |
True |
разместите вокруг графического окна надписи с указанием граничных значений высоты и скорости/температуры:
слева от левой вертикальной рамки внизу надпись «0 км»
слева от левой вертикальной рамки вверху надпись «15 км»,
снизу под нижней горизонтальной рамкой слева надпись «200»,
снизу под нижней горизонтальной рамки справа надпись «350»,
(точное положение, размер надписей и их шрифт выбрать самостоятельно, по аналогии с графиками функций, приведенными в литературе),
сохраните обновленную форму кнопкой Saveна панели инструментов VB.
2.14 Протестируйте программу с пустыми графиками
запустите программу на выполнение в среде VB5.0,
установите курсор на кнопку Graphи нажмите клавишуEnter– вызывается формаfrmGrph1с полем для рисования графика и надписями о граничных значениях высоты и давления,
установите курсор на кнопку Nextи нажмите левую клавишу мышки. На экран выводится формаfrmGrph2с полем для рисования графика и надписями о граничных значениях высоты и плотности,
установите курсор на кнопку Nextи нажмите клавишуEnter. На экран выводится формаfrmGrph3с полем для рисования графика и надписями о граничных значениях высоты и скорости звука/температуры,
нажмите клавишу Esc. Обратите внимание на то, что происходит выход из программы с удалением всех форм с экрана.
2.15 Разработайте алгоритм и запрограммируйте построение графиков. Исходные данные для построения берутся из массива gsngSa( ), сформированного в программе предыдущей лабораторной работы после расчета таблицы (при нажатии на кнопкуTableна формеfrmSa. Расположение данных в этом массиве:
gsngSa( 1,к) – к-е значение высоты
gsngSa( 2,к) – значение давления на к-й высоте
gsngSa( 3,к) – значение плотности на к-й высоте
gsngSa( 4,к) – значение температуры на к-й высоте
gsngSa( 5,к) – значение скорости звука на к-й высоте
к = 1,2,…, n где n – количество элементов во втором измерении массива gshgSa( ), которое можно получить используя функцию Ubound, возвращающую максимальный индекс элемента в массиве:
n = Ubound(gsngSa,2)-1
Массив gsngSaнаходится в модуле формыfrmSaи доступен только внутри этого модуля, поэтому все построения необходимо программировать в этой форме - при обработке события нажатия на кнопку «Graph» на формеfrmSa.
С учетом этого текст обработчика события будет иметь следующий вид:
Private Sub CmdGrph_Click()
Dim k As Integer
'ПОСТРОИТЬ ГРАФИКИ ДАВЛЕНИЯ, ПЛОТНОСТИ И ТЕМПЕРАТУРЫ
FrmGrph1.PctP_h.Cls ' очистить поле графика 1
FrmGrph1.PctP_h.ForeColor = vbGreen ' цвет графика 1 - зеленый
FrmGrph2.PctR_h.Cls ' очистить поле графика 2
FrmGrph2.PctR_h.ForeColor = vbRed ' цвет графика 2 - красный
FrmGrph3.PctA_h.Cls ' очистить поле графика 3
FrmGrph3.PctA_h.ForeColor = vbYellow ' цвет графика 3 - желтый
FrmGrph1.PctP_h.PSet (gsngSa(2, 1), gsngSa(1, 1)) ' нарисовать начальную ' точку графика 1
FrmGrph2.PctR_h.PSet (gsngSa(3, 1), gsngSa(1, 1)) ' нарисовать начальную ' точку графика 2
FrmGrph3.PctAh.PSet (gsngSa(4, 1), gsngSa(1, 1)) ' нарисовать начальную ' точку графика 3
For k = 2 To UBound(gsngSa, 2)-1 ' Цикл по остальным ' точкам из массива gsngSa
FrmGrph1.PctP_h.Line -(gsngSa(2, k), gsngSa(1, k)) ' нарисовать линию до ' очередной точки графика 1
FrmGrph2.PctR_h.Line -(gsngSa(3, k), gsngSa(1, k)) ' нарисовать линию до очередной точки графика 2
FrmGrph3.PctA_h.Line -(gsngSa(4, k), gsngSa(1, k)) ' нарисовать линию до ' очередной точки графика 3
Next k
'ПОСТРОИТЬ ГРАФИК СКОРОСТИ ЗВУКА НА ПОЛЕ ГРАФИКА ТЕМПЕРАТУРЫ
FrmGrph3.PctA_h.ForeColor = vbCyan ' цвет графика 4 - синий
FrmGrph3.PctA_h.PSet (gsngSa(5, 1), gsngSa(1, 1)) ' нарисовать первую точку ' графика 4
For k = 2 To UBound(gsngSa, 2)-1 ' Цикл по остальным ' точкам из массива gsngSa
FrmGrph3.PctA_h.Line -(gsngSa(5, k), gsngSa(1, k)) ' нарисовать линию до ' очередной точки графика 4
Next k
Me.Hide
FrmGrph1.Show ' показать форму для ' графика давления
End Sub
2.16 Создайте полный код обработчика события нажатия на кнопку «Graph» на формеfrmSa:
перейдите в окно Project Explorerи сделайте активной форму с именемfrmSa,
выполните двойной щелчок на кнопке «Graph»
перепишите текст обработчика события – процедуру Private Sub cmdGrph_Click()в соответствии с текстом, приведенным в п. 2.15. Комментарии в тексте программы можно не вводить.
сохраните обновленную форму кнопкой Saveна панели инструментов VB.
2.17 Сохраните разработанный проект.
2.18 Протестируйте программу
запустите программу на выполнение в среде VB5.0
задайте расчет для полного диапазона высот от 0 до 15000 м с шагом не более 1000 м
введите данные кнопкой OK
выполните расчет таблицы данных кнопкой Table
выполните расчет графиков и просмотр первого графика кнопкой Graph
просмотрите все графики, переходя с формы на форму кнопками Next
убедитесь, что полученные графики не содержат ошибок:
каждый график должен перекрывать весь диапазон высот
каждый график должен перекрывать почти весь диапазон по горизонтали
графики должны иметь плавный вид, без разрывов и прямых участков
изменение физических величин с высотой должно соответствовать законам стандартной атмосферы.
2.19 Исправьте обнаруженные ошибки и сохраните проект.
2.20 Продемонстрируйте работу программы преподавателю и защитите работу, ответив на контрольные вопросы по теоретической части и тексту программы.
2.31 Закройте среду программирования