- •Bведение
- •1. Основы языка Basic
- •1.1. Основные структуры
- •1.2. Операторы ввода, вывода, позиционирования
- •1.3. Числа
- •1.4. Строки
- •1.5. Операторы def, dim, пользовательский тип
- •1.6. Разветвление и альтернатива
- •1.7. Циклы
- •If k then print "пароль принят" else print "ошибка пароля"
- •Input "Введите произвольный текст : ", txt
- •Input X
- •1.8. Программные стэки
- •1.9. Массивы
- •If I and jb then
- •Input n
- •1.10. Функции, подпрограммы
- •1.11. Файлы
- •1.12. Сегментирование программы
- •Input n
- •1.13. Работа с графической информацией
- •If nu then gosub Move 'перемещение рисунка
- •1.14. Звуковое воспроизведение
- •2. Элементы vba
- •2.1. Типы переменных
- •2.2. Использование массивов
- •2.3. Разветвление и циклы
- •2.4. Работа с ячейками листа
- •If y X Then
- •If Check Then
- •2.5. Элементы управления
- •If X 0 Then
- •2.6. Пользовательские классы
- •If IsEmpty(Text2) Then Exit Sub
- •2.7. Построение графиков в excel
- •2.8. Построение графиков и таблиц в word
- •3. Ключи в word
- •4. Гипертекстовая разметка
- •4.1. Основные тэги html
- •4.2. Форматирование таблиц
- •4.3. Фреймы
- •5. Основы программирования в среде MathCad
- •5.1. Особенности языка MathCad
- •5.2. Некоторые вычислительные модели
- •5.2.1. Системы уравнений
- •5.2.1.1. Системы линейных уравнений
- •Iter(a, b, e) n Last (b)
- •5.2.1.2. Нелинейные уравнения и системы
- •5.2.2. Определенный интеграл
- •5.2.3. Функции на дискретном множестве
- •5.2.4. Обыкновенные дифференциальные уравнения
- •5.2.5. Минимизация функций
- •5.2.5.1. Функции одной переменной
- •5.2.5.2. Функции многих переменных
- •5.2.6. Pазностная модель и прогноз
- •1 Otherwise (коэффициенты непрерывной модели)
- •5.2.7. Сглаживание и осреднение рядов
- •Задания
- •Литература
2.8. Построение графиков и таблиц в word
Графика реализуется в Word так же, как в Excel, за тем иск-лючением, что выбор типа диаграммы, в общем, затруднителен. С по-мощью автофигур (меню “Рисование”) изображение графиков значи-тельно проще. Программирование графики осуществляется теми же кодами, что и в Excel, заменяя объект ActiveSheet объектом ActiveDocument, и выбор цвета линии выполняется командой
.ForeColor.RGB = RGB(a, b, c), где a, b, c – целые числа из промежу-тка (0, 256), указывающие на степень присутствия красного, зеленого, синего в результирующем цвете.
Таблицы проще всего вводить с помощью меню “Ввод табли-цы” или “Рисование таблицы”, хотя возможно использование кода:
ActiveDocument.Tables.Add Range := Selection.Range, _
NumRows := 3, NumColumns := 5, _
DefaultTablesBehavior := wdWord9TablBehavior, _
AutoFitBehavior := wdAutoFitContent
C ячейками таблицы можно работать так же, как в Excel, с той лишь разницей, что в Word ячейка употребляется в единственном числе (Cell, а не Cells). Кроме того, Cell является свойством (подобъектом)
объекта Tables(n), который, в свою очередь, подчинен объекту ActiveDocument. Очистка содержимого ячейки выполняется методом
Cut или Delete. Ввести текстовое выражение в ячейку можно методом InsertAfter или InsertBefore. Возвращается содержимое ячейки свойс-твом Text.
Пример. Рассмотрим заполнение таблицы и построение графика сложной функции f(x) = e по десяти значениям функции на промежутке x ∈ [-2; 3] (на калькуляторе это сделать не-возможно). Здесь [ ∙ ] – целая часть числа . Используя основное меню, вставим в начало страницы таблицу с двумя строками и 12 столбцами. Далее, в меню “Сервис” → “Макрос” → “Создать” создадим макрос с
именем Graph. В кодовой странице модуля макроса сначала запишем
код вычисления функции (ср. с п. 1.10, пример 2):
Function f(x As Single) As Single
Dim r As Double, sq3 As Double, sum As Double, q As Double
Dim m As Double, x2 As Single, qrn As Double, n As Long, k As Integer
Const eps = 0.000001
sq3 = SQR(3): q = 1: r = x: x2 = x * x: m = 3: sum = x / sq3
While ABS(q) > eps
n = n + 1: sqn = SQR(n): r = r * x2 * sqn / m: m = 9 * m
If INT(sqn) Mod 2 Then k = -1 Else k = 1
q = k * r / SQR(3 – sq3): sum = sum + q: sq3 = SQR(3 + sq3)
Wend: f = EXP(sum)
End Function
Затем заполним тело макроса кодом:
Sub Graph()
Dim i As Integer, m As Integer, n As Integer, j As Integer
Dim a As Single, b As Single, h As Single, x() As Single
Dim y() As Single, xm As Single, ym As Single, z As Single
Const eps = 0.01
n = 10: ReDim x(n), y(n)
a = -2: b = 3: h = (b - a) / n
With ActiveDocument.Tables(6) 'Заполнение таблицы (см. табл. 3)
For i = 0 To n: z = a + i * h: x(i) = z
y(i) = f(z): If Abs(z) < eps Then z = 0
.Cell(1, i + 2).Select
With Selection
.Cut
.InsertAfter Left(Str(z), 5)
End With
z = y(i): b = Abs(z): If b < eps Then z = 0
If b > ym Then ym = b
.Cell(2, i + 2).Select
With Selection
.Cut
.InsertAfter Left(Str(z), 5)
End With
Next
End With: b = 3: xm = 300 / (b - a): ym = 200 / ym 'масштаб
'**** Рисование стрелок (осей координат) ****
With ActiveDocument.Shapes
.AddLine(150, 650, 480, 650).Select ' горизонтальная линия
With Selection.ShapeRange
.Line.EndArrowheadStyle = msoArrowheadTriangle 'стрелка
.Line.EndArrowheadLength = msoArrowheadLengthMedium
End With
.AddLine(150, 650, 150, 430).Select 'вертикальная линия
With Selection.ShapeRange
.Line.EndArrowheadStyle = msoArrowheadTriangle 'стрелка
.Line.EndArrowheadLength = msoArrowheadLengthMedium '
End With
'**** Рисование линии графика ****
a = 150: b = 650 - ym * y(0): h = x(0)
With .BuildFreeform(msoEditingAuto, a, b) 'начальная точка
For i = 1 To n: a = 150 + xm * (x(i) - h): b = 650 - ym * y(i)
.AddNodes msoSegmentCurve, msoEditingAuto, a, b
Next
.ConvertToShape.Select 'линия построена
End With
End With
With Selection.ShapeRange.Line
.Weight = 2.5 ' толщина линии
.Style = msoLineSingle 'стиль – одинарная линия
.Visible = msoTrue
End With
End Sub
Таблица 3
х: |
-2 |
-1.5 |
-1 |
-.5 |
0 |
.5 |
1 |
1.5 |
2 |
2.5 |
3 |
у: |
6.34 |
1.32 |
.769 |
.777 |
1 |
1.28 |
1.29 |
.754 |
.157 |
0 |
0 |
Рис. 4
В результате получается вполне пригодный для дальнейшего редакти-рования документ (рис. 4). Замечательно, что таким образом пост-роенный график привязан к конкретному месту листа и не связан с текстом, поэтому он легко может быть наложен на текст.