Практикум по программированию в объектно-ориентированной среде Visual Basic 6.0

Практикум по программированию в среде Visual Basic” разработан учителем информатики Казахстанско-Российскойгимназии Титовой Е.В.

Практикум рассмотрен и утвержден на заседании предметно-цикловой комиссии «Математика и информатика».



















“Практикум по программированию в среде Visual Basic” является дополнением к лекционному курсу «Основы алгоритмизации и программирования». Каждая работа представлена в виде проекта, включающего в себя несколько задач, объединенных одной идеей.
Настоящий практикум прошел экспериментальную проверку в 2005-2006 учебном году на практических занятиях по дисциплине «Основы алгоритмизации и программирования». Данный практикум можно использовать в техникумах, колледжах, а также на факультативных занятиях по информатике в старших классах специализированных школ.

С наилучшими пожеланиями. Автор.



Содержание

13 TOC \o "1-1" \h \z \u 1413 LINK \l "_Toc164238984" 14Лабораторная работа № 1 1513 LINK \l "_Toc164238985" 14Проект «Электронный альбом» 13 PAGEREF _Toc164238985 \h 1451515
13 LINK \l "_Toc164238986" 14Лабораторная работа № 2 1513 LINK \l "_Toc164238987" 14Проект «Счетная машинка для дробей» 13 PAGEREF _Toc164238987 \h 1471515
13 LINK \l "_Toc164238988" 14Лабораторная работа № 315 13 LINK \l "_Toc164238989" 14Проект «Звездное небо и знаки Зодиака» 13 PAGEREF _Toc164238989 \h 1491515
13 LINK \l "_Toc164238990" 14Лабораторная работа № 415 13 LINK \l "_Toc164238991" 14Проект «Круговая диаграмма» 13 PAGEREF _Toc164238991 \h 14111515
13 LINK \l "_Toc164238992" 14Лабораторная работа № 515 13 LINK \l "_Toc164238993" 14Проект «Электронный букет» 13 PAGEREF _Toc164238993 \h 14131515
13 LINK \l "_Toc164238994" 14Лабораторная работа № 6 1513 LINK \l "_Toc164238995" 14Рисование графиков функций 13 PAGEREF _Toc164238995 \h 14151515
13 LINK \l "_Toc164238996" 14Лабораторная работа № 7 1513 LINK \l "_Toc164238997" 14Анимация 13 PAGEREF _Toc164238997 \h 14171515
13 LINK \l "_Toc164238998" 14Лабораторная работа № 8 1513 LINK \l "_Toc164238999" 14Проект «Писатель» 13 PAGEREF _Toc164238999 \h 14191515
13 LINK \l "_Toc164239010" 14Лабораторная работа № 9 1513 LINK \l "_Toc164239011" 14Проект «Бюро погоды» 13 PAGEREF _Toc164239011 \h 14211515
13 LINK \l "_Toc164239052" 14Лабораторная работа № 10 1513 LINK \l "_Toc164239053" 14Проект «Чемпионат мира по футболу» 13 PAGEREF _Toc164239053 \h 14231515
13 LINK \l "_Toc164239054" 14Лабораторная работа № 11 1513 LINK \l "_Toc164239055" 14Проект «Геометрические фигуры» 13 PAGEREF _Toc164239055 \h 14251515
13 LINK \l "_Toc164239056" 14Лабораторная работа № 12 1513 LINK \l "_Toc164239057" 14Проект «Контролирующая программа» 13 PAGEREF _Toc164239057 \h 14271515
13 LINK \l "_Toc164239058" 14Лабораторная работа № 13 1513 LINK \l "_Toc164239059" 14Проект «Контролирующая программа 13 PAGEREF _Toc164239059 \h 14291515
13 LINK \l "_Toc164239060" 14с переключателями Option*» 13 PAGEREF _Toc164239060 \h 14291515
13 LINK \l "_Toc164239069" 14Лабораторная работа № 1415 13 LINK \l "_Toc164239070" 14Проект «Двумерные массивы» 13 PAGEREF _Toc164239070 \h 14311515
13 LINK \l "_Toc164239072" 14Лабораторная работа № 15 1513 LINK \l "_Toc164239073" 14Проект «Процедуры и функции. Мышь». 13 PAGEREF _Toc164239073 \h 14331515
13 LINK \l "_Toc164239076" 14Лабораторная работа № 16 1513 LINK \l "_Toc164239077" 14Проект «Рекурсивные процедуры и фракталы» 13 PAGEREF _Toc164239077 \h 14341515
13 LINK \l "_Toc164239105" 14Лабораторная работа № 17 1513 LINK \l "_Toc164239106" 14Проект «Управление файлами» 13 PAGEREF _Toc164239106 \h 14361515
13 LINK \l "_Toc164239107" 14Лабораторная работа № 18 1513 LINK \l "_Toc164239108" 14Проект «Оболочка для курсового проекта» 13 PAGEREF _Toc164239108 \h 14401515
13 LINK \l "_Toc164239109" 14Литература: 13 PAGEREF _Toc164239109 \h 14421515
15
Лабораторная работа № 1
Проект «Электронный альбом»

Описание проекта: После запуска программы на экране появляется название проекта и меню, состоящее из управляющих кнопок, на которых расположены названия картин. Пользователь может «листать» альбом, щелкая по управляющим кнопкам с соответствующим названием.

13 SHAPE \* MERGEFORMAT 1415Последовательность работы:
Приготовить на Рабочем столе папку с графическими файлами.
Открыть Новый проект Visual Basic.
Переименовать форму Form1 в «Электронный альбом», изменив значение свойства Name в окне свойств объектов Properties.
Разместить на форме не менее 4 кнопок Comandbutton.
Создать на кнопке Commandbutton1 надпись с названием первой картины (например: Лето), изменив значение свойства Caption в окне свойств объектов Properties.
Аналогично «подписать» остальные кнопки: Commandbutton2, Commandbutton3, Commandbutton4.
Загрузить первый рисунок в объект Image1, изменив значение свойства Picture в окне свойств объектов Properties.
Аналогично загрузить остальные рисунки (2, 3, 4) в объекты Image2, Image3, Image4.
Написать программный код для объекта Commandbutton1.
Для этого необходимо:
Дважды щелкнуть левой кнопкой мыши по объекту Commandbutton1
Найти в редакторе кодов заготовку процедуры:
Private Sub Command1_Click()

End Sub
Записать в тело процедуры команды, которые должны произойти по событию «щелчок левой кнопкой мыши» по управляющей кнопке Command1: Все картинки, кроме картинки «Лето» должны стать невидимыми. Для этого внутри заготовки процедуры записывают команды:
Image1.visible=true
Image2.visible=false
Image3.visible=false
Image4.visible=false
Аналогично записывают программные коды для оставшихся кнопок, соблюдая при этом следующее соображение: свойство visible должно быть истинным (True) для объекта, который должен появиться на форме, а остальные объекты должны стать невидимыми (False).

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

Форма отчета:
Наличие рабочего проекта на ЭВМ.
Лабораторная работа с:
описанием проекта
эскизом формы
таблицей свойств объектов, расположенных на форме:

