![]() |
Вызов подпрограмм внутри цикловDate: 2015-10-07; view: 452. Иногда подпрограммы можно вызвать из цикла , во время выполнения которого они выполняют тот же набор команд, но с другими значениями одной или нескольких переменных. Например, одна из Ваших подпрограмм, которая называется PrimeCheck, определяет число как простое или нет. Можно написать программу, которая позволит пользователю ввести значение и потом, используя эту программу, сообщит простое оно или нет. Данный пример хорошо иллюстрирует следующая программа. TextWindow.Write("Введите число: ") i = TextWindow.ReadNumber() isPrime = "True" PrimeCheck() If (isPrime = "True") Then TextWindow.WriteLine(i + " – простое число.") Else TextWindow.WriteLine(i + " – не простое число.") EndIf
Sub PrimeCheck For j = 2 To Math.SquareRoot(i) If (Math.Remainder(i, j) = 0) Then isPrime = "False" Goto EndLoop EndIf Endfor EndLoop: EndSub Подпрограмма PrimeCheck принимает значение i и делит его на числа с меньшими значениями. Если i может быть поделено на число без остатка, то i не является простым числом. В этот момент подпрограмма присваивает isPrime значение “False” («Ложь») и выходит из программы. Если число не разделилось ни на одно из чисел с меньшими значениями, то значение isPrime остается как “True” («Истина») Рисунок 47– Вычисление простого числа Теперь, когда у Вас есть подпрограмма, которая вычисляет простые числа, можно попробовать выбрать все простые числа, например, до 100. Для этого можно легко изменить вышеприведенную программу и сделать возможным вызов PrimeCheck из цикла. Так, при каждом выполнении цикла подпрограмма будет вычислять разные значения. Давайте посмотрим, как это происходит на нижеприведенном примере. For i = 3 To 100 isPrime = "True" PrimeCheck() If (isPrime = "True") Then TextWindow.WriteLine(i) EndIf EndFor
Sub PrimeCheck For j = 2 To Math.SquareRoot(i) If (Math.Remainder(i, j) = 0) Then isPrime = "False" Goto EndLoop EndIf Endfor EndLoop: EndSub В вышеприведенной программе значение переменной i меняется каждый раз при выполнении цикла. Внутри цикла происходит вызов подпрограммы PrimeCheck. Потом PrimeCheck определяет значение i и вычисляет, является i простым числом или нет. Результат сохраняется в переменной isPrime, к которой потом получает доступ цикл снаружи подпрограммы. Потом значение i выводится на экран, в случае, если оно оказывается простым числом. А так как цикл начинает проверку значений с 3 и заканчивает 100, то мы получим список всех простых чисел от 3 до 100. Ниже Вы видите результат программы. Рисунок 48 – Простые числа
Глава 10 События и интерактивность В первых двух главах мы познакомили Вас с объектами, у которых есть Свойства и Операции. Дополнительно к свойствам и операциям некоторые объекты обладают такой функцией как События. События как сигналы, которые возникают, например, в ответ на такие действия пользователя как передвижение мышки или нажатие на нее. В некотором понимании, события – это нечто противоположное операциям. В случае с операцией, Вы, как пользователь, вызываете ее, чтобы заставить компьютер сделать что-нибудь; а в случае с событиями, компьютер дает Вам знать, когда что-нибудь происходит.
|