Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
บทที่ 4
การเขียนคำาสั่ง
ควบคุม
แบบวนซำ้า
นิพจน์ทาง
คณิตศาสตร์
   ทางคณิตศาสตร์นั้นเป็นนิพจน์ที่ใช้ในการคำานวณ 
ซึ่งนิพจน์ทางคณิตศาสตร์นั้นจะมีรูปแบบเหมือนกับ
สมการคณิตศาสตร์  แต่จะประกอบไปด้วย  ค่าคงที่
หรือตัวแปร  ซึ่งเรียกอีกอย่างว่า  “ตัวถูกดำาเนินการ” 
(Operand)  แล้วเชื่อมกันด้วยเครื่องหมายทาง
คณิตศาสตร์  หรือเรียกอีกอย่างว่า  ตัวดำาเนินการ 
(Operator)  นั่นเอง
รูปแบบ
[ตัวถูกดำาเนินการตัวแรก]  [ตัวดำาเนินการ]  [ตัว
ถูกดำาเนินการตัวที่สอง]
ตัวอย่าง
A+B
ตัวดำาเนินการทางคณิตศาสตร์ 
ตัวดำาเนินการทางคณิตศาสตร์ของภาษา Cมีดังนี้
ตารางที่4.1แสดงตัวดำาเนินการทางคณิตศาสตร์
ตัวดำาเนินการ ความหมาย
+
-
*
/
%
++
--
บวก
ลบ
คูณ
หาร
หารเอาเศษหรือ Modulus
เพิ่มค่าครั้งละ 1
ลดค่าครั้งละ 1
การสร้างนิพจน์ทางคณิตศาสตร์ ถ้าเป็นนิพจน์ที่มีตัวถูกดำาเนินการเพียง2ตัวจะไม่มีปัญหาอะไรแต่ถ้าเกิดมีตัวถูก
ดำาเนินการมากกว่า 2ตัวขึ้นไปผู้ใช้จะต้องคำานึงถึงลำาดับความสำาคัญของตัวดำาเนินการด้วย มิฉะนั้นอาจจะได้ผลลัพธ์ที่ไม่ตรงตาม
ความต้องการได้
ตัวอย่างการดำาเนินการทาง
คณิตศาสตร์ 
 ผู้ใช้ต้องการให้เอา  2  บวกกับ  3  แล้วนำาไปคูณด้วย  5 
ซึ่งคำาตอบที่ผู้ใช้ต้องการ  คือ  25  แต่ถ้าผู้ใช้เขียนนิพจน์
เป็น
2 + 3 * 5
ผลลัพธ์ที่ได้จะเท่ากับ  17  เพราะภาษา C จะคิดตาม
ลำาดับความสำาคัญของตัวดำาเนินการ  (Precedence) 
ดังนี้  เอา  3  คูณกับ  5  ได้  15  แล้วนำาไปบวกกับ  2 
ได้  17  ซึ่งเป็นคำาตอบที่ไม่ตรงตามความต้องการ  เพราะ
ฉะนั้นผู้ใช้จึงต้องระวังเรื่องนี้อย่างมาก  วิธีการแก้ไขก็
สามารถทำาได้โดยการใช้วงเล็บเข้ามาช่วย  ซึ่งวงเล็บจะมี
ลำาดับความสำาคัญสูงที่สุด  และเมื่อลำาดับความสำาคัญเท่า
กัน  ให้ดูในตารางโดยเรียงจากซ้ายไปขวา  ซึ่งถ้ามีหลาย
วงเล็บซ้อนกัน  ภาษา C จะคิดจากวงเล็บในออกมา  ดังนั้น
ถ้าตัวอย่างด้านบนจะเขียนนิพจน์ให้ได้ผลลัพธ์ตาม
ต้องการ  จะต้องเขียนดังนี้
ตารางลำาดับความสำาคัญของตัว
ดำาเนินการทางคณิตศาสตร์
ตัวดำาเนินการ ลำาดับความสำาคัญ
++ , -- 16
- (เครื่องหมายลบหน้า
ตัวเลข)
15
* , / ,% 13
+ , - 12
 ตัวอย่างนิพจน์ทาง
