Цикл for – цикл со счетчиком. Он организует повторение цикла фиксированное количество раз, но при этом автоматически увеличивает (или уменьшает) на единицу значение параметра цикла – некоторой переменной, указанной в заголовке цикла.
Перед началом цикла параметр цикла получает значение Выражения1(в первом примере это "1". Вычисляется значение Выражения2(в первом примере это "5"). Если оно не меньше значения параметра цикла, выполняется тело цикла. Затем параметр цикла увеличивается на единицу (делается так называемый шаг). Полученное значение параметра цикла вновь сравнивается со значением Выражения2. Как только значение параметра цикла станет больше значения Выражения2, цикл завершит свое выполнение.
Здесь переменная i в цикле меняет своё значение от 1 до числа N (каждое повторение цикла будет со значением переменной i на единицу больше предыдущего)
Например, если N=4, то цикл будет повторяться 4 раза, а переменная i будет принимать при этом значения 1, 2, 3, 4 (эти значения можно использовать для каких то расчётов, но в данном случае мы их не используем, нам просто нужно чтобы цикл повторился нужное число раз).
При каждом повторении цикла, выполняются команды из тела цикла. В данном случае выполняться будет только одна команда write, идущая сразу после оператора цикла.
Если бы сразу после цикла шёл блок begin ... end; то внутри него можно поместить много команд, и все они будут принадлежать к телу этого цикла. Например, вот такая программа, выполняющая те же действия:
var K,N,i: integer;
begin
read(K,N);
for i := 1 to N do
begin
write(K);
write(' ');
end;
end.
Так вот, при каждом повторении цикла, срабатывала наша команда вывода значения переменной K на экран (и после неё ещё и пробел). Вот и получилось в результате четыре раза подряд вывели значение K на экран.
Ещё можно сделать "финт ушами", и убрать одну переменную, сделав N одновременно и переменной, куда мы задаём количество повторений, и переменной цикла. Не знаю, насколько это вообще законно :) и не уверен, что это сработает во всех версиях Паскаля, но вот как это выглядит:
var K,N: integer;
begin
read(K,N);
for N := 1 to N do
write(K,' ');
end.
2 votes Thanks 1
Ziorar
А вообще, если не нужна переменная цикла, а только число повторов, то для этого есть цикл loop:
var K,N: integer; begin read(K,N); loop N do write(K,' ') end.
Также, вывод можно делать через print (тогда пробел добавлять не надо, он добавится сам). Заголовок цикла и команду вывода можно кстати писать в одной строке:
var K,N: integer; begin read(K,N); loop N do print(K) end.
ibragimovramis223
бро, у меня в этой программе var K,N: integer; begin read(K,N); loop N do write(K,' ') end.
Ziorar
Значит, как я и говорил ранее, у тебя не та версия Паскаль, про которую я пишу (у меня если что PascalABC.NET v.3.4.2.1837 -она тоже уже довольно старая, но цикл loop в ней есть. а в твоей версии- значит нет его). Используй программу с циклом for
Answers & Comments
Ответ:
Цикл for – цикл со счетчиком. Он организует повторение цикла фиксированное количество раз, но при этом автоматически увеличивает (или уменьшает) на единицу значение параметра цикла – некоторой переменной, указанной в заголовке цикла.
Перед началом цикла параметр цикла получает значение Выражения1(в первом примере это "1". Вычисляется значение Выражения2(в первом примере это "5"). Если оно не меньше значения параметра цикла, выполняется тело цикла. Затем параметр цикла увеличивается на единицу (делается так называемый шаг). Полученное значение параметра цикла вновь сравнивается со значением Выражения2. Как только значение параметра цикла станет больше значения Выражения2, цикл завершит свое выполнение.
Объяснение:
надеюсь, понятно объяснил
Verified answer
Вот пример такой программы:
var K,N,i: integer;
begin
read(K,N);
for i := 1 to N do
write(K,' ');
end.
Здесь переменная i в цикле меняет своё значение от 1 до числа N (каждое повторение цикла будет со значением переменной i на единицу больше предыдущего)
Например, если N=4, то цикл будет повторяться 4 раза, а переменная i будет принимать при этом значения 1, 2, 3, 4 (эти значения можно использовать для каких то расчётов, но в данном случае мы их не используем, нам просто нужно чтобы цикл повторился нужное число раз).
При каждом повторении цикла, выполняются команды из тела цикла. В данном случае выполняться будет только одна команда write, идущая сразу после оператора цикла.
Если бы сразу после цикла шёл блок begin ... end; то внутри него можно поместить много команд, и все они будут принадлежать к телу этого цикла. Например, вот такая программа, выполняющая те же действия:
var K,N,i: integer;
begin
read(K,N);
for i := 1 to N do
begin
write(K);
write(' ');
end;
end.
Так вот, при каждом повторении цикла, срабатывала наша команда вывода значения переменной K на экран (и после неё ещё и пробел). Вот и получилось в результате четыре раза подряд вывели значение K на экран.
Ещё можно сделать "финт ушами", и убрать одну переменную, сделав N одновременно и переменной, куда мы задаём количество повторений, и переменной цикла. Не знаю, насколько это вообще законно :) и не уверен, что это сработает во всех версиях Паскаля, но вот как это выглядит:
var K,N: integer;
begin
read(K,N);
for N := 1 to N do
write(K,' ');
end.
var K,N: integer;
begin
read(K,N);
loop N do
write(K,' ')
end.
Также, вывод можно делать через print (тогда пробел добавлять не надо, он добавится сам). Заголовок цикла и команду вывода можно кстати писать в одной строке:
var K,N: integer;
begin
read(K,N);
loop N do print(K)
end.
begin
read(K,N);
loop N do
write(K,' ')
end.