専門教科「情報」(2)

専門教科「情報」(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)

前回取り上げたモンテカルロ法で円周率を求め
るアルゴリズムを擬似言語で記述しなさい。