Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_3_1_Лс_27_11_2011.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
4.63 Mб
Скачать

Контрольний опрос на практичному занятті (Вс, Лс)

Контрольные вопросы:

  1. Какими способами можно открыть текстовый файл? Как закрыть текстовый и любой другой открытый файл?

  2. Как записываются данные в открытый для записи текстовый файл? В чем разница между операторами Write и Print?

  3. Как читаются данные из открытого для чтения текстового файла? Чем отличаются друг от друга операторы Input и Line Input? При помощи какой функции можно прочитать из файла заданное число символов? Как прочитать все символы файла?

  4. Что такое пользовательский тип данных и как используется это понятие при работе с файлами произвольного доступа (raf)?

  5. С помощью каких операторов из файла raf читаются записи и в файл raf пишутся новые записи?

  6. С какой целью определяется и используется индекс при работе с файлом raf?

  7. Как можно применить элемент управления Common Dialog для загрузки содержимого текстового файла в текстовое поле? Как с помощью того же элемента управления сохранить отредактированный текст в текстовом файле?

  8. Как можно применить элемент управления Common Dialog для загрузки содержимого файла rtf в поле Rich Textbox? Как с помощью того же элемента управления сохранить отредактированный текст в файле rtf?

  9. Как можно применить элемент управления Common Dialog для изменения значений параметров шрифта и для изменения цвета текста в окне Textbox (или выделенного фрагмента текста в окне Rich Textbox)?

Лабораторна робота № 17. Графіка

ЗАВДАННЯ 17.1. Постановка задачи: ВЫБРАТЬ ОБЕКТЫ ДЛЯ ВЫВОДА ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ. ПРОДЕМОНСТРИРОВАТЬ РАЗМЕЩЕНИЕ ТОЧКИ (МЕТОД Pset) В РАЗНЫХ СИСТЕМАХ КООРДИНАТ (МЕТОД Scale).

Порядок действий

  • 1. Создайте новый проект. Разместите на форме: 4 объекта PictureBox14; 4 объекта CommandButton, при нажатии которых будет выполняться: 1) – установка системы координат; 2) — построение графических объектов (точек); 3) – очистка PictureBox; 4) — корректный выход.

Рисунок 17.1. Форма на которой размещены координатные оси

1) установка системы координат. Для установки системы координат используйте метод Scale:

Frame12

Picture2.Scale (-300, 300)-(300, -300) ‘

Picture3.Scale (300, 0)-(0, 300) ‘

Picture4.Scale (-5, 300)-(300, -5) ‘

2) построение графических объектов (точек).

Frame13

Для вывода точек введите программный код (красным цветом отметить начало координат):

DrawWidth15 = 10

PSet (100, 200)

Picture1.DrawWidth = 10

Picture1.PSet (100, 200)

Picture1.PSet (0, 0), vbRed

Picture2.DrawWidth = 10

Picture2.PSet (100, 200)

Picture2.PSet (0, 0), vbRed

Picture3.DrawWidth = 10

Picture3.PSet (100, 200)

Picture3.PSet (0, 0), vbRed

Picture4.DrawWidth = 10

Picture4.PSet (100, 200)

Picture4.PSet (0, 0), vbRed

3) очистка PictureBox

Picture1.BackColor = -2147483633

Picture2.BackColor = &H8000000F

Picture3.DrawWidth = 10

Picture3.PSet (100, 200), -2147483633

Picture4.BackColor = -2147483633

ЗАВДАННЯ 17.2. Постановка задачи. ПОСТРОИТЬ ГРАФИЧЕСКИЕ ПРИМИТИВЫ — ПРЯМУЮ, ПРЯМОУГОЛЬНИК, КРУГ, ОВАЛ, СЕКТОР, КРУГ, УСТАНОВИВ ДЛЯ НИХ РАЗЛИЧНЫЕ ХАРАКТЕРИСТИКИ (ЦВЕТ, ТОЛЩИНУ ЛИНИИ, ФОН, СПОСОБ ЗАЛИВКИ).

Порядок действий

  • Добавьте в проект новую форму. Разместите на форме 4 объекта PictureBox, 6 объектов CommandButton, при нажатии которых будет выполняться построение графических объектов, их местоположение, очистка PictureBox, корректный выход.

