อยากจะบอกว่าในส่วนนี้เราจะทำการเรียนรู้เกี่ยวกับโครงสร้างของการโปรแกรมที่มีลักษณะเป็นแบบ
sequential lines นั่นคือ compiler จะทำงานโดยการเริ่มไล่จากบรรทัดบนสุดแล้วทำงานไล่ลงมาเป็นบรรทัดๆ
ไปเรื่อยๆจนจบโปรแกรม ซึ่งจะต่างจากการทำงานของการโปรแกรมแบบ OOP (object
oriented programming) ซึ่งในที่นี้เราจะไม่พูดถึง
ในการโปรแกรมนี้เราจำเป็นจะต้องรู้จัก
โครงสร้างของ loop หรือการวนซ้ำก่อน ถามว่าทำไมจะต้องมีการวนซ้ำ ก็เป็นเพราะในการโปรแกรมส่วนใหญ่นั้นการวนซ้ำหรือ
loop นี้มีความสำคัญหรือมีส่วนเกี่ยวข้องอยู่มาก เช่นหากเราต้องการจะ
ทำการบวกเลขตั้งแต่ 1 ถึง 100 หากเรามานั่งเขียนหรือตั้งตัวแปรแล้วค่อยๆมาบวกกันเป็นคู่ๆ
หรือบวกกันทีเดียวในบรรทัดเดียวก็อาจทำได้แต่มันก็ไม่สมควรหากเราต้องการบวกตัวเลขมากกว่า
100 เช่น 1000 เป็นต้น
ตัวอย่างที่ผิด เรากำหนดให้ n เป็นตัวแปรในการรับค่าคำตอบของการบวกกันของตัวเลข
ตั้งแต่ 1 ถึง 100 เราจึงเขียนเป็นว่า
n=1+2+3+4+5+6+7+8+9+10+11+12+...+96+97+98+99+100;
ในส่วนที่ละไว้นั้น
(... ) ในส่วนของการโปรแกรมเราจะต้องเขียนให้หมด ซึ่งถ้าเขียนหมดจริงๆ
ก็ตายกันพอดี
ดังนั้น การวนซ้ำจึงเข้ามามีบทบาทในการทำ ก็เลยจะขออธิบายโครงสร้างก่อนก็แล้วกัน
คำสั่ง for loop
for(ตัวนับ=
i;เงื่อนไขที่จะให้ยังทำงานอยู่ใน
loop;
การเพิ่มหรือการลดตัวนับ){
statement
;
}
ก่อนอื่นต้องขออธิบายก่อนว่านี่คือโครงสร้างของ
for loop โดยขอให้สังเกตบรรทัดแรกตรงที่มีคำสั่ง for แล้วให้ดูในวงเล็บ
ปรากฎว่าตามรูปแบบมาตรฐานนั้น ในส่วนของวงเล็บหลังคำว่า for จะประกอบไปด้วย
3 ส่วน ส่วนแรกก็คือ การกำหนดค่าเริ่มต้นให้กับตัวนับ อาจจะงงว่าตัวนับที่พูดถึงคืออะไร
ใน for loop นั้น จำเป็นจะต้องมีตัวนับอยู่ด้วยเสมอ ซึ่งตัวนับนี้ จะเป็นตัวบอกเราว่า
loop ของเรานั้นทำการวนซ้ำมาเป็นรอบที่เท่าไรแล้ว และในส่วนแรกนี้เราจำเป็นจะต้องมีการกำหนด
ค่าเริ่มต้นให้กับตัวนับก่อน ในส่วนที่สอง เงื่อนไขที่จะให้ยังทำงานอยู่ใน
loop นี้ โดยส่วนใหญ่จะเป็นการกำหนดว่าเมื่อตัวนับมีการวนซ้ำ ถึงจำนวนรอบเท่านั้นเท่านี้ก็จะให้หลุดจาก
loop ในส่วนที่สาม การเพิ่มหรือการลดตัวนับ ตรงนี้สำคัญ ซึ่งจะเป็นส่วนที่ทำให้
ตัวนับของเรามีการเพิ่มค่าหรือลดค่า ในแต่ละรอบของการวนซ้ำเช่นอาจเพิ่มทีละหนึ่ง
หรือ เพิ่มทีละ3 เป็นต้นหรืออาจจะลดทีละ 1 หรือลดทีละ 3 ก็แล้วแต่โปรแกรมจะกำหนด
หลังจากวงเล็บที่อยู่หลัง for ก็จะมีเครื่องหมาย ปีกกาเพื่อให้เข้าสู่ส่วนของคำสั่ง
ที่จะต้องทำหลังจากบรรทัด for ก็มาถึง statement ซึ่งจะเป็นส่วนที่ให้เราเขียนคำสั่งว่า
ในแต่ละรอบนั้น เราจะให้โปรแกรมทำงานอะไร ซึ่งก็อาจมีได้หลายคำสั่ง บรรทัดสุดท้ายก็คือ
ปีกกาปิดเพื่อจบโครงสร้าง for loop
ดูตัวอย่าง การบวกเลขตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i,ans;
ans=0;
for(i=1;i<=100;i++){
ans=ans+i;
}
printf("answer is %d",ans);
}
ในที่นี้เราทำการกำหนดให้ตัวแปร i เป็นตัวแปรนับ ส่วน ans เป็นตัวแปรที่ใช้เก็บค่าคำตอบ
ในบรรทัด for นั้นไม่มีปัญหาอะไรยกเว้น ที่เราเจอ i++ นั่นก็หมายถึง
i+1 นั่นเอง คือ ใน loop นี้เราจะทำการเพิ่มตัวนับ i ไปทีละ 1 สมมตินะครับสมมติ
ว่าหากเราต้องการจะ แสดงเฉพาะเลขคี่ที่อยู่ระหว่าง 1 ถึง 100 เราจะทำอย่างไร
ดูต่อครับ
ดูตัวอย่าง การแสดงเฉพาะเลขคี่ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
for(i=1;i<=100;i=i+2){
printf("Odd
number is %d\n",i);
}
}
นั่นคือเราก็วน loop เหมือนเดิมเพียงแต่ในแต่ละรอบนั้นเราทำการเพิ่มค่า
i ไปทีละ 2 ซึ่งเดิมค่า i มีค่าเท่ากับ 1 พอ compiler มา check ว่า 1<=100
นั้นจริงไหม ปรากฎว่าจริงก็ให้ทำงานใน loop ต่อ โดยมีการเพิ่มค่า i=i+2
นั่นหมายความว่าตอนนี้ i มีค่าเป็น 1+2 ก็คือ 3 นั่นเอง ในรอบต่อมาเราก็แสดงค่า
3 ทำเช่นนี้ไปเรื่อยๆ เราก็จะได้เฉพาะเลขคี่ 1,3,5,7,...,99
สมมตินะครับสมมติ ว่าหากเราต้องการจะ แสดงเฉพาะเลขคู่ที่อยู่ระหว่าง
1 ถึง 100 เราจะทำอย่างไร ดูต่อครับ
ดูตัวอย่าง การแสดงเฉพาะเลขคู่ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
for(i=2;i<=100;i=i+2){
printf("Odd
number is %d\n",i);
}
}
เช่นเคยครับไม่ค่อยแตกต่างอะไรกับการ แสดงเฉพาะเลขคี่ แต่จะต่างกันตรงการเริ่มต้นค่าให้กับตัวนับครับ
นั่นคือเราทำการเริ่มต้นค่า ตัวนับด้วย 2 นั่นคือตัวแปร i จะมีค่าเริ่มต้นเป็น
2 ในการวน loop รอบแรกครับจากนั้นก็เหมือนเดิมในแต่ละรอบ ค่า i จะถูกเพิ่มทีละ
2 ครับ ดังนั้นสุดท้ายเราก็จะได้ 2,4,6,8,10,...,100 ไปตามระเบียบ
และหากเราต้องการจะแสดงเฉพาะเลขคู่นี่แหละแต่ต้องการให้ แสดง ถอยหลัง
คือ แสดง 100,98,96,94,...,8,6,4,2 จะทำได้อย่างไร
ดูตัวอย่าง
การแสดงเฉพาะเลขคู่(ถอยหลัง)ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
for(i=100;i>=1;i=i-2){
printf("Odd
number is %d\n",i);
}
}
นั่นคือในบรรทัด for เรากำหนดค่าเริ่มต้นเป็น 100 ที่สำคัญคือเงื่อนไขเดิมเรากำหนดเป็น
น้อยกว่าเท่ากับ แต่ในที่นี้เรากำหนดเป็นว่า i มากกว่าเท่า 1 loop จึงจะยังทำงานต่อ
และที่สำคัญเช่นเดียวกันคือเราทำการลดค่า i ไปทีละ 2 ครับ เท่านี้เราก็จะได้
ค่า 100,98,96,...,4,2 แล้วครับ ขอให้ลองไล่โปรแกรมดูสักนิด แล้วก็จะเข้าใจโดยกระจ่างเองครับ
คำสั่ง
while loop
มีอีกหนึ่งโครงสร้างที่มีลักษณะคล้ายกับ
for loop ที่อธิบายมาข้างต้น นั่นก็คือ while loop ก่อนอื่นต้องขอบอกถึง
ความแตกต่าง ที่เห็นได้ชัดเจนระหว่าง for loop กับ while loop เสียก่อน
นั่นคือ เราจะเห็นได้ว่า for loop นั้น เราจะมีการบอกถึง ค่าเริ่มต้น
ค่าสิ้นสุด ของตัววิ่ง(จากข้างต้นก็คือตัว i นั่นเอง) แต่ while loop
นั้นจะบอกแค่เงื่อนไขการจบเท่านั้น ซึ่งถ้าใน for loop นั้น เงื่อนไขการจบก็คือ
การที่ตัววิ่ง วิ่งถึงค่าสิ้นสุด ก็จะหลุดออกจาก loop for แต่ while
loop ก็มีลักษณะคล้ายกันแต่อาจจะไม่เหมือนกัน สักทีเดียว ลองมาดูกัน
while ( เงื่อนไขที่ทำให้ยังต้องเข้าไปใน loop ) {
statement ;
}
เรามักจะแปลได้ว่า "ขณะที่(.....เงื่อนไข......ยังเป็นจริงอยู่) ก็เข้าไปทำคำสั่งหลังเครื่องหมาย { "
ต่อไปนี้จะขอสร้างตัวอย่างขยายข้อความข้างบนหน่อย โดยเราจะสั่งให้มีการบวกเลขตั้งแต่ 1-100 เหมือนตัวอย่างใน for loop นั่นแหละ(มันเป็นตัวอย่างเอาไว้หากิน!!!)
#include<stdio.h>
main()
{
int i , ans;
i=1; /* initial variable */
ans=0;
while ( i <= 100 ) {
ans = ans + i ;
i=i+1; /* increase variable */
}
printf("answer is %d",ans);
}
จากตัวอย่างนี้ สิ่งที่สำคัญที่สุด ก็คือ การกำหนดค่าเริ่มต้นให้กับตัวแปร i , ans อันนี้สำคัญมากเราจะต้องกำหนดไว้เสมอ หากเราไม่กำหนดไว้ตั้งแต่เริ่มต้น โปรแกรมจะไปหยิบค่าอะไรก็ไม่รู้จากใน memory มาเก็บไว้ในตัวแปร i และ ans ซึ่งจะทำให้โปรแกรมของเราผิดพลาดทันที ส่วนใน while loop นั้นอธิบายได้ง่ายๆ ว่า ขณะที่ i ยังน้อยกว่าหรือเท่ากับ 100 อยู่ ก็ให้ทำคำสั่งหลังเครื่องหมาย { นั่นก็คือ ans=ans+i และจุดที่สำคัญอีกจุดหนึ่ง ไม่แพ้การ กำหนดค่าเริ่มต้นให้กับตัวแปร นั่นก็คือ บรรทัด i=i+1 ซึ่งเป็นการบอกว่าให้เพิ่มค่า i ไปทีละ 1 ในทุกๆรอบ หากขาดบรรทัดนี้ไป loop ของเรา จะวิ่งไม่หยุดหรือที่เรียกกันว่า infinite loop นั่นเอง เพราะหากเราไม่เพิ่มค่า i แล้ว ค่า i ตลอดโปรแกรมก็จะยังคงเท่ากับ 1เหมือนที่เรากำหนดไว้ตอนเริ่มต้น ดังนั้นเมื่อ compiler มาตรวจดูเงื่อนไขของ while loop ก็พบว่า ยังเป็นจริงอยู่ นั่นก็คือ 1 ยังคงน้อยกว่าหรือเท่ากับ 100 อยู่วันยังค่ำ นั่นก็คือ loop นี้จะวิ่งไปเรื่อยๆ ไม่มีวันหยุดนั่นเอง ถึงตอนนี้ขอให้ลองเปรียบเทียบตัวอย่างนี้กับตัวอย่างที่เป็น for loop ดูสิว่ามีอะไรแตกต่างกันบ้าง
่ก่อนจะสรุปอะไรไปมากกว่านี้ ต้องบอกเลยว่า ทั้ง for loop และ while loop นั้นมีความคล้ายคลึงกันมากๆๆๆ หรืออาจจะมองเป็นสิ่งเดียวกันก็ได้ หรืออาจจะมองเป็นคนละสิ่งก็ได้ แล้วแต่ว่าเราจะกำหนดให้มันทำงานอย่างไรมากกว่า เหมือนกันอย่างไร นั่นคือ ใน for loop นั้นซึ่งมีโครงสร้างบรรทัดแรกดังนี้
for(ตัวนับ= i; เงื่อนไขที่จะให้ยังทำงานอยู่ใน loop; การเพิ่มหรือการลดตัวนับ){
เราจะพบว่าจะต้องมีการกำหนดค่าเริ่มต้นให้กับตัวนับหรือตัววิ่งนั่นเอง ซึ่งพบว่าใน while loop ข้างต้นเราก็ต้องกำหนดค่าเริ่มต้นให้กับ i ตอนก่อนเข้า loop เหมือนกัน และใน for loop ก็มีการกำหนดเงื่อนไขที่จะยังให้ทำงานอยู่ใน loop ซึ่งใน while loop ก็มีเช่นเดียวกัน ตรงข้อความหลัง while และในส่วนสุดท้ายของ for loop ซึ่งมีการกำหนดให้ เพิ่มตัวนับหรือลดตัวนับ ซึ่งก็ถือเป็นส่วนสำคัญของ while loop เช่นเดียวกันนั่นคือ บรรทัด i=i+1 จากบรรทัดข้างต้นนั่นเอง ต่อไปจะขอแปลงตัวอย่างทั้งหมดจาก for loop มาเป็น while loop ให้ดูกัน แล้วลองเปรียบเทียบกันเองนะครับว่าเหมือนหรือแตกต่างกันอย่างไร
ดูตัวอย่าง การแสดงเฉพาะเลขคี่ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
i=1;
while(i<=100){
printf("Odd number is %d\n",i);
i=i+2;
}
}
ดูตัวอย่าง การแสดงเฉพาะเลขคู่ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
i=2;
while(i<=100){
printf("Odd number is %d\n",i);
i=i+2;
}
}
ดูตัวอย่าง การแสดงเฉพาะเลขคู่(ถอยหลัง)ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
i=100;
while (i>=1){
printf("Odd number is %d\n",i);
i=i-2;
}
} ประโยคเงื่อนไข (Condition statement)
สำหรับประโยคเงื่อนไขนะครับ หลายคนอาจจะสงสัยว่า จะต้องใช้เมื่อไหร่ และจะใช้อย่างไร ก็คงจะตอบได้ว่า ประโยคเงื่อนไขนั้นเราจะใช้เมื่อเราต้องการจะตัดสินใจอะไรบางอย่างเช่นคำพูดที่เราพูดกันเรื่อยๆว่า ถ้าเป็นอย่างนี้แล้วให้เป็นอย่างนั้น ถ้า คำพูดของเขาเป็นความจริง แล้ว ฉันก็จะไปกับเขา ไม่เช่นนั้น ฉันก็จะไม่ไป จากประโยคที่ให้มานี้ เราจะพบว่าเงื่อนไขที่จะบอกว่า ฉันจะไปกับเขา หรือไม่ไปนั้น มันขึ้นกับว่า คำพูดของเขา จริงหรือเท็จ นั่นเอง ดังนัเน เงื่อนไขของข้อความนี้ก็คือ คำพูดของเขาเป็นความจริง ถ้าลองเขียนเป็นรูปแบบภาษาซีที่เกี่ยวข้องกับการตัดสินใจ ก็จะเขียนได้ว่า
if (คำพูดของเขาเป็นความจริง){
ฉันก็จะไปกับเขา
}else{
ฉันก็จะไม่ไป
}
เราลองมาดูอีกตัวอย่างให้ชัดๆไปเลย เช่น ถ้าเรามีเงินมากกว่า 100 บาท เราจะซื้อของขวัญ A แต่ถ้าน้อยกว่าเราก็จะซื้อของขวัญ B เราสามารถเขียนให้อยู่ในรูปภาษาซีได้ดังนี้
if ( เงินที่มี > 100 ){
ซื้อของขวัญ A
}else{
ซื้อของขวัญ B
}
ดังนั้นจะขอสรุปเกี่ยวกับโครงสร้าง if-then-else ได้ดังนี้นะครับ
โครงสร้างที่ 1 if-then มีรูปแบบดังต่อไปนี้
if( เงื่อนไขเป็นจริง ){
statement;
}
นั่นคือถ้าเงื่อนไขเป็นจริง ก็จะมาทำคำสั่งที่ statement; ถ้าเงื่อนไขนั้นไม่จริง ก็ไม่ต้องทำอะไร
โครงสร้างที่ 2 if-then-else มีรูปแบบดังต่อไปนี้
if( เงื่อนไขเป็นจริง ){
statement1;
}else{
statement2;
}
นั่นคือถ้าเงื่อนไขเป็นจริง ก็จะมาทำคำสั่งที่ statement1; ถ้าเงื่อนไขนั้นไม่จริง ก็จะมาทำ statement2; โครงสร้างที่ 3 if-then-elseif- มีรูปแบบดังต่อไปนี้
if( เงื่อนไขที่หนึ่งเป็นจริง){
statement1;
}elseif( เงื่อนไขที่สองเป็นจริง ){
statement2;
}else{
statement3;
}
นั่นคือถ้าเงื่อนไขที่หนึ่งเป็นจริง ก็จะมาทำคำสั่งที่ statement; แต่ถ้าไม่จริงให้มาตรวจสอบเงื่อนไขที่สอง
ถ้าเงื่อนไขที่สองเป็นจริงให้ทำคำสั่ง statement2 แต่ถ้าไม่จริงให้หลุดมาทำ statement 3 ลองมาดูตัวอย่างกันสักหน่อย
หากเราตรวจการดูค่าตัวแปร x ว่า ถ้า x มีค่าน้อยกว่า 100 ให้พิมพ์คำว่า Less than 100 ถ้า x ไม่น้อยกว่า 100 ให้พิมพ์คำว่า Not less than 100 เราสามารถเขียนโปรแกรมได้ดังนี้
#include<stdio.h>
main(){
int x=50;
if (x<100){
printf("Less than 100 \n");
}else{
printf("Not less than 100 \n");
}
}
จากโค้ดข้างต้นนี้ เรากำหนดให้ x เป็นจำนวนเต็มมีค่าเท่ากับ 50 จากนั้นเรานำค่า x มาตรวจสอบเงื่อนไขว่า ถ้า x<100 ซึ่งเป็นความจริงเพราะ 50<100 ดังนั้นเงื่อนไขนี้เป็นจริง จึงมาทำคำสั่ง printf("Less than 100\n"); แต่หากเรากำหนดให้ x=200 แทนที่จะเป็น 50 เราก็จะพบว่า เงื่อนไข x<100 นั้นไม่เป็นจริง โปรแกรมจึงข้ามมาทำที่ขั้นตอนถัดไปคือ ไปที่ else และที่ else นี้ไม่มีเงื่อนไขใดๆในการตรวจสอบจึง พิมพ์ข้อความ Not less than 100 ออกทางหน้าจอ
จากข้างต้นเราได้ข้อสังเกตว่า ถ้าเงื่อนไขแรกเป็นจริงแล้ว โปรแกรมจะทำข้อความที่อยู่ในเครื่องหมายปีกกาที่ติดกับเงื่อนไขนั้น และก็จะหลุดออกจาก โครงสร้าง if นั้นไปทันที เช่น #include<stdio.h>
main(){
int x=100;
if(x>50){
printf("More than 50\n");
}elseif(x>80){
printf("More than 80\n");
}else{
printf("More than 50 and 80\n");
}
}
จากโปรแกรมนี้ผลที่ได้ปรากฎว่ามันจะพิมพ์เพียงข้อความเดียวคือ More than 50 ทั้งนี้เนื่องจากเมื่อเรากำหนดเงื่อนไขว่า x=100 และพอโปรแกรมตรวจสอบในเงื่อนไขแรกคือ x>50 ซึ่งเป็นจริง โปรแกรมจะมาทำข้อความภายในเครื่องหมาย {} ที่ติดกับเงื่อนไขเท่านั้น และจากนั้นจะหลุดออกจากโครงสร้าง if ไปเลย
แต่ถ้าลองมาดูโปรแกรมอีกโปรแกรมดังต่อไปนี้
#include<stdio.h>
main(){
int x=100;
if(x<70){
printf("Less than 70\n");
}elseif(x<110){
printf("Less than 110\n");
}else{
printf("More than 110");
}
}
ซึ่งเมื่อรันโปรแกรมข้างต้น เรากำหนดค่า 100 ให้กับตัวแปร x จากนั้นโปรแกรมจะทำการตรวจสอบในเงื่อนไขแรกตามลำดับ พบว่า x<70 นั้นไม่จริง โปรแกรมจึงเข้ามาตรวจที่เงื่อนไขที่สองคือ x<110 ปรากฎว่าเงื่อนไขนี้เป็นจริงนั้นคือ 100<110 ทำให้โปรแกรมมาทำ statement ที่อยู่ในเครื่องหมายปีกกากับเงื่อนไขที่มันเป็นจริง นั่นคือ โปรแกรมจะพิมพ์คำว่า Less than 110 จากนั้นโปรแกรมก็จะหลุดออกจาก โครงสร้าง if ทันที
อีกตัวอย่างที่น่าติดตามก็คือ การตรวจสอบว่าค่าที่กำหนดให้มีค่าอยู่ระหว่างค่าที่เรากำหนดหรือไม่ เช่น การตรวจสอบว่า x ที่เรากำหนดนั้นมีค่าอยู่ระหว่าง 50 ถึง 100 หรือไม่ การเขียนเงื่อนไขในการตรวจสอบสามารถทำได้ดังนี้
#include<stdio.h>
main(){
int x=70;
if( x>50 && x<100 ){
printf("TRUE\n");
}else{
printf("FALSE\n");
}
}
จากโปรแกรมนี้เรากำหนดค่า x=70 จากที่เราทราบแล้วว่า ถ้าเงื่อนไขใน if (..................) เป็นจริงเท่านั้นจึงจะทำคำสั่งที่อยู่ติดกับเงื่อนไขนั้น ในที่นี้เราพบว่าเงื่อนไขเรามีอยู่สองเงื่อนไขนั้นคือ x>50 และ x<100 โดยเราทำการเชื่อมเงื่อนไขทั้งสองด้วย && (and) นั่นหมายความว่า เงื่อนไข x>50 ต้องจริง และ เงื่อนไข x<100 ก็ต้องจริง เท่านั้นจึงจะทำ statement printf("TRUE\n"); แต่ถ้าเราเชื่อมเงื่อนไขสองเงื่อนไขด้วย || (หรือ) นั่นหมายความว่าเมื่อมีสองเงื่อนไข เงื่อนไขหนึ่งในสองเงื่อนไขนั้นเป็นจริง ประโยคเงื่อยไขนั้นก็จะเป็นจริง เช่น
#include<stdio.h>
main(){
int x=100;
if(x>50 || x>150){
printf("TRUE\n");
}else{
printf("FALSE\n");
}
}
จากโปรแกรมนี้เรากำหนดค่า x=100 ให้กับตัวแปร x และเงื่อนไขในโครงสร้าง if มี สองเงื่อนไขคือ x>50 หรือ x>150 นั่นหมายความว่า ถ้าเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริงก็จะถือว่าเงื่อนไขทั้งหมดเป็นจริง ในโปรแกรมนี้ 100>50 นั่นหมายความว่าเงื่อนไขแรกเป็นจริง แต่เงื่อนไขที่สองคือ 100>150 อันนี้ไม่จริง แต่เนื่องจากเราเชื่อมสองเงื่อนไขด้วยสัญลักษณ์ || (หรือ) จึงทำให้เงื่อนไขทั้งหมดเป็นจริง โปรแกรมนี้จึงพิมพ์คำว่า TRUE ตัวอย่างสุดท้าย ปิดท้ายโครงสร้าง if นี้คือโปรแกรมตัดเกรด โปรแกรมยอดนิยมในการเขียนโครงสร้าง if นั่นคือ หากเรากำหนดกฎเกณฑ์ในการตัดเกรดดังนี้คือ คะแนน | เกรด | 80-100 | A | 70-79 | B | 60-69 | C | 50-59 | D | น้อยกว่า 50 | F |
นั่นหมายความว่าถ้าคะแนนของเราตกลงในช่วงคะแนนใด เราก็จะได้เกรดนั้น หากเรากำหนดให้ตัวแปร x เป็นคะแนนที่เราได้ โปรแกรมจะสามารถเขียนได้ดังนี้ #include<stdio.h>
main(){
int x=74;
if(x>=80 && x<=100){
printf("Grade is A\n");
}elseif(x>=70 && x<=79){
printf("Grade is B\n");
}elseif(x>=60 && x<=69){
printf("Grade is C\n");
}elseif(x>=50 && x<=59){
printf("Grade is D\n");
}else{
printf("Grade is F\n");
}
}
จากโปรแกรมข้างต้นนั้นเรากำหนดค่า 74ให้กับตัวแปร x สมมติเป็นคะแนนที่เราได้ จากนั้นโปรแกรมจะทำการตรวจสอบเงื่อนไขทีละเงื่อนไขจากบนลงล่างนั่นคือ x >=80 && x<=100 หมายความว่า x มีค่าตั้งแต่ 80 ถึง 100 จริงหรือไม่ ซึ่งปรากฎว่าไม่จริง จึงมาตรวจสอบเงื่อนไขที่สองคือ x >= 70 && x<=79 หมายความว่า x มีค่าตั้งแต่ 70 ถึง 79 จริงหรือไม่ ปรากฎว่าจริง เพราะ 74>=70 และ 74<=79 จริงทั้งสองเงื่อนไขทำให้เงื่อนไขนี้เป็นจริง ดังนั้นโปรแกรมจึงพิมพ์ค่า Grade is B ออกมาทางหน้าจอนั่นเอง
จากโปรแกรมนี้เราสังเกตได้ว่าหากเราพิมพ์ค่าอื่นๆที่นอกเหนือจาก 50 ถึง 100 โปรแกรมจะให้เกรด F ในทันที นั่นหมายความว่าหากเราพิมพ์คะแนนเป็น 101 ก็จะไม่ได้เกรด A แต่จะเป็นเกรด F แทนนั่นเองครับ
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น