授業展開#12

小テスト解説
問1 次の中置記法で書かれた数式を、前置記法、後置記
法に直せ。
12 × 23 +(34 + 45)×(56 + 67)× 78 + 89
前置記法
12 x 23 + (+ 34 45) x (+56 67) x 78 + 89
=(x 12 23)+(x(+34 45) (+56 67)) x 78 + 89
=(x 12 23)+(x(x(+34 45) (+56 67)) 78)+ 89
=(+(x 12 23) (x(x(+34 45) (+56 67)) 78))+89
=+(+(x 12 23) (x(x(+34 45) (+56 67)) 78)) 89
=+ + x 12 23 x x +34 45 + 56 67 78 89

小テスト解説
12 × 23 +(34 + 45)×(56 + 67)× 78 + 89
後置記法
12 x 23 + (34 45 +) x (56 67 +) x 78 + 89
=(12 23 x)+((34 45 +) (56 67 +)x) x 78 + 89
=(12 23 x)+(((34 45 +) (56 67 +)x) 78 x)+ 89
=((12 23 x)(((34 45 +)(56 67 +)x)78 x)+) +89
=((12 23 x)(((34 45 +)(56 67 +)x)78 x)+)89+
=12 23 x 34 45 + 56 67 + x 78 x + 89 +

小テスト解説
問2 次の後置記法の数式を計算せよ。
(1)12 34 56 × + 78 ×
= 12 1904 + 78 x = 1916 78 x = 149448
(2)1 2 3 × 4 5 6 7 x 8 9 x + x + 10 + x +
= 1 6 4 5 6 7 x 8 9 x + x + 10 + x +
= 1 6 4 5 42 8 9 x + x + 10 + x +
= 1 6 4 5 42 72 + x + 10 + x +
= 1 6 4 5 114 x + 10 + x +
= 1 6 4 570 + 10 + x +
= 1 6 574 10 + x + = 1 6 584 x + = 1 3504 + = 3505
小テスト解説
問3 二律背反的命題をP、Q、Rとして、三段論法の推論
形式を書け。
前提1 PならばQである。
前提2 QならばRである。
結論 よってPならばRである。
小テスト解説
入力テープ
問4 有限オートマトンは
3つの部位から構成される。
図示せよ。

a
b
a
b
b
読み取りヘッド
有限状態部

問5 有限オートマトンとプッシュダウンオートマトン
の違いを簡潔に説明せよ。
有限オートマトンにプッシュダウンテープという外部
記憶装置をつけたものをプッシュダウンオートマトン
という。
授業展開#13
BASICによるアルゴリズム
マックでも動くBASIC
 Chipmunk
Basic
http://www.nicholson.com/rhn/basic/
十進BASIC
http://hp.vector.co.jp/authors/VA0086
83/
Chipmunk Basic の基本操作
 >からプログラムを1行ずつ入力
 List
でプログラム表示
 Run でプログラム実行
 Save As… で プログラムの新規保存
 New でメモリー上のプログラムを消去
 Open で プログラムの読み込み
 プログラムファイルはテキストエディタで作成で
きる。
基本命令
A=2
B=3
C=A+B
PRINT C
END
:変数Aに2を代入
:変数Bに3を代入
:変数CにAとBの和を代入
:変数Cの中身を表示
:プログラムの終了
PRINT “C”
:これでは「C」が表示される
数学的取り扱い
 和:「A+B」
A+B
 差:「A-B」
A-B
 積:「A*B」
A×B
 商:「A/B」
A÷B
 n乗:「A^n」
An
 平方根「SQR(A)」 √A
 大小関係
A>B
関数、命令
MOD x
 INT(X)
 SQR(A)
 INPUT A
 DIM A(100)
N
 GOTO
XX
:Nをxで割った時の余り
:少数をカットして整数化
:Aの平方根
:Aに数値を入力
:関数Aを100個用意
A(1), A(2),・・・,A(100)
:行番号XXにジャンプ
ユーザー関数の定義
10
20
30
40
50
def fnplus(x,y)=x+y
def fnsqare(x)=x^2
input x,y
print fnplus(x,y), fnsqare(x)
end
fnの後は任意の英数字
判断
 IF
10
20
30
40
50
~ THEN ~ ELSE ~
A=2
B=3
IF A>B THEN C=A ELSE C=B
PRINT C
END
繰り返し
 FOR
~ NEXT
10 FOR I=1 TO 5
20 PRINT I
30 NEXT I
40 END
1から10までの和を求める
10
20
30
40
50
60
S=0
FOR I=1 TO 10
S=S+I
NEXT I
PRINT S
END
10!を求める
10
20
30
40
50
60
K=1
FOR I=1 TO 10
K=K*I
NEXT I
PRINT K
END
A,Bを入力して積を計算
10
20
30
40
INPUT A,B
C=A*B
PRINT C
END
演習 三角形の面積計算
10
20
30
40
INPUT A,B
S=A*B/2
PRINT S
END
ランダム関数
10
20
30
40
50
60
DIM N(5)
FOR I=1 TO 5
N(I)=INT(RND(1)*6)+1
PRINT N(I)
NEXT I
END
RND(1):0 以上、1 未満の範囲の値を乱数で返す。
INT() : 指定した数値の整数部分を返す。
サイコロ目の確認
10 DIM N(1000),A(6)
20 FOR I=1 TO 1000
30 LET N(I)=0
40 NEXT I
50 FOR I=1 TO 6
60 LET A(I)=0
70 NEXT I
80 FOR I=1 TO 1000
90 LET N(I)=INT(RND(1)*6)+1
100 LET A(N(I))=A(N(I))+1
110 NEXT I
120 FOR K=1 TO 6
130 PRINT K,A(K),1000/6
140 NEXT K
150 END
関数の置き換え
「N MOD X」をMODを用いないで記述せよ。
 MOD:2つの数値の除算を行い、その剰余を返す。
A=5
B=3
C=A MOD B
PRINT C

A=N/X
B=INT(A)
C=N-B*X
nの約数を全て求める
10
20
30
40
50
60
70
input n
print “The factors of “n;” are”
for i=1 to n/2
if n mod I=0 then print i
next i
print n
END
nの素数判定
10
20
30
40
50
60
70
80
90
input n
for i=2 to sqr(n)
if n mod i=0 then 70
next i
print n;“is a prime number"
goto 90
print n;“is not a prime number"
print i;“is the smallest factor"
end
課題例
 台形の面積を求めるプログラム
 サイコロの結果を予想し、当たりを判定する
プログラム
 2行2列の行列の和・差・積を求めるプログラ
ム
 2行2列の行列の逆行列を求めるプログラム