2,程序设计语言的定义 (1)
- 格式:pdf
- 大小:296.66 KB
- 文档页数:14
第三部分程序设计基础3.1 程序、程序设计、程序设计语言的定义⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。
⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。
程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。
程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。
⑶程序设计语言:程序设计语言用于书写计算机程序的语言。
语言的基础是一组记号和一组规则。
根据规则由记号构成的记号串的总体就是语言。
在程序设计语言中,这些记号串就是程序。
程序设计语言有3个方面的因素,即语法、语义和语用。
3.2 高级语言和低级语言的概念及区别⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。
它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。
⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。
机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。
⑶区别:高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。
越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。
而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,使编写程序的过程更符合人类的思维习惯,并且极大了简化了人力劳动。
《高级语言程序设计》知识点总结(一)1.1程序设计和程序设计语言1.程序从最一般的意义来说,程序是对解决某个计算问题的方法(算法)步骤的一种描述;而从计算机来说,计算机程序是用某种计算机能理解并执行的计算机语言作为描述语言,对解决问题的方法步骤的描述。
计算机执行按程序所描述的方法步骤,能完成指定的功能。
所以,程序就是供计算机执行后能完成特定功能的指令序列。
一个计算机程序主要描述两部分内容:描述问题的每个对象和对象之间的关系,以及描述对这些对象作处理的处理规则。
其中关于对象及对象之间的关系是数据结构的内容,而处理规则是求解的算法。
针对问题所涉及的对象和要完成的处理,设计合理的数据结构常可有效地简化算法,数据结构和算法是程序最主要的两个方面。
2.程序设计的任条和主要步骤程序设计的任务就是分析解决问题的方法步骤(算法),并将解决问题算法的方法步骤用计算机语言记录下来。
程序设计的主要步骤包罗:认识问题、设计解决问题的算法、按算法编写程序、调试和测试程序。
在程序开发过程中,上述步骤可能有反复,如发现程序有错,严重情况可能会要求重新认识问题和重新设计算法等。
3.机器语言和汇编语言计算机能直接识别和执行的二进制代码称为计算机的机器语言。
用有助于记忆的符号来代表二进制代码,称为汇编语言。
汇编语言与机器语言几乎有一对一的关系。
用汇编语言编写的程序称为“汇编源程序”,汇编源程序不能在计算机上直接执行,需要用汇编程序将汇编源程序翻译成机器语言程序,然后执行由汇编程序翻译出来的机器语言程序。
机器语言和汇编语言是与具体计算机紧密相关的,称它们是面向机器的语言。
4.高级语言与机器语言和汇编语言比拟较,高级语言与具体计算机无关,是一种能便利描述算法过程的计算机程序设计语言。
高级语言种类千差万别,但一般包含有以下四种成分:数据成分用来描述程序所涉及的数据;运算成分用来描述运算;控制成分用来表达程序的控制构造;传输成分用来表达数据的传输。
⾼级程序设计语⾔概述常⽤的⾼级程序设计语⾔常⽤的⾼级程序设计语⾔语⾔特点FORTRAN 数值计算COBOL 事务处理PASCAL 结构化程序设计LISP 函数式程序设计PROLOG 逻辑程序设计C 系统程序设计Smalltalk ⾯向对象程序设计Java Internet应⽤,可移植性Python 解释型⾼级程序设计语⾔的优点相对机器语⾔或汇编语⾔,⾼级程序设计语⾔更接近于数学语⾔和⼯程语⾔,更直观、⾃然和易于理解更容易验证其正确性、改错编写程序的效率更⾼更容易移植程序设计语⾔的定义标识符是语法概念,名字是语义概念语法程序本质上是⼀定字符集上的字符串语法:⼀组规则,⽤它可以形成和产⽣⼀个合式(well-formed)的程序词法规则:单词符号的形成规则单词符号是语⾔中具有独⽴意义的最基本结构⼀般包括:常数、标识符、基本字、算符、界符等描述⼯具:有限⾃动机语法规则:语法单位的形成规则语法单位通常包括:表达式、语句、分程序、过程、函数、程序等;描述⼯具:上下⽂⽆关⽂法E→iE→E+EE→E*E(不能理解成乘号)E→(E)语法规则和词法规则定义了程序的形式结构定义语法单位的意义属于语义问题语义语义⼀组规则,⽤它可以定义⼀个程序的意义描述⽅法⾃然语⾔描述⼆义性、隐藏错误和不完整性形式描述操作语义指称语义代数语义语⽤程序语⾔的基本功能和层次结构程序,本质上说是描述⼀定数据的处理过程程序语⾔的基本功能描述数据和对数据的运算层次结构程序| |⼦程序或分程序、过程、函数| |语句| |表达式| |数据引⽤运算符函数调⽤程序语⾔成分的逻辑和实现意义抽象的逻辑的意义数学意义计算机实现的意义具体实现⾼级程序设计语⾔的⼀般特性⾼级语⾔的分类强制式语⾔(Imperative Languge)/过程式语⾔命令驱动,⾯向语句FORTRAN 、C 、Pascal ,Ada应⽤式语⾔(Applicative Language)注重程序所表⽰的功能,⽽不是⼀个语句接⼀个语句地执⾏LISP 、ML基于规则的语⾔( Rule-based Language)检查⼀定的条件,当它满⾜值,则执⾏适当的动作Prolog⾯向对象语⾔(Object-Oriented Language)封装、继承和多态性Smalltalk ,C++,Java程序结构FORTRAN ⼀个程序由⼀个主程序段和若⼲辅程序段组成辅程序段可以是⼦程序、函数段或数据块每个程序段由⼀系列的说明语句和执⾏语句组成,各段可以独⽴编译模块结构,没有嵌套和递归PROGRAM …//主程序…endSUBROUTINE …//辅程序1…endFUNCTION …//辅程序2…endPASCALPASCAL 程序本⾝可以看成是⼀个操作系统调⽤的过程,过程可以嵌套和递归过程 过程头;说明段(由⼀系列的说明语句组成);begin执⾏体(由⼀系列的执⾏语句组成);end作⽤域同⼀个标识符在不同过程中代表不同的名字作⽤域:⼀个名字能被使⽤的区域范围名字作⽤域规则——"最近嵌套原则"最近嵌套原则⼀个在⼦程序B1中说明的名字X 只在B1中有效(局部于B1)如果B2是B1的⼀个内层⼦程序且B2中对标识符X 没有新的说明,则原来的名字X 在B2中仍然有效对X 重新作了说明,那么,B2对X 的任何引⽤都是指重新说明过的这个Xprogram mainvar A, B:real;…procedure P1var B:boolean;…begin…endprocedure P2var A:integer;…begin…endbegin…endP2的代码能够调⽤P1JAVA⾯向对象的⾼级语⾔类(Class )继承(Inheritance)多态性(Polymorphism)和动态绑定(Dynamic binding)class Car{int color;int door;int speed;…public push_break ( ) {…}public add_oil ( ) {…}}class Trash_Car extends car {double amount;public fill_trash ( ) {…}}数据结构与操作数据类型通常包括三要素⽤于区别这种类型数据对象的属性这种类型的数据对象可以具有的值可以作⽤于这种类型的数据对象的操作初等数据类型数值类型整型、实型、复数、双精度运算:+,-,*,/等逻辑类型true 、false布尔运算:∨,∧,┑等字符类型:符号处理指针类型标识符与名字标识符以字母开头的,由字母数字组成的字符串名字标识程序中的对象名字的意义和属性值:单元中的内容属性:类型和作⽤域名字的说明⽅式由说明语句来明确规定的int score 隐含说明FORTRAN 以I,J,K,…N 为⾸的名字代表整型,否则为实型动态确定⾛到哪⾥,是什么,算什么名字的绑定可以发⽣在编译过程中也可以发⽣在运⾏过程中标识符以字母开头的,由字母数字组成的字符串标识符与名字两者有本质区别标识符是语法概念名字有确切的意义和属性数据结构数组逻辑上,数组是由同⼀类型数据组成的某种n 维矩形结构,沿着每⼀维的距离,称为下标数组可变与不可变编译时能否确定其存贮空间的⼤⼩访问给出数组名和下标值,如A[10, i+ j]存放⽅式按⾏存放,按列存放数组A[10,20]的A[1,1]的地址为a ,每个元素占1字节,各维下标从1开始,按⾏存放,那么A[i ,j]地址为:a+(i-1)*20+(j-1)通⽤的数组元素地址计算公式数组元素地址计算设A 为n 维数组,按⾏存放,每个元素宽度为wlow i 为第i 维 的下界up i 为第i 维 的上界n i 为第i 维 可取值的个数(n i = up i -low i + 1),base 为A 的第⼀个元素相对地址元素A[i 1 ,i 2 ,…,i k ]相对地址公式( ((…i 1 n 2 +i 2 )n 3 +i 3 )…)n k +i k )×w +base-((…((low 1 n 2 +low 2 )n 3 +low 3 )…)n k +low k )×w)/Con内情向量内情向量登记维数,各维的上、下限,⾸地址,以及数组(元素)的类型等信息记录由已知类型的数据组合在⼀起的⼀种结构(field)record { char name[20];integer age;bool married;}访问:复合名 cards[k].name 存储:连续存放域的地址计算相对于记录结构起点的相对数OFFSET字符串、表格、栈字符串:符号处理、公式处理表格:本质上是⼀种记录结构线性表:⼀组顺序化的记录结构栈:⼀种线性表,后进先出,POP, PUSH抽象数据类型抽象数据类型(Abstract Data Type)A set of data values and associated operations thatare precisely specified independent of any particularimplementation.抽象数据类型由数据集合、及其相关的操作组成,这些操作有明确的定义,⽽且定义不依赖于具体的实现⼀个抽象数据类型包括数据对象集合作⽤于这些数据对象的抽象运算的集合这种类型对象的封装,即,除了使⽤类型中所定义的运算外,⽤户不能对这些对象进⾏操作程序设计语⾔对抽象数据类型的⽀持Ada 通过程序包(package)提供了数据封装的⽀持package STACKS istype ELEM is private;type STACK is limited private;procedure push (S: in out STACK; E: in ELEM);procedure pop (S: in out STACK; E: out ELEM);…end STACK;//规范说明//程序包体package body STACKS isprocedure push(S: in out STACK; E: in ELEM);begin……实现细节end push;procedure pop (S: in out STACK; E: out ELEM);begin……实现细节end pop;end;⼀个抽象数据类型包括数据对象集合作⽤于这些数据对象的抽象运算的集合这种类型对象的封装,即,除了使⽤类型中所定义的运算外,⽤户不能对这些对象进⾏操作程序设计语⾔对抽象数据类型的⽀持Ada 通过程序包(package)提供了数据封装的⽀持Smalltalk 、C++和Java 通过类(Class)对抽象数据类型提供⽀持JAVA 程序⽰例class Car{int color_number;int door_number;int speed;…public push_break ( ) {…}public add_oil ( ) {…}}class Trash_Car extends car {double amount;public fill_trash ( ) {…}}编译原理语句与控制结构表达式表达式由运算量(也称操作数,即数据引⽤或函数调⽤)和算符(运算符,操作符)组成形式:中缀、前缀、后缀X*Y -A P ↑或者p->表达式形成规则变量(包括下标变量)、常数是表达式。
计算机程序设计语言试讲稿尊敬的各位考官,你们好,我是高中信息技术组的5号考生,今天我试讲的题目是《计算机程序设计语言》,下面开始我的试讲。
上课,同学们好,请坐。
同学们,生活中我们经常会遇到这种情况,晚上,当你走过一条走廊时,灯自动就亮了,等你走了以后,没一会,灯就灭了。
你们知道是谁让灯变得这么懂事呢?我听同学们说是“程序员”,那程序员是怎么让灯听话的呢?通过编程,没错。
程序员编程时所用到的语言就是计算机程序设计语言,将指令输入到一块控制板上,控制板就能按照程序员的想法去控制灯。
同学们,你们想拥有控制机器的能力吗?想就要掌握计算机程序设计语言,这样才能给机器发号施令。
这节课,就让我们一起来学习计算机程序设计语言吧。
像程序员所用的编程语言,能对计算机发出指令,就叫计算机程序设计语言。
同学们,程序员设计语言不仅能指挥机器,还能创造出很多的软件,像微信、抖音、淘宝等APP都是编程的产物。
那编程语言都有哪些呢?下面请同学们展开小组合作学习,了解不同的编程语言。
首先,请同学们翻开书本,自主学习计算机程序设计语言的定义。
刚看同学们都很认真在看书,哪位同学来说说。
计算机程序设计语言,是指一组用来定义计算机程序的语法规则,用于向计算机发出指令,通常简称为“编程语言”。
非常好,这位同学的归纳抓住了两个重点。
首先,计算机程序设计语言是向计算机发出指令的,这些指令,不仅能控制计算机,还能创造出很多的应用软件,比如大家经常使用的微信、抖音、淘宝等APP,都是编程的产物。
其次,这些指令要符合计算机的语法规则,才能被计算机运行。
这就是计算机程序设计语言。
(板书:定义)我们人类有很多的语种,计算机程序设计语言也有不同的种类。
现在请同学们以小组为单位,点开老师下发的学习资源包,并结合书本进行自主合作学习,探究计算机程序设计语言都有哪些类别,并比较每种程序设计语言的特点。
好,刚看每个小组都很认真在讨论,有哪个小组代表可以来说说,计算机程序设计语言分哪几类呢?好,第一组的小组代表最先举手,请你来说,很好,计算机程序设计语言首先是分为低级语言和高级语言,低级语言又分为机器语言和汇编语言。
这是最原始的BNF 形式,用<…> 表示非终结符,《Algol60修订报告》采用这种形式。
后来人们常用它的一些变形形式(见下)
需要解决的小问题:语言里的| 等怎么表示
2月其中正体(打字机体)表示终结符,斜体表示非终结符,ε表示空串语法类program 表示完整的程序
语法定义:BNF 的变形
语言手册里常见的一种形式(C 语言/C++ 语言都采用)
enum-name :
identifier
enum-specifier :
enum identifier opt { enumrator-list opt }
enumerator-list :
enumrator-definition
enumratoe-list , enumerator-definition
enumerator-definition :
enumerator
enumerator = constant-expression
enumerator :
identifier
斜体表示非终结符,打字机体是终结符。
冒号换行后退格表示“定义为”,并列放置表示“或者”,下标opt 表示可选
2012年2月17
语法定义:语法图
另一种常见语法描述方式是语法图
词法分析
语法分析
语义分析和中间代码生成与机器无关的优化
目标代码生成机器特定的优化。