Upload
aeew-autaporn
View
157
Download
1
Embed Size (px)
Citation preview
3.1 3.1 ตวด ำำเน นกำรทำงตรรกะต วด ำำเน นกำรทำงตรรกะ
ตวด ำำเนนกำรแบบสมพนธ ตวด ำำเนนกำรแบบสมพนธ ((Relational OperatorsRelational Operators) ) คอตวคอตวดำำเนนกำรททำำหนำทเปรยบเทยบคำดำำเนนกำรททำำหนำทเปรยบเทยบคำ
ระหวำงตวแปรสองตว หรอนพจนสอง ระหวำงตวแปรสองตว หรอนพจนสอง นพจน โดยจะคนคำเปนจรงหรอเทจ นพจน โดยจะคนคำเปนจรงหรอเทจ
((Boolean)Boolean)
Relational Operator ตวอยำง
< Op1<Op2 : คนคำควำมเปนจรงถำ Op1 น อยกวำOp2
a=(1<3); //aจะมคำเปนจรง
<= Op1<=Op2 : คนคำควำมเปนจรงถำ Op1 นอยกวำ Op2 หรอเทำกบ Op2
a=(5<=7); //a จะมคำเปนจรง
> Op1>Op2 :คนคำควำมเปนจรงถำ Op1 มำกกวำOp2
a=(5>7); //a จะมคำเปนจรง
>= Op1>=Op2 : คนคำควำมเปนจรงถำ Op1 มำกกวำ หรอเทำกบ Op2
a=(5>=7); //a จะมคำเปนจรง
== Op1==Op2 : คนคำควำมเปนจรงถำ Op1 เทำกบOp2
a=(5==7); // a จะมคำเปนเทจเพรำะ 5 ไมเทำกบ 7
!= Op1!=Op2 : คนคำควำมเปนจรงถำ Op1 ไม เทำกบ Op2
a=(5!=7); // a จะมคำเปนจรง เพรำะ 5 ไมเทำกบ 7
": (expression)"a:b :คอคำตว operand a ถำexpression เปนจรง
a=(3>5)"false:true; //a จะมคำ เปนจรง เพรำะผลกำรเปรยเทยบ 3 มำกกวำ 5 เปนเทจ เมอคำทไดเปน
เทจจะเลอกคำ true
ตวดำำเนนกำรทำงตรรกศำสตร ตวดำำเนนกำรทำงตรรกศำสตร (Logical (Logical Operator)Operator)
ตวดำำเนนกำรทำงตรรกะ เปนตวดำำเนนกำร ตวดำำเนนกำรทำงตรรกะ เปนตวดำำเนนกำรเกยวของกบนพจนทสำมำรถบอกคำควำมจรงเกยวของกบนพจนทสำมำรถบอกคำควำมจรงเปนจรงเปนจรง(true) (true) หรอเทจ หรอเทจ (false)(false) ได หรอชนด ได หรอชนด
ขอมลตรรกะ เชน ตวแปรประเภท ขอมลตรรกะ เชน ตวแปรประเภท boolean boolean ผลลพธทไดจำกกำรกระทำำจะไดคำคงทตรรกะผลลพธทไดจำกกำรกระทำำจะไดคำคงทตรรกะ
เปน เปน true true หรอหรอ false false ตวดำำเนนกำรทำงตรรกะตวดำำเนนกำรทำงตรรกะ ไดแกเครองหมำย ไดแกเครองหมำย !, &&, &, ||, |, ^ !, &&, &, ||, |, ^ มตวอยำงมตวอยำง
กำรใชงำนดงนกำรใชงำนดงน
เคร องหมำยดำำเน นกำร
ควำมหมำย ตวอยำง ผลลพธ
! NOT (นเสธ) !(5 > 3) false
&& หรอ &
AND (และ) (x >= 10)&&(x <= 100)
มคำเปน true เมอ(x >= 10) มคำเปน true
และ (x <= 100) มคำเปนtrue
|| หรอ |
OR (หรอ) (x < 10) || (x > 100)
มคำเปน true เมอ(x < 10) มคำเปน true
หรอ (x > 100) มคำเปนtrue
^
Exclusive OR
(x > 20) ^ (y > 20)
มคำเปน false ได 2 กรณ คอ
กรณท1 เมอ (x >= 10) มคำเปน
true และ (x <= 100) มคำ เปน true
กรณท2 เมอ (x >= 10) มคำเปน
false และ (x <= 100) ม คำเปน false
ตวดำำเนนกำรทำงตรรกะแบบตำงๆ สำมำรถแสดงผลลพธของนพจนตรรกะตำมคำควำมจรงของกำรดำำเนน
กำรไดดงตำรำงคำควำมจรง (Truth Table) ดงน
ตำรำงคำควำมจรงของตวดำำเนนกำร ! หรอ NOT
คำควำมจร งนพจน
ต วอย ำง ผลลพธ
false !(false) False
true !(true) True
ตำรำงคำควำมจรงของตวดำำเนนกำร && หรอ AND
คำควำมจร งน พจนท 1
คำควำมจร งน พจนท 2
ตวอยำง ผลลพธ
false false false && false False
false true false && true False
true false true && false False
True true true && true True
ตำรำงคำควำมจรงของตวดำำเนนกำร ตำรำงคำควำมจรงของตวดำำเนนกำร || || หรอ หรอ OROR
คำควำมจร งน พจนท 1
คำควำมจร งน พจนท 2
ผลลพธ ผลล พธ
False false false || false False
False true false || true True
True false true || false True
True true true || true True
ตำรำงคำควำมจรงของตวดำำเนนกำร ตำรำงคำควำมจรงของตวดำำเนนกำร ^ ^ หรอ หรอ XORXOR
คำควำมจร งน พจนท 1
คำควำมจร งน พจนท 2
ผลลพธ ผลล พธ
False false false ^ false False
False true false ^ true True
True false true ^ false True
True true true ^ true false
ตวอย ำงต วอย ำง กำรใช กำรใช Operator Operator แบบ แบบ booleanbooleanclass BoolLogic{public static void main(String
args[]){boolean a = true; boolean b =
false;boolean c = a | b; boolean d = a &
b;boolean e = a ^ b; boolean f = (!a
& b) | (a & !b);boolean g = !a;System.out.println("a = " + a);
System.out.println("b = " + b);System.out.println("a | b = " + c);
System.out.println("a & b = " + d);
System.out.println("a ^ b = " + e); System.out.println("!a = " + g);
System.out.println("!a & b | a & !b = " + f);
}}
ตวด ำำเน นกำรระด บ ตวด ำำเน นกำรระด บ ((Bitwise Bitwise Operator)Operator) Operator ร ปแบบ และกำรทำำงำน ตวอยำง ผลลพธ ท ได
~ ~ Op : ทำำ complement คอทำำกำรเปลยนคำของบต 1 เปน 0
และเปลยนบตทมคำ 0 เปน 1
a= 0x0005 -6
<<, >> กำรยำยบตไปทำงซำย และทำงขวำ
a= 0x0005 << 2a= 0x0005 >> 2
201
>>> กำรยำยบตไปทำงขวำเสมอนไมมเครองหมำย
a= 0x0005 >>> 2a= 0xFFF5 >>> 2
116381
& ประมวลผลแบบ Bitwise AND a= 0x0005 & a = 0x0007;
5
^ ประมวลผลแบบ Bitwise XOR a= 0x0005 ^ a= 0x0007;
2
| ประมวลผลแบบ Bitwise OR a= 0x0005 | a= 0x0007;
7
ลำำดบในกำรประมวลของ ลำำดบในกำรประมวลของ Operators Operators
ตำง ๆ ตำง ๆ ตวกระทำำ (Operators) ลำำด บ ประเภทของกำรประมวลผล
() วงเลบ 1
++(Increment), --(Decrement), +(Unary plus), -(unary minus)!(Not)~(Complement)(type_cast)
2 กำรคำำนวณกำรคำำนวณBooleanintegerทกรปแบบ
*(Multiply),/(Divide),%(modulus) 3 กำรคำำนวณ
+(Add),-(subtract) 4 กำรคำำนวณ
<< (Left shift),>>(Right shift),>>>(zero fill)
5 จำำนวนเตม
< (Less than), <==(less than or equal), >(greater than), >==(greater than or equal)Instanceof()
6 กำรคำำนวณ object, (เปรยบเทยบ object)
==(Equal),!=(not equal) 7 ขอมลพนฐำน และ object
&(Bitwise AND) 8 จำำนวนเตม
^ (Bitwise XOR) 9 จำำนวนเตม
| (Bitwise OR) 10 จำำนวนเตม
s&& (AND) 11 Boolean
|| (OR) 12 Boolean
": 13 Boolean
= ,*= , /=, %=, +=, -=, <<=, =>>, >>>, &=, ^=, !=
14 อน ๆ
ตวอย ำง ตวอย ำง กำรคำำนวณโดยใช กำรคำำนวณโดยใชOperator1Operator1 class OpEquals{public static void main (String args[]){int a =1; int b = 2; int c = 3;a += 5; b *= 4; c +=a * b; c %=6;System.out.println("a = " + a);
System.out.println("b = " + b);System.out.println("c = " + c);}}
ตวอย ำง ตวอย ำง กำรคำำนวณโดยใช กำรคำำนวณโดยใชOperator2Operator2
class IncDec{public static void main(String ars[]){int a = 1; int b = 2;int c = ++b; int d = a++;c++;System.out.println("a = " + a);
System.out.println("b = " + b);System.out.println("c = " + c);
System.out.println("d = " + d);} }
3.2 3.2 คำำส ง คำำส ง if (if Statement)if (if Statement) เล อกทำำแบบทำงเด ยวเล อกทำำแบบทำงเด ยว
คำำส ง คำำส ง if then-- > if then-- > เปนค ำำส ง เล อกเปนค ำำส ง เล อก ทำำแบบทำงเด ยว กำรเล อกทำำแบบทำง ทำำแบบทำงเด ยว กำรเล อกทำำแบบทำง
เด ยวในภำษำปำสคำลจะใชค ำำส ง เด ยวในภำษำปำสคำลจะใชค ำำส ง if – if – then then ในกำรทำำงำนของค ำำส ง ในกำรทำำงำนของค ำำส ง
คอมพวเตอร จะตรวจสอบเง อนไขกอน ถำ คอมพวเตอร จะตรวจสอบเง อนไขกอน ถำ เง อนไขเปนจร งจะท ำำค ำำส งหร อ สเตตเมน เง อนไขเปนจร งจะท ำำค ำำส งหร อ สเตตเมน
ตท ตำมหลง ตท ตำมหลง then then แตถ ำเง อนไขเปนเท จแต ถ ำเง อนไขเปนเท จ คอมพวเตอร จะท ำำค ำำส งหร อ สเตตเมนต คอมพวเตอร จะท ำำค ำำส งหร อ สเตตเมนต
ตอไป ร ปแบบของค ำำส ง เปนด งต อไปน ตอไป ร ปแบบของค ำำส ง เปนด งต อไปน
คำำส ง คำำส ง if thenif then
ร ปแบบคำำส งร ปแบบคำำส ง ::if (…if (… เง อนไข เง อนไข ---- condition……condition……))
then……then……..
โดยกำรตรวจสอบเง อนไขจะเปนกำรกโดยกำรตรวจสอบเง อนไขจะเปนกำรก ระทำำ ระทำำ แบบบล นแบบบล น ถำหำกมกำรใชต วด ำำเน น ถำหำกมกำรใชต วด ำำเน น
กำร จะใชตวด ำำเน นกำรบล น ส ำำหร บกำร กำร จะใชตวด ำำเน นกำรบล น ส ำำหร บกำร ทำำงำนของค ำำส ง ทำำงำนของค ำำส ง if –then if –then สำมำรถเข ยนสำมำรถเข ยน
เปนผงงำนไดด งน เปนผงงำนไดด งน
คำำส ง คำำส ง if thenif then - - > - - > ใน ใน 1 1 โปรแกรมสำมำรถม โปรแกรมสำมำรถม if then if then ไดหลำยทได หลำยทFlow Chart :Flow Chart :
คำำส ง คำำส ง if thenif thenตวอย ำงโปรแกรมตวอย ำงโปรแกรม ::1 1 - - >- - >โปรแกรมในฝนโปรแกรมในฝน
var age:integer;
beginIf (age >= 18) then
writeln (‘of age’);writeln (‘good luck’);
Readln;end.
3.3 3.3 คำำส ง คำำส ง (if – then – else) (if – then – else) เปนค ำำเปนค ำำส ง เล อกทำำอยำงใดอยำงหนงส ง เล อกทำำอยำงใดอยำงหนง
ในกรณทคอมพวเตอรตองเลอกทำำอยำงใด อยำงหนง โดยตรวจสอบเงอนไขทกำำหนด
จะใช คำำสง if – then –else โดยถำ เงอนไขเปนจรงจะทำำคำำสงหลง then แตถำ เงอนไขเปนเทจจะทำำคำำสงหลง else โดย
นพจนทตำมหลง if จะเปนขอมลทำงตรรกะรปแบบคำำสงเปนดงน
คำำส ง คำำส ง if- thenif- then - - elseelse
ร ปแบบคำำส งร ปแบบคำำส ง : : หลง หลง statementstatement ท ท 1 1 ไมม ไมม semicolon ( ; ) semicolon ( ; ) [[ขอยกเว นข อยกเว น ]]
if if ((…… เง อนไข เง อนไข ---- condition…… condition……) ) thenthen ..statement 1..statement 1
else ..statement 2else ..statement 2
โดยกำรตรวจสอบเง อนไขจะเป นกำรกระทำำ แบบบล น คำำส ง if – then – else สำมำรถเข ยนเป นผงงำนได
ดงน คำำส ง if - then - else
Flow Chart :
คำำส ง คำำส ง if - then - else if - then - else ตวอย ำงโปรแกรมตวอย ำงโปรแกรม ::1 1 - - >- - >โปรแกรมในฝนโปรแกรมในฝน
var scroe:integer;begin
If (score >= 50)Then WRITE (‘You
pass’)ELSE
WRITELN (‘You fail);
readln;end.
3.4 3.4 คำำส ง คำำส ง if....elseifif....elseif ใชในกรณท ม เง อนไข if และ else จำำนวนมำก คำำส ง
elseif เป นกำรรวมกนของคำำส ง if และ else ซงค ำำส ง เหล ำน จะเร ยงล ำำด บก นอย ม ร ปแบบดงร ป
กำรใช กำรใช if, if else, if else if if, if else, if else if ใน ใน JavascriptJavascriptif if ใน ใน JavascriptJavascript1.if(condition){ 1.if(condition){ 2. statement 1; 2. statement 1; 3.statement 2; 3.statement 2; 4. ... 4. ... 5.}5.}
statement 1;statement 2;... condition statement 1;statement 2;... condition คอเงอนไงทตองกำร คอเงอนไงทตองกำร statement statement กคอคำำสงในกคอคำำสงใน
โปรแกรม อำจประกอบดวยหลำยคำำสง ถำหำก โปรแกรม อำจประกอบดวยหลำยคำำสง ถำหำกมคำำสงมำกกวำหนงใหใสวงเลบปกกำมคำำสงมำกกวำหนงใหใสวงเลบปกกำ{} {} ครอบครอบ
คำำสงทงหมดไว แตถำมเพยงคำำสงเดยวไมตอง คำำสงทงหมดไว แตถำมเพยงคำำสงเดยวไมตอง ใสวงเลบปกกำกได ถำหำกไมมคำำสงใด ๆ ให ใสวงเลบปกกำกได ถำหำกไมมคำำสงใด ๆ ให
ใสวงเลบเปลำ หรอใสเครองหมำย ใสวงเลบเปลำ หรอใสเครองหมำย ; ; ไวกไดไวกได
ตวอย ำงกำรใชตวอย ำงกำรใช if if ใน ในJavascriptJavascript
• <script language="javascript" type="te<script language="javascript" type="text/javascript"> xt/javascript">
• function useif(){ function useif(){ • var score = document.getElementvar score = document.getElement
ById("score").value; ById("score").value; • if(score < 50) if(score < 50) • document.getElementById("shdocument.getElementById("sh
ow").innerHTML = "Your Grade : F"; ow").innerHTML = "Your Grade : F"; • if(score >= 50 && score < 60) if(score >= 50 && score < 60) • document.getElementById("shdocument.getElementById("sh
ow").innerHTML = "Your Grade : D"; ow").innerHTML = "Your Grade : D";
• if(score >= 60 && score < 70) if(score >= 60 && score < 70)
• document.getElementById("shdocument.getElementById("show").innerHTML = "Your Grade : C"; ow").innerHTML = "Your Grade : C";
• if(score >= 70 && score < 80) if(score >= 70 && score < 80)
• document.getElementById("show").innerHTdocument.getElementById("show").innerHTML = "Your Grade : b"; ML = "Your Grade : b";
• if(score >= 80) if(score >= 80) • document.getElementById("show").inndocument.getElementById("show").inn
erHTML = "Your Grade : A"; erHTML = "Your Grade : A"; • if(isNaN(score)) if(isNaN(score)) • document.getElementById("show").inndocument.getElementById("show").inn
erHTML = "Input Incorrect"; erHTML = "Input Incorrect"; • if(score == "") if(score == "") • document.getElementById("show").inndocument.getElementById("show").inn
erHTML = "Input Score"; erHTML = "Input Score"; • } } • </script> </script> • ใส ใส
คะแนนคะแนน : <input id="score" type="text" name=: <input id="score" type="text" name="score" /> "score" />
• <input type="button" value="<input type="button" value="ดด เกรดเกรด"" onclick="useif()" /> onclick="useif()" />
• <span id="show"></span> <span id="show"></span> • ใส คะแนน ใส คะแนน : :
โปรแกรมนรบคำคะแนนมำจำกกำร id ท มชอวำ score นนคอจำกใน text นนเอง จำก
นนเรำใช if เพอตรวจสอบไปแตละเกรด จะเหน วำเรำใชแต if ตำมหลง if มแคคำำสงเดยว ไม
ตองใสวงเลบปกกำครอบกได โปรแกรมนจะ ตรวจสอบทก if นนคอตรวจสอบวำนอยกวำ 50
ตอไป ก มำกกวำ 50 และ นอยกวำ 60 หรอไม และตรวจสอบไปเรอย ๆ ทก ๆ เกรดถำคะแนน
นอยกวำ 50 แลวปรน F ออกมำ แตกตองตรวจ สอบวำเปนเกรด D C B หรอ A หรอไม แลวก
ตองตรวจสอบ isNaN นนคอเปนตวเลขหรอไมและกตรวจสอบวำไดกรอกขอมลเขำมำหรอไม
if else if else ใน ใน JavascriptJavascript
• if(condition){ if(condition){ • statement 1; statement 1; • statement 2; statement 2; • ... ... • } } • else{ else{ • statement 1; statement 1; • statement 2; statement 2; • ... ... • } statement 1;statement 2;...statement } statement 1;statement 2;...statement
1;statement 2;... 1;statement 2;... โปรแกรมจะเข ำส กำรโปรแกรมจะเข ำส กำร ทำำงำนในบลอก ทำำงำนในบลอก else else ได กต อเม อ กำรทำำงำน ได กต อเม อ กำรทำำงำน
ใน ใน if if เป นเทจเป นเทจ
ตวอย ำงกำรใช ตวอย ำงกำรใช if else if else ใน ในJavascriptJavascript• <script language="javascript" type="te<script language="javascript" type="te
xt/javascript"> xt/javascript"> • function useifelse(){ function useifelse(){ • var score = document.getElementvar score = document.getElement
ById("score2").value; ById("score2").value; • if(score < 50) document.getElemeif(score < 50) document.getEleme
ntById("show2").innerHTML = "Your GrntById("show2").innerHTML = "Your Grade : F"; ade : F";
• else{ else{ • if(score < 60) document.getEif(score < 60) document.getE
lementById("show2").innerHTML = "YoulementById("show2").innerHTML = "Your Grade : D"; r Grade : D";
• else{ else{ • if(score < 70) documentif(score < 70) document
.getElementById("show2").innerHTML =.getElementById("show2").innerHTML = "Your Grade : C"; "Your Grade : C";
• else{ else{ • if(score < 80) if(score < 80)
• document.getEldocument.getElementById("show2").innerHTML = "YouementById("show2").innerHTML = "Your Grade : B"; r Grade : B";
• else{ else{ • if(isNaN(score))if(isNaN(score))
• document.document.
getElementById("show2").innerHTML = getElementById("show2").innerHTML = "Input Incorrect"; "Input Incorrect";
• else document.else document.getElementById("show2").innerHTML = getElementById("show2").innerHTML = "Your Grade : A"; "Your Grade : A";
• } } • } } • } } • } } • if(score == "") document.getElemeif(score == "") document.getEleme
ntById("show2").innerHTML = "Input ScntById("show2").innerHTML = "Input Score"; ore";
• } } • </script> </script> • ใส ใส
คะแนนคะแนน : <input id="score2" type="text: <input id="score2" type="text" name="score" /> " name="score" />
• <input type="button" value="<input type="button" value="ดด เกรดเกรด"" onclick="useifelse()" /> onclick="useifelse()" />
• <span id="show2"></span> onclick="<span id="show2"></span> onclick="useifelse()" /> useifelse()" /> ใส คะแนน ใส คะแนน : :
โปรแกรมนเรำใช โปรแกรมนเรำใช if else if else ตอนแรกกตอนแรกก ตรวจสอบว ำนอยกว ำ ตรวจสอบว ำนอยกว ำ 50 50 หรอไม ถ ำใช ก หรอไม ถ ำใช ก
ปรน ปรน F F ออกมำ แตถ ำไมใชก ไปทำำท ออกมำ แตถ ำไมใชก ไปทำำท else else ใน ใน else else กไปตรวจสอบ กไปตรวจสอบ if if ในใน else else อกท อกท
หรอท เร ยกก นว ำ หรอท เร ยกก นว ำ if if ซอน ซอน if if นนเอง จำก นนเอง จำก if if ซอน ซอน if if เรำก สำมำรถลดร ปกลำยเปนเรำก สำมำรถลดร ปกลำยเปน
โปรแกรมทสำมนนคอ โปรแกรมทสำมนนคอ if else if if else if
if else if if else if ใน ใน JavascriptJavascript• if(condition1){ if(condition1){ • statement 1; statement 1; • statement 2; statement 2; • ... ... • } } • else if(condition2){ else if(condition2){ • statement 1; statement 1; • statement 2; statement 2; • ... ... • } } • else{ else{ • statement 1; statement 1; • statement 2; statement 2; • ... ... • } statement 1;statement } statement 1;statement
2;...statement 1;statement 2;...statement 1;statement 2;...statement 1;statement 2;... 2;...statement 1;statement 2;...
กำรใช กำรใช if else if if else if จะทำำกำรตรวจสอบ จะทำำกำรตรวจสอบcondition condition แตละอ น ถ ำอ นไหนเป น แตละอ น ถ ำอ นไหนเป น
จร ง ก จะท ำำงำนในบลอกนน จร ง ก จะท ำำงำนในบลอกนน
• <script language="javascript" type="te<script language="javascript" type="text/javascript"> xt/javascript">
• function useifelseif(){ function useifelseif(){ • var score = document.getElementvar score = document.getElement
ById("score3").value; ById("score3").value; • if(score == "") document.getElemeif(score == "") document.getEleme
ntById("show3").innerHTML = "Input ScntById("show3").innerHTML = "Input Score"; ore";
• else if(isNaN(score)) document.getelse if(isNaN(score)) document.getElementById("show3").innerHTML = "InElementById("show3").innerHTML = "Input Incorrect"; put Incorrect";
• else if(score < 50) document.getEelse if(score < 50) document.getElementById("show3").innerHTML = "YoulementById("show3").innerHTML = "Your Grade : F"; r Grade : F";
• else if(score < 60) document.getEelse if(score < 60) document.getElementById("show3").innerHTML = "YoulementById("show3").innerHTML = "Your Grade : D"; r Grade : D";
• else if(score < 70) document.getEelse if(score < 70) document.getElementById("show3").innerHTML = "YoulementById("show3").innerHTML = "Your Grade : C"; r Grade : C";
• else if(score < 80) document.getEelse if(score < 80) document.getElementById("show3").innerHTML = "YoulementById("show3").innerHTML = "Your Grade : B"; r Grade : B";
• else document.getElementById("shelse document.getElementById("show3").innerHTML = "Your Grade : A"; ow3").innerHTML = "Your Grade : A";
• } } • </script> </script> • ใส ใส
คะแนนคะแนน : <input id="score3" type="text: <input id="score3" type="text" name="score" /> " name="score" />
• <input type="button" value="<input type="button" value="ดด เกรดเกรด"" onclick="useifelseif()" /> onclick="useifelseif()" />
• <span id="show3"></span> onclick="<span id="show3"></span> onclick="useifelseif()" /> useifelseif()" /> ใส คะแนน ใส คะแนน : : Your Grade : Your Grade : FF
โปรแกรมนเปนการใช โปรแกรมนเปนการใช if else if if else if เพอตรวจเพอตรวจ สอบนอยกวา สอบนอยกวา 50 50 หรอไมถาไมกไปตรวจอนทหรอไมถาไมกไปตรวจอนท
สอง ถานอยกวา สอง ถานอยกวา 60 60 กทำาการปรน กทำาการปรน D D ออกมา ออกมา แลวจบโปรแกรม ตางจากโปรแกรมแรกทตอง แลวจบโปรแกรม ตางจากโปรแกรมแรกทตอง
ตรวจทก ตรวจทก if if แมจะ ปรนเกรดออกมาแลว และ แมจะ ปรนเกรดออกมาแลว และ เปนการลดรปจากโปรแกรมทสอง จากการใช เปนการลดรปจากโปรแกรมทสอง จากการใช if if
ซอนกนหลาย ๆ ครง ทำาใหโปรแกรมดงายขน ซอนกนหลาย ๆ ครง ทำาใหโปรแกรมดงายขน
3.5 3.5 คำาส งการเล อกทำาแบบคำาส งการเล อกทำาแบบ SWITCHSWITCH
คำาสงคำาสง switch switch ใชเพอเลอกทำาคำาสงใดคำาสงใชเพอเลอกทำาคำาสงใดคำาสง หนงตามตองการ โดยมทางเลอกใหทำาคำาสง หนงตามตองการ โดยมทางเลอกใหทำาคำาสง
หลาย ๆ ทาง คาตวแปรจะทำาหนาทควบคมคำา หลาย ๆ ทาง คาตวแปรจะทำาหนาทควบคมคำาสงสง switch switch คำาสงคำาสง switch switch และคำาสงและคำาสง if if เปนคำาสงเปนคำาสง
เลอกทำาเชนเดยวกนแตตางกนทรปแบบเงอนไข เลอกทำาเชนเดยวกนแตตางกนทรปแบบเงอนไข ตอไปนเปนรปแบบของการเลอกทำาแบบ ตอไปนเปนรปแบบของการเลอกทำาแบบ switch switch
การเลอกทำาแบบการเลอกทำาแบบ switch switch มวธเลอกทำาโดยมวธเลอกทำาโดยการเปรยบเทยบคาของการเปรยบเทยบคาของ switch switch กบคาในกบคาในแตละแตละ case case ถามคาเทากนถามคาเทากน statement statement ของของ case case นนๆ จะทำางาน และถาคาของ นนๆ จะทำางาน และถาคาของ switch switch ไมเทากบคาในไมเทากบคาใน case case ใด ๆ เลย ใด ๆ เลย statement statement ของของ default default กจะทำางาน กจะทำางาน ขอสงเกต ขอสงเกต
Variable Variable และและ Constant Constant ทใชสำาหรบเปรยบทใชสำาหรบเปรยบเทยบในการเลอกทำาแบบเทยบในการเลอกทำาแบบ switch switch จะตองมชนดจะตองมชนดเปนเปน int int และและ char char เทานน เทานน
ตวอยางโปรแกรม ตวอยางโปรแกรม การใชคำาสงเลอกทำาการใชคำาสงเลอกทำาแบบแบบ switch switch • #include <stdio.h> #include <stdio.h> • main() main() • { { • int ch; clrscr(); int ch; clrscr(); • printf(" Menu \n"); printf(" Menu \n"); • printf("===================\n"); printf("===================\n"); • printf(" 1 :Create Data \n"); printf(" 1 :Create Data \n"); • printf(" 2 :Display Data \n"); printf(" 2 :Display Data \n"); • printf(" 3 :Append Data \n"); printf(" 3 :Append Data \n"); • printf(" 4 :Edit Data \n"); printf(" 4 :Edit Data \n"); • printf(" 5 :Quit \n"); printf(" 5 :Quit \n"); • printf("===================\n"); printf("===================\n"); • printf("Please select <1, 2, 3, 4, 5 > ==> "); printf("Please select <1, 2, 3, 4, 5 > ==> ");
scanf("%d", & ch); scanf("%d", & ch); • switch (ch) switch (ch) • { case 1: printf("You take choice 1:Create Data { case 1: printf("You take choice 1:Create Data
\n"); \n"); • break; break;
• case 2: printf("You take chaoice 2:Display case 2: printf("You take chaoice 2:Display Data\n"); Data\n");
• break; break; • case 3: printf("You take choice 3:Append Data case 3: printf("You take choice 3:Append Data
\n"); \n"); • break; break; • case 4: printf("You take choice 4: Edit Data \n"); case 4: printf("You take choice 4: Edit Data \n"); • break; break; • case 5: printf("You take choice 5:Quit\n"); case 5: printf("You take choice 5:Quit\n"); • break; break; • default: printf("You take choice the default: printf("You take choice the
other:default"); other:default"); • return(0); return(0); • } } • } } • #include <stdio.h> #include <stdio.h> • void main(void) void main(void) • { { • float Fnum1=1.0, Fnum2=1.0; float Fnum1=1.0, Fnum2=1.0; • char op; char op; • clrscr(); clrscr(); • while ( !(Fnum1==0.0 && Fnum2==0.0) ) while ( !(Fnum1==0.0 && Fnum2==0.0) ) • { printf("\n\nEnter number, operator, { printf("\n\nEnter number, operator,
number\n"); number\n"); • scanf("%f %c %f", &Fnum1, &op, &Fnum2); scanf("%f %c %f", &Fnum1, &op, &Fnum2); • switch ( op ) switch ( op ) • { case '+' : printf(" = %f", Fnum1 + Fnum2); { case '+' : printf(" = %f", Fnum1 + Fnum2); • break; break; • case '-' : printf(" = %f", Fnum1 - Fnum2); case '-' : printf(" = %f", Fnum1 - Fnum2); • break; break; • case '*' : case '*' :
•case 'x' : printf(" = %f", Fnum1 * case 'x' : printf(" = %f", Fnum1 * Fnum2); Fnum2);
•break; break; •case '/' : case '/' : •case '\\': printf(" = %f", Fnum1 / case '\\': printf(" = %f", Fnum1 /
Fnum2); Fnum2); •break; break; •default : printf("Unknown operator"); default : printf("Unknown operator"); • } // end switch } // end switch • } // end while } // end while • } // end main } // end main
3.6 3.6 การควบคมการทำาซ ำาด วยค ำาการควบคมการทำาซ ำาด วยค ำา สง สง forfor
คำาสงทใชวนลปนนกคอคำาสงคำาสงทใชวนลปนนกคอคำาสง for for ซงคำาสงนซงคำาสงนเขาใจไดดจะทำาใหใชงานมนไดสะดวกสบายเขาใจไดดจะทำาใหใชงานมนไดสะดวกสบาย
ขน คำาสงนมเงอนไขในการใชงานอยพอสมควร ขน คำาสงนมเงอนไขในการใชงานอยพอสมควร
คำาสงคำาสง for for นนม นนม 3 3 สวนทตองกำาหนด คอ สวนทตองกำาหนด คอ
1.1.) ) คาตวแปรเรมตน ใชกำาหนดคาเรมตนของ คาตวแปรเรมตน ใชกำาหนดคาเรมตนของ ตวแปรทจะใชในการควบคม การวนลป ตวแปรทจะใชในการควบคม การวนลป
2.2.) ) เงอนไข ใชกำาหนดเงอนไขการวนลป เงอนไข ใชกำาหนดเงอนไขการวนลป
3.3.) ) เปลยนแปลงคาตวแปร ใชในการเพมหรอ เปลยนแปลงคาตวแปร ใชในการเพมหรอ ลดคาของตวแปรทใชในการควบคม การวน ลดคาของตวแปรทใชในการควบคม การวน
ลป ลป
อธบายโปรแกรม จากโคด อธบายโปรแกรม จากโคดโปรแกรมนจะเป นการคำานวณหาคาผลบวกโปรแกรมนจะเป นการคำานวณหาคาผลบวก
ของ ของ 1 1 ถง ถง 10 (1+2+3+4+5+6+7+8+9+10) 10 (1+2+3+4+5+6+7+8+9+10) ซงใช ล ป ซงใช ล ป for for โดยมการก ำาหนดตวแปร โดยมการก ำาหนดตวแปร i i ไว ไว
เป น เป น 1 1 เม อเร มเข ามาทล ป ส วนเง อนไขคอ เม อเร มเข ามาทล ป ส วนเง อนไขคอ i i <= 10 <= 10 คอ เราต องการใหล ปน วนไป คอ เราต องการใหล ปน วนไป 10 10 ครง ครง
สวน สวน i++ i++ เป นการเพ มค าเป นการเพ มค า i i ทละ ทละ 1 1 เม อจบรอบเม อจบรอบ การทำางานในแตละรอบนนเอง การทำางานในแตละรอบนนเอง
i = 1, sum = 0 + 1 i = 1, sum = 0 + 1 จบรอบแรก จบรอบแรก sum = 1sum = 1i = 2, sum = 1 + 2 i = 2, sum = 1 + 2 จบรอบทสอง จบรอบทสอง sum = 3sum = 3i = 3, sum = 3 + 3 i = 3, sum = 3 + 3 จบรอบทสาม จบรอบทสาม sum = 6sum = 6i = 4, sum = 6 + 4 i = 4, sum = 6 + 4 จบรอบทส จบรอบทส sum = 10sum = 10
i = 5, sum = 10 + 5 i = 5, sum = 10 + 5 จบรอบทหา จบรอบทหา sum = 15sum = 15i = 6, sum = 15 + 6 i = 6, sum = 15 + 6 จบรอบทหก จบรอบทหก sum = sum =
2121i = 7, sum = 21 + 7 i = 7, sum = 21 + 7 จบรอบทเจ ด จบรอบทเจ ด sum = sum =
2828i = 8, sum = 28 + 8 i = 8, sum = 28 + 8 จบรอบทแปด จบรอบทแปด sum = sum =
3636i = 9, sum = 36 + 9 i = 9, sum = 36 + 9 จบรอบทเกา จบรอบทเกา sum = sum =
4545i = 10, sum = 45 + 10 i = 10, sum = 45 + 10 จบรอบทสบ จบรอบทสบ sum = sum =
5555
จะเหนวาในรอบสดทายคอ รอบทสบนนคา จะเหนวาในรอบสดทายคอ รอบทสบนนคา i++ i++ ยงคงทำางานอยคอ จะไดคา ยงคงทำางานอยคอ จะไดคา i i คาสดทายเปน คาสดทายเปน11 11 แตพอนำาไปเชคทเงอนไขแลวทำาใหเงอนไขแตพอนำาไปเชคทเงอนไขแลวทำาใหเงอนไขนนผดเพราะนนผดเพราะ i <= 10 i <= 10 นนเองจง ทำาใหออกจา นนเองจง ทำาใหออกจา
กลป นอกจากนยงมการใชงานในรปแบบอนอก กลป นอกจากนยงมการใชงานในรปแบบอนอก
กฎการใชค ำาส ง กฎการใชค ำาส ง forfor
• 1. 1. คาท เพ มข นในแตละรอบของตวแปรควบคมค าท เพ มข นในแตละรอบของตวแปรควบคม นนจะเป นเทาไรกได เช น นนจะเป นเทาไรกได เช น
• for(int x=0 ; x<=100 ; x=x+5)for(int x=0 ; x<=100 ; x=x+5)• 2. 2. คาของตวแปรควบคมอาจถกก ำาหนดใหลดลงคาของตวแปรควบคมอาจถกก ำาหนดใหลดลง
กได เช น กได เช น• for(int x=100 ; x>0 ; x- -) for(int x=100 ; x>0 ; x- -) • 3. 3. ตวแปรควบคมอาจเป นชนดต วแปรควบคมอาจเป นชนด character character ได ได
เช นเช น• for(char ch =’a’ ; ch<=’z’ ; ch++) for(char ch =’a’ ; ch<=’z’ ; ch++) • 4. 4. ตวแปรควบคมสามารถมไดมากกวา ตวแปรควบคมสามารถมไดมากกวา 1 1 ตวแปร ตวแปร
เช นเช น • for(int x=0,y=0 ; x+y<100 ; x++,y++) for(int x=0,y=0 ; x+y<100 ; x++,y++) • 5 . 5 . ถามการละบางส วนหรอทกสวนของถามการละบางส วนหรอทกสวนของ
พารามเตอร ในวงเล บจะเป นการส งให พารามเตอร ในวงเล บจะเป นการส งให for for ทำางานไมร จบ เช น ทำางานไมร จบ เช น for( ; ; )for( ; ; )
System.out.println(“ Hello”); System.out.println(“ Hello”);
6. 6. ในคำาส ง ในคำาส ง for for สามารถมค ำาส ง สามารถมค ำาส ง for for ซอนอยภายในไดอ ก เช น ซอนอยภายในไดอ ก เช น
for(int x=1 ; x<=3 ; x++)for(int x=1 ; x<=3 ; x++){ { System.out.println(“ x = ”+x);System.out.println(“ x = ”+x);for(int y=1 ; x<=5 ; y++)for(int y=1 ; x<=5 ; y++)System.out.println(“ y = ”+y);System.out.println(“ y = ”+y);}}
3.7 3.7 ลป ลป WHILEWHILE
คำาส ง คำาส ง while while เปนค ำาส ง ท ใชส ำาหร บกา เปนค ำาส ง ท ใชส ำาหร บการวนลปรวนลป ซง ซง flowchart flowchart สำาหร บค ำาส ง สำาหร บค ำาส งwhile while นน สามารถดได ตามร ปด านล าง นน สามารถดได ตามร ปด านล าง
จาก จาก flowchart flowchart ดานบน คำาส ง ดานบน คำาส งwhile while จะวนลปโดยการเชค จะวนลปโดยการเชค condition condition
ซงถ าเปนจร ง จ งจะท ำาการวนลปใน ซงถ าเปนจร ง จ งจะท ำาการวนลปในwhile while ดงน น ค ำาส ง ดงน น ค ำาส ง while while จะวนกรอบนน จะวนกรอบนน
กข นอย ก บ กข นอย ก บ condition condition แตเราสามารถแตเราสามารถ หยด การวนดวยค ำาส ง หยด การวนดวยค ำาส ง break break
ตวอย างน ก ำาหนด ตวอย างน ก ำาหนด i = 0 i = 0 และ กำาหนด และ กำาหนดnum = 50 num = 50 แลว ท ำาการเข าส วงวน แลว ท ำาการเข าส วงวน while while
เม อเปนจร ง ให ลดคา เม อเปนจร ง ให ลดคา num num ลงหนงตอลงหนงตอ รอบ และเพ มคา รอบ และเพ มคา i i ขนท ละหนงต อรอบ เม อ ขนท ละหนงต อรอบ เม อ
เปนเท จ ก ปร นคา เปนเท จ ก ปร นคา i i กบ กบ num num ลาสดออกลาสดออก มา ผลทออกมาคอ มา ผลทออกมาคอ i = 10 i = 10 และ และ num = 40 num = 40
นนแสดงว า เข าส วงวน นนแสดงว า เข าส วงวน while 10 while 10 รอบรอบ
ลปท ท ำางานไม ร จบ ลปท ท ำางานไม ร จบ Infinite Infinite LoopsLoops• infinite loop (infinite loop ( บางคร งเร ยกว า บางคร งเร ยกว า endless loop) endless loop)
เป นชนของคำาส งท ขาดฟงก ชนออก ดงน นจะม เป นชนของคำาส งท ขาดฟงก ชนออก ดงน นจะม การซำาไมร จบ ในโปรแกรมคอมพวเตอร การซำาไมร จบ ในโปรแกรมคอมพวเตอร loop loop
เป นอนกรมของคำาส งท ได ร บการซำาอยางต อเป นอนกรมของคำาส งท ได ร บการซำาอยางต อ เน องจนกระทงในเง อนไขแนนอนมาถง ตาม เน องจนกระทงในเง อนไขแนนอนมาถง ตาม
ปกต กระบวนการแนนอนไดร บการกระทำา เช น ปกต กระบวนการแนนอนไดร บการกระทำา เช น การนำาหนวยของขอมลและเปล ยนแปลง หลง การนำาหนวยของขอมลและเปล ยนแปลง หลง
จากนน บางเง อนไขไดร บการตรวจสอบ เชน จากนน บางเง อนไขไดร บการตรวจสอบ เชน ตวน ำามาถงต วเลขกำาหนด ถาการปรากฏของ ตวน ำามาถงต วเลขกำาหนด ถาการปรากฏของ
เง อนไขเจาะจงไมสามารถมาถง ค ำาส งต อไปใน เง อนไขเจาะจงไมสามารถมาถง ค ำาส งต อไปในอนกรมบอกโปรแกรมใหยอนกลบไปทค ำาส งแรกอนกรมบอกโปรแกรมใหยอนกลบไปทค ำาส งแรก
และซำาอนกรม ซงตามปกตจะต อไปจนกระทง และซำาอนกรม ซงตามปกตจะต อไปจนกระทง โปรแกรมหยดอยางอ ตโนมต หล งชวงเวลา โปรแกรมหยดอยางอ ตโนมต หล งชวงเวลา
แนนอนหนง หร อระบบปฏบ ต การหยดโปรแกรม แนนอนหนง หร อระบบปฏบ ต การหยดโปรแกรมดวยคามผดพลาดดวยคามผดพลาด
ตามปกต ผลลพธ ตามปกต ผลลพธ infinite loop infinite loop จากความผดจากความผด พลาดของโปรแกรม ตวอย าง เม อเง อนไข พลาดของโปรแกรม ตวอย าง เม อเง อนไข
สำาหร บการออกเขยนไมถ กต อง ความมงหมาย สำาหร บการออกเขยนไมถ กต อง ความมงหมาย ใชส ำาหร บ ใชส ำาหร บ infinite loop infinite loop รวมถงโปรแกรมทได รวมถ งโปรแกรมทได
ร บการสมมตใหท ำางานอยางต อเน อง เช น การ ร บการสมมตใหท ำางานอยางต อเน อง เช น การทดลองผลตภณฑหร อในโปรแกรมสำาหร บระบบทดลองผลตภณฑหร อในโปรแกรมสำาหร บระบบฝงต ดฝ งต ด pseudo-infinite loop pseudo-infinite loop เป นส งหนงท ด เหมอนจะเป นส งหนงท ด เหมอนจะ
ไมร จบ แตจะหยดอยางแนนอนในบางจด ไมร จบ แตจะหยดอยางแนนอนในบางจด
3.8 3.8 ลป ลป do – whiledo – while
•do... while do... while มล กษณะการใชงานเหมอน มล กษณะการใชงานเหมอนwhile (condition) {} while (condition) {} เพ ยงแต ค ำาส ง เพ ยงแต ค ำาส ง do.. while do.. while นน ในคร งแรกจะทำาในบลอก นน ในคร งแรกจะทำาในบลอก
คำาส ง คำาส ง do.. while do.. while กอนคอยทำาการเชคก อนคอยทำาการเชค เง อนไขเม อจบรอบนง เชน เง อนไขเม อจบรอบนง เชน
•$a = 3; $a = 3; •do { do { •print $a . ", "; print $a . ", "; •$a--; $a--; • } while ($a <3); } while ($a <3);
เม อด ท ตวแปร เม อด ท ตวแปร $a $a จะมคาคอ จะมคาคอ 3 3 และในและใน การเชคเง อนไขในคำาส ง การเชคเง อนไขในคำาส ง while while คอเชคว าคอเชคว า
ถา ถา $a < 3 $a < 3 ใหท ำาในบลอกค ำาส ง แตใน ใหท ำาในบลอกค ำาส ง แตในกรณน เปนการใชค ำาส งกรณน เปนการใชค ำาส ง do... while do... while ดงน น ดงน น
เม อก ำาหนดคาใหต วแปร เม อก ำาหนดคาใหต วแปร $a = 3 $a = 3 กจะเขาก จะเขา ทำาในบลอกค ำาส ง ทำาในบลอกค ำาส ง do... while do... while ทนท โดย ทนท โดย
ไม ได ท ำาการตรวจสอบเง อนไขกอน เม อ ไม ได ท ำาการตรวจสอบเง อนไขกอน เม อ ทำาค ำาส งในบลอกเสร จแล ว ก ท ำาการลบคา ทำาค ำาส งในบลอกเสร จแล ว ก ท ำาการลบคา
$a $a ไปหนงคา ด งน น ณ ตอนนตวแปร ไปหนงคา ด งน น ณ ตอนนตวแปร $a $a = 2 = 2 แลวคอยทำาการเชคเง อนไขในคำาส ง แลวคอยทำาการเชคเง อนไขในคำาส งwhile while ตามทก ำาหนดมา ตามทก ำาหนดมา
โครงสร างการเข ยนโปรแกรมแบบโครงสร างการเข ยนโปรแกรมแบบ วนซำาโดยใชค ำาส ง วนซำาโดยใชค ำาส ง do-whiledo-while
• ร ปแบบของการเขยน ร ปแบบของการเขยน code code สำาหร บโปรแกรมสำาหร บโปรแกรม แบบวนซำาท ใช แบบวนซำาท ใช do-while do-while สามารถเข ยนใหอย สามารถเข ยนใหอย
ในร ปท วไปไดด งน ในร ปท วไปไดด งน • dodo
statementstatementwhile ( while ( เง อนไข เง อนไข ));;
• ตวอยางของโครงสร าง ตวอยางของโครงสร าง do-while do-while สามารถเข ยนสามารถเข ยนไดด งน ได ด งน
• sum = 0.0;scanf(“%f”, &x);do { sum += x; sum = 0.0;scanf(“%f”, &x);do { sum += x; scanf(“%f”, &x); }while (x > 0.0); scanf(“%f”, &x); }while (x > 0.0);โปรแกรมโปรแกรม
ขางต นจะทำาการอ านคา ขางต นจะทำาการอ านคา keyboard keyboard เม อ เม อ User User พมพค าท มค ามากกวาศนย กจะท ำาการบวกคา พมพค าท มค ามากกวาศนย กจะท ำาการบวกคา
เหล าน ไปท ต วแปร เหล าน ไปท ต วแปร sum sum จนกระทง จนกระทง User User พมพ พมพ ตวเลข ตวเลข 0 0 หรอค าท นอยกว า ศนย ท ำาให เง อนไข หรอค าท นอยกว า ศนย ท ำาให เง อนไข เป นเทจ และโปรแกรมจงจะออกจากโครงสร าง เป นเทจ และโปรแกรมจงจะออกจากโครงสร าง
do-while do-while
3.9 3.9 ลปซอนลป ลปซอนลป ((Nested Loops)Nested Loops)
ในการเข ยนโปรแกรมสามารถนำาค ำาส งล ปแบบในการเข ยนโปรแกรมสามารถนำาค ำาส งล ปแบบ ตางๆ ใหมาทำางานซอนกนได เร ยกว าล ปแบบซอนล ป ตางๆ ใหมาทำางานซอนกนได เร ยกว าล ปแบบซอนล ป
ดงต วอย างต อไปน ดงต วอย างต อไปน Public class Nestedloop1 {Public class Nestedloop1 { Public static void Public static void
mainmain((StringString[ ] [ ] argsargs)) {{ forfor((int i int i = = 1; i < 1; i < = =
3; i 3; i ++)++) forfor((int int
j j = = 1; j < 1; j < = = 3; j 3; j ++)++)
SystemSystem..outout..printprint((j j + + “ ““ “));; }} } } จากตวอย างโปรแกรมล ปแรกจะเป นล ปจากตวอย างโปรแกรมล ปแรกจะเป นล ป
ของตวแปรของตวแปร I I โดยภายในลปจะทำาล ปของโดยภายในลปจะทำาล ปของตวแปรตวแปร j j จำานวน จำานวน 3 3 ครงคร ง ทำาให การทำาให การทำางานทำางานSystem.out.print (j+ “ “) System.out.print (j+ “ “) มการทำางานมการทำางาน
ทงหมด ทงหมด 9 9 ครงคร ง
3.10 3.10 คำาส ง คำาส ง break break และ และcontinuecontinue• break statement ถาเราจ ำาเป นต องออกจากล ป โดยไมต องรอ
ใหครบรอบ เราก สามารถทำาได โดยใช break; • int n;
string s;
s = Console.ReadLine();
while(s != "") { n = Int32.Parse(s); if(n < 0) { break; }
s = Console.ReadLine();}
• จร ง ๆ แล ว สามารถเข ยนใหส นลง เป นอย างน ก ได • int n;
string s;
while((s = Console.ReadLine()) != "") { n = Int32.Parse(s); if(n < 0) { break; }}
• continue statementcontinue statement การใชการใช break; break; จะจะ เป นการออกจากลปไปทนท แต ถ าต องการให เป นการออกจากลปไปทนท แต ถ าต องการให มนแคหยดการวนลปรอบนน และกลบไปทำางาน มนแคหยดการวนลปรอบนน และกลบไปทำางาน
ใน ใน loop loop ตอ เราก จะใช ตอ เราก จะใช continue; continue; • int i = 0, n, max, sum = 0;int i = 0, n, max, sum = 0;
max = Int32.Parse(Console.ReadLine());max = Int32.Parse(Console.ReadLine());
while(i < max) {while(i < max) { n = Int32.Parse(Console.ReadLine()); n = Int32.Parse(Console.ReadLine()); if(n < 0) { if(n < 0) { continue; continue; } } sum += n; sum += n; i++; i++;}}
Console.WriteLine("average is {0}", sum / Console.WriteLine("average is {0}", sum / max); max);
ในการเข ยนโปรแกรมสามารถนำาค ำาในการเข ยนโปรแกรมสามารถนำาค ำา สงลปแบบตางๆ ใหมาท ำางานซอนกนได สงลปแบบตางๆ ใหมาท ำางานซอนกนได
เร ยกว าล ปแบบซอนลปเร ยกว าล ปแบบซอนลปด งต วอย างต อไปนด งต วอย างต อไปนPublic class Nestedloop1 {Public static Public class Nestedloop1 {Public static
void main(String[ ] args){for(int i = 1; void main(String[ ] args){for(int i = 1; i < = 3; i ++)for(int j = 1; j < = 3; j +i < = 3; i ++)for(int j = 1; j < = 3; j ++)System.out.print(j + “ “);}}+)System.out.print(j + “ “);}}
จากตวอย างโปรแกรมลปแรกจะเปนจากตวอย างโปรแกรมลปแรกจะเปน ลปของต วแปร ลปของต วแปร I I โดยภายในลปจะทำาล ปโดยภายในลปจะทำาล ป
ของตวแปร ของตวแปร j j จ ำานวน จ ำานวน 3 3 ครง ท ำาให การ ครง ท ำาให การ ทำางาน ทำางาน System.out.print (j+“ “) System.out.print (j+“ “) มการม การ
ทำางานทงหมด ทำางานทงหมด 99ครงคร ง
โปรแกรมท โปรแกรมท 3.223.22 โปรแกรมตอไปนจะโปรแกรมตอไปนจะ เป นการนำาเคร องหมาย เป นการนำาเคร องหมาย **มาพมพเป นร ปมาพมพเป นร ป สามเหลยมทางจอภาพ โดยจะ ออกแบบโปรแกรม สามเหลยมทางจอภาพ โดยจะ ออกแบบโปรแกรม
ใหท ำางานแบบลปซอนลป โดยลปท หน งใหท ำาล ป ใหท ำางานแบบลปซอนลป โดยลปท หน งใหท ำาล ป ในหนงคร ง ล ปท สองใหท ำาล ปในสองคร งไปเร อยๆ ในหนงคร ง ล ปท สองใหท ำาล ปในสองคร งไปเร อยๆ
ในการทำาล ปแตละคร งน นจะพมพเคร องหมายในการทำาล ปแตละคร งน นจะพมพเคร องหมาย * * หนงต ว เม อท ำาล ปในครบแลวจะขนบรรทดใหม หนงต ว เม อท ำาล ปในครบแลวจะขนบรรทดใหมPublic class Star {Public static void Public class Star {Public static void
main(String[ ] args){for(int i = 1; i < main(String[ ] args){for(int i = 1; i < = 8; i ++){for(int j = 1; j < = i; j += 8; i ++){for(int j = 1; j < = i; j ++)System.out.print( “ * +)System.out.print( “ * “);System.out.print();}}} “);System.out.print();}}}
3.11 3.11 ขอควรระว งในการใชขอควรระว งในการใชค ำาส งท ำาซ ำาค ำาส งท ำาซ ำา
ในการเขยนโปรแกรมทำาลปมกจะมขอผดพลาดเกดขนในการเขยนโปรแกรมทำาลปมกจะมขอผดพลาดเกดขน เสมอ โดยโปรแกรมทเขยนขนจะคอมไพลผาน แตจะ เสมอ โดยโปรแกรมทเขยนขนจะคอมไพลผาน แตจะ
ทำางานไมถกตองตามทตองการ ขอผดพลาดนเรยก ทำางานไมถกตองตามทตองการ ขอผดพลาดนเรยกวาวา logic error logic error //outcome product //outcome product will equal 3*57*……*99will equal 3*57*……*99
long product = 1;long product = 1; int I = 3;int I = 3; while (i < = 100) {while (i < = 100) { product = product * i;product = product * i; i = i+2;i = i+2; }}
System.out.print(product);System.out.print(product); พจารณาสวนของโปรแกรมตอไปน ซงสวนประกอบของ พจารณาสวนของโปรแกรมตอไปน ซงสวนประกอบของ
โปรแกรมหาผลคณของเลขคทอยระหวางตวเลขโปรแกรมหาผลคณของเลขคทอยระหวางตวเลข 1 1 ถง ถง 100100
จากโปรแกรมทเข ยนขนจะเห นว าจะประกาศจากโปรแกรมทเข ยนขนจะเห นว าจะประกาศตวแปรตวแปร product product เป นประเภทเป นประเภท long long ถาหากถาหากประกาศตวแปรนเป นประเภทประกาศตวแปรนเป นประเภท int int จะใหค ำาตอบจะใหค ำาตอบ
ไมถ กต อง เน องจากคาผลลพธ ของ ไมถ กต อง เน องจากคาผลลพธ ของ product product ทท ได จะมค ามากกวาจ ำานวนขอมลท ต วแปรไดจะมค ามากกวาจ ำานวนขอมลท ต วแปรแบบแบบ integer integer จะเก บได และถาหากมการ จะเก บได และถาหากมการประกาศตวแปรนเป นประกาศตวแปรนเป น long long productproduct
กจะเกดข อผ ดพลาดขนเช นก น เน องจากไมได กจะเกดข อผ ดพลาดขนเช นก น เน องจากไมได กำาหนดคาเร มต นใหก บต วแปรน ซ งจะท ำาใหไม กำาหนดคาเร มต นใหก บต วแปรน ซ งจะท ำาใหไม
สามารถคำานวณสามารถคำานวณproduct = product * I; product = product * I; ไดได จากโปรแกรมนค าต วเลขคาส งสดจะเป น จากโปรแกรมนค าต วเลขคาส งสดจะเป น 99 99 แตผ แต ผ
เข ยนโปรแกรมมโอกาสเข าใจผดโดยเข ยนในเขยนโปรแกรมมโอกาสเข าใจผดโดยเข ยนในลกษณะนได ล กษณะนได
การเข ยนโปรแกรมในลกษณะตวอยางด านการเข ยนโปรแกรมในลกษณะตวอยางด าน บนนจะเป นการคำานวณคา บนนจะเป นการคำานวณคา 3*5*7....97 3*5*7....97 เน องจากเน องจาก
ในลปส ดทายคาของในลปส ดทายคาของ i i มค าเป น มค าเป น 99 99 ซงท ำาใหซ งท ำาใหเง อนไขของเง อนไขของ while while เป นเทจ ซ งเป นขอผ ดพลาด เป นเทจ ซ งเป นขอผ ดพลาด
ในขณะตรวจสอบเง อนไข ขอผ ดพลาดลกษณะน ในขณะตรวจสอบเง อนไข ขอผ ดพลาดลกษณะนเร ยกอ กอยางหนงว าเร ยกอ กอยางหนงว า off-by-one-erroroff-by-one-error
จากปญหาเด ยวก นน ถ าหากเขยนการ จากปญหาเด ยวก นน ถ าหากเขยนการตรวจสอบเง อนไขผดพลาดกอาจทำาให โปรตรวจสอบเง อนไขผดพลาดกอาจทำาให โปร
แกรมทำาล ปซ ำาไมร จบได อย างเชนการ แกรมทำาล ปซ ำาไมร จบได อย างเชนการเข ยนค ำาส งด งตอไปนเข ยนค ำาส งด งตอไปน
long product = 1;int I =3;While(i! = 100){ // ทำาซำาถาหาก i ไมเทากบ 100 product = product * i; i = i+2;}
จากสวนของโปรแกรมดานบนจะปรบคา I กอน ทจะทำาการคณ ซงจะทำาใหเปนการหาคาของ
5*7*9.......*99*101
จากการเข ยนโปรแกรมทผ านมาไดศกษาวธ จากการเข ยนโปรแกรมทผ านมาไดศกษาวธ การร บข อมลทางคยบอร ดมาบางแล ว โดยใช การร บข อมลทางคยบอร ดมาบางแล ว โดยใช
เมธอดในคลาสเมธอดในคลาส Scanner Scanner ในภาษาจาวายงในภาษาจาวายง สามารถร บค าทางคย บอร ดไดอ กหลายวธ อ กวธ สามารถร บค าทางคย บอร ดไดอ กหลายวธ อ กวธ
หนงท นยมใชกน ได แก การใช หนงท นยมใชกน ได แก การใชเมธอดเมธอด read read เป นเมธอดทอย ในเป นเมธอดทอย ในคลาสคลาส System System การใชงานจะตองเร ยกใชแพกการใชงานจะตองเร ยกใชแพกเกจเกจ java.io java.io และร บข อมลได จากการเขยนคำาและร บข อมลได จากการเขยนคำาส ง เป นส ง เป น System.in.read System.in.read การใชเมธอดนจะร บการใชเมธอดนจะร บ
ขอมลเป นต วอ กษร ขอมลเป นต วอ กษร 1 1 ตว จากนนข อมลท ร บเข า ตว จากนนข อมลท ร บเข ามาจะถ กแปลงไปเป นรหสมาจะถ กแปลงไปเป นรหส ASCII ASCII โดยอตโนมต โดยอตโนมต การเร ยกใชค ำาส งน จะมการตรวจจบความผดการเร ยกใชค ำาส งน จะมการตรวจจบความผด
พลาดในการร บข อมลด วย ซงผ เข ยนโปรแกรม พลาดในการร บข อมลด วย ซงผ เข ยนโปรแกรมจะตองใชค ำาส งจะต องใชค ำาส ง throws IOException throws IOException ตอจากตอจากเมธอดเมธอด main main ดวยดวย
สมาชกสมาชก
1.1. นายธาวต ตงวรยะ เลขท นายธาวต ตงวรยะ เลขท 882.2. นางสาวนจร บญชเชด เลขท นางสาวนจร บญชเชด เลขท 2525
3.3. นางสาวกนษฐา เนตรสวาง เลขท นางสาวกนษฐา เนตรสวาง เลขท 2828
4.4. นางสาวทพยวรรณ เชอวงษ เลขท นางสาวทพยวรรณ เชอวงษ เลขท 2929
5.5. นางสาวมนสนนต ทบทมใส เลขท นางสาวมนสนนต ทบทมใส เลขท 3131
6.6. นางสาวสกานดา เฉนจณวรรณ เลขท นางสาวสกานดา เฉนจณวรรณ เลขท 3232
จบการนำาเสนอ จบการนำาเสนอ !!!!