คณิตศาสตร์  และวิธีการ
คำานวณ
นิพจน์ วิธีการคำานวณ
10/2*3 เอา 10 หาร 2 ได้ 5 แล้วคูณด้วย
3 จะได้ผลลัพธ์ 15
12*2+(2*6) เอา 2 คูณ 6 ได้ 12 มาคูณ 2 ได้
24 จากนั้นนำา 24มาบวก 12 จะได้
ผลลัพธ์ 36
ตัวดำาเนินการในการกำาหนดค่า
ตัวดำาเนินการที่ใช้ในการกำาหนดค่านั้นจะเป็น
เครื่องหมาย = การทำางานของตัวดำาเนินการนี้จะ
ทำาการนำาค่าที่อยู่ทางด้านขวาของตัวดำาเนินการ
ไป เก็บไว้ในตัวแปรทางด้านซ้ายของตัวดำาเนิน
การสิ่งที่อยู่ด้านขวาของตัวดำาเนิน การนั้นอาจจะ
เป็นนิพจน์ทางคณิตศาสตร์  หรือจะเป็นตัวแปร
ก็ได้
รูปแบบ
[ตัวแปร] = [นิพจน์]
Simple  Assignments (การกำาหนดค่าแบบ
ง่าย)
Simple  Assignments  จะมีรูปแบบเหมือนกับ
วอย่าง
A=2
um=2+A
um=(2*5)+6
วอย่าง SimpleAssignments
ค่าของx ค่าของy นิพจน์ ค่าของนิพจน์ ผลลัพธ์ของนิพจน์
10 5 x=y+2 7 x=7
10 5 x=x/y 2 x=2
10 5 x=y%4 1 x=1
ตัวอย่าง
A = 2
Sum = 2+A
Sum = (2*5) +6
ตัวอย่าง Simple
Assignments
 โปรแกรมภาษาซี  การกำาหนดให้กับ
ตัวแปรในลักษณะต่าง ๆ
ตาราง ความหมายของตัวดำาเนิน
การ
นิพจน์แบบCompound เทียบเท่ากับนิพจน์แบบSimple
x*=y x=x*y
X/=y X=x/y
X%=y X=x%y
X+=y X=x+y
X-=y X=x-y
โปรแกรมภาษาซี  ผลของตัวดำาเนินการแบบ
 ผสม
ตัวดำาเนินการ  ++  และ  --
ตัวดำาเนินการ  ++  จะทำาการเพิ่มค่าของ
ตัวแปรอีก  1  ส่วน  --  นั้นจะทำาการลดค่าของ
ตัวแปรลง  1  ซึ่งการสร้างนิพจน์ด้วยตัวดำาเนิน
การ  2  ตัวนี้  จะมี  2  แบบ  คือ
1.แบบ  POSTFIX
รูปแบบ
[ตัวแปร] [ตัวดำาเนินการ]
ตัวอย่าง
A ++
A –
ขั้นตอนการทำางานของนิพจน์แบบ POSTFIX
1.ให้x=a
2.จากนั้นจะทำาการa=a+1
หรือเมื่อนิพจน์เป็นy=b-- จะมีขั้นตอนการทำาการ ดังนี้
1.ให้y=b
2.จากนั้นจะทำาการ b=b–1
ค่าของaตอนแรก นิพจน์ ผลลัพธ์ของนิพจน์ ค่าของaตอนหลัง
10 a++ 10 11
10 a-- 10 9
2.แบบ  PREFIX
 รูปแบบ
[ตัวดำาเนินการ] [ตัวแปร]
ตัวอย่าง
++a
--a
ขั้นตอนการทำางานของนิพจน์แบบPrefixเมื่อนิพจน์x=++a
1. จากนั้นจะทำาการ a=a+1
2. ให้x=a
หรือ เมื่อนิพจน์เป็นy=--bจะมีขั้นตอนการทำาการ ดังนี้
1. จากนั้นจะทำาการ b=b-1
2. ให้y=b
ค่าของaตอนแรก นิพจน์ ผลลัพธ์ของนิพจน์ ค่าของaตอนหลัง
10 ++a 11 11
10 --a 9 9
โปรแกรมภาษาซีแสดงผลของตัว
ดำาเนินการ++ในแบบ PREFIX
คำาสั่งควบคุมแบบวนซำ้า
• การวนซำ้า (LOOP) หมายถึง การ
กำาหนดเงื่อนไขเพื่อให้โปรแกรมทำางานใน
STATEMENT เดิมมากกว่า 1ครั้ง โดย
จำานวนครั้งของการ
ทำางานจะเป็นไปตามเงื่อนไขที่กำาหนดไว้
• คำาสั่งแบบวนซำ้ามี 3ประเภท ดังนี้
– คำาสั่งวนซำ้าแบบ FOR
– คำาสั่งวนซำ้าแบบ WHILE
– คำาสั่งวนซำ้าแบบ DO...WHILE
 
