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

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

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

Транскрипт

1 ДЕРЖАВНА СЛУЖБА УКРАЇНИ З НАДЗВИЧАЙНИХ СИТУАЦІЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ЦИВІЛЬНОГО ЗАХИСТУ УКРАЇНИ КАФЕДРА АВТОМАТИЧНИХ СИСТЕМ БЕЗПЕКИ ТА ІНФОМАЦІЙНИХ ТЕХНОЛОГІЙ Маляров М.В. МЕТОДИЧНІ ВКАЗІВКИ ДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ За темою: «Основи програмування на VBA» (для очної форми навчання) ХАРКІВ

2 Оглавление Роздел 5. Введение в объектно-ориентированное программирование... 3 Лабораторная работа 1. Обзор и настройка редактора. Работа с объектами Лабораторная работа 2. Типы данных в VBA. Функции преобразования типов данных Лабораторная работа 3. Линейный алгоритмический процесс. Математические функции VBA Лабораторная работа 4. Разветвление программ. Использование условных операторов Лабораторная работа 5 Циклические алгоритмы Лабораторная работа 6 Вложенные циклы, вычисление рекуррентных соотношений Лабораторная работа 7 Массивы. Работа с вектором и матрицей Лабораторная работа 8 Строки. Работа с данными символьного типа

3 Роздел 5. Введение в объектно-ориентированное программирование Концепция компьютерного программирования, известная как Object- Oriented Programming (OOP) была разработана в середине восьмидесятых годов. В переводе с английского Object-Oriented Programming означает объектно-ориентированное программирование (сокращенно ООП). Основная идея объектно-ориентированного программирования заключается в объектах, как составных элементах программных приложений. Каждый объект имеет свои собственные специфические качества и поведение. Объектами можно манипулировать, задавать и изменять их свойства и вызывать их методы. Если считать объект существительным, то свойства объекта - это прилагательные, а методы - глаголы. Хорошим инструментом для изучения основ объектно-ориентированного программирования является Visual Basic for Applications (VBA, Visual Basic для приложений) значительно облегченная версия языка программирования Visual Basic (VB), встроенная в оболочку Microsoft Office (Excel, Word, Access, Outlook, PowerPoint и т.д.) и имеющая свои собственные встроенные объекты. Объекты VBA имеют свои свойства и методы. Объектноориентированное приложение организует данные и выполняемые операторы программного кода в связанные объекты, что облегчает разработку, организацию и работу со сложными структурами данных и действиями, выполняемыми над этими данными. Каждый объект в программном приложении содержит данные и операторы, связанные вместе и образующие единый элемент. Большинство приложений содержат много различных типов объектов. В зависимости от того, в какое приложение встроен язык VBA, варьируются и объекты, с которыми он работает. Объекты программирования организуются в виде иерархии, которая называется объектной моделью приложения. В Excel, например, объектами VBA являются рабочие книги (Workbook), листы (Worksheet), диапазоны данных (Range), диаграммы (Chart), диалоговые окна (Window) и само приложение Excel (Application). Объекты VBA в Word документы (Document), диапазоны текста (Range), таблицы (Table), графические объекты, диалоговые окна и само приложение Word. 3

4 Лабораторная работа 1. Обзор и настройка редактора. Работа с объектами. Visual Basic For Application (VBA Visual Basic для приложений) реализован в четырех важнейших компонентах пакета Microsoft Office. Visual Basic For Application представляет собой полностью унифицированный язык программирования и почти полностью унифицированную среду разработки. VВА является общим для всех приложений MS Office. В VBA применяется объектно-ориентированный подход к разработке приложений. Каждое приложение Word, Excel, Access, PowerPoint и др.- дополняет средства VBA новыми функциональными возможностями с помощью объектов, свойств и методов, присущих этому приложению. Как объектноориентированный язык программирования VBA использует следующие основные понятия: объект, свойство, метод, событие, класс и семейство объектов. Объект это объединение данных с кодом, предназначенным для их обработки. Объекты применяются в программировании, потому что они представляют предметы, о внутренней организации которых и о том, как они сделаны, программисту не обязательно даже знать, но он может ими пользоваться и управлять. К основным встроенным объектам VBA относятся Label TextBox ComboBox ListBox CheckBox OptionBox Frame CommandBotton Image UserForm Свойства это параметры объекта, которые ему присущи. Они характеризуют объект. Все свойства объекта имеют свои имена. Различные объекты характеризуются различными свойствами, например, объект «линия» характеризуется длиной и цветом, а объект «окружность» радиусом и цветом. Синтаксис задания свойства объекту имеет вид ОБЪЕКТ.СВОЙСТВО = ЗНАЧЕНИЕСВОЙСТВА Основные свойств объектов приведены ниже (Name) Caption Font Left Top Visible Text Enabled Width Height 4

5 Picture Tag Метод это программа, которая воздействует на объекты и их параметры. С помощью методов можно, например, закрыть объект, удалить его, или показать на экране. Синтаксис записи такой: ОБЪЕКТ.МЕТОД Событие это действие, распознаваемое объектом, для которого можно запрограммировать отклик (например, щелчок мышью по строке меню или нажатие клавиши). При наступлении события происходит активизация метода, т.е. начинают выполняться связанные с объектом программы и функции. К событиям относятся: Click DblClick KeyDown KeyPress KeyUp MouseDown MouseMove MouseUp Change Enter Класс это шаблон, на основе которого во время выполнения программы создается объект. Класс определяет свойства и методы объекта. Если взять пример из жизни, то в качестве класса объектов можно принять школьный класс, где объекты это учащиеся, каждый со своими, присущими только ему свойствами. Также каждому объекту в классе присущи одно или несколько одинаковых свойств, например возраст, по которому и определяется принадлежность объекта к классу. Объект, который создается на основе класса, называют экземпляром класса. Код VВА хранится в проектах. Проекты содержат модули, а модули включают процедуры и функции. Процедуры и функции содержат описания и инструкции на языке VBA. Для программирования на VBA нет необходимости в обязательном порядке устанавливать какую-либо версию транслятора Visual Basic. Вполне достаточно, если на компьютере будет установлен Microsoft Office. Для создания программы, которая называется макросом, необходимо загрузить Microsoft Word или Microsoft Excel. Далее выполнить команду Сервис- Макрос-Редактор Visual Basic. В окне проекта автоматически будет созданы операторы для объявления процедуры (программы) Sub ИМЯ() Это стандартный заголовок макроса. Завершающей строкой процедуры является строка 5

6 Задание 1 Ознакомиться с основными компонентами среды редактора Visual Basic, выработать умения и навыки работы с компонентами интегрированной среды разработки проектов. Порядок выполнения 1. Откройте приложение Microsoft Word, выполнив команду Пуск Программы Microsoft Office Microsoft Word. 2. Выполните команду Сервис Макрос Безопасность и установите следующие параметры безопасности: Во вкладке Безопасность выберите переключатель Средняя. Во вкладке Надежные изделия установите флажок Доверять доступ к Visual Basic Project. 3. Закройте окно приложения Microsoft Word, повторите п.1 и проверьте, сохранились ли параметры безопасности, которые были установлены в п Откройте окно интегрированной среды разработки приложений редактора Visual Basic командой Сервис Макрос Редактор Visual Basic или нажатием комбинации клавиш ALT+F Удалите, а потом восстановите окно проекта Project и окна свойств Properties. Сделайте схематические рисунки кнопок панели инструментов ( и ), с помощью которых восстанавливаются эти окна. 6. Добавьте в проект окно формы, щелкнув кнопку Insert UserForm, которая расположена на стандартной панели инструментов и запишите значения свойств формы Name и Caption. 7. Сделайте схематический рисунок главного окна среды редактора Visual Basic. 8. Добавьте к проекту еще одну форму, щелкнув кнопку Insert UserForm, узнайте значения ее свойств Name и Caption. После этого удалите последнюю форму. Для этого щелкните правой клавишей мыши на ее значке в окне проекта Project и из контекстного меню выберите команду Remove, а затем нажмите кнопку Нет, отвечая на запрос, об экспорте формы. 9. Найдите на панели элементов управления ToolBox кнопки следующих элементов: Label, TextBox, Image, и CommandButton и сделайте их схематические рисунки. 10. Двойным щелчком мыши на форме вызовите окно кода, найдите выпадающие списки Procedure и Object. Сделайте схематический рисунок окна кода. 11. С помощью панели инструментов окна проекта перейдите из окна кода в окно формы и обратно. Нарисуйте кнопки ( и ), которые обеспечили эти переходы. 6

7 12. Запустите программу на выполнение, щелкнув на свободном месте формы, а затем на кнопке Run (или нажмите клавишу F5), а потом завершите ее работу. Опишите, как изменялся внешний вид формы. 13. Сохраните документ Word вместе с программой в своей папке (имя файла Лаб1_1.doc) и закройте окно Word. 14. Двойным щелчком мыши на значке документа Лаб1_1.doc откройте его. При открытии ответьте на запрос отключать ли макросы, нажав кнопку Не отключать макросы, а затем перейдите в окно интегрированной среды разработки приложений редактора Visual Basic и убедитесь, что в нем имеется форма UserForm. 15. Завершите работу в приложении Microsoft Word. Задание 2 Создать в среде редактора Visual Basic форму с двумя надписями, двумя кнопками и рисунком по приведенному эскизу. Порядок выполнения 1. Находясь в среде Ms Word или другого приложения из Microsoft Office, нажмите ALT+ F11, чтобы перейти в среду VBA. 2. На панели инструментов щелкните кнопку Insert UserForm. Появляется окно с формой UserForm1. 3. В окне свойств Properties измените значение свойства (Name) на First_frm, a значение свойства Caption на Моя первая форма. Обратите внимание на изменение внешнего вида формы. 4. Добавьте на форму новую надпись. Для этого найдите на панели элементов управления ToolBox кнопку Label, щелкните по ней мышкой, а затем выполните щелчок на окне формы (также можно перетащить кнопку с панели ToolBox на окно формы). 5. Для вставленной надписи в окне свойств Properties измените значение свойства Caption на Добрый день!!!. Обратите внимание на изменение внешнего вида формы. 6. Вставьте на форму еще одну надпись, повторив пункты 4 и Для добавления кнопки необходимо найти на панели элементов управления ToolBox кнопку CommandButton и вставить ее на форму. 7

8 8. Для вставленной кнопку в окне свойств Properties измените значение свойства (Name) на cmdцвет, a значение свойства Caption на Изменить цвет. 9. Аналогично вставить еще одну кнопку, изменив значение свойств (Name) на cmdвидимость, a значение свойства Caption на Изменить Видимость 10. Для добавления рисунка необходимо найти на панели элементов управления ToolBox кнопку Image и вставить ее на форму. 11. Для вставленного рисунка в окне свойств Properties измените значение свойства (Name) на imgсмайл, затем перейдите к свойству Picture нажмите кнопку и в появившемся окне укажите путь к файлу рисунка. 12. Для корректного отображения рисунка для свойства PictureSizeMode выберите то значение, при котором рисунок отображается наиболее правильным образом. Задание 3 Доработать форму, созданную ранее, чтобы при помощи кнопок изменялся цвет надписей и видимость рисунка. Также необходимо предусмотреть возврат формы в исходный вид. Анализ проекта Необходимо создать код процедуры, которая обрабатывает событие Click для кнопки Изменить цвет при этом цвет надписи Label1 должен измениться на синий (свойство ForeColor = vbblue), а цвет надписи Label2 на красный (свойство ForeColor = vbred). Событие Click для кнопки Изменить видимость должно изменить свойство Visible рисунка imgсмайл чтобы рисунок стал невидимым (свойство Visible = False). Щелчок мыши в любой части формы (событие Click) должен привести форму в исходный вид (надписи черные (свойство ForeColor = vbblack), рисунок видимый (свойство Visible = True)). Порядок выполнения 1. Дважды щелкните на кнопке Изменить цвет. В результате открывается окно кода VBA в котором автоматически создается пустая процедура с заголовком Private Sub cmdцвет_click() и концом. 2. Внутри процедуры введите следующий текст: Private Sub cmdцвет_click() Label1.ForeColor = vbblue Label2.ForeColor = vbred 3. Аналогично щелкнув по кнопке Изменить видимость создадим следующую процедуру: 8

9 Private Sub cmdвидимость_click() imgсмайл.visible = False 4. Для возврата формы в исходный вид дважды щелкните на любом свободном месте формы и введите следующий текст процедуры Label1.ForeColor = vbblack Label2.ForeColor = vbblack imgсмайл.visible = True 5. Запустите программу на выполнение, щелкнув на свободном месте формы, а затем на кнопке Run (или нажмите клавишу F5). 6. Проанализируйте работоспособность программы. 7. Сохраните документ в файле Лаб1_3.doc в своей папке на жестком диске. Задание для самостоятельной работы Создать в среде редактора Visual Basic форму по приведенному эскизу. При наведении мышки на соответствующую кнопку цвет надписи должен изменяться. При наведении на форму цвет надписи должен принять исходный вид Результат работы: 1. Файл Лаб1_1.doc с формой UserForm. 2. Файл Лаб1_3.doc с формой First_frm. Вопросы для самоконтроля 1. Что такое ООП (объектно-ориентированное программирование)? 2. Как расшифровывается аббревиатура VBA? 3. Что такое в терминах ООП объект, свойство, метод, событие? 4. За что отвечает свойство (Name), Caption, Font, Visible, Picture? 5. Какие события Вы знаете? 6. С помощью какой команды открывается среда редактора VBA? 9

10 Лабораторная работа 2. Типы данных в VBA. Функции преобразования типов данных. Любая программа на языке VBA может состоять из одного или нескольких модулей. Модуль VBA это текст программы, вставленный в рабочую книгу MS Excel или документ Ms Word. Модуль включает в свой состав функции и процедуры. Описание процедуры начинается с заголовка Sub, за которым находится имя процедуры и список ее формальных параметров, заключенных в круглые скобки. Процедура заканчивается оператором End Sub. Sub имя_процедуры ([аргументы]) Инструкции процедуры Обычно любой текст программы на языке VBA начинается с опций, которые управляют описанием переменных, способом задания индексов массивов и т.п. Затем следуют объявления глобальных переменных или констант для данного модуля, т.е таких переменных, которые можно использовать во всех процедурах модуля. Далее непосредственно располагается текст функций и процедур, составляющих саму программу. Начало модуля Опции VBA (Option Base 1, Option Explicit) Описание глобальных констант Описание глобальных переменных Sub имя_процедуры ([аргументы]) Описание констант Описание переменных Ввод исходных значений Инструкции процедуры Вывод полученных результатов Конец модуля Описание констант осуществляется ключевым словом Const, и при описании константы требуется присвоить ей значение. Попытка изменить в ходе выполнения программы значение константы вызывает ошибку. Const <имяконстанты> [As <типданных>] = <значение> Описание переменных в VBA возможно с использованием переменных различных типов. Выбор типа основывается на требованиях создаваемого приложения. Основными типами данных VBA являются целочисленный тип 10

11 (Integer и Long), вещественный тип (Single и Double), логический (Boolean), дата-время (Date), денежный (Currency), строковый (String), а также существует тип Variant, используемый по умолчанию. Он задается VBA, если переменная не описана. При этом производится проверка значения, вводимого в память и его идентификация, поэтому резко возрастает и время выполнения программы, и объем памяти. Для описания переменных чаще всего используется инструкция Dim, которая имеет синтаксис: Dim имяпеременной [([ индексы])] [As тип] Параметр имяпеременной - имя описываемой переменной. Необязательные скобки и параметр индексы используются для описания массивов. Дополнительный параметр As тип позволяет назначить переменной требуемый тип данных. Если тип не назначен, то переменной присваивается тип Variant. Помимо организации ввода-вывода информации с помощью формы в VBA существуют две возможности создания диалоговых окон, позволяющих вести интерактивный диалог с пользователями. Это окно вывода сообщений MsgBox, которое выводит простейшие сообщения для пользователя, а окно ввода InputBox, обеспечивающее ввод информации. Функция InputBox выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа String, содержащее текст, введенный в поле. InputBox(сообщение [,заголовок] [,default]) При этом сообщение строковое выражение, отображаемое как сообщение в диалоговом окне; заголовок строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку помещается имя приложения; Default строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода отображается пустым; Чтобы передать информацию, введенную в поле ввода функции InputBox, программе, присваивают значение строковой переменной, например: strsity = InputBox( В каком городе Вы родились?, "Опрос", "В Харькове") Процедура MsgBox выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа Integer, указывающее, какая кнопка была нажата. MsgBox(сообщение [, кнопки] [, заголовок]) 11

12 Аргументами процедуры являются сообщение строковое выражение, отображаемое как сообщение в диалоговом окне; кнопки - числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Заголовок строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку помещается имя приложения. В программах на VBA очень часто приходится преобразовывать значения из одного типа данных в другой. Несколько типичных ситуаций, когда этим приходится заниматься: преобразование из строкового значение в числовое при приеме значения от пользователя через функцию InputBox(); преобразование из числового значения в строковое при выводе значения через процедуру MsgBox; преобразование значения даты/времени в строковое, когда нам нужно отобразить дату или время единообразно вне зависимости от региональных настроек на компьютерах пользователей; Чаще всего для конвертации типов данных используются функции, имя которых выглядит как C (от слова Convert) + имя типа данных. Вот перечень этих функций: CBool(), CByte(), CCur(), CDate(), CDbl(), CDec(), CInt(), CLng(), CSng(), CStr(), CVar(), CVDate(). Кроме того, еще несколько полезных для конвертации функций: Str() позволяет перевести числовое значение в строковое. Делает почти то же самое, что и CStr(), но при этом вставляет пробел впереди для положительных чисел. Val() "вытаскивает" из смеси цифр и букв только числовое значение. При этом эта функция читает данные слева направо и останавливается на первом нечисловом значении (допускается единственное нечисловое значение точка, которая будет отделять целую часть от дробной). nvar1 = Val(InputBox("Введите значение")) В текст программы также можно добавлять комментарии. Комментарии это текст, поясняющий назначение и порядок производимых в программе действий. Этот элемент программирования необязательный, но он позволяет облегчить понимание внутренней логики программы. Комментарий обозначается символом апострофа ( ) или ключевым словом Rem. Все, что записано левее этих знаков, относится к комментарию, и будет игнорироваться программой. 12

13 Задание 1 Создать программу калькулятора для выполнения простейших действий над двумя числами (сложение, вычитание, умножение, деление, возведение в степень). Порядок выполнения 1. Откройте приложение Microsoft Word, выполнив команду Пуск Программы Microsoft Office Microsoft Word. 2. Находясь в среде Ms Word нажмите ALT+ F11, чтобы перейти в среду VBA. 3. На панели инструментов щелкните кнопку Insert UserForm. Появляется окно с формой UserForm1. 4. В окне свойств Properties измените значение свойства (Name) на frmcalc, a значение свойства Caption на Простейший калькулятор. 5. Добавьте на форму надпись. Для этого найдите на панели элементов управления ToolBox кнопку Label, щелкните по ней мышкой, а затем выполните щелчок на окне формы (также можно перетащить кнопку с панели ToolBox на окно формы). 6. Для вставленной надписи в окне свойств Properties измените значение свойства Caption на Первое число. 7. Для добавления текстового поля ввода необходимо найти на панели элементов управления ToolBox кнопку TextBox и вставить ее на форму. 8. Для вставленного текстового поля в окне свойств Properties измените значение свойства (Name) на txt1. 9. Действуя аналогично, создайте форму согласно эскизу, установив в окне свойств Properties значение свойств (Name) и Caption которые приведены ниже. Свойство (Name) 1 1 frmcalc 5 2 txt1 7 CmdStepen txt2 8 CmdMinus txtrez 9 CmdPlus CmdUmn CmdDel 10. Перейдите в окно кода, дважды щелкнув кнопку * (умножить), и введите следующий текст процедуры 13

14 Private Sub cmdumn_click() txtrez = txt1 * txt2 11. Перейдите в окно кода, дважды щелкнув кнопку / (разделить), и введите следующий текст процедуры Private Sub CmdDel_Click() txtrez = txt1 / txt2 12. Аналогично введите тексты процедур для остальных кнопок: возведение в степень Private Sub CmdStepen_Click() txtrez = txt1 ^ txt2 вычитание Private Sub CmdMinus_Click() txtrez = txt1 - txt2 сложение Private Sub CmdPlus_Click() txtrez = txt1 + txt2 13. Запустите программу на выполнение, щелкнув на свободном месте формы, а затем на кнопке Run (или нажмите клавишу F5). 14. В поле Первое число введите число 6, а в поле Второе число введите 3 и последовательно нажимая кнопки, проверить результаты вычислений. Обратите внимание, результат сложения чисел равняется 63. Это происходит потому, что VBA воспринимает числа, вводимые в поле TextBox, как текст. Соответственно, результат сложения текста (конкатенация) равняется 63. Для получения правильного результата необходимо преобразовать вводимее в поле TextBox значения в числовые с помощью команды Val(). При этом текст процедуры примет вид Private Sub CmdPlus_Click() txtrez = Val(txt1) + Val(txt2) 15. Снова проанализируйте работоспособность программы и сохраните документ в файле Лаб2_1.doc в своей папке на жестком диске. 14

15 Задание 2 Создать диалоговый интерфейс с пользователем, при котором программа запросит имя пользователя и выведет диалоговое окно с приветствием. Порядок выполнения 1. Откройте приложение Microsoft Word и перейдите в среду VBA нажав клавиши ALT+F11 2. В окне свойств Project щелкните кнопку View code (или выполните двойной щелчок мышкой на пункте ThisDocument). Появляется окно кода VBA. 3. Перейдите в окно кода и введите следующий текст процедуры Sub Primer2() Dim Name As String 'Опишем строковую переменную ' Создаем диалоговое окно ввода имени Name = InputBox("Введите ваше имя", "Запрос имени") ' Создаем окно вывода приветствия MsgBox ("Добрый день, " + Name + "! " + "Как Ваши дела?") 4. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5) и проанализируйте работоспособность программы. 5. Сохраните документ в файле Лаб2_2.doc в своей папке на жестком диске. Задание 3 Для ликвидации чрезвычайной ситуации пожарный автомобиль установлен для перекачки на источник воды. Известно дата и время включения и выключения наcоса и количество литров перекаченной воды. Определить производительность насоса пожарного автомобиля. Анализ проекта Для реализации проекта введем следующие обозначения. Тип Date: T1, T2 дата и время включения и выключения насоса автомобиля; тип Integer: T количество часов работы насоса; тип Single: V количество литров перекаченной воды, Q производительность насоса пожарного автомобиля. Решение задачи производится в следующем порядке. Предварительно задаются T1 и T2. В качестве T1 принимаем текущую дату и время, а в качестве T2 увеличенное на один час время T1. При необходимости 15

16 времена T1 и T2 изменяются, далее вычисляется время работы насоса T=T2- T1 и его производительность Q=V/T. Порядок выполнения 1. Находясь в среде Ms Word или другого приложения из Microsoft Office, нажмите ALT+ F11, чтобы перейти в среду VBA. 2. На панели инструментов щелкните кнопку Insert UserForm. Появляется окно с формой UserForm1. 3. Создайте форму согласно эскизу, установив в окне свойств Properties значение свойств (Name) и Caption которые приведены ниже. Свойство (Name) 1 1 frmwater 2 2 txtt1 3 3 txtt2 4 4 txtv cmdвычислить txtq 4. Перейдите в окно кода, дважды щелкнув на пустом месте формы и из выпадающего списка Procedure, который расположен в правом верхнем углу окна кода выберите событие Activate и введите следующий текст процедуры Private Sub UserForm_Activate() 'Текущие дата и время txtt1=format(now, "dd/mm/yy h:mm") 'Через час txtt2=format(dateadd("h",1, Now), "dd/mm/yy h:mm") 5. Также самой первой строкой кода введите Option Explicit Данный оператор требует, чтобы все переменные, используемые при работе программы, были описаны (можно использовать только то, что есть на форме или указано в Dim или Const). 6. Перейдите на форму, дважды щелкните кнопку Вычислить, и введите следующий текст процедуры Private Sub cmdвычислить_click() 'Описание переменных Dim T1 As Date 'Время включения насоса Dim T2 As Date 'Время выключения насоса 16

