บทท ่ี2 - it.nrru.ac.th · โครงสร้างแบบซ้อน(nested...

32
2 บทที 2 พจน และโครงสร างควบคม นพจนและโครงสรางควบค (Expression and Control Structure)

Upload: others

Post on 03-Nov-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

2บทท 2

นพจนและโครงสรางควบคมนพจนและโครงสรางควบคม

(Expression and Control Structure)

วตถประสงค

แนะนานพจน (expression)

นยามความแตกตางระหวางตวแปรของออปเจค (object variables) และ นยามความแตกตางระหวางตวแปรของออปเจค (object variables) และ ตวแปรภายใน (local variables)

แนะนาตวดาเนนการ(Operators) ทใชในภาษาจาวา 4 แบบคอ แนะนาตวดาเนนการ(Operators) ทใชในภาษาจาวา 4 แบบคอ • ตวดาเนนการทางคณตศาสตร (Arithmetic Operators)• ตวดาเนนการทางตรรกศาสตร (Logical Operators)• ตวดาเนนการแบบสมพนธ (Relational Operators)• ตวดาเนนการแบบบต (Bitwise Operators)

วตถประสงค

อธบายคาสงโครงสรางแบบเลอกทา (Selection Structure) • if..else • switch• switch

อธบายคาสงโครงสรางแบบทาซา (Repetition Structure) • while• do..while• for

อธบายคาสงโครงสรางแบบซอน (Nested Structure)อธบายคาสงโครงสรางแบบซอน (Nested Structure)

อธบายความหมายของ • label• คาสง continue• คาสง break

นพจน

นพจน คอขอความทอาจประกอบดวยขอมลคาคงท ตวแปร ตวดาเนนการ และวงเลบ

นพจน แบงเปนนพจน แบงเปน• นพจนคณตศาสตร (Arithmetic Expression)• นพจนตรรกศาสตร (Logical Expression)

ขอบเขตของตวแปร

ตวแปรในภาษาจาวาม 2 ประเภท• ตวแปรทเปนคณลกษณะของออปเจคหรอคณลกษณะของคลาส

ป ใ• ตวแปรภายใน

สาหรบคาคงทหรอตวแปรทอยภายในบลอกของเมธอด จะมขอบเขตการใช ใ งานอยภายในบลอกเทานน

ใ โคาเรมตนทถกกาหนดใหอตโนมต

ชนดขอมล คาเรมตนboolean falseboolean falsebyte 0short 0int 0long 0Lfloat 0.0ffloat 0.0fdouble 0.0char '\u0000'

คลาส null

ตวอยางแสดงขอบเขตของตวแปร

public class VariableScopeDemo {

public int i; // object variable

public void method1() {p

int j = 4; // local variable

int k = 2; // another local variable

}}

public void method2() {

int j = 0; //local variable

System.out.println(i); // calling an object variable i

// System.out.println(k); // illegal

}

}

ใ ตวอยางแสดงตวแปรภายในและตวแปรของออปเจคpublic class ScopeExample {public class ScopeExample {

private int i=1;

public void method1() {

int i=4 j=5;int i=4, j=5;

this.i = i+j;

method2(7);

}}

public void method2(int i) {

int j=8;

this.i = i+j;j

}

}

public class TestScoping {

public static void main(String args[]) {

ScopeExample scope = new ScopeExample();

scope.method1();

}

}

รปแสดงการเกบคาของตวแปร

ตวดาเนนการแบบตางๆ

ตวดาเนนการทางคณตศาสตร (Arithmetic Operators)ตวดาเนนการแบบสมพนธ (Relational Operators)ตวดาเนนการแบบสมพนธ (Relational Operators)ตวดาเนนการทางตรรกศาสตร (Logical Operators)ตวดาเนนการแบบบต (Bitwise Operators)

ตวดาเนนการทางคณตศาสตร

เครองหมาย ความหมาย ตวอยางนพจน

+ บวก a+b

- ลบ a-b

* คณ a*bคณ a b

/ หาร a/b

% เศษจากการหาร a%b

ตวดาเนนการทางคณตศาสตรแบบยอ

เครองหมาย ตวอยาง ความหมาย

+= x+=3 x = x+3

-= x-=3 x = x-3

*= x*=3 x = x*3

/= x/=3 x = x/3

%= x%=3 x = x%3

ตวดาเนนการเพมคาและลดคา

ตวดาเนนการเพอบวกคาทละ 1 หรอลดคาทละ 1

