TRIBULATION Presque toutes machines Frédéric Lassis a un problème pour classer des mots par ordre alphabétique, ce qui l'empêche de continuer son super programme. «Je n'ai pas eu le déclic pour trouver la combine» écrit-il. Comme je pense que ce qui compte dans un programme ce n'est pas l'écriture dans un langage quelconque (qui n'est en fait que du codage, quelques astuces de programmation mises à part), mais bien la méthode employée, je vais essayer un nouveau style d'initiation. Le programme que je vous propose correspond à la méthode du tri bulle, et j'espère que vous comprendrez pourquoi en le faisant tourner. L'originalité vient du fait que j'y ai inclus les instructions qui permettent au programme d'expliquer lui-même ce qu'il est en train de faire. Ainsi, en le faisant tourner, vous pourrez suivre pas à pas la manière dont le tri s'effectue. Le programme ne sera donc pas utilisable en tant que tel dans une application, mais, puisque vous en aurez compris le principe, vous ne devriez plus avoir de problème pour faire votre propre routine. J'aimerais que vous m'écriviez pour me dire si cette manière de faire de l'initiation vous plait, si vous trouvez idiot de taper dans un programme des lignes qui «ne servent à rien» ou si vous avez des idées pour l'améliorer encore. Ecrivez-moi de même si vous avez des problèmes de programmation qui pourraient rentrer dans le cadre de cette rubrique. François DUPIN 1 ' SAVE "TRIBUL.BAS" 100 REM INITIALISATION 110 PRINT "- JE LIS D'ABORD LE NOMBRE DE NOMS." 120 READ N 130 PRINT "- IL Y A ";N;"NOMS." 140 PRINT "- JE RESERVE DE LA PLACE MEMOIRE, PUIS" 150 DIM T$(N) 160 PRINT " JE CHARGE LES DONNEES DANS LE TABLEAU." 170 FOR I=1 TO N 180 READ T$(I) 190 NEXT I 200 PRINT "CASE < CONTENU DU TABLEAU >" 210 GOSUB 1020 220 PRINT "- JE VAIS TRIER CE TABLEAU." 230 PRINT "NB: UN NOM EST PLUS PETIT QU'UN AUTRE" 240 PRINT " S'IL EST AVANT LUI DANS L'ORDRE ALPHABETIQUE" 300 REM ----PROGRAMME DE TRI ----------- 310 FOR J=1 TO N-1 320 PRINT "- JE VAIS PARCOURIR LE TABLEAU DE LA CASE 1 A LA CASE";N-J;"." 330 D=0 340 FOR P1=1 TO N-J 350 P2=P1+1 360 E=E+1 370 PRINT "? JE COMPARE LE CONTENU DE ";P1;"et ";P2;"." 380 PRINT " JE CONSTATE QUE '";T$(P1);"' "; 390 IF T$(P1)>T$(P2) THEN 430 400 PRINT "N'EST PAS PLUS GRAND QUE ";T8(P2);"'." 410 PRINT " DONC JE N'AI RIEN A FAIRE." 420 GOTO 490 430 PRINT "EST PLUS GRAND QUE '";T$(P2);"'." 440 PRINT " DONC J'ECHANGE LES CONTENUS." 450 W$=T$(P1) 460 T$(P1)=T$(P2) 470 T$(P2)=W$ 480 D=D+1 490 GOSUB 1020 500 NEXT P1 510 PRINT "- JE SAIS MAINTENANT QUE LE TABLEAU EST TRIE A PARTIR DE LA CASE ";P2 ;"." 520 PRINT "? MAIS, LE TABLEAU EST-IL TRIE EN ENTIER?" 530 IF D<>0 THEN 570 540 PRINT " OUI, PUISQU'IL N'Y A PAS EU D'ECHANGE PENDANT CE TOUR." 550 PRINT " ALORS, J'ARRETE." 560 GOTO 610 570 PRINT " JE N'EN SAIS RIEN," 580 PRINT " PUISQU'IL Y A EU";D;"ECHANGES PENDANT CE TOUR." 590 PRINT " ALORS, JE CONTINUE" 600 NEXT J 610 PRINT "- TABLEAU TRIE! EN ";E;"FOIS." 620 END 1000 REM ----- SOUS PROGRAMME ----- 1010 REM -----D'AFFICHAGE DU TABLEAU---- 1020 PRINT "----------------------------" 1030 FOR I=1 TO N 1040 PRINT I; 1050 IF I "; 1120 PRINT T$(I) 1130 NEXT I 1140 INPUT "-------------------- SUITE";R$ 1150 RETURN 9000 REM --DONNEES A TRIER ------- 9010 DATA 8 9020 DATA GEORGES,JEAN-PAUL,VICTOR,JEAN-JACQUES 9030 DATA ALBERT,EDOUARD,CHARLES,HECTOR,JEAN-LOUP