การควบคุมการทางานด้วยภาษา C อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี (tko@webmail.npru.ac.th)
เนื้อหาที่สนใจ • • • • • • •
การควบคุม (Control) การควบคุมการทางานแบบอัตโนมัติ การควบคุมการทางานของโปรแกรม การควบคุมการไหลในภาษา C การกาหนดลาดับขั้นตอน (Flow) การจัดลาดับการประมวลผล ทางเลือกและตัวแปรควบคุม – ตัดสินใจจากเงื่อนไข แบบหลายทางเลือก – การตัดสินใจซ้อนกัน – การตัดสินใจหลายเงื่อนไข
• การทาซ้า for(), while(), do…while() http://1.bp.blogspot.com/-tw1caa8lBus/Vphe8RV3rwI/AAAAAAAAAKM/wAhp-ds7iQM/s1600/8.png
การควบคุม (Control) • การควบคุม (Control) หมายถึง ขั้นตอน กระบวนการ หรือกลไกซึ่ง กาหนดขึ้นเพื่อให้มั่นใจว่า กิจกรรมนั้นจะดาเนินการได้อย่างถูกต้อง เหมาะสม
• การเขียนโปรแกรมเป็นการกาหนดขั้นตอนและกระบวนการไว้ล่วงหน้า
การควบคุมการทางานแบบอัตโนมัติ • ลาดับการทางานที่แน่นอน (Sequence Control) – การทางานตามลาดับต่อเนื่อง – การทางานหลายๆ อย่างพร้อมกันในจังหวะเดียวกัน – การทางานแบบวนรอบ • การทางานแบบโปรแกรม คือ การทางานที่ระบบสามารถทางานได้ มากกว่าหนึ่งวิธี หรือ หลายรูปแบบ โดยผู้ควบคุมสามารถเลือกโปรแกรมการทางานได้ (Selection Control) หรือ มีการกาหนดเงื่อนไขได้เอง (Dynamic control) – การใช้ตัวควบคุม (Variable) เพื่อให้เกิดการเปลี่ยนแปลง
http://utcc2.utcc.ac.th/engineer/learning/chalermchon_vis/download/automation/Auto mation05.pdf
การควบคุมการทางานของโปรแกรม • • • • •
การเริ่มต้น-จบการทางาน การควบคุมขั้นตอนการทางาน ความต่อเนื่องในการทางาน การควบคุมการทางานแบบไม่รจู้ บ การควบคุมทิศทาง การเข้า-ออก การควบคุมการทาซ้า – การควบคุมการหยุด พัก กระโดดข้าม
http://www.tnt.co.th/en/news/127-3-things-you-can-do-to-improve-your-working
การควบคุมการไหลในภาษา C • การควบคุมการไหลในภาษา C มี 3 รูปแบบ – การลาดับ (Sequence) • ตัวดาเนินการ
– ทางเลือกและการตัดสินใจ (Decision & Selection) • Switch case • If else
– วนลูป การทาซ้า (Loop) • For • While • Do while
การกาหนดลาดับขั้นตอน (Flow) • การจัดวางแต่ละคาสั่งก่อนหลัง • การจัดกลุ่มของคาสั่ง • การจัดวางชุดคาสั่ง
http://www.scimath.org/matharticle/4732-2015-03-31-08-59-30
http://www.bogotobogo.com/cplusplus/binarytree.php
#include <stdio.h> #include <conio.h> #include <math.h>
http://www.scimath.org/matharticle/4732-2015-03-31-08-59-30
void main(){ float sum; //การคานวณ float x1=16/4; sum= pow(x1,3); printf("(16/4)^3=%.2f",sum); getch(); }
การจัดลาดับการประมวลผล void main(){ float x=0.0f; //x=7+7/7+7*7-7; x=50 //x=(7+7)/7+7*7-7; x=44 //x=7+(7/7)+7*7-7; x=50 //x=7+7/(7+7)*7-7; x=0 //x=7+7/7+(7*7)-7; x=50 //x=7+7/7+7*(7-7); x=8 printf(“x= %.2f",x); getch(); }
ทางเลือกและตัวแปรควบคุม ?
http://www.athtek.com/code-to-flowchart.html
ทางเลือกและตัวแปรควบคุม #include <stdio.h> #include <conio.h>
//ส่วนตัวแปรควบคุม
switch(ans){ case 'a': printf("\ta. x=0 False\n"); void main(){ break; char ans; case 'b': printf("\tb. x=8 False\n"); //ส่วนตัวเลือก break; printf("------------------------\n"); case 'c': printf("\tc. x=50 True\n"); printf(" no1. x=7+7/7+7*7-7\n"); break; printf("\ta. x=0\n"); case 'd': printf("\td. x=56 False\n"); printf("\tb. x=8\n"); break; printf("\tc. x=50\n"); default: printf("\tYou Error"); printf("\td. x=56\n"); } printf(" Ans a-d: "); printf("\n------------------\n"); scanf("%c",&ans); getch(); printf("\n------------------------\n"); }
C - Decision Making #include <stdio.h> #include <conio.h>
#include <stdio.h> #include <conio.h>
void main(){
void main(){
//ตัดสินใจจากเงื่อนไข แบบทางเลือกเดียว if(true){ printf("\t true"); } getch(); }
//ตัดสินใจจากเงื่อนไข แบบ 2 ทางเลือก if(true){ printf("\t true"); } else printf("\t false"); getch(); }
ตัดสินใจจากเงื่อนไข แบบหลายทางเลือก #include <stdio.h> #include <conio.h>
void main(){ //ตัดสินใจจากเงื่อนไข แบบหลายทางเลือก if(true) printf("\t true"); else if(true) printf("\t false->true"); else printf("\t false->false"); getch(); }
การตัดสินใจซ้อนกัน #include <stdio.h> #include <conio.h> void main(){ //ตัดสินใจซ้อนกันตามเงื่อนไข แบบหลายทางเลือก if(true){ if(true) printf("\t ture->true"); else printf("\t ture->false"); } else printf("\t false"); getch(); }
การตัดสินใจหลายเงื่อนไข #include <stdio.h> #include <conio.h>
void main(){ //ตัดสินใจจากหลายเงื่อนไข แบบ 2 ทางเลือก if(true || true && false){ printf("\t true"); } else printf("\t false"); getch(); }
C â&#x20AC;&#x201C; For Loops #include <stdio.h> #include <conio.h> void main(){ for(int i=0;i<=10;i++){ printf("\n"); for(int j=0;j<=i;j++){ printf("*"); } } getch(); }
C â&#x20AC;&#x201C; while Loops #include <stdio.h> #include <conio.h> void main(){ int i=1; while(i<=10){ printf("\t%d",i); i++; } getch(); }
C â&#x20AC;&#x201C; do..while Loops #include <stdio.h> #include <conio.h>
void main(){ int i=1; do { printf("\t%d",i); i+=2; }while(i<=10); getch(); }
หยุดและข้ามการดาเนินการ #include <stdio.h> #include <conio.h>
#include <stdio.h> #include <conio.h>
void main(){ int i=1; do { printf("\t%d",i); i+=2; break; //หยุดการทางาน }while(i<=10); getch(); }
void main(){ int i=1; do { printf("\t%d",i); continue; //ข้ามการทางาน i+=2; }while(i<=10); getch(); }
สรุป • การควบคุมด้วยคาสั่งและการดาเนินการที่จัดเก็บในไลบรารีของภาษา C • การควบคุมลาดับการทางานที่แน่นอน (Sequence Control) • การควบคุมการทางานแบบอัตโนมัติ (Dynamic control) ใช้การตัดสินใจ โดยพิจารณาจากตัวเลือกและเงื่อนไขผ่านตัวควบคุม • การควบคุมการไหลในภาษา C มี 3 รูปแบบ – การลาดับ (Sequence) – ทางเลือกและการตัดสินใจ (Decision & Selection) – วนลูป การทาซ้า (Loop)