Иногда алгоритм решения задачи может быть реализован таким образом, что нужно выполнять одни и те же операции несколько раз. Алгоритм, в котором определенная последовательность команд повторяется несколько раз называется циклическим.
Операторы цикла используются для удобной организации циклического процесса в программе.
2. Какие есть виды операторов цикла в языке Паскаль?
В языке Паскаль предусмотрено три разновидности операторов цикла:
- цикл с параметром ( for-to-do );
- цикл с предусловием ( while-do );
- цикл с послеусловием ( repeat-until ).
3. Какой общий вид оператора цикла с параметром for ?
Цикл с параметром имеет два варианта реализации.
Вариант 1. Общий вид цикла с параметром:
for Счетчик := НачальноеЗначение to КонечноеЗначение do begin // Инструкции, операторы end;
где Счетчик – переменная перечислительного типа, которая в цикле имеет шаг прироста равный 1 ; НачальноеЗначение – начальное значение параметра Счетчик ; КонечноеЗначение – конечное значение параметра Счетчик .
Как вывести созданую программу в pascal ABC любую папку
Если НачальноеЗначение больше за КонечноеЗначение , то инструкции между 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
Как остановить программу в паскале
Выход из цикла
Иногда бывают случаи , когда нам неизвестно, сколько конкретно шагов цикла необходимо для выполнения условия задачи. Конечно, мы можем
подождать, пока цикл завершится полностью, но это нерационально, да и в некоторых случаях недопустимо вовсе. Тогда логично возникает вопрос: «Как выйти из цикла?». Для этого в паскале есть три оператора, функции которых — прервать текущий цикл / шаг цикла. Итак знакомьтесь — это оператор break ,оператор continue и оператор goto. А теперь о каждом в отдельности.
Оператор break
Этот оператор необходим для полного выхода из цикла. То есть если в цикле встретился оператор break — цикл прерывается сразу. Приведу пример.
Имеем массив, состоящий из 10 чисел ( 4 1 3 2 6 8 9 10 11 2 ). Сколько чисел можно сложить, чтобы их сумма была меньше 20. Сложение начинаем с начала массива.
const
s: array [1.. 10] of integer = (4, 1, 3, 2, 6, 8, 9, 10, 11, 2);var
i, x, y: integer;begin
for i := 1 to 10 do
if x + s[i] < 20 then begin
x := x + s[i];
y := y + 1;
end
else break;
writeln(‘Максимальная сумма первых чисел , не превышающая 20 = ‘, x);
writeln(‘Количество чисел ,которые можно сложить по условию задачи = ‘, y);
end.
В результате мы получим
Максимальная сумма первых чисел, не превышающая 20 = 16
Количество чисел, которые можно сложить по условию задачи = 5
То есть происходило сложение чисел до тех пор, пока их сумма была меньше 20. Как Вы видите, было сделано 5 шагов цикла. То есть после пятого шага был задействован оператор break и произошел выход из цикла.
Оператор continue
Оператор также обеспечивает прерывание, но не цикла, а шага цикла. То есть если в цикле встретился оператор continue — происходит прерывание текущего шага цикла и выполняется переход к следующему шагу. Разберем на примере. Пусть у нас есть список работников на предприятии. Каждый месяц подсчитывается их средняя трудовая активность и на основе этого решается
вопрос о выдаче премии. Размер премии зависит от трудовой активности, а необходимая трудовая активность для получения премии 95%. Необходимо составить статистику за один месяц на 10 рабочих. Все данные вводятся с клавиатуры. Напишем простенькую программу, использую цикл,условие и оператор continue
const
n = 5;var
i: integer;
p, a: array [1..n] of integer;
s: array [1..n] of string;begin
for i := 1 to n do
begin
writeln(‘Введите данные ‘);
readln(s[i], a[i]);
if a[i] < 95 then continue else readln(p[i]);
end;
for i := 1 to n do
begin
write(‘Фамилия : ‘, s[i]);writeln;
write(‘Активность : ‘, a[i], ‘%’);writeln;
write(‘Премия : ‘, p[i], ‘ руб’);writeln;
end;
end.
Вобьем произвольные данные. Пусть это будут фамилии Петров, Сидоров, Васечкин, Корненко, Усманов. Забьем также данные по активности работы и премиям. Имеем на выходе
Фамилия: петров
Активность: 99%
Премия: 500 руб
Фамилия: сидоров
Активность: 89%
Премия: 0 руб
Фамилия: васечкин
Активность: 95%
Премия: 400 руб
Фамилия: корненко
Активность: 100%
Премия: 600 руб
Фамилия: усманов
Активность: 91%
Премия: 0 руб
Что мы видим? Очередность ввода такая: имя, активность, премия. Причем следует заметить, что если при вводе активность оказалась ниже 95%, то ввода премии просто не происходит (действует оператор continue). Шаг цикла заканчивается и происходит переход к следующему шагу.
Оператор goto
Оператор goto отличается двух предыдущих тем, что его применение гораздо шире. Если операторы break и continue используются только в цикле, то оператор goto можно использовать во всем теле программы. Суть заключается в том, что в каком-нибудь месте ставится метка и, если в процессе выполнения компилятор встретит ссылку на метку — он вернется к метке. Теперь как
применять goto в паскале. Необходимо сделать три вещи: объявить метку, установить метку, поставить ссылку на метку. Здесь есть только один момент. Объявление метки происходит до var (до объявление обычных переменных), используя label т.к. переменная особая. Все же остальное происходит уже в теле цикла.
Пример использования оператора goto в паскале
label metka;
var
i: integer;begin
for i := 1 to 10 do
begin
write(i:3);
if i = 5 then goto metka;
end;
metka:
end.
Как вы видите здесь цикл прерывается как только i:=5 и оператор goto переносит процесс компиляции к метке (metka). Таким образом на экран выводится
На этом все. Статья про выход из цикла завершена. Если нашли какие-либо ошибки / опечатки, или у Вас есть интересная информация по этой статье — отписывайтесь в комментариях ниже.
7 Replies to “Выход из цикла”
Topcoder :
Да goto — это зло. Если вы пишите много goto в своей программе, то другому программисту будет очень сложно разобраться что куда ведет, и в каком порядке выполняется программа.
Mr.Cheater :
Поэтому попытайтесь при программмировании свести использование goto к минимуму ,а лучше вообще не используйте , благо обычно без него можно спокойно обойтись.
UnlimNET :
go to — это зло, правда? Почему?
Сеятель :
Я обычно использую GOTO при отладке програмы, но это всего лишь дань традиции, взятой со времен студенчества. Вообще его лучше не использовать, это точно.
Mr.Cheater :
ibzh,
Спасибо, поправил
если в процессе выполнения компилятор встретит ссылку на метку — он вернется к метке . Таким образом компиляция продолжает выполняться с уже пройденного этапа. Это не верно
Источник: programmado.ru
[В] Жизни
Паскаль
Turbo Pascal 7.0 Горячие клавиши
Для удобной работы в Паскале используется компилятор Turbo Pascal 7.0.Если же он у вас не работает ,то можно использовать Pascal ABC.
Для удобства работы в компиляторе используются команды:
- Ctr+F9 — запуск программы.
- Ctr+Shift(Левый) — изменить язык на русский.
- Ctr+Shifrt(Правый) — изменить язык на английский.
- Ctr+Y — удаление строки.
- Alt+F3 — закрытие активного окна.
- F1 — Помощь.
- F2 — Сохранить.
- F3 — Открыть файл.
- F5 — Полноэкранный режим окна.
- F9 — Компилировать.
- F10 — Переход в меню.
- ALT+F3 — Закрыть окно.
- ALT+X — Выход из Turbo Pascal.
- ALT+0 — Показать список окон если открыто больше одного документа.
- ALT+номер окна — Переход между окнами.
- ALT+F5 — Посмотреть результат выполнения программы.
- ALT+Backspace — Отмена предыдущего действия.
- CTRL+Break — Прервать выполнение программы.
Вот и все, пользуйтесь ими, чтобы экономить время.
Источник: vnovostyah.wordpress.com