Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теоретические и практические вопросы дисциплины «Информатика». Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
111
MsgBox Hello
xeY
xa
sin
cos
Public Sub Tabul ()
1
' Программа для табуляция функции Y
2
'Название файла программы: TABL1.xls
3
'Дата составления программы: 7.11.98
4
'Программист: студент гр. 6131-11 Якшина К.Д.
5
' Описание переменных:
6
Dim x As Integer, pi As Double, a As Single, y As Single
7
Dim i As Integer, j As Integer
8
Dim Info1 As String, Info2 As String, x1 As Single
9
Info1="Введите информацию": Info2="Окно ввода"
10
pi = 4* Atn(1) : MsgBox "pi="&pi
11
a = Val(InputBox(Info1, Info2))
12
End Sub
После запуска первой процедуры она выполняется и выводится сообщение "Привет Коля!". После запуска второй процедуры она тоже выполняется, и выводится сообщение "Привет Витя!".
Подведем некоторые итоги: программы с неявным определением переменных, хотя кажутся простыми, могут породить множество проблем, в частности касающихся отладки программы. Поэтому на VBA существует команда Option Explicit, которая запрещает использование неявного определения идентификаторов. Команда вставляется после создания модуля.
Задача 26. Протабулировать функцию Y, зависящую от переменной x:
,
где a=0,5; x = [0; 900], (50)
Переменную цикла задать как целую переменную. Константу π задать двойной точности. Все остальные числовые переменные задать одинарной точности.
Значение аргумента вывести в градусной форме.
Таблицу значений аргумента и функции вывести на лист Excel tabul в клетки в два первых вертикальных столбца.
После запуска Microsoft Excel переименуем лист с именем Лист1 в лист с именем tabul, открываем редактор VBA, вставляем модуль, записываем команду Option Explicit и создаем процедуру
Tabul.
Реализация программы на VBA:
112
i = 1 : j = 1
13
For x = 0 To 90 Step 5
14
x1 = x * pi / 180 : y = Sin(x1) * Exp(-a * cos(x1)
15
Worksheets("tabul").Cells(i, j).Value = x
16
Worksheets("tabul").Cells(i, j+1).Value = y
17
i=i+1
18
Next х
19
End Sub
20
Напомним, что т а б у л я ц и я − это составление таблицы
1
-начало процедуры Sub
2-5
-шапка программы
6
- подсказка;
7
- оператором Dim объявляются имена переменных и их тип:
переменная х объявлена целого типа; переменная pi объявлена двойной точности; переменные a и x объявлены одинарной точности;
8
- переменные i и j объявлены целого типа;
9
- переменные Info1 и Info2 объявлены как строковые константы; переменная x1 объявлена одинарной точности;
10
-строковым переменным Info1 и Info2 присваиваются строковые константы;
11
-вычисляется значение константы π, и вычисленное значение выводится в окно Windows;
12
-вводится значение переменной a в окно Windows. Для вывода
сообщений в окне Windows использованы строковые переменные Info1 и Info2;
13
-задаются значения переменных i и j, определяющие параметры
(индексы) ячейки, в которую будет выводиться значение переменной x.
14
-первая строка оператора For. Переменная цикла – x принимает
значение равное нулю и поскольку это значение меньше конечного значения, то управление передается в 15 строку;
значений аргумента и функции.
Особенность программы в том, что аргумент x принимает целые значения, и поэтому переменную x целесообразно использовать в качестве параметра цикла. Обсуждение программы:
113
15
-градусы переводятся в радианную форму и результат
записывается в переменную x1; вычисляется значение выражения и вычисленное значение присваивается переменной
y;
16
-значение переменной x выводится в ячейку Excel с координатами (1,1), т.е. в ячейку A1;
17
значение переменной y выводится в ячейку Excel с координатами (1,2), т.е. в ячейку B1;
18
значение строки увеличивается на единицу;
19
конец оператора For. Управление передается в начало цикла, т.е. в строку 14;
20
конец процедуры Sub
После запуска программы в окне Windows вводится значение
x
ax
ey sin
параметра a (число 0,5). Таблица значений аргумента и функции выводится в ячейки Excel, начиная с первой строки:
0 0
5 0.0529 10 0.1061
и т.д.
Всего будет выведено 19 пар значений аргумента и функции.
Задача 27. Протабулировать функцию, зависящую от двух параметров:
,
где а = [0; 1 ], (0,25); x= [0; 900 ], (50)
Вывести в диалоговое окно значения параметра a.
Задать тип данных.
Анализ программы:
Параметр a принимает следующие дискретные значения: 0; 0,25; 0,5; 0,75; 1,0. Таких значений 5. Эти значения не являются целыми, и поэтому параметр а нецелесообразно использовать в качестве параметра цикла.
Все остальные переменные целесообразно задать, как в предыдущей задаче. Для каждого значения параметра а необходимо вывести значения аргумента (изменяющегося в указанных пределах) и соответствующие значения функции.
После запуска Microsoft Excel переименуем лист с именем Лист1 в лист с именем tabul2, открываем редактор VBA, вставляем
114
модуль, записываем команду Option Explicit и создаем процедуру
Public Sub Tabul_2 ( )
1
'Программа табуляция сложной функции
2
'Название файла программы: TABL3.xls
3
'Дата составления программы: 26.11.98
4
'Программист: студент гр. 6131-11 Шигапова Н.Д.
5
'Описание переменных и констант:
6
Dim x As Integer, pi As Double, a As Single, y As Single
7
Dim i As Integer, j As Integer, ia As Integer
8
Dim Info3 As String, x1 As Single
9
pi = 3.14159: a=0 : Info3= ˝Приостановка программы˝
10
For ia=1 To 5
11
Worksheets("tabul2").Cells(1, 2).Value = ˝a= ˝
12
Worksheets("tabul2").Cells(1, 3).Value = a
13
i=2 : j=2
14
For x = 0 To 90 Step 5
15
x1= x * pi / 180 : y = Sin(x1) * Exp(- a * x1)
16
Worksheets("tabul2").Cells(i, j).Value = x
17
Worksheets("tabul2").Cells(i, j+1).Value = y
18
i=i+1
19
Next x
20
MsqBox info3 : a=a+0.25
21
Next ia
22
End Sub
23
1
-начало процедуры Sub
2-5
- шапка программы:
6
- подсказка;
7-9
- операторами Dim задаются имена переменных и их тип;
10
- задается константа π. В этой же строке задается начальное значение параметра а и текстовая константа Info3;
11
- записана первая строка оператора For для параметра ia,
который будет меняться от единицы до пяти. Переменная цикла
ia вначале принимает значение равное 1, и, поскольку это
Tabul_2.
Программа на VBA:
Обсуждение программы:
115
значение меньше конечного значения, управление передается в 12 строку;
12
- в ячейку (1,2) Excel выводится подсказка а=
13
- в ячейку (1,3) Excel выводится значение параметра а;
14
- задается номер строки и столбца, в которую будет выводится первое значение аргумента х;
15
- первая строка оператора For для параметра x. Переменная
цикла x принимает значение равное нулю, и, поскольку это значение меньше конечного значения, управление передается в 16 строку;
16
- градусы переводятся в радианную форму, и результат
записывается в переменную x1; вычисляется значение выражения, которое присваивается переменной y;
17
- значение переменной x выводится в ячейку Excel с координатами (2,2), т.е. в ячейку B2;
18
- значение переменной y выводится в ячейку Excel с координатами (2,3), т.е. в ячейку C2;
19
- переменная i (номер строки, в которую выводится информация) увеличивается на единицу;
20
- конец оператора цикла для x. Управление передается в начало цикла, т.е. в строку 15;
21
- выводится окно с подсказкой ˝Приостановка программы˝, и
вычисления приостанавливаются до нажатия на кнопку OK. При нажатии на кнопку OK вычисления продолжаются: параметр a меняется на величину шага – 0,25;
22
- конец оператора цикла для параметра ia. Управление передается в строку 11;
23
- конец процедуры Sub.
После запуска программы в окно Excel выводится значение
параметра a и часть таблицы значений x и y:
a= 0 0 0 5 0.0871 10……0,1736. и т.д.
После нажатия на любую клавишу вывод информации продолжается.
116
3.10 Итерационные программы
В итерационных программах заданная группа операторов выполнятся какое-то (обычно заранее неизвестное) число раз, пока не выполнится заданное условие.
В таких программах часто используются рекуррентные вычисления. Р е к у р р е н т н ы е в ы ч и с л е н и я – это такие вычисления, которые используют результаты предыдущих вычислений для получения новых значений. Для реализации рекуррентных вычислений необходима р е к у р р е н т н а я ф о р м у л а , связывающая результаты предшествующих вычислений с последующими. Такие вычисления требуют особой организации программ и, как правило, применения циклических операторов с проверкой условия.
Оператор While ... Wend
(While − пока; While End - конец цикла)
Формат оператора:
?While условное выражение
[группа операторов] Wend
yсловное выражение – выражение, результатом проверки которого
может быть значение Тrue или False.
Оператор выполняет группу операторов, до тех пор, пока значение условного выражения – Тrue; группа операторов выполняется до обнаружения ключевого слова Wend. После этого передача управления происходит к началу оператора While, где снова проверяется условное выражение. Если результат проверки условного выражения False, то выполняется оператор, следующий за ключевым словом Wend.
?Задача 28. Вычислить сумму чисел от 1 до 10. Записать код
программы.
?Код программы:
sum = 0 : i = 1
While i <= 10
sum = sum + i : i = i+1
117
Wend MsgBox sum
После запуска программы в окно Windows выводится число 55.
Оператор Do ... Loop
с проверкой условного выражения в начале цикла:
Do { While / Until } условное выражение
[ группа операторов]
Loop
C проверкой условного выражения в конце цикла: Do
[ группа операторов]
Loop{ While / Until } условное выражение
Оператор c ключевым словом While обеспечивает выполнение группы операторов до тех пор, пока значение условного выражения − True. Если результат проверки условного выражение False, то цикл прекращает свою работу и выполнятся оператор, следующий за ключевым словом Loop или за ключевыми словами Loop While.
Оператор c ключевым словом Until обеспечивает выполнение группы операторов до тех пор, пока результат условного выражения False. Если результат проверки условного выражения True, то выполняется оператор, следующий за ключевым словом Loop или за ключевыми словами Loop Until.
Если условное выражение проверяется в конце цикла, то цикл выполняется хотя бы один раз вне зависимости от результата проверки.
Задача 29. Вычислить сумму чисел от 1 до 10, используя оператор Do
… Loop с ключевым словом Until. Записать код программы.
sum = 0 : i = 1 Do Until i > 10
sum = sum + i : i=i + 1 Loop MsgBox sum − выводится число 55.
118
?Задача 30. Вычислить, какую сумму денег получит вкладчик банка
)
100
1(
100
0001
p
S
p
SSS
)
100
1(
100
1112
p
S
p
SSS
)
100
1(
100
*
111
p
S
p
SSS
nnnn
через N лет, если начальная сумма вклада равна S
, а банковский
0
процент по вкладу равен p. Записать код программы.
Анализ задачи:
Рассчитаем сумму вклада вкладчика через один год (S1):
.
Рассчитаем сумму вклада вкладчика, через два года (S
):
2
.
Очевидно, что через N лет сумма вклада составит (Sn):
В качестве основной рекуррентной формулы используем первую
формулу.
Предварительно переименуем лист Excel с именем Лист1 в лист с именем Prog30 и запишем значения s, n, p соответственно в ячейки B5, B6, B7 листа Excel.
Запишем код программы на VBA:
With Worksheets(“Prog30”) s=.Range(“B5”).Value
n=.Range(“B6”).Value p=.Range(“B7”).Value
End With For i = 1 Тo n
s1 = s*(1+p/100) s = s1 ´замена начального значения вычисленным Next i MsgBox″Сумма вклада = равна″&s1
119
Задача 31. Задана рекуррентная формула, связывающая последующий
2
12
3,06,0
nnn
VVV
2
102
3,06,0 VVV
2
213
3,06,0 VVV
2
12
3,06,0
nnn
VVV
EVn
элемент ряда с предыдущими значениями ряда:
,
где V0 = 1 : V1 = 0.5
?Вычислить первые 5 членов ряда и вывести их значения на экран.
Записать код программы.
Анализ задачи:
Учитывая, что нулевой и первый член ряда известны, вычислим второй член ряда, задав n = 0, тогда:
Если задать n=1, тогда третий член ряда равен:
Если для вычисления третьего члена ряда использовать первую формулу, то тогда для вычисления V3 необходимо положить:
V0 = V1; V1 = V2
и т.д.
В качестве рекуррентной формулы используем формулу для вычисления V2.
Код программы на VBA:
v = 1 : v1 = 0.5 For i = 2 To 4 v2=0.6* v -0.3* v1^2 v = v1 : v1 = v2 MsgBox v2 Next i
Задача 32. Задана рекуррентная формула, связывающая последующий элемент ряда с предыдущими значениями ряда:
,
где V0 = 1 : V1 = 0.5 Вычислить n–й член ряда. Вычисления проводить до тех пор, пока n–й
член ряда по модулю не станет меньше наперед заданного малого положительного числа E =0,01:
120
?В программе использовать цикл Do… Loop. Записать код программы.
2
012
3,06,0 VVV
2
123
3,06,0 VVV
2110
VVVV
n
xxxx
xx
n
n
1
.......
432
)1(
432
)1ln(
?Анализ задачи:
?Вычислим второй член ряда, задав n=0 и учитывая, что нулевой
и первый член ряда известны:
?
?Вычислим третий член ряда, задав n=1 и учитывая, что первый
,
и второй член ряда известны:
?
?Если взять в качестве рекуррентной формулы первое
.
выражение, то для получения второй формулы из первой необходимо задать:
?
?Код программы на VBA:
v = 1 : v1 = 0.5 : e=0.01 Do
v2 = 0.6* v - 0.3* v1^2 v = v1 : v1 = v2
Loop While Abs(v2) > e
MsgBox "Член ряда равен="&v2
После запуска программы на экране появляeтся следующее сообщение: Член ряда равен 8.99439E-03
Задача 33. Вычислить сумму ряда для заданного значения аргумента
x=0.5:
Cумму ряда необходимо вычислять до тех пор, пока очередной
член ряда по модулю не станет меньше заданной точности Е, равной
0.001. Функцию в левой части ряда вычислить, используя стандартную функцию бейсика − Log(x).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]