情報学

2015/5/20
情報学
~BASIC言語の基礎3~
2015年5月19日
笠井俊信
処理手順の制御
• 基本手順
– 行番号の順番に実行
• 選択(2分岐)
– ある条件を満たす or 満たさない で処理内容を選択
• 繰り返し
– ある条件を満たす限り同じ処理を繰り返す
1
2015/5/20
BASICの処理手順の制御
• if文
– IF 比較式 THEN 行番号 ELSE 行番号
例:100 IF A<0 THEN 200 ELSE 300
ELSEを省略 → 次の行番号に
例:100 IF A>=0 THEN 300
110 “偽だったときの処理”
• goto文
– GOTO 行番号
例題1のBASIC
•変数Gに0を代入
•値を入力(N)する
•変数Iに1を代入
•(条件分岐):IがNより大きい?
•Yes なら終了
•No ならGにIを加える,Iを1増やす 4
行目に戻る
•Gを出力する
100
110
120
130
140
150
160
170
180
190
REM Example 1
LET G=0
INPUT N
LET I=1
IF I>N THEN 180
LET G=G+I
LET I=I+1
GOTO 140
PRINT “合計=”;G
END
2
2015/5/20
100 REM Problem 2
110 LET N=0
120 INPUT A
130 IF A<0 THEN 170
140 IF A<60 THEN 120
150 LET N=N+1
160 GOTO 120
170 PRINT “合計=”;N;“人”
180 END
REM Problem 2
LET N=0
INPUT A
IF A>=0 THEN 140 ELSE 170
IF A>=60 THEN 150 ELSE 120
LET N=N+1
GOTO 120
PRINT “合計=”;N;“人”
END
演習問題2のBASIC
•変数Nに0を代入
•点数を入力(A)する
•(条件分岐):Aは0以上か?
•Yesなら(条件分岐):Aは60以
上か?
•YesならNを1増やす
•Noなら何もしない
•2行目に戻る
•Noなら終了
•Nを出力する
100
110
120
130
140
150
160
170
180
演習問題1
問題:
2つの数X, Nを入力して,Xnを計算するプログラム。
Nは0以上の整数とする。
•
•
•
•
変数Gに1を代入
2つの数を入力(X, N)する
変数Iに1を代入
(条件分岐):IはN以下か?
– YesならGにGとXの積を代入,Iを1増やす,4行目に戻る
– Noなら終了
• Gを出力する
3
2015/5/20
演習問題1のBASIC
100 REM Problem 1
•変数Gに1を代入
•2つの数を入力(X, N)する
•変数Iに1を代入
•(条件分岐):IはN以下か?
110
120
130
140
150
160
170
180
190
•YesならGにGとXの積を代入,
Iを1増やす,4行目に戻る
•Noなら終了
•Gを出力する
LET G=1
INPUT X, N
LET I=1
IF I<=N THEN 150 ELSE 180
LET G=G*X
LET I=I+1
GOTO 140
PRINT “X^N=”;G
END
100 REM Problem 2
110 LET G=1
120 INPUT X, N
130 LET I=1
140 IF I>N THEN 180
150 LET G=G*X
160 LET I=I+1
170 GOTO 140
180 PRINT “X^N=”;G
190 END
演習問題2
問題:
データを入力させ,その中の最大値とそのデータ番号
を出力するプログラム。データは0以上とする。
※データ件数は最初に入力
• データ件数を入力(N)
• カウンタ(I),最大値(G),データ番号(GN)を0に初期化
• (条件分岐):NはI以下か?
– Yesなら出力して終了
– Noならデータを入力(X), Iを1増やす
• (条件分岐):XはG以下か?
– Yesなら3行目に戻る
– NoならG=X, GN=I
4
2015/5/20
演習問題2のBASIC
•データ件数を入力(N)
•カウンタ(C),最大値(G),
データ番号(GN)を0に初期化
•(条件分岐):NはI以下か?
•Yesなら出力して終了
•Noならデータを入力(X),
Iを1増やす
•(条件分岐):XはG以下か?
•Yesなら3行目に戻る
•NoならG=X, GN=I
100 REM Problem 2
110 INPUT N
120 LET I=0
130 LET G=0
140 LET GN=0
150 IF N<=I THEN 220
160 INPUT X
170 LET I=I+1
180 IF X<=G THEN 150
190 LET G=X
200 LET GN=I
210 GOTO 150
220 PRINT G,GN
230 END
演習問題2'
問題:
データを入力させ,その中の最大値とそのデータ番号,
最小値とそのデータ番号を出力するプログラム。
データは0以上100未満とする。
※データ件数は最初に入力
• データ件数を入力(N)
• カウンタ(I),最大値(G),データ番号(GN)を0に初期化
最小値(L=100),データ番号(LN)
• (条件分岐):NはI以下か?
– Yesなら出力して終了
– Noならデータを入力(X), Iを1増やす
• (条件分岐):XはG以下か? • (条件分岐):XはL以上か?
– Yesなら3行目に戻る
次の条件分岐へ
– Yesなら3行目に戻る
– NoならG=X, GN=I
– NoならL=X, LN=I
5
2015/5/20
演習問題2'のBASIC
100 REM Problem 2
•データ件数を入力(N)
110 INPUT N
100 REM Problem 2’
•カウンタ(I),最大値(G),
200I=0
IF G>=X THEN 230
120 LET
110 INPUT N
データ番号(GN),最小値(L),
210
LET G=X
130 LET G=0
120 LET I=0
データ番号(LN)を0に初期化
220GN=0
LET GN=I
140 LET
130 LET G=0
•(条件分岐):NはI以下か?
230
IFTHEN
L<=X 220
THEN 260
150 IF N<=I
•Yesなら出力して終了
140 LET GN=0
240 LET
160 INPUT
X L=X
•Noならデータを入力(X),
Iを1
150 LET L=100
250I=I+1
LET LN=I
170 LET
増やす
160 LET LN=0
260
GOTO
170210
180 IF G>=X THEN
•(条件分岐):XはG以下か?
170 IF N<=I THEN 270
270G=X
PRINT G,GN
•Yesなら次の条件分岐へ
190 LET
180
INPUT X
•NoならG=X,
GN=I
280
PRINT L,LN
200 LET GN=I
190
LET
I=I+1
•(条件分岐):XはL以上か?
290 END
210 GOTO
150
•Yesなら3行目に戻る
220 PRINT G,GN
•NoならL=X, LN=I
230 END
6