(一) 程序设计语言基本概念

1、计算机硬件只识别机器指令序列,因此机器指令是最基本的计算机语言。机器语言设计程序效率很低,程序可读性很差,很难修改和维护,因此,用符号代替0、1序列来表示机器指令。用符号表示的指令称为汇编指令,汇编指令的集合称为汇编语言。汇编语言和机器语言是低级语言。此基础上,开发出功能更强、抽象级别更高的语言以支持程序设计,称为高级语言。eg:JAVA、C、C++、PHP、Python、Delphi、PASCAL等。

2、计算机只能理解机器语言,因此高级程序设计语言需要翻译,担任这一任务的程序称为“语言处理程序”。语言之间的翻译形式有多种,基本方式为汇编、解释和编译。高级语言或汇编语言编写的程序称为源程序。汇编语言编写的源程序需要一个汇编程序将其翻译成目标程序后才能执行,高级语言编写的源程序则需要对应的解释程序(解释器:直接解释执行源程序或者将源程序翻译成某种中间代码后加以执行)或编译程序(编译器:将源程序翻译成目标语言程序,然后在计算机上运行目标程序)对其进行翻译,然后在机器上运行。

解释程序与编译程序的根本区别:编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,解释方式下,解释程序和源程序要参与到程序的运行过程中,运行程序的控制权在解释程序。简单说:在解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。

3、程序设计语言的定义涉及语法(程序设计语言的基本符号组成程序中的各个语法成分的一组规则)、语义(按语法规则构成的各个语法成分的含义,可分为静态语义和动态语义)和语用(表示构成语言的各个记号和使用者的关系)等方面。

4、根据设计程序的方法将程序语言分为命令式和结构化程序设计语言(通常说的结构化程序设计语言属于命令式语言类,其结构特性反映在以下几点:1、用自顶向下逐步精化的方法编程 2、模块组织的方法编程 3、程序只包含顺序、判定(分支)及循环构造)、面向对象的程序设计语言(对象、类)、函数式程序设计语言(特点:表达式中出现的任何函数都可以用其他函数来代替,只要这些函数调用产生相同的值)和逻辑型程序设计语言(以形式逻辑为基础)等范型。

5、程序设计语言的基本成分包括:数据、运算、控制和传输等。

数据成分指一种程序设计语言的数据类型,数据类型用于代表数据对象,还用于在基础机器中完成对值的布局,同时可用于检查表达式中对运算的应用是否正确。数据是程序操作的 对象,使用时要为它分配内存空间。数据名称由用户通过标识符 命名,类型 说明数据占用内存的大小和存放形式,存储类型说明 数据在内存中的位置和生存期。 数据可分为:常量和变量、 全局量和局部量。数据类型有:基本类型(int、char、float、double、bool)、特殊类型(void)、用户定义类型(enum)、构造类型(数组、结构、联合)、指针类型(type*)和抽象数据类型(类类型)。

运算成分指明允许使用的运算符号及运算规则。

控制成分指明语言允许表达的控制结构,程序员使用控制成分 来构造程序中的控制逻辑。

传输成分指明语言允许的数据传输方式,如赋值处理、数据的输入和输出等。

6、函数

C程序有一个或多个函数组成,每个函数都有有个名字,有且仅有一个名字为mian的函数作为程序运行的起点。函数是程序模块的主要成分,它是一段具有独立功能的程序。函数使用涉及:函数定义、函数声明和函数调用。

函数定义包括:函数首部和函数体。C 程序中不允许函数的嵌套定义。

函数应该先声明后引用。如果程序中对一个 函数的调用在该函数的定义之前进行,则应该在调用前对 被调用函数进行声明。

调用函数需要使用被调用函数的功能时,以名字进行调用,称为函数调用。函数体调用自己称为递归调用。函数调用时实参与形参间交换信息的方法有值调用和引用调用。

(二) 语言处理程序基础

语言处理程序主要将高级语言或汇编 语言编写的程序翻译成某种机器语言程序,使程序 可在计算机上运行。语言处理程序主要分为 汇编程序、编译程序和解释程序3种基本类型。

1、汇编程序

汇编语言是为特定的计算机设计的面向机器的符号化的 程序设计语言。汇编语言源程序需要汇编程序进行翻译。汇编语言源程序由若干条语句组成, 其中有三类:指令语句(机器指令语句,汇编后能产生相应的机器代码,可分为传送指令、算数运算指令、逻辑运算指令、移位指令、转移指令和处理机控制指令等类型)、伪指令语句(指示汇编程序在汇编源程序完成某些工作)和宏指令语句(用户将多次重复使用的程序段定义为宏,每个宏有相应的宏名。宏指令语句就是宏的引用)。    伪指令语句汇编后不产生机器代码,指令语句汇编后要产生相应的机器代码。

汇编程序的功能是将汇编语言编写的源程序翻译成机器指令程序,处理源程序中出现的伪指令。 汇编程序一般需要两次 两次扫描源程序才能完成翻译过程。

2、编译程序

编译程序把某高级语言书写的源程序翻译 成与之等价的目标程序。编译程序的工作过程6个阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。

词法分析:对源程序从前到后逐个 字符地扫描,从中识别出一个个单词符号(程序设计语言的基本语法单位)。词法分析输出的单词常以二元组的方式输出, 即单词种别和单词自身的值。

语法分析:在词法分析 的基础上,根据语言的语法规则将单词符号序列分解 成各类语法单位。语法 规则就是各类各种语法单位的构成规则。通过语法分析确定 整个输入串是否构成一个语法上的正确的程序。

语法分析和词法分析本质上都是对源程序的结构进行分析。

语义分析:分析各语法结构的含义, 检查源程序是否 包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。语法语义都正确的源程序才能翻译成正确的目标代码。

中间代码生成:根据语义分析的输出生成中间代码。中间代码特征:与具体的机器无关。

语义分析和中间代码生成所依据的是语言的语义规则。

代码优化:中间代码往往在时间和空间上有较大的浪费,当需要生成高效的目标代码时,必须进行优化。优化过程可以在中间代码生成阶段 进行,也可以在目标代码生成 阶段进行。

目标代码生成:这是编译器的最后一个阶段,任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或 汇编指令代码, 这一阶段工作与具体的机器密切相关。

符号表管理:符号表作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。

出错处理:源程序错误大致可分为静态错误和动态错误。动态错误也称为动态语义错误,它们发生在程序运行。静态错误指在编译阶段发现的 程序错误,可分为语法错误和静态语义错误。

3、解释程序

解释程序是 另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作 原理基本相同,在是在运行用户程序时,它直接执行源程序或源程序的中间表示形式。因此,解释程序不产生源程序的目标程序,这是它和编译程序的主要区别。

解释程序实现高级语言的方式:源程序被直接解释执行(解释程序对源程序进行逐个字符的检查,然后执行程序语句规定的动作。运行效率很低)、解释程序也可将源程序翻译成某种中间代码形式,然后对中间代码进行解释来实现用户程序的的运行。

解释程序通常可以分为两个部分:第一部分是分析部分,包括通常的词法分析、词法分析和语义分析程序, 经语义分析后把源程序翻译成中间代码,中间代码常采用逆波兰表示形式。第二部分是解释部分,用来对第一部分产生的中间代码进行解释执行。

高级语言编译与解释方式的比较:(1)效率:编译比解释方式可能取得更高的效率。解释方式下运行程序时,解释程序可能需要反复扫描源程序;编译方式下,虽然编译程序创建的目标程序运行的时间一般更长,需要占用的存储空间更多,但源程序只需要被编译程序翻译一次就可以运行,因此总体来讲,编译方式比解释方式可能取得更高的效率(2)灵活性:由于解释程序需要反复检查源程序,使得解释方式比编译方式更灵活。且解释器直接在源程序上工作时,它可以对 错误进行更精准的定位。(3)可移植性:解释器一般也是用某种程序设计语言编写的,因此只要对解释器进行重新编译,就可以使解释器运行在不同的环境中。

