高级语言程序设计

发布 2021-04-24 15:18:28 阅读 8920

第一章计算机软件和算法。

一、计算机软件。

计算机软件:与计算机系统操作有关的程序、规程、规则及任何与之有关的文档及数据。包含两部分:

一是机器可执行的有关程序和数据;其二是与软件开发有关相关文档。它是一种逻辑产品而非物理产品,一般来说软件可分为系统软件、实时软件、嵌入式软件工程计算软件、事务处理软件、人工智能软件、个人软件及case软件,后面的总可概括为应用软件。

程序:是用程序设计语言描述的适合于计算机处理的语句序列。目前程序设计语言有三种类型:

依赖于具体机器的机器语言和汇编语言(用**处理单元指令集表示的符号语言),面向过程及面向对象的语言(程序设计语言非常多,但广泛使用的就较少,如用于科学计算的fortran77语言、用于事务处理的cobol语言、很合适的支持程序设计的pascal语言、支持现代软件开发的c语言ada语言、支持面向对象的c++语言等),面向问题的语言(这类设计时不需要指明具体的实现过程,只需给出问题和输入的数据就可以获得所需结果,如数据库查询语言、报表语言、机床控制专用语言、电路设计专用语言等,也称非过程语言或四代语言)。

文档:是一种数据**以及其上所记录的数据。

软件的发展也像硬件一样,不断地在发展和演变,不过其发展周期比硬件的发展周期要长,早期的软件开发对个人的依赖性和计算机硬件的依赖性比较大,成本很高,复用率低。在上一个世纪90年代开始,采用面向对象的技术进行软件开发,软件产品的质量和种类不断丰富,出现软件车间。

二、算法。为了有效地进行程序设计,须具备两方面的知识:掌握一门高级语言的语法规则和熟悉解决问题的方法和步骤。

语言只是一种工具,而有效地解决问题的方法和步骤才是最为根本的,这就是算法。算法是程序设计的核心。

算法(algorithm):为解决某一个问题的一组明确步骤的有序集合,它产生结果并在有限的时间内终止。解决同一个问题可以有不同的方法和步骤,也即算法不同,算法不仅有正确和错误的区分,还有质量的高低好坏区分。

因此在解决同一个问题时还要选择合适的算法。设计好一个算法后,再一个要考虑的就是如何实现这个算法,也即是必须有可操作性。

计算机算法可分两大类别:数值运算算法(科学计算)和非数值运算算法(用于事务管理领域)。

一个算法具有的特点:

1)有穷性,算法应包含有限的操作步骤,这个有穷性里的有限指的是合理范围内。

2)确定性,算法中的每一个步骤都应当是确定的,算法的含义唯一的,不产生歧义性。

3)有零个或多个输入,输入也即是在执行算法时需要从外界取得必要的信息和数据。

4)有一个或多个输出,没有输出的算法时没有意义的。

5)有效性,算法中的每一个步骤当能有效地执行,并得到确定的结果。

算法设计的要求,通常一个好的算法要考虑如下目标:

1)正确性(correctness),正确的含义可分下面几个层次:程序不含有语法错误,程序对于几组输入数据能够得出满足规格说明要求的结果,程序对于精心选择的典型、苛刻带有刁难性的几组输入数据能够得到满足规格说明要求的结果,程序对于一切合法的输入数据都能产生满足规格说明要求的结果,一般都以第三种标准为衡量一个程序是否合格的标准。

2)可读性(readability)

3)健壮性(robustness),当输入的数据非法时算法也能够作出反应而不是出现故障。

4)效率(efficiency)与低存储量(memory)需求,效率指的是算法的执行时间,存储量指算法执行过程中所需要的最大存储空间。

算法效率的度量。

算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。

度量一个程序的执行时间可以用两种方法:

1)事后统计法,一般计算机内部都有计时功能,不同算法的程序可以通过一组或多组相同的统计数据来分辨优劣。其不足是必须先运行所编写的程序,也依赖计算机本身的条件。

2)事前分析估算法,程序的运行时间所依据的因素有:算法选用的策略,问题的规模,语言本身(实现语言级别越高,效率就越低),编译时机器**的质量,机器执行指令的速度。

一般情况下,一个算法是由控制结构和原操作(固有数据类型的操作)构成,算法的时间取决于两者的综合效果,算法中的基本操作重复执行的次数是问题规模的某个函数,算法的时间度量可表示为它表示随问题规模的增大,时间的增长率和的增长率相同,这称为算法的渐近时间复杂度(asymptotic time complexity)或时间复杂度。

算法的存储空间需求可以用空间复杂度来度量,记为,一个上机程序需要存储空间来寄存本身所用的指令、变量和输入的数据等,也还要一些对数据进行操作的单元和一些辅助空间。

不管是时间复杂度还是空间复杂度,都考虑最坏情况。

三、算法的表示。

算法与程序是不同的,一个算法可以用自然语言、流程图、结构化流程图、伪**或pad图等表示。

1、自然语言表示,其很随意,但不方便,文字冗长,并且有一定的歧义性。

2、用流程图表示,其常用一些图框来表示各种类型的操作,常用的图框:

这种方法表示算法,直观形象便于理解。

3、用n-s流程图表示算法。

传统的流程图(又称bs型,a bowl of spaghetti)用流程线指出各框的执行顺序,流程线的使用没有限制,这样对于复杂的算法,就要花很大的精力去追踪流程,并难以理解算法的逻辑。

为了提高算法的质量,使算法的设计和阅读方便,就要限制流程线的使用,规定几种基本结构,整个算法就是由这些基本结构按一定的规律组成。已经证明,可以由三种基本结构顺序组成一个算法,并能解决任何复杂的可解问题。这三种基本结构就是:

顺序结构:两个框顺序执行。最简单的一种结构,两个框都执行,程序中必然会出现的一种结构。

选择结构:无论条件是否成立,两条路径中必然会选择一条去执行,a,b在一次程序执行过程中只会有一个执行到。

循环结构:又称重复结构,它会反复执行某一部分操作。存在两种类型,一种是当型结构(while型),它是先判定,后执行的一种结构,当给定的条件满足时,反复执行a,当其不满足时,终止。

另一种是直到型结构(until型),它是先执行,后判定的一种结构,当给定的条件不满足时就会去反复执行a,直到给定的条件满足时止。

这三种基本结构的共同点:一个入口,一个出口,没有死循环,没有死语句,因此这三种基本结构称为良结构。

使用这种框图表示出来的算法,我们称它为n-s结构算法,用它表示的算法直观形象、易于理解,它如同一个多层的盒子,因此又称盒图。

4、用伪**表示算法。

在设计算法时,一个算法可能要反复修改,因此用n-s流程图表示时会显得不方便,也即它在设计过程中的表示是不理想的,为了设计算法的方便,可采用伪**工具来表示。

伪**是用介于自然语言和计算机语言之间的文字和符号来描述算法,自上而下,方便自由,易于修改,容易表达出设计者的思想。

四、结构化程序设计方法。

结构化程序设计强调程序的规范化,提倡清晰的结构和程序设计风格。现代程序设计的基本思想就是:把复杂的问题进行分解和细化,再分别把细化后的部分进行设计,最后再整合出来。

即自顶向下,逐步细化,模块化设计,结构化编码。

用三种基本结构编写出来的程序就是结构化程序。

结构化程序=算法+语言+结构化方法+数据结构。

五、算法举例。

求一个方程的根。

求1-100之间所有数相加的和。

判断一个数是否是素数。

从输入的所有数中找出最大的数。

将两个变量的值互换。

一些基本算法。

求和(将和初始化,循环每次迭代中一个新数加上,退出循环输出结果)

乘积(将乘积初始化,循环每次迭代中一个新数与乘积相乘,退出循环输出结果)

最大和最小(初始化,循环迭代判断每次找出一个新的最大和最小,退出循环输出结果)

第二章c语言基础。

一、c语言的特点。

c语言最早是用来描述unix操作系统及其上层软件的,既可编写系统软件又能编写应用软件,c语言与unix是并肩发展的。

c是在b语言的基础上发展起来的,根源可追溯到2023年的algol60,2023年剑桥根此推出cpl,2023年对cpl简化推出bcpl,2023年美国贝尔实验室以bcpl为基础,设计出很接近硬件的b语言并编写出第一个unix操作系统,2023年美国贝尔实验室的在b的基础上设计出了c语言,后来对c不断进行改进,但一般都在美国贝尔实验室内部使用,2023年unix第六版公布,2023年标志性著作《可移植c语言编译程序》问世,c语言得到了迅速发展,2023年brian and 合著影响深远的名著《the c programming language》,这是标准c,2023年ansi制定了c的标准ansi c,2023年又对它进行重新核定成为新标准,iso接受了这个标准。c语言是现在国际上广泛使用的一种语言。

c语言的主要特点:语言简洁紧凑,使用方便灵活,它只有32个关键字,9种控制语句,程序书写自由,主要用小写字母;运算符丰富,它有34种运算符,因此其运算类型和表达式都丰富多彩;数据结构丰富,可以用它实现各种复杂的数据结构(如链表、栈、树、图等)的运算;具有结构化的控制语句,易于程序的模块化,符合现代编程风格;语法环境宽松,编写程序自由度大,编译程序放宽了对程序语法上的检查;能对位操作,能实现汇编的大部分功能,能直接对硬件进行操作;生成的目标**质量高,和谐执行效率高;程序的可移植性强。

一般而言,许多大型的软件都有用c编写,这是因为其的可移植性和硬件控制能力,也常常用它编写接口程序,最优秀的操作系统unix是用c编写的。

二、数据类型。

数据:能输入到计算机中并能被计算机程序处理的符号总称。

数据元素:数据的基本单位,在程序中通常是作为一个整体进行考虑和处理的对象,它可以包含若干数据项。

数据结构:相互间存在一种或多种特定关系的数据元素的集合。

数据类型:是一个值的集合和定义在这个值集上的一组操作的总称,如整型:其值是某个区间上的整数,其上的操作是加减乘除取模等操作。

c的数据类型:

基本类型(整型,字符型,单精度实型,双精度实型,枚举型)

构造类型(数组,结构体,共用体)

指针类型。空类型。

c中的数据分为常量和变量,它们分别属于这些类型。

三、c语言初步。

1、常量和变量。

常量:在程序执行过程中,其值不能发生改变的量。常量分为数值常量和符号常量两大类。

变量:在程序执行过程中,其值可以发生改变的量。变量名:变量的标识符号,每个变量都有一个标识符号,用以区别不同的变量。

标识符:用来标识变量、符号常量、数组、文件、类型等的有效字符序列。注意事项:

c中规定标识符只能由字母、数字和下划线构成,且第一个字符必须是字母或下划线。

标识符的长度系统不一样,规定不一样,但一般不超过8个。

注意区分大小写。

为了增加程序的可读性,标识符命名时一般做到见名知意。

高级语言程序设计

总分 100.00,做题时间 90分钟 一 单项选择题 总题数 15,分数 30.00 语言早期规定建立文件缓冲区采用的形式是 分数 2.00 a.缓冲文件系统。b.非缓冲文件系统。c.分页文件系统。解析 2.以下是对二维数组的正确说明的是 分数 2.00 a 3,4 a 1 4 a 3 4 解析 ...

高级语言程序设计

班级学号 021110212 姓名 卢荼 同组同学。成绩。时间 2011.6 28 题目 班级档案管理系统。一 设计任务与目标。对一个有n个学生的班级,通过该系统实现对该班级学生的基本信息进行录入 显示 修改 删除 保存等操作的管理。功能要求 1 本系统采用一个包含n个数据的结构体数组,每个数据的结...

高级语言程序设计

36.下面程序的运行结果是。include void main int a 2,b 1,c 2 if aif b 0 c 0 else c printf c d c 参 考察知识点 if语句的嵌套。运行结果 c 2 下面程序的运行结果是。include void main int a,b,c a 3...