close

Вход

Забыли?

вход по аккаунту

?

Высокоуровневые элементы

код для вставкиСкачать
ОСНОВЫ
ОФИСНОГО
ПРОГРАММИРОВАНИЯ
Шпак Галина Трофимовна
Преподаватель ФСПО ГУАП
1
Студент – это не мешок, который
надо наполнить, а факел, который
надо зажечь.
Акад. В.И. Арнольд
2
Язык программирования – Visual Basic
Диалекты Visual Basic:
•
Visual Basic 6 как автономная система программирования
•
VBA (Visual Basic for Application) – система
программирования, встроенная в MS Office
•
VBScript – язык программирования Интернет-сценариев,
выполняемых на стороне клиента
•
технология ASP (Active Server Pages) - программирование
Интернет-сценариев, выполняемых на стороне сервера
•
VB.Net – последняя версия языка Visual Basic как часть
интегрированной среды программирования
Visual Studio.NET
Учебная среда программирования – VBA/Word/Excel
3
Интеграция VBA с Visual Studio.NET:
"Корпорация Microsoft объявила о создании
Visual Studio Tools for Applications.
Этот инструментарий предлагается как созданный на основе .Net
преемник пакета Visual Basic for Applications
и дает возможность пользователям, независимым производителям
программного обеспечения и партнерам настраивать
приложения.
Visual Studio Tools for Applications поддерживает и Visual Basic,
и C# и предлагает такие возможности .Net Framework, как
защита и функциональность Windows Forms.
4
Перепись населения у прoграммиста:
-Ваш рoднoй язык?
- Как этo рoднoй язык?
- Ну какoй Вы язык с детства изучали, всю жизнь
испoльзoвали?
- Basic.
- Да нет, настoящий.
- А! Настoящий! Тoгда Си.
5
ЛИТЕРАТУРА
А. Основная:
1. Кузьменко В. Г. VBA 2000 / VBA 2002. – М.: ЗАО
"Издательство БИНОМ", 2000; 2002. (Главы 1 –8 и 11).
2. Михеев Р. Н. VBA и программирование в MS Office для
пользователей. – СПб.: БХВ-Петербург, 2006. Гл. 1-5 и 10.
Б. Дополнительная:
1. Гарнаев А.Ю. VBA в подлиннике. – СПб.: БХВ-Петербург, 2005
2. Штайнер Г. Visual Basic 6.0 для приложений. Справочник. – М.:
Лаборатория базовых знаний, 2000.
3. Карпов Б. VBA: специальный справочник – СПб: Питер, 2002.
(Главы 1, 2 и Приложение А).
4. Волченков Н. Г. Учимся программировать: Visual Basic 5. – М.:
"Диалог-МИФИ", 1998 (и след. изд.)
5. Санна П. и др. Visual Basic для приложений в подлиннике. –
СПб.: BHV – Санкт-Петербург., 1997 (и след. изд.)
6. Алиев В. К. Visual Basic. – М.: СОЛОН-Р, 2002.
6
ТЕМАТИЧЕСКИЙ ПЛАН
1.
2.
3.
4.
5.
6.
7.
8.
Преимущества офисного программирования
Среда VBA. Правила записи программ. Представление
данных в программе.
Экранный ввод-вывод.
Оператор присваивания. Программирование вычислений.
Работа со строками.
Управляющие структуры. .
Клавиатурные макросы.
Общие сведения о технологии программирования.
7
Введение. Определения
RAD (Rapidly Application Development) –
технология разработки программ, при
которых программы составляются из
уже готовых, отлаженных и
проверенных блоков – компонент, после
чего их взаимодействие и уникальная
логика описывается на языке
программирования
8
Определения. Продолжение
Событийно-управляемое
программирование
–
стиль
или
технология программирования, при
котором выполнение блоков программы
происходит в ответ на события, а не в
заранее
определенном
порядке.
Источником событий обычно является
пользователь.
9
Определения. Продолжение
Объектно-ориентированное
программирование (ООП) –
программирование, основанное
на моделировании предметной
области при помощи объектов.
10
Определения. Продолжение
Каждый
объект
отражает
определенную
самостоятельную
сущность предметной области со
своими данными и возможностями.
На него можно воздействовать
вызовом принадлежащих объекту
процедур( методов) или установкой
его параметров (свойств). Программа
состоит
из
объектов,
которые
взаимодействуют друг с другом.
11
Определения. Продолжение
Класс есть некое множество
объектов,
имеющих
общую
структуру и общее поведение.
Любой
конкретный
объект
является экземпляром какого-либо
класса. Класс называют также
типом объекта.
12
Пример. Система управления
аквариумом
Классы: Рыбка, Вода, Водоросль, Подсветка.
Класс Рыбка состоит из объектов: Рыбка1,
Рыбка2, Рыбка3
Класс Подсветка состоит из объектов:
Подсветка1, Подсветка2
Свойство: Яркость (число, определяющее
яркость свечения лампочки)
Методы: Включить, Выключить
13
Продолжение Пример. Система
управления аквариумом
Включение лампочки1:
Подсветка1.Включить
Удвоение яркости:
Подсветка1.Яркость=Подсветка1.Ярк
ость*2
Точка отделяет имя объекта от
имени принадлежащего ему метода
или свойства
14
Офисное программирование
• Пользователь всегда работает в единой
офисной среде независимо от документа
• Функции пользователю предоставляет
офисная среда
• Пользователь сам создает простые виды
документов
15
Состав Office 2003
•
•
•
•
•
•
Word
Excel
Power Point
Outlook
Access
Инструментальные средства Office Tools
16
Библиотека объектов Office 2003
Совокупность библиотек Office 2003
представляет каркас документов,
порождаемых в программной среде.
Открывая новый документ в
приложении Office, выбираются
автоматически нужные библиотеки,
которые и составят каркас этого
документа
17
Каркас документа Word
18
Добавление новых библиотек в
каркас
• Войти в режим редактора
Tools|Macro
выбрать пункт Visual Basic Editor
( Alt + F11)
• Меню Tools | References
добавить нужные библиотеки
19
Расширения каркаса документов
20
Объекты Office. Application
Application.ActiveDocument
ActiveDocument ' Можно короче
Application.ActiveWorkbook.ActiveSheet.Range("A1") = "Hi”
' Можно и так
ActiveSheet.Range ("A2") = "By-By"
'Можно даже так!
Range("A3") = "I'm glad to see you"
‘А это только так. Quit не является глобальным методом.
Application.Quit
21
Практика
22
Основы технологии
программирования на языке Visual
Basic for Applications (VBA
VBA
относится
к
языкам
объектно-ориентированного
программирования (ООП). ООП
можно описать как методику
анализа,
проектирования
и
написания
приложений
с
помощью объектов.
23
Объекты
Объект - основной элемент VBA.
Примеры объектов: лист Excel Sheet, рабочая книга - Workbook,
ячейка - Cell, диапазон ячеек Range, приложение - Application,
пользовательская
форма
UserForm,
кнопка
CommandButton.
24
Семейства
Объекты одного и того же типа
объединены в семейства. Например,
рабочие
книги
объединены
в
семейство
рабочих
книг
—
Workbooks, листы объединены в
семейство листов - Sheets, ячейки
объединены в семейство ячеек -Cells.
25
Иерархия
Все объекты в VBA находятся на разных
уровнях иерархии: некоторые объекты
содержат другие объекты. Например,
рабочая книга (Workbook) содержит листы
(Sheets), лист содержит ячейки (Cells).
Объектом самого высокого уровня является
приложение
(Application).
Иерархия
определяет связь между объектами и
показывает пути доступа к ним.
26
Указание объекта
Application.
Workbooks("Учет").Sheets("Сотр
удники").Cells(2,l)
полная ссылка на ячейку А2 (второй ряд,
первый столбец) на листе Сотрудники в
рабочей книге Учет
27
Форма
Формы позволяют осуществлять ввод
данных на листы Excel. Особенно это
важно, когда на листе создается список.
Список - это таблица, строки которой
содержат однородную информацию. В
терминологии Excel список называют
также базой данных, при этом строки
таблицы -это записи базы данных, а
столбцы - поля записей.
28
Методы
Над объектами можно совершать различные
действия, например, лист или диапазон
выбрать/выделить (Select), очистить ячейку
(Clear), закрыть приложение (Quit), показать
пользовательскую форму (Show) или скрыть
(Hide). Действие, выполняемое над объектом,
называется методом. Метод записывают справа
от объекта через точку, т.е. синтаксис применения
метода:
Объект.Метод.
29
Примеры применения методов:
• Cells(2,1 ).С1еаг - очистить ячейку А2;
• Application.Quit - приложение закрыть;
• Sheets("Сотрудники"). Select - выбрать лист
Сотрудники;
• Range("A: A"). Select - выделить столбец А;
• UserForm1 .Show - пользовательскую форму
номер один показать;
• UserForml .Hide - пользовательскую форму
номер один скрыть.
30
Свойства
Объекты имеют характеристики, например,
такие как имя диапазона (Name), надпись
на кнопке (Caption), содержимое поля
ввода (Text), значение ячейки,
переключателя или флажка (Value) и др.
Характеристики объекта называются
свойствами. Свойствам можно присваивать
определенные значения. Синтаксис
установки значения свойства:
Объект.Свойство=ЗначениеСвойства.
31
Примеры свойств
• Range(“A2:A8”).Name=”Opганизации” свойству Name диапазона Range(“A2:A8”)
присвоить значение «Организации»;
• UserForml.TextBoxl.Text = “”- очистить
(присвоить пустое значение) поле ввода номер
один в пользовательской форме номер один;
• UserForml.CheckBoxl.Value = True установить флажок номер один в
пользовательской форме номер один.
32
Методы и свойства некоторых
объектов VBA
33
События
Событие - это действие, распознаваемое
объектом, например нажатие кнопки или
изменение содержимого поля. На событие
можно
запрограммировать
отклик.
Суть
программирования на VBA как раз и
заключается в этих двух понятиях: событие и
отклик на него. Если пользователь, например,
нажимает кнопку (т.е. щелкает по ней мышкой),
тогда в качестве отклика на это событие
выполняется программа, которая называется
процедурой обработки события. Если такая
программа не создана, то ничего не происходит.
34
Т е м а 1. Среда VBA. Правила записи программ.
1. Среда VBA. Слайд 5
2. Состав языка VBA. Правила записи программ. Слайд 7
3. Дисциплина программирования (начальные рекомендации)
4. «Моя первая программа»
Слайд 9
Слайд 11
35
1. Среда VBA.
Вход в среду:
Сервис-Макрос-Редактор Visual Basic {Alt+F11}
Сервис-Макрос-Макросы… {Alt+F8}
Способы хранения программ VBA:
• в шаблоне (файл Normal.dot)
• в документе (файл MyDocument.doc)
• в архиве (файл MyPrograms.bas)
Справочная система:
• Контекстная справка – {Ctrl + F1}
• Всплывающая подсказка - { Ctrl + I }
Специальные обозначения:
[…] – необязательная часть (optional)
{ X | Y | Z } – альтернативные элементы
36
37
2. Состав языка VBA. Правила записи программ.
Состав языка:
• Стандартные операторы языка VB.
• Операторы обращения к командам Office-приложения (Word)
• Операторы управления курсором (в т. ч. с выделением
текста)
NB: Все действия, которые пользователь может выполнить в Word'е,
используя мышь и клавиатуру,
можно запрограммировать в VBA.
Например:
o изменить форматирование части документа;
o выполнить поиск и замену;
o открыть новый или сохранить открытый документ и т. д.
38
Правила записи программ:
1) Оформление программы:
Sub … End Sub
2) Как правило, 1 оператор на строке ( ~1000 символов!).
Если несколько – разделяются двоеточием:
A=5:B =3
3) При необходимости перенести часть оператора на следующую
строку – символы " _"
4) В именах рекомендуется использовать префиксы,
определяющие тип данных, иногда - систему, в которой
определяются данные-константы.
Например:
intX – целочисленная переменная X (тип Integer)
vbOKCancel – константа, определяющая набор командных
кнопок в окне вывода сообщения (определена в системе
программирования VB).
39
3. Дисциплина программирования (начальные рекомендации)
1) Используйте осмысленные имена!
Ср.: Заменить (Текст, СтрокаОбразец, СтрокаЗамены) и
F1 (A1, A2, A3)
2) Пишите подробный комментарий; комментируйте
назначение имен.
Как НЕ надо комментировать:
Стоимость = Цена * Количество
' – Умножаем цену на количество
или:
' – Вычисляем стоимость товара
3) Все, что уже написано, повторяйте копированием!.
40
4) Форматируйте текст программы (отступы!)
For k = 1 To 100
Оператор1
Оператор2
Оператор3
…
Next k
5) Не забудьте о контроле входных данных:
ЧислоПрописью ( ЧислоЦифрами )
ЧислоПрописью ( Иванов ) = ??
41
3. "Моя первая программа"
Sub BoxHello( )
'===================================================
' BoxHello Макрос № 1
' Макрос создан 25.11.09, разработчик Иванов И. И.
' Простой пример вывода сообщения пользователю.
'===================================================
MsgBox "Привет, Мир! Это моя первая программа.
Иванов И. И., группа 999."
End Sub
42
Sub InsHello( )
'===================================================
' InsHello Макрос № 2
' Макрос создан 25.11.09, разработчик Иванов И. И.
' Простой пример вставки текста в документ
'===================================================
Selection.TypeText "Привет, Мир! Это моя вторая программа. _
Иванов И. И., группа 999."
End Sub
43
Тема 2. Представление данных в программе.
1. Константы и переменные.
2. Типы данных и их описание в программе.
3. Преобразование данных.
44
1. Константы и переменные.
Константы – данные, значения которых фиксированы и при
выполнении программы не могут меняться.
Числовые константы представляются обычным способом:
a) как целые числа 1234
b) как числа с десятичной точкой - 3.14159
c) как числа с порядком 9.1 E –28 (масса электрона в г.) = 9.1 * 10 - 28
Строковые константы – текст в кавычках:
"Привет, Мир!"
"Иванов"
Логические (булевы) константы –
True, False
45
В программах часто используются именованные константы.
Это улучшает понимание текста программы и позволяет легко
изменять значение константы во всей программе, меняя только
ее определение.
a) стандартные –
определяются в системе программирования VB (префикс vb),
либо в базовой Office–программе (для Word префикс wd):
vbOKOnly – код кнопки OK ( = 0)
vbExclamation – код пиктограммы "!" ( = 48)
wdUnderlineSingle – код, задающий подчеркивание ( = 1)
b) пользовательские - определяются пользователем в своей
программе.
Const PI As Double = 3.14159
Const tezSC_Proc As Integer = 6
46
Переменная – это область внутренней памяти, которой присвоено
имя, зарезервированная для хранения данных определенного
типа.
В ходе выполнения программы в эту область памяти могут
записываться разные данные, так что значение переменной
может меняться.
Правила выбора имен переменных:
a) начинается с буквы
b) может включать буквы, цифры и некоторые спецзнаки ("_")
c) не содержит знаков препинания, пробелов, скобок
d) не совпадает с именами команд и другими
зарезервированными словами VB (If, vbOKOnly и т.д.)
e) длина не более 255
Письмo в кoмпьютерный сервисный центр:
Этанутипауменяпрoбелпoлoмалсячёделатьтo?
Ответ:
- Настoящие_прoграммисты_не_пoльзуются_прoбелами.
47
2. Типы данных и их описание в программе.
Для каждой переменной указывается тип данных, для хранения
которых она предназначена. Рекомендуется тип переменной
указывать в имени в форме типового префикса (префиксы
Реддика).
48
Тип
данных
Integer
Long
Single
Объем памяти
2Б
4Б
4Б
int
lng
sng
Double
8Б
dbl
String
10 Б + длина
строки
2Б
str
Boolean
Variant
Object
Userdefined
Date
Префикс
bln
а) 16 Б – числа
б) 22 Б + длина
строки
4Б
…
obj
udt
8Б
dat
vnt
Что хранится
Целое число до 32 767
Целое число до ~ 2 млрд.
Число с порядком обычной
точности
Число с порядком двойной
точности
Текст (до 2 ГБ)
Логическое значение (True,
False)
Универсальный формат для
хранения любых данных
Указатель на объект
Тип, определяемый
пользователем
Дата
49
Определение типа данных:
Dim intX As Integer
' - тип можно выбрать из всплывающего списка
В общем виде:
Dim <имя переменной> As <тип данных>
Такая схема определяет правила записи команды – ее синтаксис.
<текст в угловых скобках> используется в качестве «местозаместителя»;
текст поясняет, что должно стоять в указанном месте,
например, <строка> означает, что в данном месте должна
быть строка, но эта строка произвольна.
Переменная, которая перед употреблением в программе не
определена, по умолчанию получает тип Variant.
Соответственно, intX будет занимать 2 Б, а vntX (или X) - 16 Б.
50
Семантика оператора Dim (выполняемые действия):
1) резервирует область памяти заданного размера;
2) связывает ее адрес с именем переменной;
3) инициализирует переменную.
Инициализация переменных:
• числа - 0;
• строки - "" (пустая строка)
51
Массив – перенумерованная совокупность однотипных данных,
хранящаяся в оперативной памяти и имеющая одно общее имя.
Число элементов в совокупности указывается в определении
соответствующей переменной:
Dim intX (10) As Integer
' - массив состоит из 11 (!) целых чисел
Чтобы указать в программе конкретный элемент массива, нужно
указать имя массива и порядковый № элемента (начиная с 0 !):
intX (5) = 1
Номер называется индексом массива.
У элементов массива может быть два и более номеров.
Соответственно, массивы могут быть одномерными,
двумерными и т. д.
Dim intX (9, 1) As Integer ' определение двумерного массива
' – таблица в 10 строк, 2 столбца
52
3. Преобразование данных
A. Преобразование число – текст
Математические операции могут выполняться только с числами,
представленными в числовых форматах.
Двоичный код символа "1" = 49; двоичный код символа "2" = 50
"1" + "2" = 99 ?!
Функция Val ( ) преобразует число, записанное в текстовой форме в
число в формате числовой переменной:
lngX = Val ( "1234567" ) ' 7+10= 17 Б преобразуются в 4 Б
Функция Str ( ) преобразует число в формате числовой переменной
в число, записанное в текстовой форме:
strS = Str ( 1234567 ) ' 4 Б преобразуются в 17 Б
53
B. Преобразование символ – код
Функция Asc ( ) возвращает ASCII-код заданного символа:
intCod = Asc ("1" )
intCod = Asc ("Aлат" )
' intCod = 49
' intCod = 65
Функция Chr ( ) возвращает символ, соответствующий заданному
коду:
strSymbol = Chr ( 65 ) ' strSymbol = "Aлат"
Замечание: 0..31 – управляющие коды:
10 – перевод строки
13 – возврат каретки
Chr ( 13 ) – вызовет перевод курсора в начало след. строки
(эквивалент символа «конец абзаца» в Word).
54
Тема 3. Экранный ввод-вывод.
1. Ввод-вывод в диалоговом окне
2. Ввод-вывод в окне документа
55
1. Ввод-вывод в диалоговом окне
1А. Вывод сообщения
Синтаксис команды MsgBox:
MsgBox <Текст сообщения>, [<Вид окна>], [<Заголовок окна>]
<Вид окна> = <Командные кнопки> + <Пиктограмма> +
<№ активной кнопки>
Семантика очевидна.
Пример:
MsgBox "Конец работы", vbOKCancel + vbExclamation, _
"Завершение процесса"
Значение аргументов по умолчанию:
<Вид окна> = vbOKOnly ( =0 ); /Пиктограмма отсутствует/
<Заголовок окна> = "Microsoft Word"
56
1Б. Ввод сообщения - функция InputBox
Функция - подпрограмма, получающая набор исходных данных
(аргументы) и возвращающая вычисленное ею значение.
Y = F ( X1 , …)
Пример использования:
strГодРожд = InputBox ("Ваш год рождения?", _
"Вопрос пользователю:", "1986")
Синтаксис функции InputBox :
InputBox (<Инструкция>, [<Заголовок окна>], [<Умолчание>] )
Функция возвращает текст, введенный пользователем.
57
58
2. Ввод-вывод в окне документа
2А. Вывод сообщения:
Selection.TypeText <Вставляемый в документ текст>
2Б. Получение текста из документа:
strТекстИзДокумента = Selection.Text
59
Sub WildCrd1()
' =================================================
' WildCrd1 Макрос № 3
' Макрос создан 15.09.04 , разработчик Иванов И. И.
' Вывод текста в кавычках (в диалоговое окно)
' =================================================
MsgBox Chr (34) & "Зенит" & Chr (34) & " чемпион!", vbYesNo +
vbExclamation, "Вывод текста в кавычках:"
End Sub
Sub WildCrd1A()
' =================================================
' WildCrd1A Макрос № 3A
' Макрос создан 15.09.04 , разработчик Иванов И. И.
' Вывод текста в кавычках (в окно документа)
' =================================================
60
Sub WildCrd2()
' =================================================
' WildCrd2 Макрос № 4
' Макрос создан 15.05.00, разработчик Иванов И. И.
'Вывод текста в несколько строк (в диалоговое окно)
' =================================================
MsgBox "Черный вечер," & Chr(13) & "Белый снег." & Chr(13) &
"Ветер, ветер!", vbOKCancel + vbExclamation, "Вывод
многострочного текста:"
End Sub
Sub WildCrd2A()
' =================================================
' WildCrd2A Макрос № 4A
' Макрос создан 15.05.00, разработчик Иванов И. И.
'Вывод текста в несколько строк (в окно документа)
' =================================================
61
Т е м а 4. Оператор присваивания.
Программирование вычислений.
1. Оператор присваивания
2. Программирование вычислений
62
1. Оператор присваивания
Примеры использования:
intX = 5
strFirstName = "Федор"
Синтаксис:
<имя переменной> = <выражение, соответствующее типу
переменной>
Семантика:
Вычисляется выражение справа, результат вычисления
присваивается переменной слева.
Примеры:
(1) X = X + 1
(2) T = X: X = Y: Y = T
(3) A = X*X: A = A*A: A = A*X
63
Примеры неправильного использования:
intX = "Федор"
strFirstName = 5
- сообщение об ошибке: Type mismatch (Несовпадение типов)
Y = 2X
Z = 3Sin(X)
- пропущен знак умножения
(в 1-ом примере: предположение интерпретатора - X лишний)
2*A = 10*B
- слева может быть только переменная
64
2. Программирование вычислений
Чтобы выполнить математические вычисления, нужно написать
формулу, определяющую порядок вычислений, и
получившееся выражение присвоить числовой переменной.
В формулах могут использоваться:
"+", "-", "*", "/"
(X^5)
-
знаки арифметических действий:
-
знак возведения в степень: ^
круглые скобки
Символы стандартных математических функций:
Sin(X), Cos(X), Sqr(X), Int(X), Log (X), Int (X), Exp(X) = ex
Пример:
Y = (A + B)^2 / Sqr (C^2 + D^2)
65
Sub MyAge()
' ===============================================
MyAge Макрос № 5
' Макрос создан 15.09.04, разработчик Иванов И. И.
' Простые вычисления (С ПРЕОБРАЗОВАНИЕМ ФОРМАТОВ)
' и диалог с пользователем
' ===============================================
Dim strGodRozd As String
Dim strVozrast As String
‘– год рождения и возраст в строковом формате
Dim intGodRozd As Integer
Dim intVozrast As Integer
‘– те же переменные в числовом формате
Dim strOutMessage As String ‘текст сообщения пользователю
66
‘Запрашиваем год рождения:
strGodRozd = InputBox("Ваш год рождения?", "Вопрос
пользователю:", "1986")
‘Преобразуем его в числовой формат:
intGodRozd = Val ( strGodRozd )
‘Вычисляем возраст:
intVozrast = Year(Date) - intGodRozd
‘Преобразуем его в строку:
strVozrast = Str(intVozrast)
‘Формируем выходное сообщение:
strOutMessage = "В этом году Вам исполняется " & strVozrast &
" лет"
‘Выводим сообщение о возрасте:
MsgBox strOutMessage, vbInformation + vbYesNo, "Ваш возраст:"
End Sub
67
Sub MyAge_A()
' ===============================================
MyAge_A Макрос № 5A
' Макрос создан 15.09.04, разработчик Иванов И. И.
' Простые вычисления и диалог с пользователем
' ===============================================
‘Запрашиваем год рождения:
GodRozd = InputBox("Ваш год рождения?", "Вопрос
пользователю:", "1986")
‘Вычисляем возраст:
Vozrast = Year(Date) - GodRozd
‘Формируем выходное сообщение:
OutMessage = "В этом году Вам исполняется " & Vozrast &
"лет"
‘Выводим сообщение о возрасте:
MsgBox OutMessage, vbInformation + vbYesNo, "Ваш возраст:"
End Sub
68
Sub PowX_4()
' ===============================================
' PowX_4 Макрос № 6
' Макрос создан 28.12.99, разработчик Иванов И. И.
' Возведение заданного пользователем числа в 4 степень
' ===============================================
Dim intX As Integer ' заданное пользователем число
Dim dblY As Double ' результат вычисления
Dim strX As String, strY As String ' то же в текстовом формате
‘Просим пользователя ввести любое число:
‘Преобразуем его в числовой формат:
‘Вычисляем степень:
‘Преобразуем полученный результат в строку:
‘Выводим сообщение: (кнопки ДА и НЕТ, пиктограмма
"Информация")
‘Сообщение должно иметь, например, вид:
‘ 4-ая степень числа 5 ( strX ) равна 625 ( strY )
69
End Sub
Sub PowX_4_A()
' ===============================================
' PowX_4_A Макрос № 6A
' Макрос создан 28.12.99, разработчик Иванов И. И.
' Возведение заданного пользователем числа в 4 степень
' ===============================================
' заданное пользователем число X
' результат вычисления Y
‘Просим пользователя ввести любое число:
‘Вычисляем степень:
‘Выводим сообщение: (кнопки ДА и НЕТ, пиктограмма
"Информация")
End Sub
Сообщение должно иметь, например, вид:
4-ая степень числа 5 ( X ) равна 625 ( Y )
70
Тема 5. Работа со строками
Единственная операция – конкатенация:
catena - цепь, связь;
concatenate – сцеплять, связывать.
- Объединение двух строк в одну
&
Пример использования:
strS1 = "кол": strS2 = "лекция": strS3 = strS1 & strS2
71
Основные строковые функции
1) Len (<строка>)
- возвращает длину строки.
(Строка может быть представлена константой, переменной или
строковым выражением)
Пример использования:
intN = Len ("коллекция") ' intN = ?
2) Left (<строка>, <число символов>)
3) Right (<строка>, <число символов>)
возвращает начальную (Left) / конечную(Right) часть cтроки
указанной длины.
Пример использования:
strS = Left ( "коллекция", 3 )
' strS = ?
72
strS = Right ( "коллекция", 6 ) ' strS = ?
-
4) Mid ( <строка>, <начало> [, <число символов>] )
-
возвращает часть cтроки указанной длины, начиная с позиции
начало. Если аргумент <число символов> отсутствует,
возвращает конец строки.
Примеры использования:
strS1 = Mid ( "криминалист", 4, 4 )
strS2 = Mid ("криминалист", 8, 4 )
strS3 = Mid ("криминалист", 8 )
strS4 = Mid ("криминалист", 44, 4 )
' strS1 =
' strS2 =
' strS3 =
' strS4 =
?
?
?
?
73
5) Instr ( [<начало>,] <текст>, <строка-образец>
[, <способ сравнения>] )
Функция обеспечивает поиск нужного слова (фрагмента) в
указанном тексте.
- возвращает целое число, указывающее, с какой позиции
найдена строка-образец в заданном тексте.
- Если строка-образец не найдена, возвращает 0.
Поиск в заданном тексте производится с позиции начало; если
аргумент <начало> отсутствует, поиск производится от начала
текста.
Аргумент <способ сравнения> задается одной из двух
именованных констант:
vbBinaryCompare ( =0 ) – точное сравнение (сравнение кодов
символов)
vbTextCompare ( =1 ) – сравнение на совпадение букв (без учета
регистра)
74
Примеры использования:
intN1 = Instr ( "криминалист", "мина" )
intN2 = Instr ("криминалист", "лист" )
intN3 = Instr ( "криминалист", "и" )
intN4 = Instr (8, "криминалист", "и" )
intN5 = Instr ( "криминалист", "код" )
' intN1 = ?
' intN2 = ?
' intN3 = 3
' intN4 = 9
' intN4 = 0 !
75
Чем отличается начинающий программист от
законченного?
Hачинающий считает, что в килобайте 1000 байт,
а законченный - что в килограмме 1024 грамма.
76
Тема 6. Операторы, управляющие работой программы
1. Оператор условного перехода.
2. Операторы цикла.
3. Оператор ветвления.
77
1. Оператор условного перехода.
Линейный синтаксис:
If <условие> Then <операторыДА> [ Else <операторыНЕТ> ]
Блочный синтаксис:
If <условие> Then
<операторыДА>
[ Else
<операторыНЕТ>]
End If
Семантика:
Проверяется условие;
если условие истинно, - выполняются <операторыДА>;
в противном случае выполняются <операторыНЕТ>.
78
Условие – операция сравнения двух выражений, результатом
которой должны быть Истина (True), либо Ложь (False).
Сравниваемые выражения должны быть одного типа (строковые,
числовые, даты, … )
Для сравнения выражений используются отношения:
=, >, <, >=, <=, <>
Пример использования:
If A = B Then
MsgBox "A и B равны"
Else
MsgBox "A и B не равны"
End If
79
Условия для строк:
"=" - означает точное совпадение строк; ("АБВ" <> "АБВ ").
">", "<", ">=", "<=" - проверяют лексикографический
(алфавитный) порядок:
"Б" > "А", "В" > "Б"; "а (=97)" > "A (=65)"(!) и т. д.
"АДАМ" > "АДА", "АДА" > "АД", "АД " > "АД" и т. д.
Для сравнения строк дополнительно используется
отношение Like,
которое обеспечивает сравнение строки с заданным шаблоном.
80
Примеры шаблонов:
? – любой одиночный символ;
# – любая одиночная цифра;
* – любое число любых символов;
[…] – любой из символов списка;
[!…] – любой из символов, отсутствующих в списке;
[symb1 – symb2] – любой из символов в диапазоне кодов от
symb1 до symb2.
Примеры использования отношения Like :
1) S1 Like "bi[!nt]*"
- отождествится с "biological";
- не отождествится с "bit", "binary".
2) S1 Like "*[A-z]*"
- отождествится с любой строкой, содержащей хотя бы одну
латинскую букву.
81
Программист ставит перед сном на тумбочку два cтакана:
Один с водой
- на случай, если захочет ночью пить.
А второй пустой
- на случай, если не захочет.
82
Использование логических связок при формулировке условий
В условиях можно использовать логические связки
And, Or, Not
Пример использования (проверка на пенсионный возраст):
If ( strПол = "м" And intВозраст >= 60 ) Or _
( strПол = "ж" And intВозраст >= 55 )
MsgBox "Пенсионер"
Else
MsgBox "Нужно купить билет!"
End If
Then
83
Использование нескольких условий
В операторе If можно последовательно проверять несколько
условий:
Пример – определение типа символа:
If intCodSymb >= 48 And intCodSymb <= 57 Then
MsgBox "Цифра"
ElseIf _
( intCodSymb >= 65 And intCodSymb <= 90 ) Or _
( intCodSymb >= 97 And intCodSymb <= 122 ) Then
MsgBox "Латинская буква"
ElseIf _
( intCodSymb >= 192 And intCodSymb <= 255) Then
MsgBox "Русская буква"
Else
MsgBox "Это не цифра и не буква!"
84
End If
Sub RightAns()
' ==================================================
'RightAns Макрос № 7
'Макрос создан 30.12.99, разработчик Иванов И. И.
' "ОРАКУЛ" ' – отвечает правильно на любой вопрос, требующий ответа
‘ "ВЕРНО" или "НЕВЕРНО"
' ==================================================
Dim strQuery As String
'текст вопроса
Dim strLast2Char As String 'последние 2 символа
' Принимаем вопрос от пользователя:
strQuery = InputBox ("Задайте любой вопрос, требующий ответа
ВЕРНО или НЕВЕРНО", "Компьютерный мозг:")
' Вырезаем 2 последних символа:
strLast2Char = Right(strQuery, 2)
85
' Сравниваем окончание с образцом и выводим ответ:
If strLast2Char = " ?" Then
MsgBox "Верно", vbInformation + vbYesNo, "Ответ на
Ваш вопрос:"
Else
MsgBox "Неверно", vbInformation + vbYesNo, "Ответ на
Ваш вопрос:"
End If
End Sub
86
Sub PensAge ()
' =================================================
' PensAge Макрос № 8
' Макрос создан 15.09.04, разработчик Иванов И. И.
' Проверяет возраст сотрудника и выводит соответствующее
сообщение
' =================================================
Dim strName As String, strSex As String, strGodRozd As String,
strMessagePens As String, strMessageNotPens As String
Dim intGodRozd As Integer, intVozrast As Integer
' Запрашиваем последовательно фамилию, пол
' и год рождения пользователя:
strName = InputBox ( "Ваша Фамилия?", "Введите ответ:“ )
strSex = InputBox ( "Ваш пол?", "Введите ответ:", "ж“ )
strGodRozd = InputBox("Ваш год рождения?", “Введите
ответ:”, “1986” )
' Преобразуем год рождения в числовой формат:
87
intGodRozd = Val (strGodRozd)
' Вычисляем возраст пользователя:
intVozrast = Year (Date) - intGodRozd
' Формируем сообщение для пенсионеров:
strMessagePens = "Уважаемый(ая) г. " & strName & "! Вы
заслужили возможность отдыхать!"
' Формируем сообщение для лиц, не достигших пенсионного
возраста:
strMessageNotPens = "Уважаемый(ая) г. " & strName & "! Вы еще
полны сил. Продолжайте так же успешно трудиться!"
' Проверяем возраст и пол и выводим подходящее сообщение:
If ( intVozrast > 60 And strSex = "м“ ) Or _
( intVozrast > 55 And strSex = "ж“ ) Then
MsgBox strMessagePens , vbOKCancel + vbInformation, _
"Сообщение пользователю:"
Else
MsgBox strMessageNotPens , vbOKCancel + vbInformation, _
"Сообщение пользователю:"
88
End If : End Sub
Sub PensAge ()
' =================================================
' PensAge Макрос № 8A
' Макрос создан 15.09.04, разработчик Иванов И. И.
' Проверяет возраст сотрудника и выводит соответствующее
сообщение
' =================================================
' Запрашиваем последовательно фамилию, пол
' и год рождения пользователя:
Name = InputBox ( "Ваша Фамилия?", "Введите ответ:“ )
Sex = InputBox ( "Ваш пол?", "Введите ответ:", "ж“ )
GodRozd = InputBox("Ваш год рождения?", “Введите
ответ:”, “1988” )
' Вычисляем возраст пользователя:
Vozrast = Year (Date) - GodRozd
89
' Формируем сообщение для пенсионеров:
MessagePens = "Уважаемый(ая) г. " & Name & "! Вы заслужили
возможность отдыхать!"
' Формируем сообщение для лиц, не достигших пенсионного
возраста:
MessageNotPens = "Уважаемый(ая) г. " & Name & "! Вы еще
полны сил. Продолжайте так же успешно трудиться!"
' Проверяем возраст и пол и выводим подходящее сообщение:
If ( Vozrast > 60 And Sex = "м“ ) Or _
(Vozrast > 55 And Sex = "ж“ ) Then
MsgBox MessagePens , vbOKCancel + vbInformation, _
"Сообщение пользователю:"
Else
MsgBox MessageNotPens , vbOKCancel + vbInformation, _
"Сообщение пользователю:"
End If
90
End Sub
2. ОПЕРАТОРЫ ЦИКЛА.
Операторы цикла позволяют организовать многократное
повторение некоторой части программы.
2.1. Цикл со счетчиком
Простой пример:
For k = 1 To 100
Selection.TypeText k & " " & k*k & Chr (13)
Next k
Синтаксис:
For <переменная цикла> = <начало> To <конец>
[ Step <приращение> ]
<операторы> ' тело цикла
Next <переменная цикла>
Если <приращение> не указано, по умолчанию оно равно 1.
91
Семантика:
1) Переменной цикла присваивается начальное значение
2) Проверяется условие:
<переменная цикла>
либо
<=
<конец> (если <приращение>
> 0),
<переменная цикла>
>=
<конец> (если <приращение>
< 0)
3) Если условие п. 2 истинно, выполняется тело цикла
4) К <переменной цикла> добавляется <приращение>;
5) переход к п. 2.
92
Пример 2:
For k = 10 To 9
Selection.TypeText k & " " & k*k & Chr (13)
Next k
Пример 3:
For k = 1 To 100
Next k
MsgBox k
'k=?
93
Пример 4 (возможность вложения циклов):
N=0
For i = 1 To 100
For k = 1 To 10
N=N+1
Next k
Next i
MsgBox N
'N=?
94
Зацикливание:
Доказывается теорема:
Все нечетные числа больше двух – простые.
Математик говорит:
"3 - простое, 5 - простое, 7 - простое, 9 - не простое.
Это контрпример, значит, теорема неверна".
Физик, с карандашом и бумагой:
"3, 5 и 7 - простые, 9 - ошибка эксперимента, 11 - простое и т. д."
Инженер, взяв в руки калькулятор:
"3 - простое, 5 - простое, 7 - простое, 9 - простое, 11 - тоже
простое"
Программист написал программу и смотрит на экран:
"1 - простое, 1 - простое, 1 - простое, 1 – простое…
Да все они простые!"
95
Sub Factrl()
' =================================================
'Factrl Макрос № 9
' Макрос создан 10.12.00, разработчик Иванов И. И., группа 999
' Вычисление факториала для заданного пользователем числа
‘ N! = 1 * 2 * 3 *…* N
' =================================================
Dim strN
As String
Dim intN
As Integer
Dim strFactorial_N As String
Dim dblFactorial_N As Double
' Запрашиваем целое число:
strN = InputBox("Введите целое число", "Ввод числа:")
' Преобразуем N в числовой формат:
intN = Val ( strN )
96
'Начальное значение dblFactorial_N должно быть = 1:
dblFactorial_N = 1
'Добавляем N раз сомножитель k:
For k = 1 To intN
dblFactorial_N = dblFactorial_N * k
Next k
‘Преобразуем dblFactorial_N в строку:
strFactorial_N = Str ( dblFactorial_N )
'Выводим результат:
MsgBox "Факториал числа " & strN & " равен " &
strFactorial_N, _
vbInformation + vbYesNoCancel, "Сообщение пользователю:"
End Sub
97
Sub PowX_N ( )
' =============================================
' PowX_N Макрос № 10
' Макрос создан 28.12.99, разработчик Иванов И. И., группа 999
' Возведение заданного пользователем числа в заданную
пользователем степень
' ===============================================
' Запрашиваем число и степень:
X = InputBox("Введите число", "Вопрос пользователю:")
N = InputBox("В какую степень его возвести?", "Вопрос
пользователю:")
' Начальное значение Y должно быть = 1:
Y=1
' Добавляем N раз сомножитель X:
For k = 1 To N
Y=Y*X
Next k
98
' Выводим результат, вычисленный в цикле:
MsgBox N & "-я степень числа " & X & " равна " & Y,
vbInformation + vbYesNo, "Возведение в степень в цикле:"
'А теперь вычисляем степень непосредственно в сообщении:
MsgBox N & "-я степень числа " & X & " равна " & X ^ N, _
vbExclamation + vbYesNo, _
"То же с использованием оператора ^:"
End Sub
99
2.1. Цикл с условием
Синтаксис оператора с предусловием:
Do { While | Until } <условие>
<операторы> ' тело цикла
Loop
Условие записывается по тем же правилам, что и в операторе If.
Семантика оператора с предусловием:
1) Проверяется <условие>
2) Если условие истинно (While) / ложно (Until) – выполняются
<операторы>; возврат к п. 1.
NB: Операторы должны как-то менять переменные,
содержащиеся в условии, иначе зацикливание!
100
Hанести на влажные волосы
Hамылить
Подождать
Смыть
Повтоpить
101
Синтаксис оператора с постусловием:
Do
<операторы> ' тело цикла
Loop { While | Until } <условие>
Пример 5:
k=1
Do While ( k <= 100)
Selection.TypeText k & " " & k*k & Chr (13)
k=k+1
Loop
Пример 6 (невыполняемый цикл ):
Do While ( 2 > 3)
…
Loop
102
3. Оператор ветвления (оператор разбора случаев)
Пример 1 (выбираем нужное слово по последне цифре возраста):
Select Case LastDigit
Case "1"
LastWord = " год"
Case "2", "3", "4"
LastWord = " года"
Case Else
LastWord = " лет"
End Select
103
Синтаксис:
Select Case <выражение выбора>
Case <Case–выражение 1>
<операторы1>
Case <Case–выражение 2>
<операторы2>
…
Case Else
<операторы-Else>
End Select
NB: <Case–выражения> должны быть того же типа, что и
<выражение выбора>.
104
Семантика (выполнение):
1) Вычисляется <выражение выбора>.
2) Его значяение последовательно сравнивается со значениями
<Case–выражений>.
Если установлено их соответствие, выполняются <операторы>,
следующие за <Case–выражением>.
Иначе – переход к следующему <Case–выражению>,
либо к <операторам-Else>.
3) Конец.
105
Синтаксис <Case–выражения>:
В качестве <Case–выражения> могут использоваться:
1) Арифметические или строковые выражения – константы,
переменные, функции, математические функции:
Sin(X) * PI / 2; Right ( Слово, N ); …
2) Список таковых:
A, B, C, D
3) Диапазоны числовых или строковых значений:
10 To 100; A To B; "Абрамов" To "Кац";…
4) Условие сравнения:
Is > 5;
Is <= "Смирнов";
106
Пример 2 (определяем тип символа по коду):
Select Case CodSymb
Case 48 To 57
MsgBox "Это цифра"
Case 65 To 122
MsgBox "Это латинская буква"
Case 192 To 255
MsgBox "Это русская буква"
Case Else
MsgBox "Это что-то другое"
End Select
107
Sub MyAgeOK ( )
'===============================================
' MyAgeOK Макрос № 11
' Макрос создан 25.11.99, разработчик Иванов И. И.
' Корректное сообщение о возрасте пользователя
' (Все переменные по умолчанию в универсальном формате)
'================================================
'Запрашиваем год рождения:
BirthYear = InputBox ( "Ваш год рождения?", "Вопрос
пользователю:", "1980"
'Вычисляем возраст:
Age = Year ( Date ) - BirthYear
'Берем последнюю цифру:
LastDigit = Right ( Age, 1 )
'Определяем последнее слово:
If Age >= 10 And Age <= 19 Then
LastWord = " лет"
'для чисел от 10 до 19
108
Else
Else
'выбираем по последней цифре:
Select Case LastDigit
Case "1"
LastWord = " год"
Case "2", "3", "4"
LastWord = " года"
Case Else
LastWord = " лет"
End Select
End If
'Формируем выходное сообщение:
OutMessage = "В этом году Вам исполняется " & Age & LastWord
'Выводим сообщение о возрасте:
MsgBox OutMessage, vbInformation + vbYesNo, "Ваш возраст:"
End Sub
109
Тема 7. Функции пользователя.
Преобразование текста в документах Word.
1. Определение функций пользователя.
2. Программы преобразования текста в документах Word.
110
1. Определение функций пользователя.
Программист может определить и использовать в программе
собственные процедуры - функции.
Программная функция – подпрограмма которая выполняет
заданные вычисления и возвращает в вызывающую программу
их результат.
Это позволяет выполнять в разных местах программы или даже в
разных программах одни и те же действия с разными исходными
данными.
Синтаксис определения функции:
Function <имя функции> ( [<список аргументов>] ) As
<тип возвращаемого значения>
<операторы>
<имя функции> = < возвращаемое значение >
End Function
<список аргументов> 111
<имя переменной> As <тип переменной>, …
Функция:
Одинаковые ошибки необязательно делать каждый раз достаточно сделать одну,
а затем обращаться к ней по мере необходимости из любого
места программы.
112
Функция определяется после текста основной программы, в
которой она вызывается.
Пример: функция, изменяющая регистр символа.
Function ИзмРегистрСимвола ( strСимвол1 As String) As String
' -----------------------------------------------------------------------------------'Преобразование регистра заданного символа:
' -----------------------------------------------------------------------------------Dim intКодСимв1 As Integer ' код символа на входе
Dim intКодСимв2 As Integer ' код символа на выходе
intКодСимв1 = Asc ( strСимвол1 ) ' берем код входного символа
113
Select Case intКодСимв1
Case 65 To 90, 192 To 223
'прописные
'превращаем в строчные:
intКодСимв2 = intКодСимв1 + 32
Case 168
'прописная "Ё"
intКодСимв2 = intКодСимв1 + 16
Case 97 To 122, 224 To 255
'строчные
'превращаем в прописные:
intКодСимв2 = intКодСимв1 – 32
Case 184
'строчная "ё"
intКодСимв2 = intКодСимв1 - 16
Case Else
'если не буква – оставляем без изменения:
intКодСимв2 = intКодСимв1
End Select
ИзмРегистрСимвола = Chr (intКодСимв2 )
114
End Function
2. Программы посимвольного преобразования текста в
документах Word.
Схема алгоритма:
Исходная строка
Замена символа
Строка-результат
115
Описание алгоритма:
1. Взять исходную строку (выделенный текст) в программу
2. Вырезать очередной символ
3. Заменить символ по заданному правилу
(функция пользователя)
4. Добавить полученный символ к строке-результату
5. Удалить исходную строку
6. Вставить построенную строку
116
Sub ChgReg()
'=================================================
' ChgReg Макрос № 12
' Макрос создан 12.12.04, разработчик Иванов И. И.
' Замена прописных строчными и строчных прописными
' в выделенном тексте
'(с использованием функции пользователя)
' Запуск комбинацией клавиш {Ctrl + Shift + O}
'=================================================
Dim strИсходнаяСтрока As String
' – исходный текст
Dim strСтрокаРезультат As String
' - результат его перевода в другой регистр
Dim strИсхСимвол
As String
' - текущий символа в исходной строке
Dim strРезСимвол
As String
' - соответствующий ему символ в другом регистре
117
Dim intLenSelect
As Integer ' длина выделенного текста
strИсходнаяСтрока = Selection.Text
' берем исходный текст
intLenSelect = Len ( strИсходнаяСтрока ) ' определяем его длину
strСтрокаРезультат = ""
' строка-результат вначале пуста
'Берем по очереди символы исходной строки; меняем регистр;
' полученный символ добавляем к новой строке:
For k = 1 To intLenSelect
strИсхСимвол = Mid ( strИсходнаяСтрока, k, 1)
strРезСимвол = ИзмРегистрСимвола ( strИсхСимвол )
strСтрокаРезультат = strСтрокаРезультат & strРезСимвол
Next k
Selection.Delete
'удаляем исходную строку
'Вставляем строку с символами в другом регистре :
Selection.TypeText strСтрокаРезультат
‘ТЕСТ:
‘<Фамилия Имя Отчество>, гр. <номер группы>
End Sub
118
Sub LatRus()
'=================================================
'LatRus Макрос № 13
'Макрос создан 12.12.04, разработчик Иванов И. И.
'Преобразование русского текста,
'случайно набранного в латинском регистре, в кириллицу.
'Преобразуемый текст должен быть предварительно выделен
'Запуск комбинацией клавиш {Ctrl+Shift+R}
'=================================================
…
<Программа аналогична программе № 12;
нужно изменить только вызов функции>
119
' --------------------ТЕСТ:--------------------------
' `1234567890-=
' qwertyuiop [ ]
' asdfghjkl;'
' zxcvbnm,./\
' ~!@#$%^&*()_+
' QWERTYUIOP{ }
' ASDFGHJKL:"
' ZXCVBNM< >?|
' -------------------------------------------------' Bdfyjd Bdfy Bdfyjdbx? 222 uh/
(Иванов Иван Иванович, 222 гр.)
' -------------------------------------------------End Sub
120
Function Лат_Рус (strСимвол1 As String) As String
' --------------------------------------------------------------------------------'Преобразование заданного латинского символа в
соответствующий ему русский
' ---------------------------------------------------------------------------------
Dim strЛатКлавиатура As String 'символы клавиатуры в
' лат. регистре - за исключением символов @"
Dim strРусКлавиатура As String
' - соответствующие им символы в русском регистре
Dim strСимвол2
As String
' - символ русского регистра для замены латинского
Dim intПозицияСимвола As Integer
' - позиция заданного латинского символа на клавиатуре
121
strЛатКлавиатура = "`1234567890=qwertyuiop[]asdfghjkl;'zxcvbnm,./~!#$%&*()_+QWERTYUIOP{}
ASDFGHJKL:ZXCVBNM<>?"
strРусКлавиатура = "ё1234567890=йцукенгшщзхъфывапролджэячсмитьбю.Ё!№;%?*()_+ЙЦУК
ЕНГШЩЗХЪФЫВАПРОЛДЖЯЧСМИТЬБЮ,"
intПозицияСимвола = InStr ( 1, strЛатКлавиатура, strСимвол1, _
vbBinaryCompare )
Select Case strСимвол1
'сначала обрабатываем исключения:
Case Chr(34)
strСимвол2 = "Э"
' "-->Э
Case "@"
strСимвол2 = Chr(34)
' @-->"
122
Case Else
' в остальных случаях используем таблицу соответствий:
If intПозицияСимвола = 0 Then
' - случай, когда лат. символ не найден
strСимвол2 = strСимвол1
' ничего не меняем
Else
strСимвол2 = Mid ( strРусКлавиатура, _
intПозицияСимвола, 1)
End If
End Select
Лат_Рус = strСимвол2
End Function
123
Тема 8. Создание клавиатурных макросов
Клавиатурный макрос – макрос, получаемый протоколированием
действий пользователя в среде MS Office.
Вход в режим записи:
Сервис – Макрос – Начать запись
Рекомендуемый порядок создания:
1) Записать сценарий для выполняемых действий.
2) Выполнить действия без записи и убедиться в правильности
получаемого результата.
3) Выполнить программируемые действия в режиме записи.
4) Если нужно – отредактировать макрос в редакторе VBA.
5) Протестировать макрос, убедиться в правильности его
работы.
6) Если нужно – добавить горячие клавиши и кнопку для
быстрого запуска макроса.
124
Sub GetSent()
' ==============================================
' GetSent Макрос № 14
' Макрос записан 27.01.01, разработчик Иванов И. И.
' Перемещает текущее предложение просматриваемого
текста в накопительное окно
' !!! Окно просматриваемого текста должно иметь номер 1,
'
накопительное окно – номер 2.
' ===============================================
<Добавить комментарий к полученному тексту>
125
Сценарий макроса:
1) переход в режим выделения {F8}
2) выделяем текущее слово
{F8}
3) выделяем текущее предложение {F8}
4) копируем его в буфер
{Ctrl + Ins}
5) переход в накопительное окно - !!! через меню ОКНО
6) вставляем предложение
{Shift + Ins}
7) курсор на следующую строку
{Enter}
8) назад в окно текста - !!! кликнуть мышью в меню ОКНО
9) снимаем выделение {Right}
Примечание:
Переход в другое окно по имени можно выполнить так:
Documents("Документ2").Activate
(в скобках указано имя документа)
126
Дополнительные макросы для оформления текста
1) Отформатировать предложение жирным курсивом
- макрос FrmBI (№ 15)
2) Форматирование заданного слова жирным курсивом с
увеличением размера букв до 16 п. - макрос WrdBI16 (№ 16)
3) Сделать текущий символ верхним / нижним индексом
- макрос Index (№ 17)
(спросить у пользователя: "Опустить?" )
4) Вставить символ ® - макрос InsMark1 (№ 18A)
или ™ - макрос InsMark2 (№ 18Б)
5) Отформатировать предложение прописными буквами жирным
шрифтом, с выравниваем по центру
- макрос FrmSent (№ 19)
6) Замена указанного пользователем слова в тексте и
форматирование жирным курсивом произведенных замен
- макрос ReplFrm (№ 20)
127
7) *Ритмика стиха (раскраска гласных) ColorChr (№ 21)
Тема 9. Общие сведения о технологии
программирования
1. Программа и программный продукт.
2. Язык и среда программирования.
3. Структура программы.
4. Основные этапы разработки программных систем.
5. Интегрированные технологии проектирования
программных систем
128
1. Программа и программный продукт.
Программа – последовательность команд, написанных на какомлибо языке программирования, обеспечивающая достижение
определенной цели.
Спецификация программы должна определять:
1)
2)
3)
4)
5)
функциональность программы;
интерфейс пользователя;
алгоритм;
организацию данных;
структуру программы.
129
Интерфейс пользователя – определяет способы и средства
взаимодействия программы с пользователем.
Алгоритм – точное описание последовательности элементарных
действий, обеспечивающих решение поставленной задачи.
Организация данных - способ размещения в памяти ЭВМ и
описания в программе используемых и создаваемых программой
данных.
Примеры эффективной организации данных:
• создание индексов в таблицах реляционных БД;
• инверсная организация поискового массива в
документальных ИПС;
• концептуальные словари: совмещение кода понятия с
индексом словарной статьи.
130
Т и п ы и н ф о р м а ц и о н н ы х за д а ч
С лож ны й
алгоритм
С лож ная
о р г а н и за ц и я
данны х
С лож ны й
и н т ер ф ей с
П р и м ер ы за д а ч и п р о г р а м м
--
--
--
Н е тр еб у ет п р о гр ам м и р о ван и я
+
--
--
Р асч ет затм ен и й С о л н ц а и
Л уны .
У п р авл ен и е зен и тн ы м
ар ти л л ер и й ски м о гн ем .
Р асч ет д ви ж ен и я
ко см и ч ес ки х ап п ар ато в.
А вто м ати ч ески й п ер ево д
--
+
--
С и стем ы п р о д аж и б и л ето в.
Б и б л и о гр аф и ч ески й п о и ск.
Б и б л и о теч н ы й уч ет
--
--
+
Т П W o rd
131
С л ож н ы й
ал гор и тм
+
С л ож н ая
ор ган и зац и я
дан н ы х
+
С л ож н ы й
и н тер ф ей с
?
П р и м ер ы задач и п р огр ам м
М ед и ц и нская и
техн и ческая д и агн ости ка
П рогн оз п огод ы
У п равлен ие возд уш н ы м
д ви ж ен ием
С и стем ы
автом ати зи рованн ого
п роекти рован и я (С А П Р )
132
Коммерческий программный продукт:
= ПРОГРАММА + ДОКУМЕНТАЦИЯ + СОПРОВОЖДЕНИЕ
Требования к коммерческой программе:
a) надежность; устойчивость к нештатным ситуациям
(дуракоупорность, foolproof);
b) дружественный интерфейс.
Документация:
a) справочная система;
b) печатное руководство (для программ массового
пользования);
Сопровождение:
a) Интернет-сопровождение (консультации, FAQ, и др.) ;
b) развитие; льготы при смене версий; исправление ошибок;
c) фирменное обучение, сертификация специалистов (для
сложных систем).
133
2. Язык и среда программирования.
2.1. Языки программирования
А. Машино-ориентированные
Это языки, набор команд которых определяется возможностями
аппаратуры (совпадает с набором команд процессора.).
Основные типы машинных команд:
арифметические действия;
перемещение данных (ввод с клавиатуры; вывод на экран и
печать; запись и чтение МД; прием и передача в сети; вывод
на колонки и т. п.);
команды управления работой программы (сравнение данных
и изменение порядка выполнения команд).
134
Типовая структура машинной команды:
КОП
Адр1
Адр2
Адр3
КОП – код операции
Адр1 – Адрес 1-го операнда
Адр2 – Адрес 2-го операнда
Адр3 – Адрес результата
Условный пример (команда "сложить два числа"):
01
127
514
368
(Язык машинных кодов –
язык, непосредственно понимаемый процессором)
На нем записаны команды в исполняемых файлах (ср. WinWord.exe)
135
Ассемблер – диалект машиноориентированного языка,
предназначенный для использования программистом.
По набору команд полностью совпадает с языком машинных кодов.
Отличия:
1) использует мнемонические имена команд
(ADD, SUB, MUL, DIV, MOVE,…)
2) Обеспечивает автоматическое управление памятью –
позволяет представлять данные, используемые в программе,
мнемоническими именами, а не адресами ячеек памяти.
Условный пример записи команды на Ассемблере:
SUB
Oklad
Salary
Uderjan
Tax
Vydacha
Cash
136
Программа, написанная на Ассемблере, требует компиляции:
MyProgr.asm
Слайд 101
(Исходный текст программы,
написанный на Ассемблере)
Программа- компилятор
MyProgr.exe
(Программа в машинных кодах,
готовая к выполнению)
137
Б. Человеко-ориентированные языки (ЯВУ)
1) Обеспечивают автоматическое управление памятью.
2) Позволяют записывать вычисления в виде обычных
математических формул.
3) Команды управления работой программы, перемещения
данных, операции с нечисловыми данными записываются в виде
команд с достаточно ясной мнемоникой (английской!).
If … Then … Else …
Select Case …
Left (…)
ЯВУ предыдущих поколений: Фортран, Алгол-60, Кобол, PL/1
Современные ЯВУ:
C++, ; C#, Java, JavaScript, Pascal (Дельфи), VB, Perl, PHP, Python;
встроенные языки СУБД и других специализированных систем.
138
2.2. Среда программирования –
совокупность программных средств, обеспечивающих разработку
программ.
Основные компоненты среды программирования:
1) Спецредактор
• контроль и редактирование кода;
• контекстная помощь и всплывающие подсказки.
2) Транслятор – обеспечивает перевод исходного текста
программы в машинный код и синтаксический контроль кода.
3) Отладчик (Debuger) – пошаговый просмотр выполнения с
контролем данных = поиск логических ошибок в программе.
4) Библиотеки стандартных программ.
5) Примеры программ и документация.
139
Наиболее популярные системы программирования:
•
Microsoft C++;
•
C++Builder 6 (фирма Borland);
•
Delfi (фирма Borland);
•
VB 6 / VBA (фирма Microsoft);
•
Studio.Net – интегрированная среда программирования
(фирма Microsoft): C++, C#, VB.Net. Java
140
Интегрированные среды проектирования:
•
IBM Rational – коммерческая платформа
http://rational.aplana.ru/tools
•
Eclipse Platform– открытая интегрированная среда для
разработки на Java и др. языках
Проект управляется некоммерческой организацией
Eclipse Foundation,открытой для участия всех желающих
www. eclipse.org
141
Виды трансляторов:
Компилятор – программа, которая переводит исходный текст
программы в машинный код целиком. Выполнение отделено от
трансляции.
Результат работы компилятора - .exe-файл.
Слайд 97
Интерпретатор - программа, которая переводит каждый оператор
исходной программы в машинный код и сразу же его
выполняет.
Результат работы интерпретатора – исполнение программы.
Компилятор – быстрее, интерпретатор – легче в отладке.
142
3. Структура программы.
Простейшей структурной единицей программы является
программная функция.
Программная функция – подпрограмма которая:
1) имеет имя;
2) получает входные данные - аргументы функции (могут
отсутствовать);
3) возвращает в вызывающую программу вычисленное значение
(в некоторых языках программирования может отсутствовать –
ср. открытие файла).
Y = Sqr ( X )
S2 = Mid ( S1, k, n )
Функция как "черный ящик" – механизм знать не обязательно
143
("инкапсуляция") !
Классификация программных функций
a) по типу возвращаемого значения:
• числовые;
• строковые;
• булевы;
• без возвращаемого значения;
• др.
b) по типу обрабатываемых данных и выполняемых действий:
• математические;
• строковые;
• графические;
• преобразования и форматирования данных;
• системные.
c) по моменту создания:
• стандартные функции – разрабатываются как часть среды
программирования;
• функции пользователя – разрабатываются прикладным
144
программистом.
DLL-библиотеки
= Dynamic Linking Library
(Динамически присоединяемые библиотеки)
Часть используемых в программе собственных функций
программист может поместить в отдельный .dll-файл.
Он загружается в оперативную память только после вызова одной
из находящихся в нем функций.
Функции, помещенные в .dll-файл становятся общедоступными и
могут использоваться несколькими – даже одновременно
работающими - программами.
Дальнейшее развитие идеи структурирования программ –
методология объектного программирования.
Программный объект – совокупность данных и функций,
объединенных в относительно самостоятельный программный
модуль.
145
4. Основные этапы разработки программных систем.
1) Общая функциональная спецификация программы.
A. По схеме потока данных:
Данные на входе
Программа
Вопросы
пользователю
Данные на выходе
Протокол
выполнения
(.log-файл)
146
Примеры:
• Программа сжатия данных
• Программа-переводчик
Вопросы пользователю: как поступать с не переведенными
словами и фрагментами? Какой вариант переводного
эквивалента выбрать? и т.д.
•
Система прогнозирования погоды
На входе – данные от метеостанций
На выходе – синоптическая карта (давление, температура,
влажность, скорость воздушных потоков, …)
147
Б. Функциональная спецификация программы по схеме
оконного диалога (совпадает со спецификацией интерфейса
пользователя)
Программа
(главное окно)
Пользователь
Программа состоит из процедур реагирующих на действия
пользователя.
Таково большинство программ в среде Windows – напр., Word и др.
148
офисные программы.
2) Декомпозиция задачи, определение основных
функциональных модулей и разработка спецификаций для
них (проектирование "сверху вниз"). Разработка
межмодульных интерфейсов.
3) Разработка интерфейса пользователя.
4) Разработка алгоритмов.
5) Определение организации данных (существенно влияет на
скорость работы программы и расход памяти).
6) Подготовка тестовых примеров для отдельных модулей и
системы в целом.
7) Собственно программирование ("кодирование").
a) программирование головного модуля в терминах
функциональных составляющих;
b) программирование функциональных модулей;
c) использование готовых компонентов (.DLL-модули,
ActiveX-модули).
149
8) Компиляция и синтаксическая отладка. Сборка
("линковка").
9) Логическая отладка. -тестирование.
10) Документирование (вырастает из спецификаций).
a) руководство пользователя;
b) руководство прикладного программиста (если
требуется);
c) разработка справочной системы.
11) -тестирование.
12) Сопровождение.
150
5. Интегрированные технологии проектирования
программных систем
Функциональные роли участников проектирования в
промышленной технологии разработки программных
комплексов:
•
Бизнес-руководитель: оценка коммерческой целесообразности
проекта; слежение за ходом выполнения проекта
•
Аналитик: разработка и управление требованиями к программному
продукту; подготовка пакета тестовых примеров
•
Архитектор: разработка архитектуры приложения
•
Разработчик: создание программных модулей
•
Инженер по сборке
•
Тестер
•
Менеджер по внедрению: организация бета-тестирования; связь с
конечным пользователем;
151
Документ
Категория
Презентации по информатике
Просмотров
55
Размер файла
598 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа