4. Javaとフローチャート¶
ここでは、具体的にJavaとフローチャートの対応関係について書きます。ソースコードとフローチャートと順番に書くことで、ソースコードの処理の流れを明確にします。
Contents
4.1. 三項の条件演算子¶
三項の条件演算子の構文
条件 ? 式1 : 式2 ;
三項の条件演算子の例
MyJava.java
public class MyJava{
public static void main(String args[]){
int i = 10;
String str = (i >= 60 ? "合格" : "不合格");
System.out.print(str); //=> 不合格
}
}
三項の条件演算子フローチャート
4.2. if...else文¶
if..elseの構文
if (条件式1) {
命令文1;
}
else if (条件式2) {
命令文2;
}
else {
命令文3;
}
if..elseのフローチャート
if..elseの例
MyJava02.java
public class MyJava02{
public static void main(String args[]){
int age = 16;
String result;
if (age >= 70 ){
result ="心の欲する所に従って矩を踰えず";
}
else if (age >= 60 ){
result ="耳順う";
}
else if (age >= 50 ){
result ="天命を知る";
}
else if (age >= 40 ){
result ="惑わず";
}
else if (age >= 30 ){
result ="立つ";
}
else if (age >= 15){
result ="学に志す";
}
else{
result ="無し";
}
System.out.print(result); //=> 学に志す
}
}
if..elseの例のフローチャート
4.3. switch文¶
switch文の構文
switch (式) {
case 値1:
命令文1;
break;
case値2:
命令文2;
break;
default:
命令文3;
break;
}
switch文のフローチャート
switch文の例
MyJava03.java
public class MyJava03{
public static void main(String args[]){
int month = 2;
String result="";
switch(month){
case 1: result = "January"; break;
case 2: result = "February"; break;
case 3: result = "March"; break;
case 4: result = "April"; break;
case 5: result = "May"; break;
case 6: result = "June"; break;
case 7: result = "July"; break;
case 8: result = "August"; break;
case 9: result = "September"; break;
case 10: result = "October"; break;
case 11: result = "November"; break;
case 12: result = "December"; break;
default: assert false; break;
}
System.out.print(result);//=>February
}
}
switch文例のフローチャート
4.4. for文¶
for文の構文
for (初期化式; 条件式; 再初期化式) {
命令文;
}
for文のフローチャート
1~10の合計を求めるfor文の例
MyJava04.java
public class MyJava04{
public static void main(String args[]){
int sum = 0;
for(int i=1 ; i<=10 ; i++){
sum += i;
}
System.out.print(sum);//=>55
}
}
for文例のフローチャート
4.5. for-each文¶
for-eachのループ文の説明
for-each文の構文
for (要素の型 反復子変数名:コレクション名){
System.out.print (反復子変数名);
}
1~10の合計を求める。for-each文の例
MyJava05.java
public class MyJava05{
public static void main(String args[]){
int[] nums = {1,2,3,4,5,6,7,8,9,10};
int sum = 0;
for(int num : nums){
sum += num;
}
System.out.print(sum);//=>55
}
}
for-each文のフローチャート
4.6. while文¶
while文の構文
while (継続条件式) {
命令文;
}
while文のフローチャート
1~10の合計を求める。while文の例
MyJava06.java
public class MyJava06{
public static void main(String args[]){
int i = 1;
int sum = 0;
while(i<=10){
sum += i;
i++;
}
System.out.print(sum);//=>55
}
}
while文例のフローチャート
4.7. do..while文¶
do-while文の構文
do {
命令文;
} while (継続条件式);
do-while文のフローチャート
1~10の合計を求める。do-while文の例
MyJava07.java
public class MyJava07{
public static void main(String args[]){
int i = 1;
int sum = 0;
do{
sum += i;
i++;
}while(i<=10);
System.out.print(sum);//=>55
}
}
do-while文のフローチャート
4.8. continue文¶
continueの構文
制御文{
continue;
その後の処理;
}
continue文はfor、while、do while制御文のその後の処理をスキップさせます。
continue文の例
MyJava0801.java
public class MyJava0801{
public static void main(String args[]){
int sum = 0;
for (int i = 1; i <= 10; i++) {
if (i == 3) {
continue; //このループの残りの処理をスキップし、次のループ処理を行う
}
sum += i;
}
System.out.print(sum);//=>52
}
}
continue文のフローチャート
4.9. break文¶
breakの構文
制御文{
break;
}
break文はswitch、for、while、do while制御文を終了さます。
break文の例
MyJava0802.java
public class MyJava0802{
public static void main(String args[]){
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
if (sum >= 30) {
break; // ループを脱出する。
}
}
System.out.print(sum);//=>36
}
}
break文のフローチャート
4.10. ラベル付きcontinue文¶
ラベル付continueの構文
ラベル:制御文{
continue ラベル;
その後の処理;
}
「continue ラベル」文はラベル付for、while、do while制御文のその後の処理をスキップさせます。
ラベル付きのものは、主に多重ループを抜ける処理をスマートの書くために使います。
C言語ではこの機能がないため、同様の処理をgoto文を使って記述することになります。goto文はコーディング規約で禁止されていることが多いので、使うのが悩ましいところです。
ラベル付きcontinue文の例
MyJava0901.java
public class MyJava0901{
public static void main(String args[]){
int sum = 0;
MYLABEL : for (int i = 1; i <= 10; i++) {
for(int j=1; j<=10; j++){
if (i == 3) {
//このループの残りをスキップしMYLABEL:forに戻る。
continue MYLABEL;
}
sum += i * j ;
}
}
System.out.print(sum);//>2860
}
}
ラベル付きcontinue文のフローチャート
4.11. ラベル付きbreak¶
ラベル付breakの構文
ラベル:制御文{
break ラベル;
}
「break ラベル」文はラベル付switch、for、while、do while制御文を終了さます。
ラベル付きのものは、主に多重ループを抜ける処理をスマートの書くために使います。
C言語ではこの機能がないため、同様の処理をgoto文を使って記述することになります。goto文はコーディング規約で禁止されていることが多いので、使うのが悩ましいところです。
ラベル付きbreak文の例
MyJava0902.java
public class MyJava0902{
public static void main(String args[]){
int sum = 0;
MYLABEL : for (int i = 1; i <= 10; i++) {
for(int j=1; j<=10; j++){
sum += i * j ;
if (sum > 15) {
break MYLABEL; // MYLABEL:forのループを脱出する。
}
}
}
System.out.print(sum);//>21
}
}
ラベル付きbreak文のフローチャート
4.12. goto文¶
goto文は予約語ではあるが、現在未定義となっています。