Пример.
Обработчик BitBtn1 Click.
Для построения детальной схемы алгоритма необходимо определить структуру элемента списка и ввести обозначения.
Предлагается следующая структура элемента списка помещений:
Room = Record Num : Integer;
Door: Array [Trend] Of Uk;
Next:Uk;
End;
Поле Num хранит номер помещения; массив Door предназначен для хранения ссылок на смежные комнаты; поле Next содержит ссылку на следующий элемент списка. Trend — это перечисляемый тип данных, имеющий следующие значения: nord, ost, zued, west. Эти значения соответствуют направлениям дверей, которые могут быть расположены в каждом помещении. Указатель на начало списка помещений обозначим идентификатором Spi. Spi - глобальная переменная, которая описана в головной части программы.
Схема алгоритма построения связанного списка приведена на рис. 10.
Схема алгоритма построения многосвязанного списка приведена на рис. 11.
Программа.
procedureTForm1. BitBtniClick (Sender: TObject);
// Построение связанного списка помещений
Var FileName : TNameFile; f: TextFile;
p : Uk; i, nr: Integer;
begin
FileName := InputBox('План помещений', 'Введите имя файла ',");
AssignFile(f, FileName);
Reset(f);
//Считываем только номера помещений и составляем связанный список
Spi := nil;
While not Eof(f) Do
Begin
New(p);
Readln(f, i);
p.NurrK:=i;
For r := nord To west Do p:=Door [r]- nil; p.next:= Spi;
fpi := PI
End;
//Еще раз считываем из файла, но уже с дверьми
Reset (f);
While not Eof(f) Do
Begin
Read(f, i);
p := Nroom(Spi, i);
For r := nord To west Do Hegin Read(f, nr);
If nr = 0 Then
p.Door[rJ := nil
Else p.Door[r] := Nroom(Spi, nr);
End;
End;
// Подготовка формы для ввода номера начала помещения
Label1.Caption := 'Введите № комнаты, с которой хотите начать движение';
Edit1.Visible := True;
Label1.Visible := True;
Button1.Visible := True;
end;
функция Nroom — поиск ссылки на помещение с заданным номером. В начинающемся в Spi списке помещений по номеру помещения N отыскивается нужное. Значение функции указывает на это помещение. Схема алгоритма приведена на рис. 12.
Программа
Function Nroom(Spi : Uk; n : Integer): Uk;
// В списке помещений находим указатель на п - ое
Var q:Uk;
Begin
q := Spi;
While (q<>nil) and (q.numOn) Do
q := q\next;
Nroom := q;
End;
Рис. 12. Схема алгоритма функции Nroom
Аналогично уточняются все алгоритмы и разрабатываются обработчики событий.
Примечание.Не следует представлять в виде схем алгоритмов линейные вычислительные процессы. В детализированном виде представляются алгоритмы, имеющие сложную структуру. Сложной структурой будем считать алгоритмы, содержащие более одного разветвления или более одного цикла.