8. основы программирования на языке Visual Basic for Applications



бет4/5
Дата28.06.2016
өлшемі0.84 Mb.
#163113
түріПрограмма
1   2   3   4   5

Практическая работа № 21



Тема: Организация циклов в программе.

Цель: Научиться составлять простейшие программы с использованием операторов цикла для решения финансовых, инженерных и научных задач (на языке VBA).

Время: 160 мин.

Задание: Решить задачу согласно варианта - составить блок-схему алгоритма, написать программу, отладить её и выполнить на ЭВМ.
Задачу решить с использованием двух-трёх операторов цикла.

Л

  1. Элизабет Бунин. Excel Visual Basic для приложений. M.: Восточная книжная компания, 1996.
итература:

Содержание отчёта:

  • Ответы на вопросы, поставленные в пунктах описания последовательности выполнения работы.

  • Блок-схема алгоритма и текст программы.

  • Результаты вычислений.

  • Выводы по работе (что изучили, чему научились).

Варианты задания:

  1. Найти сумму чётных натуральных чисел, меньших 100.

  2. Найти сумму нечётных натуральных чисел, меньших 100.

  3. Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3.

  4. Вычисление F = 10! выполнить каждым из трёх операторов цикла.

  5. Начав тренировки, спортсмен в первый день пробежал 10 км, каждый последующий день он увеличивал дневную норму на 10% от нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней?

  6. Напечатать в одну строку (через пробел) все буквы от ‘A’ до ‘Z’.

  7. Напечатать в одну строку (через пробел) все буквы от ‘a’ до ‘z’.

  1. Кинетическая энергия движущегося тела , где m – масса тела, v – его скорость.
    Составить программу для расчёта зависимости Wk от v при значениях v, изменяющихся от v1 до v2 с шагом Δv. Решить задачу при v1 = 10.37, v2 = 15.44, Δ= 0.23, m = 1.004.

  2. Т
    раектория снаряда, вылетающего из орудия под углом α с начальной скоростью vo, описывается уравнениями
    x = v cosα˙t,
    y = v sinα˙t – gt2/2,
    где g = 9.8 м/с2 – ускорение свободного падения, t – время. Вводя n заданных пар vo и α, определить, сколько снарядов поразит цель высотой P, расположенную в вертикальной плоскости ствола орудия на расстоянии R на высоте H (см. рис.). Задачу решить при R = 5400 м; H = 100 м; = 30 м для пяти пар vo и α: 180 м/с и 45˚; 252 м/с и 30˚; 280 м/с и 40˚; 233 м/с и 48˚; 260 м/с и 25˚.



Варианты следующих пятнадцати задач следующих сведены в таблицу. Необходимо найти значения функции Y(x) для всех Х, изменяющихся от Хн до Хк с шагом ΔХ. Вывод результатов оформить в виде таблицы с двумя столбцами и следующим заголовком:

Результаты вычислений.



Аргумент

Функция





варианта

Функция Y(x)

Хн

Хк

ΔХ

10




0

5

0.5

11




π/2



0.47

12




-π/2

π/2

π/10

13




0

1

0.1

14




0



π/10

15




0

10

1

16




0

15

1

17




1.1

6.35

0.35

18




π/2

3π/2

π/10

19




0

2

0.2

20




0

5

0.5

21




0

5

0.25

22




0

π

π/15

23




1.5

15

1.35

24




0



