ค ำสั่งเงื่อนไข/ลูป และกำรใช้ stringเง...

33
คำสั ่งเงื่อนไข/ลูป และกำรใช้ String ผศ.ดร.ธีระยุทธ ทองเครือ สาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยขอนแก่น บทที่ 2

Upload: others

Post on 14-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ค ำสัง่เง่ือนไข/ลปู

และกำรใช ้String

ผศ.ดร.ธีระยุทธ ทองเครือ

สาขาวิชาวิทยาการคอมพิวเตอร ์ คณะวิทยาศาสตร์

มหาวิทยาลัยขอนแก่น

บทที่ 2

Page 2: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

เง่ือนไขทางเดียว

2

if (เงื่อนไข) {

ค ำสัง่;

}

เง่ือนไข

ค ำสัง่

No

Yes

รูปแบบค ำสัง่

Page 3: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

เง่ือนไขทางเดียว

3

ล าดับการท างาน1. ทดสอบนิพจน์เง่ือนไข ซ่ึงจะไดผ้ลลพัธ์

เป็นจริง หรือ เทจ็2. หำกนิพจนเ์ป็นจริง จะท ำค ำสัง่ท่ีอยู่

ภำยใต ้if ท่ีอยูใ่น { }3. หำกนิพจนเ์ป็นเทจ็ จะไม่สนใจค ำสัง่

ภำยใต ้if จะขำ้มไปยงัค ำสัง่ถดัไป

if (เงื่อนไข){ ค ำสัง่ท่ี1;ค ำสัง่ท่ี2;

}

ค ำสัง่ท่ี3;ค ำสัง่ท่ี4;

Page 4: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ตัวด าเนินการทางตรรกะตัวด าเนินการ กระบวนการ

==!=<=>=><

เท่ำกบัไม่เท่ำกบันอ้ยกวำ่หรือเท่ำกบัมำกกวำ่หรือเท่ำกบัมำกกวำ่นอ้ยกวำ่

4

!!!! ข้อควรระวงั !!!!= ใชก้ ำหนดค่ำ== ใชเ้ปรียบเทียบค่า

ตัวเช่ือม การกระท า

&& AND ถำ้ค่ำทั้งสองเป็นจริงผลลพัธ์จะเป็นจริง

|| OR ถำ้ทั้งสองเป็นเทจ็ผลลพัธ์จะเป็นเทจ็

! NOT เปล่ียนค่ำจำกจริงเป็นเทจ็ หรือ จำกเทจ็เป็นจริง

Page 5: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ตัวอย่าง

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.ตัวอย่างผลลัพธ์

Page 6: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

เง่ือนไข 2 ทาง

6

if (เงื่อนไข){

ค ำสัง่ท่ี1;

} else {

ค ำสัง่ท่ี2;

}

เง่ือนไข

ค ำสัง่ท่ี 2

NoYes

ค ำสัง่ท่ี 1

รูปแบบค ำสัง่

Page 7: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 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"

Page 8: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

เง่ือนไขซ้อนเง่ือนไข

8

เง่ือนไขท่ี 1 NoYes

ค ำสัง่ท่ี 1เง่ือนไขท่ี 2

ค ำสัง่ท่ี 2 เง่ือนไขท่ี n

ค ำสัง่ท่ี n ค ำสัง่อ่ืนๆ

Yes No

NoYes

if (เงื่อนไขท่ี 1){

ค ำสัง่ท่ี1;

} else if (เงื่อนไขท่ี 2){

ค ำสัง่ท่ี2;

} else if (เงื่อนไขท่ี n){

ค ำสัง่ท่ื n;

} else {

ค ำสัง่อ่ืนๆ;

}

รูปแบบค ำสัง่

Page 9: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

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”

Page 10: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

การใส่ { } ในค าส่ัง ifกรณีท่ีมีเพียง 1 ค ำสัง่ภำยใน if หรือ else ไม่ตอ้งใส่ปีกกำครอบกไ็ด ้แต่ถำ้ 2 ค ำสัง่ข้ึนไป ตอ้งใส่เสมอ

10

if (เงือ่นไข) ค ำสัง่;

else

ค ำสัง่;

ค ำสัง่เดียว ไม่ตอ้งใส่ { } กไ็ด้

if (เงือ่นไข) {ค ำสัง่ที1่;ค ำสัง่ที2่;

} else {

ค ำสัง่ที3่;ค ำสัง่ที4่;

}

หลำยค ำสัง่ ใหใ้ส่ { } เสมอ

Page 11: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

การท าซ ้า (Loop)

11

อลักอริทึมของโปรแกรมบอกรักแฟน 5 คร้ัง

i <= 5No

YesPUT "I love you"

Start

End

PUT "Jub Jub (>_<)"

i = 1

i = i + 1

Page 12: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ลูปเกดิในส่วนใดของโปรแกรมInput รับค่ำซ ้ ำอีกคร้ังเม่ือผูใ้ชก้รอกค่ำไม่ถูกตอ้ง รับค่ำตำมจ ำนวนท่ีโปรแกรมตอ้งกำร

Processing ประมวลผลซ ้ ำเพ่ือน ำผลลพัธ์ไปใชใ้นรอบต่อไป

Output แสดงผลท่ีมีรูปแบบคลำ้ยคลึงกนั และมีควำมต่อเน่ือง

12

Page 13: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ลูป while

13

ตวัแปรควบคุมลูป ท่ีระบุค่ำเร่ิมตน้

while( )

{

}

เง่ือนไขกำรเขำ้ลูป

ชุดค ำสัง่ท ำซ ้ ำ

ปรับปรุงค่ำในตวัแปรควบคุมลูปชุดค ำสัง่ท ำซ ้ ำ

No

Yes

ตวัแปรควบคุมลูปท่ีระบุค่ำเร่ิมตน้

ปรับปรุงค่ำในตวัแปรควบคุมลูป

เง่ือนไขการเข้าลูป

Page 14: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

การใช้ค าส่ัง while ควบคุมลูป

14

ล าดับการท างาน1. ทดสอบนิพจน์เง่ือนไข ซ่ึงจะไดผ้ลลพัธ์

เป็นจริง หรือ เทจ็2. หำกนิพจนเ์ป็นจริง จะท ำค ำสัง่ท่ีอยู่

ภำยใต ้while ท่ีอยูใ่นวงเลบ็ปีกกำ { }3. หลงัจำกนั้นจะยอ้นกลบัไปตรวจสอบ

เง่ือนไขใน while4. หำกนิพจนเ์ป็นเทจ็ จะไม่สนใจค ำสัง่

ภำยใต ้while จะขำ้มไปยงัค ำสัง่หลงัปีกกำปิดของ while แต่หำเป็นจริงจะท ำค ำสัง่ภำยใตว้งเวบ็ปีกกำอีกคร้ัง

while (เงื่อนไข){ ค ำสัง่ท่ี1;ค ำสัง่ท่ี2;

}

ค ำสัง่ท่ี3;ค ำสัง่ท่ี4;

True

False

Page 15: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

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

ตัวอย่างหน้าจอ

Page 16: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

กจิกรรมจงเขียนโปรแกรมแสดงตวัเลขจำก 1 ถึง 10 โดยใชค้ ำสัง่ while

จงเขียนโปรแกรมแสดงตวัเลขจำก 10 ถึง 1 โดยใชค้ ำสัง่ while

16

Page 17: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

for( ; ; ) {

}

ลูป for

17

ชุดค ำสัง่ท ำซ ้ ำ

No

Yes

ปรับปรุงค่ำในตวัแปรควบคุมลูป

เง่ือนไขการเข้าลูป

ก ำหนดค่ำเร่ิมตน้ใหต้วัแปรควบคุม เง่ือนไขกำรเขำ้ลูป ปรับปรุงค่ำในตวัแปรควบคุม

ชุดค ำสัง่ท ำซ ้ ำ

• ค ำสัง่ for 1 ค ำสัง่ จะบรรจุกำรท ำงำนไว ้3ค ำสัง่ ประกอบดว้ย1) ค ำสัง่ก ำหนดค่ำเร่ิมตน้ใหต้วัแปร

ควบคุมลูป2) เง่ือนไขกำรเขำ้ลูป 3) ค ำสัง่ปรับปรุงค่ำในตวัแปรควบคุมลูป

