Основы офисного программирования.ppt
- Количество слайдов: 151
ОСНОВЫ ОФИСНОГО ПРОГРАММИРОВАНИЯ Шпак Галина Трофимовна Преподаватель ФСПО ГУАП 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 6. Алиев В. К. Visual Basic. – М. : СОЛОН-Р, 2002.
ТЕМАТИЧЕСКИЙ ПЛАН 1. Преимущества офисного программирования 2. Среда VBA. Правила записи программ. Представление данных в программе. 3. Экранный ввод-вывод. 4. Оператор присваивания. Программирование вычислений. 5. Работа со строками. 6. Управляющие структуры. . 7. Клавиатурные макросы. 8. Общие сведения о технологии программирования. 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 + F 11) • Меню Tools | References добавить нужные библиотеки 19
Расширения каркаса документов 20
Объекты Office. Application. Active. Document ' Можно короче Application. Active. Workbook. Active. Sheet. Range("A 1") = "Hi” ' Можно и так Active. Sheet. Range ("A 2") = "By-By" 'Можно даже так! Range("A 3") = "I'm glad to see you" ‘А это только так. Quit не является глобальным методом. Application. Quit 21
Практика 22
Основы технологии программирования на языке Visual Basic for Applications (VBA относится к языкам объектно -ориентированного программирования (ООП). ООП можно описать как методику анализа, проектирования и написания приложений с помощью объектов. 23
Объекты Объект - основной элемент VBA. Примеры объектов: лист Excel - Sheet, рабочая книга - Workbook, ячейка - Cell, диапазон ячеек Range, приложение - Application, пользовательская форма - User. Form, кнопка - Command. Button. 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 - выделить столбец А; • User. Form 1. Show - пользовательскую форму номер один показать; • User. Forml. Hide - пользовательскую форму номер один скрыть. 30
Свойства Объекты имеют характеристики, например, такие как имя диапазона (Name), надпись на кнопке (Caption), содержимое поля ввода (Text), значение ячейки, переключателя или флажка (Value) и др. Характеристики объекта называются свойствами. Свойствам можно присваивать определенные значения. Синтаксис установки значения свойства: Объект. Свойство=Значение. Свойства. 31
Примеры свойств • Range(“A 2: A 8”). Name=”Opганизации” - свойству Name диапазона Range(“A 2: A 8”) присвоить значение «Организации» ; • User. Forml. Text. Boxl. Text = “”- очистить (присвоить пустое значение) поле ввода номер один в пользовательской форме номер один; • User. Forml. Check. Boxl. 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+F 11} Сервис-Макросы… {Alt+F 8} Способы хранения программ VBA: • в шаблоне (файл Normal. dot) • в документе (файл My. Document. doc) • в архиве (файл My. Programs. bas) Справочная система: • Контекстная справка – {Ctrl + F 1} • Всплывающая подсказка - { 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) В именах рекомендуется использовать префиксы, определяющие тип данных, иногда - систему, в которой определяются данные-константы. Например: int. X – целочисленная переменная X (тип Integer) vb. OKCancel – константа, определяющая набор командных кнопок в окне вывода сообщения (определена в системе программирования VB). 39
3. Дисциплина программирования (начальные рекомендации) 1) Используйте осмысленные имена! Ср. : Заменить (Текст, Строка. Образец, Строка. Замены) и F 1 (A 1, A 2, A 3) 2) Пишите подробный комментарий; комментируйте назначение имен. Как НЕ надо комментировать: Стоимость = Цена * Количество ' – Умножаем цену на количество или: ' – Вычисляем стоимость товара 3) Все, что уже написано, повторяйте копированием!. 40
4) Форматируйте текст программы (отступы!) For k = 1 To 100 Оператор1 Оператор2 Оператор3 … Next k 5) Не забудьте о контроле входных данных: Число. Прописью ( Число. Цифрами ) Число. Прописью ( Иванов ) = ? ? 41
3. "Моя первая программа" Sub Box. Hello( ) '========================== ' Box. Hello Макрос № 1 ' Макрос создан 25. 11. 09, разработчик Иванов И. И. ' Простой пример вывода сообщения пользователю. '========================== Msg. Box "Привет, Мир! Это моя первая программа. Иванов И. И. , группа 999. " End Sub 42
Sub Ins. Hello( ) '========================== ' Ins. Hello Макрос № 2 ' Макрос создан 25. 11. 09, разработчик Иванов И. И. ' Простой пример вставки текста в документ '========================== Selection. Type. Text "Привет, Мир! Это моя вторая программа. _ Иванов И. И. , группа 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): vb. OKOnly – код кнопки OK ( = 0) vb. Exclamation – код пиктограммы "!" ( = 48) wd. Underline. Single – код, задающий подчеркивание ( = 1) b) пользовательские - определяются пользователем в своей программе. Const PI As Double = 3. 14159 Const tez. SC_Proc As Integer = 6 46
Переменная – это область внутренней памяти, которой присвоено имя, зарезервированная для хранения данных определенного типа. В ходе выполнения программы в эту область памяти могут записываться разные данные, так что значение переменной может меняться. Правила выбора имен переменных: a) начинается с буквы b) может включать буквы, цифры и некоторые спецзнаки ("_") c) не содержит знаков препинания, пробелов, скобок d) не совпадает с именами команд и другими зарезервированными словами VB (If, vb. OKOnly и т. д. ) e) длина не более 255 Письмo в кoмпьютерный сервисный центр: Этанутипауменяпрoбелпoлoмалсячёделатьтo? Ответ: - Настoящие_прoграммисты_не_пoльзуются_прoбелами. 47
2. Типы данных и их описание в программе. Для каждой переменной указывается тип данных, для хранения которых она предназначена. Рекомендуется тип переменной указывать в имени в форме типового префикса (префиксы Реддика). 48
49
Определение типа данных: Dim int. X As Integer ' - тип можно выбрать из всплывающего списка В общем виде: Dim <имя переменной> As <тип данных> Такая схема определяет правила записи команды – ее синтаксис. <текст в угловых скобках> - используется в качестве «местозаместителя» ; текст поясняет, что должно стоять в указанном месте, например, <строка> означает, что в данном месте должна быть строка, но эта строка произвольна. Переменная, которая перед употреблением в программе не определена, по умолчанию получает тип Variant. Соответственно, int. X будет занимать 2 Б, а vnt. X (или X) - 16 Б. 50
Семантика оператора Dim (выполняемые действия): 1) резервирует область памяти заданного размера; 2) связывает ее адрес с именем переменной; 3) инициализирует переменную. Инициализация переменных: • числа - 0; • строки - "" (пустая строка) 51
Массив – перенумерованная совокупность однотипных данных, хранящаяся в оперативной памяти и имеющая одно общее имя. Число элементов в совокупности указывается в определении соответствующей переменной: Dim int. X (10) As Integer ' - массив состоит из 11 (!) целых чисел Чтобы указать в программе конкретный элемент массива, нужно указать имя массива и порядковый № элемента (начиная с 0 !): int. X (5) = 1 Номер называется индексом массива. У элементов массива может быть два и более номеров. Соответственно, массивы могут быть одномерными, двумерными и т. д. Dim int. X (9, 1) As Integer ' определение двумерного массива ' – таблица в 10 строк, 2 столбца 52
3. Преобразование данных A. Преобразование число – текст Математические операции могут выполняться только с числами, представленными в числовых форматах. Двоичный код символа "1" = 49; двоичный код символа "2" = 50 "1" + "2" = 99 ? ! Функция Val ( ) преобразует число, записанное в текстовой форме в число в формате числовой переменной: lng. X = Val ( "1234567" ) ' 7+10= 17 Б преобразуются в 4 Б Функция Str ( ) преобразует число в формате числовой переменной в число, записанное в текстовой форме: str. S = Str ( 1234567 ) ' 4 Б преобразуются в 17 Б 53
B. Преобразование символ – код Функция Asc ( ) возвращает ASCII-код заданного символа: int. Cod = Asc ("1" ) ' int. Cod = 49 int. Cod = Asc ("Aлат" ) ' int. Cod = 65 Функция Chr ( ) возвращает символ, соответствующий заданному коду: str. Symbol = Chr ( 65 ) ' str. Symbol = "Aлат" Замечание: 0. . 31 – управляющие коды: 10 – перевод строки 13 – возврат каретки Chr ( 13 ) – вызовет перевод курсора в начало след. строки (эквивалент символа «конец абзаца» в Word). 54
Тема 3. Экранный ввод-вывод. 1. Ввод-вывод в диалоговом окне 2. Ввод-вывод в окне документа 55
1. Ввод-вывод в диалоговом окне 1 А. Вывод сообщения Синтаксис команды Msg. Box: Msg. Box <Текст сообщения>, [<Вид окна>], [<Заголовок окна>] <Вид окна> = <Командные кнопки> + <Пиктограмма> + <№ активной кнопки> Семантика очевидна. Пример: Msg. Box "Конец работы", vb. OKCancel + vb. Exclamation, _ "Завершение процесса" Значение аргументов по умолчанию: <Вид окна> = vb. OKOnly ( =0 ); /Пиктограмма отсутствует/ <Заголовок окна> = "Microsoft Word" 56
1 Б. Ввод сообщения - функция Input. Box Функция - подпрограмма, получающая набор исходных данных (аргументы) и возвращающая вычисленное ею значение. Y = F ( X 1 , …) Пример использования: str. Год. Рожд = Input. Box ("Ваш год рождения? ", _ "Вопрос пользователю: ", "1986") Синтаксис функции Input. Box : Input. Box (<Инструкция>, [<Заголовок окна>], [<Умолчание>] ) Функция возвращает текст, введенный пользователем. 57
58
2. Ввод-вывод в окне документа 2 А. Вывод сообщения: Selection. Type. Text <Вставляемый в документ текст> 2 Б. Получение текста из документа: str. Текст. Из. Документа = Selection. Text 59
Sub Wild. Crd 1() ' ========================= ' Wild. Crd 1 Макрос № 3 ' Макрос создан 15. 09. 04 , разработчик Иванов И. И. ' Вывод текста в кавычках (в диалоговое окно) ' ========================= Msg. Box Chr (34) & "Зенит" & Chr (34) & " чемпион!", vb. Yes. No + vb. Exclamation, "Вывод текста в кавычках: " End Sub Wild. Crd 1 A() ' ========================= ' Wild. Crd 1 A Макрос № 3 A ' Макрос создан 15. 09. 04 , разработчик Иванов И. И. ' Вывод текста в кавычках (в окно документа) ' ========================= 60
Sub Wild. Crd 2() ' ========================= ' Wild. Crd 2 Макрос № 4 ' Макрос создан 15. 00, разработчик Иванов И. И. 'Вывод текста в несколько строк (в диалоговое окно) ' ========================= Msg. Box "Черный вечер, " & Chr(13) & "Белый снег. " & Chr(13) & "Ветер, ветер!", vb. OKCancel + vb. Exclamation, "Вывод многострочного текста: " End Sub Wild. Crd 2 A() ' ========================= ' Wild. Crd 2 A Макрос № 4 A ' Макрос создан 15. 00, разработчик Иванов И. И. 'Вывод текста в несколько строк (в окно документа) ' ========================= 61
Т е м а 4. Оператор присваивания. Программирование вычислений. 1. Оператор присваивания 2. Программирование вычислений 62
1. Оператор присваивания Примеры использования: int. X = 5 str. First. Name = "Федор" Синтаксис: <имя переменной> = <выражение, соответствующее типу переменной> Семантика: Вычисляется выражение справа, результат вычисления присваивается переменной слева. Примеры: (1) X = X + 1 (2) T = X: X = Y: Y = T (3) A = X*X: A = A*A: A = A*X 63
Примеры неправильного использования: int. X = "Федор" str. First. Name = 5 - сообщение об ошибке: Type mismatch (Несовпадение типов) Y = 2 X Z = 3 Sin(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 My. Age() ' ======================== My. Age Макрос № 5 ' Макрос создан 15. 09. 04, разработчик Иванов И. И. ' Простые вычисления (С ПРЕОБРАЗОВАНИЕМ ФОРМАТОВ) ' и диалог с пользователем ' ======================== Dim str. God. Rozd As String Dim str. Vozrast As String ‘– год рождения и возраст в строковом формате Dim int. God. Rozd As Integer Dim int. Vozrast As Integer ‘– те же переменные в числовом формате Dim str. Out. Message As String ‘текст сообщения пользователю 66
‘Запрашиваем год рождения: str. God. Rozd = Input. Box("Ваш год рождения? ", "Вопрос пользователю: ", "1986") ‘Преобразуем его в числовой формат: int. God. Rozd = Val ( str. God. Rozd ) ‘Вычисляем возраст: int. Vozrast = Year(Date) - int. God. Rozd ‘Преобразуем его в строку: str. Vozrast = Str(int. Vozrast) ‘Формируем выходное сообщение: str. Out. Message = "В этом году Вам исполняется " & str. Vozrast & " лет" ‘Выводим сообщение о возрасте: Msg. Box str. Out. Message, vb. Information + vb. Yes. No, "Ваш возраст: " End Sub 67
Sub My. Age_A() ' ======================== My. Age_A Макрос № 5 A ' Макрос создан 15. 09. 04, разработчик Иванов И. И. ' Простые вычисления и диалог с пользователем ' ======================== ‘Запрашиваем год рождения: God. Rozd = Input. Box("Ваш год рождения? ", "Вопрос пользователю: ", "1986") ‘Вычисляем возраст: Vozrast = Year(Date) - God. Rozd ‘Формируем выходное сообщение: Out. Message = "В этом году Вам исполняется " & Vozrast & "лет" ‘Выводим сообщение о возрасте: Msg. Box Out. Message, vb. Information + vb. Yes. No, "Ваш возраст: " End Sub 68
Sub Pow. X_4() ' ======================== ' Pow. X_4 Макрос № 6 ' Макрос создан 28. 12. 99, разработчик Иванов И. И. ' Возведение заданного пользователем числа в 4 степень ' ======================== Dim int. X As Integer ' заданное пользователем число Dim dbl. Y As Double ' результат вычисления Dim str. X As String, str. Y As String ' то же в текстовом формате ‘Просим пользователя ввести любое число: ‘Преобразуем его в числовой формат: ‘Вычисляем степень: ‘Преобразуем полученный результат в строку: ‘Выводим сообщение: (кнопки ДА и НЕТ, пиктограмма "Информация") ‘Сообщение должно иметь, например, вид: ‘ 4 -ая степень числа 5 ( str. X ) равна 625 ( str. Y ) 69 End Sub
Sub Pow. X_4_A() ' ======================== ' Pow. X_4_A Макрос № 6 A ' Макрос создан 28. 12. 99, разработчик Иванов И. И. ' Возведение заданного пользователем числа в 4 степень ' ======================== ' заданное пользователем число X ' результат вычисления Y ‘Просим пользователя ввести любое число: ‘Вычисляем степень: ‘Выводим сообщение: (кнопки ДА и НЕТ, пиктограмма "Информация") End Sub Сообщение должно иметь, например, вид: 4 -ая степень числа 5 ( X ) равна 625 ( Y ) 70
Тема 5. Работа со строками Единственная операция – конкатенация: catena - цепь, связь; concatenate – сцеплять, связывать. - Объединение двух строк в одну & Пример использования: str. S 1 = "кол": str. S 2 = "лекция": str. S 3 = str. S 1 & str. S 2 71
Основные строковые функции 1) Len (<строка>) - возвращает длину строки. (Строка может быть представлена константой, переменной или строковым выражением) Пример использования: int. N = Len ("коллекция") ' int. N = ? 2) Left (<строка>, <число символов>) 3) Right (<строка>, <число символов>) - возвращает начальную (Left) / конечную(Right) часть cтроки указанной длины. Пример использования: str. S = Left ( "коллекция", 3 ) ' str. S = ? 72 str. S = Right ( "коллекция", 6 ) ' str. S = ?
4) Mid ( <строка>, <начало> [, <число символов>] ) - возвращает часть cтроки указанной длины, начиная с позиции начало. Если аргумент <число символов> отсутствует, возвращает конец строки. Примеры использования: str. S 1 = Mid ( "криминалист", 4, 4 ) ' str. S 1 = ? str. S 2 = Mid ("криминалист", 8, 4 ) ' str. S 2 = ? str. S 3 = Mid ("криминалист", 8 ) ' str. S 3 = ? str. S 4 = Mid ("криминалист", 44, 4 ) ' str. S 4 = ? 73
5) Instr ( [<начало>, ] <текст>, <строка-образец> [, <способ сравнения>] ) Функция обеспечивает поиск нужного слова (фрагмента) в указанном тексте. - возвращает целое число, указывающее, с какой позиции найдена строка-образец в заданном тексте. - Если строка-образец не найдена, возвращает 0. Поиск в заданном тексте производится с позиции начало; если аргумент <начало> отсутствует, поиск производится от начала текста. Аргумент <способ сравнения> задается одной из двух именованных констант: vb. Binary. Compare ( =0 ) – точное сравнение (сравнение кодов символов) vb. Text. Compare ( =1 ) – сравнение на совпадение букв (без учета регистра) 74
Примеры использования: int. N 1 = Instr ( "криминалист", "мина" ) ' int. N 1 = ? int. N 2 = Instr ("криминалист", "лист" ) ' int. N 2 = ? int. N 3 = Instr ( "криминалист", "и" ) ' int. N 3 = 3 int. N 4 = Instr (8, "криминалист", "и" ) ' int. N 4 = 9 int. N 5 = Instr ( "криминалист", "код" ) ' int. N 4 = 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 Msg. Box "A и B равны" Else Msg. Box "A и B не равны" End If 79
"АБВ "). ">"," src="https://present5.com/presentation/3/104647669_329221275.pdf-img/104647669_329221275.pdf-80.jpg" alt="Условия для строк: "=" - означает точное совпадение строк; ("АБВ" <> "АБВ "). ">"," /> Условия для строк: "=" - означает точное совпадение строк; ("АБВ" <> "АБВ "). ">", "<", ">=", "<=" - проверяют лексикографический (алфавитный) порядок: "Б" > "А", "В" > "Б"; "а (=97)" > "A (=65)"(!) и т. д. "АДАМ" > "АДА", "АДА" > "АД", "АД " > "АД" и т. д. Для сравнения строк дополнительно используется отношение Like, которое обеспечивает сравнение строки с заданным шаблоном. 80
Примеры шаблонов: ? – любой одиночный символ; # – любая одиночная цифра; * – любое число любых символов; […] – любой из символов списка; [!…] – любой из символов, отсутствующих в списке; [symb 1 – symb 2] – любой из символов в диапазоне кодов от symb 1 до symb 2. Примеры использования отношения Like : 1) S 1 Like "bi[!nt]*" - отождествится с "biological"; - не отождествится с "bit", "binary". 2) S 1 Like "*[A-z]*" - отождествится с любой строкой, содержащей хотя бы одну латинскую букву. 81
Программист ставит перед сном на тумбочку два cтакана: Один с водой - на случай, если захочет ночью пить. А второй пустой - на случай, если не захочет. 82
Использование логических связок при формулировке условий В условиях можно использовать логические связки And, Or, Not Пример использования (проверка на пенсионный возраст): If ( str. Пол = "м" And int. Возраст >= 60 ) Or _ ( str. Пол = "ж" And int. Возраст >= 55 ) Msg. Box "Пенсионер" Else Msg. Box "Нужно купить билет!" End If Then 83
Использование нескольких условий В операторе If можно последовательно проверять несколько условий: Пример – определение типа символа: If int. Cod. Symb >= 48 And int. Cod. Symb <= 57 Then Msg. Box "Цифра" Else. If _ ( int. Cod. Symb >= 65 And int. Cod. Symb <= 90 ) Or _ ( int. Cod. Symb >= 97 And int. Cod. Symb <= 122 ) Then Msg. Box "Латинская буква" Else. If _ ( int. Cod. Symb >= 192 And int. Cod. Symb <= 255) Then Msg. Box "Русская буква" Else Msg. Box "Это не цифра и не буква!" 84 End If
Sub Right. Ans() ' ========================= 'Right. Ans Макрос № 7 'Макрос создан 30. 12. 99, разработчик Иванов И. И. ' "ОРАКУЛ" ' – отвечает правильно на любой вопрос, требующий ответа ‘ "ВЕРНО" или "НЕВЕРНО" ' ========================= Dim str. Query As String 'текст вопроса Dim str. Last 2 Char As String 'последние 2 символа ' Принимаем вопрос от пользователя: str. Query = Input. Box ("Задайте любой вопрос, требующий ответа ВЕРНО или НЕВЕРНО", "Компьютерный мозг: ") ' Вырезаем 2 последних символа: str. Last 2 Char = Right(str. Query, 2) 85
' Сравниваем окончание с образцом и выводим ответ: If str. Last 2 Char = " ? " Then Msg. Box "Верно", vb. Information + vb. Yes. No, "Ответ на Ваш вопрос: " Else Msg. Box "Неверно", vb. Information + vb. Yes. No, "Ответ на Ваш вопрос: " End If End Sub 86
Sub Pens. Age () ' ========================= ' Pens. Age Макрос № 8 ' Макрос создан 15. 09. 04, разработчик Иванов И. И. ' Проверяет возраст сотрудника и выводит соответствующее сообщение ' ========================= Dim str. Name As String, str. Sex As String, str. God. Rozd As String, str. Message. Pens As String, str. Message. Not. Pens As String Dim int. God. Rozd As Integer, int. Vozrast As Integer ' Запрашиваем последовательно фамилию, пол ' и год рождения пользователя: str. Name = Input. Box ( "Ваша Фамилия? ", "Введите ответ: “ ) str. Sex = Input. Box ( "Ваш пол? ", "Введите ответ: ", "ж“ ) str. God. Rozd = Input. Box("Ваш год рождения? ", “Введите ответ: ”, “ 1986” ) ' Преобразуем год рождения в числовой формат: 87 int. God. Rozd = Val (str. God. Rozd)
' Вычисляем возраст пользователя: int. Vozrast = Year (Date) - int. God. Rozd ' Формируем сообщение для пенсионеров: str. Message. Pens = "Уважаемый(ая) г. " & str. Name & "! Вы заслужили возможность отдыхать!" ' Формируем сообщение для лиц, не достигших пенсионного возраста: str. Message. Not. Pens = "Уважаемый(ая) г. " & str. Name & "! Вы ещ полны сил. Продолжайте так же успешно трудиться!" ' Проверяем возраст и пол и выводим подходящее сообщение: If ( int. Vozrast > 60 And str. Sex = "м“ ) Or _ ( int. Vozrast > 55 And str. Sex = "ж“ ) Then Msg. Box str. Message. Pens , vb. OKCancel + vb. Information, _ "Сообщение пользователю: " Else Msg. Box str. Message. Not. Pens , vb. OKCancel + vb. Information, _ "Сообщение пользователю: " 88 End If : End Sub
Sub Pens. Age () ' ========================= ' Pens. Age Макрос № 8 A ' Макрос создан 15. 09. 04, разработчик Иванов И. И. ' Проверяет возраст сотрудника и выводит соответствующее сообщение ' ========================= ' Запрашиваем последовательно фамилию, пол ' и год рождения пользователя: Name = Input. Box ( "Ваша Фамилия? ", "Введите ответ: “ ) Sex = Input. Box ( "Ваш пол? ", "Введите ответ: ", "ж“ ) God. Rozd = Input. Box("Ваш год рождения? ", “Введите ответ: ”, “ 1988” ) ' Вычисляем возраст пользователя: Vozrast = Year (Date) - God. Rozd 89
' Формируем сообщение для пенсионеров: Message. Pens = "Уважаемый(ая) г. " & Name & "! Вы заслужили возможность отдыхать!" ' Формируем сообщение для лиц, не достигших пенсионного возраста: Message. Not. Pens = "Уважаемый(ая) г. " & Name & "! Вы еще полны сил. Продолжайте так же успешно трудиться!" ' Проверяем возраст и пол и выводим подходящее сообщение: If ( Vozrast > 60 And Sex = "м“ ) Or _ (Vozrast > 55 And Sex = "ж“ ) Then Msg. Box Message. Pens , vb. OKCancel + vb. Information, _ "Сообщение пользователю: " Else Msg. Box Message. Not. Pens , vb. OKCancel + vb. Information, _ "Сообщение пользователю: " End If 90 End Sub
2. ОПЕРАТОРЫ ЦИКЛА. Операторы цикла позволяют организовать многократное повторение некоторой части программы. 2. 1. Цикл со счетчиком Простой пример: For k = 1 To 100 Selection. Type. Text 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. Type. Text k & " " & k*k & Chr (13) Next k Пример 3: For k = 1 To 100 Next k Msg. Box k ' k = ? 93
Пример 4 (возможность вложения циклов): N = 0 For i = 1 To 100 For k = 1 To 10 N = N + 1 Next k Next i Msg. Box N ' N = ? 94
Зацикливание: Доказывается теорема: Все нечетные числа больше двух – простые. Математик говорит: "3 - простое, 5 - простое, 7 - простое, 9 - не простое. Это контрпример, значит, теорема неверна". Физик, с карандашом и бумагой: "3, 5 и 7 - простые, 9 - ошибка эксперимента, 11 - простое и т. д. " Инженер, взяв в руки калькулятор: "3 - простое, 5 - простое, 7 - простое, 9 - простое, 11 - тоже простое" Программист написал программу и смотрит на экран: "1 - простое, 1 – простое… Да все они простые!" 95
Sub Factrl() ' ========================= 'Factrl Макрос № 9 ' Макрос создан 10. 12. 00, разработчик Иванов И. И. , группа 999 ' Вычисление факториала для заданного пользователем числа ‘ N! = 1 * 2 * 3 *…* N ' ========================= Dim str. N As String Dim int. N As Integer Dim str. Factorial_N As String Dim dbl. Factorial_N As Double ' Запрашиваем целое число: str. N = Input. Box("Введите целое число", "Ввод числа: ") ' Преобразуем N в числовой формат: int. N = Val ( str. N ) 96
'Начальное значение dbl. Factorial_N должно быть = 1: dbl. Factorial_N = 1 'Добавляем N раз сомножитель k: For k = 1 To int. N dbl. Factorial_N = dbl. Factorial_N * k Next k ‘Преобразуем dbl. Factorial_N в строку: str. Factorial_N = Str ( dbl. Factorial_N ) 'Выводим результат: Msg. Box "Факториал числа " & str. N & " равен " & str. Factorial_N, _ vb. Information + vb. Yes. No. Cancel, "Сообщение пользователю: " End Sub 97
Sub Pow. X_N ( ) ' ======================= ' Pow. X_N Макрос № 10 ' Макрос создан 28. 12. 99, разработчик Иванов И. И. , группа 999 ' Возведение заданного пользователем числа в заданную пользователем степень ' ======================== ' Запрашиваем число и степень: X = Input. Box("Введите число", "Вопрос пользователю: ") N = Input. Box("В какую степень его возвести? ", "Вопрос пользователю: ") ' Начальное значение Y должно быть = 1: Y = 1 ' Добавляем N раз сомножитель X: For k = 1 To N Y = Y * X Next k 98
' Выводим результат, вычисленный в цикле: Msg. Box N & "-я степень числа " & X & " равна " & Y, vb. Information + vb. Yes. No, "Возведение в степень в цикле: " 'А теперь вычисляем степень непосредственно в сообщении: Msg. Box N & "-я степень числа " & X & " равна " & X ^ N, _ vb. Exclamation + vb. Yes. No, _ "То же с использованием оператора ^: " 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. Type. Text k & " " & k*k & Chr (13) k = k + 1 Loop Пример 6 (невыполняемый цикл ): Do While ( 2 > 3) … Loop 102
3. Оператор ветвления (оператор разбора случаев) Пример 1 (выбираем нужное слово по последне цифре возраста): Select Case Last. Digit Case "1" Last. Word = " год" Case "2", "3", "4" Last. Word = " года" Case Else Last. Word = " лет" End Select 103
Синтаксис: Select Case <выражение выбора> Case
Семантика (выполнение): 1) Вычисляется <выражение выбора>. 2) Его значяение последовательно сравнивается со значениями
Синтаксис
Пример 2 (определяем тип символа по коду): Select Case Cod. Symb Case 48 To 57 Msg. Box "Это цифра" Case 65 To 122 Msg. Box "Это латинская буква" Case 192 To 255 Msg. Box "Это русская буква" Case Else Msg. Box "Это что-то другое" End Select 107
Sub My. Age. OK ( ) '======================== ' My. Age. OK Макрос № 11 ' Макрос создан 25. 11. 99, разработчик Иванов И. И. ' Корректное сообщение о возрасте пользователя ' (Все переменные по умолчанию в универсальном формате) '======================== 'Запрашиваем год рождения: Birth. Year = Input. Box ( "Ваш год рождения? ", "Вопрос пользователю: ", "1980" 'Вычисляем возраст: Age = Year ( Date ) - Birth. Year 'Берем последнюю цифру: Last. Digit = Right ( Age, 1 ) 'Определяем последнее слово: If Age >= 10 And Age <= 19 Then Last. Word = " лет" 'для чисел от 10 до 19 108 Else
Тема 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 Chg. Reg() '========================= ' Chg. Reg Макрос № 12 ' Макрос создан 12. 04, разработчик Иванов И. И. ' Замена прописных строчными и строчных прописными ' в выделенном тексте '(с использованием функции пользователя) ' Запуск комбинацией клавиш {Ctrl + Shift + O} '========================= Dim str. Исходная. Строка As String ' – исходный текст Dim str. Строка. Результат As String ' - результат его перевода в другой регистр Dim str. Исх. Символ As String ' - текущий символа в исходной строке Dim str. Рез. Символ As String ' - соответствующий ему символ в другом регистре 117 Dim int. Len. Select As Integer ' длина выделенного текста
str. Исходная. Строка = Selection. Text ' берем исходный текст int. Len. Select = Len ( str. Исходная. Строка ) ' определяем его длину str. Строка. Результат = "" ' строка-результат вначале пуста 'Берем по очереди символы исходной строки; меняем регистр; ' полученный символ добавляем к новой строке: For k = 1 To int. Len. Select str. Исх. Символ = Mid ( str. Исходная. Строка, k, 1) str. Рез. Символ = Изм. Регистр. Символа ( str. Исх. Символ ) str. Строка. Результат = str. Строка. Результат & str. Рез. Символ Next k Selection. Delete 'удаляем исходную строку 'Вставляем строку с символами в другом регистре : Selection. Type. Text str. Строка. Результат ‘ТЕСТ: ‘<Фамилия Имя Отчество>, гр. <номер группы> End Sub 118
Sub Lat. Rus() '========================= 'Lat. Rus Макрос № 13 'Макрос создан 12. 04, разработчик Иванов И. И. 'Преобразование русского текста, 'случайно набранного в латинском регистре, в кириллицу. 'Преобразуемый текст должен быть предварительно выделен 'Запуск комбинацией клавиш {Ctrl+Shift+R} '========================= … <Программа аналогична программе № 12; нужно изменить только вызов функции> 119
' ----------ТЕСТ: ------------- ' `1234567890 -= ' qwertyuiop [ ] ' asdfghjkl; ' ' zxcvbnm, . / ' ~!@#$%^&*()_+ ' QWERTYUIOP{ } ' ASDFGHJKL: " ' ZXCVBNM< >? | ' -------------------------' 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. Рус. Клавиатура" src="https://present5.com/presentation/3/104647669_329221275.pdf-img/104647669_329221275.pdf-122.jpg" alt="str. Лат. Клавиатура = "`1234567890=qwertyuiop[]asdfghjkl; 'zxcvbnm, . /~!#$%&*()_+QWERTYUIOP{} ASDFGHJKL: ZXCVBNM<>? " str. Рус. Клавиатура" /> str. Лат. Клавиатура = "`1234567890=qwertyuiop[]asdfghjkl; 'zxcvbnm, . /~!#$%&*()_+QWERTYUIOP{} ASDFGHJKL: ZXCVBNM<>? " str. Рус. Клавиатура = "ё 1234567890=йцукенгшщзхъфывапролджэячсмитьбю. Ё!№; %? *()_+ЙЦУК ЕНГШЩЗХЪФЫВАПРОЛДЖЯЧСМИТЬБЮ, " int. Позиция. Символа = In. Str ( 1, str. Лат. Клавиатура, str. Символ 1, _ vb. Binary. Compare ) 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 Get. Sent() ' ======================= ' Get. Sent Макрос № 14 ' Макрос записан 27. 01, разработчик Иванов И. И. ' Перемещает текущее предложение просматриваемого текста в накопительное окно ' !!! Окно просматриваемого текста должно иметь номер 1, ' накопительное окно – номер 2. ' ======================== <Добавить комментарий к полученному тексту> 125
Сценарий макроса: 1) переход в режим выделения {F 8} 2) выделяем текущее слово {F 8} 3) выделяем текущее предложение {F 8} 4) копируем его в буфер {Ctrl + Ins} 5) переход в накопительное окно - !!! через меню ОКНО 6) вставляем предложение {Shift + Ins} 7) курсор на следующую строку {Enter} 8) назад в окно текста - !!! кликнуть мышью в меню ОКНО 9) снимаем выделение {Right} Примечание: Переход в другое окно по имени можно выполнить так: Documents("Документ2"). Activate 1) (в скобках указано имя документа) 126
Дополнительные макросы для оформления текста 1) Отформатировать предложение жирным курсивом - макрос Frm. BI (№ 15) 2) Форматирование заданного слова жирным курсивом с увеличением размера букв до 16 п. - макрос Wrd. BI 16 (№ 16) 3) Сделать текущий символ верхним / нижним индексом - макрос Index (№ 17) (спросить у пользователя: "Опустить? " ) 4) Вставить символ ® - макрос Ins. Mark 1 (№ 18 A) или ™ - макрос Ins. Mark 2 (№ 18 Б) 5) Отформатировать предложение прописными буквами жирным шрифтом, с выравниваем по центру - макрос Frm. Sent (№ 19) 6) Замена указанного пользователем слова в тексте и форматирование жирным курсивом произведенных замен - макрос Repl. Frm (№ 20) 127 7) *Ритмика стиха (раска гласных) Color. Chr (№ 21)
Тема 9. Общие сведения о технологии программирования 1. Программа и программный продукт. 2. Язык и среда программирования. 3. Структура программы. 4. Основные этапы разработки программных систем. 5. Интегрированные технологии проектирования программных систем 128
1. Программа и программный продукт. Программа – последовательность команд, написанных на какомлибо языке программирования, обеспечивающая достижение определенной цели. Спецификация программы должна определять: 1) 2) 3) 4) 5) функциональность программы; интерфейс пользователя; алгоритм; организацию данных; структуру программы. 129
Интерфейс пользователя – определяет способы и средства взаимодействия программы с пользователем. Алгоритм – точное описание последовательности элементарных действий, обеспечивающих решение поставленной задачи. Организация данных - способ размещения в памяти ЭВМ и описания в программе используемых и создаваемых программой данных. Примеры эффективной организации данных: • создание индексов в таблицах реляционных БД; • инверсная организация поискового массива в документальных ИПС; • концептуальные словари: совмещение кода понятия с индексом словарной статьи. 130
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 (Язык машинных кодов – язык, непосредственно понимаемый процессором) На нем записаны команды в исполняемых файлах (ср. Win. Word. exe) 135
Ассемблер – диалект машиноориентированного языка, предназначенный для использования программистом. По набору команд полностью совпадает с языком машинных кодов. Отличия: 1) использует мнемонические имена команд (ADD, SUB, MUL, DIV, MOVE, …) 2) Обеспечивает автоматическое управление памятью – позволяет представлять данные, используемые в программе, мнемоническими именами, а не адресами ячеек памяти. Условный пример записи команды на Ассемблере: SUB Oklad Salary Uderjan Tax Vydacha Cash 136
Программа, написанная на Ассемблере, требует компиляции: My. Progr. asm Слайд 101 (Исходный текст программы, написанный на Ассемблере) Программа- компилятор My. Progr. exe (Программа в машинных кодах, готовая к выполнению) 137
Б. Человеко-ориентированные языки (ЯВУ) 1) Обеспечивают автоматическое управление памятью. 2) Позволяют записывать вычисления в виде обычных математических формул. 3) Команды управления работой программы, перемещения данных, операции с нечисловыми данными записываются в виде команд с достаточно ясной мнемоникой (английской!). If … Then … Else … Select Case … Left (…) ЯВУ предыдущих поколений: Фортран, Алгол-60, Кобол, PL/1 Современные ЯВУ: C++, ; C#, Java. Script, 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 ) S 2 = Mid ( S 1, 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-модули, Active. X-модули). 149
8) Компиляция и синтаксическая отладка. Сборка ("линковка"). 9) Логическая отладка. -тестирование. 10) Документирование (вырастает из спецификаций). a) руководство пользователя; b) руководство прикладного программиста (если требуется); c) разработка справочной системы. 11) -тестирование. 12) Сопровождение. 150
5. Интегрированные технологии проектирования программных систем Функциональные роли участников проектирования в промышленной технологии разработки программных комплексов: • Бизнес-руководитель: оценка коммерческой целесообразности проекта; слежение за ходом выполнения проекта • Аналитик: разработка и управление требованиями к программному продукту; подготовка пакета тестовых примеров • Архитектор: разработка архитектуры приложения • Разработчик: создание программных модулей • Инженер по сборке • Тестер • Менеджер по внедрению: организация бета-тестирования; связь с конечным пользователем; 151