23
Logical Thinking and Programming 論理思考とプログラミング 51時限目 51時限目 アルゴリズム概念の理解と構築 アルゴリズム概念の理解と構築

論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

●●● Logical Thinking and Programming

論理思考とプログラミング第5回 1時限目第5回-1時限目

アルゴリズム概念の理解と構築アルゴリズム概念の理解と構築

Page 2: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

先週の復習Logical Thinking

先週の復習

先週は特にプログラミング的には進んでいません.

Logical Thinking and Programming ●●●

Page 3: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

課題提出状況Logical Thinking

課題提出状況

が が提出率が悪い気がします。

まだ出していない人は 遅れてもいいので提まだ出していない人は,遅れてもいいので提出してください.

出さなきゃ0点 出せば点数が付きます出さなきゃ0点。出せば点数が付きます。

Logical Thinking and Programming ●●●

Page 4: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

前回授業の復習

授業情報Logical Thinking授業情報

Webhttp://www.ht.sfc.keio.ac.jp/~skk/lt2009f/SFSからたどれますSFSからたどれます。

教材や配布資料が閲覧できる

授業で使うソフトウェアがダウンロードできる

メールル

スタッフ用メーリングリスト[email protected]@ jp

クラス用メーリングリスト[email protected]

Logical Thinking and Programming ●●●

Page 5: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

今日の授業の流れLogical Thinking

今日の授業の流れ

1時限目1時限目講義

1限目の演習範囲の解説1限目の演習範囲の解説並び替えアルゴリズムについて,指定問題の取り組み方

演習P j t10 並び替えをしてみよう<前半 10 1 10 2>Project10 並び替えをしてみよう<前半 10.1~10.2>

2時限目講義講義

まとめ: 小値選択法の効率計算2限目の演習範囲の解説,指定問題の取り組み方とポイントまとめ 制御構造の組み合わせ(復習)と 小値選択法まとめ:制御構造の組み合わせ(復習)と 小値選択法

演習Project10 並び替えをしてみよう<後半 10.3~10.4>

Logical Thinking and Programming ●●●

j

Page 6: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

配布資料Logical Thinking

配布資料

枚1人1枚第5回 演習チェックシート

小値選択法 ワークシート(A4×4枚)

ペアで1セット

カード1セット40枚他のクラスでも使用するため,紛失しないように

小値選択法 実験用台紙(A3)グラフ作成用エクセルテンプレート(授業のページからダウンロードできる)

Logical Thinking and Programming ●●●

Page 7: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

1時限目の目標Logical Thinking

1時限目の目標

与えられた(並び替え)アルゴリズムを手作業で実行することによって理解する

Logical Thinking and Programming ●●●

Page 8: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

1時限目の演習範囲Logical Thinking

1時限目の演習範囲

並びProject10 並び替えをしてみよう<前半 10.1~10.2>

テキストの範囲

P 117~P 122P.117~P.122指定問題

や てみよう N 10 1(P 122)やってみよう No.10-1(P.122)

Logical Thinking and Programming ●●●

Page 9: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

並び替えアルゴリズムLogical Thinking

並び替えアルゴリズム

たくさんの要素を小さい順(昇順)あるいは大きい順(降順)に並べ替える「作業の手順(アき 順(降順) 替 る 作業 手順(アルゴリズム)」

例:複数のカードをその番号を基準に 昇順に並例:複数のカードをその番号を基準に,昇順に並べ替える

Logical Thinking and Programming ●●●

Page 10: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

「やってみよう No 10-1」についてLogical Thinking

「やってみよう No.10-1」について

概概要

40枚のカードを手作業で昇順に並び変えます小値選択法(選択ソート)という方法で,並び替えを行います

2人組(並び替え係,時間の記録係)のペアで行います

注意注意

まず,テキスト P.117~P.122をよく読む

テキストの付録C 「 小値選択法 ワークシート」を印刷しテキストの付録C 小値選択法 ワ クシ ト」を印刷したものを配布するので,それに従って演習を行うこと

Logical Thinking and Programming ●●●

Page 11: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

「やってみよう No 10-1」の取り組み方1Logical Thinking

「やってみよう No.10-1」の取り組み方1

ペアを組むペアを組むペアが組めない場合は,SAやTAとペアを組み,SAやTAが時間計測係を担当する

ワークシートにペアの氏名を記入する

ワークシートのStep1.とStep2.を読んで,カードの準備をし,並び替えアルゴリズムを理解する

ドカードをよくシャッフルすることアルゴリズムはペアの両人が理解しておくこと5枚程度のカードでまず試してみるとよい同一の番号が振られたカードが複数枚あるが,Step2.の手順に従えば,正しく並び替えが行える

Logical Thinking and Programming ●●●

Page 12: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

「やってみよう No 10-1」の取り組み方2Logical Thinking

「やってみよう No.10-1」の取り組み方2

カ ドの並び替えにかかる時間を計測し 結果をStep3 に記カードの並び替えにかかる時間を計測し,結果をStep3.に記入していく

並び替え係,時間計測係で分担するプ時間計測係はストップウォッチを作成する,テキスト P.121~122にス

トップウォッチの作成方法が掲載されている

Step4.~Step7.へ解答を記入する2人で相談しながら記入してよいStep4 で使うエクセルのテンプレートは授業のページからダウンローStep4.で使うエクセルのテンプレートは授業のページからダウンロードできる

ワ クシ トは2時限目の授業終了後に演習チ クシ トとワークシートは2時限目の授業終了後に演習チェックシートと一緒に提出するカードが40枚あるか確認し,輪ゴムでとめて返却する

Logical Thinking and Programming ●●●

カ ドが 枚あるか確認し,輪 でとめて返却する

Page 13: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

●●● Logical Thinking and Programming

論理思考とプログラミング第5回 2時限目第5回-2時限目

アルゴリズム概念の理解と構築アルゴリズム概念の理解と構築

Page 14: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

2時限目の目標Logical Thinking

2時限目の目標

手作業で理解した(並び替え)アルゴリズムをプログラムとして書けるようになる

Logical Thinking and Programming ●●●

Page 15: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

まとめ: 小値選択法の効率計算Logical Thinking

まとめ: 小値選択法の効率計算

並び替えるカ ドの枚数と比較回数並び替えるカードの枚数と比較回数カードが1枚の場合→0回カードが2枚の場合→1回カ ドが2枚の場合→1回カードが3枚の場合→2+1回カードが4枚の場合→3+2+1回カードが5枚の場合→4+3+2+1回

カードの枚数がN枚の場合の比較回数(N-1)+(N-2)+(N-3)+…+1=N×(N-1)/2

比較回数はNの2乗に比例して増加する比較回数はNの2乗に比例して増加する計算結果は(N2-N)/2であるが,Nが十分に大きければ,N/2は無視できるカ ドの枚数が2倍になると 時間は4倍かかる

Logical Thinking and Programming ●●●

カードの枚数が2倍になると,時間は4倍かかる

Page 16: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

講師によるデモLogical Thinking

講師によるデモ

第5回 > Project10 > 10.3~10.4

Logical Thinking and Programming ●●●

第5回 > Project10 > 10.3~10.4

Page 17: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

2時限目の演習範囲Logical Thinking

2時限目の演習範囲

並び 後Project10 並び替えをしてみよう<後半 10.3~10.4>

テキストの範囲

P 123~P 130P.123~P.130指定問題

や てみよう N 10 2(P 127)やってみよう No.10-2(P.127)やってみよう No.10-3(P.130)

発展問題発展問題

やってみよう No.10-4(P.130)

Logical Thinking and Programming ●●●

Page 18: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

やってみよう No 10-2Logical Thinking

やってみよう No.10-2

概要概要1限目に手作業で実行した 小値選択法をコンピピュータで再現します

2人組は解散し,1人で作業をします

注意注意テキスト P.123~P.130をよく読む

入れ物の使い方に関しては テキストのP 163入れ物の使い方に関しては,テキストのP.163「付録 A.17」を参照すること

Logical Thinking and Programming ●●●

Page 19: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

指定問題の取り組み方Logical Thinking

指定問題の取り組み方

ドP.123~P.127までを読んで,カードの準備をし,「やってみよう No.10-2」(P.127)に取り組む

P 128~P 130までを読んで 途中まで実装P.128~P.130までを読んで,途中まで実装をして,残りを「やってみよう No.10-3」( )とし 取り組む(P.130)として取り組む

Logical Thinking and Programming ●●●

Page 20: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

実装時に気をつけるポイントLogical Thinking

実装時に気をつけるポイント

タイルをよく読み 命令に間違いがないか丁寧に確認するタイルをよく読み,命令に間違いがないか丁寧に確認する例:追加先の入れ物を間違える

「●●に××に追加する」という命令のつもりで,●● 追加する」 う命令 もり ,「●●を△△に追加する」という命令を入れてしまう

フロ チャ トを確認しながら実装するフローチャートを確認しながら実装するフローチャートを無視して,タイルをいじくりまわすだけでは無理です

1回だけ実行ボタン を有効活用する1回実行してうまく行かないものは,チクタク(繰り返し)をしても,絶対にうまくいかない

1回だけ実行して,命令がうまく動いていることを確認しながら,少しずつ作っていくことが大切

Logical Thinking and Programming ●●●

Page 21: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

実装方法についてLogical Thinking

実装方法について

良い方法良い方法1.少し作ったら,テストをする2 テストをしてうまくいかなかったら 一番 近追加した部2.テストをしてうまくいかなかったら, 番 近追加した部分が間違っていることが分かる3.間違いを修正し,意図通りに動いたら1.に戻る(完成まで繰り返し)で繰り返し)

