4121103 การเขียนโปรแกรมและอัลกอริทึ่ม...

24
บทที5 โปรแกรมย่อยและแผนภูมิ ลำดับขั้น 5.1 โปรแกรมย่อย 5.2 ตัวแปรแบบโกลบอลและตัวแปร แบบโลคอล 5.3 กำรใช้งำนฟังก์ชันในภำษำซี 5.4 แผนภูมิลำดับขั้น

Upload: know-mastikate

Post on 23-Jul-2015

27 views

Category:

Education


2 download

TRANSCRIPT

Page 1: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

บทที่ 5 โปรแกรมย่อยและแผนภูมิลำำดับขั้น5.1 โปรแกรมยอ่ย5.2 ตัวแปรแบบโกลบอลและตัวแปรแบบโลคอล5.3 กำรใช้งำนฟังกช์ันในภำษำซี5.4 แผนภมูลิำำดับข้ัน

Page 2: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

Copyright (c) 2006 by Sasalak Tongkaw2

COMPUTER PROGRAMMING AND ALGORITHM

โปรแกรมย่อย

หมำยถึง หน่วยยอ่ยของโปรแกรม บำงครั้งเรียกว่ำ ฟงัก์ชัน (functions) หรือกระบวนงำน (Procedure)

Double_it

Page 3: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

Copyright (c) 2006 by Sasalak Tongkaw3

COMPUTER PROGRAMMING AND ALGORITHM

กำรใช้งำนฟังก์ชันในภำษำซี ฟังก ์ช ันในภำษำซีม ีอย ู่ 2

ชนิดค ือฟังกช์ ั่นท ีม่ ีอย ู่ในไลบรำร ีของ

ภำษำซี อย ู่ในโฟลเดอร ์ lib มี นำมสกุล .h

ฟังกช์ ั่นท ีเ่รำสร ้ำงข ึ้นเองฟังก์ชั่นที่มีอยู่แล้วในภำษำซีเวลำจะ

เรียกใช้งำนก็ต้องทำำกำร include ไฟล์นำมสกุล .h เชน่ถำ้ต้องกำรใช้ฟังก์ชั่น prinf หรือ scanf จะต้อง include ไฟลช์ื่อ stdio.h มำก่อน เป็นต้น

ฟังก์ชันที่เขียนข้ึนเองใหม่เหมือนกับสร้ำงภำษำซีข้ึนเองเพิ่มเติมจำกที่มีอยู่แลว้ ซึ่งจะทำำให้ลดควำมซับซ้อนของโปรแกรมลง

Page 4: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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 เข ้ำมำ

ก ่อนเสมอ

Page 5: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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 ( )

Page 6: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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 ( ) เพ ื่อท ำำงำนตรงจ ุดนี้ฟ ังก ์ช ันหล ักฟังก ์ช ันหล ัก

Page 7: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

ตัวอยา่งโปรแกรม Double_it

Page 8: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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

Page 9: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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);

}

Page 10: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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

Page 11: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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);

}

Page 12: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

Copyright (c) 2006 by Sasalak Tongkaw12

COMPUTER PROGRAMMING AND ALGORITHM

ตัวแปรที่ใชง้านในโปรแกรม• ตัวแปรแบบโกลบอล global variable• ตัวแปรแบบโลคอล local variable

Page 13: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

Copyright (c) 2006 by Sasalak Tongkaw13

COMPUTER PROGRAMMING AND ALGORITHM

ตัวแปรแบบโกลบอล Global Variable• เป็นตัวแปรทีใ่ช้ตลอดทัง้

โปรแกรม ทัง้ในโปรแกรมหลักและในโปรแกรมยอ่ย

• ประกาศไว้ภายนอกโปรแกรมหลักเพยีงครั้งเดียว

Page 14: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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

Page 15: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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

Page 16: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

Copyright (c) 2006 by Sasalak Tongkaw16

COMPUTER PROGRAMMING AND ALGORITHM

ตัวแปรแบบโลคอล Local Variable

• ตัวแปรทีใ่ช้ในโพรซีเจอร์หรือ ฟังก์ชนั

• การเปลี่ยนแปลงค่าของตัวแปรโลคอลจะไมก่ระทบต่อโปรแกรมหลักข้างนอก

Page 17: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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

Page 18: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

ฝึกปฏิบตั ิการแยกโปรแกรมย่อยฝึกปฏิบตั ิการแยกโปรแกรมย่อย

โปรแกรม showmenu()

Page 19: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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();

Page 20: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

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

Page 21: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

Copyright (c) 2006 by Sasalak Tongkaw21

COMPUTER PROGRAMMING AND ALGORITHM

โปรแกรมย่อยของโปรแกรมยอ่ย

เป็นโปรแกรมย่อยที่อยูภ่ายในโปรแกรมย่อยอีกทหีนึ่ง

Page 22: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

Copyright (c) 2006 by Sasalak Tongkaw22

COMPUTER PROGRAMMING AND ALGORITHM

ผงัล ำาดบัข ั้น ผงัล ำาดบัข ั้น Hierarchy chartHierarchy chart

Main

Compute-BillGet-Order Print-Bill

Compute-Tax

Compute-Discount

Page 23: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

Copyright (c) 2006 by Sasalak Tongkaw23

COMPUTER PROGRAMMING AND ALGORITHM

คน้คว้าเพิม่เติม• สไลด์ประกอบการเรียน

ดาวนโ์หลดได้ที ่LMS ของมหาวิทยาลัยรายวิชา 4121103 การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริทึม่

• เว็บไซต์วิชา 4121202 การเขียนโปรแกรมภาษาคอมพวิเตอร์ 1

http://samet.skru.ac.th/~tsasalak/c/c-index.htm

Page 24: 4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 5/7

END OF CHEPTER 5

ANY QUESTION ?