SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
คําสั่งควบคุมการทํางาน
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);
}
}

Contenu connexe

Tendances

วิธีการสร้างคำในภาษาไทย
วิธีการสร้างคำในภาษาไทย วิธีการสร้างคำในภาษาไทย
วิธีการสร้างคำในภาษาไทย rattasath
 
กระบวนการถ่ายทอดลักษณะทางพันธุกรรม
กระบวนการถ่ายทอดลักษณะทางพันธุกรรมกระบวนการถ่ายทอดลักษณะทางพันธุกรรม
กระบวนการถ่ายทอดลักษณะทางพันธุกรรมJariya Jaiyot
 
เซลล์พืชและเซลล์สัตว์
เซลล์พืชและเซลล์สัตว์เซลล์พืชและเซลล์สัตว์
เซลล์พืชและเซลล์สัตว์dnavaroj
 
แบบฝึกหัดเรื่องพื้นที่ผิวและปริมาตร ชุดที่ 1
แบบฝึกหัดเรื่องพื้นที่ผิวและปริมาตร ชุดที่  1แบบฝึกหัดเรื่องพื้นที่ผิวและปริมาตร ชุดที่  1
แบบฝึกหัดเรื่องพื้นที่ผิวและปริมาตร ชุดที่ 1Teraporn Thongsiri
 
หลักการแก้สมการเกี่ยวกับเลขยกกำลัง
หลักการแก้สมการเกี่ยวกับเลขยกกำลังหลักการแก้สมการเกี่ยวกับเลขยกกำลัง
หลักการแก้สมการเกี่ยวกับเลขยกกำลังkroojaja
 
ใบงาน 15.1
ใบงาน 15.1ใบงาน 15.1
ใบงาน 15.1oraneehussem
 
แบบฝึกท้ายบทบทที่ 8 ชุดที่ 2
แบบฝึกท้ายบทบทที่ 8 ชุดที่ 2แบบฝึกท้ายบทบทที่ 8 ชุดที่ 2
แบบฝึกท้ายบทบทที่ 8 ชุดที่ 2sukanya petin
 
อัตราส่วนและร้อยละ
อัตราส่วนและร้อยละอัตราส่วนและร้อยละ
อัตราส่วนและร้อยละ8752584
 
เนื้อหาแบบฝึกเสริมทักษะกระบวนการคิดตามวิธีการทางวิทยาศาสตร์
เนื้อหาแบบฝึกเสริมทักษะกระบวนการคิดตามวิธีการทางวิทยาศาสตร์เนื้อหาแบบฝึกเสริมทักษะกระบวนการคิดตามวิธีการทางวิทยาศาสตร์
เนื้อหาแบบฝึกเสริมทักษะกระบวนการคิดตามวิธีการทางวิทยาศาสตร์krupornpana55
 
แบบทดสอบเสียงในภาษา
แบบทดสอบเสียงในภาษาแบบทดสอบเสียงในภาษา
แบบทดสอบเสียงในภาษาPiyarerk Bunkoson
 
ใบงาน วิชาสังคมศึกษา ป.5 หน่วยที่ 3
ใบงาน วิชาสังคมศึกษา ป.5 หน่วยที่ 3ใบงาน วิชาสังคมศึกษา ป.5 หน่วยที่ 3
ใบงาน วิชาสังคมศึกษา ป.5 หน่วยที่ 3Luvvy Sugar
 
มาตรฐานและตัวชี้วัดกลุ่มสาระการเรียนรู้คณิตศาสตร์
มาตรฐานและตัวชี้วัดกลุ่มสาระการเรียนรู้คณิตศาสตร์มาตรฐานและตัวชี้วัดกลุ่มสาระการเรียนรู้คณิตศาสตร์
มาตรฐานและตัวชี้วัดกลุ่มสาระการเรียนรู้คณิตศาสตร์Boonlert Aroonpiboon
 

Tendances (20)

แนวข้อสอบภาษาไทย
แนวข้อสอบภาษาไทยแนวข้อสอบภาษาไทย
แนวข้อสอบภาษาไทย
 
วิธีการสร้างคำในภาษาไทย
วิธีการสร้างคำในภาษาไทย วิธีการสร้างคำในภาษาไทย
วิธีการสร้างคำในภาษาไทย
 