Объект
Свойство
Значение

Form1
Name
Электронный альбом

Command1
Caption
Лето





тексты программных кодов.

Дополнительное задание: Запрограммируйте изменение цвета формы так, чтобы он подходил к каждому рисунку?



Лабораторная работа № 2
Проект «Счетная машинка для дробей»

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

13 SHAPE \* MERGEFORMAT 1415

Последовательность работы:
Открыть Новый проект Visual Basic.
Переименовать форму Form1 в «Счетная машинка для обыкновенных дробей», изменив значение свойства Name в окне свойств объектов Properties.
Разместить на форме следующие объекты:
Объект
Свойство
Значение

Form1
Caption
Счетная маштнка

Textbox1
-
-

Textbox2
-
-

Textbox3
-
-

Textbox4
-
-

Textbox5
-
-

Textbox6
-
-

Command1
Caption
Сложение

Command2
Caption
Вычитание

Command3
Caption
Умножение


Написать программный код для объектов Commandbutton*.
Для этого необходимо:
Дважды щелкнуть левой кнопкой мыши по объекту Commandbutton1
Записать в редакторе кодов процедуры:
Private Sub Command1_Click ()
Text
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
Функция val превращает символ в число.
Функция str превращает число в символ.

Форма отчета:
Наличие рабочих проектов на ЭВМ.
Лабораторная работа с:
описанием проекта
эскизом формы
таблицей свойств объектов, расположенных на форме:

Объект
Свойство
Значение





тексты программных кодов.

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




Лабораторная работа № 3
Проект «Звездное небо и знаки Зодиака»

Взглянув на пояс Зодиака
мы в январе увидим Рака,
А в феврале заметим Льва.
Хранителем его была
В холодном марте злая Дева,
Весьма похожая на Еву.
Весы купив себе в апреле,
Они спокойно жить хотели,
Но в мае страшный Скорпион
У них отнял покой и сон.
Его убил Стрелец прекрасный,
Отца июня сын несчастный,
В июле ж братец Козерог
Сон Льва и Девы уберег,
А в августе, на много дней
Приехал к дяде Водолей.
Из рыб уху он в сентябре
Варил и кушал во дворе,
Зажарил Овна в октябре,
Тельца зарезал в ноябре.
А декабре, в конце концов
Родилась пара близнецов.

(Ю. Валишин, 1961)
Данное стихотворение приведено не случайно: оно помогает запомнить какие созвездия виды в указанные месяцы на звездном небе. Кроме того, мы используем его в нашем проекте.
Описание проекта: После запуска программы на экране появляется название проекта и меню, состоящее из управляющих кнопок, на которых расположены названия созвездий «Персей», «Лев», «Большая медведица».

13 SHAPE \* MERGEFORMAT 1415

Методы и инструкции, которые вам потребуются для работы над проектом:
Метод масштабирования:
[Имя объекта.] Scale (x1, y1)-(x2,y2)
Рисование точки:
[Имя объекта.] Pset (x,y), vbwhite
Диаметр точки и толщина линии:
[Имя объекта.] DrawWidth=1
Рисование линии:
[Имя объекта.] Line (x1, y1)-(x2,y2)[.цвет]
Очистка экрана
[Имя объекта.] CLS

Последовательность работы:
Открыть Новый проект Visual Basic.
Переименовать форму Form1 в «Звездное небо и знаки Зодиака»
Разместить на форме следующие объекты:
Объект
Свойство
Значение

Form1
Caption
Звездное небо и знаки Зодиака

Picture1
-
-

Command1
Caption
Персей

Command2
Caption
Звездное небо

Command3
Caption
Поэзия

Command4
Caption
Очистка картинки


Написать программные коды для объектов Commandbutton*:


·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Взглянув на пояс Зодиака”
End Sub


Форма отчета:
Наличие рабочих проектов на ЭВМ.
Лабораторная работа с:
описанием проекта
эскизом формы
таблицей свойств объектов, расположенных на форме:

Объект
Свойство
Значение





тексты программных кодов.



Лабораторная работа № 4
Проект «Круговая диаграмма»

Описание проекта: После запуска программы на экране появляется название проекта, окна для ввода количества «отличников», «хорошистов», «троечников» и «двоечников», а также управляющая кнопка, после нажатия на которую, появляется круговая диаграмма, показывающая процентное соотношение картины успеваемости класса..

13 SHAPE \* MERGEFORMAT 1415

Методы и инструкции, которые вам потребуются для работы над проектом:
Метод масштабирования:
[Имя объекта.] Scale (x1, y1)-(x2,y2)
Рисование окружности:
[Имя объекта.] circle(x,y), r, c
Рисование сектора:
[Имя объекта.].circle(x,y),r,c,-n,-k, a
Рисование линии:
[Имя объекта.] Line (x1, y1)-(x2,y2)[.цвет]
Очистка экрана
[Имя объекта.] CLS

Последовательность работы:
Открыть Новый проект Visual Basic.
Переименовать форму Form1 в «Круговая диаграмма».
Разместить на форме следующие объекты:
Объект
Свойство
Значение

Form1
Caption
Круговая диаграмма

Picture1
-
-

Text1



Text2



Text3



Text4




Написать программный код для объектов Command1:
А) Масштабировать объект Picture.
Б) Считать значение окон Text1, Text2, Text3, Text4 и присвоить их значения переменным OTL, HOR, TR, DV, не забыв при этом преобразовать их тип из символьного в числовой.
В) Посчитать сколько всего учеников в классе:
VSEGO:= OTL+HOR+TR+ DV
В) Посчитать значение начала дуги и конца дуги для каждого вида учеников:
Для отличников:
NO:=2*3.14
KO:=OTL*6.28/VSEGO

Для хорошистов: NH:= OTL*6.28/VSEGO
KH:= KO+HOR*6.28/VSEGO

Для троечников NT:=HOR*6.28/VSEGO
KT:=KH+TR*6.28/VSEGO
Для двоечников: ND:=HOR*6.28/VSEGO
KD:=KT+TR*6.28/VSEGO
Г) Задать стиль и цвет заливки для сектора «отличники», используя функции SetFillStyl и SetColor
Д) Начертить сектор окружности данного цвета, радиуса, соразмерного с масштабом объекта Picture1 для отличников.
E) Повторить пункты Г) и Д) для «хорошистов», «троечников», «двоечников».

Форма отчета:
Наличие рабочих проектов на ЭВМ.
Лабораторная работа с:
описанием проекта
эскизом формы
таблицей свойств объектов, расположенных на форме:

Объект
Свойство
Значение





тексты программных кодов.


Лабораторная работа № 5
Проект «Электронный букет»

Описание проекта: После запуска программы на экране появляется название проекта и меню, состоящее из управляющих кнопок, на которых расположены названия элементов, составляющих картину: вазу, букет, а также услугу очистки рисунка.

Я предлагаю спеть о том,
Что на столе стоят цветы,
И много места за столом,
Вот только не приходишь ты
И очень грустно мне смотреть
На этот праздничный букет.
Он засыхает на глазах,
Он осыпается в слезах,
Когда тебя со мною рядом нет.
Евгений Бачурин
13 SHAPE \* MERGEFORMAT 1415

