หน้าเว็บ

แสดงบทความที่มีป้ายกำกับ ตัวอย่างโปรแกรม C แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ ตัวอย่างโปรแกรม C แสดงบทความทั้งหมด

วันเสาร์ที่ 4 มิถุนายน พ.ศ. 2554

ตัวอย่างโปรแกรม C - แม่สูตรคูณ

ความสามารถของโปรแกรมตัวนี้ คือ ต้องระบุแม่สูตรคูณให้อยู่ระหว่างแม่ 2 ถึงแม่ 12 เท่านั้น ถ้าอยู่ในช่วงแม่ 2 ถึง 12 ให้แสดงผลลัพธ์จากการคูณ แต่ถ้านอกเหนือจากที่กำหนดให้แสดงคำว่า “Out of range” แทน
เรามาพิจารณาทีละจุด ดังนี้
เมื่อพิจารณาดีๆ แล้วจะเห็นว่ามีการทำซ้ำหรือวนลูป (Loop) คือ การคูณกันของแม่สูตรคูณ ตั้งแต่ 1 – 12
การแสดงผล (Output) : แสดงผลลัพธ์จากการคูณกันของแม่สูตรคูณที่เรากำหนด
การนำข้อมูลเข้า (Input) : ตัวเลขแม่สูตรคูณที่เราต้องการ
การประมวลผล (Processing) :
  • ป้อนข้อมูลที่เป็นตัวเลขแม่สูตรที่เราต้องการ
  • ตรวจสอบตัวเลขแม่สูตรที่เราป้อนเข้ามาให้อยู่ในช่วงตัวเลข 2 – 12 เท่านั้น ถ้าไม่อยู่ในขอบเขตให้แสดงคำว่า “Out of range” ถ้าอยู่ในขอบเขตแสดงผลลัพธ์จากการคูณ
การกำหนดตัวแปร (Variable) :
  • num - ตัวเลขที่เป็นแม่สูตรคูณที่เราต้องการ
  • i - จำนวนครั้งในการคูณกันของแม่สูตรคูณ ตั้งแต่ 1 – 12
 Source Code:
int main( ) {
     int num, i;

     printf(“Enter number: ”);
     scanf(“%d”, &num);

     if ((num >= 2) && (num <= 12)) {
          for (i = 1; i <= 12; i++)
               printf(“%d x %d = %d\n”, num, i, (num*i));
     } else
          printf(“Out of range”);

     return 0;
}

วันพุธที่ 18 พฤษภาคม พ.ศ. 2554

ตัวอย่างโปรแกรม C - สร้างรูปสามเหลี่ยม

ตัวอย่าง 1:

*
* *
* * *
* * * *
* * * * *

เราพิจารณาจากรูป จะเห็นว่า เป็นรูปสามเหลี่ยมที่มีจุดเริ่มต้นอยู่ทางด้านซ้ายเป็นหลัก มีแถวทั้งหมด 5 แถว (rows) โดยแต่ละแถวจะแสดงเครื่องหมาย "*" ตามจำนวนของบรรทัดหรือแถวนั้นๆ เช่น แถวแรก จะแสดงเครื่องหมาย "*" ตัวเดียวเท่านั้น และถ้าเป็นแถวที่ 4 ก็จะแสดงเครื่องหมาย "*" 4 ตัวด้วยกัน เพราะฉะนั้นเราจะใช้ loop ในการทำงานทั้งหมด 2 loop ด้วยกัน โดยกำหนดให้ loop แรก ทำหน้าที่เป็นแถว และ loop ที่ 2 ทำหน้าที่แสดงเครื่องหมาย "*" เท่ากับจำนวนของแถวนั้นๆ (อธิบายก่อนหน้า)

Source Code:

int main ( ) {
     int r, c; // r - row, c - column

     for (r = 0; r < 5; r++) {
          for (c = 0; c <= r; c++) {
               printf("*");
          }
          printf("\n");
     }
     return 0;
}

จาก Source Code ที่เขียนมาได้ใช้ for loop ซึ่งง่ายและสะดวก แต่ถ้าต้องการใช้ loop อื่นก็สามารถทำได้นะครับ ลองนำไปประยุกต์ดูครับ

ตัวอย่าง 2:

* * * * *
* * * *
* * *
* *
*

เราพิจารณาจากรูป จะเห็นว่าเป็นรูปสามเหลี่ยมที่มีจุดเริ่มต้นอยู่ทางด้านซ้ายเป็นหลัก มีแถวทั้งหมด 5 แถว (rows) โดยแต่ละแถวจะแสดงเครื่องหมาย "*" เช่นกัน (คล้ายตัวอย่างที่ 1) ในการแสดงเครื่องหมาย "*" ของแถวแรกจะแสดงทั้งหมด 5 ตัวด้วยกัน และลดลงตามลำดับ เพราะฉะนั้นเราจะ loop ในการทำงานทั้งหมด 2 loop ด้วยกัน โดยกำหนดให้ loop แรก ทำหน้าที่เป็นแถว และ loop ที่ 2 ทำหน้าที่แสดงเครื่องหมาย "*"

Source Code:

int main( ) {
     int r, c; // r - row, c - column

     for (r = 0; r < 5; r++) {
          for (c = 0; c < 5-r; c++) {
               printf("*");
          }
          printf("\n");
     }
     return 0;
}

ถ้าพิจารณาจาก Source Code ที่เขียนจะเห็นว่ามีลักษณะคล้ายกัน ใช่ไหมครับ แต่สิ่งที่เปลี่ยน (แก้ไข) คือ c < 5-r ซึ่งเป็นเงื่อนไขในการตรวจสอบที่อยู่ใน loop ของ c และยังใช้ for loop ซึ่งง่ายและสะดวก แต่ถ้าต้องการใช้ loop อื่นก็สามารถทำได้นะครับ ลองนำไปประยุกต์ดูครับ แต่ถ้าเขียนอีกรูปแบบหนึ่งก็จะได้ผลลัพธ์เช่นเดียวกััน (เหมือนกัน)

Source Code:

int main ( ) {
     int r, c; // r - row, c - column

     for (r = 5; r > 0; r--) {
          for (c = 0; c < r; c++) {
               printf("*");
          }
          printf("\n");
     }
     return 0;
}

ถ้าพิจารณาจาก Source Code ที่เขียนจะเห็นว่ายังมีลักษณะคล้ายกัน แต่ปรับเปลี่ยนหลักการทำงานใหม่ คือ ให้ค่าเริ่มต้นของแถว จากเดิมเป็น 0 เปลี่ยนเป็น 5 ที่ loop ของ r และเป็นเงื่อนไขที่ loop ของ c ด้วย (สังเกตที่สีนะครับ)

สุดท้ายเป็นข้อคิดนะครับ:
จากตัวอย่างที่แสดงให้เห็นนั้นจะสังเกตได้ว่าแนวคิดจะเหมือนกัน (คล้ายกัน) เพียงแต่กระบวนการประมวลผลหรือการเปรียบเทียบเงื่อนไขอาจแตกต่างกัน แต่ผลลัพธ์ที่ได้จะเหมือนกัน เพราะฉะนั้น แนวคิดอาจจะเหมือนกัน แต่กระบวนการอาจจะไม่เหมือนกันก็ได้ครับ (ฝากให้คิด)