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

5. Конструирование управляющей программы ппп.

Центральным элементом управляющей программы является ведущий модуль. Ведущий модуль организует выполнение требуемой последовательности других модулей управляющей программы. Ведущий модуль обеспечивает выполнение следующих действий (но сам не выполняет):

во-первых, осуществление лексического разбора ПВЯ;

во-вторых, проверку синтаксической правильности ПВЯ;

в-третьих, определение множества модулей, подлежащих выполнению;

в-четвертых, реализацию обращения к модулям тела ППП.

При реализации ведущего модуля в среде DELPHI, файл, содержащий ведущий модуль, может иметь следующую структуру:

Unit Unit_VED; INTERFACE Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TForm_VED = class(TForm) CMDINPUT: TButton; CMDPROCESS: TButton;

CMDEXIT: TButton;

LbPVJA: TLabel;

EdPVJA: TEdit;

MESINF: TMemo;

LbHELP1: TLabel;

LbHELP2: TLabel;

CMDHELP: TButton;

procedure CMDPROCESSClick(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure CMDEXITClick(Sender: TObject);

procedure CMDINPUTClick(Sender: TObject);

procedure CMDHELPClick(Sender: TObject);

End;

Var

Form_VED: TForm_VED;

PVJA: String; {Программа на входном языке}

IMPLEMENTATION

{$R *.DFM}

Procedure TForm_VED.FormActivate(Sender: TObject);

begin

Caption:='Управляющая программа';

CmdInput.Caption:='ВВОД ПВЯ';

CmdProcess.Caption:='ВЫПОЛНЕНИЕ';

CmdExit.Caption:='ВЫХОД';

CmdHelp.Caption:='СПРАВКА';

LbPVJA.Caption:='Программа на встроенном языке';

LbPVJA.Autosize:=True;

MESINF.TEXT:='Выполняется управляющая программа';

LbHelp1.Visible:=False;

LbHelp2.Visible:=False;

EDPVJA.TEXT:= '';

EDPVJA.SetFocus;

end;

Procedure TForm_VED.CMDINPUTClick(Sender: TObject);

{Ввод программы на встроенном языке пакета} Begin PVJA:= EDPVJA.TEXT; CMDPROCESS.SetFocus; End; Procedure TForm_VED.CMDPROCESSClick(Sender: TObject); {Обработка события: нажатие клавиши "ВЫПОЛНЕНИЕ"}

Type

TypeTinf= Record

KV: Integer; {Код возврата}

PB: Integer; {Признак блока}

End; { TypeTinf }

T_YV= Array[1..40] Of Integer;{Тип для управляющего вектора}

T_PAR= Array[ 1..40] Of String;{Тип для вектора параметров}

Var

YV: T_YV; {Управляющий вектор}

PAR: T_PAR; {Вектор параметров}

KSL: Integer; {Количество расшифрованных слов ПВЯ}

TINF: TypeTinf; {Таблица информатора}

Procedure Lan (PVJA: String; {Программа на

входном языке}

Var YV: T_YV; {Управляющий вектор}

Var Par: T_Par; {Вектор параметров}

Var Ksl: Integer; {Количество

расшифрованных слов ПВЯ} Var Tinf: TypeTinf {Таблица информатора});

Begin { Блок лексического разбора}

End; {Procedure}

Procedure San ( YV: T_YV;

Ksl: Integer;

Var Tinf: TypeTinf) ;

{Блок синтаксического анализа}

Begin

End;

Procedure Yprava (YV: T_YV; Par: T_PAR; Ksl: Integer;

Var Tinf: TypeTinf);

{Модуль управления}

Begin

End; {Procedure}

Procedure Inform (Tinf: TypeTinf);

{ Блок информатора}

Begin

End;

Begin

With TINF DO

Begin

Lan ( PVJA,YV,Par,Ksl,Tinf);

{ Выполнение блока лексического разбора}

Inform ( Tinf );

If KV =0 then

Begin

San (YV,Ksl,Tinf);

{Выполнение блока синтаксического анализа}

Inform ( Tinf );

If KV=0 Then

Begin

Yprava( YV,Par,Ksl,Tinf);

{Выполнение блока управления}

Inform ( Tinf );

End;

End;

End; { With }

MESINF.LINES.ADD('Завершение работы управляющей программы');

END;

Procedure TForm_VED.CMDEXITClick(Sender: TObject); Begin Close; End; Procedure TForm_VED.CMDHELPClick(Sender: TObject);

{ Метод, обеспечивающий помощь пользователю} Begin

End;

End.