ก ำหนดค่ำเร่ิมตน้ให้ตวัแปรควบคุมลูป

Page 18: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

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

Page 19: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

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

Page 20: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

การใส่ { } ในค าส่ังลูปกรณีท่ีค ำสัง่ภำยในลูปมีเพียง 1 ค ำสัง่ ไม่ตอ้งใส่ปีกกำครอบกไ็ด ้แต่ถำ้ 2 ค ำสัง่ข้ึนไป ตอ้งใส่เสมอ

20

while (เงือ่นไข) ค ำสัง่;

ค ำสัง่เดียวไม่ตอ้งใส่ { } กไ็ด้

หลำยค ำสัง่ ใหใ้ส่ { } เสมอ

for(…; …; …)

ค ำสัง่;

while (เงือ่นไข) {ค ำสัง่ที1่;ค ำสัง่ที2่;

}

for(…; …; …) {

ค ำสัง่ที1่;ค ำสัง่ที2่;

}

Page 21: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

การใช้ลูปหาค่าผลรวมกำรหำค่ำผลรวม จะใชต้วัแปรในกำรสะสมค่ำ ซ่ึงเรียกวำ่

Accumulator

Accumulator จะถูกก ำหนดค่ำใหม่ เม่ือจบกำรท ำงำนของลูปในแต่ละรอบ

21

Page 22: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

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

Page 23: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

กจิกรรมจงเขียนโปรแกรมหำค่ำผลรวมของ

1/1 + 1/2 + 1/3 + 1/4 + ... + 1/100ซ่ึงมีผลลพัธ์เป็น 5.19

23

Page 24: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

การหยุด Loop ก่อนก าหนดในระหวำ่งท่ีมีกำรท ำซ ้ ำในลูป สำมำรถสัง่ใหลู้ปหยดุได ้ซ่ึง

ประกอบดว้ย 2 ค ำสัง่ ค ำสัง่ break คือ ค ำสัง่ท่ีใชเ้ม่ือตอ้งกำรหยดุกำรท ำงำนของลูปทนัที

ค ำสัง่ continue คือ ค ำสัง่ท่ีใชเ้ม่ือตอ้งกำรใหห้ยดุกำรท ำงำนลูปแลว้กลบัไปตรวจสอบเง่ือนไขของลูป

24

Page 25: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ค าส่ัง 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 {

}

Page 26: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ค าส่ัง 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 {

}

Page 27: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ตัวแปรชนิด 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

Page 28: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

การเปรียบเทียบ Stringกำรเปรียบเทียบ String ในภำษำจำวำจะไม่ใชเ้คร่ืองหมำย = =

แต่จะใช ้method equals( ) แทน

28

if ( gender == "male" )

System.out.println("เพศชาย");

if ( gender.equals("male") )

System.out.println("เพศชาย");

Page 29: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ตัวอย่าง

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("เพศหญงิ");

}

}

เพศชายตัวอย่างผลลัพธ์

Page 30: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ค าส่ังมาตรฐานของคลาส String

30

Page 31: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ค าส่ังมาตรฐานของคลาส Stringlength( ) ควำมยำวของสตริง charAt( ) ตวัอกัษรในต ำแหน่งท่ีก ำหนด ตวัอกัษรตวัแรกคือต ำแหน่งท่ี 0 ตวัอกัษรสุดทำ้ยคือ length() - 1

indexOf( ) ต ำแหน่งของสำยอกัขระในสตริงsubstring( ) สตริงท่ีอยูใ่นช่วงท่ีก ำหนดsplit( ) ตดัขอ้ควำมในสตริงตำมอกัขระท่ีก ำหนดreplace( ) แทนท่ีขอ้ควำมในสตริงตำมท่ีก ำหนด

31

Page 32: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ตัวอย่างการใช้เมธอด 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ตัวอย่างผลลัพธ์

Page 33: ค ำสั่งเงื่อนไข/ลูป และกำรใช้ Stringเง อนไขทางเด ยว 3 ล าด บการท างาน 1. ทดสอบน

ตัวอย่างการใช้เมธอด 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ตัวอย่างผลลัพธ์