ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ Часть 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 tgat b bt a , s bsin at cos2t 1. y cos2 x3 x a b2 2 5 bx2 a s x3 arctg2 x b2 a / x b , Q ax . b 1 6 bx 2 3 a . s x3tg 2 x b2 a / x b , Q ax b axb 7 R x 2 x 1/ b sin 2 x a , s xb/ a cos2 x b3. 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 tgx 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 ab 1 n a ab 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 ab c ab . a b c a c 5 ac 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 22 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 i4 i4 i4 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 x2 sin a x b , y a b 20 x , tg x arctg cos2 b. a b0 a b0 a b0 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 x2 , при 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 x10 , при 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 52 1 c 52 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 x2 K 8 V x=1-5 g 5 n cosb en tgn3 60 5b 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 i10 x3 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