Until pascal что это за программа

Циклы с условиями в Паскаль

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

Цикл с предусловием. Оператор while

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

Оператор цикла while в Паскаль имеет следующий формат записи:

  • while выражение do
  • оператор;

Рассмотрим работу оператора цикла while .

  1. Вычисляется значение выражения (т. е. условие, стоящее после ключевого слова while ), которое должно быть логическим выражением.
  2. Если результат вычисления выражения равен true (истина), то выполняется тело цикла (простой или составной оператор, расположенный после ключевого слова do ). Затем, снова проверяется условие и т. д.
  3. Если результат равен false (ложь), то происходит выход из цикла и управление передается на первый оператор, следующий за циклом.

Задача. На вход программе поступает натуральное число. Определите количество разрядов в числе.

Информатика. Язык Pascal: Оператор цикла repeat-until в Pascal. Центр онлайн-обучения «Фоксфорд»

Решение. Будем на каждой итерации уменьшать число в 10 раз до тех пор, пока оно не станет равно 0. Количество итераций, в таком случае, будет равно числу разрядов в числе.

  • readln(num);
  • while (num <> 0) do
  • begin
  • Inc(k);
  • num := num div 10;
  • end;
  • writeln(k);

Цикл с постусловием. Оператор repeat

В языке программирования Паскаль есть еще один оператор цикла с условием, аналогичный по своему действию оператору while . Это оператор repeat , который имеет следующий формат записи:

  • repeat
  • тело цикла
  • until выражение

Работа оператора цикла repeat происходит следующим образом:

  1. Выполняется последовательность операторов, заключенная между ключевыми словами repeat и until (поэтому тело цикла выполнится хотя бы один раз).
  2. Производится проверка продолжения цикла: если значение выражения, записанного после ключевого слова until , равно false (ложь), то тело цикла выполняется снова.
  3. Если значение выражения равно true (истина), то происходит выход из цикла.

Задача. На вход программе поступает последовательность целых чисел, заканчивающихся нулем. Найдите сумму чисел последовательности. Гарантируется, что в последовательности есть хотя бы одно число отличное от нуля.

Решение. Так как гарантируется наличие хотя бы одного числа отличного от нуля, то можно воспользоваться оператором цикла repeat (тело цикла обязательно выполнится хотя бы один раз)

  • s := 0;
  • repeat
  • readln (num);
  • s += num;
  • until num = 0;
  • writeln(s);

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

Паскаль с нуля [ч6]. Циклы. While, repeat-until, for.

Источник: informatics-lesson.ru

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

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

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

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

Цикл for

Часто цикл for называют циклом со счетчиком. В Pascal этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. То есть количество повторений известно заранее.

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

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

Цикл for существует в двух формах:

for счетчик := начало to конец do тело;

for счетчик := начало downto конец do тело;

Если между начальным и конечным значением счетчика указано ключевое слово to, то на каждом шаге цикла значение счетчика будет увеличиваться на единицу. Если же указано downto, то значение счетчика будет уменьшаться на единицу.

Счетчик — это переменная любого из перечисляемых типов (целого, булевого, символьного, диапазонного, перечисления). Начальные и конечные значения могут быть представлены не только значениями, но и выражениями, возвращающими совместимые с типом счетчика типы данных.

Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, уже точно известно, сколько раз цикл выполнится.

Читайте также:
Для чего предназначена программа wordpad

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

Примеры выполнения кода:

Количество знаков: 5 *****
Количество знаков: 13 *************

Цикл while

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

Если оно возвращает true , то тело цикла выполняется, если false – то нет.

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

var sum, n: integer; begin sum := 0; while sum < 100 do begin readln(n); sum := sum + n; end; writeln(‘Сумма: ‘, sum); end.

Примеры выполнения кода:

45 23 12 31 Сумма: 111
50 91 Сумма: 141

Цикл repeat

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

В таком случае используется цикл repeat – цикл с постусловием.

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

var sum, n: integer; begin sum := 0; repeat readln(n); sum := sum + n; until sum > 100; writeln(‘Сумма: ‘, sum); end.
35 71 Сумма: 106

Источник: pas1.ru

Урок 4 — Циклы for, while, repeat . Until в языке Паскаль

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

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

1) задать перед циклом начальное значение параметра цикла;

2) изменять параметр перед каждым новым повторением цикла;

3) проверять условие повторения цикла;

4) управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из него по окончании.

В языке Паскаль существует 3 вида циклов:

1) цикл с параметром или цикл типа for,

