情報基礎Ⅱ (第3回) 月曜4限 担当:北川 晃 判断と飛び越し1 WHILE型 IF文 条件成立? NO 繰り返して 実行する部分 GoTo文 次の処理へ YES If文の基本的な表式1 条件式: •条件式が満たされれば文1を実行 •満たされないときは文2を実行 [ ]で囲まれたElse句は省略可. If 条件式 Then 文1 [Else 文2] 条件式(比較演算子)の書き方 • • • • • • < <= > >= = <> (より小さい) (以下) (より大きい) (以上) (等しい) (等しくない) If If If If If If a<100 Then …… a<=100 Then …… a>100 Then …… a>=100 Then …… a=100 Then …… a<>100 Then …… 1行のIf文の例文 Dim a, b, c, d As Integer Dim flag As Boolean If a > b Then c = 100 Else c = -100 If a <= b Then c = 125 If flag Then c = d • 条件式は論理型の変数として扱われる. • 満たされた場合は「真」(True), 満たされない場合は「偽」(False)という. • 条件式に,論理型の変数を用いることも可能. 例題:ユークリッドの互除法 ユークリッドの互除法を用いて,2つの正整数a,b (a>b)の最大公約数を求めるプログラムを作れ. あまり と の最大公約数は 例:1058と943の最大公約数 •1058÷943=1 あまり 115 (943と115の最大公約数) •943÷115=8 あまり 23 (115と23の最大公約数) •115÷23=5 あまり 0 と のとき, の最大公約数に等しい. •あまりが0になるまで この作業を繰り返す. •あまりが0になったときの 割る数が最大公約数 ユークリッドの互除法:出力例 ユークリッドの互除法のアルゴリズム 1. 2つの整数aとbを読み込む. 2. a→m,b→nを代入. 3. ℓ=(m÷nのあまり)を計算. 4. (n,ℓ)を新たな(m,n)として代入. 5. 手順3と4を,あまりℓが0になるまで繰り返す. 6. このときのnを最大公約数として書き出す. プログラム例:ユークリッドの互除法 Dim a, b, ℓ, m, n As Integer ℓ=lと読み替えてください Console.Write("一つ目の整数を入力して下さい") a = Console.ReadLine() Console.Write("二つ目の整数を入力して下さい") b = Console.ReadLine() GoTo で m = a 飛ぶ先 n = b 余りを計算して,0なら ‘point2’へ飛べ,という命令 point1: ℓ = m - (m \ n) * n If ℓ = 0 Then GoTo point2 m = n この二つの行を n = ℓ GoTo point1 逆にしてはならない 条件成立? NO 繰り返して 実行する部分 point2: Console.WriteLine("最大公約数は{0}", n) 次の処理へ YES プログラミング演習 整数𝑛を一つキーボードから読み込み,1から𝑛までの 和を計算するプログラムを作れ. 𝑛 = 8の場合: 1から1までの和は,1 1から2までの和は,3 1から3までの和は,6 1から4までの和は,10 1から5までの和は,15 1から6までの和は,21 1から7までの和は,28 1から8までの和は,36 計算終了! プログラミング演習:プログラム例 Dim i, n, s As Integer s = 0 Console.Write("n=") n = Console.ReadLine() i = 0 point1: i = i + 1 If i > n Then GoTo point2 s = s + i Console.WriteLine("1から{0}までの和は,s={1}", i, s) GoTo point1 point2: Console.WriteLine("計算終了!") Whileループを用いた条件分岐 • While……End While文 ある条件によって繰り返しを続けるかどうかを判断するループ While 条件式 文ブロック End While • 条件式が真(True)の間はループを繰り返す. • 条件が最初から偽(False)の場合は, ループを1回も実行しない. While文の例文 Dim sum As Integer = 0, i As Integer i = 1 While i <= 10 sum = sum + i i = i + 1 End While iが11を越えるまで, 以下の命令を繰り返せ. 変数’sum’に’i’を加えた ものを新たな’sum’とする. Console.WriteLine(“合計は{0}”, sum) While文の条件式を誤れば,ループが 無限に繰り返されることにもなる. 演習:ユークリッドの互除法 ユークリッドの互除法を用いて,2つの正整数a,b (a>b)の最大公約数を求めるプログラムを作れ. ただし,While文によるループを用いること. あまり と の最大公約数は 例:1058と943の最大公約数 •1058÷943=1 あまり 115 (943と115の最大公約数) •943÷115=8 あまり 23 (115と23の最大公約数) •115÷23=5 あまり 0 と のとき, の最大公約数に等しい. •あまりが0になるまで この作業を繰り返す. •あまりが0になったときの 割る数が最大公約数
© Copyright 2024 ExpyDoc