Курс 1 тест 7 (по циклам)


#1

Добрый день. Прохожу курс основы программирования, произошел ступор… Помогите, пожалуйста.

var a = 5
var x = 2
repeat {
a = a + x
x = x - 1
} while x > 0
print(a)

Почему правильный ответ 8, а не 7?

если заменим х на 3, то ответ 11. Никак не могу найти логику.
var a = 5
var x = 3
repeat {
a = a + x
x = x - 1
} while x > 0
print(a)


#2

Что конкретно не понятно вам? В первом случае код в блоке repeat while выполнится два раза. в первый раз x= 2, во второй раз x =1
a = 5 + 2 + 1 = 8


#3

Получается, что второй раз он выполняется 3 раза тк х=3, но почему выходит 11?

a = 5 + 3 + 2 + 2 = 12
или каждый раз уменшается на единицу?

a = 5 + 3 + 2 + 1 = 11?

Пока писал, пожоже, что понял. Если х = 4, то ответ 15

x = 5 + 4 + 3 + 2 + 1 верно?


#4

Вы не забывайте, что у вас в коде не только Х меняет значение, но и А:
5 + 2 = 7
7 + 1 = 8

Если вам где-то непонятно как и что происходит, то иногда помогает понять print внутри цикла


#5

Print внутри цикла очень помогло. Я как раз хотел спросить, как посмотреть детальный (для чайников) разбор в самом playground. Спасибо!


#6

Добрый день, друзья, вопрос по тому же заданию.
Можем ли мы в цикле использовать оператор сравнения == ?
то есь, если я пишу:
var a = 5
var x = 2
repeat {
a = a + x
x = x - 1
print(a)
} while x >= 0

то по факту у нас будет 3 итерации с выводом на экран:
7
8
8

НО! Если я в while пишу == :
var a = 5
var x = 2
repeat {
a = a + x
x = x - 1
print(a)
} while x == 0

то итераций не будет вовсе, почему так.
и на экране будет только лишь 7, то есть итераций 0 получается.

Разве не должен ли идти цикл до тех пор пока x не будет равен 0? Что не так, объясните, пожалуйста.


#7

repeat while - означает делать пока условие выполняется. у вас же после первой итерации x не равен нулю, а значит выход.


#8

Спасибо огромное! Я уже сам перед сном дотумкал до этого, но все равно сомневался, спасибо за помощь! Немного изначально для себя определил неверный перевод слова while - перевел его как “до тех пор как Х не станет равен нулю”, что и стало ошибкой изначально.