Готовые программы на паскаль циклы

Готовые программы на паскаль циклы thumbnail

При решении задач может возникнуть необходимость повторить одни и те же действия несколько или множество раз. В программировании блоки кода, которые требуется повторять не единожды, оборачиваются в специальные конструкции – циклы. У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину (True, не ноль). После того как достигнута последняя инструкция тела, поток выполнения снова возвращается к заголовку цикла. Снова проверяется условие выполнения цикла. В зависимости от результата тело цикла либо повторяется, либо поток выполнения переходит к следующему выражению после всего цикла.

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

Блок схемы циклов

Цикл for

Часто цикл for называют циклом со счетчиком. Этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. Т.е. количество повторений может быть вычислено заранее (хотя оно не вычисляется).

В заголовке цикла указываются два значения. Первое значение присваивается так называемой переменной-счетчику, от этого значения начинается отсчет количества итераций (повторений). Отсчет идет всегда с шагом равным единице. Второе значение указывает, при каком значении счетчика цикл должен остановиться. Другими словами, количество итераций цикла определяется разностью между вторым и первым значением плюс единица. В Pascal тело цикла не должно содержать выражений, изменяющих счетчик.

Цикл 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 (‘(*) ‘); readln end.

Цикл while

Цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, если false – то нет.

Когда тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения). Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация false. Иначе произойдет так называемое зацикливание, одна из самых неприятных ошибок в программировании.

var i, n: integer; begin write (‘Количество знаков: ‘); readln (n); i := 1; while i <= n do begin write (‘(*) ‘); i := i + 1 end; readln end.

Цикл repeat

Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false. Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat – цикл с постусловием.

В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.

var i, n: integer; begin write (‘Количество знаков: ‘); readln (n); i := 1; repeat write (‘(*) ‘); i := i + 1 until i > n; readln end.

В примере, даже если n будет равно 0, одна звездочка все равно будет напечатана.

Источник

Вывод последовательностей 1 2 3 4 5 и 5 4 3 2 1

var i: integer; begin // С помощью for for i := 1 to 5 do write(i,’ ‘); writeln; for i := 5 downto 1 do write(i,’ ‘); writeln; writeln; // С помощью while i := 1; while i<=5 do begin write(i,’ ‘); i := i + 1; end; writeln; i := 5; while i>=1 do begin write(i,’ ‘); i := i – 1; end; writeln; writeln; // С помощью repeat i := 1; repeat write(i,’ ‘); i := i + 1; until i>5; writeln; i := 5; repeat write(i,’ ‘); i := i – 1; until i<1; writeln; end.

Вывод последовательности 1 3 5 7 9

var i,x: integer; begin // С помощью for и промежуточной переменной x := 1; for i := 1 to 5 do begin write(x,’ ‘); x := x + 2; end; writeln; // С помощью for без промежуточной переменной for i := 1 to 5 do write(2*i-1,’ ‘); writeln; // С помощью while x := 1; while x<10 do begin write(x,’ ‘); x := x + 2; end; writeln; // С помощью repeat x := 1; repeat write(x,’ ‘); x := x + 2; until x>=10; end.

Сумма и произведение введенных чисел

Код на Pascal

var i: integer; s,p: real; x: real; begin writeln(‘Введите 10 чисел: ‘); s := 0; p := 1; for i := 1 to 10 do begin read(x); s := s + x; p := p * x; end; writeln(‘Сумма введенных чисел = ‘,s); writeln(‘Произведение введенных чисел = ‘,p); end.

Код на PascalABC.NET

var s,p: real; begin writeln(‘Введите 10 чисел: ‘); s := 0; p := 1; for var i := 1 to 10 do begin var x: integer; read(x); s += x; p *= x; end; writeln(‘Сумма введенных чисел = ‘,s); writeln(‘Произведение введенных чисел = ‘,p); end.

Вычисление n!

Код на Pascal

var n,fact: integer; i: integer; begin write(‘Введите n (n<=13): ‘); readln(n); fact := 1; for i := 2 to n do fact := fact * i; writeln(n,’! = ‘,fact); end.