คำำสั่ง
FOR
  for  เป็นคำำสั่งที่สั่งให้โปแกรมมีกำรทำำงำนซำ้ำ ๆ
 วนลูปจนกว่ำเงื่อนไขที่กำำหนดไว้เป็นเท็จ จึงออกจำก
 คำำสั่ง for     ไปทำำคำำสั่งถัดไป ควรใช้คำำสั่ง for  ใน
กรณีที่ทรำบจำำนวนรอบของกำรทำำงำน
  รูปแบบกำรใช้คำำสั่ง for
 for  (expression1; expression2;
expression3) 
       statement;
หรือ
for  (expression1; expression2;
expression3)
{
      statement(s);
}
ลักษณะกำรทำำงำนของคำำ
 สั่ง for
รูปแบบทั่วไป
for(นิพจน์ที่1; นิพจน์ที่2; นิพจน์ที่3)
{
คำำสั่งวนรอบ;
…….
}
เป็นคำำสั่งที่ใช้ในกำรควบคุมให้มีกำรวนรอบคำำสั่งหลำยๆรอบโดย
นิพจน์ที1คือกำรกำำหนดค่ำเริ่มต้นให้กับตัวแปรที่ใช้ในกำรวนรอบ
นิพจน์ที่2เป็นกำรเปรียบเทียบก่อนที่จะวนรอบถ้ำเงื่อนไขของนิพจน์เป็นจริงจะมีกำรทำำงำนตำมคำำสั่งวนรอบ
นิพจน์ที่3เป็นคำำสั่งในกำรกำำหนดค่ำที่จะเปลี่ยนแปลงไปในแต่ละรอบ
ตัวอย่ำง โปรแกรม for1.c
#include<stdio.h>
#include<conio.h>
intcounter;
charword[20]="Bodindecha";
main()
{
clrscr();
for(counter=5;counter<=10;counter=counter+1)
printf("countert=t%2dtmyschoolist%sn",counter,word);
}
 กำรทำำซำ้ำแบบ WHILE
while เป็นคำำสั่งให้มีกำรทำำซำ้ำเป็นรอบ ๆ (loop)
ลักษณะกำรทำำงำนทำำนองเดียวกับคำำสั่ง for แต่
ต่ำงกันตรงที่ไม่ทรำบจำำนวนรอบที่แน่นอน แต่ต้อง
มีเงื่อนไขที่เป็นเท็จจึงจะออกจำกคำำสั่ง while ได้มิ
ฉะนั้นจะมีปัญหำที่โปรแกรมทำำงำนแบบวนซำ้ำแบบ
ไม่มีที่สิ้นสุด (endless loop)
 กำรทำำซำ้ำแบบ while อำจเขียนผังงำน ดังรูป
