งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

โปรแกรมย่อย : Pascal Procedure การกำหนดโปรแกรมย่อย (Procedure definition) ความหมายโปรแกรมย่อย (Procedure semantic) การส่งผ่านค่า (Parameter passing machanism)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "โปรแกรมย่อย : Pascal Procedure การกำหนดโปรแกรมย่อย (Procedure definition) ความหมายโปรแกรมย่อย (Procedure semantic) การส่งผ่านค่า (Parameter passing machanism)"— ใบสำเนางานนำเสนอ:

1 โปรแกรมย่อย : Pascal Procedure การกำหนดโปรแกรมย่อย (Procedure definition) ความหมายโปรแกรมย่อย (Procedure semantic) การส่งผ่านค่า (Parameter passing machanism)

2 Procedure definition  โครงสร้างของ Procedure ประกอบด้วยส่วน หัว ส่วนประกาศ และส่วนคำสั่ง เช่นเดียวกับ โปรแกรม  แต่ละโปรแกรมย่อยเป็นอิสระจากกัน  ประเภทของตัวแปรแบ่งเป็น Global variable เป็นตัวแปรที่กำหนดไว้ในส่วน ประกาศของโปรแกรมหลัก และนำไปใช้ได้ทั้งใน โปรแกรมหลัก และโปรแกรมย่อย Local variable เป็นตัวแปรที่กำหนดไว้ในส่วน ประกาศของโปรแกรมย่อย จะใช้ตัวแปรนี้ได้ เฉพาะในโปรแกรมย่อยหรือโปรแกรมย่อยภายใน

3  เมื่อ procedure ถูกเรียกใช้ จะมีผลทำให้ คอมพิวเตอร์ทำงานตามคำสั่งที่อยู่ภายใน procedure นั้น  จึงต้องมีการเก็บรวบรวมข้อมูลหรือ รายละเอียดตัวแปร ค่าคงที่ พารามิเตอร์ ฯลฯ ของ procedure อย่างเป็นระบบ  ข้อมูลเหล่านี้จะเก็บไว้ใน Activation Record ซึ่งประกอบด้วย Local Environment ข้อมูลแบบ local ทั้งหมด ของ procedure Parameter Environment ข้อมูลของ พารามิเตอร์ทั้งหมด Global Environment Pointer ชี้ไปยัง AR ของ procedure ที่เรียกใช้ Procedure semantic

4 Parameter passing machanism  เมื่อถูกเรียกใช้ procedure จะสร้าง AR ของ procedure นั้นขึ้น  AR ใหม่นี้จะถูก push ลงใน Runtime stack  เมื่อ procedure ทำงานเสร็จ AR นี้จึงจะถูก pop ออกจาก stack Program Test; var i : integer; Procedure P(a : integer); var x:integer; begin … end; Begin P(i); End. i Test P xaxa Top of stack

5 ตัวอย่าง Runtime stack Program P; var i:integer; Procedure Q; begin … end; Procedure R; begin i:= i -1 if I>0 then R else Q; end; Procedure S; begin R; Q; end; Begin i:=2; S; End. P P begins P S called from P S R R called from S S P R R called from P S P R R Q called from R S P R Q R Q returns to R S P R R S P R returns to R S P R returns to S Q S P Q called from S S P Q returns to S P S returns to P

6  การติดต่อเพื่อส่งผ่านค่าระหว่างโปรแกรมหลัก และโปรแกรมย่อย หรือระหว่างโปรแกรมย่อย เอง ทำได้โดยอาศัยพารามิเตอร์ (Parameter)  การส่งผ่านค่าแบ่งออกเป็น 3 กลุ่ม IN Parameter เป็นการส่งผ่านค่าเข้าไปยัง procedure ที่ถูกเรียก OUT Parameter เป็นการส่งผ่านค่ากลับมายัง procedure ที่ทำการเรียก INOUT Parameter เป็นการส่งผ่านค่าไปและ กลับ ระหว่าง procedure ที่เรียกใช้ และ procedure ที่ถูกเรียก Parameter passing machanism

7  การระบุตัวแปรหรือพารามิเตอร์ที่จะใช้ส่งผ่าน ค่า ต้องระบุ 2 ที่ในโปรแกรม คือ ใน procedure ที่เรียกใช้ procedure อื่น เรียกว่า Actual parameter ใน procedure ที่ถูกเรียกใช้ เรียกว่า Formal parameter Program Test; var x,y : integer; Procedure Square(a,b : integer); begin … end; Begin Square(x,y); Square(2,3); End. Parameter passing machanism

8  การ binding ระหว่าง Actual parameter กับ Formal parameter เพื่อส่งผ่านข้อมูล ชนิด ข้อมูล ฯลฯ ระหว่าง procedure ที่ทำการ ติดต่อกันทำได้ 2 วิธี คือ Position method เป็นการ bind ตามตำแหน่ง ของพารามิเตอร์ Name method เป็นการ bind ตามชื่อของ พารามิเตอร์

9 Parameter passing machanism  เทคนิคที่ใช้การส่งผ่านค่าระหว่าง Formal และ Actual parameter Call by copy ในส่วน AR ต้องมีเนื้อที่สำรอง สำหรับ Local variable และ formal parameter ด้วย การส่งผ่านค่าจะทำการคัดลอก (copy) ค่า จากที่หนึ่งไปยังอีกที่หนึ่ง แบ่งเป็น 3 วิธี Call by value จะ copy ค่าจาก actual มายัง formal ในตอนเริ่มต้นเท่านั้น ทำให้เหมือนกำหนดค่าเริ่มต้นให้ formal Call by result เมื่อเรียกใช้ procedure จะ bind formal กับ actual แต่ยังไม่มีการคัดลอกค่า เมื่อ ทำงานเสร็จจึงจะคัดลอกค่าจาก formal ไปยัง actual Call by value-result เมื่อ bind แล้วจะส่งค่าจาก actual ไปยัง formal แล้วเริ่มทำงานจบเสร็จ ก็ส่งค่า กลับจาก formal ไปยัง actual ด้วย

10 Parameter passing machanism Call by reference จะเป็นส่ง address ของ actual parameter ไปยัง formal parameter นั่นคือ เมื่อคำสั่งกระทำกับ formal จะมี ผลกระทบต่อ actual ทันที ( ไม่ใช่เป็นการส่งค่า ) ข้อสังเกต : ต่างจาก call by value-result ซึ่งจะ formal จะยังไม่มีผลกระทบต่อ actual จนกว่าจะจบ procedure จึงจะมีการ copy ค่ากลับไปยัง actual Call by name เมื่อมีการ bind ระหว่าง formal กับ actual แล้ว จะมีการส่งชื่อไปให้ แต่จะยังไม่ มีการส่งค่าใด ๆ จนกว่าจะพบคำสั่งที่เรียกใช้ formal parameter นั้น เช่น a bind x เมื่อพบคำสั่ง temp :=a จะไปค้นหา a จาก x

11 ตัวอย่างการส่งผ่านพารามิเตอร์  Call by copy Procedure Swap(a,b:integer); var temp:integer; begin temp := a; a := b; b := temp; end; Call Swap(2,3);  Call by reference Procedure Swap(var a,b:integer); var temp:integer; begin temp := a; a := b; b := temp; end; x:=2; y:=3; Call Swap(x,y);


ดาวน์โหลด ppt โปรแกรมย่อย : Pascal Procedure การกำหนดโปรแกรมย่อย (Procedure definition) ความหมายโปรแกรมย่อย (Procedure semantic) การส่งผ่านค่า (Parameter passing machanism)

งานนำเสนอที่คล้ายกัน


Ads by Google