18. ������� ���� - ����������� ���������

� ����� � ������� ��������� �������� ������ ����� � ��������� (����� �����������) ���������� ��������������� ����� ���������� � ����������, ������������ ��� ���� (�������). ��� ������ ���������� ������ �������� ��� �� ����, �� � ��������� ������� ������.

������ 18.1. ��������� ������ �����������, ����� � ��������� �����.

���� ������ (��) � ����� 'STUDENT.Z':

-----------------------------

���(��,�����)

���(��,�����)

��(��95,��)

����(��_1,��95) ���(������,��_1) ���(����,��_1)

����(��_2,��95) ���(�������,��_2) ���(����,��_2)

��(��96,��)

����(��_3,��96) ���(������������,��_3) ���(����,��_3)

����(��_4,��96) ���(��������,��_4) ���(�������,��_4)

��(��95,��)

����(��_5,��95) ���(�������,��_5) ���(����,��_5)

����(��_6,��95) ���(��������,��_6) ���(�����,��_6)

...................................

� ��������� (��� ��������� �������������� ����� ��) �������� ���������, � ������� �� ������ ����� - �������, � �� ����������� ����������� ������ - ������������� �����������:

MT_MENU(<������� � X80>,<�������� � X91>,<�������� � X92>,<����� � X93>,<��������� ��� ����. � X94>).

��������� ����� ���:

MT_MENU(1,���,59,MT_FAK,"����������")

MT_MENU(2,��,60,MT_GR,"������ ���.")

MT_MENU(3,����,61,MT_ST,"�������� ��.")

BEG(/91+)

START:IF THEN

B:IN('STUDENT.Z') {= ���� ����� 'STUDENT.Z' � �� - ������. ������) =}

B:PAR(59,1) {= ���������� �.1 ���� =}

T:MENU_1(1,�����) {= ������� 1 =}

B:HALT();

{== ������������ ���� ������ X80: MT_MENU(1,���,59,MT_FAK,"����������") ==}

MENU_1(X80,X20):IF

MT_MENU(X80,X91,X92,X93,X94) {= X80 - ������ 1, 2, 3 =}

B:GETPAR(X92,X7) {= X92 - ��������� 59, 60, 61 =}

B:#(X7,0) {= ����� T: �� ��� ���, ���� �� ������ PAR(X92,0) =}

THEN

T1:PR_LINE(1,25,"����� - �� ESC") {= ���������� � ������ ������ =}

B:NEW(X8) B:DELFR(@@)

B:DELFR(X93) {= ����� X93 - MT_FAK, MT_GR, MT_ST =}

B:PAR(50,0) {= ������� ������� =}

B:REW(MEMORY) {= ����������� � �����. ������ =}

B:A(X94,X20,":") {= �������� =}

T!:LIST_1(X91,X93,X20) {= ������������ ������� ���� =}

B:REW() {= ����� ���������� ���� =}

B:MENU(3,3,X7)

T1:AN_1(X80,X92,X93) {������ ���������� �. � ������� �����. ����}

B:C(X8); {= �������� - �������� ���������� �� �� X8 =}

{= ���������� ������� ���� ����� � ����� MT_GR =}

LIST_1(X91,X93,X20):IF X91(X10,X20) {= X91 - ���, ��, ���� =}

N:X93(_,X10) B:GETPAR(50,X55) B:+(X55,1,X56) THEN B:PAR(50,X56)

X93(X56,X10) {= ����� X93 - MT_FAK, MT_GR, MT_ST =}

B:BK() B:A(X56,".",X10); {= ������ �������� ������ - X10 =}

{== ������� �� ������� �������: ������ ESC ==}

AN_1(X80,X92,X93):IF D:@@(ESC) THEN

B:PAR(X92,0); {= ����� �� ���� �����: X92 - ��������� 59, 60, 61 =}

{== ������ ����� X51 ���� ���������. ������ ���������� � ��� == }

AN_1(X80,X92,X93):IF B:=(X80,3) D:@@(X51) X93(X51,X1) {= X93 - ���� =}

THEN

B:PAR(X92,X51) {= ��� �������� � ���� ����� � ���������� �. X51 =}

T1:INFORM_ST(X1); {= ������ ���������� ��������, �� ������ 3.1 =}

{== ������ ����� X51 ����. ����� ���� ���������� ������ == }

AN_1(X80,X92,X93):IF D:@@(X51)

X93(X51,X10) {= ������ �. X51; X93 - ����� MT_FAK, MT_GR, MT_ST =}

B:+(X80,1,X81) {= X81 - ��������� ������� =}

MT_MENU(X81,_,X99,_,_) {= X99 - �������� 60, 61; X92+1 = X<99 =}

THEN

B:PAR(X92,X51) {= ��� �������� � ��� �� ���� � ���������� �. X51 =}

B:PAR(X99,1) {= ���������� �.1 ���������� ���� =}

T:MENU_1(X81,X10); {= ������ ���� ���������� ������ =}

...���� �������� ��������� INFORM_ST(X1) � PR_LINE(...) ������� 13.1 ...

END(/92+) @BL(91-,92-)

��� ���������� ������ ��������� ��� ������������� �� ������� ����� ������ ���� ����������� �����. ��� ������ ���������� - ������ ���� �����. ��� ������ ������ - ������ ���� �� ���������, � ��� ������ �������� - ���������� � ���. ������ ��� ����� ��������� � �������� ����� �� ESC.

18�. ������� ����

������� ���� ��������� �������� ��������������� ������ (����� ������� ����, ����� �� ������� � ��.), ������������� ��������� ������� � �.�. ��� ����������� � ������� ����������� ��������� HMENU ��������� �������:

... B:REW(MEMORY) < ������ ���� > B:REW() B:HMENU(1,1,N) T1:AN_UP() ...,

��� < ������ ���� > - ��� ���������� �����, ����� �������� ������ ������ �������, ��������, B:A("�������_����") B:A("������") ... ��������� T1:AN_UP() ����������� ��������� ����� N, ������� ����������� ������ � �� ��������� @@(N) � ��� � ������� ����.

���������� ������|��������� ������

- ������� �������� -