Обчислювальна техніка та програмування

advertisement
ЗАВДАННЯ
до курсової роботи
з дисципліни
"Обчислювальна техніка та програмування"
для спеціальності ЗММ
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),
xz
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
Download