Рисунок 17.2 – Форма Задания 17.2

  • Очистка PictureBox (кнопка «Очистка экрана»)

Private Sub Command6_Click()

Picture1.Cls

Picture1.BackColor = -2147483633

End Sub

  • Корректный выход (кнопка «Выход»).

Private Sub Command3_Click()

Form3.Show

End Sub

  • Установка системы координат (кнопка «Установка шкалы»):

Frame14

Private Sub Command2_Click()

Picture1.DrawWidth = 3

Picture1.Line (200, 200)-(500, 800), vbMagenta, B

'Picture1.DrawWidth = 1

'Picture1.Line (200, -200)-(550, -1000),, B

Picture1.FillStyle = 0

Picture1.FillColor = vbGreen

Picture1.Line (-2000, -2000)-(-1900, 2000),, B 'Почему прямоугольник зеленый?

Picture1.FillStyle = 1

'Трасса Е95

a1 = -1900 'min X левая граница

b1 = 200 'max X правая граница

a2 = 800 'min Y верхняя граница

b2 = 200 'max Y нижняя граница

n = 300 'Длина участка

xn = Val(Text1.Text)

yn = (a2 - b2) \ 2 + b2

s = 0

Do

s = s + 1

'MsgBox " Участок трассы № " + Str(s)

xk = ((xn + n) - xn) * Rnd + xn

yk = (b2 - a2) * Rnd + a2

If xk > b1 Then

Picture1.Line (xn, yn)-(b1, yk)

Else

Picture1.Line (xn, yn)-(xk, yk)

End If

xn = xk

yn = yk

Loop While s < 40 And xk <= b1

Picture1.DrawWidth = 1

End Sub

Дополните задание 17.2:

  • измените цвет оси Х на синий.

  • дополните код и прокомментируйте его:

Picture1.Line (20, 200)-(500, 800), vbMagenta, B

  • установить пропорции сторон прямоугольника один к трем в I-й четверти, четыре к одному во II-й четверти;

  • начертить квадрат в третей четверти, провести заливку квадрата желтым цветом: для закраски добавьте перед командой рисования квадрата команду определения цвета заливки FillColor и команду определения стиля заливки FillStyle (0 соответствует сплошной заливке):

FillColor = vbYellow

FillStyle = 0

Рис. 17.3

  • Рисование объектов (кнопка «Рисование круга, сектора, окружности, эллипса»).

Private Sub Command4_Click()

'Светофор

Picture1.DrawWidth = 1

Picture1.FillStyle = 0

Picture1.FillColor = vbRed

Picture1.Circle (0, 1700), 100, vbWhite

Picture1.FillColor = vbYellow

Picture1.Circle (0, 1450), 100, vbWhite

Picture1.FillColor = vbGreen

Picture1.Circle (0, 1200), 100, vbWhite

'Семицветик

Picture1.Circle (1250, 1500), 150, vbBlack,,, 2

Picture1.Circle (1250, 1000), 150, vbBlack,,, 2

Picture1.Circle (1500, 1250), 150, vbBlack,,, 0.5

Picture1.Circle (1000, 1250), 150, vbBlack,,, 0.5

Picture1.Circle (1250, 1250), 100, vbBlack

'Добавить к светофору:

Picture1.DrawWidth = 5

Picture1.Circle (0, 1700), 150, vbRed, 1, 5

Picture1.Circle (0, 1450), 150, vbYellow, 1, 5

Picture1.Circle (0, 1200), 150, vbGreen, 1, 5

Picture1.DrawWidth = 1

Picture1.FillStyle = 1 'При тестировании установить заливку цветом =1

Picture1.Circle (-1200, -1200), 400, vbCyan, -0.00000000001, -0.4

Picture1.Circle (-1200, -1200), 400, vbCyan, -0.5, -0.9

Picture1.Circle (-1200, -1200), 400, vbCyan, -1, -1.4

Picture1.Circle (-1200, -1200), 400, vbCyan, -1.5, -1.9

Picture1.Circle (-1200, -1200), 400, vbCyan, -2, -2.4

Picture1.Circle (-1200, -1200), 400, vbCyan, -2.5, -2.9

