Names, Scopes and Bindings

Slides:



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

โครงสร้างโปรแกรมภาษา C
Structure Programming
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 22 มิถุนายน 2550 ความผิดพลาดที่พบ บ่อย มหาวิทยาลัยเนชั่น.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
List ADTs By Pantharee S..
Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.
Programming Languages ธนวัฒน์ แซ่เอียบ โฮมเพจรายวิชา
Syntax and Semantics ธนวัฒน์ แซ่เอียบ.
Array ธนวัฒน์ แซ่ เอียบ. The concept of array อาเรย์ : กลุ่มของข้อมูลที่มีชนิดเดียวกันและถูก จัดเก็บเรียงลำดับต่อเนื่องกัน ตัวแปร x สามารถจัดเก็บค่ามากกว่า.
การเขียนคำสั่งควบคุม การทำงานขั้นพื้นฐาน
แบบจำลองฐานข้อมูล คือ เครื่องมือในเชิงแนวคิดที่ใช้ในการอธิบาย ข้อมูล
หลักการโปรแกรม 1 Lecture 14: โปรแกรมย่อย ( การส่งพารามิเตอร์ แบบ pass by reference)
Operator of String Data Type
Names, Scopes and Bindings ธนวัฒน์ แซ่ เอียบ. The Concept of Binding Categories of variables by lifetimes –Static bound to memory cells before execution.
Chapter 5 Elementary C++ Programming Dept of Computer Engineering Khon Kaen University.
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
Chapter 10 Arrays Dept of Computer Engineering Khon Kaen University.
ชนิดของข้อมูล และการคำนวณทางคณิตศาสตร์
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
ซอฟต์แวร์และการเลือกใช้
ตัวแปร และชนิด ข้อมูล. ตัวแปร การกำหนดตัวแปรเป็นการใช้ ชื่อตัวแปรแทน ตำแหน่งบนหน่วยความจำ สำหรับเก็บ ข้อมูลระหว่างการ ประมวลผล ซึ่งอาจเป็นข้อมูลนำเข้า.
MEE 231 Computer Programming สัปดาห์ที่ 6 ภาษา C หลักการของโปรแกรม ชนิดของตัวแปร การดำเนินการ คำสั่งการรับค่าตัวแปร และการแสดงผล.
Intro Excel 2010 ข้อมูลจาก... ellession1.htm.
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
เรื่อง ภาษาซีเบื้องต้น จัดทำโดย นางสาวชาดา ศักดิ์บุญญารัตน์
คำสั่งควบคุมการทำงาน
การตรวจสอบคุณภาพเครื่องมือ
โครงสร้างโปรแกรมภาษา C
หลักการโปรแกรม อ.ธนากร อุยพานิชย์.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 5 อินพุตและเอาต์พุต
ครูวีรธรรม เทศประสิทธิ์ แผนกวิชาคอมพิวเตอร์ธุรกิจ
Chapter 9 ตัวชี้ pointer.
Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 4 เครื่องหมาย ตรรกะศาสตร์ และการดำเนินการทางตรรกะศาสตร์
การจัดการระบบฐานข้อมูล ภาษาที่ใช้ในระบบจัดการฐานข้อมูล
การพัฒนาการใช้งานในระบบเว็บ
โครงสร้างโปรแกรมภาษา C
ความรู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรม
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
โครงสร้างภาษา C Arduino
+ Software บทที่ 3 ซอฟต์แวร์ระบบสารสนเทศ Hardware
บทที่ 4 ตัวแปร (Variables)
ตัวแปรและการคำนวณ Variables and Calculation
ตัวแปรกับชนิดของข้อมูล
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
The Collections Framework
introduction to Computer Programming
การสร้างโมเดลจำลองความสัมพันธ์ ระหว่างข้อมูล E-R Model
Java Translation Object and Class ในมุมมองคอมพิวเตอร์ Objects หรือ Instances หมายถึงวัตถุที่กำเนิดตัวตนจริงๆจากต้นแบบที่กำหนดโดยคลาส Object.
Method and Encapsulation
บริษัท พัฒนาวิชาการ (2535) จำกัด
การเขียนภาษาจาวาเบื้องต้น
Week 5 C Programming.
SMS News Distribute Service
ผู้ช่วยศาสตราจารย์จุฑาวุฒิ จันทรมาลี
Variable Constant.
หน่วยการเรียนรู้ การเขียนโปรแกรมภาษาขั้นพื้นฐาน เรื่อง โครงสร้างพื้นฐาน HTML 5 รหัส รายวิชา ง23102 การงานอาชีพและเทคโนโลยี 6 กลุ่มสาระ การงานอาชีพและเทคโนโลยี
OPERATOR ภาษาปาสคาล (Pascal)
2 โครงสร้างข้อมูลแบบสแตก (STACK).
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
การเขียนโปรแกรมภาษา Java (ต่อ)
Chapter 3 : Array.
การจัดบล๊อคและบัฟเฟอร์ (Blocking and Buffering)
ฟังก์ชันของโปรแกรม Computer Game Programming
Class Diagram.
Computer Game Programming
ใบสำเนางานนำเสนอ:

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

Introduction Abstraction ของภาษา imperative อยู่ภายใต้สถาปัตยกรรมของเครื่องคอมพิวเตอร์ที่สร้างขึ้นโดย von Neumann ส่วนประกอบสำคัญมี 2 ส่วนคือ Memory Processor มี operation เปลี่ยนแปลง contents ของ memory Memory cells ของเครื่อง สำหรับภาษาคือ ?

Variable Variable ประกอบด้วยกลุ่มของ properties หรือ attributes เช่น Name, Type, Scope, Lifetime, Type checking, Initialization Name not all variables have them is a string of characters used to identify some entity in program Design issues for names: Maximum length? Are connector characters allowed? Are names case sensitive? Are special words reserved words or keywords?

Names Length ภาษายุคแรกใช้ 1 ตัวอักษร ซึ่งเพียงพอสำหรับคำนวณสมการทางคณิตศาสตร์ Language examples: FORTRAN I: maximum 6 COBOL: maximum 30 FORTRAN 90 and ANSI C: maximum 31 Ada and Java: no limit C++: no limit

Names Case sensitivity ชื่ออักษรตัวเล็กและตัวใหญ่แตกต่างกัน C, C++, and Java names are case sensitive ใน C มีตัวแปร เช่น Rose, rose, ROSE Readability & Writability ใน Java มี method สำหรับเปลี่ยนจาก String เป็น integer เช่น parseInt

Names Special words เป็นการนำคำที่สอดคล้องกับการปฏิบัติงานมาใช้ในโปรแกรมเพื่อให้อ่านโปรแกรมได้ง่ายขึ้น Keyword คือคำที่ขึ้นอยู่กับ context เช่น ใน Fortran REAL APPLE REAL INTEGER REAL = 3.4 INTEGER REAL Reserved word คือคำที่สงวนไว้ ไม่สามารถนำไปใช้สร้างเป็นชื่อได้ Predefined มีความหมายระหว่าง reserves word และ user-defined name printf ของภาษา C ?

Address คือ memory address ของตัวแปรนั้น (บางครั้งเรียก l-value) ตัวแปร sum ของ sub1 อยู่ที่ address หมายเลข FF00 sub1(); sub1(); สมมุติว่าทั้ง sub1 และ sub2 มีตัวแปรชื่อเดียวกันคือ sum sub1() [FF00] sub2() [?] Alias หมายถึงตัวแปรตั้งแต่สองตัวมี address เหมือนกัน Aliases are harmful to readability (program readers must remember all of them)

Type ใช้สำหรับพิจารณาช่วงค่าที่ตัวแปรสามารถเป็นไปได้ และ operator ต่างๆที่สามารถทำงานได้ type size range operator byte integer double String

Value คือ content ของ memory cell ของตัวแปรนั้น byte b1 byte b2 integer i double d บางครั้งเรียก r-value 1 2 3 4 5 6 7 8 9

The Concept of Binding Binding คือความสัมพันธ์ เช่น Entity กับ attribute หรือ Symbol กับ operation เวลาที่เกิด binding เรียกว่า binding time เช่น design time, compile time, link time, load time, run time พิจารณา statement ของภาษา C ต่อไปนี้ int count; … count = count + 5; 1. int ถูกกำหนดช่วงของค่าที่เป็นไปได้ตอน ? 2. count ถูกกำหนด type ตอน ? 3. ค่าของ count ถูกกำหนดตอน ? 4. ความหมายของ + ใน statement ถูกกำหนดตอน ?

The Concept of Binding Possible binding times: Language design time--e.g., bind operator symbols to operations Language implementation time--e.g., bind floating point type to a representation Compile time--e.g., bind a variable to a type in C or Java Load time--e.g., bind a FORTRAN 77 variable to a memory cell (or a C static variable) Runtime--e.g., bind a nonstatic local variable to a memory cell

The Concept of Binding Def: A binding is static if it first occurs before run time and remains unchanged throughout program execution. Def: A binding is dynamic if it first occurs during execution or can change during execution of the program.

The Concept of Binding Type Bindings มีวิธีการระบุ type อย่างไร ? จะทำเมื่อไร ? ถ้าเป็นแบบ static การระบุควรจะเลือกแบบ explicit หรือ implicit declaration ?

The Concept of Binding Variable declaration explicit declaration เป็นรูปแบบที่ใช้ statement กำหนด type ของตัวแปรอย่างชัดเจน implicit declaration ใช้ข้อกำหนดของการตั้งชื่อเพื่อระบุ type เช่น ในภาษา Fortran ถ้าชื่อขึ้นต้นด้วย I, J, K, L, M จะหมายถึง integer type FORTRAN, PL/I, BASIC, and Perl provide implicit declarations Advantage: writability Disadvantage: reliability (less trouble with Perl)

The Concept of Binding Dynamic Type Binding (JavaScript and PHP) Specified through an assignment statement e.g., JavaScript list = [2, 4.33, 6, 8]; list = 17.3; Advantage: flexibility (generic program units) Disadvantages: High cost (dynamic type checking and interpretation) Type error detection by the compiler is difficult

The Concept of Binding Type Inference นำ type ของ expression มาพิจารณา (โปรแกรมไม่จำเป็นต้องระบุ type ก็ได้) ML เป็นภาษาที่เป็นทั้ง functional และ imperative fun circumf(r) = 3.14159 * r * r; fun times10(x) = 10 * x; Fun square(x) = x * x;

The Concept of Binding Storage Bindings & Lifetime Allocation - getting a cell from some pool of available cells Deallocation - putting a cell back into the pool sub1(){ int b; } sub2(){ int c; Main(){ int a; sub1(); sub2();

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