Методы и инструкции, которые вам потребуются для работы над проектом:
Метод масштабирования:
[Имя объекта.] Scale (x1, y1)-(x2,y2)
Рисование окружности:
[Имя объекта.] CIrcle (x,y), r, c
Рисование эллипса:
[Имя объекта.] CIrcle (x,y), r, c,n,k,a
Диаметр точки и толщина линии:
[Имя объекта.] DrawWidth=1
Рисование линии:
[Имя объекта.] Line (x1, y1)-(x2,y2)[.цвет]
Очистка экрана
[Имя объекта.] CLS
Команда повторения с параметром:
For I=1 to N step 1
{Тело цикла}
Next I
Последовательность работы:
Открыть Новый проект Visual Basic.
Переименовать форму Form1 в «Электронный букет»
Разместить на форме следующие объекты:
Объект
Свойство
Значение

Label1
Caption
Я предлагаю спеть о том

Picture1
-
-

Command1
Caption
Букет

Command2
Caption
Очистка картинки

Command3
Caption
Поэзия

Command4
Caption
Об авторе


Написать программные коды для объектов Commandbutton*:

Private Sub Command1_Click()
Dim y, i, x As Integer
Picture1.Scale (-100, 100)-(100, -100)
For y = -80 To 0 Step 0.1
c1 = 255 * Rnd(): c2 = 255 * Rnd(): c3 = 255 * Rnd()
P
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
· FillColor = vbYellow: Picture1.Circle (x, y), 5, RGB(c1, c2, c3)
Next i
End Sub

Private Sub Command2_Click()
Picture1.Cls
End Sub

Private Sub Command3_Click()
Label1.Caption = "Я предлагаю спеть о том, рядом нет."
End Sub

Private Sub Command4_Click()
Label1.Caption = "Программа <Электронный букет> выполнена Незнайкой для Кнопочки"
End Sub

Форма отчета:
Наличие рабочих проектов на ЭВМ.
Лабораторная работа с:
описанием проекта
эскизом формы
таблицей свойств объектов, расположенных на форме:

тексты программных кодов.
Лабораторная работа № 6
Рисование графиков функций

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

Ход работы:
Создать новую форму.
Расположить на форме объект, на котором будут размещены графики функций.
Расположить кнопки будущего меню.
Подписать кнопки меню названиями графиков функций.
Написать коды, обрабатывающие события для каждой кнопки.

13 SHAPE \* MERGEFORMAT 1415
Методы и инструкции, которые вам потребуются для работы над проектом:
Метод масштабирования:
[Имя объекта.] Scale (x1, y1)-(x2,y2)

Диаметр точки и толщина линии:
[Имя объекта.] DrawWidth=1

Рисование линии:
[Имя объекта.] Line (x1, y1)-(x2,y2)[.цвет]
Очистка экрана
[Имя объекта.] CLS

Команда повторения с параметром:
For I=1 to N step 1
{Тело цикла}
Next I

Особенности масштабирования объекта для построения графика синусоиды:

А) Функция синуса имеет вид: у = sin ( x )
B) Результат функции синуса (Y) должен лежать в диапазоне от (-1) до (1).
С) Аргумент функции должен быть выражен в радианах, то есть, вместо интересующего нас угла (X градусов) надо написать ( X * 3.14 / 180 ).
Д) Так как график синусоиды периодически повторяется, хочется посмотреть его на большом диапазоне, например от -100 до 100 для Х.

Масштабирование объекта делается из вышеизложенных соображений:
Picture1.Scale (-100, 2)-(100,-2)

В данном диапазоне и будут изменяться наши переменные:
For x = - 100 to 100 step 0.1
Y = sin ( 3.14 * x / 180 )
Picture1. Pset ( x , y ), vbblue
Next x

Задача 1: Построить графики функций, область допустимых значений аргументов которых не имеет ограничений на диапазоне от -100 до 100:
Построить график функции Y=X*X
Построить график функции Y=X*X*X
Построить график функции Y = a * x * x + b * x + c.

Задача 2: Построить графики функций, в которых значение аргумента может принимать только такие значения, которые не обращают знаменатель в нуль.
Построить график функции Y = 1 / X .
Построить график функции Y = (2 +X)/ (X-2)
Построить график функции Y = (3 / X-5) .

Задача 3: Построить графики тригонометрических функций:
y = sin ( x )
y = 2*cos ( x )
y=sin(x)/cos(x)

Задача 4: Построить график функции, изменяющей свою форму, в зависимости от значений аргумента.
Кардиоида
Эпициклоида
Циссоида
Улитка Паскаля

Форма отчета:
Наличие рабочих проектов на ЭВМ.
Лабораторная работа с:
описанием проекта
эскизом формы
таблицей свойств объектов, расположенных на форме:

тексты программных кодов.


Лабораторная работа № 7
Анимация

Описание проекта «Перемещение треугольника»: На форме расположен объект, поддерживающий файлы с расширением *.bmp и *.img.: Picture* или Image*. На объекте изображен треугольник. На форме имеется также командная кнопка, после нажатия на которую, объект перемещается из левого в правый угол.

Последовательность работы:
Выполним чертеж, в котором одна клеточка будет равна 5 твипам.













































с






















































а


В








Пусть точка А имеет координаты (X,Y). Выразим координаты точек В и С через координаты базовой точки А: В(x+10,y), а координаты точки С (x,y+20).

Запишем строки программного кода, в котором данный треугольник изображается методом «базовой точки»:

x=5: y=5
picture1.line (x,y)-( x+10,y)
picture1.line (x+10,y)-( x,y+20)
picture1.line (x,y+20)-( x,y)

Перемещение фигурки по экрану возможно при помощи цикла For – Next. Для этого надо:
Организовать в заголовке цикла изменение базовых координат с нужным шагом.
В теле цикла вычерчивать фигуру цветом, отличным от цвета фона, а затем рисовать ее же цветом фона (это даст эффект рисования-затирания). В нашем случае это будет выглядеть так:
x=5: y=5
For x=5 to 60 step 1
picture1.line(x,y)-( x+10,y), vbwhite
picture1.line(x+10,y)-( x,y+20), vbwhite
picture1.line(x,y+20)-( x,y), vbwhite
picture1.line(x,y)-( x+10,y), vbblack
picture1.line(x+10,y)-( x,y+20), vbblack
picture1.line(x,y+20)-( x,y), vbblack
Next i

Задача 1: На форме расположен объект Picture и четыре командных кнопки с надписями «Вверх», «Вниз», «Влево», «Вправо». В центре объекта изображена окружность. По нажатию на данные кнопки, окружность перемещается в указанном направлении.
А) уходит за пределы объекта
В) доходит только до края «экрана».

Задача 2: Изобразить шарик, двигающийся в горизонтальном направлении, отражающийся от стенок «экрана».
А) Затухающие колебания
В) Незатухающие колебания.

Задача 3: Изобразить шарик, отражающийся от стенок экрана.

Задача 4: Изобразить отражающуюся от стенок экрана «гантелю» (две окружности центры которых соединены отрезком).

Задача 5: Изобразить качающийся маятник.
А) С затухающими колебаниями.
В) С незатухающими колебаниями.

Задача 6: Изобразить циферблат
А) с секундной
В) минутной
С) часовой стрелками.

13 SHAPE \* MERGEFORMAT 141513 SHAPE \* MERGEFORMAT 1415

Лабораторная работа № 8
Проект «Писатель»

Описание проекта: На форме расположены «окошки» с фрагментами предложений. При нажатии на клавишу «Пуск» электронный писатель предоставляет новый рассказ. Так как фрагменты каждой строки подбираются случайным образом, смысл рассказа может быть лишен логики.
13 SHAPE \* MERGEFORMAT 1415
Порядок выполнения работы:

Запустите систему Visual Basic и создайте новый проект.
Разместите на форме 3 объекта ComboBox* (поля со списком).
Настройте созданные списки следующим образом:
Найдите свойство Style (стиль) первого Combobox1 и выберите для него вариант 2 - Dropdown List (раскрывающийся список).
Найдите свойство List (Список), щелкните в окошке напротив, появится пустой список. Заполните список (Буратино, Карабас, Дуремар, Пьеро), нажимайте + после каждого элемента, чтобы не выйти из режима заполнения списка.
Список закрывается нажатием на клавишу
Заполните аналогично список Combobox2 элементами (сразу же нашел, грустно разглядывал, крутил в руках, искал в болоте)
Заполните аналогично список Combobox3 элементами (золотой ключик, плетку-семихвостку, новые стихи для Мальвины, сердитую пиявку)

Добавьте кнопку для перемешивания списков СommandButton.
Измените свойство Caption кнопки: Случайный выбор.

Можете сделать первую проверку программы:
Запустите программу
Вручную открывайте списки и устанавливайте нужное вам словосочетание.
Остановите программу.

Сделаем так, чтобы уже при загрузке формы в списках автоматически появлялся текст:
Щелкните по пустому месту формы дважды.
Создайте процедуру

Private Sub Form_Load ()

End Sub

Запишите в нее команды:

Combo1.listIndex=0
Combo2.listIndex=0
Combo3.listIndex=0

Это будет означать, что после загрузки формы в списках должны появиться первые элементы списков (нумерация начинается с нуля).

В этой же процедуре надо вставить оператор: Randomize Timer.

Чтобы ЭВМ генерировала рассказ, надо записать код для кнопки Command1.

Private Sub Command1_Click ( )
Combo1.ListIndex = int ( rnd * combo1.ListCount)
Combo2.ListIndex = int ( rnd * combo2.ListCount)
Combo3.ListIndex = int ( rnd * combo3.ListCount)
End Sub

Запомни:
Randomize Timer запускает генерацию случайных чисел, снимая «стартовое» число с показателей таймера.
Свойство ListIndex означает номер элемента данного списка.
Свойство ListCount означает размер массива (счет начинается с нуля)
Combobox – объект «список». В VB 5 разновидностей списков:

Раскрывающийся список (занимает в окне одну строчку, по щелчку на раскрывающей кнопке список разворачивается. В нем можно выбрать любой пункт. Когда список свернут, мы видим только выбранный пункт)

Раскрывающееся поле со списком (позволяет вводить во время работы программы новые элементы списка)

Простое поле со списком (Раскрывающей кнопки нет, список показан весь)

Простой список (Видно несколько строк списка, можно выбрать одновременно несколько пунктов)

Список флажков (Возле каждого элемента списка есть набор флажков, которые можно установить или сбросить).



Лабораторная работа № 9
Проект «Бюро погоды»

Описание проекта: На форме расположены объекты Textbox*, в которых выведена средняя температура каждого месяца данного года. Температура генерируется случайным образом в заданном диапазоне (летом не зашкаливает за 0 градусов, а зимой не становится плюсовой). Необходимо найти и вывести на форму информацию о среднегодовой температуре, самом жарком месяце, самом холодном месяце.

13 SHAPE \* MERGEFORMAT 1415

Дополнить форму таким образом, чтобы значения выдавались не только по Цельсию, но и по Фаренгейту:

Тфаренгейт = 1,8 * Тцельсия + 32

2. Дополнить задачу диаграммой среднемесячной температуры в течение года по месяцам.

Дополнить программу таким образом, чтобы после генерации температуры, выдавались даты дней, когда температура была максимальной или минимальной.

Пример 1:
Вычислим среднюю температуру июня.

Ход работы: На форме расположим два окна: Text1 и Text2 и кнопку Command1. Для управляющей кнопки напишем процедуру:

13 SHAPE \* MERGEFORMAT 1415


·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
· "Средняя температура июня ="
Text2.Text = Str(sum / 30)
End Sub

Запомни:

Массив – это набор однотипных переменных, объединенных одним именем, и доступных через это имя и порядковый номер переменной в наборе.
Порядковый номер элемента в массиве называется индексом.
По умолчанию нумерация элементов в массиве начинается с нуля, но возможно объявлять верхнюю и нижнюю границу массива.
Массив может быть объявлен без указания размера. Такой массив называют динамическим. Размерность динамического массива указвается непостредствекнно перед его использованием.
Dim MD() As Integer
В мoмент задания размерности массива вводится следующая строка:
Re Dim MD (k)
Массивы Public доступны всему приложению, Private доступен в текущем модуле, dim доступен внутри процедуры.

Примеры:

Dim A(5) As Integer Объявлен массив из 6 элементов целых чисел с именем А.

Dim b(100 to 120) As Integer Объявлен массив с именем В для 20 элементов, нумерация начинатся со 100.

For I = 0 to 5
Mm ( I ) = 1
Next I
Всем элементам массива присваивается значение переменной I



Лабораторная работа № 10
Проект «Чемпионат мира по футболу»

Описание проекта: На форме изображена турнирная таблица чемпионата мира по футболу команд. Кнопка «Турнирная таблица» генерирует и суммирует количество набранных баллов. Кнопка «Результаты чемпионата» присуждает 1, 2 и 3 места, а на табло высвечивает поздравление и эмблему команды, занявшей 1 место.



Ход работы:

Создать новый проект.
Расположить на форме объекты: Label* и разместить на них соответствующие надписи, изменив свойство Caption.
Расположить на форме три объекта Picture, загрузив на них эмблемы футбольных команд.
Расположить на форме объекты Command1 и Command2, и разместить на них соответствующие надписи, изменив свойство Caption.
Расположить на форме массивы Text1 (2), Text2 (2), Text3 (2). Делается это следующим образом:
Поместить на форму объект Text1. Скопировать его. Вставить. На вопрос ЭВМ «надо ли организовать элемент массива?» ответить утвердительно. В результате ваш объект будет переименован в Text1 (0), а последующие вставленные объекты будут иметь индексы 1, 2 и 3.
Аналогично организовать массивы Text2 и Text3.
Объекты Text 5, Text6 и Text7 предназначены для вывода результатов чемпионата и не являются элементами массива.