เครองหมาย ++ หรอ --เครองหมาย ++ หรอ

ตวอยางx++ คอ x = x+1• x++ คอ x = x+1

• ++x คอ x = x+1• x-- คอ x = x-1

• --x คอ x = x-1

ถาวางเครองหมายไวขางหนา โปรแกรมจะคานวณคากอนแลวจงทาคาสง

ถาวางเครองหมายไวขางหลง โปรแกรมจะคานวณคาหลงจากทาคาสง

ตวดาเนนการแบบสมพนธ

เครองหมาย ความหมาย ตวอยาง ผลลพธ

< นอยกวา 3<4 true

<= นอยกวาหรอเทากบ 3<=4 true<= นอยกวาหรอเทากบ 3<=4 true

> มากกวา 3>4 false

>= มากกวาหรอเทากบ 3>=4 false

3 4 f l== เทากบ 3==4 false

!= ไมเทากบ 3!=4 true

ตวดาเนนการทางตรรกศาสตร

เครองหมาย ความหมาย

! กลบคาทางตรรกะ

&& หรอ & AND คาทางตรรกะ

|| หรอ | OR คาทางตรรกะ|| หรอ | OR คาทางตรรกะ

^ Exclusive-OR คาทางตรรกะ

ตวดาเนนการขอมลเชงบต

ตวดาเนนการขอมลเชงบตของเลขจานวนเตม

ตวดาเนนการ ความหมาย

~ Complement

& AND

| OR

^ XOR

ตวดาเนนการแบบ shift บต

ตวดาเนนการ ความหมาย

>> signed right shift

>>> i d i ht hift>>> unsigned right shift

<< left shift

ตวดาเนนการของขอความ

เครองหมาย + เปนตวดาเนนการทจะเชอมขอความสองขอความเขาดวยกนตวถกดาเนนการ (Operand) ตวหนงจะตองเปนขอมลชนดขอความตวถกดาเนนการ (Operand) ตวหนงจะตองเปนขอมลชนดขอความ

การทตวถกดาเนนการอกตวหนงไมใชขอมลชนดขอความ ตวถกดาเนนการจะถกให

เปนขอมลชนดขอความอตโนมตเปนขอมลชนดขอความอตโนมต

คาสงโครงสรางแบบเลอกทา

จะสามารถเลอกทาชดคาสงไดตามเงอนไขทกาหนดไว

ม 2 รปแบบ คอม 2 รปแบบ คอ• if..else• switch

คาสง if..else

รปแบบ

if (logical expression 1) {if (logical expression 1) {statements1

} else if (logical expression 2) {) {statements2

} else {

statements3

}

คาสง switch

คาสง switch มรปแบบดงน

switch (expression) {s tc (e p ess o ) {

case value1: statements 1;break;

case value2: statements 2;break;

:case valueN: statements N;

break;break;:

default: statements N+1;}

คาสงโครงสรางแบบทาซา

จะสามารถทาชดคาสงซาไดตามเงอนไขทกาหนดไว

ม 3 รปแบบ คอม 3 รปแบบ คอ• while• do..while• for

คาสง while

มรปแบบคาสงดงน

initial statementsinitial statements

while(logical expression) {

statements

update statements

}}

คาสง do..while

มรปแบบคาสงดงน

initial statementsinitial statements

do {

statementsstatements

update statements

} while (logical expression);} ( g p )

คาสง for

มรปแบบคาสงดงน

for(initial statements; logical expression; update statements) {

statements

}}

โครงสรางแบบซอน (Nested Structure)

เราสามารถทจะเขยนคาสงโครงสรางควบคมใดๆซอนอยภายในได

ตวอยางเชน การเขยนโครงสรางทาซาแบบซอน (for อยใน for)ตวอยางเชน การเขยนโครงสรางทาซาแบบซอน (for อยใน for)

โครงสรางควบคมภายในและภายนอกไมจาเปนตองเปนคาสงชนดเดยวกน

คาสงอนๆในการควบคม loop

label : statements;• label เปนการระบตาแหนงของ loop กรณทม loop ซอนกน

break [label];• คาสงใหสนสดการทางานใน loop

continue [label];• คาสงใหขามการทางานของคาสงทเหลอทงหมดใน loop

โ ตวอยางโปรแกรมทใชคาสงโครงสรางแบบซอน

public class SampleBreak1 {public static void main(String args[]) {

int i, j, product;for (i=1; i<=3; i++) {

for (j=1; j<=3; j++) {product = i*j;if (j==3) break;if (j==3) break;System.out.println(i+" * "+j+" "+product);}

}}

}

