アルゴリズム資料

Download Report

Transcript アルゴリズム資料

平成18年度 新人教育
コンピュータ アルゴリズム習得
平成18年5月
システム開発統括部
1.Information Technology
• Information Technologyとは?
– Information(情報)
• 氏名、所属会社、電話番号、支給額・・・等
この世界には、色々な情報が満ちあふれている
個々の情報のみでは、有益ではない。
Copyright (C) 2006 Esperant System Co., Ltd.
2
1. Information Technology
– Technology(技術)
• 個々の情報を組み合わせて有益な情報に
再編する
• 有益な情報を正しく・素早く提供する
• 情報を安全に管理・保管する
整理・整頓
Copyright (C) 2006 Esperant System Co., Ltd.
3
2.コンピュータ内部の情報とは
• Field:意味を持つ最小単位
–
–
–
–
–
氏名、住所、電話番号、支給額など
各Fieldには「文字列」、「数値」等の属性をもっている
Fieldの構成最小単位は、「Byte」である
Byteの構成最小単位は、「Bit」である
「1Byte = 8Bit」である
氏 名
電 話
文字列
Copyright (C) 2006 Esperant System Co., Ltd.
住 所
支給額
数値
4
2.コンピュータ内部の情報とは
• Bit:電気・磁気で表現できる情報
– 内部表現は、「1」または「0」で表現される
• Byte:人間が理解できる最小単位
– 1Byteもしくは2Byteで人間が理解できる情報として
定義する。(JIS、SJIS、EUC、EBCDIC 等)
– 数値をBitで表現する(2進数・8進数・16進数)
• 数ByteでFieldを構成する
– 英字25文字であれば25Byte必要
Copyright (C) 2006 Esperant System Co., Ltd.
5
2.コンピュータ内部の情報とは
• 文字コードに関して
– Hex:0x41は、JISコードでは、「A」と定義され
ている
01000001
JISコード
1Byte(Hex:0x41)
“A”は、いつも“0x41”??
各種コード
Copyright (C) 2006 Esperant System Co., Ltd.
JIS : 0x41
EBCDIC:0xC1
EUC: 0x41
6
2.コンピュータ内部の情報とは
• Record:Fieldを意図を持ってまとめた情報
– 社員名簿、勤務情報など
社員名簿
社員コード
氏名
所属部署コード
基本給
残業給
文字列
文字列
文字列
数値
数値
5Byte
25Byte
5Byte
4Byte
2Byte
社員コード
勤務情報
年月 残業時間 有休取得
文字列
文字列
数値
数値
5Byte
6Byte
2Byte
1Byte
Copyright (C) 2006 Esperant System Co., Ltd.
7
2.コンピュータ内部の情報とは
• Table,Dataset:複数のRecordを保管する
Eさん
Dさん
Cさん
Bさん
Aさん
テーブル:社員名簿
Eさん残業
Dさん残業
Cさん残業
Bさん残業
Aさん残業
テーブル:勤務情報
• Database:複数のTableを保管する
Eさん
Dさん
Cさん
Bさん
Aさん
テーブル:社員名簿
Eさん残業
Dさん残業
Cさん残業
Bさん残業
Aさん残業
テーブル:勤務情報
Database:EssDB
Copyright (C) 2006 Esperant System Co., Ltd.
8
3.情報を再編・加工(処理)する
• 個別の情報を集計する
– 所属部署別の給与合計を計算する
• 並べ替えを行なう
– 社員コードで昇順に並びかえる
• 個別の情報を組み合わせる
– 社員名簿と勤務情報で給与を計算する
• その他
– 情報を置き換える
Copyright (C) 2006 Esperant System Co., Ltd.
9
3.情報を再編・加工(処理)する
• 処理を行なうために
– プログラムを作成する
• プログラムとは
– コンピュータが理解可能な言葉で処理手続を記述したもの
– 「変数」を使用できる
• 数学:X=X+1・・・ありえない
• コンピュータ:X=X+1・・・ありえる
– 条件分岐が行える(流れを制御できる)
• 基本的な流れは、「上流」から「下流」へ
• 「下流」から「上流」へ流れる事も可能
• 条件により流れを制御する
Copyright (C) 2006 Esperant System Co., Ltd.
10
3.情報を再編・加工(処理)する
•
処理手続(Procedure)
–
初期化処理
1.
–
主処理
1.
2.
3.
4.
–
情報を読込む準備処理を行なう
情報を読み込む(Read)
人間だと
業務処理を行なう(Process)
帳票・情報の出力を行なう(Write)
1.~3.を情報が無くなる(EOF)まで繰り返す(Loop)
終了処理
1.
使用した情報の後処理を行なう
Copyright (C) 2006 Esperant System Co., Ltd.
11
3.情報を再編・加工(処理)する
•
処理手続の図形表記(フローチャート)
記 号
名 称
流れ線
動き
処理の順序を表す。順序を明確にする
ために、矢印を付けることもある。
端子
処理の開始・終了を表す。
処理
判断などの処理以外の処理を表す
準備
変数の宣言や初期化の値設定などの
処理を表す
Copyright (C) 2006 Esperant System Co., Ltd.
12
3.情報を再編・加工(処理)する
•
処理手続の図形表記(フローチャート)
記 号
名 称
動き
入出力
データの入出力を表す。
判断
条件により、流れが2つ以上に分岐する処
理を表す。
ループ端
繰り返しの開始と終了を表す。
終端は逆さに表記する。
書類
プリンタなどへのデータ出力を表す。
定義済み処理
別に用意した処理を利用することを表す。
Copyright (C) 2006 Esperant System Co., Ltd.
13
3.情報を再編・加工(処理)する
•
フローチャート(例)
主処理
S
Read
EOF=False
初期化処理
Process
主処理
詳細化
Write
終了処理
Read
E
Copyright (C) 2006 Esperant System Co., Ltd.
Loop
14
4.5つの業務処理パターン
• (1)コントロール・ブレーク
– 管理情報(KEY)が異なった(BREAK)時に処理
を行なう
• (2)大中小計
– コントロール・ブレーク時にKEY別に処理を行なう
• (3)インナーソート
– KEYを基準に昇順・降順に並びかえる
Copyright (C) 2006 Esperant System Co., Ltd.
15
4.5つの業務処理パターン
• (4)テーブル・サーチ
– KEYが同じ場合に値を置き換える
• (5)マッチング
– KEYを比較し、比較結果に従い処理を行なう
• 同じ場合の処理
• 大きい場合の処理
• 小さい場合の処理
Copyright (C) 2006 Esperant System Co., Ltd.
16
5.コントロール・ブレーク 大中小計
• 管理情報(KEY)が異なった(BREAK)時に処理を
行なう
– KEYが同じ ⇒ 同じ分類 ⇒
同じ分類の“詳細を印刷”
– KEYが異なる ⇒ 分類が異なる ⇒
今まで印刷した分類で“分類別処理”を行う。
• コントロール・ブレーク時にKEY別に処理を行なう
– 分類別処理 ⇒ 同じ分類で合計する ⇒
“大中小計”を行う
Copyright (C) 2006 Esperant System Co., Ltd.
17
5.コントロール・ブレーク 大中小計
• イメージ(帳票)
PAGE 1
入金予定一覧表
入金日
取引先名称
銀行名
金額
金額(税込)
非課税
合計金額
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2006/ 4/15
株式会社エー
みずほ銀行
\12,500,000
\13,125,000
0
\13,125,000
株式会社ビー
UFJ銀行
\1,000,000
\1,050,000
\2,500
\1,052,500
株式会社シー
UFJ銀行
\2,000,000
\2,100,000
0
\2,100,000
2006/ 4/15 入金予定
2006/ 4/20
\15,500,000
\16,275,000
\2,500
\16,177,500
\700,000
\735,000
0
\735,000
2006/ 4/20 入金予定
\700,000
\735,000
0
\735,000
4月入金合計
\16,200,000
\17,005,000
\2,500
\16912500
有限会社ディー
入金日がKEY(分類)
りそな銀行
Copyright (C) 2006 Esperant System Co., Ltd.
同じ分類
小計を行う
分類が異なる
大計を行う
18
5.コントロール・ブレーク 大中小計
– フローチャート(概要)
Read
SKEY,KEYの設定
EOF=False
詳細処理
KEY=SKEY
詳細処理
詳細Write
分類別合計
分類別Write
Read
SKEYの設定
KEYの設定
Loop
Copyright (C) 2006 Esperant System Co., Ltd.
Loop
19
6.テーブル・サーチ
• KEYが同じ場合に値を置き換える
– 配列(テーブル)にn個Stackする。
– 配列[1]から配列[n] までKEYを比較する。
• 配列[現] =比較対象KEY
– HITした値(データ)で置き換える
– Loopを止める
• 配列[現] ≠比較対象KEY ⇒ 次の配列へ
Copyright (C) 2006 Esperant System Co., Ltd.
20
6.テーブル・サーチ
• イメージ
変数:X
添字
1
2
3
4
5
KEY
001
12
002
12
003
004
005
UFJ銀行
三井住友
銀行
新生銀行
データ
みずほ銀行 りそな銀行
001 002
≠ 003
003
Loopを中止
≠ 003
⇒未処理
= ⇒未処理
003 ⇒データ設定
変数:Y
KEY
データ
003
UFJ銀行
Copyright (C) 2006 Esperant System Co., Ltd.
21
6.テーブル・サーチ
• フローチャート(概要)
Stack処理
Read
EOF=False
I=I+1
X[i]に保存
サーチ処理
For I = 1 To n
X[I] = Y
No
Yes
YにX[I]を設定
Read
Iにn+1を設定
Loop
サーチ処理
Copyright (C) 2006 Esperant System Co., Ltd.
22
7.インナーソート
• KEYを基準に昇順・降順に並びかえる
– 配列にn個Stackする。
– 配列[1]から配列[n-1]と配列[2]から配列[n]ま
でを比較する。
• 配列[現]>配列[次]
⇒ 配列[現]と配列[次]を入替える ⇒ 昇順
• 配列[現]<配列[次]
⇒ 配列[現]と配列[次]を入替える ⇒ 降順
Copyright (C) 2006 Esperant System Co., Ltd.
23
7.インナーソート
• イメージ
変数:X
添字
1
2
3
4
5
KEY
10
11
12
11
12
20
12
12
35
20
10
20
35
12
11
12
データ
A
B
11
C
B
11
D
C
D
E
A
D
B
C
E
11
11と35を比較
11と12を比較
11と20を比較
11と10を比較
12と20を比較
12と35を比較
12と11を比較
20と35を比較
20と12を比較
35と20を比較
⇒ 未処理
11と10を入れ替える
12と11を入れ替える
20と12を入れ替える
35と20を入れ替える
昇順ソート完了
Copyright (C) 2006 Esperant System Co., Ltd.
24
7.インナーソート
• フローチャート(概要)
ソート処理
Stack処理
Read
EOF=False
I=I+1
X[i]に保存
Read
For I = 1 To n-1
For J = I+1 To n
X[i] > X[j]
No
Yes
X[i]を退避
X[i]にX[j]を設定
Loop
X[j]に復元
ソート処理
Copyright (C) 2006 Esperant System Co., Ltd.
25
8.マッチング
• KEYを比較し処理を分岐する
– KEY順にソートされている必要がある
– 1(MST):1(TRAN)のマッチングを対象とする
– 両ファイルが共にEOFになるまで処理を繰り
返す
Copyright (C) 2006 Esperant System Co., Ltd.
26
8.マッチング
– KEYを比較し、比較結果に従い処理を行なう
• 同じ場合(MST=TRAN)の処理
– 処理対象である(マッチした)
» マッチ処理を行う
– MST、TRAN共に次レコードを読み込む
• 大きい場合(MST>TRAN)の処理
– MSTにレコードが存在ない(アンマッチ)
» アンマッチ処理があるのならば処理を行う
– TRANの次レコードを読み込む
• 小さい場合(MST<TRAN)の処理
– TRANにレコードが存在しない(アンマッチ)
» アンマッチ処理があるのならば処理を行う
– MSTの次レコードを読み込む
Copyright (C) 2006 Esperant System Co., Ltd.
27
8.マッチング
• イメージ(新MST作成)
MST
KEY データ
001 M1
002 M2
003 M3
005 M5
MST EOF
TRAN
KEY データ
MST
Read
マッチ:T1で出力
001 T1
アンマッチ:M2で出力
アンマッチ:T4で出力
MSTとTRANを
003 T3
マッチ:T3で出力
MST
Read
TRAN
Read
004 T4
Read
MSTとTRANを
TRAN EOF
アンマッチ:M5で出力
Read
新MST
KEY データ
001 T1
002 M2
003 T3
004 T4
005 M5
Copyright (C) 2006 Esperant System Co., Ltd.
28
8.マッチング
• フローチャート(概要)
主処理
M.Read
T.Read
M.EOF=False Or T.EOF = False
<
M.KEYとT.KEYの比較
>
=
MST処理
合致処理
Loop
Copyright (C) 2006 Esperant System Co., Ltd.
TRAN処理
M:MST
T:TRAN
29
8.マッチング
• フローチャート(概要)
MST処理
合致処理
TRAN処理
MSTを基に
新MST出力
MSTを基に
値をTRANで書換
新MST出力
TRANを基に
新MST出力
M.Read
M.Read
T.Read
T.Read
M:MST
T:TRAN
Copyright (C) 2006 Esperant System Co., Ltd.
30
平成18年度 新人教育
コンピュータ アルゴリズム習得