1 REM KOMENIUM,n.p. PRAHA-oddeleni pocitacovych programu 2 REM 110 00 Praha 1-Truhlarska 12. (Telefon 2314934) 3 REM Evidencni cislo programu: 0113/CKL08/15 4 REM Nazev programu:LINEARNI FUNKCE 5 REM Schvaleno komisi dne: 7.3.1988 6 REM Namet navrhl:P.Nahodil 7 REM Scenar vypracoval:P.Nahodil 8 REM 2.recenzi provedl:RNDr.S.Schwabik,CSc 9 REM Metodicky text zpracoval: P.Nahodil 10 REM 1.recenzi provedl:Ing.B. Brdicka 11 REM 2.recenzi provedl:RNDr.S.Schwabik,CSc 12 REM Urceno pro-typ skoly:vsechny SOS 13 REM -predmet:matematika 14 REM -tematicky celek:lin. funkce,lin. rovnice a nerovnice a jejich soustavy 15 REM Urceno pro-typ pocitace: IQ 151 16 REM Vybaveni pocitace moduly:1001100000 18 REM Vybaveni pocitace periferiemi:000000000 90 CALL HEX(F973) 100 REM ********************* 110 REM ** LINEARNI FUNKCE ** 120 REM ********************* 130 CLS:ERASE:AN=1:BN=1 140 REM HLAVNI MENU 145 PRINT&1,9", ," 150 PRINT&2,1"L I N E A R N I F U N K C E" 153 RA=0:SL=0:S=30:V=3:GOSUB10000 155 PRINT&4,7"," 160 PRINT&5,2"HLAVNI MENU";CHR$(15)&6,2"QQQQQQQQQQQ" 165 PRINT&7,14"," 170 PRINT&8,4"V- vymezeni pojmu" 175 PRINT&9,16", ," 180 PRINT&10,4"G- graf linearni funkce" 185 PRINT&11,14"," 190 PRINT&12,4"K- kresleni grafu" 200 PRINT&14,4"T- test" 210 PRINT&16,4"H- pomoc" 220 PRINT&18,4"E- konec" 230 PRINT&23,14"," 240 PRINT&24,4"Stiskni klavesu" 250 PRINT&27,8"V,G,K,T,H nebo E";CHR$(7) 260 I$=INKEY$ 270 IF I$="V" THEN CLS:CALLHEX(F973):GOTO400 280 IF I$="G" THEN CLS:CALLHEX(F973):GOTO1000 290 IF I$="K" THEN CLS:CALLHEX(F973):GOTO2000 300 IF I$="T" THEN CLS:CALLHEX(F973):GOTO3000 310 IF I$="H" THEN CLS:CALLHEX(F973):GOTO4000 320 IF I$="E" THEN CLS:CALLHEX(F973):GOTO5000 330 GOTO260 400 REM LIST V1 410 PRINT&4,7", ," 420 PRINT&5,3"Linearni funkce je funkce" 425 PRINT&8,3"tvaru:" 430 PRINT&12,10"y = ax + b" 440 RA=10:SL=8:S=13:V=4 445 GOSUB 10000 460 PRINT&16,17"v v, v,"; 470 PRINT&17,3"to je nejobecnejsi pripad" 480 PRINT&20,14", , v," 490 PRINT&21,3"kde a je realne cislo" 500 PRINT&22,6"o ," 510 PRINT&23,5"ruzne od nuly," 520 PRINT&24,16", , , v," 530 PRINT&25,3"b je libovolne realne cislo." 560 A$="V" 570 GOSUB11000 580 REM LIST V2 590 PRINT&3,4", ,v ," 600 PRINT&4,3"Dale si projdeme zvlastni" 610 PRINT&5,4"v, ," 620 PRINT&6,3"pripady teto funkce:" 630 B$="1":C$="a":K=14 640 GOSUB12000 645 WAIT(10) 650 FOR I=18TO 14 STEP-1 660 PRINT&20,I"b " 665 WAIT(1) 670 NEXT I 680 WAIT(8) 690 PRINT&23,9"v" 700 PRINT&24,3"potom clen ax je roven nule." 710 PRINT&25,7", ," 720 PRINT&26,3"Dostavame" 730 PRINT&27,19"," 740 PRINT&28,5"tzv. KONSTANTNI FUNKCI" 750 WAIT(75) 760 RA=18:SL=8:S=8:V=4 770 GOSUB10000 775 WAIT(15) 780 GOSUB11000 790 REM LIST V3 800 B$="2":C$="b":K=19 810 GOSUB12000 820 PRINT&20,17" " 830 WAIT(8) 840 PRINT&15,13"," 845 PRINT&16,11",mame:" 850 WAIT(8) 855 RA=18:SL=8:S=9:V=4 860 GOSUB10000 865 PRINT&23,7", ," 870 PRINT&24,3"Dostavame" 880 PRINT&25,14"v, , , v" 890 PRINT&26,5"rovnici prime umernosti." 900 WAIT(60) 910 A$="M" 920 GOSUB11000 930 GOTO140 1000 REM LIST G1 1005 PRINT&1,14", ," 1010 PRINT&2,3"Grafem linearni funkce je" 1015 PRINT&3,10"," 1020 PRINT&4,3"pro jakekoliv hodnoty" 1030 PRINT&5,19"v," 1040 PRINT&6,3"konstant a i b primka;" 1050 PRINT CHR$(15)&7,12;"QMMMQMQQQQQQ" 1060 PRINT&8,19"v" 1070 PRINT&9,2"konstanta a ovlivnuje sklon" 1080 PRINT&10,3"v,";&10,15",";CHR$(15)&10,12"Q" 1090 PRINT&11,2"primky a plati:" 1100 PRINT&12,13"v" 1110 PRINT&13,4"1) jestlize a>0" 1120 PRINT&14,26"," 1130 PRINT&15,9"je funkce rostouci," 1140 PRINT&16,13"v" 1150 PRINT&17,4"2) jestlize a=0" 1160 PRINT&18,28"," 1170 PRINT&19,9"je funkce konstantni," 1180 PRINT&20,21"," 1190 PRINT&21,9"(viz vymezeni pojmu)" 1200 PRINT&22,13"v" 1210 PRINT&23,4"3) jestlize a<0" 1220 PRINT&24,25", ," 1230 PRINT&25,9"je funkce klesajici," 1240 A$="G" 1250 GOSUB11000 1255 REM LIST G2 1260 PRINT&1,22"v" 1270 PRINT&2,5"konstanta b ovlivnuje" 1280 PRINT&3,12",";&3,25"v";CHR$(15)&3,15"Q" 1290 PRINT&4,5"posunuti grafu ve smeru" 1300 PRINT&6,5"osy y." 1310 PRINT&9,2"ZAPAMATUJTE SI:" 1320 PRINT&11,11", ," 1330 PRINT&12,2"Graf linearni funkce y=ax+b" 1340 PRINT&13,6", ,";&13,21"v" 1350 PRINT&14,2"protina osu y v bode b." 1360 RA=10:SL=0:S=30:V=6 1370 GOSUB10000 1380 PRINT&18,3"v";&18,23"," 1390 PRINT&19,2"Vsechna tato tvrzeni si" 1400 PRINT&20,3"ov v v" 1410 PRINT&21,2"muzete vyzkouset v rezimu" 1420 PRINT&22,9"," 1430 PRINT&23,2"kresleni grafu." 1440 A$="M" 1450 GOSUB11000 1460 GOTO140 2000 REM KRESLENI GRAFU 2010 PRINT&10,3"D- dosadit konstanty" 2020 PRINT&12,3"P- plynule menit" 2030 PRINT&11,15"v" 2040 PRINT&14,3"H- pomoc" 2050 PRINT&16,3"M- menu" 2060 PRINT&23,14"," 2070 PRINT&24,4"Stiskni klavesu" 2080 PRINT&27,8"D,P,H, nebo M";CHR$(7) 2090 I$=INKEY$ 2100 IF I$="D" THEN CALLHEX(F973):CLS:GOTO2200 2110 IF I$="P" THEN CALLHEX(F973):CLS:GOTO2600 2120 IF I$="H" THEN CALLHEX(F973):CLS:GOTO2800 2130 IF I$="M" THEN CALLHEX(F973):CLS:GOTO140 2140 GOTO2090 2200 REM REZIM D 2205 GOSUB13000 2210 GOSUB14000 2220 GOSUB16000 2230 PRINT&10,2"zadej a" 2240 K=12:GOSUB17000 2250 AN=P 2260 PRINT&14,2"zadej b" 2270 K=16:GOSUB17000 2280 BN=P 2290 GOSUB13000 2300 IF CH=1 THEN GOSUB19000:GOTO2450 2320 GOSUB18000 2340 GOSUB15000 2350 GOSUB16000 2360 GOTO2430 2430 GOSUB18000 2450 PRINT&9,6"v";&10,2"chces" 2460 PRINT&11,5"v";&12,0"pokracovat?" 2470 PRINT&14,1"stiskni" 2480 PRINT&16,3"A/N" 2490 IF INKEY$="A" THEN CALLHEX(F973):GOSUB18000:GOTO2230 2500 IF INKEY$="N" THEN CALLHEX(F973):ERASE:CLS:GOTO2000 2510 GOTO2490 2600 GOSUB13000 2610 GOSUB14000 2620 GOSUB16000 2630 PRINT&10,1"Q- zvys a";&9,7"v" 2640 PRINT&12,1"A- sniz a";&11,7"v" 2650 PRINT&14,1"P- zvys b";&13,7"v" 2660 PRINT&16,1"L- sniz b";&15,7"v" 2670 PRINT&18,1"M- menu" 2680 I$=INKEY$ 2690 IF I$="Q" THEN CALLHEX(F973):AN=AN+.5:GOTO2750 2700 IF I$="A" THEN CALLHEX(F973):AN=AN-.5:GOTO2750 2710 IF I$="P" THEN CALLHEX(F973):BN=BN+.5:GOTO2750 2720 IF I$="L" THEN CALLHEX(F973):BN=BN-.5:GOTO2750 2730 IF I$="M" THEN CALLHEX(F973):ERASE:CLS:GOTO2000 2740 GOTO2680 2750 GOSUB13000 2760 IF CH=1 THEN GOSUB19000:GOTO2630 2770 GOSUB15000 2780 GOSUB16000 2790 GOTO2680 2800 REM HELP K 2810 PRINT&1,5"v v,";&1,26"," 2820 PRINT&2,3"Rezim slouzi k zobrazeni" 2830 PRINT&3,7"o o , , ," 2840 PRINT&4,3"grafu ruznych linearnich" 2850 PRINT&5,8",";&5,22"ov" 2860 PRINT&6,3"funkci. Konstanty muzeme" 2870 PRINT&7,15"v v, v" 2880 PRINT&8,3"dosazovat bud primo (rezim" 2890 PRINT&9,15"ov" 2900 PRINT&10,3"D) nebo je muzeme plynule" 2910 PRINT&11,4"v v" 2920 PRINT&12,3"menit (rezim P)." 2930 PRINT&13,22", , v" 2940 PRINT&14,3"M poskytuje zakladni vyber." 2950 A$="M" 2960 GOSUB11000 2970 GOTO2000 3000 REM TEST 3010 PRINT&1,5"v, v ," 3020 PRINT&2,3"Pocitac vam bude kreslit" 3030 PRINT&3,11"o , , ," 3040 PRINT&4,3"osm grafu linearnich funkci." 3050 PRINT&5,5"v, ," 3060 PRINT&6,3"Vasim ukolem bude rozeznat" 3070 PRINT&8,3"velikost konstant a a b." 3080 PRINT&9,14",";&9,25"v" 3090 PRINT&10,3"Program nabidne pro kazdou" 3100 PRINT&11,14"v v" 3110 PRINT&12,3"konstantu tri moznosti" 3120 PRINT&13,26"," 3130 PRINT&14,3"(>0,<0,=0). Vyberte spravnou" 3140 PRINT&15,8"vv";&15,19"v v," 3150 PRINT&16,3"odpoved a stisknete pri-" 3160 PRINT&17,6"v , v," 3170 PRINT&18,3"slusne tlacitko. Nakonec" 3180 PRINT&19,4",";&19,22"," 3190 PRINT&20,3"vas program ohodnoti." 3210 FOR K=0TO2 3220 FOR I=0TO2 3230 P=I:GOSUB20000:A(1,I+3*K+1)=INT(100*P)/100 3240 P=K:GOSUB20000:A(2,I+3*K+1)=INT(100*P)/100 3250 NEXT I 3260 NEXT K 3270 FOR I=1TO8 3280 P=INT((9-I)*RND(0)+1) 3290 A(3,I)=A(1,P):A(4,I)=A(2,P) 3300 FORK=P TO8-I 3310 A(1,K)=A(1,K+1):A(2,K)=A(2,K+1) 3320 NEXT K 3330 NEXT I 3340 A$="T" 3350 GOSUB11000 3360 PRINT&1,13",";&1,24"vv" 3370 PRINT&2,4"Vyber spravnou odpoved a" 3380 PRINT&3,13"," 3390 PRINT&4,3"stiskni klavesu 1,2 nebo 3" 3400 RA=0:SL=1:S=29:V=5 3410 GOSUB10000 3420 SP=0 3430 FORL=1TO8 3440 AN=A(3,L):BN=A(4,L) 3450 GOSUB13000 3460 IFL=1THEN GOSUB14000:GOTO3480 3470 GOSUB15000 3480 A$="a":P=A 3490 GOSUB21000 3500 A$="b":P=B 3510 GOSUB21000 3520 NEXT L 3530 ERASE:CLS 3540 PRINT&10,10"ZHODNOCENI";&9,19"," 3550 RA=8:SL=8:S=13:V=4 3560 GOSUB10000 3570 SP=INT(SP/16*100+.5) 3580 PRINT&13,5"v , vv" 3590 PRINT&14,3"vase uspesnost: ";SP;"%" 3600 A$="M" 3610 GOSUB11000 3620 GOTO140 4000 REM HELP 4010 PRINT&1,7", , , ," 4020 PRINT&2,1"V- poda zakladni vyklad o" 4030 PRINT&3,8", , ," 4040 PRINT&4,4"linearnich funkcich a pro-" 4050 PRINT&5,12", ,v , v," 4060 PRINT&6,4"bere s vami zvlastni pri-" 4070 PRINT&7,10"," 4080 PRINT&8,4"pady teto funkce." 4090 PRINT&9,7", ,";&9,28"," 4100 PRINT&10,1"G- poda vyklad o grafu linea-" 4110 PRINT&11,6", ," 4120 PRINT&12,4"rnich funkci." 4130 PRINT&13,23"," 4140 PRINT&14,1"K- dovoluje zobrazit vami zvo-" 4150 PRINT&15,7", , ," 4160 PRINT&16,4"lene linearni funkce." 4170 PRINT&17,15"v" 4180 PRINT&18,1"T- otestuje vase znalosti." 4190 PRINT&19,9"v ," 4200 PRINT&20,1"E- zakonceni programu." 4210 A$="M" 4220 GOSUB11000 4230 GOTO140 5000 REM KONEC 5010 PRINT&10,4"N A S H L E D A N O U" 5020 PRINT&15,17"IQ 151" 5030 WAIT(30) 5040 CLS 5050 END 10000 REM RAMECEK 10010 PRINT CHR$(15)&RA,SL"P";&RA+V,SL+S"J"; 10020 FOR I= 1TO S-1 10030 PRINT CHR$(15)&RA,SL+I"Q";&RA+V,SL+S-I"Q"; 10040 NEXT I 10050 PRINT CHR$(15)&RA,SL+S"_";&RA+V,SL"K"; 10060 FOR I= 1TO V-1 10070 PRINT CHR$(15)&RA+I,SL+S"T";&RA+V-I,SL"T"; 10080 NEXT I 10090 PRINT"" 10100 RETURN 11000 REM STISKNI 11010 PRINT&29,17","; 11020 PRINT&30,7"Stiskni klavesu ";A$;CHR$(7); 11030 IF INKEY$<>A$ THEN GOTO11030 11040 CALLHEX(F973):CLS 11050 RETURN 12000 REM ODVOZENI 12010 PRINT&8,10"v" 12020 PRINT&9,3B$;") necht konstanta ";C$;" = 0" 12030 WAIT(55) 12040 RA=8:SL=22:S=8:V=2 12050 GOSUB10000 12060 WAIT(15) 12070 PRINT&11,12"v ," 12080 PRINT&12,6"jestlize toto dosadime do" 12090 PRINT&13,11", , ," 12100 PRINT&14,6"obecne rovnice linearni" 12110 PRINT&16,6"funkce:" 12115 WAIT(50) 12120 PRINT&20,10"y = ax + b" 12130 WAIT(15) 12140 FOR I=1TO3 12150 PRINT&20,K;C$; 12160 WAIT(3) 12170 PRINT&20,K"0"; 12180 WAIT(3) 12190 NEXT I 12200 WAIT(8) 12210 PRINT&20,K" " 12220 RETURN 13000 REM VYPOCET 13010 Y1=-10*AN+BN:Y2=10*AN+BN:CH=0 13020 IF Y1>=10 AND Y2>=10 OR Y1<=-10 AND Y2<=-10 THEN AN=A:BN=B:CH=1:GOTO13080 13030 IF Y1<=10 AND Y1>=-10 THEN X=-10:Y=Y1:GOTO13050 13040 X=(10*SGN(Y1)-BN)/AN:Y=10*SGN(Y1) 13050 IF Y2<=10 AND Y2>=-10 THEN Z=10:W=Y2:GOTO13070 13060 Z=(10*SGN(Y2)-BN)/AN:W=10*SGN(Y2) 13070 A=AN:B=BN 13080 RETURN 14000 REM KRIZ 14010 LIMIT190,511,0,205 14020 PEN2:FRAME 14030 SCALE-12,12,-12,12 14040 DRAW0,-11,-2:DRAW0,11,-1 14050 DRAW-11,0,-2:DRAW11,0,-1 14060 DRAW8.5,-1,-2:DRAW9.5,-1,-1 14070 RDRAW-.4,.2,-1:RDRAW0,0,-1:RDRAW-.4,-.2,-1 14080 DRAW-1,8.5,-2:DRAW-1,9.5,-1 14090 RDRAW-.2,-.4,-1:RDRAW0,0,-1:RDRAW.2,-.4,-1 14100 DRAW9,-.5,-2:LTYPE1.5,1.5:LREF4:LROT0:LABEL"X" 14110 DRAW-1.5,9,-2:LROT PI/2:LABEL"Y":LROT 0 14120 FOR I=-10 TO 10 STEP2 14130 IF I=0 THEN GOTO14160 14140 DRAW I,.2,-2:DRAW I,-.2,-1:DRAW I,-.5,-2:LABEL I 14150 DRAW-.2,I,-2:DRAW.2,I,-1:DRAW-.5,I,-2:LABEL I 14160 NEXT I 14165 DRAW-.5,-.5,-2:LABEL 0 14170 PEN0 14180 DRAWX,Y,-2:DRAWZ,W,-1 14190 XS=X:YS=Y:ZS=Z:WS=W 14200 RETURN 15000 REM KRESLI 15010 DRAW X,Y,-2:DRAW Z,W,-1 15020 DRAW XS,YS,-2:DRAW ZS,WS,-1 15030 XS=X:YS=Y:ZS=Z:WS=W 15040 RETURN 16000 REM NAPIS FCI 16010 IF A=0 THEN PRINT&0,8"y = ";B;:GOTO16080 16020 IF A=1 THEN PRINT&0,8"y = x";:GOTO16050 16030 IF A=-1 THEN PRINT&0,8"y =-x";:GOTO16050 16040 PRINT&0,8"y =";A;"x"; 16050 IF B=0 THEN GOTO16080 16060 IF B>0 THEN PRINT" +";B;:GOTO16080 16070 PRINT" -";-B; 16080 PRINT" " 16085 P=1 16090 IF A=0 THEN PRINT&1,4" ,";&2,3"konstantni funkce" 16100 IF A=0 AND B=0 THEN PRINT&3,8", ";&4,3"shodna s osou x ":GOTO16160 16110 IF A=0 AND B<>0 THEN PRINT&3,8" vv ,";&4,3"rovnobezna s osou x":GOTO16160 16120 IF B=0 THEN PRINT&1,4"v, , , v ";&2,3"prima umernost ":P=3 16130 FOR I=P TO4 16140 PRINT&I,3" " 16150 NEXT I 16160 RETURN 17000 REM INPUT 17010 PRINTCHR$(15)&K,2"D";CHR$(14);CHR$(7); 17020 I=1:T=1:L=1:C$="" 17030 I$=INKEY$ 17035 IF I$="" THEN GOTO17030 17040 IF ASC(I$)=13 AND L>1 THEN GOTO17120 17050 IF I$="-" AND I=1 THEN GOTO17095 17060 IF I$="." AND T=1 THEN T=0:GOTO17095 17070 IF ASC(I$)>47 AND ASC(I$)<58 THEN L=L+1:GOTO17095 17075 IF NOT(ASC(I$)=8 AND I>1) THEN GOTO17030 17080 I$=MID$(C$,I-1,I-1):C$=MID$(C$,1,I-2):I=I-1:PRINT&K,3C$;" ";&K,I+2; 17083 IF ASC(I$)>47 AND ASC(I$)<58 THEN L=L-1 17087 IF I$="." THEN T=1 17090 GOTO17100 17095 CALLHEX(F973):C$=C$+I$:PRINT&K,3C$:I=I+1 17100 IF L>3 THEN GOTO17120 17105 IF INKEY$="" THEN GOTO17030 17110 GOTO17100 17120 P=VAL(C$):CALLHEX(F973) 17130 RETURN 18000 REM SMAZ 18010 FOR I=9TO18 18020 PRINT&I,0" " 18030 NEXT I 18040 RETURN 19000 REM NEVEJDE 19005 GOSUB18000 19010 PRINT&10,1"GRAF SE" 19020 PRINT&12,0"NEVEJDE DO " 19030 PRINT&14,1"OSOVEHO";&13,5"," 19040 PRINT&16,2"KRIZE";&15,3"v,v" 19050 CALLHEX(F973):WAIT(30) 19060 GOSUB18000 19070 RETURN 20000 REM NAHODA 20010 IF P=0 THEN P=-(8*RND(0)+1):GOTO20040 20020 IF P=1 THEN P=8*RND(0)+1:GOTO20040 20030 P=0 20040 RETURN 21000 REM MOZNOSTI 21010 PRINT&10,2"1) "A$;"<0" 21020 PRINT&12,2"2) "A$;"=0" 21030 PRINT&14,2"3) "A$;">0" 21040 I$=INKEY$ 21050 IF I$="1"OR I$="2"OR I$="3" THEN CALLHEX(F973):GOTO21070 21060 GOTO21040 21070 IF P<0AND I$="1"OR P=0AND I$="2"OR P>0AND I$="3" THEN GOTO21090 21080 PRINT&15,1"v ,";&16,1"spatna":GOTO21100 21090 PRINT&15,4", ,";&16,1"spravna":SP=SP+1 21100 PRINT&17,6"vv";&18,1"odpoved" 21110 WAIT(20) 21120 GOSUB18000 21130 RETURN