情報基礎II (第1回)

情報基礎Ⅱ/基礎工学Ⅲ
(第4回)
月曜4限
担当:北川 晃
If文の基本的な表式 その3
If 条件式1 Then
[ 文ブロック1 ]
[ ElseIf 条件式2 Then
[ 文ブロック2 ] ]
[ Else
[ 文ブロック3 ] ]
End If
• 条件式1の値が真(True)の場合に文ブロック1が,偽(False)の
場合には条件式2が調べられ,式の値が真(True)の場合に
文ブロック2が,偽(False)の場合には文ブロック3が実行される.
• ElseIf句はいくつでも追加できる.
より複雑な条件式の書き方
•
かつ
のとき
If a=1 And b=2 Then…
•
または
のとき
If a=1 Or b=2 Then…
•
のとき
If x <= 0 Or (3 <= x And x < 5) Then…
括弧()などをうまく使って,条件式をまとめる.
プログラミング演習
• 1~12の月(month)を入力をしたとき,
 3~5月ならば「春」
 6~8月ならば「夏」
 9~11月ならば「秋」
 12~2月ならば「冬」
と表示させるプログラムを作れ.
考え方:入力された”month”の値によって場合分けする.
出力例:季節の判定
プログラム例:季節の判定
Console.Title = "季節の判定プログラム"
Dim month As Integer, season As String
Console.WriteLine("何月ですか?1~12の整数を入力して下さい.")
month = Console.ReadLine()
3≦月≦5の場合
If month >= 3 And month <= 5 Then
season = "春"
6≦月≦8の場合
ElseIf month >= 6 And month <= 8 Then
season = "夏"
9≦月≦11の場合
ElseIf month >= 9 And month <= 11 Then
season = "秋"
ElseIf month = 12 Or (month >= 1 And month <= 2) Then
season = "冬"
月=12もしくは1≦月≦2
Else
の場合
season = "入力エラー"
End If
それ以外の場合
Console.WriteLine("{0}月の季節は{1}です.", month, season)
様々な繰り返しの構文
• 同じ作業を,あらかじめ決まった回数だけ繰り返す
 For……Next文
• ある条件式が満たされるまで,同じ作業を繰り返す
 While……End While文
条件式が真の場合は,ループを繰り返す(前判定)
 Do……Loop文
条件が真の場合,または真になるまで,
ループを繰り返す(前判定,後判定).
For……Next文の基本的な表式
For 制御変数 [As 型] = 初期値 To 終了値 [Step 増分]
文ブロック
Next [制御変数]
• 制御変数の値が初期値から終了値の間,ループを繰り返す.
• 1回ループするたびに,制御変数の値は増分だけ増加する.
• 増分が負の場合は,減少する.
• 増分が1の場合のみ,”Step 1”は省略可.
• ループ内でのみ用いる制御変数を,Asで宣言できる.
• […]内は省略可.
For……Next文の例文
• 整数nを読み込んで,1+2+…+nの値を計算せよ.
Console.Title = "1~nまでの和"
Dim n As Integer, sum As Integer = 0
Console.Write("n=")
n = Console.ReadLine()
繰り返し
構造
変数iは,ループ内
でのみ用いる.
増分”1”は省略
For i As Integer = 1 To n
sum = sum + i
繰り返し構造の終了
Next i
(iは省略可)
Console.WriteLine("1+2+…+n={0}", sum)
For……Next文の入れ子構造
For j = 1 To n
For i = 1 To n
文ブロック
Next
Next
右のようなループの
組み合わせは許されない.
文頭でi,jの型を
宣言している場合
繰り返し構造の中に繰り返し
構造を作ることもできる.
“Next i”などと書けば,どの
変数のループかはっきりする
For j = 1 To n
For i = 1 To n
文ブロック
Next j
Next i
例題:フィボナッチ数列
フィボナッチ数列の最初の40項を求めて
出力するプログラムを作れ.
…
フィボナッチ数列:アルゴリズム
1. 求めたい項を’n_new’,ひとつ前の項を’n_last’,
二つ前の項を’n_old’とする.
2. 初期値としてn_old=0,n_last=1を代入し,
第一項と第二項をそれぞれ書き出す.
3. 第三項をn_new=n_old+n_lastにより計算し,書き出す.
4. 次の第四項を求めるために,
n_old=n_last,n_last=n_newの置き換えを行う.
5. この手順を,第40項が求まるまで繰り返す.
フィボナッチ数列:出力例
フィボナッチ数列:プログラム例
Dim i, num, n_old, n_last, n_new As Integer
num = 40
項の数
n_old = 0
Console.WriteLine("{0}", n_old)
初項
n_last = 1
Console.WriteLine("{0}", n_last)
第二項
i=1~num(=40)
まで繰り返し
For i = 3 To num
n_new = n_last + n_old
増分”Step 1”
Console.WriteLine("{0}", n_new)
n_old = n_last
は省略
n_last = n_new
Next
これらの文を
逆にしてはならない
さまざまな組み込み関数
• Math.Sign(-5)→-1
• Math.Sign(0)→0
• Math.Sign(30)→1
• Math.Abs(x):
xの絶対値
• Math.Sign(x):
xの符号
• Int(x):
xを超えない最大の整数
• Fix(x):
xの整数部分
• Math.Sqrt(x):
xの平方根
• Math.Log(x):
xの自然対数
• Math.Exp(x):
xの指数関数
• Math.Sin(x):
xの正弦(ラジアン単位)
• Math.Cos(x):
xの余弦(ラジアン単位)
• Math.Tan(x):
xの正接(ラジアン単位)
• Int(-4.3)→-5
• Int(4.3)→4
• Fix(-4.3)→-4
• Fix(4.3)→4
例題:平方根の計算
a=1, 2, …, 50に対して,その平方根
を求め,
表を出力するプログラムを作れ.
: Math.Sqrt(a)
aの平方根の近似値:
補正値: