4121103 การเขียนโปรแกรมและอัลกอริทึ่ม...
TRANSCRIPT
บทที่ 5 โปรแกรมย่อยและแผนภูมิลำำดับขั้น5.1 โปรแกรมยอ่ย5.2 ตัวแปรแบบโกลบอลและตัวแปรแบบโลคอล5.3 กำรใช้งำนฟังกช์ันในภำษำซี5.4 แผนภมูลิำำดับข้ัน
Copyright (c) 2006 by Sasalak Tongkaw2
COMPUTER PROGRAMMING AND ALGORITHM
โปรแกรมย่อย
หมำยถึง หน่วยยอ่ยของโปรแกรม บำงครั้งเรียกว่ำ ฟงัก์ชัน (functions) หรือกระบวนงำน (Procedure)
Double_it
Copyright (c) 2006 by Sasalak Tongkaw3
COMPUTER PROGRAMMING AND ALGORITHM
กำรใช้งำนฟังก์ชันในภำษำซี ฟังก ์ช ันในภำษำซีม ีอย ู่ 2
ชนิดค ือฟังกช์ ั่นท ีม่ ีอย ู่ในไลบรำร ีของ
ภำษำซี อย ู่ในโฟลเดอร ์ lib มี นำมสกุล .h
ฟังกช์ ั่นท ีเ่รำสร ้ำงข ึ้นเองฟังก์ชั่นที่มีอยู่แล้วในภำษำซีเวลำจะ
เรียกใช้งำนก็ต้องทำำกำร include ไฟล์นำมสกุล .h เชน่ถำ้ต้องกำรใช้ฟังก์ชั่น prinf หรือ scanf จะต้อง include ไฟลช์ื่อ stdio.h มำก่อน เป็นต้น
ฟังก์ชันที่เขียนข้ึนเองใหม่เหมือนกับสร้ำงภำษำซีข้ึนเองเพิ่มเติมจำกที่มีอยู่แลว้ ซึ่งจะทำำให้ลดควำมซับซ้อนของโปรแกรมลง
Copyright (c) 2006 by Sasalak Tongkaw4
COMPUTER PROGRAMMING AND ALGORITHM
ฟงัก์ชันหลักในโปรแกรมคือ main() ตัวอย ่ำงโปรแกรม
Func1.c.
#include<stdio.h>void main(){
int x,y,z;x = 100;y=23;z=x+y;printf(“%d”,z);
}
ตัวอย ่ำงโปรแกรมFunc1.c.
#include<stdio.h>void main(){
int x,y,z;x = 100;y=23;z=x+y;printf(“%d”,z);
}
มีกำรเร ียกใช้ฟ ังก ์ช ัน printf จะเห ็นว ่ำจะ
ต้องม ีกำร include ไฟล์ stdio.h เข ้ำมำ
ก ่อนเสมอ
มีกำรเร ียกใช้ฟ ังก ์ช ัน printf จะเห ็นว ่ำจะ
ต้องม ีกำร include ไฟล์ stdio.h เข ้ำมำ
ก ่อนเสมอ
Copyright (c) 2006 by Sasalak Tongkaw5
COMPUTER PROGRAMMING AND ALGORITHM
กำรแยกโปรแกรมยอ่ยหรือฟงัก์ชันในภำษำซีเรำสำมำรถเอำคำำสัง่ต่ำงๆ ใน main() มำสรำ้งเปน็ฟัง
ก์ชั่นใหม่ไดด้งันี้#include<stdio.h>void test( ){
int x,y,z;x = 100;y = 23;z = x+y;printf(“%d”,z);
}
void main( ){
test( );}
เร ียกใช้ฟ ังก ์ช ันtest( ) เพ ียงต ัวเด ียวก ็จะท ำำงำนเหมือนคำำส ั่งท ั้งหมดที่เข ียนไว ้ในฟังก ์ช ันtest () ข้ำงบน
เร ียกใช้ฟ ังก ์ช ันtest( ) เพ ียงต ัวเด ียวก ็จะท ำำงำนเหมือนคำำส ั่งท ั้งหมดที่เข ียนไว ้ในฟังก ์ช ันtest () ข้ำงบน
int x,y,z;x = 100;y = 23;z = x+y;printf(“%d”,z);
แยกคำำส ั่งบำงส ่วนมำใส ่ในฟังก ์ช ัน ชื่อ test ( ) แยกคำำส ั่งบำงส ่วนมำใส ่ในฟังก ์ช ัน ชื่อ test ( )
Copyright (c) 2006 by Sasalak Tongkaw6
COMPUTER PROGRAMMING AND ALGORITHM
โปรแกรมเขียนใหม่จะเปน็ดังนี้#include<stdio.h>void test( ){
int x,y,z;x = 100;y = 23;z = x+y;printf(“%d”,z);
}
void main( ){
test( );}
ส่วนของฟังก ์ช ัน ชื่อว ่ำ test ( ) ส่วนของฟังก ์ช ัน ชื่อว ่ำ test ( )
เร ียกชื่อฟ ังก ์ช ัน test ( ) เพ ื่อท ำำงำนตรงจ ุดนี้ เร ียกชื่อฟ ังก ์ช ัน test ( ) เพ ื่อท ำำงำนตรงจ ุดนี้ฟ ังก ์ช ันหล ักฟังก ์ช ันหล ัก
ตัวอยา่งโปรแกรม Double_it
Copyright (c) 2006 by Sasalak Tongkaw8
COMPUTER PROGRAMMING AND ALGORITHM
ตัวอยา่ง ผังงานปกติ
EOFEOF
Print “END”Print “END”
Print ANSPrint ANS
StartStart
YesANS=number*2ANS=number*2
EndEnd
No
Get numberGet number
Get numberGet numberNumber=0Number=0
แยกเป็นโปรแกรมยอ่ยชื่อDouble_it
Copyright (c) 2006 by Sasalak Tongkaw9
COMPUTER PROGRAMMING AND ALGORITHM
โปรแกรม Double1.cpp#include<stdio.h>#include<conio.h>void main(){
int number,ans;clrscr();printf("Number=");scanf("%d",&number);do { ans=number*2; //แยกไปเป็นโปรแกรมย่อย Double_it printf("ANS=%d\n",ans); printf("Number="); scanf("%d",&number);} while (number!=0);
}
Copyright (c) 2006 by Sasalak Tongkaw10
COMPUTER PROGRAMMING AND ALGORITHM
ตัวอยา่ง ผังงานมีโปรแกรมยอ่ย Double_It
EOFEOF
Print “END”Print “END”
Print ANSPrint ANS
StartStart
Yes
EndEnd
No
Get numberGet number
Get numberGet number
Double_itDouble_it
Double_ItDouble_It
Double_itDouble_it
ReturnReturn
Number=0Number=0
Copyright (c) 2006 by Sasalak Tongkaw11
COMPUTER PROGRAMMING AND ALGORITHM
โปรแกรม Double2.cpp#include<stdio.h>#include<conio.h>int number,ans;void double_it(){
ans=number*2;}void main(){ clrscr();
printf("Number=");scanf("%d",&number);do { double_it(); printf("ANS=%d\n",ans); printf("Number="); scanf("%d",&number);} while (number!=0);
}
Copyright (c) 2006 by Sasalak Tongkaw12
COMPUTER PROGRAMMING AND ALGORITHM
ตัวแปรที่ใชง้านในโปรแกรม• ตัวแปรแบบโกลบอล global variable• ตัวแปรแบบโลคอล local variable
Copyright (c) 2006 by Sasalak Tongkaw13
COMPUTER PROGRAMMING AND ALGORITHM
ตัวแปรแบบโกลบอล Global Variable• เป็นตัวแปรทีใ่ช้ตลอดทัง้
โปรแกรม ทัง้ในโปรแกรมหลักและในโปรแกรมยอ่ย
• ประกาศไว้ภายนอกโปรแกรมหลักเพยีงครั้งเดียว
Copyright (c) 2006 by Sasalak Tongkaw14
COMPUTER PROGRAMMING AND ALGORITHM
Global Variable
#include<stdio.h>#include<conio.h>int number,ans;
Function 1Function 2
Main program
Copyright (c) 2006 by Sasalak Tongkaw15
COMPUTER PROGRAMMING AND ALGORITHM
โปรแกรม Double2.cpp#include<stdio.h>#include<conio.h>int number,ans;void doubleit(){
ans=number*2;}void main(){ clrscr();
printf("Number=");scanf("%d",&number);do { doubleit(); printf("ANS=%d\n",ans); printf("Number="); scanf("%d",&number);} while (number!=0);
}
Global variable
Function
Main Program
Copyright (c) 2006 by Sasalak Tongkaw16
COMPUTER PROGRAMMING AND ALGORITHM
ตัวแปรแบบโลคอล Local Variable
• ตัวแปรทีใ่ช้ในโพรซีเจอร์หรือ ฟังก์ชนั
• การเปลี่ยนแปลงค่าของตัวแปรโลคอลจะไมก่ระทบต่อโปรแกรมหลักข้างนอก
Copyright (c) 2006 by Sasalak Tongkaw17
COMPUTER PROGRAMMING AND ALGORITHM
โปรแกรม Double1.cpp#include<stdio.h>#include<conio.h>void main(){
int number,ans;clrscr();printf("Number=");scanf("%d",&number);do { ans=number*2; printf("ANS=%d\n",ans); printf("Number="); scanf("%d",&number);} while (number!=0);
}
Local Variable
ฝึกปฏิบตั ิการแยกโปรแกรมย่อยฝึกปฏิบตั ิการแยกโปรแกรมย่อย
โปรแกรม showmenu()
Copyright (c) 2006 by Sasalak Tongkaw19
COMPUTER PROGRAMMING AND ALGORITHM
โปรแกรม โปรแกรม EasyFunc1.cppEasyFunc1.cpp#include<stdio.h>void main(){
printf(“Begin\n”); printf(“==== MENU ====\n\n”);printf(“a) Say Hello\n”);printf(“b) Say Good Bye\n”);printf(“Select a or b : \n”);printf(“END\n”);
}
#include<stdio.h>void main(){
printf(“Begin\n”); printf(“==== MENU ====\n\n”);printf(“a) Say Hello\n”);printf(“b) Say Good Bye\n”);printf(“Select a or b : \n”);printf(“END\n”);
}
Begin==== MENU ====
a) Say Hellob) Say Good ByeSelect a or b :END
Begin==== MENU ====
a) Say Hellob) Say Good ByeSelect a or b :END
จงเขียนฟงัก์ชัน showmenu();
Copyright (c) 2006 by Sasalak Tongkaw20
COMPUTER PROGRAMMING AND ALGORITHM
เฉลย โปรแกรม เฉลย โปรแกรม EasyFunc2.cppEasyFunc2.cpp#include<stdio.h>void showmenu(){
printf(“==== MENU ====\n\n”);printf(“a) Say Hello\n”);printf(“b) Say Good Bye\n”);printf(“Select a or b : \n”);
}Void main(){
printf(“Begin\n”);showmenu();printf(“END\n”);
}
#include<stdio.h>void showmenu(){
printf(“==== MENU ====\n\n”);printf(“a) Say Hello\n”);printf(“b) Say Good Bye\n”);printf(“Select a or b : \n”);
}Void main(){
printf(“Begin\n”);showmenu();printf(“END\n”);
}
Begin==== MENU ====
a) Say Hellob) Say Good ByeSelect a or b :END
Begin==== MENU ====
a) Say Hellob) Say Good ByeSelect a or b :END
2
1
34
5
6789
10
Copyright (c) 2006 by Sasalak Tongkaw21
COMPUTER PROGRAMMING AND ALGORITHM
โปรแกรมย่อยของโปรแกรมยอ่ย
เป็นโปรแกรมย่อยที่อยูภ่ายในโปรแกรมย่อยอีกทหีนึ่ง
Copyright (c) 2006 by Sasalak Tongkaw22
COMPUTER PROGRAMMING AND ALGORITHM
ผงัล ำาดบัข ั้น ผงัล ำาดบัข ั้น Hierarchy chartHierarchy chart
Main
Compute-BillGet-Order Print-Bill
Compute-Tax
Compute-Discount
Copyright (c) 2006 by Sasalak Tongkaw23
COMPUTER PROGRAMMING AND ALGORITHM
คน้คว้าเพิม่เติม• สไลด์ประกอบการเรียน
ดาวนโ์หลดได้ที ่LMS ของมหาวิทยาลัยรายวิชา 4121103 การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริทึม่
• เว็บไซต์วิชา 4121202 การเขียนโปรแกรมภาษาคอมพวิเตอร์ 1
http://samet.skru.ac.th/~tsasalak/c/c-index.htm
END OF CHEPTER 5
ANY QUESTION ?