Составить код для кнопки «Турнирная таблица»:
Зарезервировать двумерные массивы для А, В, С
Dim a(2, 2) As Integer : Dim b(2, 2) As Integer : Dim c(2, 2) As Integer

Генерировать значения текстовых окон турнирной таблицы в пределах от 0 до 2 (0 – проигрыш, 1 – ничья, 2 – выигрыш)
For i = 0 To 2
For j = 0 To 2
If i <> j Then
a(i, j) = Int(Rnd() * 3)
Text1(i) = a(i, j)
b(i,
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Команда не играет сама с собой, поэтому главная диагональ таблицы должна быть занята нулями.
Text1(0).text = Str(0): Text2(1).text = Str(0): Text3(2).text = Str(0)

Посчитать итоговую сумму, вывести результат в соответствующие текстовые окна.
Text1(3).text
· = Str(Val(Text1(0).text) + Val(Text1(1).text) + Val(Text1(2).text))
Text2(3).text = Str(Val(Text2(0).text) + Val(Text1(2).text) + Val(Text2(2).text))
Text3(3).text = Str(Val(Text3(0).text) + Val(Text1(3).text) + Val(Text3(2).text))

Составить код для обработки «Результатов чемпионата».
Необходимо считать итоговые значения и присвоить их переменным a,b,c.
a = Val(Text1(3).text): b = Val(Text2(3).text): c = Val(Text3(3).text)

Расставить их в порядке возрастания. Для этого надо рассмотреть всевозможные варианты взаимного расположения трех переменных (a>b>c, a>c>b, ). Для каждого соотношения записать фрагмент программы:

If a >= b And b >= c Then
Text5.text = "Dinamo"
Text6.text = "Spartak"
Text7.text = "Celsi"
Else
End If

Вывести результаты в соответствующие окна Text 5, Text6 и Text7.
Вывести имя команды-победительницы на «поздравительное табло».
Вывести на «рекламный щит» эмблему команды.


Лабораторная работа № 11
Проект «Геометрические фигуры»

Описание проекта: На форме расположены управляющие кнопки: «Треугольник в окружности», «Квадрат в окружности», «Пятиугольник в окружности», «Концентрические окружности», «Очистка экрана», а также объекты Picture*, на которых изображаются правильный треугольник, вписанный в окружность, правильный квадрат, вписанный в окружность, правильный пятиугольник, вписанный в окружность и набор концентрических окружностей, радиусы и цвет которых генерируются случайным образом.



Справочные материалы:
Концентрическими окружностями называют окружности, имеющий общий центр.
Сумма углов любого треугольника равна 180 градусам.
Сумма углов любой правильной фигуры, количество углов которой превышает число 3, равна 360 градусов.
Аргументы функций синусов и косинусов выражают в радианах. 360 градусов = 3,14 радиан.
Так как синус угла равен отношению противолежащего катета прямоугольного треугольника к гипотенузе, отсюда для точки лежащей на окружности c радиусом R, верно соотношение: координата Y=sin(a)*R
Так как косинус угла равен отношению приволежащего катета прямоугольного треугольника к гипотенузе, отсюда для точки лежащей на окружности c радиусом R, верно соотношение: координата X=cos(a)*R

Ход работы:
Открыть новый проект.
Расположить на форме четыре объекта Picturebox и 5 объектов Command*.
Подписать объекты Command*, изменив свойство Caption.
Написать для Command* инструкции:

Private Sub Command1_Click()
'очистка экрана
Picture1.Cls: Picture2.Cls: Picture3.Cls: Picture4.Cls:
End Sub

Private Sub Command2_Click()
' концентрические разноцветные окружности разных диаметров, величина которых генерируется случайным образом.
Dim r(10) As Integer
Picture4.Scale (-20, 20)-(20, -20)
For i = 0 To 10 Step 1
r(i) = Int(Rnd() * 15)
Picture4.Circle (0, 0), r(i), RGB(Int(Rnd() * 255), Int(Rnd() * 255), Int(Rnd() * 255))
Next i
End Sub

Private Sub Command4_Click()
'треугольник, вписанный в окружность
Dim x(5) As Single
Dim y(5) As Single
Picture1.Scale (-10, 10)-(10, -10)
r = 8: pi = 3.14: a = 120
Picture1.Circle (0, 0), r
For i = 1 To 4 Step 1
x(i) = r * Cos(a * pi / 180 * i)
y(i) = r * Sin(a * pi / 180 * i)
Next i
For i = 1 To 3 Step 1
Picture1.Line (x(i), y(i))-(x(i+1), y(i+1))
Next i
End Sub

Private Sub Command3_Click()
'пятиугольник, вписанный в окружность
Dim x(6) As Single
Dim y(6) As Single
Picture3.Scale (-10, 10)-(10, -10)
r = 8: pi = 3.14: a = 72
Picture3.Circle (0, 0), r
For i = 1 To 6 Step 1
x(i) = r * Cos(a * pi / 180 * i)
y(i) = r * Sin(a * pi / 180 * i)
Next i
For i = 1 To 5 Step 1
Picture3.Line (x(i), y(i))-(x(i + 1), y(i + 1))
Next i
End Sub


Private Sub Command5_Click()
'квадрат, вписанный в окружность
Dim x(5) As Single
Dim y(5) As Single
Picture2.Scale (-10, 10)-(10, -10)
r = 8: pi = 3.14: a = 90
Picture2.Circle (0, 0), r
For i = 1 To 5 Step 1
x(i) = r * Cos(a * pi / 180 * i)
y(i) = r * Sin(a * pi / 180 * i)
Next i
For i = 1 To 4 Step 1
Picture2.Line (x(i), y(i))-(x(i + 1), y(i + 1))
Next i
End Sub

Задание для самостоятельной работы: Начертить правильную пятиугольную звезду, вписанную в окружность.

Лабораторная работа № 12
Проект «Контролирующая программа»

Описание проекта: Вам предлагается самый примитивный способ составления контролирующих программ. Контролирующая программа работает по принципу теста. Ученик отвечает на вопросы, выбирая номер одного из вариантов ответа. Очередной вопрос и варианты ответов можно получить, нажимая на соответствующую управляющую кнопку с номером вопроса: «Вопрос 1», «Вопрос 2», . Количество кнопок соответствует количеству вопросов. По окончании работы можно узнать свою оценку, нажав на кнопку «Оценка». На момент загрузки формы окно, в котором высвечивается оценка, отсутствует.





Ход работы:

Разместить на форме объекты класса Label, TextBox,Command. .

Приготовьте 10 вопросов по любому учебному предмету и разработайте по 3 варианта вопросов на них.

Для события «Загрузка формы» сделайте невидимым окошко, в котором будет появляться оценка за всю контрольную работу.

Объявите глобальные переменные:
Public sum1, sum2, sum3, sum4, sum5, sum As Integer

Запишите программные коды для событий:

--------------------------------------------------
Private Sub Command1_Click()

Label1.Caption = "Вопрос 1"
Text1.Text = "Текст первого вопроса"
Text2.Text = "1- вариант ответа"
Text3.Text = "2- вариант ответа"
Text4.Text = "3- вариант ответа"
If Val (Text5.Text) = 1 Then
sum1 = 1
Else
End If
End Sub
----------------------------------------------------
Private Sub Command2_Click()

Label1.Caption = "Вопрос 2"
Text1.Text = "Текст 2 вопроса"
Text2.Text = "1- вариант ответа"
Text3.Text = "2- вариант ответа"
Text4.Text = "3- вариант ответа"
If Val(Text5.Text) = 2 Then
sum2 = 1
Else
End If
End Sub
--------------------------------------------------
Private Sub Command3_Click()

End Sub

---------------------------------------------------
Private Sub Command4_Click()

End Sub

---------------------------------------------------
Private Sub Command5_Click()

End Sub

---------------------------------------------------
Private Sub Command6_Click()
Text6.Visible = True
sum = sum1+sum2+sum3+sum4+sum5
Text6.Text = Str(sum)
End Sub

---------------------------------------------------
Private Sub Form_Load()
Text6.Visible = False
End Sub

Так как идея обработки программных кодов для кнопок «Вопрос 1» - «Вопрос 5» повторяется, напишите эти коды сами, пользуясь заданным образцом.

Не забывайте, что ваша задача – составление контролирующей программы, состоящей из 10 вопросов, а потому количество переменных и некоторые формулы будут слегка изменены.


Лабораторная работа № 13
Проект «Контролирующая программа
с переключателями Option*»

Описание проекта:
Вам предлагается способ составления контролирующих программ c использованием переключателей Option*.
Контролирующая программа работает по принципу теста. Ученик отвечает на вопросы, выбирая переключатель одного из вариантов ответа.
Очередной вопрос и варианты ответов можно получить, нажимая на соответствующую управляющую кнопку «далее».
Вместе с последним вопросом на экране появляется кнпка «Оценка». На момент загрузки формы окно, в котором высвечивается оценка, отсутствует.














Ход работы:

Расположить на Form1 объекты: Label1, command* (по количеству вопросов плюс один для вывода оценки), Text1, Text2, перeключатели Option1, Option2, Option3.

Организовать копированием 3 массива по три элемента для переключателей Option1, Option2, Option3.

Подписать кнопки Command текстом «Далее», изменив свойства Caption.

Совместить кнопки так, чтобы они закрывали одна другую и казались одной кнопкой.

Организовать описание целочисленных глобальных переменных: sum, sum1, sum2, sum3, sum4, sum5.

Описать событие загрузки формы:

Private Sub Form_Load()
Command6.Visible = False
Text2.Visible = False
Command1.Visible = True
Command2.Visible = False
Command3.Visible = False
Command4.Visible = False
Command5.Visible = False
For i = 0 To 2 Step 1
Option1(i).Visible = True
Option2(i).Visible = False : Option3(i).Visible = False
Option4(i).Visible = False : Option5(i).Visible = False
Next i
End Sub

Описать кнопки «Далее» по образцу:

Private Sub Command1_Click()
Label1.Caption = "Вопрос 1"
Text1.Text = "Текст 1 вопроса"
Option1(0).Caption = "1 вариант"
Option1(1).Caption = "2 вариант"
Option1(2).Caption = "3 вариант"
Command2.Visible = True
Command1.Visible = False : Command3.Visible = False
Command4.Visible = False : Command5.Visible = False
For i = 0 To 2 Step 1
Option1(i).Visible = True
Option2(i).Visible = False
Option3(i).Visible = False
Option4(i).Visible = False
Option5(i).Visible = False
Next i
End Sub

Private Sub Command6_Click()
Text2.Text = Str(sum1 + sum2 + sum3 + sum4 + sum5)
End Sub

Для каждой группы переключателей описать события:
Private Sub Option1_Click(Index As Integer)
If Index = 1 Then
sum1 = 1
End If
End Sub




Лабораторная работа № 14
Проект «Двумерные массивы»

Описание проекта: Заполнить массив, размером 9*9 ячеек, заполненную нулями, а главная диагональ заполнена единицами. Вывести массив на экран.



Теория: Для вывода табличных данных удобно использовать нестандартный управляющий элемент MSFlexGrid. Для его размещения на панели инструментов надо выбрать команду Компоненты из меню Проект, найти в списке неустановленных компонентов MSFlexGrid и установить его, нажав кнопку Применить. Выбранный компонент появится на панели инструментов.

Свойства элемента MSFlexGrid, доступные в режиме проектирования.

Свойство
Описание свойства

Rows
Количество строк

Cols
Количество столбцов

ScrollBars
Наличие полос прокрутки

Fixed Rows
Количество фиксированных строк (не прокручиваемых)

Fixed Cols
Количество фиксированных столбцов (не прокручиваемых)

AllowUserResizing
Разрешить изменять размеры строк и столбцов



Разместить на форме объект MSFlexGrid
Задать нужное количество строк и столбцов, изменяя значения Rows и Cols в свойствах объекта.
Разместим на форме командную кнопку и напишем для нее код:

Private Sub Command1_Click()
Rem Заполним нулями и единицами массив mas(9, 9)
Dim mas(9, 9) As Integer
For m = 0 To 9
For n = 0 To 9
If m = n Then
mas(m, n) = 1
Else
mas(m, n) = 0
End If
Next n
Next m

Rem Установим количество строк и столбцов
MSFlexGrid1.Rows=10
MSFlexGrid1.Cols=10

Rem Пронумеруем столбцы и изменим их ширину
MSFlexGrid1.Row = 0
For n = 0 To 9
MSFlexGrid1.Col = n
MSFlexGrid1.ColWidth(n) = 300
MSFlexGrid1.Text = n
Next n

Rem Заполним таблицу элементами массива
For m = 1 To 9
MSFlexGrid1.Row = m
For n = 1 To 9
MSFlexGrid1.Col = n
MSFlexGrid1.Text = mas(m - 1, n - 1)
Next n
Next m
End Sub

Задание 1: Посчитать количество нулевых элементов массива
Задание 2: Заменить нулевые элементы единицами
Задание 3: Найти минимальный, максимальный элемент массива
Задание 4: Найти среднее арифметическое минимального и максимального элемента
Задание 5: Заполнить электронный журнал для 5 человек, 10 дней оценками от 1 до 5, вывести оценку по принципу среднего балла.


Лабораторная работа № 15
Проект «Процедуры и функции. Мышь».

Задание 1: Для вычисления площади треугольника по формуле Герона, организовать процедуру, в которой входные параметры – стороны треугольника, выходные параметры – площадь треугольника.

A#=3
CALL площадь(a, a+1, 5, S#)

x1#=3: x2#=x1+1
площадь x1,x2,x1,s1#
площадь x1,x2,x2,s2#
площадь x1-1,x2,x1,s1#


Задание 2: Процедура нахождения большего из трех чисел. Три числа – вхдной параметр, максимальное число – выходной параметр.

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

Задание 4: Процедура нахождения максимального и минимального числа из 10 чисел.

Сортировка – упорядочение элементов массива по какому-либо признаку.

Наивная сортировка.
Даны 3 числа: А, В, С. Расположить их в порядке убывания или возрастания.
Наивная сортировка предполагает перебор всех возможных вариантов «вручную». Для трех чисел количество вариантов = 6.

Если А>B>C, то min=C mid=В max=A
Если А>C>B, то min=B mid=C max=A
Если B>A>C, то min=C mid=A max=B
Если B>C>A, то min=А mid=C max=B
Если C>A>B, то min=B mid=A max=С
Если C>B>A, то min=А mid=В max=С

Для решения задачи используйте неполную форму команды ветвления
If Then



Лабораторная работа № 16
Проект «Рекурсивные процедуры и фракталы»

Все процедуры делятся на два типа: SUB (подпрограммы) и FUNCTION (функции).
Подпрограммы не возвращают значений, функции – возвращают.
Общая процедура – это обособленная часть программы, выполняющая некоторое типичное действие для данной программы.
Каждой вызываемой процедуре присваивают уннкальное имя. Кроме того, для нее устанавливают перечень входных и выходных параметров.
Входной параметр – переменные, значения которых должно быть установлено до начала работы процедуры.
Выходной параметр – переменная, значение которой вычисляется в результате работы процедуры.

Оператор вызова процедуры:
CALL имя процедуры (список параметров вызова)

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

Пример рекурсивного объекта: факториал N=1*2*3**N.

Public Function Factorial1 (N as integer, I as Integer, Proisvedenie as Long) as Long
Proisvedenie=proisvedenie*index
If N=0 or I=N Then
Factorial1=proisvedenie
Else
Factorial1=factorial1(n, i+1,proisvedenie)
End If
End Function

Public Function Factorial2 (N as integer) as Long
Dim Proisvedenie as Long
If N=0 or N=1 Then
N=1
Proisvedenie=1
Else
Proisvedenie=Factorial2 (n - 1)
End If
Factorial2=proisvedenie*N
End Function

Описание проекта: Создать проект рисования треугольника Серпиньского. Добавить в проект несколько кнопок с различной глубиной погружения в рекурсивную процедуру.

Ход работы:
Разместить на форме объекты Picture1, Command1.
Для кнопки Command1 написать программный код.

Private Sub Command1_Click()
Picture1.Scale (0, 0)-(256, 256)
d = 2
Call treugolnik(d, 0, 0, 256, 256)
End Sub

Private Sub treugolnik(d, x1, y1, x2, y2)
If x2 - x1 > d Then
'Risovanie belogo kvadrata
Picture1.Line (x1, y1 - (y2 - y1) / 10)-(x2, y2), vbWhite, BF

'Risovanie treugolnika
Picture1.Line ((x1 + x2) / 2, y1)-(x1, y2):Picture1.Line ((x1 + x2) / 2, y1)-(x2, y2)
Picture1.Line (x1, y2)-(x2, y2)

'Vycislenie koordinat treh novyh kvadratov
'koordinaty verhnego kvadrata
x11 = (3 * x1 + x2) / 4: y11 = y1: x21 = (3 * x2 + x1) / 4: y21 = (y1 + y2) / 2

'koordinaty levogo nignego kvadrata
x12 = x1: y12 = (y1 + y2) / 2 : x22 = (x1 + x2) / 2: y22 = y2
'koordinay pravogo nignego kvadrata
x13 = (x1 + x2) / 2: y13 = (y1 + y2) / 2: x23 = x2: y23 = y2

Call treugolnik(d, x11, y11, x21, y21)
Call treugolnik(d, x12, y12, x22, y22)
Call treugolnik(d, x13, y13, x23, y23)
End If

End Sub

Добавить кнопки Command2, Command3, Command4 для различных погружений в функцию.



Лабораторная работа № 17
Проект «Управление файлами»


Описание проекта: В зависимости от того, что папа купил на рынке: грибы или яблоки, отправить телеграмму бабушке (записать в текстовый файл информацию) о том, с чем приготовит пирог мама.
Покупка генерируется случайным образом в диапазоне от 0 до 1.
Вероятность покупки грибов находится в диапазоне от 0,75 до 100.
Вероятность покупки яблок находится в диапазоне от 0 до 0,75.


















Ход работы:

Создать на каталоге с:\ text1.txt при помощи блокнота
Приготовить два файла с изображением пирога с яблоками и пирога с грибами.
Открыть новый проект в VB.
Поместить на форме два объекта Picture, три объекта Text*, три объекта Command.
Переименовать объекты Command* так, как показано на рисунке.
Загрузить рисунки на объекты Picture*.
Записать командные коды для управляющей кнопки «Что папа купил на рынке»
Записать командные коды для управляющей кнопки «С чем испечет пирог мама?»
Записать программные коды для клавиши «Телеграмма бабушке».



Private Sub Command1_Click()
Dim fn As Integer
fn = FreeFile
Open "c:\text1.txt" For Output As fn
text1.text=Print #fn, Text1
Close #fn
End Sub

Private Sub Command2_Click()
Randomize
v = Rnd()
If v > 0 And v < 0.75 Then
Text2.Text = "Яблоки"
Text3.Text = "Мама испечет пирог с яблоками"
Text1.Text = "Дорогая бабушка! Мама испекла нам пирог с яблоками!"
Picture1.Visible = True
Picture2.Visible = False
Else
Text2.Text = "Грибы"
Text3.Text = "Мама испечет пирог с грибами"
Text1.Text = "Дорогая бабушка! Мама испекла нам пирог с грибами!"
Picture2.Visible = True
Picture1.Visible = False
End If
End Sub

Private Sub Form_Load()
Picture1.Visible = False
Picture2.Visible = False
End Sub

На Command1 записана процедура, выполняющая перенос информации из текстового окна № 1 в текстовый файл. Вы можете проверить это прямо сейчас.

Изучите тему «Управление файлами», ответив на контрольные вопросы:
1.Перечислите типы доступа к файлам и их назначение.
2. Перечислите режимы последовательного доступа.
3. Что такое дескриптор?
4. Формат оператора Open.


Типы доступа к файлам:
Последовательный– для чтения и записи непрерывных блоков в текстовый файл.
Произвольный – для чтения и записи в текстовые и двоичные файлы структурированных данных.
Двоичный – для чтения и записи в файлы произвольной структуры.

Последовательный доступ.
Необходим для работы с простыми файлами. Данные хранятся как символы в коде ANSI.
Файл можно открыть в одном из трех режимов:
INPUT – для ввода текста из файла.
OUTPUT – для вывода текста в файл.
APPEND – для присоединения текста в конец файла.

Дескриптор файла – идентификационный номер, который программа присваивает каждому файлу, с которым работает.
Свободный номер файлу возвращает функция FreeFile.

Формат оператора:
Open <Имя файла> For Input/Output/Append As <Дескриптор>[Len=<Число>]

Если файл открывается для чтения (input), то он должен существовать, иначе возникнет ошибка.
Если открывается несуществующий файл для ввода или добавления, оператор Open создает файл и открывает его.
Если открыть существующий файл для вывода, содержимое его теряется.
Len – необязательный параметр, задает число символов в буфере копирования данных из файла в приложение.
После выполнения операций файл закрывается оператором Close.

Формат оператора:
Close #<Номер файла>

Чтобы сохранить данные, нужно открыть файл для вывода или добавления, а затем вывести текст с помощью оператора Print#.

Формат оператора:
Print #<Дескриптор>,<Данные>

Данными могут быть: выражение или список выражений. Элементы списка разделяются запятой или точкой с запятой.

Пример: Надо открыть файл “c:\Мои документы\text.txt” и записать в него строки, содержащиеся в текстовом поле Text1:

Dim Fn As Integer
Fn=FreeFile Получить свободный номер для файла
Open” c:\Мои документы\text.txt” For Output As Fn Открыть файл для записи
Print #Fn, Text1 Записать текст из Text1
Close #Fn Закрыть файл

Если оператор Print стоит в цикле, то каждый вызов приводит к записи одной строки.

Для чтения используют оператор Line Input и функцию Input.
Оператор Line Input читает построчно. Он распознает символы CR/LF, но не включает их в переменную, поэтому, помещая строку в текстовое поле, нужно добавить символы, обеспечивающие переход на новую строку.

Формат оператора:
LineInput #<Номер файла>,<Строка>

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

Dim st As String, fn As Integer
Fn=FreeFile
Open “d:\mm\text.txt” For Input As fn
Do While Not Eof(fn) пока не конец файла
LineInput #fn, st ввести символы до CR/Lf в переменную st
Text1.text=Text1+st+Chr(13)+Chr(10) добавить в Text1 st и конец строки
Loop
Close #Fn

Функция CHR возвращает строку, содержащую символ, код которого был передан в функцию в качестве параметра.

Если требуется прочитать сразу весь файл, то можно воспользоваться функцией Input, где первый аргумент задает количество байт, которые нужно прочитать, а второй – номер файла.
---------------
Input(<Число>,[#]<Номер файла>)
Fn=FreeFile
Open “c:\Мои документы\test.txt” For input As fn функция LOF возвращает размер открытого файла в байтах.
Text1.text=input(LOF(fn),fn)
Close #fn

Для операций с последовательным файлом (запись и чтение) можно использовать операторы Write# и Input #, однако их лучше применять для файлов с двоичным доступом.













Лабораторная работа № 18
Проект «Оболочка для курсового проекта»

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

Название формы
Назначение формы
Содержание формы

Form1
Заставка проекта
Название учебного заведения
Название курсового проекта
Год
Город
«Продолжить»
«Выход»

Form2

Главное меню проекта
Теория (с возможностью составления конспекта в отдельном файле)
Примеры, демонстрации.
Тренажер
Иллюстрации
Контролирующий тест
Глоссарий
О программе
«Продолжить»
«Вернуться в главное меню»

Form3

Теория
(с возможностью составления конспекта в отдельном файле)

Список основных тем
Окно для чтения
Окно для иллюстраций
Выход в глоссарий
«Продолжить»
«Вернуться в главное меню»

Form4

Примеры, демонстрации.

Список основных примеров
Окно для пояснительного текста
Набор иллюстраций


Form5

Тренажер

Небольшие задания с комментарием «верно» - «неверно»

Form6
Иллюстрации
Просмотр иллюстраций к данной теме.


Form7

Контролирующий тест

Состоит из 25 вопросов и 5 вариантов ответов на каждый вопрос. Оценка может быть спрятана.

Form8

Глоссарий

Словарь основных терминов, используемых в данном проекте.

Form9

О программе

О назначении программы.
Руководитель проекта:
Об авторе: Фамилия, имя, отчество, полное название учебного заведения, специальности, год создания проекта
Фотография автора проекта
Реквизиты автора:



Примерная схема взаимосвязи форм проекта

13 SHAPE \* MERGEFORMAT 1415





Литература:

С. Симонович, Г. Евсеев «Занимательное программирование Visual Basic», АСТпресс, 2002

Фленов М.Е., Библия Delphi - СПб.: Санкт-Петербург, 2005. – 880 с.: ил. ISBN5-94157-456-8
Гофман В.Э., Хомоненко А.Д. Delphi: экспресс-курс, - СПб: БХВ-Петербург, 2005. – 288 с., ил.ISBN-5-94157-165-8
Никита Культин, Delphi в задачах и примерах, - СПб.: Санкт-Петербург, 2005.-288 с., ил. ISBN 5-94157-353-7
Симонович С.В., Евсеев Г.А., Занимательное программирование: Visual Basic: книга для детей, родителей, учителей.
Волченков Н.Г., Программирование на Visual Basic 6: в 3 ч, М: ИНФРА-М, 2002, ISBN 5-16-000114-X (общ)









Лабораторный практикум по программированию на VB 6.0 , Титова Е.В.

13PAGE 15


13PAGE 144215


Лабораторный практикум по программированию на VB 6.0
Проект «Счетная машинка для дробей»

Лабораторный практикум по программированию на VB 6.0
Проект «Звездное небо и знаки Зодиака»

Лабораторный практикум по программированию на VB 6.0
Проект «Круговая диаграмма»

Лабораторный практикум по программированию на VB 6.0
Проект «Двумерные массивы»


Весна

Осень

Command3

Зима

Command2

Command4

Лето


· Электронный альбом

Command1

Command1

Y = a * x * x + b * x + c.



Y=X*Х*Х



Command2

Двоечников

Command3



Command1

Хорошистов

Троечников



Диаграмма





Отличников


· Круговая диаграмма успеваемости класса


Command1


· Звездное небо и знаки Зодиака


Большая Медведица

Command2

Звездное небо

Command3

Поэзия

Поэзия

Об авторе

Очистка картинки

Command4


· Электронный букет


Очистка картинки

Command1

Command2

Command3

Букет

Command4


· Счетная машинка для обыкновенных дробей

Textbox1

Textbox2


Textbox3

Textbox5


Textbox4

Textbox6

Сложение

Вычитание

Умножение

+

=

Очистка экрана

Y=X*X


График параболы

ЭВМ пишет рассказ

сразу же нашел

Буратино

Средняя температура июня =

золотой ключик

Средняя температура января:

Средняя температура

Средняя температура июня

Бюро погоды

искал в болоте
крутил в руках грустно разглядывал



плетку-семихвостку
новые стихи для Мальвины
сердитую пиявку


Карабас
Пьеро
Дуремар


5,754896415

Случайный выбор

Средняя температура февраля:

Средняя температура марта:

Средняя температура апреля:

Средняя температура мая:

Средняя температура июня:

























Средняя температура декабря:

Средняя температура ноября:

Средняя температура октября:

Средняя температура сентября:

Средняя температура августа:

Средняя температура июля:

Средняя температура года:

Самый жаркий месяц

Самый холодный месяц

пуск

Form1
Заставка проекта

Form2
Главное меню проекта

Form3
Теория


Form4
Примеры, демонстрации




Form5
Тренажер


Form6
Иллюстрации


Form7
Контролирующий тест


Form8
Глоссарий


Form9
О программе



Заголовок 115