Введение в Perl :: Маслов Владимир Викторович
Страница: 5 из 31 | |||
| ||||||||||||||
| ||||||||||||||
КАТЕГОРИИ КНИГПОСЛЕДНИЕ ОТЗЫВЫ О КНИГАХМихаил (19.04.2017 - 06:11:11) Антихрист666 (18.04.2017 - 21:05:58) Ладно, теперь поспешили вы... (18.04.2017 - 20:50:34) Роман (18.04.2017 - 18:12:26) АНДРЕЙ (18.04.2017 - 16:42:55) СЛУЧАЙНОЕ ПРОИЗВЕДЕНИЕЯ хочу рисовать звезды, 13.05.10 - 05:18 Хотите чтобы ваше произведение или ваш любимый стишок появились здесь? добавьте его! |
Если метка все же отсутсвует то эти операторы ссылаются к началу ближайшего цикла.
Блок после continue выполняется всегда перед тем как вычисляется логическое выражение EXPR . Это подобно EXPR3 в предлжении for поэтому в этом блоке удобно изменять счетчики и флаги цикла даже если применяестя оператор next . Операторы управления циклом. next – подобен continue в С. Переходит к началу текущего цикла т.е. повторяет итерацию. Пример: M1: while ($i < 6) { ++$i; # Увеличиваем счетчик на 1 next M1 if $i < 3; # Переходим в начало если $i < 3 ++$i; # иначе увеличиваем счетчик еще раз на 1 } continue { print "$i "; # Печатаем $i } Результат: 1 2 4 6 last – подобен оператору break в языке С. Немедленно прерывает цикл. Блок continue пропускается. Пример: M1: while ($i < 6) { ++$i; # Увеличиваем счетчик на 1 last M1 if $i > 3; # Выход из цикла если $i > 3 ++$i; # иначе увеличиваем счетчик еще раз на 1 } continue { print "$i "; # Печатаем $i } Результат: 2 4 redo – начать новый цикл не вычисляя EXPR и не выполняя continue блок. Пример: M1: while ($i < 6) { ++$i; # Увеличиваем счетчик на 1 redo M1 if $i == 3; # Далее пропустить для $i = 3 ++$i; # иначе увеличиваем счетчик еще раз на 1 } continue { print "$i "; # Печатаем $i } Результат: 2 5 7 Цикл for . LABEL for ( EXPR1 ; EXPR2 ; EXPR3 ) BLOCK Оператор for полностью аналогичен оператору for в С. В перед началом цикла выполняется EXPR1 , если EXPR2 = true выполняется блок, затем выполняется EXPR3 . Пример: for ($i = 2; $i < 5; ++$i) { print $i, " "; } print «\nПосле цикла i = $i\n»; Результат: 2 3 4 После цикла i = 5 Цикл foreach . LABEL foreach VAR ( LIST ) BLOCK Переменной VAR присваивается поочередно каждый элемент списка LIST и выполняется блок. Если VAR опущенно то элементы присваиваются встроеной переменной $_ . Если в теле блока изменять значение VAR то это вызовет изменение и элементов списка т.к. VAR фактически указывает на текущий элемент списка. Вместо слова foreach можно писать просто for – это слова синонимы. Пример: @месяц = («январь»,"февраль","март"); # Создали массив foreach $i (@месяц) { print $i," "; # Печать $i } Результат: январь февраль март Пример: @месяц = («январь»,"февраль","март"); # Создали массив foreach $i (@месяц) { $i = uc($i); # Перевели в верхний регистр } print @месяц; Результат: ЯНВАРЬФЕВРАЛЬМАРТ Пример: for $i (3,5,7) { print "$i "; } Результат: 3 5 7 Блоки и оператор switch . Блок не зависимо от того имеет он метку или нет семантически представляет собой цикл который выполняется один раз. Поэтому действие опраторов цикла next , last , redo – аналогично описанному выше. Блоки удобны для построения switch (переключатель) структур. В Перл нет специального оператора switch подобного языку С поэтому вы сами можете создавать удобные для вас конструкции. Опыт автора показывает что для простоты написания лучше всего подходит конструкция вида if ... elsif ... else ... хотя можно сочинить и нечто подобное: SWITCH: { if ($i ==1 ) { .....; last SWITCH; } if ($i ==2 ) { .....; last SWITCH; } if ($i ==3 ) { .....; last SWITCH; } $default = 13; } Выбирайте сами по своему вкусу. Оператор goto . В Перл существует оператор goto хотя где , как и когда его применять как говорил Ходжа Насредин «Тонкий филосовский вопрос». Для начинающих программистов которым от так «нужен» я бы вообще посоветовал «забыть» о его существовании. Однако при создании больших производственных задач на последнем этапе особенно при отработке «отвальных» ошибочных ситуаций конечно goto нужен. В Перл реализовано три формы goto . goto – метка, goto – выражение и goto – подпрограмма. goto – метка выполняет непосредственный переход на указанную метку. goto – выражение – Вычисляет имя метки и делает соответсвующий переход. |
ИНТЕРЕСНОЕ О ЛИТЕРАТУРЕ
ТОП 20 КНИГ
ТОП 20 АВТОРОВ
| ||||||||||||
|