• 検索結果がありません。

sot05 最近の更新履歴 城西国際大学_経営情報学部_組織情報論2017

N/A
N/A
Protected

Academic year: 2017

シェア "sot05 最近の更新履歴 城西国際大学_経営情報学部_組織情報論2017"

Copied!
19
0
0

読み込み中.... (全文を見る)

全文

(1)

組織情報論

第5回 アルゴリズムとデータ構造

フローチャートとプログラムの基本

1

講師 佐枝三郎

https://sites.google.com/site/jiusaedasoshikiron2017/

フローチャート

2

(2)

フローチャートの基本

• フローチャートの基本

– フローチャートの記号は,日本では日本工業規格(JIS)で決められて いる

– フローチャートで用いられる主な記号は後述する

• フローチャートは,プログラムのソースを作成する前の段階,

すなわち,設計の段階で作成する。

• フローチャートを作成する理由としては,以下のようなものが

あげられる。

– 図で示されているので,文章だけよりもわかりやすく、プログラムにし やすい

– プログラムを改良する際に効率よくできる

– 1つのプログラムを複数人で作るときに手分けしやすい

3

フローチャートの簡単な例

目が覚める 開始

着替え・洗顔

傘を持つ 雨か

大学に出かける

終了

「 朝、やること 」

朝食を食べる

NO

YES

4

(3)

フローチャートの記号

5

フローチャートの作り方

• フローチャートを作成する際の基本手順は、次の通りで

ある。

– フローの最初と最後を明記する。

– 処理の流れは原則として、上から下へ、左から右とする。

– このルールに逆行する際は、矢印をつける。(ただしすべて

の処理の流れに矢印をつけることもある。)

– 線が交差しないようにする。

• フローチャート作成の注意点

– 入力の線や矢印は上から入れ、横からは入れない。

– 分岐のときはYes/Noを正しく書く。

– 分岐の条件に記述する内容は、正しく理解しやすいものと

する。

– 線や矢印が箱から離れないようにする。

6

(4)

処理の構造 ①順次構造

順次構造

・順番に処理を行う

・前の処理の結果を後ろの処理

で使う場合が多い

・例

①入力データを読み込む

②最初の計算をする

③2番目の計算をする

④計算結果を印刷する

処理1

処理2

処理3

処理4 開始

終了

7

処理の構造 ②選択構造(分岐構造)

選択構造

・ある条件によって、実行する処

理を変更する

・事前の処理で計算された結果

で後ろの処理を変更する

・例

①ある計算をする

②計算結果がプラスなら

処理2を実行する

③計算結果がマイナスなら

処理3を実行する

④計算結果を印刷する

処理3 処理2

条件 Yes

No 開始

終了 処理1

8

処理4

(5)

処理の構造 ③多岐選択構造(case)

多岐選択構造

・ある条件によって、実行する

処理を変更する

・条件の評価結果が2通りでは

なく、3通り以上の場合

・条件を評価した結果、行う処

理は必ずしも、後ろの処理で

なく、前の処理でもよい

処理2 条件1

条件

処理3 処理4 条件2

条件3 開始

終了 処理1

9

処理の構造 ④繰返し構造(while)

繰り返し構造(while)

・条件を評価した結果、前の処

理に戻る場合

・ある条件が成立する(正しい)

間はいつまでも前に戻る

(ぐるぐる回る)

・従って処理2で条件が成立し

ないような計算が行われる

必要がある

・処理の前に(最初に)条件を

評価する

処理2 .. 処理1

条件

Yes No 開始

終了 処理3

10

(6)

処理の構造 ④繰返し構造(until)

繰り返し構造(until)

・条件を評価した結果、前の処

理に戻る場合

・ある条件が成立しない(誤り)

間はいつまでも前に戻る

(ぐるぐる回る)

・従って処理2で条件が成立す

るような計算が行われる必要

がある

・処理の後に(最後)条件を

評価する

処理2 .. 処理1

条件 Yes No 開始

終了 処理3

11

プログラムの基礎

12

(7)

プログラムとは

• プログラムとは、コンピュータを動かすための、基本的な指示方法

である

– 一般に「プログラミング言語」と呼ばれる、コンピュータのための言語 を使用してコンピュータを操作する

• 「プログラミング言語」は「自然言語」と違う点が多いため、周りのこ

とが分からないと、簡単にはプログラムが理解出来ない

– 普通に人間が使う言葉のことを「自然言語」と呼ぶ

