4:程序设计语言基础--4.1:程序设计语言,4.2:语言处理程基础

转上一节: 

http://t.csdnimg.cn/0dG17icon-default.png?t=N7T8http://t.csdnimg.cn/0dG17

课程内容提要:

4:知识点考点详解 

4.1:程序设计语言

考点1:编译程序与解释程序

1:程序设计语言基本概念

计算机要通过程序或指令来控制才能完成各种任务。

程序设计语言(计算机语言) :人与机器交换信息的语言。

2:编译与解释区别

总结:编译得到目标代码,直接执行。解释得到中间代码,边解释边执行。

思考:二者谁的执行效率更高? 

3:编译器与解释器

考点2:多种程序设计语言的特点

1:程序语言基础-各种程序语言特点

(1) Fortran语言 (科学计算,执行效率高)

(2) Pascal语言(为教学而开发的,表达能力强,Delphi)

(3) C语言(指针操作能力强,高效)

(4) Lisp语言(函数式程序语言,符号处理,人工智能)

(5) C++语言(面向对象,高效)

(6) Java语言(面向对象,中间代码,跨平台)

(7) C#语言(面向对象,中间代码,.Net)

(8) Prolog语言(逻辑推理,简洁性,表达能力,数据库和专家系统)

(9) Python语言(解释型,面向对象,胶水语言)

(10) PHP语言(解释型,脚本语言,嵌入HTML文档的动态语言) 

考点3:程序设计语言的基本成分

1:数据类型与程序控制结构

列表、元组、字典、集合的比较:

列表[] (list) :有序可改变集合,允许重复数据。

元组() (tuple) :有序不可改变集合,允许重复数据。

集合{} (set) :无序无索引(索引为键值)集合,无重复数据。

字典{} (dictionary):无序,可变,有索引集合,无重复数据。

不可变数据(3个) :Number (数字)、String (字符串)、Tuple (元组) ;

可变数据(3个) :List (列表)、Dictionary (字典)、Set (集合)。 

程序控制结构主要有:顺序结构、选择结构和循环结构。 

考点4:函数调用方式

1:函数调用-传值与传址 

 

注:在传值调用中,实参可以是变量,也可以是常量和表达式,而在传址调用中,实参不能是常

量,且实参必须表示地址。 

 

 

4.2:语言处理程基础 

考点1:编译过程概述

1:编译过程

2.编译程序-词法分析

词法分析:从左到右逐个扫描源程序中的字符,识别其中如关键字(或称保留字)、标识符、 常数、

运算符以及分隔符

例: VAR X,Y,Z: real;

X:=Y+Z*60;

词法分析:

(1)保留字VAR         (2) 标识符X         (3)逗号,           (4) 标识符Y

(5)逗号,                (6)标识符Y          (7) 冒号:          (8)标识符real

(9) 分号:               (10) 标识符X     (11) 赋值号:=    (12) 标识符Y

(13)加号+                (14) 标识符Z     (15) 乘号*            (16) 整常数60

(17)分号;

3.编译程序﹣语法分析

语法分析:根据语法规则将单词符号分解成各类语法单位,并分析源程序是否存在语法上的错误。

包括:语言结构出错、i f…end if 不匹配,缺少分号、括号不匹配、表达式缺少操作数等。


自顶向下(或自上而下)分析法

【递归下降分析法、预测分析法都是自顶向下的分析方法。】

自底向上语法分析方法(移进-归约分析法)

4:编译程序-语义分析 

语义分析:进行类型分析和检查,主要检测源程序是否存在静态语义错误。包括:运算符和运算类

型不符合,如取余时用浮点数。

符号表:记录源程序各个符号的必要信息,以辅助语义的正确性检查和代码生成。

5:编译程序错误管理 

注:软件设计师考试中,会单独考查词法错误类型和语法错误类型,与上文中的语法错误类型不完全

等同,注意区分。

单词拼写错误、标点符号错误(中文符号等)属于词法错误:缺少分号、 缺少括号、缺少操作数属于

语法措误。 

6.编译程序﹣中间代码

中间代码:是根据语义分析的输出生成中间代码。"中间代码"是一种简单且含义明确的记号系统,

可以有若干种形式,它们的共同特征是与具体的机器无关。最常用的中间代码有:后缀式、语法

树、三地址码、四元式等等。

四元式的形式为:(运算符,运算对象1,运算对象2,运算结果)

考点2:文法

1:文法定义
一个形式文法是一个有序四元组G=(V,T,S,P),其中:

(1)V:非终结符。不是语言组成部分,不是最终结果,可理解为占位符。

(2)T: 终结符。是语言的组成部分,是最终结果。V∩T=∅

(3)S:起始符。是语言的开始符号。

(4)P:产生式。用终结符替代非终结符的规则。形如α→β

正则闭包:A^{+}=A^{1}\cup A ^{2}\cup A ^{3}\cup ...\cup A^{n}...(也就是所有幂的组合)。

闭包:A^{*}=A^{0}\cup A ^{+}(在正则闭包的基础上,加上A0={ε})。

例如:a*={a,aa,aaa,...,ε},而(ab)*={ab,aba b,ababab,...,ε}

注:常见的程序设计语言通常是上下文无关文法。 

2.语法推导树

一棵语法树应具有以下特征:

(1)每个结点都有一个标记,此标记是V 的一个符号;

(2)根的标记是S;

(3)若一结点n至少有一个它自己除外的子孙,并且有标记A,则A肯定在VN中;

(4)如果结点n的直接子孙,从左到右的次序是结点n1,n2,…nk,其标记分别是:A1,A2,…,Ak,那

么A->A1,A2…Ak,一定是P 中的一个产生式。

例:文法G=({a, b}, {S, A}, S, P),其中:

S→aASla;

A→SbA|SSlba.

请构造句型aabAa的推导树。

考点3:正规式与正规集

1.正规式

正规式是描述程序语言单词的表达式,对于字母E,其上的正规式及其表示的正规集可以递归定义

如下。

(1) ε是一个正规式,它表示集合L(ε)={ε}。

(2)若a是∑上的字符,则a是一个正则式,它所表示的正规L(a)={a}。

(3)若正规式r和s分别表示正规集L(r)=L(s),则

(a) r|s是正规式,表示集合L(r)UL(s);

(b) r·s是正规式,表示集合L(r)L(s); .

(c) r*是正规式,表示集合(L(r))*;

(d) (r)是正规式,表示集合L(r)。

仅由有限次地使用上述三个步骤定义的表达式才是E上的正规式。由此可见,正规式要么为空,要

么由字母、或、连接、闭包运算符组成。中闭包运算符“*”具有最高的优先级,连接运算具有次高优

先级,或运算符“|”具有最低优先级。 

考点4:有限自动机 

M=(S,∑,∂,S0,Z)

(1) S是一个有限集,每个元素为一个状态;

(2) ∑是一个有穷字母表,每个元素为一个输入字符;

(3)∂是转换函数:是一个单值对照;

(4) S0属于S, 其唯一的初态;

(5) Z是-一个终态集(可空)。

有限状态自动机可以形象地用状态转换图表示,设有限状态自动机:

DFA=({S,A,B, C, f}, {1, 0},σ,S, {f}),

其中:

σ(S, 0)=B, σ(S, 1)=A, σ(A, 0)=f, σ(A, 1)=C, σ(B, 0)=C, σ(B, 1)=f,δ(C, 0)=f, σ(C, 1)=f

有限自动机能够识别的串:从初态出发可以到达终态且停留在终态。

确定的有限自动机:当-个状态面对一个输入符号的时候,所转换到的是一个唯一 确定的状态。

不确定的有限自动机:当-个状态面对一一个输入符号的时候,它所转换到的可能不只一一个状态,

可以是一个状态集合。

考点5:表达式

前缀表达式(+ab),中缀表达式(a+b),后缀表达式(ab+) 

例:表达式(a-b) * (c+5)的后缀式是( )。

A、abc5+*-

B、 ab-c+5*

C、 abc-*5+

D、 ab-c5+*

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值