Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка DELPHI.DOC
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

Использование процедур break и continue

В циклах For, While и Repeat можно использовать две стандартные процедуры Break и Continue. Процедура Break позволяет досрочно выйти из цикла, не дожидаясь выполнения условия выхода. Процедура Continue позволяет начать новую итерацию цикла, даже если предыдущая не завершена.

Пример 7

Пусть с помощью генератора случайных чисел генерируется некоторый ряд чисел k в диапазоне –n <= k <= n. Организовать список чисел до первого сгенерированного отрицательного числа включительно. Форма для этого примера приводится на рис. 22.

Рис. 22 Форма к примеру 7.

На этой форме в виде трёх чёрных прямоугольничков изображена метка, с помощью которой отображается ситуация, когда не задан диапазон n. Все остальные размещённые на форме компоненты указаны в тексте программы, который приводится ниже.

В примере используется новый компонент TComboBox – свернутый список. Этот элемент представляет собой свернутый TListBox. Для того, чтобы просмотреть список необходимо раскрыть его, например, с помощью мыши. Список TComboBox состоит собственно из списка и редактируемого поля. В редактируемом поле может находиться либо какая-нибудь строка из списка или какая-нибудь строка, которую необходимо поместить в список. Доступ к строке редактирования осуществляется с помощью свойства Text. Доступ к любому элементу списка осуществляется с помощью Items.Strings (свойство Items, Strings задаёт тип этого свойства), а для указания номера строки i используются квадратные скобки [i].

Генерирование числа осуществляется с помощью функции Random(L) – функция генерирует случайные числа от 0 до L-1. Для инициализации генератора случайных чисел используется процедура Randomize. Она инициализирует генератор, т. е. дает точку отсчета для случайных чисел.

unit prim7;

interface

uses Windows, Messages, SysUtils, Classes, Graphics,

Controls, Forms, Dialogs,

StdCtrls, Buttons, ExtCtrls;

type

TForm1 = class(TForm)

Panel1: TPanel;

Button1: TButton;

BitBtn1: TBitBtn;

Bevel1: TBevel;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

ComboBox1: TComboBox;

Label3: TLabel;

procedure Edit1KeyPress(Sender: TObject;

var Key: Char);

procedure Button1Click(Sender: TObject);

procedure Edit1Exit(Sender: TObject);

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Edit1KeyPress(Sender: TObject;

var Key: Char);

begin

if not (key in ['0'..'9',#8]) then key:=#0;

end;

procedure TForm1.Button1Click(Sender: TObject);

var k,i,n:integer;

begin

if Length(Edit1.Text)=0 then Edit1.Text:='0';

if Edit1.Text='0' then begin

Label3.Caption:='Нет диапазона n';

ComboBox1.Visible:=false;

end else begin

ComboBox1.Visible:=true;

ComboBox1.Clear;

Label3.Caption:='';

n:=StrToInt(Edit1.Text);

Randomize;

i:=0;

While true do begin

k:=Random(2*n + 1) - n ;

inc(i);

ComboBox1.Items.Add(IntToStr(i)+'-е число= '+

IntToStr(k));

if k>=0 then Continue else begin

ComboBox1.Text:=ComboBox1.Items.Strings[i-1];

Break;

end;

end;

end;

end;

procedure TForm1.Edit1Exit(Sender: TObject);

begin

if Abs(StrToInt(Edit1.Text))>100 then

if Application.MessageBox('Введите число X','

Число |X| < 100 ',MB_OK)=IDOK then Edit1.SetFocus;

end;

end.

В данном случае используется бесконечный цикл While true. Если очередное полученное число k неотрицательно, то осуществляется переход на начало цикла – процедура Break не выполняется. Если значение k станет отрицательным, то сначала в заголовок интерфейсного элемента ComboBox1 заносится последнее значение числа k (так как нумерация строк в списке начинается с 0, последняя строка имеет номер i-1), а затем уже выполняется процедура выхода из цикла Break.

В данной программе приведен пример использования свойства Visible. Если значение этого свойства равно false (ComboBox1.Visible:=false), то соответствующий объект не отображается на экране. Чтобы вернуть его изображение, надо свойству Visible присвоить true.

Назначение обработчика Edit1Exit – вернуть фокус на ввод числа n, если не соблюдается условие примера n 100. Оформлен он так же, как и соответствующий обработчик в примере 6.