Операторы работы с массивамиНекоторые правила VBscript
Операторы присваивания
Комментарии
Функции
Операторы используемые в выражениях
Ветвление и циклы
Oбъявление функций и процедур
Идентификаторы Visual BasicНепосредственно работа в системе "ВекторW"
Зарезервированные слова
Что такое переменные?
Присваивание значения переменной
Объявление и использование массивов
Как вызвать сценарий на VBscript в системе Вектор?О перспективах программирования на VB
Как вызвать из одного сценария на VBscript другой сценарий в системе Вектор?
Преобразование геометрических объектовOrtTrans a, b - преобразование отрезка ортогнально к координатной плоскостиПримеры
Импорт линий .dxf формата: Import "Rnew12.dxf"
SetInvisibleAll - команда очистки экрана
| СИНТАКСИС | ПРИМЕР | ОПИСАНИЕ |
| Dim имя_массива (индексы) | dim a(10), b(20,30) | Объявление массива |
| Erase имя_массива | erase a | Очистка содержимого массива |
| переменная = значение | a=137 a=b c="привет" | Присваивание |
| ' комментарии | ' текст |
| Abs (число) | a = abs(-1.34) ... a=1.34 | Абсолютное значение числа |
| Asc (символ) | a = asc("s") ... a=115 | ANSI код символа |
| Int (число) | a = int(-1.5) ... a=-2 | Целое число, округление |
| Atn (число) | a = atn(0.37) | Арктангенс |
| Tan (число) | a = tan(0.37) | Тангенс |
| Cos (число) | a = cos(0.37) | Косинус |
| Sin (число) | a = sin(0.37) | Синус |
| Exp (число) | a = exp(0.37) | Экспонента |
| Log (число) | a = log(0.37) | Логарифм |
| Sqr (число) | a = sqr(0.37) | Квадратный корень |
| Rnd (число) | a = rnd(1) | Случайное число 0..1 |
| Randomize | Randomize | Установка генератора случайных чисел в исходное состояние |
| + - сложение; аnd - и; / - деление; = равно, присвоить; > - больше; <= - меньше-равно; <> - не ; < - меньше; => - меньше-больше; мod - модуль числа; * - умножение; - - отнять; or - или |
| Call имя_событие | Call but_onclick | Вызов подпрограммы |
| Do While условие
... Loop |
Do While a<5
a=a+1 Loop |
Повторяет выполнение кода, пока условие справедливо |
| For счетчик=начало To конец Step шаг
... next |
For i=1 to 5
a=a+1 next |
Цикл |
| IF условие Then
действие1 действие2 End if |
IF a > amin Then amin = a | Выполнение кода при выполнении условия |
| While условие
действие Wend |
While a<5
a=a+1 Wend |
Выполнение кода пока условие истинно |
| Dim переменная | Dim a | Объявление переменной |
| Sub имя_событие
код End sub |
Sub but_onclick
Alert x End sub |
Подпрограмма |
| Function имя(параметры)
код End function |
Function(x,y)
x=x*y End function |
Функция |
| Exit ... | Exit Do (For, Function, Sub) | Досрочный выход |
Процедура это общее название функций или подпрограмм. Имеет синтаксис:
sub name
событие
end sub
где:
name - имя процедуры.
событие - то, что может "случиться" в процессе выполнения программы
(вычисления, отрисовка).
Чтобы переменные x была преобразована в целые числа, используется
функция Cint(переменная):
а=Cint(x)
Если код не умещается в одной строке, то можно использовать символ продолжения строки:
if a=1 and b=2 or c=3 then t = 10 можно написать как if a=1 _ and b=2 _ or c=3 _ then t =10Перенос же строки, при печати текста и вычислений на экран, выполняется процедурой vbCrLf в следующей конструкции:
— Первый символ идентификатора обязательно является буквой или символом
подчеркивания. Например, идентификаторы First, _Var являются правильными,
а 1st, 100 — неправильными. В середине или на конце идентификатора допускается
использовать цифры, например: A1, A1B2 и др.
— В идентификаторах не допускается использовать пробелы, а также специальные
символы: знаки препинания, а также @, #, $, &. Идентификаторы My Var,
New& являются неправильными.
— Максимальная длина идентификатора не может превышать 255 символов.
— Идентификатор не может совпадать с зарезервированными словами языка
программирования Visual Basic Script.
— В пределах одного модуля или проекта недопустимо объявлять один и
тот же идентификатор дважды.
Зарезервированные слова — это стандартные инструкции, позволяющие решать
определенные действия: описывать процедуры, открывать циклы, объявлять
переменные и др. Ни одно из этих слов недопустимо использовать в качестве
идентификатора.
Что такое переменные
С помощью переменных можно временно сохранять значения выражений, чтобы использовать их в дальнейшем.
Для объявления новой переменной используется инструкция Dim, синтаксис
которой таков:
Dim <идентификатор> [As <тип>], <идентификатор1> [As <тип>]...
<идентификатор> — имя переменной.
<тип> — допустимый тип данных.
Например, следующая конструкция объявляет переменную V1:
Dim V1 As Integer
Тип переменной и соответственно конструкцию As можно опускать. В этом
случае переменная является не типизированной. При одновременном объявлении
нескольких переменных очень часто используется такая конструкция Dim A,
B, C As Integer. Причем подразумевается, что все три переменные являются
целыми. На самом деле это не так. Целой является лишь переменная C, а переменные
B и C нетипизированы. Более правильный способ записи таков:
Dim A As Integer, B As Integer, C As Integer
Присваивание значения переменной
Начальное значение переменной равно 0 для числовых типов данных. В большинстве случаев это значение вполне подходит условиям задачи. Так, можно составить программу суммирования строк массива A, не обнуляя значение переменной S:
Dim S
For I = 1 To 5
S = S + A[I]
Next
Такая программа при исполнении не выдаст ошибки и правильно суммирует пять элементов массива. Но правила хорошего тона в программирования все-таки вынуждают перед использованием новой переменной присвоить ей начальное значение. К программе для суммирования элементов массива следует добавить еще одну строку:
Dim S
S = 0
For I = 1 To 5
S = S + A[I]
Next
Присвоить значение переменной можно двумя способами: в явной форме или в неявной форме. В следующих примерах показаны различные способы присвоения значений переменным:
' числовая переменная
Dim Year As Integer
Year = 1999
' расчет значения выражения
B = (3*(3+4))/4
Объявление и использование массивов
Массивы — это переменные особого типа, имеющие еще одну характеристику: размерность. С их помощью можно манипулировать сразу несколькими значениями. Для объявления массива, как и переменной, используются стандартные конструкции Dim или Static:
Dim <массив> (<размерность1, размерность2...>) [As тип]
При описании массива используются следующие обозначения:
<массив> — имя массива, образующееся как и другие идентификаторы.
<размерность, размерность2...> — длина каждой размерности массива.
<тип> — необязательный при описании массива тип данных.
В программах обычно используются одномерные, двухмерные и трехмерные
массивы. Причем, одномерные массивы иногда называются векторами, а двухмерные
— таблицами. Следующий пример объявляет одномерный массив A: Dim A(6).
Элементы массива обычно нумеруются с 0. Так, для массива A, объявленного
выше, выделяется память для семи элементов: A(0), A(1), A(2), A(3), A(4),
A(5) и A(6). Впрочем, совершенно не обязательно использовать элемент массива
с нулевым индексом — можно ограничиваться значениями, хранящимися в оставшихся
шести элементах с первого по шестой. Размерности массива, указываемые в
круглых скобках после идентификатора.
Как и в случае с переменными, первое действие, которое следует выполнить
в программе после объявления массива, — это присвоение значений элементам
массива, например:
Dim FirstArray(4) As Integer
FirstArray(0) = 20
FirstArray(1) = 16
FirstArray(2) = 15
FirstArray(3) = 23
FirstArray(4) = 11
Для манипуляции элементами массива наиболее подходящим является цикл For, в котором, к примеру, можно просуммировать элементы массива FirstArray:
For I = 0 To 4
S = S + FirstArray(I)
Next I
Чтобы быстрее изучить особенности использования переменных, констант
и массивов, надо воспользоваться любой книгой по Бейсику, где приведены
примеры различных программ, а затем попытаться реализовать их в среде Visual
Basic Scrept for Vector. По другим вопросам обращаться к Help языка VBS.
Так например, перенос строки при выводе на экран каких-либо сообщений был
найден в Help и использован в программе VbsBox.
Как вызвать сценарий на VBscript в системе Вектор?
Сценарий (программа) создается в специально встроенном в Вектор редакторе
Блокнот (WordPard) с расширение .vbs Запускается система Вектор с помощи
создания или открытия файла. Старый файл выполнит действия команд в нем
заложенные.
Как вызвать из одного сценария на VBscript другой сценарий в системе
Вектор?
Необходимо второй сценарий поместить в конец первого сценария, также
можно создать Subr или Function для выполнений часто-повторяющихся построений
или вычислений.
Пример построения отрезка различным способом задания переменных
otrezok.s 1, 4, 5, 7, 7, 10 ' - непосредственно заданием значений при
обращении к otrezok.s
x1=1
y1=3
z1=4
x2=7
y2=6
z2=9
otrezok.s x1, y1, z1, x2, y2, z2 ' - через регистры
переменных
Dim p1, p2
p1 = Array(1,2,3)
p2 = Array(7,5,8)
otrezok.s p1(0), p1(1), p1(2), p2(0), p2(1), p2(2) ' элементами
массивов
Пример расчет дины отрезка р1-р2
s =sqr((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
VbsBox " Длина отрезка р1-р2 = " & s -
вывода текста (что в кавычках) и цифровоых значений (переменной s).
OrtTrans a, b - преобразование
отрезка в проецирующее положение той или иной к. плоскости
где
a - к какой коорд. плоскости преобразуем объект
0 - к горизонтальной плоскости проекций,b - номер отрезка, который преобразуем
1- к фронтальной плоскости проекций,
2 - к профильной плоскости проекций,
Пример изображения отрезка прямой, вращающегося вокруг начала координат
For n = 0 To 36 step 1
otrezok.s 0,0,0,5,5,0
obj.zAngle = 10*n
obj.SetH
Next
или
For s = 0 To 360 step 10
otrezok.s 0,0,0,5,5,0
obj.zAngle = s
obj.SetH
Next
Импорт линий .dxf формата
Пример изображения вращающейся "Rnew12.dxf" линии импортируемой
из текущей директории (там где находится vector.exe)
For s = 0 To 360 step 5
Import "Rnew12.dxf"
‘ импортирование кривой
obj.yAngle = s
‘ переменная – угол вращения
obj.SetH
‘ матрица преобразований и изображение
Next
Пример изображения линии(в масштабе, вращающейся и со сдвигом) импортируемой не из текущей директории.
For s = 0 To 360 step 10
Import "C:\cg8n\krug1.dxf"
obj.scale = 0.1
' - масштаб
obj.zAngle = s
' - переменная – угол вращения
obj.origin(0) = 1
' - переменная – сдвиг по х
obj.origin(1) = 1
' - переменная – сдвиг по y
obj.origin(2) = 1
' - переменная – сдвиг по z
obj.SetH
‘ матрица преобразований и изображение работает
' по умочанию: масштаб. поворот, сдвиг
Next
* Примечание: вращение окружности заданной в центре координат вокруг оси Oz ничего не даст
Пример изображения импортируемой линии в масштабе, свиге и затем повороте - все еще в цикле.
For s = 0 To 360 step 10
Import "C:\cg8n\krug1.dxf"
obj.zAngle = s
obj.origin(0) = 20 ' – сдвиг по х на 20 с учетом масштаба на
самом деле будет сдвиг на 2 см
obj.origin(1) = 0 ' – сдвиг по y (если на 0, то можно
не задавать)
obj.origin(2) = 0 ' – сдвиг по z
obj.scale = 0.1 ' - масштаб
obj.SetH ‘ матрица преобразований действует после
поворота
Next
For s = 0 To 360 step 10
Import "C:\cg8n\krug1.dxf"
obj.scale = 0.1
' - масштаб
obj.origin(0) = 1
' – сдвиг по х на 1
obj.origin(1) = 1
' – сдвиг по y на 1
obj.origin(2) = 1
' – сдвиг по z на 1
obj.SetH
‘ матрица преобразований на сдвиг
obj.zAngle = s
' - повернули
obj.SetH
‘ матрица преобразований действует после поворота
Next
SetInvisibleAll
' очистка экрана
Ниже приведена программа расчета длины отрезка p1-p2 и вывода его значений
на экран диспея.
В макропрограмме pointline - показано, как определяется наикратчайшее
расстояние от точки р3 до прямой р1-р2. Определяется и точка p, до которой
расстояние минимально. На печать выдается сообщение:
Наикратчайшее расстояние от точки р3 до прямой р1-р2 =
10
Координаты точки р следующие:
x=5
y=7
z=4
Пример 1. Написать программу, которая бы случайным образом загадывала число от 1 до 100, и выводила это число в рабочее окно системы "Вектор".
Dim a '
определяем переменные
randomize
' включение генератора случайных чисел
a=int(rnd(1)*100+1) ' присваивание переменной (a)
случайного значения
krug.s a/10,a/10,0,0.1 ' отрисовка сучайных чисел (координаты
центра) окружностями
VBSMsg " Cлучайное число = " & a
Что бы произошло, если бы мы в начале программы не объявили переменную?
А ничего. Объявлять переменную нужна для того, чтобы она была
"видна" в других процедурах (sub, function).
Пример 2. На каком шаге угадаете наперед заданное число?
Для написание программы необходимо организовать:
- задание наперед заданного числа,
- цикла перебора чисел,
- выхода из программы при угадывании числа,
- вывода сообщений, на какой раз произошло угадывание.
При этом последовательность угадываемых чисел можно изображать окружностями,
координаты центров которых: абсцисса - номер итерации, ордината - значение
угадываемого числа.
' Итак на каком шаге "i" выпадет наперед заданное число "k"?
k = 23 ' наперед задаваемое число
' Организуем цикл
For i=1 To 150 Step 1
randomize
' включение генератора случайных чисел
a=int(rnd(1)*100+1) ' присваивание
переменной (a) случайного значения
krug.s i/10,a/10,0,0.1 ' отображаем
значение (a), где а - ординатой точки, i - абсцисса
if a = k Then exit For '
условие выхода
Next
' Вывод сообщений на экран
VBSMsg " число " & a & vbCrLf & "получено на шаге " &
i
О
перспективах программирования на VB /из
статьи Андрея Колесова
1997г./
Visual Basic сегодня стал полноправным инструментом
для профессионалов. Дискуссия о языках чаще
сводится к дилемме "Visual C++ или Delphi". А как же VB, превосходящий
по популярности в мире все остальные средства именно в профессиональной
сфере? Не говоря уже о том, что использование различных инструментов
в одном проекте является довольно заурядным явлением: одного для разработки
пользовательского интерфейса, второго — для создания расчетных модулей,
третьего — для обеспечения доступа к базам данных и т.д. Так было и двадцать
лет назад, но сегодня это стало особенно актуально в условиях компонентной
модели создания приложений. Проблемы разработки
уже давно переместились из области написания кодов в сферу умения использовать
средства макропрограммирования.
Да Delhpi является одним из лучших и элегантных средств разработки. Но лидерство VB на рынке определяется его массовостью, которая породила невиданный ранее рынок различных дополнений и расширений, в результате чего он становится фактически стандартом макроязыка для широкого круга бизнес-приложений. Разумеется, главным вопросом при выборе средства разработки является принципиальная возможность реализации на нем поставленной задачи.В этом плане весьма характерным является появление языка Java. Его технология, ориентирована больше на новые области применения и методы реализации (Internet, апплеты, байт-код и пр.) Однако областью применения Java являются отнюдь не только специальные области Internet — основной объем разработок смещается в область традиционных прикладных систем.
Как учат и как учить программированию
Наиболее характерным подходом было и остается обучение при принципу "что знаем, то и преподаем", не заботясь о вопросе, "а зачем это нужно". Сегодня программирование является частью проблемы компьютерного грамоты, а методика его преподавания должна поменяться самым решительным образом. Технология разработки программ: визуальное программирование, событийная логика программы, компонентная технология, использование макросредств и пр., должно коренным образом отразиться на методике обучения. А что же делается сейчас? Чаще вообще просто изучается теория языков? Но такая постановка вопроса напоминает известный анекдот о бассейне, который обещают наполнить водой, когда все научатся плавать. Классическая схема обучения программированию раньше выглядела следующим образом: сначала теоретическое изучение синтаксиса некоторого языка, а уже потом выполнение некоторых практических заданий. Сегодня же для написания первых программ для Windows вообще не нужно знать об особенностях языка — нужно понимать общую логику разработки приложения и уметь работать в среде инструмента. И только после этого можно переходить к изучению языка для "изысканного программирования". Какое средство разработки годится для решения подобной задачи? Ответ — Visual Basic. Во-первых, это позволит в максимальной степени абстрагироваться от языковых проблем. Во-вторых, — познакомиться со средой программирования, характерной для всех средств разработки Microsoft . Освоение же языка реально возможно только в ходе практической работе и самообучения. Для компьютерной отрасли, как наиболее динамично развивающейся сферы, как нигде актуальна основная цель образования — заложить основы для будущего обучения всю свою жизнь.