Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример проекта.




Рис. 20.

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

Для ввода исходных данных (значения элементов матрицы) и вывода результатов расчета (сформированные векторы) используются текстовые окна в окне браузера. Расположение текстовых окон соответствует виду матрицы и векторов.

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

 Вид элементов на браузере показан на рисунке, фрагмент скрипта для определения этих элементов на браузере приводится ниже.

 Обратите внимание, что для обоих переключателей задается одинаковое имя option22. Переключатели с одинаковыми именами образуют связанную группу (возможен выбор только одного переключателя из группы).

 

< FORM name=Form1>

< P> < INPUT type=Text maxLength=8 size=9> & nbsp; & nbsp; < INPUT type=Text maxLength=8 size=9> < /P>

< P> < INPUT type=Text maxLength=8 size=9> & nbsp; & nbsp; < INPUT type=Text maxLength=8 size=9> < /P>

< P> < INPUT type=Text maxLength=8 size=9> & nbsp; & nbsp; < INPUT type=Text maxLength=8 size=9> < /P>

< P> < INPUT name=option22 type=radio> По строкам. & nbsp; & nbsp; < 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> & nbsp; & nbsp; < INPUT type=Text maxLength=8 size=9> & nbsp; & nbsp; < INPUT type=Text maxLength=8 size=9> < /P>

< P> Cумма по столбцам< /P>

< P> < INPUT type=Text maxLength=8 size=9> & nbsp; & nbsp; < 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.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...