Category Archives: Программирование

МАТЛАБ

МАТЛАБ

Компьютерная система MATLAB разработана фирмой The Math Works Inc. и является мировым стандартом в области научных и технических расчетов. Ее алфавит содержит большое число функций, необходимых для работы с матрицами. Удобство применения системы для цифровой обработки сигналов объясняется тем, что отсчеты дискретизированного по времени сигнала могут быть представлены в виде одномерного массива (вектора), являющегося частным случаем матрицы.

Программирование в среде MATLAB очень напоминает программирование на Бейсике. Созданные программы хранятся в виде m-файлов, т.е. файлов с расширением .m.

Текстовые файлы, содержащие операторы MATLAB, могут быть двух типов: сценарии (script) и функции. Основное отличие их заключается в том, что функции могут принимать входные параметры и возвращать результаты вычислений, а программы-сценарии – нет. Кроме того, сценарии могут не иметь заголовка, а функции обязательно имеют заголовок function.

MATLAB может быть использован как мощный калькулятор для вычисления значений математических выражений. Например, если ввести выражение                                                           >> sqrt (cos (pi/12)^2+1),

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

ans=

1.3903

>>

(система готова к вводу новой информации).

Вектор-строка может быть задана перечислением в квадратных скобках элементов, разделенных пробелами или запятыми, например,

Х = [1 3 2 5 4],        Y = [2*3/5,  sqrt(10)],

или в виде       Z = 0 : 0.25 : 1.75,        W = 5 : 15 (шаг по умолчанию равен 1).

Слияние векторов X и Y записывается  в виде Р = [X Y].

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

X1 = X (2:4)          X1 = [3 2 5].

К векторам возможно применение функций из библиотеки MATLAB, например,

X*2,   exp(Y),  Z+W (вектора Z и W должны быть одного размера) и т.п.

Построение графиков осуществляется на основе оператора plot. Plot (Y) дает построение графика по данным вектора Y относительно его индексов.        Plot (X, Y) строит по точкам график функции y(x), где x и y – элементы векторов X и Y, plot (X1, Y1, X2, Y2) – графики двух функций y1(x1) и y2(x2) и т.д. Графики могут различаться цветом, типом линий, точек и др.

Оператор subplot(m,n,p) используется для вывода нескольких графиков в разных областях одного окна. Графическое окно разбивается на клетки в виде матрицы, имеющей m строк и n столбцов. P-я клетка становится текущей (нумерация клеток ведется по строкам). Например, по командам

t = 0 : 0.1 : 10;

subplot (3,2,5)

plot (t, sin(t))

графическое окно разбивается на 6 клеток (3х2) и график функции sin(t) строится в левой нижней (5-й) клетке.

 

АЛФАВИТ СИСТЕМЫ MATLAB

Комментарии к записи МАТЛАБ отключены

Filed under Программирование

VRML-скрипты

VRML-скрипты

 

  1. 7.     Сценарии

 

В этой главе мы рассмотрим использование сценариев в виртуальных мирах. Нашей целью в данный момент не является написание сценариев. Это придет позже. Сейчас мы посмотрим на то, как вставлять сценарии в VRML-файлы.

 

7.1. Узел Script

 

Узел сценариев является, быть может, самым важным из нововведений в VRML97 по сравнению со спецификацией VRML 1.0. Он наделяет ранее статичные миры практически неограниченным набором возможностей. В сущности, узел Script позволяет автору создавать свои собственные узлы с полями, входящими и исходящими событиями. Синтаксис узла Script таков:

Script {

exposedField MFString url     [ ]

field        SFBool directOutput FALSE

field        SFBool mustEvaluate FALSE

# And any number of:

eventIn     eventType eventName

field         fieldType fieldName initialValue

eventOut  eventType eventName

}

Итак, все сценарии имеют три общих основных поля – url, directOutput и mustEvaluate. Кроме того, они могут иметь любое число определенных пользователем полей, входящих и исходящих событий. Их определение весьма напоминает декларирование прототипа в утверждении PROTO. А именно они определяются при помощи ключевых слов field (поле),  eventIn (входящее событие) и eventOut (исходящее событие). Конкретный набор зависит от вашего желания. После ключевого слова определяется тип поля (события), например SFFloat, далее идет его название. В случае полей нужно также указать то значение, которое будет использоваться по умолчанию. Например:

Script {

eventIn SFBool input

field SFBool boolValue TRUE

eventOut SFBool output

url “filter.js”

}

В приведенном выше примере мы имеем по одному типу поля/события каждого вида. Там есть входящее событие input, исходящее событие output и одно поле с названием boolValue и значением по умолчанию TRUE. Указано также, что код сценария может быть найден в файле ” filter.js “.

Нужно отметить, что узел Script не может иметь открытых (exposed) полей.

 

7.2. Языки программирования

 

Сценарии в VRML можно определить одним из трех способов. Во-первых, можно использовать откомпилированный Java-код из файла с расширением .class, указанного в поле url. Во-вторых, можно использовать код на JavaScript из внешнего файла с расширением .js. Ну и в-третьих, можно включать код на языке JavaScript непосредственно в поле url. Последнее делается так:

url “javascript:

function input(value, time) {

if (value==boolValue) output = value;

}

Итак, встроенный код включается в файл при помощи ссылки “javascript:”, сопровождаемой непосредственно кодом. Это очень удобно для коротких кусочков кода или же кода, только единожды встречающегося на протяжение всего мира. Если один и тот же фрагмент кода используется в нескольких сценариях, разумнее поместить его в отдельный файл.

Кстати, в поле url возможно сочетание ссылки на сценарий со встроенным кодом:

