русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операторы цикла while и until


Дата добавления: 2014-11-28; просмотров: 817; Нарушение авторских прав


Конструкция while (пока) образует цикл, который подлежит выполнению до тех пор, пока команда while определяет условие как true.

В операторе while используется следующий формат:

while список_w do список_d done

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

«Список_w» называется «списком while» и состоит из одной или более команд, разделенных точками с запятой или символами новой строки. Эти команды, которые могут содержать аргументы, переназначения, конвейеризацию, вызовы других сценариев и все другие командные механизмы, выполняются как обычно. То, что происходит дальше, зависит от кода завершения последней команды в «списке_w».

Код завершения передается командному процессору и показывает, как выполнилась команда. Обращаться к этому числу можно с помощью специального позиционного параметра $?.

Нулевой статус выхода означает true (т.е. успешное выполнение команды), а ненулевой – false (команда по какой–то причине выполнилась неуспешно). С помощью различных ненулевых статусов программисты могут указывать причину неуспешного выполнения. Истина одна, а ложь многолика.

«Список_d» называется «списком do». Если статус выхода последней команды в «списке_w» является true, то выполняются команды в «списке_d» между do и done, а затем управление возвращается команде while. «Список_w» выполняется снова и т.д., если статус выхода в «списке_d» примет значение false, то команды в «списке_d» пропускаются, а выполнение возобновляется с команды, следующей за оператором done.

Оператор цикла until имеет структуру:

until условие do список команд done

где until – служебное слово определяющее тип цикла с ложным условием. Список команд в теле цикла (между do и done) повторяется до тех пор, пока сохраняется ложность условия или цикл не будет прерван изнутри специальными командами ("break", "continue" или "exit"). При первом входе в цикл условие не должно выполняться.



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

Итак, в интерпретаторе shell есть два вида циклов, в которых запускается команда и проверяется ее код завершения. Цикл until продолжается, пока команда возвращает ненулевой код, а цикл while – пока команда возвращает нулевой код. Выбор между while и until зависит от типа проверяемого условия. Иногда «положительное» условие while является более естественным и более простым в проверке. В других случаях более естественным будет «отрицательное» условие until.

Например, сравните следующие два примера:

while sleep 60 do who | grep user1 done until who | grep user1 do sleep 60 done…

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

Например:

while test –r file1 do sleep 5 done

Эта программа ожидает удаление файла file1, она определяет, читаем ли мы file1, и если да, то по команде 'sleep 5' засыпает на 5 с. После удаления file1 в результате проверки устанавливается значение false, и выполнение условного оператора заканчивается.



<== предыдущая лекция | следующая лекция ==>
Оператор цикла for | Оператор вызова case


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.938 сек.