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年度 新人教育 コンピュータ アルゴリズム習得