《C01语言程序设计概述.ppt》由会员分享,可在线阅读,更多相关《C01语言程序设计概述.ppt(29页珍藏版)》请在三一办公上搜索。
1、1,C语言程序设计,课程简介,教材杜友福主编,C语言程序设计,科学出版社,2007年8月辅助教材杜友福主编,C语言程序设计导学,科学出版社,2007年8月56学时(理论教学46+课内上机10)要求自主安排课外上机20学时以上。,2,教学计划,第一章 程序设计基本概念(3学时)第二章 数据类型、运算符和表达式(5学时+2学时上机)第三章 顺序结构程序设计(4学时+2学时上机)第四章 选择结构程序设计(4学时+4学时上机)第五章 循环结构程序设计(6学时+6学时上机)第六章 数组(6学时+6学时上机),3,课程要求,课前请做好预习保持课堂安静,头脑清醒认真、独立、按时完成并提交作业所有作业必须独立
2、完成作业必须经上机调试通过重视上机实践,有效利用宝贵的上机时间上机时间初步安排:第115周星期五第4大节。上机考勤4次缺席,取消考试资格课内上机时玩游戏或上网二次,按缺席一次处理,4,第一章 C语言程序设计概述,教学目标掌握程序及程序设计的基本概念,程序的运行过程、算法及其特点、算法的描述、C语言程序的基本结构。熟悉设计程序时应遵循的基本原则。了解利用计算机解决实际问题的过程、结构化程序设计方法并在以后的程序设计中应用和逐步熟练掌握。基本要求:能将日常生活中解决一些简单问题的步骤用算法描述,掌握N-S图的算法表示方法。熟悉程序开发环境,学会上机基本操作。,5,1.1 程序和程序设计语言,一、程
3、序与程序设计程序是控制计算机运行的指令序列。程序设计就是设计、书写及检查程序的过程。二、程序设计语言程序设计语言是软件系统的重要组成部分 程序设计语言是描述计算机指令的工具。各种程序设计语言有自己的语法、词汇。可分为机器语言、汇编语言和高级语言三类。,6,1.机器语言,由“0”和“1”组成的二进制表示的机器指令的集合。例如某种类型的计算机规定以“10000000”表示一个“加法”操作,以“10010000”表示一个“减法”操作。机器指令一般由操作码和操作数两个部分组成。计算机硬件可以直接识别,执行的速度比较快。针对一种计算机所编写的机器语言程序,一般不能在另一种类型的计算机上运行,而且程序的编
4、写难度较大,修改、调试也不方便,容易出错,程序的直观性较差。,7,2.汇编语言,用能够帮助记忆的指令助记符来代替机器指令中的操作码,用地址符号或十进制数来代替操作数。如用“ADD”表示加法操作,用“SUB”表示减法操作。比机器语言直观,容易记忆和理解,编写的程序比机器语言程序易读、易检查、易修改 不同类型的计算机,汇编语言源程序不能通用。必须由一种专门的翻译程序(汇编程序)将汇编语言源程序翻译成机器语言程序,计算机才能执行。,8,3.高级语言,面向问题的程序设计语言 与具体的计算机硬件无关,其表达方式接近于被描述的问题,接近于自然语言和数学语言,易为人们接受和掌握。其显著特点是独立于具体的计算
5、机硬件,通用性和可移植性好。计算机高级语言已有上百种之多,得到广泛应用的也有十几种。C语言是其中之一。,9,4.程序运行过程,编辑处理 通过编辑程序将编写的源程序送入计算机。语言处理 将用户编写的源程序转换成机器语言的形式,以便计算机能够识别和运行。由翻译程序自动完成的,翻译程序除了要完成语言间的转换外,还要进行语法、语义等方面的检查。装配链接处理 装入内存运行,10,三、语言处理程序,1.汇编程序由汇编程序(一种由专业的软件开发商提供的系统软件)将用汇编语言编写的源程序翻译成目标程序(某种类型计算机的机器语言程序),这一过程称为汇编。,2.编译程序由编译程序将高级语言源程序翻译成目标程序。,
6、11,3.解释程序,由解释程序将高级语言源程序一句一句地读入,每读入一个语句都要对它进行分析和解释,若有错误就即时中断其解释过程,并通知用户进行修改,若没有错误就按照解释结果执行所要求的操作。解释方式不产生目标程序。,12,四.程序设计基本原则,正确性 程序本身必须具备且只能具备程序设计规格说明书中所列举的全部功能。它是判断程序质量的首要标准。可靠性 程序在多次反复使用过程中不失败的概率。简明性 简明性的目标是要求程序简明易读。有效性 程序在计算机上运行需要使用一定数量的计算机资源,如CPU的时间、存储器的存储空间。有效性就是要在一定的软、硬件条件下,反映出程序的综合效率。可维护性 程序的可维
7、护可分为校正性维护、适应性维护和完善性维护。一个软件的可维护性如何直接关系到程序的可用性,因此应特别予以关注。可移植性 程序主要与其所完成的任务有关,但也与它的运行环境有着一定的联系。软件的开发应尽可能远离机器的特征,以提高它的可移植程度。,13,五.用计算机解决问题的基本步骤,一般由分析问题、建立数学模型、选择合适算法、编写程序、调试、运行程序直至得到正确的结果等几个阶段所组成。设计步骤 确定要解决的问题。主要目的是搞清楚“做什么”。算法设计与数据结构设计。主要任务是解决“如何做”。涉及两个方面的内容,一是数据结构设计(解决数据的表示与存储),另一个是算法设计(描述操作步骤)。编写程序和调试
8、程序。整理资料,交付使用。,14,1.2 算法,计算机算法是为计算机解题设计的有明确意义的运算步骤的有限集合。算法可以用不同的方法表示。常用的有自然语言、传统流程图、结构化流程图、伪代码、PAD图等。算法的特点有穷性确定性有效性有零个或多个输入有一个或多个输出,15,1简单算法举例,例1.1 给出求x1+x2+x3+x4+x5 的值的算法。,算法分析:(1)手工计算步骤为:求x1与x2的和,得到两个数之和;将上一步的和与x3相加,得到三个数之和;将上一步的和与x4相加,得到四个数之和;将上一步的和与x5相加,得到五个数之和。从手工计算过程中可知:其运算方法类似于用算盘计算该题的过程,每次仅求出
9、两个数之和,其中一个加数为上一步所得的结果,另一加数为多项式中的一项,重复这个过程,直到加到最后一项为此。,16,该算法能更加简洁地表达上述解题过程,并具有通用性。先定义几个变量:设置变量s表示多项式之和,其初值为零;设置变量a表示多项式中的一项,它的值可以为x1,x2,x5;用i记录被加了几次,其初值为1。解题步骤为:s 0;i 1;a xi;(使a等于多项式中的第i项)s s+a;(求和,并将结果保留在s中)i i+1;(计数增值)若i 5,则重复、各步;否则,计算结束;输出s。,(2)适合计算机处理的算法。,17,2.算法的表示,(1)用自然语言表示通俗易懂、直观、容易掌握,但算法的表达
10、与计算机的高级语言形式差距较大,通常用在较简单的问题中。(2)用伪代码表示 不在计算机上实际执行,仅仅用于程序员使用C等程序设计语言编写程序之前帮助其构思,而且与自然语言相似,非常方便和友好。(3)用传统流程图表示 直观,设计者的思路表达得清楚易懂,便于检查修改。,18,传统流程图常用的符号,19,例1.2 输入一个整数,将它倒过来输出,用自然语言描述:输入一个整数送给x;求x除以10的余数,结果送给d,并输出d;求x除以10的整数商,结果送给x;重复,步,直到x变为零时终止。用伪代码描述:输入一个整数送x;while(x 0)d=x%10;输出d;x=x/10;,20,例1.3 求出这100
11、个数的累加和、最大值和最小值,从键盘输入100个数,求出这100个数的累加和,并找出它们的最大值和最小值。试用传统流程图描述解决这个问题的算法。,21,(4)用N-S流程图表示,N-S流程图由美国学者I.Nassi和B.Shneiderman提出的一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线,禁用程序的转向语句,将全部算法都写在一个矩形框内,因此,N-S流程图也叫盒图。,22,例1.4 从键盘输入一个整数,判别该数是否为素数,素数,也称为质数,是指只能被1及其自身整除且大于1的正整数,如2、3、5、7等都是素数。用N-S流程图描述解决这个问题的算法如图1.11所示。,23,(5
12、)用计算机语言表示,例1.6 将例1.2的算法用C语言表示。#include void main()int x,d;x=12345;while(0!=x)d=x%10;printf(%d,d);x=x/10;,24,1.3 结构化程序设计方法,设计程序时只能使用顺序、选择、循环三种基本结构。结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计方法的基本思路是,把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。(1)自顶向下;(2)逐步细化;(3)模块化设计;(4)结构化编码(限制使用GOTO语句)。,25,例1.7 编程打印出
13、35000之间的所有质数。,分析:我们采用自上向下、逐步细化的方法来处理这个问题。即先把这个问题分解为二个相对较小的问题:判别某数i是否为质数;利用循环判别35000之间的所有的数是否为质数,若是就把它打印出来;,26,1.4 C语言程序的基本结构,#include void main()/*求两数之和*/int a,b,sum;/*这是定义变量*/a=123;b=456;sum=a+b;printf(sum is%dn,sum);,函数是程序的基本单位。一个源程序至少包含一个函数(main函数)。为增加程序的可读性,源程序中应当加上必要的注释。程序中可用*对程序的任何部分作注释。注释对程序的
14、执行没有任何影响。,例1.9,27,C语言程序的基本结构2,#include int max(int x,int y)/*定义max函数,函数返回值为整型*/*x,y为形式参数*/int z;/*max函数中用到的变量z,也要加以定义*/if(x y)z=x;else z=y;return z;/*将z返回,通过max带回调用处*/void main()/*主函数*/int a,b,c;/*定义变量*/scanf(%d,%d,/*输出c的值*/,例1.10,C程序由若干个函数构成,其中必须有且只能有一个main()函数。C程序执行时总是从main()函数开始,在main()函数中结束。C程序中的main()函数与其它函数之间的位置可以随意安排。,28,C语言程序的基本结构3,C程序的输入和输出操作是由库函数来完成的。被调用的函数可以由系统提供(库函数),也可以根据需要自己编制。函数由函数首部和函数体两个部分组成。函数首部描述该函数的外观(即该函数的名字,该函数需要外部提供哪些信息,执行完毕后能为外部提供哪些信息等)。函数体定义该函数的内涵(即该函数将对什么数据执行何种操作)。C程序书写格式自由,一行可以有多个语句。分号是C语句的必要组成部分。,29,上机基本操作指南与作业,上机基本操作过程简介 导学后的“C语言上机指南”,