Лабораторная работа 3. Программирование на языке Visual Basic for Applications (VBA) Теоретическая часть

Размер: px
Начинать показ со страницы:

Download "Лабораторная работа 3. Программирование на языке Visual Basic for Applications (VBA) Теоретическая часть"

Транскрипт

1 Лабораторная работа 3. Программирование на языке Visual Basic for Applications (VBA) В этой лабораторной работе необходимо выполнить задания своего варианта (номер варианта выбираете по последней цифре шифра). Методические указания по выполнению работы примеры оформления заданий приведены ниже. Теоретическая часть 1.1. Система программирования VBA Visual Basic является мощным программным средством с помощью которого можно быстро и эффективно создавать Windows-приложения. Основное достоинство этого языка программирования состоит в том что он оптимально сочетает в себе простоту использования доступность и большой набор разнообразных возможностей позволяющих охватить все основные области программистской деятельности. В названии этого языка слово «Visual» означает способ при помощи которого данным программным средством создается графический пользовательский интерфейс. Вместо того чтобы описывать в программе где и каким образом появится на экране тот или иной объект программист может просто расположить его в нужном месте еще на этапе разработки своего приложения. В качестве таких "заготовок" используются встроенные элементы управления то есть уже созданные объекты с заданными наборами свойств и методов. Программист может изменять значения тех или иных свойств у выбранного объекта а также описывать для него различные методы. Свойства это имеющие имя атрибуты объекта они определяют характеристики объекта (цвет положение на экране состояние объекта). Методы это команды которые используются для изменения объекта например перемещение изменение размеров. Используя предусмотренные для объектов методы можно обойтись минимальным программированием приложения. Имеется возможность обработки программистом различных событий которые могут возникать в результате каких-либо действий пользователя. События действия пользователя или другие внешние действия например щелчок по кнопке нажатие клавиши и др. Программа может обрабатывать два основных типа событий: инициируемые пользователем и генерируемые системой. 1.. Структура редактора Visual Basic Запуск редактора Visual Basic во всех приложениях Microsoft Office (и в Ecel в частности) осуществляется следующим образом: вкладка Разработчик группа Код Visual Basic. Если вкладка Разработчик не отображена на ленте то необходимо щелкнуть мышью по кнопке Office в появившемся окне щелкнуть по кнопке Параметры Ecel в основных параметрах Ecel установить флажок Показывать вкладку «Разработчик» на ленте и щелкнуть по кнопке ОК после чего новая вкладка появится на ленте. После запуска редактора откроется окно похожее на окно представленное на рис

2 Рис В окне редактора Visual Basic можно выполнять различные операции одновременно с работой в приложении откуда этот редактор был вызван. Переход между окнами осуществляется через Alt + Tab (в редактор также можно войти нажав Alt + F11). Всего в редакторе Visual Basic предусмотрено 9 дополнительных окон: Project Eplorer окно проводника проекта. По умолчанию оно открыто и находится в левой части окна редактора Visual Basic. В нем можно просмотреть компоненты проекта и выполнить множество операций; UserForm окно формы. Появляется тогда когда вы редактируете пользовательскую форму при помощи дизайнера форм; Toolbo панель инструментов управления. Появляется вместе с окном формы из нее можно добавить элементы управления в форму или в сам документ; Properties одно из самых важных окон. Через него можно просмотреть свойства элемента управления или компонента проекта и изменить их; Code окно программного кода. В этом окне выполняется основная работа по написанию кода макроса. При открытии программного модуля открывается автоматически; Object Browser обозреватель объектов. Он необходим для получения информации о классах доступных программе; Watch окно контролируемых выражений. Используется во время отладки для отслеживания значений выбранных переменных программы и выражений; Locals окно локальных переменных. Нужно для отслеживания во время отладки значений переменных текущей процедуры;

3 Immediate окно для немедленного выполнения команд в ходе отладки. Оно позволяет выполнить отдельные строки программного кода и немедленно получить результат. Для нахождения какого-либо окна надо выбрать в меню View одноименную команду и окно было скрыто оно появится в редакторе. Меню File (Файл) содержит команды необходимые для сохранения изменений в проекте VBA и вывода на экран или на печать исходного кода макросов. Меню Edit (Правка) содержит команды предназначенные для управления исходным кодом макроса в окне Code а также объектами в формах. Меню View (Вид) содержит команды позволяющие выводить или убирать с экрана различные окна редактора VBA. Меню Insert (Вставка) содержит команды позволяющие добавлять в проект различные объекты: процедуры модули формы классы и пр. Меню Format (Формат) содержит команды используемые при создании пользовательских диалоговых окон. Команды этого меню позволяют выравнивать объекты в форме по отношению друг к другу настраивать размеры и внешний вид элементов управления а также выполнять многие другие операции. Меню Debug (Отладка) содержит команды предназначенные для тестирования и отладки макросов. Команды этого меню позволяют запустить макрос с заданной точки отслеживать выполнение макроса по шагам и останавливать выполняемый макрос в любой момент его выполнения. Меню Run (Запуск) содержат команды предназначенные для запуска макроса на выполнение прерывания или возобновления его работы а также для возврата прерванного макроса в начальное состояние. Меню Tools (Сервис) содержит в частности команды позволяющие выбрать макрос для выполнения или получить доступ к внешним библиотекам макросов. С помощью других команд этого меню можно получить доступ к диалоговому окну Option (параметры) редактора VBA и окну свойств проекта VBA. Меню Add-Ins содержат всего одну команду Add-In Manager при выборе которой на экране отображается диалоговое окно Add-In Manager. В этом окне можно загружать или выгружать регистрировать и определять поведение программдополнений (надстроек) Создание интерфейса пользователя Создание форм свойства и методы форм Чаще всего для предоставления пользователю графического интерфейса используются формы VBA. Обычно форма запускается при открытии пользователем документа. Пользователь выполняет на форме какие-то действия по вводу или выбору информации (например выбирает значения в раскрывающемся списке устанавливает значения для флажков и переключателей и т.п.) а потом как правило нажимает кнопку на этой форме и введенная им информация передается в базу данных отправляется по электронной почте записывается в файл для распечатки и т.д. 3

4 Для создания формы достаточно в редакторе Visual Basic выполнить команду Insert UserForm или щелкнуть правой кнопкой мыши на проекте (т.е. на имени документа) в окне Project Eplorer и в контекстном меню выбрать команду Insert UserForm. Откроется окно дизайнера форм (Form designer) в котором будет представлено пустое серое окно формы заполненное сеткой из точек и рядом Toolbo панель с набором элементов управления (рис. 1.). По умолчанию форма называется UserForm1. Если включен показ окна свойств Properties (он включается по клавише F4) то в этом окне будут представлены свойства формы. Переход к редактору кода для этой формы (по умолчанию открывается событие Click) выполняется по клавише F7 возврат обратно в окно дизайнера форм по Shift + F7. Рис.1. Для форм и элементов управления можно настраивать свойства при помощи графического интерфейса окна свойств это резко уменьшает количество программного кода которое нужно писать вручную. Некоторые самые важные свойства форм (кроме ShowModal все они применимы и для других элементов управления) приведены далее. Name это свойство определяет имя формы. Пользователь вашей программы скорее всего его никогда не увидит. Имя формы используется только программистом в коде для этой формы (и в окнах редактора Visual Basic). Caption определяет заголовок формы (по умолчанию совпадает с именем формы). Рекомендуется ввести строку которая будет напоминать пользователю о назначении формы (например "Выбор типа отчета"). 4

5 Enabled это свойство установлено в False пользователь не сможет работать с формой. Используется для временного отключения формы например пока пользователь не обеспечит какие-то условия для ее работы. ShowModal свойство установлено в True (по умолчанию) то пользователь не может перейти к другим формам или вернуться в документ пока не закроет эту форму (так называемый «модальный» режим работы). Большая часть других свойств относится к внешнему виду размерам и местонахождению формы. Свойство Back Color (вкладка Palette) определяет цвет. Размер и позиция формы на экране определяются свойствами: Left расстояние от левой границы формы до левого края экрана Top расстояние от верхней границы формы до верхнего края экрана Width ширина формы Height высота формы. Размеры задаются в пунктах. Один пункт (единица измерения шрифта) равен 1/7 дюйма ( 035 мм). Самые важные методы форм перечислены в следующем списке. В процессе редактирования формы (из окна редактора Visual Basic) ее можно запускать по нажатию клавиши <F5>. После того как форма будет готова вы должны обеспечить ее запуск в документе. Для запуска формы нужно воспользоваться методом Show(): UserForm1.Show Если форма уже была загружена в память она просто станет видимой нет то будет автоматически загружена (произойдет событие Load). Спрятать форму можно с помощью метода Hide() например: UserForm1.Hide Форма будет убрана с экрана но останется в памяти. Потом при помощи метода Show() можно будет опять ее вызвать в том же состоянии в каком она была на момент скрытия а можно например пока она спрятана программно изменять ее и расположенные на ней элементы управления. Окончательно форма удалится из памяти при закрытии документа; Если форма больше точно не потребуется можно ее удалить из памяти при помощи команды Unload: Unload UserForm1 Остальные методы относятся либо к обмену данными через буфер обмена (Copy() Cut() Paste()) либо к служебным возможностям формы (PrintForm() Repaint() scroll()). Важнейшая концепция VBA события. Событие (event) это то что происходит с программой и может быть ею распознано. Например к событиям относятся щелчки мышью нажатия на клавиши открытие и закрытие форм перемещение формы по экрану и т. п. VBA построен таким образом чтобы можно было создавать на нем программы управляемые событиями (event-driven). Такие программы противопоставляются устаревшему процедурному программированию. Поскольку форма это во многом просто контейнер для хранения других элементов управления главное ее событие Initialize. Все остальные события обычно используются не для формы а для расположенных на ней элементов управления. 5

6 Для распечатки формы предусмотрено специальное диалоговое окно которое можно вызвать по нажатию клавиш Ctrl + P (при выбранной форме в дизайнере); Размещение объектов на форме Элементы управления могут быть добавлены на форму следующим образом: щелкнуть левой кнопкой мыши на изображении соответствующего элемента на панели элементов управления и указателем мыши при нажатой левой кнопке начертить на форме условный прямоугольник в том месте формы где будет предположительно находиться этот элемент учитывая при этом его примерные размеры. Аналогичные действия поочередно выполняются для каждого элемента. Если необходимо изменить какой-либо объект на форме его необходимо выделить при этом на его границах появятся так называемые манипуляторы размера в виде маленьких закрашенных квадратиков. Перемещать и изменять размеры выделенного объекта можно при помощи мыши. Чтобы расположить несколько объектов на форме в заданном порядке выровнять объекты относительно вертикальной горизонтальной оси по центру левому краю правому краю эталона привести ширину и высоту объектов к эталонным размерам можно воспользоваться соответствующими командами меню Format Общие свойства элементов управления Внешний вид и поведение элементов управления определяются их свойствами. Они включают визуальные характеристики (размер цвет положение и т.п.) и характеристики определяющие способ использования элемента управления. Обычно большинство свойств определенных по умолчанию не требуется изменять и лишь несколько свойств нуждаются в изменении. Свойства можно изменять на этапе проектирования приложения и в программном коде. Однотипные элементы управления могут иметь по ряду свойств одни и те же установки. Такие свойства называются групповыми и устанавливаются одновременно для группы выделенных объектов. Выделить группу элементов можно с помощью кнопки Pointer (кнопка со стрелкой) на панели элементов управления или удерживая нажатой клавишу Ctrl щелкнуть поочередно по объектам включаемым в группу. Удалить элемент из группы можно повторно щелкнуть по нему мышью при нажатой клавише Ctrl. Свойства элементов управления определяются при помощи окна свойств. Список свойств состоит из двух частей: в левой части выводится список всех существующих свойств для выделенного объекта а в правой части установленные для этих свойств значения которые можно редактировать (текстовые поля) или выбирать (перечислимые поля). Список объектов представляет собой раскрывающийся список в верхней части окна свойств при помощи которого можно выбрать тот или иной объект из имеющихся на форме для просмотра и редактирования его свойств. Многие свойства являются общими для элементов управления разного типа. В то же время каждый тип элемента управления имеет собственные свойства характерные только для этого типа элементов управления. Рассмотрим несколько общих свойств элементов управления. Размер и позиция элемента определяются свойствами: Left расстояние от левой границы элемента до левого края формы Top расстояние от верхней границы элемента до верхнего края 6

7 формы Width ширина элемента Height высота элемента. Размеры задаются в пунктах. Часто при работе приложения требуется сделать недоступными для пользователя некоторые элементы управления. Для этого используют два свойства Enabled и Visible. Свойство Enabled определяет будет ли элемент управления реагировать на событие или нет. Если значение свойства равно False элемент управления будет недоступен и пользователь не сможет его использовать. Элемент при этом становится обесцвеченным так же как элементы меню которые нельзя выбрать. Свойство Visible при значении False позволяет сделать элемент управления невидимым. В программном коде можно изменить значение этих свойств на True и сделать элементы видимыми и доступными. Каждый элемент управления имеет свойство Name (имя) которое используется для ссылок на него в процедуре (например для изменения свойств этого элемента управления во время работы программы). Имя даваемое по умолчанию состоит из типа элемента управления и номера: Tet1 Tet Label1 и т. д. Имя можно изменить но необходимо чтобы оно удовлетворяло следующим требованиям: длина имени должна быть не более 3 символов; начальный символ должен быть буквой; в имя могут входить только буквы цифры и символ подчеркивания; прописные и строчные буквы рассматриваются как одинаковые Элемент управления Label Элемент Label (метка) является самым простым элементом управления. Это просто область формы в которой выводится какой-то текст (рис. 1.3). Элементы Label могут использоваться как самостоятельно так и в виде пояснений для текстового поля списка или другого элемента. Самое важное свойство метки Caption (надпись). Шрифт надписи определяется свойством Font (шрифт). Для выбора шрифта в окне свойств необходимо установить курсор напротив выбранного свойства и нажать кнопку с тремя точками. В открывшемся диалоговом окне Шрифт можно установить название начертание и размер шрифта. Цвет символов задается свойством ForeColor (вкладка Palette). Свойство BackColor задает цвет фона поля надписи. BorderStyle задает стиль рамки (0 без обрамления 1 надпись будет иметь контур). Свойство TetAlign устанавливает выравнивание текста в элементе управления по центру левому или правому краю. Текст который задан свойством Caption может иметь достаточно большой размер и занимать несколько строк. Максимальное количество символов Если размер текстового объекта заранее не известен (значение свойства Caption меняется в процессе выполнения программы) то может оказаться что текст не помещается внутри элемента. В этом случае нужно использовать свойства AutoSize и WordWrap. Если для свойства AutoSize установлено значение True то происходит расширение поля для размещения текста а установлено значение False то часть информации не поместившаяся в объект будет не видна. Свойство WordWrap также имеет два значение True и False. При значении True изменяется высота объ- 7

8 екта и осуществляется автоматический перенос слов при значении False размер объекта изменяется только в горизонтальном направлении (при AutoSize = True). Объекты Label имеют также свойство ControlTipTet которое задает текст всплывающей подсказки краткое пояснение которое появляется при подведении курсора к объекту во время работы приложения. Рис Элемент управления TetBo Текстовое поле (TetBo) один из самых часто используемых элементов управления (рис. 1.4). Рис Текстовое поле используется: для приема каких-либо текстовых данных вводимых пользователем (например для отправки по почте для занесения в базу данных и т.п.); для вывода пользователю текстовых данных с возможностью их редактирования (из базы данных листа Ecel и т.п.); для вывода пользователю текстовых данных с возможностью копирования и печати но без возможности изменения (классический пример текст лицензионного соглашения). Для ввода и вывода данных используется свойство Tet (или Value) которое заполняется либо в программном коде либо на этапе проектирования. Если объект активизирован то в текстовом окне появляется курсор и пользователь может вводить данные. Числовые данные будут введены в текстовом формате поэтому для выполнения вычислений их следует привести к числовому формату с помощью функции Val. Значение True свойства MultiLine позволяет ввести текст состоящий из не- 8

9 скольких строк. В этом случае можно добавить полосы прокрутки (свойство ScrollBars). Свойство ControlSource ссылка на источник текстовых данных для поля например можно ссылаться на ячейку в Ecel и т.п. При изменении пользователем данных в текстовом поле автоматически изменится значение на источнике определенном в ControlSource. Для задания стиля оформления текстового поля применяются свойства: Font ForeColor BorderStyle BackColor TetAlign ControlTipTet. Описание этих свойств дано выше Элемент управления CommandButton Элемент управления CommandButton (кнопка) самый распространенный элемент управления на формах (рис. 1.5). В большинстве форм обязательно будет по крайней мере две кнопки: OK и Отмена (Cancel). По нажатию кнопки OK должно выполниться то действие ради чего создавалась форма по нажатию кнопки Отмена форма должна закрыться. Задача пользователя обеспечить необходимый код для этих кнопок который и будет выполнять эти действия. Рис Кнопка всегда содержит надпись которая задается свойством Caption и обозначает назначение кнопки. С помощью свойства Picture можно назначить кнопке рисунок (пиктограмму). Главное событие для кнопки это конечно Click. Как правило к этому событию и привязывается программный код ради которого создавалась кнопка Элемент управления ListBo Элемент управления ListBo (список) применяется в том случае когда пользователю необходимо выбрать один или несколько элементов из имеющегося списка для выполнения определенных действий. Списки могут содержать разнообразную и разнородную информацию как текстовую так и числовую. Окно списка представляет собой прямоугольник содержащий список элементов с вертикальной полосой прокрутки с правой стороны список длинный и не помещается в окне. Программно элементы добавляются в список с использованием метода AddItem. Пример этого элемента управления представлен на рис Свойство MultiSelect позволяет выбирать различное число строк из списка. По умолчанию это свойство отключено. 9

