100 !' ************************************************** 110 !' * * 120 !' * 値域イメージ化 プログラム * 130 !' * * 140 !' * "K1p067R03.bas" * 150 !' * 数T/027(啓林館)例3(p67) * 160 !' * * 170 !' * 2008/12/1/Mon. by YO * 180 !' * * 190 !' ************************************************** 200 !' 定数・配列の定義 210 LET cx$="Red" 220 LET cy$="Blue" 290 !' 490 !' 500 !' 関数の定義 510 DECLARE EXTERNAL FUNCTION f 590 !' 600 !' 外部副プログラムの定義 610 DECLARE EXTERNAL SUB draw_function 620 DECLARE EXTERNAL SUB draw_xy 630 DECLARE EXTERNAL SUB erase_xy 640 DECLARE EXTERNAL SUB plot_text 790 !' 800 !' 変数の定義 810 LET xs=-2 820 LET xe=3 830 LET xb=2 840 LET xz=0.02 860 LET wxs=-6 870 LET wxe=6 880 LET wys=-6 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 CALL draw_function(wxs,wxe,0.1) 1990 !' 2000 REM キー操作 2010 LET x=xb 2020 LET xmx=x 2030 LET xmn=x 2040 LET ymx=f(x) 2050 LET ymn=f(x) 2060 !' 2100 CALL draw_xy(x) 2110 SET LINE COLOR cy$ 2120 PLOT LINES : 0,ymn; 0,ymx 2130 SET LINE COLOR cx$ 2140 PLOT LINES : xmn,0; xmx,0 2150 SET LINE COLOR "Black" 2160 LET xo=x 2170 !' 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 2300 IF getkeyState(83)<0 THEN 2310 LET k=83 2320 END IF 2330 IF getkeyState(82)<0 THEN 2340 LET k=82 2350 END IF 2460 IF k=0 THEN 2470 GOTO 2200 2480 END IF 2490 !' 2500 !' 移動の処理 2510 IF k=82 THEN 2520 CALL erase_xy(x,wxs,wxe) 2530 GOTO 2000 2540 END IF 2550 IF k=83 THEN 2560 CALL erase_xy(x,wxs,wxe) 2570 LET x=xs 2580 GOTO 2020 2590 END IF 2600 IF k=13 THEN 2610 GOTO 9980 2620 END IF 2630 IF K=37 THEN 2640 LET x=x-xz 2650 END IF 2660 IF K=39 THEN 2670 LET x=x+xz 2680 END IF 2700 !' 境界の処理 2710 IF xxe THEN 2750 LET x=xe 2760 END IF 2770 IF x>xmx THEN 2780 LET xmx=x 2790 END IF 2800 IF xymx THEN 2840 LET ymx=f(x) 2850 END IF 2860 IF f(x)=0 THEN 10830 PLOT TEXT,AT x-0.05,-0.3:"x" 10840 ELSE 10850 PLOT TEXT,AT x-0.05,0.05:"x" 10860 END IF 10870 IF x>=0 THEN 10880 PLOT TEXT,AT -0.2,f(x)-0.1:"y" 10890 ELSE 10900 PLOT TEXT,AT 0.1,f(x)-0.1:"y" 10910 END IF 10920 END SUB 10930 !'