17 Dim V As Single 'Перекачено воды Dim Q As Single 'Водоотдача насоса Dim T As Long 'Время работы насоса 'Вводим исходные данные T1 = CDate(txtT1) T2 = CDate(txtT2) V = CSng(txtV) T = DateDiff("h", T1, T2) 'Время работы насоса Q = V / T 'Вычисляем Водоотдачу насоса 'Выводим Водоотдачу насоса txtq = Format(Q, "0.0") & " л/час" 7. Запустите программу на выполнение, щелкнув на свободном месте формы, а затем на кнопке Run (или нажмите клавишу F5). 8. Проанализируйте работоспособность программы при различных значениях времени включения и выключения насоса. 9. Сохраните документ в файле Лаб2_3.doc в своей папке на жестком диске. Задание для самостоятельной работы 1. Так как время работы насоса (задание 3) вычислено в часах, то производительность насоса вычислена не очень точно. Доработать программу таким образом, чтобы производительность насоса измерялась в л/мин (л/сек). 2. Составить программу определяющую сколько лет, месяцев и дней прошло от вашего дня рождения до текущей даты? Результат работы: 3. Файл Лаб2_1.doc с формой Простейший калькулятор 4. Файл Лаб2_2 с выполненным заданием. 5. Файл Лаб2_3 с формой Производительность насоса Вопросы для самоконтроля 1. Каким оператором начинается и заканчивается процедура? 2. Приведите типовую структуру программ на VBA. 3. Какие типы данных используются в VBA? 4. Как описываются константы и переменные в теле программы. 5. Приведите синтаксис функции InputBox и процедуры MsgBox. 6. Какие функции преобразовывают строковую переменную в числовую и обратно? 17

18 Лабораторная работа 3. Линейный алгоритмический процесс. Математические функции VBA. отдельности. Встроенные математические функции VBA используются для более сложных вычислений, которые не могут быть получены с использованием простых операций. Математические функции VBA используются для обработки отдельных чисел и не могут применяться к массивам (группам) чисел. Если в этом есть необходимость, то нужно обрабатывать каждый элемент в Основными математическими функциями VBA являются: Функция Выполняемое действие Atn(x) Sin(x) Cos(x) Tan(x) Возвращение арктангенса угла в радианах Возвращение синуса угла в радианах Возвращение косинуса угла в радианах Возвращение тангенса угла в радианах Exp(x) Возвращение значения e x, где x - значение переменной или введенное число Log(x) Sqr(x) Возвращение натурального логарифма числа Возвращение квадратного корень числа Randomize Инициирование генератора случайных чисел Rnd(x) Abs(x) Возвращение случайного числа Возвращение абсолютного значения числа (по модулю) Sgn(x) Возвращение знака числа (+ или -) Fix(x) Возвращение округленного значения числа отсечением дробной части Int(x) Возвращение округленного значения числа до ближайшего целого При вызове встроенной функции следует указать в круглых скобках ее аргумент. Исключение составляет функция Randomize, которая включает генератор случайных чисел и не имеет аргумента. 18

19 Задание 1 3 e x sin Найти значения переменной у, заданные формулой z 4, 5 y x 3, 5 z b при различных значений х, z, b. Исходные данные вводить с клавиатуры. x Анализ проекта Программа состоит из трех шагов: ввод значений х, z, b; вычисление у для этого значения; вывод полученного результата. Определяем переменные, участвующие в программе: их имена и типы. Пусть х, z, b и результат у будут вещественного типа Single (целый тип Integer для у брать нельзя, т.к. операция извлечения корня и функция sin (х) могут дать в качестве результата вещественные числа). В начале программы следует поставить описания этих переменных. Ввод чисел организуем при помощи функции InputBox, вывод оператором MsgBox. Значение функции InputBox и аргумент оператора MsgBox имеют строковый тип (String), поэтому необходимо преобразовать введенные значения в число (String в Single), a результат в строку (из Single в String). В программе участвуют встроенные функции - извлечение корня и вычисление синуса и экспоненты. В VBA это Sqr(x), Sin (х) и Exp(x). Порядок выполнения 1. Откройте приложение Microsoft Word и перейдите в среду VBA нажав клавиши ALT+F11 2. В окне свойств Project щелкните кнопку View code (или выполните двойной щелчок мышкой на пункте ThisDocument). Появляется окно кода VBA. 3. Перейдите в окно кода и введите следующий текст процедуры Sub Primer1() ' Описание переменных Dim x As Single, z As Single, b As Single Dim y As Single ' Ввод исходных значений x = Val(InputBox("Введите число х=")) z = Val(InputBox("Введите число z=")) b = Val(InputBox("Введите число b=")) ' Вычисление y y = (Exp(x) + Sin(z)^3-4.5*Sqr(x)) / (z^x + b^3.5) 19

20 ' Вывод y на экран MsgBox ("Значение y= " & Str(y)) 4. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5) и проанализируйте работоспособность программы с различными исходными значениями. 5. Сохраните документ в файле Лаб3_1.doc в своей папке на жестком диске. Задание 2 Найти значения переменной у, заданные формулой 3 y 3 x cos x x различных значений х. Исходные данные вводить и выводить на рабочий лист Excel. при Анализ проекта Программа состоит из трех шагов: ввод значения значений х; вычисление у для этого значения; вывод полученного результата. Пусть х и результат у будут вещественного типа Single. В начале программы следует поставить описания этих переменных. Для организации ввода вывода можно использовать рабочий лист Excel. Ячейки листа имеют имена Cells (i, j ), где i - номер строки, j - номер столбца. Например, ввод значения переменной х из ячейки А1 выглядит в программе так: х = Cells(1,1), а вывод результата - значения х в ячейку, например, С2 (третий столбец) реализуется так: Cells(2,3) = х В программе участвуют встроенные функции - вычисление косинуса и определение модуля числа. В VBA это Abs(x) и Cos (х). Отметим, что извлечение корня любой степени из числа эквивалентно операции возведения этого числа в дробную степень. В общем виде n 1 n x x. Порядок выполнения 1. Откройте приложение Microsoft Excel и на рабочем листе Лист 1, создайте заготовку по следующему эскизу 20

21 2. Перейдите в среду VBA нажав клавиши ALT+F11 3. В окне свойств Project щелкните кнопку View code (или выполните двойной щелчок мышкой на пункте ThisDocument). Появляется окно кода VBA. 4. Перейдите в окно кода и введите следующий текст процедуры Sub Primer2() ' Описание переменных Dim x As Single Dim y As Single ' Ввод исходных значений с ячейки B1 x = Cells(1, 2) ' Вычисление y y = Abs(x) ^ 1 / 3 + Cos(x) + x ^ 3 ' Вывод y в ячейку B2 Cells(2, 2) = y 5. Вернитесь на рабочий лист и введите исходное значение x=3 в ячейку B1. 6. Перейдите в среду VBA и запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5) и проанализируйте работоспособность программы с различными исходными значениями. 7. Сохраните документ в файле Лаб3_2.xls в своей папке на жестком диске. Задание 3 Обменять значения двух переменных вводимых с клавиатуры. Анализ проекта Пусть имена переменных х и у. Задача состоит в том, чтобы переменная х получила значение переменной у и наоборот: у получил значение переменной х. Необходимо помнить, что в любых операциях обмена значений переменных требуется посредник - дополнительная переменная для хранения промежуточного результата (старого значения одной из исходных переменных). Пусть такой переменной-посредником будет rab. Порядок выполнения 1. Откройте приложение Microsoft Word и перейдите в среду VBA нажав клавиши ALT+F11 2. В окне свойств Project щелкните кнопку View code (или выполните двойной щелчок мышкой на пункте ThisDocument). Появляется окно кода VBA. 21

22 3. Перейдите в окно кода и введите следующий текст процедуры Sub Primer3() ' Описание переменных Dim x As Single, rab As Single Dim y As Single ' Ввод исходных значений x = Val(InputBox("Введите значение x=")) y = Val(InputBox("Введите значение y=")) ' Обмен переменных rab = x x = y y = rab ' Вывод на экран MsgBox ("Значение x= " & Str(x) & " Значение y= " & Str(y)) 4. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5) и проанализируйте работоспособность программы с различными исходными значениями. 5. Сохраните документ в файле Лаб3_3.doc в своей папке на жестком диске. Задание для самостоятельной работы 1. Найти значение переменной у при различных значениях А, В, С, вводимых с листа Excel, и значениях х, z, вводимых с клавиатуры: xb C cos z y x 1 x A A 1 2. Заданы три действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел. 3. Задано длина ребра куба. Найти объем куба и площадь его поверхности. Результат работы: 1. Файлы Лаб3_1.doc, Лаб3_2.xls, Лаб3_3.doc с выполненным заданием. Вопросы для самоконтроля 1. Какие математические функции VBA вы знаете? 2. Как организуется ввод и вывод значений на рабочий лист Excel? 22

23 Лабораторная работа 4. Разветвление программ. Использование условных операторов. Условный оператор является одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы. Эта алгоритмическая структура представляет разветвление алгоритма в зависимости от значения (истинности или ложности) некоторого условия. В общем виде синтаксическая конструкция выглядит следующим образом: Если условие то оператор1 иначе оператор2, и читается как «если условие истинно, то выполнить оператор1, иначе (если условие ложно), выполнить оператор2». В VBA различают строчный и блочный условные операторы. Строчный условный оператор используется в том случае, когда при разветвлении программы необходимо на каждой ветке выполнить по одному оператору. Синтаксис строчного оператора выглядит следующим образом If условие Then [оператор1] [Else оператор2]. Блочный условный оператор необходим тогда, когда операторов несколько и синтаксис оператора будет следующий If условие Then [Блок операторов] [Else [Блок операторов]] End If Обязательный параметр условие представляет собой логическое выражение, которое возвращает значение TRUE (истина) или FALSE (ложь). Логическое выражение может быть простым или сложным. Сложные условия образуются с помощью логических операций and, or, not. Если условие равно TRUE, то выполняется оператор1, если условие равно FALSE, то выполняется оператор2. Далее выполняется инструкция, следующая по порядку за строкой с инструкцией If... Then...Else. Часть оператора If, а именно ключевое слово Else и следующие за ним инструкции можно опустить, тогда при условии равном FALSE выполняется оператор, следующий за строкой с инструкцией If. Т.е. синтаксис оператора выглядит так: If условие Then [оператор] На блок-схемах эти два случая изображаются следующим образом: 23

24 Еще одним условным оператором в VBA является оператор Select Case. Это оператор выбора из многих возможных вариантов. Оператор Select Case выполняет одну из нескольких групп операторов в зависимости от значения выражения. В языках высокого уровня такой оператор называется переключателем. Синтаксис инструкции Select Case и блок-схема алгоритма приведены ниже. Select Саsе выражение [Case список условий-1 [операторы-1]] [Саsе список условий-2 [операторы-2]] [Саsе список условий-n [операторы-n]] [Case Else [операторы_ else]] End Select список-1 список-2 список-n иначе селектор оператор-1 оператор-2 оператор-n Обязательный параметр выражение может быть любым выражением любого типа данных VBA, включая числовой, строковый, или логический. Список условий обязательный при наличии инструкции CASE. Содержит результаты вычисления выражения, записанные в одном из видов: Саsе КОНСТАНТА1, КОНСТАНТА2, KOHCTAHTA3,... Саsе Is ЗНАК_ОТНОШЕНИЯ КОНСТАНТА Case КОНСТАНТА1 to КОНСТАНТА2 Выполняется оператор Select Case следующим образом сначала вычисляется значение выражения, стоящего после ключевых слов Select Case, затем производится проверка на совпадение значения выражения и одного из Case условий, в случае совпадения выполняются операторы, помещенные за этим 24

