高级程序设计语言概述

常用的高级程序设计语言

常用的高级程序设计语言

语言 特点
FORTRAN 数值计算
COBOL 事务处理
PASCAL 结构化程序设计
LISP 函数式程序设计
PROLOG 逻辑程序设计
C 系统程序设计
Smalltalk 面向对象程序设计
Java Internet应用,可移植性
Python 解释型

高级程序设计语言的优点

相对机器语言或汇编语言,高级程序设计语言

  • 更接近于数学语言和工程语言,更直观、自然和易于理解
  • 更容易验证其正确性、改错
  • 编写程序的效率更高
  • 更容易移植

程序设计语言的定义

标识符是语法概念,名字是语义概念

语法

  • 程序本质上是一定字符集上的字符串
  • 语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序
  • 词法规则:单词符号的形成规则
    • 单词符号是语言中具有独立意义的最基本结构
    • 一般包括:常数、标识符、基本字、算符、界符等
    • 描述工具:有限自动机
    • 语法规则:语法单位的形成规则
    • 语法单位通常包括:表达式、语句、分程序、过程、
  • 函数、程序等;
    • 描述工具:上下文无关文法

E→i
E→E+E
E→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 …//主程序
…
end
SUBROUTINE …//辅程序1
…
end
FUNCTION …//辅程序2
…
end

PASCAL

  • PASCAL程序本身可以看成是一个操作系统调用的过程,过程可以嵌套和递归
  • 一个PASCAL过程
      过程头;
      说明段(由一系列的说明语句组成);
      begin
      执行体(由一系列的执行语句组成);
      end

作用域

  • 同一个标识符在不同过程中代表不同的名字
  • 作用域:一个名字能被使用的区域范围
  • 名字作用域规则——"最近嵌套原则"
    最近嵌套原则
  • 一个在子程序B1中说明的名字X只在B1中有效(局部于B1)
  • 如果B2是B1的一个内层子程序且B2中对标识符X没有新的说明,则原来的名字X在B2中仍然有效
  • 如果B2对X重新作了说明,那么,B2对X的任何引用都是指重新说明过的这个X
program main
var A, B:real;
…
procedure P1
var B:boolean;
…
begin
…
end
procedure P2
var A:integer;
…
begin
…
end
begin
…
end

P2的代码能够调用P1

JAVA

  • 面向对象的高级语言

    • 类(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维数组,按行存放,每个元素宽度为w

    • low 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 that
    are precisely specified independent of any particular
    implementation.
  • 抽象数据类型由数据集合、及其相关的操作组成,这些操作
    有明确的定义,而且定义不依赖于具体的实现
  • 一个抽象数据类型包括
    • 数据对象集合
    • 作用于这些数据对象的抽象运算的集合
    • 这种类型对象的封装,即,除了使用类型中所定义
      的运算外,用户不能对这些对象进行操作
  • 程序设计语言对抽象数据类型的支持
    • Ada通过程序包(package)提供了数据封装的支持
package STACKS is
type 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 is
procedure 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->
  • 表达式形成规则
  • 变量(包括下标变量)、常数是表达式。
  • 若E 1 、E 2 为表达式,θ是一个二元算符,则E 1 θE 2 是表达式。
  • 若E是表达式,θ为一元算符,则θE(或Eθ)是表达式。
  • 若E是表达式,则(E)是表达式

算符的优先次序

  • 一般的规定

    • PASCAL:左结合A+B+C=(A+B)+C
    • FORTRAN:对于满足左、右结合的算符可任取一种,如A+B+C就可以处理成(A+B)+C,也可以处理成A+(B+C)
  • 注意两点
    • 代数性质能引用到什么程度视具体的语言而定
    • 在数学上成立的代数性质在计算机上未必完全成立
    • A + B = B +A

语句

赋值语句

  • A := B
  • 名字的左值:该名字代表的存储单元的地址
  • 名字的右值:该名字代表的存贮单元的内容

控制语句

* 无条件转移语句
goto L
* 条件语句
if B then S
if B then S 1 else S 2
* 循环语句
while B do S
repeat S until B
for i:=E 1 step E 2 until E 3 do S
* 过程调用语句
call P(X 1 , X 2 , ... ,X n )
* 返回语句
return (E)

功能

  • 执行语句:描述程序的动作
  • 说明语句:定义各种不同数据类型的变量或运算,定义名字的性质

语句的分类

  • 形式
  • 简单句:不包含其他语句成分的基本句
A = B + C ;
goto 105 ;
  • 复合句:句中有句的语句
while (i >= 0) {
j = i * 10;
i++;
}

原文地址:https://www.cnblogs.com/ygjzs/p/11863514.html

时间: 2024-11-05 13:46:42

高级程序设计语言概述的相关文章

高级程序设计语言学习2

高级程序设计语言的学习,不仅要学习具体语言的使用,更要学会如何快速掌握一门新的编程语言. 编程语言相对于自然语言来说,结构更简单,只是在计算机新功能的出现.开源的流行的现在,编程语言的种类越来越多,语言的内容越来越多.但是,内容增多,在很大一定程度上只是类库的扩充,这些在一定程度上不用我们完全去记忆,只在需要时搜索.查询. 编程语言知识点: 数据,数据是从硬件内存.寄存器抽象上来的,也可以成为变量,简单的有整数.布尔值.字符,还有字符串.浮点数等.这些是几乎所有编程语言都有.不同语言在数据方面的

J1. Java程序设计语言概述

如果对于开发语言的排行榜有所关注的话,那么会发现很长一段时间以来Java都是位居榜首的高级开发语言,作为一个Java开发者,为此感到骄傲的同时也深感忧虑,骄傲的是自己接触的开发语言是如此的强大,忧虑的是万一哪一天Java市场占有率不再,那我们何去何从呢?不过这都是杞人忧天了,在Java没落之前我们应该先将Java搞清楚才对,然后由此深入了解计算机的世界,对于Java程序设计语言,我们主要通过几方面来学习:语言的历史,语言的基本构成,面向对象,字符串与数字,常见的工具类,集合,IO,多线程等. 今

高级程序设计语言

高级语言的初级阶段实际上是从低级语言(机器语言和汇编语言)向高级语言的过渡,其代表是第一个高级语言Fortran语言,初期高级语言中的问题是表达式处理,这一点从Fortran名称的含义(FORmula TRANsformation language)可以看出,Fortran.Basic语言引入了变量.表达式.语句等概念,由于当时计算机应用的重点是数值计算,所以它与低级语言的主要区别也体现在表达式计算的自动处理上,而且把表达式的计算进一步引入到重复语句的控制和数组下标,更体现出"高级"编

C语言程序设计之C语言概述

2.1 浅谈计算机系统架构 2.1.1 计算机硬件系统 现代计算机是由运算器.控制器.存储器.输入设备.输出设备五大部分组成,它们各司其职,完成了数据的计算.存储.传输任务,计算机整体架构如下图所示 下面是它们各个组件的功能介绍: CPU:也被称为中央处理器,由运算器和控制器组成,其主要作用是数据计算(从内存中获取指令并执行后将结果返回给内存或者写入到磁盘)和控制其他设备(声卡显卡,鼠标键盘)协同工作.目前主流的CPU架构有基于Intel的复杂指令集的X86架构(32位和64位)和手机(ARM指

C语言概述

[C语言]C语言概述 本文文件夹 为什么iOS开发要先学C语言? 一.C语言简史 二.C语言的特点 三.C语言能做什么? 四.C语言的版本号问题 说明:这个C语言专题,是学习iOS开发的前奏. 也为了让有面向对象语言开发经验的程序猿,可以高速上手C语言.假设你还没有编程经验,或者对C语言.iOS开发不感兴趣.请忽略 为什么iOS开发要先学C语言? iOS开发的核心语言是Objective-C,Objective-C是在C语言的基础加了一层面向对象的语法. 为了能够更好地掌握Objective-C

程序员教程-3章-程序设计语言基础知识

这一章难度颇大,好好学也学不到什么,随便写点东西吧 目录结构 3.1 程序设计语言概述 3.1.1 程序设计语言的基本概念 1 低级语言和高级语言 2 编译程序和解释程序 3 程序设计语言的定义 3.1.2 程序设计语言的分类和特点 1 程序设计语言发展概述 2 程序设计范型 3.1.3 程序设计语言的基本成分 1 程序设计语言的数据成分 2 程序设计语言的运算成分 3 程序设计语言的控制成分 4 函数 3.2 语言处理程序基础 3.2.1 汇编程序基础 1 汇编语言 2 汇编程序 3.2.2

【软考】【软件设计师】【知识模块】【第2章:程序设计语言基础知识】

程序设计语言基础知识 2.1 程序设计语言概述 2.1.1  程序设计语言基本概念 低级语言,面向机器的语言,如汇编语言.机器语言: 特性:进行程序设计效率低,程序的可读性差,难以修改.维护,优势是运行速度特别快: 高级语言,面向各类应用的程序设计语言.如C.C++ .Java.Python.Delphi .Pascal.Php 语言处理程序:负责将高级语言翻译成计算机能理解的0和1的程序: 语言之间的翻译基本方式: 汇编.解释.编译: 汇编:对使用汇编语言写成的源程序进行翻译成目标程序(机器可

程序设计语言基本概念语 与经典真题

一.基本概念 在计算机中,程序设计语言可划分为低级语言和高级语言两大类,与高级语言相比,用低级语言开发的程序,其运行效率高,但开发效率低.与程序设计相关的基本概念如下. (1)低级语言:又称面向机器语言,它是特定的计算机系统所固有的语言. (2)汇编语言:是机器语言的一种提升,它使用了一些助记符来表示机器指令中的操作码和操作数.但它仍然是一种和计算机机器语言十分接近的语言,使用起来仍然不太方便. (3)高级语言:与人们的自然语言比较接近,使用起来很方便,也极大的提高了程序设计效率. (4)编译程

程序设计语言学习

人,程序,计算机 计算机的诞生就是为了帮助人们完成一些任务.计算机以其速度快.失误少.持续时间长.保存时间久等特点弥补了人类的不足. 程序是计算机完成人类任务的计划书.说明书.指导书或者说是执行步骤. 运行程序就是计算机照着计划书执行任务的过程. 程序设计语言则是人们写计划书的语言.与人们给自己写计划书用汉语.英语等语言一样,人们给计算机写计划书要用计算机能够认识的语言——机器语言,也就是01串.这也是可编程计算机刚刚出现时人们使用的语言. 但是01这种二进制的语言不好记忆.不好交流.不好理解,