Names, Scopes and Bindings ธนวัฒน์ แซ่ เอียบ. The Concept of Binding Categories of variables by lifetimes –Static bound to memory cells before execution.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
INTRODUCTION TO C LANGUAGE
Advertisements

โครงสร้างโปรแกรมภาษา C
บทที่ 2 ภาษาปาลคาลเบื้องต้น.
บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูลชนิดพอยท์เตอร์
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
Data Type part.III.
CS Assembly Language Programming
Linked-List (รายการโยง)
Repetitive Instruction
คำสั่งเงื่อนไขและการควบคุม
Object-Oriented Programming
โปรแกรมย่อย : Pascal Procedure
Functions & Sub Program ฟังก์ชันและโปรแกรมย่อย
ตัวอย่างการใช้คำสั่ง IF_THEN
WHILE..DO คำสั่งควบคุมให้ทำงานซ้ำ โดยที่ต้องตรวจสอบเงื่อนไขก่อนที่จะทำ
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
การวิเคราะห์ประสิทธิภาพของอัลกอริธึม (Performance Analysis)
ธนาวินท์ รักธรรมานนท์
JAVA PROGRAMMING PART IV.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
การสร้าง WebPage ด้วย Java Script Wachirawut Thamviset.
Week 2 Variables.
Programming Languages ธนวัฒน์ แซ่เอียบ โฮมเพจรายวิชา
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
บทที่ 5 โปรแกรมย่อย.
Introduction to Computer Organization and Architecture Flow of Control ภาษาเครื่อง สายงานของการ ควบคุม.
Array ธนวัฒน์ แซ่ เอียบ. The concept of array อาเรย์ : กลุ่มของข้อมูลที่มีชนิดเดียวกันและถูก จัดเก็บเรียงลำดับต่อเนื่องกัน ตัวแปร x สามารถจัดเก็บค่ามากกว่า.
Names, Scopes and Bindings
Looping ธนวัฒน์ แซ่เอียบ.
บทที่ 6 บทที่ 6 คำสั่งแก้ไขปัญหาแบบ เลือก (CONDITION)
การจัดทำเว็บไซต์สำเร็จรูปด้วยโปรแกรม Joomla!
นางลัดดาวรรณ คงพูล อาจารย์ประจำสาขาวิชาสามัญและพื้นฐาน
FILE AND DIRECTORIES พื้นฐานลินุกส์ ผู้สอน นายวุฒิชัย คำมีสว่าง.
System Database Semester 1, 2009 Worrakit Sanpote 1.
Entity-Relationship Model E-R Model
ซอฟต์แวร์ระบบที่รู้จักกันดี คือซอฟต์แวร์ควบคุมการปฏิบัติการ ของคอมพิวเตอร์ที่เรียกว่า ระบบปฏิบัติการ ระบบปฏิบัติการเป็นชุดคำสั่งที่ใช้ควบคุมระบบฮาร์ดแวร์และ.
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
Static Libraries ธวัชชัย เอี่ยมไพโรจน์. Static Libraries It is the simplest form of library. It is a collection of object files kept together in a ready-to-use.
Lab ธนวัฒน์ แซ่ เอียบ. Direct addressing รูปแบบนี้แต่ละคำสั่งสามารถอ้าง memory location ได้คือ –Current page –Page 0 การคำนวณ effective address ได้มาจากคำสั่ง.
โครงสร้างข้อมูลและอัลกอริทึม (Data Structure and Algorithm)
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
Database Management System
หน่วยที่ 6 แถวลำดับ (Array)
Allocatable Array. Modules A packaging method for data and subprograms. Syntax of the form: A packaging method for data and subprograms. Syntax of the.
การตรวจสอบคุณภาพเครื่องมือ
โครงสร้างโปรแกรมภาษา C
การเขียนโปรแกรม ภาษาปาสคาล (Pascal)
โปรแกรมย่อย อาจารย์สมเกียรติ ช่อเหมือน
Integrity Constraints
โดย อ.อภิพงศ์ ปิงยศ รายวิชา สธ312 ระบบการจัดการฐานข้อมูลทางธุรกิจ
Chapter 9 ตัวชี้ pointer.
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)
โครงสร้างโปรแกรมภาษา C
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
Object-Oriented Programming Paradigm
โครงสร้างภาษา C Arduino
บทที่ 4 ความรู้เกี่ยวกับระบบฐานข้อมูล
Project Project (โครงงาน) ปริญญานิพนธ์ กิจกรรมซึ่งดำเนินงานตามลำดับ
ระบบการจัดการคลินิกครบวงจร
Object-Oriented Programming Paradigm
Java Translation Object and Class ในมุมมองคอมพิวเตอร์ Objects หรือ Instances หมายถึงวัตถุที่กำเนิดตัวตนจริงๆจากต้นแบบที่กำหนดโดยคลาส Object.
“เรียนรู้ที่จะให้อภัย”
Chapter 7 ฟังก์ชัน Function.
การเขียนภาษาจาวาเบื้องต้น
Week 5 C Programming.
โปรแกรมย่อย (Sub Program)
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
การจัดบล๊อคและบัฟเฟอร์ (Blocking and Buffering)
Class Diagram.
Memory Management Ex. C = A + B A typical instruction-execution cycle
ใบสำเนางานนำเสนอ:

Names, Scopes and Bindings ธนวัฒน์ แซ่ เอียบ

The Concept of Binding Categories of variables by lifetimes –Static bound to memory cells before execution begins and remains bound to the same memory cell throughout execution. e.g. all FORTRAN 77 variables, C static variables Advantages: efficiency (direct addressing), history-sensitive sub program support Disadvantage: lack of flexibility (no recursion)

The Concept of Binding Categories of variables by lifetimes –Stack-dynamic--Storage bindings are created for variables when their declaration statements are elaborated. If scalar, all attributes except address are statically bound –e.g. local variables in C and Java Advantage: allows recursion; conserves storage Disadvantages: –Overhead of allocation and deallocation –Subprograms cannot be history sensitive –Inefficient references (indirect addressing)

The Concept of Binding Categories of variables by lifetimes –Explicit heap-dynamic--Allocated and deallocated by explicit directives, specified by the programmer, which take effect during execution Referenced only through pointers or references e.g. dynamic objects in C++ and all objects in Java Advantage: provides for dynamic storage management Disadvantage: inefficient and unreliable

Scope สิ่งสำคัญในการทำความเข้าใจตัวแปร Def: The scope of a variable – ช่วงของ statement ที่สามารถมองเห็นตัว แปร Def: The local variables – ตัวแปรที่มีการประกาศใน subprogram หรือ block Def: The nonlocal variables – ตัวแปรที่สามารถมองเห็นภายใน subprogram หรือ block แต่ไม่ได้ประกาศที่ นั่น

Static Scope ภาษา ALGOL60 เป็นภาษาแรกที่นำเสนอ scope สำหรับตัวแปรที่เป็นแบบ nonlocal แบบ นี้ ( ภาษา imperative อื่นได้นำแนวคิดไปใช้ ด้วย ) ตัวแปรถูกกำหนด scope ก่อนการปฏิบัติงาน อย่างชัดเจน ตัวอย่าง subprogram ของภาษา Pascal

Static Scope procedure big; var x : integer; procedure sub1; begin … x … end; procedure sub2; var x : integer; begin … end; begin … end; Static parent hidden

Block ภาษาแรกที่ใช้คือ ALGOL60 เป็นรูปแบบ static scope ที่ทำให้ส่วนหนึ่งของ โค๊ดเป็นเจ้าของตัวแปรได้ ตัวแปรจะมีพื้นที่ในหน่วยความจำเมื่อเข้าสู่ section และคืนพื้นที่เมื่อออกจาก section ( เรียก section นี้ว่า block) if (i<j){ int temp; temp = i; i = j; j = temp }

Block #include int i = 0; int main() { printf("%d ", i); { int i = 1; printf("%d ", i); { int i = 2; printf("%d ", i); i++; printf("%d ", i); } printf("%d ", i); } printf("%d\n", i); }

Dynamic scoping ภาษาที่เป็นแบบนี้เช่น APL, SNOBOL4, LISP Scope เกิดขึ้นจากลำดับการเรียก (calling sequence) ของ subprogram procedure big; var x : integer; procedure sub1; begin … x … end; procedure sub2; var x : integer; begin … end; begin … end; สมมุติเป็นแบบ dynamic scoping ถ้า big เรียก sub2 และ sub2 เรียก sub1 ใน sub1 อ้างถึง x ?

Scope and lifetime Lifetime ของตัวแปรอาจจะพิจารณาจาก scope ของตัวแปรนั้นได้ if (i<j){ int temp; temp = i; i = j; j = temp } void printheader(){ … } void compute(){ int sum; … printheader(); }

ที่มา Concepts of programming languages : Sebesta, Robert W.