Оператор while (C)
Оператор while позволяет повторять выполнение оператора до тех пор, пока указанное выражение не станет ложным.
Синтаксис
iteration-statement :
while ( expression ) statement
Объект expression должен иметь арифметический тип или тип указателя. Выполнение происходит следующим образом:
- Вычисляется expression .
- Если expression изначально имеет значение false, тело while оператора никогда не выполняется, и управление передается от while оператора к следующему оператору в программе. Если expression имеет значение true (ненулевое), выполняется текст инструкции и процесс повторяется, начиная с шага 1.
Выполнение оператора while прерывается, если в теле оператора выполняется оператор break , goto или return . Для прерывания итерации без выхода из цикла while используйте оператор continue . Оператор continue передает управление в следующую итерацию оператора while .
Вот пример оператора while :
while ( i >= 0 )
В этом примере производится копирование символов из string2 в string1 . Если i значение больше или равно 0, то string2[i] присваивается string1[i] и i уменьшается. Когда значение переменной i становится равным 0 (или меньше 0), выполнение оператора while прекращается.
Циклы for и while, операторы break и continue, волшебное слово else
В этой статье я расскажу о циклах for и while, операторах break и continue, а также о слове else, которое, будучи употребленное с циклом, может сделать программный код несколько более понятным.
Цикл while
While — один из самых универсальных циклов в Python, поэтому довольно медленный. Выполняет тело цикла до тех пор, пока условие цикла истинно.
Цикл for уже чуточку сложнее, чуть менее универсальный, но выполняется гораздо быстрее цикла while. Этот цикл проходится по любому итерируемому объекту (например строке или списку), и во время каждого прохода выполняет тело цикла.
Оператор continue
Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла (for или while)
Оператор break
Оператор break досрочно прерывает цикл.
Слово else, примененное в цикле for или while, проверяет, был ли произведен выход из цикла инструкцией break, или же «естественным» образом. Блок инструкций внутри else выполнится только в том случае, если выход из цикла произошел без помощи break.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Выход из цикла. Операторы C break и continue Инструкция
Иногда требуется выйти из цикла досрочно: выполняли, выполняли мы какое-то задание, нам это надоело и мы, не закончив дело до конца, решили забить на это задание.
Или мы собирали ягоды в лесу и собрали столько, сколько нам нужно (например, взяли с собой литровую банку и полностью её собрали), всё мы выходим из леса. Хотя могли остаться и ещё собирать. Как же это перевести на машинный язык?! Давайте попробуем!
Возьмем цикл While (пока).
Пока (есть в лесу ягоды)
Вопрос в том, как досрочно выйти из леса, а не остаться там собирать ягоды до бесконечности? Ведь они постоянно поспевают и закончатся нескоро. Не ночевать же нам в лесу!
В жизни понятно – мы просто собираемся и выходим из леса. В программировании для этого предусмотрено несколько операторов.
Выйти из цикла можно с помощью операторов C break и continue.
Приведем небольшие программы, когда используются эти операторы C.
1) Выход из бесконечного цикла
for(;;) //бесконечный цикл < sss=getch(); // получение символа, который считывается с клавиатуры if(sss==10) break; // если символ равен тринадцати, то выходим из бесконечного цикла. >
main() < int a[]=; // объявление и инициализация одномерной матрицы. int iii33,nn,ssss; //объявление переменных. nn=3; ssss=0; // инициализация переменных. for(((iii33=0; iii33 Cout
После запуска программа на экран выведется сообщение с суммой чисел, в нашем случае, это 5.
Следовательно, данные операторы C используются, когда нам нужно выйти из цикла, не дожидаясь его завершения.
Также можно ещё использовать оператор
Exit();
но в отличие от других он полностью выходит из программы. Используется тогда, когда в процессе работы программы возникли ошибки, например деление на ноль. В таком случае лучше сразу выйти из программы, иначе программа может зависнуть.
Int pddo; // объявление переменной. If ( pddo=0) // если делитель равен нулю. // вывод сообщения об ошибки и аварийный выход из программы. Else hj= gfe/ po; // иначе делим на это число, которое не равно нулю.
- delitme 0.90
- 24 января 2014, 14:08
- 0
- 104607
Как выйти из while c
Выход из цикла
Иногда бывают случаи , когда нам неизвестно, сколько конкретно шагов цикла необходимо для выполнения условия задачи. Конечно, мы можем
подождать, пока цикл завершится полностью, но это нерационально, да и в некоторых случаях недопустимо вовсе. Тогда логично возникает вопрос: «Как выйти из цикла?». Для этого в паскале есть три оператора, функции которых — прервать текущий цикл / шаг цикла. Итак знакомьтесь — это оператор 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,
Спасибо, поправил
если в процессе выполнения компилятор встретит ссылку на метку — он вернется к метке . Таким образом компиляция продолжает выполняться с уже пройденного этапа. Это не верно
Арслан :
Спасибо за информацию, пригодилось
Добавить комментарий Отменить ответ
Рубрики
- C++ (27)
- STL (2)
- Арифметические операции (1)
- Ввод-вывод (1)
- Дополнительная информация (1)
- Задачи (2)
- Массивы (1)
- Сортировки (2)
- Типы данных (1)
- Условные операторы (1)
- Циклы (1)
- Begin (2)
- Задачи читателей (6)
- Одномерные массивы (2)
- Простые операции (10)
- Символьные строки (1)
- Сортировка (3)
- Типы данных (1)
- Условные операторы (3)
- Циклы (5)
- Поисковая оптимизация для интернет-магазинов (25)
Общество с ограниченной ответственностью Программное обеспечение и юридическое споровождение маркетплейсов (ПОЮСМ)
ИНН 0275927174, ОГРН 1220200002582
2014 © Copyright Все права защищены