- •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. Сглаживание и осреднение рядов
- •Задания
- •Литература
1.12. Сегментирование программы
Если программа достаточно велика, ее можно разбить на части
(сегменты). Бейсик позволяет не держать в оперативной памяти всю
программу, а лишь необходимый в данный момент сегмент, обращаясь
к другому сегменту с помощью оператора CHAIN"Диск: \имя сегмен-
та" (аналогичным образом работает оператор RUN). Общие для сег-ментов данные передаются при этом вызываемому сегменту. Если не-обходимо передать лишь часть данных, можно воспользоваться опе-ратором COMMON ‹ список переменных ›. Например, если в массиве А(n) содержатся коэффициенты многочлена степени n, то отыскание корней можно выполнить либо по формулам для квадратного уравне-ния при n 2, либо по формулам приближенного решения уравнений при n > 2. Пусть квадратное уравнение решает программа "Sqroot", находящаяся на диске А, а более общую задачу - программа "Polуroot" (на том же диске). Разветвление задачи можно осуществить програм-мой:
DEFINT I – K
COMMON n, A()
Input n
DIM A(n) AS SINGLE
FOR i = 0 TO n : INPUT A(i) : NEXT
IF n <= 2 THEN
CHAIN"A : \ Sqroot"
ELSE
CHAIN"A : \ Polyroot"
END IF
1.13. Работа с графической информацией
При загрузке системы БЕЙСИК дисплей устанавливается в ал-фавитно - цифровой режим. Для обработки графической информации необходим графический режим, который устанавливается оператором SCREEN N (N - номер режима). Например, при N = 9 на экране раз-мещается 640350 точек в графическом режиме, 8025 символов в ал-фавитно-цифровом режиме, при использовании 16 цветов. При N = 12 размещается соответственно 640480 точек и 8030 символов, разре-шается использовать до 256 цветов (подробности определяются свой-ствами монитора). Перечислим основные функции, используемые при обработке графической информации.
CIRCLE(x,y),R[,c[,,[,S]]] - изображает окружность (или дугу) с цент-
ром в точке (х, у) (счет точек начинается слева направо и сверху
вниз) радиуса R цветом с кодом с, и - угловые меры начала
и конца дуги (если изображается не вся окружность), S степень
сжатия (если изображается эллипс или его дуга).
СOLOR [b[,f]] - выбор цвета фона и палитры.
DRAW"‹текстовая информация›"- изображение произвольной лома-
ной в соответствии со строкой информации, где указываются
команды :
Un - движение вверх на n позиций,
Dn - движение вниз на n позиций,
L,R,E,F,G,H соответственно указывают на движение влево, впра-
во на северо-восток, юго-восток, юго-запад, северо-запад.
Mx,y - команда перехода к точке с координатами (х, у).
Префикс В команд движения указывает на перемещение без изо-
бражения линии (просто "перенос пера"), префикс N указыва-
ет на движение с возвратом в исходную точку.
An - разрешает поворот фигуры на n прямых углов,
TAn - разрешает поворот на n градусов (против хода часов),
Сn - устанавливает код n цвета линии,
Pn,m - закрашивает область цветом с кодом n вплоть до грани-
цы цвета с кодом m,
Sn - введение масштабного коэффициента n.
Если в качестве информации используется строка или подстрока како-
го-либо текста, то используется функция VARPTR$ в виде
"X" + VARPTR$("‹ строка ›") (функция передает в качестве параметра
начальный адрес стэка информации в памяти)
LINE(a, b) - (c, d) [,c[,B[F]]] - изображение прямой, соединяющей точ-
ки (a, b) и (c, d), цветом с кодом с. Признак В означает изобра-
жение прямоугольника с вершинами (a, b), (c, d), признак F (вме-
сте с В) закрашивает прямоугольник указанным цветом. Если
предыдущая точка предполагается фиксированной (оператором
LINE или PSET),то первый операнд можно опустить, оператор
LINE принимает сокращенную форму: LINE - (c,d) [,c[,B[F]]].
GET (a,b) - (c,d), A - пересылает экранное содержимое прямоугольника
с вершинами (a,b), (c,d) в ранее определенный массив А.
PUT (x,y), A [,характер] - пересылает графическую информацию из
массива А на экран, начиная с точки (х,у). Характер указывает
взаимодействие информации с экраном : PSET, PRESET, XOR,
OR, AND.
PAINT(x,y),c1,c2 - окрашивает область экрана, содержащую точку
(х,у), цветом с кодом с1 до границы цвета с кодом с2.
PSET(x,y),c - изображается на экране точка (х,у) цветом кода с.
PRESET(x,y) - убирает точку (х,у) с экрана.
POINT(x,y) - возвращает атрибут цвета точки (х,у).
Пример 1. Построим программу для изображения графика функ-ции f(x) = на промежутке [0, 3]:
DEFINT I - N : DEFSNG H, S - Z
FUNCTION f (x AS SINGLE)
v = 3.1415926 : v = 16 / v : q = 1 : s = 0 : n = 0
WHILE ABS(q) > 0.00001 'точность приближения
n = n + 1 : IF n MOD 2 THEN k = -1 ELSE k = 1
q = k * n * sin (2 * n * x) / (4 * n * n - 1) ^ 2 : s = s + q
WEND : f = s * v
END FUNCTION
n = 60: h = 3 / n: xm = 550 / 3 'масштаб по Х
DIM z(n): ym = 0
FOR j = 0 TO n: x = j * h: y = f(x): z(j) = y: y = ABS(y)
IF y > ym THEN ym = y
NEXT : ym = 150 / ym 'масштаб по Y
SCREEN 9 : CLS : c = 3 'установка кода цвета линии
DRAW"bm10,150 nr600nu150d150" 'изображение осей
FOR j = 0 TO n : x = 10 + j * xm : y = 150 – ym * z(j) 'координаты с учетом
IF j = 0 THEN 'масштаба
PSET(x, y), c 'помещаем первую точку
ELSE
LINE - (x, y), c 'добавляем очередную точку линии
END IF
NEXT : END
Пример 2. Составим программу управления движением рисунка по экрану с помощью клавиатуры. В качестве рисунка возьмем изоб-ражение зеленого креста с красной окантовкой. Изменять его положе-ние на экране будем с помощью управляющих стрелок клавиатуры ("вверх", "вниз", "влево", "вправо"). Заметим, что код основных сим-волов клавиатуры занимает один байт, код вспомогательных и управ-ляющих клавиш занимает два байта и его "информационная" часть на-ходится в младшем (правом) байте. Эту часть и будем условно назы-вать кодом управляющего символа. Итак, стрелка "вверх" () имеет код 72, "вниз" () – 80, "влево" () – 75, "вправо" () – 77. Клавиша
выхода "Esc" (основная) имеет код 27.
DEFINT A-B, I-N: DERSTR T
SCREEN 12: CLS: n = 18000
DIM A(n), B(n) 'массивы для хранения рисунка и фона
GET (1, 1) – (120, 180), B 'запомнили фон
DRAW "C9BM50,1R20D50R50D20L50D80L20U80L50U20R50U50BF5P10,9"
GET (1, 1) – (120,180), A: i = 1: j = 1: m = 5 'шаг перемещения
DO: t = "": WHILE t = "": t = INKEY$: WEND 'опрос клавиатуры
IF ASC(t) = 27 THEN END 'выход из программы
k = ASC(RIGHT$(t, 1)): lam = 0: mu = 0: nu = 0
SELECT CASE k
CASE 72, 75, 77, 80: nu = 1 'признак перемещения
CASE 72: IF j > m THEN mu = -m 'вверх
CASE 80: IF j + m < 300 THEN mu = m 'вниз
CASE 75: IF i > m THEN lam = -m 'влево
CASE 77: IF i + m < 500 THEN lam = m 'вправо
END SELECT