Объясните пожалуйста вот этот алгоритм в Free Pascal, только пожалуйста поподробнее, а то уже 2 листа исписал и ничего не понял
Var k,i : integer;
begin
k := 4;
for i := 1 to 3 do
k := 2*k + i;
writeln(k);
end.
Другие языки программирования и технологии
Объясните пожалуйста вот этот алгоритм в Free Pascal
Это цикл со счётчиком.
Т. е. ты сам задаёшь то, сколько раз (3 раза, в данном случае) должны выполняться команды в теле цикла (в данной случае, это команды арифметического присваивания) .
И нужно понимать, что переменная сохраняет своё значение до тех пор, пока не выполняется присваивание.
В данном алгоритме
В первом цикле к = 2*4 + 1 = 9
Во втором цикле (выражение нужно вычислять со значением переменной к = 11) к = 2*9+2 = 20
Третий цикл к = 2*20+3 = 43
И по достижению переменной значения 3 цикл завершается и к становится равной 43.
Т. е. ты сам задаёшь то, сколько раз (3 раза, в данном случае) должны выполняться команды в теле цикла (в данной случае, это команды арифметического присваивания) .
И нужно понимать, что переменная сохраняет своё значение до тех пор, пока не выполняется присваивание.
В данном алгоритме
В первом цикле к = 2*4 + 1 = 9
Во втором цикле (выражение нужно вычислять со значением переменной к = 11) к = 2*9+2 = 20
Третий цикл к = 2*20+3 = 43
И по достижению переменной значения 3 цикл завершается и к становится равной 43.
что бы этот алгоритм не считал, скажи своему преподу что хватит говнокодить )))
это же надо было такое придумать )))
writeln(k*8+11) не легче?
если i предполагается вводить (то есть заранее не известно максимальное значение i), то результат равен (1 shl i)*(k+1)+i, или иначе ((k+1) shl i)+i
writeln(((k+1) shl i)+i);
и не надо никаких циклов вообще.
Так что переписываем это "по нормальному" и показываем преподу за пятёрку как надо писать код :)
по поводу "что делает этот код"... хм.. . не знаю.. . прибавляет к числу единицу, сдвигает на введённое количество разрядов и потом прибавляет число разрядов к результату :)
это же надо было такое придумать )))
writeln(k*8+11) не легче?
если i предполагается вводить (то есть заранее не известно максимальное значение i), то результат равен (1 shl i)*(k+1)+i, или иначе ((k+1) shl i)+i
writeln(((k+1) shl i)+i);
и не надо никаких циклов вообще.
Так что переписываем это "по нормальному" и показываем преподу за пятёрку как надо писать код :)
по поводу "что делает этот код"... хм.. . не знаю.. . прибавляет к числу единицу, сдвигает на введённое количество разрядов и потом прибавляет число разрядов к результату :)
Считает сумму. Вроде 43 получится.
Александр Безруков: Не выводит.
Александр Безруков: Не выводит.
Выведет '43'. А вот зачем он такой нужен - не знаю.
элементарно же
задаем к =4
и 3 раза к*2 плюс от 1 до 3, выводим итоговый к
элементарнейший алшоритм. что именно не понятно?
задаем к =4
и 3 раза к*2 плюс от 1 до 3, выводим итоговый к
элементарнейший алшоритм. что именно не понятно?
сам по себе алгоритм выводит числа 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
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, в которой в итоге и лежит результат.
Похожие вопросы
- free pascal. пожалуйста скиньте код конкулятора для free pascal
- Объясните пожалуйста алгоритм упрощенного метода ньютона
- Какая разница между Turbo Pascal и free Pascal?
- В чем заключается отличия Turbo Pascal от Free Pascal&
- Значит такой вопрос. Для чего нужен компилятор Free pascal. Не я понимаю что это язык программирования и...
- В чём разница между free pascal и pascal
- В чём отличия Pascal ABC, Free Pascal, Lazarus, Delphi?
- Free Pascal о нем. И вообще о программировании.
- Free Pascal помогите кто шарит
- Вопрос про Free Pascal!!! помогите плз!