プログラムの基本構造と 構造化チャート( pad)
DESCRIPTION
プログラムの基本構造と 構造化チャート( PAD). 復習. プログラムの3つの基本構造. 成立. 条件. ループ. 処理1. 条件 . 不成立. 処理. 処理2. 処理2. 処理1. ループ. 順次構造. 選択構造. 繰り返し構造. IF 条件 Then 処理1 Else 処理2 End If. 成立. 条件. 選択構造. 不成立. 処理2. 処理1. 成立. 条件. IF 条件 Then 処理1 End If. 不成立. 処理1. - PowerPoint PPT PresentationTRANSCRIPT
1
プログラムの基本構造と構造化チャート( PAD)
2
復習
• プログラムの3つの基本構造
条件
処理2 処理1
成立
不成立
処理
ループ 条 件
ループ
処理2
処理1
順次構造 選択構造 繰り返し構造
3
条件
処理2 処理1
成立
不成立
IF 条件 Then
処理1
Else
処理2
End If
条件
処理1
成立
不成立
IF 条件 Then
処理1
End If
• 選択構造
• 選択構造
4
A>=60
不 合 格 と 表示
合 格 と 表示
成立
不成立
もし、 A が 60 以上なら TextBox1 に“合格” 、そうでないなら、 “不合格” と表示する。
IF A>=60 Then
TextBox1.text=“ 合格”
Else
TextBox1.text=“ 不合格”
End If
Start
End
5
• 繰り返し構造
回数を指定しての繰り返し For Next 文を使う
条件を指定しての繰り返し Do Loop 文を使う
前判定の繰り返し
後判定の繰り返し
処理
ループ 条 件
ループ
前判定
処理
ループ
ループ
後判定
条 件
6
• 回数を指定しての繰り返し処理
処理
ループ変数 = 初期値~最終値
ループ
For 変数 = 初期値 To 最
終値
処理
Next 変数
7
• 回数を指定しての繰り返し
処理1
ループi = 1 ~10
ループ
For i = 1 To 10
処理1
Next i
処理1を 10 回実行する
Start
End
8
• 回数を指定しての繰り返し
s ← s + i
ループi = 1 ~ 10
ループ
s = 0
For i = 1 To
10
s = s + i
Next i
TextBox1.Text = s
1 から 10 までの整数の合計を計算し, TextBox1 に出力する
s ← 0
Start
End
TextBox1.Text ← s
9
• 回数を指定しての繰り返し
s ← s +TextBox1.Lines(i)
ループi = 0 ~ 9
ループ
s = 0
For i = 0 To 9
s = s
+TextBox1.Lines(i)
Next i
TextBox2.Text = s
TextBox1 に入力された 10 個のデータの合計を TextBox2 に出力する
s ← 0
Start
End
TextBox2.Text ← s
10
• 回数を指定しての繰り返し
s ← s +TextBox1.Lines(i)
ループi = 0 ~ 9
ループ
s = 0
For i = 0 To 9
s = s +
TextBox1.Lines(i)
Next i
h = s / 10
TextBox2.Text = h
TextBox1 に入力された 10 個のデータの平均を TextBox2 に出力する
s ← 0
Start
End
h ← s / 10
TextBox2.Text ← h
11
• 条件を指定しての繰り返し
処理
ループ 条 件
ループ
前判定
処理
ループ
条 件 ループ
後判定
条件
処理
不成立
成立
条件
処理
成立
不成立
条件
処理
不成立
成立 条件
処理
成立
不成立
条件が成立している間繰り返す
条件が成立するまで繰り返す
条件が成立している間繰り返す
条件が成立するまで繰り返す
判断記号を使ったループの表現 ループ端記号を使った表現
12
• 条件を指定しての繰り返し
処理
ループ 条 件
ループ
前判定
処理
ループ
条 件 ループ
後判定
Do While 条件
処理
Loop
Do
処理
Loop While 条
件
Do Until 条件
処理
Loop
Do
処理
Loop Until 条件
条件が成立している間繰り返す
条件が成立するまで繰り返す
条件が成立している間繰り返す
条件が成立するまで繰り返す
13
• 条件を指定しての繰り返し
x← x + 1
ループ
ループ
x = 1
Do Until x^2 > 100
x = x + 1
Loop
TextBox1.Text = x
整数 x の2乗が 100 を超える最小の x を求めよ.
x ← 1
Start
End
TextBox1.Text ← x
x2 > 100 が成立するまで
14
TextBox1 に入力された 10 個のデータの最大値を求め, Textbox2 に表示せよ.
ループ
ループ
Max←TextBox1.Lines(0)
Start
End
TextBox2.Text ← Max
i = 1 ~ 9
Max < TextBox1.Lines(i)
Max←TextBox1.Lines(i)
Max = TextBox1.Lines(0)
For i= 1 to 9
IF Max < TextBox1.Lines(i) Then
Max = TextBox1.Lines(i)
End If
Next i
TextBox2.Text = Max
不成立
成立
15
TextBox1 に入力された 10 個のデータの最小値を求め, Textbox2 に表示せよ.
ループ
ループ
Max←TextBox1.Lines(0)
Start
End
TextBox2.Text ← Max
i = 1 ~ 9
Max > TextBox1.Lines(i)
Max←TextBox1.Lines(i)
Max = TextBox1.Lines(0)
For i= 1 to 9
IF Max >TextBox1.Lines(i) Then
Max = TextBox1.Lines(i)
End If
Next i
TextBox2.Text = Max
不成立
成立
16
TextBox1 に入力された 10 個のデータの最小値を求め, Textbox2 に表示せよ.
ループ
ループ
Min←TextBox1.Lines(0)
Start
End
TextBox2.Text ← Min
i = 1 ~ 9
Min > TextBox1.Lines(i)
Min←TextBox1.Lines(i)
Min= TextBox1.Lines(0)
For i= 1 to 9
IF Min > TextBox1.Lines(i) Then
Min = TextBox1.Lines(i)
End IF
Next i
TextBox2.Text = Min
不成立
成立
17
TextBox1 に入力された 10 個のデータの最大値、最小値を求め TextBox2,3 に表示せよ.
ループ
ループ
Max←TextBox1.Lines(0)
Start
TextBox2.Text ← Max
i = 1 ~ 9
Max < TextBox1.Lines(i)
Max←TextBox1.Lines(i)
End1
1
ループ
ループ
Min←TextBox1.Lines(0)
TextBox3.Text ← Min
i = 1 ~ 9
Min > TextBox1.Lines(i)
Min←TextBox1.Lines(i)不成立
成立
不成立
成立
18
ループ
ループ
Min←TextBox1.Lines(0)
Start
TextBox2.Text ← Max
i = 1 ~ 9
Max < TextBox1.Lines(i)
Max←TextBox1.Lines(i)
End
TextBox3.Text ← Min
Min > TextBox1.Lines(i)
Min←TextBox1.Lines(i)
Max = TextBox1.Lines(0)
Min = TextBox1.Lines(0)
For i= 1 to 9
IF Max < TextBox1.Lines(i) Then
Max = TextBox1.Lines(i)
End I f
IF Min > TextBox1.Lines(i) Then
Min = TextBox1.Lines(i)
End I f
Next i
TextBox2.Text = Max
TextBox3.Text = Min
Max←TextBox1.Lines(0)
不成立
成立
不成立
成立
最大値
最小値
19
• プログラムの3つの基本構造
条件
処理2 処理1
成立
不成立
処理
ループ 条 件
ループ
処理2
処理1
順次構造 選択構造 繰り返し構造
• 各基本構造の処理の部分に 3 つの基本構造のいずれかを入れてよい。
20
階層構造
条件
処理2
成立
不成立
処 理3
ループ 条 件
ループ
選択構造の中に繰り返し構造が入った形
条件
処理2 処理1
成立
不成立
選択構造
処理
ループ 条 件
ループ
繰り返し構造
21
階層構造
繰り返し構造の中に選択構造が入った形
条件
処理2 処理1
成立
不成立
選択構造
処理
ループ 条 件
ループ
繰り返し構造
条件
処理2 処理1
成立
不成立
ループ
ループ 条 件
22
• 構造化されていないアルゴリズム
条件A
処理2 処理1
成立
不成立
条件B
処理 4 処理 3
成立
不成立
• JIS フローチャートだと構造化されてないアルゴリズムも記述できてしまう。
23
• 構造化されていないプログラムを構造化する
条件A
処理2 処理1
成立
不成立
条件B
処理 4 処理 3
成立
不成立
条件A
処理2 処理1
成立
不成立
条件B
処理 4 処理 3
成立
不成立
処理 3
処理13処理 234
処理 34
• Visual Basic は、構造化されていないプログラムを書くのは難しい。
• アルゴリズムを構造化すると プログラムの保守性が増す。
24
構造化チャート ○順次構造、選択構造、繰り返し構造の 3 構造のみを記述で
きる。 ○プログラムの構造を把握しやすい。 縦軸は処理の流れを、横方向は制御の主従関係を表
す。 NS チャート (アメリカ) PAD (日立) HCP ( NTT ) SPD(NEC)
YACⅡ (富士通) HIPO (アメリカ IBM )
25
PAD
条件
処理2 処理1
成立
不成立 処理
ループ 条 件
ループ処理2
処理1
順次構造 選択構造繰り返し構造(前判定)
処理
ループ
ループ
処理2
処理1
処理2
処理1条件 処理条件 処理条件
繰り返し構造(後判定)
条 件
26
A>=60
不 合 格 と 表示
合 格 と 表示
成立
不成立
もし、 A が 60 以上なら TextBox1 に“合格” 、そうでないなら、“不合格” と表示する。
IF A>=60 Then
TextBox1.text=“ 合格”
Else
TextBox1.text=“ 不合格”
End If
• 選択構造
Start
End
不 合 格 と 表示
合格と表示A>=60
27
• 回数を指定しての繰り返し
処理1
ループi = 1 ~10
ループ
For i = 1 To
10
処理1
Next i
処理1を 10 回実行する
Start
End
処理 1i = 1 ~10
28
• 回数を指定しての繰り返し
s ← s + i
ループi = 1 ~ 10
ループ
s = 0
For i = 1
To 10
s = s + i
Next i
TextBox1.Text = s
1 から 10 までの整数の合計を計算し, TextBox1 に出力する
s ← 0
Start
End
TextBox1.Text ← s
s ← s + ii = 1 ~ 10
s ← 0
TextBox1.Text ← s
29
• 条件を指定しての繰り返し
x← x + 1
ループ
ループ
x = 0
Do Until x^2 >
100
x = x +
1
Loop
TextBox1.Text = x
整数 x の2乗が 100 を超える最小の x を求めよ.
x ← 0
Start
End
TextBox1.Text ← x
x2 > 100 が成立するまで x ← x + 1x2 > 100
が成 立 す る まで
x← 0
TextBox1.Text ← x
30
最大値
ループ
ループ
Max←TextBox1.Lines(0)
Start
End
TextBox2.Text ← Max
i = 1 ~ 9
Max < TextBox1.Lines(i)
Max←TextBox1.Lines(i)不成立
成立
Max←TextBox1.Lines(i)i = 1 ~ 9
Max←TextBox1.Lines(0)
TextBox2.Text ← Max
Max < TextBox1.Lines(i)
Max = TextBox1.Lines(0)
For i= 1 to 9
IF Max < TextBox1.Lines(i) Then
Max = TextBox1.Lines(i)
End IF
Next i
TextBox2.Text = Max
31
ループ
ループ
Min←TextBox1.Lines(0)
Start
TextBox2.Text ← Max
i = 1 ~ 9
Max < TextBox1.Lines(i)
Max←TextBox1.Lines(i)
End
TextBox3.Text ← Min
Min > TextBox1.Lines(i)
Min←TextBox1.Lines(i)
Max = TextBox1.Lines(0)
Min = TextBox1.Lines(0)
For i= 1 to 9
IF Max < TextBox1.Lines(i) Then
Max = TextBox1.Lines(i)
End IF
IF Min > TextBox1.Lines(i) Then
Min = TextBox1.Lines(i)
End IF
Next i
TextBox2.Text = Max
TextBox3.Text = Min
Max←TextBox1.Lines(0)
不成立
成立
不成立
成立
最大値
最小値
32
最大値
最小値
Max←TextBox1.Lines(i)i = 1 ~ 9
Min←TextBox1.Lines(0)
TextBox2.Text ← Max
Max < TextBox1.Lines(i)
Max←TextBox1.Lines(0)
TextBox3.Text ← Min
Min←TextBox1.Lines(i)Min > TextBox1.Lines(i)
Max = TextBox1.Lines(0)Min = TextBox1.Lines(0) For i= 1 to 9 IF Max < TextBox1.Lines(i) Then Max = TextBox1.Lines(i) End IF IF Min > TextBox1.Lines(i) Then Min = TextBox1.Lines(i) End IFNext iTextBox2.Text = MaxTextBox3.Text = Min
プログラムのインデント(字下げ)と PAD の列が同じ.
インデント, PAD の列は制御の主従関係を表す.
<左が命令をする側><右が命令をされる側>