池田博明『高校生物のコンピュータ利用授業データ集                    

 BACK TO IKEDA HOME 

   最終更新日 2008年9月12 
    まだ部分的に作成途中


 授業で行った『生物』でのコンピュータ利用授業の資料を公開しました。
  (神奈川県立小田原城内高等学校および足柄高等学校にての実践例)。

 内容は日々,更新していきたいと思っています


第1部 MS−DOS BASIC プログラムによるシミュレーション
集団遺伝学 遺伝子頻度の変動
集団遺伝学 遺伝的浮動
個体群生態学 ランダム分布とは何か
いまさらMS−DOS BASICによるプログラムは古いが記念に 
第2部 エクセルによるシミュレーション
集団遺伝学 遺伝子頻度の変動  157kB 別ファイル
集団遺伝学 遺伝的浮動   842kB 別ファイル
第3部 市販のCD-ROMを利用した授業
進化 『海から生まれた生命の起源』を利用する
参考 生物の授業では実験が中心になるべきだ

 岩波書店CD-ROM版『生物学辞典』や平凡社CD-ROM版『世界大百科事典』などの情報量は大きいし,検索も便利である。第6部の内容をカバーする日経新聞社CD-ROM『生命の起源』も素晴らしい。将来の教科書や指導書は,どうなるだろうか。そして,私たち教員が授業でできることは,何だろうか。



            MS-DOS BASIC プログラム   遺伝的浮動

10 '遺伝的浮動  programmed by Hiryoshi IKEDA  1992
20 CLEAR:CLS 3:WIDTH 80,25:COLOR 0,0,5,7
30 '== 値の入力 ==
40 LOCATE 22,8:PRINT"遺伝的浮動"
50 LOCATE 18,16:PRINT"どれかキイを押して下さい"
60 A$=INKEY$:IF A$="" THEN 60
70 CLS 3:LOCATE 10,8:PRINT "集団の個体数が小さいほど浮動の度合いは大きくなります"
80 LOCATE 10,10:PRINT"適当な個体数Nを入力して下さい"
90 LOCATE 15,17:INPUT "N="N
100 '== 遺伝子頻度の設定 ==
110 CLS 3:LOCATE 10,8:PRINT"A遺伝子の頻度pを0から1までの範囲で入力して下さい"
120 LOCATE 10,10:PRINT"a遺伝子の頻度qは(1−p)にします "
130 LOCATE 14,12:INPUT"p="P:IF P>=1 GOTO 130
140 Q=1-P
150 CLS 1
160 '==世代数(N)の設定=== 試行数(X)の設定
170 G=30:X=4
180 ' == 計算  ====
190 SCREEN 3
200 'X軸とY軸
210 LINE(100,100)-(500,300),4,B
220 LINE(100,200)-(110,200),4
230 LINE(100+120,300)-(220,290),4:LINE(100+240,300)-(340,290),4
240 DIM P(G,X),Q(G,X)
250 PP=P:QQ=Q
260 FOR X=0 TO 4
270 PP=P:QQ=Q
280 LOCATE 12,4:PRINT"5回試行します.いま"X+1;"回目の計算中です"
290 TI$=RIGHT$(TIME$,2):RANDOMIZE VAL(TI$)
300 P(0,X)=PP:Q(0,X)=QQ
310 FOR S=1 TO G
320 PA=0:QA=0
330 FOR I=1 TO 2*N
340 IF RND(2)<PP THEN PA=PA+1
350 NEXT I
360 QA=2*N-PA
370 PP=PA/(PA+QA)
380 QQ=1-PP
390 P(S,X)=PP:Q(S,X)=QQ
400 NEXT S
410 '==グラフを書く==
420 '折れ線グラフ
430 LINE(100+360,300)-(460,290),4
440 FOR L=0 TO G-1
450 P(L,X)=INT(100*P(L,X))
460 NEXT L
470 '
480 FOR M=0 TO G-1
490 LINE(100+12*M,300-2*P(M,X))-(100+12*(M+1),300-2*P(M+1,X)),2+X
500 NEXT M
510 LINE(100+12*29,300-2*P(29,X))-(100+12*30,300-2*P(30,X)),0
520 NEXT X
530 LOCATE 5,1:PRINT"p遺伝子頻度の変動(30世代 ) "
540 LOCATE 40,1:PRINT"第1代のp="P(0,0)/100,
550 LOCATE 8,20:PRINT"もう一度試行するなら,1キイを押して下さい"
560 D$=INKEY$:IF D$="" THEN 560
570 IF D$<>"1" THEN END
580 GOTO 20

  MS-DOS BASIC プログラム   遺伝子頻度の変動

10 'SEIBUTU 1992  
20 'POPULATION GENETICS programmed by Hiroyoshi IKEDA
40 CLS 3 50 SCREEN 1:WIDTH 80,25
100 PRINT"いくつかの分集団を考える"
110 PRINT"各分集団は他の分集団と毎世代一定の率 Mで個体を交換するものとする"
120 PRINT:PRINT" M<<1  (例:M=0.0001)":PRINT
130 PRINT"この時移住してくる個体における遺伝子Aの頻度をX1とする"
140 PRINT:PRINT"  0<X1<1 (例: X1=0.5)":PRINT
150 PRINT"自然淘汰に関してAのaに対する有利度をSとする"
160 PRINT:PRINT" ABS(S)<<1  (例: S=0  OR S=−0.0003)"
170 PRINT:INPUT"M,X1,S"M,X1,S
180 PRINT:PRINT"計算する集団の大きさ 最大値  NMAX,最小値  NMIN"
190 PRINT:PRINT" (例: NMAX=50000,NMIN=1000)"
200 PRINT:INPUT"NMAX,NMIN : "YMAX,YMIN
210 CLS 3
220 PI=3.14159/180
230 XL=20:AX=400:XW=600:YW=160
240 THETA=30
250 CTH=COS(THETA*PI) :STH=SIN(THETA*PI)
260 AY=(XW-AX)/CTH:AZ=YW-AY*STH
270 LINE (XL,0)-(XL,YW):LINE-(XL+AX,YW):LINE-(XL+XW, YW-AY*STH)
280 LINE-(XL+XW,0)
290 LOCATE 25,22:PRINT"遺伝子頻度"
300 LOCATE 0,5:PRINT"確"
310 LOCATE 0,7:PRINT"率"
320 LOCATE 0,9:PRINT"密"
330 LOCATE 0,11:PRINT"度"
340 LOCATE 2,21:PRINT"0":LOCATE 52,21:PRINT"1"
350 LOCATE 65,13:PRINT"集団の大きさ"
360 LOCATE 56,19:PRINT"小"
370 LOCATE 76,8:PRINT"大":LOCATE 0,24
380 '
390 NY=20
400 ZMAX=5
410 KSTEP=5
420 YLM=LOG(YMIN):YD=LOG(YMAX)-YLM
430 DY1=AY*CTH/YD:DY2=AY*STH/YD
440 DZ=AZ/AMAX
450 '
460 DIM MAX(XW),MIN(XW),Z(AX),MEMO1(AX),MEMO2(AX)
470 ' KANSUU KEISAN NO TAME NO JYUNBI
480 FOR I=0 TO X
490 MAX(I)=YW+1:MIN(I)=-1
500 NEXT I
510 MXI=M*XI:M1XI=M*(1-XI)
520 FOR IX=0 TO AX STEP KSTEP
530 X=IX/AX
540 IF IX=0 OR IX=X THEN MEMO1(IX)=0 :ELSE MEMO1(IX)=1/((1-X)*X)
550 MEMO2(IX)=X^(MXI)*(1-X)^(M1XI)*EXP(S*X)
560 NEXT IX
570 ' KANSUU NO KEISAN TO GURAFU
580 FOR YLOG=YLM TO LOG(YMAX) STEP YD/NY
590 N=EXP(YLOG)
600 N4=4*N
610 K=N4*MXI-1
620 L=N4*M1XI-1
630 NS4=N4*S
640 GOSUB *FUNCTION
650 D1=DY1*(YLOG-YLM)
660 D2=DY2*(YLOG-YLM)
670 ' INSEN SYORI WO SINAGARA GURAFU WO EGAKU
680 KFLAG=0
690 FOR IX=0 TO AX STEP KSTEP
700 VX=XL+IX+D1
710 VY=YW-DZ*Z(IX)-D2
720 WX=CINT((VX-XL)/KSTEP)*KSTEP
730 IFLAG=0
740 IF VY<MAX(WX) THEN MAX(WX)=VY:IFLAG=1
750 IF VY>MIN(WX) THEN MIN(WX)=VY:IFLAG=1
760 IF IFLAG=1 AND VY<0 THEN VY=0
770 IF IFLAG=0 THEN KFLAG=0:GOTO 790
780 IF VY>=0 AND VY<200 THEN IF KFLAG=0 THEN PSET(VX,VY):KFLAG=1 :ELSE LINE-(VX,VY) :ELSE KFLAG=0
790 NEXT IX,YLOG
800 END
810 '
820 *FUNCTION
830 C=0:P=.5:H=1/AX*KSTEP
840 FOR IX=0 TO AX STEP KSTEP
850 X=IX/AX
860 IF IX=0 AND K<1 THEN 920
870 IF IX=AX AND L<1 THEN 940
880 Z(IX)=MEMO1(IX)*MEMO2(IX)^(4*N)
890 C=C+P*Z(IX)
900 P=1:IF IX=AX-1 THEN P=.5
910 GOTO 970
920 C1=H^(K+1)*(1/(K+1)+(NS4-L)/(L+2)*H)
930 GOTO 960
940 C=C-.5*Z(AX-1)
950 C2=EXP(NS4)*H^(L+1)*(1/(L+1)-(NS4+K)/(L+2)*H)
960 Z(IX)=9.99999863931739E+29
970 NEXT IX
980 C=C*H+C1+C2
990 FOR IX=0 TO AX STEP KSTEP
1000 Z(IX)=Z(IX)/C
1010 NEXT IX 1020 RETURN

  MS-DOS BASIC プログラム   ランダム分布とは何か

