1 / 20

情報基礎 II ( 第 2 回)

情報基礎 II ( 第 2 回). 月曜4限 担当 :北川 晃. 講義資料のスライド. http://www.cc.kochi-u.ac.jp/~kitagawa/ より ,適宜ダウンロードして参照してください.. 判断と飛び越し1. IF 文. WHILE 型. 条件成立?. YES. NO. 繰り返して 実行する部分. GoTo 文. 次の処理へ. If 文の基本的な表式1. 条件式: 条件式が 満たされれば文 1 を実行 満たされないとき は文 2 を実行. [ ] で囲まれた Else 句は省略可..

yetta-leon
Download Presentation

情報基礎 II ( 第 2 回)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 情報基礎II(第2回) 月曜4限 担当:北川 晃

  2. 講義資料のスライド http://www.cc.kochi-u.ac.jp/~kitagawa/ より,適宜ダウンロードして参照してください.

  3. 判断と飛び越し1 IF文 WHILE型 条件成立? YES NO 繰り返して 実行する部分 GoTo文 次の処理へ

  4. If文の基本的な表式1 • 条件式: • 条件式が満たされれば文1を実行 • 満たされないときは文2を実行 [ ]で囲まれたElse句は省略可. If 条件式 Then 文1 [Else 文2] 条件式(比較演算子)の書き方 • <(より小さい)If a<100 Then …… • <=(以下)If a<=100 Then …… • >(より大きい)If a>100 Then …… • >=(以上)If a>=100 Then …… • =(等しい)If a=100 Then …… • <>(等しくない)If a<>100 Then ……

  5. 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)という. • 条件式に,論理型の変数を用いることも可能.

  6. 例題:ユークリッドの互除法 ユークリッドの互除法を用いて,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になったときの • 割る数が最大公約数

  7. ユークリッドの互除法のアルゴリズム 2つの整数aとbを読み込む. a→m,b→nを代入. l=(m÷nのあまり)を計算. (n,l)を新たな(m,n)として代入. 手順3と4を,あまりlが0になるまで繰り返す. このときのnを最大公約数として書き出す.

  8. プログラム例:ユークリッドの互除法 Dim a, b, l, m, n As Integer Console.Write("一つ目の整数を入力して下さい") a = Console.ReadLine() Console.Write("二つ目の整数を入力して下さい") b = Console.ReadLine() m = a n = b point1: l = m - (m \ n) * n If l = 0 Then GoTo point2 m = n n = l GoTo point1 point2:Console.WriteLine("最大公約数は{0}", n) 条件成立? YES GoToで 飛ぶ先 余りを計算して,0なら ‘point2’へ飛べ,という命令 NO 繰り返して 実行する部分 この二つの行を 逆にしてはならない 次の処理へ

  9. 大きい値と小さい値:出力例

  10. Whileループを用いた条件分岐 • While……End While文 • ある条件によって繰り返しを続けるかどうかを判断するループ While条件式 文ブロック End While • 条件式が真(True)の間はループを繰り返す. • 条件が最初から偽(False)の場合は, • ループを1回も実行しない.

  11. While文の例題 Dim sum As Integer = 0, i As Integer i = 1 While i <= 10 sum = sum + i i = i + 1 End While Console.WriteLine(“合計は{0}”, sum) iが11を越えるまで, 以下の命令を繰り返せ. 変数’sum’に’i’を加えた ものを新たな’sum’とする. While文の条件式を誤れば,ループが 無限に繰り返されることにもなる.

  12. プログラム例:ユークリッドの互除法 Dim a, b, l, m, n As Integer Console.Write("一つ目の整数を入力して下さい") a = Console.ReadLine() Console.Write("二つ目の整数を入力して下さい") b = Console.ReadLine() m = a n = b l = m - (m \ n) * n While l <> 0 m = n n = l l = m - (m \ n) * n End While Console.WriteLine("最大公約数は{0}", n) 余りが0かどうかを判定 この二つの行を 逆にしてはならない 余りを計算し直して もう一度評価

  13. 判断と飛び越し2 IF文 IF-THEN-ELSE型 条件成立? YES NO 処理1 処理2 合流 次の処理へ

  14. If文の基本的な表式 その2 If条件式 Then [ 文ブロック1 ] [ Else [ 文ブロック2 ] ] End If • 条件式の値が真(True)の場合に文ブロック1が, • 偽(False)の場合に文ブロック2が実行される. • 文ブロックは1文だけでも,あるいは • 文が1つも無い場合も許される. • [ ]で囲まれた部分は省略可.

  15. If文の基本的な表式 その3 If条件式1 Then [ 文ブロック1 ] [ ElseIf条件式2 Then [ 文ブロック2 ] ] [ Else [ 文ブロック3 ] ] End If • 条件式1の値が真(True)の場合に文ブロック1が,偽(False)の • 場合には条件式2が調べられ,式の値が真(True)の場合に • 文ブロック2が,偽(False)の場合には文ブロック3が実行される. • ElseIf句はいくつでも追加できる.

  16. 例題:大きい値と小さい値 n個のデータx1, x2, …, xnと定数aが与えられているとき, xi≧aであるものの個数と,xi<aであるものの個数を求めよ. • 大きい値:6個 • 小さい値:5個

  17. 大きい値と小さい値:アルゴリズム 入力装置から区切りの値aを読み込む. 初期値:大きい値の数l=0, 小さい値の数s=0 入力装置からxを一つ読み込む. xとaを比較して,x≧aである場合はl→l+1 x<aである場合はs→s+1 次のxを読み込み,再び判定する. 以上を繰り返し,読み込む値がなくなったら, lとsを書き出す.

  18. プログラム例:大きい値と小さい値 Dim c, l, s, n As Integer, a, x As Single Console.Write("区切りとなる値aを入力して下さい") a = Console.ReadLine() Console.Write("データの個数nを入れて下さい") n = Console.ReadLine() c = 0 l = 0 s = 0 point1: c = c + 1 Console.Write("{0}個目のデータを入力して下さい", c) x = Console.ReadLine() データの個数のカウンタ(初期値0) 大きな数字の個数のカウンタ(初期値0) 小さな数字の個数のカウンタ(初期値0) データの個数のカウンタを1増やす

  19. プログラム例:大きい値と小さい値(続き) • 入力したxの値がaよりも • 大きい場合はlを1増やす • 小さい場合はsを1増やす If x >= a Then l = l + 1 Else s = s + 1 End If If c <> n Then GoTo point1 Console.WriteLine("aより大きい値は{0}個," _ & "小さい値は{1}個", l, s) cがnに達していなければ,point1へ戻る

  20. 大きい値と小さい値:出力例

More Related