π/10



  1. Самолёт летит из пункта А в пункт Б со средней скоростью v. Найти время полёта t, если есть встречный ветер, скорость которого vв изменяется от 0 до 15 м/с с шагом Δvв = 0.5 м/с. Расстояние между пунктами А и Б S = 437 км, v = 720 км/ч.
    (Для тех, кто плохо знает физику: t = S / (v-vв) )

  2. Составить программу, печатающую таблицу значений градусов температуры по Цельсию и Фаренгейту. Значения градусов температуры по Цельсию изменяются от 0˚ до 20˚ с шагом 1˚. (˚F = ˚C * 1.8 + 32)

  3. Пользователь сберегательной кассы внёс в неё вклад S0 = 3000 грн. До какой суммы он возрастёт через N = 5 лет, если процент годовых начислений P = 30 % ?

  4. Вскоре после рождения ребёнка родители решили внести в сберкассу вклад S0 с тем, чтобы через 16 лет, к моменту окончания школы, вклад вырос до 50000 грн. Каким должен быть вклад S0, если процент годовых начислений P = 30 % ?

  5. Через сколько лет начальный вклад S0 = 2 000 грн. увеличится до суммы S = 30 000 грн., если процент годовых начислений P = 30 % ?

  6. Вкладчик сберегательной кассы решил ежегодно вносить вклад S1 = 500 грн. в течение N = 5 лет. Сколько денег он получит в конце этого срока, если процент годовых начислений P = 30 % ?

Пример №1.

Найти сумму первых 15-и натуральных чисел.

Задача сводится к организации цикла по i. Для циклического накапливания сумм при составлении соответствующих алгоритмов используется предписание стандартного вида:

Сумма = сумма + слагаемое

Перед началом цикла сумма должна иметь нулевое значение. Понимать эту формулу следует так:

Пусть значение переменной «сумма» хранится в ячейке памяти № 1, а значение переменной «слагаемое» – в ячейке памяти № 2. Все выражения выполняются по правилам приоритета арифметических операций справа налево, т.е. из ячейки памяти № 2 извлекается значение переменной «слагаемое», из ячейки № 1 извлекается значение переменной «сумма», оба числа складываются (за такие операции отвечает процессор, а именно, арифметико – логическое устройство), а результат помещается в ячейку № 1 вместо старого значения переменной «сумма». Таким образом, в ячейке № 1 происходит накопление суммы. Если в качестве слагаемого используется переменная цикла, то с каждой итерацией (шагом) цикла значение этой переменной будет меняться.

Словесная запись этого алгоритма (цикл «До», с постусловием):



  1. i = 1, S = 0

  2. S = S + i

  3. i = i + 1

  4. если i  15, перейти к шагу 2

  5. вывести на экран значение S.

  6. конец

Блок-схема алгоритма, соответствующая этой записи, изображена на рис.1.Согласно ГОСТ 19.701-90 схему этого алгоритма можно изобразить так, как на рис. 2.

Текст программы:



Sub example()

i = 1

S = 0

Do

S = S + i

i = i + 1

Loop While i <= 15

MsgBox (" S = " & S)

End Sub

Результат выполнения программы: S = 120.


Р
ис. 1 Рис. 2

Для решения этой задачи можно использовать и цикл с предусловием. Словесная запись этого алгоритма (цикл «Пока»):


  1. i = 1, S = 0

  2. если i > 15, перейти к шагу 6

  3. S = S + i

  4. i = i + 1

  5. вернуться к шагу 2

  6. вывести на экран значение S.

  7. конец

Блок-схема алгоритма, соответствующая этой записи, изображена на рис.3. Согласно ГОСТ 19.701-90 схему этого алгоритма можно изобразить так, как на рис. 4.

Текст программы:



Sub example()

i = 1

S = 0

Do While i <= 15

S = S + i

i = i + 1

Loop

MsgBox (" S = " & S)

End Sub

Sub example()

i = 1

S = 0

While i <= 15

S = S + i

i = i + 1

Wend

MsgBox (" S = " & S)

End Sub

Или:








Рис. 3 Рис. 4

При использовании цикла с параметром блок-схема алгоритма изображена на рис. 5.



Р
ис. 5

Текст программы:



Sub Auto_0pen()

Beep