• 「自然言語」と「プログラム」言語の違い

– 「プログラミング言語」は「自然言語」より文法が単純である

• 「プログラミング言語」の文法は、単語の記述順が決まっているなどのいくつ かのルールのみ

– 登場する用語(指示する言葉や関連する言葉)も限定されている – どのプログラム言語でも100個以下

– プログラミング言語は自然言語に比べ、意味が明確である

• 曖昧さが発生する余地はなく、厳格で明確な意味が決められている

– プログラミング言語は、計算、あるいは論理処理のための言語である こと

• コンピュータでは数値が全てであり、数値以外の概念は一切存在しない

• データベースの講義で説明したSQLもプログラム言語である

13

プログラム言語を構成する用語1

• コンピュータの中にあるデータに関するもの

データを格納する単位  変数、配列、その他のデータ構造

データのデータ型  数値(整数、浮動小数点実数)、文字型、論理型など

100

100 200 300

変数:データを入れる箱

配列:複数のデータを 入れる箱

箪笥のようなもの

100 100 100 リスト:複数のデータを入れる

別のデータ構造の例(次回説明)

データの格納単位 データのデータ型

整数 -125 -21 0 10 12123 浮動小数点(実数)

-10.25 0.00099 20.251468 文字型 JIU 城西国際大学 論理型 TRUE(真) FALSE(偽)

1 0

14

(8)

プログラム言語を構成する用語2

• 人間の指示に関するもの

– 計算に用いる演算子(+ , -, *, /)と式、代入指示( = )など

– コンピュータへのデータの読み込み、書き出しに関する指

示 (read, print…)

X = (10 – 5) * 18

Y = 3 + 6

Z = X / Y

・5×18を計算し、90をX変数に入れる

・3+6を計算し、9をY変数に入れる

・X(90)/Y(9)を計算し、10をZ変数に入れる

・数学の

・数学の

・数学の

・数学の === は、右辺と左辺が等しいことを示すが= は、右辺と左辺が等しいことを示すがは、右辺と左辺が等しいことを示すがは、右辺と左辺が等しいことを示すが

・プログラム言語の

・プログラム言語の

・プログラム言語の

・プログラム言語の === は、右辺の式の計算結果を左辺の変数に代入する= は、右辺の式の計算結果を左辺の変数に代入するは、右辺の式の計算結果を左辺の変数に代入するは、右辺の式の計算結果を左辺の変数に代入する

(箱に入れる)ことを示す。

(箱に入れる)ことを示す。(箱に入れる)ことを示す。

(箱に入れる)ことを示す。

15

プログラム言語を構成する用語3

条件などに関するもの

– 条件分岐のための指

示 もし、それ以外(if, else)

– 繰り返し実行(ループ) のための指示(while, until, for)

– 条件式の演算子(>, <,

>=, <=, not, and, or) – プログラムの一部を繰

り返し使うための指定

• 関数、サブルーチン

処理2 処理3 条件

Yes

No 開始

終了 処理1

処理2 .. 処理1

Yes No 開始

終了 処理3

条件分岐 繰り返し実行

16

(9)

プログラム言語Python

• アルゴリズムに関する講義では、Pythonというス

クリプト言語を用いて説明する

• Pythonの特徴としては、以下の点があげられる

– オブジェクト指向スクリプト言語

– 豊富なライブラリがある

– 欧米で人気があり、Google、 Microsoft、 Yahoo!、

YouTubeなどで使用されている

– Pythonは開発者が教育用の言語を想定しており、初

心者の方も覚えやすい。

17

スマートフォンでPythonを使う

• WebでPythonなどプログラム言語を動かすサイトがある

• サイトのURLは https://paiza.io

• スマートフォン、タブレットでも利用できる

使い方

– ブラウザで https://paiza.ioを開くを開くを開くを開く – 「コード作成「コード作成「コード作成「コード作成......」..

– をクリックをクリックをクリックをクリック

18

(10)

19

言語をpython2に変更し、

プログラムを作成し、動かすことができる

言語の変更

プログラム 作成領域 実行ボタン

結果表示 領域

スマートフォンでのPaiza.io

20

(11)

Pythonにおける計算

• データの計算に使うは、定数、変数、演算子、代入子があ

– 変数は計算結果を入れる領域(箱のようなもの)

– 定数は、整数、浮動小数点実数がある

• 記述方法: 10 1.235 -5 1.0e5(10の5乗) など

– 演算子は四則演算: + - * /

– 代入子 = = は等号ではなく、右辺の式を計算した結果を

ある変数(配列)などに代入することを示す

– 計算に用いる様々な関数がある

• 三角関数 y = sin(x), y = cos(x), y = tan(x)

• 平方根 y = sqrt(x)

• ログ関数 y = log(x)

• 絶対値 y = abs(x) など色々

21

Pythonにおける計算

• 計算の例

a = 100

b = 300

c = a + b

a

こんにちは こ ん に ち は

• 数値以外のデータ型に、文字列がある

– 文字は1文字が一つの領域を取り、文字列は次に述

べる配列に格納される

100

b 300

c 400 100+300

22

(12)

23

Pythonにおける計算

• 複数のデータを取り扱う

– どのようなプログラムでも、数学などの計算、文字列の処理などを、一つ の変数のみではできない

– 複数のデータ(集合)を取り扱う必要があり、この集合の構造を「データ 構造」という (データ構造の詳細は後で説明)

– この集合の一つに配列がある(数学ではベクトル、2次元配列はマトリッ クス)

– 配列の一つの要素は、数値(整数、浮動小数点実数、文字列など、いず れでもよい)

– 配列の要素が配列の場合もある

Pythonの配列

– 通常のプログラム言語には、明示的な配列の宣言がある – Pythonの場合は、「リスト」という概念を配列に用いる

• リストについての詳細も後で説明

ひとつの変数の場合 X 100

・値の設定 X=100

・値の読み込み Y=X

配列変数の場合 X

・値の設定 X[1]=100 X[2]=200

・値の読み込み Y=X[1]

100 200 300

24

(13)

Pythonの文(ステートメント)

• 代入文と式

– ある変数に定数、または式を計算した結果を格納す

ることが代入である

– 式は定数、変数、演算子(+, -, *, /, **, (, ), )、関

数などを用いた計算式(数学、EXCELの式と同じ)

– 記述例

X=100

• Y=10*x*x+5x+10

• Y=(x-2)**(Z-5)

• print文

– 変数(配列)の内容を画面などに印刷する

** は、べき乗の記号

25

Pythonの文(ステートメント)

if文と論理式

– if文はプログラムの重要な要素で、論理式で指定した条件の計算結果 が正しい(真)か、誤り(偽)を判断して、次に行う処理を変えることがで きる

– 論理式は、計算結果の変数や、定数などと論理演算子で構成される

利用できる論理演算子

==等しい、

– <> または != ⇒ 等しくない

> 大なり

>=大あるいは等しい、

– < ⇒ 小なり

<= ⇒ 小あるいは等しい

& ⇒ and(かつ)

| ⇒ or (あるいは)

複雑な論理式の例

– ((x > y) & (z <= w)) | ((a==100) & (b < 10))

26

(14)

Pythonの文(ステートメント)

• if文の使用例

if x == 10: y = x * x z = x + 100

if x == 10: y = x * x z = x + 100 else:

y = x z = x + 500 真のみ処理を行う

三つ以上の場合に分けて異なった 処理を行う

真の場合と偽の場合、別の処理を行う

if x == 10: y = x * x z = x + 100 elif x == 20:

y = x z = x + 500 else:

y = 0 z = x

If文の用語は、プログラム言語によって 微妙に異なっており、この記法は

Python

独特なものである

27

処理の構造 ①順次構造

Pythonの例

例:( 100 + 200) / 10 を計算し、すべての変数の内 容を表示する

① x = 100 # xに100を代入

② y = 200 # yに200を代入

③ z = ( x + y ) / 10 # zに (x+y)/10を計算し代入

④ print x,y,z # x,y,zを表示 処理1

処理2

処理3

処理4 開始

終了

28

(15)

処理の構造 ②選択構造(分岐構造)

Pythonの例

例:0から1の間の乱数を発生させ、その値が 0.5未満の場合はyをxの10倍、0.5以上の 場合はyをxの10分の1にし、表示する

① x = random.random() #乱数発生 if x < 0.5: # xが0.5未満

y = x * 10

print x,y # x,yを表示 else: # xが0.5以上

y = x / 10

④ print x,y # x,yを表示 処理2 処理3

条件 Yes

No 開始

終了 処理1

29

処理4

処理の構造 ③多岐選択構造(case)

Pythonの例

例:0から80までの数を発生させ、その値16未満は 子供、16-65は大人、65以上は高齢者と、年齢 と共に表示する

① x = random.random() * 80 #乱数で年齢を発生 if x < 16: # xが16未満

② print x, ‘歳 子供です’ if x < 65: # xが65未満

③ print x, ‘歳 大人です’ else: # xが65以上

④ print x, ‘歳 高齢者です’ 処理2

条件1

条件

処理3 処理4 条件2

条件3 開始

終了 処理1

30

(16)

Pythonの文(ステートメント)

• whileループ

– Whileループとは、論理式で記述されたある条件が成立する間、指定 した処理を繰り返し行うループである

– 使用例: 10の要素がある配列 x[] に順番に1から10を代入する i = 0

while i <= 10: i = i + 1 x[i] = i

• forループ

– forループとは、ある要素の集合について、順番に要素を使って指定 した処理を行うループである

– 使用例: 5個の集合 [1,2,3,4,5]の要素を集計する s = 0

for i in [ 1,2,3,4,5]: s = s + i

結果は55

結果は15

31

処理の構造 ④繰返し構造(while)

Pythonの例

○whileはループに入る最初で、定義された条件が 真であるかを評価し、真の場合のみ処理を行う 例: 1から10までの数を加算し、合計を計算する

① sum = 0 #集計用変数を初期化 i = 0 #カウント用変数を初期化 while i < 10: #10未満の間、処理を行う i = i + 1 # i に1を加える sum = sum + i # sum にiを加える print i,sum # 中間結果表示

③ print ‘合計値は’, sum # 集計値表示 処理2 ..

処理1

条件

Yes No 開始

終了 処理3

32

(17)

処理の構造 ④繰返し構造(until)

プログラム例

○untilはループから出る最後に、定義された条件 が真であるかを評価し、真の場合にループを抜け 出し、偽の場合は処理を行う

○Pythonには、untilループは定義されていないが、 whileとifとbreakを使ってuntilを記述できる

例:1から10までの数を加算し、合計を計算する

① sum = 0 i = 0

while True:

② i = i + 1

sum = sum + i print i,sum

if i >= 10: break

③ print ‘合計値は’, sum 処理2 ..

処理1

条件

Yes No 開始

終了 処理3

33

フローチャートの例 条件付き集計の例題

• 1から20までの数値の中で、奇数のみを集め、集計する

1 2 3 4 5 6 7 8

19 20

集計用変数

34

(18)

フローチャートの例 ①条件付き集計 フロー図

開始

sum ← 0

iは2の 倍数? i ← i + 1

Yes No

○ sumは、集計用変数

○ i は、作業用の変数

○ 矢印は代入することを示す i ← 0

sum ← sum + i i > 20 Yes

終了 No

35

条件付き集計のPythonプログラム

例: 1から20までの奇数を加算し、合計を表示する

sum = 0 # 集計用変数を初期化

i = 0 # カウント用変数を初期化

while i < 20: # 20未満の間、処理を行う i = i + 1 # i に1を加える

if i % 2 != 0: # i を2で割った余りが0でない場合 sum = sum + i # sum にiを加える

print i,sum # 中間結果表示 print ‘合計値は’, sum # 集計値表示

結果は 100 となる

36

(19)

37

参照

関連したドキュメント

東京大学 大学院情報理工学系研究科 数理情報学専攻. hirai@mist.i.u-tokyo.ac.jp

情報理工学研究科 情報・通信工学専攻. 2012/7/12

今後 6 ヵ月間における投資成果が TOPIX に対して 15%以上上回るとアナリストが予想 今後 6 ヵ月間における投資成果が TOPIX に対して±15%未満とアナリストが予想

理工学部・情報理工学部・生命科学部・薬学部 AO 英語基準入学試験【4 月入学】 国際関係学部・グローバル教養学部・情報理工学部 AO

1991 年 10 月  桃山学院大学経営学部専任講師 1997 年  4 月  桃山学院大学経営学部助教授 2003 年  4 月  桃山学院大学経営学部教授(〜現在) 2008 年  4

関谷 直也 東京大学大学院情報学環総合防災情報研究センター准教授 小宮山 庄一 危機管理室⻑. 岩田 直子

②企業情報が「特定CO の発給申請者」欄に表示

Introduction to Japanese Literature ② Introduction to Japanese Culture ② Changing Images of Women② Contemporary Korean Studies B ② The Chinese in Modern Japan ②