Как понимать этот пример:
  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, затем будет произведена проверка.
0
20
7 лет назад
0
++i = i + 2
равносильно
i = i + 1
i = i + 2
в то время как
i++ = i + 2
равносильно
i = i + 2
i = i + 1
0
27
7 лет назад
Отредактирован MpW
0
exitwhen - это и есть выход. Рядом с ним прописывают условие (булеан). Как цикл работает? пошагово: сверху-вниз. и так до сих пор пока условие не выполнится (может бесконечно). Если не прописать туда норм условие выхода, то крит. ошибка. Он каждый раз проверяет. Пример, вот во второй функции:
set res = res * num операция вычисления (мы тут что-то делаем, с каждым разом перемножаем и res становится больше или меньше, если умножим на отр. число num)
exitwhen (i >= pow) если условие верно, то выходим из цикла, и перестаем пробегать сверху-вниз
set i = i + 1 прибавляем
во второй функции сколько раз (pow) перемножать на num. Это своего рода возведение в степень что ль? Это можно представить как pow - степень, num - число. Думаю, что первая функция это то же самая что вторая, абсолютно одинаковы. Есть функция близзардов Pow - возведение в степень. Извиняюсь, там про реальное число
0
10
7 лет назад
0
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 разве нет?
0
27
7 лет назад
0
ImbaStyle, взял бы и дебагом проверил
0
10
7 лет назад
0
Steal nerves:
ImbaStyle, взял бы и дебагом проверил
так оно поидеи все правильно, но я не понимаю этого в 1 примере после условия прибавляется, а в другом до, мб так и надо хз
1
17
7 лет назад
1
Имба, христа ради, оформляй код в теги.
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, затем будет произведена проверка.
Принятый ответ
0
15
7 лет назад
0
i++ = i+1 разве нет?
нет. i++ == (i= i+1)
0
10
7 лет назад
0
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, затем будет произведена проверка.
теперь понял, спс, хз как тэги делать
1
15
7 лет назад
Отредактирован EnergyFrost
1
ImbaStyle, вот зацени Там написано, как работают эти операторы
Инфу по тегам вот тут можешь запалить. Или жмякнуть на форматирование txt2 в верхнем правом углу окна ввода сообщения
Чтобы оставить комментарий, пожалуйста, войдите на сайт.