Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.docx
Скачиваний:
31
Добавлен:
03.03.2015
Размер:
117 Кб
Скачать
☆

16. Раздел меток. Оператор goto.

Раздел меток. Пример программы с использованием метки.

Метка – это целая константа без знака или идентификатор, стоящий перед исполняемым оператором и отделенный от последнего двоеточием (:). Она должна находиться в теле программы. Раздел меток следует сразу перед разделом констант и начинается со слова label(метка), а затем следует список меток, заканчивающийся точкой с запятой. Объявленная здесь метка должна появиться один раз перед оператором программы. Метки вообще при программировании используется редко. Но есть случаи, когда без них программа значительно усложняется. Для передачи управления помеченному оператору используется оператор безусловного перехода goto <метка>.

Пример программы, где лучше воспользоваться меткой.

Ввести квадратную матрицу А и найти индексы ее первого отрицательного элемента. Если отрицательных элементов у нее нет, то выдать об этом сообщение.

Оператор break в данном случае напрямую применить нельзя, так как он прерывает выполнение только цикла по переменной j, но не по i (j- номер, столбца а i - номер строки), что неприемлемо для решения поставленной задачи. Конечно, усложнив алгоритм, используя оператор break дважды, можно было бы решить эту задачу и без применения метки, что едва ли имеет смысл.

Ниже приводятся форма программы и ее код.

Рис.7.2. Вид формы.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Button1: TButton;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

label 1;

const nm=10;

var

A:array[1..nm,1..nm] of Extended;

n,i,j,k,m:integer; F1,F2:TextFile;

begin

AssignFile(F1,'d:\delph\metka\metka.txt');reset(F1);

AssignFile(F2,'d:\delph\metka\metka.res');rewrite(F2);

read(F1,n);

for i:=1 to n do for j:=1 to n do read(F1,A[i,j]);

k:=0;

for i:=1 to n do for j:=1 to n do

if A[i,j]<0 then begin k:=i; m:=j; goto 1 end;

1:if k=0 then

writeln(F2,'Матрица не содержит отрицательных чисел')

else

writeln(F2,'Номер строки первого отрицательного эл-нта k=', k:5,

', Номер его столбца m=',m:5);

CloseFile(F1);CloseFile(F2);

Label1.Caption:='конец';exit;

End;

End.

Исходные данные размещены в файле metka.txt, результаты помещаются в файл metka.res.

17. Процедуры. Формальные параметры. Структура функций. Роль описателя var. Обращение к процедуре.

Раздел процедур и функций.

Сокращения: СФП – список формальных параметров; ТРРФ - тип результата расчета функции.

Процедура начинается с заголовка процедуры:

procedure имя(СФП типа1: тип1; СФП типа2:тип2;...; СФП типа n: тип n);

Функция начинается с заголовка функции:

function имя(СФП типа1: тип1; ...; СФП типа n: тип n) :ТРРФ;

Формальные параметры называются так потому, что они служат для записи алгоритма, не занимая места в памяти компьютера. А фактические параметры занимают место в памяти ПК, используются для расчета и записываются при обращении к процедуре или функции.

Формальные параметры могут вызываться по имени или по значению. При вызове по имени перед формальным параметром ставится слово var. Будем считать, что для массивов это слово необходимо всегда.

Типы в наборе формальных параметров отделяются точкой с запятой, а внутри списка данного типа используется запятая.

Объявления в процедурах и функциях такие же, как и в основной программе.

Тела процедур и функций заключаются в операторные скобки begin ... end.

Если имеем дело с функцией, то ее имени внутри функции обязательно присваивается значение.

Устанавливается соответствие между порядком и количеством формальных и фактических параметров, причем параметры формальные и фактические стоящие на одинаковом удалении от начала должны быть одного типа.

Формальный и соответствующий ему фактический параметр должны ссылаться на один и тот же тип в разделе типов.

Формальные параметры должны всегда ссылаться на тип, либо стандартный Extended, integer, boolean и т. п., либо сконструированный нами в разделе типов основной программы. Отсюда и следует, что без раздела типов в серьезной программе, как правило, не обойтись.

Формальным параметром служит либо простая, либо агрегатная переменная. Если формальный параметр - простая переменная со словом var, то фактическим параметром может быть только переменная того же типа, если формальный параметр - простая переменная без слова var, то фактическим параметром может любое выражение того же типа. Если формальный параметр - агрегатная переменная, то будем его писать со словом var всегда и соответствующий ему фактический параметр - агрегатная переменная, ссылающаяся на тот же тип, что и соответствующий формальный параметр.

Обращение к процедуре находится в основной программе:

имя (список фактических параметров);

Результаты работы процедуры могут находиться среди этих параметров.

Если результатом работы процедуры является переменная, то в списке формальных параметров перед ней необходимо поставить слово var.

Обращение к функции содержится внутри некоторого выражения и имеет вид:

переменная: =…имя функции (список фактических параметров)….

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]