Код на PascalABC.NET

var n: integer; begin write(‘Введите n (n<=13): ‘); readln(n); var fact := 1; for var i := 2 to n do fact *= i; writeln(n,’! = ‘,fact); end.

Вычисление An

Код на Pascal

var n,i: integer; a,p: real; begin write(‘Введите a,n: ‘); readln(a,n); p := 1; for i := 1 to n do p := p * a; writeln(a,’ в степени ‘,n,’ = ‘,p); end.

Код на PascalABC.NET

var n: integer; a: real; begin write(‘Введите a,n: ‘); readln(a,n); var p := 1.0; for var i := 1 to n do p *= a; writelnFormat(‘{0} в степени {1} = {2}’,a,n,p); end.

Читайте также:  Место повести портрет в петербургском цикле

Вывод цифр числа

var x: integer; begin write(‘Введите x: ‘); readln(x); write(‘Цифры числа x в обратном порядке: ‘); while x<>0 do begin write(x mod 10,’ ‘); x := x div 10; end; end.

Вывод букв английского алфавита

var c: char; begin for c := ‘a’ to ‘z’ do write(c,’ ‘); writeln; c := ‘A’; while c<=’Z’ do begin write(c,’ ‘); c := succ(c); end; end.

Числа Фибоначчи

Код на Pascal

const n = 25; var a,b,c: integer; i: integer; begin a := 1; b := 1; write(a,’ ‘,b,’ ‘); for i := 3 to n do begin c := a + b; write(c,’ ‘); a := b; b := c; end; end.

Код на PascalABC.NET

const n = 25; begin var a := 1; var b := 1; write(a,’ ‘,b,’ ‘); for var i := 3 to n do begin var c := a + b; write(c,’ ‘); a := b; b := c; end; end.

Минимум из введенных

Код на Pascal

const n = 10; var min: integer; x: integer; i: integer; begin writeln(‘Введите ‘,n,’ значений: ‘); read(x); min := x; for i := 2 to n do begin read(x); if x<min then min := x; end; writeln(‘Минимальное значение = ‘,min); end.

Код на PascalABC.NET

const n = 10; var min: integer; begin writelnFormat(‘Введите {0} значений: ‘,n); min := integer.MaxValue; for var i := 1 to n do begin var x: integer; read(x); if x<min then min := x; end; writeln(‘Минимальное значение = ‘,min); end.

Алгоритм Евклида поиска НОД

begin var (a,b) := ReadInteger2(‘Введите a,b: ‘); while b<>0 do begin var c := a mod b; a := b; b := c; end; Writeln(‘Наибольший Общий Делитель = ‘,a); end.

Вывод таблицы умножения

Код на PascalABC.NET

const n = 9; begin for var i:=1 to n do begin for var j:=1 to n do write(i*j:4); writeln; end; end.

Определение простоты числа

begin var N := ReadlnInteger(‘Введите целое (>1): ‘); var IsPrime := True; for var i:=2 to Round(Sqrt(N)) do // если число составное, то один из его сомножителей <= sqrt(N) if N mod i = 0 then begin IsPrime := False; break; end; if IsPrime then Writeln(‘Число ‘,N,’ простое’) else Writeln(‘Число ‘,N,’ составное’); end.

Ссылки

  • Программы для начинающих
  • Сайт PascalABC.NET: Программы и алгоритмы для начинающих

Источник

Циклы

Здравствуйте, дорогие читатели! Вот мы с вами и подошли к изучению циклов. Циклы в Паскаль. Что это такое? Как этим пользоваться? Для чего они нужны? Именно на эти вопросы я сегодня и отвечу.

Если вы читали этот урок, то знаете, что существует три вида алгоритмов: линейный, разветвляющийся и циклический. Мы с вами уже знаем, как реализовывать линейные и разветвляющиеся алгоритмы на Паскале. Приступим к изучению последнего типа алгоритмов.

В языке Pascal, как и в большинстве языков программирования, существует три типа циклических конструкций.

Циклы

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

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

Задача 1. Вывести все числа от 1 до числа, введенного с клавиатуры.

While, или цикл с предусловием

Как вы, наверное, уже поняли из названия, while – это цикл, в котором условие стоит перед телом. Причем тело цикла выполняется тогда и только тогда, когда условие true; как только условие становится false, выполнение цикла прекращается.

While имеет формат:

while < условие> do <оператор 1>; {Пока … делай ….}

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

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

program example_while; var i, N: integer; { объявляем переменные } begin i := 1; { Присваиваем i значение 1 } readln(N); { Считываем последнее число } while i <= N do {Как только i станет больше N, цикл прекратится (можно было бы написать просто <, но пришлось бы добавлять 1 к N) } begin {Открываем операторные скобки} write(i, ‘ ‘); {Выводим i} Inc(i); {увеличиваем i на один.} end; { закрываем скобки } end.

Repeat, или цикл с постусловием

Repeat – полная противоположность while. Repeat – это цикл, в котором условие стоит после тела. Причем оно выполняется тогда и только тогда, когда результат условия false; как только логическое выражение становится true, выполнение цикла прекращается.

Repeat имеет формат:

repeat { повторяй … }

<оператор 1>;

< оператор 2>;

until {до…} <условие>

Begin и end не требуются.

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

program example_repeat; var i, N: integer;{ объявляем переменные } begin i := 1; { Присваиваем i значение 1 } readln(N); { Считываем последнее число } repeat {после repeat не требуется begin и end } write(i, ‘ ‘); {Выводим i} Inc(i); {увеличиваем i на один.} until i = N + 1; {Например, i = 11, а N = 10. Цикл прекратится, так условие стало true.} end.

For, или цикл с параметром

For – это цикл, в котором тело выполняется заданное количество раз.

Существует две формы записи этого цикла:

Первая форма

for <счетчик1> := <значение1> to <конечное_значение> do <оператор1>;

После каждой итерации значение <счетчик1> будет увеличиваться на 1.

<значение1> – это начальное значение счетчика. Это может быть переменная или число.

<конечное_значение> : как только значение <счетчик1> станет больше <конечное_значение>, выполнение цикла прекратится.

Если требуется написать несколько операторов в теле цикла, используем begin и end.

И <счетчик1>, и <конечное_значение>, и <значение1> – переменные целого типа.

Чаще всего в качестве счетчика используется переменная i.

Вторая форма

for <счетчик2> := <значение2> downto <конечное_значение> do <оператор1>;

После каждой итерации значение <счетчик2> будет уменьшатся на 1.

<значение2> – это начальное значение счетчика.

<конечное_значение> : как только значение <счетчик2> станет меньше <конечное_значение>, выполнение цикла прекратится.

Два важных примечания:

  1. Цикл повторяется, пока значение значение счетчика лежит в отрезке [значение ; конечное_значение].
  2. Изменять значение счетчика внутри тела нельзя! Вот что выводит компилятор:

for

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

program example_for; var i, N: integer; begin read(N); {предположим, что мы ввели 10} for i := 1 to N do write(i, ‘ ‘); {количество итераций – 10 – 1 + 1 = 10} end.

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

Читайте также:  Суточные циклы в жизни животных

Давайте решим пару задач.

For1. Даны целые числа K и N (N > 0). Вывести N раз число K.

Организовываем простой цикл от 1 до требуемого числа.

program for1; var K, N, i: integer; begin read(K, N); for i := 1 to N do write(K, ‘ ‘); {Пишем К через пробел } end.

