คําสั่งควบคุมการทํางาน
Control Statements
วัตถุประสงค
♦ เพื่อใหมีความรูความเขาใจในการทํางานของคําสั่งตรวจสอบเงื่อนไขแบบสองทางเลือกและ
หลายทางเลือกในภาษาจาวา
♦ เพื่อใหมีความรูความเขาใจในการทํางานของคําสั่งวนรอบเพื่อทําซ้ําในภาษาจาวา
♦ เพื่อสามารถนําคําสั่งตรวจสอบเงื่อนไขแบบมีทางเลือกสองทาง คําสั่งตรวจสอบเงื่อนไขแบบ
มีทางเลือกหลายทาง และคําสั่งวนทําซ้ํา ไปเขียนโปรแกรมตามแบบฝกหัดได
♦ เพื่อสามารถนําคําสั่งตรวจสอบเงื่อนไขแบบมีทางเลือกสองทาง คําสั่งตรวจสอบเงื่อนไข
แบบมีทางเลือกหลายทาง และคําสั่งวนทําซ้ํา ไปเขียนโปรแกรมประยุกตใชกับงานจริงได
บทที่
3
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 67
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
เนื้อหาบทเรียน
♦ คําสั่งตรวจสอบเงื่อนไข
- คําสั่ง if
- คําสั่ง switch
♦ คําสั่งวนทําซ้ํา
- คําสั่งลูป while
- คําสั่งลูป for
- คําสั่งลูป do while
♦ คําสั่งควบคุมอื่นๆ
- คําสั่ง break
- คําสั่ง continue
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 68
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
คําสั่งควบคุมการทํางาน(Control Statements)
คําสั่งควบคุม
ในการเขียนโปรแกรมโดยปกติแลวจะมีการทํางานตามคําสั่งที่เราไดเขียนโปรแกรมไวเปน
ตามลําดับทีละคําสั่ง โดยอาจแบงได 3 รูปแบบ
ตามลําดับ (Sequence Statements)
ตัดสินใจ (Decision Statements)
วนลูป (Loop Statements)
คําสั่งควบคุมตามลําดับ(Sequence Statements)
เปนการเขียนโปรแกรมลักษณะทํางานตามลําดับของคําสั่งที่มีอยูในโปรแกรม ซึ่งจะเริ่มจาก
คําสั่งแรกใน main Method กอน แลวทําทีละคําสั่งไปจนสิ้นสุดคําสั่งใน main Method
ตัวอยางโปรแกรมแบบคําสั่งควบคุมตามลําดับ
public class Example {
public static void main ( String [] args ) {
System.out.println(“Statement1”);
System.out.println(“Statement2”);
System.out.println(“Statement3”);
System.out.println(“Statement4”);
}
}
ผลลัพธที่ไดคือ
Statement1
Statement2
Statement3
Statement4
คําสั่งตัดสินใจ(Decision Statements)
เปนการตัดสินใจภายใตเงื่อนไขที่เรากําหนดไววาจะทําในคําสั่งใด ซึ่งมีอยู 2 คําสั่ง
คําสั่ง if-else
คําสั่ง switch
คําสั่ง if
เปนคําสั่งที่ใชในการตรวจสอบเงื่อนไขวาเปนจริงหรือเท็จ โดยถาเปนจริงจะใหทํางานใด และ
ถาเปนเท็จจะใหทํางานใด
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 69
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
• ไวยกรณ ของ if-else เปนดังนี้:
if (Boolean expression)
statement1;
else
statement2;
Boolean Expression :- ตองมีผลลัพธเปนชนิดขอมูล Boolean เทานั้น
หลักการทํางาน ถา Boolean Expression เปนจริงก็จะทําในคําสั่ง Block แรก ถาเปนเท็จก็จะทํา
ใน Block ของ else จากไวยกรณดังกลาวสามารถจําแนกคําสั่ง if ได 4 รูปแบบ คือ
1. แบบเงื่อนไขเดียว (Simple IF)
มีรูปแบบคือ if (นิพจนตรรก){
นิพจนที่ตองทําเมื่อเงื่อนไขเปนจริง;
}
ถาตรวจสอบเงื่อนไขแลว เปน “จริง” โปรแกรมจะไปทํางานตามคําสั่งตางๆ หลังจาก IF
(ภายในเครื่องหมาย { } ที่อยูภายในคําสั่ง IF )
แตถาเงื่อนไขเปน “เท็จ” โปรแกรมจะไปทํางานกลุมคําสั่งที่อยูหลังเครื่องหมายปกกา } ของ
คําสั่ง IF
หมายเหตุ บรรทัดที่เปนคําสั่ง if จะไมมีเครื่องหมาย Semicolon ( ; ) ปดทาย
ตัวอยาง
if (radius >= 0){
area = radius * pi ;
System.out.println(“Circle Area is ” + area );
}
ตัวอยาง
if (( i >=0 ) and ( i <= 10))
System.out.println(“i is number between 0 to 10 ” ) ;
ตัวอยาง
if (( sex == “m” || sex == “M”))
return “Male”;
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 70
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
2. แบบเงื่อนไข (IF...ELSE…)
ใชในกรณีที่มี 2 เงื่อนไข ถาเงื่อนไขเปนจริง ใหทํางานในสวนกลุมคําสั่งหลังเงื่อนไขนั้นๆ ถา
เปนเท็จใหทํางานกลุมคําสั่งหลัง else
มีรูปแบบดังนี้
if (นิพจนตรรก){
นิพจนตาง ๆ เมื่อเงื่อนไขเปนจริง;
}
else{
นิพจนตาง ๆ เมื่อเงื่อนไขเปนจริง;
}
ตัวอยาง
if ( radius >= 0){
area = radius * pi ;
System.out.println(“Circle Area is ” + area );
}
else {
System.out.println(“Radius less than Zero=> Invalid number” );
}
ตัวอยาง
if (( sex == “m” || sex == “M”))
return height-100;
else
return height-110;
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 71
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
3. แบบซอน (Nested IF)
ใชในกรณีที่ตองการตรวจสอบเงื่อนไขของ if ใหมากยิ่งขึ้น
รูปแบบที่ 1
if (เงื่อนไขที่ 1 ){
if (เงื่อนไขที่ 2 ){
if (เงื่อนไขที่ 3)
.
.
}
}
else{
นิพจนตาง ๆ เมื่อเงื่อนไขเปนเท็จ;
}
รูปแบบที่ 2
if (เงื่อนไขที่ 1 ){
นิพจนตาง ๆ เมื่อเงื่อนไขเปนจริง;
}
else {
if (เงื่อนไขที่ 2 ){
นิพจนตาง ๆ เมื่อเงื่อนไขเปนจริง;
}
else {
if (เงื่อนไขที่ 3){
นิพจน เมื่อเงื่อนไขเปนจริง;
}
}
}
.
.
.
ตัวอยาง แสดงการทํางานของรูปแบบที่ 1
if ( i > k ) {
if ( j > k )
System.out.println(“i and j more than k ”);
}
else
System.out.println(“i less than or equal to k ”)
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 72
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง แสดงการทํางานของรูปแบบที่ 2
if ( score >= 80.0 )
grade = “A”;
else if ( score >= 70.0 )
grade = “B”;
else if ( score >= 60.0 )
grade = “C”;
else
grade = “F”;
4. แบบลัด (Shortcut IF)
เปนคําสั่งที่ใชเขียนคําสั่ง if สั้นลง แตใชไดเฉพาะกับ if ที่เปนแบบ 2 เงื่อนไข (if…else) เทานั้น
โดยมีรูปแบบดังนี้
ตัวแปร = (เงื่อนไข) ? คาหรือคําสั่งเมื่อเงื่อนไขเปนจริง : คาหรือคําสั่งเมื่อเงื่อนไขเปนเท็จ
เชน
if (X > 0)
Y = 1
else
Y = -1;
สามารถเขียนใหสั้นลงดังนี้ : Y = (X>0) ? 1 : -1;
ตัวอยาง การใช ? เพื่อหา Absolute (แปลงคาหรือลบใหเปนคาบวกเทานั้น)
class Ternary {
public static void main(String[ ] args) {
int i,k ;
i = 10;
k = i < 10 ? –i : i ;
System.out.print( “Absolute Number is ” + i + “=” + k );
i = -10;
k = i < 10 ? –i : i ;
System.out.print( “Absolute Number is ” + i + “=” + k );
}
}
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 73
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง
public class DemoIfElse1 {
public static void main(String[] args) {
int testscore = 76;
char grade;
if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " + grade);
}
}
ตัวอยาง การใช if-else-if
import java.io.*;
public class DemoIfElse2 {
public static void main (String args[]) throws IOException {
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Press mounth (1 - 12) ");
String input = " ";
input = stdin.readLine();
int month = Integer.parseInt(input);
String season;
if (month ==1 || month ==2 || month==3)
season = "Medium Hot”;
else if (month ==4 || month ==5 || month==6)
season = "Very Hot”;
else if (month ==7 || month ==8 || month==9)
season = "Hard Rainy";
else if (month ==10 || month ==11 || month==12)
season = "Min Hot";
else
season = "ERROR";
System.out.println ("Month " + month + " = " + season );
}
} // ifElse
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 74
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง การใชตัวดําเนินการใน Boolean expression
int x = 2;
int y = 5;
if (x < 3 && y > 3)
System.out.println(“Add”);
if (x < 3 || y > 3)
System.out.println(“Or”);
ผลลัพธที่ไดคือ
Add
Or
ตัวอยาง การใชตัวดําเนินการตรรกศาสตร && และ || ใน booleanExpression
boolean b1 = false;
boolean b2 = false;
boolean b3 = false;
if ( (b1 = false) && (b2 = true) || (b3 = true) )
System.out.println(b1 + “ ” + b2 + “ ” + b3);
ผลลัพธที่ไดคือ
false false true
ตัวดําเนินการแบบ Short-circuit logical operator กับคําสั่ง IF-ELSE
ตัวดําเนินการ && และ || จะมีการทํางานแบบหนึ่งที่เรียกวา ลัดวงจร(short-circuit logical
operator) ลัดวงจร คือ ถาสามารถรูผลลัพธไดโดยไมตองคํานวณคําสั่งตอไปก็จะยังคํานวณทันที
• && จะหยุดทํางานเมื่อตัวตั้งเปนเท็จ
• || จะหยุดทํางานเมื่อตัวตั้งเปนจริง
ตัวอยาง การใชตัวดําเนินการตรรกศาสตร || ใน booleanExpression
boolean b1 = false;
boolean b2 = false;
if ( (b1 = true) || (b2 = true) )
System.out.println(b1 + “ ” + b2);
ผลลัพธที่ไดคือ
true false
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 75
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง การใชตัวดําเนินการตรรกศาสตร && ใน booleanExpression
boolean b1 = true;
boolean b2 = true;
if ( (b1 = false) && (b2 = false) )
System.out.println(b1 + “ ” + b2);
ผลลัพธที่ไดคือ
false true
ตัวดําเนินการบิทกับขอมูลชนิด Boolean กับคําสั่ง IF-ELSE
ตัวดําเนินการบิทจะหาผลลัพธของคําสั่งตัวตั้งและตัวกระทํากอน แลวนําคาผลลัพธที่ไดมา
กระทํากัน โดยมีลําดับการทํางานดังนี้ ^, & และ | ตามลําดับ
ตัวอยาง การใชตัวดําเนินการบิท & และ | ใน booleanExpression
boolean b1 = false;
boolean b2 = false;
boolean b3 = false;
if ( (b1 = true) & (b2 = true) | (b3 = true) )
System.out.println(b1 + “ ” + b2 + “ ” + b3);
ผลลัพธที่ไดคือ
true true true
ตัวอยาง การใชตัวดําเนินการบิท & และ |
System.out.println(true | true & false);
System.out.println(false | true & true | true & false);
ผลลัพธที่ไดคือ
true
true
ตัวอยาง การใชตัวดําเนินการบิท & และ |
boolean b1 = false;
boolean b2 = (b1 = true) | (b1 = true) & (b1 = false);
System.out.println(b1 + “ ” + b2);
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 76
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ผลลัพธที่ไดคือ
false true
ตัวอยาง การใชตัวดําเนินการบิท &, | และ ^
System.out.println( true | true ^ true & true );
ผลลัพธที่ไดคือ
true
ตัวอยาง การใช if-else รวมกับ logical operator
int i = 3;
int j = 4;
int k = 5;
if ( (i = 6) || (j = 7) && (k = 8) )
System.out.println(i + “ ” + j + “ ” + k);
ผลลัพธที่ไดคือ– ไมสามารถนําชนิดขอมูล Integer มาดําเนินการแบบตรรกศาสตรได
Compiled Error
คําสั่ง switch
เปนการตรวจสอบเงื่อนไขโดยดูจากคาตัวแปร ( คลายกับคําสั่ง CASE ) ทั้งนี้การใช Switch จะ
ใชไดกับตัวแปรที่เปนตัวเลขเทานั้นประโยค switch สามารถใชในการทํางานแบบเลือกคําตอบเงื่อนไข
ใชประโยค default เพื่อเปนการจัดรายการที่เลือกไมตรงกับที่กําหนด
รูปแบบโครงสราง (Syntax) ของ Switch:
switch ( variable or Expression ) {
case Constant Expression 1: [statements] [break;]
case Constant Expression 2: [statements] [break;]
.
.
.
case Constant Expression N: [statements] [break;]
default: [break;]
}
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 77
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
Variable or Expression
- ใชไดเฉพาะตัวแปรที่เปนชนิดขอมูล char, byte, short และ int
Constant Expression
- จะตองเปนคาคงตัว(Literal)เทานั้น ถาเปนตัวแปรตองเปน final (ศึกษาเพิ่มเติมในบทที่ 9)
- เปนคาคงตัวที่มีชนิดขอมูลที่สอดคลองกับ Variable หรือ Expression และสามารถมีไดคาเดียว
ในหนึ่ง Constant Expression
- คาแตละ Constant Expression จะตองไมซ้ํากัน
หลักการทํางาน นําคาของ Variable or Expression ไปเปรียบเทียบกับคาของ Constant
Expression ที่มีทั้งหมด ถาตรงกับ Constant Expression ตัวใดก็จะเลือกที่จะทํางานใน Constant
Expression นั้นจนพบกับคําสั่ง break หรือจบรูปแบบของคําสั่ง switch แตถาไมตรงกับ Constant
Expression ใดเลยแลวมี default อยูก็จะทํางานใน default จนพบกับคําสั่ง break หรือจบรูปแบบของคําสั่ง
switch
หมายเหตุ คําสั่ง break จะทําใหโปรแกรมกระโดดออกไปทํางานนอกคําสั่ง switch
ตัวอยาง การใช Switch
public class SwitchDemo1 {
public static void main (String args[]) {
for (int i=0; i<6; i++)
switch (i) {
case 0:
System.out.println ("I = 0");
break;
case 1:
System.out.println ("I = 1");
break;
case 2:
System.out.println ("I = 2");
break;
case 3:
System.out.println ("I = 3");
break;
default:
System.out.println ("I > 3");
}
}}
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 78
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ผลลัพธที่ไดคือ
I = 0
I =1
I = 2
I= 3
I > 3
I > 3
ตัวอยาง
public class SwitchDemo2 {
public static void main(String[] args) {
int month = 8;
switch (month) {
case 1: System.out.println("January");
break;
case 2: System.out.println("February");
break;
case 3: System.out.println("March");
break;
case 4: System.out.println("April");
break;
case 5: System.out.println("May");
break;
case 6: System.out.println("June");
break;
case 7: System.out.println("July");
break;
case 8: System.out.println("August");
break;
case 9: System.out.println("September");
break;
case 10: System.out.println("October");
break;
case 11: System.out.println("November");
break;
case 12: System.out.println("December");
break;
}
} }
ผลลัพธที่ไดคือ
August
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 79
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง
class SwitchDemo{
public static void main(String args[]){
int rate=0;
int year =0;
switch (year){
case 5: rate = 12;
break;
case 15 :rate =18;
break;
case 30 : rate = 24;
break;
default : System.out.println("");}
}
}
ตัวอยาง
public class SwitchDemo3 {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;
case 4:
case 6:
case 9:
case 11:
numDays = 30;
break;
case 2:
if(((year % 4 == 0) &&!(year % 100 == 0)) || (year % 400 == 0))
numDays = 29;
else
numDays = 28;
break;
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 80
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
}
System.out.println("Number of Days = " + numDays);
}
}
จะเห็นวาทุกหัวขอที่เลือกทุกแนวทางจะมี breakผิดพลาด! ไมไดกําหนดที่คั่นหนา เพื่อใหออก
จาก switch และ default เปนหัวขอที่กําหนดไวในกรณีที่ผูใชโปรแกรมเลือกแบบอื่น ๆ ที่ ไมไดกําหนด
ไวกอน
ขอจํากัดของการใชคําสั่ง Switch
• ตัวแปรที่ใชในการตรวจสอบ จะตองมีชนิดเปนตัวเลขอยางใดอยางหนึ่ง ไดแก char, byte, short
หรือ int และตองอยูภายในเครื่องหมายวงเล็บ () เทานั้น
• ชนิดของตัวเลขที่ใชในการตรวจสอบในคําสั่ง case จะตองเปนชนิดเดียวกันหมด
• อาจไมใสคําสั่ง break ไวก็ได แตถาไมใส จะทําใหโปรแกรมตองตรวจสอบทุก ๆ เงื่อนไข
จนกวาจะหมดซึ่งอาจทําใหเสียเวลาได ถาเงื่อนไขมีมากและซับซอน
• คําสั่ง default อาจใสหรือไมใสก็ได ถาใสก็จะนิยมวางไวที่บรรทัดสุดทายของการตรวจสอบ
ตัวอยาง การใช Expression ใน Variable or Expression และ คําสั่ง break
String x = “xyz”;
switch ( x.length() - 1 ) {
// x.length() เปนการเรียก method ที่คืนคาความยาวของขอความตัวแปร x ในที่นี้ x.length() = 3
case 1:
System.out.println(“length is one”);
break;
case 2:
System.out.println(“length is two”);
break;
case 3:
System.out.println(“length is three”);
break;
default:
System.out.println(“on match”);
}
ผลลัพธที่ไดคือ
length is two
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 81
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง การใช Variable or Expression
Integer in = new Integer(3);
switch(in) {
case 1 :
System.out.println(“1”);
break;
case 2 :
System.out.println(“2”);
break;
case 3:
System.out.println(“3”);
break;
}
ผลลัพธที่ได : Compiled Error
เนื่องจาก Variable or Expression ตองเปนตัวแปรชนิดขอมูล char, byte, shor และ int
เทานั้น แตในตัวอยางนี้ใชตัวแปรกลุม wrapper class (Integer) ซึ่งจะไดเรียนในบทที่ 11 จึงทําใหเกิด
ขอผิดพลาดในการคอมไพล
ตัวอยาง การใชตัวแปรแบบ final (กําหนดใหเปนตัวแปรคงที่ในภาษาจาวา)ใน Constant Expression
final int one = 1;
final int two = 2;
int x = 1;
switch (x) {
case one: System.out.println("one");
break;
case two: System.out.println("two");
break;
case two + 1: System.out.println("two plus one");
break;
}
ผลลัพธที่ได
one
เนื่องจาก one และ two เปนตัวแปรชนิด final ทําใหทั้งสองตัวแปรเปนคาคงที่ ซึ่งจะไดกลาว
อยางละเอียดในบทที่ 9 ตัวแปร final
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 82
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง การใช Constant Expression
byte g = 23;
switch(g) {
default:
break;
case 23:
System.out.println(“23”);
case 128:
System.out.println(“128”);
break;
}
ผลลัพธที่ได - Compiled Error
เนื่องจากคาของ Constant Expression ที่เปน 128 ไมใชชนิดขอมูล byte
ตัวอยาง การใช Constant Expression
int temp = 90;
switch(temp) {
case 80 :
System.out.println("80");
break;
case 75 + 5 :
System.out.println(“75 + 5");
break;
case 90:
System.out.println("90");
break;
}
ผลลัพท – Compiled Error
มีคา Constant Expression ซ้ํากัน
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 83
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง การใช switch
int x = 1;
switch(x) {
case 1: System.out.println("x is one");
case 2: System.out.println("x is two");
case 3: System.out.println("x is three");
}
System.out.println("out of the switch");
ผลลัพธที่ไดคือ
x is one
x is two
x is three
out of the switch
ตัวอยาง การใช switch
int x = 5;
switch (x) {
case 2: System.out.println(“2”);
default: System.out.println(“default”);
case 3: System.out.println(“3”);
case 4: System.out.println(“4”);
}
ผลลัพธที่ไดคือ
default
3
4
คําสั่งควบคุมการวนลูป (Loop Statements)
เปนกลุมคําสั่งที่ใชในการวนรอบ(loop) การทํางานไปเรื่อยๆ จนกวาเงื่อนไขที่กําหนดไวจะเปน
จริง จึงจะหลุดออกจากวงโคจรการวนรอบนี้ได คําสั่งในกลุมนี้ ไดแก
• คําสั่ง while
• คําสั่ง do … while
• คําสั่ง for
• คําสั่ง break และ continue
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 84
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
คําสั่งแบบ while
ใชคําสั่ง while เมื่อเงื่อนไขเปนจริง จะทําคําสั่งตางๆ ใน loop ไปเรื่อยๆ จนกวาเมื่อตรวจพบวา
เงื่อนไขเปนเท็จ จึงกระโดดออกมาทํางานที่คําสั่งถัดไปที่อยูนอก loop ของคําสั่ง while โดยที่ตรวจสอบ
กอนแลวจึงทํางาน (loop) การวนนี้จะใชการวน มากกวา หนึ่งครั้ง หรือ ไมวนเลยก็ได ถาเงื่อนไขเปนเท็จ
รูปแบบการใช while มีโครงสรางดังนี้:
Boolean Expression
- ตองมีผลลัพธเปนชนิดขอมูล Boolean เทานั้น
หลักการทํางาน
1. Boolean Expression เปนจริงทํางานตอ ถาเปนเท็จจบการทํางาน
2. ทํางานใน Block
3. กลับไปทําขั้นตอนที่ 1
ตัวอยาง การทดลองบวกเลข 1 ถึง 100
class WhileDemo1 {
public static void main (String[] args) {
int x = 1;
int total = 0;
while (x <= 100) {
total += x;
x = x + 1;
}
System.out.println (“The series from 1 to 100 is “ + total);
}
}
ผลลัพธที่ไดคือ
The series from 1 to 100 is 5050
while ( Boolean Expression ) [{]
[statements]
[}]
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 85
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง ทดลองสรางโปรแกรมทําการบวกเลขแบบอนุกรมจาก x ถึง y โดยที่ x และ y เปนเลข
Integer ใด ๆ ที่รับจาก user เขามา เขียนแลวเก็บใน WhieDemo2
class WhileDemo2{
public static void main(String[] args) {
int num1 = Integer.parseInt(args[0]);
int num2 = Integer.parseInt(args[1]);
int x = num1;
int total = num1;
while (x <= num2) {
total += x;
x = x + 1;
}
System.out.println (“The series from “ + num1 + “ to “ + num2 + “ is “ + total);
}
}
ตัวอยาง
class WhileDemo3 {
public static void main(String args[]){
float Number = 2000 ;
int TimesMoved = 0 ;
while (Number >= 1.0){
Number *=0.1 ;
TimesMoved++ ;
}
System.out.println ("Number : "+Number) ;
System.out.println ("Times : "+TimesMoved) ;
}
}
ผลลัพธที่ไดคือ
Number : 0.2
Times : 4
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 86
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
คําสั่งแบบ do…while
เงื่อนไขแบบนี้ จะเปนการทํางานในลูปรอบแรก กอนแลวจะตรวจสอบเงื่อนไขที่คําสั่ง while
หลังจากที่ทํางานเสร็จแลว ดังนั้น Loop จะวนอยางนอย หนึ่งรอบเสมอ ซึ่งแตกตางกับเงื่อนไขแบบ
แรก โดยถาเงื่อนไขเปนจริงก็จะกลับขึ้นไปทํางานที่คําสั่งตางๆ ใหม แตถาไมเปนจริงก็จะหลุด
ออกมาทํางานที่คําสั่งตอไป
รูปแบบของประโยค do … while :
Boolean Expression
- ตองมีผลลัพธเปนชนิดขอมูล Boolean เทานั้น
- do-while จะตองปดดวยสัญลักษณ ;
หลักการทํางาน
1. ทํางานใน Block
2. Boolean Expression เปนจริงทํางานตอ ถาเปนเท็จจบการทํางาน
3. กลับไปทําขั้นตอนที่ 1
ตัวอยาง:
int x = 0;
do {
x += 1;
} while (x <= 10);
ตัวอยาง
class DoWhileDemo1 {
public static void main (String args[]){
int data = 0;
int sum = 0;
do{
data = data+1;
sum += data ;
}while (data <=10) ;
System.out.println ("ผลรวมคือ : " + sum) ;
}
}
do [{]
[statements]
[}] while ( Boolean Expression );
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 87
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง สรางเมนูโดยใชคําสั่ง do … while
public class DoWhileDemo2{
public static void main (String args[])
throws java.io.IOException{
char choice;
do{
System.out.println("Help on: ");
System.out.println(" 1. If");
System.out.println(" 2. Switch");
System.out.println(" 3. While");
System.out.println(" 4. Do .. While");
System.out.println(" 5. For n");
System.out.println("Choose One");
choice = (char) System.in.read();// รับขอมูลจากจอภาพมา 1 ตัวอักษร
}while (choice < '1' || choice > '5');
System.out.println ("n");
switch (choice) {
case '1':
System.out.println ("The if:n");
System.out.println ("if (condition) statement;");
System.out.println ("else statement;");
break;
case '2':
System.out.println ("The switch:n");
System.out.println ("switch (expression){");
System.out.println ("statement sequence");
System.out.println ("break; ");
System.out.println (" || … ");
System.out.println ("}");
break;
case '3':
System.out.println ("The while:n");
System.out.println ("while(condition) statement;");
break;
case '4':
System.out.println ("The do … while:n");
System.out.println ("do { ");
System.out.println (" statement; ");
System.out.println ("} while conditions); ");
break;
case '5':
System.out.println ("The for:n");
System.out.println ("for(int; condition; iteration)");
System.out.println (" statement; ");
break; } } }
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 88
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
คําสั่ง for
คลายกับการใช while แตเงื่อนไขทั้งหมดจะถูกบันทึกลงไป กอนเขาการเริ่มของ Loop ในวงเล็บ
รูปแบบคําสั่งโครงสรางของประโยค for
Declaration and Initialization
- เปนการประกาศตัวแปร และ กําหนดคาเริ่มตนใหกับตัวแปร
- สามารถมีตัวแปรไดตั้งแต 0 ตัวขึ้นไป
- ถามีมากกวา 1 ตัวแปรใชสัญลักษณ , คั่น แตจะตองเปนชนิดขอมูลเดียวกัน
Boolean Expression
- เปนเงื่อนไขการตัดสินใจวาจะทําตอไปหรือไม ถาเปนจริงทําตอแตถาเปนเท็จจะหยุดทํางาน
คําสั่งนี้
- สามารถมี 0 เงื่อน หรือ หนึ่งเงื่อนไข เทานั้น
- ตองมีผลลัพธเปนชนิดขอมูล Boolean เทานั้น
Iteration Expression
- ใชเปนการปรับปรุงคาของตัวแปร
- สามารถมีคําสั่งไดตั้งแต 0 ตัวขึ้นไป
- ถามีมากกวา 1 คําสั่งใชสัญลักษณ , คั่น
หลักการทํางาน
1. ทํางานใน Declaration and Initialization
2. ทํางานใน Boolean Expression ถาเปนจริงทํางานตอ ถาเปนเท็จจบการทํางานของ for
3. ทํางานใน Block ของ { }
4. ทํางานใน Iteration Expression
5. กลับไปทําขั้นตอนที่ 2
ตัวอยาง:
for(int x=1; x < 5; x++)
System.out.println (x);
ผลลัพธที่ไดคือ
1
2
3
4
for ( Declaration and Initialization; Boolean Expression; Iteration Expression ) [{]
[statements]
[}]
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 89
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง การใช Declaration and Initialization ที่ผิด
for( short i=0, int j=0 ; i < 4; i += 2, j++ ) {
System.out.println(i + “ ” + j );
}
ผลลัพธที่ไดคือ
Compiled Error
ตัวอยาง การใช Declaration and Initialization ที่ถูก
for (int i=0, j=0; i < 4; i += 2, j++) {
System.out.println(i + “ ” + j);
}
ผลลัพธที่ไดคือ
0 0
2 1
ตัวอยาง การใช Boolean Expression ที่ผิด
for( int i=0, j=0 ; i < 4, j < 2; i += 2, j++ ) {
System.out.println(i + “ ” + j );
}
ผลลัพธที่ไดคือ
Compiled Error
ตัวอยางการใช Boolean Expression ที่ถูก
for (int i=0, j=0; i < 4 && j < 2; i += 2, j++) {
System.out.println(i + “ ” + j);
}
ผลลัพธที่ไดคือ
0 0
2 1
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 90
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยางการใช Iteration Expression ที่ใข Methods
for( int i = 0; i < 2; System.out.println(“Iteration”) ) {
i++;
}
ผลลัพธที่ไดคือ
Iteration
Iteration
ตัวอยาง การใช for
for( int i = 0; i < 4; i += 2 ) {
System.out.print(i + “ ” );
}
System.out.println(i);
ผลลัพธที่ไดคือ
Compiled Error
ตัวอยาง คําสั่ง for ถือวาเปน Block แบบหนึ่งจึงมีคุณสมบัติการอางถึงตัวแปร
int i = 0;
for( ; i < 4; i += 2 ) {
System.out.print(i + “ ” );
}
System.out.println(i);
ผลลัพธที่ไดคือ
0 2 4
ตัวอยาง
class ForDemo1 {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 };
// arrayOfInts เปนตัวแปรชนิด อารเรย ซึ่งจะไดเรียนตอไปในบทที่ 6
for (int i = 0; i < arrayOfInts.length; i++) {
// arrayOfInts.length บอกถึงขนาดของอารเรย
System.out.print(arrayOfInts[i] + " ");
}
System.out.println();} }
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 91
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ผลลัพธที่ไดคือ
32 87 3 589 12 1076 2000 8 622 127
ตัวอยาง // ใชเครื่องหมายคอมมาในการกําหนดคาเริ่มตนในคําสั่ง for
class ForDemo2{
public static void main (String args[]){
int a, b;
for (a=1, b=4; a<b; a++, b--){
System.out.println ("a=" + a);
System.out.println("b=" + b);
}
} }
ผลลัพธที่ไดคือ
a=1
b=4
a=2
b=3
ตัวอยาง loops แบบซับซอน
class ForDemo3{
public static void main (String args[]){
int i, j;
for (i=0; i<5; i++){
for (j=i; j<8; j++)
System.out.print ("*");
System.out.println();
}
}
}
ผลลัพธที่ไดคือ
********
*******
******
*****
****
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 92
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง
class ForDemo4{
public static void main (String[] args){
final int COLUMN_WIDTH = 8;
for (int x = 1; x <= 7; x++){ // พิมพตัวเลขในแถว
for (int y = 1; y <= 5; y++){
int p = (int)Math.pow(x,y);
// Math.pow(x,y) หาคา x ยกกําลัง y
System.out.print(p + "t");
}
System.out.println();
}
}
}
ผลลัพธที่ไดคือ
1 1 1 1 1
2 4 8 16 32
3 9 27 81 243
4 16 64 2561024
5 25 1256253125
6 36 2161296 7776
7 49 3432401 16807
ตัวอยาง
import java.io.*;
public class ForDemo5{
public static void main (String[] args) throws IOException {
BufferedReader stdin = new BufferedReader(new
inputStreamReader(System.in));
System.out.println("Press Enter Data ");
String s = stdin.readLine();
String r = " ";
for (int I =0; I < s.length(); I++) {
char ch = s.charAt(I);
r = ch + r; // นําคาใน ch มาใสไวขางหนาขอความเดิม
System.out.println( r );
}
System.out.println(s + "Data reverse is " + r);
}} // Reverse
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 93
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ผลลัพธที่ไดคือ จากการ runC:testJavach3>java ForDemo5
Press Enter Data
Hello
H
eH
leH
lleH
olleH
HelloData reverse is olleH
ประโยค break และ continue
รูปแบบการใชงาน
Break ถาโปรแกรมพบคําสั่งนี้ จะหลุดออกจาก Loop การทํางานทันที
จะตองอยูใน Block ของคําสั่ง switch หรือกลุมคําสั่งวนลูป
Continue ถาโปรแกรมพบคําสั่งนี้ จะทําใหหยุดการทํางานที่จุดนั้น แลวยอนกลับไป
เริ่มตนการทํางานที่ตน Loop ใหม จะตองอยูใน Block ของกลุมคําสั่งวนลูป
หลักการทํางาน
break – เปนคําสั่งใหจบการทํางานของคําสั่ง switch หรือกลุมคําสั่งวนลูป
continue – เปนคําสั่งขามการทํางานใน Block คําสั่งแลวไปทําคําสั่งวนลูป
ตัวอยาง คําสั่ง break กับกลุมคําสั่งวนลูป
for (int i=1, j=3; i < 10; i++) {
if( i > j )
break;
j--;
}
ผลลัพธที่ได
i = 3, j = 1
switch or loops statement {
…
break;
…
}
loops statement {
…
contine;
…
}
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 94
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง
int i=1; j=3;
while(++i < 10) {
if( i > j )
break;
j--;
}
ผลลัพธที่ได
i = 3, j = 2
ตัวอยาง
int i=1; j=3;
do {
if( i > j )
break;
j--;
} while( ++i < 10 );
ผลลัพธที่ได
i = 3, j = 1
ตัวอยาง คําสั่ง continue กับกลุมคําสั่งวนลูป
for (int i=1, j=3; i < 10; i++) {
if( i > j )
continue;
j--;
}
ผลลัพธที่ได
i = 10, j = 1
ตัวอยาง
int i=1; j=3;
while(++i < 10) {
if( i > j )
continue;
j--;
}
ผลลัพธที่ได : i = 10, j = 2
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 95
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง
int i=1; j=3;
do {
if( i > j )
continue;
j--;
} while( ++i < 10 );
ผลลัพธที่ได
i = 10, j = 1
ตัวอยาง
while (num2 < 1000) {
total = total + num2;
if (total >= 2000)
break;
num2 ++;
}
ในกรณีนี้ ถา total >= 2000 เมื่อใด โปรแกรมจะหลุดออกจาก Loopทันที
การใช Labeled กลับกลุมคําสั่งวนลูป
รูปแบบ
LabelName: – เปนการประกาศชื่อของคําสั่งวนลูปซึ่งจะประกาศไวกอนกลุม คําสั่งวนลูป - ใชรวมกับ
คําสั่ง break กับคําสั่ง continue โดยเปนการระบุวา ตองการใชคําสั่ง break หรือคําสั่ง continue กับคําสั่ง
วนลูปที่ชื่ออะไร
LabelName:
loops statement {
…
break LabelName;
continue LabelName;
…
}
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 96
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง
int y = 8;
outer:
for (int i=0; i < 5; i++) {
while(y > 7) {
System.out.println(“Hello”);
break outer;
}
System.out.println(“Outer loop”);
}
System.out.println(“Good-Bye”);
ผลลัพธที่ไดคือ
Hello
Good-Bye
ตัวอยาง
int y = 8;
outer:
for (int i=0; i < 5; i++) {
while(y > 7) {
System.out.println(“Hello”);
continue outer;
}
System.out.println(“Outer loop”);
}
System.out.println(“Good-Bye”);
ผลลัพธที่ไดคือ
Hello
Hello
Hello
Hello
Hello
Good-Bye
ตัวอยาง การ ใช break แบบ goto
class BreakDemo{
public static void main (String args[]){
First:{
Second:{
Third:{
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 97
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
System.out.println("Before the break");
break Second; // ไปที่หลัง loop ของ label ชื่อ Second
}
}
System.out.println("This will be executed");
}
}
}
ตัวอยาง // การใช Nested Loop กับ break label
class Breakloop{
public static void main (String args[]){
outer : for (int i=0; i<3; i++){
System.out.print ("Pass " + i + ": ");
for (int j=0; j<10; j++)
{System.out.print(j+ " ");}
break outer;
}
System.out.println ("Loops complete.");
}
}
ตัวอยาง การใช Continue กับ label
public class ContinueLabel{
public static void main (String args[]){
Outer: for (int i=0; i<10; i++){
for (int j=0; j<10; j++){
if (j>i){
System.out.println();
continue Outer;
}
System.out.print(" " + (i*j));
}
}
System.out.println();
}
}
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 98
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง
outer:
int y = 8;
for (int i=0; i < 5; i++) {
while(y > 7) {
System.out.println(“Hello”);
continue outer;
}
System.out.println(“Outer loop”);
}
System.out.println(“Good-Bye”);
ผลลัพธทีไดคือ : Compiled Error
Outer.java:6: '.class' expected
int y = 8;
^
Outer.java:6: not a statement
int y = 8;
^
2 errors
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 99
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
แบบฝกหัด
1. จงบอกถึงความแตกตางระหวางการใชคําสั่ง if, switch
2. จงหาถึงความแตกตางระหวางคําสั่ง while, do…while , for
3. จงบอกถึงขอผิดพลาดของโปรแกรมตอไปนี้ พรอมทั้งบอกวิธีแกไขดวย
3.1 while ( 3 = 2 )
int N = N + 1;
System.out.println(N);
3.2 char Size
switch (Size)
case s : price = 100;
case m : price = 200;
case 1 = price = 300;
3.3 if (sex = “F” || sex = “f”)
return height – 110;
else
return height – 100
3.4 for (I =0 ; I <3; I ++ )
for (j=I; j < 10 ; j++)
Systen.out.println(I,j );
3.5 if ( I > = 0 “ I <=10)
System.out.println(“I”+I);
3.6 if (score < 60) grade = “D”;
if (score < 70) grade = “C”;
if (score < 80) grade = “B”;
if (score >=80) grade = “A”;
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 100
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
4. คําสั่ง for ตอไปนี้ใหเปลี่ยนเปน do-whlie
class Q3{
public static void main(String[ ] args){
for ( int i = 0 ;i < 20; i ++ ) {
for ( int j = 20 ;j > 1; j -- )
System.out.println(“i + j is” i+j ); } } }
5. เขียนโปรแกรมคํานวณภาษีเงินได ดังนี้
ถาเงินไดมากกวา 1 ลานบาท ใหคิดภาษี 20 %
ถาเงินไดอยูระหวาง 5 แสน และ 1 ลาน ใหคิดภาษี 15 %
ถาเงินไดนอยกวา 5 แสน ใหคิดภาษี 10 %
6. เขียนโปรแกรม Java ใหรับคาชื่อของผูเขียนโปรแกรม ทําการพิมพ 50 ครั้ง
7. เขียนโปรแกรมเพื่อทําการคํานวณการบวกจาก 1 ถึง 1000 โดยที่บวกเฉพาะเลขคี่ (1, 3, 5, . . . )
8. จงเขียนโปรแกรมเพื่อแสดงจอภาพผลลัพธดังนี้
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
9. จงเขียนโปรแกรมเพื่อแสดงจอภาพผลลัพธดังนี้
Pass 0 : 0 1 2 3 4 5 6 7 8 9
Pass 1 : 0 1 2 3 4 5 6 7 8 9
Pass 2 : 0 1 2 3 4 5 6 7 8 9
Loop complete
10. จงเขียนโปรแกรมแมสูตรคูณ โดยรับคาจากทางแปนพิมพ แลวแสดงผลลัพธ
11. จงเขียนโปรแกรมเพื่อคํานวณเกรดและแสดงผลลัพธ มีคะแนนสอบแตละครั้ง ดังนี้ ครั้งที่ 1 คะแนน
เต็ม 20 ครั้งที่ 2 คะแนนเต็ม 30 และครั้งที่ 3 คะแนนเต็ม 50 ใหนํามาหาผลรวมและคํานวณเกรด โดย
มีเงื่อนไขอยูวา
ถาคะแนน >= 80 ใหเกรด A
70 > = คะแนน < 80 ใหเกรด B
60 > = คะแนน < 70 ใหเกรด C
50 > = คะแนน < 60 ใหเกรด D
คะแนน < 50 ใหเกรด F
บทที่ 3 คําสั่งควบคุมการทํางาน หนาที่ 101
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
12. จากโปรแกรมตอไปนี้ไดผลลัพธเปนเชนไร
class Alpha1 {
public static void main( String[] args ) {
boolean flag; int i=0;
do {
flag = false;
System.out.println( i++ );
flag = i < 10;
continue;
} while ( (flag)? true:false );
} }
13. แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้
int x = 1, y =6;
while (y--) {
x++;
}
System.out.println(“x =” + x + “y =” +y);
14. แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้
int i = 0, j = 1;
if ((i++ == 1) && (j++ == 2)) {
i = 42;
}
System.out.println(“i = “ + i + “, j = “ + j);
15. แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้
int i= 1, j= 10 ;
แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้do {
if (i++> --j) continue;
} while (i<5);
16. แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้
class Test16 {
public static void main(String []args) {
int i = 0, j = 5;
tp:
for (;;) {
i ++;
for(;;)
if(i > --j)
break tp;
}
System.out.println(“i = ” + i + “, j = “+ j);
}
}

