情報基礎Ⅱ/基礎工学Ⅲ (第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の平方根の近似値: 補正値:
© Copyright 2024 ExpyDoc