Script {

url [“http://foo.com/myScript.js”,

“javascript:

Комментарии к записи VRML-скрипты отключены

Filed under Программирование

Поиск с вставкой по дереву

Поиск с вставкой по дереву

Алгоритм Т. (Поиск с вставкой по дереву.)

Дана таблица запи­сей, образующих бинарное дерево.

Производится поиск задан­ного аргумента К.

Если его нет в таблице, то в подходящем месте в дерево вставляется новый узел, содержащий К.

Предполагается, что узлы дерева содержат по крайней мере следующие поля:

КЕY(Р) = ключ, хранящийся в узле NODE(P);

LLINK(P) = указатель на левое поддерево узла NODE(P);

RLINK(P) = указатель на правое поддерево узла NODE(P).

Пустые поддеревья представляются пустыми указателями Л. Переменная ROOT указывает на корень дерева. Для удобства предполагается, что дерево не пусто

(ROOT != Л), так как при ROOT = Л операции  становятся  три­виальными.

Т1. [Начальная установка.] Установить Р = ROOT. (Указатель Р будет продвигаться вниз по дереву.) ,

Т2. [Сравнение.] Если К < KEY(P), то перейти на ТЗ;

если K>KEY(P), то перейти на Т4;

если K=KEY(P), поиск завершен удачно.

ТЗ. [Шаг влево.] Если LLINK(P) != Л, установить Р = LLINK(P) и вернуться на Т2.

В противном случае перейти на Т5.

Т4. [Шаг вправо.] Если RLINK(P) != Л, установить Р  = RLINK(P) и вернуться на Т2.

Т5, [Вставка в дерево.]  (Поиск  неудачен; теперь мы поместим К в дерево.)

Выполнить  Q = AVAIL;   Q  теперь указывает на   новый   узел.    Установить   KEY(Q)  = K,   LLINK(Q) = RLINK(Q) = Л. (На самом деле нужно произвести началь-, ную установку и других полей нового узла.) Если К было меньше   KEY(P),  установить LLINK(P) = Q;   в   противном случае установить RLINK(P) = Q. (В этот момент мы могли бы присвоить Р = Q и удачно завершить работу алгоритма.).

Комментарии к записи Поиск с вставкой по дереву отключены

Filed under Программирование

Введение в VBA

Введение в VBA

Литература

 

  1. Т.О.Брайен, С.Подж, Дж.Уайт . Microsoft Access 97: Разработка приложений: пер. с англ.        СПб.: БХВ – Санкт-Петербург, 1999. – 640 с.
  1. А.Гарнаев  Самоучитель VBA Технология создания пользовательских приложений bhv 1999
  2. Ю Бекаревич, Н Пушкина Самоучитель ACCESS 20002.
  3. А. Гарнаев, А. Матросов, Ф. Новиков, Г. Усаров, И. Харитонова. Microsoft Office 2000: Разработка приложений. .        СПб.: БХВ – Санкт-Петербург, 2000. – 656 с.
  4. С.Браун. Visual Basic 6: учебный курс – СПб: ЗАО “Издательство ‘Питер’ “, 1999, 576с.
  5. Ананьев А.И., Федоров А.Ф. Самоучитель Visual Basic 6.0. – СПб.: БХВ – Санкт-Петербург, 2000.- 624 с.
  6. Евангелос Петрусос. Visual Basic 6, т.1 и т.2. Руководство разработчика: “Ирина”, BHV, Киев, 2000.

 

 

Общие сведения о VBA

VBA – это версия визуального средства для создания приложений. VBA является объектно-ориентированным языком программирования. Ключевой идеей объектно-ориентированного программирования является объединение данных и используемых для их обработки функций в один объект.

 

Основные особенности VBA

  • Наличие объектов (таблицы, формы, запросы и пр.). Можно сказать, что объект – это то, чем мы управляем с помощью программы на VBA. При конструировании объектов используются более мелкие объекты – элементы управления (кнопки, поля, надписи на форме и пр.). С другой стороны объекты объединяются в более крупные объекты – семейства (семейство полей таблицы, семейство таблиц БД и пр.). Таким образом семейство может состоять из объектов, а объект может содержать семейство.
  • Все объекты имеют сохраняемый набор свойств (характеристик), изменяя которые можно управлять объектом. Ссылка на свойство объекта дается в программе в виде

<имя объекта>.<свойство> = значение свойства

Например, сделать надпись на кнопке можно, присвоив соответствующее значение свойству  Заголовок (Caption)  для кнопки:

 

[Имя кнопки].Сaption = “Редактировать

Переименовать рабочий лист

Worksheets(1).Name=”Итоги

Сделать лист невидимым

Workshets(2).Visible=False

Изменить подпись приложения

Application.Caption=”Пример

 

  • С каждым объектом связывается ряд методов (действий или процедур над объектом).  Один и тот же метод может использоваться для обработки различных объектов. Указание метода в программе дается в виде

<имя объекта>.<метод>

WorkSheets(10).Add

WorkSheet(3).Delete

WorkSheets(1).Rows(3).Delete

 

  • Программа на

Комментарии к записи Введение в VBA отключены

Filed under Программирование

Вопросы к зачету по курсу “Цифровая обработка сигналов”

Вопросы к зачету по курсу “Цифровая обработка сигналов”

  1. В каких формах может быть задан сигнал?
  2. Как изменяется спектр непрерывного сигнала после его дискретизации?
  3. Что такое импульсная характеристика дискретной системы и как она может быть получена?
  4. Что позволяет вычислить свертка?
  5. Какая система является устойчивой? Условие устойчивости.
  6. Какая система является физически реализуемой?
  7. Что такое частотная характеристика?
  8. Физический смысл амплитудно-частотной и фазочастотной характеристик?
  9. Как можно вычислить передаточную функцию?
  10. Схема цифрового фильтра.
  11. Разностное уравнение.
  12. Как определяется порядок цифрового фильтра?
  13. Рекурсивный и нерекурсивный фильтры.
  14. Классификация фильтров по форме идеальной импульсной характеристики.
  15. Классификация фильтров по форме реальной импульсной характеристики.
  16. Связь непрерывного и дискретного преобразований Фурье.
  17. Количество операций умножения при ДПФ и БПФ.
  18. Вычисление прямой и быстрой свертки.
  19. Классификация методов синтеза цифровых фильтров.
  20. Методы квантования чисел.

Комментарии к записи Вопросы к зачету по курсу “Цифровая обработка сигналов” отключены

Filed under Программирование

Вопросы к экзамену по курсу “ИНФОРМАТИКА”

Вопросы к экзамену по курсу “ИНФОРМАТИКА”

1. Имена переменных. Типы и размеры данных. Описания переменных.

2. Константы. Символьная константа. Константное выражение.

Строчная константа.

3. Арифметические операции. Операции отношения и

логические операции.

4. Преобразование типов.

5. Операции увеличения и уменьшения. Побитовые операции.

6. Операции и выражения присваивания. Условные выражения.

7. Старшинство операций и порядок вычисления.

8. Операторы и блоки. Операторы if – else , else – if.

9. Переключатель и оператор break.

10. Циклы с предусловием – while и for.

11. Цикл do – while. Оператор continue. Оператор goto и метки.

12. Функции и структура программы. Основные сведения.

Функции, возвращающие нецелые значения.

13. Внешние переменные. Правила, определяющие область действия.

14. Статические переменные. Регистровые переменные.

Блочная структура. Инициализация переменных.

15. Препроцессор языка “C”. Включение файлов. Mакроподстановка.

16. Препроцессор языка “C”. Директивы условной трансляции.

17. Указатели и адреса. Указатели и аргументы функций.

18. Указатели и массивы. Адресная арифметика.

19. Указатели символов и функции.

20. Многомерные массивы. Массивы указателей; указатели указателей.

21. Командная строка аргументов. Указатели на функции.

22. Структуры. Основные сведения. Структуры и функции.

Объединения. Битовые поля.

23. Указатели на структуры. Структуры, ссылающиеся на себя.

Динамические структуры данных.

24. Доступ к файлам. Функции fopen и fclose.

25. Доступ к файлам, посимвольный и построчный ввод/вывод.

26. Доступ к файлам, двоичный ввод/вывод, функции fread и fwrite.

 

Комментарии к записи Вопросы к экзамену по курсу “ИНФОРМАТИКА” отключены

Filed under Программирование

Двумерные массивы. ЛР 9

Двумерные массивы. ЛР 9


  1. Найти среднее значение элементов в каждом столбце двумерного массива и
    записать результаты в одномерный массив
  2. Найти минимальный элемент в каждой строке двумерного массива и записать
    результаты в одномерный массив
  3.  Найти минимальный элемент в каждом столбце двумерного массива и записать результаты в одномерный массив
  4. Найти максимальный элемент в каждом столбце двумерного массива и записать
    результаты в одномерный массив
  5. Найти максимальный элемент в каждой строке двумерного массива и записать
    результаты в одномерный массив
  6. Найти среднее значение элементов в каждом столбце двумерного массива и
    записать результаты в одномерный массив
  7. В двумерном массиве поменять местами строки: первую с последней вторую с предпоследней и т.д.

8.   В двумерном массиве поменять местами столбцы:
первый с последним

второй с предпоследним и т.д.

  1. В двумерном массиве поменять местами четные и нечетные строки. Количество
    строк четно.
  2. В двумерном массиве поменять местами четные и нечетные столбцы. Количество
    строк четно

 

11. В двумерном массиве в каждой строке выполнить циклический сдвиг вправо на 1
разряд.

12. В двумерном массиве в каждой строке выполнить циклический сдвиг влево на 1
разряд.

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

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

 

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

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

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

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

19. . Найти среднее значение элементов в каждом столбце двумерного массива      и записать результаты в одномерный массив

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

21. Найти минимальный элемент в каждом столбце двумерного массива и записать
результаты в одномерный массив

22. Найти максимальный элемент в каждом столбце двумерного массива и записать
результаты в одномерный массив

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

24. Найти среднее значение элементов в каждом столбце двумерного массива и
записать результаты в одномерный массив

 

Комментарии к записи Двумерные массивы. ЛР 9 отключены

Filed under Программирование

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

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

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

 

Понятие полиморфизма является очень важным в объектно-ориентированном программировании. В приложении к языку C++ полиморфизм это термин, используемый для описания процесса, при котором различные реализации функций могут быть доступны с использованием одного имени. По этой причине полиморфизм иногда характеризуется одной фразой – «один интерфейс, много методов». Это означает, что основной класс операций может быть оформлен в одном стиле, хотя конкретные действии могут быть различны.

В C++ полиморфизм поддерживается и во время компиляции, и во время выполнения программы. Перегрузка функции и операций – это пример полиморфизма во время компиляции. Но в С++ поддерживается полиморфизм и во время выполнения программы. Эта достигается использованием указателей на базовые классы и виртуальных функций.

 

Указатели на производные типы

 

Указатели на базовый тип и на производный тип зависимы. Пусть имеем базовый тип B_class и производный от B_class тип D_class. В языке С++ всякий указатель, объявленный как указатель на B_class, может быть также указателем на D_class:

 

B_class *р;       // указатель на объект типа B_class

B_class B_ob; // объект типа B_class

D_class D_ob; // объект типа D_class

 

После этого можно использовать следующие операции:

p=&B_ob; // Указатель на объект типа B_class

p=&D_ob; // Указатель на объект типа D_class

 

Все элементы класса D_class, наследуемые от класса B_class, могут быть доступны через использование указателя р. Однако на элементы, объявленные в D_class, нельзя ссылаться, используя р. Если требуется иметь доступ к элементам, объявленным в производном классе, используя указатель на базовый класс, надо привести его к указателю на производный тип.

Например, можно сделать так:

((D_class *)p) -> f();

Здесь функция f() – член класса D_class. Внешние круглые скобки необходимы. Хотя указатель на базовый класс может быть использован как указатель на производный класс, обратное неверно: нельзя использовать указатель на производный класс для присваивания ему адреса объекта базового класса. И наконец, указатель увеличивается и уменьшается при операциях ++ и — относительно его базового типа. Когда указатель на базовый класс указывает на производный класс, увеличение указателя не делает его указывающим на следующий элемент производного класса.

Рассмотрим пример (ex24) использования указателей на базовый класс. При этом каждый класс будет содержать функцию void show(void), свою в каждом классе.

 

// Использование указателя на базовый класс

 

#include <stdio.

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

Filed under Программирование

Ключевое слово this

Ключевое слово this

Ключевое слово this

 

При вызове функции – члена класса передается еще один неявный параметр – указатель на объект класса, который вызывает данную функцию. Этот указатель называется this.

Ключевое слово this используется, в частности, при перегрузке операций.

Как известно, функции-члены класса могут иметь доступ к private-членам их класса. Например,

 

class cl

{

int i;

}

 

Для данного класса функция – член класса может иметь оператор присваивания i=10. В действительности этот оператор является короткой записью оператора

 

this ->i=10;

 

Чтобы понять, как указатель this работает, рассмотрим следующую короткую программу:

 

// Ex17. Использование указателя this

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

 

class cl

{

int i;

public:

void load_i (int val)

{

this->i = val;

}

int get_i (void)

{

return this->i;

}

};

 

void main (void)

{

cl c;

 

c.load_i(100);

cout << c.get_i();

 

getch();

}

 

 

 

 

 

Перегрузка операций

 

За небольшим исключением большинству операций языка C++ может придано специальное значение относительно вновь определенных классов. Для встроенных типов данных значение операции изменить нельзя. Например, класс, который определяет список указателей, может использовать операцию + для добавления объекта в список. Когда операция перегружена, ни одно из ее исходных значений не теряется. Просто вводится новая операция относительно нового конкретного класса.

Чтобы перегрузить операцию, надо определить, что эта операция значит относительно класса, к которому она будет применяться. Для этого задается специальная функция операции (operator function), которая определяет действие этой операции.

 

Основная форма записи функции-операции, являющейся функцией – членом класса:

 

Тип_возвр_знач имя_класса::operator # (список аргументов)

{

// операторы, определяющие действие

}

 

# – конкретный знак операции, Часто возвращаемое значение имеет тот же тип, что и класс, хотя возможен и другой тип этого значения. Функция операции должна быть или членом класса или дружественной функцией. Небольшие отличия в случае члена класса или дружественной функции имеются.

Рассмотрим на примере, как реализуется перегрузка операций. Рассмотрим программу, которая перегружает операции + и = относительно класса vectог. Класс vector определяет трехмерный вектор в евклидовом пространстве. Операция сложения двух векторов выполняется как сложение соответствующих координат:

 

// Ex 18. Перегрузка операций + и =

 

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

 

class vector

{

int x, y, z;

public:

vector operator+ (vector t);

vector operator= (vector t);

void show(void);

void assign (int mx, int my, int mz);

};

 

vector vector::operator+ (vector t)

{

vector temp;

 

temp.x = x + t.x;

temp.y = y + t.y;

temp.

Комментарии к записи Ключевое слово this отключены

Filed under Программирование

Основные конструкции VBA

Основные конструкции VBA

Задание 1

Для произвольного целого трёхзначного числа вывести значение логической переменной TRUE, если 1 и 3 цифры совпадают и FALSE – иначе

Задание 2

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

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

Задание 3

Создать процедуру-функцию, возвращающую название дня недели по его порядковому номеру. Заполнить на листе Excel столбец с датами и вызвать созданную процедуру-функцию для вывода дня недели. (Weekday(date, [firstdayofweek] –возвращает порядковый номер дня недели, WeekdayName(weekday, abbreviate, firstdayofweek) – возвращает название дня недели)

Задание 4

По введённому символу X вывести символ Y, симметричный относительно центра алфавита (латинского)

Ввести

X    

Вывести

Y        
A B C                 X Y Z
1 2 3       13 14           26

Кодирование символа оформить процедурой.

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

Задание 5

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

Задание 6

Используя диалоговое окно InputBox ввести фамилию. Если поле ввода осталось пустым или введено число, то вывести сообщение “Повторите ввод” и вернуться в окно ввода

Задание 7

Вывести в диалоговом окне MsgBox сообщение: “Продолжить работу? ”

ü Если пользователь нажал кнопку ДА, то продолжить работу

ü Если пользователь нажал кнопку НЕТ, то вывести сообщение “Завершение работы в MS Excel” и

  • если пользователь нажал кнопку CANCEL выйти из процедуры
  • иначе закрыть приложение(Application.Quit).

Задание 8

Комментарии к записи Основные конструкции VBA отключены

Filed under Программирование

Заполнение массива элементами можно производить следующими способами

Заполнение массива элементами можно производить следующими способами

Массив есть множество однотипных элементов, имеющих одинаковое имя и отличающихся своим положением.

Положение элемента в масиве задаётся идексом.

Статические массивы.

Dim Имя(N) As <тип элементов >    ,где N     -максимальное значение индекса

Dim Имя(N,M) As <тип данных >    ,где N –максималььное количество строк,

M – максимальное количество столбцов

 

 

Dim A(12) As Integer

или   Static A(12) As Integer

определяет элементы A(0), A(1), A(2)……..A(12)

Dim B(3,3) As Integer

определяет элементы B(0,0), B(0,1), B(0,2), B(0,3),B(1,0), B(1,1) …. B(3,3)

Dim C(1 To 10)

определяет элементы C(0), C (1), C (2)…….. C (12)

 

Dim D(1 To 3, 1 To 3)

определяет элементы D(1,1), B(1,2), B(1,3), B(2,1),B(2,2), …. B(3,3)

 

 

Заполнение массива элементами можно производить следующими способами

 

1 Оператором присваивания

 

Dim Фрукты(3) As String

‘ Здесь 3 – максимальный номер элемента

Фрукты(0)=“Яблоки”

Фрукты(1)=“Груши”

Фрукты(2)=“Ананасы”

Фрукты(3)=“Персики”

 

 

2 В цикле

 

Dim I As Integer

Dim N(3) As Integer

Randomize

 

For I= 0 To 3

 

N(I)=Int(Rnd*10+1)

Next I

 

 

Динамические массивы.

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

По умолчанию, когда изменяется размер массива, все его элементы удаляются. Если необходимо оставить текущие значения элементов массива, то нужно использовать ключевое слово  Preserve  с оператором  Redim, что и сделано в этом примере.

 

Dim Фрукты () As String

Redim Фрукты (3)

Фрукты(0)=“Яблоки”

Фрукты(1)=“Груши”

Фрукты(2)=“Ананасы”

Фрукты(3)=“Персики”

Redim  Preserve Фрукты (4)

Фрукты (4)=“Сливы”

Для освобождения памяти, занимаемой динамическим массивом, можно использовать инструкцию  Erase

 

Заполнение динамического массива с помощью функции Array:

 

Dim Фрукты(3) As String

 

‘ Здесь 3 – максимальный номер элемента

Фрукты=Array(“Яблоки”, “Груши”, “Сливы”, “Ананасы”)


Задание

 

Создайте в Excel форму

 

 

Private Sub CmdButton2_Click()

With LstBox1

‘Заполнение списка прм помощи массива

.List = Array(1, 5, 6, 3, 13, 14, 8, 7, 2, 9, 4, 10, 15, 11, 12)

‘Ширина колонки

.ColumnWidths = 1

‘Режим выбора нескольких элементов из списка

.MultiSelect = fmMultiSelectMulti

End With

End Sub

 

‘поиск максимума

Private Sub CmdButton3_Click()

Dim I As Integer, Max As Integer

‘свойство List(Index)возвращает или задаёт

‘элемент списка с указанным индексом

‘первый элемент имеет индеск 0

Max = LstBox1.List(0)

‘свойство ListCount

‘возвращает число элементов списка ListBox

For I = 1 To LstBox1.ListCount – 1

If Max < LstBox1.List(I) Then Max = LstBox1.List(I)

Next I

TxtBox1.Value = Max

End Sub

 

‘сумма элементов списка

Private Sub CmdButton4_Click()

Dim I As Integer, Sum As Integer

Sum = 0

For I = 0 To LstBox1.ListCount –

Комментарии к записи Заполнение массива элементами можно производить следующими способами отключены

Filed under Программирование

Задания по программированию. Строки

Задача № I.         Написать функцию, удаляющую самое длинное слово в символьной строке.

Задача № 2.         Написать функцию, удаляющую в символьной строке все слова, начинающиеся и заканчивающиеся на одну и ту же букву.

Задача № 3.         Написать функцию, удаляющую в символьной строке все слова, не содержащие гласных букв.

Задача № 4.         Написать функцию, удаляющую в символьной строке все слова заданной длины.

Задача № 5.         Написать функцию, заменяющую в символьной строке подряд идущие пробелы на один пробел.

Задача № 6.         Написать функцию, удаляющую в символьной строке слова, состоящие только из разных букв.

Задача № 7.         Написать функцию, меняющую в символьной строке порядок слов на зеркальный.

Задача № 8.         Написать функцию, вычисляющую среднюю длину слова в символьной строке.

Задача № 9.         Написать функцию, определяющую самую популярную букву в символьной строке.

Задача № 10.       Написать функцию, удаляющую слово, находящееся в середине символьной                    строки.

Задача № 11.       Написать функцию, заменяющую буквосочетание ‘тчк’ на символ ‘.’.

Задача №12.        Написать функцию, меняющую в символьной строке каждое слово на его зеркальное  отражение.

Задача № 13.        Написать функцию, удаляющую предпоследнее слово в символьной строке.

Задача № 14.       Написать функцию, удаляющую в символьной строке слова, содержащие  больше чем одну гласную букву.

Задача № 15.       Написать функцию, которая заменит в символьной строке все слова длиннее, чем 5  букв на первые 4 буквы и точку.

Задача № 16.       Написать функцию, которая в символьной строке удалит каждое второе слово.

Задача № 17.       Написать функцию, которая в символьной строке удалит слова,              заканчивающиеся  на гласную букву.

Задача № 18.        Написать функцию, которая в символьной строке удалит слова, содержащие две  подряд идущие одинаковые буквы.

Задача № 19.        Написать функцию, которая в символьной строке удалит последние три буквы   каждого слова.

Задача № 20.        Написать функцию, которая в самом длинном слове символьной строки удалит

Комментарии к записи Задания по программированию. Строки отключены

Filed under Программирование

Задачи на VBA к экзамену

  1. Заполнение списка элементами:

a)      вводимыми в диалоге,

b)      сформированными датчиком случайных чисел,

c)      вводимыми с помощью функции Array.

  1. То же для поля со списком.
  2. Очистка списка или поля со списком. Удаление из списка или из поля со списком выделенных элементов.
  3. Сортировка одномерного массива любым способом. Размер массива задавать в диалоге. Вывод исходного и отсортированного массива осуществлять в одно стандартное окно вывода (в окно отладки программ).
  4. Перестановка столбцов (строк) двумерного массива.
  5. Программная защита листов рабочей книги Excel и снятие защиты.
  6. Программный способ скрытия и отображения листов рабочей книги Excel.
  7. Реализацию операций сложения, вычитания и умножения выполнить с помощью группы переключателей на форме. Операнды вводить и результат операции отображать с использованием текстовых полей. Осуществить контроль типов вводимых операндов.
  8. То же, но вместо группы переключателей использовать флажки.
  9. Открытие формы по паролю.
  10. Переименование листов рабочей книги Excel.
  11. Перенос выделенных элементов из одного списка в другой.
  12. Добавление строки в таблицу с данными, расположенными на одном из листов рабочей книги Excel. Удаление строки из таблицы. Номер удаляемой строки вводить в диалоге.
  13. Создать форму, на которую нанести несколько различных элементов (текстовых полей, надписей, кнопок, рисунков). Нанести на форму еще две кнопки, на одной из которых написать «видимые», на другой – «невидимые». По кнопке «видимые» сделать видимыми все остальные элементы на форме (кроме кнопок «видимые» и «невидимые»). По кнопке «невидимые» сделать невидимыми все остальные элементы на форме (кроме кнопок «видимые» и «невидимые»).

 

Комментарии к записи Задачи на VBA к экзамену отключены

Filed under Программирование

Системный анализ

Системный анализ

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

Действующим элементом, производящим выбор, является лицо принимающее решение (ЛПР) (в качестве ЛПР) может выступать группа лиц), что определяет субъективизм решения задачи.