2) цикл с предусловием или цикл типа while,

3) цикл с постусловием или цикл типа repeat . until.

В цикле типа for число повторений известно заранее, в циклах типа while и repeat . until число повторений цикла заранее неизвестно, производится проверка условия повторения цикла: в цикле типа while — перед циклом, в цикле типа repeat . until — после его окончания.

В циклах типов for и while повторяющяся часть (тело цикла) состоит из одного оператора, если требуется выполнить в цикле несколько операторов, они заключаются в операторные скобки begin . end, образуя составной оператор. В цикле типа repeat . until тело цикла помещается между зарезервированными словами языка (лексемами) repeat и until, операторные скобки не требуются, в названии цикла его тело условно обозначается тремя точками.

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

Пример цикла типа for

Вычисление n чисел Фибоначчи:

F1=1; F2=1;…; Fn=Fn-1+Fn-2 ,

например F3=F2+F1=1 + 1 = 2; F4 = 2 + 1 = 3 и т.д.

var x, y, z, i, n : integer;

writeln (‘Введите n’); read (n);

Источник: studfile.net

Урок 3 — Циклы в Pascal

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

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

Цикл с параметром, известный также как цикл со счетчиком, используется при известном количестве повторений. Он имеет две формы записи. В любом случае он выполняет следующий после него оператор (как правило, это составной оператор заключенный в «операторные скобки» Begin..End), каждый раз изменяя переменную цикла с шагом 1

For := < начальное значение>To Do ; For := Downto Do ;

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

Условия выполнения цикла проверяются перед выполнением блока операторов. Если переменная цикла больше максимального значения (при to) или меньше минимального (downto), то цикл FOR не выполняется.

Читайте также:
Программа broadcom gigabit netlink что это

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

program for_primer; uses crt; var i, x: integer; begin write(‘X=’); readln(x); for i:=1 to x do write(‘a’); readkey; end.

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

Другой пример — вычисление суммы чисел от A до B:

Program Summa; Var a, b, S: Integer; Begin ClrScr; Write(‘a = ‘); Readln(a); Write(‘b = ‘); Readln(b); S:=0; For I:=a To b Do S:=S + I; Writeln (‘Cумма = ‘, S); ReadLn End.

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

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

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

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

program while_primer; uses crt; var i, x, limit: integer; begin write(‘Предел=’); readln(limit); write(‘ Числа Фибоначчи: ‘); i:=1; x:=1; while i

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

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

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

Repeat Until

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

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 – осуществляет переход к новой итерации.

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

Циклы в паскаль могут вкладываться друг в друга. Житейский пример: например, у нас есть список студентов, у каждого из которых есть оценки — если мы захотим перебрать все оценки для каждого студента то один цикл (внешний) будет перебираться студентов, а второй (вложенный) — оценки конкретного студента. Обрабатывать списки (массивы) мы научимся дальше.

Рассмотрим вложенные циклы на примере цикла с параметром:

For := To Do ; For := To Do ; … For := To Do ;

Вернувшись к терминологии, отметим, что в таких структурах одни циклы называются внешними, а другие внутренними. Так цикл 2 относительно цикла 1 является внутренним, а для цикла n он внешний.

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

Предположим у нас есть вложенные циклы for :

for i:=1 to m1 do for j:=1 to m2 do … for k:=1 to mn do

Количество проходов по первому циклу = m1 , второму = m2*m1 , n-ому = mn*mn-1*mn-2*..*m2*m1 . В качестве доказательства предлагаю разобраться в следующей программе.

program counter_performance; uses crt; var i, j, k, g, h: integer; s_i, s_j, s_k, s_g, s_h: integer; begin s_i:=0; s_j:=0; s_k:=0; s_g:=0; s_h:=0; for i:=1 to 5 do begin s_i:=s_i+1; for j:=1 to 3 do begin s_j:=s_j+1; for k:=1 to 19 do begin s_k:=s_k+1; for g:=1 to 10 do begin s_g:=s_g+1; for h:=1 to 6 do s_h:=s_h+1; end; end; end; end; write(‘i=’,s_i,’ j=’,s_j,’ k=’,s_k,’ g=’,s_g,’ h=’,s_h); readkey; end.

Имеются 5 циклов со счётчиками от i до h. В каждом из них при помощи переменных подсчитывается, сколько раз выполняется каждый цикл. Запустив программу на своем компьютере, Вы должны увидеть такой результат:

Читайте также:
Программа по картинке определить что это

Результат работы вложенных циклов

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

program nested_loops; uses crt; var i, j: integer; begin i:=1; j:=1; while i

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

Источник: pro-prof.com

Циклы. Операторы цикла for , while-do , repeat-until . Операторы завершения цикла break , continue

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

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

2. Какие есть виды операторов цикла в языке Паскаль?

В языке Паскаль предусмотрено три разновидности операторов цикла:

  • цикл с параметром ( for-to-do );
  • цикл с предусловием ( while-do );
  • цикл с послеусловием ( repeat-until ).
3. Какой общий вид оператора цикла с параметром for ?

Цикл с параметром имеет два варианта реализации.

Вариант 1. Общий вид цикла с параметром:

for Счетчик := НачальноеЗначение to КонечноеЗначение do begin // Инструкции, операторы end;

где Счетчик – переменная перечислительного типа, которая в цикле имеет шаг прироста равный 1 ; НачальноеЗначение – начальное значение параметра Счетчик ; КонечноеЗначение – конечное значение параметра Счетчик .

Если НачальноеЗначение больше за КонечноеЗначение , то инструкции между begin и end не выполняются. Если между begin и end есть лишь одна инструкция (оператор), то ключевые слова begin и end можно опустить.

Вариант 2. Общий вид цикла с параметром:

for Счетчик := НачальноеЗначение downto КонечноеЗначение do begin // Инструкции, операторы end;

В этом случае значение параметра Счетчик не возрастает на 1 , а уменьшается на 1 (шаг изменения равен -1 ).

Пример применения оператора цикла с параметром.

Составить программу для вычисления факториала. Факториал вычисляется по следующей формуле:

n! = 1 * 2 * 3 * … * n.

. var i,n:integer; f:real; . begin // n — задается f:=1; for i:=1 to n do f:=f*i; // f — результат факториала end.

4. Какой вид имеет оператор цикла с предусловием while-do ?

Общий вид оператора цикла с предусловием:

while условие do begin // некоторые инструкции end;

Пример применения оператора цикла с предусловием. Фрагмент кода, в котором осуществляется вычисление суммы:

S = 2 + 4 + 6 + … + 200

s := 0; i := 0; while i200 do begin i:=i+2; s:=s+i; end;

5. Какой вид имеет оператор цикла с постусловием repeat-until ?

Общий вид оператора цикла с постусловием:

repeat // некоторые инструкции until условие;

Операторы, размещенные между ключевыми словами repeat и until будут выполняться до тех пор, пока логическое выражение, указанное после until , не примет значение true .

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

Задача.

С помощью оператора цикла вычислить сумму:

S = 1 + 2 + … + 100

Решение 1. Использование оператора цикла с параметром for .

// описание переменных var s, i : integer; begin . s:=0; for i := 1 to 100 do s := s + i; . end.

Решение 2. Использование оператора цикла с предусловием while .

// описание переменных var s, i : integer; begin . s := 0; i := 0; while i100 do begin i := i + 1; s := s + i; end; . end.

Решение 3. С помощью оператора цикла с постусловием repeat .

// описание переменных var s, i : integer; begin . s := 0; i := 0; repeat i := i + 1; s := s + i; until i>=100; . end.

7. Какие есть операторы завершения цикла?

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

В стандартном Паскале определены стандартные операторы Break и Continue .

Оператор Break выполняет безусловный выход из цикла. Оператор Continue обеспечивает переход к началу новой итерации цикла.

8. Пример использования оператора break .

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

Фрагмент программного кода, который определяет наличие заданного элемента в массиве m1 . Значение элемента описывается в переменной x . Если элемент есть, то нецелесообразно осуществлять поиск в массиве дальше. В этом случае используется есть операция break .

. f_is := false; // переменная, определяющая есть ли элемент x в массиве m1 for i := 1 to 100 do begin if m1[i]=x then begin f_is := true; // элемент x есть в массиве чисел break; // выход из цикла, нецелесообразно проводить поиск дальше, // поскольку элемент уже найден end; end; .

9. Пример использования оператора continue .

Инструкция continue используется, если нужно остановить текущую итерацию и перейти к следующей итерации.

Пример фрагмента кода, который множит на 2 все положительные элементы массива m1 из 100 целых чисел. Если встречается отрицательный элемент, то он пропускается.

. for i := 1 to 100 do begin if m1[i]0 then // пропустить отрицательный элемент continue; // и перейти к следующей итерации m1[i] := m1[i]*2; end; .

Источник: www.bestprog.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru