Реферат: Програмирование на Visual Basic
Do Until Abs ( (-1)”N/(NFactorial*(2 * N + 1))) < Eps Sum = Sum + (-1) A N / (NFactorial * (2 * N + 1)) N = N + 1
NFactorial = NFactorial * N Loop
MsgBox “Сумма равна”+31г$(Sum)+”, N равно”+ Str$(N) End Sub
Private Sub Command3_Ciick() Dim Eps, Sum, Sumi As Double
Dim N, NFactorial As Integer
Eps = Val(InputBox(“Введите точность вычисления”))
Sum =0: N = 1: NFactorial - 1
Do Sum ^ Sum + (-1; N / (NFactorial * (2 * N + 1))’
N = N + 1
NFactorial = NFactorial * N
Loop Wnile Abs ( (-1)’”N/(NFactorial* (2 * N + !)))> Eps
MsgBox “Сумма paBHa”+Str$(Sum)+ “, N равно” + Str$(N) End Sub
Private Sub Command4_Ciick () Dim Eps, Sum, Sumi As Double Dim N, NFactorial As Integer Eps = Val(InputBox(“Введите точность вычисления”)) Sum = 0: N = 1: NFactoriai = 1 Do
Sum = Sum + (-1) л N / (NFactorial ” (2 * N + 1))
N = N + 1
NFactorial = NFactoriai * N Loop Until Abs((-1)”N/(NFactorial*(2*N + !)))< Eps MsgBox “Сумма paBHa”+Str$(Sum).”, N равно” + Str$(N) End Sub
Циклы Do-Loop позволяют также строить циклы со счетчиком, аналогично циклам For-Next.
Пример.
Counter = 1 \ Counter = 1
Do While Counter <= 100 Do While Counter > 100
В(Counter) = ......... В(Counter) = ........
Counter = Counter + 1 Counter = Counter + 1
Loop Loop
Эти два фрагмента программы эквивалентны следующему фрагменту с использованием цикла For — Next.
For Counter = 1 То 100
В(Counter ) = ...........
Next Counter
Для организации ввода исходных значений элементов массивов удобно использовать операторы цикла при работе For-Next и Do-Loop. Примеры процедур обработки события щелчка мыши по форме, которые обеспечивают последовательный ввод элементов массива в специальном окне InpiitBox и их вывод в специальном окне MsgBox:
Sub Form_Click ()
Dim I As Integer
Static A(1 To 5)
I = 1
Do While I <= 5
A (‘I^=Val (InputBox ( “Введите элемент массива” ( Str(-T) ) )
MsgBox “Значение элемента массива” •+ Str(A(I))
1=1+1
Loop
End Sub
Sub Form_Click ()
Dim I As Integer
Static A(1 To 5) 1=1 Do Until I > 5
A (I)=Val(InputBox(“Введите элемент массива” + Str(-I) ) )
MsgBox “Значение элемента массива” + Str(A(‘I))
1=1+1
Loop
End Sub
Окна для ввода и вывода в приведенных примерах имеют вид на рис. 3.11 и 3.12. Альтернативным способом ввода нескольких значении элементов массива может быть использование текстового окна и его свойств SelLength, SelStart, SelText (см описание текстового окна) В определенных позициях текстового окна можно задавать значения различных элементов массива и с использованием указанных функции эти поля выделять (аналогично тому, как осуществлялся ввод данных в текстовой строке ввода в операционнои системе DOS и др ) Создадим форму и разместим на ней текстовое окно, определив максимальное число символов 80 (свойство MaxLength = 80)
Исторический экскурс' когда-то недавно на перфокарте можно было “набить” 80 символов и строка фортран-программы состояла из 80 позиции Каждый элемент массива будем располагать последовательно в четырех позициях строки (число символов вводимого числа, включая десятичную точку, не превышает 4) Пробелы между числами отсутствуют
Имя текстового окна Input_Txt Остальные параметры определяются по умолчанию Определим процедуру обработки события нажатия клавиши KeyPiess
Sub Inpui:_Txt_KeyPress (KeyAscii As Integer) Static A(1 To 5) As Single If KeyAscii = 13 Then For I = 1 To 5 Input-_txt. SalStart-f’I 1) *4 'последовательно
'определяется начальная позиция вводимого числа lnput_txt.SelLength= 4 'определяется количество ' вводимых символов
A(I) = Val(Input_txt.SelText) 'выделяются 'необходимые символы и преобразуются
'в числовое значение (функция Val) Print A(I}; 'печать введенных значении на форме Next I End If
Процедура обеспечивает ввод значении пяти элементов массива при нажатии клавиши “Enter” (ASC1I-код клавиши равен 13). Стоящая “,” после оператора Punt A(I) обеспечивает печать следующего элемента массива на той же строке сразу после предыдущего.
Альтернативно можно использовать “,” (выводимые значения располагаются на одной строке в фиксированных зонах формы) При отсутствии указанных символов выводимые значения располагаются на отдельных строках На рис 3 13 показаны вводимые символы и распечатываемые значения Пример программы.
В качестве примера приводится программа нахождения суммы элементов матрицы 3*4 (три строки и четыре столбца), хотя бы один индекс которых кратен трем.
Текст программы размешается в процедуре обработки события щелчка мыши по форме. Для ввода исходных данных (значений каждого из элементов матрицы) используется три текстовых окна (одно окно для каждой строки матрицы). Каждое значение занимает последовательные четыре позиции строки окна. Введенная матрица и результат выводятся на форму.
Текст процедуры:
Private Sub Form_Click ()
Static A(1 То 3, 1 То 4), Sum As Single For J = 1 To 4 Input_txtl.SelStart = (J - 1) * 4 'последовательно
“определяется начальная позиция вводимого числа Input_txtl.SelLength = 4 'определяется количество
'вводимых символов А(1, J) = Val(Input_txtl.SelText) 'выделяются
'необходимые символы и
'преобразуются в числовое значение (функция Val) Next J
Print А(1, 1), А(1, 2), А(1, 3), А(1, 4) For J = 1 То 4 Input_txt2.SelStart = (J - 1) * 4 'последовательно
'определяется начальная позиция вводимого числа Input_txt2.SelLength = 4 'определяется количество
'вводимых символов А(2, J) = Val(Input_txt2.SelText) 'выделяются
'необходимые символы и преобразуются в числовое
'значение (функция Val) Next J
Print А(2, 1), А(2, 2), А(2, 3), А(2, 4) For J = 1 То 4 Input_txt3.SelStart = (J - 1) * 4 'последовательно
'определяется начальная позиция вводимого числа Input txt3.SelLength = 4 'определяется количество
'вводимых символов А(3, J) = Val(Input_txt3.SelText) 'выделяются
'необходимые символы и преобразуются
'в числовое значение (функция Val) Next J
Print А(3, 1), А(3, 2), А(3, 3), А(3, 4) Sum = О
For I = 1 То 3 алгоритм For J = 1 То 4 суммирования IfI/3=I\30rJ/3=J\3 Then элементов Sum = Sum + A(I, J) матрицы, один
Рис. 3.14
3.5.6. Совместное использование операторов цикла и условного операторов
При одновременном использовании в процедурах и функциях операторов цикла и условных операторов должно выполняться так называемое правило вложенности.
Если среди операторов, выполняющихся в цикле (циклы For-Next и Do-Loop), имеется условный оператор (If-Endlf), то условный
оператор должен целиком содержаться внутри цикла (между операторами For-Next или Do-Loop). Если в Then — блоке или Else ~ блоке условного оператора It’-Endlf имеются выполняющиеся в цикле операторы (циклы For-Next и Do-Loop), то эти циклы Должны целиком содержаться в этих блоках.
Следующие схемы иллюстрируют
принцип корректного совместного использования циклов и условных операторов:
3.6. ПРОЦЕДУРЫ И ФУНКЦИИ
- В предыдущих разделах рассматривались процедуры обработки событий, которые в процессе выполнения программы инициировались (запускались) в результате свершения некоторого определенного события (щелчок мыши, нажатие клавиши и т.п.). Однако в Visual Basic имеется возможность выделить неоднократно повторяющиеся фрагменты программы в определенным образом организованные функциональные блоки операторов, которые можно использовать без их повторного написания и отладки. При этом сложные программы получаются более компактными, а функциональные блоки при их правильной организации могут использоваться в других программных разработках. Организовать функциональные блоки в Visual Basic можно в виде процедур (procedure) и функции (function).
Любая программа на Visual Basic является процедурой или функцией.
Схема, показанная на рис. 3.15, иллюстрирует последовательность выполнения программы, состоящей из процедур и функций (рис. 3.15).
Рис Ч 15
Выполнение профаммы начинается в основной (первой) функции или процедуре, iij которой вызываются другие процедуры или функции (Процедура А). После вызова выполняется вызванная процедура (Процедура А), которой передается управление выполнением программы. В свою очередь в вызванной процедуре могут быть обращения к другим процедурам или функциям (Функция Б) и т.д. (Visual Basic отслеживает до нескольких сот уровней вызовов).
Прекращение выполнения вызванной процедуры или функции (Возврат) означает возвращение в вызывающую процедуру или функцию, выполнение которой продолжается с оператора, следующего за вызывающим оператором.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37