情報基礎II/情報工学II 第三回目

情報基礎Ⅱ
(第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になったときの
割る数が最大公約数