Как в цикле for установить шаг паскаль
Перейти к содержимому

Как в цикле for установить шаг паскаль

  • автор:

как в pascal в цикле for задать шаг 0.5

var
i: integer;
l:real;
begin
write(‘enter w: ‘);
l:=0;
for i:=1 to 10 do
begin
write(l,’ ‘);
l:=l+(0.5);
end;
end.

Елена Коптелова

использовать не служебный счетчик, а указать приращение самостоятельно, в конце цикла перед возвратом в начало.

Василий Юртайкин

В Паскале нельзя для цикла for использовать шаг кроме +1 или -1, которые регулируются служебными словами to и downto соответственно.

Но можно воспользоваться делением попалам.
К примеру нужно получить значения от 0 до 10 с шагом 0.5, тогда:

for i := 0 to 20 do
begin
h := i / 2;
… далее обращаемся не к i, а к h
end;

Хотя, я бы лучше советовал в таком случае воспользоваться циклом while, а лучше всего repeat…until

Никак, только с помощь цикла while!

Как в цикле for установить шаг паскаль

Сообщение от Serge_Bliznykov

то, что это позволяет сделать древний и наивный досовский TurboPascal
не означает, что так можно поступать!
Это раз.

а во вторых, ну попробуйте этот же код выполнить в Delphi..
Вы будете удивлены.
[Error] xxxxx.pas(xxx): Assignment to FOR-Loop variable ‘i’

Название темы «Изменение шага фор в (паскаль)»

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование с увеличением шага Avgur2000 Microsoft Office Excel 6 01.12.2010 14:05
Цикл, время выполнения шага KiDoki Общие вопросы Delphi 9 19.12.2008 22:37
Задача/Pascal/графический режим/пошаговое изменение цвета Чайникус Помощь студентам 1 02.05.2008 18:07

Задать шаг в цикле 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;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *