Как понимать этот пример:
  1. function test takes integer num, integer pow returns integer
    integer res = 1, i = 0
    do {
    res *= num
    } whilenot (i++ >= pow)
    return res
    endfunction
  1. function test takes integer num, integer pow returns integer
    local integer res = 1
    local integer i = 0
    loop
    set res = res * num
    exitwhen (i >= pow)
    set i = i + 1
    endloop
    return res
    endfunction
во втором варианте проверка на выход идет до увелечения i на 1, а в первом, как понимаю я, сначала увеличивается i и сравнивается с условием?

Имба, христа ради, оформляй код в теги.
do {
	// Какие-то действия...
} whilenot (i++ >= pow)
Будет транслировано в
loop
	// Какие-то действия
exitwhen i >= pow
	set i = i + 1
endloop
whilenot это псевдоним exitwhen. Натыкаясь на whilenot, парсер заменяет его на exitwhen Лучше whilenot не использовать, он только путает и С-стилистики не прибавляет, из-за отсутствие такового в самом С.
Разница в инкременте
do {
	// Какие-то действия...
} whilenot (i++ >= pow)
Сначала будет произведена проверка, затем увеличение переменной i на 1
do {
	// Какие-то действия...
} whilenot (++i >= pow)
Сначала переменная i будет увеличена на 1, затем будет произведена проверка.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
27
exitwhen - это и есть выход. Рядом с ним прописывают условие (булеан). Как цикл работает? пошагово: сверху-вниз. и так до сих пор пока условие не выполнится (может бесконечно). Если не прописать туда норм условие выхода, то крит. ошибка. Он каждый раз проверяет. Пример, вот во второй функции:
set res = res * num операция вычисления (мы тут что-то делаем, с каждым разом перемножаем и res становится больше или меньше, если умножим на отр. число num)
exitwhen (i >= pow) если условие верно, то выходим из цикла, и перестаем пробегать сверху-вниз
set i = i + 1 прибавляем
во второй функции сколько раз (pow) перемножать на num. Это своего рода возведение в степень что ль? Это можно представить как pow - степень, num - число. Думаю, что первая функция это то же самая что вторая, абсолютно одинаковы. Есть функция близзардов Pow - возведение в степень. Извиняюсь, там про реальное число
10
Steal nerves:
exitwhen - это и есть выход. Рядом с ним прописывают условие (булеан). Как цикл работает? пошагово: сверху-вниз. и так до сих пор пока условие не выполнится (может бесконечно). Если не прописать туда норм условие выхода, то крит. ошибка. Он каждый раз проверяет. Пример, вот во второй функции:
set res = res * num операция вычисления (мы тут что-то делаем, с каждым разом перемножаем и res становится больше или меньше, если умножим на отр. число num)
exitwhen (i >= pow) если условие верно, то выходим из цикла, и перестаем пробегать сверху-вниз
set i = i + 1 прибавляем
во второй функции сколько раз (pow) перемножать на num. Это своего рода возведение в степень что ль? Есть функция близзардов Pow - возведение в степень
это все первоклассник знает, по теме ничего не увидел
Diaboliko:
++i = i + 2
равносильно
i = i + 1
i = i + 2
в то время как
i++ = i + 2
равносильно
i = i + 2
i = i + 1
вот эти вещи со знаками я не понимаю где 2 плюса или минуса, i++ = i+1 разве нет?
10
Steal nerves:
ImbaStyle, взял бы и дебагом проверил
так оно поидеи все правильно, но я не понимаю этого в 1 примере после условия прибавляется, а в другом до, мб так и надо хз
15
Имба, христа ради, оформляй код в теги.
do {
	// Какие-то действия...
} whilenot (i++ >= pow)
Будет транслировано в
loop
	// Какие-то действия
exitwhen i >= pow
	set i = i + 1
endloop
whilenot это псевдоним exitwhen. Натыкаясь на whilenot, парсер заменяет его на exitwhen Лучше whilenot не использовать, он только путает и С-стилистики не прибавляет, из-за отсутствие такового в самом С.
Разница в инкременте
do {
	// Какие-то действия...
} whilenot (i++ >= pow)
Сначала будет произведена проверка, затем увеличение переменной i на 1
do {
	// Какие-то действия...
} whilenot (++i >= pow)
Сначала переменная i будет увеличена на 1, затем будет произведена проверка.
Принятый ответ
10
EnergyFrost:
i++ = i+1 разве нет?
нет. i++ == (i= i+1)
я это и имел ввиду
GetLocalPlayer:
Имба, христа ради, оформляй код в теги.
do {
	// Какие-то действия...
} whilenot (i++ >= pow)
Будет транслировано в
loop
	// Какие-то действия
exitwhen i >= pow
	set i = i + 1
endloop
whilenot это псевдоним exitwhen. Натыкаясь на whilenot, парсер заменяет его на exitwhen Лучше whilenot не использовать, он только путает и С-стилистики не прибавляет, из-за отсутствие такового в самом С.
Разница в инкременте
do {
	// Какие-то действия...
} whilenot (i++ >= pow)
Сначала будет произведена проверка, затем увеличение переменной i на 1
do {
	// Какие-то действия...
} whilenot (++i >= pow)
Сначала переменная i будет увеличена на 1, затем будет произведена проверка.
теперь понял, спс, хз как тэги делать
15
ImbaStyle, вот зацени Там написано, как работают эти операторы
Инфу по тегам вот тут можешь запалить. Или жмякнуть на форматирование txt2 в верхнем правом углу окна ввода сообщения
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.