Допустим, что ЛПР имеет обобщенное представление об альтернативах, достаточное для выбора наиболее предпочтительной. Такая простая задача не является предметом рассмотрения теории принятия решений. В теории рассматривается такая проблемная ситуация, которая требует анализа альтернатив с разных точек зрения. При этом оценка качества альтернатив требует определения набора характеристик, способа их оценки, методов сведения показателей в единое целое. Основным источником информации для оценки альтернатив являются экспер-ты-специалисты в данной области. В отличии от ЛПР эксперты не несут ответственность за принимаемое решение.

Разнообразие методов принятия решений, использование вычисли-тельных средств часто делает необходимым привлечение еще одного специалиста, который выступает в роли консультанта по методам принятия решений и их программной поддержке. Таким образом, в общем случае, определяются функциональные обязанности для трех лиц, участвующих в процессе решения задачи: ЛПР, эксперта и консультанта.

Относительно любой пары альтернатив (х,y) может быть справедливо одно из следующих утверждений:

  • x и y несравнимы;
  • x предпочтительнее y ();
  • у предпочтительнее х ();
  • x и y эквимлентны (~).

Попарное сравнение, выполненное для всех элементов множества

альтернатив X, формально может быть описано с помощью бинарного
отношения.

Бинарным отношением R на множестве Х называется множество

упорядоченных пар (x,y), где  (R является подмножеством декартового произведения X × Х ). Если , то будем пи-

писать х R у и говорить, что х находится в отношении R с y

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

всех возможных пар X  × Х:

— перечисление всех пар, входящих в R;

— матрица отношения А(R), элемент которой aij = 1, если
пара i , xj )ÎR и равен 0 в противном случае;

— граф отношения G(R) = (X,U), вершинам которого поставлены во взаимно однозначное соответствие элементы

Комментарии к записи Системный анализ отключены

Filed under Программирование

Организация таблиц символов

Организация таблиц символов

Организация таблиц символов

 

В данном документе рассматриваются способы организации, построе­ния и поиска в таблице символов. Останавливаясь на организа­ции таблиц вообще, мы обратим особое внимание на нашу конкрет­ную проблему — проблему организации таблиц символов.

 

 1. ВВЕДЕНИЕ   В ОРГАНИЗАЦИЮ ТАБЛИЦ

 

Таблицы всех типов имеют общий вид ( таблица меток, таблица литералов, таблица имен макроопределений , таблица машинных операций )

 

 

 

где слева перечисляются аргументы, а справа — соответствующие значения. Каждый элемент обычно занимает в машине более одного байта. Если элемент занимает k байт и нужно хранить N элементов, то необходимо иметь k*N байт памяти. Расположить информацию можно двумя способами:

