第1章历史回顾与语言分类 ·说明程序设计语言的发展阶段,并列出每一个 阶段出现的两到三种最重要语言。 程序设计语言的成功=设计好坏+实现难易+权 势支持+社会需要: FORTRON-Alogo160; Modula2-Ada; BASIC- Pascal; Pascal-C; 第1页
第1页 第1章 历史回顾与语言分类 • 说明程序设计语言的发展阶段,并列出每一个 阶段出现的两到三种最重要语言。 • 程序设计语言的成功=设计好坏+实现难易+权 势支持+社会需要: –FORTRON-Alogol60; Modula2-Ada; BASICPascal;Pascal-C;
第2章程序设计语言设计概述* ·程序设计语言的几个设计目标、设计准 则之间的关系。 ·掌握程序设计语言的规格说明 第2页
第2页 第2章 程序设计语言设计概述* • 程序设计语言的几个设计目标、设计准 则之间的关系。 • 掌握程序设计语言的规格说明
第一次随堂作业 1.请用扩展的BNF描述C语言里语句的结构; 假定有语法类表示一般表达式,表示可用于 switch标号的静态表达式; 2.请用扩展的BNF描述C++语言里类声明的结构; 假定有语句类表示语句,有参数列表类 表达参数列表; 3.请用扩展的BNF描述Java语言里类声明的结构; 假定有语句类表示语句,有参数列表类 parameter list表达参数列表,有表达式类 表达表达式;
1. 请用扩展的 BNF 描述 C语言里语句的结构; 假定有语法类 表示一般表达式, 表示可用于 switch 标号的静态表达式; 2. 请用扩展的 BNF 描述 C++语言里类声明的结构; 假定有语句类表示语句,有参数列表类 表达参数列表; 3. 请用扩展的 BNF 描述 Java语言里类声明的结构; 假定有语句类表示语句,有参数列表类 表达参数列表,有表达式类 表达表达式; 第一次随堂作业
EBNF BNF::=代替→BNF表达能力同EBNF >指示非终结终结符直接写出(或黑体) 或者 有扩充:[]括号内容是可选的 {}括号内容可重复0至多次 或扩充:C+’Kleene加’C可重复1至多次 C*Kleene星C可重复0至多次 EBNF:左端取消ㄑ>,空白加‘- 减少递归表示再加‘(’,)’, 尽量用正则表达式 终结符号加‘’号或黑体
EBNF BNF: ::=代替→ BNF表达能力同EBNF 指示非终结 终结符直接写出(或黑体) | 或者 有扩充: [ ] 括号内容是可选的 { } 括号内容可重复0至多次 或扩充: C+ 'Kleene加' C可重复1至多次 C* ‘Kleene星’ C可重复0至多次 EBNF: 左端取消, 空白加‘-’ 减少递归表示再加‘(’ , ‘)’ , ‘.’ , 尽量用正则表达式 终结符号加‘ ’号或黑体
EBNF示例 program : '; '.' program-heading-::=program' [’()] program-parameters-:= identifier-list::={,’}. program-block-::=block> block:= ’; {variabe-declaration->’;’}]. variable-declaration-::=’;’ statement-part= compound-statement-
EBNF示例 program ::= ';' '.'. program-heading ::= 'program' [ '(' ')']. program-parameters ::= . identifier-list ::= {',' } . program-block ::= . block ::= . variable-declaration-part ::= ['var' ';' { ';' }]. variable-declaration ::= ';' . statement-part ::= compound-statement
第3章过程式程序设计语言 ·值与类型 ·存储与束定 程序控制 ·函数与过程 ·抽象与封装 第6页
第6页 第3章 过程式程序设计语言 • 值与类型 • 存储与束定 • 程序控制 • 函数与过程 • 抽象与封装
第一次课后作业 1.计算对象的表示值与类型 请给出R语言 Python和语言中哪些值是头等程序 对象?为什么? 头等程序对象 可出现在表达式中并求值 可作函数返回值 可单独存储 可以构成复杂的数据结构 可作函数参数
1. 计算对象的表示—值与类型 – 请给出R语言和Python语言中哪些值是头等程序 对象?为什么? – 头等程序对象 – 可出现在表达式中并求值 – 可作函数返回值 – 可单独存储 – 可以构成复杂的数据结构 – 可作函数参数 第一次课后作业
1.算对象的表示值与类型 请给出R语言 Python和语言类型系统的类型(无类型or弱 类型or强制类型or伪强类型or强类型),以及为什么 是该类型? 静态与动态 静动 变量有类型无类型动态简洁、灵活 参数有类型无类型静态清晰、死板 值有类型有类型 弱/强类型 无类型lsP, Smalltalk 弱类型变量有类型。类型兼容性大,系统不作检查 强制类型隐式类型强制(转换),自动截尾补零。显式 类型强制PL/1 伪强类型静态均有类型且作检查由于不严,导出等价准则 Pascal -强类型类型有严格定义,均作检查Ada
1. 计算对象的表示—值与类型 – 请给出R语言和Python语言类型系统的类型(无类型 or 弱 类型 or 强制类型 or 伪强类型 or 强类型),以及为什么 是该类型? – 静态与动态 – 静 动 – 变量 有类型 无类型 动态简洁、灵活 – 参数 有类型 无类型 静态清晰、死板 – 值 有类型 有类型 – 弱/强类型 – 无类型 LISP , Smalltalk – 弱类型 变量有类型。类型兼容性大, 系统不作检查 – 强制类型 隐式类型强制(转换),自动截尾, 补零。显式 类型强制 PL/1 – 伪强类型 静态均有类型且作检查,由于不严,导出等价准则 Pascal – 强类型 类型有严格定义, 均作检查 Ada
第一次课后作业 2.计算对象的实现—存储 请给出R语言 Python和语言中哪些值是可存储值, 哪些值是不可存储值? 请给出R语言 Python和语言中的存储模型和存储 管理机制
2. 计算对象的实现—存储 – 请给出R语言和Python语言中哪些值是可存储值, 哪些值是不可存储值? – 请给出R语言和Python语言中的存储模型和存储 管理机制。 第一次课后作业
计算对象的实现—存储 存储模型,分为以下三种: 静态存储模型 动态存储模型 堆存储 栈存储
计算对象的实现—存储 – 存储模型,分为以下三种: – 静态存储模型 – 动态存储模型 – 堆存储 – 栈存储