C语言程序设计教程(厦门大学出版社提供)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

出品人:蒋东明主编:叶东毅责编:眭蔚制作人:洪晓婧第一章程序设计概述第二章C语言概述第三章数据类型、运算符与表达式第四章程序控制结构第五章数组第六章指针第七章函数第八章用户自定义数据类型第九章文件第一章程序设计概述主要内容:第一节程序和程序设计语言第二节算法概述第三节结构化程序设计方法本章小结习题一、程序与程序设计的概念作为一种能自动计算的机器,计算机通过执行一系列指令来完成给定的计算工作。因此,要让计算机完成某项任务,就必须将完成这项任务的方法和具体步骤编写成计算机可以直接或间接执行的一系列指令,使之执行这些指令后,就可以完成给定的任务。这样的一系列指令的集合就称为计算机程序或简称程序,编写这些指令就是程序设计。第一章第一节二、程序设计语言程序设计语言是一组用来定义计算机程序的语法规则,用来向计算机发出指令。人们借助程序设计语言来编写程序,解决不同的问题。程序设计语言按照语言级别可以分为低级语言和高级语言。第一章第一节二、程序设计语言低级语言有机器语言和汇编语言,主要由机器基本指令集构成。它依赖于所使用的计算机硬件,即与特定的机器有关。它具有运行效率高的特点,但编写复杂、费时,容易出差错,而且程序修改维护困难。高级语言的表示方法比较接近于自然语言,在一定程度上与具体的计算机硬件无关,相对来说易于学习和使用,而且也便于维护,但是运行效率不如低级语言。第一章第一节二、程序设计语言下面对程序设计语言做进一步的解释。1.第一代程序设计语言(1GL):机器语言2.第二代程序设计语言(2GL):汇编语言3.第三代程序设计语言(3GL):高级语言4.第四代程序设计语言(4GL):面向问题语言第一章第一节一、算法的概念一般来说,为解决一个问题而采取的方法和步骤,就称为算法。计算机算法则是用计算机求解一个具体问题或执行特定任务的一组有序的操作步骤(或指令),是构成计算机程序的核心部分。著名瑞士计算机科学家N.Wirth曾经提出一个公式:程序=数据结构+算法其中,数据结构主要是数据的类型和数据的组织形式,是对程序中数据的描述。算法则是对程序中操作的描述,也就是操作步骤。第一章第二节一、算法的概念需要注意的是,算法一般只是对处理问题思想的一种描述,不是计算机可以直接执行的程序代码。因此算法本身是独立于计算机的,算法的具体实现则由计算机完成。从这个意义上说,程序设计的本质就是要将算法转化为计算机程序。处理一个问题,可以有不同的算法。设计和选择算法是至关重要的。不仅要保证算法正确,还要考虑算法的质量和效率。第一章第二节二、算法的表示方法描述一个算法可以有不同的方式,常见的有以下三种:(1)使用自然语言描述算法;(2)使用流程图描述算法;(3)使用伪代码描述算法。第一章第二节二、算法的表示方法下面仍以求1到100之间所有偶数的和(记为sum)为例说明算法的3种描述方法。假设采用前面提到的最后一种算法,即先求出1到50的和再乘以2。第一章第二节二、算法的表示方法第1种:使用自然语言描述求sum的算法。①假设初始值i为1;②假设变量sum初始值为0;③如果i≤50时,执行④,否则转出执行⑦;④计算sum加上i的值后,重新赋值给sum;⑤计算i加1,然后将值重新赋值给i;⑥转去执行③;⑦计算sum乘以2的值,输出sum的值,算法结束。使用自然语言描述算法的方法比较容易掌握,但是有些操作不易表述清楚,例如循环操作。另外,还可能造成歧义,使他人对相同的一句话产生不同的理解。第一章第二节第2种:使用流程图描述求sum的算法传统的流程图由一些特定意义的图形、流程线及简要的文字说明构成,它能明确地表示算法的运行过程。表1-1给出流程图中所使用的图形的含义。图框名称含义起止框表示算法开始或结束的符号流程线表示算法流程的方向输入输出框表示算法过程中的信息输入和输出判断框表示算法过程中的选择分支结构。通常用上面的顶点表示入口,根据需要用其余的顶点表示出口处理框表示算法过程中需要处理的内容。只有一个入口和一个出口第一章第二节表1-1流程图的图形解释二、算法的表示方法第2种:使用流程图描述求sum的算法。用流程图描述的算法如图1-1所示。从图1-1中,可以比较清晰地看出算法的执行过程。第一章第二节图1-1求sun的算法流程图二、算法的表示方法第2种:使用流程图描述求sum的算法。传统流程图的一个主要不足是流程线的用法缺乏规范。由于流程线可以转移流程的执行方向,如果使用不当或流程控制转移不明晰,容易导致程序的混乱和出错。为此,人们(I.Nassi和B.Schneiderman,1973年)设计了一种新的流程图,它没有使用流程线,而是把整个算法写在一个大框图内,这个大框图由若干个小的基本框图构成,算法按照从上到下、从左到右的顺序执行。这种流程图简称N-S流程图。第一章第二节二、算法的表示方法第2种:使用流程图描述求sum的算法。第一章第二节图1-2求sun算法的N-S流程图二、算法的表示方法二、算法的表示方法第3种:使用伪代码描述sum的算法伪代码是一种用来书写程序或描述算法时使用的非正式表述方法,主要采用自然语言、数学公式和符号来描述算法的操作步骤,同时采用计算机高级语言(如C、Pascal、VB、C++、Java等)的基本控制结构来描述算法步骤的执行顺序。第一章第二节二、算法的表示方法第3种:使用伪代码描述sum的算法。下面是用伪代码描述sum的算法,并附有注释行。BEGIN/*算法开始*/i←1;/*为变量i赋初值*/sum←0;/*为变量sum赋初值*/whilei=50/*当变量i=50时,执行下面的环体语句*/{sum←sum+i;i←i+1;}sum←2*sum;输出sum的值END/*算法结束*/第一章第二节一、结构化程序基本控制结构结构化程序设计方法由著名的计算机科学家E.W.Dijkstra和N.Wirth等人在20世纪60年代后期提出并逐渐发展起来,其基本思想是采用“自顶向下、逐步求精、分而治之”的原则,将一个较为复杂的原问题分解成若干相对独立的小问题,依次细化,直至各个小问题获得解决为止。第一章第三节一、结构化程序基本控制结构按照结构化程序设计的观点,任何算法功能都可以通过三种基本控制结构以及它们的嵌套组合来实现,这三种结构就是顺序结构、选择(分支)结构和循环结构。第一章第三节1.顺序结构顺序结构是依次执行指令的结构。即,程序中的指令按照顺序依次执行,每条指令都必须执行,且只执行一次,如图1-3所示,图1-4是相应的N-S流程图。第一章第三节图1-3顺序结构图1-4顺序结构N-S图一、结构化程序基本控制结构2.选择(分支)结构选择(分支)结构根据逻辑判断的结果,做不同的处理。一种典型的选择(分支)结构是双分支结构,如图1-5所示,图1-6是相应的N-S流程图。第一章第三节图1-3双分支结构图1-4双分支结构N-S图一、结构化程序基本控制结构3.循环结构在循环结构中,当条件满足时,反复执行某条件语句或语句组的操作,直到条件不满足时为止。循环结构也称重复结构。根据条件设置方式和执行方式的不同,可以有两种不同的循环结构,分别为当型循环结构和直到型循环结构,如图1-7和图1-8所示,图1-9和图1-10分别是相应的N-S流程图。第一章第三节一、结构化程序基本控制结构3.循环结构第一章第三节图1-7当型循环语句图1-8直到型循环结构一、结构化程序基本控制结构图1-9当型循环语句图1-10直到型循环结构二、结构化程序设计的原则和步骤要利用计算机语言设计一个结构化的程序,一般应遵循以下几个原则:(1)使用语言中的顺序、选择、循环等基本控制结构表示程序逻辑。(2)选用的控制结构只准许有一个入口和一个出口。(3)程序语句组成容易识别的块,每块只有一个入口和一个出口。(4)复杂结构应该用基本控制结构进行组合嵌套来实现。(5)尽量避免使用跳转语句(如GoTo、Break等语句)。第一章第三节二、结构化程序设计的原则和步骤结构化程序设计通常包括以下6个主要步骤。1.问题分析2.建立数学模型3.算法设计在设计算法时,要采用清晰的逻辑结构,同时充分考虑到算法的复杂性问题,即算法的计算时间和占有的空间应尽可能地少。4.程序编码5.测试6.建立程序文档第一章第三节作为开篇,本章的主要目的是概要性地介绍程序设计的基本知识,共包含3个小节的内容。第一节简要说明了什么是程序、程序设计和程序设计语言,并对程序设计语言的分类进行了介绍。第二节对算法的概念、其与程序设计的关系以及三种基本的算法表示方法进行了简单描述。第三节介绍了结构化程序设计的基本思想、基本控制结构以及主要步骤。1.1什么是程序设计?1.2低级语言和高级语言的主要区别是什么?1.3为什么说算法是程序设计的灵魂?1.4结构化程序设计的基本思想是什么?第二章C语言概述主要内容:第一节C语言的发展历史和特点第二节C语言程序的结构第三节C语言程序的编译和运行本章小结习题一、C语言的发展历史C语言是一种高效的编译型结构化程序设计语言,最早由美国贝尔实验室的DennisM.Ritchie在B语言的基础上开发出来,并于1972年在一台DECPDP-11计算机上首次实现。最初的C语言只是为描述和实现Unix操作系统提供一种工作语言而设计的。1973年,KenThompson和DennisM.Ritchie两人合作,把Unix系统90%以上的内容用C语言改写,即Unix的第5版。第二章第一节一、C语言的发展历史随后几年,贝尔实验室又对C语言进行了多次的改进,但仍局限在内部使用。直到1975年Unix第6版公布后,C语言的突出优点才引起人们的普遍注意。1977年出现了不依赖于具体机器的C语言编译文本——《可移植C语言编译程序》,它使C语言移植到其他机器时所需做的工作大大简化,同时也推动了Unix系统迅速地在各种机器上实现。第二章第一节一、C语言的发展历史1978年,BrianW.Kernighan和DennisM.Ritchie出版了名著《C程序设计语言(TheCProgrammingLanguage)》,现在此书已被翻译成多种语言,成为C语言最权威的教材之一。1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C语言的发展和扩充,制定了一套ANSI标准,称为ANSIC。1987年,ANSI又公布了新标准——87ANSIC。1990年,国际标准化组织ISO接受87ANSIC为ISOC的标准(ISO98991990)。第二章第一节二、C语言的特点C语言之所以风靡全球、被广泛使用,是因为它具有以下优点:(1)可移植性强。(2)语言简洁紧凑,使用方便灵活。(3)数据类型和运算符丰富多样。(4)生成的目标代码质量好,程序执行效率高。第二章第一节二、C语言的特点当然,C语言也不是完美无缺的,在盛行的同时也暴露出了它的局限性:(1)C语言类型自检机制较弱,使得程序中的一些错误不能在编译时被发现。(2)C语言本身缺乏支持代码重用的机制,使得各个程序的代码很难为其他程序所用。第二章第一节一、C语言程序的构成为了说明C语言程序结构的特点,先看下面几个例子,这些例子体现了C语言程序在组成结构上的特点。例2.1一个简单的例子。#includestdio.hvoidmain(void){printf(WelcometoCprogram!\n);}将上述程序输入计算机,进行编译、连接、运行后在屏幕上输出:WelcometoCprogram!第二章第二节一、C语言程序的构成通过这个例子,我们可以初步看到:C的程序结构包含预处理部分“#includestdio.h”,它的功能是提供标准输入输出函数有关的信息。在使

1 / 776
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功