บทที่ 3 คำสั่งควบค

  • 1.
    คําสั่งควบคุมการทํางาน Control Statements วัตถุประสงค ♦ เพื่อใหมีความรูความเขาใจในการทํางานของคําสั่งตรวจสอบเงื่อนไขแบบสองทางเลือกและ หลายทางเลือกในภาษาจาวา ♦เพื่อใหมีความรูความเขาใจในการทํางานของคําสั่งวนรอบเพื่อทําซ้ําในภาษาจาวา ♦ เพื่อสามารถนําคําสั่งตรวจสอบเงื่อนไขแบบมีทางเลือกสองทาง คําสั่งตรวจสอบเงื่อนไขแบบ มีทางเลือกหลายทาง และคําสั่งวนทําซ้ํา ไปเขียนโปรแกรมตามแบบฝกหัดได ♦ เพื่อสามารถนําคําสั่งตรวจสอบเงื่อนไขแบบมีทางเลือกสองทาง คําสั่งตรวจสอบเงื่อนไข แบบมีทางเลือกหลายทาง และคําสั่งวนทําซ้ํา ไปเขียนโปรแกรมประยุกตใชกับงานจริงได บทที่ 3
  • 2.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 67 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ เนื้อหาบทเรียน ♦ คําสั่งตรวจสอบเงื่อนไข - คําสั่ง if - คําสั่ง switch ♦ คําสั่งวนทําซ้ํา - คําสั่งลูป while - คําสั่งลูป for - คําสั่งลูป do while ♦ คําสั่งควบคุมอื่นๆ - คําสั่ง break - คําสั่ง continue
  • 3.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 68 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ คําสั่งควบคุมการทํางาน(Control Statements) คําสั่งควบคุม ในการเขียนโปรแกรมโดยปกติแลวจะมีการทํางานตามคําสั่งที่เราไดเขียนโปรแกรมไวเปน ตามลําดับทีละคําสั่ง โดยอาจแบงได 3 รูปแบบ ตามลําดับ (Sequence Statements) ตัดสินใจ (Decision Statements) วนลูป (Loop Statements) คําสั่งควบคุมตามลําดับ(Sequence Statements) เปนการเขียนโปรแกรมลักษณะทํางานตามลําดับของคําสั่งที่มีอยูในโปรแกรม ซึ่งจะเริ่มจาก คําสั่งแรกใน main Method กอน แลวทําทีละคําสั่งไปจนสิ้นสุดคําสั่งใน main Method ตัวอยางโปรแกรมแบบคําสั่งควบคุมตามลําดับ public class Example { public static void main ( String [] args ) { System.out.println(“Statement1”); System.out.println(“Statement2”); System.out.println(“Statement3”); System.out.println(“Statement4”); } } ผลลัพธที่ไดคือ Statement1 Statement2 Statement3 Statement4 คําสั่งตัดสินใจ(Decision Statements) เปนการตัดสินใจภายใตเงื่อนไขที่เรากําหนดไววาจะทําในคําสั่งใด ซึ่งมีอยู 2 คําสั่ง คําสั่ง if-else คําสั่ง switch คําสั่ง if เปนคําสั่งที่ใชในการตรวจสอบเงื่อนไขวาเปนจริงหรือเท็จ โดยถาเปนจริงจะใหทํางานใด และ ถาเปนเท็จจะใหทํางานใด
  • 4.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 69 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ • ไวยกรณ ของ if-else เปนดังนี้: if (Boolean expression) statement1; else statement2; Boolean Expression :- ตองมีผลลัพธเปนชนิดขอมูล Boolean เทานั้น หลักการทํางาน ถา Boolean Expression เปนจริงก็จะทําในคําสั่ง Block แรก ถาเปนเท็จก็จะทํา ใน Block ของ else จากไวยกรณดังกลาวสามารถจําแนกคําสั่ง if ได 4 รูปแบบ คือ 1. แบบเงื่อนไขเดียว (Simple IF) มีรูปแบบคือ if (นิพจนตรรก){ นิพจนที่ตองทําเมื่อเงื่อนไขเปนจริง; } ถาตรวจสอบเงื่อนไขแลว เปน “จริง” โปรแกรมจะไปทํางานตามคําสั่งตางๆ หลังจาก IF (ภายในเครื่องหมาย { } ที่อยูภายในคําสั่ง IF ) แตถาเงื่อนไขเปน “เท็จ” โปรแกรมจะไปทํางานกลุมคําสั่งที่อยูหลังเครื่องหมายปกกา } ของ คําสั่ง IF หมายเหตุ บรรทัดที่เปนคําสั่ง if จะไมมีเครื่องหมาย Semicolon ( ; ) ปดทาย ตัวอยาง if (radius >= 0){ area = radius * pi ; System.out.println(“Circle Area is ” + area ); } ตัวอยาง if (( i >=0 ) and ( i <= 10)) System.out.println(“i is number between 0 to 10 ” ) ; ตัวอยาง if (( sex == “m” || sex == “M”)) return “Male”;
  • 5.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 70 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 2. แบบเงื่อนไข (IF...ELSE…) ใชในกรณีที่มี 2 เงื่อนไข ถาเงื่อนไขเปนจริง ใหทํางานในสวนกลุมคําสั่งหลังเงื่อนไขนั้นๆ ถา เปนเท็จใหทํางานกลุมคําสั่งหลัง else มีรูปแบบดังนี้ if (นิพจนตรรก){ นิพจนตาง ๆ เมื่อเงื่อนไขเปนจริง; } else{ นิพจนตาง ๆ เมื่อเงื่อนไขเปนจริง; } ตัวอยาง if ( radius >= 0){ area = radius * pi ; System.out.println(“Circle Area is ” + area ); } else { System.out.println(“Radius less than Zero=> Invalid number” ); } ตัวอยาง if (( sex == “m” || sex == “M”)) return height-100; else return height-110;
  • 6.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 71 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 3. แบบซอน (Nested IF) ใชในกรณีที่ตองการตรวจสอบเงื่อนไขของ if ใหมากยิ่งขึ้น รูปแบบที่ 1 if (เงื่อนไขที่ 1 ){ if (เงื่อนไขที่ 2 ){ if (เงื่อนไขที่ 3) . . } } else{ นิพจนตาง ๆ เมื่อเงื่อนไขเปนเท็จ; } รูปแบบที่ 2 if (เงื่อนไขที่ 1 ){ นิพจนตาง ๆ เมื่อเงื่อนไขเปนจริง; } else { if (เงื่อนไขที่ 2 ){ นิพจนตาง ๆ เมื่อเงื่อนไขเปนจริง; } else { if (เงื่อนไขที่ 3){ นิพจน เมื่อเงื่อนไขเปนจริง; } } } . . . ตัวอยาง แสดงการทํางานของรูปแบบที่ 1 if ( i > k ) { if ( j > k ) System.out.println(“i and j more than k ”); } else System.out.println(“i less than or equal to k ”)
  • 7.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 72 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง แสดงการทํางานของรูปแบบที่ 2 if ( score >= 80.0 ) grade = “A”; else if ( score >= 70.0 ) grade = “B”; else if ( score >= 60.0 ) grade = “C”; else grade = “F”; 4. แบบลัด (Shortcut IF) เปนคําสั่งที่ใชเขียนคําสั่ง if สั้นลง แตใชไดเฉพาะกับ if ที่เปนแบบ 2 เงื่อนไข (if…else) เทานั้น โดยมีรูปแบบดังนี้ ตัวแปร = (เงื่อนไข) ? คาหรือคําสั่งเมื่อเงื่อนไขเปนจริง : คาหรือคําสั่งเมื่อเงื่อนไขเปนเท็จ เชน if (X > 0) Y = 1 else Y = -1; สามารถเขียนใหสั้นลงดังนี้ : Y = (X>0) ? 1 : -1; ตัวอยาง การใช ? เพื่อหา Absolute (แปลงคาหรือลบใหเปนคาบวกเทานั้น) class Ternary { public static void main(String[ ] args) { int i,k ; i = 10; k = i < 10 ? –i : i ; System.out.print( “Absolute Number is ” + i + “=” + k ); i = -10; k = i < 10 ? –i : i ; System.out.print( “Absolute Number is ” + i + “=” + k ); } }
  • 8.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 73 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง public class DemoIfElse1 { public static void main(String[] args) { int testscore = 76; char grade; if (testscore >= 90) { grade = 'A'; } else if (testscore >= 80) { grade = 'B'; } else if (testscore >= 70) { grade = 'C'; } else if (testscore >= 60) { grade = 'D'; } else { grade = 'F'; } System.out.println("Grade = " + grade); } } ตัวอยาง การใช if-else-if import java.io.*; public class DemoIfElse2 { public static void main (String args[]) throws IOException { BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Press mounth (1 - 12) "); String input = " "; input = stdin.readLine(); int month = Integer.parseInt(input); String season; if (month ==1 || month ==2 || month==3) season = "Medium Hot”; else if (month ==4 || month ==5 || month==6) season = "Very Hot”; else if (month ==7 || month ==8 || month==9) season = "Hard Rainy"; else if (month ==10 || month ==11 || month==12) season = "Min Hot"; else season = "ERROR"; System.out.println ("Month " + month + " = " + season ); } } // ifElse
  • 9.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 74 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การใชตัวดําเนินการใน Boolean expression int x = 2; int y = 5; if (x < 3 && y > 3) System.out.println(“Add”); if (x < 3 || y > 3) System.out.println(“Or”); ผลลัพธที่ไดคือ Add Or ตัวอยาง การใชตัวดําเนินการตรรกศาสตร && และ || ใน booleanExpression boolean b1 = false; boolean b2 = false; boolean b3 = false; if ( (b1 = false) && (b2 = true) || (b3 = true) ) System.out.println(b1 + “ ” + b2 + “ ” + b3); ผลลัพธที่ไดคือ false false true ตัวดําเนินการแบบ Short-circuit logical operator กับคําสั่ง IF-ELSE ตัวดําเนินการ && และ || จะมีการทํางานแบบหนึ่งที่เรียกวา ลัดวงจร(short-circuit logical operator) ลัดวงจร คือ ถาสามารถรูผลลัพธไดโดยไมตองคํานวณคําสั่งตอไปก็จะยังคํานวณทันที • && จะหยุดทํางานเมื่อตัวตั้งเปนเท็จ • || จะหยุดทํางานเมื่อตัวตั้งเปนจริง ตัวอยาง การใชตัวดําเนินการตรรกศาสตร || ใน booleanExpression boolean b1 = false; boolean b2 = false; if ( (b1 = true) || (b2 = true) ) System.out.println(b1 + “ ” + b2); ผลลัพธที่ไดคือ true false
  • 10.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 75 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การใชตัวดําเนินการตรรกศาสตร && ใน booleanExpression boolean b1 = true; boolean b2 = true; if ( (b1 = false) && (b2 = false) ) System.out.println(b1 + “ ” + b2); ผลลัพธที่ไดคือ false true ตัวดําเนินการบิทกับขอมูลชนิด Boolean กับคําสั่ง IF-ELSE ตัวดําเนินการบิทจะหาผลลัพธของคําสั่งตัวตั้งและตัวกระทํากอน แลวนําคาผลลัพธที่ไดมา กระทํากัน โดยมีลําดับการทํางานดังนี้ ^, & และ | ตามลําดับ ตัวอยาง การใชตัวดําเนินการบิท & และ | ใน booleanExpression boolean b1 = false; boolean b2 = false; boolean b3 = false; if ( (b1 = true) & (b2 = true) | (b3 = true) ) System.out.println(b1 + “ ” + b2 + “ ” + b3); ผลลัพธที่ไดคือ true true true ตัวอยาง การใชตัวดําเนินการบิท & และ | System.out.println(true | true & false); System.out.println(false | true & true | true & false); ผลลัพธที่ไดคือ true true ตัวอยาง การใชตัวดําเนินการบิท & และ | boolean b1 = false; boolean b2 = (b1 = true) | (b1 = true) & (b1 = false); System.out.println(b1 + “ ” + b2);
  • 11.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 76 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ผลลัพธที่ไดคือ false true ตัวอยาง การใชตัวดําเนินการบิท &, | และ ^ System.out.println( true | true ^ true & true ); ผลลัพธที่ไดคือ true ตัวอยาง การใช if-else รวมกับ logical operator int i = 3; int j = 4; int k = 5; if ( (i = 6) || (j = 7) && (k = 8) ) System.out.println(i + “ ” + j + “ ” + k); ผลลัพธที่ไดคือ– ไมสามารถนําชนิดขอมูล Integer มาดําเนินการแบบตรรกศาสตรได Compiled Error คําสั่ง switch เปนการตรวจสอบเงื่อนไขโดยดูจากคาตัวแปร ( คลายกับคําสั่ง CASE ) ทั้งนี้การใช Switch จะ ใชไดกับตัวแปรที่เปนตัวเลขเทานั้นประโยค switch สามารถใชในการทํางานแบบเลือกคําตอบเงื่อนไข ใชประโยค default เพื่อเปนการจัดรายการที่เลือกไมตรงกับที่กําหนด รูปแบบโครงสราง (Syntax) ของ Switch: switch ( variable or Expression ) { case Constant Expression 1: [statements] [break;] case Constant Expression 2: [statements] [break;] . . . case Constant Expression N: [statements] [break;] default: [break;] }
  • 12.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 77 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ Variable or Expression - ใชไดเฉพาะตัวแปรที่เปนชนิดขอมูล char, byte, short และ int Constant Expression - จะตองเปนคาคงตัว(Literal)เทานั้น ถาเปนตัวแปรตองเปน final (ศึกษาเพิ่มเติมในบทที่ 9) - เปนคาคงตัวที่มีชนิดขอมูลที่สอดคลองกับ Variable หรือ Expression และสามารถมีไดคาเดียว ในหนึ่ง Constant Expression - คาแตละ Constant Expression จะตองไมซ้ํากัน หลักการทํางาน นําคาของ Variable or Expression ไปเปรียบเทียบกับคาของ Constant Expression ที่มีทั้งหมด ถาตรงกับ Constant Expression ตัวใดก็จะเลือกที่จะทํางานใน Constant Expression นั้นจนพบกับคําสั่ง break หรือจบรูปแบบของคําสั่ง switch แตถาไมตรงกับ Constant Expression ใดเลยแลวมี default อยูก็จะทํางานใน default จนพบกับคําสั่ง break หรือจบรูปแบบของคําสั่ง switch หมายเหตุ คําสั่ง break จะทําใหโปรแกรมกระโดดออกไปทํางานนอกคําสั่ง switch ตัวอยาง การใช Switch public class SwitchDemo1 { public static void main (String args[]) { for (int i=0; i<6; i++) switch (i) { case 0: System.out.println ("I = 0"); break; case 1: System.out.println ("I = 1"); break; case 2: System.out.println ("I = 2"); break; case 3: System.out.println ("I = 3"); break; default: System.out.println ("I > 3"); } }}
  • 13.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 78 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ผลลัพธที่ไดคือ I = 0 I =1 I = 2 I= 3 I > 3 I > 3 ตัวอยาง public class SwitchDemo2 { public static void main(String[] args) { int month = 8; switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; } } } ผลลัพธที่ไดคือ August
  • 14.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 79 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง class SwitchDemo{ public static void main(String args[]){ int rate=0; int year =0; switch (year){ case 5: rate = 12; break; case 15 :rate =18; break; case 30 : rate = 24; break; default : System.out.println("");} } } ตัวอยาง public class SwitchDemo3 { public static void main(String[] args) { int month = 2; int year = 2000; int numDays = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if(((year % 4 == 0) &&!(year % 100 == 0)) || (year % 400 == 0)) numDays = 29; else numDays = 28; break;
  • 15.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 80 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ } System.out.println("Number of Days = " + numDays); } } จะเห็นวาทุกหัวขอที่เลือกทุกแนวทางจะมี breakผิดพลาด! ไมไดกําหนดที่คั่นหนา เพื่อใหออก จาก switch และ default เปนหัวขอที่กําหนดไวในกรณีที่ผูใชโปรแกรมเลือกแบบอื่น ๆ ที่ ไมไดกําหนด ไวกอน ขอจํากัดของการใชคําสั่ง Switch • ตัวแปรที่ใชในการตรวจสอบ จะตองมีชนิดเปนตัวเลขอยางใดอยางหนึ่ง ไดแก char, byte, short หรือ int และตองอยูภายในเครื่องหมายวงเล็บ () เทานั้น • ชนิดของตัวเลขที่ใชในการตรวจสอบในคําสั่ง case จะตองเปนชนิดเดียวกันหมด • อาจไมใสคําสั่ง break ไวก็ได แตถาไมใส จะทําใหโปรแกรมตองตรวจสอบทุก ๆ เงื่อนไข จนกวาจะหมดซึ่งอาจทําใหเสียเวลาได ถาเงื่อนไขมีมากและซับซอน • คําสั่ง default อาจใสหรือไมใสก็ได ถาใสก็จะนิยมวางไวที่บรรทัดสุดทายของการตรวจสอบ ตัวอยาง การใช Expression ใน Variable or Expression และ คําสั่ง break String x = “xyz”; switch ( x.length() - 1 ) { // x.length() เปนการเรียก method ที่คืนคาความยาวของขอความตัวแปร x ในที่นี้ x.length() = 3 case 1: System.out.println(“length is one”); break; case 2: System.out.println(“length is two”); break; case 3: System.out.println(“length is three”); break; default: System.out.println(“on match”); } ผลลัพธที่ไดคือ length is two
  • 16.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 81 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การใช Variable or Expression Integer in = new Integer(3); switch(in) { case 1 : System.out.println(“1”); break; case 2 : System.out.println(“2”); break; case 3: System.out.println(“3”); break; } ผลลัพธที่ได : Compiled Error เนื่องจาก Variable or Expression ตองเปนตัวแปรชนิดขอมูล char, byte, shor และ int เทานั้น แตในตัวอยางนี้ใชตัวแปรกลุม wrapper class (Integer) ซึ่งจะไดเรียนในบทที่ 11 จึงทําใหเกิด ขอผิดพลาดในการคอมไพล ตัวอยาง การใชตัวแปรแบบ final (กําหนดใหเปนตัวแปรคงที่ในภาษาจาวา)ใน Constant Expression final int one = 1; final int two = 2; int x = 1; switch (x) { case one: System.out.println("one"); break; case two: System.out.println("two"); break; case two + 1: System.out.println("two plus one"); break; } ผลลัพธที่ได one เนื่องจาก one และ two เปนตัวแปรชนิด final ทําใหทั้งสองตัวแปรเปนคาคงที่ ซึ่งจะไดกลาว อยางละเอียดในบทที่ 9 ตัวแปร final
  • 17.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 82 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การใช Constant Expression byte g = 23; switch(g) { default: break; case 23: System.out.println(“23”); case 128: System.out.println(“128”); break; } ผลลัพธที่ได - Compiled Error เนื่องจากคาของ Constant Expression ที่เปน 128 ไมใชชนิดขอมูล byte ตัวอยาง การใช Constant Expression int temp = 90; switch(temp) { case 80 : System.out.println("80"); break; case 75 + 5 : System.out.println(“75 + 5"); break; case 90: System.out.println("90"); break; } ผลลัพท – Compiled Error มีคา Constant Expression ซ้ํากัน
  • 18.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 83 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การใช switch int x = 1; switch(x) { case 1: System.out.println("x is one"); case 2: System.out.println("x is two"); case 3: System.out.println("x is three"); } System.out.println("out of the switch"); ผลลัพธที่ไดคือ x is one x is two x is three out of the switch ตัวอยาง การใช switch int x = 5; switch (x) { case 2: System.out.println(“2”); default: System.out.println(“default”); case 3: System.out.println(“3”); case 4: System.out.println(“4”); } ผลลัพธที่ไดคือ default 3 4 คําสั่งควบคุมการวนลูป (Loop Statements) เปนกลุมคําสั่งที่ใชในการวนรอบ(loop) การทํางานไปเรื่อยๆ จนกวาเงื่อนไขที่กําหนดไวจะเปน จริง จึงจะหลุดออกจากวงโคจรการวนรอบนี้ได คําสั่งในกลุมนี้ ไดแก • คําสั่ง while • คําสั่ง do … while • คําสั่ง for • คําสั่ง break และ continue
  • 19.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 84 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ คําสั่งแบบ while ใชคําสั่ง while เมื่อเงื่อนไขเปนจริง จะทําคําสั่งตางๆ ใน loop ไปเรื่อยๆ จนกวาเมื่อตรวจพบวา เงื่อนไขเปนเท็จ จึงกระโดดออกมาทํางานที่คําสั่งถัดไปที่อยูนอก loop ของคําสั่ง while โดยที่ตรวจสอบ กอนแลวจึงทํางาน (loop) การวนนี้จะใชการวน มากกวา หนึ่งครั้ง หรือ ไมวนเลยก็ได ถาเงื่อนไขเปนเท็จ รูปแบบการใช while มีโครงสรางดังนี้: Boolean Expression - ตองมีผลลัพธเปนชนิดขอมูล Boolean เทานั้น หลักการทํางาน 1. Boolean Expression เปนจริงทํางานตอ ถาเปนเท็จจบการทํางาน 2. ทํางานใน Block 3. กลับไปทําขั้นตอนที่ 1 ตัวอยาง การทดลองบวกเลข 1 ถึง 100 class WhileDemo1 { public static void main (String[] args) { int x = 1; int total = 0; while (x <= 100) { total += x; x = x + 1; } System.out.println (“The series from 1 to 100 is “ + total); } } ผลลัพธที่ไดคือ The series from 1 to 100 is 5050 while ( Boolean Expression ) [{] [statements] [}]
  • 20.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 85 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง ทดลองสรางโปรแกรมทําการบวกเลขแบบอนุกรมจาก x ถึง y โดยที่ x และ y เปนเลข Integer ใด ๆ ที่รับจาก user เขามา เขียนแลวเก็บใน WhieDemo2 class WhileDemo2{ public static void main(String[] args) { int num1 = Integer.parseInt(args[0]); int num2 = Integer.parseInt(args[1]); int x = num1; int total = num1; while (x <= num2) { total += x; x = x + 1; } System.out.println (“The series from “ + num1 + “ to “ + num2 + “ is “ + total); } } ตัวอยาง class WhileDemo3 { public static void main(String args[]){ float Number = 2000 ; int TimesMoved = 0 ; while (Number >= 1.0){ Number *=0.1 ; TimesMoved++ ; } System.out.println ("Number : "+Number) ; System.out.println ("Times : "+TimesMoved) ; } } ผลลัพธที่ไดคือ Number : 0.2 Times : 4
  • 21.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 86 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ คําสั่งแบบ do…while เงื่อนไขแบบนี้ จะเปนการทํางานในลูปรอบแรก กอนแลวจะตรวจสอบเงื่อนไขที่คําสั่ง while หลังจากที่ทํางานเสร็จแลว ดังนั้น Loop จะวนอยางนอย หนึ่งรอบเสมอ ซึ่งแตกตางกับเงื่อนไขแบบ แรก โดยถาเงื่อนไขเปนจริงก็จะกลับขึ้นไปทํางานที่คําสั่งตางๆ ใหม แตถาไมเปนจริงก็จะหลุด ออกมาทํางานที่คําสั่งตอไป รูปแบบของประโยค do … while : Boolean Expression - ตองมีผลลัพธเปนชนิดขอมูล Boolean เทานั้น - do-while จะตองปดดวยสัญลักษณ ; หลักการทํางาน 1. ทํางานใน Block 2. Boolean Expression เปนจริงทํางานตอ ถาเปนเท็จจบการทํางาน 3. กลับไปทําขั้นตอนที่ 1 ตัวอยาง: int x = 0; do { x += 1; } while (x <= 10); ตัวอยาง class DoWhileDemo1 { public static void main (String args[]){ int data = 0; int sum = 0; do{ data = data+1; sum += data ; }while (data <=10) ; System.out.println ("ผลรวมคือ : " + sum) ; } } do [{] [statements] [}] while ( Boolean Expression );
  • 22.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 87 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง สรางเมนูโดยใชคําสั่ง do … while public class DoWhileDemo2{ public static void main (String args[]) throws java.io.IOException{ char choice; do{ System.out.println("Help on: "); System.out.println(" 1. If"); System.out.println(" 2. Switch"); System.out.println(" 3. While"); System.out.println(" 4. Do .. While"); System.out.println(" 5. For n"); System.out.println("Choose One"); choice = (char) System.in.read();// รับขอมูลจากจอภาพมา 1 ตัวอักษร }while (choice < '1' || choice > '5'); System.out.println ("n"); switch (choice) { case '1': System.out.println ("The if:n"); System.out.println ("if (condition) statement;"); System.out.println ("else statement;"); break; case '2': System.out.println ("The switch:n"); System.out.println ("switch (expression){"); System.out.println ("statement sequence"); System.out.println ("break; "); System.out.println (" || … "); System.out.println ("}"); break; case '3': System.out.println ("The while:n"); System.out.println ("while(condition) statement;"); break; case '4': System.out.println ("The do … while:n"); System.out.println ("do { "); System.out.println (" statement; "); System.out.println ("} while conditions); "); break; case '5': System.out.println ("The for:n"); System.out.println ("for(int; condition; iteration)"); System.out.println (" statement; "); break; } } }
  • 23.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 88 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ คําสั่ง for คลายกับการใช while แตเงื่อนไขทั้งหมดจะถูกบันทึกลงไป กอนเขาการเริ่มของ Loop ในวงเล็บ รูปแบบคําสั่งโครงสรางของประโยค for Declaration and Initialization - เปนการประกาศตัวแปร และ กําหนดคาเริ่มตนใหกับตัวแปร - สามารถมีตัวแปรไดตั้งแต 0 ตัวขึ้นไป - ถามีมากกวา 1 ตัวแปรใชสัญลักษณ , คั่น แตจะตองเปนชนิดขอมูลเดียวกัน Boolean Expression - เปนเงื่อนไขการตัดสินใจวาจะทําตอไปหรือไม ถาเปนจริงทําตอแตถาเปนเท็จจะหยุดทํางาน คําสั่งนี้ - สามารถมี 0 เงื่อน หรือ หนึ่งเงื่อนไข เทานั้น - ตองมีผลลัพธเปนชนิดขอมูล Boolean เทานั้น Iteration Expression - ใชเปนการปรับปรุงคาของตัวแปร - สามารถมีคําสั่งไดตั้งแต 0 ตัวขึ้นไป - ถามีมากกวา 1 คําสั่งใชสัญลักษณ , คั่น หลักการทํางาน 1. ทํางานใน Declaration and Initialization 2. ทํางานใน Boolean Expression ถาเปนจริงทํางานตอ ถาเปนเท็จจบการทํางานของ for 3. ทํางานใน Block ของ { } 4. ทํางานใน Iteration Expression 5. กลับไปทําขั้นตอนที่ 2 ตัวอยาง: for(int x=1; x < 5; x++) System.out.println (x); ผลลัพธที่ไดคือ 1 2 3 4 for ( Declaration and Initialization; Boolean Expression; Iteration Expression ) [{] [statements] [}]
  • 24.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 89 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การใช Declaration and Initialization ที่ผิด for( short i=0, int j=0 ; i < 4; i += 2, j++ ) { System.out.println(i + “ ” + j ); } ผลลัพธที่ไดคือ Compiled Error ตัวอยาง การใช Declaration and Initialization ที่ถูก for (int i=0, j=0; i < 4; i += 2, j++) { System.out.println(i + “ ” + j); } ผลลัพธที่ไดคือ 0 0 2 1 ตัวอยาง การใช Boolean Expression ที่ผิด for( int i=0, j=0 ; i < 4, j < 2; i += 2, j++ ) { System.out.println(i + “ ” + j ); } ผลลัพธที่ไดคือ Compiled Error ตัวอยางการใช Boolean Expression ที่ถูก for (int i=0, j=0; i < 4 && j < 2; i += 2, j++) { System.out.println(i + “ ” + j); } ผลลัพธที่ไดคือ 0 0 2 1
  • 25.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 90 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยางการใช Iteration Expression ที่ใข Methods for( int i = 0; i < 2; System.out.println(“Iteration”) ) { i++; } ผลลัพธที่ไดคือ Iteration Iteration ตัวอยาง การใช for for( int i = 0; i < 4; i += 2 ) { System.out.print(i + “ ” ); } System.out.println(i); ผลลัพธที่ไดคือ Compiled Error ตัวอยาง คําสั่ง for ถือวาเปน Block แบบหนึ่งจึงมีคุณสมบัติการอางถึงตัวแปร int i = 0; for( ; i < 4; i += 2 ) { System.out.print(i + “ ” ); } System.out.println(i); ผลลัพธที่ไดคือ 0 2 4 ตัวอยาง class ForDemo1 { public static void main(String[] args) { int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 }; // arrayOfInts เปนตัวแปรชนิด อารเรย ซึ่งจะไดเรียนตอไปในบทที่ 6 for (int i = 0; i < arrayOfInts.length; i++) { // arrayOfInts.length บอกถึงขนาดของอารเรย System.out.print(arrayOfInts[i] + " "); } System.out.println();} }
  • 26.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 91 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ผลลัพธที่ไดคือ 32 87 3 589 12 1076 2000 8 622 127 ตัวอยาง // ใชเครื่องหมายคอมมาในการกําหนดคาเริ่มตนในคําสั่ง for class ForDemo2{ public static void main (String args[]){ int a, b; for (a=1, b=4; a<b; a++, b--){ System.out.println ("a=" + a); System.out.println("b=" + b); } } } ผลลัพธที่ไดคือ a=1 b=4 a=2 b=3 ตัวอยาง loops แบบซับซอน class ForDemo3{ public static void main (String args[]){ int i, j; for (i=0; i<5; i++){ for (j=i; j<8; j++) System.out.print ("*"); System.out.println(); } } } ผลลัพธที่ไดคือ ******** ******* ****** ***** ****
  • 27.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 92 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง class ForDemo4{ public static void main (String[] args){ final int COLUMN_WIDTH = 8; for (int x = 1; x <= 7; x++){ // พิมพตัวเลขในแถว for (int y = 1; y <= 5; y++){ int p = (int)Math.pow(x,y); // Math.pow(x,y) หาคา x ยกกําลัง y System.out.print(p + "t"); } System.out.println(); } } } ผลลัพธที่ไดคือ 1 1 1 1 1 2 4 8 16 32 3 9 27 81 243 4 16 64 2561024 5 25 1256253125 6 36 2161296 7776 7 49 3432401 16807 ตัวอยาง import java.io.*; public class ForDemo5{ public static void main (String[] args) throws IOException { BufferedReader stdin = new BufferedReader(new inputStreamReader(System.in)); System.out.println("Press Enter Data "); String s = stdin.readLine(); String r = " "; for (int I =0; I < s.length(); I++) { char ch = s.charAt(I); r = ch + r; // นําคาใน ch มาใสไวขางหนาขอความเดิม System.out.println( r ); } System.out.println(s + "Data reverse is " + r); }} // Reverse
  • 28.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 93 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ผลลัพธที่ไดคือ จากการ runC:testJavach3>java ForDemo5 Press Enter Data Hello H eH leH lleH olleH HelloData reverse is olleH ประโยค break และ continue รูปแบบการใชงาน Break ถาโปรแกรมพบคําสั่งนี้ จะหลุดออกจาก Loop การทํางานทันที จะตองอยูใน Block ของคําสั่ง switch หรือกลุมคําสั่งวนลูป Continue ถาโปรแกรมพบคําสั่งนี้ จะทําใหหยุดการทํางานที่จุดนั้น แลวยอนกลับไป เริ่มตนการทํางานที่ตน Loop ใหม จะตองอยูใน Block ของกลุมคําสั่งวนลูป หลักการทํางาน break – เปนคําสั่งใหจบการทํางานของคําสั่ง switch หรือกลุมคําสั่งวนลูป continue – เปนคําสั่งขามการทํางานใน Block คําสั่งแลวไปทําคําสั่งวนลูป ตัวอยาง คําสั่ง break กับกลุมคําสั่งวนลูป for (int i=1, j=3; i < 10; i++) { if( i > j ) break; j--; } ผลลัพธที่ได i = 3, j = 1 switch or loops statement { … break; … } loops statement { … contine; … }
  • 29.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 94 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง int i=1; j=3; while(++i < 10) { if( i > j ) break; j--; } ผลลัพธที่ได i = 3, j = 2 ตัวอยาง int i=1; j=3; do { if( i > j ) break; j--; } while( ++i < 10 ); ผลลัพธที่ได i = 3, j = 1 ตัวอยาง คําสั่ง continue กับกลุมคําสั่งวนลูป for (int i=1, j=3; i < 10; i++) { if( i > j ) continue; j--; } ผลลัพธที่ได i = 10, j = 1 ตัวอยาง int i=1; j=3; while(++i < 10) { if( i > j ) continue; j--; } ผลลัพธที่ได : i = 10, j = 2
  • 30.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 95 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง int i=1; j=3; do { if( i > j ) continue; j--; } while( ++i < 10 ); ผลลัพธที่ได i = 10, j = 1 ตัวอยาง while (num2 < 1000) { total = total + num2; if (total >= 2000) break; num2 ++; } ในกรณีนี้ ถา total >= 2000 เมื่อใด โปรแกรมจะหลุดออกจาก Loopทันที การใช Labeled กลับกลุมคําสั่งวนลูป รูปแบบ LabelName: – เปนการประกาศชื่อของคําสั่งวนลูปซึ่งจะประกาศไวกอนกลุม คําสั่งวนลูป - ใชรวมกับ คําสั่ง break กับคําสั่ง continue โดยเปนการระบุวา ตองการใชคําสั่ง break หรือคําสั่ง continue กับคําสั่ง วนลูปที่ชื่ออะไร LabelName: loops statement { … break LabelName; continue LabelName; … }
  • 31.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 96 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง int y = 8; outer: for (int i=0; i < 5; i++) { while(y > 7) { System.out.println(“Hello”); break outer; } System.out.println(“Outer loop”); } System.out.println(“Good-Bye”); ผลลัพธที่ไดคือ Hello Good-Bye ตัวอยาง int y = 8; outer: for (int i=0; i < 5; i++) { while(y > 7) { System.out.println(“Hello”); continue outer; } System.out.println(“Outer loop”); } System.out.println(“Good-Bye”); ผลลัพธที่ไดคือ Hello Hello Hello Hello Hello Good-Bye ตัวอยาง การ ใช break แบบ goto class BreakDemo{ public static void main (String args[]){ First:{ Second:{ Third:{
  • 32.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 97 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ System.out.println("Before the break"); break Second; // ไปที่หลัง loop ของ label ชื่อ Second } } System.out.println("This will be executed"); } } } ตัวอยาง // การใช Nested Loop กับ break label class Breakloop{ public static void main (String args[]){ outer : for (int i=0; i<3; i++){ System.out.print ("Pass " + i + ": "); for (int j=0; j<10; j++) {System.out.print(j+ " ");} break outer; } System.out.println ("Loops complete."); } } ตัวอยาง การใช Continue กับ label public class ContinueLabel{ public static void main (String args[]){ Outer: for (int i=0; i<10; i++){ for (int j=0; j<10; j++){ if (j>i){ System.out.println(); continue Outer; } System.out.print(" " + (i*j)); } } System.out.println(); } }
  • 33.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 98 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง outer: int y = 8; for (int i=0; i < 5; i++) { while(y > 7) { System.out.println(“Hello”); continue outer; } System.out.println(“Outer loop”); } System.out.println(“Good-Bye”); ผลลัพธทีไดคือ : Compiled Error Outer.java:6: '.class' expected int y = 8; ^ Outer.java:6: not a statement int y = 8; ^ 2 errors
  • 34.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 99 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ แบบฝกหัด 1. จงบอกถึงความแตกตางระหวางการใชคําสั่ง if, switch 2. จงหาถึงความแตกตางระหวางคําสั่ง while, do…while , for 3. จงบอกถึงขอผิดพลาดของโปรแกรมตอไปนี้ พรอมทั้งบอกวิธีแกไขดวย 3.1 while ( 3 = 2 ) int N = N + 1; System.out.println(N); 3.2 char Size switch (Size) case s : price = 100; case m : price = 200; case 1 = price = 300; 3.3 if (sex = “F” || sex = “f”) return height – 110; else return height – 100 3.4 for (I =0 ; I <3; I ++ ) for (j=I; j < 10 ; j++) Systen.out.println(I,j ); 3.5 if ( I > = 0 “ I <=10) System.out.println(“I”+I); 3.6 if (score < 60) grade = “D”; if (score < 70) grade = “C”; if (score < 80) grade = “B”; if (score >=80) grade = “A”;
  • 35.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 100 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 4. คําสั่ง for ตอไปนี้ใหเปลี่ยนเปน do-whlie class Q3{ public static void main(String[ ] args){ for ( int i = 0 ;i < 20; i ++ ) { for ( int j = 20 ;j > 1; j -- ) System.out.println(“i + j is” i+j ); } } } 5. เขียนโปรแกรมคํานวณภาษีเงินได ดังนี้ ถาเงินไดมากกวา 1 ลานบาท ใหคิดภาษี 20 % ถาเงินไดอยูระหวาง 5 แสน และ 1 ลาน ใหคิดภาษี 15 % ถาเงินไดนอยกวา 5 แสน ใหคิดภาษี 10 % 6. เขียนโปรแกรม Java ใหรับคาชื่อของผูเขียนโปรแกรม ทําการพิมพ 50 ครั้ง 7. เขียนโปรแกรมเพื่อทําการคํานวณการบวกจาก 1 ถึง 1000 โดยที่บวกเฉพาะเลขคี่ (1, 3, 5, . . . ) 8. จงเขียนโปรแกรมเพื่อแสดงจอภาพผลลัพธดังนี้ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 9. จงเขียนโปรแกรมเพื่อแสดงจอภาพผลลัพธดังนี้ Pass 0 : 0 1 2 3 4 5 6 7 8 9 Pass 1 : 0 1 2 3 4 5 6 7 8 9 Pass 2 : 0 1 2 3 4 5 6 7 8 9 Loop complete 10. จงเขียนโปรแกรมแมสูตรคูณ โดยรับคาจากทางแปนพิมพ แลวแสดงผลลัพธ 11. จงเขียนโปรแกรมเพื่อคํานวณเกรดและแสดงผลลัพธ มีคะแนนสอบแตละครั้ง ดังนี้ ครั้งที่ 1 คะแนน เต็ม 20 ครั้งที่ 2 คะแนนเต็ม 30 และครั้งที่ 3 คะแนนเต็ม 50 ใหนํามาหาผลรวมและคํานวณเกรด โดย มีเงื่อนไขอยูวา ถาคะแนน >= 80 ใหเกรด A 70 > = คะแนน < 80 ใหเกรด B 60 > = คะแนน < 70 ใหเกรด C 50 > = คะแนน < 60 ใหเกรด D คะแนน < 50 ใหเกรด F
  • 36.
    บทที่ 3 คําสั่งควบคุมการทํางานหนาที่ 101 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 12. จากโปรแกรมตอไปนี้ไดผลลัพธเปนเชนไร class Alpha1 { public static void main( String[] args ) { boolean flag; int i=0; do { flag = false; System.out.println( i++ ); flag = i < 10; continue; } while ( (flag)? true:false ); } } 13. แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้ int x = 1, y =6; while (y--) { x++; } System.out.println(“x =” + x + “y =” +y); 14. แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้ int i = 0, j = 1; if ((i++ == 1) && (j++ == 2)) { i = 42; } System.out.println(“i = “ + i + “, j = “ + j); 15. แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้ int i= 1, j= 10 ; แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้do { if (i++> --j) continue; } while (i<5); 16. แสดงผลลัพธที่ไดจากการคอมไพลและรันโปรแกรมนี้ class Test16 { public static void main(String []args) { int i = 0, j = 5; tp: for (;;) { i ++; for(;;) if(i > --j) break tp; } System.out.println(“i = ” + i + “, j = “+ j); } }