Лабораторная работа №5. Циклический алгоритм: цикл с предусловием
Предварительные сведения
Общий вид оператора цикла с предусловием следующий:
Do While <условие>
Группа команд (тело цикла)
Loop
Тело цикла выполняется до тех пор, пока логическая конструкция, стоящая в <условии>, принимает значение «истина».
Пример 1
Напечатать квадратные корни чисел, вводимых с клавиатуры. Ввод и печать прекратить, как только введено отрицательное число.
Выполнение:
1 Экранная форма имеет вид (рис. 24) и содержит одну метку и одну кнопку.
![]() |
2 Блок-схема алгоритма задачи приведена в приложении 2, стр. 125.
3 Программный код:
Private Sub CommandButton1_Click()
Dim x As Integer, y As Single
x = InputBox("Введите x", "Окно ввода данных")
Do While x >= 0 'начало цикла с предусловием
y = Sqr(x)
MsgBox("y= " & y)
x = InputBox("Введите x","Окно ввода данных")
Loop 'конец цикла с предусловием
MsgBox ("Введено отрицательное число")
End Sub
Запустите программу (нажатием на кнопку Ввод числа) и в окне ввода данных введите число, значение у отобразится в окне Результат (рис. 25). Продолжайте вводить числа (рис. 26), пока не будет введено отрицательное число (рис. 27).
для примера 1 задания 5 при х = 4
Рис. 26. Результат работы программы
для примера 1 задания 5 при х = 81
Рис. 27. Результат работы программы
для примера 1 задания 5 при х = –5
Пример 2
Посчитать произведение чисел, вводимых с клавиатуры до тех пор, пока не встретится 0.
Выполнение:
1 Здесь также заранее не известно, сколько чисел будет введено, поэтому используем цикл While. Экранную форму можно создать аналогично примеру 1 (рис. 24).
2 Блок-схема алгоритма:
![]() |
3 Программа подсчета данного произведения:
Private Sub CommandButton1_Click()
Dim a As Integer, P As Integer
a = InputBox("Введите ненулевое число")
Р = 1
While a <> 0
P = P * a
a = InputBox("Введите число")
Wend
MsgBox (Р)
End Sub
Пример 3
Вывести на печать положительные значения функции y=5sin(x)+cos(x–3) для х, изменяющегося на отрезке [–7; 15] с шагом 1,2.
Выполнение:
1 Экранная форма имеет вид (рис. 28) и содержит одну метку, одну кнопку и элемент ListBox.
2 Блок-схема алгоритма этой задачи:
![]() |
3 Алгоритм работы программы:
Private Sub CommandButton1_Click()
Dim x As Single, y As Single
x = -7
While x <= 15
y = 5 * Sin(x) + Cos(x - 3)
If y > 0 Then
L = Str(y)
ListBox1.AddItem (L)
End If
x = x + 1.2
Wend
End Sub
4 Результат работы программы приведен на рис. 29.
Рис. 29. Результат работы программы для примера 2
лабораторной работы № 5
Пример 4
Дано натуральное число N. Получить наименьшее число вида 4k, большее N.
Выполнение:
1 Экранная форма имеет вид (рис. 30).
2 Алгоритм работы программы:
Private Sub CommandButton1_Click()
Dim N As Integer, D As Integer
N = Val(TextBox1.Text)
D = 1
While D <= N
D = D * 4
Wend
MsgBox("Число равно" & D)
End Sub
![]() |
3 Блок-схема к приведенному алгоритму:
![]() |
4 Результат работы программы приведен на рис. 31.
Рис. 31. Результат работы программы для примера 4
лабораторной работы № 5
Пример 5
Найти сумму бесконечного ряда с точностью до
.
Выполнение:
1 Экранная форма имеет вид (рис. 32).
Label4 TextBox1 Label3 CommandButton1 Label2 Label1
Рис. 32. Окно формы для примера 5 лабораторной работы № 5
2 Программный код данной задачи:
Private Sub CommandButton1_Click()
Dim n As Long, S1 As Single, S0 As Single
Dim eps As Single
eps = CSng(Val(TextBox1.Text))
n = 1
S0 = 0
S1 = 1
Do While S1 - S0 > eps
n = n + 1
S0 = S1
S1 = S1 + 1 / (n ^ 2)
Loop
Label4.Caption = Str(S1)
End Sub
На каждом шаге цикла запоминается
предыдущая сумма ряда в переменной S0 и вычисляется новая сумма S1
с очередным членом ряда. Условие окончания цикла – разность между этими суммами
меньше либо равна .
CSng – функция, которая переводит текстовое значение, введенное в поле формы, в действительное число.
3 Блок-схема алгоритма:
![]() |
4 Результат работы программы приведен на рис. 33.
Рис. 33. Результат работы программы для примера 5
лабораторной работы № 5
Варианты
1
Вычислить
сумму бесконечного ряда с точностью до
.
2
Вывести
на печать значения функции для x,
изменяющегося на отрезке [-3; 3] с шагом 0,3.
3 Напечатать модули чисел, вводимых с клавиатуры. Ввод и печать прекратить, как только введено отрицательное число.
4
Вывести
на печать значения функции , большие 1,
для x, изменяющегося на отрезке [3; 8] с шагом 0,9.
5 Дано натуральное число N. Получить наименьшее число вида 5k, большее N.
6
Вычислить
сумму бесконечного ряда с точностью до
.
7 Дано натуральное число N. Получить наименьшее число вида 7k, большее N.
8
Вычислить
сумму бесконечного ряда с точностью до
.
9 Напечатать квадраты чисел, вводимых с клавиатуры. Ввод и печать прекратить, как только введено положительное число.
10
Вычислить
сумму бесконечного ряда с точностью до
.
11 Напечатать числа, вводимые с клавиатуры. Ввод и печать прекратить, как только введено равное нулю число.
12
Вывести
на печать значения функции , большие 2,
для х, изменяющегося на отрезке [3; –8] с шагом –0,9.
13 Дано натуральное число N. Получить наибольшее число вида 3k, меньшее N.
14
Вычислить
сумму бесконечного ряда с точностью до
.
15 Посчитать сумму чисел, вводимых с клавиатуры до тех пор, пока не встретится ноль.
16
Вычислить
сумму бесконечного ряда с точностью до
.
17 Напечатать кубы чисел, вводимых с клавиатуры. Ввод и печать прекратить, как только введено отрицательное число.
18
Вычислить
сумму бесконечного ряда с точностью до
.
19 Посчитать произведение чисел, вводимых с клавиатуры до тех пор, пока не встретится четное число.
20
Вывести
на печать положительные значения функции для
х, изменяющегося на отрезке [–30; 2] с шагом 0,5.
21 Напечатать квадратные корни чисел, вводимых с клавиатуры. Ввод и печать прекратить, как только введено кратное трем число.
22 Дано натуральное число N. Получить наименьшее число вида 2k, большее N.
23
Найти
сумму значений функции для x,
изменяющегося на отрезке [–3; 8] с шагом 0,2.
24
Вычислить
сумму бесконечного ряда с точностью до
.
25 Посчитать сумму чисел, вводимых с клавиатуры до тех пор, пока не встретится отрицательное число.
26 Напечатать числа, вводимые с клавиатуры. Ввод и печать прекратить, как только введено нечетное число.
27 Дано натуральное число Т. Получить наибольшее число вида 8k, меньшее Т.
28
Вычислить
сумму бесконечного ряда с точностью до
.
29 Напечатать сумму чисел, вводимых с клавиатуры. Ввод и суммирование прекратить, как только введено отрицательное число.
30 Посчитать квадратный корень из произведения чисел, вводимых с клавиатуры до тех пор, пока не встретится отрицательное число.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.