悪い方法悪い方法1.一度も実行(テスト)をしないで,一気に完成させる2 実行すると 意図通りに動かない2.実行すると,意図通りに動かない3.どこが間違っているか,正しいか分からない4.手当たり次第に変更し,混乱してしまう

Logical Thinking and Programming ●●●

Page 22: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

制御構造の組み合わせ(復習)Logical Thinking

制御構造の組み合わせ(復習)

造第2回の授業で,制御構造について整理した

複雑な処理を記述する場合は3つの制御構造を複雑な処理を記述する場合は3 の制御構造を入れ子状に組み合わせる

どの制御構造も処理の入り口が1つで 出口も1どの制御構造も処理の入り口が1つで,出口も1つなので可能

命令Aを入り口1つ,出口1つの箱として 入り口1 命令A

命令X 命令Y

何かを調べて

Yes No

1つの箱として,入り口1つ,出口1つの分岐構造に置き換えることが可能

命令命令X 命令Y

Logical Thinking and Programming ●●●

Page 23: 論理思考とプログラミング 第第5回 - 1時限目skk/lt2009f/material/05/...Logical Thinking and Programming 論理思考とプログラミング 第第5回 - 1時限目

小値選択法の例Logical Thinking

小値選択法の例はじめ

制御構造を組み合わせれば(入れ子にする)実現できる

未処理束にカードがあるか

いいえ はい

はい

いいえ

はじめ

はじめ

はじめ

未処理束にカードがあるか

Noめくったカードを最小値候

補に移動する

めくったカードを検索済束に置く

最小値候補にあるカードを検索済束の一番上に置く

いいえ はいめくったカードの数値が最小値候補にあ

るカードの数値より小さいか

一枚を並び替える

未処理束にカードがあるか

Yes

No

はじめ

小値検索法でカードを並び替える

はじめ

後の一枚を除いて,全てのカードを

並び替える

後の一枚の処理(後処理)

小値候補の更新

Yes

未処理束へ 小値候補を移動し,未処理束と検索済束を

初期化

いいえ はい未処理束にカードがあるか

最小値候補にあるカードをソート済束に置く

おわり

後の一枚の処理(後処理)

おわり

おわり

(後処 )

おわり

後の一枚の処理(後処理)

初期化

未処理束の一番上のカードを最小値スペースに置く

ソ ト済束に置く

検索済束にある全てのカードを未処理束に移動する

おわり

Logical Thinking and Programming ●●●

おわり

最小値候補にあるカードをソート済束に置く