Chapter 1 What is Programing Paradigm 1



Similar documents
FY.DOC

<4D F736F F F696E74202D20312EB9FEB6FBB1F5B9A4D2B5B4F3D1A7D5E7C1BCA3BAC3E6CFF2D1D0BEBFC9FAB8B4CAD4B5C4BDE1B9B9BBAFC3E6CAD4BFBCBACBCCBDCBF7D3EBCAB5BCF92E BBCE6C8DDC4A3CABD5D>

Lorem ipsum dolor sit amet, consectetuer adipiscing elit

C++ 程式設計

Microsoft PowerPoint - ch6 [相容模式]

(Microsoft Word - 11\244T\246\342\277\337\260l\302\334.doc)

课 程 结 构 : 一 规 章 制 度 撰 写 二 劳 动 合 同 订 立 变 更 三 工 作 内 容 绩 效 管 理 四 违 纪 违 规 问 题 员 工 处 理 2

穨japhkesch.PDF

丁无悔

019-

042-

親鸞和懺悔道的哲學

027-

025-

浙 江 财 经 大 学 891 统 计 学 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 浙 江 财 经 大 学 统 计 学 891 全 套 考 研 资 料...22 浙 江 财 经 大 学 高 等 数 学 601 全 套 考 研 资 料

<4D F736F F D EA16DBB50B3AFA742A4A7AED1A16EBD67A6AEA4CEA8E4C3C0B34EAF53A6E2B1B4AA522D2DB3B9A5BFA9BE5F702E34332D35345F2E646F63>

Microsoft Word 司仲敖.doc

Microsoft Word - Book 2 月下行.doc

Microsoft Word - Book 11 人道行.doc

山 东 财 经 大 学 431 金 融 学 综 合 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 2-2 金 融 学 笔 记, 由 考 取 本 校 本 专 业 高 分 研 究 生 总 结 而 来, 重 点 突 出, 借 助 此 笔 记 可 以 大 大 提 高 复 习 2-3 金

盐 田 区 2015 年 社 会 建 设 行 动 计 划 2015 年 是 全 面 深 化 改 革 的 关 键 之 年 全 面 推 进 依 法 治 区 的 开 局 之 年, 也 是 十 二 五 规 划 的 收 官 之 年 十 三 五 规 划 的 谋 划 之 年 结 合 省 市 年 度 社 会 工 作

Microsoft Word - _二_-1-2D研習講義-孫藝玨.doc

zt

Microsoft Word - Book 3 巫山行.doc

Microsoft Word - 【預官_士_考選歷屆試題86~100】.doc

一、银行结售汇业务

田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田

<4D F736F F D BEC7A67E2DB5A7B8D52DBB79A4E5AFE0A44FB4FAC5E7BEE3A658A5FE2E646F63>

第 一 部 分 目 录 销 售 管 理 规 范 汇 编... 5 Ⅰ 销 售 资 格 管 理 篇 关 于 保 险 公 司 销 售 人 员 资 格 管 理 的 规 定 关 于 银 邮 代 理 机 构 代 理 资 格 管 理 的 规 定 关 于 银 邮

Microsoft Word - 台東縣文學.doc

第 1 頁 C97131 第 一 部 分 : 選 擇 題 ( 佔 54 分 ) 一 單 選 題 ( 佔 36 分 ) 說 明 : 第 1 題 至 第 18 題, 每 題 選 出 一 個 最 適 當 的 選 項, 標 示 在 答 案 卡 之 選 擇 題 答 案 區 每 題 答 對 得 2 分, 答 錯

第 1 頁 C97232 第 一 部 分 : 選 擇 題 ( 佔 55 分 ) 一 單 選 題 ( 佔 34 分 ) 說 明 : 第 1 至 第 17 題, 每 題 選 出 一 個 最 適 當 的 選 項, 劃 記 在 答 案 卡 之 選 擇 題 答 案 區 每 題 答 對 得 2 分, 答 錯 或

蘇轍〈黃州快哉亭記〉析論

一 緒 論 ( 一 ) 研 究 動 機 及 目 的 中 國 唐 代 為 佛 教 發 展 輝 煌 時 期, 其 中 禪 宗 也 是 當 時 鼎 盛 流 行 的 宗 派 之 一 本 文 主 要 在 探 討 馬 祖 道 一 (709~788, 以 下 簡 稱 馬 祖 ) 所 傳 承 的 洪 州 禪 ( 又



鲤城区保留的区级前置审批事项目录(116项).xls

关于印发《干部人事档案材料收集归档规定》的通知

第 1 頁 C97231 第 一 部 分 : 選 擇 題 ( 佔 55 分 ) 一 單 選 題 ( 佔 34 分 ) 說 明 : 第 1 至 第 17 題, 每 題 選 出 一 個 最 適 當 的 選 項, 劃 記 在 答 案 卡 之 選 擇 題 答 案 區 每 題 答 對 得 2 分, 答 錯 或


彰化縣九十一年運動大會目錄

专业技术人员正高级

語文學習領域─本國語文(國語文)



学 习 贯 彻 中 央 尧 省 尧 市 纪 委 全 会 精 神 专 栏 中 国 共 产 党 第 十 八 届 中 央 纪 律 检 查 委 员 会 第 六 次 全 体 会 议 公 报 渊 2016 年 1 月 14 日 中 国 共 产 党 第 十 八 届 中 央 纪 律 检 查 委 员 会 第 六 次

Microsoft Word - 临政办发12.doc

中共山东省委高校工委

目 录 第 一 部 分 国 家 知 识 产 权 局 概 况 一 主 要 职 能 二 部 门 预 算 单 位 构 成 第 二 部 分 国 家 知 识 产 权 局 2016 年 部 门 预 算 表 一 财 政 拨 款 收 支 总 表 二 一 般 公 共 预 算 支 出 表 三 一 般 公 共 预 算 基

科学技术部2013年度部门预算

Transcription:

An Introduction to Programing Paradigm Chase Zhang May 8, 2013

Chapter 1 What is Programing Paradigm 1

CHAPTER 1. WHAT IS PROGRAMING PARADIGM 2 Definition from Wikipedia 1. Object-oriented programming/ 2. Functional programing / 3. Meta programing/

CHAPTER 1. WHAT IS PROGRAMING PARADIGM 3 Python Ruby, JavaScript C Java

Chapter 2 4

CHAPTER 2. 5 1. SmallTalk 2. C++ 3. Java 4. Python 5. Ruby 6. JavaScript 7. Objective-C 8. C#

CHAPTER 2. 6 1 // A C lang s way to do this 2 typedef struct _member { 3 char* name; 4 int sex; 5 int student_id; 6 int class_id; 7 int school_id; 8 int grade; 9 }member; 10 11 // define the functions to generate and destroy structs 12 member* create_member(); 13 void delete_member(member* m);

CHAPTER 2. 7 1 member* m = create_member(); 2 3 // It s not good to allow accessing to properties directly 4 m->sex = 12431234; 5 m->grade = 3000; 6 7 // You should uses setter functions 8 void set_member_name(member* m,char* name); 9 void set_member_sex(member* m,int name); 10 void set_member_student_id(member* m,int name); 11 void set_member_class_id(member* m,int name); 12 void set_member_grade(member* m,int name);

CHAPTER 2. 8 1 //redefine struct 2 3 typedef struct _member { 4 char* name; 5 int sex; 6 int student_id; 7 }member; 8 9 //define getter functions 10 11 char* get_member_name(member* m); 12 int get_member_sex(member* m); 13 int get_member_student_id(member* m); 14 int get_member_class_id(member* m); 15 int get_member_grade(member* m);

CHAPTER 2. 9 C 1. 2. set_member_xxx get_member_xxx 3. set_xxx get_xxx 4. member 5. 10 Let's solve these problems!

CHAPTER 2. 10 See Ruby s Way 1 class Member 2 def initialize(name,student_id) 3 # Hello everyone, I am the initializer 4 @name = name 5 @student_id = student_id 6 @sex = sex 7 end 8 9 def name=(name) 10 # do something here to make sure a valid name is given 11 @name = name 12 end 13

CHAPTER 2. 11 14 def name 15 @name # you do not need a reference to the instance here 16 end 17 end 18 19 # generate a new member, the initialize function will be called automatically 20 a_member = Member.new("Chase Zhang","0709xxxx","boy") 21 a_member.name = "Hello" 22 puts a_member.name

CHAPTER 2. 12 Why this way? 1. 1 2. 4 3. 4. 3 5.

CHAPTER 2. 13 1 class Member 2 # magics here!add only one line, you get 3 pairs of setters and getters 3 # it s the magic of metaprograming that we ll talk about later 4 attr_accessor :student_id,:name,:sex 5 def initialize(name,student_id,sex) 6 @name = name # this is a property 7 @student_id = student_id 8 @sex = sex 9 end 10 end 11 a_member = Member.new("Chase Zhang","0709xxxx","boy") 12 a_member.student_id = "01111111" 13 puts a_member.student_id # print a_member.student_id

CHAPTER 2. 14 / 1. / 2.

CHAPTER 2. 15 1 # all instances of the same class shared the functions 2 # but every instance of class is seperated 3 # the interperetor knows whose perperties to use 4 # and returns the correct value 5 6 a = Member.new("Chase Zhang","xxxxxxx","boy") 7 b = Member.new("Sean Lee","xxxxxxxx","boy") 8 9 puts a.name 10 # Chase Zhang 11 12 puts b.name 13 # Sean Lee

CHAPTER 2. 16 Ruby Python C++ / new

CHAPTER 2. 17 1 class Vec2 2 attr_accessor :x,:y 3 def initialize(x,y) 4 @x=x 5 @y=y 6 end 7 def +(v2) 8 x = @x + v2.x 9 y = @y + v2.y 10 Vec2.new(x,y) 11 end 12 end 13 v1 = Vec2.new(1,3) 14 v2 = Vec2.new(2,5) 15 v1+v2 # we get Vec2(3,8)

CHAPTER 2. 18

Chapter 3 Magics Magic 19

CHAPTER 3. MAGICS 20 1 int sort_member(const void* member1,const void* member2) 2 { 3 member* m1 = (member*) member1; 4 member* m2 = (member*) member2; 5 return strcmp(m1->name,m2->name); 6 } 7 int main(void) 8 { 9 //... 10 qsort(member_list, 11 sizeof(member_list)/sizeof(member*), 12 sort_member); 13 return 0;}

CHAPTER 3. MAGICS 21 1 # ruby 2 3 member_list.sort do x,y 4 x.name <=> y.name 5 end 6 # that s all

CHAPTER 3. MAGICS 22 C 1 void print_member_if_sex(member* m,int sex) 2 { 3 if(sex==0){ 4 printf("%s\n",m->name); 5 } 6 } 7 8 int main(int argc, const char *argv[]) 9 { 10 //... 11 int i; 12 int sex = 0; // Zero stands for boy

CHAPTER 3. MAGICS 23 13 for (i = 0; i < sizeof(member_list)/sizeof(member*); i++) { 14 print_member_if_sex(member_list[i],sex); 15 // You must past the varible sex into the function 16 } 17 return 0; 18 }

CHAPTER 3. MAGICS 24 1 sex_wanted = "boy" 2 3 member_list.each do member 4 if member.sex == sex_wanted 5 puts member.name 6 end 7 end 8 # that s all

Chapter 4 Meta 25

CHAPTER 4. META 26

CHAPTER 4. META 27 1 class Member 2 attr_accessor :student_id,:name,:sex 3 4 5 # magic >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 6 7 def self.field(sym,range) 8 # a program to program 9 define_method sym do 10 @student_id[range] 11 end 12 end 13 14 # magic <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 15

CHAPTER 4. META 28 16 def initialize(name,student_id,sex) 17 @name = name 18 @student_id = student_id 19 @sex = sex 20 # magic > 21 Member.field :school_id, 0..1 22 Member.field :grade, 2..3 23 # magic < 24 end 25 end 26 27 c = Member.new "Chase Zhang","0709xxxx","boy" 28 29 puts c.school_id # 07 30 puts c.grade # 09

CHAPTER 4. META 29 1 # before magic 2 puts 1+1 # 2 3 4 # magic >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 5 class Fixnum 6 alias :old_plus :+ # new name for plus operator 7 8 def +(value) 9 0 10 end 11 end 12 # magic <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

CHAPTER 4. META 30 13 14 # after magic 15 puts 1+1 # 0

Chapter 5 Thank you and... 31

CHAPTER 5. THANK YOU AND... 32 1. Ruby 2. Dive into Python 3. Ruby Some Books Some websites 1. http://ruby.learncodethehardway.org/ 2. http://learnpythonthehardway.org/ 1. JavaScript/CoffeeScript 2. Lisp Some Languages