10 '集団の生物学
20 '個体群生態学
30 '
40 'ランダム分布  programmed by Hiroyshi IKEDA 1992 
50 CLEAR:CLS 3:WIDTH 80,25:COLOR 0,0,5,7
60 '
70 '== 値の入力 ==
80 LOCATE 22,8:PRINT"ランダム分布とは何か"
90 LOCATE 22,16:PRINT"どれかキイを押して下さい"
100 A$=INKEY$:IF A$="" THEN 100
110 '
120 CLS 3:SCREEN 3
130 LINE(50,50)-(350,350),4,B
140 LOCATE 10,8:PRINT "ある一様な環境に生物がランダム分布をしています"
150 N=100
160 LOCATE 10,10:PRINT"いま個体数を100に設定してあります"
170 LOCATE 10,12:PRINT"個体数を変更する時はキイ1を押して下さい"
180 LOCATE 10,14:PRINT"変更しない時はどれかキイを押して下さい"
190 LOCATE 15,17:B$=INKEY$:IF B$="" THEN 190
200 IF B$<>"1" THEN 260
210 '
220 CLS 3:LOCATE 10,8:PRINT "個体数 (N)を入力して下さい."
230 LOCATE 10,15:PRINT "個体数(N)="
240 LOCATE 24,15:INPUT N
250 '
260 CLS 3:LOCATE 10,8:PRINT"環境をいくつかのワクに区分します"
270 W=5
280 LOCATE 10,10:PRINT"いまワクの数を("W;"X"W;")個に設定してあります"
290 LOCATE 10,12:PRINT"ワク数を変更する時はキイ1を押して下さい"
300 LOCATE 10,14:PRINT"変更しない時はどれかキイを押して下さい"
310 LOCATE 15,17:C$=INKEY$:IF C$="" THEN 310
320 IF C$<>"1" THEN 380
330 '
340 CLS 3:LOCATE 10,8:PRINT "ワク数 (W)を入力して下さい."
350 LOCATE 14,15:PRINT "ワク数(W)X (W)"
360 LOCATE 36,15:INPUT W
370 '
380 SCREEN 3:CLS 3
390 ' 乱数系列の変更(時間の秒を利用)
400 TI$=RIGHT$(TIME$,2):RANDOMIZE VAL(TI$)
410 ' == 図化する===
415 LOCATE 50,10:PRINT"分布図を書きます"
420 LINE(50,50)-(350,350),4,B
430 DIM X(N-1),Y(N-1)
440 FOR I=0 TO N-1
450 '
460 X(I)=INT(RND(1)*300):Y(I)=INT(RND(2)*300)
470 CIRCLE(50+X(I),50+Y(I)),3
480 NEXT I
485 LOCATE 50,10:PRINT"ただいま計算中です"
490 '
500 ' = 集計をする
510 DV=300/W
520 DIM S(W-1,W-1)
530 FOR I=0 TO N-1
540 XX=INT(X(I)/DV)
550 YY=INT(Y(I)/DV)
560 S(XX,YY)=S(XX,YY)+1
570 NEXT I 571 ' = 集計をする
575 DIM SUM(N)
576 FOR I=0 TO N-1
577 FOR J=0 TO W-1
580 FOR K=0 TO W-1
590 IF S(J,K)=I THEN SUM(I)=SUM(I)+1
600 NEXT K,J,I
610 '
620 ' == 個体数調査用のワクをかく
630 FOR J=1 TO W-1
640 ' 縦線
650 LINE(50+DV*J,50)-(50+DV*J,350),1
660 ' 横線
670 LINE(50,50+DV*J)-(350,50+DV*J),1
680 NEXT J
690 LOCATE 50,10:PRINT"グラフを表示します"
700 LOCATE 50,12:PRINT"どれかキイを押して"
710 LOCATE 50,14:PRINT"下さい"
720 D$=INKEY$:IF D$="" THEN 720
725 '
730 '== グラフにかく(ワク)
740 CLS 3
750 LINE(100,100)-(500,300),4,B
760 LINE(100,200)-(110,200),4 770 LINE(100+120,300)-(220,290),4:LINE(100+240,300)-(340,290),4 780 LINE(100+360,300)-(460,290),4
783 LOCATE 13,19:PRINT"(0)":LOCATE 19,19:PRINT"(5)":LOCATE 50,19:PRINT"ワク内の頭数"
785 '
790 '== ヒストグラムをかく
795 '
800 FOR I=0 TO N
820 '
825 ' PRINT SUM(I),
830 LINE(110+I*10,300-SUM(I)*10)-(110+(I+1)*10,300),3,B
840 NEXT I
845 '
850 ' == ポアソン分布
854 R=N/(W*W)
855 'INPUT "P(X=x)=(e^(-r))*(r^x)/x! no r="R
860 M=20:DIM P(M)
870 FOR X=1 TO M
880 A=1:FOR I=1 TO X:A=A*I:NEXT I
890 P(X)=EXP(-R)*(R^X)/A
900 NEXT X
910 P(0)=EXP(-R)
912 '
913 ' == ZAHYOU JIKU
915 OX=115:OY=300:UX=10:UY=300:MXG=639:MYG=199
920 ' LINE (OX,OY)-(MXG,OY),1:LINE (OX,OY)-(OX,20),1
923 '
924 ' == X ZAHYOU NO KUBUN
925 ' FOR X=0 TO M
930 ' LINE (OX+X*UX,OY-1)-(OX+X*UX,OY+1),2
935 ' NEXT X
938 '
939 ' == Y ZAHYOU NO KUBUN
940 ' FOR Y=0 TO .5 STEP .1
945 ' LINE (OX-2,OY-Y*UY)-(OX+2,OY-Y*UY),5
950 ' NEXT Y
954 '
955 ' == ORE SEN GURAFU
956 FOR I=0 TO M-1
960 XG=OX+I*UX
970 LINE (XG,OY-UY*P(I))-(XG+UX,OY-UY*P(I+1)),6
980 NEXT I
990 '
1000 LOCATE 10,3:PRINT"実験のヒストグラムを紫で,ポアソン分布を黄色で示した"
1070 LOCATE 18,22:PRINT"もう一度試行するなら,1キイを押して下さい"
1080 D$=INKEY$:IF D$="" THEN 1080
1090 IF D$<>"1" THEN END
1100 GOTO 50

 BACK TO HOME  (Ikeda Homeへ)