程序设计语言基础知识复习相关推荐

  1. 软件设计师教程(四)程序设计语言基础知识

    软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 程序设计语言知识 软件设 ...

  2. 软考-软件设计师 - 第2章 程序设计语言基础知识【附补充常考知识点】

    本章导图: 2.1 程序设计语言概述 2.1.1 程序设计语言的基本概念 1 低级语言与高级语言 低级语言:机器语言.汇编语言 高级语言:面向各类应用的程序设计语言,如Java,C,C++,PHP,P ...

  3. 第四章 程序设计语言基础知识

    一. 程序语言的基本概念 1.低级语言与高级语言 1)低级语言:汇编 2)高级语言: 常见的有Java.C.C++.PHP.Pyhton.Delphi 等. 2.编译形式:汇编.解释.编译. 3.程序 ...

  4. 软件设计师学习2——程序设计语言基础知识

    1.编译程序和解释程序: 用高级语言和汇编语言写的程序叫源程序,不能直接执行,用汇编写的需要一个汇编程序将其翻译成目标程序后才能执行.高级语言写的需要对应的解释程序或编译程序对其进行翻译 . 解释程序 ...

  5. C语言结构和高二的知识,c语言基础知识复习.pdf

    1. int n=10 ,a[n]; 这种写法为什么不对 是变量!不能作为下标使用! 因为在编译的时候,数组需要一个指定的大小. n 必须是常数,在编译的时候编译器并不知道 n 到底是多少,运行时候才 ...

  6. C语言基础知识复习(1)

    1.运算符的优先级与结合性 C语言运算符优先级与结合性详细列表:跳转 - 运算符的类型: 1.单目运算符: -(负号运算符)~(按位取反运算符)++ - -(自增自减运算符) *(取值运算符)& ...

  7. 【软考-软件设计师】程序设计语言基础知识框架

  8. 2011计算机等级考试二级c语言公共基础教程.doc,2011年全国计算机等级考试二级c语言公共基础知识复习100题及答案.doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp资格/认证考试&nbsp>&nbsp计算机等级考试 2011年全国计算机等级考试二级c语言公 ...

  9. 什么是人们常用的计算机设备之一,计算机:复习二基础知识复习

    <计算机:复习二基础知识复习>由会员分享,可在线阅读,更多相关<计算机:复习二基础知识复习(15页珍藏版)>请在人人文库网上搜索. 1.基础知识复习2,计算机系统,一.知识框图 ...

  10. JDBC基础知识复习

    JDBC基础知识复习 1.JDBC连接数据库 1.1.导入JDBC驱动 1.2.注册JDBC驱动程序 1.3.创建连接对象 1.4.关闭JDBC连接 1.5.每种数据库对应的驱动名和URL 2.JDB ...

最新文章

  1. 在Django项目中使用富文本编辑器
  2. (未写)tyvj-1333- Coder Space的邀请
  3. Mysql剖析单条查询三种方法
  4. Mapreduce执行过程分析(基于Hadoop2.4)——(一)
  5. 1.数据库基本概念知识
  6. mysql交给spring管理_Mysql事务结合spring管理
  7. python shell怎么打开测试,python脚本第一篇,运行时间测试
  8. BZOJ 3555 [CTSC2014] 企鹅QQ Hash
  9. 1000行代码入门python-Python基础知识和工作环境
  10. Python+Flask+MysqL的web建设技术过程
  11. 如何将 MacBook 的外置屏幕设置为主屏幕
  12. 【路径规划】基于matlab遗传结合模拟退火算法仓库拣货小车最优路径规划【含Matlab源码 649期】
  13. matlab菲涅尔衍射,基于matlab的菲涅尔衍射仿真
  14. 如何使用Arduino 舵机SG90
  15. 这家中国云计算企业三个月两轮融资
  16. MSYS+MinGW64环境的搭建
  17. Linux 远程工具 基础命令
  18. Java问题定位技术手册
  19. SSID, BSSID, ESSID
  20. Background sticky concurrent mark sweep GC freed 842(58KB) AllocSpace objects

热门文章

  1. 《大数据技术原理与应用》林子雨(第二版)--总结
  2. linux uvc协议_USB摄像头的UVC协议
  3. gf(2 4)有限域的乘法c语言实现,有限域GF(2^n)的C语言实现浅析
  4. 计算机房承重载荷,机房承重标准及承重计算方法
  5. Mac系统使用idea常用快捷键
  6. 《FLUENT 14流场分析自学手册》——第2章 流体流动分析软件概述 2.1 CFD软件简介...
  7. 信捷电子凸轮使用_1.电子凸轮入门应用之基础知识介绍
  8. 异常处理·psftp·local unable to open
  9. 中职生c语言搜题软件,适合法考学生用的搜题软件,这几款帮你搞定!
  10. 利用超级绘图王简化建筑识图课程的教学