Циклы: For

В нашей жизни много действий повторяются время от времени: каждый день мы ходим в школу, в школе мы присутствуем на уроках и т.д.
Но здесь есть 1 момент. Мы точно знаем, что в школу мы ходим с 1-го до примерно 270 дня, каждый день в школе в среднем мы присутствуем с 1-го по 6-ой урок. Это важно. В каждом случае мы знаем начальное и конечное значение.
Это было отступление. Теперь вернемся к нашему предмету.
В самом начале мы писали программу вывода на экран сообщения ‘Hello World’ и это выглядело так:

begin
writeln('Hello World');
Writeln('Press Enter to Exit');
readln;
end.

Усложним задачу. Выведем наше сообщение 2 раза.

begin
writeln('Hello World');
writeln('Hello World');
Writeln('Press Enter to Exit');
readln;
end.

Усложним задачу. Выведем наше сообщение 4 раза.

begin
writeln('Hello World');
writeln('Hello World');
writeln('Hello World');
writeln('Hello World');
Writeln('Press Enter to Exit');
readln;
end.

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

begin
writeln('Hello World');
...998 раз...
writeln('Hello World');
Writeln('Press Enter to Exit');
readln;
end.

Для выполнения однообразных действий, которые нужно выполнить известное количество раз в Паскале существует циклическая структура FOR с параметром.
Общий вид (2 варианта)

FOR счетчик:=начальное значение TO конечное значение DO
FOR счетчик:=конечное значение DOWNTO начальное значение DO

Для первого случая: начальное значение<=конечное значение
Для второго случая: конечное значение>=начальное значение
Разберем что входит в эту структуру.
<счетчик> — это переменная целого типа (Integer) которая «про себя» считает, сколько раз выполнилось то что нам нужно по условию задачи. Чаще всего переменную счетчик называют i или j или k.
Когда мы считаем от минимального значения к максимальному, то пишем

FOR счетчик:=минимальное значение TO максимальное значение DO 

Когда мы считаем от максимального значения к минимальному то пишем

FOR счетчик:=максимальное значение DOWNTO минимальное значение DO 

ВАЖНО: счетчик увеличивается только на 1 (либо +1, либо -1).
ВАЖНО: после слова DO точка с запятой НЕ СТАВИТСЯ
ВАЖНО: те команды, которые выполняются в цикле — называют телом цикла
ВАЖНО: счетчик, начальное и конечное значение промежутка — Целого типа (Integer)

Начальное и конечное значение — это ОТ скольки и ДО скольки считать, или верхний и нижний порог нашего промежутка. Вернемся к нашему примеру о печати приветствия 1000 раз.

var i:integer;
begin

for i:=1 to 1000 do
writeln('Hello World');

Writeln('Press Enter to Exit');
readln;
end.


Выполняется цикл FOR следующим образом:

переменной-параметру присваивается начальное значение;
выполняется тело цикла;
переменная-параметр автоматически увеличивается/уменьшается на 1 ;
если параметр превышает конечное значение, то происходит выход из цикла, иначе — переход к пункту 2.
А что делать, если нужно выполнить несколько действий. Вспоминаем команду ветвления. Если условие выполняется и нужно выполнить несколько действий — мы использовали командные скобки BEGIN END. Аналогично поступаем и в этом случае.

Вывести 10 раз слово Hello и его порядковый номер.

 
var i:integer;
begin

for i:=1 to 10 do
begin
write(i);
writeln(' Hello');
end;

Writeln('Press Enter to Exit');
readln;
end.

Простая задача
Вывести на экран числа от 1 до 15

var i:integer;
begin

for i:=1 to 15 do
write(i,' ');

Writeln('Press Enter to Exit');
readln;
end.

Простая задача
Вывести на экран числа от 15 до 1

var i:integer;
begin

for i:=1 downto 15 do
write(i,' ');

Writeln('Press Enter to Exit');
readln;
end.

Простая задача. Вывести на экран квадраты и кубы чисел от 1 до 10
Нам нужно вычислить квадрат и куб числа и вывести его на экран. Причем 10 раз

var i:integer;
begin

for i:=1 to 10 do
begin
writeln(i,' в квадрате =',i*i);
writeln(i,' в кубе =',i*i*i);
end;

Writeln('Press Enter to Exit');
readln;
end.

Сделать тоже самое, но в обратном порядке.

var i:integer;
begin

for i:=10 downto 1 do
begin
writeln(i,' в квадрате =',i*i);
writeln(i,' в кубе =',i*i*i);
end;

Writeln('Press Enter to Exit');
readln;
end.

В начальной школе вы изучали таблицу умножения. Давайте выведем таблицу умножения на 2. Изменяя значение n можно получить разные таблицы умножения.

var n,i,res:integer;
begin
n:=2;
for i:=1 to 10 do
begin
res:=n*i;
writeln(n,' * ',i:2,' = ',res:2);
end;

Writeln('Press Enter to Exit');
readln;
end.

Можно усовершенствовать данную программу. Сделаем запрос значения n.

var n,i,res:integer;
begin
Write('N=');readln(n);
for i:=1 to 10 do
begin
res:=n*i;
writeln(n,' * ',i:2,' = ',res:2);
end;

Writeln('Press Enter to Exit');
readln;
end.

В средней школе при изучении функции y=x*x вы строили таблицу для построения графика по точкам. Напишем программу, которая позволит нам автоматизировать этот процесс.
Найти значения функции на промежутке [-10,10] с шагом 1.

var x,y:integer;
begin

for i:=-10 to 10 do
begin
y:=x*x;
writeln('При х=',x:3,' Y=',y:3);
end;

Writeln('Press Enter to Exit');
readln;
end.

Важно понимать, что начальное и конечное значение счетчика For можно передавать как переменные. Усложним предыдущую задачу.
Найти значения функции Y=1/(x*x+2) на промежутке [a,b] с шагом 1.
Переменная Y не является целым числом. Важно что бы счетчик, начальное и конечное значения были целого типа.

var x:integer;
 y:real;
 a,b:integer; 
begin
Write('a=');readln(a);
Write('b=');readln(b);
for x:=a to b do
 begin
 y:=1/(x*x+2);
 writeln('При х=',x:3,' Y=',y:3:3);
 end;

Writeln('Press Enter to Exit');
readln;
end.

Что нужно запомнить:

Общую структуру команды цикла с параметром.
Команда For используется когда известно количество повторений (начальное и конечное значения) и шаг 1.
В команде For счетчик и параметры должны быть целого типа (Integer).
Счетчик изменяется с шагом (+1) для слова ТО (возрастание) и (-1) для слова DOWNTO (спадание)
Тело цикла это набор команд между BEGIN — END.
Изменять значение счетчика в теле цикла НЕЛЬЗЯ

Если тело цикла состоит из одной команды BEGIN — END можно не писать

for i:=1 downto 15 do
write(i,' ');

Если тело цикла состоит из двух и более команды обязательно использовать BEGIN — END

for i:=10 downto 1 do
begin
writeln(i,' в квадрате =',i*i);
writeln(i,' в кубе =',i*i*i);
end;

В команду цикла можна передавать значения переменных, для начального и конечного значения

for x:=a to b do
begin
y:=1/(x*x+2);
writeln('При х=',x:3,' Y=',y:3:3);
end;

Выполняется цикл FOR следующим образом:
1. переменной-параметру присваивается начальное значение;
2. выполняется тело цикла;
3. переменная-параметр автоматически увеличивается/уменьшается на 1 ;
4. если параметр превышает конечное значение, то происходит выход из цикла, иначе — переход к пункту 2.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии