《《高级语言程序设计》教案》由会员分享,可在线阅读,更多相关《《高级语言程序设计》教案(69页珍藏版)》请在金锄头文库上搜索。
1、高级语言程序设计高级语言程序设计教案教案湖北师范学院湖北师范学院 计算机科学系计算机科学系高级语言程序设计 湖北师范学院计算机科学系 - 2 -第第 1 章章C 语言程序设计概述语言程序设计概述教学目标:教学目标:了解程序设计语言的发展历史及其支持环境;熟悉 C 语言程序上机实 验操作步骤;了解 C 语言程序的基本结构以及学会使用库函数和用户自定义函数 组装 C 程序。 教学重点:教学重点:C 语言程序上机实验操作步骤;用库函数和用户自定义函数组装 C 程 序。 教学难点:教学难点:用用户自定义函数组装 C 程序。1.1 程序与程序设计语言程序与程序设计语言程序设计语言是人与计算机进行信息交流
2、的工具。程序设计是一种编写计算 机程序的活动。由于计算机是一种专门用程序来解决特定问题的通用工具,因而 程序设计是为解决某一特定问题而构造一种专用工具的活动。 程序是实体在计算机内部的表示。实体具有一个名字,一组表示该实体特征 的数据以及若干作用在这些数据上的行为。实体具有的数据表示它的状态,而这 些状态可由实体的行为来改变。例如,银行帐户是实体,存款和取款是该实体的 行为。1.1.1 程序设计语言的发展程序设计语言的发展 程序设计语言伴随着计算机技术的进步而不断升级换代,通常人们将程序设 计语言的发展分为以下四个阶段。 (1)机器语言 机器语言是一种 CPU 的指令系统,它是该 CPU 可以
3、识别的一组由 0 和 1 序 列构成的指令代码。下面是某 CPU 指令系统中的两条指令: 10000000 加 10010000 减 用机器语言编写程序,就是从所使用的 CPU 的指令系统中挑选合适的指令, 组成一个指令系列。这种程序虽然可以被机器直接理解和执行,但是由于它们不 直观、难记、难认、难理解、不易查错,只能被少数专业人员掌握,同时程序的 生产效率很低,质量难以保证。这种繁重的手工方式与高速、自动的计算机极不 相称。 (2)汇编语言 为减轻人们在编程中的劳动强度,20 世纪 50 年代中期人们开始用一些“助记 符”代表 0,1 编程。例如,前面的两条机器指令可以定成: ADD A,B
4、 SUB A,B 这种用助记符号描述的指令系统,称为符号语言或汇编语言。 用汇编语言编程,程序的生产率及质量都有所提高。但是汇编语言指令是机 器不能直接识别、理解和执行的。用它编写的程序经检查无误后,要先翻译成机 器语言程序才能被机器理解、执行。这个翻译过程称为“代真”。代真之后得到的 机器语言程序称目标程序,代真之前的程序称为源程序。 机器语言和汇编语言都依赖于具体的计算机,是一种面向机器的程序设计语 言。面向机器的语言可以编制出效率极高的程序,但是需要程序员熟悉机器的内高级语言程序设计 湖北师范学院计算机科学系 - 3 -部结构,并且要“手工”地进行存储器分配。这种编程劳动强度很大,给计算
5、机的 普及推广造成很大的障碍。 (3)高级语言 机器语言和汇编语言是面向机器的,随机器而异。1954 出现的 FORTRAN 语 言以及随后相继再现的其它高级语言,使人们开始摆脱进行程序设计必须先熟悉 机器的桎梏,把精力集中于解题思路和方法,使程序设计语言开始与解题方法相 结合。其中一种方法是把解题过程看作是数据被加工的过程。基于这种方法的程 序设计语言称为面向过程的程序设计语言。C 语言就是一种面向过程的程序设计 语言。 使用高级语言编程可以大大地降低编程过程的劳动强度,提高编程效率。高 级语言的诞生是计算机技术发展史上的一个里程碑。它使人们能摆脱具体机器指 令系统的束缚,用接近人们习惯的语
6、言来构思解题过程,从而大大提高了编程效 率,使人们能够编制出越来越大的程序,以满足日益广泛而深入的应用需求。 实际上,程序是对现实世界的动态状态的模拟。面向过程的程序设计认为, 每个程序都要完成一些规定的功能。每个功能的实现是通过对数据进行一系列的 加工的过程而实现的。因而程序设计包括组织数据设计数据结构,以及设计对 数据结构进行加工的过程设计算法两个部分。N.wirth 给出一个著名的公式:程 序=数据结构+算法。 (4)面向对象的程序设计语言 面向对象的程序设计是一种结构模拟方法,它把现实世界看成是由许多对象 组成。对象与对象之间通过相互发送和接收消息进行联系。消息激发对象本身的 运动,形
7、成对象状态的变化。从程序结构的角度来看,每个对象都是一个数据和 方法的封装体抽象数据类型。 从分类学的观点来看,客观世界中的对象都是可以分类的。也就是说,所有 的对象都属于特定的类,或者说每一个对象都是类的一个实例。因而,面向对象 的程序设计的一个关键是定义类,并由类生成对象。 面向对象的程序比面向过程的程序更清晰、易懂,更适宜编写更大规模的程 序,已为成为当代程序设计的主流。面向对象的程序设计语言很多,其中广泛使 用的一种语言是 C+。C+语言是一种多范型程序设计语言,不仅可以用它编写 面向对象的程序,还可以用它编写面向过程的程序。1.1.2 程序设计语言的支持环境程序设计语言的支持环境 操
8、作系统是各种软件中最重要的一种,它是各种软件的核心与基础,所有其 它软件的运行都要在操作系统的控制下进行。操作系统的作用是有效地组织和利 用计算机的软、硬件资源,使各种程序都能在操作系统的管理下协调工作。P3 图 1.2 表示用高级语言书写的源程序必须经过高级语言编译系统处理(编译) ,然 后在操作系统控制下才能被计算机执行。 操作系统的主要功能包括 CPU 管理、存储器管理、设备管理、文件管理和 作业管理等。不同操作系统的功能和工作方式是不同的。目前,广泛流行的操作 系统有 WINDOWS 和 UNIX。 源程序的编辑、编译、连接与执行 C 语言采用编译方式将源程序转换成二进制的目标代码。编
9、写好一个 C 程序 到完成运行一般经过以下几个步骤:高级语言程序设计 湖北师范学院计算机科学系 - 4 -(1)编辑:编辑包括以下内容:将源程序中的字符逐个输入到计算机内存; 修改源程序;将修改好的源程序保存在磁盘文件中。编辑的对象是源程序,它是 以 ASCII 代码的形式输入和存储的,不能被计算机执行。 (2)编译:编译就是将已编辑好的源程序翻译成二进制的目标代码。在编 译时,还要对源程序进行语法(用来刻划什么样的符号串可组成一个有效的程序) 检查,如果发现有错,则在屏幕上显示出错提示信息,此时应重新进入编辑状态, 对源程序进行修改后再重新编译,直到通过编译为止。应当指出,经过编译之后 得到
10、的二进制代码还不能直接执行,因为每一个模块往往是单独编译的,必须把 经过编译的各个模块的目标代码与系统提供的标准模块(例如,C 语言中的标准 函数)连接后才能执行。 (3)连接:将各模块的二进制目标代码与系统标准模块经过连接处理后, 得到具有绝对地址的可执行文件,它是计算机能够直接执行的文件。 (4)执行:执行一个经过编译和连接的可执行的目标文件。只有在操作系 统的支持和管理下才能执行可执行的目标文件。集成化的工具环境已将编辑、编 译、连接、调试工具集于一身(例如,TURBO C 2.0) ,用户可以很方便地在窗口 下连续进行编辑、编辑、连接、调试、运行的全过程。1.2 C 语言的历史和特点语
11、言的历史和特点1.2.1 C 语言的历史语言的历史Algol 60 CPL BCPL B C 旧标准 C ANSI C C+ Visual C+ (新标准 C) 1960 1963 1967 1970 1972 1978 1983 语言的诞生与发展:在 C 语言诞生以前,系统软件主要是用汇编语言编写 的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般 的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势) ,于 是人们盼望有一种兼有汇编语言和高级语言特性的新语言。语言是贝尔实验室 于 70 年代初研制出来的,后来又被多次改进,并出现了多种版本。80 年代初, 美
12、国国家标准化协会(ANSI) ,根据语言问世以来各种版本对语言的发展和 扩充,制定了 ANSI C 标准(1989 年再次做了修订) 。ALGOL60(1960,面向问题的高级语言,不宜用来编写系统程序) CPL(1963,英国剑桥大学,规模较大) BCPL(1967,剑桥大学 Matin Richards,作了简化) B(1970,美国贝尔实验室 Ken Thompson,进一步简化,又过于简单,功能 有限) C(1972-1973,贝尔实验室 D.M.Ritchie,保持了精练,接近硬件的优点,克 服了 B 语言过于简单的缺点) 1973 年,K.Thompson 和 D.M.Ritchi
13、e 合作用 C 改写 UNIX(第 5 版) 。 1975 年出的的 UNIX 第 6 版使人们普遍注意 C 语言。高级语言程序设计 湖北师范学院计算机科学系 - 5 -以 1978 年发表的 UNIX 第 7 版中的 C 编译程序为基础,Brian W.Kernigha 和 Dennis M.Ritchie 合著了影响深远的The C Programming Language ,书中介 绍的 C 语言称为标准 C。 1983 年,美国国家标准化协会(ANSI)制定了新的标准,称为 ANSI C。 现在微机上常用的 C 语言编译系统有 Microsoft C,Turbo C,Quick C。
14、我们的教材选用的是 Turbo C 2.0 版本。1.2.2 C 语言的特点语言的特点 1语言简洁,表达能力强 语言简洁、紧凑,使用方便、灵活。一共只有 32 个关键字,9 种控制语句;运算符丰富。共有 34 种运算符; 数据结构丰富,便于数据的描述与存储; 具有结构化的控制语句; 强大的库函数,用函数作为程序模块以实现程序的模块化; 语法限制不太严格,程序设计自由度大。 2融合高、低级语言的中级语言 具有高级语言基本结构; 可直接对硬件进行操作,允许直接访问物理地址; 生成的代码质量高,生成目标程序运行速度高,占有内存少,程序执行效率 高。 3可移植性好:独立于具体机器。1.3 用库函数组装
15、用库函数组装 C 程序程序从语言学的角度来看,通常语言都具有如下的体系结构: 符号=字=词=短语=句子=段落=篇章 计算机语言属于语言范畴,当然满足这种普遍规律。但是与自然语言相比, 由于其受到使用环境的约束,计算机语言在语义(描述的是用这种语言编写程序 的含义)上要简单得多。例如,单词词汇相对较少,句子类型相对较少等等。但 是麻雀虽小,五脏俱全。C 语言的体系结构如下: 字符=标识符、常量、运算符、分界符=表达式=语句=函数(库函数和 用户自定义函数)=程序 可见 C 语言的结构和自然语言的结构基本保持一致。 C 语言本身提供的语句很少,许多功能都是通过函数来实现的。例如输入输 出功能并不是 C 语言本身提供的,而是 C 的库函数所提供的。这样做的目的是使 C 语言的核心部分规模较小,而外围(函数)可以做得丰富,并且可以根据需要 增加新的函数,使 C 语言具有较大的灵活性和多方面的功能。在编写 C 程序时应 尽量使用 C 的库函数所提供的函数功能来实现自己的