26
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ СТРУКТУРЫ ПРОГРАММЫ НА VBA И СХЕМЫ АЛГОРИТМА 1 Цель занятия Сформировать общие представление об ИПР и определить подход к решению задачи для чего построить структурную схему и схему алгоритма 2 Общие теоретические сведения Структурная схема это совокупность элементарных звеньев объекта и связей между ними, один из видов графической модели. Под элементарным звеном понимают часть объекта, системы управления и т. д., которая реализует элементарную функцию. В качестве структурной схемы программного средства принято использовать структурную схему модулей. Структура модулей разрабатываемого программного средства представляет собой графическую иллюстрацию и текстовое описание взаимодействия модулей. Рис. 1 Пример структуры модулей Алгоритм заранее заданное понятное и точное предписание возможному исполнителю совершить определенную последовательность действий для получения решения задачи за конечное число шагов. Основные свойства алгоритмов следующие: 1 Понятность для исполнителя – исполнитель алгоритма должен понимать, как его выполнять. Иными словами, имея алгоритм и произвольный вариант исходных данных, исполнитель должен знать, как надо действовать для выполнения этого алгоритма. 2 Дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (этапов). 3 Определенность – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче. 4 Результативность (или конечность) состоит в том, что за конечное число шагов алгоритм либо должен приводить к решению задачи, либо после конечного числа шагов останавливаться из-за невозможности получить решение с выдачей соответствующего Модуль функций по х ранению переменных Модуль интерфейса Модуль управления расчётами Система управления базой данных База данных расчётов Модуль расчёта цены Команды по расчёту стоимости Структура цены Команды по сохранению расчётов Пользовательские запросы

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ СТРУКТУРЫ

ПРОГРАММЫ НА VBA И СХЕМЫ АЛГОРИТМА

1 Цель занятия

Сформировать общие представление об ИПР и определить подход к решению задачи для

чего построить структурную схему и схему алгоритма

2 Общие теоретические сведения

Структурная схема – это совокупность элементарных звеньев объекта и связей между

ними, один из видов графической модели. Под элементарным звеном понимают часть объекта,

системы управления и т. д., которая реализует элементарную функцию.

В качестве структурной схемы программного средства принято использовать

структурную схему модулей. Структура модулей разрабатываемого программного средства

представляет собой графическую иллюстрацию и текстовое описание взаимодействия модулей.

Рис. 1 Пример структуры модулей

Алгоритм – заранее заданное понятное и точное предписание возможному исполнителю

совершить определенную последовательность действий для получения решения задачи за

конечное число шагов.

Основные свойства алгоритмов следующие:

1 Понятность для исполнителя – исполнитель алгоритма должен понимать, как его

выполнять. Иными словами, имея алгоритм и произвольный вариант исходных данных,

исполнитель должен знать, как надо действовать для выполнения этого алгоритма.

2 Дискретность (прерывность, раздельность) – алгоритм должен представлять

процесс решения задачи как последовательное выполнение простых (или ранее определенных)

шагов (этапов).

3 Определенность – каждое правило алгоритма должно быть четким, однозначным

и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит

механический характер и не требует никаких дополнительных указаний или сведений о

решаемой задаче.

4 Результативность (или конечность) состоит в том, что за конечное число шагов

алгоритм либо должен приводить к решению задачи, либо после конечного числа шагов

останавливаться из-за невозможности получить решение с выдачей соответствующего

Модуль функций

по х ранению

переменных

Модуль

интерфейса

Модуль

управления

расчётами

Система

управления базой

данных

База данных

расчётов

Модуль

расчёта цены Команды по

расчёту

стоимости

Структура

цены

Команды по

сохранению

расчётов

Пользовательские

запросы

Page 2: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

сообщения, либо неограниченно продолжаться в течение времени, отведенного для исполнения

алгоритма, с выдачей промежуточных результатов.

5 Массовость означает, что алгоритм решения задачи разрабатывается в общем

виде, т.е. он должен быть применим для некоторого класса задач, различающихся лишь

исходными данными. При этом исходные данные могут выбираться из некоторой области,

которая называется областью применимости алгоритма.

Схемы алгоритмов обозначают по ГОСТ 19.701-90.

3 Задачи для самостоятельного решения студентами

Варианты задания

Вари-

ант

Основная

функция

Функции с

пользовательск.

параметрами

Вид таблицы Вид

диаграммы

Представление

результатов1

Определить углы между заданной прямой и прямыми с настраиваемыми параметрами

1. 5x-

3y+6=0

a1x+2a2y=0,

7a3x-a4y+4=0,

5a5x+a6y-2=0,

a7x+a8y=0

Невидимые

границы,

заголовок

полужирный,

значения углов

График с

маркерами

Сообщение «Работа

выполнена. Углы

такие:» + значения

углов через запятую

2. 3x-

2y+1=0

5a1x+a2y-1=0,

a3x-2a4y+4=0,

2a5x+a6y-7=0,

3a7x+a8y-14=0

Границы 1пт,

заголовок

курсив, значения

углов

График с

маркерами

Сообщение «Сделано.

Углы:» + значения

углов через пробелы

3. х+2y+3=0 4a1x-3a2y=0,

a3x-7a4y+2=0,

6a5x+4a6y+2=0,

9a7x-a8y-2=0,

2a9x-a10y+5=0

Границ только у

заголовка

таблицы,

заголовок

обычный,

значения углов

График Сообщение 1

«Выполнено !!!». Через

30 сек. Сообщение 2

«Значения углов» +

значения углов через

дефисы

4. 2х+4y-

3=0

9a1x-8a2y+1=0,

2a3x-5a4y+3=0,

a5x-3a6y-2=0,

2a7x-2a8y-2=0,

a9x-3a10y+9=0

Невидимые

границы,

заголовок

полужирный,

значения углов

График Сообщение «Готово!

Результаты:» + значения

углов с символом

градусов через запятую

5. x-8y+9=0 5a1x-4a2y-8=0,

2a3x-3a4y+5=0,

9a5x+2a6y-7=0,

4a7x-a8y-1=0

Границы 2пт,

заголовок

курсив, значения

углов

Объёмный

график

Сообщение 1

«Получилось!». Через

45 сек. Сообщение 2

«Результаты:» +

значения углов через

точки с запятой

1 Если пересечений между прямыми (кривыми) нет, то выдать сообщение «Пересечения с прямой №__

нет»

Page 3: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Вари-

ант

Основная

функция

Функции с

пользовательск.

параметрами

Вид таблицы Вид

диаграммы

Представление

результатов1

6. 7x-3y=0 2a1x+2a2y-5=0,

3a3x-2a4y+1=0,

a5x+9a6y-6=0,

6a7x-2a8y=3=0

Границ только у

заголовка

таблицы,

заголовок

обычный,

значения углов

Объёмный

график

Сообщение «Работа

выполнена. Углы

такие:» + значения

углов через запятую

7. 4х-

2y+5=0

3a1x-2a2y=0,

2a3x-5a4y-2=0,

3a5x+2a6y+7=0,

3a7x-5a8y+2=0,

a9x-4a10y+1=0

Невидимые

границы,

заголовок

полужирный,

значения углов

Точечная

диагр. с

глад.

кривыми

Сообщение «Сделано.

Углы:» + значения

углов через пробелы

8. 2х+3y-

6=0

a1x-4a2y+6=0,

7a3x-4a4y+7=0,

6a5x-3a6y-9=0,

2a7x-4a8y-6=0,

3a9x-3a10y+6=0

Границы 3пт,

заголовок

обычный,

значения углов

Точечная

диагр. с

глад.

кривыми

Сообщение 1

«Выполнено !!!». Через

25 сек. Сообщение 2

«Значения углов» +

значения углов через

дефисы

9. 4x-

3y+7=0

7a1x-2a2y+3=0,

a3x-3a4y+6=0,

2a5x-3a6y-9=0,

9a7x-8a8y-1=0

Границ только у

заголовка

таблицы,

заголовок

курсив, значения

углов

Точечная

диагр. с

прям.

отрезками

Сообщение «Готово!

Результаты:» + значения

углов с символом

градусов через запятую

10. 2х+3y-

8=0

6a1x-5a2y=0,

a3x-4a4y+3=0,

2a5x+a6y+5=0,

a7x-4a8y+2=0,

a9x-3a10y+7=0

Невидимые

границы,

заголовок

курсив, значения

углов

Точечная

диагр. с

прям.

отрезками

Сообщение 1

«Получилось!». Через

40 сек. Сообщение 2

«Результаты:» +

значения углов через

точки с запятой

Опред елить точк и пересечения параболы и прямых с настраиваемыми параметрами

11. 3x2-

3y+6=0

7a1x-2a2y+3=0,

a3x-3a4y+6=0,

2a5x+a6y+5=0,

a7x-3a8y+2=0

Невидимые

границы,

заголовок

обычный,

значения точек

пересечений

Точечная

диагр. с

глад.

кривыми

Сообщ. 1 «Прямая 1

пересекает в точках: х_,

у_». И ещё 3 сообщения

через 30 сек. каждое про

прямые 2-4.

Page 4: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Вари-

ант

Основная

функция

Функции с

пользовательск.

параметрами

Вид таблицы Вид

диаграммы

Представление

результатов1

12. 3x2-y+1=0 5a1x-5a2y=0,

a3x-4a4y+3=0,

2a5x-3a6y-9=0,

8a7x-8a8y-1=0,

a9x-3a10y+7=0

Все границы

таблицы 1 пт,

заголовок

полужирный,

значения точек

пересечений

Точечная

диагр. с

прям.

отрезками

Сообщ. 1 «Прямая №1

пересекает в поз.: х_,

у_». И ещё 4 сообщения

через 45 сек. каждое про

прямые 2-5.

13. 6х2+y+2=0 a1x-4a2y+6=0,

2a3x-5a4y-2=0,

3a5x+2a6y+7=0,

3a7x-5a8y+2=0,

a9x-4a10y+1=0

Границы только

у заголовка

таблицы,

заголовок

курсив, значения

точек

пересечений

График Сообщение «Прямые

пересекают параболу в

точках: х1-__, у1-__;

х2…» перечислить все

точки

14. 2х2+2y-

8=0

2a1x+2a2y-5=0,

3a1x-2a2y=0,

7a3x-7a4y+7=0,

6a5x-3a6y-9=0,

3a9x-2a10y+6=0

Невидимые

границы,

заголовок

курсив, значения

точек

пересечений

Объёмный

график

Сообщение

«Пересечение

происходит в позициях:

х1:__, у1:__; х2:…»

перечислить все точки

15. 3x2-y+9=0 3a3x-2a4y+1=0,

2a7x-4a8y-6=0,

a5x+8a6y-6=0,

6a7x-2a8y=3=0

Все границы

таблицы 1 пт,

заголовок

обычный,

значения точек

пересечений

График с

маркерами

Сообщ. 1 «Прямая 1

пересекает в: х_, у_». И

ещё 3 сообщения через

45 сек. каждое про

прямые 2-4.

16. 7x2-y+2=0 5a1x-4a2y-8=0,

2a3x-3a4y+5=0,

9a5x+3a6y-7=0,

3a7x-a8y-1=0

Границы только

у заголовка

таблицы,

заголовок

полужирный,

значения точек

пересечений

Точечная

диагр. с

глад.

кривыми

Сообщ. 1 «Прямая №1

пересекает параболу в

точках: х_, у_». И ещё 3

сообщения через 25 сек.

каждое про прямые 2-4.

17. 4х2-

2y+8=0

4a1x-2a2y-1=0,

a3x-5a4y+3=0,

6a5x+3a6y+4=0,

9a7x-a8y-2=0,

2a9x-a10y+5=0

Невидимые

границы,

заголовок

полужирный,

значения точек

пересечений

Точечная

диагр. с

прям.

отрезками

Сообщение «Прямые

пересекают кривую в:

х1:__, у1:__; х2:…»

перечислить все точки

Page 5: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Вари-

ант

Основная

функция

Функции с

пользовательск.

параметрами

Вид таблицы Вид

диаграммы

Представление

результатов1

18. 2х2+2y-

6=0

3a1x-8a2y-1=0,

2a3x-5a4y+3=0,

a5x-2a6y-2=0,

2a7x-3a8y-2=0,

a9x-2a10y+8=0

Границы только

у заголовка

таблицы,

заголовок

полужирный

курсив, значения

точек

пересечений

График Сообщение

«Пересечение

происходит в точках:

х1:__, у1-__; х2-…»

перечислить все точки

19. 4x2-y+7=0 2a1x+2a2y+1=0,

6a3x-a4y+5=0,

5a5x+a6y-3=0,

a7x+6a8y=0

Только

внутренние

границы

таблицы,

заголовок

полужирный,

значения точек

пересечений

Объёмный

график

Сообщение 1

«Выполнено !!!». Через

30 сек. Сообщение 2

«Прямые пересекают

параболу в: х1:__, у1:__;

х2:…» перечислить все

точки

20. 2х2+y-8=0 5a1x+a2y-2=0,

3a3x-2a4y+3=0,

2a5x+2a6y-5=0,

a7x+a8y-4=0

Только

внутренние

границы

таблицы,

заголовок

курсив, значения

точек

пересечений

График с

маркерами

Сообщение «Готово!

Прямые пересекают

параболу в: х1-__, у1-

__; х2:…» перечислить

все точки

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

21. х(у+2)-

3=0

a1x-4a2y+2=0,

2a3x-3a4y-1=0,

4a5x+3a6y+3=0,

5a7x-2a8y+4=0,

2a9x+3a10y-5=0

Границы только

у заголовка

таблицы,

заголовок

полужирный,

значения точек

пересечений

График с

маркерами

Сообщение

«Пересечение

происходит в точках:

х1:__, у1-__; х2-…»

перечислить все точки

22. х(у-3)-5=0 3a1x+2a2y-1=0,

2a3x-3a4y+5=0,

a5x+6a6y-4=0,

3a7x+2a8y-1=0

Невидимые

границы,

заголовок

полужирный,

значения точек

пересечений

График с

маркерами

Сообщение «Прямые

пересекают кривую в:

х1:__, у1:__; х2:…»

перечислить все точки

Page 6: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Вари-

ант

Основная

функция

Функции с

пользовательск.

параметрами

Вид таблицы Вид

диаграммы

Представление

результатов1

23. х(у-

6)+4=0

2a1x-3a2y+5=0,

a3x-4a4y-3=0,

4a5x+3a6y+3=0,

3a7x-6a8y-2=0,

2a9x-4a10y+2=0

Границы только

у заголовка

таблицы,

заголовок

полужирный

курсив, значения

точек

пересечений

График Сообщение «Готово!

Прямые пересекают

параболу в: х1-__, у1-

__; х2:…» перечислить

все точки

24. х(у+1)-

6=0

a1x+3a2y=0,

3a3x-2a4y+1=0,

4a5x+3a6y-2=0,

3a7x+a8+4y=0

Только

внутренние

границы

таблицы,

заголовок

полужирный,

значения точек

пересечений

График Сообщение 1

«Выполнено !!!». Через

30 сек. Сообщение 2

«Прямые пересекают

параболу в: х1:__, у1:__;

х2:…» перечислить все

точки

25. х(у-4)-1=0 3a1x-5a2y-2=0,

2a3x-3a4y+4=0,

3a5x-5a6y-3=0,

5a7x-3a8y-3=0,

2a9x-3a10y+4=0

Только

внутренние

границы

таблицы,

заголовок

курсив, значения

точек

пересечений

Объёмный

график

Сообщ. 1 «Прямая №1

пересекает параболу в

точках: х_, у_». И ещё 3

сообщения через 25 сек.

каждое про прямые 2-4.

26. х(у-

9)+7=0

3a1x-5a2y+2=0,

4a3x-3a4y+1=0,

2a5x+3a6y-5=0,

a7x-3a8y+2=0,

2a9x-3a10y+5=0

Невидимые

границы,

заголовок

обычный,

значения точек

пересечений

Объёмный

график

Сообщ. 1 «Прямая 1

пересекает в точках: х_,

у_». И ещё 3 сообщения

через 30 сек. каждое про

прямые 2-4.

27. х(у+8)-

2=0

3a1x-2a2y-2=0,

2a3x-4a4y+3=0,

5a5x+3a6y+2=0,

7a7x-2a8y-3=0,

3a9x-a10y+4=0

Все границы

таблицы 1 пт,

заголовок

полужирный,

значения точек

пересечений

Точечная

диагр. с

глад.

кривыми

Сообщ. 1 «Прямая №1

пересекает в поз.: х_,

у_». И ещё 4 сообщения

через 45 сек. каждое

про прямые 2-5.

Page 7: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Вари-

ант

Основная

функция

Функции с

пользовательск.

параметрами

Вид таблицы Вид

диаграммы

Представление

результатов1

28. х(у-7)-9=0 4a1x-7a2y-2=0,

2a3x-4a4y+4=0,

3a5x-2a6y-8=0,

2a7x-a8y-5=0,

a9x-2a10y+5=0

Границы только

у заголовка

таблицы,

заголовок

курсив, значения

точек

пересечений

Точечная

диагр. с

глад.

кривыми

Сообщение «Прямые

пересекают параболу в

точках: х1-__, у1-__;

х2…» перечислить все

точки

29. х(у-

5)+3=0

2a1x+3a2y+2=0,

3a3x-a4y+4=0,

4a5x+2a6y-3=0,

a7x+3a8y=0

Невидимые

границы,

заголовок

курсив, значения

точек

пересечений

Точечная

диагр. с

прям.

отрезками

Сообщение

«Пересечение

происходит в позициях:

х1:__, у1:__; х2:…»

перечислить все точки

30. х(у+3)-

4=0

2a1x-3a2y+1=0,

3a3x-3a4y+5=0,

3a5x-3a6y-5=0,

3a9x-2a10y+4=0

Все границы

таблицы 1 пт,

заголовок

обычный,

значения точек

пересечений

Точечная

диагр. с

прям.

отрезками

Сообщ. 1 «Прямая 1

пересекает в: х_, у_». И

ещё 3 сообщения через

45 сек. каждое про

прямые 2-4.

Определить углы между заданной прямой и прямыми с настраиваемыми параметрами

31. 4x-5y+1=0 2a1x+a2y-1=0,

3a3x-2a4y+2=0,

2a5x+4a6y-9=0,

3a7x-2a8y+1=0

Невидимые

границы,

заголовок

полужирный,

значения углов

График с

маркерами

Сообщение «Работа

выполнена. Углы

такие:» + значения

углов через запятую

32. x-2y-1=0 4a1x-3a2y=0,

2a3x-3a4y+2=0,

2a5x+3a6y-5=0,

a7x-2a8y+3=0,

a9x-2a10y+4=0

Границы 1пт,

заголовок

курсив, значения

углов

График с

маркерами

Сообщение «Сделано.

Углы:» + значения

углов через пробелы

33. 2х+2y-3=0 3a1x-2a2y+3=0,

2a3x-4a4y+5=0,

a5x+4a6y-11=0,

3a7x-2a8y-2=0,

2a9x-2a10y+5=0

Границ только у

заголовка

таблицы,

заголовок

обычный,

значения углов

График Сообщение 1

«Выполнено !!!». Через

30 сек. Сообщение 2

«Значения углов» +

значения углов через

дефисы

Page 8: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Вари-

ант

Основная

функция

Функции с

пользовательск.

параметрами

Вид таблицы Вид

диаграммы

Представление

результатов1

34. х+у-2=0 5a1x-2a2y-3=0,

2a3x-3a4y+2=0,

3a5x+a6y+4=0,

4a7x-2a8y-7=0,

3a9x-2a10y+4=0

Невидимые

границы,

заголовок

полужирный,

значения углов

График Сообщение «Готово!

Результаты:» + значения

углов с символом

градусов через запятую

35. 2x-8y+9=0 4a1x-a2y-6=0,

3a3x-2a4y+1=0,

6a5x+a6y-9=0,

a7x-2a8y+3=0,

4a7x-2a8y-3=0

Границы 2пт,

заголовок

курсив, значения

углов

Объёмный

график

Сообщение 1

«Получилось!». Через

45 сек. Сообщение 2

«Результаты:» +

значения углов через

точки с запятой

36. 4x-y+6=0 a1x+2a2y-5=0,

2a3x-3a4y+7=0,

a5x+4a6y-3=0,

4a3x-3a4y+2=0,

