Type Judgments และ Type Rules. คำศัพท์ที่จะใช้ Type judgment: การตัดสินความถูกต้องของ type สำหรับ expression หรือ statement ใน โปรแกรม – เป็นบทสรุป (conclusion)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Suphot Sawattiwong Array ใน C# Suphot Sawattiwong
Advertisements

โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
บทที่ 2 รหัสควบคุมและการคำนวณ
Introduction to C Introduction to C.
รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
โครงสร้างโปรแกรมภาษา C
โครงสร้างภาษาซี เบื้องต้น
การจัดการความผิดพลาด
บทที่ 2 ภาษาปาลคาลเบื้องต้น.
Control Statement for while do-while.
บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูลชนิดพอยท์เตอร์
Chapter 7 ขอบเขตของตัวแปร Variable Scope.
Intermediate Representation (รูปแบบการแทนในระยะกลาง)
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
รหัสระหว่างกลาง (Intermediate code)
Functional Programming
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
Lecture 13: ฟังก์ชันเรียกตัวเอง
ฟังก์ชัน (Function).
Structure Programming
Structure Programming
ชนิดของข้อมูลและตัวดำเนินการ
LAB # 4.
Visual Basic 6 By Samaporn Yendee VB6.
หน่วยที่ 1 ระบบคอมพิวเตอร์
ฟังก์ชั่น function.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
Lecture no. 2: Overview of C Programming
Lecture no. 3: Review and Exercises
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
ความรู้พื้นฐานเกี่ยวกับการวิจัย
คำสั่งควบคุมเงื่อนไข และการทำงานเป็นรอบ
C# Programming Exceed Camp: Day 3.
ไวยากรณ์ของภาษาการทำโปรแกรม (1) (Syntax of programming languages)
Lecture 4 องค์ประกอบภาษา C To do: Hand back assignments
บทที่ 7 คำสั่งสำหรับเขียนโปรแกรม
ชนิดของข้อมูล ตัวแปร และตัวดำเนินการ
ตัวแปรกับชนิดของข้อมูล
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ประวัติความเป็นมาภาษาซี
ตัวแปรกับชนิดของข้อมูล
Method of Class อ.สุพจน์ สิงหัษฐิต
พีชคณิตบูลีน และการออกแบบวงจรลอจิก (Boolean Algebra and Design of Logic Circuit)
ทบทวน กันก่อน .....กระบวนการแปลโปรแกรม
Week 12 Engineering Problem 2
Week 7 การเขียนโปรแกรมเบื้องต้น
คำสั่งควบคุมขั้นตอน Flow control statements
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการเขียนโปรแกรม ( )
หลักการเขียนโปรแกรม ( )
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างภาษาซี #include <stdio.h> void main() {
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
หลักการเขียนโปรแกรม ( )
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โครงสร้าง ภาษาซี.
พื้นฐานการเขียนโปรแกรมด้วย C#
บทที่ 6 คำสั่งเงื่อนไข.
บทที่ 2 โครงสร้างของภาษา C.
Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
Function. วัตถุประสงค์การเรียนรู้ ให้รู้จักว่าฟังก์ชันคืออะไร ให้รู้จักว่าเราสร้างฟังก์ชันเพื่อจุดประสงค์ใด หรือ เพื่อประโยชน์ใด ให้รู้จักประเภทของฟังก์ชัน.
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
Summations and Mathematical Induction Benchaporn Jantarakongkul
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
ใบสำเนางานนำเสนอ:

Type Judgments และ Type Rules

คำศัพท์ที่จะใช้ Type judgment: การตัดสินความถูกต้องของ type สำหรับ expression หรือ statement ใน โปรแกรม – เป็นบทสรุป (conclusion) ของการทำ type checking Type rules: กฏเกณฑ์ที่จะใช้ในการทำ type judgment – เขียนโดยใช้ inference rules – กำหนดโดยผู้ออกแบบภาษาโปรแกรม Context หรือ environment: ข้อมูลการ binding ของวัตถุในโปรแกรมเช่นตัวแปร ฟังก์ชั่น หรือ type – Symbol table เป็นตัวเก็บข้อมูลพวกนี้

Typing Judgment ( การตัดสิน type) E : T อ่านว่า E เป็น expression ที่มี type T ตัวอย่างของ type judgment – 2 : int – true : bool – 2 * (3 + 4) : int – “Hello” : string

Type Judgment สำหรับ Expression พิจารณา (b ? 2 : 3) : int จะตัดสินได้ว่า expression นี้มี type เป็น int จริง จะต้องได้ว่า : – b : bool – 2 : int – 3 : int

Notation ( สัญลักษณ์ ) A Ⱶ E : T อ่านว่า “ ใน context ของ A สามารถ พิสูจน์ได้ว่า E เป็น expression ที่มี type T” Context ของ type เป็น set ของการทำ binding – โครงสร้างอะไรในคอมไพเลอร์ที่เก็บข้อมูลนี้ ? Symbol table ตัวอย่างการใช้งาน – b : bool, x : int Ⱶ b : bool – b : bool, x : int Ⱶ (b ? 2 : x) : int

ขั้นตอนการทำ type judgment ใช้ inference rules เป็นหลัก ต้องการข้อสรุป (conclusion) ว่า : – b : bool, x : int Ⱶ (b ? 2 : x) : int ต้องให้ได้ว่าสมมุติฐาน (hypothesis หรือ premises) ต่อไปนี้เป็นจริง – b : bool, x : int Ⱶ b : bool – b : bool, x : int Ⱶ 2 : int – b : bool, x : int Ⱶ x : int

กฎทั่วไปของ expression ตัวอย่าง A Ⱶ (E 1 ? E 2 : E 3 ): T เป็นจริงเมื่อ A Ⱶ E 1 : bool A Ⱶ E 2 : T A Ⱶ E 3 : T เขียนโดยใช้ notation ของ inference rule:

การพิสูจน์ expression type การพิสูจน์ว่า expression E มี type เป็น T (E : T) ทำได้โดยการสร้าง proof tree แสดงการทำ type derivation เพื่อตัดสิน E : T (type judgment) ตัวอย่างของ proof tree:

Type Rules Axiom ( ไม่มี premises) การบวก expression

Rule สำหรับ while statement ให้ default type ของ statement S ทุกๆชนิดเป็น void กฎของ while เป็นดังนี้

Assignment Statements

โปรแกรมแบบ straight-line กฎ : ถ้าประโยคแรกมี type ถูกต้องและประโยคที่ เหลือมี type ที่ถูกต้องแล้ว ลำดับของประโยค ทั้งหมดที่เกี่ยวข้องมี type ที่ถูกต้องด้วย

Declarations ( การประกาศ ) Declarations เพิ่ม binding เข้าไปใน environment หรือ context เพิ่ม id และ type ที่เกี่ยวข้องเข้าไปใน symbol table

Function Calls ถ้า E เป็น function call expression มันจะมี type ดังต่อไปนี้ : T 1 x T 2 x … x T n -> T r เราจะ type check function call E(E 1,E 2, … E n ) โดยใช้กฏต่อไปนี้

Function Declarations จะต้องมีการใส่ arguments เข้าไปใน symbol table จากนั้นทำ type check บอกว่า declaration นี้ ใช้ได้

Recursive Function Type check ด้วยการ พิสูจน์ว่า : โดย context A ต้องมี สมาชิกต่อไปนี้ : ต้องมี binding ต่อไปนี้อยู่ใน context:

Return Statement นี้ไม่ได้ให้ค่าเพื่อใช้ใน context ปัจจุบัน เราจะ type check return ด้วยการเพิ่ม ret : T r เข้า ไปใน symbol table เริ่มจาก declaration: กฎการ type check เพื่อให้แน่ใจว่า expression ที่ return E มี type ตามที่ declaration กำหนดภายใต้ context A: