Задать шаг в цикле for Pascal
Вы ведь даже не пытались открыть учебник или хотя бы погуглить самостоятельно такую тривиальную задачу, не так ли?
– user302909
9 окт 2018 в 23:21
for i := 2 to 6 do Writeln(i/4);
10 окт 2018 в 1:42
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Счетчик цикла for или параметр цикла — это обычная переменная, которая может быть только порядкового (целочисленного, символьного, логического) или перечислимого типа.
При прямом направлении цикла счетчик в каждой итерации увеличивается на единицу, при обратном направлении — уменьшается на единицу.
Для дробных шагов можно воспользоваться циклом while :
a := 0.5; while a
Отслеживать
ответ дан 9 окт 2018 в 22:38
Dmitry Kozlov Dmitry Kozlov
6,698 2 2 золотых знака 15 15 серебряных знаков 30 30 бронзовых знаков
Да, с while проще. Но у меня задание сделать это с for. for i:=4 to 12 do if i mod 2=0 then begin h:=i*0.125; writeln(h:3:2); end; Это конечно не совсем то что надо, но работает.
Оператор цикла for
Кроме того, переменную можно описать непосредственно в заголовке цикла:
for переменная : тип := начальное значение to или downto конечное значение do
оператор
for var переменная := начальное значение to или downto конечное значение do
оператор
В последнем случае используется автоопределение типа переменной по типу начального значения. В двух последних случаях область действия объявленной переменной распространяется до конца тела цикла, которое в данном случае образует неявный блок. Вне тела цикла такая переменная недоступна, поэтому следующий цикл может использовать переменную с тем же именем:
for var i := 1 to 10 do
Print(i);
for var i := 1 to 5 do
Print(i*i);
Текст от слова for до слова do включительно называется заголовком цикла , а оператор после do - телом цикла . Переменная после слова for называется параметром цикла . Для первой формы цикла с ключевым словом to параметр цикла меняется от начального значения до конечного значения, увеличиваясь всякий раз на единицу, а для второй формы ключевым словом downto - уменьшаясь на единицу. Для каждого значения переменной-параметра выполняется тело цикла. Однократное повторение тела цикла называется итерацией цикла . Значение параметра цикла после завершения цикла считается неопределенным.
Переменная-параметр цикла может иметь любой порядковый тип. При этом начальное и конечное значения должны быть совместимы по присваиванию с переменной-параметром цикла.
var en: (red,green,blue,white);
.
for en := red to blue do
write(Ord(en):2);
for var c := 'a' to 'z' do
write(c);
Если для цикла for . to начальное значение переменной цикла больше конечного значения или для цикла for . downto начальное значение переменной цикла меньше конечного значения, то тело цикла не выполнится ни разу.
Если цикл используется в подпрограмме, то переменная-параметр цикла должна быть описана как локальная. Наилучшим решением в PascalABC.NET является описание переменной в заголовке цикла.
Изменение переменной-параметра цикла внутри цикла является логической ошибкой. Например, следующий фрагмент со вложенным оператором for является ошибочным:
for i := 1 to 10 do
i -= 1;
как приостановить цикл в паскале?
Как приостановить цикл?
нужно сделать чтобы каждая итерация в цикле происходила после нажатия пользователем кнопки(можно на.
Нужно приостановить цикл
Нужно приостановить цикл на n секунд. Пробовал Sleep неподходит потому как ждет а потом выбрасывает.
Возможно ли приостановить цикл Foreach?
Возможно ли приостановить цикл? Например: В базе находится 50 статей. В цикл выводит из базы.
Как в Паскале делать цикл FOR с шагом, например, 3, 5
Для примера такая программа: uses Crt; var i: integer; begin ClrScr; .
Циклы в Паскале
При решении задач может возникнуть необходимость повторить одни и те же действия несколько или множество раз. В программировании блоки кода, которые требуется повторять не единожды, оборачиваются в специальные конструкции – циклы.
У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину ( True , не ноль).
После того как достигнута последняя инструкция тела, поток выполнения снова возвращается к заголовку цикла. Снова проверяется условие выполнения цикла. В зависимости от результата тело цикла либо повторяется, либо поток выполнения переходит к следующему выражению после всего цикла.
В языке программирования Паскаль существует три вида циклических конструкций.
Цикл for
Часто цикл for называют циклом со счетчиком. В Pascal этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. То есть количество повторений известно заранее.
В заголовке цикла указываются два значения. Первое значение присваивается так называемой переменной-счетчику, от этого значения начинается отсчет количества итераций (повторений). Отсчет идет с шагом равным единице. Второе значение указывает, при каком значении счетчика цикл должен остановиться. Другими словами, количество итераций цикла определяется разностью между вторым и первым значением плюс единица. В Pascal тело цикла for не должно содержать выражений, изменяющих счетчик.
Цикл for существует в двух формах:
for счетчик := начало to конец do тело;
for счетчик := начало downto конец do тело;
Если между начальным и конечным значением счетчика указано ключевое слово to, то на каждом шаге цикла значение счетчика будет увеличиваться на единицу. Если же указано downto, то значение счетчика будет уменьшаться на единицу.
Счетчик - это переменная любого из перечисляемых типов (целого, булевого, символьного, диапазонного, перечисления). Начальные и конечные значения могут быть представлены не только значениями, но и выражениями, возвращающими совместимые с типом счетчика типы данных.
Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, уже точно известно, сколько раз цикл выполнится.
var i, n: integer; begin write('Количество знаков: '); readln(n); for i := 1 to n do write('*'); writeln; end.
Примеры выполнения кода:
Количество знаков: 5 *****
Количество знаков: 13 *************
Цикл while
В Паскаль цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true , то тело цикла выполняется, если false – то нет.
Когда тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения). Тело цикла выполнится столько раз, сколько раз логическое выражение вернет истину. Поэтому очень важно в теле цикла предусмотреть изменение переменной, которая используется в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация логической лжи. Иначе произойдет так называемое зацикливание - одна из самых неприятных ошибок в программировании.
var sum, n: integer; begin sum := 0; while sum < 100 do begin readln(n); sum := sum + n; end; writeln('Сумма: ', sum); end.
Примеры выполнения кода:
45 23 12 31 Сумма: 111
50 91 Сумма: 141
Цикл repeat
Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false . Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat – цикл с постусловием.
В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while , здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.
var sum, n: integer; begin sum := 0; repeat readln(n); sum := sum + n; until sum > 100; writeln('Сумма: ', sum); end.
35 71 Сумма: 106
