100 !' ************************************************** 110 !' * * 120 !' * 最大・最小イメージ化 プログラム * 130 !' * * 140 !' * "J1p103MN03.BAS" * 150 !' * 数T/024(実教)章末問題A3(p103) * 160 !' * * 170 !' * 2008/11/2/Sun. by YO * 180 !' * * 190 !' ************************************************** 200 !' 定数・配列の定義 210 LET cx$="Red" 220 LET cy$="Green" 490 !' 500 !' 関数の定義 510 DECLARE EXTERNAL FUNCTION f 590 !' 600 !' 外部副プログラムの定義 610 DECLARE EXTERNAL SUB draw_function 640 DECLARE EXTERNAL SUB plot_text 790 !' 800 !' 変数の定義 810 LET xs=0 820 LET xe=2 830 LET xb=1 840 LET xz=0.02 850 LET a=1.2 860 LET wxs=-4 870 LET wxe=4 880 LET wys=-2 890 LET wye=6 990 !' 1000 REM 主プログラム開始 1010 SET WINDOW wxs,wxe,wys,wye 1020 SET POINT STYLE 3 1030 SET LINE width 3 1040 DRAW Grid 1050 !' 1100 !' 1110 SET LINE width 1 1120 SET LINE STYLE 1 1130 SET LINE COLOR "Black" 1140 CALL draw_function(wxs,wxe,0.1) 1150 CALL plot_text(a) 1160 SET LINE STYLE 3 1170 PLOT LINES :a,0;a,f(a) 1180 PLOT LINES :-a,f(a);a,f(a) 1190 PLOT LINES :-a,0;-a,f(a) 1200 SET LINE STYLE 1 1210 PLOT TEXT ,AT 0.5,wys ,USING "長さ:##.### 面積:##.###": 4*a+2*f(a),2*a*f(a) 1220 !' 1990 !' 2000 REM キー操作 2010 LET ao=a 2100 !' 2180 !' 2200 LET k=0 2210 IF getkeyState(13)<0 THEN 2220 LET k=13 2230 END IF 2240 IF getkeyState(37)<0 THEN 2250 LET k=37 2260 END IF 2270 IF getkeyState(39)<0 THEN 2280 LET k=39 2290 END IF 2460 IF k=0 THEN 2470 GOTO 2200 2480 END IF 2490 !' 2500 !' 移動の処理 2600 IF k=13 THEN 2610 GOTO 9980 2620 END IF 2630 IF K=37 THEN 2640 LET a=a-xz 2650 END IF 2660 IF K=39 THEN 2670 LET a=a+xz 2680 END IF 2690 IF axe THEN 2730 LET a=xe 2740 END IF 2750 !' 3000 !' 移動の処理 3010 SET LINE width 3 3020 SET LINE COLOR "White" 3030 PLOT LINES :ao,0;ao,f(ao) 3040 PLOT LINES :-ao,f(ao);ao,f(ao) 3050 PLOT LINES :-ao,0;-ao,f(ao) 3060 SET TEXT COLOR "White" 3070 CALL plot_text(ao) 3080 PLOT TEXT ,AT 0.5,wys ,USING "長さ:##.### 面積:##.###": 4*ao+2*f(ao),2*ao*f(ao) 3090 SET TEXT COLOR "Black" 3100 DRAW Grid 3110 SET LINE width 1 3120 SET LINE STYLE 1 3130 SET LINE COLOR "Black" 3140 CALL draw_function(wxs,wxe,0.1) 3150 CALL plot_text(a) 3160 SET LINE STYLE 3 3170 PLOT LINES :a,0;a,f(a) 3180 PLOT LINES :-a,f(a);a,f(a) 3190 PLOT LINES :-a,0;-a,f(a) 3200 SET LINE STYLE 1 3210 PLOT TEXT ,AT 0.5,wys ,USING "長さ:##.### 面積:##.###": 4*a+2*f(a),2*a*f(a) 3220 !' 3990 !' 9000 !' キーバッファ消去 9010 IF getkeyState(37)<0 THEN 9020 GOTO 9010 9030 END IF 9040 IF getkeyState(39)<0 THEN 9050 GOTO 9040 9060 END IF 9880 GOTO 2000 9890 !' 9980 !' 9990 END 10000 !' 関数の定義 10010 EXTERNAL FUNCTION f(x) 10020 LET f=-x*x+4 10030 END FUNCTION 10040 !' 10200 !' 関数表示ルーチン 10210 EXTERNAL SUB draw_function(p,q,s) 10220 FOR xx=p TO q STEP s 10230 PLOT LINES: xx,f(xx); 10240 NEXT xx 10250 END SUB 10260 !' 10800 !' 文字表示ルーチン 10810 EXTERNAL SUB plot_text(a) 10820 IF f(a)>=0 THEN 10830 PLOT TEXT ,AT a-0.03,-0.3 : "a" 10840 ELSE 10850 PLOT TEXT ,AT a-0.03,0.02 : "a" 10860 END IF 10870 END SUB 10880 !'