โปรแกรมย่อย : Pascal Procedure

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
บทที่ 2 ภาษาปาลคาลเบื้องต้น.
การทำงานแบบเลือกทำ (Selection)
BC322 ครั้งที่ 6 Text file BC322 : computer Programming (Week6)
บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูลชนิดพอยท์เตอร์
Chapter 7 ขอบเขตของตัวแปร Variable Scope.
บทที่ 1 หลักการเขียนโปรแกรมเบื้องต้น ภาษา C#
สถาปัตยกรรมแบบ stack และ การผลิตโค๊ด
การผลิตโค๊ดสำหรับ Procedure Call
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
Control structure part II
รหัสระหว่างกลาง (Intermediate code)
Functional Programming
Data Type part.III.
CS Assembly Language Programming
ฟังก์ชัน (Function).
Structure Programming
Structure Programming
CS Assembly Language Programming
ชนิดของข้อมูลและตัวดำเนินการ
Structure.
ลักษณะการทำงานของ Stack
Function.
องค์ประกอบของโปรแกรม
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
ฟังก์ชั่น function.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
ฟังก์ชัน (Function).
C Programming Lecture no. 6: Function.
Functions & Sub Program ฟังก์ชันและโปรแกรมย่อย
SCC : Suthida Chaichomchuen
PROCEDURE <<โปรแกรมย่อย>>
1 RECORD TYPE ข้อมูลชนิดเรคอร์ด SCC : Suthida Chaichomchuen
บทที่ 7 การกำหนดชนิดข้อมูลใหม่
การวิเคราะห์ประสิทธิภาพของอัลกอริธึม (Performance Analysis)
หน่วยที่ 14 การเขียนโปรแกรมย่อย
บทที่ 15 โปรแกรมย่อยและแสต็ก
ธนาวินท์ รักธรรมานนท์
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงานลักษณะของฟังก์ชั่นมีความรอบรัดสั้นกว่าแบบวนลูป.
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
โครงสร้างแบบลำดับ คำสั่ง x คำสั่ง y.
Chapter 16 / Unit 77 : VB : Subprogram & Function Senior Cybernaut ศูนย์การศึกษาต่อเนื่องแห่ง จุฬาลงกรณ์มหาวิทยาลัย SL102017/04C /ISSUE2.
ตัวแปรกับชนิดของข้อมูล
Lecture 4 เรคอร์ด.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
บทที่ 5 Link List Link List.
Call by reference.
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการเขียนโปรแกรม ( )
กองซ้อน ยอดกองซ้อน (stack).
PHP: [8] การสร้างฟังก์ชั่นขึ้นใช้เอง (User-defined functions)
หลักการสร้างสรรค์ชุดคำสั่ง ๓
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
บทที่ 9 พอยเตอร์. สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อ การศึกษาเท่านั้น พอยเตอร์ (Pointer) พอยเตอร์คือต้นฉบับของชนิดข้อมูล เป็นชนิด ข้อมูลที่สร้างจากข้อมูลมาตรฐานชนิดหนึ่ง.
Java Programming Java Structure and Datatype,Variable
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
1. Global variable คือ ตัวแปรที่กำหนดหรือประกาศไว้นอกฟังก์ชันใด ๆ ทุกฟังก์ชัน สามารถนำตัวแปรประเภท Global ไปใช้ได้ทุกฟังก์ชัน.
Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
1 บทที่ 5 โปรแกรมย่อย Part II Function. 2 ฟังก์ชัน (Function) เป็นชุดคำสั่งย่อยที่มีหน้าที่เฉพาะอย่างใดอย่างหนึ่ง เหมือนกับ procedure สามารถมีการรับส่งค่าข้อมูล.
บทที่ 5 โปรแกรมย่อย.
โปรแกรมย่อย (Sub Program)
ใบสำเนางานนำเสนอ:

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

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

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

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. Top of stack P x a i Test

ตัวอย่าง Runtime stack Program P; var i:integer; Procedure Q; begin … end; Procedure R; i:= i -1 if I>0 then R else Q; Procedure S; R; Q; 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 Q called from R S P Q R Q returns to R S P 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

Parameter passing machanism การส่งผ่านค่าแบ่งออกเป็น 3 กลุ่ม IN Parameter เป็นการส่งผ่านค่าเข้าไปยัง procedure ที่ถูกเรียก OUT Parameter เป็นการส่งผ่านค่ากลับมายัง procedure ที่ทำการเรียก INOUT Parameter เป็นการส่งผ่านค่าไปและกลับ ระหว่าง procedure ที่เรียกใช้ และ procedure ที่ถูกเรียก

Parameter passing machanism การระบุตัวแปรหรือพารามิเตอร์ที่จะใช้ส่งผ่านค่า ต้องระบุ 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 การ binding ระหว่าง Actual parameter กับ Formal parameter เพื่อส่งผ่านข้อมูล ชนิดข้อมูล ฯลฯ ระหว่าง procedure ที่ทำการติดต่อกันทำได้ 2 วิธี คือ Position method เป็นการ bind ตามตำแหน่งของพารามิเตอร์ Name method เป็นการ bind ตามชื่อของพารามิเตอร์

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 ด้วย

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

ตัวอย่างการส่งผ่านพารามิเตอร์ 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);