10 '--------------------------
20 '        HISTOGRAMME
30 '--------------------------
40 MODE 1
50 DIM D(300)
60 REM********************************
70 REM*        presentation          *
80 REM********************************
90 CLS
100 XC=0
110 PRINT CHR$(7)
120 INK 0,0
130 PAPER 0
140 BORDER 0
150 INK 1,18
160 INK 2,8
170 PEN 2
180 PRINT"________________________________________"
190 LOCATE 1,20:PRINT"________________________________________"
200 PLOT 0,80:DRAW 0,369
210 PLOT 639,80:DRAW 639,369
220 PEN 1
230 LOCATE 14,10:PRINT"___________"
240 LOCATE 14,12:PRINT"HISTOGRAMME"
250 LOCATE 14,13:PRINT"___________"
260 LOCATE 1,24:PRINT"                                    ":FOR tt=1 TO 1000:NEXT
270 m$=CHR$(128):b$="tapez une touche pour commencer":FOR f=1 TO 31: LOCATE f+5,24:PRINT MID$(b$,f,1);m$:FOR u=1 TO 40:NEXT:NEXT:LOCATE f,24
280 FOR p=1 TO 500:NEXT
290 h$=INKEY$: IF h$="" GOTO 260
300 PRINT CHR$(7)
310 A$=INKEY$:PRINT"":xc=xc+1: IF xc=21 THEN GOTO 320 ELSE GOTO 310
320 CLS
330 REM********************************
340 REM*        mode d'emploi         *
350 REM********************************
360 PRINT
370 PEN 2: PRINT"               ____________"
380 PRINT
390 PRINT"               *** MENU ***"
400 PRINT"               ____________"
410 LOCATE 12,12:PEN 1:PRINT"<1>":LOCATE 16,12:PEN 1:PRINT"  histo 3 dimensions"
420 LOCATE 12,18:PEN 1:PRINT"<2>":LOCATE 16,18:PEN 1:PRINT"  histo 2 dimensions"
430 m$=INKEY$:IF m$="" THEN GOTO 430
440 IF m$="1" OR m$="2" THEN GOTO 450 ELSE GOTO 430
450 CLS
460 PRINT
470 PEN 2
480 PRINT"    ________________________________"
490 PRINT
500 PRINT"       *** CHOIX DES COULEURS ***"
510 PRINT"    ________________________________"
520 PEN 1
530 LOCATE 12,8:PRINT"<1>  jaune"
540 LOCATE 12,10:PRINT"<2>  rouge"
550 LOCATE 12,12:PRINT"<3>  bleu"
560 LOCATE 12,14:PRINT"<4>  magenta pastel"
570 LOCATE 12,16:PRINT"<5>  vert vif"
580 LOCATE 12,18:PRINT"<6>  turquoise vif"
590 LOCATE 12,20:PRINT"<7>  orange"
600 LOCATE 12,22:PRINT"<8>  blanc"
610 LOCATE 12,24:PRINT"<9>  bleu vif"
620 c$=INKEY$:IF c$="" GOTO 620
630 IF c$="1" THEN GOTO 730
640 IF c$="2" THEN GOTO 740
650 IF c$="3" THEN GOTO 750
660 IF c$="4" THEN GOTO 720
670 IF c$="5" THEN GOTO 760
680 IF c$="6" THEN GOTO 770
690 IF c$="7" THEN GOTO 780
700 IF c$="8" THEN GOTO 790
710 IF c$="9" THEN GOTO 800
720 co=17:GOTO 810
730 co=24:GOTO 810
740 co=6:GOTO 810
750 co=1:GOTO 810
760 co=18:GOTO 810
770 co=20 :GOTO 810
780 co=15 :GOTO 810
790 co=26:GOTO 810
800 co=2
810 CLS
820 PRINT
830 PEN 2
840 PRINT"  ___________________________________"
850 PRINT
860 PRINT"  *** ENTREE DES DONNEES DE BASES ***"
870 PRINT"  ___________________________________"
880 PEN 1
890 PRINT"":PRINT"":PRINT""
900 PRINT
910 LOCATE 10,24:PRINT"    appuyer sur <enter> pour valider.."
920 LOCATE 4,8: INPUT"titre de votre histogramme";t$
930 PRINT
940 INPUT"   unite sur l'axe des x";x$
950 PRINT
966 INPUT"   unite sur l'axe des y";y$
970 PRINT
980 INPUT"   echelle ( donnee la plus grande)";ev
990 PRINT
1000 INPUT"   nombre de donnees";nd
1010 IF nd>200 GOTO 1000
1020 IF m$="2" THEN c=280/ev ELSE c=280/(1.1*ev)
1030 REM********************************
1040 REM*      entree des donnes       *
1050 REM********************************
1060 CLS
1070 PEN 2
1080 PRINT" _____________________________________"
1090 PRINT
1100 PRINT"  *** ENTREE DES DONNEES DIRECTES ***"
1110 PRINT" _____________________________________"
1120 WINDOW 1,40,25,8
1130 PEN 1
1140 FOR i=1 TO nd
1150 PRINT"       donnees";i;"?"
1160 INPUT"       ";d(i)
1170 IF d(i)>ev THEN GOTO 1150
1180 IF d(i)<-ev/4 GOTO 1150
1190 IF d(i)<0 AND m$="1" GOTO 1150
1200 PRINT""
1210 NEXT i
1220 MODE 1
1230 REM********************************
1240 REM*         couleurs             *
1250 REM********************************
1260 INK 2,co
1270 PEN 2
1280 REM********************************
1290 REM*    abscisse et ordonnee      *
1300 REM********************************
1310 CLS
1320 PLOT 50,100
1330 DRAW 50,380
1340 PLOT 50,100
1350 DRAW 640,100
1360 REM********************************
1370 REM*          histo 2 d           *
1380 REM********************************
1390 IF m$="2" THEN b1=550/nd ELSE b1=550/(nd*2)
1400 IF m$="1" THEN u=4
1410 b=b1
1420 FOR i=1 TO nd
1430 z=b1-5
1440 IF i>1 THEN b=b+b1
1450 IF i=1 AND m$="1" THEN b=b1/1.8
1460 IF m$="2" AND i=1 THEN u=4
1470 IF m$="2" AND i>1 THEN u=-2
1480 IF d(i)<0 THEN ORi=95 ELSE ORi=105
1490 IF d(i)<0 THEN GOSUB 1910
1500 IF m$="2" THEN b2=b+8 ELSE b2=b*2
1510 PLOT( b2)+50,ORi
1520 DRAW( b2+50),(d(i)*c)+ORi
1530 FOR f=1 TO z+u
1540 PLOT( b2)+50-f,ORi
1550 DRAW( b2)+50-f,(d(i)*c)+ORi,6
1560 NEXT
1570 IF m$="2" GOTO 1740
1580 REM*******************************
1590 REM*            3 D              *
1600 REM*******************************
1610 gb=116:gc=114
1620 IF d(i)<0 THEN d(i)=-D(i)
1630 IF d(i)<0 THEN ORi=d(i)
1640 k=2
1650 PLOT(b*2)+50,ori
1660 DRAW(b*2)+50+(b1/k),gb
1670 DRAW(b*2)+50+(b1/k),(d(i)*c)+gc
1680 DRAW(b*2)+50,(d(i)*c)+106
1690 PLOT(b*2)+50+(b1/k),(d(i)*c)+gc
1700 DRAW(b*2)+50-(b1/2),(d(i)*C)+gC
1710 PLOT(b*2)+50-(b1/2),(d(i)*c)+gc-1
1720 DRAW(b*2)+50-b1+2,(d(i)*c)+106
1730 REM*******************************
1740 REM*    commentaire graphique    *
1750 REM*******************************
1760 NEXT
1770 PLOT 150,15
1780 TAG
1790 PRINT t$;
1800 vx=-20
1810 PLOT 5,105:TAG:PRINT"0";
1820 PLOT vx,380:TAG:PRINT ev;
1830 PLOT 5,400:TAG:PRINT y$;
1840 PLOT 590-(len(x$)*8),90:TAG:PRINT x$;
1850 d$=INKEY$:IF d$="" GOTO 1850
1860 TAGOFF
1870 GOTO 90
1880 REM*******************************
1890 REM*          negatif            *
1900 REM*******************************
1910 PLOT 50,150
1920 DRAW 50,10
1930 RETURN