1 (* ********************************************************** *)
\r
4 PROGRAMME : Visualisation de coroutines sur l'exemple du programme merge.log
\r
6 AUTEURS : BEAU Anne-Valerie
\r
9 (* ********************************************************** *)
\r
11 Les units utilises :
\r
33 (* COROUTINE MERGE OF BINARY TREES*)
\r
35 (*************************************************************)
\r
36 unit ecrit : iiuwgraph procedure( Number : integer );
\r
37 var n1, n2, n3 : integer;
\r
42 call HASCII(Number + 48);
\r
47 n1 := Number div 10;
\r
48 n2 := Number - n1 * 10;
\r
50 call Hascii(n1 + 48);
\r
52 call Hascii(n2 + 48);
\r
54 n1 := Number div 100;
\r
55 n2 := (Number - n1 * 100) div 10;
\r
56 n3 := Number - n1 * 100 - n2 * 10;
\r
58 call Hascii(n1 + 48);
\r
60 call Hascii(n2 + 48);
\r
62 call Hascii(n3 + 48);
\r
65 call outstring(" ");
\r
68 (*************************************************************)
\r
69 unit lit : iiuwgraph function : integer;
\r
70 var X,Y,i, OrdN : integer,
\r
71 Number : arrayof integer;
\r
73 array Number dim(1:4);
\r
79 if i = 8 or (OrdN < 48 and OrdN > 57) then exit fi;
\r
108 when 13 : if i > 0 then exit fi ;
\r
115 call hascii(48+Number(1));
\r
120 call Move(X + 8,Y);
\r
122 call hascii(48 + Number(2));
\r
126 if (Number(1) =0 ) or (Number(1) = 0 and Number(2) = 0)
\r
127 or (Number(1) = 0 and Number(2) = 0 and Number(3) = 0)
\r
137 result := Number(1);
\r
141 result := 10 * Number(1) + Number (2);
\r
143 result := 100 * Number(1) + 10 * Number(2) + Number(3);
\r
149 (*************************************************************)
\r
150 unit inchar : iiuwgraph function : integer;
\r
155 if c =/= 0 then exit fi;
\r
160 (*************************************************************)
\r
161 unit mousepos : iiuwgraph procedure(A,B : integer; output chx : integer);
\r
163 if ((A>50) and (A<170))
\r
165 if ((B>325) and (B<345))
\r
170 if ((A>260) and (A<380))
\r
172 if ((B>290) and (B<310))
\r
181 (*************************************************************)
\r
182 unit rectangle : iiuwgraph procedure(X1,Y1,X2,Y2 : integer);
\r
194 (*************************************************************)
\r
195 unit affiche_prg : iiuwgraph procedure;
\r
200 call draw(400,325);
\r
206 call outstring("DL");
\r
208 call outstring("SL");
\r
211 call move(370,330);
\r
212 call outstring("main");
\r
215 call outstring("program merge;");
\r
217 call outstring("unit node:class;...;");
\r
219 call outstring("unit ins:procedure(value:integer);...;end ins;");
\r
221 call outstring("end node;");
\r
223 call outstring("unit travers:coroutine(x:node);...;");
\r
225 call outstring("unit t:procedure(y:node);...;end t;");
\r
227 call outstring("end travers;");
\r
229 call outstring("var n ,i ,j ,min ,m :integer,");
\r
232 call outstring(" ");
\r
236 call outstring(" ");
\r
240 call outstring(" ");
\r
244 call outstring(" ");
\r
248 call outstring(" ");
\r
253 call outstring("d:arrayof node, tr:array of travers;");
\r
255 call outstring("begin");
\r
257 call outstring("writeln('Donnez le nombre d'arbres :');read(n);");
\r
259 call outstring("array d dim(1:n);");
\r
261 call outstring("for i:=1 to n do");
\r
263 call outstring("writeln('Donnez la sequence de l'arbre no :');");
\r
265 call outstring("read(j); if j>m then m:=j fi;");
\r
267 call outstring("d(i):=new node; d(i).val:=j;");
\r
269 call outstring("do");
\r
271 call outstring("read(j); if j=0 then exit fi;");
\r
273 call outstring("if j>m then m:=j fi; call d(i).ins(j);");
\r
275 call outstring("od;");
\r
277 call outstring("od;");
\r
279 call outstring("m:=m+1; array tr dim(1:n); min:=0;");
\r
281 call outstring("for i:=1 to n do");
\r
283 call outstring("tr(i):=new travers(d(i)); attach(tr(i));");
\r
285 call outstring("od;");
\r
287 call outstring("writeln('La fusion de la sequence est :');");
\r
289 call outstring("do");
\r
291 call outstring("if min=m then exit fi; min:=tr(1).val; j:=1;");
\r
293 call outstring("for i:=2 to n do");
\r
295 call outstring("if min>tr(i).val then min:=tr(i).val;j:=i;fi;");
\r
297 call outstring("od;");
\r
299 call outstring("if min<m then write(min); attach(tr(j)); fi;");
\r
301 call outstring("od;");
\r
303 call outstring("end merge.");
\r
306 (*************************************************************)
\r
307 unit affiche_abr : iiuwgraph procedure(x1,y1,x2,y2:integer);
\r
308 var number : integer;
\r
311 call move(x1+5,y1+5);
\r
313 call ecrit(number);
\r
315 call rectangle(x1,y1,x2,y2);
\r
316 call move(x1,y1+5);
\r
317 call draw(400,y1+5);
\r
324 call move(x1+5,y1+5);
\r
327 call rectangle(x1,y1,x2,y2);
\r
328 call move(x1,y1+5);
\r
329 call draw(400,y1+5);
\r
336 call move(x1+5,y1+5);
\r
337 call outstring("...");
\r
339 call rectangle(x1,y1,x2,y2);
\r
340 call move(x1,y1+5);
\r
341 call draw(400,y1+5);
\r
345 call move(x1+5,y1+5);
\r
348 call rectangle(x1,y1,x2,y2);
\r
349 call move(x1,y1+5);
\r
350 call draw(400,y1+5);
\r
357 (*************************************************************)
\r
358 unit affiche_cor : iiuwgraph procedure(x1,y1,x2,y2:integer);
\r
361 call rectangle(x1,y1,x2,y2);
\r
362 call move(x1,y1+10);
\r
363 call draw(x2,y1+10);
\r
364 call move(x1+50,y1+2);
\r
365 call outstring("DL");
\r
366 call move(x1+150,y1+2);
\r
367 call outstring("SL");
\r
369 call move(x1,y1+145);
\r
370 call draw(x2,y1+145);
\r
371 call move(x2-55,y2+5);
\r
372 call outstring("travers");
\r
374 call move(x1+5,y1+15);
\r
375 call outstring("unit travers:coroutine");
\r
376 call move(x1+30,y1+25);
\r
377 call outstring("(x:node);");
\r
378 call move(x1+10,y1+35);
\r
379 call outstring("var val : interger;");
\r
380 call move(x1+170,y1+35);
\r
382 call outstring(" ");
\r
383 call move(x1+170,y1+35);
\r
384 call ecrit(valeur);
\r
386 call move(x1+10,y1+45);
\r
387 call outstring("unit t:procedure(y:node);");
\r
388 call move(x1+10,y1+55);
\r
389 call outstring("begin");
\r
390 call move(x1+15,y1+65);
\r
391 call outstring("if y=/=none");
\r
392 call move(x1+15,y1+75);
\r
393 call outstring("then");
\r
394 call move(x1+20,y1+85);
\r
395 call outstring("call t(y.left);");
\r
396 call move(x1+20,y1+95);
\r
397 call outstring("val:=y.val;");
\r
398 call move(x1+20,y1+105);
\r
399 call outstring("detach;");
\r
400 call move(x1+20,y1+115);
\r
401 call outstring("call t(y.right);");
\r
402 call move(x1+15,y1+125);
\r
403 call outstring("fi;");
\r
404 call move(x1+10,y1+135);
\r
405 call outstring("end t;");
\r
408 call move(x1+5,y1+150);
\r
409 call outstring("begin");
\r
410 call move(x1+10,y1+160);
\r
411 call outstring("return;");
\r
412 call move(x1+10,y1+170);
\r
413 call outstring("call t(x);");
\r
414 call move(x1+10,y1+180);
\r
415 call outstring("val:=m;");
\r
416 call move(x1+5,y1+190);
\r
417 call outstring("end travers;");
\r
420 (*************************************************************)
\r
421 unit presentation : iiuwgraph procedure;
\r
425 call rectangle(115,90,515,120);
\r
427 call move(125,100);
\r
428 call outstring("VISUALISATION DES COROUTINES DU PROGRAMME MERGE");
\r
430 call outstring("Ce programme utilise les coroutines et fusionne un nombre donn
\82");
\r
432 call outstring("d'arbres de recherche.");
\r
437 (*************************************************************)
\r
438 unit menu : iiuwgraph procedure(output chx:integer);
\r
439 var b,h,v : integer;
\r
446 call rectangle(20,328,140,348);
\r
449 call outstring("Quitter");
\r
450 call move(170,340);
\r
451 call outstring("Ou cliquer ailleurs pour continuer");
\r
452 call move(400,330);
\r
456 call getpress(0,h,v,b,gauche,droit,centre);
\r
459 call mousepos(h,v,chx);
\r
466 call move(150,340);
\r
467 call outstring("SERVEZ-VOUS DE LA SOURIS");
\r
475 (*************************************************************)
\r
476 unit menu1 : iiuwgraph procedure(output chx:integer);
\r
477 var b,h,v : integer;
\r
485 call rectangle(200,160,430,180);
\r
487 call move(210,165);
\r
488 call outstring("L'application est termin
\82e");
\r
490 call rectangle(260,290,380,310);
\r
491 call move(295,297);
\r
494 call outstring("Quitter");
\r
495 call move(400,330);
\r
499 call getpress(0,h,v,b,gauche,droit,centre);
\r
502 call mousepos(h,v,chx);
\r
509 call move(150,340);
\r
510 call outstring("SERVEZ-VOUS DE LA SOURIS");
\r
518 (*************************************************************)
\r
519 unit efface : iiuwgraph procedure;
\r
521 call move(150,340);
\r
522 call outstring(" ");
\r
525 (*************************************************************)
\r
526 unit efface_zone : iiuwgraph procedure;
\r
531 call move(231,cpt);
\r
532 call outstring(" ");
\r
536 call move(317,cpt);
\r
537 call outstring(" ");
\r
541 call move(231,cpt);
\r
542 call outstring(" ");
\r
546 (*************************************************************)
\r
547 unit pause : iiuwgraph procedure;
\r
551 var h,b,v,p : integer,
\r
559 call move(150,340);
\r
560 call outstring("Appuyez sur le bouton droit de la souris");
\r
561 call move(400,340);
\r
564 call getpress(1,h,v,p,gauche,droit,centre);
\r
566 call move(150,340);
\r
567 call outstring(" ");
\r
570 call move(150,340);
\r
571 call outstring(" ");
\r
572 call move(150,340);
\r
573 call outstring("Appuyez sur une touche");
\r
580 unit aff : iiuwgraph procedure(num : integer);
\r
584 call outstring("tr(");
\r
587 call outstring(")");
\r
591 call outstring("<");
\r
595 (*************************************************************)
\r
597 (* NODE OF BINARY TREE *)
\r
598 VAR LEFT,RIGHT : NODE, VAL,tuer : INTEGER; (*SEARCHING KEY *)
\r
600 UNIT INS : PROCEDURE (VALUE : INTEGER);
\r
609 CALL LEFT.INS(VALUE);
\r
612 (* ELEMENTS NOT LESS THAN VAL ARE LOCATED IN THE RIGHT SUBTREE *)
\r
616 RIGHT.VAL := VALUE;
\r
618 CALL RIGHT.INS(VALUE);
\r
624 unit reaffiche_boi : iiuwgraph procedure(courant,boite : node,
\r
625 hmin, hmax, vmax, hauteur : integer);
\r
640 w := ((hmin - hmax) / 2) + hmax;
\r
641 call move(w-5,vmax+10);
\r
643 call ecrit(boite.val);
\r
645 call rectangle(w-10,vmax-4,w+38,vmax+20);
\r
646 call move(w-10,vmax+6);
\r
647 call draw(w+38,vmax+6);
\r
648 call move(w-3,vmax-2);
\r
649 call outstring("DL");
\r
650 call move(w+20,vmax-2);
\r
651 call outstring("SL");
\r
652 call move(w+30,vmax+25);
\r
653 call outstring("t");
\r
656 call trait(w,vmax);
\r
665 CALL reaffiche_boi(courant,boite.left,hmin,w,vmax+60,hauteur+1);
\r
667 CALL reaffiche_boi(courant,boite.RIGHT,w,hmax,vmax+60,hauteur+1);
\r
673 unit trait : iiuwgraph procedure(mil,bas : integer);
\r
676 call move(mil-10,bas+14);
\r
677 call draw(mil-60,bas+14);
\r
678 call draw(mil-60,bas+50);
\r
679 call move(mil-67,bas+45);
\r
680 call outstring("\/");
\r
682 call move(mil+38,bas+14);
\r
683 call draw(mil+88,bas+14);
\r
684 call draw(mil+88,bas+50);
\r
685 call move(mil+81,bas+45);
\r
686 call outstring("\/");
\r
689 unit aff_cor : iiuwgraph procedure(x1,y1,x2,y2 : integer);
\r
692 call move(x1+220,y1+48);
\r
693 call draw(x1+400,y1+5);
\r
694 call move(x1+405,y1);
\r
695 call outstring(">");
\r
697 call move(x1+400,y1-3);
\r
698 call draw(x1+220,y1+3);
\r
699 call move(x1+220,y1);
\r
700 call outstring("<");
\r
702 call move(x1+450,y1-6);
\r
703 call draw(x1+220,y1-6);
\r
704 call move(x1+220,y1-9);
\r
705 call outstring("<");
\r
710 call affiche_cor(x1,y1,x2,y2);
\r
714 (*************************************************************)
\r
715 UNIT TRAVERS : iiuwgraph COROUTINE (X :NODE);
\r
716 (* CONSECUTIVE ELEMENTS OF TREE NODE ARE LOCATED IN THE GROWING ORDER TO *)
\r
717 (* THE "MAIL BOX" VAL AND SENT TO THE ATTACHING UNIT *)
\r
719 (* ----------------------------------------------------------- *)
\r
720 UNIT T : PROCEDURE (Y : NODE, xmin, xmax, ymax, haut : integer);
\r
721 (* RECURSIVE PROCEDURE FOR INFIX TRAVERSION RESULTING TREE ELEMENTS *)
\r
722 (* IN NOT DECREASING ORDER *)
\r
730 call move(x1+10,y1+55);
\r
731 call outstring("begin");
\r
733 call affiche_cor(x1,y1,x2,y2);
\r
735 call move(x1+15,y1+65);
\r
736 call outstring("if y=/=none");
\r
738 call affiche_cor(x1,y1,x2,y2);
\r
743 call move(x1+15,y1+75);
\r
744 call outstring("then");
\r
754 w := ((xmin - xmax) / 2) + xmax;
\r
755 call move(w-5,ymax+10);
\r
759 call rectangle(w-10,ymax-4,w+38,ymax+20);
\r
760 call move(w-10,ymax+6);
\r
761 call draw(w+38,ymax+6);
\r
762 call move(w-3,ymax-2);
\r
763 call outstring("DL");
\r
764 call move(w+20,ymax-2);
\r
765 call outstring("SL");
\r
766 call move(w+30,ymax+25);
\r
767 call outstring("t");
\r
770 call trait(w,ymax);
\r
773 call aff_cor(x1,y1,x2,y2);
\r
775 call move(x1+20,y1+85);
\r
776 call outstring("call t(y.left);");
\r
778 call aff_cor(x1,y1,x2,y2);
\r
779 CALL T(Y.LEFT,xmin,w,ymax+60,haut+1);
\r
782 call reaffiche_boi(y,x,240,630,10,0);
\r
784 call move(x1+20,y1+95);
\r
785 call outstring("val:=y.val;");
\r
787 call aff_cor(x1,y1,x2,y2);
\r
791 call move(x1+20,y1+105);
\r
792 call outstring("detach;");
\r
799 call reaffiche_boi(y,x,240,630,10,0);
\r
800 call aff_cor(x1,y1,x2,y2);
\r
802 call move(x1+20,y1+115);
\r
803 call outstring("call t(y.right);");
\r
805 call aff_cor(x1,y1,x2,y2);
\r
806 (* CONSECUTIVE ELEMENTS OF TREE Y ARE SENT FOR FURTHER *)
\r
807 (* PROCESSING TO THE MASTER PROGRAM *)
\r
808 CALL T(Y.RIGHT,w,xmax,ymax+60,haut+1);
\r
811 call move(x1+15,y1+125);
\r
812 call outstring("fi;");
\r
814 call affiche_cor(x1,y1,x2,y2);
\r
816 call move(x1+10,y1+135);
\r
817 call outstring("end t;");
\r
819 call affiche_cor(x1,y1,x2,y2);
\r
828 call affiche_cor(x1,y1,x2,y2);
\r
830 call move(x1+5,y1+150);
\r
831 call outstring("begin");
\r
833 call affiche_cor(x1,y1,x2,y2);
\r
835 call move(x1+10,y1+160);
\r
836 call outstring("return;");
\r
838 call affiche_cor(x1,y1,x2,y2);
\r
852 call affiche_cor(x1,y1,x2,y2);
\r
854 call move(x1+10,y1+170);
\r
855 call outstring("call t(x);");
\r
857 call affiche_cor(x1,y1,x2,y2);
\r
858 CALL T(X,240,630,10,0);
\r
860 call move(x1+10,y1+180);
\r
861 call outstring("val:=m;");
\r
863 call affiche_cor(x1,y1,x2,y2);
\r
866 call affiche_cor(x1,y1,x2,y2);
\r
869 call move(x1+5,y1+190);
\r
870 call outstring("end travers;");
\r
874 (* VAL IS MAXIMAL VALUE TREATED AS A SENTINEL WHILE ENTIRE TREE IS *)
\r
878 unit saisir : iiuwgraph procedure;
\r
879 var cpt, w, z : integer;
\r
885 call outstring(" Les elements de l'arbre sont des entiers");
\r
887 call outstring(" Pour terminer l'insertion des elements de l'arbre, tapez 0");
\r
889 call outstring(" Ce nombre n'est pas insere dans l'arbre");
\r
892 call outstring(" Donnez la sequence des elements de l'arbre numero ");
\r
895 for cpt := 1 to borne
\r
904 call ecrit(arbre(cpt));
\r
908 unit sequence : iiuwgraph procedure;
\r
909 var cpt, w, z : integer;
\r
915 call outstring("La fusion des sequences est : ");
\r
917 for cpt := 1 to borne
\r
926 call ecrit(res(cpt));
\r
932 (*************************************************************)
\r
933 VAR N,I,J,MIN,M,K, choix,x1,x2,y1,y2,valeur,u : INTEGER,
\r
934 h,v,p,abscisse,ordonnee,xmin,xmax,ymax : integer,
\r
935 hmin,hmax,vmax,hauteur,haut,sortir,borne,longueur : integer,
\r
936 driver,droit,gauche,centre : boolean,
\r
939 arbre,res : arrayof integer,
\r
941 (* N - TNE NUMBER OF TREES
\r
942 M - MAXIMAL KEY VALUE + 1
\r
943 MIN- MINIMAL VALUE PRODUCED AT A GIVEN MOMENT BY SYSTEM OF COROUTINES*)
\r
945 TR : ARRAYOF TRAVERS;
\r
948 pref iiuwgraph block
\r
954 call hpage(0,639,349);
\r
968 call outstring("begin");
\r
975 call outstring("writeln('Donnez le nombre d'arbres :');");
\r
980 call outstring(" Donnez le nombre d'arbres : ");
\r
985 call move(332,107);
\r
986 call outstring("read(n);");
\r
991 call outstring(" Donnez le nombre d'arbres : ");
\r
997 call outstring(" Ce nombre doit etre superieur a 0");
\r
1002 call move(250,10);
\r
1009 call move(20,116);
\r
1010 call outstring("array d dim(1:n);");
\r
1019 call affiche_abr(x1,y1,x2,y2);
\r
1027 array arbre dim(1:50);
\r
1030 call move(20,125);
\r
1031 call outstring("for i:=1 to n do");
\r
1035 call move(30,134);
\r
1036 call outstring("writeln('Donnez la sequence de l'arbre no :');");
\r
1046 call move(30,143);
\r
1047 call outstring("read(j);");
\r
1051 call move(10,200);
\r
1058 borne := borne + 1;
\r
1059 arbre(borne) := j;
\r
1060 longueur := longueur + 1;
\r
1067 call move(102,143);
\r
1068 call outstring("if j>m");
\r
1074 call move(158,143);
\r
1075 call outstring("then");
\r
1079 call move(198,143);
\r
1080 call outstring("m:=j");
\r
1085 call move(238,143);
\r
1086 call outstring("fi;");
\r
1092 call move(30,152);
\r
1093 call outstring("d(i):=new node;");
\r
1098 call move(158,152);
\r
1099 call outstring("d(i).val:=j;");
\r
1107 call move(30,161);
\r
1108 call outstring("do");
\r
1113 call move(40,170);
\r
1114 call outstring("read(j);");
\r
1119 call move(10,200);
\r
1123 borne := borne + 1;
\r
1124 arbre(borne) := j;
\r
1125 longueur := longueur + 1;
\r
1132 call move(112,170);
\r
1133 call outstring("if j=0");
\r
1139 call move(168,170);
\r
1140 call outstring("then");
\r
1144 call move(208,170);
\r
1145 call outstring("exit");
\r
1151 call move(248,170);
\r
1152 call outstring("fi;");
\r
1155 if j > 0 then exit fi;
\r
1160 call move(40,179);
\r
1161 call outstring("if j>m");
\r
1167 call move(96,179);
\r
1168 call outstring("then");
\r
1172 call move(136,179);
\r
1173 call outstring("m:=j");
\r
1178 call move(176,179);
\r
1179 call outstring("fi;");
\r
1185 call move(208,179);
\r
1186 call outstring("call d(i).ins(j);");
\r
1191 call move(30,188);
\r
1192 call outstring("od;");
\r
1197 call move(20,197);
\r
1198 call outstring("od;");
\r
1212 call move(19,327);
\r
1216 call outstring(" ");
\r
1220 call move(20,206);
\r
1221 call outstring("m:=m+1;");
\r
1228 call move(84,206);
\r
1229 call outstring("array tr dim(1:n);");
\r
1231 ARRAY TR DIM(1:N);
\r
1235 call move(236,206);
\r
1236 call outstring("min:=0;");
\r
1243 call move(20,215);
\r
1244 call outstring("for i:=1 to n do");
\r
1249 call move(30,224);
\r
1250 call outstring("tr(i):=new travers(d(i));");
\r
1255 call move(580,10);
\r
1256 call outstring("tr(");
\r
1258 call move(630,10);
\r
1259 call outstring(")");
\r
1260 call move(595,22);
\r
1261 call outstring("\/");
\r
1262 call move(602,18);
\r
1263 call draw(602,26);
\r
1266 call move(310,55);
\r
1267 call draw(400,55);
\r
1268 call move(400,52);
\r
1269 call outstring(">");
\r
1272 call move(465,30);
\r
1273 call draw(465,20);
\r
1274 call draw(400,20);
\r
1275 call move(400,17);
\r
1276 call outstring("<");
\r
1279 call move(570,30);
\r
1280 call draw(570,10);
\r
1281 call draw(400,10);
\r
1283 call outstring("<");
\r
1284 TR(I) := NEW TRAVERS (D(I));
\r
1292 call affiche_cor(x1,y1,x2,y2);
\r
1296 call move(238,224);
\r
1297 call outstring("attach(tr(i));");
\r
1304 call affiche_cor(x1,y1,x2,y2);
\r
1309 call move(20,233);
\r
1310 call outstring("od;");
\r
1322 call move(19,327);
\r
1326 call outstring(" ");
\r
1330 call move(20,242);
\r
1331 call outstring("writeln('La fusion de la sequence est :');");
\r
1337 array res dim(1:longueur);
\r
1345 call move(20,251);
\r
1346 call outstring("do");
\r
1351 call move(30,260);
\r
1352 call outstring("if min=m");
\r
1358 call move(102,260);
\r
1359 call outstring("then");
\r
1363 call move(142,260);
\r
1364 call outstring("exit");
\r
1370 call move(182,260);
\r
1371 call outstring("fi;");
\r
1376 call move(214,260);
\r
1377 call outstring("min:=tr(1).val;");
\r
1383 call move(342,260);
\r
1384 call outstring("j:=1;");
\r
1392 call move(30,269);
\r
1393 call outstring("for i:=2 to n do");
\r
1398 call move(40,278);
\r
1399 call outstring("if min>tr(i).val");
\r
1405 call move(176,278);
\r
1406 call outstring("then");
\r
1411 call move(216,278);
\r
1412 call outstring("min:=tr(i).val;");
\r
1418 call move(336,278);
\r
1419 call outstring("j:=i;");
\r
1425 call move(376,278);
\r
1426 call outstring("fi;");
\r
1431 call move(30,287);
\r
1432 call outstring("od;");
\r
1438 call move(30,296);
\r
1439 call outstring("if min<m");
\r
1445 call move(102,296);
\r
1446 call outstring("then");
\r
1450 call move(142,296);
\r
1451 call outstring("write(min);");
\r
1455 borne := borne + 1;
\r
1456 res(borne) := min;
\r
1464 call move(236,296);
\r
1465 call outstring("attach(tr(j));");
\r
1469 call affiche_cor(x1,y1,x2,y2);
\r
1474 call move(358,296);
\r
1475 call outstring("fi;");
\r
1480 call move(20,305);
\r
1481 call outstring("od;");
\r
1487 call move(10,314);
\r
1488 call outstring("end merge.");
\r
1492 call menu1(choix);
\r
1499 call menu1(choix);
\r