10 Рис Применение дополнительных элементов управления Возможности форм VBA не ограничиваются только использованием стандартных элементов управления которые изначально помещены на панель ToolBo. В распоряжении пользователя сотни элементов управления встроенных в Windows в другие продукты или поставляемые отдельно. Для того чтобы можно было разместить их на форме надо щелкнуть правой кнопкой мыши по пустому пространству панели ToolBo выбрать пункт контекстного меню Additional Controls а затем в списке выбрать нужный элемент. При использовании нестандартных элементов управления необходимо помнить что при переносе программы (файла Office) на другой компьютер потребуется обеспечить на нем наличие необходимых библиотек. Один часто используемый элемент управления который есть практически на всех компьютерах Calendar (календарь). В зависимости от версии операционной системы и установленного программного обеспечения он может называться поразному например Календарь 1.0. При помощи этого элемента управления пользователю будет очень удобно выбирать нужную дату. На рис.1.7 показан элемент управления Calendar и надпись дублирующая значение выбранное пользователем в Calendar. Рис Главное свойство этого элемента управления Value т.е. та дата которая выбрана пользователем. Остальные свойства предназначены для отображения внешнего вида календаря. 10

11 В Ecel на панели ToolBo имеется еще один специфический элемент управления RefEdit (в списке Additional Controls он называется как RefEdit.Ctrl). Он похож на текстовое поле с кнопкой справа. При нажатии на эту кнопку форма на которой размещен этот элемент управления «спрячется» а пользователю будет предоставлена возможность выбрать одну ячейку или диапазон ячеек Ecel. После того как пользователь завершит выбор он опять вернется в окно формы а в RefEdit будет помещена информация об адресе выбранного диапазона. Главное свойство этого элемента управления Value Создание программного кода Программный код создаваемый пользователем состоит из некоторого набора процедур обрабатывающих различные события для объектов размещенных на формах проектируемого приложения. Однако программный код можно написать и без привязки к событиям. Можно создавать процедуры общего назначения которые впоследствии будут вызываться в других процедурах. После выполнения команды View Code или нажатия кнопки Code в окне проводника проектов на экране появляется окно для записи программного кода которое содержит два раскрывающихся списка. Левый список содержит перечень объектов а правый список событий. Для выбранного объекта надо найти в правом списке соответствующее событие. После выбора события появится заготовка программного модуля заголовок процедуры и последний оператор этой же процедуры. Далее пользователь заполняет заготовку текстом программы. Аналогично поступают с остальными объектами которые имеются в левом списке для них необходимо запрограммировать определенные действия. Заготовку процедуры можно получить и другим способом двойным щелчком по соответствующему объекту на форме например по кнопке с именем CommandButton1: Private Sub CommandButton1_Click() End Sub Первую строку можно перевести так: "Локальная процедура в которой компьютеру пишется инструкция что делать пользователь щелкнет мышкой по кнопке с именем CommandButton1" а последнюю строку "Конец процедуры". Между строками оставлено свободное место в котором мигает курсор предлагая ввести туда операторы программы. Они-то и будут выполнены при щелчке по кнопке. Следует отметить особенность события Load и процедуры Form_Load(). Программные утверждения этой процедуры запускаются в момент запуска программы. В эту процедуру помещаются утверждения которые необходимо выполнять каждый раз при запуске программы. В отличие от других процедур обработки событий вместо имени формы в процедуре используется имя Form. В Visual Basic каждый оператор пишется в отдельной строке. Количество пробелов и знаков табуляции между частями оператора не имеет значения. В записи оператора строчные и прописные буквы равноценны поэтому для повышения читаемости текста ключевые слова обычно начинаются с прописной буквы. Чтобы расположить несколько операторов в одной строке между ними ставится символ двоеточие. В слу- 11

