Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Многократно повторяющиеся действия

Иногда необходимо повторить определенные действия в программе. Повторение некоторой последовательности действий называется циклом. Саму последовательность повторяющихся действий называют телом цикла.

Если число повторений известно заранее, то используется структура, которая называется циклом с заданным (известным) числом повторений, или циклом со счетчиком. Этот вид цикла является частным случаем цикла с условием. Мы начинаем с этого вида цикла в силу его простоты и наглядности.

 

Оператор цикла for

На языке Паскаль повторение некоторой последовательности действий известное число раз выполняет оператор for. Подсчет количества выполняемых действий осуществляется при помощи специальной переменной — счетчика. Поэтому цикл for называют иногда циклом со счетчиком. Цикл for на Паскале может быть представлен в двух формах.

Первая форма последовательно наращивает счетчик:
for<переменная порядкового типа>:=<начальное значение> to <конечное значение> do <оператор>

Вторая форма последовательно уменьшает счетчик:
for<переменная порядковоготипа>:=<начальное значение> downto <конечное значение> do <оператор>

Оператор for с последовательным увеличением счетчика

Пример 6.1.
Вывод на экран квадратов чисел от 1 до 10

Program Test1;
var N: integer;
begin
for N:=l to 10 do { Переменная N будет меняться от 1 до 10 с шагом 1 }
writeln(sqr(N)); { Эта строка - тело цикла. Оно выполняется 10 раз }
readln
end.

Поясним пример 6.1.
Переменная N является счетчиком цикла. Счетчик цикла всегда должен иметь порядковый тип (то есть он не может иметь тип real). В операторе for указаны его начальное и конечное значения. Начальное значение не обязательно равно 1!
При первом выполнении тела цикла N = 1, при втором — N = 2, и т. д. При последнем выполнении тела цикла N = 10. Каждый раз перед выполнением тела цикла текущее значение N сравнивается с конечным. После каждого выполнения тела цикла переменная N увеличивается на 1.

Рис. 6.1. Блок-схема организации цикла в примере 6.1

Как только N превысит конечное значение, выполнение цикла прекращается. Считается, что после окончания цикла переменная цикла не определена (то есть в разных реализациях языка Паскаль она может принимать разные значения). Иными словами, неправильно считать, что после окончания цикла переменная-счетчик цикла имеет какое-то определенное значение.
Крайне не рекомендуется внутри цикла самостоятельно менять счетчик цикла, особенно в сторону уменьшения. Это может привести к «зацикливанию» программы (бесконечному повторению тела цикла).

 

Оператор for с последовательным уменьшением счетчика

Счетчик может изменяться с шагом -1.
Это вторая форма оператора for (for... downto ... do).

Пример 6.2.
Вывод на экран кубов чисел от 11 до 5

Program Test2;
var
N: integer;
begin
for N:=11 downto 5 do { Счетчик N изменяется с шагом -1 }
write(N*N*N:5); { Эта строка - тело цикла; оно выполняется 8 раз, так как N изменяется от 11 до 5 с шагом -1 }
writeln; { Этот оператор нужен, чтобы закончить вывод чисел в одну строку }
readln
end.

Применение циклов со счетчиком

Можно организовать выполнение одного цикла внутри другого. В этом случае различают внешний и внутренний циклы — например, когда при каждом значении счетчика внешнего цикла нужно несколько раз выполнить какое-то действие (внутренний цикл). Счетчик внешнего цикла изменяется медленнее, чем счетчик внутреннего.

Цикл в цикле
Рассмотрим задачу вывода последовательности пар чисел:

11
12
13
14
21
22
23
24
31
32
33
34

Блок-схема алгоритма решения задачи показана на рис. 6.2.

Рис. 6.2. Блок-схема алгоритма с вложенными циклами, выводящего последовательность из примера 6.2

 

Пример 6.3.
Использование цикла в цикле

Program Test3
var
К: integer;
begin
for K:=l to 3 do
for M:=l to 4 do
writeln(K,' ',M); { Пробел в апострофах между К и М нужен для того, чтобы эти числа не сливались друг с другом }
readln
end.

 

Для каждого значения переменной К переменная М меняется от 1 до 4. Нетрудно подсчитать, что в этом случае оператор writeln выполнится 12 раз.

Задание 6.1.
Вывести на экран 6 раз свое имя.

Задание 6.2.
Вывести на экран таблицу умножения для 5 чисел от 9 до 4.

Задание 6.3.
Вывести на экран коды таблицы ASCII от 0 до 255 и их символы. Выводить парами код и символ.




 

Комментарии:

2012-11-12 ответил Саша

for N:=l to 10 do откуда l взяли)



2012-11-19 ответил ярик

l это не эль, а 1(один) for N:=l to 10 do (от одного до 10 делать...)



2013-09-19 ответил АНТОН98РУС

ПОТОМУ ЧТО ЭТО ЭЛ, ТОТ КТО ПИСАЛ ЭТО ИДИОТ НЕ РАЗЛИЧАЮЩИЙ l от 1



2013-11-12 ответил =)

Уважай чужой труд. Когда много пишеш можно не замечать мелких ошибок!



2014-10-11 ответил Виталий

=), ошибок уж очень много встречается. Тогда стоило найти корректора, который бы проверял ошибки в символьной части статьи



2015-03-29 ответил Виктор

Ошибок много потому что использовали распознавание текста!!!



2015-06-25 ответил слава

ошибки что б всякие лохи и дибилы не копировали.



2015-11-02 ответил Эльдар

1



2015-11-02 ответил Эльдар

1



2016-04-13 ответил Иисус

Да Блогословит вас бох



2016-04-13 ответил пучеглазая скотина

да я ваш рот шатал:)



2016-04-13 ответил Степной Лох

Ненавижу вашу информатику и вас всех



2016-04-13 ответил Windforce

Годнота, норм статья МЛП



2016-06-15 ответил Андрей

норм



2017-01-07 ответил Faerlorym

Как определить кол-во циклов for?



2018-02-07 ответил



2018-05-28 ответил motya




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


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru