Thursday, July 23, 2009

Computer Programming (C language) – Guide to Loop

เนื่องจากมีหลายคนชอบถามและมักจะงงกับการทำงานของ loop กันมาก โดยเฉพาะ loop ซ้อน loop เลยเขียนบทความนี้ขึ้นมา
- Loop เป็นฟังก์ชั่นที่มีประโยชน์มากในการคำนวณที่ต้องใช้สมการ
ซ้ำๆ เช่น while, for, do...while
- ส่วนประกอบสำคัญของ loop
1. initial
2. condition
3. increment or decrement
รูปแบบทั่วไปของ loop

for(initial;condition;increment or decrement){
statement
}

initial
while(condition){
statement
increment or decrement
}

initial
do{
statement
increment or decrement
}while(condition);

- วิธีการเขียนโปรแกรมโดยใช้ loop
1. เขียน flow chart ของโปรแกรม วิธีนี้จะทำให้เราเข้าใจได้เร็ว และผิดพลาดน้อย แต่ช้า เหมาะสำหรับผู้เริ่มต้น
2. คิดโปรแกรมที่จะเขียนแล้วเขียนในรูปของภาษาซีเลย วิธีนี้อาจจะยากสำหรับผู้เริ่มต้น และโปรแกรมที่ซับซ้อน
เมื่อเขียนโปรแกรมเสร็จแล้วควรเช็คว่าโปรแกรมเราถูกต้องหรือไม่ โดยการสมมติค่าขึ้นมาและไล่ทำตามคำสั่งที่เราเขียนทีละบรรทัดๆ การตรวจสอบแบบนี้ทำให้เราสังเกตเห็นข้อผิดพลาดของโปรแกรมได้ง่ายว่าขาดตกจุดไหน

โปรแกรมที่แนะนำในการฝึกเขียน
1. user ใส่เลข 3 ค่า จงแสดงผลค่าที่มากที่สุด
2. user ใส่เลข 3 ค่า จงแสดงผลการเรียงลำดับจากน้อยไปมาก
3. program คำนวณเลขยกกำลัง โดย user ใส่ทั้งเลขฐาน และเลขยกกำลัง เช่น
ใส่เลขฐาน 3 กับเลขยกกำลัง 4 โปรแกรมจะแสดงผล
81
4. (ยากมากๆ) program ที่สามารถบอกได้ว่าเลขจำนวนเต็มที่ user ใส่เข้าไป 1 จำนวนเป็นจำนวนเฉพาะหรือไม่ เช่น
ใส่เลข 5 แสดงผลว่า
5 เป็นจำนวนเฉพาะ // เพราะ 5 มีตัวประกอบเพียง 2 ตัว ได้แก่ 1 และ 5
ใส่เลข 12 แสดงผลว่า
12 ไม่เป็นจำนวนเฉพาะ //เพราะ 12 มีตัวประกอบ 1 2 3 4 6 12
5. (ยาก) user ใส่เลขจำนวนเต็ม ให้แสดงผลเป็นรูปปิรามิด เช่น
ใส่เลข 4 โปรแกรมจะแสดงผล
1
1 2
1 2 3
1 2 3 4
6. (ยาก) user ใส่เลขจำนวนเต็ม ให้แสดงผลเป็นรูปปิรามิด เช่น
ใส่เลข 4 โปรแกรมจะแสดงผล
1
2 1
3 2 1
4 3 2 1

แนะนำการเขียนแต่ละข้อ (บางข้ออาจทำได้หลายวิธี)
*****SPOILER ALERT***** (ลากแถบสีเพื่อดู)
1. ใช้ if + ระวังเรื่องตัวเลขซ้ำ 2 หรือ 3 ตัว เช่น ใส่ค่า 12 14 12 หรือ 6 6 6
2. ใช้ if ในการเปรียบเทียบทั้ง 3 ค่า
3. ใช้ loop function โดย condition เป็นเลขยกกำลัง
4. (ยากมากๆ) ใช้ if และ loop ซ้อน loop (มี initial เริ่มที่ 2 ถึง n-1 [n=เลขที่ user ใส่])
5. (ยาก) loop ซ้อน loop (loop นอกกำหนดว่ามีกี่บรรทัด ส่วน loop ในกำหนดว่าแต่ละบรรทัดให้แสดงผลเลขอะไรบ้าง)
สำหรับโปรแกรมในข้อ 5:
int x,i,j;
scanf("%d",&x);
for(i=1;i<=x;i++){
for(j=1;j<=i;j++)
printf("%d ",j);
printf("\n");
}
6. (ยาก) คล้ายข้อ 5 แต่เปลี่ยนตัวอะไรนิดหน่อย
สำหรับโปรแกรมในข้อ 6
int x,i,j;
scanf("%d",&x);
for(i=1;i<=x;i++){
for(j=1;j<=i;j++)
printf("%d ",j);
printf("\n");
}

*************** จบ Guide to Loop ***************

No comments:

Post a Comment