25 Case условием. В случае, если совпадения не обнаружено ни в одном из Case условий, то выполняются операторы, находящиеся после ключевых слов Саsе Else. Если список выражений в Саsе условии записан в первой форме, то необходимо, чтобы результат вычислений выражения равнялся одной константе из списка, если Case условие записано во второй форме, то необходимо, чтобы выполнялось условие отношения между значением выражения и константой. Если же в третьей форме, то необходимо выполнение соотношения КОНСТАНТА1<=выражение<=КОНСТАНТА2. Задание 1 Определить радиус кругового пожара, если известна линейная скорость распространения огня и время горения. Необходимо учесть, что если время горения превышает 10 мин, то скорость распространения огня увеличивается на 50%. Если объект относится к пожароопасной зоне, то радиус пожара увеличивается на 20%. Анализ проекта Для реализации проекта введем следующие обозначения. Тип Single: V скорость распространения пожара, T время горения; R радиус пожара. Тип Boolean: Fire наличие большой пожарной опасности объекта. Вначале определяем скорость горения. Если T>10 то V г =1,5 V, иначе V г =V. Радиус пожара определяется как R=TV г. Если объект относится к пожароопасной зоне (Fire=True), то R п =1,2R, иначе R п =R. Порядок выполнения 1. Находясь в среде Ms Word или другого приложения из Microsoft Office, нажмите ALT+ F11, чтобы перейти в среду VBA. 2. На панели инструментов щелкните кнопку Insert UserForm. Появляется окно с формой UserForm1. 3. Создайте форму согласно эскизу, установив в окне свойств Properties значение свойств (Name) и Caption которые приведены ниже. Обратите внимание на то, что элемент управления флажок создается с помощью копки панели управления, которая имеет вид. На форме он имеет имя chkfire, а свойство Caption Пожарная опасность. 25

26 1 1 Свойство (Name) frmfire 2 2 txtv txtt cmdвычислить txtr chkfire 4. Перейдите в окно кода, дважды щелкнув кнопку Вычислить, и введите следующий текст процедуры Private Sub cmdвычислить_click() Dim V As Single, T As Single, R As Single 'Ввод исходных данных V = CSng(txtV) T = CSng(txtT) 'определяем скорость распространения If T > 10 Then V = 1.5 * V End If 'определяем радиус пожара R = V * T 'определяем радиус пожара при пожарной опасности If chkfire Then R = 1.2 * R End If 'Вывод значения на форму txtr = Format(R, "0.00") & " метра (ов)." 5. Запустите программу на выполнение, щелкнув на свободном месте формы, а затем на кнопке Run (или нажмите клавишу F5). 6. Проверьте правильность работы приложения при различных исходных данных. 7. Сохраните документ в файле Лаб4_1.doc в своей папке на жестком диске. Задание 2 Вычислить математическую функцию y(a,x), при заданных значениях a и x. Исходные значения ввести с клавиатуры. 2 ln a 1, если x a; y x,a sin ax, если x a. 26

27 Порядок выполнения 1. Перейдите в среду VBA нажав клавиши ALT+F11 2. В окне свойств Project щелкните кнопку View code (или выполните двойной щелчок мышкой на пункте ThisDocument). Появляется окно кода VBA. 3. Перейдите в окно кода и введите следующий текст процедуры Sub Primer2() Dim a, x, y As Single ' Вводим исходные данные с клавиатуры a = Val(InputBox("Введите а")) x = Val(InputBox("Введите x")) ' вычисляем значение If x > a Then y = Log(a ^ 2 + 1) Else y = Sin(a * x) 'Вывод у MsgBox ("Значение у=" & Str(y)) 4. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). 5. Сохраните документ в файле Лаб4_2.doc в своей папке на жестком диске. Задание 3 Написать программу для определения соответствия между номером дня недели и его названием согласно формуле Зеллера (0-Сб, 1-Вс, 2-Пн, 3-Вт, 4- Ср, 5-Чт, 6-Пт). Порядок выполнения 1. Перейдите в среду VBA нажав клавиши ALT+F11 2. В окне свойств Project щелкните кнопку View code (или выполните двойной щелчок мышкой на пункте ThisDocument). Появляется окно кода VBA. 3. Перейдите в окно кода и введите следующий текст процедуры Sub Primer3() Dim Day As Integer 'Вводим с клавиатуры номер дня Day = Val(InputBox("Введите номер дня недели")) ' Определяем название дня недели Select Case Day Case 0 27

28 MsgBox ("Это суббота") 'День с номером 0 Case 1 MsgBox ("Это воскресенье") 'День с номером 1 Case 2 MsgBox ("Это понедельник") 'День с номером 2 Case 3 MsgBox ("Это вторник") 'День с номером 3 Case 4 MsgBox ("Это среда") 'День с номером 4 Case 5 MsgBox ("Это четверг") 'День с номером 6 Case 6 MsgBox ("Это пятница") 'День с номером 7 End Select 4. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). 5. Проверить правильность работы программы путем ввода различных номеров дня недели. 6. Доработать программу, предусмотрев защиту от неправильно ввода дня недели. Для этого перед строчкой кода End Select добавить строки Case Else MsgBox ("Такой день недели не существует") 7. Проверить правильность работы программы путем ввода различных номеров дня недели, в том числе и неправильных. 8. Сохраните документ в файле Лаб4_3.doc в своей папке на жестком диске. Результат работы: 1. Файл Лаб4_1.doc с формой Круговой пожар 2. Файлы Лаб4_2.doc, Лаб4_3.doc с выполненными заданиями Вопросы для самоконтроля 1. Что такое разветвляющиеся алгоритмы? 2. Каким элементом на блок-схеме обозначается условный оператор? 3. Какой синтаксис имеет условный оператор If... Then...Else и Select Case? 4. В чем отличие строчного и блочного операторов If... Then...Else. в каких случаях нужно использовать блочный оператор? 5. В каком виде можно записать список условий в операторе Case? 28

29 Лабораторная работа 5 Циклические алгоритмы. Решение многих практических задач сводится к выполнению вычислений по одним и тем же зависимостям, но при разных значениях входящих в них величин. Такой вычислительный процесс называется циклическим, а многократно повторяющиеся участки этого процесса называются циклами. Различают регулярные циклы с известным числом повторений, условием окончания которого является достижение параметром цикла своего конечного значения и итерационные циклы, в которых условие повторения или окончания цикла задается по некоторому результату. В итерационных циклах различают циклы с предусловием и постусловием. Синтаксис цикла с предусловием выглядит следующим образом While условие [операторы] Wend Обязательный элемент условие является числовым или строковым выражением, которое принимает значение TRUE или FALSE. Необязательный элемент операторы включает один или несколько операторов, выполняемых, пока условие имеет значение TRUE. Выполняется оператор While... Wend следующим образом. Если условие имеет значение TRUE, выполняются все операторы до инструкции Wend. Затем управление возвращается инструкции While и вновь проверяется условие. Если условие по-прежнему имеет значение True, процесс повторяется. Если оно не имеет значение TRUE, выполнение возобновляется с инструкции, следующей за инструкцией Wend. Оператор цикла с постусловием имеет синтаксис: Do [операторы] Loop Until [условие] Синтаксис инструкции Do Loop содержит следующие элементы: Необязательный элемент условие является числовым или строковым выражением, которое принимает значение TRUE или FALSE. Необязательный элемент операторы включает один или несколько операторов, выполняемых, пока условие не приобретет значение FALSE. Выполняется оператор Do...Loop следующим образом. Если условие имеет значение FALSE, выполняются все операторы после инструкции Do. Затем управление передается инструкции Until и вновь проверяется условие. 29

30 Если условие по-прежнему имеет значение FALSE, процесс повторяется. Если оно имеет значение TRUE, управление передается следующему за инструкцией Loop Until оператору. На блок-схемах циклы с предусловием и постусловием изображаются следующим образом: Часто при составлении программ заранее известно количество повторений группы операторов, в таких случаях можно использовать инструкцию For... Оператор For... используется для выполнения наборов операторов указанное число раз. Циклы For используют в качестве счетчика переменную, значение которой увеличивается или уменьшается при каждом выполнении цикла на указанное значение. Синтаксис инструкции For... For счетчик = начало То конец [Step шаг] [операторы] [счетчик] Обязательный элемент счетчик должен быть числовой переменной и не может иметь тип Boolean или быть элементом массива. Обязательный элемент начало содержит начальное значение переменной счетчик, а обязательный элемент конец конечное значение переменной. Необязательный элемент шаг определяет значение, на которое изменяется счетчик при каждом выполнении тела цикла. Если это значение не задано, по умолчанию шаг равен единице. Шаг может быть как положительным, так и отрицательным. Необязательный элемент операторы включает один или несколько операторов между For, которые выполняются указанное число раз. Инструкция For... работает следующим образом: начальное значение элемента счетчик сравнивается с конечным значением. Если шаг положителен и начальное значение меньше конечного или если шаг 30

31 отрицателен и начальное значение больше конечного, то управление передается внутрь тела цикла. После выполнения всех операторов в теле цикла значение шаг добавляется к текущему значению переменной счетчик. После этого операторы тела цикла либо выполняются еще раз (на основе того же условия, которое привело к начальному выполнению цикла), либо цикл завершается и выполнение продолжается с оператора, следующей за. При использовании циклических конструкций может возникнуть необходимость досрочного выхода из цикла. В языке VBA оператором досрочного выхода является Exit, причем в циклах For он имеет вид Exit For, а в циклах, начинающихся с Do, он имеет вид Exit Do. Задание 1 На территории предприятия имеется гидрант с водоотдачей Z л/с. К нему последовательно подключаются N стволов, каждый из которых имеет расход воды Ri л/с. Определить, на сколько первых стволов хватит водоотдачи гидранта. Анализ проекта Для реализации проекта введем следующие обозначения. Тип Integer: N количество подключаемых стволов, i номер рассматриваемого ствола; k количество стволов, которые уже подключили. Тип Single: Z общая водоотдача гидранта, Ri расход воды на i-м стволе; S общий расход воды по все стволам. Вначале S=0. Расход воды производится по номерам стволов следующим образом. Проверяют, хватит ли расхода воды на первый ствол (i=1), т. е. выполняется ли неравенство S+R1 <= Z. Если хватит, то ствол подключается к гидранту (k=1). Затем те же действия повторяют со вторым стволом (i=2) и т. д. Общий расход воды на k первых подключенных стволах определяется по формуле S=R1 +R2 + +Rk Суммирование прекращается, если все стволы подключены (k=n) или превышена водоотдача (k<i). Последнее неравенство показывает, что количество стволов, которые подключены, меньше, чем количество рассмотренных. Величина k может изменяется в пределах от 0 до N. Случай k=0 соответствует тому, что воды не хватило даже на первый ствол. Порядок выполнения 10. Находясь в среде Ms Word или другого приложения из Microsoft Office, нажмите ALT+ F11, чтобы перейти в среду VBA. 31

32 11. На панели инструментов щелкните кнопку Insert UserForm. Появляется окно с формой UserForm Создайте форму согласно эскизу, установив в окне свойств Properties значение свойств (Name) и Caption которые приведены ниже. Для компонента txtresult также установите свойство MultiLine=True, что обеспечит многострочный вывод текста. 1 Свойство (Name) 1 frmвода txtz 3 txtn cmdвычислить txtresult 13. Перейдите в окно кода, дважды щелкнув кнопку Вычислить, и введите следующий текст процедуры Private Sub CmdВычислить_Click() Dim i As Integer 'Номер рассматриваемого ствола Dim k As Integer 'количество подключенных стволов Dim Ri As Single 'Расход воды на i-м стволе Dim S As Single 'Общий расход воды 'Начальное состояние S = 0 i = 0 k = 0 'Распределение воды по стволам Do i = i + 1 Ri = Val(InputBox("Введите расход воды", i & "-й ствол")) If S + Ri <= Val(txtZ) Then S = S + Ri k = k + 1 Else Exit Do End If Loop Until (k = CInt(txtN)) 'Вывод результата If k = CInt(txtN) Then txtresult = "Воды хватит на все стволы" Else 32

33 txtresult = "Воды хватит только на " & Str(k) & " первых ствола(ов)" End If 14. Запустите программу на выполнение, щелкнув на свободном месте формы, а затем на кнопке Run (или нажмите клавишу F5). 15. В поле Водоотдача гидранта (л/с) введите число 100, а в поле Кол. подключаемых стволов введите 3 и щелкните кнопку Вычислить. В появившемся диалоговом окне поочередно введите числа 20, 40, 30. В поле Результат распределения воды появится текст Воды хватит на все стволы. Не изменяя значений в полях Водоотдача гидранта (л/с) и Кол. подключаемых стволов,щелкните кнопку Вычислить. В появившемся диалоговом окне поочередно введите числа 50, 40, 30. В поле Результат распределения воды появится текст Воды хватит только на 2 первых ствола(ов). Проанализируйте работу программы при Ваших исходных значениях 16. Сохраните документ в файле Лаб5_1.doc в своей папке на жестком диске. Задание 2 Найти среднее арифметическое из N чисел, вводимых с клавиатуры. Анализ проекта Среднее арифметическое - это значение суммы чисел, деленной на их количество. Поэтому для решения задачи потребуются переменные для накопления суммы S (тип Single) и количества чисел k (тип Integer). Основу алгоритма составит циклическая процедура: ввести число, добавить его к сумме S. Эти операторы нужно повторить k раз. На выходе из цикла будет подсчитана сумма чисел, останется только разделить S на k и запомнить результат в переменную R, ее тип - Single результат деления не всегда будет целым числом: Порядок выполнения 1. Перейдите в среду VBA нажав клавиши ALT+F11 2. В окне свойств Project щелкните кнопку View code (или выполните двойной щелчок мышкой на пункте ThisDocument). Появляется окно кода VBA. 3. Перейдите в окно кода и введите следующий текст процедуры Sub Среднее() Dim S, R, a As Single, k As Integer 33

34 k = InputBox("Введите количество чисел для суммированя") S = 0 'Очистка переменной для суммирования For i = 1 To k a = InputBox("Введите " & Str(i) & "-е число") S = S + a 'Накапливаем сумму R = S / k MsgBox ("Среднее арифметическое из " & Str(k) & " чисел- "& Str(R)) 4. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). 5. Проверить правильность работы программы путем ввода различных чисел и определения их среднего арифметического. Обратите внимание, что переменная S предварительно обнуляются («чистятся»), причем до начала цикла. Чистку необходимо делать, т.к. при переводе программы на машинный язык под переменные отводится память, в которой может чтонибудь уже находиться, какая-либо старая информация. Если убрать оператор S = 0, то в последующем присваивании S = S + а при вычислении правой части к значению а будет добавлено неизвестное значение S и результат будет неверный. Типичная ошибка, когда операции обнуления помещают в тело цикла, после заголовка 6. Сохраните документ в файле Лаб5_2.doc в своей папке на жестком диске. Задание 3 Посчитать произведение чисел, вводимых с клавиатуры до тех пор, пока не встретится 0. Анализ проекта Для решения задачи потребуются переменные для накопления произведения P (тип Single). Здесь заранее неизвестно, сколько чисел будет введено, поэтому лучше воспользоваться циклом While Wend Порядок выполнения 1. Перейдите в среду VBA нажав клавиши ALT+F11 2. В окне свойств Project щелкните кнопку View code (или выполните двойной щелчок мышкой на пункте ThisDocument). Появляется окно кода VBA. 34

35 3. Перейдите в окно кода и введите следующий текст процедуры Sub Произведение() Dim a, P As Integer a =Val(InputBox("Введите ненулевое число")) P = 1 'Очистка переменной для произведения While a <> 0 P = P * a 'Накапливаем произведение a = Val(InputBox("Ведите следующее число")) Wend MsgBox ("Произведение чисел равно: "& Str(P)) 4. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). 5. Проверить правильность работы программы путем ввода различных чисел и определения их произведения. Обратите внимание, что «чистка» переменной Р заключается в присвоении ей значения 1, т.к. Р участвует в произведении Р=Р*а и обнуление Р привело бы к нулевому результату всей программы. Исполнение цикла продолжается до тех пор, пока не введен 0 в переменную а. 6. В первой строке мы потребовали, чтобы вначале было введено ненулевое число. А что, если все-таки пользователь программы ввел 0? Тогда цикл не проработает ни разу, а результат будет Р=1. «Защититься» от первого нуля можно добавив в строку a =Val(InputBox("Введите ненулевое число")) «оберегающий» оператор Do Loop с проверкой на ноль следующего вида: Do a =Val(InputBox("Введите ненулевое число")) Loop Until a <> 0 7. Проверить правильность работы программы путем ввода первого нулевого числа. Первый оператор цикла не позволит продолжить программу, если вводятся нули: условие выхода из цикла а <>0 8. Сохраните документ в файле Лаб5_3.doc в своей папке на жестком диске. Задание 4 Найти максимальное число из 10-ти произвольных чисел, вводимых с клавиатуры. Анализ проекта При нахождении максимума в последовательности чисел, нужно определить переменную для хранения максимального числа Max (тип Single). 35

36 Затем каждое введенное число сравнивается со значением Max и, если это число превышает Max, то оно теперь считается максимальным и присваивается переменной Max, стирая предыдущее значение. Таким образом, основной оператор алгоритма решения - это цикл, в котором тело составляют два действия: ввод нового значения и проверка, не является ли это значение максимальным. По окончании цикла в Max будет находиться наибольшее из них. Для сравнения первого числа нужно определить начальное значение переменной Max. Верное решение - взять любое из анализируемой последовательности, например, первое. Неверное решение - взять «с потолка», например, 0. Ноль сгодится, если вводятся только положительные числа (тогда любое из них «закроет» первоначальный максимум). Но, если могут быть введены только отрицательные числа, то этот 0 и окажется максимальным, хотя и не был введен. Ответ будет неверным. Итак, возьмем в качестве начального значения первое из вводимых чисел и откроем цикл с проверкой оставшихся 9-ти чисел на максимум. Поскольку число шагов известно, проще воспользоваться циклом For : Порядок выполнения 1. Перейдите в среду VBA и вызовите окно кода VBA. 2. В окне кода введите следующий текст процедуры Sub МаксЧисло() Dim a, max As Single 'тип переменных Single max = Val(InputBox("Введите 1-е число")) For i = 2 To 10 a = InputBox("Введите " & Str(i) & " е число") If a > max Then max = a MsgBox ("Максимальное число - " & Str(Max)) 3. Запустите программу на выполнение и проверьте правильность работы программы путем ввода различных чисел и определения их максимального. 4. Аналогично решаются задачи на поиск минимума, нужно только заменить знак неравенства и переобозначить переменную (для ясности): вместо Max взять, например, Min. 5. Сохраните документ в файле Лаб5_4.doc в своей папке на жестком диске Задание для самостоятельной работы 1. Найти максимальный из отрицательных элементов среди произвольных 20 чисел, вводимых с клавиатуры. 36

37 2. Найти первый отрицательный член последовательности cos(n) для n, изменяющегося так: n=0,1; 0,2; 0,3 1. Вычислить положительные значения функции y=cos(3x)+4sin(x-3) для х, изменяющемся на отрезке [-15,10] с шагом 1. Результат вывести на рабочий лист Ms Excel с использованием функции Cells 2. Найти количество чисел, кратных трем, из последовательности, вводимой с клавиатуры до тех пор, пока не встретится ноль. Результат работы: 3. Файл Лаб5_1.doc с формой Водообеспечение 4. Файлы Лаб5_2.doc, Лаб5_3.doc, Лаб5_4.doc с выполненными заданиями. Вопросы для самоконтроля 3. Что такое циклические алгоритмы? 4. Каким элементом на блок-схеме обозначается оператор цикла? 5. Что такое регулярные и итерационные циклы. В чем их отличие? 6. Приведите синтаксис оператора цикла Do Loop и While Wend. 7. В чем отличие цикла с постусловием от цикла с предусловием? В каких случаях, какой цикл нужно использовать? 8. Приведите синтаксис оператора цикла For. При решении каких задач используется данный оператор? 9. Какие правила следует соблюдать при построении вложенных циклов? 37

38 Лабораторная работа 6 Вложенные циклы, вычисление рекуррентных соотношений. Задачи такого типа можно представить как определение некоторой величины Y, которая является результатом последовательности вычислений Y i =F(Y i-1 ), т.е. каждое последующее значение Y вычисляется на основе его предыдущего значений. Процесс заканчивается при достижении какого-либо условия или конкретного значения. Для решения подобных задач нужно понять закономерность образования каждого последующего значения, т.е. задать функцию (или выражение) F. Очевидно, что процесс вычисления является циклом и для начала проще всего определить его тело: какие действия повторяются, какие величины и на сколько изменяются на каждом шаге. После этого будет яснее условие продолжения (окончания) цикла. Задание 1 Вычислить значение Y, определяемое формулой: Y Анализ проекта Чтобы понять работу алгоритма представим числа в этом выражении как степени двойки: 10 9 Y Вычисление Y можно организовать тогда, используя цикл из десяти шагов. На каждом шаге i выполняется операция: к 2 i прибавляется значение, вычисленное на предыдущем шаге, и из результата извлекается квадратный корень. Таким образом, результат i-ro шага: Y i 2 Yi 1. Осталось только задать начальное значение Y=0. Для решения задачи потребуются переменная для накопления Y (тип Single). 2 i 1 Порядок выполнения 1. Перейдите в среду VBA нажав клавиши ALT+F11 2. В окне свойств Project щелкните кнопку View code (или выполните двойной щелчок мышкой на пункте ThisDocument). Появляется окно кода VBA. 38

39 3. Перейдите в окно кода и введите следующий текст процедуры Sub Корень() Dim Y As Single Y = 0 For i = 1 To 10 Y = Sqr(2 ^ i + Y) MsgBox ("Значение Y=" + Str(Y)) 4. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). 5. Сохраните документ в файле Лаб6_1.doc в своей папке на жестком диске. Значение Y определяется выражением: 2 i x Y 1 i 0 2 i 1! Вычислить: a) значение Y для 15 первых составляющих ряда (i=0 15); b) значение Y с точностью не ниже заданного значения e. Вычисление реализуется циклическим алгоритмом, состоящим из 15 шагов (вариант а) или до тех пор, пока не будет достигнута необходимая точность вычислений (вариант б). Для любого i было бы нерационально считать входящие в выражения для общего члена степень и факториал с самого начала, имея их значения при предыдущем i. Удобнее найти так называемое рекуррентное соотношение, которое устанавливает зависимость между двумя соседними членами ряда и в дальнейшем вычислять рекуррентное соотношение. С формулы видно, что на каждом шаге к сумме Y прибавляется очередной, Y i элемент ряда: Y Y Y i,. Для вывода рекурсивного соотношения выявим зависимость каждого последующего Y i, от предыдущего Y i 1 значения. Величина х от шага к шагу не изменяется, в такой постановке задачи ее просто нужно один раз ввести, например с клавиатуры. 2 i x Итак, любой i-й член ряда равен Yi 1. Соответственно (i-1)-й 2 i 1! член ряда Y 1 i 1 2 Задание 2 Анализ проекта i 1 x. Разделим Y i, на Y i 1, учитывая, что по 2i! 39

40 определению факториала i 1! i! i 1. После сокращений получим: Yi 1 1, отсюда следует, что Y i Yi 1. Первым членом прогрессии Y i 1 i 1 i x x является Y ! 2 Для решения задачи потребуются следующие переменные: сумма членов ряда Y (тип Single); i-й член ряда Yi (тип Single); величина х (тип Single) и точность вычислений е (тип Single). Порядок выполнения 1. Находясь в среде Ms Word или другого приложения из Microsoft Office, нажмите ALT+ F11, чтобы перейти в среду VBA. 2. На панели инструментов щелкните кнопку Insert UserForm. Появляется окно с формой UserForm1. 3. Создайте форму согласно эскизу, установив в окне свойств Properties значение свойств (Name) и Caption которые приведены ниже. Обратите внимание на то, что элемент управления одиночного выбора создается с помощью копки панели управления, которая имеет вид. Свойство (Name) 1 1 frmрекурсия 2 2 txtх 3 3 txtе 4 4 optmetoda 5 5 optmetodb 6 6 cmdвычислить 7 txtresult 4. Перейдите в окно кода, дважды щелкнув кнопку Вычислить, и введите следующий текст процедуры Private Sub cmdвычислить_click() Dim Y As Single, yi As Single Dim x As Single, e As Single x = Val(txtX) e = Val(TxtE) yi = (x ^ 2) / 2 'начальный Y0 элемент ряда Y = yi 'начальное значение суммы If optmetoda Then 'метод А For i = 1 To

