ค ำสั่งเงื่อนไข/ลูป และกำรใช้ stringเง...
TRANSCRIPT
ค ำสัง่เง่ือนไข/ลปู
และกำรใช ้String
ผศ.ดร.ธีระยุทธ ทองเครือ
สาขาวิชาวิทยาการคอมพิวเตอร ์ คณะวิทยาศาสตร์
มหาวิทยาลัยขอนแก่น
บทที่ 2
เง่ือนไขทางเดียว
2
if (เงื่อนไข) {
ค ำสัง่;
}
เง่ือนไข
ค ำสัง่
No
Yes
รูปแบบค ำสัง่
เง่ือนไขทางเดียว
3
ล าดับการท างาน1. ทดสอบนิพจน์เง่ือนไข ซ่ึงจะไดผ้ลลพัธ์
เป็นจริง หรือ เทจ็2. หำกนิพจนเ์ป็นจริง จะท ำค ำสัง่ท่ีอยู่
ภำยใต ้if ท่ีอยูใ่น { }3. หำกนิพจนเ์ป็นเทจ็ จะไม่สนใจค ำสัง่
ภำยใต ้if จะขำ้มไปยงัค ำสัง่ถดัไป
if (เงื่อนไข){ ค ำสัง่ท่ี1;ค ำสัง่ท่ี2;
}
ค ำสัง่ท่ี3;ค ำสัง่ท่ี4;
ตัวด าเนินการทางตรรกะตัวด าเนินการ กระบวนการ
==!=<=>=><
เท่ำกบัไม่เท่ำกบันอ้ยกวำ่หรือเท่ำกบัมำกกวำ่หรือเท่ำกบัมำกกวำ่นอ้ยกวำ่
4
!!!! ข้อควรระวงั !!!!= ใชก้ ำหนดค่ำ== ใชเ้ปรียบเทียบค่า
ตัวเช่ือม การกระท า
&& AND ถำ้ค่ำทั้งสองเป็นจริงผลลพัธ์จะเป็นจริง
|| OR ถำ้ทั้งสองเป็นเทจ็ผลลพัธ์จะเป็นเทจ็
! NOT เปล่ียนค่ำจำกจริงเป็นเทจ็ หรือ จำกเทจ็เป็นจริง
ตัวอย่าง
5
public class Welcome {
public static void main(String[] args) {
int cash = 220;
int price = 100;
if (cash >= price && price < 150)
System.out.println("Buy book.");
}
}
Buy book.ตัวอย่างผลลัพธ์
เง่ือนไข 2 ทาง
6
if (เงื่อนไข){
ค ำสัง่ท่ี1;
} else {
ค ำสัง่ท่ี2;
}
เง่ือนไข
ค ำสัง่ท่ี 2
NoYes
ค ำสัง่ท่ี 1
รูปแบบค ำสัง่
ตัวอย่างโปรแกรมรับค่ำคะแนน 2 วิชำจำกผูใ้ช ้หำกคะแนนคณิตศำสตร์มำกกวำ่เท่ำกบั 60 คะแนน และคะแนนภำษำองักฤษมำกกวำ่เท่ำกบั 55 คะแนน จะพิมพข์อ้ควำมวำ่ "PASS" แต่หำกไม่ใช่จะพิมพ์ขอ้ควำม "Fail"
7
import java.util.Scanner;
public class Examiner {public static void main(String args[]) {
Scanner scan = new Scanner(System.in);System.out.println("Enter math score :");int mathScore = scan.nextInt();System.out.println("Enter english score :");int engScore = scan.nextInt();
if (mathScore >= 60 && engScore >= 55) {System.out.println("Pass");
} else {System.out.println("Fail");
}}
}
Start
End
GET mathScore
mathScore>=60 AND
engScore>=55
GET engScore
YesNo
PUT "Fail"
PUT "Pass"
เง่ือนไขซ้อนเง่ือนไข
8
เง่ือนไขท่ี 1 NoYes
ค ำสัง่ท่ี 1เง่ือนไขท่ี 2
ค ำสัง่ท่ี 2 เง่ือนไขท่ี n
ค ำสัง่ท่ี n ค ำสัง่อ่ืนๆ
Yes No
NoYes
if (เงื่อนไขท่ี 1){
ค ำสัง่ท่ี1;
} else if (เงื่อนไขท่ี 2){
ค ำสัง่ท่ี2;
} else if (เงื่อนไขท่ี n){
ค ำสัง่ท่ื n;
} else {
ค ำสัง่อ่ืนๆ;
}
รูปแบบค ำสัง่
import java.util.Scanner;
public class Grader {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter total score :");
int totalScore = scan.nextInt();
if (totalScore >= 80) {
System.out.println("A");
} else if (totalScore >= 70) {
System.out.println("B");
} else if (totalScore >= 60) {
System.out.println("C");
} else if (totalScore >= 50) {
System.out.println("D");
} else {
System.out.println("F");
}
}
}
ตัวอย่าง
9
totalScore>= 80
NoYes
totalScore>= 70
NoYes
PUT “B” totalScore>= 60
NoYes
PUT “C” totalScore>= 50
NoYes
PUT “D”
GET totalScore
Start
End
PUT “A”
PUT “F”
การใส่ { } ในค าส่ัง ifกรณีท่ีมีเพียง 1 ค ำสัง่ภำยใน if หรือ else ไม่ตอ้งใส่ปีกกำครอบกไ็ด ้แต่ถำ้ 2 ค ำสัง่ข้ึนไป ตอ้งใส่เสมอ
10
if (เงือ่นไข) ค ำสัง่;
else
ค ำสัง่;
ค ำสัง่เดียว ไม่ตอ้งใส่ { } กไ็ด้
if (เงือ่นไข) {ค ำสัง่ที1่;ค ำสัง่ที2่;
} else {
ค ำสัง่ที3่;ค ำสัง่ที4่;
}
หลำยค ำสัง่ ใหใ้ส่ { } เสมอ
การท าซ ้า (Loop)
11
อลักอริทึมของโปรแกรมบอกรักแฟน 5 คร้ัง
i <= 5No
YesPUT "I love you"
Start
End
PUT "Jub Jub (>_<)"
i = 1
i = i + 1
ลูปเกดิในส่วนใดของโปรแกรมInput รับค่ำซ ้ ำอีกคร้ังเม่ือผูใ้ชก้รอกค่ำไม่ถูกตอ้ง รับค่ำตำมจ ำนวนท่ีโปรแกรมตอ้งกำร
Processing ประมวลผลซ ้ ำเพ่ือน ำผลลพัธ์ไปใชใ้นรอบต่อไป
Output แสดงผลท่ีมีรูปแบบคลำ้ยคลึงกนั และมีควำมต่อเน่ือง
12
ลูป while
13
ตวัแปรควบคุมลูป ท่ีระบุค่ำเร่ิมตน้
while( )
{
}
เง่ือนไขกำรเขำ้ลูป
ชุดค ำสัง่ท ำซ ้ ำ
ปรับปรุงค่ำในตวัแปรควบคุมลูปชุดค ำสัง่ท ำซ ้ ำ
No
Yes
ตวัแปรควบคุมลูปท่ีระบุค่ำเร่ิมตน้
ปรับปรุงค่ำในตวัแปรควบคุมลูป
เง่ือนไขการเข้าลูป
การใช้ค าส่ัง while ควบคุมลูป
14
ล าดับการท างาน1. ทดสอบนิพจน์เง่ือนไข ซ่ึงจะไดผ้ลลพัธ์
เป็นจริง หรือ เทจ็2. หำกนิพจนเ์ป็นจริง จะท ำค ำสัง่ท่ีอยู่
ภำยใต ้while ท่ีอยูใ่นวงเลบ็ปีกกำ { }3. หลงัจำกนั้นจะยอ้นกลบัไปตรวจสอบ
เง่ือนไขใน while4. หำกนิพจนเ์ป็นเทจ็ จะไม่สนใจค ำสัง่
ภำยใต ้while จะขำ้มไปยงัค ำสัง่หลงัปีกกำปิดของ while แต่หำเป็นจริงจะท ำค ำสัง่ภำยใตว้งเวบ็ปีกกำอีกคร้ัง
while (เงื่อนไข){ ค ำสัง่ท่ี1;ค ำสัง่ท่ี2;
}
ค ำสัง่ท่ี3;ค ำสัง่ท่ี4;
True
False
public class WhileLoopTest {
public static void main(String args[]) {
int i = 1;
while (i <= 5) {
System.out.println("I love you");
i++;
}
System.out.println("Jub Jub (>_<)");
}
}
ตัวอย่าง
15
2 3 4i = 1
I love you
I love you
I love you
I love you
I love you
Jub Jub (>_<)
5 6
โปรแกรมบอกรักแฟน 5 คร้ังโดยใชลู้ป while
ตัวอย่างหน้าจอ
กจิกรรมจงเขียนโปรแกรมแสดงตวัเลขจำก 1 ถึง 10 โดยใชค้ ำสัง่ while
จงเขียนโปรแกรมแสดงตวัเลขจำก 10 ถึง 1 โดยใชค้ ำสัง่ while
16
for( ; ; ) {
}
ลูป for
17
ชุดค ำสัง่ท ำซ ้ ำ
No
Yes
ปรับปรุงค่ำในตวัแปรควบคุมลูป
เง่ือนไขการเข้าลูป
ก ำหนดค่ำเร่ิมตน้ใหต้วัแปรควบคุม เง่ือนไขกำรเขำ้ลูป ปรับปรุงค่ำในตวัแปรควบคุม
ชุดค ำสัง่ท ำซ ้ ำ
• ค ำสัง่ for 1 ค ำสัง่ จะบรรจุกำรท ำงำนไว ้3ค ำสัง่ ประกอบดว้ย1) ค ำสัง่ก ำหนดค่ำเร่ิมตน้ใหต้วัแปร
ควบคุมลูป2) เง่ือนไขกำรเขำ้ลูป 3) ค ำสัง่ปรับปรุงค่ำในตวัแปรควบคุมลูป
ก ำหนดค่ำเร่ิมตน้ให้ตวัแปรควบคุมลูป
public class ForLoopTest {
public static void main(String args[]) {
for (int i=1; i<=5; i++) {
System.out.println("I love you");
}
System.out.println("Jub Jub (>_<)");
}
}
ตัวอย่าง
18
รอบการท างานช่ือตัวแปร
ค่าเร่ิมต้น
รอบที่1
รอบที่2
รอบที่3
รอบที่4
รอบที่5
1 2 3 4 5i
I love youI love youI love youI love you
I love you
Jub Jub (>_<)
6
ตัวอย่างหน้าจอ
โปรแกรมบอกรักแฟน 5 คร้ังโดยใชลู้ป for
public class WhileLoopTest {
public static void main(String args[]) {
int i = 1;
while (i <= 5) {
System.out.println("I love you");
i++;
}
System.out.println("Jub Jub (>_<)");
}
}
public class ForLoopTest {
public static void main(String args[]) {
for (int i=1; i<=5; i++) {
System.out.println("I love you");
}
System.out.println("Jub Jub (>_<)");
}
}
เปรียบเทียบค าส่ัง while และ for
19
การใส่ { } ในค าส่ังลูปกรณีท่ีค ำสัง่ภำยในลูปมีเพียง 1 ค ำสัง่ ไม่ตอ้งใส่ปีกกำครอบกไ็ด ้แต่ถำ้ 2 ค ำสัง่ข้ึนไป ตอ้งใส่เสมอ
20
while (เงือ่นไข) ค ำสัง่;
ค ำสัง่เดียวไม่ตอ้งใส่ { } กไ็ด้
หลำยค ำสัง่ ใหใ้ส่ { } เสมอ
for(…; …; …)
ค ำสัง่;
while (เงือ่นไข) {ค ำสัง่ที1่;ค ำสัง่ที2่;
}
for(…; …; …) {
ค ำสัง่ที1่;ค ำสัง่ที2่;
}
การใช้ลูปหาค่าผลรวมกำรหำค่ำผลรวม จะใชต้วัแปรในกำรสะสมค่ำ ซ่ึงเรียกวำ่
Accumulator
Accumulator จะถูกก ำหนดค่ำใหม่ เม่ือจบกำรท ำงำนของลูปในแต่ละรอบ
21
import java.util.Scanner;
public class Accumulator {public static void main(String[] args) {
Scanner scan = new Scanner(System.in);int num, sum, i;System.out.print("Input number = ");num = scan.nextInt();
sum = 0;for (i=1; i<=num; i++) {
sum = sum + i;}
System.out.println("sum = " + sum);}
}
ตัวอย่าง
22
โปรแกรมบวกเลขตั้งแต่ 1 ถึงค่ำท่ี input จำกผูใ้ช้
i
Input number =
หน้าจอ
4
num sum
sum = 10
4 0 11 23 36 410 5
กจิกรรมจงเขียนโปรแกรมหำค่ำผลรวมของ
1/1 + 1/2 + 1/3 + 1/4 + ... + 1/100ซ่ึงมีผลลพัธ์เป็น 5.19
23
การหยุด Loop ก่อนก าหนดในระหวำ่งท่ีมีกำรท ำซ ้ ำในลูป สำมำรถสัง่ใหลู้ปหยดุได ้ซ่ึง
ประกอบดว้ย 2 ค ำสัง่ ค ำสัง่ break คือ ค ำสัง่ท่ีใชเ้ม่ือตอ้งกำรหยดุกำรท ำงำนของลูปทนัที
ค ำสัง่ continue คือ ค ำสัง่ท่ีใชเ้ม่ือตอ้งกำรใหห้ยดุกำรท ำงำนลูปแลว้กลบัไปตรวจสอบเง่ือนไขของลูป
24
ค าส่ัง break
25
public static void main(String[] args) {int i = 1;
while(i<=5) {
System.out.println("OK\n" i);
i++;
if(i==3) {
break;
}
}
System.out.println("End at i = " + i);
}
i
หน้าจอ
OK
OK
End at i = 3
123public class BreakTest {
}
ค าส่ัง continue
26
public static void main(String[] args) {
int i;
for (i=1; i<=4; i++) {
if(i==3) {
continue;
}
System.out.println( i );
}
}
i
1
2
4
1234
หน้าจอ
5public class ContinueTest {
}
ตัวแปรชนิด Stringกำรประกำศตวัแปร
String firstName = new String(); หรอื
String message;
กำรก ำหนดค่ำfirstName = "ธจีงั";
message = "สวสัดคีรบั" + firstName;
กำรรับค่ำทำงคียบ์อร์ดScanner scan = new Scanner(System.in);
firstName = scan.next();
กำรน ำตวัแปรไปใช้System.out.println("Hello " + firstName);
27
การเปรียบเทียบ Stringกำรเปรียบเทียบ String ในภำษำจำวำจะไม่ใชเ้คร่ืองหมำย = =
แต่จะใช ้method equals( ) แทน
28
if ( gender == "male" )
System.out.println("เพศชาย");
if ( gender.equals("male") )
System.out.println("เพศชาย");
ตัวอย่าง
29
public class CompareString {
public static void main(String[] args) {
String gender = "male";
if ( gender.equals("male") )
System.out.println("เพศชาย");
else if ( gender.equals("female") )
System.out.println("เพศหญงิ");
}
}
เพศชายตัวอย่างผลลัพธ์
ค าส่ังมาตรฐานของคลาส String
30
ค าส่ังมาตรฐานของคลาส Stringlength( ) ควำมยำวของสตริง charAt( ) ตวัอกัษรในต ำแหน่งท่ีก ำหนด ตวัอกัษรตวัแรกคือต ำแหน่งท่ี 0 ตวัอกัษรสุดทำ้ยคือ length() - 1
indexOf( ) ต ำแหน่งของสำยอกัขระในสตริงsubstring( ) สตริงท่ีอยูใ่นช่วงท่ีก ำหนดsplit( ) ตดัขอ้ควำมในสตริงตำมอกัขระท่ีก ำหนดreplace( ) แทนท่ีขอ้ควำมในสตริงตำมท่ีก ำหนด
31
ตัวอย่างการใช้เมธอด chatAt( )
32
public class StringTest {
public static void main(String args[]) {
String str = "My name is John";
System.out.println(str.charAt(0));
System.out.println(str.charAt(4));
}
}
Maตัวอย่างผลลัพธ์
ตัวอย่างการใช้เมธอด length( ) และ replace( )
33
public class StringTest {
public static void main(String args[]) {
String str = "My name is John";
System.out.println( str.length() );
System.out.println( str.replace("J","Y") );
}
}
15My name is Yohnตัวอย่างผลลัพธ์