Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сидорова-004.С34.doc
Скачиваний:
91
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

8.2.1. Цикл с разветвлением

Пример Ц2. Напечатать квадраты и кубы всех чисел, кратных 3, из диапазона от 10 до 100.

Г рафическая схема алгоритма решения задачи приведена на рис. 20. Для решения задачи организован цикл (блок 2) с последовательным перебором всех значений x от 10 до 100. В теле цикла каждое значение x проверяется на кратность числу 3 (блок 3), если условие выполняется, это значение выводится на экран монитора (блок 4), а затем в цикле происходит переход к следующему значению x. Если условие не выполняется, т. е. число x не кратно 3, в цикле сразу происходит переход к следующему значению x.

Листинг программы:

Sub Пример_Ц2()

Dim x As Byte

For x = 10 To 100

If x Mod 3 = 0 Then

Debug.Print x, x ^ 2, x ^ 3

End If

Next x

End Sub

Пример Ц3. Протабулировать функцию y(x) при b = –4,5, изменяя аргумент x с шагом Δx = 0,2:

Так как общий интервал изменения x не задан, примем его исходя из равенства длин всех трех ветвей: – 1 ≤ x ≤ 7, т. е. x Є [–1, 7].

Г СА решения задачи приведена на рис. 21, программа имеет вид:

Sub Пример_Ц3() 'Цикл

'с разветвлением

Const b = –4.5

Dim x As Single, y As Single

For x = 1 To 7 Step 0.2

If x < 3 Then

nv = 1: y = Sqr(x)

ElseIf x <= 5 Then

nv = 2: y = x ^ 2 + b

Else

nv = 3: y = sin(x)^2

End If

Debug.Print nv, x, y

Next x

End Sub

8.2.2. Цикл со счетчиком. Вычисление максимума и минимума

Пример Ц4. Найти максимальное число из произвольных пяти чисел, вводимых с клавиатуры.

При работе программы каждое число поочередно будет записываться в переменную x. Поскольку исходные числа изначально неизвестны и изменяются также с неизвестным шагом, то использовать ту же переменную x в качестве параметра арифметического цикла невозможно. В таких случаях роль параметра цикла выполняет счетчик, в качестве которого в данном примере выступает порядковый номер проверяемого числа. Суть процесса поиска максимума сводится к следующему. Задается отдельная переменная для хранения максимума, например, xmax. Начальное значение этой переменной обычно равно первому из исходных чисел. Затем каждое очередное значение x сравнивается со значением xmax, и если оно окажется больше, то переменной xmax присваивается это значение x. Поскольку в нашем примере исходные числа заранее неизвестны, то в качестве начального значения переменной xmax следует принять минимально возможное из области допустимых значений переменной x (обычно для этого используют большое отрицательное число, например, –1E25).

ГСА решения задачи приведена на рис. 22. Текст программы:

S ub Пример_Ц4() 'Поиск_максимума

Dim x As Single, xmax As Single, k As Byte

xmax = –1E25 'Начальное значение максимума

For k = 1 To 5 'Счетчик чисел

x = Val(InputBox("Введите x "))

If x > xmax Then xmax = x

Next k

Debug.Print "xmax=" & xmax

End Sub

При поиске минимального значения в качестве начального минимума следует принимать очень большое число, например, xmin = 1E25, а проверку выполнять следующим образом:

If x < xmin Then xmin = x

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

Пример Ц5. В диапазоне от 131 до 467 найти максимальное число, кратное 12.

В схеме алгоритма (рис. 23) для каждого из значений x предусмотрена проверка на кратность числу 12 (блок 4) и для чисел, кратных 12, – поиск максимального из них (блоки 5, 6). Программа имеет вид:

S ub Пример_Ц5()

Dim x As Integer, xmax As Integer

xmax = 131

For x = 131 To 467

If x Mod 12 = 0 Then

If x > xmax Then

xmax = x

End If

End If

Next x

Debug.Print "xmax=" & xmax

End Sub

Более кратко тело цикла в примере Ц5 можно записать, применив строковый оператор If и логическую связку And:

If x Mod 12 = 0 And x > xmax Then xmax = x