(since 2005/01)(更新 2008/05/01)
|
|
情報系/IT系の広告を掲載しています。(広告一覧) |
|
|
| フローチャート入門[1] |
| 6.擬似言語 |
| 形式 | 用例 |
処理 | GR4←GR1 & 1 |
| 形式 |
if(条件) {
条件が正しかった場合に行う処理
} else {
条件が正しくなかった場合に行う処理
}
|
| 用例 |
if(カウンタの最下位ビット==0) {
GR0=GR0 or #8000
GR0を1ビット分右へシフト
}
|
| 形式 |
while(条件) {
反復する処理
}
|
| 用例 |
while(残り反復回数>0){
GR4=GR1 & 1
ビット1数=ビット1数+GR4
GR1を1ビット分右へシフト
残り反復回数を−1
}
|
| 形式 |
repeat {
反復する処理
} until(条件)
|
| 用例 |
repeat {
S=S+X[i]
i=i+1
} until(S>5)
|
| 形式 |
for(初期化処理;終了条件;増分処理) {
反復する処理
}
|
| 用例 |
for(i=0;i<5;i=i+1) {
S=S+X[i]
}
|
| 形式 |
for(初期化;終了条件;増分処理) {
反復する処理−前段
if(終了条件) exit
反復する処理−後段
}
|
| 用例 |
i=0
for(;;) {
S=S+X[i]
if(i>=4) exit
i=i+1
}
|
| 形式 | for(初期化;終了条件;増分処理) 反復する処理 |
| 用例 | for(i=0;i<5;i=i+1) S=S+X[i] |
| 形式 | if(条件) 条件が正しかった場合に行う処理 |
| 用例 | if(A==0) B=B+1 |
| 要素 | 用例 |
○定義する変数名等 | ○整数型:GR0,GR2 |
| 形式 | 用例 |
・処理 | ・GR4←GR1 & 1 |
| 形式 | ▲条件 │条件が正しかった場合に行う処理 ┼ │条件が正しくなかった場合に行う処理 ▼ |
| 用例 | ▲ビット1のカウンタの最下位ビット=0 │・GR0←GR0 or #8000 │・GR0を1ビット分右へシフト ┼ ▼ |
| 新形式 | ▲条件 │条件が正しかった場合に行う処理 ▼ |
| 用例 | ▲ビット1のカウンタの最下位ビット=0 │・GR0←GR0 or #8000 │・GR0を1ビット分右へシフト ▼ |
| 形式 | ■条件 │反復する処理 ■ |
| 用例 | ■残り反復回数>0 │・GR4←GR1 & 1 │・ビット1数←ビット1数+GR4 │・GR1を1ビット分右へシフト │・残り反復回数を−1 ■ |
| 新形式 | ■ │反復する処理 ■条件 |
| 用例 | ■ │・GR4←GR1 & 1 │・ビット1数←ビット1数+GR4 │・GR1を1ビット分右へシフト │・残り反復回数を−1 ■残り反復回数>0 |
| 形式 | ■変数:初期値,反復条件,増分 │反復する処理 ■ |
| 用例 | ■i:0,i<5,1 │・S←S+X[i] ■ |
ビット1数=0
while(GR0==0) {
オーバフロー・フラグ=GR0の最下位ビット
GR0を1ビット分右へシフト
if(オーバフロー・フラグ==1) {
ビット1数=ビット1数+1
}
}
GR0=ビット1数を15ビット分左へシフト
return GR0
|
○整数型:PARITY(整数型:GR0) ○整数型:ビット1数,オーバフロー・フラグ ・ビット1数←0 ■GR0=0 │・オーバフロー・フラグ←GR0の最下位ビット │・GR0を1ビット分右へシフト │▲オーバフロー・フラグ=1 ││・ビット1数←ビット1数+1 │▼ ■ ・GR0←ビット1数を15ビット分左へシフト ・return GR0 |
|
備考 木構造とは、文字どおり木の形の、データやプログラムの表現形式です。 木構造でのプログラム設計の図法には、PADなどがあります。 木構造でのプログラムの設計では、 反復や選択の中に出てくる処理を、条件よりも右に1段ずらして記述します。 つまり、逐次で行う処理は縦に並べて、 反復や選択の中身は横へ伸ばして行く、2次元の書き方になります。 木構造での設計図は、2次元の図になります。 高級言語でのプログラムも、各行は横方向で、その行を縦に並べます。 このため木構造でプログラムを設計すると、 2次元の対応関係を残しながら、 設計図からプログラムへと分かり易く書換えることが出来ます。 因みに3次元的な図としては、NSチャートがあります。 図ですから本来2次元なのですが、 反復を斜め方向に対応させることで、擬似的に3次元になっています。 |
| 7.論理 |
| 8.ループの書換え |
| 形式 | 実例 | |
元 |
while(条件) {
処理
}
|
S=0;i=0;
while(i<5) {
S=S+X[i]
i=i+1
}
|
┌──→│
│ /\
│ / \N
│ < 条件 >─┐
│ \ / │
│ \/Y │
│ ┌┴─┐ │
│ │処理│ │
│ └┬─┘ │
└───┘ │
┌───┘
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
┌──→│
│ /\
│ / \N
│ < i<5 >─┐
│ \ / │
│ \/Y │
│┌──┴──┐│
││S←S+X[i] ││
││ i←i+1 ││
│└──┬──┘│
└───┘ │
┌───┘
↓
|
| 形式 | 実例 | |
変 |
repeat {
処理
} until(not条件)
|
S=0;i=0;
repeat {
S=S+X[i]
i=i+1
} until(i>=5)
|
┌──→│
│ ┌┴─┐
│ │処理│
│ └┬─┘
│ /\
│ Y / \
└─< 条件 >
\ /
\/N
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
┌──→│
│┌──┴──┐
││S←S+X[i] │
││ i←i+1 │
│└──┬──┘
│ /\
│ N / \
└─< i>=5 >
\ /
\/Y
↓
|
| 形式 | 実例 | |
元 |
while(条件) {
処理
}
|
i=0;S=0;
while(i<n) {
S=S+X[i]
i=i+1
}
|
┌──→│
│ /\
│ / \N
│ < 条件 >─┐
│ \ / │
│ \/Y │
│ ┌┴─┐ │
│ │処理│ │
│ └┬─┘ │
└───┘ │
┌───┘
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
┌──→│
│ /\
│ / \N
│ < i<n >─┐
│ \ / │
│ \/Y │
│┌──┴──┐│
││S←S+X[i] ││
││ i←i+1 ││
│└──┬──┘│
└───┘ │
┌───┘
↓
|
| 形式 | 実例 | |
変 |
if(条件) {
repeat {
処理
} until(not条件)
}
|
S=0;i=0;
if(i<n) {
repeat {
S=S+X[i]
i=i+1
} until(i>=n)
}
|
/\
/ \N
< 条件 >─┐
\ / │
\/Y │
┌──→│ │
│ ┌┴─┐ │
│ │処理│ │
│ └┬─┘ │
│ /\ │
│ Y / \ │
└─< 条件 > │
\ / │
\/N │
│←──┘
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
/\
/ \N
< i<n >─┐
\ / │
\/Y │
┌──→│ │
│┌──┴──┐│
││S←S+X[i] ││
││ i←i+1 ││
│└──┬──┘│
│ /\ │
│ N / \ │
└─< i>=n > │
\ / │
\/Y │
│←──┘
↓
|
| 形式 | 実例 | |
元 |
repeat {
処理
} until(条件)
|
S=0;i=0;
repeat {
S=S+X[i]
i=i+1
} until(i>=5)
|
┌──→│
│ ┌┴─┐
│ │処理│
│ └┬─┘
│ /\
│ N / \
└─< 条件 >
\ /
\/Y
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
┌──→│
│┌──┴──┐
││S←S+X[i] │
││ i←i+1 │
│└──┬──┘
│ /\
│ N / \
└─< i>=5 >
\ /
\/Y
↓
|
| 形式 | 実例 | |
変 |
処理
while(not条件) {
処理
}
|
S=X[0];i=1;
while(i<5) {
S=S+X[i]
i=i+1
}
|
┌┴─┐
│処理│
└┬─┘
┌──→│
│ /\
│ / \N
│ < 条件 >─┐
│ \ / │
│ \/Y │
│ ┌┴─┐ │
│ │処理│ │
│ └┬─┘ │
└───┘ │
┌───┘
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
┌──┴──┐
│S←S+X[i] │
│ i←i+1 │
└──┬──┘
┌──→│
│ /\
│ / \N
│ < i<5 >─┐
│ \ / │
│ \/Y │
│┌──┴──┐│
││S←S+X[i] ││
││ i←i+1 ││
│└──┬──┘│
└───┘ │
┌───┘
↓
|
| 形式 | 実例 |
for(;;) {
処理A
if(条件) exit
処理B
}
|
S=0;i=0;
for(;;) {
S=S+X[i]
if(i>=4) exit
i=i+1
}
|
┌──→│
│ ┌─┴─┐
│ │処理A │
│ └─┬─┘
│ /\
│ / \Y
│ < 条件 >─┐
│ \ / │
│ \/N │
│ ┌─┴─┐ │
│ │処理B │ │
│ └─┬─┘ │
└───┘ │
┌───┘
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
┌──→│
│┌──┴──┐
││S←S+X[i] │
│└──┬──┘
│ /\
│ / \Y
│ < i>=4 >─┐
│ \ / │
│ \/N │
│┌──┴──┐│
││ i←i+1 ││
│└──┬──┘│
└───┘ │
┌───┘
↓
|
| 形式 | 実例 |
処理A
while(not条件) {
処理B
処理A
}
|
i=0;S=X[0];
while(i<4) {
i=i+1
S=S+X[i]
}
|
┌─┴─┐
│処理A │
└─┬─┘
┌──→│
│ /\
│ / \N
│ < 条件 >─┐
│ \ / │
│ \/Y │
│ ┌─┴─┐ │
│ │処理B │ │
│ └─┬─┘ │
│ ┌─┴─┐ │
│ │処理A │ │
│ └─┬─┘ │
└───┘ │
┌───┘
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
┌──┴──┐
│S←S+X[i] │
└──┬──┘
┌──→│
│ /\
│ / \N
│ < i<4 >─┐
│ \ / │
│ \/Y │
│┌──┴──┐│
││ i←i+1 ││
│└──┬──┘│
│┌──┴──┐│
││S←S+X[i] ││
│└──┬──┘│
└───┘ │
┌───┘
↓
|
| 形式 | 実例 |
-処理B;
repeat {
処理B
処理A
} until(条件)
|
S=0;i=-1;
repeat {
i=i+1
S=S+X[i]
} until(i>=4)
|
┌─┴─┐
│-処理B│
└─┬─┘
┌──→│
│ ┌─┴─┐
│ │処理B │
│ └─┬─┘
│ ┌─┴─┐
│ │処理A │
│ └─┬─┘
│ /\
│ N / \
└─< 条件 >
\ /
\/ Y
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
┌──┴──┐
│ i←i-1 │
└──┬──┘
┌──→│
│┌──┴──┐
││ i←i+1 │
│└──┬──┘
│┌──┴──┐
││S←S+X[i] │
│└──┬──┘
│ /\
│ N / \
└─< i>=4 >
\ /
\/ Y
↓
|
| 形式 | 実例 |
repeat {
処理A
処理B
} until(条件)
-処理B
|
S=0;i=0;
repeat {
S=S+X[i]
i=i+1
} until(i>=5)
|
┌──→│
│ ┌─┴─┐
│ │処理A │
│ └─┬─┘
│ ┌─┴─┐
│ │処理B │
│ └─┬─┘
│ /\
│ N / \
└─< 条件 >
\ /
\/ Y
┌─┴─┐
│-処理B│
└─┬─┘
↓
|
┌┴─┐
│S←0│
│i←0│
└┬─┘
┌──→│
│┌──┴──┐
││S←S+X[i] │
│└──┬──┘
│┌──┴──┐
││ i←i+1 │
│└──┬──┘
│ /\
│ N / \
└─< i>=5 >
\ /
\/ Y
┌──┴──┐
│ i←i-1 │
└──┬──┘
↓
|
| 9.書換え |
| フローチャート入門[2] |
|
|
|
|