ЗАВДАННЯ до курсової роботи з дисципліни "Обчислювальна техніка та програмування" для спеціальності ЗММ 3 семестр Викладач: доц. Ніколаєнко О.В. Цель курсовой работы - дальнейшее развитие навыков программирования на языку QBasic в среде Visual Basic for Application (VBA), используя возможности текстового редактора MS Word. Задачи, решаемый в ходе выполнения курсовой работы: ранее разработанные программы на языке QBasic (линейная, разветвление, циклы, одномерный массив, двумерный массив, файл последовательного доступа) преобразовать на язык VBA, используя его возможности как объектно-ориентированного языка, применение диалоговых окон ввода и вывода, а также окон форм с расположенными на них элементами управления (кнопки, поля ввода, надписи); для запуска среды VBA и непосредственно программ необходимо использовать текстовый редактор MS Word; оформление пояснительной записки к курсовой работе выполнить, используя возможности текстового редактора MS Word. Требования к оформлению курсовой работы Курсовая работа должна быть выполнена в электронном виде (на дискете) и в виде документа распечатанного на листах формата А4, шрифтом Times New Roman, размер шрифта 14пт, через 1,5 интервала. Пояснительная записка как электронная так и бумажная должна включать в себя: титульный лист, содержание, теоретическую часть, блок-схемы, описание программ, листинги текстов и результаты расчетов, список используемой литературы. Кроме того в электронном варианте дожен быть предусмотрен удобный запуск программ для демонстрации разработанных программ: использование объектов, таких как кнопка, поля ввода и других элементов управления. Варианты заданий в Приложении. 1. Общие сведения Современный офис, будь то государственный или коммерческое учереждение, торговая фирма или заводоуправление, немыслим без пакета программ Ms Office. Повсюду, где ведется деловая переписка, и работают с текстовыми документами, можно увидеть Word. Кроме создания и оформления документов, текстовый редактор Ms Word, является платформой для разработки программного обеспечения и соответственно автоматизации многих офисных задач на основе языка Visual Basic. 1 1.1. Текстовый редактор Ms Word. Запуск программы: Кнопка Пуск Программы Microsoft Word или двойной щелчок по файлу, созданному в редакторе (файлы с расширением .doc). Окно редактора (рис.1) имеет стандартный вид. Внутри находится окно документа. В окне редактора можно набирать текст и формулы, создавать таблицы и диаграммы, рисовать различные геометрические фигуры. Для работы с документами (создание, сохранение, открытие, редактирование и форматирование) существуют соответствующие команды Командной строки и дублирующие их кнопки на панелях инстументов Стандартная и Форматирования. Командная строка Стандартная Форматирования Рис.1 Предварительные установки для работы с редактором Перед набором текста и ввода текстов программ, необходимо выполнить установки следующих параметров (или проверить их наличие): - задать границы текста на листе: команда Файл Параметры страницы… Закладка Поля Верхнее, Правое, Нижнее - 2см, Левое -2,5см; - задать режим просмотра документа: команда Вид Обычный или Разметка страницы; - выбрать масштаб экранного изображения: команда Вид Масштаб… по ширене страницы; - раставлять переносы: команда Сервис Язык Расстановка переносов… установить флажок в поле Автоматическая расстановка переносов; - выбрать шрифт и его размер: Формат Шрифт... Шрифт - Times New Roman, Начертание - Обычное, Размер - 14пт; - задать расположение текста на листе, отступ первой строки абзаца и междустрочный интервал: команда Формат Абзац… Выравнивание - По ширине, первая строка на - 1,27см, междустрочный интервал - полуторный; - выбрать язык. Формулы 2 Для набора формул используют команду Формат Шрифт..., а также Вставка Символ…, для более сложных можно воспользоваться встроенным редактором формул: Вставка Объект… закладка Создание Тип объекта вибрать Microsoft Equation 3.0. Блок-схемы Для того чтобы нарисовать блок-схему, нужно включить панель Рисование . На панели выбрать Автофигуры Блок-схема. Вставить надписи в блоки. После того как все блоки нарисованы и подписаны, их нужно объединить в один рисунок: кнопка обвести все блоки Действия Группировать. В текст документа можно помещать не только рисунки, созданные в редакторе, а также изображения окон программ, т.е. экранные изображения. Нажатие на клавишу Ргіnt Sсгееn и вид экрана перенесется в буфер обмена, затем в документе выбрать команды Правква Вставить. Также можно скопировать часть экрана, активное окно, для этого нажимают сочетание клавиш Alt+ Ргіnt Sсгееn. Элементы управления В электронном варианте курсовой работы для демонстрации работы программ, в тексте нужно добавить кнопки для запуска редактора VBA и выполнения сооитветствующих программ. Команда Вид Панели инструментов Элементы управления включить режим Пуск Конструктора и выбрать элемент Кнопка . Объект Кнопка можно редактировать: изменять надпись, цвет шрифта и самой кнопки и т.д., для этого на панели Элементы управления Свойства в окне Свойств поменять следующие параметры: - Caption - название кнопки (например, Пуск), - BackColor - цвет фона кнопки, - ForeColor - цвет шрифта, - Font - тип шрифта на кнопке. Далее кнопке нужно назначить действие, что задается в режиме Исходный текст (см.п.1.2.). Для того чтобы запустить программу, нужно дважды щелкнуть по кнопке. Тексты программ копируются в среде VBA и вставляются в текст пояснительной записки (см.п.1.2). Печать Для того, чтобы распечатать текст пояснительной записки необходимо выполнить следующие действия: команда Файл Печать... 1.2. Среда Visual Basic for Application Языки программирования типа Visual Basic относятся к объектно-ориентированным. Идея объектно-ориентированного программирования состоит в объединении данных и способов их обработки (методов) в тип, который называется объектом. Примерами объектов могут быть элементы управления в окне: кнопки, надписи, текстовые поля и т.д. Среда визуального программирования Visual Basic - это графическая автоматизированная оболочка над объектно-ориентированной версией языка Basic, а среда Visual Basic for Application (для приложений) - встроена в программы пакета Ms Office, что дает возможность автоматизировать работу в них. VBA включает большое количество программных конструкций и обеспечивает любой тип доступа к любой функции приложений пакета. Если в языке Basic структурными единицами являются данные и команды (операторы), то здесь такой единицей является визуальный объект (или компонентом). Автоматизация программирования достигается благодаря возможностям перенесения объектов на форму (в программу) и возможностям изменять их свойства, не изменяя вручную изменений в программу. Форма - это объект, который обладает свойствами окна Windows и предназначен для размещения других объектов. Объекты служат для организации диалога с пользователем, создавая окна пользовательские. 3 В данной работе рассматривается в основном (кроме для одной из задач) только те элементы языка и его возможности для программирования задач, не связанных с объектами, которые создаются в приложениях. Основным элементом программирования является процедура - блок операторов программы в модуле. Модуль - это набор объявлений и процедур на языке, собранных в одну программную единицу. Каждая процедура в модуле может быть процедурой-подпрограммой, либо процедуройфункцией. Процедура выполняет набор инструкций, с помощью которых выполняются действия. Модули можно создавать в любом из приложений Ms Office, для создания модуля в Ms Word и собственно запуска среды Visual Basic (рис.2), необходимо Сервис Макрос Редактор Visual Basic, в редакторе выбрать на панели команду Insert (Вставка) Module (Модуль) и ввод текста программы. Рис.2 Начиная с пустой строки в окне модуля пишется программа. Чтобы создать новую процедуру в уже имеющемся модуле, в пустую строку поместить курсор и выполнить команды: Insert (Вставка) Procedure (Процедура) в окне выбрать тип процедуры, например Sub с именем prog1. На экране появится заготовка процедуры: Public Sub prog1() End Sub Внутри между этими строками можно набирать текст программы (можно скопировать программу на QBasic и перенести и отредактировать). Перемещение между текстовым редактором и VBA осуществляется одним из способов: - с помощью панели задач, - сочетание клавиш Alt+F11, - VBA команда View (Вид) Microsoft Word, - VBA кнопка на панели Стандартная. Запустить программу можно двумя способами: 1. в среде VBA. 2. из документа Word. В первом случае надо перейти в редактор VBA и выполнить команды: Run RunSub/UserForm. Во втором случае запуск программы осуществляется посредством кнопки, расположенной в самом документе Word (см.п.1.1). Для того чтобы она запускала программу модуля, кнопке надо назначить программу: в режиме Конструктора выбрать на панели Элементы управления режим Исходный текст в появившейся заготовке 4 Private Sub CommandButton1_Click() End Sub дописать обращение к процедуре решения непосредственно данной задачи Call prog1 Главным отличием при переносе программ из QBasic в VBA является ввод исходных данных и вывод результатов, остальные правила написания, операторы и функции, в рамках данной работы можно считать одинаковыми. Ввод данных осуществляется при помощи функции InputBox, которая выводит на экран диалоговое окно, с приглашением на ввод данных и текстовое поле для ввода данных. Укороченный вариант функции InputBox (приглашение [, заголовок окна]), где приглашение - сообщение, которое выводится в диалоговом окне, берется в кавычки; заголовок - текст, который появляется в заголовке диалогового окна. Функция возвращает строку симвоов, введенных пользователем. Для преобразования этой строки в число используется функция Val, которая выполняется после завершения работы InputBox. Например, требуется ввести значение переменной а=4,8. Фрагмент программы будет выглядеть так Dim a As Single a = Val(InputBox("Введите значение а", "Окно ввода данных")). При выполнении на экране появится окно (рис.3), втекстовом поле которого ввести 4,8 и нажать клавишу OK. Рис.3 Вывод данных осуществляется двумя способами: с помощью функции MsgBox, которая выводит данных или сообщения на экран; оператора Debug.Print, который выводит результат в окно отладки Immediate. MsgBox (приглашение [,][, заголовок окна]). Dim a, b As Single a = Val(InputBox("Введите значение а", "Окно ввода данных")) MsgBox "a=" & a Рис.4 Рис.5 Примечание: каждый параметр соединяется знаком &; круглые скобки ставятся тогда, когда возвращаемое значение функции в дальнейшем используется в программе c = MsgBox(a, , "Окно вывода"); если выводится большое сообщение, то производится перенос текста в рамках диалогового окна при помощи функции Chr и кода возврата каретки - 13 (рис.5) a = Val(InputBox("Введите значение а", "Окно ввода данных")) b = Val(InputBox("Введите значение b", "Окно ввода данных")) 5 MsgBox "a=" & a & Chr(13) & "b=" & b, , "Окно вывода" Второй вариант оператор Debug.Print Debug.Print выражение , где выражение - одна или несколько, разделенных запятыми переменных, констант или выражений. Если не открыто окно отладки, то нужно выполнить следующие команды: View (Вид) Immediate Window (Окно отладки). Debug.Print а,b Еще один вариант работы со средой VBA, это использования для ввода и вывода данных пользовательской формы или формы ирасположенных на ней соответствующих объектов с определенными свойствами, типа кнопки. Для этого после запуска редактора VBA, выбрать Insert (Вставка) UserForm (Пользовательская форма). В основном окне появится форма, серое поле и панель элементов управления (ели нет панели, включить кнопку ). Выбрав и нажав на панели соответствующий элемент, перетащить его на форму и расположить (рис.6). Форма Поле ввода Надпись Кнопка Рис.6 Для того, чтобы на этих элементах написать соответствующие надписи, в окне Свойств нужно заменить свойство Caption. Объекты: Надпись (Label) - для создания текстовых полей, Кнопка (CommandButton) используется для выполнения действий, Поле (TextBox) - для ввода значений с клавиатуры. Затем этим объектам нужно назначить действия, Кнопкам - запуск процедуры вычисления и выход из формы, Полю в процедуре либо присваивать значение результата либо переменным присваивать значения из Поля. Процедура нажатия кнопки "Пуск", автоматически создается заготовка после двойного щелчка на объекте: Private Sub CommandButton1_Click() Процедура решения задачи End Sub Кнопка "Выход": Private Sub CommandButton2_Click() End End Sub 6 Процедура запуска самой формы, нажатием кнопки, расположенной в документе: Private Sub CommandButton3_Click() UserForm1.Show: End Sub 3. Примеры выполнения Пример выполнения всех заданий, кроме линейной. Условие: Создать блок-схему и программу для решения задачи с разветвлением a sin x 2 , y 2 cos (ax b), xz x z. Блок-схема: Начало Ввод x,z,a,b Да Нет x>z Y= asinx2 Y=cos2(ax-b) Вывод y Конец Запуск задачи1 Кнопка для запуска программы: Изменение свойств (параметров) кнопки, окно Свойств (рис.7). Программа кнопки в тексте: Private Sub CommandButton2_Click() Call pr1 End Sub Программа: Public Sub pr1() Dim a, b, x, z As Single a = Val(InputBox("Введите значение а", "Окно ввода данных")) b = Val(InputBox("Введите значение b", "Окно ввода данных")) x = Val(InputBox("Введите значение x", "Окно ввода данных")) z = Val(InputBox("Введите значение z", "Окно ввода данных")) If x > z Then y = a * Sin(x ^ 2) Else y = Cos(a * x - b) ^ 2 End If 7 MsgBox "x=" & x & Chr(13) & "z=" & z & Chr(13) & "y=" & y, , "Окно вывода" Debug.Print "y=", y End Sub Примечание. В листингах программ, параметры и операторы, которые выделены жирным шрифтом, изменяются согласно варианту задания. Рис.7 Результат работы программы: Пример решения линейной задачи. Условие: Составить блок-схему алгоритма и программу для вычисления функции y=sinxb+acos2x для заданных исходных данных a,b,x (линейная программа). Ввод данных и вывод результата поместить на форме. Блок-схема 8 Начало Ввод x,a,b Y= sinxb =acos2x Вывод y Конец Кнопка вызова формы из документа (создается также, как в предыдущем примере): Задача 2 Процедура запуска формы: Private Sub CommandButton3_Click() UserForm1.Show End Sub Форма ввода исходных данных и вывода результата Процедура кнопки "Вычислить": Private Sub CommandButton1_Click() a = Val(TextBox1.Text) b = Val(TextBox2.Text) x = Val(TextBox3.Text) y = Sin(x ^ b) + a * Cos(x) ^ 2 TextBox4.Text = y End Sub Процедура кнопки "Выход": Private Sub CommandButton2_Click() End End Sub 9 Список литературы 1. Інформатика: Комп'ютерна техніка. Компютерні технології. Посіб./За ред. О.І.Пушкаря К.: Видавничий центр "Академія", 2001. 2. Попов В.Б. Основі компьютерніх технологий. - М.: Финансі и статистика, 2002. 3. Сибирцев В.Г., Ткачев И.И. Бейсик для персональных ЭВМ. - Киев: СП "ГУТ", 1992. 4. Глинський Я.М., Анохін В.Є., Ряжська В.А. Бейсик. QBasic і Visual Basic . - Львів: "Деол", 2001. 5. Хорев В.Д. Самоучитель программирования на VBA в Microsoft Office. - К.: Юниор, 2001. 10 ПРИЛОЖЕНИЕ Варианты заданий № в а р . Завдания at 2 ln t 1 y= 1 sin abt e at cos bt 1 t 2 t <1 t >2 t [0;3] t = 0,15 В одномерном числовом массиве X(N) поменять местами первый из отрицательных злементов массива с последним элементом. Проверить сбалансированность скобок в строке. (Скобки сбалансированны, если закрывающая скобка расположена после открывающей и их количество совпадает). Определить сколько раз в массиве A повторяется значение каждого из элементов первого столбца. В числовом файле определить произведение элементов, не совпадающих по значению с первым элементом файла. x < 1,3 x [0,8;2] x 2 7 / x 2 2 x = 1,3 x = 0,1 y= ax 3 7 x x > 1,3 lg( x 7 x) В одномерном числовом массиве X(N) вычислить среднее арифметическое положительных элементов. Дана строка символов. Расположить их в порядке возрастания длины слова. Определить сколько положительных и сколько отрицательных элементов содержится в массиве A. В числовом файле определить произведение элементов, не совпадающих по значению с первым положительным элементом файла. x<1,2 x [1;2] ax 2 bx c 3 x=1,2 x = 0,05 w= a / x x 2 1 x>1,2 (a bx) / x 2 1 В одномерном числовом массиве X(N) опрелелить количество элементов больших первого положительного элемента массива. Подсчитать суммарное число букв, из которых состоят самое длинное и самое короткое слово. Определить сколько элементов в массиве A меньших по значению первого положительного элемента. В числовом файле определить номер первого положительного и номер последнего отрицательного. x<1,4 x [0,7;2] x 2 7 / x 2 3 4 x=1,4 x = 0,1 q= ax 7 x x>1,4 ln( x 7 | x a|) В одномерном числовом массиве X(N) опрелелить среднее арифметическое элементов, распложенных до первого отрицательного элемента. Выяснить, имеется ли в строке пара соседствующих букв 'он' или 'но'. Определить значения максимального и минимального элементов в каждой строке массива A. Подсчитать их среднее арифметическое - Aср. В числовом файле вычислить сумму элементов, значение которых больше значения первого положительного элемента. x<1 x [0,2;2,8] 1,5 cos 2 x 5 x=1 1,8ax x = 0,2 y= 2 1<x<2 ( x 2) 6 x>2 3tgx В одномерном числовом массиве X(N) заменить отрицательные элементы максимальным по значению Выяснить, имеется ли в строке пара соседствующих одинаковых символов. Определить номера столбцов массива A, в которых сумма элементов больше значения первого элемента массива A. 11 № в а р . Завдания В числовом файле вычислить сумму элементов, значение которых меньше значения последнего положительного элемента. x>a x [1;5] x3 x a 6 w= x sin ax x=a x = 0,5 x<a ax e cos ax В одномерном числовом массиве X(N) заменить положительные элементы минимальным по значению. Выяснить, имеется ли в строке все буквы, входящие в слово 'шина' и подсчитать количество вхождений каждой буквы. Определить количество отрицательных элементов в каждом столбце массива A. В числовом файле вычислить сумму тех элементов, значения которых меньше суммы первого и последнего элементов файла. bx<1 x [0,1;1] bx lg bx 7 Q= |1 bx| bx=1 x = 0,1 bx>1 bx lg bx В одномерном числовом массиве X(N) определить количество элементов меньших по значению среднего арифметического первого и последнего элементов. Удалить из данной строки все группы букв вида 'abcd'. Вычислить сумму элементов каждого столбца, в котором элемент главной диагонали отрицательный. В числовом файле определить количество элементов, значения которых меньше суммы первого положительного и последнего отрицательного элементов файла. x>3,5 x [2;5] sin x lg x 8 y= cos 2 x x 3,5 x = 0,25 В одномерном числовом массиве X(N) определить сумму квадратов отрицательных элементов. Преобразовать строку, удалив каждый символ "*" и повторив каждый из остальных символов. В каждой строке поменять местами элемент главной диагонали строки с последним отрицательным элементом строки. В числовом файле определить количество элементов, значения которых больше суммы первого положительного и последнего отрицательного элементов файла. x>1 x [0,5;2] lg( x 1) 9 f= sin 2 | ax| x 1 x=0,1 В одномерном числовом массиве X(N) определить разность максимального по модулю и минимального по модулю элементов. Известно, что среди символов есть по крайней мере один символ ':'. Получить все символы, расположенные между первым и вторым двоеточиями. Вычислить сумму отрицательных элементов тех столбцов, которые содержат хотя-бы один положительный элемент. В числовом файле определить количество элементов, значения которых больше среднего арифметического первого положительного и последнего положительного элементов файла. x<0,5 x [0,2;2] (ln 3 x x 2 ) / x t 1 z= x t 1 / x x=0,5 x = 0,2 0 x>0,5 2 cos x t sin x В одномерном числовом массиве X(N) определить произведение отрицательных элементов. Заменить в ней каждую группу букв 'child' группой букв 'children'. Вычислить для каждой строки сумму элементов, размещенных до первого отрицательного элемента в строке. В числовом файле определить количество элементов, значения которых меньше модуля среднего арифметического первого отрицательного и последнего отрицательного элементов файла. 12