12 чае необходимости расположения одного оператора на нескольких строках следует в конце каждой строки ставить символ подчеркивания отделяя его пробелом от последнего символа строки. В Visual Basic как и в большинстве языков программирования могут быть использованы комментарии. Они предназначены для пояснения отдельных фрагментов программы и игнорируются Visual Basic при выполнении программы. Для выделения начала комментария можно использовать апостроф ( ' ) или оператор Rem. Поскольку Rem оператор он должен быть записан в отдельной строке апостроф может ставиться в любом месте строки при этом текст комментария располагают справа. Visual Basic содержит развитые средства контекстной оперативной помощи пользователю при наборе программного кода. Для уменьшения количества ошибок при написании свойств и методов объектов Visual Basic автоматически отображает список доступных элементов после набора имени объекта и точки. Содержимое списка зависит от типа объекта. Для ввода выбранного элемента необходимо нажать клавишу Tab или дважды щелкнуть мышью на нем вместо того чтобы его набирать но предлагаемую подсказку можно и проигнорировать продолжая набирать текст программы. Существует также и другая возможность ускорения процесса создания программного кода путем автоматической подсказки синтаксиса вводимого оператора или функции. После набора строки и нажатия клавиши Enter цвет ключевых слов изменяется с черного на синий а комментариев с черного на зеленый. Кроме того форматируется текст: строчные буквы в начале ключевых слов заменяются прописными где нужно вставляются пробелы. Это говорит о том что Visual Basic распознал строку как допустимую в противном случае цвет символов строки становится красным и выдается сообщение о синтаксической ошибке. Выделенный фрагмент текста программы можно перемещать и копировать с помощью мыши и буфера обмена. Доступны также и другие команды пункта меню Edit. Запустить программу на выполнение можно несколькими способами: выбрать команду Run Sub в пункте меню Run нажать кнопку (Run Sub) на стандартной панели инструментов или нажать клавишу F5. При этом на экране появится окно созданной формы (точки на форме исчезнут). Работу программы можно закончить закрыв окно формы или нажав кнопку (Reset) на стандартной панели инструментов Отладка программы При разработке программ Visual Basic возможны ошибки. Их можно разделить на три вида: синтаксические ошибки ошибки возникающие при выполнении программы и логические ошибки. Причиной возникновения синтаксической ошибки могут быть неправильно написанные ключевые слова ошибки применения разделителей или недопустимые комбинации операторов. Большинство таких ошибок Visual Basic распознает сразу же после того как курсор покидает строку с оператором. Синтаксические ошибки в многострочных операторах цикла и ветвления не указываются при вводе но при компиляции программы Visual Basic распознает такой незавершенный многострочный оператор выдает сообщение об ошибке и выделяет ошибочный оператор. Сообщение о синтаксической ошибке достаточно информативно и позволяет легко определить причину возникновения ошибки и устранить ее. При компиляции программы Visual Basic также 1

13 определяет имена объектов не связанных с элементами управления на форме и выявляет переменные которые не были явно объявлены ( был записан оператор Option Eplicit в разделе General). Если не использовать оператор Option Eplicit случайные опечатки в программе могут привести к неприятным последствиям. Например в начале программы была явно объявлена и проинициализирована переменная Num затем была допущена опечатка в написании этой переменной: Nim вместо Num. Visual Basic не обнаружил эту ошибку Nim воспринял как переменную типа Variant с начальным значением равным 0 что привело при проведении вычислений к неверному результату. Такую ошибку можно обнаружить визуально и исправить гораздо сложнее найти и устранить ошибку связанную с использованием кириллицы вместо латиницы в одинаковых по начертанию символах. Поэтому одно из важных правил которое должно соблюдаться при программировании на Visual Basic явное объявление переменных и объектов с ключевыми словами Dim Public или Private и запись оператора Option Eplicit в разделе General. Для автоматической вставки оператора Option Eplicit надо установить опцию Require Variable Declaration команды Tools Option вкладка Editor но следует иметь в виду что автоматически будет добавляться этот оператор только во вновь создаваемые модули. На стадии выполнения программы Visual Basic замечает такие ошибки как деление на 0 переполнение извлечение квадратного корня из отрицательного числа открытие несуществующего файла и др. Компилятор сообщает о подобных ошибках в диалоговом окне дающем пользователю возможность либо отладить программу либо завершить ее. При нажатии на кнопку Debug Visual Basic переходит в режим прерывания и выделяет ошибочную по его мнению строку желтым цветом. Если ошибка не слишком серьезная пользователь может внести исправления и продолжить работу программы. Логические ошибки являются следствием плохо разработанного алгоритма плохого учета возможных значений входных данных и т.д. При их появлении программа выполняется корректно но получаются неверные результаты. В среде Visual Basic имеются различные средства которые можно использовать для отслеживания и исправления ошибок в программах. Способы идентификации логических ошибок состоят в установке точек останова (контрольных точек) пошаговом режиме выполнения отлаживаемой программы наблюдении за значениями переменных и др. Основные средства отладки доступны через меню Debug и одноименную панель инструментов. Пошаговый режим работы программы применяется для проверки каждой строки программы в порядке ее выполнения. Есть два режима пошаговой обработки: с заходом в процедуры (Debug Step Into или F8) и без захода в процедуры (Debug Step Over или Shift+F8). Первый из них служит для прохода всей программы строка за строкой. Если в одной из строк происходит вызов процедуры то пошаговое выполнение распространяется и на код этой процедуры: каждый ее оператор выполняется в этом режиме. Для выполнения очередного шага нужно нажать клавишу F8. Следует иметь в виду что подсвечивается тот оператор которому предстоит быть выполненным. Режим Step Over аналогичен режиму Step Into за исключением того что те- 13

14 кущий оператор содержит вызов процедуры то заход в нее не выполняется то есть вся процедура рассматривается как одно действие. Для того чтобы узнать значение какойлибо переменной достаточно задержать на секунду указатель мыши над переменной и в появившемся небольшом окне увидеть это значение. Если же необходимо увидеть значение выражения его следует выделить а затем установить на нем указатель мыши. Пошаговый способ выполнения программы удобен для отладки простейших программ. Когда программа большая или в ней много циклов нажимать на клавишу F8 приходится очень часто. Обычно достаточно останавливаться только на некоторых строках программы. Visual Basic позволяет задавать такие строки так называемые точки останова или контрольные точки. Для этого надо щелкнуть по вертикальной серой полосе в левой части окна кода против строки на которой надо прервать выполнение программы или нажать клавишу F9. Строка на которой установлена контрольная точка выделится красным цветом. Запущенная программа прервется на этой строке после чего строка будет выделена желтым цветом и обозначена стрелкой. Имея прерываемую таким способом программу легко проверять значения переменных перемещаться строка за строкой по программе делать небольшие изменения в коде или продолжать работу программы нажимая клавишу F5. Точка останова может быть отменена щелчком мыши по точке в левой части строки или нажатием клавиши F9. Установленные в среде разработки точки останова не сохраняются вместе с программой и не включаются в EXE-файл при его создании. Кроме контроля хода выполнения программы важной задачей инструментов отладки Visual Basic является проверка значений выражений. Для реализации механизма просмотра предлагается несколько способов. О самом простом способе просмотра было упомянуто выше. Этот способ заключается в установке указателя мыши на соответствующей переменной или выражении в окне кода программы в режиме прерывания. Еще одну возможность просмотра значений выражений предоставляет окно Quick Watch вызываемое командой Debug Quick Watch при этом текстовый курсор должен находиться внутри имени контролируемой переменной. Обычно данное окно используется не только для просмотра значения переменной но и для добавления этой переменной в окно просмотра Watch Window (кнопка Add). Добавить имя контролируемой переменной в окно Watch Window можно также с помощью команды Debug Add Watch причем в этом случае в диалоговом окне Add Watch можно определить дополнительные параметры просмотра и выполнения программы. С помощью команды View Locals Window можно вызвать окно Locals назначение которого показывать в режиме прерывания значения локальных переменных выполняемой процедуры. В окне непосредственных вычислений вызываемом командой View Immediate в режиме прерывания можно вводить и выполнять операторы Visual Basic изменять значения свойств объектов применять методы объектов что позволяет например сымитировать логическую ошибку или вызывать процедуру. Окно непосредственных вычислений можно использовать и по-другому. В этом случае используя объект Debug и его метод Print сообщения окну Immediate посылают из программного кода например Dеbug.Print a summa a*b-c. Возможность такого вывода в окно отладки имеет несколько преимуществ. Во-первых контрольные значения можно выводить не только в 14

15 режиме прерывания но и в режиме выполнения что позволяет выводить значения выражений не останавливая выполнение программы. Во-вторых выведенные значения отражаемые в окне непосредственных вычислений можно просмотреть даже после остановки программы (в окне сохраняются последние 00 строк) Основы программирования на VBA Типы данных В табл. 1.1 приведены типы данных поддерживаемые Visual Basic. Таблица 1.1 Тип Содержимое Память байт Диапазон возможных значений Boolean Логические значения [True False] Byte Однобайтные целые 1 [0; 55] числа Integer Целые числа [-3768; 3767] Long Длинные целые числа 4 [ ; ] Single Double Вещественные числа одинарной точности Вещественные числа двойной точности Currency Денежные единицы (целая часть до 15 цифр дробная 4 цифр) 4 [ ; ] и [ ; ] 8 [ ; ] и [ ; ] 8 [ ; ] Date Дата и время 8 [ ; ] String Текстовая информация (строка) 1 байт для каждого символа До символов для строк фиксированной длины; до символов для динамических строк Variant Любая информация 16 байт для чисел 1 байт на каждый символ для строк Любое числовое или строковое значение Данные типа Boolean содержат только два значения: True (истина) и False (ложь). В Visual Basic значению True соответствует 1 а False 0. Данные типа Byte Integer и Long содержат лишь целые значения из различных диапазонов. Если переменной такого типа присваивается значение 1.4 то возвращается 1 а 1.5 то. В случае переменной присваивается значение вне заданного диапазона то выдается сообщение об ошибке: Overflow (переполнение). Данные типа Single и Double содержат числа с плавающей точкой из разных диапазонов значений. Данные типа Currency также служат для представления чисел с пла- 15

16 вающей точкой но число разрядов после запятой ограничено четырьмя. Этого вполне достаточно при выполнении денежных расчетов. Например Dim a As Single b As Double c As Currency d As double a = / 3 ' Результат: b = / 3 ' Результат: c = / 3 ' Результат: d = ' Результат: Значение переменной d Visual Basic обрезал прямо в программе зная что с такими длинными числами работать не может (максимально 15 значащих цифр). Данные типа String служат для хранения строк. Различают строки переменной и фиксированной длины. Строки переменной длины могут содержать до двух миллиардов символов. Когда такой переменной присваивается значение то размер переменной изменяется так чтобы он соответствовал длине присвоенного строкового значения. Строка фиксированной длины это строка постоянного размера указанного при объявлении переменной. Если такой переменной присваивается значение более длинное то лишние символы отбрасываются. Если значение которое присваивается короче то оставшееся место заполняется пробелами. Для того чтобы Visual Basic отличил строку от имени переменной строка заключается в кавычки. Строковые переменные фиксированной длины описываются следующим образом: Dim VarName As String * Длина_Строки где Длина_Строки целочисленная переменная или константа содержащая число указывающее длину строковой переменной. Например Dim a As String b As String * 8 a = "Информатика" ' Результат: Информатика b = "Информатика" ' Результат: Информат Объявление переменных Переменная это именованная область памяти предназначенная для хранения данных. Таким образом для доступа к содержимому памяти достаточно знать имя переменной. Тип данных задает определенный формат и размер содержимого переменной. Visual Basic в отличие от других языков программирования не требует обязательного явного объявления переменных но явное объявление имеет преимущества: оно более наглядно улучшает читабельность программы более эффективно использует память. Для явного объявления переменной используют оператор Dim имеющий следующий синтаксис: Dim Имя_1 As Тип_1 Имя_ As Тип_ Имя_N As Тип_N где Dim ключевое слово (сокращение от Dimension размерность) сообщающее Visual Basic что декларируется переменная и резервируется область памяти для ее хранения; As (как) ключевое слово сообщающее Visual Basic что определяется тип переменной; 16

17 Имя_1 Имя_N имена переменных (идентификаторы не входящие в перечень ключевых слов Visual Basic и отличающие переменные друг от друга и от других объектов программы); Тип_1 Тип_N типы данных для объявляемых переменных Определение констант Наряду с переменными для хранения информации в программе можно использовать константы. Их особенностью является то что при описании в программе какой-либо константы ей присваивается определенное значение которое в дальнейшем не может быть изменено другими операторами. Неименованные и встроенные константы были рассмотрены выше но часто возникает необходимость описывать в программе собственные константы которые называются пользовательскими присваивая им определенные значения. Они всегда сохраняют значение присвоенное им при разработке. Области видимости для констант определяются так же как и для переменных. Константы бывают локальные контейнера и глобальные. При объявлении констант используется ключевое слово Const. Глобальная константа объявляется как Public при этом необходимо иметь в виду что глобальные константы можно объявлять только в модуле. [Public Private] Const Имя_константы = Значение Одновременно с объявлением константе присваивается и значение. В качестве значения допускается использовать только постоянные значения и их комбинации включая арифметические и/или логические операторы но не функции. Например Const Pi = Const Millennium = #1/01/0001# Const Stroka = "Visual Basic" Примеры демонстрируют преимущество использования констант например при вычислениях с числом в программе не нужно каждый раз вводить длинное число а только имя константы Pi. Еще одно преимущество констант заключается в том что глобальная константа используется в нескольких процедурах то при изменении ее значения оно будет правильно воспринято всеми процедурами. Константы можно объявлять и с указанием типа данных. Для объявления таких констант используется оператор аналогичный тому который применяется при описании переменной: [Public Private] Const Имя_константы As Тип_данных = Значение Для указания типа данных используются те же ключевые слова что и при объявлении переменных. Например Public Const Pi As Double = Выражения Выражения лексические единицы программы которые могут содержать константы переменные указатели функций связанные знаками операций и круглыми 17

18 скобками. Выражение представляет собой формальное правило для вычисления некоторого значения. Выражения входят в качестве составных частей в операторы. В Visual Basic различают арифметические строковые и логические выражения. Все элементы входящие в выражение должные быть совместимы. Например запись "Summa" ошибочна так как производится попытка сложения вещественного числа со строкой. Арифметическое выражение является аналогом обычной алгебраической формулы оно задает правило и определяет порядок выполнения операций при вычислении по формуле. Арифметическое выражение состоит из следующих элементов: числовых констант переменных указателей функций знаков арифметических операций и круглых скобок. Частным случаем арифметического выражения является числовая константа переменная указатель функции. Значения арифметических выражений вычисляются в соответствии с приоритетом арифметических операций: возведение в степень ( ^ ); унарный минус (изменение знака числа); умножение ( * ) и обычное деление ( / ); целочисленное деление ( \ ); вычисление остатка от целочисленного деления ( Mod ); сложение ( + ) и вычитание ( ). Операции с одинаковым приоритетом выполняются в соответствии с порядком их записи в выражении слева направо. Для изменения порядка вычисления арифметического выражения используются круглые скобки. Указатель функции является средством обращения к соответствующей функции и представляет собой одно числовое значение (вещественное или целое) являющееся значением этой функции от значения ее аргументов. При вычислении по формулам некоторые математические функции встречаются очень часто. Для того чтобы программист каждый раз не составлял свою индивидуальную программу для их вычисления в трансляторе имеется набор специальных функций называемых встроенными (стандартными). При обращении к этим функциям необходимо указать идентификатор функции а в скобках аргумент. Приоритет вычисления функций выше чем у арифметических операций. Перечень основных встроенных математических функций Visual Basic представлен в табл. 1.. Таблица 1. Запись на Visual Basic Выполняемые функции Abs(X) X Atn(X) Sin(X) Cos(X) Tan(X) arctg X sin X cos X tg X Ep(X) e X (e основание натурального логарифма) Log(X) Sqr(X) Rnd(X) ln X Квадратный корень X Датчик случайных чисел 18

19 Fi(X) Int(X) Round(X[A]) Sgn(X) Отбрасывание дробной части Наибольшее целое число не превосходящее X Округление числа X с точностью до А десятичных знаков; параметр А не задан то происходит округление до целого значения Возвращает +1 значение аргумента положительное -1 отрицательное и 0 нулевое Аргумент во всех тригонометрических функциях задается в радианах а не в градусах. При необходимости перевода значения заданного в градусах в радианы следует использовать формулу: Радианы = градусы / 180 При вычислении арктангенса необходимо чтобы аргумент находился в пределах интервала: (-/; /). Для перевода натуральных логарифмов в десятичные логарифмы следует использовать формулу: Lg X = Ln X / Ln 10 При использовании датчика случайных чисел генерируется число в интервале (0; 1) при этом аргумент Х в функции Rnd можно опустить. Для нахождения вещественных случайных чисел из интервала (a; b) следует использовать выражение: (b a) * Rnd + a. Функции Fi и Int отбрасывают дробную часть числа и выдают его целую часть. Различаются эти функции по способу округления отрицательных чисел: Int возвращает ближайшее целое меньшее или равное аргументу а Fi ближайшее целое число большее или равное аргументу. Например Int(3.75) 'Результат: 3 Fi(3.75) 'Результат: 3 Int(-3.75) 'Результат: -4 Fi(-3.75) 'Результат: -3 Int((b a) * Rnd + a) 'Результат: случайное целое число из интервала (a;b) В функции Round реализован принцип так называемого «бухгалтерского» округления. В математике «граница» округления до целого проходит по цифре 5 в десятых долях числа. Значение 5.5 будет округлено до 6 а значение 5.49 до 5. В свою очередь «бухгалтерское» округление предусматривает чередование четных и нечетных чисел в подобном «граничном» округлении. При этом четные числа округляются в меньшую сторону (по модулю) а нечетные в большую сторону. Это сделано для повышения точности бухгалтерских расчетов при значительном количестве выполняемых операций. Например Round(3.5 0) 'Результат: 4 Round(.5 0) 'Результат: Round(3.55 1) 'Результат: 3.6 Round(3.45 1) 'Результат: 3.4 При записи арифметических выражений следует соблюдать следующие правила: 19

20 выражение записывать в строку без каких-либо надстрочных или подстрочных символов; нельзя опускать знак умножения между сомножителями; использовать только круглые скобки число открывающих скобок всегда должно равняться числу закрывающих скобок; «лишние» круглые скобки они использованы без нарушения правил не играют никакой роли поэтому когда возникает сомнение в последовательности выполнения операций можно поставить «лишние» скобки. Примеры записи арифметических выражений: 1. a b (a + b) / (c + d) c d. a b a * b / (c * d) или a * b / c / d c d 3. e y ln y y ep(+y) log(sqr(abs(-y^3)))-3.6*y 4. 3 sin cos y 38.3 tg( ) 3 (sin()^+cos(y^3))/(38.3 +tan(pi+))^(1/3) Программирование алгоритмов линейной структуры. Оператор присваивания Оператор присваивания является основным оператором любого языка программирования. Он предназначен для определения или переопределения значения переменной присваивания ей нового значения. Синтаксис оператора такой: Имя_переменной = выражение Принцип работы оператора присваивания: вычисляется значение выражения; при работе с числовыми типами результат вычисления это необходимо преобразуется к типу переменной; полученный результат присваивается переменной а прежнее ее значение таковое было теряется. Например формула d = b + на языке Visual Basic записывается в виде оператора присваивания: d = b + При выполнении этого оператора к значению которое в данный момент имеет переменная b прибавляется и результат присваивается переменной d. Прежнее значение переменной d теряется. С помощью оператора присваивания можно как задавать переменной начальное значение так и изменять то значение которое она уже имеет. Например оператор n = n + 1 увеличит значение переменной n на 1. Этот пример подчеркивает различие между символом присваивания и знаком равенства используемым в математических формулах. Очевидно что запись n = n + 1 не имеет смысла ее рассматривать как обычное уравнение. В арифметическом выражении могут присутствовать величины разных типов например складываются два числа: целое и вещественное. Результатом такого сложе- 0

21 ния будет величина вещественного типа поэтому особое внимание следует обращать на тип той переменной которой он будет присвоен. Если в этом случае типы переменной и присваиваемого ей результата арифметического выражения не будут совпадать например переменная будет типа Integer а значение выражения Single или Double то после выполнения данного оператора значение переменной будет получено путем автоматического округления результата. Например Dim a As Single b As Single c As Integer d As Single a = 3.7: b = 5.65 c = a / b 'Результат: 1 d = a / b 'Результат: При составлении программы линейной структуры нужно руководствоваться следующими правилами: все переменные используемые в программе должны быть объявлены; исходные данные должны быть определены в программе (заданы своими значениями) до момента их использования; последовательность записи операторов в программе определяет и последовательность их выполнения; для повышения эффективности программы повторяющиеся части формул целесообразно обозначать дополнительными переменными и записывать в виде самостоятельных формул; программу для удобства ее чтения целесообразно снабжать комментариями Пример разработки простейших программ Пример 1.1. Разработать приложение (на основе Ecel с использованием формы) в котором при вводе в текстовые поля исходных данных и последующем щелчке мыши по командной кнопке Расчет вычисляется объем пирамиды в основании которой лежит равносторонний треугольник. На листе Ecel должен быть чертеж пирамиды (Вставка Фигуры) формула вычисления объема (Вставка Объект Microsoft Equation 3.0) и кнопка для запуска приложения. Прежде чем приступать к созданию проекта надо разработать алгоритм решения данной задачи. Программист сам должен знать решение задачи ведь программа это инструкция по ее решению. Нельзя давать инструкцию не зная как решать задачу. В данном задании надо знать формулу для вычисления объема пирамиды: 1 V S осн. h 3 Площадь основания т.е. равностороннего треугольника вычисляется по формуле: Итак S осн. 1 a sin60 3 a 4 3 V a h 1 На рис. 1.8 представлен возможный вариант формы проекта. 1

22 Label TetBo1 CommandButton TetBo3 TetBo CommandButton Label Рис. 1.8 Программный код для кнопки Расчет можно записать так: Private Sub CommandButton1_Click() ' Кнопка Расчет Dim a As Single h As Single V As Single a = Val ( TetBo1.Tet ) ' a сторона треугольника h = Val ( TetBo.Tet ) ' h высота пирамиды V= Sqr ( 3 ) / 1 *a ^ * h ' V объем пирамиды TetBo3.Tet = V End Sub Val функция перевода текста в числовой формат. Переменные a h и V имеют тип Single (вещественный с одинарной точностью) т.е. вычисления проводятся с числами с семью значащими цифрами так как под переменную этого типа отводится 4 байта памяти. Если необходима большая точность вычислений то переменные должны иметь другой тип а именно Double. Под переменную типа Double компьютер отводит в памяти 8 байт поэтому она может быть гораздо длиннее (максимум 15 значащих цифр). При выводе результата можно использовать функцию Format(epression fmt) где epression форматируемое численное выражение fmt последовательность символов определяющих отображение epression. Например надо вывести на печать объем V c 3 цифрами в дробной части оператор записи результата в текстовое поле TetBo3 будет выглядеть так: TetBo3.Tet = Format ( V "##.###"). Символ "#" используется для задания количества значащих цифр в целой и дробной части выводимого числа. При V= в текстовое поле будет записано 6.19 а при V = значение Целую часть числа Visual Basic показывает полностью в любом случае какова бы она ни была. Незначащие нули в начале и конце числа игнорируются. Для вывода незначащих нулей используется формат "0.000". Если необходимо вывести символы "+" """$" или пробел то их размещают непосредственно в формате. Программный код для кнопки Сброс можно записать так: Private Sub CommandButton_Click() ' Кнопка Сброс TetBo1.Tet = " "

23 TetBo.Tet = " " TetBo3.Tet = " " End Sub В программах текстовое содержимое текстовых полей должно указываться в кавычках. В данном случае внутри кавычек пусто что и требовалось. Программный код для кнопки Выход можно записать так: Private Sub CommandButton3_Click() End End Sub ' Кнопка Выход Для того чтобы программа контролировала правильность написания используемых переменных в начале программы в разделе General надо записать оператор Option Eplicit. Для удобства запуска приложения целесообразно создать кнопку на листе Ecel. Для этого надо вывести на экран панель Элементы управления (Разработчик группа Элементы управления Режим конструктора Вставить) вставить в любое место листа кнопку в открывшемся диалоговом окне Назначить макрос объекту нажать кнопку Создать и написать код для Кнопки1: Sub Кнопка1_Щелчок() UserForm1.Show End Sub Затем надо изменить надпись на кнопке например Пуск. После выхода из Режима конструктора щелчок по кнопку Пуск запускает приложение (рис. 1.9). Рис.1.9 3

24 Для того чтобы включить в файл написанный программный код необходимо при сохранении книги Ecel выбрать тип файла Книга Ecel с поддержкой макросов. В этом случае расширение файла будет не.ls а.lsm Условный оператор Вычислительный процесс называется разветвляющимся в зависимости от выполнения определенных условий он реализуется по одному из нескольких заранее предусмотренных направлений. Каждое отдельное направление называется ветвью вычислений. Выбор той или иной ветви осуществляется уже при выполнении программы в результате проверки некоторых условий и определяется значениями исходных данных и промежуточных результатов. Для программной реализации таких вычислений в языке Visual Basic имеются специальные операторы передачи управления которые дают возможность перейти из одного места программы в другое и изменить последовательный порядок выполнения ее операторов. К таким операторам относятся операторы перехода условные операторы и операторы выбора. В Visual Basic есть два типа условного оператора однострочный (линейный) и многострочный (блочный). Линейный оператор имеет две формы безальтернативную и альтернативную. Безальтернативная форма имеет следующий синтаксис: If условие Then операторы Альтернативная форма имеет такой синтаксис: If условие Then операторы_1 Else операторы_ Условие является логическим выражением истинность которого оценивается. После ключевых слов Then и Else может стоять один или несколько операторов. В последнем случае они разделяются двоеточием. При значении условия True выполняются операторы_1 стоящие после ключевого слова Then же условие принимает значение False то выполняются операторы_ следующие за ключевым словом Else (альтернативная форма) или ничего не выполняется (безальтернативная форма). Все описанные параметры данной структуры должны быть записаны в одной строке. Например If A = 7 Then Beep If > 0 and < 1 Then y = ^: z = + ep(y) Else y = 0: z = 0 В первом примере выдается звуковой сигнал переменная А равна 7. Во втором примере принадлежит интервалу (0;1) то вычисляются y= и z=+e в противном случае значения переменных y и z обнуляются. Блочный оператор IF Then предоставляет такие же возможности как и линейный оператор но в зависимости от условия необходимо выполнить несколько операторов целесообразно использовать блочный синтаксис. Блочный оператор также может быть безальтернативным и альтернативным. Структура безальтернативного блочного оператора следующая: If условие Then Блок операторов End If 4

25 Здесь End If указывает на окончание блока оператора If. Синтаксис альтернативного блочного оператора таков: If условие Then Блок операторов 1 Else Блок операторов End If Операторы If могут быть вложенными друг в друга. Структура вложенных операторов If следующая: If условие_1 Then If условие_ Then Блок операторов 1 Else Блок операторов End If Else Блок операторов 3 End If При использовании вложенных операторов If важно не перепутать варианты сочетания условий. Существует правило: альтернатива Else считается принадлежащей ближайшему оператору If не имеющему ветви Else. В Visual Basic также предусмотрена конструкция для работы с несколькими операторами If. Эти операторы применяются в случае когда необходимо рассмотреть еще несколько условий в дополнение к исходному условию. Для этого служит конструкция If Then ElseIf. Она позволяет проверить дополнительное условие исходное условие принимает значение False. Синтаксис подобного оператора следующий: If условие_1 Then Блок операторов 1 ElseIf условие_ Then Блок операторов Else Блок операторов 3 End If Например If Обращение=1 Then Label1.Caption="Глубокоуважаемый господин" ElseIf Обращение= Then Label1.Caption="Глубокоуважаемая госпожа" ElseIf Обращение=3 Then Label1.Caption="Глубокоуважаемые дамы и господа" Else Label1.Caption="Люди" End If 5

26 Для выбора одного из значений в зависимости от выполнения или невыполнения некоторого условия используется условная функция IIf имеющая такой синтаксис: IIf(условие значение_1 значение_) Эта функция возвращает значение_1 условие истинно и значение_ условие ложно. Например Y= IIf ( >0 sin() cos()) Если >0 то переменной Y будет присвоено значение sin() в противном случае cos() Операторы циклов Циклы предназначены для многократного повторения одного или нескольких операторов. В Visual Basic существуют два основных типа циклов циклы со счетчиком (с известным числом повторений) и циклы с условием. Цикл со счетчиком в Visual Basic еще называют циклом For Net. Синтаксис этого оператора следующий: For Счетчик = Начальное_Значение To Конечное_Значение [ Step Шаг] Операторы тела цикла [Eit For] Net [Счетчик] В начале выполнения цикла значение переменной Счетчик устанавливается в Начальное_Значение. При каждом проходе переменная Счетчик увеличивается на 1 или на величину шага (Step Шаг является необязательным параметром в заголовке цикла). Когда значение этой переменной становится больше (при отрицательном шаге меньше) конечного значения цикл завершается и выполняется следующий по порядку оператор. Eit For оператор досрочного выхода из цикла (необязательный). Этот оператор используется необходимо "аварийно" завершить цикл при выполнении какого-либо дополнительного условия. Число выполнения цикла можно определить по формуле: (Конечное_Значение Начальное_Значение) / Шаг +1 Примером цикла с известным числом повторений может служить вычисление значения N! (N! = 1 3 N). Значение N должно быть определено до оператора цикла. F=1 For I= To N F=F*I Net I В следующем примере происходит суммирование квадратов четных чисел от до 100. Цикл прерывается досрочно когда значение переменной Sum станет больше Sum=0 For J= To 100 Step Sum=Sum+J^ If Sum>1000 Then Eit For Net J 6

27 Оператор цикла с условием Do Loop используется для организации циклов с неизвестным числом повторений (с предусловием и с постусловием). Для организации цикла с предусловием этот оператор может использоваться в двух модификациях: и Do While условие продолжения цикла Операторы тела цикла Loop Do Until условие прекращения цикла Операторы тела цикла Loop В первом случае операторы тела цикла выполняются пока заданное условие продолжения цикла имеет значение True. Во втором случае операторы тела цикла выполняются до тех пор пока условие прекращения цикла не получит значения True. Для организации цикла с постусловием оператор Do Loop также может использоваться в двух модификациях: и Do Операторы тела цикла Loop While условие продолжения цикла Do Операторы тела цикла Loop Until условие прекращения цикла Условие выполнения или прекращения цикла здесь проверяется в конце поэтому этот цикл обязательно выполняется хотя бы один раз. Например Eps = Val(Tet1.Tet): S = 0: N = 1 Do S = S + 1/N: N = N + 1 Loop Until 1/N < Eps В данном примере суммирование обратных величин натуральных чисел проводится до тех пор пока очередное слагаемое не станет меньше заданного положительного значения Eps. Иногда необходимо прервать цикл Do Loop выполняется какое-либо дополнительное условие. Это может быть выполнено с помощью оператора Eit Do. Для остановки бесконечного циклического процесса надо нажать клавиши Ctrl+Break Пример разработки программ разветвляющихся и циклических вычислительных процессов Пример 1.. Разработать приложение (на основе Ecel с использованием формы) реализующее табулирование функции 6 sin 0 при изменении f ( ) 3 ln 1 38tg 0 аргумента х в диапазоне [0k] с шагом h с использованием элементов управления 7

28 ListBo для отображения значений аргумента и функции. На листе Ecel должен быть записано условие задания и кнопка для запуска приложения. Табулирование функции это построение таблицы значений функции для всех значений аргумента (с учетом шага) в указанном диапазоне поэтому задача состоит в вычислении и выводе на печать значений функции при х=0 0+h 0+h k. Форма представлена на рис Программный код для кнопки Расчет можно записать так: Private Sub CommandButton1_Click() ' Кнопка Расчет Dim 0 As Single k As Single h As Single As Single f As Single 0 = Val(TetBo1.Tet) k = Val(TetBo.Tet) h = Val(TetBo3.Tet) For = 0 To k+h/ Step h If >= 0 Then f = 6 * ^ * sin(sqr()) Else f = log(abs( 1)) * tan()^3 End If ListBo1.AddItem ListBo.AddItem f Net End Sub TetBo1 Label TetBo TetBo3 ListBo1 ListBo CommandButton CommandButton Label Рис В операторе цикла в качестве конечного значения записано выражение k+h/ а не переменная k. Причина в незначительных погрешностях которые допускает компьютер при действиях с вещественными числами. При многократном прибавлении шага значение счетчика х перестает быть точным. Так вместо значения х=1 может получиться х= и k=1 то цикл будет завершен и значение функции при х=1 не будет вычислено. При использовании целых типов все результаты будут абсолютно точными целыми числами. 8

29 Для добавления элементов в список используется метод AddItem. Допускается использование функции Format. Например ListBo.AddItem Format(y "0.000"). Элементы поля списка по умолчанию отображаются в одном столбце (свойство Columns имеет значение 0). Если высота объекта ListBo1 или ListBo не позволяет полностью отобразить все элементы списка то автоматически появляется вертикальная полоса прокрутки. На этапе проектирования при необходимости можно изменить число столбцов с помощью свойства Columns. Заполнение столбцов в этом случае осуществляется последовательно: сначала заполняется первый столбец потом второй и т.д. При Columns 1 применяется горизонтальная прокрутка. При запуске на выполнение программ содержащих циклы можно столкнуться с проблемой "зацикливания". В данном примере это произойдет шаг окажется равным 0. В этом случае программа никак не реагирует ни на мышку ни на клавиши клавиатуры. Для прерывания работы любой программы в том числе и зациклившейся надо нажать комбинацию клавиш Ctrl и Break. Программа прерывает свою работу но не заканчивает. Visual Basic переходит в режим прерывания и оператор программы на котором она была прервана выделяется желтым цветом. Если снова запустить программу она продолжит работу с прерванного места а чтобы начать сначала необходимо завершить работу программы обычным способом. В программном коде процедуры для кнопки Сброс необходимо предусмотреть очистку всех текстовых полей и списков. Удаление всех имеющихся значений в списке можно осуществить с помощью метода Clear. Например ListBo1.Clear. На рис показан результат работы программы на отрезке [-:] с шагом /6. Рис

КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ. ПРОГРАММИРОВАНИЕ НА VISUAL BASIC FOR APPLICATIONS В EXCEL Учебное пособие

КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ. ПРОГРАММИРОВАНИЕ НА VISUAL BASIC FOR APPLICATIONS В EXCEL Учебное пособие КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ ПРОГРАММИРОВАНИЕ НА VISUAL BASIC FOR APPLICATIONS В EXCEL Учебное пособие КАЗАНЬ 2012 УДК 519.682 Печатается по решению заседания учебно-методической комиссии

Подробнее

ДЕРЖАВНА СЛУЖБА УКРАЇНИ З НАДЗВИЧАЙНИХ СИТУАЦІЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ЦИВІЛЬНОГО ЗАХИСТУ УКРАЇНИ

ДЕРЖАВНА СЛУЖБА УКРАЇНИ З НАДЗВИЧАЙНИХ СИТУАЦІЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ЦИВІЛЬНОГО ЗАХИСТУ УКРАЇНИ ДЕРЖАВНА СЛУЖБА УКРАЇНИ З НАДЗВИЧАЙНИХ СИТУАЦІЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ЦИВІЛЬНОГО ЗАХИСТУ УКРАЇНИ КАФЕДРА АВТОМАТИЧНИХ СИСТЕМ БЕЗПЕКИ ТА ІНФОМАЦІЙНИХ ТЕХНОЛОГІЙ Маляров М.В. МЕТОДИЧНІ ВКАЗІВКИ ДО ВИКОНАННЯ

Подробнее

Разработка более сложной формы (прием товаров)

Разработка более сложной формы (прием товаров) Глава 5 Разработка более сложной формы (прием товаров) В этой главе мы рассмотрим технологию создания более сложных форм на примере формы, предназначенной для оформления приема товаров. В качестве источника

Подробнее

РАБОТА С ТЕКСТОВЫМ РЕДАКТОРОМ MS WORD

РАБОТА С ТЕКСТОВЫМ РЕДАКТОРОМ MS WORD Министерство образования и науки Российской Федерации Дальневосточный федеральный университет Инженерная школа РАБОТА С ТЕКСТОВЫМ РЕДАКТОРОМ MS WORD Методические указания к практическим занятиям Владивосток

Подробнее

Никита Культин Лариса Цой

Никита Культин Лариса Цой Никита Культин Лариса Цой Санкт-Петербург «БХВ-Петербург» 2011 УДК 681.3.06 ББК 32.973.26-018.2 К90 К90 Культин, Н. Small Basic для начинающих / Н. Культин, Л. Цой. СПб.: БХВ-Петербург, 2011. 256 с.: ил.

Подробнее

Работа в MS Office 2007. Текстовый процессор Word 2007

Работа в MS Office 2007. Текстовый процессор Word 2007 МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего профессионального образования УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ М. С. Кукушкина,

Подробнее

по информатике ПЕРВЫЙ СЕМЕСТР КОЛОСОВ М.В. КАФЕДРА ТЭС ПИ СФУ 660074, г. Красноярск, ул. Ак. Киренского, 26

по информатике ПЕРВЫЙ СЕМЕСТР КОЛОСОВ М.В. КАФЕДРА ТЭС ПИ СФУ 660074, г. Красноярск, ул. Ак. Киренского, 26 0 Лабораторные по информатике работы ПЕРВЫЙ СЕМЕСТР КОЛОСОВ М.В. КАФЕДРА ТЭС ПИ СФУ 66007, г. Красноярск, ул. Ак. Киренского, 6 СОДЕРЖАНИЕ Лабораторные работы по Основам компьютера и ОС... Лабораторная

Подробнее

Академия АйТи Применение ПСПО. Лекции. Часть 4 Страница 1 из 273

Академия АйТи Применение ПСПО. Лекции. Часть 4 Страница 1 из 273 IV. РАБОТА С ОФИСНЫМИ ПРИЛОЖЕНИЯМИ...3 1. ОСНОВЫ РАБОТЫ С ОФИСНЫМ ПАКЕТОМ OPENOFFICE.ORG...3 Описание продукта...3 Справочная система...3 Краткая история OpenOffice.org...3 Новое в последней версии пакета

Подробнее

Встроенные функции Excel и их использование

Встроенные функции Excel и их использование Ч АСТЬ II Встроенные функции Excel и их использование В этой части... Глава 6. Введение в функции Excel Глава 7. Логические, текстовые и информационные функции Глава 8. Работа с числовыми данными Глава

Подробнее

Введение в Octave для инженеров и математиков. Е. Р. Алексеев, О. В. Чеснокова

Введение в Octave для инженеров и математиков. Е. Р. Алексеев, О. В. Чеснокова В серии: Библиотека ALT Linux Введение в Octave для инженеров и математиков Е. Р. Алексеев, О. В. Чеснокова Москва ALT Linux 2012 УДК 519.67 ББК 22.1 А47 Введение в Octave для инженеров и математиков:

Подробнее

IBM - зарегистрированная торговая марка International Business Machines Corporation.

IBM - зарегистрированная торговая марка International Business Machines Corporation. Информация, содержащаяся в этом документе, может быть изменена без уведомления и не подразумевает обязательств со стороны ADW Software. Программное обеспечение, разработанное ADW Software и описываемое

Подробнее

Structure CAD «не только для ОРЛОВ»

Structure CAD «не только для ОРЛОВ» Structure CAD «не только для ОРЛОВ» Начинающий не должен смущаться, если он обнаружит, что у него не хватает предварительных знаний даже для чтения предварительных сведений. П.ХАЛМОШ Графический интерфейс

Подробнее

Создание и использование форм

Создание и использование форм Глава 8 Создание и использование форм Как уже отмечалось в главах 1 и 2 этой книги, такие объекты базы данных, как формы, предназначены в первую очередь для работы одновременно только с одной записью.

Подробнее

Министерство образования и науки Российской Федерации. Владивостокский государственный университет экономики и сервиса БАЗЫ ДАННЫХ.

Министерство образования и науки Российской Федерации. Владивостокский государственный университет экономики и сервиса БАЗЫ ДАННЫХ. Министерство образования и науки Российской Федерации Владивостокский государственный университет экономики и сервиса БАЗЫ ДАННЫХ Практикум Владивосток Издательство ВГУЭС 2005 ББК 32.973/2-018 Практикум

Подробнее

Информатика 9. Билеты & Ответы

Информатика 9. Билеты & Ответы Информатика 9. Билеты & Ответы Билет 1 1. Понятие информации. Виды информации. Роль информации в живой природе и в жизни людей. Язык как способ представления информации: естественные и формальные языки.

Подробнее

ЧАСТЬ 1. Уроки с 1-5

ЧАСТЬ 1. Уроки с 1-5 Помоги себе сам»: подсказки для начинающего пользователя ЧАСТЬ 1 Уроки с 1-5 Подсказки для начинающи х Оглавление Урок 1 Знакомство с компьютером... 3 Урок 2 Работа с папками и файлами компьютера... 18

Подробнее

Организация дистанционного обучения в системе «MOODLE»

Организация дистанционного обучения в системе «MOODLE» МИНСКИЙ ГОРОДСКОЙ ИНСТИТУТ РАЗВИТИЯ ОБРАЗОВАНИЯ ЦЕНТР ИНФОРМАЦИОННЫХ РЕСУРСОВ СИСТЕМЫ ОБРАЗОВАНИЯ ОТДЕЛ ТЕХНИЧЕСКИХ СРЕДСТВ ОБУЧЕНИЯ И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ Организация дистанционного обучения в системе

Подробнее

BlueJ Инструкция по применению

BlueJ Инструкция по применению BlueJ Инструкция по применению Версия 2.0.1 Для BlueJ Версии 2.0.x Майкл Kölling Mærsk Институт Университет Южной Дании Содержание Авторское право М. Kölling Перевод на русский язык А.Васильченко Содержание

Подробнее

Организация дистанционного обучения в системе Moodle

Организация дистанционного обучения в системе Moodle МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА И ПРОДОВОЛЬСТВИЯ РЕСПУБЛИКИ БЕЛАРУСЬ БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра Экономической информатики Организация дистанционного обучения

Подробнее

/ / ^.. / ^...^ :. г.-!-... -. Т, А. Павловская

/ / ^.. / ^...^ :. г.-!-... -. Т, А. Павловская / / ^.. / ^...^ :. г.-!-... -. Т, А. Павловская C/C++ Программирование на языке высокого уровня Допущено Министерством образования Российской Федерации в качестве учебника для студентов высших учебных

Подробнее

Foxit PhantomPDF Business for HP Руководство пользователя

Foxit PhantomPDF Business for HP Руководство пользователя 1 Copyright 2014 Foxit Corporation. Все права защищены. Запрещается полное или частичное воспроизведение, передача, распространение или хранение в любом виде настоящего издания без предварительного письменного

Подробнее

Система дистанционного обучения Moodle

Система дистанционного обучения Moodle Санкт-Петербургский государственный университет информационных технологий, механики и оптики Кафедра компьютерных образовательных технологий А.В. Белозубов, Д.Г. Николаев Система дистанционного обучения

Подробнее

Операционная система Microsoft Windows

Операционная система Microsoft Windows Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Тихоокеанский государственный университет»

Подробнее

УПРАВЛЕНИЕ ПРОЕКТАМИ

УПРАВЛЕНИЕ ПРОЕКТАМИ ГОСУДАРСТВЕННЫЙ КОМИТЕТ РФ ПО РЫБОЛОВСТВУ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МУРМАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» Кафедра менеджмента,

Подробнее

В. М. Водовозов. Коллективная работа в Access

В. М. Водовозов. Коллективная работа в Access В. М. Водовозов Коллективная работа в Access Санкт-Петербург 2003 УДК 681.3.6 В.М. Водовозов. Коллективная работа в Access. СПб., 2002. 29 с. Рассмотрены вопросы организации коллективной работы и администрирования

Подробнее

АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ. Методические указания к лабораторным работам

АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ. Методические указания к лабораторным работам АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ Методические указания к лабораторным работам Омск 00 Составитель Осипов Вадим Евгеньевич Печатается по решению редакционно-издательского совета Омского

Подробнее

ОРГАНИЗАЦИЯ ДАННЫХ В ВИДЕ ТАБЛИЦ

ОРГАНИЗАЦИЯ ДАННЫХ В ВИДЕ ТАБЛИЦ КАЛИНИНГРАДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Е.Ю. Заболотнова ОРГАНИЗАЦИЯ ДАННЫХ В ВИДЕ ТАБЛИЦ ПРАКТИЧЕСКАЯ РАБОТА С ПРОГРАММОЙ MICROSOFT EXCEL Калининград 2000 УДК 681.3 ББК 32.97 З125 Печатается по решению

Подробнее

Кравченко Г.В., Волженина Н.В. РАБОТА В СИСТЕМЕ MOODLE: РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ Учебное пособие СОДЕРЖАНИЕ

Кравченко Г.В., Волженина Н.В. РАБОТА В СИСТЕМЕ MOODLE: РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ Учебное пособие СОДЕРЖАНИЕ Кравченко Г.В., Волженина Н.В. РАБОТА В СИСТЕМЕ MOODLE: РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ Учебное пособие СОДЕРЖАНИЕ ВВЕДЕНИЕ 3 1. ОСНОВЫ РАБОТЫ С СИСТЕМОЙ ДИСТАНЦИОННОГО ОБУЧЕНИЯ MOODLE 5 1.1. Предпосылки появления

Подробнее

Оглавление. Указания по выполнению лабораторных работ...4. Файловая система. Работа в Norton Commander. Работа в Турбо Паскале...6

Оглавление. Указания по выполнению лабораторных работ...4. Файловая система. Работа в Norton Commander. Работа в Турбо Паскале...6 Оглавление Указания по выполнению лабораторных работ...4 Файловая система. Работа в Norton Commander. Работа в Турбо Паскале...6 Линейные программы. Арифметические и логические выражения на Паскале...14

Подробнее