Лабораторная работа: Циклы с предусловием и постусловием.
Составим алгоритм следующей задачи,
используя различные циклы с предусловием и постусловием:
вводите числа, пока их сумма не превысит введенного числа m.
1) Циклы с предусловием
a) Do While P б) Do While P
S S
[Exit Do] Wend
Loop
Тело цикла S будет выполняться в том случае, когда условие P
имеет значение истина (цикл продолжается при истинном значении условия P). Если условие P
ложно, то выполняются операторы, стоящие после цикла. В первом случае есть
возможность досрочного выхода из цикла (это реализовано через Exit Do).
Ниже приведен пример решение указанной
выше задачи, используя цикл с предусловием Do While …Loop.
Public Sub uuu()
Dim x As Integer
Dim m As Integer
Dim s As Integer
Dim i As Integer
m =
InputBox("Введите число")
MsgBox
("Вводите числа")
i = 1
s =
InputBox("Введите 1 число")
Do While s <=
m
i = i + 1
x =
InputBox("Введите " & i & "число")
s = s + x
Loop
MsgBox
("Количество введенных чисел " & i)
End Sub
в) Кроме уже описанных выше циклов с
предусловием существует еще один - это цикл Do Until … Loop. Тело S этого цикла выполняется до тех
пор, пока условие P не примет значение истина (цикл
продолжается при ложном значении условия P). Есть возможность досрочного выхода из цикла. Его синтаксис
следующий:
Do Unlil P
S
[Exit
Do]
Loop
Далее смотрите код программы той же
задачи, но с использованием цикла Do Until … Loop.
Public Sub uuu()
Dim x
As Integer
Dim m
As Integer
Dim s
As Integer
Dim i
As Integer
m =
InputBox("Введите число")
MsgBox
("Вводите числа")
i = 1
s =
InputBox("Введите 1 число")
Do
Until s > m
i = i
+ 1
x =
InputBox("Введите " & i & "число")
s = s
+ x
Loop
MsgBox
("Количество введенных чисел " & i)
End Sub
2) Циклы с постусловием.
а) Do
S
[Exit
Do]
Loop While P
Тело цикла S будет выполняться в том случае, когда условие P
имеет значение истина (цикл продолжается при истинном значении условия P). Если условие P
ложно, то выполняются операторы, стоящие после цикла.Предоставлена
возможность досрочного выхода из цикла.
Далее
приведен код программы, с использованием цикла Do …Loop While.
Public Sub uuu()
Dim x
As Integer
Dim m
As Integer
Dim s
As Integer
Dim i
As Integer
m =
InputBox("Введите число")
MsgBox
("Вводите числа")
i = 0
s = 0
Do
i = i
+ 1
x =
InputBox("Введите " & i & "число")
s = s
+ x
Loop
While s <= m
MsgBox
("Количество введенных чисел " & i)
End Sub
б) Do
S
[Exit
Do]
Loop Until P
Тело S
этого цикла выполняется до тех пор, пока условие P не примет значение истина (цикл продолжается при ложном значении
условия P). Есть возможность досрочного
выхода из цикла.
Ниже находится код все той же задачи, но
с использованием последнего описанного цикла.
Public Sub uuu()
Dim x
As Integer
Dim m
As Integer
Dim s
As Integer
Dim i
As Integer
m =
InputBox("Введите число")
MsgBox
("Вводите числа")
i = 0
s = 0
Do
i = i
+ 1
x =
InputBox("Введите " & i & "число")
s = s
+ x
Loop
Until s > m
MsgBox
("Количество введенных чисел " & i)
End Sub
Задание
для самостоятельного выполнения.
1.
Присутствует ли во введенном массиве введенное число
(количество элементов массива ввести).
2.
Присутствует ли в массиве два равных соседних
элемента. Если да, то под какими номерами имееи место первое равенство.
3.
Начиная с какого номера n имеет место неравенство n!>xn,
x -
любое действительное число.
4.
Вводить последовательность до тех пор, пока не
встретятся три подряд идущих положительных числа. Тогда прервать ввод и
сообщить, сколько во введенной последовательности было всего чисел.
5.
Вводить последовательность до тех пор, пока не
встретятся три подряд идущих положительных числа. Тогда прервать ввод и
сообщить, сколько во введенной последовательности было положительных чисел.
6.
Вводить последовательность до тех пор, пока не
встретятся три подряд идущих положительных числа. Тогда прервать ввод и
сообщить, сколько во введенной последовательности было отрицательных чисел.
7.
Определить сколько натуральных подряд идущих четных
чисел нужно сложить (найти минимальное число таких слагаемых), чтобы их сумма
была больше введенного числа.
8.
Дано натуральное N
и первый член бесконечного ряда: Y1=1.
Вычислить
сумму членов бесконечного ряда, образованного по следующему реккррентному
соотношению: Yi=2*Yi-1 (то есть S=1+2+4+8+16+...). Вычисление суммы продолжать до тех
пор, пока соблюдается условие |Yi-Yi-1|<N.
9.
Последовательно вводятся числа до тех пор, пока во
введенной совокупности не окажется три нуля. Вывести количество введенных
чисел.
10.
Присутствуют ли во введенном массиве отрицательные
числа.Если да, то под каким номером встречается первое из них.