Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 22
Текст из файла (страница 22)
Сначала вычисляется выражение <начальное_значение>.2. Параметру цикла присваивается начальное значение.3. Осуществляется проверка <параметр_цикла> <= <конечное_значение>. Если условие не выполняется, то оператор цикла завершает своюработу.4. Выполняется <оператор> после слова do.5.
Параметр цикла наращивается на единицу. Далее снова выполняются пункты 3-5 до тех пор, пока параметр цикла не достигнет конечного значения.5-3166ГЛАВА 3 • Язык программирования DelphiFORпараметр цикла := .начальное значението]А ( T R U E ) ^ ^ парамет э цикла >\ . конечное значение^^у?DO НЕТ (FALSE)любой оператор(последовательностьоператоров) языкаDelphiпараметр цикла :=параметр цикла+ 1Рис. 3.5 т Блок-схема работы оператора цикла f or-to-doСхематично работа оператора цикла f or-to-do представлена на рис. 3.5.Приведенный ниже фрагмент исходного кода демонстрирует вариантприменения данного оператора. В результате выполнения этого операторацикла в переменную s запишется сумма чисел от 1 до 5.vari,s:integer;Знакомимся с операторами языка DelphibeginS:=0;for i : = l to 5 do s:=s+i;end;Также при использовании оператора f o r - t o - d o необходимо учестьследующее.
Во-первых, условие, управляющее работой этого оператора,проверяется перед выполнением оператора. Соответственно, если это условиезаведомо не выполняется, то и оператор цикла не будет выполнен ни разу. Вовторых, вместо зарезервированного слова t o допускается использование словаdownto. Отличие состоит в том, что на пятом шаге выполнения оператора (см.выше) параметр цикла уменьшает свое значение на единицу, а условие,управляющее работой цикла, меняет знак отношения с >= на <=.Рассмотрим следующий оператор цикла - оператор цикла с предпроверкойусловия.
Структура данного оператора следующая:while <условие> do <оператор>;Здесь w h i l e , do - зарезервированные слова (в переводе с англ. - пока[выполняется условие], делать), <условие> - выражение логического типа,<оператор> -любой оператор языка Delphi (последовательность операторов,заключенная в конструкцию begin-end).Оператор while-do работает следующим образом:1. Вычисляется значение выражения <условие>.2. Если выражение <условие> выполняется (имеет значение True), то выполняются инструкции цикла.3.
Если выражение условия не выполняется (имеет значение False), то инструкции цикла не выполняются, и выполнение цикла заканчивается.Схема работы оператора while-do показана на рис. 3.6.Приведенный ниже код выполняет те же действия, что и в предыдущемпримере, однако здесь используется конструкция while-do:vari,s:integer;begin.s:=0;while i<=5 doГЛАВА 3 • Язык программирования Delphiлюбой оператор(последовательностьоператоров)языкаDelphiРис. 3.6 т Блок-схема работы оператора w h i l e - d obegins:=s+i;end;end;Здесь, как и в предыдущем случае, если условие неверно, то и операторцикла не будет выполняться.Рассмотрим еще один оператор цикла - оператор r e p e a t - u n t i l - цикл спостпроверкой условия. Структура оператора следующая:repeat <тело_цикла> until <условие>;Здесь r e p e a t и u n t i l - зарезервированные слова (в переводе с англ.
повторять [до тех пор], пока [не будет выполнено условие]), <тело_цикла> произвольная последовательность операторов Delphi, <условие> выражение логического типа.Основное отличие этого оператора цикла от предыдущих состоит в том, что<тело_цикла> всегда выполнится хотя бы один раз.Работает оператор r e p e a t - u n t i l следующим образом:Знакомимся с операторами языка Delphi1. Сначала выполняется оператор (последовательность операторов) междусловами repeat и u n t i l .2. Вычисляется значение выражения <условие>.
Если условие не выполняется (имеет значение F a l s e ) , то повторно выполняются инструкциицикла.3. Если условие выполняется (имеет значение True), то выполнение циклап рекращается.Схема работы оператора r e p e a t - u n t i l приведена на рис. 3.7.REPEATлюбой оператор(последовательностьоператоров) языкаDelphiUNTILДА (TRUE) уусловиевыполняется?Рис. 3.7 • Блок-схема работы оператора r e p e a t - u n t i lНиже приведен уже знакомый нам пример с применением конструкции r epeat-until:vari,s:integer;begins:=0;ГЛАВА 3 • Язык программирования Delphirepeatbegins:=s+i;enduntili>5end;Замечу, что для правильного выхода из циклов while-do и r e p e a t - u n t i lусловие выхода должно меняться внутри операторов, составляющих тело цикла.В противном случае вы создадите циклические структуры, которые будутвыполняться бесконечное количество раз.
Например, следующие конструкциицикловwhile True dobeginend;иrepeatuntil False;никогда не завершатся «естественным» образом.Для более гибкого управления операторами цикла for, w h i l e и r e p e a t всостав языка Delphi включены следующие команды (операторы):>• Break - реализует немедленный выход из цикла, то есть передачу управления оператору, следующему сразу за концом циклического оператора;>• C o n t i n u e - обеспечивает досрочное завершение очередного проходацикла, эквивалент передачи управления в самый конец циклического оператора;Оператор выбораОператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор,служит ключ выбора - выражение целого, символьного или логического типа.Структура оператора выбора следующая:case <ключ_выбора> of <список выбора> [else < оператор[ы] >]end;Знакомимся с операторами языка DelphiWЗдесь case, of, e l s e , end - зарезервированные слова (в переводе с англ.
выбрать, из, иначе, конец [оператора выбора]), <ключ_выбора> - ключвыбора, выражение порядкового типа, <список_выбора> - одна или болееконструкций следующего вида:<константа_выбора>:< оператор>;Здесь <константа_выбора> - константа того же типа, что и выражение<ключ_выбора>, <оператор> - любой оператор языка Delphi (последовательность операторов).Оператор выбора работает следующим образом:1. Вычисляется выражение <ключ_выбора>.2. Среди последовательности операторов <список_выбора> отыскиваетсятакой, которому предшествует константа, равная вычисленному значению.3. Если в списке выбора такой оператор найден, то он выполняется, послечего оператор выбора завершает свою работу.4.
Если в списке выбора не будет найдена константа, равная вычисленномувыражению, то будут выполняться операторы, стоящие за ключевым словом else.Схематично работа оператора выбора представлена на рис. 3.8.Замечу, что оператор e l s e использовать не обязательно. В этом случае приотсутствии в списке выбора нужной константы оператор выбора простозавершит свою работу (рис. 3.9).Ниже приведено несколько вариантов использования оператора c a s e .В качестве примера мы определим, является ли день, порядковый номеркоторого хранится в переменной num, рабочим или выходным.
Соответственно, результат мы будем заносить в качестве строки в переменнуюmsg. Итак, самый простой вариант применения конструкции c a s e приведенниже:case1:2:3:num_day ofmsg:msg:msg:4 : msg:5 : msg:6 : msg:7 : msg:end;:' рабочий день ' ;='рабочий день';<'рабочий день';:'рабочий день ';:'рабочий день';='выходной день - суббота';:'выходной день - воскресенье 1 ;•••"••ГЛАВА 3 • Язык программирования DelphiCASEOFELSEлюбой оператор(последовательностьоператоров)языкаDelphiлюбой оператор(последовательностьоператоров)языкаDelphiлюбой оператор(последовательностьоператоров) языкаDelphiENDРис.
3.8 т Блок-схема работы оператора выбораОчевидно, что приведенный пример даже на первый взгляд не очень хорош.А вот следующая конструкция уже выглядит гораздо короче, хотя и выполняетабсолютно те же действия:case num_day of1..5: msg:='рабочий день';6: msg:='выходной день - суббота';7: msg:='выходной день - воскресенье';end;Как вариант конструкции с использованием ключевого слова e l s e можнопривести и такой вариант записи этого примера:case num_day of6: msg:='выходной день - суббота';7: msg:='выходной день - воскресенье';else msg:='рабочий день';end;Знакомимся с операторами языка DelphiCASEлюбой оператор(последовательностьоператоров)языкаDelphiлюбой оператор(последовательностьоператоров)языкаDelphiENDРис.
3.9 т Блок-схема работы сокращенного варианта оператора выбораМетки и операторы переходаОператор перехода позволяет передать управление в место программы,обозначенное меткой. Оператор перехода имеет следующий вид:goto <метка>;Здесь g o t o - зарезервированное слово (в переводе с англ. - перейти[на метку]), <метка> - идентификатор, описанный в специальном разделеlabel.Метка (Label) - это произвольный идентификатор программы, позволяющий именовать некоторый оператор программы и таким образомссылаться на него. Метка располагается перед помеченным оператором иотделяется от него знаком двоеточия. Допускается помечать операторы инесколькими метками - в этом случае они отделяются друг от друга двоеточием.Описываются метки в специальном разделе l a b e l , предшествующему разделуописания переменных var.ГЛАВА 3 т Язык программирования Delphilabelml, m2,m3;begin•>goto ml;.