资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C 程序设计,C程序设计,第 1 章 引言,第 2 章 C语言的基本数据类型,第 3 章 顺序结构程序设计,第 5 章 循环结构程序设计,第 6 章 函数,第 7 章 编译预处理命令,第 8 章 数组,第 4 章 选择结构程序设计,课程概述,第 9 章 指针,第 10 章 字符串及其操作,第 11 章 结构体与共同体,第 12 章 文件处理,引 言,1.1 程序设计语言,1.2 程序设计的基本过程,1.3 流程图,1.3.1 传统流程图,1.3.2 结构化流程图,1.4 简单的C语言程序,1.5 C语言程序的上机步骤,1.6 习题,1.7 实验,第,1,章,分类,机器语言、汇编语言和高级语言。,计算机是由人来指挥的,人们为了用计算机来解决实际问题,一般总,是要编制程序。,程序,是指用某种程序设计语言为工具编制出来的动作序列,它表达,了人们解决问题的思路,用于指挥计算机进行一系列操作,从,而实现预定的功能。,程序设计语言,是用户用来编写程序的语言,它是人与计算机之间交换信息的,工具。,是计算机软件系统的重要组成部分,而相应的各种语言处理程,序属于系统软件。,Language,教学进程,程序设计语言,1.1,机器语言,对于计算机来说,一组机器指令就称为机器语言程序。,机器语言是最底层的计算机语言。计算机硬件可以直接识别用机器,语言编写的程序。,在用机器语言编写的程序中,每一条机器指令都是二进制形式的指,令代码。,Language,教学进程,对于不同的计算机硬件(主要是CPU),其指令系统是不同的,因此,,针对一种计算机所编写的机器语言程序不能在另一种计算机上运行。由于,机器语言程序是直接针对计算机硬件的,因此,机器语言程序的执行效率,比较高,能充分发挥计算机的速度性能。但是,用机器语言编写程序的难,度比较大,容易出错,而且程序的直观性比较差,也不容易移植。,指令代码,操作码,操作码告诉计算机作何种操作,地址码,地址码则指出被操作的对象,汇编语言,为了便于理解与记忆,人们采用能帮助记忆的英文缩写符号(称为,指令助记符,)来代替机器语言指令代码中的操作码,用地址符号来,代替地址码。用指令助记符及地址符号书写的指令称为,汇编指令,(也,称符号指令),而用汇编指令编写的程序称为,汇编语言源程序,。汇编,语言又称符号语言。,教学进程,需要指出的是,计算机不能直接识别用汇编语言编写的程,序,必须由一种专门的翻译程序将汇编语言源程序翻译成,机器语言程序后,计算机才能识别并执行。这种翻译的过,程称为汇编,负责翻译的程序称为,汇编程序,。,汇编程序,高级语言,机器语言和汇编语言都是面向机器的语言,称为低级语言。,教学进程,低级语言,高级语言,从20世纪50年代中期开始逐步发展了面向问题的程序设计,语言,称为高级语言。,程序设计的主要目标,是程序的可读性、易维护性和可移植性。,1,2,3,为了计算表达式5+3的值,使用高级语言来编程就简单得多。,例子,C,Pascal,BASIC,1.2,程序设计的基本过程,程序设计=算法+数据结构+方法+工具,教学进程,问题的分析。,结构特性的设计。,算法的设计。,流程的描述。,调试与运行。,问题的分析,问题的分析,根据所要解决的问题性质与类型,最基本的分析内容主要有以下几个方面:,教学进程,程序设计的基础,数学模型或常用的方法,问题的性质,进一步确定在解决这个问题过程中,要做些什么?怎么做?,输入/输出数据,1)数据的类型是什么?如整型、实,型、双精度型、字符型等。,2)在何种设备上进行输入或输出?,3)采用什么样的格式进行数据的输,入或输出?,结构特性的设计,教学进程,结构特性的设计,控制结构,数据结构,一个程序的功能不仅取决于所选用的操作,而且还取决于各,操作之间的执行顺序,即程序的控制结构。程序的控制结构实际,给出了程序的框架,决定了程序中各操作的执行顺序。在程序设,计过程中,通常用流程图形象地表示程序的控制结构。,一般来说,在对数据进行处理时,数据的不同组织形式,,其处理的效率是不同的。,结构特性的设计,教学进程,学 号,姓 名,性 别,年 龄,成 绩,80156,80157,80158,80159,80160,80161,80162,80163,80164,80165,80166,80167,80168,80169,张小明,李小青,赵 凯,李启明,刘 华,曾小波,张 军,王 伟,胡 涛,周 敏,杨雪辉,吕永华,梅 玲,刘 健,男,女,男,男,女,女,男,男,男,女,男,男,女,男,20,19,19,21,18,19,18,20,19,20,22,18,17,20,86,83,70,91,78,90,80,65,95,87,89,61,93,75,结构特性的设计,教学进程,学 号,姓 名,性 别,年 龄,成 绩,80156,80157,80162,80165,80166,张小明,李小青,张 军,周 敏,杨雪辉,男,女,男,女,男,20,19,18,20,22,86,83,80,87,89,学 号,姓 名,性 别,年 龄,成 绩,80159,80161,80164,80168,李启明,曾小波,胡 涛,梅 玲,男,女,男,女,21,19,19,17,91,90,95,93,将成绩在90分以上(包括90分)、8089分、7079分、6069分,之间的学生情况分别登记在四个独立的表中。,结构特性的设计,教学进程,学 号,姓 名,性 别,年 龄,成 绩,80158,80160,80169,赵 凯,刘 华,刘 健,男,女,男,19,18,20,70,78,75,学 号,姓 名,性 别,年 龄,成 绩,80163,80167,王 伟,吕永华,男,男,20,18,65,61,由这个例子可以看出,在对数据进行处理时,,可以根据所需要作的运算不同,而将数据组织成便,于运算的形式,以便提高数据处理的效率。,算法的设计,教学进程,算法的设计,在进行问题分析时,要建立数学模型或对常用,的方法进行分析比较,这就是算法设计。,选择一个好的算法是程序设计的关键。应主要考虑以下两个基本原则:,1)实现算法所花费的代价要尽量的小,即计算工作量要小。,2)根据算法所得到的计算结果应可靠。,算法在执行过程中往往要受到计算工具的限制,,使执行结果产生偏差。,是指解题方案的准确而完整的描述。从程序角度来看,,也可以说算法是一个有限条指令的集合,这些指令确,定了解决某一特定类型问题的运算序列。,流程的描述,流程图,编程,教学进程,程序设计的过程,实际上就是确定解决问题的详细,步骤,而这些步骤通常称为流程。,流程的描述,描述工具,自然语言,第一步 输入x与y。,第二步 判断x是否为0:,若x=0,则输出错误信息;,否则计算y/xz,且输出z。,算法描述语言,【例1-4】计算并输出z=y/x。,INPUT x,y,IF(x=0)THEN,OUTPUT ERROR,ELSE,z=y/x,OUTPUT z,流程的描述,教学进程,流程图,编程,#include stdio.h,main(),float x,y,z;,printf(input x,y:);,/*输入提示*/,scanf(f,f,&x,&y);,/*输入x与y的值*/,if (x=0)printf(error!x=0n);,/*若x=0,则输出错误信息*/,else /*否则计算并输出结果*/,z=y/x;printf(z=fn,z);,输入x,y,x=0,yes,no,输出错误信息,y/xz,输出z,结束,调试与运行,教学进程,调试与运行,测试,是指通过一些典型例子,尽可能多地发现程序中的,错误。因此,测试的目的是为了发现程序中的错误,而不是为了证明程序正确。,调试,是指找出程序中错误的具体位置,并改正错误。因,此,调试又称查错。,测试与调试往往是交替进行的,通过测试发现程序,中的错误,通过调试进一步找出错误的位置并改正错误。,这个过程需要重复多次。,传统流程图,教学进程,1.3,流程图,任何复杂的程序都可以用顺序、选择和循环三种基本结构组合而成。,1966年,Bohm和Jacopini,顺序结构反映了若干个模块之间连续执行的顺序。,选择结构中,由某个条件P的取值来决定执行两个模块之间的哪一个。,在当型循环结构中,只有当某个条件成立时才重复执行特定的模块,(称为循环体)。,在直到型循环结构中,重复执行一个特定的模块,直到某个条件成立,时才退出该模块的重复执行。,在多情况选择结构中,根据某控制变量的取值来决定选择多个模块中,的哪一个。,一般的和多情况,选择结构,当型循环和,直到型循环,传统流程图,教学进程,A,B,顺序结构,P,A,B,F,T,选择结构,P,S,F,T,当型循环,S,P,F,T,直到型循环,p=1,A,1,T,F,p=2,A,2,T,F,p=n,A,n,T,F,多情况选择结构,传统流程图,教学进程,传统流程图有以下几个主要缺点:,传统流程图本质上不是逐步求精的好工具,它会使程序员,过早地考虑程序的控制流程,而不去考虑程序的全局结构。,传统流程图不易表示层次结构。,传统流程图不易表示数据结构和模块调用关系等重要信息。,传统流程图中用箭头代表控制流,因此,程序员不受任何,约束,可以完全不顾结构程序设计的思想,随意进行转移,控制。,结构化流程图,教学进程,结构化程序设计要求把程序的结构限制为顺序、选择和循环三种基本,结构,以便提高程序的可读性。,这种结构化程序具有以下两个特点:,以控制结构为单位,只有一个入口和一个出口,使各单位之间的接口比,较简单,每个单位也容易被人们所理解。,缩小了程序的静态结构与动态执行之间的差异,使人们能方便、正确地,理解程序的功能。,NS图 是一种不允许破坏结构化原则的图形算法描述工具,又称,盒图。在NS图中,去掉了传统流程图中容易引起麻烦的流程线,全部,算法都写在一个框内,每一种基本结构也是一个框。,结构化流程图,教学进程,NS图,顺序结构,S,1,S,2,S,3,循环结构,当型循环结构,直到型循环结构,WHILE条件,S,UNTIL条件,S,选择结构,两路分支结构,多路分支结构,条件,满足,不满足,S,1,S,2,条件,情况1,情况n,S,1,S,2,情况2,S,n,在循环体S中,应该要有改变条件的,成分,否则将会造成死循环。,结构化流程图,功能域比较明确,可以从框图中直接反映出来。,不可能任意转移控制,符合结构化原则。,教学进程,在以上三种基本结构中,每一个模块S或S1、S2、S3等都又可以,是这三种基本结构之一。,由以上所描述的三种基本控制结构的形式可以看出,NS图有以下,几个基本特点:,很容易确定局部和全程数据的作用域。,很容易表示嵌套关系,也可以表示模块的层次结构。,结构化流程图,教学进程,3 n,i 除尽 n,输出n,1 flag,flag=0?,是,否,n+1 n,是,否,ik,且flag=0,n k,2 i,0 flag,i+1 i,n 100,简单的C语言程序,1.4,教学进程,【例1-1】编写一个C程序,其功能是显示字符串THE C,PROGRAMMING LANGUAGE“。其C程序如下:,#include stdio.h,main(),printf(THE C PROGRAMMING LANGUAGE n );,这是一个简单而完整的C语言程序。如果将这个程序利用编辑,程序输入进计算机,并经过编译和连接后,运行结果是在显示器屏,幕的当前光标位置处显示如下字符串:,THE C PROGRAMMING LANGUAGE,换行,教学进程,【例1-2】下面C语言程序的功能是:从键盘输入两个实数,然后计算并,显示输出这两个实数平方之和的平方根值。,#include stdio.h,#include math.h,main(),float x,y,s;/*定义三个实型变量*/,printf(input x and y:);/*给出输入提示*/,s
展开阅读全文