ลักษณะกำรทำำงำนของคำำสั่ง
while
คำำสั่ง WHILE มีรูปแบบ ดังนี้
while(นิพจน์ทดสอบเงื่อนไข)statement; หรือwhile(นิพจน์ทดสอบเงื่อนไข)
{
คำำสั่งที่1;
คำำสั่งที่2;
...
คำำสั่งสุดท้ำย;
}
โดย whileจะทำำกำรทำำซำ้ำต่อไปเมื่อนิพจน์ทดสอบเงื่อนไขให้ผลลัพธ์เป็นจริงและทำำต่อจนกระทั่งผลลัพธ์ของนิพจน์
ทดสอบเงื่อนไขเป็นเท็จ
คำำสั่งทำำซำ้ำหรือวนรอบ DO -
WHILE
do while เป็นคำำสั่งให้มีกำรทำำซำ้ำเป็นรอบ ๆ
(loop) ลักษณะกำรทำำงำนทำำนองเดียวกับคำำสั่ง
while แต่ต่ำงกันตรงที่คำำสั่งนี้จะมีกำรทำำงำนตำมคำำสั่ง
ไป 1 รอบ ก่อนที่จะทดสอบเงื่อนไข ถ้ำเงื่อนไขที่เป็น
จริงจะทำำงำนต่อไป ถ้ำเงื่อนไขเป็นเท็จจึงจะออกจำก
คำำสั่ง do while คำำสั่งนี้ก็เช่นเดียวกันจะต้องกำำหนด
ให้มีโอกำสที่เงื่อนไขเป็นเท็จได้ มิฉะนั้นจะมีปัญหำที่
โปรแกรมทำำงำนแบบวนซำ้ำแบบไม่มีที่สิ้นสุด (endless
loop) กรณีที่เงื่อนไขเป็นเท็จเพียงอย่ำงเดียวจะมีกำร
ทำำงำน 1 รอบ ก่อนออกจำกกำรทำำซำ้ำ
ลักษณะการทำางานของคำาสั่ง do-
while
  กรณีศึกษา การใช้คำาสั่งควบคุมวนซำ้า
การใช้คำาสั่ง while เพื่อวนคำานวณค่าสะสมตัวเลข
1 ถึง 10 และหาค่าเฉลี่ย แล้วแสดงผลออกจอภาพ
ผลลัพธ์ที่ได้จาก
โปรแกรม
คำาอธิบายโปรแกรม
        สามารถอธิบายการทำางานของโปรแกรมที่สำาคัญ
ๆ ได้ดังนี้
- บรรทัดที่ 8 คำาสั่ง while (n < 11) เพื่อควบคุมการทำางาน
ของโปรแกรมให้ทำางานซำ้า ๆ กัน โดยการทำางานของคำาสั่ง
while จะตรวจสอบเงื่อนไข n < 11 เป็นจริงหรือเท็จ ถ้า
เป็นจริงจะทำางานตามคำาสั่งที่อยู่ภายใน loop while คือ
บรรทัดที่ 10 และ 11 จากนั้นจะกลับมาตรวจสอบเงื่อนไข
- บรรทัดที่ 10 และ 11 เป็นคำาสั่งที่โปรแกรมจะทำางาน
ภายหลังจากตรวจสอบเงื่อนไข while แล้วเป็นจริง นั่น
คือ คำานวณค่าสะสมของตัวแปร sum และ เพิ่มค่า n ที
ละ 1 ตามลำาดับ
- บรรทัดที่ 13 ถึง 18 เป็นคำาสั่งที่โปรแกรมจะทำางานภาย
หลังจากตรวจสอบเงื่อนไข while แล้วเป็นเท็จ คือ ลด
ค่าตัวแปร n ลง 1 แล้วคำานวณค่าเฉลี่ยเก็บไว้ที่ตัวแปร
avg และพิมพ์ค่าตัวแปร n, sum และ avg แสดงที่
จอภาพ พร้อมกับพิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่
โปรแกรม สุดท้ายจะหยุดรอรับค่าใด ๆ จากคีย์บอร์ด
เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
แหล่งอ้างอิง
http://courseware.bodin.ac.th/computer/Advance
dLevel4/programming/C_language/4.htm
http://202.143.152.6/files/1106301616560373_12
01240883219.ppt
http://158.108.103.7:12222/~boonchoo/images/st
ories/resources/pp254/5_loop.pdf
 
 
รายชื่อสมาชิก กลุ่มที่ 4
 1.นางสาวปรียาภรณ์ แสงทวี เลขที่
14
 2.นางสาวตันหยง สุคนธา เลขที่
26
 3.นางสาวทัมรินทร์ ผูกสี เลขที่
27
 4.นางสาวรัตติกาล ขำาคม เลขที่
28
 5.นางสาวสโรชา มากระนิตย์ เลข
ที่ 33
 6.นางสาวจุฑารัตน์ ลิ้มทอว เลขที่
34
 ชั้นมัธยมศึกษาปีที่ 6/2
 เสนอ
 คุณครูทรงศักดิ์ โพธิ์เอี่ยม

More Related Content

กลุ่ม 4