Выберите фрагмент программы, в котором ищется произведение 1*2*3*4*5
1. а:=0; i:=1; repeat a:=a*i; i:=i +1 until i>=6 ;
2. а:=1; i:=0; repeat a:=a*i; i:=i +1 until i<5 ;
3. а:=1; i:=1; repeat a:=a*i; i:=i +1 until i<6 ;
4. а:=1; i:=1; repeat a:=a*i; i:=i +1 until i>=6 ;
Ответы
Ответ:
4. a : = 1; i := 1; repeat a := a * i; i := i + 1 until i >= 6.
Объяснение:
Каждый вариант ответа повторяет процесс повторения, но отличается условием и присваиванием значений переменным.
Поэтому посмотрим сначала на один и тот же процесс:
- repeat a := a * i; i := i + 1
Мы умножаем переменную a на переменную i, после чего увеличиваем переменную i на + 1.
Посмотрим теперь на присваивания в разных ответах.
- 1. a := 0; i := 1.
Здесь мы изначально присваиваем числу а значение 0, i значение 1, то есть мы можем уже понять, что этот вариант ответа неправильный, т.к. у нас постоянно будет 0*1, 0*2, 0*3 и т.д.
- 2. a := 1; i := 0.
Здесь мы изначально присваиваем числу а значение 1, i значение 0, что тоже неверно, потому что это в итоге будет выглядеть так:
1*0, 0*1, 0*2 и т.д.
- 3,4. a := 1, i := 1
Здесь в двух вариантах ответа мы присваиваем двум переменным значение 1, которое выглядит правильно, потому что будет выглядеть следующим образом: 1*1, 1*2, 2*3, и т.д.
Мы откинул 1 и 2 ответы, так что осталось лишь посмотреть на условия в двух последних ответах.
- 3. until i < 6
То есть мы будем выполнять перемножение до тех пор, пока i не станет меньше 6, что означает что функция выполнится всего 1 раз, потому что i изначально равно 1, что меньше 6.
Остаётся только 4 вариант ответа, где условие:
- 4. until i >= 6
Что означает, что функция будет повторяться до тех пор пока i не станет больше или равно 6, что правильно.
Вот как это бы выглядело:
1*1; (i теперь 2)
1*2; (i теперь 3)
2*3; (i теперь 4)
6*4; (i теперь 5)
24*5; (i теперь 6, что равно 6 и повтор больше не происходит)
Надеюсь, логика понятно.