Picture1.Circle (-1200, -1200), 400, vbCyan, -3, -3.4

Picture1.Circle (-1200, -1200), 400, vbCyan, -3.5, -3.9

Picture1.Circle (-1200, -1200), 400, vbCyan, -4, -4.4

Picture1.Circle (-1200, -1200), 400, vbCyan, -4.5, -4.9

Picture1.Circle (-1200, -1200), 400, vbCyan, -5, -5.4

Picture1.Circle (-1200, -1200), 400, vbCyan, -5.5, -5.9

Picture1.Circle (-1200, -1200), 400, vbCyan, -6, -6.283128

'разукасить цветок смешав цвета (ИДЗ)

Мигалка

'Picture1.DrawWidth = 50

'Picture1.FillStyle = 0

'Picture1.Circle (600, -600), 600, QBColor(Int(Rnd() * 15))

's = 0

'Do

'Picture1.FillStyle = 0

'Picture1.FillColor = QBColor(Int(Rnd() * 15))

'Picture1.Circle (600, -600), 300, QBColor(Int(Rnd() * 10 + 5)), s, s + 0.2

's = s + 1

'Loop While s < 7

End Sub

Рис. 17.4

ЗАВДАННЯ 17.3. Постановка задачи: СОЗДАТЬ ПАЛИТРУ ХУДОЖНИКА ДЛЯ СМЕШИВАНИЯ КРАСОК

Frame15

ЗАВДАННЯ 17.4. Постановка задачи: ПОСТРОИТЬ СТОЛБЦЕВУЮ ДИАГРАММУ ПО РЯДУ ДАННЫХ.

Порядок действий

  • Добавьте в проект новую форму. Разместите на форме 1 объект PictureBox, 6 объектов CommandButton, при нажатии которых будет создан массив с исходными данными, выполняться построение диаграммы, установка и изменение координат, очистка PictureBox, корректный выход.

Рис. 17.5

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

  • 4.1. Объявление переменных:

Option Explicit

Dim n, i As Integer

Dim a(100), max, imax, min, imin, ky, kx

  • Корректный выход (кнопка «Выход»).

Private Sub Command2_Click()

Form3.Show

End Sub

  • Очистка PictureBox (кнопка «Очистка»).

Private Sub Command3_Click()

Picture1.Cls

End Sub

  • Создание массива с исходными данными (кнопка «Создать массив»).

Например, задан ряд данных – массив а(і) где і[1,n], n=4.

Сформировать массив с выводом его на форму.

Private Sub Command4_Click()

n = 4

a(1) = 200

a(2) = 300

a(3) = 500

a(4) = 200

Print a(1), a(2), a(3), a(4)

End Sub

  • Установка системы координат (кнопка «Установка шкалы»).

Private Sub Command5_Click()

Dim x1 As Integer, x2 As Integer, y1 As Integer, y2 As Integer

'If Text1.Text <> 0 And Text2.Text <> 0 And Text3.Text <> 0 And Text4.Text <> 0 Then

ky = Picture1.Height / (Text2.Text - Text4.Text)

Print "Коэффициент масштабирования по У", ky

kx = Picture1.Width / (Text3.Text - Text1.Text)

Print "Коэффициент масштабирования по У", kx

x1 = Val(Text1.Text) * kx

x2 = Val(Text3.Text) * kx

y1 = Val(Text2.Text) * ky

y2 = Val(Text4.Text) * ky '+ min

Picture1.Scale (x1, y1)-(x2, y2)

Picture1.DrawWidth = 1

Picture1.Line (x1, 0)-(x2 - 100, 0) 'îñü X

Picture1.Print "X"

Picture1.Line (0, y1)-(0, y2) 'îñü Y

Picture1.PSet (10, y1 - 50)

Picture1.Print "Y"

'End If

Picture1.DrawWidth = 3

Picture1.PSet (0, 0)

End Sub

  • Изменение системы координат соответственно данным (кнопка «Переустановка шкалы, соответственно массиву»).

Private Sub Command6_Click()

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

max = a(1)

imax = 1

min = a(1)

imin = 1

For i = 2 To n

If a(i) > max Then max = a(i): imax = i

If a(i) < min Then min = a(i): imin = i

Next i

If max < 0 Then max = 0

