20101程序设计概述whz

上传人:t****d 文档编号:243480733 上传时间:2024-09-24 格式:PPT 页数:66 大小:983.50KB
返回 下载 相关 举报
20101程序设计概述whz_第1页
第1页 / 共66页
20101程序设计概述whz_第2页
第2页 / 共66页
20101程序设计概述whz_第3页
第3页 / 共66页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,8,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,电子邮件:,C,语言程序设计,1,教学时间,理论授课:,54,学时; 第,1,周开始到,14,周,上机实验:,18,学时;具体时间一般从第,3,周开始,周数,3, 5,,,7,,,9,,,10,,,11,,,12,,,13,,,14,周;(待确定),2024/9/24,2,教学参考书,理论教材:,C,语言程序设计,刘韶涛、潘秀霞、应晖编著;,实验教材:,C,语言程序设计学习指导与上机实践,刘韶涛、潘秀霞、应晖编著;,参考材料,1,:,C,语言程序设计(第,2,版),谭浩强,参考材料,2,:,C,语言程序设计学习辅导,谭浩强,参考材料,3,:有关,Turbo C 2.0,,,3.0,的参考资料,参考材料,4,:有关,Viusal C+ 6.0,的参考资料,2024/9/24,3,课程成绩,考试形式:省统考(上机)二级,C,语言;,没有笔试;,课程成绩:统考成绩,90%+,平时成绩,10%,(考勤、作业、提问);,2024/9/24,4,Turbo C 2.0,状态栏,主菜单,信息窗口,编辑窗口,快捷键,2024/9/24,5,Turbo C 2.0,步骤,1:,编辑初始,C,程序,步骤,2:,编译,*,.c,文件得到目标程序,步骤,3:,链接,*,.obj,与,C,库函数及其它目标文件,步骤,4:,运行,*,.exe,2024/9/24,6,学习方法,自动化和信息化,需要掌握一门计算机编程工具;,C,语言是目前最流行的语言;,学,C,语言与学英语一样,需要记忆和实践;,建议平时多上机实践和考前多做模拟题;,学会自主学习,网上精品课程,,C,语言视频讲座等;,2024/9/24,7,第,1,章 程序设计概述,8,1.1,计算机系统,计算机系统由硬件和软件构成,冯,诺依曼的通用计算机方案:,计算机硬件由五个基本部分组成:运算器、控制器、存储器、输入设备和输出设备;,用二进制表示计算机的指令和数据;,存储程序和程序控制:将程序和数据放在存储器中,并让计算机自动地执行程序。,2024/9/24,9,首先,我们来看看计算机是如何工作的。,1.1,计算机系统,2024/9/24,10,程序员需要知道的硬件知识,存储器与数据在计算机中的存储,程序和数据都存储在存储器中,;,常常涉及的术语:,位:(,bit,)存储一个二进制代码,0,或,1,的最小单元称为位,简写为,b,字节:(,byte,)连续的,8,个位组成的存储单元称为字节,简写为,B,字:(,word,)连续多个字节组成的存储单元称为字。统一称,32,位二进制为一个“长字”,而称,16,位二进制为一个“短字”,地址:为了访问方便,每个字节都分配一个编号,称为“地址”,在多数计算机中,地址是从低到高连续编址的,最小从,0,开始,最大到实际内存结束。,2024/9/24,11,程序员需要知道的硬件知识,16,位系统的内存结构,1,1,1,1,0,0,0,0,0,0,1,0,1,0,1,0,61482,2000,2024/9/24,12,程序员需要知道的硬件知识,存储单元的地址与存储单元的值,存储单元的编号称为该存储单元的地址。它可以字节或字编号。内存储器的单元很多,一般以字节计算,存储单元中的内容称该存储单元的值。,要严格区分存储单元的地址和存储单元的值概念。,61482,2000,2024/9/24,13,在高级程序设计语言中涉及存储单元,必须把变量名、存储单元地址、存储单元值三个概念一同考虑。一旦定义了一个变量,就在内存中开辟了一个存储单元,具有确定的存储单元地址,但存储单元的值是不确定的,用“?”表示。,程序员需要知道的硬件知识,sum=1+2+3+4+100,的计算步骤。,设:,i,计数器,累加器,sum,sum=sum+i,i=i+1,?,3,7,num,存入,3,到,num,中,取出,num,值,: 3,存入,7,到,num,取出,num,值,: 7,下面以存放整型数据的存储单元,num,为例,讨论存数和取数的特点,,2024/9/24,14,十进制数,位置:,3 2 1 0 -1 -2,1 2 3 5 . 4 5 =1,10,3,+2,10,2,+310,1,+510,0,+410,-1,+510,-2,权重:,10,3,10,2,10,1,10,0,10,-1,10,-2,二进制数,位置:,3 2 1 0 -1 -2 -3,1 0 1 1 . 0 0 1 =1,2,3,+0,2,2,+12,1,+12,0,+02,-1,+02,-2,+12,-3,权重:,2,3,2,2,2,1,2,0,2,1,2,-2,2,-3,十六进制数,位置:,2 1 0,A 0 E =10,16,2,+016,1,+1416,0,权重:,16,2,16,1,16,0,八进制数,位置:,2 1 0,7 0 5 =7,8,2,+08,1,+58,0,权重:,8,2,8,1,8,0,1.1.3,计算机计数系统,1.,数制及其转换,2024/9/24,15,1.1.3,计算机计数系统,2.,数值在计算机中的表示,在计算机中一般用“,0”,表示正号,用“,1”,表示负号,符号位放在数的最高位。,数据在内存中是以二进制补码形式存放的。,例如,整型变量,i,在内存中占二个字节,其表示如图:,10,01010,i,i,10,1111111111110110,i,i,正数的补码,=,原码,负数的补码,=,绝对值的原码取反,+1,2024/9/24,16,1.1.3,计算机计数系统,2.,数值在计算机中的表示,浮点型数据在内存中按照指数形式存储。系统把一个浮点型数据分成小数和指数部分分别存放。,例如,一个浮点型数据一般在内存中占,4,个字节,(32,位,),。,4,个字节,(32,位,),中,多少位来表示小数部分,多少位表示指数部分,由编译系统自定。,小数部分占的位数越多,数的有效数字越多,精度也就越高。指数部分占的位数越多,则能表示的数值范围越大。,2024/9/24,17,2.,数值在计算机中的表示,实数,3.14159,在内存中的存放形式:,+ 314159 + 1,数符,小数部分,指数,+,.314159,10,1,3.14159,1.1.3,计算机计数系统,2024/9/24,18,2.,数值在计算机中的表示,由于位数所限,计算机处理的数也就有一定限度,太大的数或太小的数计算机中无法用所限的位数表示时,就发生了上溢和下溢。又由于十进制转换成二进制数的过程中,常会发生有限的小数会转换成无限的小数,这时必需要截取有效位数,这使得计算机处理数值运算过程中会出现不精确的问题。,1.1.3,计算机计数系统,2024/9/24,19,1.2,程序设计语言,程序员用各种程序设计语言编写计算机指令。某些指令能够直接被计算机执行,而其它的指令还需要通过中间的翻译过程才可被计算机执行。,当今使用的计算机语言有上百种,大致可分为如下三类:,机器语言、汇编语言和高级语言,2024/9/24,20,机器语言,高级语言,汇编语言,机器语言的每一条语句都是二进制形式的指令代码,从属于硬件设备,一般随,CPU,的不同而不同。例如,0101011,加,0101101,减,汇编语言用助记符代替机器语言的操作码,例如,ADD,加,但是汇编语言还是面向机器的。而且因机而异,高级语言用简单的英文单词和熟悉的数学表达式,并且用户不必了解计算机的指令系统,主要考虑解题算法的实现。高级语言编写的源程序可以在不同的计算机上使用,但是必须经过编译成机器语言才能执行。,计算机语言的分类,机器语言、汇编语言和高级语言,2024/9/24,21,汇编或高级语言 机器语言的方式,:,编译,:,将原程序,(,高级语言编写,),翻译成目标代码,(,机器语言,),。计算机执行程序时执行的是目标代码。,解释,:,计算机在执行程序时,边解释边执行,。,1.3,高级语言程序的创建和运行过程,2024/9/24,22,1.3,高级语言程序的创建和运行过程,这个过程包括,4,步:(,1,)编写和编辑程序;,(,2,)编译程序;(,3,)将程序和需要 的库模块相连接;(,4,)执行程序。,库,文本,编辑器,#include ,int main(),编译器,连接器,运行器,001100010,110000111,0000111,-,-,源代码,目标代码,可执行代码,结果,程序员,2024/9/24,23,1.4,程序设计基础,算法和数据结构,计算机是按程序所规定的内容和步骤进行工作的。所以对每一个学习计算机知识的人来说,首先都应建立起“程序”的概念,并且学习程序设计的有关知识。,2024/9/24,24,程序与程序设计,一、程序,(Program),为使计算机完成一个预定的任务而设计的一系列,语句,或,指令,main(), int a,b,c;,a=100; b=200,;,c=a+b;,printf(“sum=%dn”,c);,stud.c,2024/9/24,25,main(),int a,b,c;,a=100; b=200,;,c=a+b;,printf(“sum=%dn”,c);,对数据,的描述,对操作,的描述,一个程序应包括两方面的内容,一、程序,(Program),数据结构,算法,2024/9/24,26,0021,班 学生成绩表单,姓 名,英语,高数,总分,春风,88,67,夏天,80,79,秋雨,92,83,冬雪,76,90,EXAMPLE1-1:,请计算下列给出的成绩表单中“春风”的总成绩,2024/9/24,27,姓 名,英语,高数,总分,春风,88,67,夏天,80,79,秋雨,92,83,冬雪,76,90,英语和高数成绩均用整型数据表示:,int score1, score2, sum;,数据结构,确定算法,sum=score1+score2,score1=88,score2=67,Begin,sum=0,score1=88,Score2=67,sum=score1+score2,输出,sum,End,2024/9/24,28,姓 名,英语,高数,总分,春风,88,67,夏天,80,79,秋雨,92,83,冬雪,76,90,数据结构,确定算法,编写代码,main(), int score1, score2,sum=0;,score1=88;,score2=67;,sum=score1+score2;,printf(“sum=%dn”, sum);,Begin,sum=0,score1=88,Score2=67,sum=score1+score2,输出,sum,End,2024/9/24,29,姓 名,英语,高数,总分,春风,88,67,夏天,80,79,秋雨,92,83,冬雪,76,90,数据结构,确定算法,编写代码,main(), int score1, score2,sum=0;,score1=88;,score2=67;,sum=score1+score2;,printf(“sum=%dn”, sum);,调试运行,整理结果,并攥写文档,程序名称:,sum.c,程序员:李晓,程序功能:计算学生成绩,代码编写日期:,2008,年,9,月,7,日,该程序算法用下列程序流程图描述:,155,2024/9/24,30,问题的求解,程序设计的过程就是问题求解的过程,.,应用计算机求解问题是一个复杂的过程,包括问题分析,建立数据模型,设计算法,编程,调试和测试,文档整理等。,学习程序设计,要按这个步骤一步一步地解决问题。掌握和学会问题求解方法,是学习高级语言的重点,也是最大难点。它将贯穿于教学的整个过程,渗透到各个教学环节。,问题分析,建立数据模型,设计算法,编辑,调试和测试,文档整理,图,1.,问题求解过程,2024/9/24,31,有穷性:,包含有限的操作步骤。,确定性,:,算法中的每一个步骤都应当是确定的。,有零个或多个输入,:,输入是指在执行算法时需要从外界取得必要的信息。,有一个或多个输出,:,算法的目的是为了求解,“解” 就是输出,没有输出的算法是没有意义的。,有效性,:,算法中的每一个步骤都应当能有效地执行,并得到确定的结果 。,所谓“算法”,是指为解决一个问题所采取的方法和步骤。,1.4.1,算法的特性,2024/9/24,32,描述工具,程序流程图,N-S,图,PAD,图,伪代码,1.4.2,算法的表示,2024/9/24,33,X1,起止端点,输入,/,输出,一般处理,子程序或函数调用,条件判断,流程线,1,、程序流程图,2024/9/24,34,Begin,sum=0,score1=88,Score2=67,sum=score1+score2,输出,sum,End,请用,程序流程图,描述求解,下列问题的算法,姓 名,英语,高数,总分,春风,88,67,EXAMPLE1-2:,2024/9/24,35,用程序流程图表示的三种基本结构,A,B,C,顺序结构,A,exp,T,选择结构,A,B,exp,T,F,2024/9/24,36,case exp,case 1,case n,case 2,选择结构,2024/9/24,37,A,exp,T,F,循环结构,exp,T,A,F,2024/9/24,38,三种基本结构的共同特点:,(1),只有一个入口;,(2),只有一个出口;(请注意:一个菱形判断框有两个出口,而一个选择结构只有一个出口。),(3),结构内的每一部分都有机会被执行到;,(4),结构内不存在“死循环”,(,无终止的循环,),。,2024/9/24,39,设:,a=100 b=200,现将,a,与,b,中的值互换。,请用程序流程图,描述其互换过程,EXAMPLE1-3:,a,b,100,200,t,100,200,100,Begin,a=100,b=200,t=a,a=b,b=t,输出,a,b,End,2024/9/24,40,输入,a,与,b,两个值,,若,ab,则输出,a,。,请用程序流程图,描述其执行过程。,EXAMPLE1-4:,Begin,T,F,输入,a,b,ab,输出,a,End,2024/9/24,41,输入,a,与,b,两个值,,若,ab,则输出,a,,,否则输出,b,。,请用程序流程图,描述其执行过程。,EXAMPLE1-5:,Begin,输入,a,b,ab,T,m=a,F,m=b,输出,m,End,2024/9/24,42,Begin,End,输入,a,,,b,,,c,三个值,,请输出三个值中,最大的一个。,请用程序流程图,描述其执行过程。,输出,m,输入,a,b,c,ab,T,m=a,m=b,F,mc,m=c,F,T,EXERCISES1-6:,2024/9/24,43,输入,a,,,b,,,c,三个值,请按,其值从大到小排序并输出。,要求用程序流程图描述其排,序过程。,EXERCISES1-7:,2024/9/24,44,Begin,End,输出,a,b,c,输入,a,b,c,ab,T,t=a a=b,b=t,F,ac,F,T,t=a a=c,c=t,bc,F,t=b b=c,c=t,T,2024/9/24,45,Begin,sum=0 i=1,sum=sum+i,输出,sum,End,请用程序流程图描述,:,sum=1+2+3+4+100,的计算步骤。,设:,i,计数器:,i=i+1,sum,为累加器:,sum=sum+i,i= i+1,T,i100,F,EXAMPLE1-8:,2024/9/24,46,从键盘,输入,30,名,学生的高数成绩,并,输出,高数成绩,小于,60,分,的值,并,统,计,出,小于,60,的有多少人。,要求用,程序流程图,描述其解决该,问题的算法。,设:,i,总人数,计数器:,i= i+1,(,i=30,),gs,为输入的成绩,num,记录不及格人数:,num=num+1,EXERCISES1-9:,2024/9/24,47,End,输出,num,Y,i=30,N,Begin,i=0, num=0,gs60,F,输入,gs,输出,gs,T,num=num+1,i= i+1,1,1,2,2,设:,i,总人数,计数器:,i= i+1,(,i=30,),gs,为输入的成绩,num,记录不及格人数:,num=num+1,2024/9/24,48,顺序结构,1973,年 美国学者,I.Nassi,、,B.Shneiderman,A,B,T F,exp,A,B,exp,A,选择结构,循环结构,2,、,N-S,图,exp,A,2024/9/24,49,描述计算,:,sum=1+2+3+4+100,sum=0, i=1,i,100,sum=sum+i,i=i+1,输出,sum,EXAMPLE1-10,:,2024/9/24,50,N-S,图表示算法的优点:,比文字描述直观、形象、易于理解;,比传统流程图紧凑易画,而且废除了流程线,整个算法结构是由各个基本结构按顺序组成的。,N-S,流程图中的上下顺序就是执行时的顺序,写算法和读算法只需从上到下,十分方便。,用,N-S,图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,而只能自上而下地顺序执行。,2024/9/24,51,伪代码,是用介于自然语言和计算机语言之间的文字和符号来描述算法。,特点,:,它如同一篇文章一样,自上而下地写下来。不用图形符号,因此书写方便、格式紧凑,也便于向计算机语言算法,(,即程序,),过渡。,用处:,适用于设计过程中需要反复修改时的流程描述。,3,、 伪代码表示算法,2024/9/24,52,EXAMPLE1-11:,伪代码表示,“打印,x,的绝对值”的,算法,.,IF x is positive THEN,print x,ELSE,print -x,也可以用汉字伪代码表示,:,若,x,为正,打印,x,否则,打印,-x,也可以中英文混用,如:,IF x,为正,print x,ELSE,print -x,2024/9/24,53,EXAMPLE1-12:,分别用伪代码、流程图和,N-S,图,求一元二次方程的根,。,伪代码,input a,b,c,d=b,2,-4ac,if d,0 then,if d=0 then,x1,x2=-b/(2a),else,x1=(-b+d)/(2a),x2=(-b-d)/(2a),end if,print x1,x2,else,p=-b/(2a),q=,-d/(2a),print p+q,”+”,p-q,”i”,end if,2024/9/24,54,EXAMPLE1-12:,分别用伪代码、流程图和,N-S,图,求,一元,二次方程的根,。,流程图,Begin,输入,a,、,b,、,c,d=b,2,-4ac,d,0,d=0,x,1,2,=-b/(2a),x1=(-b+d)/2a,x1=(-b-d)/2a,p=-b/(2a),q= -d/(2a),打印,x1,x2,打印:,x1=p+q,i,x2=p-q,i,end,2024/9/24,55,EXAMPLE1-12,:,分别用伪代码、流程图和,N-S,图,求,一元,二次方程的根,。,N-S,图,d,0,T,F,T,F,d,=,0,输入,a,b,c,d=b,2,-4ac,p=-b/(2a),q= -d/(2a),x,1,2,=-b/(2a),x1=(-b+d)/2a,x1=(-b-d)/2a,打印:,x1=p+q,i,x2=p-q,i,打印,x1,x2,2024/9/24,56,1.5,结构化程序设计,结构化程序就是用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、便于阅读、便于修改和维护。,结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。,2024/9/24,57,1.5,结构化程序设计,采取以下方法来保证得到结构化的程序:,自顶向下;,逐步细化;,模块化设计;,结构化编码。,2024/9/24,58,两种不同的方法:,自顶向下,逐步细化;,自下而上,逐步积累。,2024/9/24,59,这种逐步分解的方法就叫做,“,自顶向下,逐步细化,”,。,自顶向下,逐步细化,2024/9/24,60,自顶向下,逐步细化,自顶向下,逐步细化方法的优点:,考虑周全,结构清晰,层次分明,作者容易写,读者容易看。如果发现某一部分中有一段内容不妥,需要修改,只需找出该部分修改有关段落即可,与其它部分无关。,我们提倡用这种方法设计程序。这就是用工程的方法设计程序。,2024/9/24,61,模块设计化:,模块化设计的思想实际上是一种“分而治之”的思想,把一个大任务分为若干个子任务。,在拿到一个程序任务以后,根据程序所应实现的功能将它划分为若干个子模块,如果这些子模块的规模还嫌大,还再可以划分为更小的模块。这个过程采用自顶向下方法来实现。,在,C,语言程序中子模块通常用函数来实现,子模块一般不超过,50,行。,划分子模块时应注意模块的独立性,即:使一个模块完成一项功能,耦合性愈少愈好。,2024/9/24,62,结构化编码:,设计好一个结构化的算法之后,还要善于进行结构化编码。,结构化编码是指用结构化的语言(,3,种基本结构:顺序、条件、循环)的相对语句表示出来。,2024/9/24,63,1.5.3,结构化程序设计方法举例,自顶向下、逐步细化的方法进行算法的设计,例,1,打印,20002100,年中是闰年的年份。,对,y=20002100,如果,y,是闰年,则打印,y,y=2000,当,y2100,y,是闰年,T,F,打印,y,y= y+1,闰年的条件是:(,1,)能被,4,整除但不能被,100,整除;或(,2,)能被,400,整除,。,打印,y,T,F,F,T,mod(y,4)=0,且,mod(y,100),0,打印,y,mod(y,100)=0,且,mod(y,400)0,2024/9/24,64,例,2,输入,n,个数,找出最大的一个数,并打印出来。,读入,n,读入,n,个数,找出最大者,打印最大者,读入一个数给,max,对其余,n-1,个数,读入一个数给,a,比较,a,与,max,,将较大者保存在,max,中,打印,max,读入,n,读入,max,i=1,当,imax,F,T,max=a,n=n+1,打印,max,读入,n,1.5.3,结构化程序设计方法举例,2024/9/24,65,作业,2024/9/24,66,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!