Пример проекта.
Рис. 20.
Проект (рисунок 20) обеспечивает управляемый пользователем расчет сумм строк или столбцов матрицы (результатом каждого расчета является одномерный массив(вектор), элементы которого содержат суммы соответствующих строк или столбцов матрицы). Для ввода исходных данных (значения элементов матрицы) и вывода результатов расчета (сформированные векторы) используются текстовые окна в окне браузера. Расположение текстовых окон соответствует виду матрицы и векторов. Для выбора вида расчета используются два переключателя. Вычисление производится по щелчку мыши по командной кнопке.
Вид элементов на браузере показан на рисунке, фрагмент скрипта для определения этих элементов на браузере приводится ниже. Обратите внимание, что для обоих переключателей задается одинаковое имя option22. Переключатели с одинаковыми именами образуют связанную группу (возможен выбор только одного переключателя из группы).
<FORM name=Form1>
<P>
<INPUT type=Text maxLength=8 size=9> <INPUT type=Text maxLength=8 size=9>
</P>
<P>
<INPUT type=Text maxLength=8 size=9> <INPUT type=Text maxLength=8 size=9>
</P>
<P>
<INPUT type=Text maxLength=8 size=9> <INPUT type=Text maxLength=8 size=9>
</P>
<P>
<INPUT name=option22 type=radio>По строкам. <INPUT name=option22 type=radio>По столбцам
</P>
<P>
<INPUT name=btnOne type=button value="Вычислить ">
</P>
<P>Cумма по строкам</P>
<P> <INPUT type=Text maxLength=8 size=9>
<INPUT type=Text maxLength=8 size=9>
<INPUT type=Text maxLength=8 size=9></P>
<P>Cумма по столбцам</P>
<P> <INPUT type=Text maxLength=8 size=9>
<INPUT type=Text maxLength=8 size=9>
</P>
</FORM>
Как было сказано выше, объект Form (форма) содержит объекты управления (Element), организованные в виде коллекции. Как и массив, элементы коллекции имеют общее имя, а обращение к конкретному объекту коллекции производится по индексу. Первый объект коллекции объектов формы имеет индекс 0, далее 1, 2,…..
Об использовании в скриптах свойств или методов элементов коллекции объектов управления также было сказано выше.
Объекты коллекции элементов управления упорядочиваются соответственно последовательности их описания в скрипте.
В приведенном фрагменте скрипта определения элементов на браузере заданы 14 элементов. Индексы элементов принадлежат диапазону от 0 до 13.
Элементы в скрипте определяются построчно (теги <p> и </p>), последовательно в каждой строке.
Первая строка содержит два текстовых окна (индексы в коллекции 0, 1).
Вторая строка содержит два текстовых окна (индексы в коллекции 2, 3).
Третья строка содержит два текстовых окна (индексы в коллекции 4, 5).
Четвертая строка содержит два переключателя (индексы в коллекции 6, 7).
Пятая строка содержит командную кнопку (индекс в коллекции 8).
Седьмая строка содержит три текстовых окна (индексы в коллекции 9, 10, 11).
Девятая строка содержит два текстовых окна (индексы в коллекции 12, 13).
В операторе Document.Form1.elements(i).Value в зависимости от значения индекса i будет использоваться свойство Value того или иного объекта формы.
Ниже приводится текст программы на VBScript для управляемого пользователем расчета сумм строк или столбцов матрицы (результатом каждого расчета является одномерный массив, элементы которого содержат суммы соответствующих строк или столбцов матрицы).
<SCRIPT language=VBScript>
<!--
Option Explicit
dim matrix(2,1)
dim vector_stroka (2)
dim vector_stolbec (1)
dim i,j
Sub btnOne_onClick
For i=0 to 2
For j =0 to 1
matrix (i,j) = Document.Form1.elements(i*2 +j).Value
' MsgBox matrix (i,j)
Next
Next
if Document.Form1.elements(6).Checked Then
'Если выбран переключатель "По строкам"
‘вычисление значений по строкам
For i=0 To 2
vector_stroka (i) =0
For j=0 To 1
vector_stroka (i) =vector_stroka (i)+matrix (i,j)
Next
'MsgBox vector_stroka (i)
Next
‘ вывод результатов
For i=0 To 2
Document.Form1.elements(9 + i).Value=vector_stroka (i)
Next
Else
' Если выбран переключатель "По столбцам"
For j=0 To 1
vector_stolbec (j) =0
For i=0 To 2
vector_stolbec(j) =vector_stolbec (j)+ matrix (i,j)
Next
'MsgBox vector_stolbec (j)
Next
For j=0 To 1
Document.Form1.elements(12 +j).Value=vector_stolbec (j)
Next
End if
End Sub
-->
</SCRIPT>
Описание программы:
Операторы dim matrix (2,1), dim vector_stroka (2), dim vector_stolbec (1), dim i,j определяют:
· двумерный массив matrix (2,1) (исходная матрица из трех строк и двух столбцов, индексы строк - 0,1,2, индексы столбцов - 0,1)
· одномерный массив vector_stroka (2) (вектор сумм строк из трех элементов, индексы элементов 0,1,2 соответствуют индексам строк матрицы)
· одномерный массив vector_stolbec (1) (вектор сумм столбцов из двух элементов, индексы элементов 0,1 соответствуют индексам столбцов матрицы)
· переменные i,j, используемые в операторах цикла.
Формирование векторов производится в процедуре обработки события щелчка мыши по командной кнопке (процедура btnOne_onClick).
Операторы
For i = 0 to 2
For j = 0 to 1
matrix (i,j) = Document.Form1.elements(i*2 +j).Value
Next
Next
производят считывание значений заданных в текстовых окнах в соответствующие элементы двумерного массива ( матрицы). Текстовые окна (элементы коллекции) имеет линейное упорядочение с индексами от 0 до 5 (см. выше). Массив matrix является двумерным с индексами строк - 0,1,2 и индексами столбцов - 0,1 . Два цикла по I и j, параметры которых используются для вычисления индекса текстового окна в коллекции (i*2 +j), обеспечивают соответствие элементов двумерного массива и одномерной коллекции. Рисунки 21 и 22 иллюстрируют соответствие элементов двумерного массива и элементов одномерной коллекции.
0,0 | 0, 1 |
1,0 | 1,1 |
2,0 | 2,1 |
Рис. 21.
0,0 | 0,1 | 1,0 | 1,1 | 2,0 | 2,1 |
0*2+0=0 | 0*2+1=1 | 1*2+0=2 | 1*2+1=3 | 2*2+0=4 | 2*2+1=5 |
Рис. 22.
Условие Document.Form1.elements(6).Checked имеет значение True (истина), если выбран переключатель "По строкам". В противном случае условие имеет значение False. Условный оператор IF – THEN-ELSE-ENDIF (развилка с условием) с этим условием осуществляет переход на формирование того или иного вектора.
Операторы
For i=0 To 2
vector_stroka (i) =0
For j=0 To 1
vector_stroka (i) =vector_stroka (i)+matrix (i,j)
Next
Next
обеспечивают формирование вектора из сумм строк матрицы. Внешний цикл по i(индекс строки матрицы), внутренний (вложенный) цикл по j(индекс столбца матрицы). Индекс элемента формируемого вектора соответствует индексу строки матрицы. Для каждого нового элемента вектора во внешнем цикле начальное значение обнуляется (vector_stroka (i) = 0 – начальному значению суммы присваивается 0).
Операторы
For i=0 To 2
Document.Form1.elements(9 +i).Value=vector_stroka (i)
Next
обеспечивают заполнение текстовых окон под заголовком «Сумма по строкам» вычисленными значениями (индексы этих текстовых окон в коллекции 9, 10, 11).
Операторы
For j=0 To 1
vector_stolbec (j) =0
For i=0 To 2
vector_stolbec(j) =vector_stolbec (j)+matrix (i,j)
Next
'MsgBox vector_stolbec (j)
Next
обеспечивают формирование вектора из сумм столбцов матрицы. Внешний цикл по j (индекс столбца матрицы), внутренний (вложенный) цикл по i (индекс строки матрицы). Индекс элемента формируемого вектора соответствует индексу столбца матрицы. Для каждого нового элемента вектора во внешнем цикле начальное значение обнуляется (vector_stolbec (j) = 0 – начальному значению суммы присваивается 0).
Операторы
For j=0 To 1
Document.Form1.elements(12 +j).Value=vector_stolbec (j)
Next
обеспечивают заполнение текстовых окон под заголовком «Сумма по столбцам» вычисленными значениями (индексы этих текстовых окон в коллекции 12, 13).
Закомментированные операторы (например, 'MsgBox vector_stolbec (j))позволяют контролировать работу программы во время ее отладки).
Работа проекта показана на рисунке 23.
Рис. 23.
Задание 8 для самостоятельного выполнения.
Разработать и отладить проект на VBScript, обеспечивающий:
· задание в браузере значений элементов исходной матрицы в соответственно расположенных текстовых окнах
· выбор с помощью переключателей альтернативного способа формирования вектора из элементов матрицы
· формирование векторов из элементов матрицы по альтернативным способам (запускается событием «щелчок мыши» по командной кнопке)
· вывод на браузер альтернативно сформированных векторов в соответственно расположенные текстовые окна
Взаимное расположение на браузере исходной матрицы, командной кнопки, переключателей и результирующих векторов, размерность матрицы и векторов, альтернативные способы формирования векторов определяются вариантами задания.
Варианты задания
Вариант 1.
Расположение (сверху вниз по строкам):
§ Вектор 1
§ Вектор 2
§ Матрица
§ Командная кнопка
§ Переключатели
Размерность матрицы: 3*4
Формируемые вектора:
§ Вектор 1 – количество нулевых элементов строк
§ Вектор 2 - количество нулевых элементов столбцов
Вариант 2.
Расположение (сверху вниз по строкам):
§ Переключатели
§ Вектор 1
§ Матрица
§ Вектор 2
§ Командная кнопка
Размерность матрицы: 4*3
Формируемые вектора:
§ Вектор 1 – количество нулевых элементов столбцов
§ Вектор 2 - количество нулевых элементов строк
Вариант 3.
Расположение (сверху вниз по строкам):
§ Командная кнопка
§ Переключатели
§ Матрица
§ Вектор 1
§ Вектор 2
Размерность матрицы: 3*4
Формируемые вектора:
§ Вектор 1 – количество нулевых элементов строк
§ Вектор 2 - количество нулевых элементов столбцов
Вариант 4.
Расположение (сверху вниз по строкам):
§ Вектор 1
§ Вектор 2
§ Матрица
§ Командная кнопка
§ Переключатели
Размерность матрицы: 3*4
Формируемые вектора:
§ Вектор 1 – количество положительных элементов строк
§ Вектор 2 - количество отрицательных элементов столбцов
Вариант 5.
Расположение (сверху вниз по строкам):
§ Переключатели
§ Вектор 1
§ Матрица
Вектор 2
§ Командная кнопка
§ Размерность матрицы: 4*3
Формируемые вектора:
§ Вектор 1 – количество отрицательных элементов столбцов
§ Вектор 2 - количество положительных элементов строк
Вариант 6.
Расположение (сверху вниз по строкам):
§ Командная кнопка
§ Переключатели
§ Матрица
§ Вектор 1
§ Вектор 2
§ Размерность матрицы: 3*4
Формируемые вектора:
§ Вектор 1 – сумма положительных элементов строк
§ Вектор 2 - количество отрицательных элементов столбцов
§
Вариант 7.
§ Расположение (сверху вниз по строкам):
§ Командная кнопка
§ Вектор 1
§ Матрица Вектор 2
§ Переключатели
§ Размерность матрицы: 3*2
Формируемые вектора:
§ Вектор 1 – количество отрицательных элементов столбцов
§ Вектор 2 - сумма положительных элементов строк
Вариант 8.
§ Расположение (сверху вниз по строкам):
§ Переключатели
§ Вектор 1
§ Матрица
§ Вектор 2
§ Командная кнопка
§ Размерность матрицы: 3*4
Формируемые вектора:
§ Вектор 1 – количество отрицательных элементов столбцов
§ Вектор 2 - количество положительных элементов строк
Вариант 9.
§ Расположение (сверху вниз по строкам):
§ Командная кнопка
§ Переключатели
§ Матрица
§ Вектор 1
§ Вектор 2
Размерность матрицы: 5*6
§ Формируемые вектора:
§ Вектор 1 – сумма положительных элементов строк
§ Вектор 2 - количество отрицательных элементов столбцов
Вариант 10.
§ Расположение (сверху вниз по строкам):
§ Командная кнопка
§ Вектор 1
§ Матрица Вектор 2
§ Переключатели
§ Размерность матрицы: 3*4
Формируемые вектора:
§ Вектор 1 – количество отрицательных элементов столбцов
§ Вектор 2 - сумма положительных элементов строк
Вариант 11.
§ Расположение (сверху вниз по строкам):
§ Вектор 1
§ Матрица
§ Вектор 2
§ Переключатели
§ Командная кнопка
§ Размерность матрицы: 3*4
Формируемые вектора:
§ Вектор 1 – количество нулевых элементов столбцов
§ Вектор 2 - сумма положительных элементов строк
Вариант 12.
§ Расположение (сверху вниз по строкам):
§ Командная кнопка
§ Вектор 1
§ Матрица Вектор 2
§ Переключатели
§ Размерность матрицы: 4*5
Формируемые вектора:
§ Вектор 1 – количество отрицательных элементов столбцов
§ Вектор 2 - сумма положительных элементов строк
Вариант 13.
§ Расположение (сверху вниз по строкам):
§ Вектор 1
§ Матрица
§ Вектор 2
§ Переключатели
§ Командная кнопка
§ Размерность матрицы: 3*4
Формируемые вектора:
§ Вектор 1 – сумма положительных элементов строк
§ Вектор 2 - сумма отрицательных элементов столбцов
Вариант 14.
§ Расположение (сверху вниз по строкам):
§ Матрица
§ Вектор 1
§ Вектор 2
§ Командная кнопка
§ Переключатели
§ Размерность матрицы: 5*3
Формируемые вектора:
§ Вектор 1 – сумма положительных элементов строк
§ Вектор 2 - сумма отрицательных элементов столбцов
Вариант 15.
§ Расположение (сверху вниз по строкам):
§ Командная кнопка
§ Переключатели
§ Вектор 1
§ Матрица Вектор 2
§ Размерность матрицы: 5*3
Формируемые вектора:
§ Вектор 1 – количество отрицательных элементов столбцов
§ Вектор 2 - сумма положительных элементов строк
§
Вариант 16.
§ Расположение (сверху вниз по строкам):
§ Вектор 1
§ Матрица
§ Вектор 2
§ Переключатели
§ Командная кнопка
§ Размерность матрицы: 2*4
Формируемые вектора:
§ Вектор 1 – сумма положительных элементов строк
§ Вектор 2 - сумма отрицательных элементов столбцов
§
Примечание к вариантам 7, 10, 12, 15:
В этих вариантах формируемый вектор из сумм соответствующих строк матрицы находится справа от матрицы (рисунок 24).
Рис. 24
Индексы элементов коллекции в столбце: 2, 5, 8
В этом случае нужно внести следующие модификации в алгоритмы.
Ввод исходных значений элементов матрицы из текстовых окон:
For i=0 to 2
For j =0 to 2
If j < 2 Then
matrix (i,j) = Document.Form1.elements(i*3 +j).Value
' MsgBox matrix (i,j)
endif
Next
Next
Вывод значений сумм строк в соответствующие элементам формируемого вектора текстовые окна:
For i=0 To 2
Document.Form1.elements(3*(i+1)-1).Value=vector_stroka (i)
Next
Дата добавления: 2015-08-11; просмотров: 558;