3a7x-2a8y+3=0

Границ только у

заголовка

таблицы,

заголовок

обычный,

значения углов

Объёмный

график

Сообщение «Работа

выполнена. Углы

такие:» + значения

углов через запятую

37. 3х-2y+7=0 5a1x-2a2y+1=0,

2a3x-3a4y-4=0,

a5x+2a6y+5=0,

3a7x-4a8y+3=0,

2a9x-3a10y-1=0

Невидимые

границы,

заголовок

полужирный,

значения углов

Точечная

диагр. с

глад.

кривыми

Сообщение «Сделано.

Углы:» + значения

углов через пробелы

38. 2х+3y-6=0 2a1x-3a2y+5=0,

4a3x-3a4y+5=0,

a5x-3a6y-4=0,

2a7x-3a8y-2=0,

3a9x-4a10y+2=0

Границы 3пт,

заголовок

обычный,

значения углов

Точечная

диагр. с

глад.

кривыми

Сообщение 1

«Выполнено !!!». Через

25 сек. Сообщение 2

«Значения углов» +

значения углов через

дефисы

39. 4x-2y+5=0 3a1x-2a2y+4=0,

2a3x-3a4y+5=0,

2a5x-4a6y-5=0,

4a7x-6a8y-9=0

Границ только у

заголовка

таблицы,

заголовок

курсив, значения

углов

Точечная

диагр. с

прям.

отрезками

Сообщение «Готово!

Результаты:» + значения

углов с символом

градусов через запятую

Page 9: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Вари-

ант

Основная

функция

Функции с

пользовательск.

параметрами

Вид таблицы Вид

диаграммы

Представление

результатов1

40. 2х+2y-9=0 3a1x-5a2y-1=0,

a3x-4a4y+2=0,

2a5x+2a6y+3=0,

3a7x-5a8y+6=0,

a9x-4a10y+7=0

Невидимые

границы,

заголовок

курсив, значения

углов

Точечная

диагр. с

прям.

отрезками

Сообщение 1

«Получилось!». Через

40 сек. Сообщение 2

«Результаты:» +

значения углов через

точки с запятой

Задания для самостоятельного решения

3.1 По номеру, выданному преподавателем, определить вариант ИПР.

3.2 Сформировать структурную схему программного средства для чего: определить

перечень и наименование модулей, их взаимодействие, изобразить графически схему

взаимодействия модулей.

3.3 Для расчетного модуля, содержащего описание решения задачи по определению

пересечений заданной кривой (прямой) с пользовательскими кривыми, сформировать

схему работы программы на языке алгоритма по ГОСТ 19.701-90.

4 Контрольные вопросы

4.1 Что такое структурная схема?

4.2 По какому стандарту необходимо оформлять схему алгоритма?

4.3 Что означает свойство определенности алгоритма?

4.4 Для чего используется символ «запоминающее устройство с прямым доступом»?

4.5 Какой символ алгоритма позволяет организовать меню выбора из более чем двух

элементов?

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 2 ФОРМИРОВАНИЕ ФОРМ ВВОДА-

ВЫВОДА В VBA

1 Цель занятия

Сформировать умения разработки форм ввода-вывода для внесения данных в программу

и выгрузки в графики

2 Общие теоретические сведения

2.1 Использование диалоговых окон

В VBA ввод и вывод информации (для взаимодействия с пользователем) можно

осуществлять в диалоговых окнах. Диалоговое окно ввода значений реализуется встроенной

функцией InputBox. В окне ввода, реализованное функцией InputBox, отображается поле для

ввода значения переменной, в которое пользователь должен ввести определенное значение.

Далее пользователь должен нажать кнопку ОК.

Функция InputBox() имеет следующий синтаксис:

Page 10: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Имя_Переменной = InputBox( Prompt, [Title], [Default], [XPos], [YPos], [HelpFile],

[Context])

Где аргументы: Prompt или Сообщение - обязательный аргумент, который задает в

диалоговом окне информационное сообщение. Все остальные аргументы являются

необязательными. Title задает заголовок окна. На рис 1 приведен модуль, в котором применена

функция InputBox.

Рис. 1.

После выполнения модуля 2 появляется окно сообщения "Ввод значений переменных"

(рис.2), в котором нужно ввести число и нажать кнопку ОК. В окне диалога (Рис.2),

реализованном функцией InputBox (рис 1), отображаются: Заголовок окна - Ввод значений

переменных; Сообщение - Введите число; Кнопки (по умолчанию) - ОК и Cancel; Поле

предназначенное для ввода значений переменной.

Рис. 2.

Для вывода информации применяются диалоговые окна сообщений, реализуемые

оператором MsgBox или функцией MsgBox(). MsgBox может использоваться как оператор.

Оператор MsgBox осуществляет вывод информации в диалоговом окне и устанавливает режим

ожидания нажатия кнопки пользователем.

Оператор MsgBox имеет следующий синтаксис:

MsgBox Prompt, [Buttons], [Title], [HelpFile], [Context]

Где аргументы: Prompt или Сообщение - обязательный аргумент, задающий в окне

выводимое информационное сообщение. Все остальные аргументы являются необязательными.

Buttons - Кнопки, которые можно использовать в диалоговом окне вывода сообщений. В окне

сообщений могут применяться различные кнопки (ОК, Отмена и т.д.). Если не указывать, какие

кнопки необходимо отображать в окне сообщений, то по умолчанию отображается кнопка ОК.

Кроме того, в диалоговых окнах вывода сообщений можно использовать различные значки

(vbQuestion - значок вопросительного знака, vbExclamation - значок восклицательного знака и

т.д.).

Модуль, в котором MsgBox используется как оператор, приведен на рис. 3 (оператор

MsgBox "3", vbOKCancel, "Вывод значений").

Page 11: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Рис. 3

При запуске модуля 4 на исполнение отображается окно сообщений "Вывод значений"

(рис. 4), в котором необходимо нажать кнопку ОК. В окне (Рис.4), реализованном оператором

MsgBox (Рис. 3), отображаются: Заголовок окна - Вывод значений; Сообщение - 3; Кнопки - ОК

и Отмена.

Рис. 4

Например, для вычисления функции типа y = 5 x2 + 7 x + 9, можно использовать функцию

InputBox и оператор MsgBox (рис. 5)

Рис. 5

2.2 Использование стандартных форм и элементов

Page 12: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Рабочее поле Visual Basic for Application представляет собой следующее:

Рис. 6

Для создания диалога необходимо создать стандартную форму, поместить на неё поля

ввода, сформировать способ вызова этой формы по кнопке или по иконке на панели

инструментов, ассоциировать с полями ввода перемененные, создать на форме кнопку запуск и

ассоциировать с ней вызов функций из модуля расчётов. А затем сформировать новые формы,

которые позднее будут использованы для демонстрации таблиц промежуточных значений и

графика с пересекающимися кривыми и прямыми.

3 Задачи для самостоятельного решения студентами

3.1 Разработать форму для ввода данных в виде набора полей и подписей к ним.

3.2. Разработать форму для вывода таблицы значений промежуточных вычислений

(набор текстовых полей)

В VBA нужно сформировать описание процедуры загрузки данных из полей формы

ввода в переменную типа массив. Загрузка должна осуществляться по нажатию кнопки

«Загрузка» с проверкой соответствия значений в каждом поле на соответствие нужному типу

4 Контрольные вопросы

4.1 Для чего используется зарезервированное слово InputBox в VBA?

4.2 Как создать сообщение без использования стандартной формы?

Page 13: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 3 ФОРМИРОВАНИЕ ФУНКЦИЙ

ДЛЯ РАССЧЁТА ПЕРЕСЕЧЕНИЙ КРИВЫХ

1 Цель занятия

Сформировать умения разработки программного кода в VBA для определения точек

заданной и пользовательских кривых с использованием арифметических функций VBA.

2 Общие теоретические сведения

Арифметические операторы VBA представлены в таблице 1.

Таблица 1 Перечень арифметические операторы VBA

Оператор Синтаксис Описание

+ A + B Сложение: складывает А и В.

- A - B Вычитание: вычитает из А В.

* A * B Умножение: перемножает А на В.

/ A / B Деление: делит А на В.

\ A \ B Целочисленное деление: делит А на В, отбрасывая дробную

часть. Результат - целое число.

Mod A Mod B Деление по модулю: делит А на В, возвращая только остаток

операции деления как целое число.

^ A ^ B Возведение в степень: возводит А в степень В.

Математические функции представлены в таблице 2.

Таблица 2 Перечень математических функций VBA

Функция

(аргумент)

Действие

Abs(N) Возвращает абсолютное значение аргумента N

Atn(N) Возвращает арктангенс N (радиан)

Cos(N) Возвращает косинус N (радиан)

Exp(N) Возвращает константу е (натуральный логарифм = 2.718282...), возведенную в

степень N

Fix(N) Возвращает целую часть N. Не округляет число, а отбрасывает любую дробную

часть. Если N отрицательное число, то возвращается ближайшее отрицательное

целое большее, чем или равное N

Int(N) Возвращает целую часть N. Не округляет число, а отбрасывает любую дробную

часть. Если N отрицательное число, то возвращается ближайшее отрицательное

целое меньшее, чем или равное N

Log(N) Возвращает натуральный логарифм N

Page 14: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Rnd(N) Возвращает случайное число: аргумент является необязательным.

Используется только после инициализации генератора случайных чисел

(оператор Randomize)

Sgn(N) Возвращает знак числа: -1, если N - отрицательное; 1, если N - положительное;

0, если N равно 0

Sin(N) Возвращает синус N (радиан)

Sqr(N) Возвращает корень квадратный из N. Если N является отрицательным числом -

возвращается ошибка времени исполнения

Tan(N) Возвращает тангенс N (радиан)

В таблице 2: N – означает любое численное выражение. Все аргументы функций

являются обязательными, если не указано иначе.

3 Задачи для самостоятельного решения студентами

3.1 Для программы, разработанной на прошлой практике сформировать подпрограмму

модуля расчёта для формирования (вычисления) точек заданной кривой по которым её можно

отобразить на экране.

Примечание

При вводе должны вводиться только параметры а1, а2 …, а8, (а9, а10), а точки кривых

или прямых (x и y) должны вводиться в цикле перебором.

3.2 Разработать на языке VBA подпрограммы модуля расчёта для формирования

(вычисления) точек прямых с передаваемыми параметрами для каждой из прямых в задании (3-

й столбец).

3.3 Для вариантов 11-30 выполнить на языке VBA формирование подпрограммы модуля

расчёта для вычисления точек пересечения заданной кривой с пользовательскими,

возвращающую координаты пересечения (может быть 2 точки) и параметр с указанием числа

пересечений. При отсутствии точек пересечения выдавать соответствующее предупреждение с

помощью сообщений MsgBox.

Для вариантов 1-10 и 31-40 выполнить на языке VBA формирование подпрограммы

модуля расчёта для вычисления углов между заданной кривой с пользовательскими,

возвращающую прямой и обратный углы. При отсутствии угла выдавать соответствующее

предупреждение с помощью сообщений MsgBox.

3.4 Создать на языке VBA функцию загрузки точек пересечения (прямых и обратных

углов) в двумерный массив MP, в первый индекс – координаты X (прямой угол), а во второй –

Y (обратный угол).

3.5 Построить вручную в офисной программе или в тетради таблицу со значениями

входных параметров и массива MP для не менее чем 7 наборов данных.

Page 15: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

4 Контрольные вопросы

4.1 Как в VBA выполнить деление по модулю?

4.2 Как правильно округлить число в VBA?

4.3 Для чего можно использовать арифметические функции в VBA?

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 4 ФОРМИРОВАНИЕ ПРОЦЕДУРЫ

ВЫГРУЗКИ ПРОМЕЖУТОЧНЫХ ЗНАЧЕНИЙ В ТАБЛИЦУ

MICROSOFT WORD

1 Цель занятия

Сформировать умения разработки макросов для загрузки текста в диапазоны и в

таблицы.

2 Общие теоретические сведения

2.1 Объект Document

Самые важные свойства объекта Document представлены ниже:

• ActiveWritingStyle — текущий активный стиль (заголовок определенного уровня,

обычный текст, гиперссылка и т.п.). Рекомендуется проверить перед вводом текста.

• Background — возвращает объект Shape, представляющий фоновый рисунок

(фоновые рисунки видны только в режиме Web-документ);

• DefaultTabStop — определить отступ по умолчанию при использовании символа

табуляции. По умолчанию — 35 пунктов, что примерно равно 1,25 см;

• Fields — возможность получить ссылку на коллекцию Fields одноименных объектов.

Очень полезна при работе с полями.

• Indexes — возвращает коллекцию индексов (то есть предметных указателей) для

документа.

• Name — возвращает имя документа (без пути к нему).

• PageSetup — позволяет получить ссылку на одноименный объект. Используется,

конечно, в основном при реализации печати.

• Paragraphs — возвращает ссылку на коллекцию абзацев в данном документе.

• Path — возвращает путь к документу в файловой системе (без имени). Может

пригодиться, чтобы создать еще один файл по тому же пути.

• Saved — очень важное свойство. Позволяет определить, изменялся ли документ со

времени последнего изменения.

• SaveFormat — позволяет получить информацию о формате документа (DOC, RTF,

TXT, HTML и т.п.). Доступно только для чтения.

• Sections — возвращает коллекцию разделов документа. Sentences — то же самое для

предложений. Аналогично работают свойства Shapes, Styles, Subdocuments, Tables, Windowsи

Words.

Page 16: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Важные методы объекта Document:

• Activate() — этот метод позволяет сделать указанный вами документ активным

(например, для ввода текста).

• Close() — закрыть документ. Можно закрыть с сохранением (по умолчанию), а можно

— без (если указать соответствующий параметр).

• FitToPages() — очень интересный метод. Размер шрифта автоматически меняется

таким образом, чтобы текст стал занимать на одну страницу меньше. Можно использовать для

устранения "висячих страниц" и других проблем верстки.

• Range() — очень важный метод. Возвращает объект Range (он будет рассмотрен

ниже), принимает в качестве параметров номер начального символа диапазона и номер

конечного символа.

• Save() — смысл этого метода очевиден. Если документ еще не сохранялся,

открывается диалоговое окно Save As.

• SaveAs() — очень мощный и сложный метод. Можно определить путь для

сохраняемого документа, его формат, кодировку, пароли на открытие и изменение документа,

вставку шрифтов и многое другое. Очень полезный метод, например, для автоматической

конвертации документов.

• Select() — позволяет просто выделить весь документ. Этот метод существует для

очень большого количества объектов, в том числе Selection и Range.

• Undo() — отменить определенное количество последних действий. По синтаксису и

принципам работы — полный аналог Redo().

• UndoClear() — очистить буфер отмены изменений, чтобы пользователь не смог

откатить произведенные действия.

Пример создания и настройки документа средствами VBA в приложении Microsoft Word:

'Объявление переменной

Dim TempPath As String

Dim doc

'Создание объекта – документа

Set doc = CreateNewWordDocument(TempPath)

'Установка отступов

With doc

.PageSetup.TopMargin = CentimetersToPoints(2)

.PageSetup.BottomMargin = CentimetersToPoints(1.5)

End With

'Активация документа doc.Activate

Функция CreateNewWordDocument(TempPath):

Public Function CreateNewWordDocument(TempPath)

Dim wd 'Переменная для хранения ссылки на документ

'Создание объекта Word.Application

Page 17: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Set App = CreateObject("Word.Application")

App.Visible = True

Set wd = App.Documents.Add(TempPath)

Set CreateNewWordDocument = wd

End Function

2.2 Объект Range

Определение объекта Range – это программный объект, который представляет

непрерывный участок текста в документе. Этот объект не зависит от объекта Selection – вы

можете работать с объектом Range, не изменяя текущего выделения. Он может не включать в

себя ни одного символа (представлять курсор ввода текста).

Объект Range чаще используется как инструмент для форматирования выделенного

текстового диапазона. Для этого, кроме свойства объекта Font объект Range имеет целый ряд

свойств, позволяющих настроить параметры шрифта данного диапазона.

Свойство FilTextWidth позволяет указать ширину (в текущих единицах измерения, в

которых должен быть размещен данный диапазон). Размер шрифта и ширину межсимвольного

пространства Word подбирает автоматически

Свойство objRange.FormattedText возвращает ссылку на объект типа Range, который

ассоциируется с текстом в пределах данного диапазона objRange, имеющего специфическое

форматирование.

Свойство ListFormat – возвращает ссылку на объект типа Listformat, содержащего

нумерованные или маркированные списки, используемые в данном диапазоне.

Свойство ListParagraph возвращает ссылку на объект типа ListParagraph, содержащего

нумерованные абзацы, имеющиеся в данном диапазоне.

Свойство Style позволяет задать стиль для данного абзаца. Параметр Style.

Метод InsertAfter вставляет заданный текст в конце диапазона или выделения.

Синтаксис:

objRange.InsertAfter(Text) Пример:

ActiveDocument.Range.InsertAfter "пример"

Метод InsertParagraph позволяет заменить заданный диапазон символов или выделения

на новый абзац. После его использования объект Range отождествляется с новым абзацем.

Метод InsertSymbol предназначен для вставки символа в заданное место диапазона или

выделения. При использовании данного метода содержимое диапазона или выделения

удаляется. Если этого не требуется, то перед вызовом этого метода следует использовать метод

Collapse.

Синтаксис:

ObjRange.InsertSimbol (CharacterNumber, Font, Unicode)

Параметр CharacterNumber определяет код символа. Параметр Font определяет имя

шрифта, используемого в качестве источника символов. Параметр Unicode если значение True,

то вставляется юникодовый символ, заданный аргументом CharacterNumber. В противном

случае (по умолчанию False) будет вставлен символ ANSI, заданный аргументом

CharacterNumber.

Page 18: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Пример задания диапазонов Range. Фрагменты программного кода.

'Функция для создания параграфов в документе Word

Public Function AddNewParagraphRange(aRange)

Dim NewParagraph

Dim NewRange Dim I

As Integer i =

aRange.Paragraphs.Count

aRange.InsertParagraphAfter

Set NewRange = aRange.Paragraphs(i).Range

NewRange.StartOf wdWord, wdMove

Set AddNewParagraphRange = NewRange

End Function

Dim R

'Установка объекта типа Range в рамках объекта Document

Set R = doc.Range

Dim aPart1 ' раздел 1

Dim aPart2 ' раздел 2

Dim aPart3 ' раздел 3

'Установка

Set aPart1 = AddNewParagraphRange(R)

Set aPart2 = AddNewParagraphRange(R)

Set aPart3 = AddNewParagraphRange(R)

'Функция для создания надписи в документе Word в диапазон

Public Function WriteParagraphLn (ARange, text, StyleName) As Range

Dim stpos As Long 'объявление переменной

stpos = ARange.End 'запоминаем ссылку на конец диапазона

If Len(ARange) <= 2 Then 'есть ли текст в диапазоне

ARange.InsertAfter text 'вводим текст в диапазон

Else

ARange.InsertParagraphAfter 'вводим пустой абзац после текста

ARange.Document.Range(ARange.End, ARange.End + 1).Style = wdNormalStyleName

'задаём стиль по умолчанию

ARange.InsertAfter text 'вводим текст

End If

'присваиваем диапазону нужный шрифт

If StyleName <> "" Then _

Page 19: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

ARange.Document.Range(stpos, ARange.End).Style = StyleName

'присваиваем функции изменённый диапазон с текстом нужного шрифта

Set WriteParagraphLn = ARange.Document.Range(stpos, ARange.End) End

Function

2.3 Работа с таблицей

Объект Word.Table, программная работа с таблицами в документе Word из VBA,

автосуммирование

Если в вашем предложении нужно вывести какой-то стандартный документ по

утвержденной форме (платежка, кассовый ордер, командировочный отчет и т.п.), то, скорее

всего, для форматирования вы будете использовать таблицу. Таблица во многих ситуациях

позволяет гарантировать правильное расположение данных в форме относительно друг друга.

Многие программисты изначально используют таблицу даже форм, которые на таблицы походи

мало (сетку таблицы всегда можно скрыть, а ячейки – слить между собой).

2.4 Фрагмент кода для использования на лабораторной работе

Для выполнения лабораторной работы воспользуйтесь готовым кодом:

Public Function AddTableIntoRange(IntoRange, NumCols, NumRows, Autofit)

Dim rngRange As Range

Dim RR As Range

If Len(IntoRange) > 2 Then

IntoRange.InsertAfter " "

Set rngRange = _

IntoRange.Document.Range(IntoRange.End - 1, _

IntoRange.End - 1)

Else

Set rngRange = _

IntoRange.Document.Range(IntoRange.Start, _

IntoRange.Start)

End If

Dim t

Set t = rngRange.Tables.Add(rngRange, NumRows, NumCols)

If Autofit Then t.AutoFitBehavior wdAutoFitContent

t.Range.Style = "Обычный"

IntoRange.Paragraphs.Last.Style = "Обычный"

Set AddTableIntoRange = t

End Function

Dim aTitleList(1 To 20) As String 'массив заголовков

Page 20: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Dim aFieldsList (1 To 20, 1 To 20) As String 'массив данных

'процедуру сбора данных из полей ввода напишите сами

Public Sub InsertTableConstructor (rng, ColNum, StrNum, TitleList, FieldsList)

Dim t

Dim I, J As Integer

Set t = AddTableIntoRange (rng, ColNum, 1, False)

'вставляем заголовок

For I = 1 To ColNum - 1

WriteParagraph t.Cell(1, I).Range, TitleList(I), "Обычный"

Next I

J = 1 'начнём с первой строки

Do

t.Rows.Add 'новая строка

For I = 1 To ColNum 'заполнение данными строки

WriteParagraph t.Cell(J + 1, I).Range, FieldsList (J, I), "Обычный"

Next I

J = J + 1

Loop Until J = StrNum 'при вызове процедуры надо учесть сдвиг на 1 на заголовок

таблицы

' выравнивание

t.AutoFitBehavior wdAutoFitWindow

End Sub

Внимание! В программном коде могут быть ошибки!

3 Задачи для самостоятельного решения студентами

3.1 Для программы, разработанной на прошлой практике, разработать подпрограмму,

которая запускает по нажатию кнопки создание документа и разделение его на 3 диапазона:

«1 Условие задания»;

«2 Ход решения задачи»;

«3 Результаты решения».

3.2 Сформировать подпрограмму для загрузки данных в текстовый диапазон. Для

загрузки использовать пример кода пользовательской подпрограммы WriteParagraphLn.

3.3 Сформировать процедуру, которая вставляет таблицу в текст. Для работы

использовать пример кода пользовательской подпрограммы AddTableIntoRange и

Page 21: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

InsertTableConstructor.

3.4 Создать подпрограмму, которая создаёт в разделе 1 созданного документа таблицу и

заполняет её введёнными параметрами из формы ввода по нажатию кнопки.

3.5 Создать подпрограмму, которая формирует строки с функциями из задания, в

которые подставлены нужные параметры и размещает их в разделе 2 – каждую с новой строки.

3.6 Создать подпрограмму, которая формирует таблицу результатов, в которой должно

быть не меньше 3 столбцов и 2-х строк и размещает её в разделе 3.

4 Контрольные вопросы

4.1 Какой объект позволяет построить таблицу в VBA?

4.2 Какое свойство возвращает коллекцию разделов документа?

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 5 ФОРМИРОВАНИЕ ГРАФИКОВ В

MICROSOFT WORD

1 Цель занятия

Сформировать умения разработки макросов для загрузки данных в графики и

диаграммы.

2 Общие теоретические сведения

2.1 Использование коллекции объектов InlineShape (перевод с официальной

страницы https://msdn.microsoft.com/en-us/library/office)

Коллекция объектов InlineShape представляет все объекты типа Inline Shapes (перевод –

встроенные формы) в документе (document), диапазоне (range) или выделенной области

(selection). Свойство InlineShapes используется, чтобы вернуть элемент или всю коллекцию

InlineShapes.

Следующий пример преобразует каждый объект типа Inline Shapes в активном документе

в объект Shape.

For Each iShape In ActiveDocument.InlineShapes

iShape.ConvertToShape

Next iShape

С помощью метода New можно создать новый рисунок в виде как объект типа Inline

Shapes. Вы можете использовать методы AddPicture и AddOLEObject, чтобы добавлять

изображения или объекты OLE и связать их с исходным файлом. Используйте метод

AddOLEControl для добавления элемента управления ActiveX.

Объекты Shape привязываются к текстовому диапазону, но они являются свободно

перемещаемыми и могут быть расположены в любом месте на странице. Можно использовать

метод ConvertToInlineShape и метод ConvertToShape для преобразования фигур (shapes) из

одного типа в другой. Вы можете конвертировать только изображения, объекты OLE и

элементы управления ActiveX в объекты типа Inline Shapes.

Page 22: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Свойство Count для этой коллекции в документе возвращает количество элементов

только в основном тексте. Для подсчета элементов в подразделах нужно использовать объект

Range.

При открытии документа, созданного в более ранней версии Word, рисунки

преобразуются в объекты типа Inline Shapes.

2.2 Использование семейства объектов Shapes и ShapeRange

Объект shape – это любой графический объект, размешенный на рабочем листе или

диаграмме. Семейство shapes представляет собой семейство всех графических объектов

рабочего листа. Семейство ShapeRange содержится в семействе shapes и является конкретным

набором графических объектов рабочего листа. В крайних случаях семейство ShapeRange

может состоять только из одного объекта или совпадать с семейством shapes, которое его

содержит.

Семейство shapes обычно применяется для создания нового объекта shape. Когда надо

работать (т. е. задавать или изменять свойства) с отдельным элементом семейства shapes обычно

используют объект shape, а когда следует оперировать с набором элементов этого семейства —

семейство ShapeRange.

Большинство свойств объекта shape или семейства ShapeRange определяются в два этапа.

Сначала задается свойство, которое возвращает объект, содержащий устанавливаемые

свойства, а уж потом для этого объекта определяется требуемое свойство. Например, если надо

изменить тип линии, то у выбранного объекта семейства ShapeRange используется свойство

Line, которое возвращает объект LineFormat, содержащий свойства для установки цвета,

толщины и типа граничных линий объекта shape. Получив таким образом объект LineFormat,

при помощи его свойств устанавливается конкретный тип линии.

ActiveSheet.Shapes.AddLine(104.25, 135.75, 230.25, 146.25).Select

Selection.ShapeRange.Line.Weight = 3#

Selection.ShapeRange.Line.Visible = msoTrue

Selection.ShapeRange.Line.Style = msoLineSingle

Перечислим основные свойства объекта shape, возвращающие объект shape конкретного типа.

Fill Возвращает объект FillFormat, который содержит

свойства для задания цвета, типа штриховки и текстуры объекта Shape

Line Возвращает объект LineFormat, содержащий свойства для установки цвета,

толщины и типа граничных линий Объекта Shape

Shadow Возвращает объект shadowFormat, содержащий свойства для настройки тени

объекта shape

TextFrame Возвращает объект TextFrame — текстовое поле

Приведем несколько наиболее часто употребляемых общих свойств объектов Shape.

Visible Устанавливает видимость объекта

Left, Top, Width, Height Задают координаты левого верхнего угла объекта, его ширину и

высоту

Page 23: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

OnAction Устанавливает имя процедуры, которая будет запущена при

выборе объекта

Приведем несколько наиболее часто употребляемых общих методов объектов Shape.

Сору Копирует объект Shape в буфер обмена

Cut Копирует объект shape в буфер обмена с удалением

Delete Удаляет объект shape

Paste Вставляет объект shape из буфера обмена

IncrementLeft,

IncrementTop

Сдвигает объект shape по горизонтали и вертикали соответственно на

заданное в аргументе количество пунктов.

Синтаксис: IncrementLeft (Increment)

IncrementTop (Increment )

IncrementRotation Поворачивает объект shape на заданный в аргументе угол.

Синтаксис: IncrementRotation (Increment)

Рассмотрим методы, создающие новые элементы семейства shapes. Вручную объекты

Shape создаются при помощи панели инструментов Рисование (Drawing).

AddShape

Возвращает объект Shape.

Синтаксис:

AddShape (Type, Left, Top, Width, Height) Аргументы:

• Tуре — специфицирует тип объекта. Допустимо 139 значений.

Приведем несколько из них: msoShapeCube (куб),

msoShapeRectangle (ПРЯМОУГОЛЬНИК), msoShapeOval (овал),

msoShapeSmileyFace (улыбающееся лицо) ;

• Left, Top — координаты левого верхнего угла объекта ;

• Width, Height — ширина и высота объекта

AddLine Возвращает объект shape, являющийся линией (отрезком).

Синтаксис:

AddLine (BeginX, BeginY, EndX, EndY) Аргументы:

BeginX, BeginY, EndX, EndY — координаты концов отрезка

AddTextbox Возвращает объект shape, являющийся надписью.

Синтаксис:

AddTextbox (Orientation, Left, Top, Width, Height) Аргументы:

• Orientation — устанавливает ориентацию текста в надписи. Допустимые

значения:

o msoTextOrientationDownward

o msoTextOrientationHorizontal

o msoTextOrientationMixed o

msoTextOrientationUpward o

msoTextOrientationVertical

• Left, т.ор — координаты левого верхнего угла объекта

• Width, Height — ширина и высота объекта

Page 24: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

AddTextEffect Возвращает объект shape, являющийся WordArt-объектом.

Синтаксис:

AddTextEffect (PresetTextEffeet, Text, FontName, FontSize, FontBold, Fontltalic,

Left, Top)

Аргументы:

• PresetTextEf feet — устанавливает текстовой эффект. Допустимые

значения от msoTextEffect1 до msoTextEf fect30

• Text — текст, отображаемый в объекте WordArt

• FontName — название шрифта

• Fontsize — размер шрифта

• FontBold — допустимые значения: True (полужирный шрифт), False (в

противном случае)

• Fontltalic — допустимые значения: True (курсивный шрифт), False (в

противном случае)

• Left, тор — координаты левого верхнего угла объекта

AddPicture • Возвращает объект shape, являющийся рисунком, созданным на основе существующего файла. Синтаксис:

• AddPicture (FileName, LinkToFile, SaveWithDocument , Left, Top, Width,

• Height)

• FileName — строка, задающая имя файла, на основе которого создается рисунок

• LinkToFile — допустимые значения: True

• (рисунок связан с файлом, на основе которого создан) и False (в

противном случае)

• SaveWithDocument — допустимые значения: True(сохраняется рисунок с рабочей книгой) и False (в рабочей книге сохраняется связь с рисунком, а не сам рисунок)

• Left, тор — координаты левого верхнего угла объекта

• Width, Height — ширина и высота объекта

2.3 Фрагмент кода для использования на лабораторной работе

Public Sub InsertDiagramIntoDoc(IntoRange, ColNum, RowNum, TitleList, FieldsList,

NeedLegend)

Dim I, J As Byte

Dim obj As Object

' исключаем пустой диапазон

IntoRange.InsertAfter " "

If IntoRange.ShapeRange.Count <> 0 Then ' проверяем тип размещения диаграммы

IntoRange.ShapeRange(1).OLEFormat.Activate

Set obj = IntoRange.ShapeRange(1).OLEFormat.Object

Else

IntoRange.InlineShapes.AddOLEObject ClassType:="MSGraph.Chart.8", FileName:="",

Page 25: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

LinkToFile:=False, DisplayAsIcon:=False

IntoRange.InlineShapes(1).OLEFormat.Activate

Set obj = IntoRange.InlineShapes.Item(1).OLEFormat.Object

End If

obj.ChartType = Нужный Вам тип

obj.HasLegend = NeedLegend

With obj.Application.datasheet

If TitleList(1) <> "" Then ' заливаем заголовки

For I = 1 To ColNum

obj.ChartTitle.Application.datasheet.Cells(1, I + 1) = TitleList(I)

Next I

End If

J = 1 ' заливаем контент

obj.ChartArea.AutoScaleFont = False obj.ChartArea.Font.Bold = False

obj.ChartArea.Font.Size = Нужный размер шрифта

obj.ChartArea.Font.ColorIndex = 0

For I = 1 To ColNum

For J = 1 To RowNum

.Cells(выражение с переменной J, выражение с переменной I) = FieldsList(I, J)

Next J

Next I

End With

' заливаем легенду

If NeedLegend Then

With obj.Legend.Application.datasheet

For I = 2 To ColNum

.Cells(1, I) = TitleList(I)

Next I

End With

End If

' закрываем

obj.Application.Update

obj.Application.Quit

Page 26: ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1 ФОРМИРОВАНИЕ ...asu.ugatu.ac.ru/library/57d76efdd1f37/b010c32fbaaa9fdae... · 2017-09-26 · 5 Массовость означает,

Set obj = Nothing

End Sub

Внимание! В программном коде могут быть ошибки (проверяйте код перед

запуском)!

3 Задачи для самостоятельного решения студентами

3.1 Для программы, разработанной на прошлой практике, разработать подпрограмму,

которая может вставлять в диапазон диаграмму на основе кода, описанного в п. 2.3

3.2 Разработать процедуру вызова процедуры, разработанной в п. 3.1, которая:

• формирует 2 массива: массив заголовков (например, Dim mas1(10) As String) и

массив данных (например, Dim mas2(10, 10) As Нужный тип);

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

практике;

• вызывает процедуру, разработанную в п. 3.1 и передаёт в неё сформированные

массивы так, чтобы в нужном диапазоне в документе Word была сформирована

диаграмма заданного в задании типа со значениями расчётов.

Диаграмму строить для таблицы результатов.

3.3 Вставить в нужную процедуру программный код, который будет выдавать сообщение

об окончании генерации.

4 Контрольные вопросы

4.1 Что такое коллекция InlineShape?

4.2 Что возвращает свойство Fill объекта Shape?