2. 流れ図くんのサンプル

ここでは、具体的に流れ図くんとフローチャートの対応関係について書きます。ソースコードとフローチャートと順番に書くことで、ソースコードの処理の流れを明確にします。

2.1. if...else文

2.1.1. 構文

流れ図くんの「if...else文」を利用して記載できます。

「流れ図くん構文」を参照


2.1.2. ソースコード例

if..elseの例

020論語.txt

outputfile "nagarezukun.xls";

fc("論語"){
	output "判断";
	terminator("Start");
	proc("16→age");
	proc("\"\"→result");
	if ("\S8{age >= 70}" ){
	    proc("\S8{\"心の欲する所に従って矩を踰えず\"→result}");
	}
	elseif ("\S8{age >= 60}" ){
	    proc("\"耳順う\"→result");
	}
	elseif ("\S8{age >= 50}" ){
	    proc("\"天命を知る\"→result");
	}
	elseif ("\S8{age >= 40}" ){
	    proc("\"惑わず\"→result");
	}
	elseif ("\S8{age >= 30}" ){
	    proc("\"立つ\"→result");
	}
	elseif ("\S8{age >= 15}"){
	    proc("\"学に志す\"→result");
	}
	else{
	    proc("\"無し\"→result");
	};
	proc("表示(result)");
	return("End");

};

2.1.3. フローチャート例

if..elseの例のフローチャート

_images/rongo.gif

2.2. 三項の条件演算子

2.2.1. 構文

流れ図くんには三項の条件演算子の構文はないので、if...elseを使って表します。


2.2.2. ソースコード例

三項の条件演算子の例

010三項の条件演算子.txt

outputfile "nagarezukun.xls";

fc("三項の条件演算子"){
	output "三項の条件演算子";
	terminator("Start");
	proc("10→num");
	proc("\"\"→str");

	if("\S8{num>=60}"){
		proc("\"合格\"→str");
	}
	else{
		proc("\"不合格\"→str");
	};
	proc("表示(str)");
	return("End");
};

2.2.3. フローチャート例

三項の条件演算子フローチャート

_images/sanko.gif

2.3. switch文

2.3.1. 構文

switch文の構文は下記を参考にしてください。

2.3.2. ソースコード例

switch文の例

030swtich_ex.txt

outputfile "nagarezukun.xls";

fc("月"){
	output "swtich_ex";
	terminator("Start");
	proc("2→month");
	proc("\"\"→result");
	switch("month"){
		case ("1"){
			 proc("\"January\"→result");
		}
		case ("2"){
			proc("\"February\"→result");
		}
		case ("3"){
			proc("\"March\"→result");
		}
		case ("4"){
			proc("\"April\"→result");
		}
		case ("5"){
			proc("\"May\"→result");
		}
		case ("6"){
			proc("\"June\"→result");
		}
		case ("7"){
			proc("\"July\"→result");
		}
		case ("8"){
			proc("\"August\"→result");
		}
		case ("9"){
			proc("\"September\"→result");
		}
		case ("10"){
			proc("\"October\"→result");
		}
		case ("11"){
			proc("\"November\"→result");
		}
		case ("12"){
			proc("\"December\"→result");
		}
		case ("default"){ 
			proc("assert false");
		}
	};
	proc("表示(result)");
	return("End");
};

2.3.3. フローチャート例

switch文例のフローチャート

_images/switch_ex.gif

2.4. for文

2.4.1. 構文

流れ図くんの「for文の構文」を利用して記載できます。

2.4.2. ソースコード例

1~10の合計を求めるfor文の例

040for_ex.txt

outputfile "nagarezukun.xls";

fc("for例"){
	output "for_ex";
	terminator("Start");
	proc("0→sum");
	for("1→i" ,"i<=10" , "i+1→i"){
		proc("sum+i→sum");
	};
	proc("表示(sum)");
	return("End");
};

2.4.3. フローチャート例

for文例のフローチャート

_images/for_ex.gif

2.5. for-each文

2.5.1. 構文

流れ図くんにfor-eachの文はありません、for文を使って類似の記載をします。

2.5.2. ソースコード例

1~10の合計を求める。for-each文の例

050for_each例.txt

outputfile "nagarezukun.xls";

fc("for-each例"){
	output "for-each例";
	terminator("Start");
	proc("\S8{\{1,2,3,4,5,6,7,8,9,10\}→nums}");
	for("0→i","i<\S6{nums個数}","i+1→i"){
		proc("nums[i]→num");
		proc("sum+num→sum");
	};
	return("End");
};

2.5.3. フローチャート例

for-each文のフローチャート

_images/for_each.gif

2.6. while文

2.6.1. 構文

while文の構文は下記を参考にしてください。

2.6.2. ソースコード例

1~10の合計を求める。while文の例

060while.txt

outputfile "nagarezukun.xls";

fc("while例"){
	output "while_ex";
	terminator("Start");
	proc("1→i");
	proc("0→sum");
	while("i<=10"){
		proc("sum+i→sum");
		proc("i+1→i");
	};
	proc("表示(sum)");
	return("End");
};

2.6.3. フローチャート例

while文例のフローチャート

_images/while_ex.gif

2.7. do..while文

2.7.1. 構文

do-while文の構文は下記を参考にしてください。

2.7.2. ソースコード例

1~10の合計を求める。do-while文の例

070do_while.txt

outputfile "nagarezukun.xls";

fc("do..while例"){
	output "do..while_ex";
	terminator("Start");
	proc("1→i");
	proc("0→sum");
	do{
		proc("sum+i→sum");
		proc("i+1→i");
	}while("i<=10");
	proc("表示(sum)");
	return("End");
};

2.7.3. フローチャート例

do-while文のフローチャート

_images/do_while_ex.gif

2.8. continue文

2.8.1. 構文

continue文の構文は下記を参考にしてください。

2.8.2. ソースコード例

continue文の例

080continue.txt

outputfile "nagarezukun.xls";

fc("continue")
{
	output "continue";
	terminator("Start");
	proc("0→sum");
	for ("1→i", "i<=10", "i+1→i","","C") {
	    if ("i = 3") {
			comment("continue");
			continue;  //このループの残りをスキップしforに戻る。
	    };
	    proc("sum+i→sum");
	};
	proc("表示(sum)");
	terminator("End");
};

2.8.3. フローチャート例

continue文のフローチャート

_images/bat_for_continue_ex.gif

2.9. break文

2.9.1. 構文

break文の構文は下記を参考にしてください。

2.9.2. ソースコード例

break文の例

090break.txt

outputfile "nagarezukun.xls";

fc("break")
{
	output "break";
	terminator("Start");
	proc("0→sum");
	for ("1→i", "i<=10", "i+1→i","B","") {
		proc("sum+i→sum");
		if ("\S8{sum>=30}") {
			comment("break");
			break;  // ループを脱出する。
		};
	};
	proc("表示(sum)");
	terminator("End");
};

2.9.3. フローチャート例

break文のフローチャート

_images/bat_for_break_ex.gif

2.10. ラベル付きcontinue文

2.10.1. 構文

ラベル付きcontinue文は無いためgoto文、for文、while文、do while文を利用して実現します。

多重ループから、goto文を利用してその後の処理をスキップします。

2.10.2. ソースコード例

ラベル付きcontinue文の例

100label_continue.txt

outputfile "nagarezukun.xls";

fc("ラベル付きcontinue")
{
	output "label_continue";
	terminator("Start");
	proc("sum→0");
	for ("1→i", "i<=10", "i+1→i","","C") {
		for(" 1→j","j<=10","j+1→j"){
			if ("i = 3") {
				comment("continue ラベル");
				goto("C");//continue このループの残りをスキップしforに戻る。
			};
			proc("sum+i*j→sum");
		};
	};
	proc("表示(sum)");
	terminator("End");
};

2.10.3. フローチャート例

ラベル付きbreak、continue文のフローチャート

_images/bat_for_double_continue_ex.gif

2.11. ラベル付きbreak文

2.11.1. 構文

ラベル付きbreak文は無いためgoto文、for文、while文、do while文を利用して実現します。

多重ループから、goto文を利用して抜け出す処理となります。

2.11.2. ソースコード例

ラベル付きbreak文の例

110label_break.txt

outputfile "nagarezukun.xls";

fc("ラベル付きbreak")
{
	output "label_break";
	terminator("Start");
	proc("sum→0");
	for ("1→i", "i<=10", "i+1→i","B","") {
		for(" 1→j","j<=10","j+1→j"){
			proc("sum+i*j→sum");
			if ("\S8{sum>=15}") {
				comment("break ラベル");
				goto("B"); //break;  // ループを脱出する。
			};
		};
	};
	proc("表示(sum)");
	terminator("End");
};

2.11.3. フローチャート例

ラベル付きbreak文のフローチャート

_images/bat_for_double_break_ex.gif

2.12. goto文

2.12.1. 構文

goto文の構文は下記を参考にしてください。

2.12.2. ソースコード例

goto文の例

120goto.txt

outputfile "nagarezukun.xls";

fc("gotoサンプル")//タイトル設定
{
	//出力シート指定------------------------
	output "gotoサンプル";//出力シート名設定
	//--------------------------------------

	terminator("Start");
	goto("B");
	inconnector("A");
	proc("表示(01)");
	label("B");
	proc("表示(02)");
	goto("D");
	inconnector("C");
	proc("表示(03)");
	label("D");

	return("End");
};

2.12.3. フローチャート例

goto文のフローチャート

_images/bat_goto_ex.gif