SlideShare a Scribd company logo
1 of 21
Download to read offline
基礎情報処理演習
      PAD その1

        山本 和英
    長岡技術科学大学 電気系


1               長岡技術科学大学 電気系 基礎情報処理演習
アルゴリズム
    アルゴリズム(algorithm)とは、作業手順のことである。

    アルゴリズムを計算機が理解できるように表現したものが
    プログラム。



    アルゴリズムの記述方法

    ・ フローチャート
    ・ PAD
    ・ NSチャート

    など、たくさんある。

2                              長岡技術科学大学 電気系 基礎情報処理演習
フローチャートの例




3           長岡技術科学大学 電気系 基礎情報処理演習
PADの例




4       長岡技術科学大学 電気系 基礎情報処理演習
NSチャートの例




5          長岡技術科学大学 電気系 基礎情報処理演習
一般にはフローチャートが
最も有名であるが、
分かりにくいことも多い。

そこで、本演習では
PADを使って説明する。
6              長岡技術科学大学 電気系 基礎情報処理演習
PAD
    PAD (Problem Analysis Diagram) とは、アルゴリズムを図に表現した
    ものである。 以下のような記号を使う。

            入力           分岐



            処理           繰り返し



            出力           まとめ処理




         下に続くタイプ       右に伸びるタイプ
7                                     長岡技術科学大学 電気系 基礎情報処理演習
図1                                      7
                                        5
                                                 8




              処理が進んでいく
                         1              6
                                                 9
                         2             10

                          3       4

                         17            11        13

                         18      16    12        14

                                                 15
PADの特徴

アルゴリズムの全体像を
つかみやすい。                       処理が細かくなってゆく
右に行くほど細かい処理になる
8                                     長岡技術科学大学 電気系 基礎情報処理演習
これからPADの説明ですが
    その前に...



9             長岡技術科学大学 電気系 基礎情報処理演習
変数
 ●
   変数とは、数字を入れておく「箱」のことである。
 ●
   変数には名前をつける。これを変数名と呼ぶ。
 ●
   変数は、必要ならばいくつ作ってもよい。

     変数のイメージ         箱
                     (数字を
                     入れる)

           変数名




10                           長岡技術科学大学 電気系 基礎情報処理演習
変数への代入
変数の中に数字を入れることを代入と呼ぶ。
例えば、a という変数に 3 を代入する時は

     a←3
と書く(3 → a とは決して書かないので注意)。




11                          長岡技術科学大学 電気系 基礎情報処理演習
値の追加
すでに入っている値に追加することができる。
例えば、

     a←a+2
とすると、現在入っている a の値に 2 が追加される。




12                         長岡技術科学大学 電気系 基礎情報処理演習
変数の初期化
変数は最初、空かどうかは分からない。
(最初に 0 となっているとは限らない)

変数を空にするには、その変数を使う前に 0 を代入する必要がある。
これを変数の初期化という。

     p←0
初期化も代入の一種である。




13                       長岡技術科学大学 電気系 基礎情報処理演習
変数が分かったところで
     今度こそPADの説明です。



14              長岡技術科学大学 電気系 基礎情報処理演習
処理   普通の処理。



     入力   キーボード入力。
          どの変数に入れるかを記入する。



     出力   画面出力。
          何を出力するかを記入する。


     箱の大きさ、線の長さは自由でよい。


15                          長岡技術科学大学 電気系 基礎情報処理演習
例 : 二つの数の和を計算するアルゴリズム


         a, b      二つの数を入力して、a と b に代入

      wa ← a + b   和を計算して wa に代入する

         wa        wa を画面に出力する


         図2



16                                   長岡技術科学大学 電気系 基礎情報処理演習
分岐




     ある条件によって別の処理をさせたい時に使う。
     条件分岐や枝分かれとも言う。

     ある条件が Yes の場合と No の場合の処理を書くが
     必ずどちらかの処理しか実行されない。



17                           長岡技術科学大学 電気系 基礎情報処理演習
書き方
                          Yesの場合
                          (条件が正しい場合)の処理


                    “a が大きい"
          a>b

                “a が大きくはない"


     条件を書く。               Noの場合
     aよりbが小さい             (条件が正しくない場合)
     などと言葉で書いてもよい         の処理
     (曖昧でなければ)
18                             長岡技術科学大学 電気系 基礎情報処理演習
注意: 

分岐は必ず2つに分かれるとは限らない。
Yes だけの場合(図3)は Noの部分に何も書かない。


                              もしxが正の数で
                  “x と y は    yが負の数ならば
                   異符号"
        x>0                   "xとyは異符号"と出力
       かつ y < 0


                             そうでなければ何もしない
          図3



19                                   長岡技術科学大学 電気系 基礎情報処理演習
さらに、Noだけの場合(図4)もある。


                      もし x が0より大きい(正の数)ならば
                      何もしない
         x>0
                    x ←x * (-1)
                                  そうでなければ
                                  (= x が正の数でなければ)
                                  (= x が0か負の数ならば)
                                  x を -1 倍する。
          x
               xを出力する

               図4


20                                      長岡技術科学大学 電気系 基礎情報処理演習
たくさん分岐する場合もある(多重分岐)。

例 : 郵便料金の計算


     w < 20         “110円"   Wが20未満なら"110円"、

     w < 50         “200円"   Wが50未満なら"200円"、

     w < 100        “270円"
                             Wが100未満なら"270円"、
     それ以外
                    “540円"
                             それ以外なら"540円"と出力

               図5
21                                    長岡技術科学大学 電気系 基礎情報処理演習

More Related Content

What's hot

AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Inc.
 
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Inc.
 
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Inc.
 
Code Formula 予選B 解説
Code Formula 予選B 解説Code Formula 予選B 解説
Code Formula 予選B 解説AtCoder Inc.
 
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Nagi Teramo
 
実践Scalaでペアノの公理
実践Scalaでペアノの公理実践Scalaでペアノの公理
実践Scalaでペアノの公理Yasuki Okumura
 
AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説AtCoder Inc.
 
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説AtCoder Inc.
 
これがわかるとshapelessのコードも読めるかもしれない
これがわかるとshapelessのコードも読めるかもしれないこれがわかるとshapelessのコードも読めるかもしれない
これがわかるとshapelessのコードも読めるかもしれないYasuki Okumura
 
K2PC Div1 E 暗号化
K2PC Div1 E 暗号化K2PC Div1 E 暗号化
K2PC Div1 E 暗号化Kazuma Mikami
 
VBAで数値計算 09 掃き出し法
VBAで数値計算 09 掃き出し法VBAで数値計算 09 掃き出し法
VBAで数値計算 09 掃き出し法Katsuhiro Morishita
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Inc.
 
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Inc.
 
ナンプレ解析ツール
ナンプレ解析ツールナンプレ解析ツール
ナンプレ解析ツールkstmshinshu
 
kagamicomput201708
kagamicomput201708kagamicomput201708
kagamicomput201708swkagami
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Inc.
 
Ikeph 2-20140730
Ikeph 2-20140730Ikeph 2-20140730
Ikeph 2-20140730GM3D
 

What's hot (18)

AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
 
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
 
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
 
Code Formula 予選B 解説
Code Formula 予選B 解説Code Formula 予選B 解説
Code Formula 予選B 解説
 
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法
 
実践Scalaでペアノの公理
実践Scalaでペアノの公理実践Scalaでペアノの公理
実践Scalaでペアノの公理
 
AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説
 
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
 
これがわかるとshapelessのコードも読めるかもしれない
これがわかるとshapelessのコードも読めるかもしれないこれがわかるとshapelessのコードも読めるかもしれない
これがわかるとshapelessのコードも読めるかもしれない
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
K2PC Div1 E 暗号化
K2PC Div1 E 暗号化K2PC Div1 E 暗号化
K2PC Div1 E 暗号化
 
VBAで数値計算 09 掃き出し法
VBAで数値計算 09 掃き出し法VBAで数値計算 09 掃き出し法
VBAで数値計算 09 掃き出し法
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
 
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
 
ナンプレ解析ツール
ナンプレ解析ツールナンプレ解析ツール
ナンプレ解析ツール
 
kagamicomput201708
kagamicomput201708kagamicomput201708
kagamicomput201708
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046
 
Ikeph 2-20140730
Ikeph 2-20140730Ikeph 2-20140730
Ikeph 2-20140730
 

Similar to Pad入門その1

Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料Toshio Ehara
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Ken Morishita
 
スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元Shogo Muramatsu
 
kagami_comput2015_7
kagami_comput2015_7kagami_comput2015_7
kagami_comput2015_7swkagami
 
20170422 数学カフェ Part2
20170422 数学カフェ Part220170422 数学カフェ Part2
20170422 数学カフェ Part2Kenta Oono
 
How to study stat
How to study statHow to study stat
How to study statAk Ok
 
第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)Wataru Shito
 

Similar to Pad入門その1 (10)

Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
 
スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元
 
kagami_comput2015_7
kagami_comput2015_7kagami_comput2015_7
kagami_comput2015_7
 
[xDNCL] 配布資料
[xDNCL] 配布資料[xDNCL] 配布資料
[xDNCL] 配布資料
 
20170422 数学カフェ Part2
20170422 数学カフェ Part220170422 数学カフェ Part2
20170422 数学カフェ Part2
 
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
 
How to study stat
How to study statHow to study stat
How to study stat
 
講座C入門
講座C入門講座C入門
講座C入門
 
第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)
 

More from 長岡技術科学大学 自然言語処理研究室

More from 長岡技術科学大学 自然言語処理研究室 (20)

小学生の読解支援に向けた複数の換言知識を併用した語彙平易化と評価
小学生の読解支援に向けた複数の換言知識を併用した語彙平易化と評価小学生の読解支援に向けた複数の換言知識を併用した語彙平易化と評価
小学生の読解支援に向けた複数の換言知識を併用した語彙平易化と評価
 
小学生の読解支援に向けた語釈文から語彙的換言を選択する手法
小学生の読解支援に向けた語釈文から語彙的換言を選択する手法小学生の読解支援に向けた語釈文から語彙的換言を選択する手法
小学生の読解支援に向けた語釈文から語彙的換言を選択する手法
 
Selecting Proper Lexical Paraphrase for Children
Selecting Proper Lexical Paraphrase for ChildrenSelecting Proper Lexical Paraphrase for Children
Selecting Proper Lexical Paraphrase for Children
 
Automatic Selection of Predicates for Common Sense Knowledge Expression
Automatic Selection of Predicates for Common Sense Knowledge ExpressionAutomatic Selection of Predicates for Common Sense Knowledge Expression
Automatic Selection of Predicates for Common Sense Knowledge Expression
 
用言等換言辞書を用いた換言結果の考察
用言等換言辞書を用いた換言結果の考察用言等換言辞書を用いた換言結果の考察
用言等換言辞書を用いた換言結果の考察
 
用言等換言辞書の構築
用言等換言辞書の構築用言等換言辞書の構築
用言等換言辞書の構築
 
質問意図によるQAサイト質問文の自動分類
質問意図によるQAサイト質問文の自動分類質問意図によるQAサイト質問文の自動分類
質問意図によるQAサイト質問文の自動分類
 
役所からの公的文書に対する「やさしい日本語」への変換システムの構築
役所からの公的文書に対する「やさしい日本語」への変換システムの構築役所からの公的文書に対する「やさしい日本語」への変換システムの構築
役所からの公的文書に対する「やさしい日本語」への変換システムの構築
 
対訳コーパスから生成したワードグラフによる部分的機械翻訳
対訳コーパスから生成したワードグラフによる部分的機械翻訳対訳コーパスから生成したワードグラフによる部分的機械翻訳
対訳コーパスから生成したワードグラフによる部分的機械翻訳
 
用言等換言辞書を人手で作りました
用言等換言辞書を人手で作りました用言等換言辞書を人手で作りました
用言等換言辞書を人手で作りました
 
文字列の出現頻度情報を用いた分かち書き単位の自動取得
文字列の出現頻度情報を用いた分かち書き単位の自動取得文字列の出現頻度情報を用いた分かち書き単位の自動取得
文字列の出現頻度情報を用いた分かち書き単位の自動取得
 
「やさしい日本語」変換システムの試作
「やさしい日本語」変換システムの試作「やさしい日本語」変換システムの試作
「やさしい日本語」変換システムの試作
 
常識表現となり得る用言の自動選定の検討
常識表現となり得る用言の自動選定の検討常識表現となり得る用言の自動選定の検討
常識表現となり得る用言の自動選定の検討
 
動詞意味類型の曖昧性解消に向けた格フレーム情報との関連調査
動詞意味類型の曖昧性解消に向けた格フレーム情報との関連調査動詞意味類型の曖昧性解消に向けた格フレーム情報との関連調査
動詞意味類型の曖昧性解消に向けた格フレーム情報との関連調査
 
二格深層格の定量的分析
二格深層格の定量的分析二格深層格の定量的分析
二格深層格の定量的分析
 
大規模常識知識ベース構築のための常識表現の自動獲得
大規模常識知識ベース構築のための常識表現の自動獲得大規模常識知識ベース構築のための常識表現の自動獲得
大規模常識知識ベース構築のための常識表現の自動獲得
 
文脈の多様性に基づく名詞換言の提案
文脈の多様性に基づく名詞換言の提案文脈の多様性に基づく名詞換言の提案
文脈の多様性に基づく名詞換言の提案
 
保険関連文書を対象とした文章校正支援のための変換誤り検出
保険関連文書を対象とした文章校正支援のための変換誤り検出保険関連文書を対象とした文章校正支援のための変換誤り検出
保険関連文書を対象とした文章校正支援のための変換誤り検出
 
Developing User-friendly and Customizable Text Analyzer
Developing User-friendly and Customizable Text AnalyzerDeveloping User-friendly and Customizable Text Analyzer
Developing User-friendly and Customizable Text Analyzer
 
普通名詞換言辞書の構築
普通名詞換言辞書の構築普通名詞換言辞書の構築
普通名詞換言辞書の構築
 

Pad入門その1