การเขยี นโปรแกรมด้วยภาษาซี by sunisa….
คาส่งั ในการทาซาชนดิ ตา่ งๆทใ่ี ชใ้ นการเขยี นโปรแกรมภาษาซี การทาซาลปู (Loop) หมายถึง การวนซา ซึง่ การวนซาในทาง ภาษาคอมพิวเตอร์ คอื การทาคาสัง่ หรอื ชุดคาสง่ั นนั ๆ ซากนั หลายๆครัง
รูปแบบของลปูในการตรวจสอบวา่ จะให้ลปู นนั จบการทางานเม่ือใดนนั จะมีรปู แบบของการตรวจสอบเง่อื นไข อยู่ 2 แบบ1.Pretest Loop 2. post-Test loop ลู ป ป ร ะ เ ภ ท นี จ ะ ท า ก า ร ต ร ว จ ส อ บ ลู ป ป ร ะ เ ภ ท นี จ ะ ท า ค า ส่ั ง ห รื อเงื่อนไขก่อนว่าเป็นจริง หรือเป็นเท็จถ้า ชุดคาส่ังก่อน เมื่อเสร็จแล้วถึงจะมาเป็นจริงก็ให้เข้าไปทาคาสั่งหรือชุดคาส่ง ตรวจสอบเงื่อนไขว่าเป็นจริงหรือเป็นต่อไป และเมื่อทาคาสั่งหรือชุดคาสั่งเสร็จ เท็จ ถ้าเป็นจริงก็จะกลับไปทาคาสั่งแล้วก็จะกลับมาทาการตรวจสอบเงื่อนไข หรือชุดคาส่ังเดิมอีกครังแลดะจะทาอีกครัง แลดะจะทาเช่นนีไปเร่ือยๆจนกว่า จนกว่าเงือ่ นไขจะเป็นเทจ็ เช่นเดียวกันเงื่อนไขจะเปน็ เท็จ กจ็ บการทางานของลปู
การกาหนดและปรบั ปรงุ ในการใช้คาสงั่ ลปู จะมกี ารกระทาทส่ี าคัญอยู่ 2 อย่าง โดยถ้าขาดอยา่ งใดอย่างหนง่ึ ก็จะทาใหล้ ปู นันไมท่ างาน หรือลูปทางานไมส่ นิ สุด1. การกาหนดค่า กอ่ นท่จี ะเริม่ ใชล้ ูปจะต้องมกี ารกาหนดค่าท่ใี ชเ้ ป็นตัว ควบคุมลูปก่อน ซ่งึ ตวั ควบคมุ นีจะทาหน้าที่ในการตรวจสอบว่าลปู นนั ได้ ทางานจนจบ2. การปรบั ปรุง หลงั จากทที่ าคาสั่งหรือชดุ คาสัง่ ไปแลว้ ไม่มกี ารปรบั ปรุ่งค่า ของตัวควบคุมลูปก็จะทาให้ลูปนันกลายเป็นลูปไม่มีวันจบได้ เฉพาะ ฉะนันจะต้องทาการปรับปรุงค่าของตัวควบลูปทุกครังเพ่ือจะให้นาค่า ของตวั ควบคุมไปตรวจสอบกบั เงื่อนไขเพอื่ จบการทางานของลูป
Pretest Loop Post-Test loop กาหนดค่า กาหนดค่าตรวจสอบ เทจ็ คาสัง่ 1 เง่อื นไข ปรบั ปรุงค่า จริง จรงิ ตรวจสอบคาส่งั 1 เงือ่ นไขปรับปรงุ ค่า เทจ็
คาส่งั วนลปู ในภาษาซีคาส่ังวนลปู ในภาษาซนี ันจะมี 3 คาส่งั คอื1. คาส่งั While2. คาส่ัง do….While3. คาส่ัง for
คาสง่ั ควบคุมการทางานแบบวนลปู ดว้ ย while() และdo/while() คาสง่ั วนลปู ด้วย while() ประโยคคาสง่ั while() จะมกี ารตรวจสอบเง่อื นไขก่อน ซ่ึงถ้าเง่ือนไขเป็นจริง จึงจะทาประโยคคาสั่งที่ต้องการ ทาซ้ํา และจะทาซํ้าไปเรื่อยๆ จนกว่าเง่ือนไขจะ เป็นเท็จ จึงจะออกจากการวนลูปหรือทาซํ้า โดยในแต่ละลูปของ การทางานจะ ตรวจสอบเง่อื นไขใหม่ทุกๆ ลูป
รปู แบบแบบคาสง่ั while(เง่ือนไข) { ประโยคคาสัง่ ท่ตี อ้ งการทาซา } ประโยคคาส่งั ถัดไป;หมายเหตุ กรณีท่ปี ระโยคคาสั่งหลงั เงื่อนไข มแี ค่ 1 ประโยคอาจไมต่ ้องใช้ เคร่อื งหมาย {} ครอบกไ็ ด้
ผงั งานแสดงการทางานของ while While จริง ประโยคคาส่งั ท่ีตอ้ งการให้ทาซา(เงื่อนไข) เท็จ
ตวั อยา่ งโปรแกรมท่ี 1 โปรแกรมแสดงผลตวั เลข 5 ตวั คือ 1 2 3 4 5 เม่อื ครบ 5 ก็หยุดโดยใช้ while() จากโจทย์ เง่ือนไขก็คอื ขณะที่ตัวเลขนอ้ ยกว่าหรือเทา่ กับ 5 ให้แสดงผล เมอื่ ตวั เลขมากกวา่ 5 ก็หยุด นามาเขียนผังงานได้ดงั นี start Num=1 โครงสร้างการ ทางานของ while() เทจ็ While(num <=5)end จริง num Num++
จากภาพผงั งาน เขยี นเปน็ โปรแกรมไดด้ งั นี#include <stdio.h>#include <conio.h>int main() โครงสร้างทาํ งาน{ ของ while() int num=1; while(num<=5){ num++; ผลลัพธ์จากการรันโปรแกรม printf(\"%d \",num); 1 2 3 4 5 Press any key to continue}system(\"PAUSE\");return EXIT_SUCCESS;} หมายเหตุ ใหศ้ กึ ษาผังงานและโปรแกรมตวั อย่างนีเพ่ือเปรียบเทยี บการทางานวนลูป แบบ do while() และแบบ for() ในหวั ขอ้ ตอ่ ๆ ไปด้วย
คาสัง่ วนลปู ด้วย do while() ประโยคคาส่ัง do/while() จะเริ่ม ทา ประโยคคาสั่งท่ีต้องการทาซาก่อน แล้วจึง ตรวจสอบเงื่อนไข ขณะท่ีเงื่อนไขเป็นจริงก็ จะวนกลับไปทาซาอีก แต่ถ้า เง่ือนไขเป็น เท็จกอ็ อกจากการทาซา
รปู แบบคาสงั่ do while() do { ประโยคคาสง่ั ทตี่ อ้ งการทาซา ; } while(เงื่อนไข); ประโยคคาสง่ั ถดั ไป ;
ผงั งานแสดงการทางานของdo while() ประโยคคาส่ังทต่ี ้องการทาซา While (เงอื่ นไข) ประโยคคาสั่งถดั ไป
ตวั อย่างโปรแกรมท่ี 2 โปรแกรมแสดงผลตวั เลข 5 ตัว คอื 1 2 3 4 5 เมอ่ื ครบ 5 ก็หยุดโดยใช้ do while() จากโจทย์ เงอ่ื นไขก็คอื ขณะท่ตี วั เลขนอ้ ยกวา่ หรอื เท่ากบั 5 ใหแ้ สดงผล เม่ือตัวเลขมากกวา่ 5 กห็ ยุด นามาเขียนเปน็ ผังงานได้ดังนี startโครงสรา้ งการทางาน Num=1 ของ do while() num จรงิ While (num<=5) เท็จ end
จากภาพผงั งาน เขียนเปน็ โปรแกรมไดด้ งั นี#include <stdio.h> โครงสร้ างการ#include <conio.h> ทํางานของ while()int main(){ ผลลพั ธ์จากการรนั โปรแกรม 1 2 3 4 5 Press any key to continue... int num=1; do ข้อสังเกต ผลลัพธ์จากการรันโปรแกรมตัวอย่างที่ 1 และโปรแกรม { ตัวอย่างที่ 2 เหมือนกัน ฉะนัน เวลาประยุกต์ใช้งานให้เลือกใช้ตาม printf(“%d\",num); ถนดั และเหมาะสม num++; } while(num<=5);system(\"PAUSE\");return EXIT_SUCCESS;}
เอ..!? หากต้องการ อ้อ ลองแก้ไขคา่ ตวั แปร num แสดงผล เป็น ตามนีนะครับ int num=5;5 4 3 2 1 ต้องทาไงคะ? num=num-1; while(num>=1); แล้ว Compile&run ดใู หม่
ตัวอย่างโปรแกรมที่ 3โปรแกรมหาผลบวกของ 1-10 แล้วแสดงคาตอบ จากโจทย์ นามาเขยี นเปน็ flowchart ได้ดงั นี start i=1,sum=0 While (i<=10) sum Sum=sum+i end i++
จากภาพผงั งาน เขยี นเปน็ โปรแกรมไดด้ งั นี#include <stdio.h> ผลลพั ธ์จากการรันโปรแกรม#include <conio.h>int main() summation of 1-10 = 55{ Press any key to continue int i=1, sum=0; while(i<=10) { Sum=sum+i ; i++; } printf(\"summation of 1-10 = %d \".sum); system(\"PAUSE\"); return EXIT_SUCCESS;}
คาส่งั ควบคมุ การทางานแบบวนลปู ดว้ ย For() การทางานแบบวนลปู (Loop) หรือ การทางานวนซา นอกจากจะใช้ประโยคคาส่งั while() หรอื do while แล้วนัน ประโยคคาส่ัง for() ก็ยงั เปน็ อีกคาสัง่ หน่งึ ที่ใชค้ วบคมุ การ ทางานแบบวนลูปหรือวนซาเชน่ กัน
คาสงั่ วนลปู ดว้ ย for()ประโยคคาสั่ง for() เหมาะสาหรบั การวนซาที่รจู้ านวนลูปทแี่ น่นอน รูปแบบคาส่ัง for() for(ตวั แปรนบั รอบ=ค่าเรม่ิ ตน้ ;เงอ่ื นไขสาหรบั การวน; เพม่ิ หรอื ลดค่าตัวแปรนับรอบ) { ประโยคคาสั่งท่ีต้องการทาซา; } ประโยคคาสัง่ ถดั ไป หมายเหตุ ถ้าประโยคทต่ี อ้ งการทาซามีเพียง 1 ประโยคคาสงั่ ไม่ต้องมี{}ครอบ for กไ็ ด้
ผังการแสดงการทางานของคาสั่งfor() โครงสร้างการ กาหนดให้ i เป็นคา่ เร่มิ ต้นทางานของfor() เทจ็ เงื่อนไข จริงประโยคคาส่งั ถัดไป ประโยคคาส่งั ทตี่ อ้ งการทาซา เพม่ิ ค่าหรอื ลด ค่า i
ตัวอยา่ งโปรแกรมท่ี 1โปรแกรมแสดงผลตัวเลข 1 ถงึ 5 ตวั คือ 1 2 3 4 5 โดยใช้ for() start i=1 i<=5 end Print i I ++
จากภาพผงั งาน เขยี นเปน็ โปรแกรมไดด้ งั นี#include <cstdlib> ประโยคการ#include <iostream> ทางานของint main(){ for() printf(“Program loop for\n\"); for(i=1; i<=5;i++){ printf(\"%d \",i);{ system(\"PAUSE\"); return EXIT_SUCCESS; ผลลพั ธ์จากการรันโปรแกรม} Program loop for 1 2 3 4 5 Press any key to continue
เอะ๊ ? จากตวั อยา่ งที่ 1 ถา้ เกดิ ออ๋ ไมย่ ากเลยครบั ลอง เปลีย่ นเราตอ้ งการใหแ้ สดงผล แบบ คาํ ส่งั ดงั น้ีครบั จากเดมิ ถอยหลงั คอื for(i=1; i<=5;i++) เปลีย่ นเป็ น for(i=5; i>=1;i--) 5 4 3 2 1 ตอ้ งทาํ ไงคะ เสร็จแลว้ ให้ compile&run ดูผลลพั ธ์
END…. by sunisa….
Search
Read the Text Version
- 1 - 26
Pages: