网站推广的途径和推广要点,wordpress页面都在,网页设计作业成品免费下载,营销型网站服务公司(一) 程序设计语言概述
1 程序设计语言的基本概念
1-1 程序设计语言的目的 程序设计语言是为了书写计算机程序而人为设计的符号语言#xff0c;用于对计算过程进行描述、组织和推导。 1-2 程序语言分类
低级语言 : 机器语言#xff08;计算机硬件只能识别0和1的指令序列)用于对计算过程进行描述、组织和推导。 1-2 程序语言分类
低级语言 : 机器语言计算机硬件只能识别0和1的指令序列)汇编语言。高级语言 : 功能更强抽象级别更高与人们使用的自然语言比较接近。
1-3 各程序设计语言特点
Fortran语言: 科学计算,执行效率高。
Pascal语言: 为教学开发表达能力强。
C语言: 指针操作能力强可以开发系统级软件高效。
C语言: 面向对象高效。
Java语言: 面向对象中间代码跨平台。
C#语言: 面向对象中间代码.Net框架。
Python: 是一种面向对象、解释型计算机程序设计语言。
Prolog 是逻辑型程序设计语言。1-4 汇编 将汇编语言翻译成目标程序执行。 1-5 解释和编译
将高级语言翻译成目标程序执行。不同之处在于编译程序生成独立的可执行文件直接运行运行时无法控制源程序效率高。而解释程序不生成可执行文件可以逐条解释执行用于调试模式可以控制源程序因为还需要控制程序因此执行速度慢效率低。
1-6 程序设计语言定义三要素(语法 语义 语用) 1 语法: 是指由程序设计语言的基本符号组成程序中的各个语法成分包括程序的一组规则其中由基本字符构成的符号单词书写规则称为词法规则由符号构成语法成分的规则称为语法规则。2 语义: 是程序设计语言中按语法规则构成的各个语法成分的含义可分为静态语义和动态语义。静态语义指编译时可以确定的语法成分的含义而运行时刻才能确定的含义是动态语义。一个程序的执行效果说明了该程序的语义它取决于构成程序的各个组成部分的语义。3 语用: 表示了构成语言的各个记号和使用者的关系涉及符号的来源、使用和影响。 1-7 语境
语境是指理解和实现程序设计语言的环境包括编译环境和运行环境。
1-8 程序设计语言的分类 (1命令式和结构化程序设计语言包括Fortran、PASCAL和C语言。(2面向对象程序设计语言包括C、JAVA和Smalltalk语言。(3函数式程序设计语言包括LISP、Haskell、Scala、Scheme、APL等。(4逻辑型程序设计语言,包括PROLOG。 2 程序设计语言的基本成分 1.数据成分 :指一种程序设计语言的数据和数据类型。数据分为常量程序运行时不可改变)、变量程序运行时可以改变)、全局量存储空间在静态数据区分配)、局部量存储空间在堆栈区分配。数据类型有整型、字符型、双精度、单精度浮点型、布尔型等。 2.运算成分 :指明允许使用的运算符号及运算规则。包括算术运算、逻辑运算、关系运算、位运算等。 3.控制成分 :指明语言允许表述的控制结构。包括顺序结构、选择结构、循环结构。 4.传输成分 :指明语言允许的数据传输方式。如赋值处理、数据的输入输出等。 5.函数 :C程序由一个或多个函数组成每个函数都有一个名字其中有且仅有一个名字为main的函数作为程序运行时的起点。 函数的使用涉及3个概念:函数定义、函数声明和函数调用。 函数定义 :包括两部分:函数首部和函数体。函数的定义描述了函数做什么和怎么做。函数定义的一般形式为: 返回值的类型 函数名(形式参数表)//函数首部 { 函数体; }函数声明 :在首部说明了函数返回值的数据类型、函数的名字和函数运行时所需的参数及类型。函数所实现的功能在函数体部分进行描述。函数调用 :函数应该先声明后引用。如果程序中对一个函数的调用在该函数的定义之前进行则应该在调用前对被调用函数进行声明。函数原型用于声明函数。函数声明的一般形式为: 返回值类型 函数名(参数类型表); 函数调用的一般形式为:函数名实参表);
函数调用时实参与形参间交换信息的方法有值调用和引用调用两种。 (1值调用: 若实现函数调用时将实参的值传递给相应的形参则称为是传值调用。在这种方式下形参不能向实参传递信息。在c语言中要实现被调用函数对实参的修改必须用指针作为参数。即调用时需要先对实参进行取地址运算然后将实参的地址传递给指针形参。其本质上仍属于值调用。这种方式实现了间接内存访问。 (2引用调用: 引用是C中引入的概念当形式参数为引用类型时形参名实际上是实参的别名函数中对形参的访问和修改实际上就是针对相应实参所做的访问和改变。
(二) 语言处理程序基础
1 编译程序基本原理
编译程序对高级语言源程序进行编译的过程中要不断收集、记录和使用源程序中一些相关符号的类型和特征等信息并将其存入符号表中 编译过程图: 词法分析: 是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。 语法分析: 是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语如“程序”“语句”“表达式等等.语法分析程序判断源程序在结构上是否正确 语义分析: 是编译过程的一个逻辑阶段.语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查。如类型匹配、除法除数不为0等。又分为静态语义错误在编译阶段能够查找出来和动态语义错误只能在运行时发现。
中间代码和目标代码
中间代码是根据语义分析产生的需要经过优化链接最终生成可执行的目标代码。引入中间代码的目的是进行与机器无关的代码优化处理。常用的中间代码有后缀式逆波兰式)、三元式三地址码、四元式和树等形式。
需要考虑三个问题(一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点以提高目标代码的质量。 前缀表达式: ab 中缀表达式:ab 后缀表达式: ab 三种表达式其实就是树的三种遍历一般正常的表达式是中序遍历即中缀表达式根据其构造出树再按题目要求求出前缀或后缀式。
◆简单求法:后缀表达式是从左到右开始先把表达式加上括号再依次把运算符加到本层次的括号后面。
2 文法定义
◆文法G是一个四元组可表示为G (V,T, P,S)其中: V:非终结符不是语言组成部分不是最终结果可以推导出其他元素。 T:终结符是语言的组成部分是最终结果不能再推导其他元素。 S:起始符是语言的开始符号。 P:产生式用终结符代替非终结符的规则例如a-b。 乔姆斯基(Chomsky)把文法分成4种类型即0型、1型、2型和3型。 0型文法也称为短语文法其功能相当于图灵机任何0型语言都是递归可枚举的;反之递归可枚举集也必定是一个0型语言。1型文法也称为上下文有关文法这种文法意味着对非终结符的替换必须考虑上下文并且一般不允许替换成e串。例如若αAB→avβ是1型文法的产生式α和β不全为空则非终结符A只有在左边是α右边是β的上下文中才能替换成γ。2型文法就是上下文无关文法非终结符的替换无须考虑上下文。程序设计语言中的大部分语法都是上下文无关文法当然语义上是相关的要注意区分语法和语义。3型文法等价于正规式因此也被称为正规文法或线性文法。 3 正规式 语言中具有独立含义的最小语法单位是符号单词如标识符、无符号常数与界限符等。词法分析的任务是把构成源程序的字符串转换成单词符号序列。 词法规则可用3型文法正规文法)或正规表达式描述它产生的集合是语言规定的基本字符集(字母表)上的字符串的一个子集称为正规集。 正规式和正规集: 仅通过有限次地使用上述3个步骤定义的表达式才是z上的正规式其中运算符“|” “·” “*”分别称为“或” “连接” 和 “闭包”。在正规式的书写中,连接运算符“·”可省略运算的优先级从高到低顺序排列为“*” “·” “I”。设∑{a, b}下表列出了∑上的一些正规式和相应的正规集。 4 有限自动机 有限自动机是一种识别装置的抽象概念它能准确地识别正规集。有限自动机分为确定的有限自动机和不确定的有限自动机两类。 (1确定的有限自动机(DFA)。 一个确定的有限自动机是个五元组(S∑fs0z)其中: s是一个有限集其每个元素称为一个状态。∑是一个有穷字母表其每个元素称为一个输入字符。f是S×∑ - S上的单值部分映像。f(A, a)Q表示当前状态为A、输入为a时将转换到下一状态Q。称Q为A的一个后继状态。S∈S是唯一的一个开始状态。z是非空的终止状态集合Z⊆S。 状态转换图: (2不确定的有限自动机(NFA)。 一个不确定的有限自动机也是一个五元组它与确定有限自动机的区别如下: f是S×∑ - S上的映像。对于S中的一个给定状态及输入符号返回一个状态的集合。即当前状态的后继状态不一定是唯一的。有向弧上的标记可以是ε。 状态转换图: 确定的有限自动机和不确定的有限自动机:输入一个字符看是否能得出唯一的后继若能则是确定的否则若得出多个后继则是不确定的。
5 语法分析方法
自上而下语法分析:最左推导从左至右。给定文法G和源程序串r。从G的开始符号s出发通过反复使用产生式对句型中的非终结符进行替换(推导)逐步推导出r。递归下降思想:原理是利用函数之间的递归调用模拟语法树自上而下的构造过程,是一种自上而下的语法分析方法。自下而上语法分析:最右推导从右至左。从给定的输入串r开始不断寻找子串与文法G中某个产生式P的候选式进行匹配并用P的左部代替(归约)之逐步归约到开始符号s.移进-规约思想:设置一个栈将输入符号逐个移进栈中栈顶形成某产生式的右部时就用左部去代替称为归约。很明显这个思想是通过右部来推导出左部因此是自下而上语法分析的核心思想。