19. ����� �� �������
����������� �������� ��� ����� �������� ��� �������� ������ �������� �������� ���������� �������������� ������� � ����� ������� ����������, ��������������:
- �������������� ������������ � ���������� �� �� ���� ������� ����-����� (���� ����������� ����);
- ����� �� ������� � ���������� ��, ���������� ��� ����� � ����� ��������� �����.
�������� � ��������� ���������� �������� ������ �� �������.
19.1. �������� ����� ��������� � ����������:
��� ����� ������������ �������� (� �� ���������), ��������� ���� � ����� �����:
B:IN_WIN(<����� � ����>,<����� ������>,<����� ����� ����� �����>)
��������, ��� ����������
B:IN_WIN(" ","������ � ���������","������� ������ +> ")
�� ����� ����� ������ ���� � ����� �����:
|----- ������ � ��������� ----------|
| <����� � ����> |
| ������� ������ +> __________|
���������� ������� ����� ������� � ������ ENTER. ����� � �� ����� ������� ���������, �������������� ����� ������� (��� ��������� ���������): @@(<�����1>) @@(<�����2>) ... �� ���������� B:IN_WIN(...) ������ ������ ���������, ������� ����������� ��� ��������� � �������� ��������������� ��������� ������ �������.
������ 19.1. �� ��� �������� ������ ��� ������ � ������ ��������.
START:IF THEN B:IN_WIN(" ","������� ��� ��������"," ")
T1:ANSW() B:IN() B:HALT();
{= ������ ���� X2 � X4, ��������� �������������, � ��������� ����. X1 =}
ANSW():IF @@(X2) ���(X2,X1) @@(X4) ���(X4,X1) THEN T1:ANSW_1(X1,X2,X4);
{= ������ �������� � �������� X1 =}
ANSW_1(X1,X2,X4):IF ����(X1,X10) THEN
B:BK() B:A(" ",X2," ",X4) B:A(" - ��� ������� ������ ",X10) T!:ANSW_2(X1);
ANSW_2(X1):IF ���(X1) THEN B:BK() B:A("�� ��������!");
ANSW_2(X1):IF <������ ��������> THEN B:BK() B:A("...");
...
��� ����� ������ ���� � �� �������� ��������� @@(������) @@(����). ��� ������� � �� ������ ���(������,��_i) ���(����,��_i) ���������� ��������� ANSW(). ��� ������� ANSW_1(...), ������� ������ �����.
����� ������ �������������� ��������� ANSW_1(...), �������� ����� ������ �������� � �������� X1 (� ������ � EDFILE!).
������ 19.2. ������ ���� "������ ���� - ��� �������?"
START:IF THEN B:IN_WIN(" ","������� ������"," ")
T1:ANSW() B:IN() {= ������� � �������� ������� ������� =}
B:HALT();
ANSW():IF @@(���) @@(�������) {������������� ��� �������}
@@(X2) ���(X2,X1) @@(X4) ���(X4,X1) ����(X1,X10) THEN
B:BK() B:A("��.",X2," ",X4) B:A(" - ��� ������� ������ ",X10);
ANSW():IF THEN B:BK() B:A("�� ����!");
������ ��������� ANSW() ���������� ���� X1=��_i � � �� ������� ����(��_i,...) - ���� ��������� ������.
����� �� ������ (�������� � ��������) ����� ���� ������� � ��������. ����� �������� B:IN() �� �����.
������ 19.3. "�� ����� ���������� ������ ������ ����?"
����� �������������� ����������:
ANSW():IF @@(�����)
@@(����������) {= ������������� ��� ������� =}
@@(X2) ���(X2,X1) @@(X4) ���(X4,X1) ����(X1,X10) ��(X10,X20) THEN
B:BK() B:A(" ",X2," ",X4) B:A(" - ������ �� ���������� ",X20);
����� ��������� ANSW() ����� ���� ���������: ������ �� ��� ����� ���� ������ (�� ����������� ������) � ���� �����.
� ���������� �������� �����������, ���� ��������� ����� ��������� � ����������� ��. ��������, ���� ������ "����� ������ � ������� �����?", �� ������ �� �����. ��� ����� �� ������� � ����� ��������� ����� ��������� ������������ ���� - ���������� �� � �����, ����� ������� � ��. ��� ������������ ��������� ��������������� ������ � �������������� ��������� ����� DECL.
�������� ������� 5.
� ��������� ������� ���������� ����������� � �������� ��������� ������ �� ������� ������� � ���������� ��.
���������� ������|��������� ������