More Related Content Similar to งานนำเสนอ1อ ทรงศักดิ์ (15) More from Aeew Autaporn (12) งานนำเสนอ1อ ทรงศักดิ์2. 3.1 ตัว ดำำ เนิน กำรทำงตรรกะ
ตัว ดำำ เนิน กำรแบบสัม พัน ธ์
(Relational Operators) คือตัว
ดำำเนินกำรที่ทำำหน้ำที่เปรียบเทียบค่ำ
ระหว่ำงตัวแปรสองตัว หรือนิพจน์สอง
นิพจน์ โดยจะคืนค่ำเป็นจริงหรือเท็จ
(Boolean)
3. Relational Operator ตัว อย่ำ ง
< Op1<Op2 : คืนคำควำมเปนจริงถำ Op1 น้อยกวำ a=(1<3); //aจะมีค่ำเป็นจริง
Op2
<= Op1<=Op2 : คืนค่ำควำมเป็นจริงถ้ำ Op1 น้อย a=(5<=7); //a จะมีค่ำเป็นจริง
กว่ำ Op2 หรือเท่ำกับ Op2
> Op1>Op2 :คืนค่ำควำมเป็นจริงถ้ำ Op1 มำกกว่ำ a=(5>7); //a จะมีค่ำเป็นจริง
Op2
>= Op1>=Op2 : คืนค่ำควำมเป็นจริงถ้ำ Op1 มำกกว่ำ a=(5>=7); //a จะมีค่ำเป็นจริง
หรือเท่ำกับ Op2
== Op1==Op2 : คืนค่ำควำมเป็นจริงถ้ำ Op1 เท่ำกับ a=(5==7); // a จะมีค่ำเป็นเท็จ
Op2 เพรำะ 5 ไม่เท่ำกับ 7
!= Op1!=Op2 : คืนค่ำควำมเป็นจริงถ้ำ Op1 ไม่ a=(5!=7); // a จะมีค่ำเป็นจริง
เท่ำกับ Op2 เพรำะ 5 ไม่เท่ำกับ 7
": (expression)"a:b :คือค่ำตัว operand a ถ้ำ a=(3>5)"false:true; //a จะมีค่ำ
expression เป็นจริง เป็นจริง เพรำะผลกำรเปรียเทียบ 3
มำกกว่ำ 5 เป็นเท็จ เมื่อค่ำทีได้เป็น
่
เท็จจะเลือกค่ำ true
4. ตัวดำำเนินกำรทำงตรรกศำสตร์ (Logical
Operator)
ตัวดำำเนินกำรทำงตรรกะ เป็นตัวดำำเนินกำร
เกี่ยวข้องกับนิพจน์ที่สำมำรถบอกค่ำควำมจริง
เป็นจริง(true) หรือเท็จ (false)ได้ หรือชนิด
ข้อมูลตรรกะ เช่น ตัวแปรประเภท boolean
ผลลัพธ์ที่ได้จำกกำรกระทำำจะได้คำคงที่ตรรกะ
่
เป็น true หรือ false ตัวดำำเนินกำรทำงตรรกะ
ได้แก่เครื่องหมำย !, &&, &, ||, |, ^ มีตัวอย่ำง
กำรใช้งำนดังนี้
5. เครื่อ งหมำย ควำมหมำย ตัว อย่ำ ง ผลลัพ ธ์
ดำำ เนิน กำร
! NOT (นิเสธ) !(5 > 3) false
AND (และ) (x >= 10)&&(x <= มีค่ำเป็น true เมื่อ
&& หรือ & 100) (x >= 10) มีค่ำเป็น true
และ (x <= 100) มีค่ำเป็น
true
OR (หรือ) (x < 10) || (x > มีค่ำเป็น true เมื่อ
|| หรือ | 100) (x < 10) มีค่ำเป็น true
หรือ (x > 100) มีค่ำเป็น
true
Exclusive (x > 20) ^ (y > มีค่ำเป็น false ได้ 2
OR 20) กรณี คือ
^ กรณีท1 ี่
เมือ (x >= 10) มีค่ำเป็น
่
true และ (x <= 100) มีค่ำ
เป็น true
กรณีท2 ี่
เมือ (x >= 10) มีค่ำเป็น
่
false และ (x <= 100) มี
ค่ำเป็น false
7. ำรำงค่ำควำมจริงของตัวดำำเนินกำร && หรือ AND
ค่ำ ควำมจริง นิพ จน์ ค่ำ ควำมจริง นิพ จน์ ตัว อย่ำ ง ผลลัพ ธ์
ที1
่ ที2
่
false false false && false False
false true false && true False
true false true && false False
True true true && true True
8. ตำรำงค่ำควำมจริงของตัวดำำเนินกำร || หรือ OR
ค่ำ ควำมจริง ค่ำ ควำมจริง ผลลัพ ธ์ ผลลัพ ธ์
นิพ จน์ท ี่1 นิพ จน์ท ี่2
False false false || false False
False true false || true True
True false true || false True
True true true || true True
9. ตำรำงค่ำควำมจริงของตัวดำำเนินกำร ^ หรือ XOR
ค่ำ ควำมจริง ค่ำ ควำมจริง ผลลัพ ธ์ ผลลัพ ธ์
นิพ จน์ท ี่1 นิพ จน์ท ี่2
False false false ^ false False
False true false ^ true True
True false true ^ false True
True true true ^ true false
10. ตัว อย่ำ ง กำรใช้ Operator แบบ boolean
class 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);
11. ตัว ดำำ เนิน กำรระดับ (Bitwise
Operator)
Operator รูป แบบ และกำรทำำ งำน ตัว อย่ำ ง ผลลัพ ธ์ท ไ ด้
ี่
~ ~ Op : ทำำ complement คือ a= 0x0005 -6
ทำำกำรเปลี่ยนค่ำของบิต 1 เป็น 0
และเปลี่ยนบิตทีมค่ำ 0 เป็น 1
่ ี
<<, >> กำรย้ำยบิตไปทำงซ้ำย และทำง a= 0x0005 << 2 20
ขวำ a= 0x0005 >> 2 1
12. >>> กำรย้ำยบิตไปทำงขวำเสมือนไม่มี a= 0x0005 >>> 2 1
เครื่องหมำย a= 0xFFF5 >>> 2 16381
& ประมวลผลแบบ Bitwise AND a= 0x0005 & a = 5
0x0007;
^ ประมวลผลแบบ Bitwise XOR a= 0x0005 ^ a= 2
0x0007;
| ประมวลผลแบบ Bitwise OR a= 0x0005 | a= 7
0x0007;
13. ลำำดับในกำรประมวลของ Operators
ต่ำง ๆ
ตัว กระทำำ (Operators) ลำำ ดับ ประเภทของกำรประมวลผล
() วงเล็บ 1
++(Increment), --(Decrement), + 2 กำรคำำนวณ
(Unary plus), -(unary minus) กำรคำำนวณ
!(Not) Boolean
~(Complement) integer
(type_cast) ทุกรูปแบบ
*(Multiply),/(Divide),%(modulus) 3 กำรคำำนวณ
+(Add),-(subtract) 4 กำรคำำนวณ
<< (Left shift),>>(Right 5 จำำนวนเต็ม
shift),>>>(zero fill)
< (Less than), <==(less than or 6 กำรคำำนวณ object, (เปรียบเทียบ
equal), >(greater than), object)
>==(greater than or equal)
Instanceof()
==(Equal),!=(not equal) 7 ข้อมูลพื้นฐำน และ object
&(Bitwise AND) 8 จำำนวนเต็ม
^ (Bitwise XOR) 9 จำำนวนเต็ม
| (Bitwise OR) 10 จำำนวนเต็ม
s&& (AND) 11 Boolean
14. ตัว อย่ำ ง กำรคำำนวณโดยใช้
Operator1
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);
}
}
15. ตัว อย่ำ ง กำรคำำนวณโดยใช้
Operator2
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);
}
16. 3.2 คำำ สัง if (if Statement)
่
เลือ กทำำ แบบทำงเดีย ว
คำำ สัง if then-- > เป็น คำำ สัง เลือ ก
่ ่
ทำำ แบบทำงเดีย ว กำรเลือ กทำำ แบบทำง
เดีย วในภำษำปำสคำลจะใช้ค ำ สัง if – ำ ่
then ในกำรทำำ งำนของคำำ สัง ่
คอมพิว เตอร์จ ะตรวจสอบเงือ นไขก่อ น ถ้ำ
่
เงื่อ นไขเป็น จริง จะทำำ คำำ สัง หรือ สเตตเมน
่
ต์ท ี่ต ำมหลัง then แต่ถ ้ำ เงื่อ นไขเป็น เท็จ
คอมพิว เตอร์จ ะทำำ คำำ สัง หรือ สเตตเมนต์
่
ต่อ ไป รูป แบบของคำำ สัง เป็น ดัง ต่อ ไปนี้
่
17. คำำ สัง if then
่
รูป แบบคำำ สัง :if (…เงื่อ นไข --
่
condition……)
then…….
โดยกำรตรวจสอบเงือ นไขจะเป็น กำรก
่
ระทำำ แบบบูล ีน ถ้ำ หำกมีก ำรใช้ต ัว ดำำ เนิน
กำร จะใช้ต ว ดำำ เนิน กำรบูล ีน สำำ หรับ กำร
ั
ทำำ งำนของคำำ สัง if –then สำมำรถเขีย น
่
เป็น ผัง งำนได้ด ัง นี้
18. ง if then - - > ใน 1 โปรแกรมสำมำรถมี if then ได้ห ลำย
Flow Chart :
19. คำำ สัง if then
่
ตัว อย่ำ งโปรแกรม :1 - - >โปรแกรมในฝัน
var age:integer;
begin
If (age >= 18) then
writeln (‘of age’);
writeln (‘good luck’);
Readln;
end.
20. 3.3 คำำ สัง (if – then – else) เป็น คำำ
่
สัง เลือ กทำำ อย่ำ งใดอย่ำ งหนึ่ง
่
ในกรณีที่คอมพิวเตอร์ต้องเลือกทำำอย่ำงใด
อย่ำงหนึ่ง โดยตรวจสอบเงื่อนไขที่กำำหนด
จะใช้ คำำสั่ง if – then –else โดยถ้ำ
เงื่อนไขเป็นจริงจะทำำคำำสั่งหลัง then แต่ถ้ำ
เงื่อนไขเป็นเท็จจะทำำคำำสั่งหลัง else โดย
นิพจน์ที่ตำมหลัง if จะเป็นข้อมูลทำงตรรกะ
รูปแบบคำำสังเป็นดังนี้
่
21. คำำ สัง if- then - else
่
รูป แบบคำำ สัง : หลัง statement ที่ 1 ไม่ม ี
่
semicolon ( ; ) [ข้อ ยกเว้น ]
if (…เงือ นไข -- condition……) then
่
..statement 1
else ..statement 2
23. คำำ สัง if - then - else
่
ตัว อย่ำ งโปรแกรม :1 - - >โปรแกรมในฝัน
var scroe:integer;
begin
If (score >= 50)Then
WRITE (‘You
pass’)
ELSE
WRITELN (‘You
fail);
readln;
end.
24. 3.4 คำท ี่มสั่งนไข if และ else จำำ นวนมำก คำำ สั่ง
ใช้ใ นกรณี
ำ ีเ งื่อ if....elseif
elseif เป็น กำรรวมกัน ของคำำ สั่ง if และ else ซึ่ง คำำ สั่ง
เหล่ำ นี้จ ะเรีย งลำำ ดับ กัน อยู่ มีร ูป แบบดัง รูป
25. กำรใช้ if, if else, if else if ใน Javascript
if ใน Javascript
1.if(condition){
2. statement 1;
3.statement 2;
4. ...
5.}
statement 1;statement 2;... condition
คือเงื่อนไงที่ต้องกำร statement ก็คือคำำสังใน ่
โปรแกรม อำจประกอบด้วยหลำยคำำสัง ถ้ำหำก ่
มีคำำสั่งมำกกว่ำหนึ่งให้ใส่วงเล็บปีกกำ{} ครอบ
คำำสั่งทั้งหมดไว้ แต่ถ้ำมีเพียงคำำสั่งเดียวไม่ต้อง
ใส่วงเล็บปีกกำก็ได้ ถ้ำหำกไม่มีคำำสั่งใด ๆ ให้
26. ตัว อย่ำ งกำรใช้ if ใน
Javascript
• <script language="javascript" type="te
xt/javascript">
• function useif(){
• var score = document.getElement
ById("score").value;
• if(score < 50)
• document.getElementById("sh
ow").innerHTML = "Your Grade : F";
• if(score >= 50 && score < 60)
• document.getElementById("sh
ow").innerHTML = "Your Grade : D";
27. • document.getElementById("show").innerHT
ML = "Your Grade : b";
• if(score >= 80)
• document.getElementById("show").inn
erHTML = "Your Grade : A";
• if(isNaN(score))
• document.getElementById("show").inn
erHTML = "Input Incorrect";
• if(score == "")
• document.getElementById("show").inn
erHTML = "Input Score";
• }
• </script>
• ใส่
คะแนน : <input id="score" type="text" name=
"score" />
• <input type="button" value="ดู
เกรด " onclick="useif()" />
• <span id="show"></span>
28. โปรแกรมนี้รับค่ำคะแนนมำจำกกำร id ที่
มีชื่อว่ำ score นั่นคือจำกใน text นั่นเอง จำก
นันเรำใช้ if เพื่อตรวจสอบไปแต่ละเกรด จะเห็น
้
ว่ำเรำใช้แต่ if ตำมหลัง if มีแค่คำำสั่งเดียว ไม่
ต้องใส่วงเล็บปีกกำครอบก็ได้ โปรแกรมนี้จะ
ตรวจสอบทุก if นันคือตรวจสอบว่ำน้อยกว่ำ 50
่
ต่อไป ก็ มำกกว่ำ 50 และ น้อยกว่ำ 60 หรือไม่
และตรวจสอบไปเรื่อย ๆ ทุก ๆ เกรดถ้ำคะแนน
น้อยกว่ำ 50 แล้วปริ้น F ออกมำ แต่ก็ต้องตรวจ
สอบว่ำเป็นเกรด D C B หรือ A หรือไม่ แล้วก็
ต้องตรวจสอบ isNaN นั่นคือเป็นตัวเลขหรือไม่
และก็ตรวจสอบว่ำได้กรอกข้อมูลเข้ำมำหรือไม่
29. if else ใน Javascript
• if(condition){
• statement 1;
• statement 2;
• ...
• }
• else{
• statement 1;
• statement 2;
• ...
• } statement 1;statement 2;...statement
1;statement 2;... โปรแกรมจะเข้ำ สู่ก ำร
ทำำ งำนในบล็อ ก else ได้ ก็ต ่อ เมือ กำรทำำ งำน
่
ใน if เป็น เท็จ
30. ตัว อย่ำ งกำรใช้ if else ใน
Javascript
• <script language="javascript" type="te
xt/javascript">
• function useifelse(){
• var score = document.getElement
ById("score2").value;
• if(score < 50) document.getEleme
ntById("show2").innerHTML = "Your Gr
ade : F";
• else{
• if(score < 60) document.getE
lementById("show2").innerHTML = "You
r Grade : D";
• else{
• if(score < 70) document
31. • document.getEl
ementById("show2").innerHTML = "You
r Grade : B";
• else{
• if(isNaN(score))
• document.
getElementById("show2").innerHTML =
"Input Incorrect";
• else document.
getElementById("show2").innerHTML =
"Your Grade : A";
• }
• }
• }
32. โปรแกรมนีเ รำใช้ if else ตอนแรกก็
้
ตรวจสอบว่ำ น้อ ยกว่ำ 50 หรือ ไม่ ถ้ำ ใช่ ก็
ปริ้น F ออกมำ แต่ถ ้ำ ไม่ใ ช่ก ็ไ ปทำำ ที่ else
ใน else ก็ไ ปตรวจสอบ if ใน else อีก ที
หรือ ที่เ รีย กกัน ว่ำ if ซ้อ น if นัน เอง จำก if
่
ซ้อ น if เรำก็ส ำมำรถลดรูป กลำยเป็น
โปรแกรมที่ส ำมนัน คือ if else if
่
33. if else if ใน Javascript
• if(condition1){
• statement 1;
• statement 2;
• ...
• }
• else if(condition2){
• statement 1;
• statement 2;
• ...
• }
• else{
• statement 1;
• statement 2;
• ...
• } statement 1;statement
2;...statement 1;statement
2;...statement 1;statement 2;...
34. • <script language="javascript" type="te
xt/javascript">
• function useifelseif(){
• var score = document.getElement
ById("score3").value;
• if(score == "") document.getEleme
ntById("show3").innerHTML = "Input Sc
ore";
• else if(isNaN(score)) document.get
ElementById("show3").innerHTML = "In
put Incorrect";
• else if(score < 50) document.getE
lementById("show3").innerHTML = "You
r Grade : F";
• else if(score < 60) document.getE
lementById("show3").innerHTML = "You
r Grade : D";
35. โปรแกรมนี้เป็นการใช้ if else if เพื่อตรวจ
สอบน้อยกว่า 50 หรือไม่ถ้าไม่ก็ไปตรวจอันที่
สอง ถ้าน้อยกว่า 60 ก็ทำาการปริ้น D ออกมา
แล้วจบโปรแกรม ต่างจากโปรแกรมแรกที่ต้อง
ตรวจทุก if แม้จะ ปริ้นเกรดออกมาแล้ว และ
เป็นการลดรูปจากโปรแกรมที่สอง จากการใช้ if
ซ้อนกันหลาย ๆ ครั้ง ทำาให้โปรแกรมดูง่ายขึ้น
36. 3.5 คำา สัง การเลือ กทำา แบบ SWITCH
่
คำาสั่ง switch ใช้เพื่อเลือกทำาคำาสังใดคำาสั่ง
่
หนึงตามต้องการ โดยมีทางเลือกให้ทำาคำาสัง
่ ่
หลาย ๆ ทาง ค่าตัวแปรจะทำาหน้าที่ควบคุมคำา
สัง switch คำาสัง switch และคำาสัง if เป็นคำาสั่ง
่ ่ ่
เลือกทำาเช่นเดียวกันแต่ต่างกันที่รูปแบบเงื่อนไข
ต่อไปนี้เป็นรูปแบบของการเลือกทำาแบบ switch
37. การเลือกทำาแบบ switch มีวิธีเลือกทำาโดย
การเปรียบเทียบค่าของ switch กับค่าใน
แต่ละ case ถ้ามีค่าเท่ากัน statement ของ
case นั้นๆ จะทำางาน และถ้าค่าของ switch
ไม่เท่ากับค่าใน case ใด ๆ เลย statement
ของ default ก็จะทำางาน ข้อ สัง เกต
Variable และ Constant ที่ใช้สำาหรับเปรียบ
เทียบในการเลือกทำาแบบ switch จะต้องมีชนิด
เป็น int และ char เท่านั้น
38. ตัว อย่า งโปรแกรม การใช้คำาสังเลือกทำา
่
แบบ switch
• #include <stdio.h>
• main()
• {
• int ch; clrscr();
• printf(" Menu n");
• printf("===================n");
• printf(" 1 :Create Data n");
• printf(" 2 :Display Data n");
• printf(" 3 :Append Data n");
• printf(" 4 :Edit Data n");
• printf(" 5 :Quit n");
• printf("===================n");
• printf("Please select <1, 2, 3, 4, 5 > ==> ");
scanf("%d", & ch);
• switch (ch)
• { case 1: printf("You take choice 1:Create Data
39. • case 2: printf("You take chaoice 2:Display
Datan");
• break;
• case 3: printf("You take choice 3:Append Data
n");
• break;
• case 4: printf("You take choice 4: Edit Data n");
• break;
• case 5: printf("You take choice 5:Quitn");
• break;
• default: printf("You take choice the
other:default");
• return(0);
• }
• }
• #include <stdio.h>
• void main(void)
• {
40. • case 'x' : printf(" = %f", Fnum1 *
Fnum2);
• break;
• case '/' :
• case '': printf(" = %f", Fnum1 /
Fnum2);
• break;
• default : printf("Unknown operator");
• } // end switch
• } // end while
• } // end main
41. 3.6 การควบคุม การทำา ซำ้า ด้ว ยคำา
สั่ง for
คำาสั่งที่ใช้วนลูปนั้นก็คอคำาสั่ง for ซึ่งคำาสั่งนี้
ื
เข้าใจได้ดีจะทำาให้ใช้งานมันได้สะดวกสบาย
ขึ้น คำาสังนี้มีเงื่อนไขในการใช้งานอยู่พอสมควร
่
42. คำาสั่ง for นั้นมี 3 ส่วนที่ต้องกำาหนด คือ
1.) ค่าตัวแปรเริ่มต้น ใช้กำาหนดค่าเริ่มต้นของ
ตัวแปรที่จะใช้ในการควบคุม การวนลูป
2.) เงื่อนไข ใช้กำาหนดเงื่อนไขการวนลูป
3.) เปลี่ยนแปลงค่าตัวแปร ใช้ในการเพิ่มหรือ
ลดค่าของตัวแปรที่ใช้ในการควบคุม การวน
ลูป
43. ซึง ใช้ล ูป for โดยมีก ารกำา หนดตัว แปร i ไว
่
้้เ ป็น 1 เมือ เริ่ม เข้า มาทีล ูป ส่ว นเงื่อ นไขคือ i
่ ่
<= 10 คือ เราต้อ งการให้ล ูป นีว นไป 10 ครั้ง
้
ส่ว น i++ เป็น การเพิม ค่า i ทีล ะ 1 เมือ จบรอบ
่ ่
การทำา งานในแต่ล ะรอบนัน เอง ่
i = 1, sum = 0 + 1 จบรอบแรก sum = 1
i = 2, sum = 1 + 2 จบรอบที่ส อง sum = 3
i = 3, sum = 3 + 3 จบรอบทีส าม sum = 6
่
i = 4, sum = 6 + 4 จบรอบทีส ี่ sum = 10 ่
i = 5, sum = 10 + 5 จบรอบทีห า sum = 15 ่ ้
i = 6, sum = 15 + 6 จบรอบทีห ก sum = ่
21
i = 7, sum = 21 + 7 จบรอบทีเ จ็ด sum = ่
28
i = 8, sum = 28 + 8 จบรอบทีแ ปด sum = ่
36
45. กฎการใช้ค ำา สั่ง for
• 1. ค่า ทีเ พิม ขึน ในแต่ล ะรอบของตัว แปรควบคุม
่ ่ ้
นัน จะเป็น เท่า ไรก็ไ ด้ เช่น
้
• for(int x=0 ; x<=100 ; x=x+5)
• 2. ค่า ของตัว แปรควบคุม อาจถูก กำา หนดให้ล ดลง
ก็ไ ด้ เช่น
• for(int x=100 ; x>0 ; x- -)
• 3. ตัว แปรควบคุม อาจเป็น ชนิด character ได้
เช่น
• for(char ch =’a’ ; ch<=’z’ ; ch++)
• 4. ตัว แปรควบคุม สามารถมีไ ด้ม ากกว่า 1 ตัว แปร
เช่น
• for(int x=0,y=0 ; x+y<100 ; x++,y++)
• 5 . ถ้า มีก ารละบางส่ว นหรือ ทุก ส่ว นของ
46. 6. ในคำา สั่ง for สามารถมีค ำา สั่ง for
ซ้อ นอยูภ ายในได้อ ีก เช่น
่
for(int x=1 ; x<=3 ; x++)
{
System.out.println(“ x = ”+x);
for(int y=1 ; x<=5 ; y++)
System.out.println(“ y = ”+y);
}
47. 3.7 ลูป WHILE
คำา สั่ง while เป็น คำา สัง ที่ใ ช้ส ำา หรับ กา
่
รวนลูป ซึ่ง flowchart สำา หรับ คำา สัง ่
while นัน สามารถดูไ ด้ต ามรูป ด้า นล่า ง
้
จาก flowchart ด้า นบน คำา สัง ่
while จะวนลูป โดยการเช็ค condition
ซึ่ง ถ้า เป็น จริง จึง จะทำา การวนลูป ใน
while ดัง นัน คำา สัง while จะวนกี่ร อบนัน
้ ่ ้
ก็ข ึ้น อยู่ก ับ condition แต่เ ราสามารถ
หยุด การวนด้ว ยคำา สัง break่
48. ตัว อย่า งนี้ กำา หนด i = 0 และ กำา หนด
num = 50 แล้ว ทำา การเข้า สู่ว งวน while
เมื่อ เป็น จริง ให้ล ดค่า num ลงหนึง ต่อ
่
รอบ และเพิ่ม ค่า i ขึ้น ทีล ะหนึง ต่อ รอบ เมือ
่ ่
เป็น เท็จ ก็ ปริ้น ค่า i กับ num ล่า สุด ออก
มา ผลที่อ อกมาคือ i = 10 และ num = 40
นัน แสดงว่า เข้า สูว งวน while 10 รอบ
่ ่
49. ลูป ที่ท ำา งานไม่ร ู้จ บ Infinite
Loops loop (บางครั้ง เรีย กว่า endless loop)
• infinite
เป็น ชิ้น ของคำา สั่ง ทีข าดฟัง ก์ช น ออก ดัง นัน จะมี
่ ั ้
การซำ้า ไม่ร ู้จ บ ในโปรแกรมคอมพิว เตอร์ loop
เป็น อนุก รมของคำา สั่ง ทีไ ด้ร ับ การซำ้า อย่า งต่อ
่
เนือ งจนกระทัง ในเงื่อ นไขแน่น อนมาถึง ตาม
่ ่
ปกติ กระบวนการแน่น อนได้ร ับ การกระทำา เช่น
การนำา หน่ว ยของข้อ มูล และเปลี่ย นแปลง หลัง
จากนัน บางเงื่อ นไขได้ร ับ การตรวจสอบ เช่น
้
ตัว นำา มาถึง ตัว เลขกำา หนด ถ้า การปรากฏของ
เงือ นไขเจาะจงไม่ส ามารถมาถึง คำา สั่ง ต่อ ไปใน
่
อนุก รมบอกโปรแกรมให้ย อ นกลับ ไปทีค ำา สั่ง แรก
้ ่
และซำ้า อนุก รม ซึง ตามปกติจ ะต่อ ไปจนกระทัง
่ ่
โปรแกรมหยุด อย่า งอัต โนมัต ิ หลัง ช่ว งเวลา
แน่น อนหนึง หรือ ระบบปฏิบ ัต ิก ารหยุด โปรแกรม
่
ด้ว ยคามผิด พลาด
50. 3.8 ลูป do – while
• do... while มีล ัก ษณะการใช้ง านเหมือ น
while (condition) {} เพีย งแต่ค ำา สัง่
do.. while นัน ในครั้ง แรกจะทำา ในบล็อ ก
้
คำา สั่ง do.. while ก่อ นค่อ ยทำา การเช็ค
เงื่อ นไขเมือ จบรอบนึง เช่น
่
• $a = 3;
• do {
• print $a . ", ";
• $a--;
• } while ($a <3);
51. เมือ ดูท ี่ต ว แปร $a จะมีค า คือ 3 และใน
่ ั ่
การเช็ค เงือ นไขในคำา สัง while คือ เช็ค ว่า
่ ่
ถ้า $a < 3 ให้ท ำา ในบล็อ กคำา สัง แต่ใ น
่
กรณีน เ ป็น การใช้ค ำา สัง do... while ดัง นัน
ี้ ่ ้
เมือ กำา หนดค่า ให้ต ัว แปร $a = 3 ก็จ ะเข้า
่
ทำา ในบล็อ กคำา สัง do... while ทัน ที โดย
่
ไม่ไ ด้ท ำา การตรวจสอบเงือ นไขก่อ น เมือ
่ ่
ทำา คำา สัง ในบล็อ กเสร็จ แล้ว ก็ท ำา การลบค่า
่
$a ไปหนึง ค่า ดัง นัน ณ ตอนนี้ต ว แปร $a
่ ้ ั
= 2 แล้ว ค่อ ยทำา การเช็ค เงือ นไขในคำา สัง
่ ่
while ตามที่ก ำา หนดมา
52. โครงสร้า งการเขีย นโปรแกรมแบบ
วนซำ้า โดยใช้ค ำา สัง do-while
่
• รูป แบบของการเขีย น code สำา หรับ โปรแกรม
แบบวนซำ้า ทีใ ช้ do-while สามารถเขีย นให้อ ยู่
่
ในรูป ทัว ไปได้ด ัง นี้
่
• do
statement
while ( เงื่อ นไข );
• ตัว อย่า งของโครงสร้า ง do-while สามารถเขีย น
ได้ด ัง นี้
• sum = 0.0;scanf(“%f”, &x);do { sum += x;
scanf(“%f”, &x); }while (x > 0.0);โปรแกรม
ข้า งต้น จะทำา การอ่า นค่า keyboard เมือ User ่
พิม พ์ค ่า ทีม ค ่า มากกว่า ศูน ย์ ก็จ ะทำา การบวกค่า
่ ี
เหล่า นีไ ปทีต ัว แปร sum จนกระทัง User พิม พ์
้ ่ ่
53. 3.9 ลูป ซ้อ นลูป (Nested Loops)
ในการเขีย นโปรแกรมสามารถนำา คำา สั่ง ลูป แบบ
ต่า งๆ ให้ม าทำา งานซ้อ นกัน ได้เ รีย กว่า ลูป แบบซ้อ นลูป
ดัง ตัว อย่า งต่อ ไปนี้ Public class Nestedloop1 {
Public static void
main(String[ ] args)
{
for(int i = 1; i < =
3; i ++)
for(int
j = 1; j < = 3; j ++)
System.out.print(j + “ “);
}
}
จากตัว อย่า งโปรแกรมลูป แรกจะเป็น ลูป
ของตัว แปร I โดยภายในลูป จะทำา ลูป ของ
ตัว แปร j จำา นวน 3 ครั้ง ทำา ให้ก าร
54. 3.10 คำา สั่ง break และ
continue ถ้า เราจำา เป็น ต้อ งออกจากลูป โดยไม่ต ้อ งรอ
• 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;
55. • continue statement การใช้ break; จะ
เป็น การออกจากลูป ไปทัน ที แต่ถ ้า ต้อ งการให้
มัน แค่ห ยุด การวนลูป รอบนัน และกลับ ไปทำา งาน
้
ใน loop ต่อ เราก็จ ะใช้ continue;
• int i = 0, n, max, sum = 0;
max = Int32.Parse(Console.ReadLine());
while(i < max) {
n = Int32.Parse(Console.ReadLine());
if(n < 0) {
continue;
}
sum += n;
i++;
}
Console.WriteLine("average is {0}", sum /
56. ในการเขีย นโปรแกรมสามารถนำา คำา
สัง ลูป แบบต่า งๆ ให้ม าทำา งานซ้อ นกัน ได้
่
เรีย กว่า ลูป แบบซ้อ นลูป
ดัง ตัว อย่า งต่อ ไปนี้
Public class Nestedloop1 {Public static
void main(String[ ] args){for(int i = 1;
i < = 3; i ++)for(int j = 1; j < = 3; j +
+)System.out.print(j + “ “);}}
57. จากตัว อย่า งโปรแกรมลูป แรกจะเป็น
ลูป ของตัว แปร I โดยภายในลูป จะทำา ลูป
ของตัว แปร j จำา นวน 3 ครั้ง ทำา ให้ก าร
ทำา งาน System.out.print (j+“ “) มีก าร
ทำา งานทั้ง หมด 9ครั้ง
58. โปรแกรมที่ 3.22 โปรแกรมต่อ ไปนีจ ะ ้
เป็น การนำา เครื่อ งหมาย *มาพิม พ์เ ป็น รูป
สามเหลี่ย มทางจอภาพ โดยจะ ออกแบบโปรแกรม
ให้ท ำา งานแบบลูป ซ้อ นลูป โดยลูป ทีห นึง ให้ท ำา ลูป
่ ่
ในหนึง ครั้ง ลูป ที่ส องให้ท ำา ลูป ในสองครั้ง ไปเรื่อ ยๆ
่
ในการทำา ลูป แต่ล ะครั้ง นัน จะพิม พ์เ ครื่อ งหมาย *
้
หนึPublic อ ทำา ลูป ในครบแล้ว จะขึ้น บรรทัด ใหม่
ง ตัว เมื่ class Star {Public static void
่
main(String[ ] args){for(int i = 1; i <
= 8; i ++){for(int j = 1; j < = i; j +
+)System.out.print( “ *
“);System.out.print();}}}
59. 3.11 ข้อ ควรระวัง ในการใช้
คำา สั่ง ทำา ซำ้า
ในการเขียนโปรแกรมทำาลูปมักจะมีข้อผิดพลาดเกิดขึ้น
เสมอ โดยโปรแกรมทีเขียนขึ้นจะคอมไพล์ผ่าน แต่จะ
่
ทำางานไม่ถูกต้องตามทีต้องการ ข้อผิดพลาดนี้เรียก
่
ว่า logic error //outcome product
will equal 3*57*……*99
long product = 1;
int I = 3;
while (i < = 100) {
product = product * i;
i = i+2;
}
System.out.print(product);
พิจารณาส่วนของโปรแกรมต่อไปนี้ ซึ่งส่วนประกอบของ
60. จากโปรแกรมทีเ ขีย นขึ้น จะเห็น ว่า จะประกาศ
่
ตัว แปร product เป็น ประเภท long ถ้า หาก
ประกาศตัว แปรนีเ ป็น ประเภท int จะให้ค ำา ตอบ
้
ไม่ถ ูก ต้อ ง เนือ งจากค่า ผลลัพ ธ์ข อง product ที่
่
ได้จ ะมีค ่า มากกว่า จำา นวนข้อ มูล ทีต ัว แปร
่
แบบ integer จะเก็บ ได้ และถ้า หากมีก าร
ประกาศตัว แปรนีเ ป็น long
้
product
ก็จ ะเกิด ข้อ ผิด พลาดขึ้น เช่น กัน เนื่อ งจากไม่ไ ด้
กำา หนดค่า เริ่ม ต้น ให้ก ับ ตัว แปรนี้ ซึ่ง จะทำา ให้ไ ม่
สามารถคำา นวณ product = product * I; ได้
จากโปรแกรมนีค ่า ตัว เลขค่า สูง สุด จะเป็น 99 แต่ผ ู้
้
เขีย นโปรแกรมมีโ อกาสเข้า ใจผิด โดยเขีย นใน
ลัก ษณะนีไ ด้้
61. การเขีย นโปรแกรมในลัก ษณะตัว อย่า งด้า น
บนนีจ ะเป็น การคำา นวณค่า 3*5*7....97 เนือ งจาก
้ ่
ในลูป สุด ท้า ยค่า ของ i มีค ่า เป็น 99 ซึ่ง ทำา ให้
เงือ นไขของ while เป็น เท็จ ซึง เป็น ข้อ ผิด พลาด
่ ่
ในขณะตรวจสอบเงื่อ นไข ข้อ ผิด พลาดลัก ษณะนี้
เรีย กอีก อย่า งหนึง ว่า off-by-one-error
่
62. จากปัญ หาเดีย วกัน นี้ ถ้า หากเขีย นการ
ตรวจสอบเงื่อ นไขผิด พลาดก็อ าจทำา ให้โ ปร
แกรมทำา ลูป ซำ้า ไม่ร ู้จ บได้ อย่า งเช่น การ
เขีย นคำา สัง ดัง ต่อ ไปนี้
่
long product = 1;
int I =3;
While(i! = 100){ // ทำาซำ้าถ้าหาก i ไม่เท่ากับ 100
product = product * i;
i = i+2;
}
จากส่วนของโปรแกรมด้านบนจะปรับค่า I ก่อน
ทีจะทำาการคูณ ซึ่งจะทำาให้เป็นการหาค่าของ
่
5*7*9.......*99*101
63. จากการเขีย นโปรแกรมทีผ ่า นมาได้ศ ก ษาวิธ ี
่ ึ
การรับ ข้อ มูล ทางคีย บ อร์ด มาบ้า งแล้ว โดยใช้
์
เมธอดในคลาส Scanner ในภาษาจาวายัง
สามารถรับ ค่า ทางคีย ์บ อร์ด ได้อ ีก หลายวิธ ี อีก วิธ ี
หนึง ทีน ย มใช้ก น ได้แ ก่ การใช้
่ ่ ิ ั
เมธอด read เป็น เมธอดทีอ ยูใ น ่ ่
คลาส System การใช้ง านจะต้อ งเรีย กใช้แ พ็ก
เกจ java.io และรับ ข้อ มูล ได้จ ากการเขีย นคำา
สัง เป็น System.in.read การใช้เ มธอดนีจ ะรับ
่ ้
ข้อ มูล เป็น ตัว อัก ษร 1 ตัว จากนั้น ข้อ มูล ทีร ับ เข้า
่
มาจะถูก แปลงไปเป็น รหัส ASCII โดยอัต โนมัต ิ
การเรีย กใช้ค ำา สั่ง นีจ ะมีก ารตรวจจับ ความผิด
้
พลาดในการรับ ข้อ มูล ด้ว ย ซึ่ง ผู้เ ขีย นโปรแกรม
จะต้อ งใช้ค ำา สั่ง throws IOException ต่อ จาก
64. สมาชิก
1.นายธาวิต ตั้งวิริยะ เลขที่ 8
2.นางสาวนุจรี บุญชูเชิด เลขที่ 25
3.นางสาวกนิษฐา เนตรสว่าง เลขที่ 28
4.นางสาวทิพย์วรรณ เชื้อวงษ์ เลขที่ 29
5.นางสาวมนัสนันต์ ทับทิมใส เลขที่ 31
6.นางสาวสุกานดา เฉินจุณวรรณ เลขที่ 32