Лабораторная работа № 4 - Северо

advertisement
ИНФОРМАЦИОННЫЕ СИСТЕМЫ
И ТЕХНОЛОГИИ
Часть I
Методические указания
к лабораторным работам
Для студентов, обучающихся по направлению подготовки
230700.62 – «Прикладная информатика»
Составители:
С. Б. Волошин, Д. А. Дегтярева
Владикавказ 2015
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«СЕВЕРО-КАВКАЗСКИЙ ГОРНО-МЕТАЛЛУРГИЧЕСКИЙ ИНСТИТУТ
(ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ)»
Кафедра «Информационные системы в экономике»
ИНФОРМАЦИОННЫЕ СИСТЕМЫ
И ТЕХНОЛОГИИ
Часть I
Методические указания
к лабораторным работам
Для студентов, обучающихся по направлению подготовки
230700.62 – «Прикладная информатика»
Составители:
С. Б. Волошин, Д. А. Дегтярева
Владикавказ 2015
1
УДК 004
ББК 73
В68
В68
Информационные системы и технологии. Часть I. Методические указания к лабораторным работам. Для студентов, обучающихся по направлению подготовки 230700.62 – «Прикладная информатика» / Сост.: С. Б. Волошин, Д. А. Дегтярева; СевероКавказский горно-металлургический институт (государственный
технологический университет). – Владикавказ: Северо-Кавказский
горно-металлургический институт (государственный технологический университет). Изд-во «Терек», 2015. – 72 с.
УДК 004
ББК 73
Коллектив авторов выражает искреннюю благодарность
к.т.н. Мамонтову Д. В. за помощь в разработке вариантов заданий для
выполнения лабораторных работ № 3–8 .
Редактор: Иванченко Н. К.
Компьютерная верстка: Кравчук Т. А.
 Составление. ФГБОУ ВО «Северо-Кавказский
горно-металлургический институт (государственный
технологический университет)», 2015
 Волошин С. Б., Дегтярева Д. А.; составление, 2015
