КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Оператор goto
Управление циклами
Для управления циклами в Object Pascal имеются две весьма полезные процедуры. Процедура Continue используется для пропуска группы операторов, расположенных между точкой ее вызова и концом цикла. Например, в зависимости от какого–то условия часть операторов тела цикла выполнять не надо. В такой ситуации можно воспользоваться процедурой Continue:
var Done: Boolean; Error: Boolean; begin Done:= False; {Начало цикла} while not Done do begin {Здесь находится безусловно выполняемый код } Error:= SomeFunction; {формируем условие} if Error then Continue; {пропуск до конца если Error=true} { Здесь находятся операторы, которые не надо выполнять при Error=true } end; {конец цикла} end;
Процедура Break прерывает выполнение цикла независимо от текущего его состояния. Пусть в целочисленном массиве нам надо найти заданное число. Принудительно завершая цикл сразу как только заданное число найдено, мы попутно можем узнать и запомнить индекс элемента массива, в котором оно записано:
var MyArray: array [0..99] of Integer; Index: Integer; SearchNumber: Integer; I: Integer; Diagnostics: string; const sCaption = ’Заданное число ’; begin FillArray; { Процедура инициализации массива } Index:= -1; {Ввод искомого числа из компонента Edit1} SearchNumber:= StrToInt(Edit1.Text); Diagnostics:= sCaption + Edit1.Text + ’ ’; for I:= 0 to High(MyArray) do begin if MyArray[I] = SearchNumber then begin Index:= I; Break; end; end; if Index <> -1 then Label1.Caption:= Diagnostics + ’- содержит элемент номер ’+ IntToStr(Index) else Label1.Caption:= Diagnostics + ’- не найдено. ’; end;
Процедуры Continue и Break можно вызывать только в теле цикла for, while или repeat. На вызов любой из этих процедур вне цикла компилятор отреагирует сообщением об ошибке:
Error: BREAK or CONTINUE outside of loop.
Оператор goto передает управление в точку программы, помеченную идентификатором специального вида – меткой. Употребление в программах на Object Pascal операторов перехода считается делом недостойным и теоретически избыточным. Передачи управления делают программу непонятной и трудно модифицируемой. Здесь мы рассматриваем правила goto только потому что такой оператор есть в языке. Тот, кто пока что не знает как обойтись в программе без goto, может его использовать. Но следует сводить количество передач управления в программе к минимуму, а в конечном счете – искоренить эту вредную привычку. Метки операторов перехода должны быть объявлены с помощью ключевого слова label. Сама метка ставится в точке перехода. Вслед за именем метки следует «двоеточие». Следующий фрагмент кода иллюстрирует применение оператора перехода при решении известной задачи:
procedure TForm1.Button1Click(Sender: TObject); var I: Integer; label MyLabel; begin Memo1.Clear; I:= 0;
MyLabel: Inc(I); Memo1.Lines.Add(IntToStr(I)); if I < 5 then goto MyLabel; end;
Упражнение. Напишите программу, которая при нажатии на кнопку формы заполняет массив из 100 элементов случайными числами (используйте функцию Random), вводит целое число, заданное пользователем (поместите на форму компонент Edit), ищет заданное число в массиве и выводит сообщение о результате поиска. Как образец, используйте фрагмент кода, приведенный выше.
Дата добавления: 2015-04-29; Просмотров: 354; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |