Transcript t-2009-05
専門教科「情報」(2)
アルゴリズム
アルゴリズム
基礎中の基礎
論理的な考え方を養う
アルゴリズム(1)
目標
データ構造と代表的なアルゴリズムに関す
る知識と技術を習得させ,実際に活用する
能力と態度を育てる
データ構造(data structure)
データの集まりの関係
アルゴリズム(algorithm)
問題を解くための手順
アルゴリズム(2)
1.
2.
3.
4.
5.
内容
数値計算の基礎
データの型とデータの構造
整列
探索
データベースの概要
アルゴリズム(3)
内容
問題に応じてアルゴリズムを選択
単に解答が得られれば良い
ものではない
効率と分かり易さ
効率 100年かかって意味があるか?
分かり易さ 正しいかどうか判断できるか?
アルゴリズム(4)
数値計算の基礎
基本的なアルゴリズム
構造化定理(構造化プログラミング)
アルゴリズム記述言語
順次・選択・繰返しの組合せ
数値計算
誤差があることを理解させる
0.999999
10進数⇔2進数
有限桁
構造化定理(1)
順次
処理A,処理Bと順番に実行する
x = 1; y = 2;
C言語みたいなもので例示
選択
条件に より,処理Aまたは処理Bを実行する
if (a > b) max =a; else max =b;
繰返しには、いろいろなパターンがある
繰返し
ある条件が成立する間,処理Aを繰り返し実行する
while (a > b) { c += a; b++; }
構造化定理(2)
プログラムは
順次,選択,繰返し
の組合せで構成される
流 れ 図(順 次)
x=1
y=2
流 れ 図(選 択)
a>b
no
yes
max = a
max = b
流 れ 図(繰 返 し)
a>b
yes
c += a
b++
no
繰返しには,
他の記法
もある
流 れ 図(繰 返 し) その2
2008秋
基本情報
技術者試験
午前問題
アルゴリズムの記述言語(1)
いろいろある
流れ図
古くから使われている(いた)
日本語(自然言語)でもかまわない
あいまいな点があると困る
他人に伝える手段でもある
アルゴリズムの記述言語(2)
擬似言語
情報処理技術者試験(次のスライド以下)
大学入試センター試験
プログラム言語
CでもJavaでも
分かりやすい記述
アルゴリズムの記述言語(3)
アルゴリズムの記述言語(4)
アルゴリズムの記述言語(5)
アルゴリズム(5)
データ型とデータ構造
基本データ型
数値型,文字型,論理型
基本データ構造
スカラー,配列,レコード
データ構造とアルゴリズム
リスト,スタック,キュー,木構造
アルゴリズムと結びつける(処理方法)
基本データ型
数値型
1 2 3 0 -123
小文字の a と大文字の A は
別のデータ
3.14
文字型
a b c A B C ( =
漢 字
これらは数字であって,
1 2 3
数値ではない
論理型
true(真) false(偽)
基本データ構造
スカラー
単独のデータ
配列
同じ型のデータの集まり
個々のデータは,何番目ということで指定
レコード(構造体)
別の型のデータの集まり
二分探索法
探索
1 3 4 6 7 8 10 の順に並んでいる
アルゴリズム(7)
7があるかどうか?
データを探す
複数の方法
二分探索法を適用するための前提条件
中央の値はいくつか?
6 線形探索法
線形探索法では不要
7より小さいから,あれば後半にある
前から順番に探す
二分探索法
後半(7
8 10)の中央の値は?
8
7より大きいから,あれば 7 8 10 の前半にある
あった!
二分探索法
2007秋
基本情報
技術者試験
午前問題
流れ図
二分探索法
lo ← 1
hi ← n
■ lo < hi
k ← (lo+hi)/2
▲ A(k) < x
lo ← k+1
hi ← k
▼
■
擬似言語
▲ A(lo) = x
lo 番目にある
ない
▼
(文献11)
二分探索法
lo ← 1
hi ← n
■ lo < hi
k ← (lo+hi)/2
▲ A(k) < x
lo ← k+1
hi ← k
▼
■
擬似言語
▲ A(lo) = x
lo 番目にある
ない
▼
(文献11)
アルゴリズム(8)データベースの概要
ファイルとデータベース
アクセス方法と編成方法
汎用機の時代?
データベースの仕組み
リレーショナルデータベースの基礎
データベースの操作と設計
アルゴリズム(9)
アルゴリズムの選択
効率
データ構造やデータの性質
線形探索法と二分探索法
普通教科でも話題にできる
演 習
アルゴリズムとプログラム開発
記 述 例 (1)
問題 数値データがいくつかある。その平均値を
求めるアルゴリズムを記述しなさい。
第1段階
問題文を読んで,理解できる“機械”ならば,
問題文が解答
記 述 例 (2)
第2段階
データの和sumを求める
データの個数nを求める
平均averageはsum/n
これを理解できる“機械”なら,終わり
記 述 例 (3)
第3段階
sum を 0 とする
n を 0 とする
データがある間,次のことを繰り返す
sum にデータを足す
n を1増やす
average を sum/n とする
記 述 例 (4)
擬似言語
データがひとつもないときは,
どうなるのか?
・sum ← 0
・n ← 0
データがある
・データをdataに読み込む
・sum ← sum + data
・n ← n + 1
・average ← sum/n
記 述 例 (5)
・average ← sum/n
▲n>0
・average ← sum/n
・averageの値を表示
・誤りであることの表示
▼
演 習 問 題 (1)
数値が書かれているカードが何枚かある
最大の数値を見つけるアルゴリズムを考えなさ
い
手作業で行うときのことを考える
あいまいな点は?
演 習 問 題 (2)
数値が書かれているカードが何枚かある
数値の大きい順にカードを並べ替えるアルゴリ
ズムを考えなさい
演 習 問 題 (3)
前回取り上げたモンテカルロ法で円周率を求め
るアルゴリズムを擬似言語で記述しなさい。