Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка.doc
Скачиваний:
79
Добавлен:
09.05.2015
Размер:
506.88 Кб
Скачать

Лабораторная работа №3. Циклический алгоритм и его использование в решении задач

1. Цель работы:

Отработка навыков создания блок-схем для реализации циклов при решении задач и овладение навыками работы с операторами FOR-NEXT и DO- LOOP. Использование этих операторов для решения различных задач. Научить исследовать задачу и найти оптимальный план решения и удобный интерфейс.

2. Темы для предварительного изучения:

Циклический алгоритм назначение и применение.

Для реализации циклического алгоритма используются операторы FOR-NEXT (с параметром) или DO – LOOP (с постусловием или предусловием).

Цикл с параметром

Цикл с параметром используется в случае, когда параметр цикла изменяется на постоянную величину, называемую шагом.

Начальное значение параметра цикла

Действие

Действие

Действие

Действие

Тело

цикла

Приращение параметра цикла на величину шага

Рис.14. Модифицированная блок-схема алгоритма цикла с параметром.

Рис.13. Блок -схема алгоритма

цикла с параметром

Формат команды:

FOR<параметр цикла> = <нач.значение>TO <кон.значение>[STEP шаг]

<Тело цикла>

NEXT [параметр цикла]

Цикл с предусловием

1

Закон изменения переменной

.DO WHILE <условие>

<серия>

LOOP.

Начальное значение переменной цикла

Начальное значение переменной цикла

да

Действие

нет

Действие

Закон изменения переменной

2. DO UNTIL <условие>

<серия>

LOOP.

Рис. 15. Блок-схема циклического алгоритма с предусловием

Цикл с постусловием

1.DO

<серия>

LOOP WHILE <условие>

  1. DO

<серия>

LOOP UNTIL <условие>.

Начальное значение переменной цикла

Рис. 16. Блок-схема циклического алгоритма с постусловием

Действие

Действие

Закон изменения переменной

да

нет

Пример 1.

Постановка задачи:

Построить график функции при x[-1;2].

Дано: x[-1;2]

Найти:y

Математическая модель:

, аргумент изменяется по закону xi+1=xi+0.3, а=2,3 и b=-5.3

Форма должна иметь следующие объекты: две командные кнопки, два поля списков (Рис 17.)для вывода значений аргумента и функции соответственно.

ListBox

Рис. 17 Интерфейс пользователя

Создадим алгоритм решения задачи в виде блок-схемы (Рис 18).

Блок-схема

х=-1

или

y=(aex-sin2bx)/(2+x)

y=(aex-sin2bx)/(2+x)

x=x+0.3

Рис 18 Блок -схема алгоритма нахождения значений функции

Программный код:

Private Sub Command1_Click()

Dim a As Single, b As Single, x As Single, y As Single

a = Val(InputBox("введи а", "ввод"))

b = Val(InputBox("введи b", "ввод"))

x = -1

Do

y = (a * Exp(x) - Sin(b * x) ^ 2) / (2 + x)

List1.AddItem Str(x)

List2.AddItem Str(y)

x = x + 0.3

Loop Until x > 2

End Sub

Проверьте работу программного кода. Создайте кнопку перехода на вторую форму; разместите на ней PictureBox и командную кнопку «График».

‘ Построение графика

Private Sub Command1_Click()

Dim a As Single, b As Single, x As Single, y As Single

a = Val(InputBox("введи а", "ввод"))

b = Val(InputBox("введи b", "ввод"))

Picture1.Scale(-1,10)-(2,-10)

Picture1.Line(-1,0)-(2,0),vbBlack ’ось х

Picture1.Line(0,10)-(0,-10),vbBlack ’ось у

For x = -1 to 2 step 0.3

y = (a * Exp(x) - Sin(b * x) ^ 2) / (2 + x)

Picture1.Pset(x,y),vbRed

Next x

End Sub

Отладка программы.

Проверьте работу этого программного кода, уменьшая размер шага, получите непрерывный график функции (Рис.19).

Рис.19 Вид графика после выполнения программы

Пример 2

Найти сумму рядадля двух вариантов исходных данных.

Создадим форму (Рис.20) следующего вида:

CheckBox

Рис. 20 Текстовые поля, метки и командные кнопки

Для элементов CheckBox изменим свойство Caption на вариант 1 и вариант 2

Для элемента PictureBox создадим формулу с помощью редактора Equation 3.0 (Word) и вставим ее, используя буфер обмена(Рис.19).

После нажатия на кнопку «Пуск» должен быть выполнен соответствующий вариант расчета суммы ряда 1) при h = 1: x = 0.7: m = 10 и 2) h = 2: x = 0.4: m = 21.

Программный код:

Private Sub Command1_Click()

Dim x, s As Single, n As Integer, h As Integer, m As Integer

s = 0

If Check1.Value = True Then

h = 1

x = 0.7

m = 10

End If

If Check2.Value = True Then

h = 2

x = 0.4

m = 21

End If

For n = 1 To m Step h

s = s + x ^ (2 * n)

Next n

Text1 = Str(h)

Text2 = Str(x)

Text3 = Str(m)

Text4 = Str(s)

End Sub

Задание для самостоятельного выполнения.

  1. Измените программный код первого примера, используя только цикл с параметром