Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 331; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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