Share
Embed
Transcript
34 slides
-
ソフトウェアを作る上で必要となる事柄 • アルゴリズム • 計算のやり⽅・⼿順 • 計算と書いているが,情報の世界ではソフトウェアにやらせたいこと(実 現したいこと)とだと思っていれば良い. • プログラミング⾔語
• ソフトウェアを作るための⼈⼯⾔語.アルゴリズムに基づいてプログラミ ング⾔語を⽤いソフトウェアを作成. -
フローチャート • コンピュータはソフトウェアがないと動かない. • ソフトウェアは正しい処理⼿順(アルゴリズム)で作れていないと動 かない. • 処理⼿順を図で分かりやすく描く⽅法の⼀つがフローチャート. • フローチャートはJIS規格により仕様が定められている.
• フローチャートは,処理⼿順を分かりやすく記述できるため,ソフト 開発以外の場⾯でもよく⽤いる(ソフト開発以外で⾒るほうが多いか も). • 事務⼿続きの⽅法 • 緊急事態への対応⼿順 • 国家試験のためには少なくともフローチャートを読めるようにならな ければならない. -
例:朝起きてから家を出るまで 1. 起きる 2. ⻭を磨く 3. 顔を洗う 4. 朝⾷を取る 5.
着替える 6. 家を出る -
逐次処理 • 上から下に順番に1つづつ処理を⾏う. • 必ず処理は順番通り⾏う. • 勝⼿に順番を抜かしたり,戻ったりしては いけない. • 処理のはじめと終わりは⾓が丸い⻑⽅形?
で描く. • 処理は⻑⽅形で描く. • 処理は上から下へ描く. • 処理は線または⽮印でつなぐ. -
例:家を出てから⼤学に着くまで 1. 家を出る 2. 弁当を買いたいなら3へ,買わないなら5へ 3. セブンイレブンへ⾏く 4. 弁当を買う 5.
⼤学に到着 条件によって処理が分岐するような 処理はどうすればよいか? 条件分岐 -
条件分岐 • 条件によって処理の流れが変わること. • 条件によって処理が分かれる様⼦を分岐とよんでいる. • フローチャートでは条件分岐はひし形で描く. • 条件を満たした場合の処理の流れにはYes,条件を満たさない場 合の処理の流れにはNoを描く.
ひし形の中に書かれた条件を満たせば,Yesと 書かれた⽮印に進み処理Aを実⾏する. 条件を満たさなければ,Noと書かれた⽮印に 進み処理Bを実⾏する -
フローチャートで⽤いられるプログラミング⾔語的表現 • 臨床⼯学⼠の国家試験では,フローチャートの問題でプログラミング で⽤いられる記述⽅法が⽤いられる. • 変数:アルファベットで書かれる.数値や⽂字を⼊れる箱と思えば良 い. • 数値の代⼊:数値の代⼊は=もしくは,←で書かれる. •
例:xに0を代⼊ x = 0もしくは x ← 0 • 不等号:条件分岐で⽤いられる.ただし次の表現には注意. • xは0以上 x >= 0 • xは0以下 x <= 0 • xは0と等しい x == 0 • 国家試験の中で表現が統⼀されていないので,雰囲気で察することも 必要. -
10⼈のお客さんの注⽂を聞く 1. 10⼈お客さんが来る. 2. 注⽂を聞きに⾏く. 3. 10⼈⽬まで注⽂を聞いていな ければ4へ,聞いていれば7へ 4. 注⽂を聞く.
5. 何⼈の注⽂か覚える. 6. 3に戻る 7. 終了 -
例:Nまでの⾃然数の和を出⼒する. 1. ⼊⼒をNに⼊れる. 2. sumに0を⼊れる. 3. cntに0を⼊れる. 4. cntがN以下であれば5へ, そうでなければ8へ
5. sum = sum + cnt 6. cnt = cnt + 1 7. 4に戻る 8. sumを出⼒ • sumに和が⼊る • cntはカウンタと呼ばれる.⾜した回数を保存する.⾃然数の和なので, ⾜した回数は⾜す数と同じ. • =は代⼊を意味する. -
演習 • 1以上⼊⼒Nまでの整数の中で,偶数のみを出⼒する処理のフ ローチャートをかけ.ただし,Nは1以上の整数とする.また, a÷bの余りはa%bで計算されるとする. ԋश • Ҏ্ೖྗ/·ͰͷͷதͰɼۮͷΈΛग़ྗ͢Δॲཧͷϑϩ νϟʔτΛ͔͚ɽͨͩ͠ɼ/Ҏ্ͷͱ͢Δɽ·ͨɼB×C ༨ΓBCͰܭࢉ͞ΕΔͱ͢Δɽ
.mn 1%2=1 3%2=1 ྺ FSI 2%2=0 4%2=0 ᙅ ࡿ͕ ద -
演習 • 図のフローチャートで計算終了後のSUMの値はいくらか.第22 回国家試験 SUM = 0 N = 2
CNT = 1 SUM = 2 N = 4 CNT = 2 初期値 1ループ終了後 SUM = 6 N = 6 CNT = 3 2ループ終了後 SUM = 12 N = 8 CNT = 4 3ループ終了後 ͑ -
演習 • 図は⼊⼒値の平均を求めるフローチャートである.(a),(b)に⼊ る組み合わせはどれか.第35回臨床⼯学技⼠国家試験 1. (a) 𝑛 ← 𝑛 +
𝑥 (b) 𝑠 ← 𝑠 + 1 2. (a) 𝑛 ← 𝑛 + 𝑛 (b) 𝑠 ← 𝑠 + 𝑛 3. (a) 𝑛 ← 𝑛 + 1 (b) 𝑠 ← 𝑠 + 𝑥 4. (a) 𝑛 ← 𝑛 + 𝑠 (b) 𝑠 ← 𝑥 + 1 5. (a) 𝑛 ← 𝑛 + 𝑥 (b) 𝑠 ← 𝑠 + 𝑠 -
演習 • 図は⼊⼒値の平均を求めるフローチャートである.(a),(b)に⼊る組み合わせはどれか.第35回臨床⼯学 技⼠国家試験 1. (a) 𝑛 ← 𝑛 +
𝑥 (b) 𝑠 ← 𝑠 + 1 2. (a) 𝑛 ← 𝑛 + 𝑛 (b) 𝑠 ← 𝑠 + 𝑛 3. (a) 𝐧 ← 𝐧 + 𝟏 (b) 𝐬 ← 𝐬 + 𝐱 4. (a) 𝑛 ← 𝑛 + 𝑠 (b) 𝑠 ← 𝑥 + 1 5. (a) 𝑛 ← 𝑛 + 𝑥 (b) 𝑠 ← 𝑠 + 𝑠 平均は! " ∑# 𝑥# である. *の処理を⾒るとs/nとなっている. つまり,nは個数でsは総和であることが分かる. 条件分岐からxが負となった場合,平均したい数値の⼊⼒を終え て平均を計算することが分かる. 個数は⼊⼒されるごとに1⾜せば良いので. n <- n+1 でよい.総和はsに⼊⼒を⾜し続ければ良いので, S <- s+x となる. * -
第40回ME2種 図のフローチャートで計算終了時のX[1]の値はど れか.ただし,X[N]は配列変数を意味し,Nの値 によって別の変数として扱う. 1. 0 2. 1 3. 2
4. 3 5. 4 配列X 4 3 1 配列は数値を⼊れる箱を複数個まとめたもの である. 数値を⼊れる箱には0から順番に番号が割り振 られている. この問題では,配列には3個の数値が⼊ってい る. -
第40回ME2種 図のフローチャートで計算終了時のX[1]の値はど れか.ただし,X[N]は配列変数を意味し,Nの値 によって別の変数として扱う. 1. 0 2. 1 3. 2
4. 3 5. 4 • ͡Ί/ͳͷͰ݅ذ:&4ํʹਐΉɽ • /ͳͷͰɼ݅ذ9<>9<>ΛධՁ͢Δɽ 9<>ɼ 9<>ͳͷͰ݅Λຬ͍ͨͯ͠ͳ͍ͨ Ί/0ʹਐΉɽ • /0ʹਐΈॲཧΛ࣮ߦ͢Δͱྻ࣍ͷΑ͏ʹͳ Δɽ • ࣍ͷॲཧͰ/ͱͳΔɽ • ݅ذʹΓɼ/ΛධՁ͢Δɽ/ͳͷͰ :&4ʹਐΉɽ 配列X 3 4 1 -
第40回ME2種 図のフローチャートで計算終了時のX[1]の値はど れか.ただし,X[N]は配列変数を意味し,Nの値 によって別の変数として扱う. 1. 0 2. 1 3. 2
4. 3 5. 4 • 9<>ɼ9<>ͳͷͰɼ݅ذͰ/0ʹ ਐΉɽ • /0ʹਐΈॲཧΛߦ͏ͱɼͦΕͧΕͷྻ࣍ ͷΑ͏ʹͳΔɽ • ࣍ͷॲཧͰ/ʹͳΔɽ • ࠷ॳͷ݅ذʹΓ/ΛධՁ͢Δɽ/ͳ ͷͰɼ/0ʹਐΉɽ • ͜ΕͰॲཧऴྃͱͳΔɽ • Αͬͯ9<>Ͱ͋Δɽ 配列X 3 1 4 -
演習 配列aの初期値が a[0]=49 a[1]=17 a[2]=38 a[3]=55 a[4]=26 であるとき,図のフローチャートの⼿順に適⽤した後の配列aの値はどれか.(臨床⼯学技⼠国家試験36) 1. a[0]=17
a[1]=26 a[2]=38 a[3]=49 a[4]=55 2. a[0]=55 a[1]=49 a[2]=38 a[3]=26 a[4]=17 3. a[0]=26 a[1]=17 a[2]=38 a[3]=55 a[4]=49 4. a[0]=17 a[1]=38 a[2]=49 a[3]=26 a[4]=55 5. a[0]=49 a[1]=38 a[2]=55 a[3]=26 a[4]=17 ɹüÿɹྻ B ͷॳظ͕ B ʦ÷ʧ B ʦøʧ B ʦùʧ B ʦúʧ B ʦûʧ ûĀ øþ úÿ üü ùý Ͱ͋Δͱ͖ɺਤͷϑϩʔνϟʔτͷखॱΛద༻ͨ͠ޙͷྻ B ͷͲΕ͔ɻ ։࢝ B Λೖྗ B Λग़ྗ OP ZFT ZFT OP ऴྃ O ! ÷ O 1 û B ʦOʧ 2 B ʦO + øʧ U ! B ʦO + øʧ B ʦO + øʧ ! B ʦOʧ B ʦOʧ ! U O ! O + ø B ʦ÷ʧ B ʦøʧ B ʦùʧ B ʦúʧ B ʦûʧ 配列は数値を⼊れる箱を複数個まとめたものである. 数値を⼊れる箱には0から順番に番号が割り振られている. この問題では,配列には5個の数値が⼊っている. 配列 49 17 38 55 26 -
演習 ɹüÿɹྻ B ͷॳظ͕ B ʦ÷ʧ B ʦøʧ B ʦùʧ
B ʦúʧ B ʦûʧ ûĀ øþ úÿ üü ùý Ͱ͋Δͱ͖ɺਤͷϑϩʔνϟʔτͷखॱΛద༻ͨ͠ޙͷྻ B ͷͲΕ͔ɻ ։࢝ B Λೖྗ B Λग़ྗ OP ZFT ZFT OP ऴྃ O ! ÷ O 1 û B ʦOʧ 2 B ʦO + øʧ U ! B ʦO + øʧ B ʦO + øʧ ! B ʦOʧ B ʦOʧ ! U O ! O + ø B ʦ÷ʧ B ʦøʧ B ʦùʧ B ʦúʧ B ʦûʧ øɽ øþ ùý úÿ ûĀ üü ùɽ üü ûĀ úÿ ùý øþ úɽ ùý øþ úÿ üü ûĀ ûɽ øþ úÿ ûĀ ùý üü üɽ ûĀ úÿ üü ùý øþ 1 2 n=0,条件分岐1と⼀番下のn<-n+1により,nは0から3まで変わる. 条件分岐2では,図の配列の右隣の箱の中の数値の⼤⼩関係を調べて いる.右隣の箱に⼊っている数値が⼩さければyesに進み次の処理を する. Yesに進んだときは,右隣の数値と⼊れ替える処理が⾏われる. 右隣の数値a[n+1]を⼀時的にtに保存する. 右隣の箱 a[n+1] に数値 a[n] を⼊れる. 右隣にあった数値tを箱a[n]に⼊れる. この処理を1回⾏うと次のように配列の中⾝が変わる. 配列 49 17 38 55 26 配列 17 49 38 55 26 -
演習 ɹüÿɹྻ B ͷॳظ͕ B ʦ÷ʧ B ʦøʧ B ʦùʧ
B ʦúʧ B ʦûʧ ûĀ øþ úÿ üü ùý Ͱ͋Δͱ͖ɺਤͷϑϩʔνϟʔτͷखॱΛద༻ͨ͠ޙͷྻ B ͷͲΕ͔ɻ ։࢝ B Λೖྗ B Λग़ྗ OP ZFT ZFT OP ऴྃ O ! ÷ O 1 û B ʦOʧ 2 B ʦO + øʧ U ! B ʦO + øʧ B ʦO + øʧ ! B ʦOʧ B ʦOʧ ! U O ! O + ø B ʦ÷ʧ B ʦøʧ B ʦùʧ B ʦúʧ B ʦûʧ øɽ øþ ùý úÿ ûĀ üü ùɽ üü ûĀ úÿ ùý øþ úɽ ùý øþ úÿ üü ûĀ ûɽ øþ úÿ ûĀ ùý üü üɽ ûĀ úÿ üü ùý øþ 1 2 配列 49 17 38 55 26 配列 17 49 38 55 26 n=0のときの処理後 初期値 配列 17 38 49 55 26 n=1のときの処理 配列 17 38 49 55 26 n=2のときの処理 配列 17 38 49 26 55 n=3のときの処理 -
演習 配列aの初期値が a[0]=49 a[1]=17 a[2]=38 a[3]=55 a[4]=26 であるとき,図のフローチャートの⼿順に適⽤した後の配列aの値はどれか.(臨床⼯学技⼠国家試験36) 1. a[0]=17
a[1]=26 a[2]=38 a[3]=49 a[4]=55 2. a[0]=55 a[1]=49 a[2]=38 a[3]=26 a[4]=17 3. a[0]=26 a[1]=17 a[2]=38 a[3]=55 a[4]=49 4. a[0]=17 a[1]=38 a[2]=49 a[3]=26 a[4]=55 5. a[0]=49 a[1]=38 a[2]=55 a[3]=26 a[4]=17 ɹüÿɹྻ B ͷॳظ͕ B ʦ÷ʧ B ʦøʧ B ʦùʧ B ʦúʧ B ʦûʧ ûĀ øþ úÿ üü ùý Ͱ͋Δͱ͖ɺਤͷϑϩʔνϟʔτͷखॱΛద༻ͨ͠ޙͷྻ B ͷͲΕ͔ɻ ։࢝ B Λೖྗ B Λग़ྗ OP ZFT ZFT OP ऴྃ O ! ÷ O 1 û B ʦOʧ 2 B ʦO + øʧ U ! B ʦO + øʧ B ʦO + øʧ ! B ʦOʧ B ʦOʧ ! U O ! O + ø B ʦ÷ʧ B ʦøʧ B ʦùʧ B ʦúʧ B ʦûʧ