Еngee как альтернатива PascalABC
Работа с циклами. ЛР №6-7
Для организации повторяющихся вычислений в Julia есть две конструкции: цикл for и цикл while.
Цикл for
Цикл for имеет следующую структуру:
for i = m:n
действия
end
Здесь i – переменная-счетчик, которая принимает значения из диапазона, заданного справа от знака равенства; m:n – объект-диапазон, представляющий собой последовательность чисел от m до n с шагом 1. Цикл for перебирает эти значения, по очереди присваивая их переменной i.
В общем случае в цикле for возможна итерация по любому контейнеру. В таких случаях в качестве равносильной альтернативы символу = применяется ключевое слово in или ∈, что делает код более понятным:
for i in [1, 2, 3, 4, 5]
print(i, " ")
end
for s ∈ ["red", "green", "blue"]
println(s)
end
В данном примере цикл for используется для вывода всех значений функции от факториала до номера заданного с клавиатуры.
using Printf
k = 5 # @param{type:"number"}
f=1
for n=1:k
f = f * n
an = f / n^sqrt(n)
print("f=",f)
@printf(" an=%.3f\n",an)
end
Цикл while
Цикл while имеет следующую структуру:
while условие
действия
end
Здесь условие – некоторое логическое выражение. Пока оно принимает значение true, раз за разом выполняются действия в теле цикла while. Как только условие станет равным false, произойдет выход из цикла. Если на первой же итерации цикла условие равно false, то действия в теле цикла while не выполняются ни разу.
В примере ниже цикл while используется для нахождения суммы ряда с заданной точностью. Поскольку количество итераций в цикле будет зависеть от заданной точности - удобнее использовать цикл while, а не цикл for.
using Printf
println("Нахождение суммы ряда с заданной точностью\n")
println("Введите значение точности k=")
k = 0.5 # @param{type:"number"}
f=1
n=1
an=1
while an>=k
f= f * n
an = f \ n^sqrt(n)
print("n=",n," f=",f)
@printf(" an=%.5f\n",an)
n+= 1
an= an + an
end