На главную Самоучитель pascal Форум программистов онлайн Решение задач pascal Задачи pascal Поиск
12 Июн 13

Циклы в паскале


Комментарии :  0        Просмотры :  6815



Операторы цикла в паскале

Циклы - одна из самых больших тем в паскале , по совместительству одна из самых сложных.
Но так как сам по себе язык паскаль довольно простой , то и циклы не будут такими трудными для понимания.

Что такое цикл , для чего он нужен , как используется и другое

Что такое цикл. Цикл - это повторения определенного участка кода N количество раз. Циклы также можно встретить в повседневной жизни и при этом довольно часто. Например : мыть посуду пока она не закончится.
Циклы имеют свои условия окончания , например : пока a больше b.

В языке программирования pascal предусмотрено 3 вида циклов. Первый цикл это for , второй - while, третий - repeat. Все они немного отличаются друг от друга и все же они довольно простые.

Цикл for :


Цикл for

Результат выполнения данной программы будет таким - на экран будут выведены цифры 1 , 2 , 3 , 4 и 5.
На картинке показано как именно записывается этот самый цикл for. Вначале пишется слово for далее мы обозначаем переменную - счетчик и задаем ей начальное значение , в нашем случае это переменная i ( i:= 1 ).
Её значение ( которое мы задали ) равно 1 , переменной - счетчику можно задать любое целое значение , например : 0,1,2,3 ...
Важно запомнить , что переменная счетчик ( её тип ) должен быть целым !
Далее пишется слово to и после него целое число ( конечное значение переменной -счетчика ). В конце слово do ( делай ).

После слова do идет тело цикла ( команды ). Следует помнить о том , что в теле цикла выполняется только первая команда. Для того , чтобы в теле цикла выполнялось сразу несколько команд их следует заключать в блок begin end.

Цикл for


Коротко о том , как работает этот цикл , в чем его преимущество и как его можно использовать. Вначале работы цикла переменная i равна 1 , далее выполняется первый шаг цикла . После того , как тело цикла будет выполнено , переменная счетчик возрастает на 1.
Поэтому после переменная i равна двум. И так далее пока i не станет равна 5 , при этом тело цикла выполнится , когда переменная i равна 5.

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

Цикл for


Цикл while :


Отличие цикла while от цикла for заключается в том , что цикл while не имеет переменную счетчика . Аналог работы программы , которая выводит циклом for 5 цифр будет выглядеть так :

Цикл while


Как видно по картинке , в этом виде цикла есть только условие , в нашем случае это - пока i меньше либо равно 5 ( до цикла мы задали переменной i значение 1 ). Тело цикла заключается в блок begin end , так как они нужны для использования нескольких команд ( больше одной ) в цикле.
Внутри тела цикла увеличиваем переменную i , для того чтобы наш цикл мог закончиться , когда переменная i станет больше 5.


Немного о том , как работает данные цикл. Вначале работы цикла проверяется условие , если оно истинно , то выполняется тело цикла. После выполнения тела цикла снова проверяется условие , если оно истинно то тело выполнится ещё раз. И так далее пока условие не станет ложным. Как только условие становится ложным , тело цикла не выполняется и программа идет дальше.


Цикл repeat :


Данный вид цикла мало отличается от цикла while . Отличие заключается только в том , что цикл заканчивается , когда условие станет истинным , в отличии от цикла while , в котором цикл заканчивается при ложном условии. А также для использования нескольких команд , теперь нам не нужен блок begin end.

Цикл repeat


Такой цикл закончится тогда , когда переменная i станет больше 5. Тело цикла записывается между словами repeat until.

Как вы понимаете ничего сложного в теме циклов нет , но понимать что это такое и для чего они нужно стоит. Для решения задачи вы можете использовать любой из трех видов. Лично я чаще всего использую цикл For , однако есть такие задачи , которые не решить одним видом цикла.

Вложенные циклы :

В аналогии с условиями , любые циклы могут вкладываться друг в друга. Внутри каждого цикла могут быть ещё несколько циклов , а внутри них ещё несколько. Все это позволяет решать множество задач на языке паскаль. Например нам требует заполнить двумерный массив случайными числами. Это будет выглядеть примерно так :

Код

program mypascal;
uses
crt;
var
a: array[1..10,1..10] of integer;
i,i1:integer;
begin

  for i:= 1 to 10 do
  for i1:= 1 to 10 do
  a[i,i1]:= random(11)+1;

end.

Break :

Команда break позволяет выйти из цикла в любое время и на любом шаге. Данная команда довольно часто используется , поэтому вам следует запомнить её. Для чего нужна команда break ? Допустим , мы имеем очень большой массив с числами ,в котором нам нужно найти всего одно отрицательное число ( меньше 0 ). Как только цикл находит первое отрицательное число мы можем выйти из него , так как остальные шаги в цикле будут бесполезны и займут очень большое время. Как это работает :

Код

program mypascal;
uses
crt;
var
a: array[1..1000] of integer;
i:integer;
begin

  for i:= 1 to 1000 do
  a[i]:= random(21)-10;
   
  for i:= 1 to 1000 do
  if ( a[i] < 0 ) then
  begin
   
  writeln(a[i]);
  break;
   
  end;

end.


Вначале программы мы заполняем массив длинной в 1000 ячеек ( диапазон значений от -10 до 10 ). После это начинаем цикл. Как только находим отрицательное число , выводим его и выходим из цикла , чтобы не тратить время. При этом переменная i будет равна шагу , на котором было найдено отрицательное число.

Continue :

Данная команда работает почти так же как и break , однако она не выходит из цикла , а лишь завершает шаг , на котором находится цикл. Если мы поставим команду contineu в середине тела цикла , то цикл будет выполнять лишь половину цикла.

Рейтинг материала : ( 5 / 2 )
Сообщить об ошибке
Комментарии :  0        Просмотры :  6815

Поиск

Решение задач

Если вас интересует решение какой-либо задачи , то вы можете опубликовать
её условие на нашем сайте или форуме. И в скором времени другие пользователи помогут вам.

Опубликовать на сайте

Опубликовать на форуме

Опрос

Какой ваш любимый раздел ?