Другие языки программирования и технологии

Объясните пожалуйста вот этот алгоритм в Free Pascal

Объясните пожалуйста вот этот алгоритм в Free Pascal, только пожалуйста поподробнее, а то уже 2 листа исписал и ничего не понял

Var k,i : integer;
begin
k := 4;
for i := 1 to 3 do
k := 2*k + i;
writeln(k);
end.
Это цикл со счётчиком.
Т. е. ты сам задаёшь то, сколько раз (3 раза, в данном случае) должны выполняться команды в теле цикла (в данной случае, это команды арифметического присваивания) .
И нужно понимать, что переменная сохраняет своё значение до тех пор, пока не выполняется присваивание.

В данном алгоритме

В первом цикле к = 2*4 + 1 = 9
Во втором цикле (выражение нужно вычислять со значением переменной к = 11) к = 2*9+2 = 20
Третий цикл к = 2*20+3 = 43

И по достижению переменной значения 3 цикл завершается и к становится равной 43.
АЗ
Айварас Зайкаускас
467
Лучший ответ
что бы этот алгоритм не считал, скажи своему преподу что хватит говнокодить )))
это же надо было такое придумать )))

writeln(k*8+11) не легче?
если i предполагается вводить (то есть заранее не известно максимальное значение i), то результат равен (1 shl i)*(k+1)+i, или иначе ((k+1) shl i)+i
writeln(((k+1) shl i)+i);

и не надо никаких циклов вообще.
Так что переписываем это "по нормальному" и показываем преподу за пятёрку как надо писать код :)

по поводу "что делает этот код"... хм.. . не знаю.. . прибавляет к числу единицу, сдвигает на введённое количество разрядов и потом прибавляет число разрядов к результату :)
ОА
Олег Антипов
42 952
Считает сумму. Вроде 43 получится.

Александр Безруков: Не выводит.
Выведет '43'. А вот зачем он такой нужен - не знаю.
Сергей
Сергей
31 623
элементарно же
задаем к =4
и 3 раза к*2 плюс от 1 до 3, выводим итоговый к

элементарнейший алшоритм. что именно не понятно?
Vlad123 Gorbunov
Vlad123 Gorbunov
20 690
сам по себе алгоритм выводит числа 9, 20, 43..

UPD.. ну да, не выводит... прочел как
for i := 1 to 3 do BEGIN
k := 2*k + i;
writeln(k); END;

UPD2
1) k = 2*4+1=9
2) k = 9*2+2=20
3) k = 20*2+3=43
вывести k
Выводит число 43 на экран, специальным образом формируя его в цикле с использованием итерационной переменной i и накопительной переменной k, в которой в итоге и лежит результат.