Repeat
Begin
Листинг 2.8. Простое число (использование инструкции goto)
Инструкция goto
End.
Repeat
Begin
Var
Implementation
Var
Type
Uses
Interface
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
TForm1 = class(TForm)
Button1: TButton; // кнопкаПроверить
Label1: TLabel;
Edit1: TEdit; // полевводачисла
Label2: TLabe1; // поле вывода результата
procedure ButtonlClickfSender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;
Form1: TForm1;
{$R *.DFM}
procedure TForm1.ButtonlClick(Sender: TObject);
n: integer; // проверяемое число d: integer; // делитель
r: integer; // остаток от деления п на d
n:=StrToInt(Editl.text);
d:= 2; // сначала будем делить на два
r:= n mod d;
if r <> 0 // n не разделилось нацело на d
then d:= d + 1;
until r = 0; // найдено число, на которое п разделилось без остатка
label2.caption:=Edit1.text;
if d = n
then Iabel2.caption:=label2.caption + ' — простоечисло.'
else label2.caption:=label2.caption + ' — обычноечисло.';
end;
Инструкции if и case используются для перехода к последовательности инструкций программы в зависимости от некоторого условия. Поэтому их иногда называют инструкциями условного перехода. Помимо этих инструкций управления ходом выполнения программы существует еще одна — инструкция безусловного перехода goto.
|
|
В общем виде инструкция goto записывается следующим образом:
goto Метка
где метка — это идентификатор, находящийся перед инструкцией, которая должна быть выполнена после инструкции goto.
Метка, используемая в инструкции goto, должна быть объявлена в разделе меток, который начинается словом label и располагается перед разделом объявления переменных.
В программе метка ставится перед инструкцией, к которой должен быть выполнен переход в результате выполнения инструкции goto. Сразу после метки ставится двоеточие.
В листинге 2.8 приведен вариант процедуры проверки числа, в которой инструкция goto используется для завершения процедуры в том случае, если пользователь введет неверные данные.
procedure TForm1.Button1Click(Sender: TObject);
label // раздел объявления меток
bye; var
n: integer; // проверяемое число
d: integer; // делитель
r: integer; // остаток от деления п на d
n:=StrToInt(Editl.text);
if n <= 0 then begin
MessageDlg('Число должно быть больше нуля.',
mtError, [mbOk], 0); Editl.text:= ";
goto bye;
end;
// введено положительное число
d:= 2; // сначала будем делить на два
r:= n mod d;
if r <> 0 // n не разделилось нацело на d
then d:= d + 1;
unti1 r = 0;
label2.caption:=Editl.text;
if d = n
then l abel2.caption:=label2.caption
+ ' — простоечисло.'
else label2.caption:=label2.caption
+' — обычноечисло.';
bye:
end;
В литературе по программированию можно встретить суждения о недопустимости применения инструкции goto, поскольку она приводит к запутанности программ. Однако с категоричностью таких утверждений согласиться нельзя. В некоторых случаях применение инструкции goto вполне оправдано. Приведенный пример, где инструкция goto используется для аварийного завершения процедуры, относится именно к таким случаям.
|
|
Тема:Массивы как структурированный тип данных. Объявление массива. Ввод и вывод одномерных массивов. Ввод и вывод двухмерных массивов.
Массив — это структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя. Массивы удобно использовать для хранения однородной по своей природе информации, например, таблиц и списков.