Подписано в печать 21.07.15. Формат бумаги 60х84 1/16. Бумага офсетная. Гарнитура «Таймс».
Печать на ризографе. Усл. п.л. 4,2. Уч.-изд.л. 2,35. Тираж 10 экз. Заказ № ____.
Северо-Кавказский горно-металлургический институт (государственный
технологический университет). Изд-во «Терек».
Отпечатано в отделе оперативной полиграфии СКГМИ (ГТУ).
362021. Владикавказ, ул. Николаева, 44.
2
ОГЛАВЛЕНИЕ
Лабораторная работа № 1 .................................................................... 4
Лабораторная работа № 2 .................................................................... 12
Лабораторная работа № 3 .................................................................... 17
Лабораторная работа № 4 .................................................................... 25
Лабораторная работа № 5 .................................................................... 33
Лабораторная работа № 6 .................................................................... 41
Лабораторная работа № 7 .................................................................... 4
Лабораторная работа № 8 .................................................................... 54
Лабораторная работа № 9 .................................................................... 63
3
Лабораторная работа №1
ИСПОЛЬЗОВАНИЕ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ
Button, Label и TextBox
Цель работы: ознакомиться с общим интерфейсом среды разработки Microsoft Visual Studio 2010 и языком программирования Microsoft Visual Basic 2010.
На данной лабораторной работе будет составлена программа
“Привет, мир!”. Она выглядит на экране компьютера так, как показано
на рис. 1.1. Программа работает следующим образом: когда пользователь ставит указатель мышки на кнопку “Привет” и нажимает левую
кнопку мышки – в белом прямоугольнике текстового окна появляется
надпись “Привет, мир!”. Затем, если пользователь щелкает мышкой по
кнопке “Очистить”, то текстовое окно очищается от текста. Щелчок
по кнопке “Выход” приводит к завершению работы программы.
Рис. 1.1. Программа «Привет, мир»!» в работе
Для того, чтобы составить такую программу, необходимо:
1. Загрузить Microsoft Visual Studio и создать новый проект на
языке программирования Visual Basic (далее, просто VB).
2. Разместить на форме необходимые элементы управления – этикетку, текстовое окно и три кнопки.
3. Задать их основные свойства.
4. Ввести команды, которые должен выполнить компьютер после
нажатия на соответствующую кнопку.
1. Порядок загрузки Visual Studio
Для загрузки программы Microsoft Visual Studio следует:
1 Дважды щелкнуть левой кнопкой мышки по значку с подписью
Microsoft Visual Studio 2010 на рабочем столе операционной системы.
4
Также можно щелкнуть по значку 1 раз, а затем нажать кнопку на клавиатуре с надписью Enter.
2 Появится заставка VS и далее стартовая страница. В левой части стартовой страницы необходимо щелкнуть по ссылке Создать
проект...
3 В левой части появившегося окна необходимо среди установленных шаблонов найти пункт Visual Basic, раскрыть его и выбрать
подпункт Windows. В центральной части окна необходимо выбрать
пункт Приложение WindowsForms. После этого необходимо ввести
в окно Новый проект в поле Название имя текущей лабораторной
работы – Lab-01 и нажать кнопку OK.
4 Появится экран, изображенный на рис. 1.2.
Рис. 1.2. Рабочая область Microsoft Visual Studio 2010
Рабочая область VS состоит из следующих основных элементов:
1 – элемент управления Form (Форма), на котором располагаются
элементы управления программой;
2 – Панель инструментов, содержащая элементы управления программой, которые можно расположить на форме;
3 – таблица Properties, со списком всех свойств выделенного элемента управления (или другого объекта);
4 – Строка состояния программы;
5 – закладка Обозревателя решения, в котором отображаются все
файлы проекта;
5
6 – кнопка Сохранить проект;
7 – кнопка для вывода на экран панели инструментов;
8 – кнопка для вывода на экран таблицы свойств Properties;
9 – кнопка для запуска программы;
10 – панель вкладок открытых файлов.
2. Вывод на форму элементов управления
На VB программы пишутся в два этапа – сначала программист
составляет видимую часть программы (выводит на форму текстовые
окна, кнопки), а затем пишет непосредственно компьютерные операторы (команды, которые выполняет компьютер). Первый этап называется визуальным программированием, второй – программированием в
исходном коде.
На первом этапе нам понадобятся только три управляющих элемента: текстовое окно (TextBox), кнопка (Button) и этикетка (Label).
Каждый элемент достаточно сложен и применяется для широкого круга задач.
Для того чтобы разместить элемент управления на форме, необходимо дважды щелкнуть по нему в панели инструментов. Элемент
появится в верхнем левом углу формы. Затем элемент передвигают в
ту позицию, в которой по замыслу программиста он должен находиться. Передвигать элемент можно двумя способами.
1-й способ передвижения элементов управления
Поставить указатель мышки на элемент управления, нажать левую кнопку мышки и, удерживая ее в нажатом положении, передвинуть указатель в нужное место, затем отпустить мышку. В процессе
передвижения рядом с указателем мышки будет двигаться контур перемещаемого элемента и будут появляться направляющие, помогающие выравнивать элемент относительно других элементов на форме и
относительно краев формы.
2-й способ передвижения элементов управления
Один раз щелкнуть мышкой по элементу управления. Visual Studio
выделит его, о чем будут свидетельствовать 6 квадратиков, появившихся по периметру элемента. На рис. 1.3 кнопка “Привет” выделена. После этого необходимо нажимать стрелки управления курсором. Каждое
нажатие на стрелку будет передвигать элемент на одну позицию.
6
Рис. 1.3. Проектирование графического
пользовательского интерфейса программы
3. Ввод и редактирование свойств элементов управления
Все материальные и нематериальные объекты имеют свойства.
Например, объект «мяч» имеет такие свойства как цвет, диаметр, вес и
прочие. Иными словами, свойства описывают те или иные признаки
объекта. Элементы управления – окно, кнопка, этикетка – тоже являются объектами и имеют свойства, которые описывают их параметры.
У каждого элемента управления много свойств. У некоторых элементов их больше 100. Значение каждого свойства задается автоматически при выводе элемента на форму. После этого программист может
самостоятельно изменить значения большинства свойств, если в этом
есть необходимость. Список свойств, соответствующих им значений,
и инструменты редактирования приведены в таблице Properties.
3.1. Значения свойств кнопки
Кнопка (Button) используется практически во всех программах.
На начальном этапе обучения программированию достаточно знать
только два ее свойства:
Name – название элемента. Оно должно состоять из английских
букв. Первыми тремя буквами названия рекомендуется ставить cmd;
7
Text – свойство, которое содержит текст надписи, выводимой на
кнопку. Для переключения на русский язык нужно нажать Alt+Shift
или Ctrl+Shift. Изменение языка будет отображено на иконке в нижнем правом углу экрана – En будет заменен на Ru. Для того чтобы
переключиться в набор английского текста, нужно нажать данное сочетание клавиш повторно.
На рис. 1.3 в таблице Properties можно увидеть, что выделенная
на форме кнопка имеет Name = cmdHello и Text = Привет.
3.2 Значения свойств текстового окна
Наиболее часто используемыми свойствами текстового окна Text
Box можно также считать Name и Text.
Name – содержит название окна, которое вводится английскими
буквами, причем первыми из них должны быть txt, чтобы в тексте
программы был сразу понятен тип данного элемента управления.
Text –содержит текст, который выведен в текстовое окно. Если в
таблице Properties в это свойство ввести какую-либо строку, то она будет выводиться из окна при запуске программы. Как правило, на этапе
создания интерфейса программы данное свойство оставляют пустым.
3.3. Значения свойств этикетки
У элемента Label, несмотря на его простоту, много свойств, но
для выполнения данной лабораторной работы достаточно знать и понимать только два, таких же, как и у кнопки и текстового окна –
Name и Text. Первое свойство хранит название элемента и должно
начинаться с букв lbl, второе хранит надпись на этикетке. Так на рис.
1.3. этикетка имеет Name = lblInfoи Text = Сообщение:.
4. Набор текста программы
Компьютерная программа – это список команд, выполняемых
компьютером. После того, как программист создает внешний вид программы – графический пользовательский интерфейс (GUI) – он должен записать команды, которые будет выполнять машина. Visual Basic
является событийно-ориентированным языком, следовательно, пока
не произойдет событие – программа ничего не делает. Самым простым и широко используемым в программировании событием является одинарный щелчок мышкой по элементу Button. В создаваемой на
данном занятии программе все действия (вывод приветствия, очистка
8
текстового окна, выход из программы) будут происходить после
щелчка мышкой по соответствующей кнопке.
Для того чтобы запрограммировать эти действия, необходимо перейти в редактор кода программы и набрать команды, соответствующие каждой кнопке. Для этого следует дважды щелкнуть мышкой по
кнопке, код (программу) для которой необходимо ввести. После двойного щелчка автоматически загрузится редактор кода и заготовка программы. Например, если дважды щелкнуть по кнопке cmdHello, то
форма исчезнет и на экране появится текст:
1
2
3
4
5
Public Class Form1
Private Sub cmdHello_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdHello.Click
‘в этой строке вводится команда
End Sub
EndClass
Команды, которые должны выполняться при нажатии на кнопку,
программист вводит сам, между 3 и 4 строками (см. рис. 1.4).
Рис. 1.4. Редактор кода с процедурами для каждой кнопки программы
Для того чтобы вернуться из текстового редактора к форме, следует ввести Shift+F7. Если, находясь на форме нажать F7, то будет
загружен редактор кода и все процедуры, составленные в нем. Кроме
9
этого, переключаться между формой и текстом программы можно,
последовательно нажимая сочетание клавиш Ctrl+Tab.
5. Выполнение лабораторной работы
Составление программы “Привет, мир!” следует выполнять по
следующему алгоритму:
1. Запустить программу Visual Basic.
2. Вывести на форму три кнопки, этикетку и текстовое окно, расположив их так, как показано на рис. 1.3.
3. Присвоить элементам свойства согласно таблице:
Элемент
Кнопка (Button)
Кнопка (Button)
Кнопка (Button)
Текстовое окно (TextBox)
Этикетка (Label)
Свойство
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Значение
cmdHello
Привет
cmdClear
Очистить
cmdExit
Выход
txtMessage
lblInfo
Сообщение:
4. Дважды щелкнув по кнопке “Привет”, перейти в редактор кода
и в выведенной заготовке процедуры набрать команду на вывод строки-приветствия:
Private Sub cmdHello_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdHello.Click
txtMessage.Text = "Привет, мир!"
End Sub
5. Нажать Shift+F7, вернуться на форму, затем дважды щелкнуть
по кнопке “Очистить”. Загрузится редактор кода с соответствующей
процедурой (Вызвать заготовку процедуры можно и иначе: щелчком
мышки раскрыть ниспадающий список 1 (рис. 1.4) и щелкнуть по
строке с названием нужной кнопки – cmdClear).
6. В заготовке процедуры для кнопки cmdClear набрать команду
на очистку текстового окна:
10
Private Sub cmdClear_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdClear.Click
txtMessage.Clear()
EndSub
7. Одним из описанных в пункте 5 способов вызвать заготовку
процедуры для кнопки “Выход” и набрать в ней команду на завершение программы:
Private Sub cmdExit_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdExit.Click
Application.Exit()
EndSub
8. Щелкнув мышкой по кнопке Start (№ 9 на рис. 1.2) запустить
программу. Она должна выглядеть так, как показано на рис. 1.1.
Для того чтобы закрыть программу и вернуться к среде разработки, следует нажать кнопку “Выход” или щелкнуть по кнопке со знаком “х”, которая расположена в правом верхнем углу формы.
Вопросы к защите лабораторной работы
1. Цель данной лабораторной работы.
2. Что нужно сделать для того, чтобы составить программу
“Привет, мир!”?
3. Продемонстрируйте, как загружается среда разработки.
4. Опишите назначение основных элементов рабочего экрана
Visual Basic.
5. Продемонстрируйте, как можно вывести на форму элемент
управления.
6. Продемонстрируйте, как передвигать элемент управления по
форме.
7. Что такое свойство элемента управления?
8. Опишите основные свойства элемента управления Button.
9. Опишите основные свойства элемента управления TextBox.
10. Опишите основные свойства элемента управления Label.
11. Составьте программу “Привет, мир!” и продемонстрируйте ее
работу.
11
Лабораторная работа №2
ПЕРЕМЕННЫЕ. ТИПЫ ДАННЫХ
Цель работы: ознакомиться с понятиями переменных и наиболее
распространенными типами данных.
1. Переменные
Переменная – это величина, значение которой может изменяться.
В компьютерных программах переменные используются для идентификации определенных численных и текстовых значений.
Программа, как машинная реализация алгоритма, должна отвечать требованию массовости, т. е. решать спектр задач, отличающихся
только исходными данными. Следовательно, она должна быть составлена так, чтобы пользователь мог вводить любые исходные значения,
а машина обрабатывала их указанным образом.
Рассмотрим пример. Предположим, что необходимо составить
программу, которая складывает два числа и выдает результат на
экран. Исходными данными являются числа 2 и 4. Можно составить
программу всего из одной строки:
txtResult.Text = 2 + 4
Но это будет неправильная программа, потому что она работает
только для чисел 2 и 4, а для чисел 10 и 20 или каких-либо других не
пригодна.
Она не обеспечивает массовости применения, потому что привязана к неизменным значениям. Нужно составить программу на основе
элементов, которые могут менять свое значение без ущерба для программы – переменных. Правильная программа, которую можно использовать для суммы любых двух целых чисел, выглядит так:
Dim a As Integer
Dim b As Integer
a = txtA.Text
b = txtB.Text
txtResult.Text = a + b
Использование переменных позволяет применить программу к
задачам суммы двух любых чисел. Работая с переменными, машина
12
знает, какое число каждая из них обозначает и соответствующим образом его обрабатывает.
Не следует отождествлять переменную со значением, которое она
обозначает. Переменная всего лишь идентификатор, как фамилия обозначает конкретного человека, но не является самим человеком.
Может возникнуть вопрос: если переменная есть идентификатор
числа, а не число, то откуда машина берет сами численные значения
для расчета, иными словами, где хранится значение переменной? Значение переменной хранится в определенной ячейке оперативной памяти компьютера. Причем компьютер сам решает, в какую конкретно
из тысяч имеющихся ячеек “поселить” данное число. Ячейки используются многими программами и число свободных “номеров этой гостиницы” изменяется в зависимости от количества запущенных программ, используемых драйверов устройств и многого другого.
Название переменной есть идентификатор ячейки памяти, в которой
хранится значение переменной. Образно говоря, название переменной –
это надпись с фамилией жильца на двери его номера в гостинице “Оперативная память”. Запись информации для конкретной программы в оперативную память происходит только во время работы этой программы.
После того, как пользователь закрывает программу, все используемые ею
ячейки становятся свободными. Если компьютер работает, то в оперативной памяти постоянно находится информация операционной системы
и драйверы (программы управления) некоторых устройств.
2. Типы данных
Каждая переменная имеет не только название, но и тип. Тип – это
параметр переменной, который определяет диапазон хранимого в ней
значения, методы его обработки и объем выделяемой памяти.
Существуют две принципиально разные категории переменных –
числовые и текстовые. Числовые хранят числа, а текстовые, соответственно, текст. В каждой категории выделены классы значений (типы), которые обладают определенными характеристиками. Главной
особенностью числовых типов является допустимый диапазон их значений. Тип переменной важен для компьютера, потому что при обработке разных значений используются разные алгоритмы и методы.
Например, текстовые переменные нельзя делить, умножать или вычитать. Сложение текстовых величин происходит путем записи символов одного из них за другим. Хотя с числовыми значениями арифметические операции выполнять можно.
13
Кроме этого числовой тип определяет допустимый размер значения, которое хранится в переменной. Машина использует алгоритмы
обработки в соответствии с указанным ей типом переменной. Например, расчеты с числами “двойной точности” ведутся с учетом большего количества знаков после запятой, чем при работе числами “одинарной точности”. При этом, естественно, затрачивается больше времени.
Наиболее быстро машина обрабатывает числа целого типа.
Рассмотрим некоторые типы переменных, принятые вVisualBasic
(собственно говоря, и в .NETFramework).
1. Тип Integer (числа целого типа):
а) диапазон возможных значений
+2147483647;
б) пример объявления:
от
–2147483648
до
Dim Counter AsInteger
Важно отметить, что объяснить программе к какому типу принадлежит та или иная переменная нужно до того, как алгоритм начнет
с ней работать. Как правило, объявление располагают в первых строках программы.
2. Тип Double (числа дробного типа двойной точности):
а) диапазон возможных значений от –1,79769313486231570E+308
до +1,79769313486231570E+308;
б) пример объявления:
Dim Sum As Double
3. Тип String (строка переменной длины):
а) диапазон возможных значений от 0 до 231 знаков;
б) пример объявления:
Dim Student Name As String
в) пример присвоения строкового значения. Строка обязательно
должна быть записана в кавычках.
Student Name = "Иванов И. И."
14
Допускается объявление переменной и присваивание ей значения
в одной строке, например:
Dim Student Name As String = "Иванов И. И."
Dim a As Integer = txtA.Text
При считывании дробного числа из текстового окна необходимо
использовать функцию Val. Она предотвратит возникновение ошибок
при присваивании переменной значения из текстового окна.
Dim b As Double = val(txtB.Text)
Пример 2.1
Напишите программу, определяющую цену продукта по формуле:
Price = S + P + N,
где S – себестоимость продукции;
P – прибыль производителя;
N – налоги, входящие в состав цены.
Исходные данные необходимо вводить в текстовые окна, результат выводят в четвертое текстовое окно. Внешний вид программы
представлен на рис. 2.1.
Рис. 2.1. Внешний вид приложения
Исходный код программы:
15
Private Sub cmdCalculate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdCalculate.Click
Dim S As Double = Val(txtS.Text)
Dim P As Double = Val(txtP.Text)
Dim N As Double = Val(txtN.Text)
Dim Price As Double = S + P + N
txtPrice.Text = Price
End Sub
Private Sub cmdClear_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdClear.Click
txtS.Clear()
txtP.Clear()
txtN.Clear()
txtPrice.Clear()
End Sub
Private Sub cmdExit_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdExit.Click
Application.Exit()
End Sub
3. Задача для самостоятельной работы
Напишите программу, вычисляющую стоимость основных производственных фондов на конец периода (Фк), по формуле:
Фк = Фн + Фвв – Фвыб,
где Фн − стоимость основных фондов на начало периода;
Фвв − стоимость основных фондов, введенных за данный период;
Фвыб − стоимость основных фондов, выбывших за данный период.
Вопросы к защите лабораторной работы
1. Цель данной лабораторной работы.
16
Лабораторная работа №3
МАТЕМАТИЧЕСКИЕ ПРИМЕРЫ
Цель работы: ознакомиться с некоторыми математическими
операторами.
1. Математические функции
Microsoft Visual Basic 2010 обладает набором специальных функций, которые предназначены для расчета соответствующих математических выражений. Форматы этих функций отличаются друг от друга
лишь названием самого оператора и требованиями к поступающим
аргументам. Поэтому все функции представим в виде таблицы. При
работе с ней нужно учитывать, что обязательный аргумент “м.в.” –
это математическое выражение, которым может быть число, переменная или математическая формула, содержащая числа, переменные и
даже другие математические функции.
Таблица 3.1
Математические функции языка Visual Basic 2010
Функция
Описание
1
2
Math.Abs
(м.в.)
Модуль математического выражения.
Math.Exp
(м.в.)
Основание натурального логарифма в степени заданного
аргумента (еx). Например, e5 запишется как Math.Exp(5).
Math.Log
(м.в.)
Натуральный логарифм (ln) математического выражения.
Аргумент должен быть больше нуля.
Квадратный корень математического выражения. Значение выражения должно быть больше либо равно нулю. Для
расчета корня другой степени выражение следует преобразовывать к степенному виду, а затем программировать как
возведение в степень, например:
Math.Sqrt
(м.в.)
1
y
Math.Tan
(м.в.)
3
x  y  x 3  y  x^ (1 / 3)
Тангенс математического выражения. Значение выражения рассматривается как угол в радианах. Преобразование
градусов в радианы нужно проводить внутри скобок или
сразу подставлять преобразованным.
17
Окончание табл. 3.1
1
2
Math.Cos
(м.в.)
Косинус математического выражения. Значение выражения рассматривается как угол в радианах.
Math.Sin (м.в.)
Синус математического выражения. Значение выражения
рассматривается как угол в радианах
Math.Sign
(м.в.)
Возвращает знак математического выражения:
Если м.в. < 0, то Math.Sign = 1,
Если м.в.= 0, тоMath.Sign = 0,
Если м.в. > 0, то Math.Sign = 1
X Mod Y
Вычисляет остаток от деления первого математического
выражения (X) на второе (Y). Перед делением значение
каждого выражения округляется до целых по правилам математики. Если X = Y, то результат будет равен нулю. Если
X<Y, результатом будет сам X. Если второе выражение
равно 1, то результатом будет ноль. Знак результата равен
знаку первого математического выражения (X). Например:
Z = 17.4 Mod 2.6 Остаток: 2
X\Y
Вычисляет результатцелочисленного деления первого математического выражения (X) на второе (Y). Перед вычислением значение каждого выражения округляется до целых
по правилам математики. Например:
Y = 17.4 \ 2.6 Результат: 5 (17 \ 3 = 5)
Math.Atan
(м.в.)
Арктангенс. Значение математического выражения рассматривается как угол, тангенс которого равен этому выражению.
Таблица математических констант языка Visual Basic 2010
Оператор
Константа
1
2
Math.PI
Число 𝜋 (возвращает 3,14159265358979)
Math.E
Основание
натурального
2,7182818284590)
логарифма
(возвращает
Результат вычисления, проведенного функцией, можно присвоить
переменной, использовать как часть общей формулы или аргумент
оператора.
18
Пример 3.1
Использование математических функций:
PrivateSubcmdCalc_Click(ByValsenderAsSystem.Object, _
ByValeAsSystem.EventArgs) HandlescmdCalc.Click
Dim y As Double = Math.Cos(2 * Math.PI)
'Выводится: 1
txtY.Text = y
Dim z As Double = Math.Tan(3 * Math.PI / 4) - Math.Sin(Math.PI / 2)
'Выводится: -2
txtZ.Text = z
'Выводится: 3
txtSQRT.Text = Math.Sqrt(9)
'Выводится: 4
txtABS.Text = Math.Sqrt(Math.Abs(-16))
End Sub
С помощью приведенных базовых команд можно вводить в программу довольно сложные выражения и функции, которые не имеют
встроенных в язык аналогов.
2. Особенности работы
с тригонометрическими функциями
Аргументы тригонометрических функций задают угол в радианах, поэтому для получения корректного результата привычные градусы нужно переводить в радианы. Если этого не сделать, то машина
не выдаст сообщения об ошибке, а просто будет вычислять неправильно. В частности, если записать y=sin(90o) как y=Math.Sin(90), то
компьютер будет считать, что необходимо рассчитать синус 90 радиан
и вместо 1 выдаст 0,8939. Это логическая ошибка, а ошибки такого
рода сам компьютер не находит.
Соотношение между градусами и радианами выражается формулой
Рад 

 Град ,
180
19
из которой следует, что для перевода градусов в радианы их следует
умножить на /180.
Для того чтобы осуществить обратный перевод – из радиан в градусы – нужно градусы умножить на число 57,2958. Например, переведем 90о в радианы, а затем радианы в градусы:
в радианы:

,
90  1.570796
,
180
в градусы
,
,
,
1.570796  57.2958  90.00001.
Небольшая неточность при переводе в градусы обусловлена системой округления выводимых результатов.
В VB 2010 всего четыре тригонометрических функции. Другие
стандартные тригонометрические функции вычисляются на их основе
по формулам, приведенным в табл. 3.2.
Таблица 3.2
Некоторые стандартные тригонометрические функции
‘Тригонометрические функции
Sec = 1 / Math.Cos(X)
Cosec = 1 / Math.Sin(X)
Cotan = 1 / Math.Tan(X)
Arcsin = Math.Atan(X / Math.Sqrt(-X * X + 1))
Arccos = Math.Atan(-X / Math.Sqrt(-X * X + 1)) + 2 * Math.Atan(1)
Arccotan = 1.570796 – Math.Atan(X)
‘Гиперболическиефункции.
HSin = (Math.Exp(X) – Math.Exp(-X)) / 2
HCos = (Math.Exp(X) + Math.Exp(-X)) / 2
HTan = (Math.Exp(X) – Math.Exp(-X)) / (Math.Exp(X) + Math.Exp(-X))
HSec = 2 / (Math.Exp(X) + Math.Exp(-X))
HCosec = 2 / (Math.Exp(X) – Math.Exp(-X))
HCotan = (Math.Exp(X) + Math.Exp(-X)) / (Math.Exp(X) – Math.Exp(-X))
HArcsin = Math.Log(X + Math.Sqrt(X * X + 1))
HArctan = Math.Log((1 + X) / (1 – X)) / 2
Harcsec = Math.Log((Math.Sqrt(-X * X + 1) + 1) / X)
20
Пример 3.2
Составить программу расчета гиперболического синуса угла X.
‘Вводим градусы
Dim X As Double = Val(txtArgument.Text)
Dim kAs Double = Math.PI / 180
'Переводим градусы в радианы
X = k*X
Dim HSin As Double = (Math.Exp(X) –Math.Exp(-X)) / 2
txtRes.Text = "HSin = " &HSin
Результат при Х = 9:
HSin = 0,157726394171594
При работе с функциями таблицы важно четко понимать их
назначение и область определения, потому что они предназначены не
для любых Х.
3. Особенности работы с логарифмическими функциями
Название функции Math.Log нередко приводит к путанице. Например, выражение lg(x) вводят как Log(x). Это неправильно. Данная функция предназначена для расчета только натурального логарифма – ln.
В студенческой практике помимо натуральных (ln) приходится
иметь дело с десятичными (lg) и логарифмами по основанию n (logn).
Их можно выразить через функцию Log.
Выражение
В программе
Y = Ln(x)
Y = Math.Log(x)
Y = Lg(x)
Y = Math.Log(x) / Math.Log(10)
Y = Logn(x)
Y = Math.Log(x) / Math.Log(n)
Пример 3.3
Составить программу расчета Ln(x), Lg(x) и Logn(x)
'Ввод исходных данных
Dim x As Double = Val(txtArgument.Text)
21
Dim n As Double = Val(txtOsnovanie.Text)
'Расчет
Dim Y1As Double = Math.Log(x)
Dim Y2 As Double = Math.Log(x) / Math.Log(10)
Dim Y3 As Double = Math.Log(x) / Math.Log(n)
'Вывод результата на экран
txtRes1.Text = "Ln = " &Y1
txtRes2.Text = "Lg = " &Y2
txtRes3.Text = "Log"&n& " = "&Y3
Результат при х = 5 и n = 2:
Ln = 1,6094379124341
Lg = 0,698970004336019
Log2 = 2,32192809488736
Русский текст за апострофом “ ' ” (кнопка “э” в английском режиме клавиатуры) является комментарием к размещенному за ним
логическому блоку программы. Все знаки данной строки, расположенные за апострофом компьютер считает комментарием, а не кодом
программы и поэтому не выполняет. Использование комментариев
является неотъемлемой частью хорошего стиля программирования.
4. Задание на лабораторную работу
В данной лабораторной работе необходимо составить программу,
вычисляющую два математических примера. Примеры приведены в
вариантах. Программа должна содержать ввод исходных данных, расчет формул и вывод результатов на экран.
Рекомендуемый внешний вид формы приведен на рис. 3.1.
Рис. 3.1. Внешний вид приложения
22
Таблица свойств элементов
Элемент
Окно
Этикетка
Окно
Этикетка
Окно
Этикетка
Окно
Этикетка
Окно
Этикетка
Кнопка
Свойство
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Значение
txtArg1
lblArg1
Аргумент 1
txtArg2
lblArg2
Аргумент 2
txtArg3
lblArg3
Аргумент 3
txtResult1
lblResult1
Результат 1
txtResult2
lblResult2
Результат 2
cmdCalculate
Рассчитать
5. Варианты для выполнения лабораторной работы № 3
Вариант
1
1
2
Функция
2
a
2cos(x  / 6)
1/ 2  sin 2 y
, b 1
z2
3 z 2 / 5
.
y  z / x  y 
.
b  x y x 3 y x , c   y  x 
1  y  x 2
23
Окончание табл.
1
3
2
y a
bt

w  x 2  b  b 2 sin 3 x  a / x,
4

2
tgat b  bt  a , s  bsin at cos2t 1.
y  cos2 x3 
x
a b2
2
5
bx2  a
s  x3 arctg2 x b2  a / x b , Q  ax .
b 1
6
bx 2  3 a
.
s  x3tg 2 x b2  a / x b , Q  ax
b  axb
7
R  x 2 x 1/ b sin 2 x  a , s  xb/ a  cos2 x b3.
8
9
y
a 2 x b x cos(a b) x
, R  x 2 b b2 sin 3 x  a / x.
x 1
y
p 2 x b x cos( p b)sin x
, R  x 2  b b 2 tgx  p 4 .
x 1
bx2  a
a 2 x b x cos(a b) x
, Q  ax .
x 1
b 1
2cos(x   / 6)
y  z / x  y 
a
, c   y  x
.
y  sin 2 y
1   y  x 2
y
10
11
z
x  y a
w
3
a b c 
o
, w  3 x  y 5 a 
3
sin 2 a  sin 2 b
ab 1
n  a ab 
14
15
1 3 x y  x y  2
3
12
13
.
tg x 2  tg 2 x
arctg y 2  arctg 2 y
ec
, w13 
sin x
sin 2 y
.
sin 2 cosa 3
e ab  c ab
.
a b  c
a c 5

ac b
c 5 7 b
, m
.
a b
sin a  tgb
,
24


x y

p  sin
3
3
 z  cos x  tg y  200
100




.


Лабораторная работа №4
ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ
РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ
Цель работы: изучить формат № 1 оператора If.
1. Конструкция If … Then
В жизни часто приходится действовать исходя из выполнения или
невыполнения условий. Например:
ЕСЛИ идет дождь, ТО нужно взять зонт, ИНАЧЕ зонт не
брать
В английском языке слово “если” записывается как “If”, предлог
“то” как “Then”, а слово “иначе” – “Else”. Подставим эти слова в
предложение из предыдущего примера,
If идет дождь Then взять зонт Else зонт не брать
В такую конструкцию можно поместить различные условия и соответствующие им варианты действий. Если условие выполняется, то
следует выполнить действия, стоящие за словом Then, если не выполняется – действия, расположенные за словом Else. По данной схеме
работает оператор If.
Оператор имеет различные варианты записи в тексте программы.
Каждый вариант называется форматом. Существует три основных
формата записи If. Простейший из них, формат №1, имеет следующий
вид:
IfусловиеThenдействие_1
действие _2
2. Работа формата № 1
Если условие выполняется, то машина сначала производит действие_1, затем действие_2. Если условие не выполняется, то машина
производит только действие_2. Блок схема изображена на рис. 4.1.
25
Условием во всех форматах
If является выражение со знаком
сравнения. Оно может иметь
только два значения: True (истина) и False (ложь). Если условие выполняется, то его значением является True, если не выполняется False.
Рис. 4.1. Блок-схема формата №1
оператора If
Например, выполнение строки
txtResult.Text = 5 < 6
приведет к выводу в текстовое окно слова True.
В условиях можно использовать следующие знаки сравнения:
>  больше
<  меньше
>= больше либо равно
<=  меньше либо равно
<> не равно
Например, A>B или D<= 3.
Справа и слева от знака сравнения могут находиться не только
цифры и переменные, но и целые математические выражения. В частности:
(Math.Sqrt(A + 5) + A ^ 2) >= Math.Abs(Math.Sin(2 * Math.Pi))
Условие может задаваться довольно сложным образом и состоять
из нескольких блоков. Для ввода таких выражений используются специальные операторы – And, Or, Notи другие.
Рассмотрим код простейшей программы.
Пример 4.1
Ввести число Х, если оно меньше нуля, то умножить его на (–1) и
вывести на экран.
Решение.
Алгоритм решения в виде блок-схемы имеет вид, показанный на
рис. 4.2.
26
Описание блок-схемы:
1 – начало расчета,
2 – ввод Х,
3 – проверка условия,
4 – умножение Х на (–1) в
случае, если условие выполняется,
5 – вывод Х на экран,
6 – завершение расчета.
Запишем алгоритм, изображенный на блок-схеме, в виде
компьютерной программы.
Рис. 4.2. Блок-схема к примеру 3.1
Dim X As Double = Val(txtX.Text)
'Вводим Х
If X < 0 Then X = X  (-1) 'Если
Х<0, то умножаем его на (-1)
txtResult.Text = X
'Выводим Х на экран
Результат при Х = –2: 2
Работа программы
После ввода Х оператор If анализирует его значение. Если Х окажется отрицательным, то программа произведет действие X = X  (-1),
затем txtResult.Text = X. Если Х = 0 или Х > 0, то будет выполнено
только действие_2 – txtResult.Text = X.
Особенностью формата №1 оператора If … Then является то, что
действие_2 выполняется всегда, независимо от результата анализа
условия. На этом основано действие алгоритмов, включающих последовательное использование оператора If.
Пример 4.2
Составить блок-схему и программу расчета Y в зависимости от
значения введенного Х:
X 2  X  1 ,

Y  10  cos X ,

2
 X  2   X  X ,


27
при X  0,
при X  0,
при X  0.
Решение.
Алгоритм программы записан в виде блок-схемы, показанной на
рис. 4.3:
Описание блок-схемы:
1 – начало работы программы;
2 – ввод Х;
3 – проверка условия X<0.
Если условие выполняется,
то происходит расчет выражения в блоке 4 с последующим
переходом в блок 5. Если условие не выполняется, то управление сразу переходит к блоку
5. В блоке 5 осуществляется
проверка условия X = 0. В случае выполнения условия происходит расчет формулы в блоке 6
и переход к блоку 7. Если условие не выполняется, то управление сразу переходит к блоку
Рис. 4.3. Блок-схема к примеру 4.2
7. В блоке 7 рассматривается
условие X > 0. В случае его выполнения рассчитываем выражение в блоке 8 и выводим результат на
экран (блок 9). Если условие в блоке 7 не выполняется, то сразу выводится на экран значение Y;
10 – завершение работы программы.
Запишем алгоритм, изображенный на блок-схеме, в виде компьютерной программы.
Dim X As Double = Val(txtX.Text)
Dim Y As Double
If X < 0 Then Y = X ^ 2 + Abs(X + 1)
‘Условие №1
If X = 0 Then Y = 10 + Cos(X)
‘Условие №2
If X > 0 Then Y = (X + 2)  (X + X ^ 2)
‘Условие №3
txtResult.Text = "Y = " &Y
‘Выводим результат на экран
На начальных этапах знакомства с оператором If распространено ошибочное представление о том, что при последовательном использовании конструкций If … Then управление, после выполнения
28
операторов за Then, сразу передается оператору, стоящему за последним If. Это неверно. В конструкциях If … Then оператор действия_2
выполняется всегда, даже если в качестве него стоит другая конструкция If.
3. Задание на лабораторную работу
В ходе данной лабораторной работы нужно составить программу,
которая рассчитывает один из примеров в зависимости от условия (см.
пример 3.2).
Программа должна предусматривать ввод трех значений, анализ
условий, расчет соответствующего примера и вывод результата на
экран. Рекомендуемый внешний вид формы представлен на рис. 4.4.
Рис. 4.4. Внешний вид приложения
Элементы формы описаны в приведенной ниже таблице свойств.
Элемент
1
Форма
Окно
Этикетка
Окно
Этикетка
Окно
Этикетка
Свойство
2
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Значение
3
Лабораторная работа №4
txtArg1
lblArg1
Аргумент 1
txtArg2
lblArg2
Аргумент 2
txtArg3
lblArg3
Аргумент 3
29
Окончание табл.
1
Окно
Этикетка
Кнопка
Кнопка
2
3
Name
Text
Name
Text
Name
Text
Name
Text
txtResult
lblResult
Результат
cmdCalculate
Рассчитать
cmdExit
Выход
4. Варианты для выполнения лабораторной работы № 4
Вариант
Функция
Условие
1
2
3
x 1.3
1
10 x 2  7 / x 2 ,

y   ax 2  7 x ,
 ln x  7 x .

2
 ax 2  bx  c,

y   a / x  x 2  1,

2
a  bx/ x 1.
3
4
5


x 1.3
x 1.3
x 1.2
x 1.2
x 1.2
1.5cos2 x  a 3 ,


y   x  22  6a,
 3tg x  3 a .


x 1
 x3 x  a  cos x,

y   xsin ax  5,
 e ax cosax.

x 1
 bx  ln bx,

y 
1,
 x3 x  a  cos x.

bx 1
30
x 1
x 1
x 1
x 1
bx 1
bx 1
Продолжение табл.
1
2
6
 ln 3 x  x 2 / x 2  t ,

y
x  t 1/ x,
 cos x  t sin 2 x.


7
3


a b
,
 x
 e  cos x
y  a  b / x 1,
 e x  sin x
.

 100  x
8

 a  bi 2  c,
i

y   i  2  c3 ,
 aei  bi3

.
 a b

9

 i 2 1 
,
a sin
 n 



y
 cos i  1 .



 n

10
a
2
 i  bi  c,

y   i  sin 2 i,
 aei  tgbi.


11

at 2  bsin t 1,

y 
at  b,

2
 at  bcost  a  b .
31
x  0 .5
x  0 .5
x  0 .5
x  2 .8
x  2 .8
x  2 .8
i4
i4
i4
i 2 1
0
n
i 2 1
sin
0
n
sin
i 5
i 5
i 5
t 5
t 5
t 5
Окончание табл.
1
2
3
12

 bx  ln bx,

x 10
y 
,
2
 x  a b
3
 x  a  5 sin x .
x  20
x  20
x  20
13
e x2  sin a x b ,


y   a  b  20 x ,

tg x  arctg cos2 b.

a b0
a b0
a b0
14
2

2

a
 a 2  b a b    x e  b 3 a  ,



y  

2
3
 sin x  cos a  tgb .

a b
1
x
a b
1
x

15

ln x  e x ,


y  lg x  a  b,

x

log a b .
(Возможность х0 не учитывать)
x  a 10
x  a 10
x  a 10
Контрольные вопросы
1. Приведите формат № 1 оператора If и опишите его работу.
2. Приведите блок-схему работы формата № 1 оператора If.
3. Что является условием во всех форматах оператора If?
4. Какие знаки сравнения можно использовать при записи условий в операторе If.
5. Составить программу решения задачи аналогичной задачи из
примера 4.1 (условие дает преподаватель).
6. Составить программу решения одного из вариантов на данную
лабораторную работу.
32
Лабораторная работа №5
ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ
РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ
Цель работы: ознакомиться с форматами № 2 и № 3 оператора If.
1. Формат №2 оператора If
Недостаток конструкции If … Then состоит том, что машина всегда выполняет действие_2. В некоторых алгоритмах приходится
предпринимать специальные меры для того, чтобы исключить это
действие.
Формат №2 If … Then … Else позволяет выполнить или первое
или второе действие в зависимости от условия. Его формат имеет вид:
Ifусловие Thenдействие_1Elseдействие_2
действие_3
Работа конструкции
Если условие выполняется, то машина производит действие_1, затем действие_3. Если условие не выполняется, то машина производит
действие_2, а затем действие_3.
Блок-схема форматаIf … Then … Else … приведена на рис. 5.1.
Рис. 5.1. Блок схема конструкции If … Then … Else…
Таким образом, проблема второго действия устраняется самим
форматом оператора.
33
Пример 5.1
Ввести Х. Если его значение четное или равно 0, то прибавить 2,
если – нечетное, то прибавить 1:
Dim X As Double = Val(txtX.Text)
IfX / 2 = X \ 2 ThenX = X + 2 ElseX = X + 1
txtResult.Text = “X = “ &X
Результат при Х=6:Х = 8
Работа программы
В примере действие_1 – это выражение X = X + 2, а действие_2 –
выражение X = X + 1. Они не могут выполняться последовательно,
так как данный формат оператора If не позволяет этому произойти.
Может быть сделано или действие_1, при выполнении условия, или
действие_2, если условие не выполняется.
Рассмотрим стандартный пример вычисления двух формул с выводом результата.
Пример 5.2
Вычислить Y = X2 при X<= 10 и
Y X
при X> 10
Dim X As Double = Val(txtX.Text)
IfX<= 10 ThenY = X ^ 2 ElseY = Math.Sqrt(X)
txtResult.Text = “Y = “ &Y
Конструкция If … Then … Else идеально подходит для такого
рода задач. Хотя, следует отметить, что при необходимости записи
математического примера, в котором много элементов, нужно учитывать ограничения VB. Поэтому, чтобы разместить большие формулы,
можно использовать конструкцию If … Then … Else … EndIf (формат If№3) или вычислить оба примера до конструкции и вывести
только нужный результат. В частности, приведенную выше программу можно записать так:
DimXAsDouble = Val(txtX.Text)
Y1 = X ^ 2
Y2 = Math.Sqrt(X)
If X<10 Then txtResult.Text = Y1 Else txtResult.Text = Y2
34
2. Формат № 3 оператора IF
Данный формат – это многоэтажный аналог конструкции IF …
THEN … ELSE … Логика работы этих форматов полностью совпадает. Единственным отличием является возможность размещать в многоэтажном варианте больше операторов, чем в однострочном.
Формат №3 оператораIF
IfусловиеThen
операторы_1
Else
операторы_2
EndIf
действие_3
Работа конструкции
Если условие дает значение “Истина”, то машина выполняет операторы_1, в противном случае – операторы_2. После выполнения
той или иной группы операторов управление передается первому оператору, расположенному за EndIf – действию_3. Операторы If, Else и
EndIf должны быть первыми элементами в своих строках.
Блок-схема конструкции представлена на рис. 5.2.
Рис. 5.2. Блок-схема конструкции
If … Then … Else … EndIf
Пример 5.3
Ввести А и В. Если они имеют одинаковый знак (оба положительны или оба отрицательны), то рассчитать и вывести большее из них,
иначе – рассчитать и вывести меньшее
35
Dim A As Double = Val(txtA.Text)
Dim B As Double = Val(txtB.Text)
Dim maxAB As Double
Dim minAB as Double
If A B > 0 Then
maxAB = (A + B + Math.Abs(A - B)) / 2
txtResult.Text = "Максимум = "&maxAB
Else
minAB = (A + B –Math.Abs(A - B)) / 2
txtResult.Text = ""Минимум = "& minAB
EndIf
Работа программы
Соответствие знаков A и B проверяется условием A B > 0.
Если две переменные имеют одинаковые знаки, то их произведение
может быть только положительным числом. Если условие выполняется, то машина определяет максимум и выводит его на экран.
В противном случае на экран выводится минимум. После
отработки любой из групп операторов управление переходит к действию_3, т. е. первому оператору, идущему за End If. В примере это
оператор End.
В программе использованы короткие и остроумные формулы расчета максимума и минимума двух переменных:
maxAB = (A + B + Abs(A - B)) / 2
minAB = (A + B - Abs(A - B)) / 2
Эти формулы очень удобны в тех случаях, когда для сравнения
переменных нельзя использовать оператор If. В частности, при
оформлении алгоритма выбора максимума или минимума в виде
функции пользователя.
В конструкцию If … Then … Else … End If можно вкладывать
любые из рассмотренных ранее форматов, включая ее саму. Однострочные вложенные конструкции не затрудняют чтение и понимание
всего программного блока, чего нельзя сказать о “многоэтажных“
элементах. Когда их много и программа напоминает Нью-Йоркский
небоскреб, разобраться в сути алгоритма бывает непросто.
36
3. Задание на лабораторную работу
В данной лабораторной работе нужно решить задачу двумя методами – используя второй и третий форматы оператора If. Решение
должно быть аналогично программе из примера 5.4.
Пример 5.4
Ввести Х, рассчитать квадратный корень из него, вывести результат на экран. Если Х меньше нуля, то умножить его на (-1).
Вариант 1
DimXAsDouble = Val(txtA.Text)
Dim Y As Double
If X < 0 Then X = X * (-1): Y = Math.Sqrt(X) Else Y = Math.Sqrt(X)
txtResult.Text = Y
Вариант 2
Dim X As Double = Val(txtA.Text)
Dim Y As Double
If X < 0 Then
X = X * (-1)
Y = Math.Sqrt(X)
txtResult.Text = Y
Else
Y = Math.Sqrt(X)
txtResult.Text = Y
End If
В программе каждый вариант нужно размещать в отдельной
кнопке. Рекомендуемый внешний вид формы приведен на рис. 5.3.
Рис. 5.3. Внешний вид приложения
Свойства элементов приведены в следующей таблице
37
Элемент
Форма
Окно
Этикетка
Окно
Этикетка
Окно
Этикетка
Кнопка
Кнопка
Свойство
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Значение
Лабораторная работа №5
txtArg
lblArg
Аргумент
txtRes1
lblRes1
Результат 1
txtRes2
lblRes2
Результат 2
cmdCalculate1
Вариант 1
cmdCalculate2
Вариант 2
4. Варианты для выполнения лабораторной работы № 5
Спрограммировать задачу с помощью форматов № 2 и № 3 оператора If.
Вариант
Функция
1
2
1
sin 2 x 3 , при x 10,
y
3 x  5 , при x 10 .
2
 x 10 , при x  0,

y 
2

ln x , при x  0.
3
tg x  arctg x, при x  0,
y
ln x  lg x, при x  0.
4

 x x2 , при x  0,
y 

ln x  lg x, при x  0.
38
Окончание табл.
1
2
5
3
3

cos x / sin x , при x 100 ,
y
x

 x  x , при x 100 .
6
sin x cosx , при x  0,
y 
ln x  lg x, при x  0.
7

x
 x  5 , при x  0,
y
log 5 x, при x  0.

8
 x  5, при x  5,
y 
 x  5, при x  5.
9
 x  3 , при x  0,
y
ln x 2  lg x 3  log 4 x 5 , при x  0.
10
e x , при x  0,

y 
x

 x 1, при x  0.
11
e x10 , при x  0,
y
ln x 2  lg x 3  log 4 x 5 , при x  0.
12

10  sin cosx x, при x 10,
y 

tg x  arctg x, при x 10 .
13
e x , при x  0,
y
ln x 2  lg x 3  log 4 x 5 , при x  0.
14

1/ 5
 x  x , при x  0,
y
log 3 x, при x  0.

15
 x3
 x , при x,
y 
2
3
5

ln x  lg x  log 4 x , при x  0.
39
Контрольные вопросы
1. Приведите формат № 2 оператора If и опишите его работу.
2. Изобразите блок-схему формата № 2 оператора If.
3. Составьте программу решения задачи, аналогичной примеру
5.1 (задание формулирует преподаватель).
4. Приведите формат № 3 оператора If и опишите его работу.
5. Изобразите блок-схему формата № 3 оператора If.
6. Составьте программу решения задачи, аналогичной примеру
5.3 (задание формулирует преподаватель).
7. Приведите формулы расчета большего и меньшего из двух чисел.
8. Решить один из вариантов данной лабораторной работы.
40
Лабораторная работа №6
ЭЛЕМЕНТ УПРАВЛЕНИЯ ComboBox
Цель работы: ознакомиться с назначением элемента управления
ComboBox и методами его использования в программах.
1. Общие положения
Элемент управления ComboBox совмещает в себе функции текстового окна и ниспадающего списка (рис. 6.1). Этот элемент используется для автоматизации ввода данных, путем выбора их из раскрывающегося списка.
Для того чтобы развернуть список ComboBox, нужно щелкнуть
мышкой по кнопке со стрелкой, расположенной в правой части объекта (см. рис. 6.1). Выбор элемента списка осуществляется также щелчком мышки.
При работе с ComboBox всегда приходится решать три основные
задачи:
1. Заполнение ComboBox элементами списка.
2. Вывод первого элемента при загрузке.
3. Реакция программы на выбор элемента.
Каждая задача решается с применением определенных операторов и алгоритмов.
Наиболее важными свойствами ComboBox можно назвать Name
и Sorted. Name (Имя) должно начинаться с букв cbo. Sorted – свойство, которое включает (Sorted=True) или отключает (Sorted=False)
сортировку списка по алфавиту или от меньших чисел к большим. По
умолчанию сортировка отключена.
2. Заполнение ComboBox элементами списка
Список объекта ComboBox заполняется в программе с помощью
метода Items.Add. Метод используется по следующему формату:
ComboBox.Items.Add("Текст")
41
В место текста в кавычках может быть любая текстовая переменная, выражение с текстовым результатом или элемент текстового массива. Рекомендуется заполнять ComboBox в процедуре Form_Load.
Пример 6.1
В элемент ComboBox, который называется cboName ввести
имена “Алан” и “Иван”.
Private Sub Form_Load()
cboName.Items.Add("Алан")
cboName.Items.Add("Иван")
End Sub
В ComboBox можно вводить элементы и в таблице свойств Properties с помощью свойства Items, но это менее удобно, чем Items.Add
и не всегда возможно, исходя из условий решаемой задачи.
3. Вывод первого элемента при запуске
По умолчанию при загрузке формы в видимую часть ComboBox
ничего не выводится. Если запустить программу из примера 6.1, то на
форме будет пустой ComboBox. Только после того, как пользователь
выберет элемент списка, в видимой части элемента управления появится текст. Это не удобно. В большинстве программ после загрузки
формы в видимую часть ComboBox бывает выведен первый элемент
списка. Для этого нужно присвоить свойству SelectedIndex значение
0. Это свойство хранит номер элемента, выведенного в окно ComboBox.
Пример 6.2
Вывести в окно cboName первый элемент списка:
cboName.SelectedIndex = 0
Свойству присваивается цифра 0 потому, что нумерация элементов списка начинается с 0, а не с 1.
Если в поле ComboBox необходимо вывести нейтральный текст,
то можно использовать свойство Text. Например:
ComboBox.Text = "Это список имен"
42
В этом случае после загрузки программу в видимой части ComboBox будет расположена надпись, комментирующая содержание его
списка.
4. Реакция программы на выбор элемента
Выбор элемента или щелчок мышкой по элементу раскрытого
списка – это событие SelectedIndexChanged. Следовательно, программировать реакцию программы, то есть, то что должно произойти
при
выборе
элемента
нужно
в
процедуре
ComboBox_SelectedIndexChanged.Если дважды щелкнуть по элементу
ComboBox на форме, то автоматически будет загружен редактор кода
и заготовка процедуры SelectedIndexChanged.
Private Sub cboName_SelectedIndexChanged ()
End Sub
Программирование реакции программы основано на том, что после выбора элемента списка, он попадает в свойство Text элемента
ComboBox. Анализируя содержимое этого свойства, программа может определить какой элемент выбран и что нужно делать.
Пример 6.3
При выборе имени из списка вывести на экран соответствующий
ему телефонный номер.
Private Sub ComboBox_SelectedIndexChanged(ByVal sender _
As System.Object, ByVal e As System.EventArgs) Handles _
ComboBox.SelectedIndexChanged
If cboName.Text = "Алан” Then
txtPhone.Text = "75-86-11"
ElseIf cboName.Text = “Иван”
txtPhone.Text = "75-86-22"
End If
End Sub
5. Задание на лабораторную работу
Необходимо составить программу, в которой содержится два независимых ComboBox и два текстовых окна. При выборе элемента
43
списка в текстовом окне должна появляться соответствующая этому
элементу информация.
Рекомендуемый внешний вид формы показан на рис. 6.1:
Рис. 6.1. Внешний вид приложения
В каждом списке должно быть не менее пяти элементов. Списки,
согласно заданной тематике, студент заполняет самостоятельно. Для
удобства чтения размер шрифта (свойство Font) в ComboBox, TextBox и Label можно поставить равным 14. Списки должны автоматически сортироваться по алфавиту.
Формирование списков должно проходить в процедуре
Form_Load (примеры 6.1. и 6.2), вывод соответствующего текста на
экран в процедуре ComboBox_SelectedIndexChanged (пример 6.3).
6. Варианты на лабораторную работу № 6
Вариант
1
1
2
3
4
5
6
Составить программу, связывающую:
2
страны – столицы и страны – континенты.
друзья – их телефоны и организации – их телефоны.
название книги – автор и название песни – исполнитель.
название фильма – режиссер и название фильма – имя главного
героя.
имя спортсмена – вид спорта и имя певца – страна.
марка автомобиля – страна производитель и страна – президент.
44
Окончание табл.
7
8
9
10
11
12
13
14
15
2
историческое событие – дата и историческая личность – страна.
первая строка стихотворения – автор и имя поэта – страна проживания.
имя отчество известного человека – фамилия этого человека и фамилия известного человека – его профессия.
вид спорта – известный в этом виде спортсмен и наука – известный ученый.
английское слово – перевод и осетинское слово – перевод на русский.
русское слово – осетинский перевод и русское слово – английский
перевод.
город – страна и река – страна.
достопримечательность – страна нахождения и достопримечательность – город нахождения.
факультет ГМИ – корпус, в котором он находится и здание в г.
Владикавказ – улица, на которой оно находится.
Контрольные вопросы
1. Для чего используется элемент управления ComboBox?
2. Как раскрыть список ComboBox и выбрать один из его элементов?
3. С помощью какого метода заполняется список ComboBox?
Приведите пример.
4. Как организовать автоматический вывод первого элемента
списка в видимую часть ComboBox при загрузке программы. Приведите пример.
5. В каком событии нужно размещать алгоритм реакции программы на выбор элемента списка ComboBox?
6. Приведите пример алгоритма реакции программы на выбор
элемента списка ComboBox.
45
Лабораторная работа №7
ОПЕРАТОР SelectCase
Цель работы: ознакомиться с использованием оператора SelectCase в алгоритмах разветвляющейся структуры.
Инструментарий программиста не исчерпывается одним, пусть
даже очень мощным оператором условной передачи управления. Помимо If широко распространена конструкция SelectCase. Они близки
по логике работы, взаимозаменяемы при решении большинства задач,
но бывают ситуации, в которых одна все же предпочтительнее другой.
Различие этих конструкций обусловлено их форматами. Формат If подробно изложен выше, рассмотрим формат конструкции SelectCase.
1. Формат конструкции SelectCase
Формат SelectCase не отличается таким многообразием возможных конструкций, как формат If. Он сразу представляется многоэтажной формой, которая может содержать вложенные блоки. Формат
оператора имеет следующий вид:
SelectCase выражение
Caseусловное_выражение_1
Блок_операторов_1
Caseусловное_выражение_2
Блок_операторов_2
…
[CaseElse
Блок_операторов_ELSE]
EndSelect
Работа оператора
Конструкция сначала рассчитывает выражение (в качестве выражения может быть число, переменная, математическое выражение или
функция) и в зависимости от его значения выполняет тот или иной
блок операторов. Интересующие значения выражения отслеживаются
с помощью условий, записанных за служебными словами Case. Если
значение соответствует условию, то программа выполняет блок опе46
раторов данного Case и передает управление за пределы конструкции
– первому оператору за EndSelect. В том случае, если значение выражения не удовлетворяет ни одному из условий во всех Case, программа выполняет блок операторов, расположенных за CaseElse.
Служебные слова CaseElse и операторы за ними использовать не
обязательно, поэтому они записаны в квадратных скобках.
Блок-схема конструкции SelectCase изображена на рис. 7.1.
Рис. 7.1. Блок-схема конструкции SelectCase
Рассматриваемая конструкция имеет ряд тонкостей:
1. Если в нескольких Case повторяются одни и те же условия, то
машина выполнит блок операторов только за первым из таких Case.
2. Case-условие – это действие, поэтому операторы данного
Case должны записываться со следующей строки или в этой же строке, но через знак “:”. Машина выполняет все операторы от Case, в
котором сработало условие до следующего Case, или до EndSelect,
если это был последний Case.
3. Между SelectCase и первым Case нельзя размещать ничего,
кроме текстовых комментариев, иначе машина выведет сообщение об
ошибке.
47
Условные выражения за Case могут быть записаны в одном из
четырех форматов:
1. Число. Например, Case 5.
2. Диапазон от меньшего значения к большему. Например, Case
10 To 20. Если диапазон будет записан от большего значения к меньшему, то машина не выдаст сообщения о неправильной записи, но будет проверять только первое значение. Ошибки такого рода могут
возникнуть при записи диапазонов в отрицательной области.
3. Условие. Поддерживаются 6 знаков сравнения. Логические
операторы напрямую по отношению к отслеживаемому параметру использовать нельзя. В записи условия название параметра обязательно
нужно заменять словом “Is”. Например, условие X>10 должно быть
записано как CaseIS> 10. Причем Is ставится всегда слева от знака
сравнения.
4. Сочетание форматов 1 – 3, разделенных запятыми. Например,
Case 5, 15, 20 To 30, IS> 100. Программа отработает операторы,
соответствующие Case, если выполнится как минимум одно условие
из сочетания.
Рассмотрим пример использования оператора.
Пример 7.1
Рассчитать значение y в зависимости от значения х:
10,

 20,
y   30,

 40,

 50,
при х  2,
при х  5, 7,
при х 10  20,
при х 100 ,
при всех другихзначениях .
Dim x As Double = Val(txtX.Text)
Dim y As Double
Select Case x
Case 2
y = 10
Case 5, 7
y = 20
Case 10 To 20
y = 30
48
Case Is > 100
y = 40
Case Else
y = 50
End Select
txtResult.Text = y
Работа программы
Конструкция SelectCase отслеживает значение переменной х.
Если ее значение удовлетворяет какому-либо условию за одним из
Case, то выполняется действие за этим оператором. В частности, при
х=5, сработает второй Caseи переменной y будет присвоено число 20.
Если значение х будет больше 100, то сработает четвертый Case и
переменная y получит значение 40. В том случае, когда значение х не
будет удовлетворять ни одному из условий в Case (например, x=80),
будут выполнены действия, расположенные за CaseElse.
2. Задание на лабораторную работу
В данной лабораторной работе необходимо составить программу,
которая рассчитывает значение Y, согласно введенному Х с помощью
конструкции SelectCase. Кроме этого, программа должна выводить
текст сработавшего условия, содержать кнопку очистки всех окон и
кнопку выхода из программы. Рекомендуемый внешний вид формы
представлен на рис. 7.2.
Рис. 7.2. Внешний вид приложения
Элементы формы и их свойства приведены в таблице.
49
№
1
2
3
4
5
6
7
8
9
Object
Button
Button
Button
Label
Label
Label
TextBox
TextBox
TextBox
Name
cmdCalculate
cmdClear
cmdExit
lblArgument
lblResult
lblCondition
txtArgument
txtResult
txtCondition
Text
Вычислить
Очистить
Выход
Аргумент
Результат
Условие
Рассмотрим пример программы, которую нужно составить в ходе
лабораторной работы.
Пример 7.2
Решить пример. Вывести на экран результат и сработавшее условие (см. рис. 7.2).
 x 1 при x  2;
 x  2 при x 1, 5, 8;

y   x  3 при 0  x ;
 x  4 при x от15 до 35;

 x  5 при другихзначениях .
Код программы:
‘Вычисление по условию
DimxAsDouble = Val(txtArgument.Text)
SelectCasex
Case 2
txtResult.Text = x + 1
txtComment.Text = " x = 2"
Case 1, 5, 8
txtResult.Text = x + 2
txtComment.Text = " 1, 5, 8 "
Case Is < 0
txtResult.Text = x + 3
txtComment.Text = " x<0 "
Case 15 To 35
50
txtResult.Text = x + 4
txtComment.Text = " от 15 до 35 "
Case Else
txtResult.Text = x + 5
txtComment.Text = "Другоезначение"
EndSelect
Переменная Y не использована, т. к. без нее можно обойтись, выводя результат напрямую в TextBox.
3. Варианты для выполнения лабораторной работы № 7
Вариант
1
Функция
2
Условие
3
при x  5;
при x  4, 5, 0;
1
 x 10 ,
 x  20 ,

Y   x  30 ,
 x  40 ,

 x  50 .
при x  80;
при x  4, 5, 0;
2
 x 100 ,
 x  200 ,

y   x  300 ,
 x  400 ,

 x  500 .
3
 x 1000 ,
 x  2000 ,

Y   x  3000 ,
 x  4000 ,

 x  5000 .
4
 x 10 ,
 x  20 ,

Y   x  30 ,
 x  40 ,

 x  50 .
при x  80;
при x от 30 до 50;
при другихзначениях .
при x от10 до 20;
при x  2;
при другихзначениях .
при x  50;
при x  40, 50,10;
при x  0;
при x от 3 до10;
при другихзначениях .
при x 1, 5;
при x  2,  2, 20;
при x от  50 до 10;
при x 100 ;
при другихзначениях .
51
Продолжение табл.
1
2
 x 1,
 x  2,

Y   x  3,
 x  4,

 x  5.
3
при x  2;
при x  8, 5,10;
при x  0.4,  2.5,10;
при x от 3 до 5;
6
 x 1,
 x  2,

Y   x  3,
 x  4,

 x  5.
7
 x 100 ,
 x  200 ,

Y   x  300 ,
 x  400 ,

 x  500 .
8
 x  0.1,
 x  0.2,

Y   x  0.3,
 x  0.4,

 x  0.5.
5
при x  0;
при x от 30 до 40;
при другихзначениях .
при x  90;
при x  .25;
при другихзначениях .
при x  2;
при x  4, 5, 0,11
при x  5;
при x от 35 до 55;
при другихзначениях .
при x  400 ,  500 ,10000 ;
при x  55;
при x от  300 до 50;
при x 10 6 ;
при другихзначениях .
при x от 3 до15;
при x  4.5;
9
 x 15,
 x  25,

Y   x  35,
 x  45,

 x  55 .
при x  0;
при x  4, 5,1;
10
 x 1,
 x  2,

Y   x  3,
 x  4,

 x  5.
при x  20;
при x  40,  0.05, 0;
при другихзначениях .
при x  8;
при x от 3 до 50;
при другихзначениях .
52
Окончание табл.
11
12
13
14
15
2
 x 1.5,
 x  2.5,

Y   x  3.5,
 x  4.5,

 x  5.5.
 x 10 .2,
 x  20 .2,

Y   x  30 .2,
 x  40 .2,

 x  50 .2.
 x 150 ,
 x 160 ,

Y   x 170 ,
 x 180 ,

 x 190 .
3
при x  2,  2,10;
при x 1;
при x от 30 до 50;
при x  18;
при другихзначениях .
при x  5;
при x  4, 5, 0;
при x  80;
при x от 30 до 50;
при другихзначениях .
при x  5, 8;
при x  6, 2, 0;
при x  0;
при x от100 до 500 ;
при другихзначениях .
 x 10 ,
 x  20 ,

Y   x  30 ,
 x  40 ,

 x  50 .
при x  40,  50,1000 ;
при x  555 ;
при x от  3 до 50;
 x 1,
 x  2,

Y   x  3,
 x  4,

 x  5.
при x  5;
при x 1,  2,  7;
при x 10 6 ;
при другихзначениях .
при x  10;
при x от10 до1000 ;
при другихзначениях .
53
Лабораторная работа №8
АЛГОРИТМЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ.
ОПЕРАТОР ЦИКЛА For…Next
Цель работы: ознакомиться с форматом цикла For…Next и
практикой его применения.
Циклы применяются для решения задач, в которых нужно многократно использовать одни и те же операторы. Циклы являются достаточно мощным инструментом программирования, способным значительно сократить размер программы и время ее работы. Правильное
их понимание и использование является залогом, а иногда и единственной возможностью реализации некоторых алгоритмов.
В VB.NET используются несколько операторов цикла. Основной
из них For…Next. Он удобен в тех случаях, когда заранее известно
сколько раз нужно выполнить действие.
1. Оператор For…Next
Оператор For…Next встречается чаще других. Его формат выглядит так:
Forперем._счетчик=нач._значениеToконеч._значение
[Stepзнач._шага]
[Блок операторов]
[ExitFor]
Next [перем._счетчик]
Действие оператора
For…Next повторяет Блок операторов до тех пор, пока значение переменной-счетчика не станет больше (если начальное значение
больше конечного, то меньше) конечного_значения цикла. После каждой итерации (очередного выполнения Блока операторов) к значению переменной_счетчика прибавляется значение_шага. Если шаг
равен 1, то строку Step 1 можно не писать.
Назначение элементов формата
For – начинает процедуру цикла;
54
Переменная_счетчик – числовая переменная, значение которой
автоматически изменяется в процессе работы и отслеживается циклом. Внутри цикла можно менять значение счетчика;
Начальное_значение – первое значение счетчика цикла. Оно может быть задано числом, переменной, математическим выражением.
Значение может быть целым или дробным, положительным или отрицательным;
To – служебное слово, которое отделяет начальное значение от
конечного;
Конечное_значение – последнее значение счетчика. Оно может
быть задано числом, переменной, математическим выражением. Значение может быть целым или дробным, положительным или отрицательным. Следует обратить внимание на то, что перед ним привычный
знак равенства не ставится. Если конечное значение равно начальному, то цикл выполнит только одну итерацию. Внутри цикла изменить
величину конечного значения нельзя. Ошибка при этом не выдается,
но и цикл работает по первоначальному значению;
Step – служебное слово, которое отделяет значение шага;
Значение_шага – величина, которая прибавляется к счетчику
цикла после каждой итерации. Она может быть задана числом, переменной или математическим выражением. Если значение шага равно
нулю, то цикл работает бесконечно долго (до принудительного останова программы) на начальном значении счетчика. Слово Step и значение после него можно не указывать. В этом случае программа будет
считать шаг равным +1. Положительное значение шага используется
тогда, когда начальное значение счетчика меньше конечного. Если
начальное значение больше конечного, то следует применять отрицательный шаг;
ExitFor – команда на досрочный (принудительный) выход из
цикла. В результате ее действия управление сразу передается первому
оператору ниже Next, независимо от значения счетчика;
Next – возвращает управление в строку For… Название счетчика
за этой командой указывать не обязательно, хотя данный код не соответствует принципам хорошего стиля программирования. Если программный блок содержит несколько вложенных циклов, то за Next
можно ставить несколько счетчиков через запятую. Программа определяет блок операторов цикла как все команды, расположенные между For и Next;
Цикл прекращает свою работу после того, как счетчик выйдет за
рамки своего конечного значения. Если в процессе работы цикла
55
счетчик растет (шаг положительный), то цикл будет завершен, когда
счетчик станет больше конечного значения. Если в процессе работы
счетчик уменьшается (шаг отрицательный), то управление уйдет из
цикла после того, как счетчик станет меньше своего конечного значения.
Изображение оператора For…Next в блок-схеме показано на
рис. 8.1.
Рис. 8.1. Изображение оператора For…Next на блок-схемах
Важно отметить, что пример на рис. 8.1(2) не соответствует требованиям ГОСТ к оформлению блок-схем, поэтому в документах, которые должны соответствовать стандарту, его применять нельзя, хотя
он проще и понятнее.
Пример 8.1
Вычислить сумму всех целых чисел от 1 до 5.
Dim i As Integer
Dim S As Integer
Fori = 1 To 5
S=S+i
Next i
txtRez.Text = S
Работа программы
В качестве блока операторов выступает строка S = S + i. Программа повторяет ее 5 раз, складывая сумму всех целых чисел от 1 до 5, то
есть S = 1+2+3+4+5. Счетчик цикла –i – после каждой итерации увеличивается на +1, что соответствует прибавлению очередного числа.
56
На первой итерации S = S + i = 0 + 1 = 1. На второй S = S + i = 1 + 2 = 3.
Сумма накапливается в переменной S. В ходе очередной итерации
программа прибавляет к значению, которое хранится в S, текущее
значение i, рассчитывает сумму и записывает ее в ячейку памяти, в
которой расположена переменная S, так на третьей итерации
S = S + i = 3 + 3 = 6. Последняя, пяНачало
тая, итерация может быть представлена следующей записью S = S + i =
i = 1, 5
10 + 5 = 15.
Блок-схема к примеру 7.1 покаS=S+i
зана на рис. 7.2.
В математике сумма различных
чисел записывается с помощью знаS
ка . Сумма чисел от 1 до 5 запишет5
Конец
i.
ся так: S 
i 1
Рис. 7.2.

Пример 8.2
Рассчитать произведение квадратов целых чисел от 1 до 5.
Dim x As Integer
Dim P As Integer = 1
Forx = 1 To 5
P=P*x^2
Nextx
txtRez.Text = P
Работа программы
Важным элементом представленного алгоритма является присвоение начального значения переменной P. Если переменной не присвоено значение, то Visual Basic считает, что оно равно 0. Следовательно,
если перед циклом не разместить строку P = 1, то в каждой итерации
очередное значение счетчика x будет умножаться на 0 и общий результат вычислений тоже будет равен нулю.
Ход расчета аналогичен примеру 8.1. с той лишь разницей, что
происходит не сложение, а умножение. В каждой итерации цикла значение счетчика увеличивается на 1, эта величина возводится в квадрат
57
и умножается на текущее значение P. Затем полученный результат
записывается в ячейку памяти, которая хранит величину P.
Блок-схема к примеру 8.2 показана на рис. 8.3.
Начало
P=1
x = 1, 5
P=P*x^2
P
Конец
Рис. 8.3.
В математике произведение чисел записывается с помощью знака
. В частности, произведение квадратов целых чисел от 1 до 5 запишется так:
5
𝑝 = ∏ 𝑥2
𝑥=1
2. Задание на лабораторную работу
В данной лабораторной работе нужно составить программу расчета математического примера, содержащего сумму и произведение
числового ряда.
В некоторых вариантах ряд изменяется с шагом +1, поэтому использовать шаг цикла не нужно и для программирования таких задач
можно пользоваться примерами 8.1 и 8.2. В других вариантах числовая последовательность меняется с определенным шагом, который
следует указывать в строке с For.
Рассмотрим пример, в котором нужно задавать шаг изменения
счетчика отличный от 1.
58
Пример 8.3
Рассчитать H 
 x
x  2
y дляx = 1, 3, 5, 7, 9, 11.
Dim y As Double = Val(txtY.text)
Dim p As Double = 1
Dim s As Double
Dim H as Double
Forx As Integer = 1 To11Step 2
s = s + Math.Sqrt(x)
p = p*(x+2)
Nextx
H = s / p + Math.Sqrt(y)
txtRez.Text= H
Работа программы
В цикле рассчитываются сумма и произведение чисел, а затем,
уже за пределами цикла, программа вычисляет пример и выводит результат на экран. Числа, которым становится равен счетчик x в каждой итерации, изменяются с шагом 2, поэтому в первой итерации
х = 1, во второй – х = 3, в третьей х = 5 и т. д. до x = 11.
Рекомендуемый внешний вид формы показан на рис. 8.4.
Рис. 8.4. Внешний вид приложения
Элементы формы и их свойства приведены в таблице.
59
№
Object
1.
2.
3.
4.
5.
6.
7.
Name
Button
Button
Label
Label
Form
TextBox
TextBox
Text
Рассчитать
Выход
Аргумент
Результат
Лабораторная работа № 8
cmdCalculate
cmdExit
lblArgument
lblResult
frmMain
txtArgument
txtResult
3. Варианты для выполнения лабораторной работы № 8
Вариант
Функция
Исходные
данные
1
2
3
1
V  i   i  i 2  z
2
3

6

V  ln x  x  x 2  z  2
W
M
V 2
i = 1, 3, 5, 7, 9
x = 1, 4, 7, 10, 13
n  cosb  b
n  n3  b  3
n = 1, 6, 11, 16, 21
c  52  1
c  52 L
c=1-9
T
4
5
 
r 2  4 r  tgr 
r = 10, 20, 30, 40
o 1
i  3 i  sin i  cosi 2 
i = 1 - 20
w 2
7
ln x tg x  x  x2  

K
8
V
x=1-5
g 5
n  cosb 
en  tgn3 
60
5b
n = 1, 6, 11, 16, 21
Окончание табл.
1
2
3
 e h  sinh 
V
2
 tg h  h 2 
h = 1, 5, 9, 13, 17
2
9
er  r 3  sin r  cosr 
10
B
11
V 2
12
H
1

R
u 3
i  3 i  sin i  cosi 2 
i = 1 - 20
w 2
x
3x
x=1-5
2
 sin x 2  cos2 x 

d  3d
 n  tg n
 n  x 2   n 2.5
5
13
C
14
 h2
P  x h  x 
sin x
 h  cosh
1
 e h  sinh 
V
2
 tg h  h 2 
2
15
r = 1 - 15
1

R
n = 1, 6, 11, 16, 21
h = 1, 5, 9, 13, 17
h = 1, 5, 9, 13, 17
Контрольные вопросы
1. Приведите формат цикла For…Next и опишите его действие.
2. Назначение элементов формата цикла For…Next.
3. Составьте программу расчета суммы всех целых чисел от 10
до 20.
4. Составьте программу расчета произведения всех целых чисел
от 1 до 10.
5. Составьте программу расчета суммы всех четных чисел от 30
до 60.
61
7
7
i 1
i 1
6. Составьте программу расчета выражения y  i 2  i 2 .
7. Составьте
y
программу
расчета
выражения
i 2 1 x 2  2.
15
6
i10
x3
8. Составьте программу решения одного из вариантов на данную
лабораторную работу.
62
Лабораторная работа №9
МАССИВЫ ДАННЫХ
Цель работы: ознакомиться с понятием массива данных и методами его обработки.
1. Массивы данных
Массив данных – совокупность значений, объединенная общим
названием. Массивы бывают одномерные (вектор), двухмерные (матрица) и трехмерные (группа матриц). Каждый элемент массива имеет
свои координаты. В векторах каждый элемент имеет порядковый номер, в двумерных массивах позиция каждого элемента определяется
двумя координатами – номером строки и номером столбца, как номер
места в кинотеатре. В трехмерных массивах к номеру строки и столбца прибавляется третий параметр – номер матрицы. VB.NET поддерживает возможность работы с массивами и большей размерности.
В программе обращение к элементу массива обязательно сопровождается указанием его координат. В данной практической работе
рассматриваются только одномерные массивы (векторы), следовательно, для использования элементов вектора нужно указывать название массива и порядковый номер интересующего элемента.
Нумерация элементов массива начинается с нуля! Номер записывается в круглых скобках после названия массива. Например, если
массив содержит возраст пяти человек Age(18 19 20 18 17), то сумма
первого и пятого элементов в программе будет записана строкой
S = Age(0) + Age(4)
Следует обратить внимание на то, что в скобках за названием
указывается только порядковый номер элемента, а не его значение.
Получая номер, программа сама обращается к соответствующей ячейке оперативной памяти, считывает значение элемента и использует его
в расчетах.
В работе с массивами можно выделить три основные задачи:
1. Формирование массива.
2. Обработка и использование массива.
3. Вывод массива на экран.
В зависимости от размерности массива и решаемой задачи используются разные алгоритмы, но принципы их работы одинаковы.
63
2. Формирование массива
2.1. Объявление массива
Прежде чем формировать массив, то есть присвоить каждому
элементу определенное значение, массив необходимо объявить. Объявить массив – это значит дать указание компьютеру на резервирование соответствующего количества ячеек оперативной памяти для размещения элементов массива. Фактически программист должен указать
название массива, количество элементов в нем и общий тип этих данных. Объявление массивов и переменных осуществляется с помощью
оператора Dim. Формат оператора Dim имеет вид:
DimИмя_массива(N)Asтип,
где N – количество элементов в одномерном массиве (векторе). Если
массив имеет больше одной размерности, то в скобках указывается
количество элементов по каждой размерности. Например, матрица B,
в которой 3 строки и 4 столбца должна объявляться как DimB(3, 4).
Тип– служебное слово, обозначающее тип данных, которые будут
храниться в объявляемом массиве. Например, вектор Age, который
должен хранить 5 целых чисел, можно объявить так: DimAge(5) AsInteger.
Оператор Dim следует указывать в начале программы и только 1
раз для каждого объявляемого элемента. В одном операторе можно
резервировать место для нескольких массивов и переменных, разделяя
их запятыми. Например,
Dim A(20) As Long, C(15) As Double, i As Integer
Размещается Dim в разделе General. Раздел General расположен
перед первой процедурой в тексте программы.
Пример 9.1
Ввести команду проверки объявления всех переменных, объявить
массив Х, содержащий 10 элементов двойной точности и переменнуюсчетчик i целого типа.
DimX(10) AsDouble
DimiAsInteger
64
Размещение Dimв разделе General наиболее рационально и рекомендуется в рамках данного курса, но если того требует алгоритм,
то Visual Basic .NET позволяет размещать этот оператор и в обычных
процедурах и функциях.
2.2. Заполнение массива
Для того чтобы программа могла обрабатывать массив или использовать его в алгоритме, каждый элемент массива должен иметь
собственное значение. Сформировать (заполнить) массив – это значит присвоить каждому его элементу какое-либо значение. Все значения элементов имеют один и тот же тип, указанный при объявлении
массива.
Рассмотрим два наиболее распространенных варианта формирования массива.
Вариант 1 – прямое присваивание. В этом случае указывают элемент с конкретным номером и присваивают ему соответствующее
значение.
Пример 9.2
Присвоить пяти элементам вектора Age числа 18, 19, 20, 18 и 17.
DimAge(5) AsInteger
Private Sub cmdArrayForm_Click()
Age(0) = 18
Age(1) = 19
Age(2) = 20
Age(3) = 18
Age(4) = 17
EndSub
Важно обратить внимание на то, что объявление массива проходит за пределами процедуры, в которой элементы массива получают
свои значения.
Данный вариант формирования массива удобен только в тех случаях, когда программа работает с одним и тем же набором данных.
Если данные должны меняться, то нужно использовать следующий
вариант формирования.
Вариант 2 – ввод с клавиатуры. В этом случае после запуска программы пользователь вводит значение каждого элемента самостоя65
тельно с помощью клавиатуры. Программа заданное число раз выводит на экран запрос о вводе очередного значения, а пользователь вводит число с клавиатуры. Для вывода запросов используется функция
InputBox. В упрощенном виде ее формат выглядит следующим образом:
InputBox(“Текст”),
где “Текст” – это комментарий, поясняющий цель запроса. Он должен
быть заключен в кавычки.
Пример 9.3
Ввести значения вектора Age(5)с клавиатуры.
Dim Age(5) As Integer
Private Sub cmdCalculate_Click()
For i = 0 To 4
Age(i) = Val(InputBox("Введитеэлементмассива"))
Nexti
EndSub
Работа программы
После щелчка по кнопке cmdCalculate на форме, программа 5 раз
выведет запрос, показанный на рис. 8.1. Пользователь должен ввести
число в текстовое окно запроса и нажать кнопку Enter (на клавиатуре)
или щелкнуть мышкой по кнопке Ok (см. рис. 9.1).
Рис. 9.1.
66
После этого введенное число автоматически будет присвоено i-му
элементу массива. На первой итерации – первому, на второй – второму и т. д.
Важно отметить, что если число, вводимое через InputBox, присваивается переменной, тип которой не объявлен, то это число будет
присвоено как текст и переменная будет считаться текстовой. В таких
случаях нужно объявить переменную с числовым типом или использовать InputBox вместе с функцией Val. Например,
X = Val(InputBox("Введите Х"))
Достоинством ввода с клавиатуры является возможность обеспечения определенного набора данных при каждом запуске программы.
3. Обработка и использование массива
Обработка массива – это анализ значений его элементов.
Например, поиск максимума или минимума, расчет суммы всех элементов и т. д. Использование массива – это применение значений его
элементов для расчета каких-либо величин или выполнения других
действий.
После того, как массив тем или иным способом сформирован,
программа может работать с ним. При этом каждое обращение к элементу массива должно сопровождаться указанием имени массива и
порядкового номера элемента.
Пример 9.4
Рассчитать среднее арифметическое вектора Age(18 19 20 18 17).
Dim Age(5) As Integer
Dim i As Integer
Dim s As Integer
Private Sub cmdCalculate_Click()
'Формированиевектора
Age(0) = 18: Age(1) = 19: Age(2) = 20
Age(3) = 18: Age(4) = 17
‘Расчет суммы всех элементов вектора
Fori = 0 To 4
s = s + Age(i)
67
Nexti
‘Вывод среднего арифметического
txtRes.Text = s / 5
EndSub
Работа программы
Массив и все вспомогательные переменные объявлены с помощью оператора Dim. Объявление размещено в разделе General. В
процедуре cmdCalculate размещены три блока: формирование вектора методом прямого присваивания, расчет суммы всех элементов вектора и вывод на экран среднего арифметического значения.
При анализе данного алгоритма следует особое внимание обратить на расчет суммы. Она накапливается в переменной s. В каждой
итерации к текущему значению s прибавляется очередной (i-й) элемент массива. Изменение нумерации элементов достигается тем, что
счетчик цикла поставлен как указатель номера элемента. Счетчик изменяется от 0 до 4 с шагом +1, следовательно, его значения совпадают с
номерами элементов вектора – 0, 1, 2, 3 и 4. Так на первой итерации (i=0)
s = s + Age(i) = 0 + Age(0) = 0 + 18 = 18
на второй итерации (i=1)
s = s + Age(i) = 18 + Age(1) = 18 + 19 = 37
и так далее до пятой итерации (i=4)
s = s + Age(i) = 75 + Age(4) = 75 + 17 = 92
В данной работе нужно будет вычислить значение примера для
каждого из элементов массива. Это действие относится к использованию массива. Алгоритмы обработки массива рассмотрены в следующих практических работах.
4. Вывод вектора на экран
Алгоритм вывода массива в текстовое окно зависит от размерности самого массива и той формы, в которой он должен быть представ68
лен на экране. Алгоритм вывода вектора в текстовое окно в виде
столбца чисел рассмотрен в примере 9.5.
Если массив выводится в тестовое окно и содержит более одной
строки, то в ходе настройки текстового окна нужно переключить его
свойство MultiLine в положение True. По умолчанию значение этого
свойства False, что запрещает выводить более одной строки в текстовое окно.
Пример 8.5
Вывести вектор Age(18 19 20 18 17) в текстовое окно txtArray в
виде столбца чисел.
Private Sub cmdArrayPrint_Click()
For i = 0 To 4
txtArray.Text = txtArray.Text &Age(i).ToString& vbNewLine
Nexti
EndSub
Работа программы
Если свойство MultiLine текстового окна txtArray равно True, то
алгоритм выведет все значения элементов вектора в один столбец.
Элементы выводятся по порядку, согласно изменению счетчика цикла
i. В каждой итерации программа переводит очередное значение элемента в текстовую форму Age(i).ToString, прибавляет его к содержимому тестового окна (txtArray.Text&Age(i).ToString), переводит курсор на следующую строку (vbNewLine) и выводит полученный текст
в текстовое окно.
Информация в окне накапливается как сумма текстовых фрагментов. Причем, функция vbNewLine записывает в текст невидимые
знаки, а две команды – перейти на следующую строку + поставить
позицию вывода в начало строки. Если vbNewLine не использовать,
то вектор будет выведен в одну строку.
5. Задание на лабораторную работу
В данной лабораторной работе требуется составить программу,
в которой рассчитывается значение функции для каждого элемента
вектора. Программа, решающая данные задачи, приведена в примере
9.6.
69
Пример 9.6
Сформировать вектор X(5, 9, 3, 4, 1, 8) методом прямого присваивания и вывести на экран. Для каждого элемента вектора рассчитать
значение Z  X 2 (см. рис. 9.2.).
Option Explicit
DimX(6) AsInteger
Dim i As Integer
Dim Z As Integer
Private Sub cmdFill_Click()
'Формируемвектор
X(0) = 5: X(1) = 9: X(2) = 3
X(3) = 4: X(4) = 1: X(5) = 8
EndSub
PrivateSubcmdPrint_Click()
'Выводим вектор в текстовое окно как столбец
For i = 0 To 5
txtArray.Text = txtArray.Text &X(i).ToString& vbNewLine
Next i
End Sub
Private Sub cmdCalculate_Click()
‘Рассчитываемфункциюивыводимрезультаты
Fori = 0 To 5
Z = X(i) ^ 2
txtResult.Text = txtResult.Text & Z.ToString& vbNewLine
Next i
End Sub
Private Sub cmdExit_Click()
Application.Exit()
EndSub
Работа программы
Результаты формирования вектора и вычисления функции для
каждого из его элементов представлены на рис. 9.2. После нажатия на
кнопку “Заполнить” срабатывает процедура cmdFill, в которой про70
исходит формирование вектора методом прямого присваивания. Щелчок мышкой по кнопке “Печать” запускает процедуру cmdPrint, которая выводит элементы сформированного вектора в текстовое окно
txtArray в виде столбца. Важно отметить, что если вектор не сформирован, то нажатие на кнопку “Печать” приведет к выводу одних нулей. Следовательно, после запуска программы нужно нажимать на
кнопки в правильной последовательности – “Заполнить”, “Печать”,
“Рассчитать”. Кнопка “Рассчитать”соответствует процедуре
cmdCalculate. В этой процедуре очередной элемент вектора возводится в квадрат, результат присваивается переменной Z и выводится в
текстовое окно txtResult. Более детально подобные алгоритмы описаны в примерах 9.2 и 9.5.
Рекомендуемый внешний вид формы на данную работу показан
на рис. 9.2.
Рис. 9.2. Внешний вид приложения
Таблица свойств элементов формы.
№
Элемент
1
8.
9.
10.
11.
2
Button
Button
Button
Button
Текст
Name
3
cmdFill
cmdPrint
cmdCalculate
cmdExit
71
4
Заполнить
Печать
Рассчитать
Выход
Окончание табл.
2
12.
13.
14.
15.
16.
Label
Label
Form
TextBox
TextBox
3
4
Вектор
Результат
Практическая работа №1
lblVector
lblResult
frmLb9
txtVector
txtResult
Свойство MultiLine текстовых окон равноTrue.
Задание
X = 1977
1812
1945
1937
1953
1992
2000
Z = X3+x
Контрольные вопросы
1. Что такое массив данных?
2. Чем отличаются одномерные, двумерные и трехмерные массивы?
3. Для чего проводят объявление массива?
4. Приведите формат оператора Dim и опишите его работу?
5. В каком месте программы рекомендуется размещать строку
объявления массива?
6. Как работает алгоритм заполнения массива методом прямого
присваивания? Приведите программный пример.
7. Приведите формат функции InputBox.
8. Как работает алгоритм заполнения массива с клавиатуры?
Приведите пример.
9. Чем отличается обработка и использование массива?
10. Приведите алгоритм расчета суммы всех элементов вектора и
опишите его работу.
11. Приведите алгоритм вывода вектора в текстовое окно в виде
столбца чисел. Опишите его работу.
12. Для чего используется свойство текстового окна MultiLine?
13. Для чего используется функция vbNewLine?
72
Download