กระบวนการถ่ายทอดลักษณะทางพันธุกรรม
กระบวนการถ่ายทอดลักษณะทางพันธุกรรมกระบวนการถ่ายทอดลักษณะทางพันธุกรรม
กระบวนการถ่ายทอดลักษณะทางพันธุกรรม
 
เซลล์พืชและเซลล์สัตว์
เซลล์พืชและเซลล์สัตว์เซลล์พืชและเซลล์สัตว์
เซลล์พืชและเซลล์สัตว์
 
ประชากร1
ประชากร1ประชากร1
ประชากร1
 
แบบฝึกหัดเรื่องพื้นที่ผิวและปริมาตร ชุดที่ 1
แบบฝึกหัดเรื่องพื้นที่ผิวและปริมาตร ชุดที่  1แบบฝึกหัดเรื่องพื้นที่ผิวและปริมาตร ชุดที่  1
แบบฝึกหัดเรื่องพื้นที่ผิวและปริมาตร ชุดที่ 1
 
57 submath
57 submath57 submath
57 submath
 
หลักการแก้สมการเกี่ยวกับเลขยกกำลัง
หลักการแก้สมการเกี่ยวกับเลขยกกำลังหลักการแก้สมการเกี่ยวกับเลขยกกำลัง
หลักการแก้สมการเกี่ยวกับเลขยกกำลัง
 
ชุดการสอนที่ 3 ต่อมไทรอยด์ (อาบ)
ชุดการสอนที่ 3 ต่อมไทรอยด์ (อาบ)ชุดการสอนที่ 3 ต่อมไทรอยด์ (อาบ)
ชุดการสอนที่ 3 ต่อมไทรอยด์ (อาบ)
 
ใบงาน 15.1
ใบงาน 15.1ใบงาน 15.1
ใบงาน 15.1
 
แบบฝึกท้ายบทบทที่ 8 ชุดที่ 2
แบบฝึกท้ายบทบทที่ 8 ชุดที่ 2แบบฝึกท้ายบทบทที่ 8 ชุดที่ 2
แบบฝึกท้ายบทบทที่ 8 ชุดที่ 2
 
อัตราส่วนและร้อยละ
อัตราส่วนและร้อยละอัตราส่วนและร้อยละ
อัตราส่วนและร้อยละ
 
ส่วนประกอบของดอก
ส่วนประกอบของดอกส่วนประกอบของดอก
ส่วนประกอบของดอก
 
World-Class Standard School
World-Class Standard SchoolWorld-Class Standard School
World-Class Standard School
 
เนื้อหาแบบฝึกเสริมทักษะกระบวนการคิดตามวิธีการทางวิทยาศาสตร์
เนื้อหาแบบฝึกเสริมทักษะกระบวนการคิดตามวิธีการทางวิทยาศาสตร์เนื้อหาแบบฝึกเสริมทักษะกระบวนการคิดตามวิธีการทางวิทยาศาสตร์
เนื้อหาแบบฝึกเสริมทักษะกระบวนการคิดตามวิธีการทางวิทยาศาสตร์
 
การแนะแนว
การแนะแนวการแนะแนว
การแนะแนว
 
ใบความรู้เรื่อง past simple
ใบความรู้เรื่อง past simple ใบความรู้เรื่อง past simple
ใบความรู้เรื่อง past simple
 
แบบทดสอบเสียงในภาษา
แบบทดสอบเสียงในภาษาแบบทดสอบเสียงในภาษา
แบบทดสอบเสียงในภาษา
 
ใบงาน วิชาสังคมศึกษา ป.5 หน่วยที่ 3
ใบงาน วิชาสังคมศึกษา ป.5 หน่วยที่ 3ใบงาน วิชาสังคมศึกษา ป.5 หน่วยที่ 3
ใบงาน วิชาสังคมศึกษา ป.5 หน่วยที่ 3
 
มาตรฐานและตัวชี้วัดกลุ่มสาระการเรียนรู้คณิตศาสตร์
มาตรฐานและตัวชี้วัดกลุ่มสาระการเรียนรู้คณิตศาสตร์มาตรฐานและตัวชี้วัดกลุ่มสาระการเรียนรู้คณิตศาสตร์
มาตรฐานและตัวชี้วัดกลุ่มสาระการเรียนรู้คณิตศาสตร์
 

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

คำสั่งควบคุม
คำสั่งควบคุมคำสั่งควบคุม
คำสั่งควบคุมumaraporn
 
6.Flow control
6.Flow control6.Flow control
6.Flow controlUsableLabs
 
Java Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุมJava Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุมThanachart Numnonda
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกการเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกThanon Paktanadechanon
 
04 conditional
04 conditional04 conditional
04 conditionala-num Sara
 

Similaire à บทที่ 3 คำสั่งควบค (20)

chapter 3 คำสั่งควบคุม
chapter 3 คำสั่งควบคุมchapter 3 คำสั่งควบคุม
chapter 3 คำสั่งควบคุม
 
ฟังก์ชั่น If หลายทางเลือก
ฟังก์ชั่น If หลายทางเลือกฟังก์ชั่น If หลายทางเลือก
ฟังก์ชั่น If หลายทางเลือก
 
บทที่ 3 คำสั่งควบคุม ส่วนที่ 1
บทที่ 3 คำสั่งควบคุม ส่วนที่ 1บทที่ 3 คำสั่งควบคุม ส่วนที่ 1
บทที่ 3 คำสั่งควบคุม ส่วนที่ 1
 
Control structure
Control structureControl structure
Control structure
 
06 for loops
06 for loops06 for loops
06 for loops
 
Know3 2
Know3 2Know3 2
Know3 2
 
Know009
Know009Know009
Know009
 
Lesson3
Lesson3Lesson3
Lesson3
 
Computer Programming 3
Computer Programming 3 Computer Programming 3
Computer Programming 3
 
คำสั่งควบคุม
คำสั่งควบคุมคำสั่งควบคุม
คำสั่งควบคุม
 
6.Flow control
6.Flow control6.Flow control
6.Flow control
 
05 loops
05 loops05 loops
05 loops
 
Know3 3
Know3 3Know3 3
Know3 3
 
Java Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุมJava Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุม
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกการเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือก
 
งานทำ Blog บทที่ 6
งานทำ Blog บทที่ 6งานทำ Blog บทที่ 6
งานทำ Blog บทที่ 6
 
04 conditional
04 conditional04 conditional
04 conditional
 
ฟังก์ชั่น break
ฟังก์ชั่น breakฟังก์ชั่น break
ฟังก์ชั่น break
 
หลักการเขียนโปรแกรม
หลักการเขียนโปรแกรมหลักการเขียนโปรแกรม
หลักการเขียนโปรแกรม
 
ฟังก์ชั่น Switch
ฟังก์ชั่น Switchฟังก์ชั่น Switch
ฟังก์ชั่น Switch
 

Plus de Theeravaj Tum

Javacentrix com chap11-2
Javacentrix com chap11-2Javacentrix com chap11-2
Javacentrix com chap11-2Theeravaj Tum
 
Javacentrix com chap11-1
Javacentrix com chap11-1Javacentrix com chap11-1
Javacentrix com chap11-1Theeravaj Tum
 
Javacentrix com chap10-0
Javacentrix com chap10-0Javacentrix com chap10-0
Javacentrix com chap10-0Theeravaj Tum
 
Javacentrix com chap09-0
Javacentrix com chap09-0Javacentrix com chap09-0
Javacentrix com chap09-0Theeravaj Tum
 
Javacentrix com chap08-0
Javacentrix com chap08-0Javacentrix com chap08-0
Javacentrix com chap08-0Theeravaj Tum
 
Javacentrix com chap07-0
Javacentrix com chap07-0Javacentrix com chap07-0
Javacentrix com chap07-0Theeravaj Tum
 
Javacentrix com chap06-0
Javacentrix com chap06-0Javacentrix com chap06-0
Javacentrix com chap06-0Theeravaj Tum
 
Javacentrix com chap04-0
Javacentrix com chap04-0Javacentrix com chap04-0
Javacentrix com chap04-0Theeravaj Tum
 
Javacentrix com chap03-0
Javacentrix com chap03-0Javacentrix com chap03-0
Javacentrix com chap03-0Theeravaj Tum
 
Javacentrix com chap02-0
Javacentrix com chap02-0Javacentrix com chap02-0
Javacentrix com chap02-0Theeravaj Tum
 