41 yi = (-1 / (i + 1)) * yi Y = Y + yi End If If optmetodb Then i = 1 While Abs(yi) > e yi = (-1 / (i + 1)) * yi Y = Y + yi i = i + 1 Wend End If txtresult = Str(Y) 'считаем i-и элемент 'считаем сумму 'метод Б 'Проверяем точность 'считаем i-и элемент 'считаем сумму 'вывод суммы 5. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). 6. Введите значение Х=20, значение Е=0.05. Произведите расчет двумя методами. Сравните полученные значения. Измените значение Е= , а затем на Е=0.5. Сравните полученные значения. Произведите расчет с Вашими исходными данными. Распространенной ошибкой является замена двух операторов тела цикла yi = (-1 / (i + 1)) * yi Y = Y + yi на один: Y = Y + (-1 / (i + 1)) * yi, что приведет к тому, что на каждом шаге цикла к сумме Y будет прибавляться одно и то же значение yi, равное Y0, ведь yi тогда никак не изменяется. В программах, использующих зависимость i-ro элемента в итерации от (i-1)-го, необходимо запоминать это предыдущее, вычисленное на (i-l)-м шаге значение, чтобы потом использовать именно его. 7. В разработанной программе, если пользователь не определит метод, значение суммы будет равно первому члену прогрессии. Доработаем программу, предусмотрев обязательный выбор метода расчета. Для этого заменим строчку кода txtresult = Str(Y) на строчку If optmetoda Or optmetodb Then txtresult = Str(Y) Else txtresult = "Не выбран метод" 8. Проверить правильность работы программы, не определяя значение метода для расчета. 9. Сохраните документ в файле Лаб6_2.doc в своей папке на жестком диске. 41

42 Задание 3 Для каждого числа В из 20-ти чисел, вводимых с клавиатуры определить наименьшее неотрицательное целое k такое, что В < 2 k. Анализ проекта Алгоритм составляет цикл из 20-ти шагов, на каждом из которых: вводится очередное число; проверяется, какую (наименьшую) степень двойки оно не превышает; выводится показатель этой степени. Как получить нужную степень двойки? Пусть число B введено. Начинаем процесс проверки с 2 0, т.е. B < 2 0? Если да, процесс окончен, ответ k = 0. Если нет, проверяем 2 1, т.е. B < 2? Если да, процесс окончен, ответ k = 1. Если нет, проверяем 2 2, B < 2 2? И так до тех пор, пока не найдем нужное число k. Таким образом, на каждом шаге внешнего цикла (ввод очередного числа) работает внутренний цикл, перечисляющий степени к двойки. Условие выхода из этого внутреннего цикла - число B больше или равно 2 k. Для решения задачи потребуются переменная B и переменная k (тип Integer). Порядок выполнения 1. Перейдите в среду VBA и вызовите окно кода VBA. 2. В окне кода введите следующий текст процедуры Sub MinK() Dim b As Integer, k As Integer For i = 1 To 20 'Внешний цикл. Вводим В и печатаем к b = Val(InputBox("Введите челое число")) k = 0 'для каждого В начинаем поиск с нуля While b >= 2 ^ k 'Внутрений цикл; k = k + 1 'Увеличиваем показатель степени Wend MsgBox ("Для b =" & Str(b) & " k=" & Str(k)) 3. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5) и проверьте ее работоспсобность. 4. Сохраните документ в файле Лаб6_3.doc в своей папке на жестком диске. 42

43 Задание для самостоятельной работы 1. Вычислить выражение: y Найти сумму бесконечного ряда с точностью до e>0: 3. Найти сумму k первых членов ряда: k 4 n x n n 1 1 n 1 n 2 n n n 1 2! 4. Для каждого числа а из 20-ти чисел, вводимых с клавиатуры определить наибольшее целое k такое, что а >3 k Результат работы: 1. Файл Лаб6_2.doc с формой Рекуррентные соотношения 2. Файлы Лаб6_1.doc, Лаб6_3.doc с выполненными заданиями. Вопросы для самоконтроля 1. Что такое рекурсия? 2. С помощью каких операторов проводиться расчет рекурсивных соотношений? 3. Что такое вложенный цикл и как он реализуется? 4. Какие правила следует соблюдать при построении вложенных циклов? 43

44 Лабораторная работа 7 Массивы. Работа с вектором и матрицей. Массив - это коллекция переменных, которые имеют общие имя и базовый тип. Все элементы данных, сохраняемых в массиве, должны иметь один и тот же тип. Информация, сохраненная в массиве, может быть доступна в любом порядке. Массив позволяет сохранять и манипулировать многими элементами данных посредством единственной переменной. Обработку массивов значительно упрощает использование циклов. Самый простой вариант массива это одномерный массив, использующий обыкновенный список данных. Например: Вася, Петя, Коля, Миша, Ваня, Слава, Игорь, Юра Это строковый массив, состоящий из 8 элементов. Дадим ему название Name_Array. Нумерация элементов в массиве начинается с 0. Такая система нумерации довольно распространена в программировании и называется нумерацией с нулевой базой. Для доступа к данным, хранящимся в определенном элементе массива, следует указывать имя массива с последующим числом, называемым индексом элемента. Индекс всегда заключается в круглые скобки. Например: Name_Array(3) - этому элементу массива соответствует "Миша" (не забывайте, что по умолчанию нумерация элементов массива начинается с 0). Поскольку нумерация с нулевой базой не очень удобна (т.к. мы привыкли считать с 1, а не с 0), то в VBA имеется директива компилятора, позволяющая исправить это "неудобство": Option Base. Директива компилятора имеет два варианта написания: Option Base 0 - индексы массивов начинаются с 0 (установка по умолчанию) Option Base 1 - индексы массивов начинаются с 1 Данная директива компилятора помещается в область объявлений модуля перед объявлениями любых переменных, констант или процедур. Нельзя помещать Option Base внутри процедуры. Оператор Option Base может быть только один и он влияет на все массивы, объявляемые в модуле. Одномерные массивы хорошо подходят для представления простых списков данных. Однако часто бывает необходимо представить таблицы данных в программах с организацией данных в формате строк и столбцов, подобно ячейкам в рабочих листах Excel. Для этого необходимо использовать многомерные массивы. Так адрес каждой ячейки листа состоит из двух чисел, одно из которых (номер строки) является первым индексом, а второе (номер столбца) - вторым индексом массива. Такой массив называется двумерным 44

45 массивом. Добавив еще номер листа, получим трехмерный массив. VBA позволяет создавать массивы, имеющие до 60 измерений. Массивы, не меняющие число своих элементов, называются статическими массивами. Примером такого массива может служить вышеприведенный массив Name_Array, содержащий 8 элементов. Однако бывают ситуации, когда изначально неизвестно количество элементов в массиве, или же, в процессе работы это количество может изменяться. Такие массивы называются динамическими массивами. Динамический массив может увеличиваться или сжиматься, чтобы вмещать точно необходимое число элементов без напрасного расходования памяти. Объявление массива, как и объявление переменной, осуществляется с использованием оператора Dim: Dim VarName([Subscripts]) [As Type] VarName - любое имя массива, использующее допустимый идентификатор имени; Subscripts - измерение массива. Если размерность массива больше единицы, то Subscripts разделяются запятыми. Оператор Subscripts имеет следующий синтаксис: [lower To] upper [,[lower To] upper]. Необязательный аргумент lower - определяет нижний диапазон допустимых индексов для массива, а обязательный аргумент upper определяет верхний предел для индексов массива. Примеры правильного объявления массивов: - одномерный статический строковый массив, включающий 10 элементов: - динамический массив: Dim Array_Str(1 To 10) As String ; Dim Array_Var(); - двумерный статический массив целых чисел, включающий 6*8=48 элементов: Dim Array_Mult(0 To 5,0 To 7) As Integer. При объявлении массивов следует помнить, что включение оператора Subscripts в объявлении массива создает статический массив с фиксированным числом элементов, пропуск оператора Subscripts в объявлении массива создает динамический массив. Установка директивы компилятора Option Base влияет на общее число элементов в массиве. При использовании динамических массивов может сложиться обстоятельства, при которых точно неизвестно, сколько элементов потребуется 45

46 в массиве. В VBA имеется возможность при помощи оператора ReDim переопределять размерность массива. ReDim [Preserve] varname(subscripts) [As Type] [, varname(subscripts) [As Type]] varname - имя существующего массива; subscripts - размерность существующего массива; Type - любой тип VBA. Необходимо использовать отдельный оператор As Type для каждого массива, который определяется; Preserve - необязательный аргумент. Его использование приводит к тому, что данные уже имеющиеся в массиве, сохраняются после изменения его размерности. Примеры правильного использования оператора ReDim: Dim Array_Month() As String - одномерный строковый динамический массив ReDim Array_Month(29) - устанавливет размерность динамического массива равную 29 элементам ReDim Array_Month(1 To 30) - изменяет размер массива до 30 элементов ReDim Preserve Array_Month(1 To 31) - изменяет размер массива до 31 элемента, сохраняя содержимое Задание 1 Организовать ввод и вывод одномерного массива состоящего из 10 чисел и двумерного массива размером 3*5. Анализ проекта Ввод массива фиксированной длины можно осуществить как с клавиатуры (используя функцию InputBox), так и с листа Ms Excel. Вывод массива также можно осуществить как на экран, с помощью оператора MsgBox, так и на лист Ms Excel. Для ввода проще всего использовать цикл For с числом шагов, равным длине (количеству элементов) массива. Порядок выполнения 1. Запустим MS Excel и перейдем в среду VBA нажав клавиши ALT+F Откройте окно кода VBA, щелкнув кнопку View code в окне свойств Project (или выполните двойной щелчок мышкой на пункте ThisDocument). 3. Перейдем в окно кода и введем текст процедуры, которая обеспечивает ввод массива с клавиатуры. 46

47 Для одномерного массива: Option Base 1 'индексы массивов начинаются с 1 Sub Vvod_1() Dim Mas(10) As Integer 'одномерный массив 10 элем. Dim i As Integer For i = 1 To 10 Mas(i) = Val(InputBox("Введите " & i & "-й элемент массива")) Для двумерного массива: Sub Vvod_2() Dim Mas(3,5) As Integer 'двумерный массив 3 на 5. Dim i As Integer For i = 1 To 3 'цикл по строкам. For j = 1 To 5 'цикл по столбцам. Mas(i,j) = Val(InputBox("Введите элемент массива. " & i & "-я строка "& j & "-й столбец.")) 4. Рассмотрим ввод массива с рабочего листа Ms Excel. Одномерный массив расположен в диапазоне А1:А10, двумерный А1:Е3. Ниже приведены соответствующие фрагменты кода: Для одномерного массива: For i = 1 To 10 Mas(i) = Cells(i, 1) 'номер строки меняется в цикле, столбец первый (А) Для двумерного массива: For i = 1 To 3 'цикл по строкам. For j = 1 To 5 'цикл по столбцам. Mas(i,j) = Cells(i, j) 'номер строки и столбца меняется в цикле 5. Аналогично рассмотрим вывод массива на экран и на рабочий лист Ms Excel, например в диапазон С1:С10. Для этого необходимо заменить функции ввода на функции вывода. Фрагменты процедур приведены ниже: Для одномерного массива: For i = 1 To 10 MsgBox (Str(Mas(i))) 47