For2. Даны два целых числа A и B (A < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.

Так как A < B, то цикл должен будет выводить все числа от А до B. Чтобы сосчитать количество чисел, используем формулу: <конечное_значение> – <начальное_значение> + 1.

program for2; var A, B, i, count: integer; begin read(A, B); for i := A to B do write(i, ‘ ‘); {выписываем числа от меньшего к большему} count := B – A + 1; {считаем количество чисел} writeln; write( ‘Количество чисел – ‘, count); end.

For9. Даны два целых числа A и B (A < B). Найти сумму квадратов всех целых чисел от A до B включительно.

Организовываем такой же цикл, как и в предыдущей задаче, но одновременно суммируем квадраты всех чисел. Чтобы высчитать квадрат, используем функцию Sqr.

program for9; var A, B, i, S: integer; begin read(A, B); S := 0; {PascalABC делает это автоматически, но если у вас другой компилятор советуем обнулять переменные вручную} for i := A to B do S := S + Sqr(i); {складываем все квадраты} writeln; write( ‘Сумма квадратов – ‘, S); end.

For13°. Дано целое число N (> 0). Найти значение выражения 1.1 – 1.2 + 1.3 – … (N слагаемых, знаки чередуются). Условный оператор не использовать.

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

program for13; var N, A, i: integer; S: real; begin Write(‘N = ‘); readln(N); S := 1.1; A := 1; {Сначала положительное} for i := 2 to N do {первую итерацию цикла мы уже произвели, поэтому начинаем отсчет с 2} begin A := -A; {Теперь отрицательное} S := S + A * (1 + i / 10); {Складываем} end; Writeln(S:5:1); {Отдадим под дробную часть одно знакоместо} end.

While1°. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.

Каждый раз вычитаем B из А, пока А – В >= 0.

program while1; var A, B: integer; begin readln(A, B); while (A – B) >= 0 do A := A – B; {Пока разница положительная, вычитаем. Необходимо предусмотреть вариант с кратностью А и B, поэтому >=} write(A); end.

While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является – вывести False.

Действуем следующим образом: пока N делится нацело на три, делим N нацело. Затем, если N = 1 – число является степенью тройки; если N <> 1, тогда число – не степень тройки. Для того чтобы решить эту задачу, требуется знать, что такое div и mod, и как работают логические выражения.

program while4; var N: integer; begin readln(N); while N mod 3 = 0 do N := N div 3; {Пока остаток от деления на три равен нулю, делим N нацело } writeln(N = 1); {логическое выражение} end.

На сегодня все! Не забывайте почаще заходить на наш сайт и кликать по кнопочкам, которые расположены перед комментариями.

Источник

Здесь приведены примеры программ и алгоритмов, используемых в курсе Основы программирования для студентов 1 курса ФИИТ мехмата ЮФУ

Редактировать

Количество по условию

Задача. Сколько нечетных среди n введенных

Решение 1. Ввод данных в цикле

var c := 0; loop n do begin var x := ReadInteger; if x mod 2 <> 0 then c += 1; end;

Решение 2. Отделение ввода данных от обработки данных

Используем ReadSeqInteger, возвращающую последовательность введенных целых. Далее используем цикл foreach по последовательности.

var sq := ReadSeqInteger(n); var c := 0; foreach var x in sq do if x mod 2 <> 0 then c += 1;

Защита от неверного ввода

Решение 1. Используем TryRead и цикл while

var i: integer; (‘Введите i (>0):’); while not TryRead(i) or not (i>0) do (‘Неверный ввод. Повторите:’);

Решение 2. Используем цикл repeat

var i: integer; repeat (‘Введите i (>0):’); until TryRead(i) and (i>0);

Табулирование функции

Задача. Затабулировать функцию f(x) на [a,b] в точках, разбивающих [a,b] на n частей

Решение 1. С помощью loop

Assert(n>0); var h := (b-a)/n; var x := a; loop n+1 do begin ln($'{x,5:f2} {Sin(x),9:f4}’); x += h; end;

Решение 2. С помощью while

Величину h/2 добавляем чтобы учесть влияние вычислительной погрешности

var h := (b-a)/n; var x := a; while x <= b+h/2 do begin ln($'{x,5:f2} {Sin(x),9:f4}’); x += h; end;

Решение 3. С помощью PartitionPoints

Функция PartitionPoints возвращает последовательность точек , разбивающих [a,b] на n частей

foreach var x in PartitionPoints(a,b,n) do ln(x,f(x));

Числа Фибоначчи

Задача. Вывести n первых чисел Фибоначчи

Решение 1. С помощью трёх переменных

var n := ReadInteger; var (a,b) := (1,1); (a,b); loop n-2 do begin var c := a + b; (c); a := b; b := c; end;

Решение 2. С помощью множественного присваивания

var n := ReadInteger; var (a,b) := (1,1); (a,b); loop n-2 do begin (a,b) := (b,a+b); (b); end;

Наибольший общий делитель

Задача. Найти НОД(a,b), используя алгоритм Евклида:

НОД(a,b) = НОД(b,a mod b); НОД(a,0) = a

Решение 1. С помощью трёх переменных

var (a,b) := ReadInteger2; repeat var c := a mod b; a := b; b := c; until b=0; (a);

Решение 2. С помощью множественного присваивания

var (a,b) := ReadInteger2; repeat (a,b) := (b,a mod b); until b=0; (a);

Cумма цифр

Задача. Найти сумму цифр целого положительного числа m

Решение.

var m := ReadInteger; var s := 0; while m>0 do begin s += m mod 10; m := m div 10; end;

Максимумы и минимумы

Задача. Найти max из введенных чисел

Решение 1. Ввод данных в цикле

var x := ReadReal; var max := x; loop n-1 do begin x := ReadReal; if max < x then max := x; end;

Решение 2. C помощью ReadSeqReal

var max := real.MinValue; foreach var x in ReadSeqReal(n) do if x > max then max := x;

Задача. Найти минимальный элемент x, удовлетворяющий условию p(x)

Читайте также:  Как рассчитывается продолжительность операционного цикла

Решение 1. Ввод данных в цикле

var min := real.MaxValue; loop n do begin var x := ReadReal; if (x < min) and p(x) then min := x; end; if min = real.MaxValue then ln(‘Нет элемента, удовлетворяющего условию’);

Суммирование рядов

Задача. Вычислить $$sumlimits_{i=0}^n frac{a^i}{i!}$$

Решение.

Read(a, n); var x := a; var s := x; for var i := 2 to n do begin x *= a / i; s += x; end;

Предел последовательности

Задача. Вычислить $$limlimits_{n to infty} a_{n} = sqrt{x}$$

Для решения используется следующая рекуррентная последовательность: $$a_1=x, a_{i+1}=frac{1}{2}left(a_n+frac{x}{a_n}right)$$

Решение 1.

Assert(x>=0); var x := ReadReal; var eps := 1e-10; var a := x; var b := real.MaxValue; while Abs(b – a) >= eps do begin b := a; a := (a + x/a) / 2; end; (a,Sqrt(x));

Решение 2. С помощью множественного присваивания

var (a,b) := (x,real.MaxValue); while Abs(b – a) >= eps do (b,a) := (a, (a + x / a) / 2);

Поиск значения

Задача. Есть ли среди введенных число k?

Решение 1. Неэффективное – без break

var Exists := False; loop n do begin var x := ReadInteger; if x = k then Exists := True; end;

Решение 2. Эффективное – с break

var Exists := False; loop n do begin var x := ReadInteger; if x = k then begin Exists := True; break; end; end;

Решение 3. С использованием while

var Exists := False; var i := 1; while (i<=n) and not Exists do begin var x := ReadInteger; i += 1; if x = k then Exists := True; end;

Определение простоты числа

Задача. Является ли число n>1 простым?

var IsPrime := True; for var i:=2 to Round(Sqrt(n)) do if n mod i = 0 then begin IsPrime := False; break; end;

Разложение числа на простые множители

Решение.

Assert(x>=2); var i := 2; repeat if x mod i = 0 then begin (i); x := x div i; end else i += 1; until x = 1;

Корень функции на отрезке

Задача. Дана непрерывная на $$[a,b]$$ функция $$f(x)$$, $$f(a) cdot f(b) < 0$$, имеющая на $$(a,b)$$ ровно один корень. Найти его методом половинного деления

Решение.

Assert(b>a); var (fa,fb) := (f(a), f(b)); Assert(fa*fb < 0); while (b-a) > eps do begin var x := (b + a)/2; var fx := f(x); if fx = 0 then break; if fa*fx < 0 then b := x else (a,fa) := (x,fx); end; ln((b + a)/2);

Источник

Когда в алгоритме некоторое действие нужно выполнить несколько раз, используются циклы. В программирование цикл – это многократное повторение определенных инструкций. Циклы состоят из заголовка и тела. Заголовок содержит в себе условия, которые определяют работу цикла, а тело – повторяющиеся действия. В ЯП Pascal есть три вида циклов:

цикл с параметром;

цикл с предусловием;

цикл с постусловием.

Их алгоритмы выполнения различны, но есть и общее: после выполнения тела цикла, проверяется условие, и в зависимости от него работа цикла заканчивается, либо снова выполняется тело.

For – цикл с параметром

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

  1. For <счетчик>:=< начальное значение> To <конечное значение> Do <тело цикла>;
  2. For <счетчик>:=<начальное значение> Downto <конечное значение> Do <тело цикла>;

Счетчик – это переменная порядкового типа. Начальное и конечное значение должны быть того же типа, что и счетчик. Тело выполняется до тех пор пока условие истинно.

Формы записи, представленные выше, отличаются словами To и Downto. Если Вы используете цикл с To, то значение счетчика с каждым шагом будет увеличиваться на единицу, а если с Downto, то уменьшаться. Из этого следует, что в первом варианте начальное значение не должно превышать конечное, во втором – верно противоположное. В программе ниже, указанное пользователем количество раз, будут выводиться символы.

1

2

3

4

5

6

7

8

9

10

program for_primer;

uses crt;

var i, x: integer;

begin

write(‘X=’);

readln(x);

for i:=1 to x do

write(#3, #6);

readkey;

end.

Здесь тело цикла не заключено в Begin-End, так как оператор всего один. Но если их будет больше, то операторные скобки обязательны. Стоит также отметить, что счетчик по выходу из цикла не будет иметь определенного значения, но если цикл закончиться раньше положенного, то счетчик сохранит последнее, записанное в него значение.

While – цикл с предусловием

Оператор While – начинает описание цикла с предусловием. Такой вид цикла нужен, в тех алгоритмах, где число повторений неизвестно заранее. В общем виде он выглядит так:

While <выражение> Do <тело цикла>;

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

Пример программы написанный с использованием цикла While:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

program while_primer;

uses crt;

var i, x, limit: integer;

begin

write(‘Предел=’);

readln(limit);

write(‘ Числа Фибоначчи: ‘);

i:=1; x:=1;

while i<=limit do

begin

write(i,’ ‘);

i:=i+x;

x:=i-x;

end;

readkey;

end.

В данном коде использовался составной оператор Begin-End, так как операторов в теле цикла несколько.

Repeat – цикл с постусловием

Главной особенностью цикла с постусловием (часто встречается название: цикл-ДО) является выполнение его тела минимум один раз. Это связано с тем, что условие записывается в конце и соответственно вначале выполнится тело, а затем провериться условие. Формально он выглядит так:

Repeat

<тело цикла>

Until <условие>

В противоположность двум рассмотренным прежде циклам, этот прекращает свое выполнение тогда, когда условие становиться истинным, т. е. чтобы итерации продолжались условие должно быть ложно. Рассмотрим работу цикла с постусловием на примере:

1

2

3

4

5

6

7

8

9

10

11

12

program repeat_primer;

uses crt;

var i, otvet: integer;

begin

i:=1;

repeat

i:=i+1;

write(i,’+’,i,’*2=’);

read(otvet);

until otvet<>i+i*2;

readkey;

end.

Программа продолжает работать до тех пор, пока пользователь не допустит ошибку в ответе. Думаю, Вы заметили, что в примере (непосредственно в цикле) составной оператор Begin-End, несмотря на количество операторов не поставлен. Просто его роль выполняют слова repeat и until.

Для переходных манипуляций с циклом обычно используются три оператора:

Goto – переходит в отмеченную область;

Break – производит безусловный выход из цикла;

Continue – осуществляет переход к новой итерации.

Похожие записи:

  • Выражения Паскаль
  • Множества в Паскале
  • Pascal. Поиск в массиве.
  • Записи в Паскале
  • Передача параметров Паскаль

Источник