Javacentrix com chap01-0
Javacentrix com chap01-0Javacentrix com chap01-0
Javacentrix com chap01-0Theeravaj Tum
 
Javacentrix com chap05-0
Javacentrix com chap05-0Javacentrix com chap05-0
Javacentrix com chap05-0Theeravaj Tum
 
บทที่ 13 การดักจับเ
บทที่ 13 การดักจับเบทที่ 13 การดักจับเ
บทที่ 13 การดักจับเTheeravaj Tum
 
บทที่ 12 กราฟฟิก
บทที่ 12 กราฟฟิกบทที่ 12 กราฟฟิก
บทที่ 12 กราฟฟิกTheeravaj Tum
 
บทที่ 11 การดักจับข
บทที่ 11 การดักจับขบทที่ 11 การดักจับข
บทที่ 11 การดักจับขTheeravaj Tum
 
บทที่ 10 ตัวแปรสตริ
บทที่ 10 ตัวแปรสตริบทที่ 10 ตัวแปรสตริ
บทที่ 10 ตัวแปรสตริTheeravaj Tum
 
บทที่ 9 การพ้องรูป
บทที่ 9 การพ้องรูปบทที่ 9 การพ้องรูป
บทที่ 9 การพ้องรูปTheeravaj Tum
 
บทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติกบทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติกTheeravaj Tum
 
บทที่ 7 แพ็คเกจ
บทที่ 7 แพ็คเกจบทที่ 7 แพ็คเกจ
บทที่ 7 แพ็คเกจTheeravaj Tum
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์Theeravaj Tum
 

Plus de Theeravaj Tum (20)

Javacentrix com chap11-2
Javacentrix com chap11-2Javacentrix com chap11-2
Javacentrix com chap11-2
 
Javacentrix com chap11-1
Javacentrix com chap11-1Javacentrix com chap11-1
Javacentrix com chap11-1
 
Javacentrix com chap10-0
Javacentrix com chap10-0Javacentrix com chap10-0
Javacentrix com chap10-0
 
Javacentrix com chap09-0
Javacentrix com chap09-0Javacentrix com chap09-0
Javacentrix com chap09-0
 
Javacentrix com chap08-0
Javacentrix com chap08-0Javacentrix com chap08-0
Javacentrix com chap08-0
 
Javacentrix com chap07-0
Javacentrix com chap07-0Javacentrix com chap07-0
Javacentrix com chap07-0
 
Javacentrix com chap06-0
Javacentrix com chap06-0Javacentrix com chap06-0
Javacentrix com chap06-0
 
Javacentrix com chap04-0
Javacentrix com chap04-0Javacentrix com chap04-0
Javacentrix com chap04-0
 
Javacentrix com chap03-0
Javacentrix com chap03-0Javacentrix com chap03-0
Javacentrix com chap03-0
 
Javacentrix com chap02-0
Javacentrix com chap02-0Javacentrix com chap02-0
Javacentrix com chap02-0
 
Javacentrix com chap01-0
Javacentrix com chap01-0Javacentrix com chap01-0
Javacentrix com chap01-0
 
Javacentrix com chap05-0
Javacentrix com chap05-0Javacentrix com chap05-0
Javacentrix com chap05-0
 
บทที่ 13 การดักจับเ
บทที่ 13 การดักจับเบทที่ 13 การดักจับเ
บทที่ 13 การดักจับเ
 
บทที่ 12 กราฟฟิก
บทที่ 12 กราฟฟิกบทที่ 12 กราฟฟิก
บทที่ 12 กราฟฟิก
 
บทที่ 11 การดักจับข
บทที่ 11 การดักจับขบทที่ 11 การดักจับข
บทที่ 11 การดักจับข
 
บทที่ 10 ตัวแปรสตริ
บทที่ 10 ตัวแปรสตริบทที่ 10 ตัวแปรสตริ
บทที่ 10 ตัวแปรสตริ
 
บทที่ 9 การพ้องรูป
บทที่ 9 การพ้องรูปบทที่ 9 การพ้องรูป
บทที่ 9 การพ้องรูป
 
บทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติกบทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติก
 
บทที่ 7 แพ็คเกจ
บทที่ 7 แพ็คเกจบทที่ 7 แพ็คเกจ
บทที่ 7 แพ็คเกจ
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์
 

บทที่ 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); } }