a = MsgBox ("Найти сумму натуральных чисел от 0 до 15”,vbYesNo, "Задание")

if a = vbNo Then Exit Sub

S=0

For i= 1 To 15

S = S + i

Next

a = МsgВох ("Сумма заданных чисел = " & S, "Ответ")

ThisWorkbook.Sheets ("Лист1").Activate

Range ("a1").Select

i = Len ("Сумма заданных чисел = ")

Columns ("A:A").ColumnWidth = i

Range ("a1 ").Value = "Сумма заданных чисел = "

Range ("b1 ").Value = S

End Sub

В этом примере программа несколько «приукрашена»:



  • Процедура названа Auto_Open, благодаря этому она запускается автоматически при открытии книги;

  • В окне сообщения с заголовком «Задание» появляется условие задачи и две кнопки: «Yes» и «No». Если нажимается кнопка «No», задача решаться не будет, последует выход из процедуры. Если нажимается кнопка «Yes», задача решается и в окне сообщения с заголовком «Ответ» появляется ответ: S = 120.

  • Затем открывается 1-й лист рабочей книги, в ячейке А1 появляется надпись «Сумма заданных чисел = », причём ширина столбца А становится равной длине этой надписи;

  • В ячейке В1 появляется результат вычислений (120).


Пример № 2.

В
этом примере условие задачи оформлено на листе «Задание» в виде надписи с управляющей кнопкой Старт, которая вызывает процедуру, решающую поставленную задачу:

Исходные данные заносятся с помощью формы UserForm1:



Текст программы:


Dim Xn, Xk, dX, X As Variant
Sub Auto_Open()

Sheets("задание").Visible = True

Sheets("задание").Select

End Sub

Sub Start()

Sheets("задание").Visible = False

UserForm1.Show

Xn = Val(UserForm1.TextBox1.Value)

Xk = Val(UserForm1.TextBox2.Value)

dX = Val(UserForm1.TextBox3.Value)

Range("A1").Value = "Хн"

Range("B1").Value = "Хк"

Range("C1").Value = "dX"

Range("A1:C4").Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.ShrinkToFit = False

.MergeCells = False

End With

With Selection.Font

.Name = "Arial Cyr"

.Size = 10

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ColorIndex = xlAutomatic

End With

Selection.Font.Bold = True

Range("A2") = Xn

Range("B2") = Xk

Range("C2") = dX

Range("b4").Select

Range("b4").Value = "X"

Range("c4").Value = "Y"

Columns("C:C").ColumnWidth = 20.86

i = 4

For X = Xn To Xk Step dX

If Abs(Cos(X) – 1) < 0.001 Then

Y = "Функция не определена"

Else

Y = (1 + Sin(X)) / (1 - Cos(X))

End If

i = i + 1

Cells(i, 2).Value = X

Cells(i, 3).Value = Y

Next

Range("b4").Select

Set tbl = ActiveCell.CurrentRegion

tbl.Offset(0, 0).Resize(tbl.Rows.Count, tbl.Columns.Count).Select

With Selection.Borders(xlLeft)

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlRight)

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlTop)

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlBottom)

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

Selection.BorderAround Weight:=xlThin, ColorIndex:=xlAutomatic

Range("A4").Select

End Sub

Sub Auto_Close()

Cells.Select

Selection.Clear

Range("A1").Select

End Sub
Результат выполнения этой программы:


Хн

Хк

dX

0,00

6,28

0,314













X

Y




0

Функция не определена




0,314

26,76929732




0,628

8,320557201




0,942

4,391966734




1,256

2,825787841




1,57

2,001593605




1,884

1,491735644




2,198

1,140393997




2,512

0,878639707




2,826

0,671778656




3,14

0,500796644




3,454

0,354914388




3,768

0,228580251




4,082

0,120922727




4,396

0,03785636




4,71

0




5,024

0,069452838




5,338

0,457025076




5,652

2,127445718




5,966

13,79442665




6,28

Функция не определена

При закрытии книги лист с решением очищается (процедура Auto_Close).



Достарыңызбен бөлісу:
1   2   3   4   5




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет