Заметив, что для пользователя 42-х идеальный подход {
* "делать пока" = "повторять до тех пор, пока"
* Эквивалентность кода:
do while (condition) # in other language
..statements..
endo
repeat{ # in R
..statements..
if(! condition){ break } # Negation is crucial here!
}
} не получил достаточного внимания со стороны других, я подчеркну и изложу его подход на конкретном примере.Если человек не отменяет условие в do-while (через !
или принимая отрицание), то существуют искаженные ситуации (1. постоянство значений 2. бесконечный цикл) в зависимости от хода кода.
В Гауссе:
proc(0)=printvalues(y);
DO WHILE y < 5;
y+1;
y=y+1;
ENDO;
ENDP;
printvalues(0); @ run selected code via F4 to get the following @
1.0000000
2.0000000
3.0000000
4.0000000
5.0000000
В R:
printvalues <- function(y) {
repeat {
y=y+1;
print(y)
if (! (y < 5) ) {break} # Negation is crucial here!
}
}
printvalues(0)
# [1] 1
# [1] 2
# [1] 3
# [1] 4
# [1] 5
I все еще настаивают на том, что без отрицания условия в do-while ответ Сальседо неверен.Это можно проверить, удалив символ отрицания в приведенном выше коде.