1 * 1 = 11 1 = 11 * 2 = 22 * 1 = 22 * 2 = 4

ผลลพธทไดจากการรนโปรแกรม2 2 43 * 1 = 33 * 2 = 6

โ ตวอยางโปรแกรมทใชคาสงโครงสรางแบบซอน

public class SampleBreak2 {public static void main(String args[]) {

int i, j, product;outer: for (i=1; i<=3; i++) {

for (j=1; j<=3; j++) product = i*j;if (j==3) break outer;if (j==3) break outer;

System.out.println(i+" * "+j+" = "+product);}

}System.out.println("Outside nested loops.");

}}

1 * 1 = 11 * 2 = 2ผลลพธทไดจากการรนโปรแกรมOutside nested loops.

สรปเนอหาของบท

นพจนคอขอความทอาจประกอบดวยขอมลคาคงท ตวแปร ตวดาเนนการ และวงเลบ

ตวแปรของออปเจคตางจากตวแปรภายในตรงท ตวแปรของออปเจคสามารถถกนาไปใชไดในทกเมธอดของคลาส และจะถกกาหนดคาเรมตนให โดยอตโนมต สวนตวแปรภายในจะเปนตวแปรทกาหนดในบลอกของเมธอด ซงจะมขอบเขตการใชงานอยภายในบลอกทกาหนดขนเทานน และจะไมม

ใ โ โการกาหนดคาเรมตนใหโดยอตโนมต

สรปเนอหาของบท

ตวดาเนนการทใชในภาษาจาวามทงหมด 4 แบบคอ • ตวดาเนนการทางคณตศาสตร : +, -, *, /, %, +=, -=, *=, /=, %=, ++และ --

• ตวดาเนนการแบบสมพนธ : <, <=, >, >=, == และ != • ตวดาเนนการทางตรรกศาสตร : !, &&, &, ||, | และ ^• ตวดาเนนการแบบบต : ~, &, |, ^, >>, >>>, <<

ตวดาเนนการของขอความจะเปนเครองหมาย + ซงใชในการเชอมขอความสองขอความเขาดวยกนสองขอความเขาดวยกน

คลาส Math จะมเมธอดตางๆ ในการจดการกบฟงกชนหรอคาสงทางคณตศาสตรตางๆคณตศาสตรตางๆ

คาสงโครงสรางควบคม เปนคาสงทใชในการกาหนดลาดบการทางานของ โ ป โ โ คาสงตางๆ โดยมสามรปแบบคอ โครงสรางแบบตามลาดบ โครงสราง

แบบเลอกทา และโครงสรางแบบทาซา

สรปเนอหาของบท

คาสงทเปนคาสงของโครงสรางแบบเลอกทาคอ คาสง if, if..else หรอ switch

คาสงทเปนคาสงของโครงสรางแบบทาซาคอ คาสง while do while หรอ คาสงทเปนคาสงของโครงสรางแบบทาซาคอ คาสง while, do..while หรอ for

คาสงโครงสรางทงหมดทกลาวมาแลวขางตน สามารถนามาใชรวมกนเปนคาสงโครงสรางทงหมดทกลาวมาแลวขางตน สามารถนามาใชรวมกนเปนลกษณะแบบซอนได เชน คาสง switch อยภายในคาสง while หรอคาสง for อยภายในคาสง for ซงเรยกโครงสรางในลกษณะนวา โครงสรางแบบซอนอยภายในคาสง for ซงเรยกโครงสรางในลกษณะนวา โครงสรางแบบซอน

คาสง break จะทาใหหยดสนสดการทางานของโครงสรางแบบทาซา สวนคาสง continue จะขามการทางานคาสงทเหลอภายในบลอก { } โดยไปเรมคาสง continue จะขามการทางานคาสงทเหลอภายในบลอก { } โดยไปเรมการทาซาในรอบตอไปใหม

แบบฝกหด

ขอท 1• ทดลองเขยนโปรแกรมหาคาผลรวมของ 1! + 2! + 3! + …. + n! เมอ n คอคาจานวน

ใเตมบวกใดๆ

2ขอท 2• จากโปรแกรมจาลองระบบธนาคาร ใหทดลองปรบปรงเมธอดในการถอนเงนเพอปองกนไมใหถอนเงนเกนยอดเงนในบญชโดยใชคาสง if…elseญ