Задача 17

advertisement
ГОУ СПО «Ичалковский педагогический колледж им. С. М. Кирова»
«,,, коль уж становиться программистом, то
программистом
хорошим;
такого
программиста
отличает
постоянное
желание стать еще лучшим программистом,
а единственно верный путь для этого –
стремиться в совершенстве овладеть
несколькими языками, т.е. сделаться хорошим
лингвистом в программировании. Безусловно,
можно доказать, что несомненный вред
нанесли и наносят те довольно хорошие
программисты, которые, став слишком
самодовольными
или
консервативными,
полагают,
что
язык,
которым
они
пользуются, во всех смыслах является
последним словом».
Задачник – решебник
Язык программирования Visual Basic
Преподаватель: Овтайкина Г.В.
2008 – 2009 уч. г.
Задача 11. Разработать и оформить проект, запрашивающий и выводящий в
одном
окне
длину
одного
катета
прямоугольного треугольника, в другом окне
- длину второго катета, в третьем выводящий длину гипотенузы. Все это
делается по нажатию одной командной
кнопки.
Private Sub Command2_Click()
a = Val(InputBox("Введите длину первого катета", "Вычисление площади"))
b = Val(InputBox("Введите длину второго катета", "Вычисление площади"))
c = Sqr(a ^ 2 + b ^ 2)
Text3 = c
End Sub
Задача 12. Разработайте проект, запрашивающий три стороны треугольника,
a,b,c и вычисляющий его площадь по формуле Герона.
S
p( p  a)( p  b)( p  c)
Где p = (a+b+c)/2 - полупериметр
Private Sub Command1_Click()
a = Val(InputBox("введите длину первой стороны треугольника", "площадь"))
b = Val(InputBox("введите длину второй стороны треугольника", "площадь"))
c = Val(InputBox("введите длину третей стороны треугольника", "площадь"))
p = (a + b + c) / 2
s = Sqr(p * (p - a) * (p - b) * (p - c))
Text1 = s
End Sub
Задача 13. Разработайте проект, в двух текстовых окнах которого
запрашиваются два разных целых числа, а по нажатию командной кнопки они
меняются местами.
Private Sub Command1_Click()
a = Val(Text1)
b = Val(Text2)
c=a
a=b
b=c
Text1 = a
Text2 = b
End Sub
Задача 17. Запросите у пользователя валютный курс на сегодняшний день,
затем имеющуюся у него рублевую сумму и рассчитайте, сколько долларов и
сколько евро он может купить на эти деньги.
Private Sub Command1_Click()
dol = Val(InputBox("Введите курс доллара", "расчет денег"))
Text1 = dol
evro = Val(InputBox("Введите курс евро",
"расчет денег"))
Text2 = evro
nal = Val(InputBox("Введите сколько у вас
денег", "расчет денег"))
Text3 = nal
poldol = nal / dol
Text4 = poldol
polevro = nal / evro
Text5 = polevro
End Sub
Задача 18. Дискета «3,5» вмещает 1.44 Мбайта. Рукопись содержит Х страниц
текста. На каждой странице Y строк по Z символов в каждой. Сколько дискет
понадобиться для записи рукописи. Все
данные запрашиваются.
Private Sub Command1_Click()
a = Val(InputBox("Сколько страниц в вашем
документе?", " расчет"))
Text1 = a
b = Val(InputBox("Сколько строк на
странице?", " расчет"))
Text2 = b
c = Val(InputBox("Сколько символов в
каждой строке?", " расчет"))
Text3 = c
d = Val(a * b * c)
f = Val(d / 1024 / 1024)
e = Val(f / 1380000)
Text4 = e
End Sub
Задача 21. Жесткий диск пуст и имеет объем свободного пространства Г
гигабайт. Сколько книг, каждая из которых состоит из Д страниц, на каждой
странице Е строк, в каждой строке Ж символов, можно записать на такой
жесткий диск?
Private Sub Command1_Click()
a = Val(InputBox("введите объем жесткого диска в Гб"))
b = Val(InputBox("сколько страниц в вашей книге"))
c = Val(InputBox("сколько строк на странице"))
d = Val(InputBox("сколько символов в строке?»))
e = (b*c*d) / 1024^3
books = a / e
Text1 = books
End Sub
Задача 23. Запросите у пользователя длину ребра куба.
Найти площадь грани, площадь полной поверхности и
объем куба.
Private Sub Command1_Click()
a = Val(InputBox("введите длину ребра куба", ""))
plgran = a ^ 2
pol = (a ^ 2) * 6
v=a^3
Text1 = plgran
Text2 = pol
Text3 = v
Text4 = a
End Sub
Пл.грани – а2
Пл. полн. пов. – 6а2
Объем куба – а3
Задача 29. Разработать
определяющий
количество
введенном
трехзначном
выводящий последовательно
цифры с комментарием.
проект,
цифр
во
целом числе и
эти
самые
Option Explicit
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Private Sub Command1_Click()
a = Val(Text1)
b = a \ 100
Text2 = b
c = Val(a / 10 - b * 10)
Text3 = c
d = Val(a Mod 10)
Text4 = d
End Sub
Задача Продав квартиру, вы получили А денег и положили их в банк. Банк
начисляет 1% в первый месяц, а каждый следующий месяц тоже 1 %, но уже с
получившейся суммы. Сколько денег будет на вашем счету через год?
Private Sub Command1_Click()
a = Val(InputBox("введите количество денег", ""))
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
a = a + (a / 100)
Text1 = a
End Sub
Задача. Написать программу вычисления стоимости поездки на автомобиле на
дачу (туда и обратно). Исходными данными являются: расстояние до дачи (в
километрах); количество бензина, которое потребляет автомобиль на 100 км
пробега; цена одного литра бензина.
Private Sub Command1_Click()
rast = Val(InputBox("расстояние до дачи", ""))
topl = Val(InputBox("сколько жрет машина топлива на сотню", ""))
sen = Val(InputBox("цена литра бензина", ""))
nal = ((topl / 100) * (rast * 2)) * sen
или можно так
nal=2*rast/100*top1*sen
Text1 = nal
End Sub
Задача. В течении месяца продавец доставлял на дом 4 л молока в день. В
марте молоко стоило Х руб. за литр С первого апреля цена молока увеличилась
до В руб. за литр Сколько надо заплатить продавцу за все доставленное молоко
в конце апреля? Кол-во покупаемого молока осталось прежним.
Private Sub Command1_Click()
X = Val(InputBox("ЦЕНА МОЛОКА В МАРТЕ", "МОЛОКО"))
Y = Val(InputBox("ЦЕНА МОЛОКА В АПРЕЛЕ", "МОЛОКО"))
M = 31 * 4 * X
A = 30 * 4 * Y
S=M+A
Text1 = S
End Sub
ГРАФИКА В VB
ПОНЯТИЕ МЕТОДА ПРИМЕНИТЕЛЬНО К ОБЪЕКТАМ В VB
Напомним, что Объект в VB обладает характеристиками нескольких
категорий, которые обеспечивают его взаимодействие с окружающей
программной средой и пользователем.
Помимо свойств, объект имеет методы, определяющие выполняемые им
действия, например перемещение, изменение размеров.
МЕТОД – это некоторое действие, которое может быть применено к объекту, и
которое может заставить объект выполнить некоторую работу
(например, изменить свои внешние характеристики, удалиться,
закрыться, распечататься и проч.).
Обращение к методу
Обращение к методу – это строчка в программном коде, которая
выполниться только при условии, что ход выполнения
программы дойдет до этой строчки.
Эффект действия метода проявиться только во время исполнения проекта
или приложения (в отличие от свойства, которое может
быть изменено как строчкой в программном коде, так и в
конструкторе в окне свойств объекта).
Метод можно применить к конкретному объекту. Объекты разных классов
обладают разными наборами методов.
Структура обращения к методу:
ИМЯ_Объекта.НАЗВАНИЕ_Метода[Параметры]
Образно говоря, метод должен описать:
С_ЧЕМ_сделать.ЧТО_сделать[КАК_сделать]
Внимание! Простой способ отличить метод от свойства в программной строчке – это
проверить наличие оператора присвоения «=», он используется только со
свойством, так как либо свойство на что-то меняется, либо свойство для чего-то
считывается и присваивается. У метода нет оператора присвоения «=», так как все
особенности его выполнения указаны в параметрах.
Параметров иногда может не быть!
Используя предусмотренные для объектов методы, можно обойтись минимальным
программированием приложения. Например, для печати образа формы достаточно вставить
оператор следующего вида:
Form1.PrintForm
где Form1 — имя формы, а PrintForm — название метода.
Среди методов, которыми обладают все объекты, можно назвать Move, позволяющий
перемещать объект; setFocus, активизирующий объект, чтобы иметь возможность с ним
взаимодействовать.
ОБЪЕКТЫ ДЛЯ РАБОТЫ С ИЗОБРАЖЕНИЯМИ
В Visual Basic для отображения в форме графики и иллюстраций
используются элементы управления:
− Image (Изображение)
− PictureBox (Графическое окно).
Эти элементы управления располагаются в панели элементов управления и
могут быть размещены на форме разработчиком, как и другие элементы. Эти
Разновидность графики, используемой в приложениях:
− картинки, подключаемые из ранее созданных файлов (файлы
картинок могут быть созданы различными графическими редакторами,
например, Painte, Photoshop и многие другие);
− программируемая графика, выводимая в графическое окно с
помощью графических методов данного окна (точки, линии, окружности
и др. по заданным координатам и алгоритмам их расчета).
Допустимые типы подключаемых файлов изображений
Битовый растровый файл ___________*.bmp
Независимый растровый файл _______*.dib
Файл значка ______________________*.ico, *.cur
Метафайл ________________________*.wmf
Расширенный метафайл ____________*.emf
Растровый файл ___________________*.gif
Растровый сжатый файл ____________*.jpg, *.Jpeg
Элемент управления IMAGE
− Image (Изображение) – элемент управления, который может
использоваться только для отображения графических
изображений (картинок)
Некоторые свойства:
Рicture
задает имя графического файла и путь к нему среди
каталогов
BorderStyle размещенное в форме графическое изображение можно
поместить в рамку, выбрав значение 1-Fixed Single
Appearance при использовании значения 1-3D рамка будет придавать
изображению объемность
Stretch
управляет изменением размера:
False – окно принимает размеры в соответствии с
изображением
True – размеры изображения изменяются в
соответствии с размерами окна.
Элемент управления PICTUREBOX
− PictureBox (Графическое окно) – элемент управления, который обладает
более широким набором свойств и методов, чем объект image. Он может
использоваться для следующих целей:
• для отображения графических изображений-картинок (аналогично
Image);
• в качестве контейнера для других элементов управления;
Использование объекта Picture в роли контейнера предназначено для
объединения объектов в группы аналогично объекту Frame.
Расположенные в графическом окне элементы будут перемещаться вместе с
ним, что удобно при создании панелей инструментов, строки состояния.
• в виде окна для вывода текста (для вывода в графическое окно текста
предназначен метод print).
• в виде окна для вывода программируемой графики, анимации.
Некоторые свойства:
Изображение в элемент управления picture загружается полностью. При
этом если оно больше размеров picture, то видна только часть изображения,
если меньше – то изображение размещается в левом верхнем углу.
Рicture
задает имя графического файла, отображаемого в окне и
путь к нему
AutoSize
изображение будет пропорционально вписываться в
объект picture, если установить значение True, и при
изменении размера графического изображения меняются
и размеры объекта. При установке значения False
усекается не поместившаяся в объект часть
изображения.
Visible
все изображения, помещенные в picture, становятся
видимыми или невидимыми в зависимости от
установленного значения свойства.
ScaleMode
задает единицы измерения размеров и координат:
в твипах, пунктах, пикселях, миллиметрах, сантиметрах,
символах и др.
AutoRedraw задает режим перерисовки после изменения размеров
ГРАФИЧЕСКОЕ ОФОРМЛЕНИЕ ПРИЛОЖЕНИЙ.
ИЛЛЮСТРАЦИИ
Способы загрузки изображения (картинки) в объекты IMAGE и
PICTUREBOX
Загрузка изображения в процессе разработки приложения
Первый способ – использование свойства Picture:
После размещения в форме объекта image в окне свойств
Properties, в правом столбце свойства picture нажимаете
кнопку с тремя точками, а затем в открывшемся диалоговом
окне Load Picture выбираете требуемый файл.
Второй способ – использование буфера обмена Windows:
Способ используется для переноса в форму графического изображения,
подготовленного в другом приложении. Он состоит в следующем:
1. Подготовьте в графическом редакторе изображение.
2. Скопируйте его в буфер обмена Windows.
3. Перейдите в программу Visual Basic.
4. Разместите в форме объект image, используя одноименную кнопку на панели
элементов управления.
5. Выберите элемент управления image, чтобы он стал активен.
6. Вставьте в него изображение из буфера обмена, выбрав команду Paste
(Вставить) меню Edit (Правка) или нажав комбинацию клавиш <Ctrl>+<V>.
Загрузка изображения программно при выполнении приложения
Для загрузки изображения в объект image во время выполнения приложения
используется обращение к свойству picture и функция LoadPicture. Строчка
программного кода имеет следующий вид:
NameObject.Picture = LoadPicture ("имяФайла")
где имяФайла — это имя файла с указанием полного пути к нему. Например,
если графический файл Test_image.bmp расположен в папке \Sample диска С,
то функция будет выглядеть так:
NameObject.Picture = LoadPicture ("с:\Sample\Test_image.bmp")
Очистить элемент управления image от размещенного в нем изображения:
NameObject.Picture = LoadPicture
или Set
NameObject.Picture = LoadPicture("")
Скопировать изображение из одного объекта в другой с помощью
присвоения:
Object2.Picture = Object1.Picture
ПРОГРАММИРОВАНИЕ МЕТОДОВ ДЛЯ ОБЪЕКТОВ В VB НА
ПРИМЕРЕ ГРАФИЧЕСКИХ МЕТОДОВ
Использование объекта PictureBox для программирования графики
Для
программирования
графики
с
помощью
своих
графических
методов
используется объект PictureBox (Графическое окно).
Для вывода графики с помощью графических методов можно использовать саму
Форму (но в данной работе для вывода графики используется не форма, а PictureBox).
Графические методы
Метод
Назначение
Рисует линии и прямоугольники
Line
Рисует круги, окружности, дуги, эллипсы
Circle
Возвращает цвет точки
Point
Размещает точку
Pset
Очищает область вывода
Cls
Рисует (загружает) изображение из файла (позволяет создавать в
PaintPicture графическом окне анимацию)
Определяет координатную систему для объектов Form, PictureBox
Scale
или Printer.
Преобразует значение ширины или высоты объектов Form,
ScaleX
PictureBox или Printer из одних условных единиц, установленных
ScaleY
свойством ScaleMode, в другие.
Выводит текст.
Метод предназначен для вывода текста и к графике имеет
косвенное отношение. Тем не менее, он используется совместно
Print
с другими методами графики для "рисования" текста в указанном
объекте или совмещения текста и чистой графики.
Структура обращения к методу:
ИМЯ_Объекта.НАЗВАНИЕ_Метода[Параметры]
Единицы измерения и перерисовка
• Используя свойство ScaleMode, можно задать единицы измерения в терминах
стандартного масштаба в твипах, пунктах, пикселах, миллиметрах, сантиметрах,
символах и т. д.
• Чтобы объект picture можно было использовать для вывода графических
элементов и их перерисовки при изменении размеров графического окна,
необходимо установить значение его свойства AutoRedraw в True.
Метод Line
Метод Line предназначен для рисования линий и прямоугольников.
object.Line [Step] (x1, y1) - [Step] (x2, y2), [color], [B] [F]
где:
• object — объект, в котором применяется метод. Если объект не указан, то по
умолчанию используется форма;
• step — ключевое слово, которое показывает, что начальная точка задается
относительно текущего положения, определяемого свойствами CurrentX и
CurrentY объекта;
• x1, y1 — числа с плавающей точкой одинарной точности, координаты начала линии.
При отсутствии этих параметров начало привязывается к значениям свойств
CurrentX и CurrentY объекта;
• step — ключевое слово, определяющее привязку координат конца линии к началу, то
есть координаты конца заданы относительно координат начала линии;
• x2, y2 — числа с плавающей точкой одинарной точности, координаты конца линии;
• color — задает цвет линии в палитре RGB. Если параметр не указан, то используется
свойство ForeColor объекта; Данный аргумент можно задать с помощью
функции RGB или QBColor;
• B — задает рисование прямоугольника, при этом координаты означают координаты
левого верхнего и правого нижнего углов;
• F— задает заполнение прямоугольника цветом линии рисования. Если аргумент B
используется без аргумента F, то прямоугольник закрашивается в
соответствии с установками свойств FillColor и FillStyle. По умолчанию
значение свойства FillStyle – прозрачная закраска.
Примечания:
• Используемые единицы измерения определяются свойством ScaleMode
объекта.
• Чтобы нарисовать соединяющиеся линии, необходимо каждую
следующую линию начинать из конечной точки предыдущей.
• Толщина линии определяется значением свойства DrawWidth. Способ
изображения линии или прямоугольника относительно фона зависит от
установок свойств DrawMode и DrawStyle.
• Во время выполнения метода Line значения свойств объекта CurrentX и
CurrentY становятся координатами конечной точки.
Метод Circle
С помощью данного метода можно нарисовать на объекте окружность, эллипс
или дугу.
object.Circle [Step] (x, у), radius, [color, start, end, aspect]
• object — объект, в котором применяется метод. Если объект не указан, то по
умолчанию используется форма;
• step — ключевое слово, которое показывает, что центр окружности, эллипса или дуги
задается относительно текущих координат объекта object, определяемых его
свойствами CurrentX и CurrentY.
• х, у — числа с плавающей точкой одинарной точности, определяющие координаты
центра окружности, дуги или эллипса в единицах свойства scaleMode
объекта;
• radius — число с плавающей точкой одинарной точности, определяющее радиус
окружности, дуги или эллипса в единицах свойства scaleMode объекта;
• color — значение типа Long, задающее цвет линии. Если параметр не указан,
применяется значение свойства ForeColor. Для задания цвета можно
использовать функции RGB () или QBColor;
• start, end — при рисовании дуги или части эллипса задает позицию начала и конца
дуги в радианах: от 2 pi до -2 pi радиан; По умолчанию, для аргумента start
устанавливается значение 0 радиан, а для аргумента end — 2 pi радиан.
• aspect — число с плавающей точкой одинарной точности задает коэффициент
"эллиптичности" окружности. По умолчанию этот коэффициент равен 1.0,
что соответствует окружности.
Примечания:
• Во время выполнения метода Circle значения свойств CurrentX и CurrentY становятся
координатами центра окружности.
• Чтобы закрасить внутреннюю область окружности, следует задать свойства FillColor и
FillStyle объекта, в котором она нарисована. Закрасить можно только замкнутую фигуру.
Замкнутыми фигурами являются окружности, эллипсы и секторы (фигуры ограниченные
дугой и двумя радиусами).
• Метод Circle осуществляет рисование только в направлении обратном ходу часовой
стрелки (положительное направление).
• Если при изображении части окружности или эллипса аргумент start окажется
отрицательным, то метод Circle проведет линию от центра к точке start, но будет
использовать абсолютную величину этого угла. Таким же образом будет обработано и
отрицательное значение аргумента end.
• Толщина линии окружности, эллипса или дуги определяется значением свойства
DrawWidth. Способ изображения окружности относительно фона зависит от установок
свойств DrawMode и DrawStyle.
• При рисовании горизонтального радиуса сектора вправо используйте в качестве значения
аргумента start не ноль, а небольшое отрицательное число.
• Если требуется пропустить аргумент, стоящий в середине синтаксической
последовательности для метода, то вместо него перед следующим аргументом необходимо
поставить запятую. В конце синтаксической последовательности, при пропуске
необязательного аргумента, запятую ставить не следует.
Метод Point
Метод point возвращает цвет в палитре RGB указанной точки в форме или
на объектах типа pictureBox. Синтаксис этого метода следующий:
object.Point (x, у)
• object — объект, в котором используется метод;
• x, у — координаты точки в объекте.
Замечание: Необходимо иметь в виду, что в случае "выпадения" точки из
границ формы или объекта Picture (то есть когда координаты больше
размера объекта) метод возвращает отрицательное значение –1 .
Метод Pset
Метод Pset помещает точку определенного цвета в указанные координаты.
Этот метод является обратным методу point.
object.Pset [Step] (x, у), [color]
• object — объект, в котором используется метод. Если объект не указан, то по
умолчанию используется форма;
• Step — ключевое слово, определяющее привязку координат точки к координатам,
возвращаемым свойствами Currentx и СurrentY объекта;
• х, у — координаты точки на объекте;
• color — цвет точки в палитре RGB. Если параметр не указан, то используется
свойство ForeСolor объекта.
Замечание: При использовании метода Pset размер точки определяется толщиной объекта, то
есть свойством объекта DrawWidth. Для толщины 1 это один пиксел, для толщины больше
единицы — это область объекта с центром, имеющим указанные координаты. Способ
рисования точки при этом определяется свойствами объекта DrawMode и DrowStyle.
Метод Сls
С помощью метода Cls можно очистить объект от текста и графики,
созданных в нем программно.
object.Cls
где object — объект, в котором применяется метод. Если параметр не указан, то
по умолчанию используется форма.
Примечания:
• Необходимо помнить, что при применении этого метода свойства CurrentX и CurrentY
выбранного объекта устанавливаются в 0.
• Метод Cls не воздействует на растровый фон, установленный свойством Picture, и
элементы управления, помещенные на форму во время разработки.
• Если перед вызовом метода Cls было установлено значение False свойства AutoRedraw,
то метод не воздействует на текст и графику, которые были выведены в объекты Form или
PictureBox до того, как было установлено значение True свойства AutoRedraw. Таким
образом, можно сохранять текст и графические изображения на объектах Form и
PictureBox, манипулируя свойством AutoRedraw объекта.
Метод PaintPicture
Метод PaintPicture загружает содержимое графических файлов имеющих
расширение bmp, wmf, emf, cur, ico или dib, в формах или объектах типа Picture.
object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode
• object — объект, в котором применяется метод. Если объект не указан, то по
умолчанию используется форма;
• picture — исходное изображение, которое будет размещено в объекте. Это должна
быть ссылка на свойство picture данного или другого объекта;
• x1, y1 — координаты левого верхнего угла области объекта для размещения
исходного изображения;
• width1, height1— размер (ширина-и высота) области размещения исходного
изображения.. Если размер области отличается от размера исходного
изображения, то изображение пропорционально растягивается или сжимается;
• х2, y2 — координаты левого верхнего угла в исходном изображении для вставки в
объект. Если заданы координаты, отличные от нуля, то будет вставлена часть
исходного изображения;
• width2, height2 — размер (ширина и высота) вставляемой части исходного
изображения;
• opcode — устанавливает режим вставки изображения при помощи констант из
набора RasterOp (см.табл.). Задается только для работы с изображениями,
имеющими расширение bmp.
При помощи отрицательных значений ширины (width1) и высоты (heightl)
можно перевернуть изображение вертикально или горизонтально.
Для работы метода с изображениями, имеющими расширение bmp,
необходимо использовать константы из набора RasterOp для установки режима
вставки изображения.
Набор констант RasterOp для метода PaintPicture
Константа
Значение
Описание
Инвертирует указанное изображение
vbDstInvert
&H00550009
vbMergeCopy
&HOOCOOOCA Объединяет рисунок и изображение-источник
vbMe где
Paint
&HOOBB0226
Объединяет инвертированное изображение источника с
указанным изображением, используя оператор Or
vbNotSrcCopy
&H00330008
Копирует инвертированное изображение-источник в
указанное изображение
vbNotSrcEraae &H001100A6
Инвертирует результат объединения указанного
изображения и изображения-источника, используя
оператор Or
vbPatCopy
&HOOF00021L
Копирует рисунок в указанное изображение
vbPatInvert
&H005A0049L
Объединяет указанное изображение с рисунком,
используя оператор Xог
vbPatPaint
Объединяет инвертированное изображение источника с
рисунком, используя оператор Or. Объединяет
&HOOFBOA09L
результирующее выражение в этой операции с указанным
изображением с помощью оператора Or
vbSrcAnd
&H008800C6
Объединяет пикселы указанного изображения источника,
используя оператор And
&HOOCC0020
Копирует изображение-источник в указанное
изображение
vbSrcErase
&H00440328
Инвертирует указанное изображение и объединяет
результат с изображением-источником с помощью
оператора And
vbSrcInvert
&H00660046
Объединяет пикселы указанного изображения и
изображения-источника, используя оператор Хог
vbSrcPaint
&HOOEE0086
Объединяет пикселы указанного изображения и
изображения-источника с помощью оператора Or
vbSrcCopy
Метод Scale
Определяет координатную систему для объектов Form, PictureBox или Printer.
object.Scale (x1, y1) - (x2, y2)
- имя объекта. Если часть object опущена, то в качестве нее
принимается форма, на которую установлен фокус.
• object
y1 - необязательный параметр. Числа с одинарной точностью,
указывающие горизонтальную (по оси X) и вертикальную (по оси Y)
координаты, которые устанавливают левый верхний угол части object.
Значения должны быть заключены в круглые скобки. Если параметр
не задан, то второй набор координат должен быть также опущен.
• x1,
y2 - необязательный параметр. Числа с одинарной точностью,
указывающие горизонтальную (по оси X) и вертикальную (по оси Y)
координаты, которые устанавливают правый нижний угол части
object. Значения должны быть заключены в круглые скобки. Если
параметр не задан, то первый набор координат должен быть также
опущен.
• x2,
Примечания:
• Метод Scale позволяет установить любой необходимый масштаб.
• Метод Scale воздействует как на систему координат графических
операторов во время выполнения, так и на расположение элементов
управления.
• Если метод Scale применяется без параметров (опущены оба набора
координат), устанавливается система координат, использующая в качестве
единиц измерения ТВИПЫ (очень маленькие единицы, гораздо меньше
пикселей, 1440 твипов в логическом дюйме).
Методы ScaleX и ScaleY
Преобразует значение ширины или высоты объектов Form, PictureBox или
Printer из одних условных единиц, установленных свойством ScaleMode, в
другие.
object.ScaleX (width, fromscale, toscale)
object.ScaleY (height, fromscale, toscale)
• object имя объекта.
• Width Обязательный параметр. Указывает для части object число
преобразуемых делений масштаба.
• Height Обязательный параметр. Указывает для части object число
преобразуемых делений масштаба.
• Fromscale (необязательный) значение, определяющее систему
координат, из которой параметры width или height для части object
будут преобразовываться. Допустимые значения представлены в
таблице установок. Возможные значения для параметра fromscale
такие же, как у свойства ScaleMode плюс новое значение HiMetric.
• Toscale (необязательный) значение, определяющие систему координат, в
которую будут преобразовываться параметры width или height для
части object. Допустимые значения представлены в таблице
установок. Возможные значения для параметра toscale такие же, как
у свойства ScaleMode плюс новое значение HiMetric.
Возможные установки для параметров fromscale и toscale:
Константа
Значение
vbUser
VbTwips
0
1
VbPoints
VbPixels
2
3
Описание
Определяемое пользователем.
Твип (1440 твипов в логическом дюйме; 567 твипов в
логическом сантиметре).
Точка (72 точки в логическом дюйме).
Пиксель (наименьшая единица разрешающей способности
для монитора или принтера).
VbCharacters
4
VbInches
VbMillimeters
VbCentimeters
VbHimetric
5
6
7
8
VbContainerPosition
VbContainerSize
9
10
Символ
(по горизонтали 120 твипов; по вертикали 240 твипов).
Дюйм.
Миллиметр.
Сантиметр.
HiMetric. Если параметр fromscale опущен, то значение
HiMetric принимается по умолчанию.
Определяет положение элемента управления.
Определяет размер элемента управления.
Примечания:
• Методы ScaleX и ScaleY преобразуют значения (width или height) из одних
единиц измерения, определенных в параметре fromscale, в соответствующие
значения в единицах измерения, определенных в параметре toscale.
• Методы ScaleX и ScaleY можно использовать вместе с методом
PaintPicture.
Метод Print
Метод print выводит (печатает) текст в указанный объект или окно
Immediate. Синтаксис этого метода следующий:
object.Print [outputList]
где:
— объект, в котором используется метод. Если объект не указан,
то по умолчанию используется форма;
• object
—строковое выражение или список выражений, выводимых в
объекте.
• outputList
Список вывода outputList имеет определенный синтаксис. Этот список
задается следующим образом:
[Spc(n) I Tab(n)] expression charpos
где:
— вставляет в выводимый текст количество пробелов, задаваемое
числом п,
• spc(n)
• Tab(n)
— задает позицию точки начала вставки;
• expression
• charpos
— числовое или строковое выражение для вывода;
— задает позицию вставки.
Итак, при использовании синтаксиса метода print не
указываются шрифт, его цвет, координаты вывода текста. Эти
параметры
вывода
текста
определяются
следующими
свойствами объекта, в который выводится текст:
• СurrentX
— координата начала текста по горизонтальной оси;
• CurrentY
— координата начала текста по вертикальной оси;
• Font
— шрифт и размер выводимого текста;
• FontTransparent
• ForeColor
— прозрачность текста, то есть свойство, при котором
сквозь текст виден фон объекта;
— цвет.
МАСШТАБИРОВАНИЕ И СИСТЕМА КООРДИНАТ
ГРАФИЧЕСКОГО ОКНА
Установление единиц измерения
• В конструкторе проекта выделить желаемый графический объект
PictureBox.
• В окне свойств выделенного объекта установить желаемые единицы
измерения, задав значение свойства в твипах, пунктах, пикселях, мм, см,
символах и др.
ScaleMode 6-Millimeter
Установление начала координат
По умолчанию графическое окно имеет следующую систему координат:
Чтобы поместить начало отсчета координат в новое место со значениями X0, Y0
надо задать программные строки, изменяющие свойства, например:
ris1.CurrentX = X0
ris1.CurrentY = Y0
где ris1 – имя объекта графического окна, а значения переменных X0, Y0
должны быть определены ранее в программном коде.
Установление лимитов измерения окна
Данная команда сразу устанавливает пределы измерения в прямоугольнике
окна. А пределы измерения сразу определят логически начало координат и
направление осей и единицы измерения. Данная строка обращается к методу
объекта:
ris2.Scale (-3, 20)-(3, -20)
ФУНКЦИИ УПРАВЛЕНИЯ ЦВЕТОМ
Функция RGB возвращает числовое представление цвета (тип возвращаемого
значения при этом long) в соответствии с интенсивностью трех
цветовых составляющих. Интенсивность этих трех основных
цветов задается шкалой чисел от О до 255.
RGB (Red, Green, Blue)

Red — интенсивность красного цвета от 0 до 255;

Green — интенсивность зеленого цвета от 0 до 255;

Blue — интенсивность синего цвета от 0 до 255.
Например, чтобы сделать фон объекта бирюзовым, необходимо присвоить
свойству BackColor формы следующее значение:
NameObject.BackColor = RGB (0,255,255)
Функция QBColor – предназначена для удобства работы со стандартными
цветами и возвращает числовое представление одного из 16
цветов.
0 Черный
4 Красный
1 Синий
5 Пурпурный 9 Светло-синий (голубой) 13 Светло-пурпурный
2 Зеленый
6 Желтый
3 Бирюзовый 7 Белый
8 Серый
12 Светло-красный
10 Светло-зеленый
14 Светло-желтый
11 Светло-бирюзовый
15 Ярко-белый
QBColor (NumberColor)
NameObject.BackColor = QBColor(3)
Задачи на построение.
Задача 38. Запрашивается радиус круга. Напишите программу, которая вычисляет
площадь этого круга и строит, в зависимости от введенного радиуса, окружность.
Private Sub Command1_Click()
Picture1.Scale (0, 0)-(100, 100)
a = Val(Text1)
s = 3.14 * a ^ 2
Picture1.Circle (50, 50), a, vbRed
Text2 = s
End Sub
Задача 37. Вычислите диагональ квадрата со стороной А и постройте на форме
квадрат, в соответствии с введенной стороной.
Private Sub Command1_Click()
a = Val(Text1)
d = a * Sqr(2)
Text2 = d
Picture1.Scale (0, 0)-(200, 200)
Picture1.Line (50, 50)-(50 + a, 50 + a), vbRed, B
Picture1.Line (50, 50)-(50 + a, 50 + a), vbRed
End Sub
Задача 40. Запрашиваются диагонали ромба. Создайте проект, вычисляющий
площадь ромба и строящий в соответствии с введенными диагоналями сам ромб.
Private Sub Command1_Click()
a = Val(Text1)
b = Val(Text2)
s=1/2*a*b
Text3 = s
c=b/2
l=a/2
25
Picture1.Scale (0, 0)-(300, 300)
Picture1.Line (50, 50)-(50, 50 + c)
Picture1.Line (50, 50 + c)-(50, (50 + c) + c)
Picture1.Line (50, 50 + c)-(50 - l, 50 + c)
Picture1.Line (50, 50 + c)-(50 + l, 50 + c)
Picture1.Line (50, 50)-(50 - l, 50 + c)
Picture1.Line (50 - l, 50 + c)-(50, (50 + c) + c)
Picture1.Line (50, (50 + c) + c)-(50 + l, 50 + c)
Picture1.Line (50 + l, 50 + c)-(50, 50)
End Sub
Private Sub Command2_Click()
End
End Sub
Задача 42. Вычислите объем цилиндра с радиусом основания R и высотой Н.
Цилиндр должен быть нарисован.
Private Sub Command1_Click()
r = Val(Text1)
h = Val(Text2)
v = 3.14 * r ^ 2 * h
Text3 = v
Picture1.Scale (0, 0)-(200, 200)
Picture1.Circle (100, 150), r, vbGreen, , , 0.2
Picture1.Circle (100, 150 - r), r, vbGreen, , , 0.2
Picture1.Line (100 - r, 150)-(100 - r, 150 - r),
vbGreen
Picture1.Line (100 + r, 150)-(100 + r, 150 - r),
vbGreen
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
Задача 44. Даны декартовы координаты трех
вершин треугольника на плоскости Разработайте
проект, вычисляющий площадь и периметр
26
данного треугольника. Треугольник должен присутствовать на форме.
Private Sub Command1_Click()
X1 = Val(Text1)
Y1 = Val(Text2)
X2 = Val(Text3)
Y2 = Val(Text4)
X3 = Val(Text5)
Y3 = Val(Text6)
a = Sqr((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)
b = Sqr((X3 - X2) ^ 2 + (Y3 - Y2) ^ 2)
c = Sqr((X3 - X1) ^ 2 + (Y3 - Y1) ^ 2)
p = (a + b + c) / 2
p1 = a + b + c
Text7 = p1
s = Sqr(p * (p - a) * (p - b) * (p - c))
Text8 = s
Picture1.Scale (0, 0)-(200, 200)
Picture1.Line (X1, Y1)-(X2, Y2)
Picture1.Line (X2, Y2)-(X3, Y3)
Picture1.Line (X3, Y3)-(X1, Y1)
End Sub
27
Самостоятельная работа № 2. Решение.
Вариант 1.
1. Одно число в 2 раза больше другого, а их сумма равна 93. Найти эти числа.
Private Sub Command1_Click()
Text1 = (93 / 3) * 2
Text2 = 93 / 3
End Sub
2. Вычислить стороны треугольника BСи AC, если известна сторона AB и углы a
и β.
AC
BA
AB  sin 
Private Sub Command1_Click()

 AC 
sin c
AB = InputBox("Введите длину стороны АВ", sin  sin c
"Сторона")
AB
BC
AB  sin 
a = InputBox("Введите угол А, выраженный в

 BC 
sin c sin 
sin c
радианах", "Значение угла А")
b = InputBox("Введите угол И, выраженный в радианах", "Значение угла B")
z = 3.14 - (a + b)
AC = AB * Sin(b) / Sin(z)
BC = AB * Sin(a) / Sin(z)
Text1 = AB
Text2 = a
Text3 = b
Text4 = AC
Text5 = BC
End Sub
3. Написать программу нахождения периметра
треугольника, две стороны которого водятся с
клавиатуры,
а
третья
сторона
равна
арифметическому двух других.
Private Sub Command1_Click()
a = Val(Text1)
28
b = Val(Text2)
c = (a + b) / 2
Text4 = c
Text3 = a + b + c
End Sub
4. Запрашивается радиус окружности.
Напишите программу и оформите проект,
которая
вычисляет
длину
этой
окружности. Окружность строится в
зависимости от введенного радиуса
Private Sub Command1_Click()
Picture1.Cls
Picture1.Scale (0, 0)-(100, 100)
a = Val(Text1)
Text2 = 2 * 3.14 * a
Picture1.Circle (50, 50), a, vbRed
End Sub
5. Напишите программу, выводящую на экран изображение куба.
Private Sub Command1_Click()
Picture1.Scale (-50, 50)-(50, -50)
'Picture1.Line (-50, 0)-(50, 0)
'Picture1.Line (0, 50)-(0, -50)
Picture1.Line (-20, 20)-(20, -20), , B
Picture1.Line (-20, 20)-(0, 40)
Picture1.Line (0, 40)-(40, 40)
Picture1.Line (40, 40)-(40, 0)
Picture1.Line (40, 0)-(20, -20)
Picture1.Line (40, 40)-(20, 20)
Picture1.Line (0, 0)-(-20, -20)
Picture1.Line (0, 40)-(0, 0)
Picture1.Line (0, 0)-(40, 0)
End Sub
29
Вариант 2 (Уровень В)
1. Запрашиваются диагонали ромба. Создайте проект, вычисляющий площадь
ромба и строящий в соответствии с введенными диагоналями сам ромб.
Private Sub Command1_Click()
a = Val(Text1)
b = Val(Text2)
s=1/2*a*b
Text3 = s
c=b/2
l=a/2
Picture1.Scale (0, 0)-(300, 300)
Picture1.Line (50, 50)-(50, 50 + c)
Picture1.Line (50, 50 + c)-(50, (50 + c) + c)
Picture1.Line (50, 50 + c)-(50 - l, 50 + c)
Picture1.Line (50, 50 + c)-(50 + l, 50 + c)
Picture1.Line (50, 50)-(50 - l, 50 + c)
Picture1.Line (50 - l, 50 + c)-(50, (50 + c) + c)
Picture1.Line (50, (50 + c) + c)-(50 + l, 50 + c)
Picture1.Line (50 + l, 50 + c)-(50, 50)
End Sub
Private Sub Command2_Click()
End
End Sub
2.Найти сумму цифр четырехзначного числа.
Private Sub Command1_Click()
a = Val(Text1)
b = a \ 1000
c = Val(a \ 10 - b * 100)
c1 = c \ 10
d = Val(a \ 10 - b * 100 - c1 * 10)
e = Val(a Mod 10)
Text2 = b + c1 + d + e
End Sub
30
3. Найти площадь кольца, внутренний радиус которого равен r, а внешний – R
(R>r)
Private Sub Command1_Click()
R1 = Val(Text4)
R2 = Val(Text5)
S1 = 3.14 * R1 ^ 2
Text1 = S1
S2 = 3.14 * R2 ^ 2
Text2 = S2
S3 = S2 - S1
Text3 = S3
End Sub
4. В прямоугольном треугольнике известны катет и гипотенуза. Найдите другой
катет.
Private Sub Command1_Click()
a = Val(Text1)
c = Val(Text2)
b = Sqr(c ^ 2 - a ^ 2)
Text3 = b
End Sub
5. Напишите программу, выводящую на экран изображение пирамиды
Private Sub Command1_Click()
Picture1.Scale (0, 0)-(100, 100)
Picture1.Line (50, 20)-(30, 60)
Picture1.Line (50, 20)-(90, 60)
Picture1.Line (50, 20)-(10, 70)
Picture1.Line (50, 20)-(70, 80)
Picture1.Line (30, 60)-(90, 60)
Picture1.Line (90, 60)-(70, 80)
Picture1.Line (70, 80)-(10, 70)
Picture1.Line (10, 70)-(30, 60)
End Sub
31
Вариант 3 (Уровень С)
1. Составить программу вычисления объема
цилиндра и конуса, которые имеют одинаковую
высоту H и одинаковый радиус R.
Vк=1/3 ПR2H
Vц = ПR2H
Private Sub Command1_Click()
Picture1.Scale (0, 0)-(100, 100)
Picture1.Cls
r = Val(Text1)
h = Val(Text2)
V = 3.14 * r ^ 2 * h
Text3 = V
k = (1 / 3) * 3.14 * r ^ 2 * h
Text4 = k
Picture1.Circle (50, 20), r, , , , 0.3
Picture1.Circle (50, 20 + h), r, , , , 0.3
Picture1.Line (50 - r, 20)-(50 - r, 20 + h)
Picture1.Line (50 + r, 20)-(50 + r, 20 + h)
Picture1.Line (50 + r, 20 + h)-(50 - r, 20 + h)
Picture1.Line (50, 20)-(50 - r, 20 + h)
Picture1.Line (50, 20)-(50 + r, 20 + h)
Picture1.Line (50, 20)-(50, 20 + h)
End Sub
2. Составить программу для вычисления площади круга, вписанного в квадрат
площадью S кв.см.
Private Sub Command1_Click()
a = InputBox("введите сторону квадрата",
"площадь")
Text1 = a
S1 = a ^ 2
Text2 = S1
r=a/2
S2 = 3.14 * r ^ 2
Text3 = S2
End Sub
Private Sub Command2_Click()
End
End Sub
32
3. Разработайте проект, который находит площадь равнобедренной трапеции по
ее основаниям и высоте. Трапеция должна быть нарисована. (S=1/2(a+b)*h)
Private Sub Command1_Click()
a = Val(InputBox("ВВедите длину первого основания ", "Ввод данных"))
b = Val(InputBox("ВВедите длину
второго основания ", "Ввод данных"))
h = Val(InputBox("ВВедите высоту ",
"Ввод данных"))
s = 1 / 2 * (a + b) * h
Text1 = s
Picture1.Scale (0, 0)-(300, 300)
Picture1.Line (150, 150)-(150 + a, 150)
c = (a - b) / 2
Picture1.Line (150 + c, 150 - h)-((150 + c)
+ b, 150 - h)
Picture1.Line (150, 150)-(150 + c, 150 - h)
Picture1.Line (150 + a, 150)-((150 + c) + b, 150 - h)
End Sub
4. Определите координату середины отрезка (X,Y), если известны координаты
концов отрезка: (X1,Y1) и (X2,Y2). Отрезок нарисовать.
Private Sub Command1_Click()
X1 = Val(InputBox("Введите Х1", " задача"))
Y1 = Val(InputBox("Введите Y1", " задача"))
X2 = Val(InputBox("Введите X2", " задача"))
Y2 = Val(InputBox("Введите Y2", " задача"))
Text1 = X1
Text2 = Y1
Text3 = X2
Text4 = Y2
X3 = (X1 + X2) / 2
Text5 = X3
Y3 = (Y1 + Y2) / 2
Text6 = Y3
End Sub
Private Sub Command2_Click()
Text1 = X1
Text2 = Y1
Text3 = X2
Text4 = Y2
X3 = (X1 + X2) / 2
Text5 = X3
Y3 = (Y1 + Y2) / 2
Text6 = Y3
End Sub
33
Построение диаграмм и графиков
Задача 1.Ввести численность населения Земли и построить диаграмму.
Private Sub Command1_Click()
X1 = Val(Text1)
X2 = Val(Text2)
X3 = Val(Text3)
X4 = Val(Text4)
X5 = Val(Text5)
X6 = Val(Text6)
‘Вычисление общего населения Земли
z = X1 + X2 + X3 + X4 + X5 + X6
' Вычисление углов для построения
круговой диаграммы
a1 = X1 * 360 / z
a2 = a1 + X2 * 360 / z
a3 = a2 + X3 * 360 / z
a4 = a3 + X4 * 360 / z
a5 = a4 + X5 * 360 / z
a6 = a5 + X6 * 360 / z
' Вычисление процентного соотношения населения соответствующего континента
к общему населению Земли
p1 = Round(X1 / z * 100)
p2 = Round(X2 / z * 100)
p3 = Round(X3 / z * 100)
p4 = Round(X4 / z * 100)
p5 = Round(X5 / z * 100)
p6 = Round(X6 / z * 100)
' Построение соответствующих секторов
Picture1.Scale (0, 0)-(100, 100)
‘ закрашиваем круг
Picture1.FillStyle = 0
‘ определяем цвет круга
Picture1.FillColor = vbRed
Picture1.Circle (50, 50), 30, vbRed, -6.28, -(a1 * 3.14 / 180)
Picture1.FillStyle = 0
Picture1.FillColor = vbGreen
34
Picture1.Circle (50, 50), 30, , -(a1 * 3.14 / 180), -(a2 * 3.14 / 180)
Picture1.FillStyle = 0
Picture1.FillColor = vbgrey
Picture1.Circle (50, 50), 30, , -(a2 * 3.14 / 180), -(a3 * 3.14 / 180)
Picture1.FillStyle = 0
Picture1.FillColor = vbBlue
Picture1.Circle (50, 50), 30, , -(a3 * 3.14 / 180), -(a4 * 3.14 / 180)
Picture1.FillStyle = 0
Picture1.FillColor = vbCyan
Picture1.Circle (50, 50), 30, vbCyan, -(a4 * 3.14 / 180), -(a5 * 3.14 / 180)
Picture1.FillStyle = 0
Picture1.FillColor = vbMagenta
Picture1.Circle (50, 50), 30, vbMagenta, -(a5 * 3.14 / 180), -(a6 * 3.14 / 180)
End Sub
35
Условный оператор.
Задача 67. Напишите программу, которые в зависимости от введенного числа
либо вычисляют функцию, либо выдают сообщение, что функция не определена:
y
1
;
x
Private Sub Command1_Click()
x = Val(Text1)
If x = 0 Then Picture1.Print " Функция не определена " Else y = 1 / x
Text2 = y
End Sub
Задача 68. Напишите программу, которые в зависимости от введенного числа
либо вычисляют функцию, либо выдают сообщение, что функция не определена:
y
x2  1
Private Sub Command1_Click()
x = Val(Text1)
If x > 1 Or x < -1 Then y = Sqr(x ^ 2 - 1) Else Picture1.Print "Функция не определена"
Text2 = y
End Sub
36
Задача 69. Напишите программу для вычисления функции:
 x sin x, x  0

,x  0
y =  cos x
 x
Private Sub Command1_Click()
x = Val(Text1)
If x <= 0 Then y = x * Sin(x) Else y = Cos(x) / x
Text2 = y
End Sub
Задача 70. Напишите программу, определяющую
четность или не четность введенного с клавиатуры
целого числа.
Private Sub Command1_Click()
a = Val(Text1)
If a Mod 2 = 0 Then Picture1.Print " четное" Else
Picture1.Print " нечетное"
End Sub
Задача 71. Напишите программу, находящую меньшее
из двух, введенных с клавиатуры чисел.
Private Sub Command1_Click()
a = Val(Text1)
b = Val(Text2)
If a < b Then Min = a Else Min = b
Text3 = Min
End Sub
Задача 72. Напишите программу, запрашивающую у
пользователя три разных целых положительных числа
и находящую сумму двух наименьших из них.
37
Private Sub Command1_Click()
a = Val(Text1)
b = Val(Text2)
c = Val(Text3)
If a > b And a > c Then y = b + c
If b > a And b > c Then y = a + c
If c > a And c > b Then y = a + b
Text4 = y
End Sub
Задача 75. В одном из заданий мы уже вычисляли площадь треугольника по
формуле Герона. Теперь усложним нашу задачу. С клавиатуры запрашиваются
целые числа а, Ь и с. Программа проверяет, можно ли, представив, что эти числа
означают длины сторон, составить из них треугольник, затем рисует его на экране
и вычисляет его площадь. Если треугольник с такими сторонами не существует, то
на экране появляется соответствующее сообщение и картинка.
Private Sub Command1_Click()
X1 = Val(Text1)
Y1 = Val(Text2)
X2 = Val(Text3)
Y2 = Val(Text4)
X3 = Val(Text5)
Y3 = Val(Text6)
a = Sqr((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)
b = Sqr((X3 - X2) ^ 2 + (Y3 - Y2) ^ 2)
c = Sqr((X3 - X1) ^ 2 + (Y3 - Y1) ^ 2)
If (a + b) < c Or (a + c) < b Or (b + c) < a Then Picture1.Print "такого треугольника не
существует"
p = (a + b + c) / 2
p1 = a + b + c
Text7 = p1
s = Sqr(p * (p - a) * (p - b) * (p - c))
Text8 = s
Picture1.Scale (0, 0)-(200, 200)
Picture1.Line (X1, Y1)-(X2, Y2)
Picture1.Line (X2, Y2)-(X3, Y3)
Picture1.Line (X3, Y3)-(X1, Y1)
End Sub
38
Задача 82. Определите и выведите на экран номер квадранта, в котором
расположена точка А(х, у), х и у — заданные целые числа.
Private Sub Command1_Click()
x = Val(Text1)
y = Val(Text2)
If x > 0 And y > 0 Then Picture1.Print "1"
If x > 0 And y < 0 Then Picture1.Print "4"
If x < 0 And y > 0 Then Picture1.Print "2"
If x < 0 And y < 0 Then Picture1.Print "3"
End Sub
Задача 83.
Составьте программу, которая
определяет, принадлежит ли точка М(х, у) кругу с
центром в точке Z (а, b) и радиусом равным r.
Private Sub Command1_Click()
x = Val(Text1)
y = Val(Text2)
a = Val(Text3)
b = Val(Text4)
r = Val(Text5)
If (x - a) ^ 2 + (y - b) ^ 2 < r ^ 2 Then Picture1.Print "принадлежит" Else Picture1.Print
"не принадлежит"
End Sub
Задача 84. Составьте программу, которая определяет, принадлежит ли точка N
(х, у, z) шару с центром в точке Z (а, b, с) и радиусом г.
Private Sub Command1_Click()
x = Val(Text1)
y = Val(Text2)
c = Val(Text6)
a = Val(Text3)
b = Val(Text4)
z = Val(Text7)
39
r = Val(Text5)
If (x - a) ^ 2 + (y - b) ^ 2 + (z - c) ^ 2 = r ^ 2 Then Picture1.Print " принадлежит " Else Picture1.Print
"не принадлежит"
End Sub
Задача 85. Составьте программу, которая определяет, принадлежит ли точка М
(х, у) окружности с центром в точке Z (а, b) и радиусом г.
Private Sub Command1_Click()
x = Val(Text1)
y = Val(Text2)
a = Val(Text3)
b = Val(Text4)
r = Val(Text5)
If (x - a) ^ 2 + (y - b) ^ 2 = r ^ 2 Then Picture1.Print "принадлежит" Else Picture1.Print
"не принадлежит"
End Sub
Задача 86. Составьте программу, которая определяет, принадлежит ли точка N
(х, у, z) сфере с центром в точке Z (а, b, с) и радиусом г.
Private Sub Command1_Click()
x = Val(Text1)
y = Val(Text2)
c = Val(Text6)
a = Val(Text3)
b = Val(Text4)
z = Val(Text7)
r = Val(Text5)
If (x - a) ^ 2 + (y - b) ^ 2 + (z - c) ^ 2 <r ^ 2 Then Picture1.Print
" принадлежит " Else Picture1.Print "не
принадлежит"
End Sub
40
Оператор множественного выбора
Вместо нескольких вложенных операторов If…Then, иногда удобнее
использовать оператор выбора Select Case. Этот оператор имеет более
компактную запись и позволяет осуществить единственный выбор из множества
вариантов.
Select Case переменная
Case a(1)
переменная
Case a(2)
переменная
Case a(3)
переменная
Case else
переменная
End select
В данной конструкции управление передается той строке, для которой значение
а(n) совпадает со значением переменной или выражения, указанных после Select
Case. Если переменная не равна ни одному из значений а, то выполняется группа
операторов, указанных после Case else.
В операторе Select Case возможно использование операций сравнения >, <, =, <>,
>=, <=. В таком случае возможно задание интервала значений переменной и
действий для них. Например, фрагмент кода, определяющий, положительную
оценку получил наш герой или нет (оценка считывается из поля Text)
x = Val(Text1)
Select Case x
‘рассматриваются значения x<3
Case x<3
Textl1 = a + ",плохо, очень плохо. Придется пересдать"
‘рассматриваются значения x=4 и х=5
Case 4 to 5
Text1 = “Нормально, тема зачтена"
End Select
41
Задача. Составить программу, позволяющую
получить словесное описание школьных отметок
(1 - плохо, 2- неудовлетворительно, 3удовлетворительно, 4-хорошо, 5 - отлично).
Dim a As String
Private Sub Command1_Click()
a = InputBox(" Представьтесь")
Label1 = a + ",какую оценку ты сегодня
получил?"
End Sub
Private Sub Command2_Click()
x = Val(Text1)
Select Case x
Case 1
Label1 = a + ", плохо, очень плохо"
Case 2
Label1 = a + ", ваша оценка неудовлетворительно"
Case 3
Label1 = a + ", вы занимаетесь не очень хорошо, ваша оценка удовлетворительно"
Case 4
Label1 = a + ", ваша оценка хорошо"
Case 5
Label1 = a + ", молодец, отлично!"
Case Else
Label1 = "ты что, " + a + ", не знаешь какие оценки ставят в школе?"
End Select
End Sub
Задача 60. Требуется по номеру месяца определить время года и вывести
соответствующий рисунок.
Private Sub Command1_Click()
a = Val(Text1)
‘Здесь должен быть указан полный путь к папке
с картинками
p = "D:\Мои документы\УМК….\"
Select Case a
Case 1
Label2 = " Это январь. Зима"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "birch_snow.jpg")
42
Case 2
Label2 = " Это февраль. Зима"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "birch_snow.jpg")
Case 3
Label2 = " Это март Весна"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "icicles1.jpg")
Case 4
Label2 = " Это апрель. Весна"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "icicles1.jpg")
Case 5
Label2 = " Это май. Весна"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "cherry_trees.jpg")
Case 6
Label2 = " Это июнь. Лето"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "meadow_01.jpg")
Case 7
Label2 = " Это июль. Середина лета"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "meadow_01.jpg")
Case 8
Label2 = " Это август. Позднее лето"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "autumnpath.jpg")
Case 9
Label2 = " Это сентябрь. Осень"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "autumnpath.jpg")
Case 10
Label2 = " Это октябрь. Осень"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "autumnpath.jpg")
Case 11
Label2 = " Это ноябрь. Поздняя осень"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "leaves021.jpg")
Case 12
Label2 = " Это декабрь. Скоро Новый год!!"
Image1.Stretch = True
Image1.Picture = LoadPicture(p & "birch_snow.jpg")
43
End Select
End Sub
Задача 61. Разработайте проект, который по знаку арифметической операции
выводит ее название.
Private Sub Command1_Click()
a = Text1
Select Case a
Case "*"
Label2 = "Это операция умножения"
Case "+"
Label2 = "Это операция сложения"
Case "/"
Label2 = "Это операция деления"
Case "^"
Label2 = "Это операция возведения в
степень"
Case "-"
Label2 = "Это операция вычитания"
Case Else
Label2 = "Нет такой операции"
End Select
End Sub
44
Использование для выбора переключателей
Попробуем непосредственно на форме разместить переключатели и посмотреть,
как они работают. Пусть форма имеет вид:
Надо разместить Shape для фигур, четыре OptionButton для типа фигуры. Потом
растянуть рамку Frame для цвета и поместить там три OptionButton, еще Frame
для типа заливки с четырьмя OptionButton и наконец CommandButton для выхода.
Фигура (Shape) - Используется для отображения
прямоугольника, квадрата, круга, эллипса и т.д.
простых
фигур:
Рамка (Frame) - Используется для функциональной или визуальной группировки
элементов управления в рамку с заголовком
Перключатель (OptionButton) - Используется в тех случаях, когда пользователь
должен сделать единственный выбор
Типы фигур.
0 - прямоугольник
1 - квадрат
2 - овал
3- окружность
4 - скругленный прямоугольник
5 - скругленный квадрат
Типы заливки (FillStyle)
0 - сплошная
1 - прозрачно
2 - горизонтально
45
3 - вертикально
4 - диагональ вверх
5 - диагональ вниз
6 - пересечение
7 - диагональное пересечение
Командный код данной программы:
‘ Задание типа фигур
Private Sub Option1_Click()
Shape1 = 1
End Sub
Private Sub Option2_Click()
Shape1 = 0
End Sub
Private Sub Option3_Click()
Shape1 = 3
End Sub
Private Sub Option4_Click()
Shape1 = 2
End Sub
‘Задание цвета фигур
Private Sub Option5_Click()
Shape1.FillColor = vbWhite
End Sub
Private Sub Option6_Click()
Shape1.FillColor = vbBlue
End Sub
Private Sub Option7_Click()
Shape1.FillColor = vbRed
End Sub
‘Задание цвета заливки
Private Sub Option8_Click()
Shape1.FillStyle = 0
End Sub
Private Sub Option9_Click()
Shape1.FillStyle = 2
End Sub
Private Sub Option10_Click()
Shape1.FillStyle = 6
End Sub
Private Sub Option11_Click()
Shape1.FillStyle = 7
46
End Sub
Private Sub Command1_Click()
End
End Sub
Задача 65.
Создайте проект игры в кости. В задаче используется 6
переключателей, при выборе одного из которых появлялся бы кубик
с
соответствующим количеством точек.
Private Sub Command1_Click()
End
End Sub
Private Sub Option1_Click()
Image1.Picture =
LoadPicture("C:\Documents and
Settings\User\Рабочий стол\Игра в
кости\Рисунки\1.bmp")
End Sub
Private Sub Option2_Click()
Image1.Picture = LoadPicture("C:\Documents and Settings\User\Рабочий стол\Игра в
кости\Рисунки\2.bmp")
End Sub
Private Sub Option3_Click()
Image1.Picture = LoadPicture("C:\Documents and Settings\User\Рабочий стол\Игра в
кости\Рисунки\3.bmp")
End Sub
Private Sub Option4_Click()
Image1.Picture = LoadPicture("C:\Documents and Settings\User\Рабочий стол\Игра в
кости\Рисунки\4.bmp")
End Sub
Private Sub Option5_Click()
Image1.Picture = LoadPicture("C:\Documents and Settings\User\Рабочий стол\Игра в
кости\Рисунки\5.bmp")
End Sub
Private Sub Option6_Click()
Image1.Picture = LoadPicture("C:\Documents and Settings\User\Рабочий стол\Игра в
кости\Рисунки\6.bmp")
End Sub
47
Download