48 For i = 1 To 10 Cells(i, 3) = Mas(i) 'вывод массива в третий столбец (С1:С10) Для двумерного массива: For i = 1 To 3 'цикл по строкам. For j = 1 To 5 'цикл по столбцам. MsgBox (Str(Mas(i, j))) For i = 1 To 3 For j = 1 To 5 Cells(i + 7, j) = Mas(i, j) 'вывод массива на 7 строчек ниже. 6. Запустите на выполнение любую процедуру щелкнув на кнопке Run (или нажмите клавишу F5) и проверьте ее работоспособность. 7. Законспектируйте элементы кода VBA предназначенные для организации ввода вывода массивов. При организации ввода значений массивов с рабочего листа MS Excel следует помнить, что перед запуском процедуры, необходимо ввести числовые значения в соответствующие ячейки рабочего листа. В противном случае массив будет заполнен нулевыми значениями. Задание 2 Найти максимальное значение, а также поменять местами первый положительный и первый отрицательный элементы массива А состоящего из 10 целых чисел. Анализ проекта Алгоритм состоит из пяти частей: 1) ввод массива, 2) поиск максимального значения, 3) поиск в первого положительного элемента, 4) поиск первого отрицательного элемента, 5) обмен их значений. Для демонстрации результата необходима еще одна часть - 6) вывод полученного массива. Для наглядности будем вводить массив с листа Excel (например, из диапазона А1:А10) и выводить результат на тот же лист (например, в диапазон С1 :С10). Для поиска максимального значения каждый элемент A(i) массива сравнивается с уже полученным на предыдущих шагах максимумом. В 48

49 качестве начального значения можно взять любой из A(i), но удобнее А(1) - циклическую проверку можно тогда начать со второго элемента, сократив число шагов. Поиск первого положительного элемента проведем, перебирая в цикле значения А. Как только встретится A(k)>0, нужно запомнить его индекс (номер k) и сразу выйти из этого цикла. Обратите внимание, что если продолжить цикл, то мы в результате получим номер не первого, а последнего положительного элемента массива. Аналогично проводим поиск первого отрицательного элемента массива. Пусть это будет A(j). Индекс j запоминаем. Теперь осталось обменять значения А(к) и A(j), используя переменнуюпосредника. После завершения операций массив выводится на печать Порядок выполнения 1. Запустить Ms Excel, перейтив в окно кода VBA и ввести следующий текст процедуры: Option Base 1 'индексы массивов начинаются с 1 Sub Obmen() Dim i, j, k, rab, max As Integer Dim A(10) As Integer 'вводим массив с листа Excel For i = 1 To 10 A(i) = Cells(i, 1) 'Находим максимальный элемент массива max = A(1) For i = 2 To 10 If A(i) > max Then max = A(i) 'Находим первый положительный элемент For i = 1 To 10 If A(i) > 0 Then k = i Exit For End If 'Находим первый отрицательный элемент For i = 1 To 10 If A(i) < 0 Then j = i Exit For End If 49

50 'меняем значения местами rab = A(k) A(k) = A(j) A(j) = rab 'вывод максимального значения в ячейку В(1) Cells(1, 2) = "max=" & max 'Выводим массив на лист Excel в столбец С For i = 1 To 10 Cells(i, 3) = A(i) 2. На рабочем листе в диапазон ячеек А1:А10 ввести исходные данные для элементов массива. 3. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). Проанализировать работоспособность программы. 4. Сохраните документ в файле Лаб7_1.xls в своей папке на жестком диске. Создать форму для сортировки одномерных массивов чисел произвольной длины по возрастанию. Сортировка распределение элементов множества по группам в соответствии с определенными правилами. Например, сортировка «по возрастанию» - это сортировка элементов массива, в результате которой получается массив, каждый элемент которого, начиная со второго, не меньше стоящего от него слева. Существует достаточно большое число методов сортировки. Приведем два простейших из них. Линейная сортировка. Пусть необходимо упорядочить массив по возрастанию (убыванию) элементов. Алгоритм: Просматриваем элементы, начиная с 1-го. Ищем минимальный (максимальный). Меняем его местами с 1-м элементом. Просматриваем элементы, начиная со 2-го. Ищем минимальный (максимальный). Меняем его местами со 2-м элементом. И т. д. до предпоследнего элемента. Задание 3 Анализ проекта Сортировка методом «пузырька». Данный метод получил такое название по аналогии с пузырьками воздуха в стакане воды. Более «легкие» (максимальные или минимальные) элементы постепенно «всплывают». В отличие от линейной сортировки, сравниваются только пары соседних элементов, а не каждый элемент со всеми (поэтому такая сортировка выполняется за меньшее число шагов и, следовательно, быстрее). Алгоритм: 50

51 Последовательно просматриваем пары соседних элементов массива А (т.е. сравниваем первый элемент со вторым, второй с третьим и так далее). Если для соседних элементов выполняется условие А(i-1)>А(i), то значения меняются местами. Выполнив один проход по массиву, получим новую последовательность значений. Эта последовательность до конца не отсортирована, но наибольший элемент находится на правой границе массива. Выполняем новые проходы, каждый раз сокращая количество просматриваемых элементов на Находясь в среде Ms Word или другого приложения из Microsoft Office, нажмите ALT+ F11, чтобы перейти в среду VBA. 2. На панели инструментов щелкните кнопку Insert UserForm. Появляется окно с формой UserForm1. 3. Создайте форму согласно эскизу, установив в окне свойств Properties значение свойств (Name) и Caption которые приведены ниже. Обратите внимание на то, что элемент управления для выбора метода сортировки имеет название Frame и создается с помощью копки панели управления, которая имеет вид Порядок выполнения Свойство (Name) frmsort txtn cmdначать optsort1, Value=True optsort2 txtto txtafter 4. Перейдите в окно кода, дважды щелкнув кнопку Начать, и введите следующий текст процедуры Option Base 1 'индексы массивов начинаются с 1 Private Sub cmdначать_click() Dim Mas() As Integer 'динамический массив Dim i, j, n, vr As Integer 51

52 'ввод значений с клавиатуры n = CInt(TxtN) ReDim Mas(n) 'задаем длину массива For i = 1 To n Mas(i) = Val(InputBox("Введите " & i & "-й элемент массива")) 'вывод исходного массива TxtTo = "" 'очистка поля вывода For i = 1 To n TxtTo = TxtTo & Mas(i) & " " If OptSort1 Then 'Линейная сортировка For i = 1 To n - 1 'Двигаемся по массиву, сокращая неотсортированную часть For j = i + l To n 'Сравниваем по очереди i-й элемент неотсортированной части массива со всеми, от i+1-го до конца If Mas(j) < Mas(i) Then 'если в неотсортированной части массива нашли элемент, больший i-го, то меняем их местами: vr = Mas(i) Mas(i) = Mas(j) Mas(j) = vr End If Else 'Метод «пузырька» For i = 2 To n For j = n To i Step -1 If Mas(j - 1) > Mas(j) Then 'вытеснить элемент справа, тогда пузырек всплывает влево vr = Mas(j - 1) Mas(j - 1) = Mas(j) Mas(j) = vr End If End If 'вывод массива после сортировки TxtAfter = "" 'очистка поля вывода For i = 1 To n TxtAfter = TxtAfter & Mas(i) & " " 52

53 5. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). Проанализировать работоспособность программы путем ввода различных массивов и выбора различных методов сортировки. 6. Сохраните документ в файле Лаб7_2.doc в своей папке на жестком диске. Задание 4 Дан массив A(n,m). Занести все отрицательные элементы массива в массив В и напечатать его. Ввод и вывод данных осуществлять при помощи рабочего листа Excel. Анализ проекта Алгоритм задачи состоит из трех частей: ввести матрицу А; проверить каждый ее элемент: если он отрицательный, поместить его в массив В; вывести полученный массив В на печать. Первая и третья части - ввод и вывод данных решаются стандартным способом ввода и вывода массивов. Вторую часть рассмотрим подробнее. Анализ элементов A(i,j) матрицы А можно провести, как обычно для матриц, с помощью вложенных циклов For, перечисляющих все строки (i) и столбцы (j) матрицы. Если A(i,j) -отрицательный, нужно присвоить очередному элементу массива В это значение. Поскольку заранее количество отрицательных элементов в А неизвестно, то заранее неизвестна и точная длина массива В. Очевидно только, что она не превысит n*m - количества элементов исходной матрицы А. Ясно также, что счетчик элементов массива В никак не зависит от очередных i и j. Отсюда следует главный вывод для решения задач такого типа: для массива-приемника необходимо завести свой, независимый счетчик элементов. Отведем для этого отдельную переменную. Пусть это будет k. При записи отрицательного A(i,j) в В(k) счетчик k будет увеличиваться на единицу, и по окончании всей работы значение k покажет истинную длину массива В. Для примера в программе взята исходная матрица А размером n=4, m=6. Порядок выполнения 1. Запустить Ms Excel, перейти в окно кода VBA и ввести следующий текст процедуры: Option Base 1 'индексы массивов начинаются с 1 Sub Перенос() Dim A(4, 6) As Integer Dim B(24) As Integer, k As Integer For i = 1 To 4 For j = 1 To 6 A(i, j) = Cells(i, j) 'ввод элементов массива с диапазона A1:F4 53

54 k = 0 'обнуление счетчика массива В For i = 1 To 4 For j = 1 To 6 If A(i, j) < 0 Then k = k + 1 B(k) = A(i, j) End If For i = 1 To k Cells(9, i) = B(i) 'Вывод массива В в строку 9 2. На рабочем листе в диапазон ячеек А1:F4 ввести исходные данные для элементов массива A(4,6). 3. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). Проанализировать работоспособность программы. 4. Сохраните документ в файле Лаб7_3.xls в своей папке на жестком диске. Задание 5 Дан массив A(8,8) элементов. Подсчитать число четных чисел в матрице и подсчитать сумму элементов, стоящих на четных позициях строк и столбцов матрицы Анализ проекта Алгоритм первой части задачи включает ввод матрицы, перебор ее значений с проверкой на четность, подсчет суммы четных значений и вывод результата. Для программирования задачи возьмем переменную (например, k) в качестве счетчика четных чисел. Проверку на четность реализуем с помощью функции Mod. Во второй части уже не важна четность элементов, важна четность позиций: элемент А(2,4), например, подходит, а элемент А(3,4) нет. Чтобы попасть на четную позицию, излишне использовать функцию Mod для счетчиков строк i и столбцов j. Достаточно изменять шаг каждого цикла с приращением 2. Порядок выполнения 1. Перейти в окно кода VBA и ввести следующий текст процедуры: Option Base 1 'индексы массивов начинаются с 1 Sub matrixnumber() 54

55 Dim i, j, k, s, A(8, 8) As Integer For i = 1 To 8 ' вводим матрицу с клавиатуры: For j = 1 To 8 A(i, j) = Val(InputBox("Введите элемент массива. " & i & "-я строка " & j & "-й столбец.")) k = 0 'обнуляем счетчик четных чисел For i = 1 To 8 'начинаем перебор элементов матрицы: For j = 1 To 8 If A(i, j) Mod 2 = 0 Then 'проверяем на четность k = k + 1 'считаем четные значения End If MsgBox ("Кол-во четных чисел: " & k) 'печатаем результат s = 0 'обнуляем сумму чисел For i = 2 To 7 Step 2 'начинаем перебор четных For j = 2 To 7 Step 2 'элементов матрицы: s = s + A(i, j) 'накапливаем сумму MsgBox ("Сумма элементов на четных позициях: " & s) 2. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). Проанализировать работоспособность программы. 3. Сохраните документ в файле Лаб7_7.xls в своей папке на жестком диске. Задание 6 Дан массив A(5,5) элементов. Подсчитать среднее значение элементов матрицы, расположенных строго ниже главной диагонали матрицы Анализ проекта В задачах, связанных с диагоналями матриц, следует обращать внимание на зависимость значений индекса j (счетчика столбцов) от i (счетчика строк). Если обнаружена закономерность, то можно избавиться от множества лишних операторов и сделать программу более внятной и компактной. Например, все элементы главной диагонали имеют номера столбцов, совпадающие с номерами строк, т.е. «типичный» представитель этой диагонали - элемент A(i,i). Причем, для каждой строки этого куска матрицы, номера столбцов нужных элементов изменяются от первого до пересекающегося с диагональю. На диагонали номер 55

