各种程序语言特点:
Fortran语言(科学计算,执行效率高)
Pascal语言(为教学而开发的,表达能力强,Delphi )
C语言 (指针操作能力强,高效)
Lisp语言 (函数式程序语言,符号处理,人工智能)
C++语言 (面向对象,高效)
Java语言 (面向对象,中间代码,跨平台)
C#语言 (面向对象,中间代码,. Net )
Smalltalk (面向对象,程序设计语言、程序设计环境、应用开发环境)
Prolog语言(逻辑推理,简洁性,表达能力,数据库和专家系统)
Python语言 (一种脚本语言)
高级程序设计语言
生产独立目标程序的一定是编译器
静态类型语言
java、C/C++、C#、DELPHI、VB等
动态类型语言
asp、php、cgi、 lisp、Perl、python,Smalltalk、Ruby , vbscript,javascript等
编译器的工作阶段
(语义分析只检查静态语义)
词法错误:非法字符,关键字或标识符拼写错误
语法错误:语法结构出错,if...end if不匹配,缺分号
语义错误:死循环,零除数,其它逻辑错误
正规表达式和正规集
.表示连接,可以省略;*表示闭包;|表示或;运算优先级:“*” “.” “|”(高到低)
确定的有限自动机
f(A,a)=Q表示当前状态为A,输入为a时,将转换到下一个状态Q。例:
非确定的有限自动机
当前状态的后继状态不一定是唯一的。例:
程序控制结构
顺序结构
循环结构
选择结构
程序语言的数据部分
数据类型:说明数据占用内存的大小和存放形式
存储类别:说明数据在内存中的位置和生存期
生存期:说明数据占用内存的时间范围
数据类型转换规则:char,short→int→unsigned→long,float→double
表达式
前缀表达式、中缀表达式、后缀表达式
例:表达式(a-b)*(c+5)的后缀式是__。(ab-c5+*)
解法①:
先构造二叉树,再后序遍历
解法②:
加括号再移动运算符到括号外,最后将括号去掉
((a-b)*(c+5))→((a-b)(c+5))*→((ab)-(c5)+)*→ab-c5+*
传值/传址
传值调用:实际上重新复制了一个副本给形参
不改变调用函数实参变量的内容
传址调用:将实参地址给形参
将改变调用函数实参变量的内容