論理思考とプログラミング 第第6回 - 1時限目skk/lt2009f/material/06/...logical...

29
Logical Thinking and Programming 論理思考とプログラミング 61時限目 61時限目 アルゴリズムの発明と構築 アルゴリズムの発明と構築

Upload: others

Post on 12-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

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

●●● Logical Thinking and Programming

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

アルゴリズムの発明と構築アルゴリズムの発明と構築

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

今日の授業の流れLogical Thinking

今日の授業の流れ

1時限目1時限目講義

前回の復習前回の復習

1限目の演習範囲の解説

演習演習Project10 並び替えをしてみよう<練習問題>

2時限目講義

2限目の演習範囲の解説

演習辞書を作 う

Logical Thinking and Programming ●●●

Project11 辞書を作ってみよう

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

前回授業の復習

授業情報Logical Thinking授業情報

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

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

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

メールル

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

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

Logical Thinking and Programming ●●●

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

前回の復習Logical Thinking

前回の復習

並び ゴ ズ並び替えアルゴリズムの理解と実装

小値選択法小値選択法

未処理束にあるカードをすべてチェックして,一番小さな数字を持つカードを探していく.

カードがN枚ある場合の検索回数は,

(N-1)+(N-2)+(N-3)+…+1=N×(N-1)/2( ) ( ) ( ) ( )

できなかった人もいると思うので 回答を示しますできなかった人もいると思うので,回答を示します.

Logical Thinking and Programming ●●●

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

フローチャートLogical Thinking

フロ チャ ト

ジ120 ページのフローチャートを見ながら話を聞いて下さい.

小値候補

ソート済束

検索済束検索済束

未処理束

Logical Thinking and Programming ●●●

画面のレイアウト

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

小値選択法の実装1Logical Thinking

小値選択法の実装1

フローチャート ことだまのスクリプトに

未処理束に入っているものの個数を

フロ チャ ト ま クリ近い説明

数を調べる

未処理束のカーソル位置にあるものの数値が 小値候補のカーソル位置にあるものの数値より小さいかどうかを調べる

Logical Thinking and Programming ●●●

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

小値選択法の実装2Logical Thinking

小値選択法の実装2

小さければ:

1.検索済束の 後に 小値候補のカーソル位置にあるものを追加する追加する

2. 小値候補の先頭に未処理束のカーソル位置にあるものを追加する追加する

小値候補より小さいものが見つかったので 小値候補からカードを取り除たので, 小値候補からカ ドを取り除いて,見つかった数の小さなカードを小値候補に置く.

小さくなければ:

検索済束の 後に未処理束の

Logical Thinking and Programming ●●●

検索済束 後 未処 束カーソル位置にあるものを追加する.

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

小値選択法の実装3Logical Thinking

小値選択法の実装3

未処理束に入っているものの個数が0と等しいかどうかを調べる数

入っていればなにもしない入 れ な も な

未処理束にカードがなければ,

1 ソ ト済束の 後に 小値候補の1.ソート済束の 後に 小値候補のカーソル位置にあるものを追加する.

2.検索済束にあるすべてのものを未処理束に追加する理束に追加する.

3. 小値候補の先頭に未処理束のカーソル位置にあるものを追加する.

Logical Thinking and Programming ●●●

カード全体の処理が終わったので,検索済束にあるカードをすべて未処理束に移すなどの,リセット作業をする.

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

小値選択法の実装4Logical Thinking

小値選択法の実装4

1.ソート済束の 後に 小値候補のカーソル位置にあるものを追加する.

束 値 択 を2.未処理束の 小値選択法をポーズにする.

全部の検索が終わったので, 小値候補を移動させて,スクリ全部の検索が終わったので, 小値候補を移動させて,スクリプトの動作を止める.

Logical Thinking and Programming ●●●

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

全部のスクリプトLogical Thinking

全部のスクリプト

Logical Thinking and Programming ●●●

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

フローチャートからのプログラミングLogical Thinking

フロ チャ トからのプログラミング

が大きなフローチャートがあっても,恐れない.