56 столбца совпадает с номером строки, т.е. j = i. Поскольку диагональ по условию не включена, то j изменяется не до i, а до i - 1. Порядок выполнения 1. Перейти в окно кода VBA и ввести следующий текст процедуры: Option Base 1 'индексы массивов начинаются с 1 Sub Matrix() Dim A(5, 5) As Integer, S As Integer Dim k As Integer, Avg As Single For i = 1 To 5 ' вводим матрицу с клавиатуры: For j = 1 To 5 A(i, j) = Val(InputBox("Введите элемент массива. " & i & "-я строка " & j & "-й столбец.")) s = 0 k = 0 For i = 2 To 5 'номера строк берутся от 2 до конца матрицы For j = 1 To i - 1 'номера столбцов берутся от 1 до диагонали S = S + A(i, j) k = k + 1 Avg = S / k MsgBox ("Среднее значение элементов= " & Avg) 2. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). Проанализировать работоспособность программы. 3. Сохраните документ в файле Лаб7_5.xls в своей папке на жестком диске. Задание для самостоятельной работы 1. Найти минимальный из элементов массива А(10), принадлежащий интервалу (2; 14). 2. Составить массив В из неположительных элементов массива А(15). 3. Посчитать количество нулевых элементов в матрице А(5х 5). 4. Перенести элементы, кратные трем, из массива А(5х 5) в массив В. 5. Обнулить элементы матрицы М(5х 5), лежащие ниже ее побочной диагонали, включая диагональные. 56

57 Результат работы: 1. Файл Лаб7_2.doc с формой Сортировака массивов 2. Файлы Лаб7_1.xls, Лаб7_3.xls, Лаб7_4.xls, Лаб7_5.xls с выполненными заданиями. Вопросы для самоконтроля 1. Что такое массив и для чего он создается? 2. Как организовать доступ к данным в массиве? 3. Что такое нумерация с нулевой базой и как ее можно изменить? 4. Что такое одномерный, двухмерный и трехмерный массивы. Чему равно предельное количество измерений? 5. Чем отличаются статический и динамический массивы? 6. Приведите синтаксис описания статического и динамического массива в программе. 7. Как переопределить размерность массива. Приведите синтаксическую конструкцию. 57

58 Лабораторная работа 8 Строки. Работа с данными символьного типа. Любые текстовые данные, сохраняемые в VBA, называются строками. Для их хранения предназначен тип данных String. Строка может содержать текстовые символы любых типов: буквы, цифры, знаки пунктуации, разделительные символы и др. Строки всегда заключаются в двойные кавычки ( ). Существует две категории строк: строки переменной длины и строки фиксированной длины. По умолчанию в VBA все строки принимаются переменной длины. Следует отметить, что тип данных String является очень важным типом, т.к., как правило, информация, вводимая пользователем - это строковые данные. Кроме того, поскольку на экране монитора отображается только текст, то все другие типы данных должны быть преобразованы в строковые данные перед выводом на экран. Единственная операция, применяемая при работе со строками - конкатенация. Конкатенацию строк обычно используют для формирования строк из различных источников в процедуре, чтобы создавать сообщение для вывода на экран. В VBA для конкатенации строк применяется оператор &. Синтаксис: Операнд_1 & Операнд_2 [& Операнд_3..] Операнд_N - любое допустимое строковое или численное выражение (которое автоматически преобразуется в строковое). Тип данных результата конкатенации строк - String. Несмотря на то, что операция единственная, встроенных функций для работы достаточно много. Функция Len возвращает значение типа Long, содержащее число символов в строке String. Len(Строка) Функция Lcase - возвращает значение типа String, представляющее строку, преобразованную к нижнему регистру. LCase(строка) Обязательный аргумент строка представляет любое допустимое строковое выражение. К нижнему регистру преобразуются только прописные буквы; строчные буквы и прочие символы остаются неизмененными. Функция Ucase - возвращает значение типа Variant (String), содержащее строку, преобразованную к верхнему регистру. UCase(строка) Обязательный аргумент строка представляет любое допустимое строковое выражение. К верхнему регистру преобразуются только строчные буквы; прописные буквы и прочие символы остаются неизменными. 58

59 Для создания строк, содержащих повторяющиеся символы, применяют функции Space и String. Функция Space(число), формирует строку, а обязательный аргумент число указывает нужное число пробелов в строке. Ее удобно использовать для форматирования и очистки данных в строках фиксированной длины. Функция String(number, character), содержит аргументы number - Длина возвращаемой строки и character - код символа или строковое выражение, первый символ которого используется при создании возвращаемой строки. Функция Mid(string, start[, length]), возвращает значение типа String, содержащее указанное число символов строки. Здесь string - строковое выражение, из которого извлекаются символы, start - позиция символа в строке string, с которого начинается нужная подстрока. Если start больше числа символов в строке string, функция Mid возвращает пустую строку (""). length - значение типа Variant (Long). Число возвращаемых символов. Если этот аргумент опущен или превышает число символов, расположенных справа от позиции start, то возвращаются все символы от позиции start до конца строки. Функция InStr([start, ]string1, string2[, compare]) возвращает значение типа Long, указывающее позицию первого вхождения одной строки внутри другой строки. start - числовое выражение, задающее позицию, с которой начинается каждый поиск. Если этот аргумент опущен, поиск начинается с первого символа строки. string1 - Строковое выражение, в котором выполняется поиск. string2 - Искомое строковое выражение. compare - Указывает способ сравнения строк. Аргумент compare может быть опущен или иметь значение 0 или 1. Чтобы выполнить двоичное сравнение, следует указать 0 (это значение используется по умолчанию). Чтобы выполнить посимвольное сравнение без учета регистра, следует указать 1. Функция Asc(строка) возвращает значение типа Integer, представляющее код символа для первого символа строки. Аргумент строка является любым допустимым строковым выражением. Если строка не содержит символов, возникает ошибка выполнения. Возвращаемые значения лежат в диапазоне Функция Chr(кодСимвола) 59

60 возвращает значение типа String, содержащее символ, соответствующий указанному коду символа. Обязательный аргумент кодсимвола является значением типа Long, определяющим символ. Коды 0-31 соответствуют стандартным управляющим символам ASCII. Например, Chr(10) возвращает символ перевода строки. Обычным диапазоном значений аргумента кодсимвола является интервал Задание 1 Подсчитать количество символов, не являющихся цифрами, в произвольной строке. Анализ проекта Решение поставленной задачи сводится к проверке каждого символа строки с помощью функции Asc(строка), которая возвращает ASCII-код начальной буквы строки. Если код лежит в интервале [49,57], то это цифра. Порядок выполнения 1. Запустим MS Excel и перейдем в среду VBA нажав клавиши ALT+F Откройте окно кода VBA, щелкнув кнопку View code в окне свойств Project (или выполните двойной щелчок мышкой на пункте ThisDocument). 3. Перейдем в окно кода и введем следующий текст процедуры. Sub количество_цифр() Dim s As String Dim i As Byte, n As Byte s = InputBox ("Введите произвольную строку") n = 0 For i = 1 To Len(s) If Asc(Mid(s,i,1))>=49 And Asc(Mid(s,i,1))<=57 Then n = n + 1 End If MsgBox ( Количество цифр в строке - & n) 4. Запустите программу на выполнение, щелкнув на кнопке Run (или нажмите клавишу F5). Проанализировать работоспособность программы. 5. Сохраните документ в файле Лаб8_1.xls в своей папке на жестком диске. 60

61 Задание 2 Создать программу зашифровывающую, а затем расшифровывающую предложение, записанное на русском языке. Использовать шифр простой замены, в котором каждая буква русского алфавита заменяется другой буквой этого же алфавита. При этом замена осуществляется по правилу: первая буква заменяется последней, вторая - предпоследней и тд. Так, А заменяется на Я, Б- на Ю, В -на Э и т. д. Анализ проекта Решение поставленной задачи сводится к замене букв исходного текста (алфавит по порядку) буквами алфавита записанного в обратном порядке. Буквы русского алфавита, записанные в алфавитном порядке за исключением буквы Ё, буквы русского алфавита, выписанные в обратном порядке. Шифруемое сообщение вводится пользователем. Для решения поставленной задачи определяем количество символов преобразуемой строки. Образуем новую строку по длине равную исходной строке. Далее организуем цикл, в котором просматриваем все символы преобразуемой строки, определяем позицию k этого символа в исходном алфавите. Если в исходном алфавите символ не найден, то в данную позицию новой строки заносим этот символ без изменений, в противном случае в данную позицию новой строки заносим символ из нового алфавита, позиция которого совпадает с позицией k исходного алфавита. Порядок выполнения 1. Находясь в среде Ms Excel или другого приложения из Microsoft Office, нажмите ALT+ F11, чтобы перейти в среду VBA. 2. На панели инструментов щелкните кнопку Insert UserForm. Появляется окно с формой UserForm1. 3. Создайте форму согласно эскизу, установив в окне свойств Properties значение свойств (Name) и Caption которые приведены ниже Свойство (Name) 1 frmshifr 2 txtto 3 txtafter 4 cmdgo 61

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

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

Подробнее

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

Лабораторная работа 3. Программирование на языке Visual Basic for Applications (VBA) Теоретическая часть Лабораторная работа 3. Программирование на языке Visual Basic for Applications (VBA) В этой лабораторной работе необходимо выполнить задания своего варианта (номер варианта выбираете по последней цифре

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

ВВЕДЕНИЕ В СИСТЕМУ MATLAB

ВВЕДЕНИЕ В СИСТЕМУ MATLAB АСТРАХАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И КОММУНИКАЦИЙ КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ И КРИПТОГРАФИИ Методическое пособие ВВЕДЕНИЕ В СИСТЕМУ MATLAB по курсу

Подробнее

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

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

Подробнее

C4 (высокий уровень, время 60 мин)

C4 (высокий уровень, время 60 мин) C4 (высокий уровень, время 60 мин) Тема: Обработка данных, вводимых в виде символьных строк (написать программу средней сложности из 30-50 строк). Что нужно знать: символьная строка это цепочка символов,

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

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

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

Подробнее

Глава 1 Начало работы

Глава 1 Начало работы Глава 1 Начало работы Содержание Главы Описание основных принципов работы в NX Описание основных модулей Запуск NX Создание, открытие и сохранение файла Описание основных объектов и терминов Интерфейс

Подробнее

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

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

Подробнее

ОРГАНИЗАЦИЯ БАЗ ДАННЫХ И ЭКСПЕРТНЫХ СИСТЕМ

ОРГАНИЗАЦИЯ БАЗ ДАННЫХ И ЭКСПЕРТНЫХ СИСТЕМ БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ФАКУЛЬТЕТ РАДИОФИЗИКИ И КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ Кафедра интеллектуальных систем К. В. Козадаев, Д. В. Щегрикович ОРГАНИЗАЦИЯ БАЗ ДАННЫХ И ЭКСПЕРТНЫХ СИСТЕМ ЛАБОРАТОРНЫЙ

Подробнее

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

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

Подробнее

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

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

Подробнее

Ðàáîòà ñ ïðîñòûìè è êîìáèíèðîâàííûìè

Ðàáîòà ñ ïðîñòûìè è êîìáèíèðîâàííûìè Ãëàâà 12 Ðàáîòà ñ ïðîñòûìè è êîìáèíèðîâàííûìè ñïèñêàìè 12 Заполнение элементов списка Элементы управления являются интерфейсными объектами, реализующими взаимодействие пользователя и приложения за счет

Подробнее

Интеграция верификации в интерактивный процесс разработки программ с явным выделением состояний

Интеграция верификации в интерактивный процесс разработки программ с явным выделением состояний Санкт-Петербургский государственный университет информационных технологий, механики и оптики Кафедра «Компьютерные технологии» А. А. Борисенко Интеграция верификации в интерактивный процесс разработки

Подробнее

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

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

Подробнее