1.  Каждый элемент поместить в k последовательных байт и иметь таблицу из k*N байт.

2.  Иметь k таблиц, скажем, Tl, T2, . . . , Tk, каждая из N байт. Весь i-й элемент при этом будет находиться в байтах Т1[i], . . . , Tk[i],.

 

Вопрос выбора между этими двумя методами — это только во­прос удобства программирования.

В нашем частном случае аргументами таблицы являются сим­волы или идентификаторы, а значениями — их характеристики. Так как число литер в идентификаторе непостоянно, в аргументе часто помещают вместо самого идентификатора указатель на иден­тификатор. Это сохраняет фиксированным размер аргумента.

 

Рис. 1. Два способа запоминания аргументов.

 

Идентификаторы хранятся в специальном списке строк. Число литер в каждом идентификаторе может храниться как часть аргумента или в списке идентификаторов прямо перед идентификатором. На рис. 9.1 показаны оба способа на примере таблицы, содержащей элементы для идентификаторов I, МАХ и J.

Когда компилятор( ассемблер ) начинает трансляцию исходной программы, таблица символов пуста или содержит только несколько элементов для служебных слов и стандартных функций. В процессе компи­ляции для каждого нового идентификатора элемент добавляется только один раз, но поиск ведется всякий раз, когда встречается этот идентификатор. Так как на этот процесс уходит много времени при компиляции, важно выбрать такую организацию таблиц, кото­рая допускала бы эффективный поиск.

Желательно сравнить различные методы работы с таблицами по времени поиска. Мы будем проводить сравнение в терминах ожидаемого числа Е сравнений аргументов, которые нужно выпол­нить, чтобы найти данный символ. Это число, зависящее от коэф­фициента загрузки lf (load factor) таблицы в данный момент, пред­ставляет собой отношение текущего числа элементов n к максималь­но возможному числу элементов N:

 

lf = n/N.

 

Простейший способ организации таблицы состоит в том, чтобы, добавлять элементы для

Комментарии к записи Организация таблиц символов отключены

Filed under Программирование

Основные понятия объектно-ориентированного программирования

Основные понятия объектно-ориентированного программирования

Основные понятия объектно-ориентированного программирования

Объект (Object) – объединение данных и процедур их обработки в единое целое. Все визуальные объекты, такие как листы, ячейки, формы, кнопки и т.п. являются объектами VBA.

Класс (Class) – описание однотипных объектов. Класс определяет имя объекта, свойства объекта и методы (действия), выполняемые над объектом. Конкретный объект есть экземпляр класса.

Семейство (Collection) – набор однотипных объектов одного класса. Существует другое название семейства  – коллекция. Само семейство является объектом. Каждый элемент семейства нумеруется и может быть идентифицирован по номеру или имени

Пример

Application.ActiveWorkbook.Worksheets(1) – первый лист в активной книге

Application.Wоrkbooks(“Заказ.xls”).Worksheets(“Клиенты”) – лист “Клиенты” в рабочей книге “Заказ”

Все объекты имеют фиксированный набор свойств и методов.

Свойства (Properties) – множество характеристик объекта. Изменяя значение свойства можно управлять объектом.

Ссылка на свойство ИмяОбъекта.Свойство

Пример

Application.ActiveWorkbook.Worksheets(1).Caption = “Клиенты”

Worksheets(“Клиенты“).Range(“A2″).Value = “Фамилия”

Метод – действие, совершаемое над объектом. Один и тот же метод можно применять ко всем объектам семейства.

Вызов метода ИмяОбъекта.Метод

Пример

Range(“A2:C3″).Clear – очистить диапазон A2:C3

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

Реакцией объекта на событие является процедура обработки события.

 

Модель объектов приложения Excel

 

 

Обращение к объектам

Существуют три способа указания объектов.

  1. Указание полного имени
  2. Сокращённые ссылки
  3. Объектные переменные

Методы указания ссылок

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

  1. Ссылка по имени
  2. Ссылка по аргументу
  3. Ссылка по индексу.

Правила создания ссылок

  1. Для разделения имён объектов ставится точка
  2. Для разделения имени семейства и имени объекта в семействе ставится восклицательный знак !
  3. При сокращении ссылки (имена семейств опускаются) между именами объектов, входящих в семейство используется восклицательный знак !

1       Указание полного пути

A     Ссылка по имени

Application.Worksheets!Клиенты.Range(“Итого”).Formula = “=C2+C3+C4″

B      Ссылка по аргументу

Application.Worksheets(“Клиенты”).Range(“A3″).Value = “Петров”

C     Ссылка по индексу

Application.Worksheets(1).Cells(4, 1).Value = “Озеров”

UserForms(0).Controls(2).Value = 15

При использовании

Комментарии к записи Основные понятия объектно-ориентированного программирования отключены

Filed under Программирование

Общие сведения о VBA

Общие сведения о VBA

Общие сведения о VBA

Язык BASIC был разработан в 1963-1964 гг. в Дартмутском колледже (США) по заказу General Electronic. Название языка есть аббревиатура от слов Beginner`s All-purpose Symbolic Instruction Code, предназначен для решения вычислительных задач в режиме диалога. Реализован как интерпретатор.

1975 г. Фирма Digital Equipment Corporation разработала версию языка Basic+, содержащую практически все элементы современного языка программирования.

1991г.появился Visual Basic (VB), включающий в себя:

—        Средства визуального проектирования

—        Элементы объектно-ориентированного программирования.

С появлением MS Office VB стал языком разработки макроопределений. Появились новые версии WordBasic, ExcelBasic, AccessBasic и др. VBA (Visual Basic for Application)

VBA – это версия визуального средства для создания приложений. VBA является объектно-ориентированным языком программирования. Ключевой идеей объектно-ориентированного программирования является объединение данных и используемых для их обработки функций в один объект.

Основные особенности VBA

  • Наличие объектов (таблицы, формы, книги, рабочие листы и т.п.). Можно сказать, что объект – это то, чем мы управляем с помощью программы на VBA. При конструировании объектов используются более мелкие объекты – элементы управления (кнопки, поля, надписи на форме и пр.). С другой стороны объекты объединяются в более крупные объекты – семейства (семейство полей таблицы, семейство таблиц БД и пр.). Таким образом, семейство может состоять из объектов, а объект может содержать семейство.
  • Все объекты имеют сохраняемый набор свойств (характеристик), изменяя которые можно управлять объектом. Ссылка на свойство объекта дается в программе в виде

<имя объекта>.<свойство> = значение свойства

Например, сделать надпись на кнопке можно, присвоив соответствующее значение свойству  Заголовок (Caption)  для кнопки:

[Имя кнопки].Сaption = “Редактировать

Переименовать рабочий лист

Worksheets(1).Name=”Итоги “

Сделать лист невидимым

Workshets(2).Visible=False

Изменить подпись приложения

Application.Caption=”Пример

  • С каждым объектом связывается ряд методов (действий или процедур над объектом). Один и тот же метод может использоваться для обработки различных объектов.

Указание метода в программе дается в виде

<имя объекта>.<метод>

WorkSheets(10).Add

WorkSheet(3).Delete

WorkSheets(1).Rows(3).Delete

  • Важнейшим понятием ООП является класс. Класс

Комментарии к записи Общие сведения о VBA отключены

Filed under Программирование

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

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

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

 

Понятие полиморфизма является очень важным в объектно-ориентированном программировании. В приложении к языку C++ полиморфизм это термин, используемый для описания процесса, при котором различные реализации функций могут быть доступны с использованием одного имени. По этой причине полиморфизм иногда характеризуется одной фразой – «один интерфейс, много методов». Это означает, что основной класс операций может быть оформлен в одном стиле, хотя конкретные действии могут быть различны.

В C++ полиморфизм поддерживается и во время компиляции, и во время выполнения программы. Перегрузка функции и операций – это пример полиморфизма во время компиляции. Но в С++ поддерживается полиморфизм и во время выполнения программы. Эта достигается использованием указателей на базовые классы и виртуальных функций.

 

Указатели на производные типы

 

Указатели на базовый тип и на производный тип зависимы. Пусть имеем базовый тип B_class и производный от B_class тип D_class. В языке С++ всякий указатель, объявленный как указатель на B_class, может быть также указателем на D_class:

 

B_class *р;       // указатель на объект типа B_class

B_class B_ob; // объект типа B_class

D_class D_ob; // объект типа D_class

 

После этого можно использовать следующие операции:

p=&B_ob; // Указатель на объект типа B_class

p=&D_ob; // Указатель на объект типа D_class

 

Все элементы класса D_class, наследуемые от класса B_class, могут быть доступны через использование указателя р. Однако на элементы, объявленные в D_class, нельзя ссылаться, используя р. Если требуется иметь доступ к элементам, объявленным в производном классе, используя указатель на базовый класс, надо привести его к указателю на производный тип.

Например, можно сделать так:

((D_class *)p) -> f();

Здесь функция f() – член класса D_class. Внешние круглые скобки необходимы. Хотя указатель на базовый класс может быть использован как указатель на производный класс, обратное неверно: нельзя использовать указатель на производный класс для присваивания ему адреса объекта базового класса. И наконец, указатель увеличивается и уменьшается при операциях ++ и — относительно его базового типа. Когда указатель на базовый класс указывает на производный класс, увеличение указателя не делает его указывающим на следующий элемент производного класса.

Рассмотрим пример (ex24) использования указателей на базовый класс. При этом каждый класс будет содержать функцию void show(void), свою в каждом классе.

 

// Использование указателя на базовый класс

 

#include <stdio.

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

Filed under Программирование

Простые геометрические формы, трансформация и внешний вид

Простые геометрические формы, трансформация и внешний вид

1. Узел Shape  (Форма)

Простые объекты добавляются к сцене с помощью узла Shape.

Синтаксис узла:

 

Shape {

exposedField    SFNode          appearance      NULL

# представление геометрической формы опаределяет узел appearance

exposedField    SFNode          geometry                NULL

# саму геометрическую форму определяет одиночный узел с именем geometry

}

 

Пример (файл 1-0.wrl): создаётся куб с размерами и цветом/прозрачностью по умолчанию:

 

#VRML V2.0 utf8

 

Shape {

appearance Appearance {

material Material {

}

}

geometry Box {

}

}

 

В узле Shape необходимо использовать узлы appearance и geometry, которые описывают соответственно представление и форму объекта (см. далее).

 

 

2. В качестве значения поля geometry можно использовать один из следующих узлов, описывающих базовые примитивы языка VRML (куб, цилиндр, конус, сфера, текст).

Все примитивы изначально располагаются в координатах (0,0,0).

 

2.1. Box (Куб )

Синтаксис узла:

 

Box {

field           SFVec3f         size                    2 2 2

}

 

 

Пример (файл 1-1.wrl): создаётся параллелепипед 5.5х3.75х1.0 метров.

 

#VRML V2.0 utf8

 

Shape {

appearance Appearance {

material Material {

}

}

geometry Box {

size 5.5 3.75 1.0

}

}

2.2. Cylinder (Цилиндр)

Синтаксис узла:

 

Cylinder {

field           SFBool          bottom                  TRUE

field           SFFloat         height                  2

field           SFFloat         radius                  1

field           SFBool          side                    TRUE

field           SFBool          top                     TRUE

}

 

 

По умолчанию расположен в 0-координатах и имеет значения от +1 до –1 во всех измерениях.

 

 

Для определения радиуса и высоты цилиндра служат параметры radius и height соответственно.  В этом узле существует ещё 3 параметра: side, top, и bottom, имеющие значения TRUE или FALSE (по умолчанию TRUE), которые сообщают браузеру, выводить ли соответственно верх, низ или сторону цилиндра (например, если у нас нижняя часть цилиндра перекрывается другим объектом, для облегчения работы (увеличения скорости работы) браузера можно выставить параметр bottom как FALSE).

 

Пример (файл 1-2.wrl): создаётся ”ведро” с радиусом основания 2.5 м и высотой 10м.

 

#VRML V2.0 utf8

 

Shape {

appearance Appearance {

material Material {

}

}

geometry Cylinder {

radius 2.5      #радиус (по умолчанию 1)

height 10       #высота (по умолчанию 2)

top FALSE       #цилиндр без верхней части

}

}

 

 

2.3. Cone (Конус)

Синтаксис узла:

 

Cone {

field           SFBool          bottom                  TRUE

field           SFFloat         bottomRadius            1

field           SFFloat         height                  2

field           SFBool          side                    TRUE

}

 

По умолчанию конус будет на 1 метр выше и ниже оси Y, и радиусом основания 1 метр.

 

Пример (файл 1-3.wrl): создаётся ”колпак” с радиусом

Комментарии к записи Простые геометрические формы, трансформация и внешний вид отключены

Filed under Программирование

Представление сложных геометрических объектов

Представление сложных геометрических объектов

Цель: изучение представления сложных геометрических объектов на языке VRML с использованием узлов PointSet, IndexedLineSet, IndexedFaceSet, ElevationGrid, Extrusion и связанных с ними узлов Color, Coordinate, Normal, TextureCoordinate.

 

Сложные геометрические объекты

В качестве значения поля geometry(геометрия) узла Shape(форма) можно использовать один из следующих узлов, позволяющих создавать сложные геометрические объекты:

 

1. PointSet (Набор точек) – позволяет задать набор точек определённого цвета в пространстве.

Синтаксис узла:

 

PointSet {

exposedField    SFNode          color                   NULL

#цвет

exposedField    SFNode          coord                   NULL

#координаты

}

 

Рассмотрим ещё 2 узла, связанные с узлом PointSet – Color и Coordinate.

 

Color (Цвет).

Синтаксис узла:

 

Color {

exposedField    MFColor         color                   []

}

 

С помощью этого узла можно описать значение цвета для каждой точки (последовательно задаётся цвет каждой точки по порядку).

 

Coordinate (Коодинаты)

Синтаксис узла:

 

Coordinate {

exposedField    MFVec3f         point                   []

}

 

С помощью этого узла можно задать координату каждой точки (последовательно задаются координаты каждой точки по порядку).

 

Точки не участвуют в проверке на столкновения.

 

Пример (файл 2-3.wrl) : создаются 8 разноцветных точек в пространстве.

 

#VRML V2.0 utf8

 

Shape{

appearance Appearance {

# можно задать прозрачность точек и цвета

# цвет каждой из точек можно определить непосредственно в самом                 # узле PointSet, как показано ниже

# текстуры на точки наложить нельзя

}

geometry PointSet {

color Color { #цвет каждой из 8 точек соответственно

color [1 0 0, 0 1 0, 0 0 1, 0 1 1,

1 0 1, 1 1 0, 1 1 1, 0.5 0.5 0]

}

coord Coordinate { # координата каждой из 8 точек

point [       -2 0 2, 2 0 2, 2 0 -2, -2 0 –2,

-2 4 2, 2 4 2, 2 4 -2, -2 4 -2]

}

}

}

 

 

2. IndexedLineSet (Индексированный набор линий) – позволяет определить набор ломаных линий (которые могут образовывать многоугольники) определённого цвета в пространстве. Многоугольники не закрашены (состоят из линий).

Синтаксис узла:

 

IndexedLineSet {

eventIn         MFInt32         set_colorIndex

eventIn         MFInt32         set_coordIndex

exposedField    SFNode          color                   NULL

exposedField    SFNode          coord                   NULL

field           MFInt32         colorIndex              []

field           SFBool          colorPerVertex          TRUE

field           MFInt32         coordIndex              []

}

 

Назначение полей:

  • coord – определяет координаты вершин ломаных линий (так же, как в узле PointSet)
  • coordIndex – определяет последовательность обхода координат из coord для построения ломаных линий. Нумерация координат в coord начинается с 0. Если описание одной из ломаных линий закончено, ставится маркер окончания ломаной линии (–1) —  см. пример.
  • colorPerVertex – если

Комментарии к записи Представление сложных геометрических объектов отключены

Filed under Программирование