一つ一つの処理が プログラミング(ことだまつ つの処理が,プログラミング(ことだま上)ではどのような意味を持つのかを考えながら フロ チャ トどおりに実装するがら,フローチャートどおりに実装する.

授業後半 も同様授業後半のJava でも同様.

Logical Thinking and Programming ●●●

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

配布資料Logical Thinking

配布資料

第6回 演習チェックシート

白紙1枚白紙1枚フローチャートを記述するため

Logical Thinking and Programming ●●●

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

1時限目の目標Logical Thinking

1時限目の目標

新しい(並び替え)アルゴリズムを分析し,プログラムを書けるようになる

Logical Thinking and Programming ●●●

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

講師によるデモLogical Thinking

講師によるデモ

第6回 > 練習問題10.1

Logical Thinking and Programming ●●●

第6回 > 練習問題10.1

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

1時限目の演習範囲Logical Thinking

1時限目の演習範囲

並び替 を う 練Project10 並び替えをしてみよう<練習問題>

テキストの範囲P.131

指定問題先週 練習問題先週の練習問題

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

練習問題 10.1(P.131)

発展問題練習問題 10.2(P.131)練習問題 10.3(P.131)

Logical Thinking and Programming ●●●

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

「練習問題10 1」について1Logical Thinking

「練習問題10.1」について1挿入法の概要挿入法の概要

未処理束の先頭のカードの数値を調べ,ソート済束の適切な位置にカードを「挿入」することを繰り返すことによっ切な位置にカ ドを 挿入」することを繰り返すことによって,並び替えを行います

ソート済み束にはどんなカードよりも大きな数値のカード(999のカード)が 初から入っています(999のカード)が 初から入っています

授業ページに 実行の様子を録画した デモビデオ授業ペ ジに,実行の様子を録画した,デモビデオがあるので,並び替えの様子を観察してアルゴリズムを理解すること

Logical Thinking and Programming ●●●

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

「練習問題10 1」について2Logical Thinking

「練習問題10.1」について2理解したアルゴリズムを フロ チ トにしてみまし う理解したアルゴリズムを,フローチャートにしてみましょう

どのような命令が使えるか,Squeakの画面を確認しながら書くとよい

小値選択法のフローチャートを参考にすると書きやすい小値選択法のフロ チャ トを参考にすると書きやすい

どんなアルゴリズムでも,「順次」,「分岐」,「繰り返し」を組み合わせて実現できる

Squeakでは 繰り返し構造は一回しか使えないことに注意せよSqueakでは,繰り返し構造は一回しか使えないことに注意せよ

はじめ はじめ は じめ

命令A 何かを調べて

Yes No

何 か を 調 べて(繰り返 す か )

Y e s

N o

命令B命令A 命令B

繰 り返 し た い命 令

Logical Thinking and Programming ●●●

おわりおわり お わ り

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

「練習問題10 1」について3Logical Thinking

「練習問題10.1」について3

トが かどうか ビ をフローチャートが正しいかどうか,レビューをしてみましょう

以下のような場合に,正しく並び替えができるでしょうか?

が う あれば 実装をフローチャートが正しいようであれば,実装をしてみましょう

Logical Thinking and Programming ●●●

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

●●● Logical Thinking and Programming

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

アルゴリズムの発明と構築アルゴリズムの発明と構築

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

2時限目の目標Logical Thinking

2時限目の目標

検索アルゴリズムを理解し,それを応用した簡単なソフトウェア(ミニゲーム)を作成する

Logical Thinking and Programming ●●●

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

講師によるデモ1Logical Thinking

講師によるデモ1

第6回 > Project11 > 11.1第6回 > Project11 > 11 2第6回 > Project11 > 11.2

第 第

Logical Thinking and Programming ●●●

第6回 > Project11 > 11.1 第6回 > Project11 > 11.2

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

講師によるデモ2Logical Thinking

講師によるデモ2

第 練第6回 > Project11 > 練習問題11.1第6回 > Project11 > 練習問題11.2j第6回 > Project11 > 練習問題11.3

第6回 > Project11 > 練習問題11.1 第6回 > Project11 > 練習問題11.2 第6回 > Project11 > 練習問題11.3

Logical Thinking and Programming ●●●

第6回 Project11 練習問題11.1 第6回 Project11 練習問題11.2 第6回 Project11 練習問題11.3

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

練習問題11.1 Logical Thinkingタイピングゲームの仕様

タ を押すと 絵が表 されるスタートを押すと,絵が表示される

単語を入力し,決定を押す

ば が正しく押されていれば,次の問題が表示される

単語が間違えていれば,ボタンを押しても進まない

問題の出題が全て終わると,結果を表示する

Logical Thinking and Programming ●●●

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

練習問題11.2Logical Thinkingクイズゲームの仕様

タ を押すと 問題が表 されるスタートを押すと,問題が表示される

答えのボタンを押す

が問題の出題が全て終わると,結果を表示する

Logical Thinking and Programming ●●●

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

練習問題11.3Logical Thinking記憶君の仕様

質問を 力 質問ボタ を押す質問を入力し,質問ボタンを押す

既に質問の答えが登録されていれば,その答えを表示する

新しい質問なら,解答を入力するためのフォームを表示する

フォームに答えを入力して,教えるボタンを押すと,質問と解答が登録される答が登録される

(使えば使うほどコンピュータが賢くなる)

Logical Thinking and Programming ●●●

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

2時限目の演習範囲Logical Thinking

2時限目の演習範囲

並2種類の並べ替えを完成させよう

Project11 辞書を作ってみようProject11 辞書を作ってみよう

テキストの範囲

P 133 P 146P.133~P.146指定問題

練習問題11.1~11.3(P.144~146)から1問選択

発展問題

なし

Logical Thinking and Programming ●●●

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

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

指定問題の取り組み方

考 書テキスト P.133~P143を参考に,絵辞書を完成させる

練習問題11.1~11.3のうち,好きな1問を選び 絵辞書を改造して完成させるび,絵辞書を改造して完成させる

Logical Thinking and Programming ●●●

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

中間課題Logical Thinking

中間課題

生活の中にある何らかのシステムのフローチャートを作る.

例)バスに乗る

例2)掛け算を筆算で解く例2)掛け算を筆算で解く

どのようなシステムに関するフローチャートなのかを文章で記述してください.

Logical Thinking and Programming ●●●

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

中間課題Logical Thinking

中間課題

期限:2009 / 11 / 16, 23:59 まで

提出形態:doc docx または pdf 枚数制限提出形態:doc, docx, または pdf.枚数制限はなし.

提出方法 授業ウ ブ 第6回に設置される提提出方法:授業ウェブ 第6回に設置される提出フォームより.

Logical Thinking and Programming ●●●