Text5.Text = max

Text6.Text = imax

If min > 0 Then min = 0

Text7.Text = min

Text8.Text = imin

'Print "Разница между максимальным и минимальным элементами составила ", max - min

Picture1.Height = 4000

Picture1.Height = 4000

ky = Picture1.Height / (max - min)

Print "Коэффициент масштабирования по У", ky

Picture1.Width = 4000

kx = Picture1.Width / n

Print "Коэффициент масштабирования по У", kx

Text1.Text = 0

Text3.Text = n

Text2.Text = max

Text4.Text = min

End Sub

  • Построение диаграммы (кнопка «Построить диаграмму»).

Наибольшее данное отобразить красным цветом, остальные – синим

Private Sub Command1_Click()

For i = 1 To n

'If i = imax Then Picture1.sColor = vbRed Else Picture1.sColor = vbBlue

Picture1.Line (kx * (i - 1), 0)-(kx * i, a(i) * ky),, B

Next i

End Sub

Замечание:

  • Можно добавить «округление» длины данного до ближайшего целого, делящегося на 10 без остатка (Например, 12 округлить до 20, 1159 округлить до 1200 и.т.д – работа с текстом).

  • Можно считывать данные из файла – полезнее!!!

  • Для анимации переключение светофора и «рябь» штриховкой.

  • Для анимации синхранизация светофора с движением поезда (окружности).

1 Примечание. Эти процедуры являются подпрограммами в главной программе Project1. То есть процедуры – это программы, выполняемые «внутри» другой программы. В дальнейшем мы увидим, что любая процедура сама может содержать в себе подпрограммы (другие процедуры). Написанные нами процедуры называются событийными. Они выполняются в том случае, когда с некоторым объектом происходит некоторое событие.

2 Примечание. Вместо слова Print можно набирать знак вопроса « ? », Visual Basic сам заменит его на метод Print.

3 Примечание Метод Print предписывает выводить (визуализировать) информацию.

4 Примечание. Компетентного и аккуратного программиста отличает способность дать точное имя (свойство Name) объекту управления и форме, так чтобы в программе была возможность распознать и тип объекта управления, и его назначение.

5 Примечание. Обратите внимание, во второй строке Окна программного кода имеются два окна списков. В левом указан объект управления, с которым связан программный код (процедура), в нашем случае это командная кнопка ВЫХОД (значение свойства Name этой кнопки – cmdВыход мы видим в окне). В правом окне указано событие, которое должно быть произведено, чтобы выполнялась данная процедура, в нашем случае это щелчок мышью по кнопке ВЫХОД (Click).

6 Рекомендация. Поставьте знак {‘ } перед оператором Option Explicit 1–й строки программного кода (см. лр2 п.28)

7 Комментарии можно не набирать.

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

9 Примечание. Переменная может встречаться в программе несколько раз. Нужно ли всегда писать суффикс в конце ее имени? Не обязательно. Этот суффикс можно написать только один раз – когда переменная впервые появилась в тексте программы.

10 Примечание. Можно, не объявляя переменную, просто использовать ее имя, как Вы и делали в Лабораторной работе № 1. Если не определять тип данных, то присваивается тип Variant. Необходимо учитывать, что переменные типа Variant занимают больше места в памяти и обращение к ним происходит несколько медленнее.

11 Примечание. Кроме объявляемых констант, в программе могут использоваться системные, встроенные константы, например, значение цвета VbRed, VbWhite и т.д. Имена этих констант – ключевые слова Visual Basic.

12 Примечание. В Visual Basic все объекты, в которые можно что-то записать, обладают методом Print. Например, чтобы отобразить на форме frmMyForm строку "Привет ", можно составить следующий код: frmMyForm.Print "Привет" При использовании метода Print разрешается опускать имя объекта. Обычно таковым объектом является активная форма.

13 Примечание: Если вам не понятна причина ошибки, щелкните по кнопке <Справка>. Оперативную справку можно получить по любому ключевому слову Visual Basic. Для этого следует установить курсор на слово и нажать клавишу [F1].

14 графические методы применимы к форме, объекту PictureBox и некоторым другим объектам

15 свойство DrawWidth – число (Integer) – размер (диаметр) точки, по умолчанию = 1

172