资源描述
教学目的与要求 掌握程序设计基本技术 掌握算法及算法描述 了解C语言的起源及其特点 掌握C语言程序的基本构架,掌握用Turbo C编辑、编译、连接和执行简单C程序的过程 掌握C语言的基本字符集与保留字 领会C语言程序设计的风格 继续重点与难点 算法的概念、N-S图、常用算法思想 C程序构架 C语言的基本字符集与保留字 返回返回程序设计基本技术 程序设计语言 程序设计语言的支持环境 程序设计的基本过程 算法及算法描述 结构化程序设计 原码、反码、补码程序设计语言程序:在计算机语言中被定义为完成特定任务的 计算机指令的集合。源程序:用户编写的程序。程序设计:指用户通过编写源程序,翻译源程序为 目标程序,连接目标程序与函数库,形 成运行文件并整理设计文档的全过程。计算机指令:指挥计算机完成某一操作的命令,由 操作码和操作数组成。继续计算机指令返回计算机指令的执行过程分为4个基本操作:(1)取指令:从存储器中取出要执行的指令,送往 CPU内部的指令寄存器暂存。(2)分析指令:将指令送往指令译码器,译出指令 对应的微操作。(3)执行指令:根据指令译码器向各部件发出的控 制信号,完成指令规定的操作。(4)停止操作:检查是否有复位信号、中断请求、DMA传送等,为执行下一指令作准 备。程序设计语言程序:在计算机语言中被定义为完成特定任务的 计算机指令的集合。源程序:用户编写的程序。程序设计:指用户通过编写源程序,翻译源程序为 目标程序,连接目标程序与函数库,形 成运行文件并整理设计文档的全过程。计算机指令:指挥计算机完成某一操作的命令,由 操作码和操作数组成。继续程序设计语言:计算机能够接受、能够理解的全部 指令的集合。程序设计语言继续程序设计语言先后经历了以下几个阶段:机器语言汇编语言高级语言专用语言面向对象的程序设计语言程序设计语言返回程序设计语言先后经历了以下几个阶段:机器语言汇编语言高级语言专用语言面向对象的程序设计语言机器语言继续 机器语言是某一种CPU可以识别的一组由0和1序列构成的指令码。每条机器指令代表计算机可执行的一个基本操作,不同的计算机的机器指令系统不相同,其对应的操作也不相同,这种形式的指令系统是面向机器的。下面是某CPU指令系统中的两条指令:10000000 加 10010000 减机器语言返回 用机器语言编写程序,就是从所使用的CPU的指令系统中挑选合适的指令,组成一个指令系。优点:可以被计算机直接理解和执行,执行速度 快。缺点:可读性差,难于编程,容易出错,程序的 检查和调试都很困难。通用性和可移植性差,只有熟练的计算机 专业人员才能掌握。汇编语言继续 为了克服机器语言读写的困难,人们用助记符 描述机器指令,称为汇编指令。前面的两条机器指令可以写为 AB=A 或 ADD A,B AB=A 或 SUB A,B 计算机不能直接执行汇编指令,需要用专门的汇编程序翻译成机器指令后才能在计算机上执行。汇编程序:将汇编指令翻译成机器指令的程序。汇编语言:一种用助记符表示的程序设计语言。汇编语言返回汇编语言源程序汇编程序目标程序机器语言汇编语言低级语言(面向机器的语言)优点:比机器语言更易于理解和记忆。高级语言继续 高级语言:更接近于自然语言或数学语言的程 序设计语言,又称为算法语言。优点:程序具有可移植性。常用的高级语言有Basic、Fortran、Pascal、C、Foxbase等。高级语言不能直接在计算机上执行,计算机只能识别机器语言程序。高级语言编写的源程序必须被翻译成二进制代码的程序,计算机才能执行。翻译方式返回翻译的方式有两种:编译方式解释方式高级语言源程序编译程序中间代码目标模块连接程序函数库机器指令运行程序一次性翻译后再执行高级语言源程序解释程序函数库机器指令运行程序边翻译边执行专用语言返回专用语言:为解决特定的应用而设计的非 过程化的程序设计语言。使用这类语言编程不需要描述为解决某一问题所需的具体实现过程,只需指出“做什么”即可。面向对象的程序设计语言继续对象:指人们进行研究的事情和物体。每个对象 都有各自的属性、方法、集合或事件。属性:用来描述对象的特性。方法:用来描述执行对象的动作。集合:指多个对象构成的整体值。事件:指用户作用于对象的某一操作。面向对象的程序设计语言返回面向对象的程序设计:是将对象的属性值(数据)和 作用在这些数据上的方法结合 在一起的程序设计方法。对象包括数据和操作这些数据的方法,由事件驱动操作这些对象。所有的对象都属于特定的“类”(class),或者说每一个对象都是类的一个实例。因而在面向对象的程序设计语言中用类(class)数据类型组织对象,一个类提供一组值和作用于这些值的操作。程序设计语言的支持环境继续 操作系统是各种软件中最重要的一种,或者说它是各种软件的核心与基础。操作系统的作用是有效地组织和利用计算机的软、硬件资源,使各种程序能在操作系统的管理下协调工作。操作系统的类型有许多种,例如有分时操作系统、批处理操作系统、多道作业操作系统等。程序设计语言的支持环境继续计算机计算机(裸机)(裸机)程序设计语言的支持环境返回 操作系统的功能主要包括:cpu管理、存储管理、文件管理、设备管理、作业管理等。目前最广泛流行的操作系统有UNIX、MS-DOS、Windows等。使用高级语言编写源程序时应当注意程序的运行环境,要充分运用所使用的计算机系统提供的软件环境支持,并了解源程序在所运行的操作系统管理下是如何工作的。继续程序设计的基本过程确定问题的要求建立数学模型算法设计编写源程序编译调试程序运行程序分析输出结果整理文档返回程序设计的基本过程确定问题的要求建立数学模型算法设计编写源程序编译调试程序运行程序分析输出结果整理文档返回确定问题要求 程序设计的第一步是对实际问题进行分析,明确问题的已知条件,从中获得必要的输入数据,明确问题要求做什么,需要什么样的数据输出。返回建立数学模型 把错综复杂的实际问题进行简化抽象,用数学公式来描述实际问题的运动和变化过程,称为建立数学模型的过程。在建立数学模型的过程中,分析问题的要求、确定解决问题的目标、明确问题的输入数据和输出信息、理解问题的约束限制条件,是选择制定数学模型、建立数学模型的关键步骤,是解决问题的关键所在。返回算法设计计算方法与算法的区别:计算方法:指求解复杂函数的数值分析 方法。算法:指为解决某一特定问题而进行一 步一步有穷的操作过程,是一组 规则的集合,可以用传统流程图、结构化流程图等描述。返回编写源程序 源程序是用计算机语言描述的算法,编写源程序的过程是用计算机语言替换流程图的描述方式,将算法描述工具表示的算法转换成计算机语言来描述。返回编译调试程序 使用软件厂商生产的编译程序调试源程序,修改程序中的错误,通过反复编译调试,直到没有语法错误为止。返回运行程序 将编译源程序形成的目标文件与函数库连接,形成运行文件,运行该程序,检查程序的输出结果是否正确,如发现错误,检查程序的逻辑是否正确,主要解决算法设计错误。返回分析输出结果 对照问题要求,分析输出结果,检查是否达到问题要求的功能和精度要求,输出信息的格式是否符合要求。输入不同的数据,检查是否还存在逻辑错误。出错后,分清是算法还是数学模型选择错误,修改源程序后再编译调试程序,继续一步一步执行。返回整理文档 当程序准确无误后,要认真地整理文档,包括设计要求、设计思路、设计过程、使用的算法、数据结构、输出信息及格式,在源程序中要用注释语句加上必要的说明。继续算法及算法描述算法数据结构程序 算法是为解决某一特定问题而进行一步一步操作过程的精确描述,是有限步、可执行、有确定结果的操作序列。继续算法及算法描述例1 求12310的值。main()int sum,i;sum=0;i=1;while(i=10)sum=sum+i;i=i+1;printf(“%dn”,sum);一个循环算法的特征:1.有穷性2.确定性3.有效性4.有零个或多个输入5.有一个或多个输出继续算法及算法描述算法的三种基本结构:1.顺序结构 它是最基本、最简单的程序结构,在此结构内各语块是按照它们出现的先后次序依次执行的。2.分支选择结构 首先根据给定的条件判断条件是否为真,条件为真,选择满足条件的路径(语句块)执行,条件为假,选择不满足条件的路径(语句块)执行。3.循环结构 这种结构是将一条或多条语句重复地执行若干遍。当满足(或不满足)某个指定的条件时反复执行语句块(循环体),否则跳出循环,执行循环体外的下一条语句。算法的描述描述算法的常用工具有如下几种:自然语言传统流程图N-S流程图伪代码返回自然语言返回它是指对人们日常使用的语言加以简化来描述算法。例2 用自然语言描述求和算法,求1+2+3+10。用s1表示第1步,s2表示第2步,依此类推;用sum存储累加和,在循环体外赋初值为0,循环变量为n,初值设为1;重复执行10次操作“sum+n sum;n+1 n”,结果在sum所得到的值是1到10的累加和。具体算法如下:s1:0 sums2:1 ns3:如果n10,执行以下操作,否则转到s4 s3.1:sum+n sum s3.2:n+1 n s3.3:转到s3s4:输出sum的值s5:结束传统流程图继续 它是用不同几何形状的线框、流线和文字说明来描述算法。传统流程图的常用符号及其意义如下表所示。符号符号名称意 义实例起止框算法的开始或结束处理框算法的一个处理步骤调用框调用模块或函数流程线算法执行的流程方向判断框选择控制,根据框中的条件确定从哪条分支执行输入输出框数据的输入,结果的输出连接点将算法中画在不同处的流程连续起来开始结束1 nabc(x,n)n=10NY输入AAFOR循环传统流程图返回例3 用传统流程图描述求1+2+3+10的算法开始n=100 sum,1 nsum+n sumn+1 n输出sum结束NYN-S流程图继续 N-S流程图又称结构化流程图,它是由一系列矩形框顺序排列而成,各个矩形框只能顺序执行,每一个矩形框表示一个基本结构。矩形框内的分割线将矩形框分割成不同的部分,形成三种基本结构:顺序结构、分支结构、循环结构。N-S流程图继续N-S流程图的基本结构框结构名称矩形框的分割基本结构框顺序结构选择结构循环结构 当型 循环直到型循环语句块A语句块B条件是否语句块A语句块B当条件满足语句块语句块直到条件满足N-S流程图返回例4 用N-S流程图画出求1+2+3+10的算法0 sum,1 n当n=10sum+n sumn+1 n输出sum伪代码返回 伪代码是一种过程设计语言,它没有严格的语法规则,可以把算法写得很具体,也可以把算法写得很概括,使用灵活,形式接近高级语言。例5 用伪代码描述求1+2+3+10的算法为sum、n赋初值:DO WHILE(n10)sum=sum+n n=n+1LOOP输出sum的值:End 结构化程序设计继续 结构化程序设计强调程序结构和程序设计方法,使用单一入口和单一出口的三种基本结构,即顺序结构、选择结构、循环结构组成程序的算法。其设计思想是“自顶向下,逐步求精”。问题工程自顶向下分解 若干子项目分解若干层次逐步细化分解功能单一、相对独立的问题处理模块一个问题处理模块设计一个函数(或过程)根据其功能编写程序框架逐步深入精确地 编写每一个程序结构和每一条语句 只使用三种基本结构来描述 模块内部的结构只有单一的入口和单一的出口 模块与外部联系也只有单一的入口和单一的出口结构化程序设计返回 完成编程后,应该“自底向上,逐步求证”,检查每条语句、每个程序结构的逻辑及每个模块的功能是否正确,直到检查整个程序是否达到问题的要求,通过编辑、编译、连接、运行、调试检查程序是否达到精度要求。结构化程序的基本特点:(1)只有一个入口。(2)只有一个出口。(3)对每一个处理框都有一条从入口到出口的 路径通过。(4)不包括死循环。原码、反码、补码返回 计算机处理有符号数时,使用最高位作符号位,“0”表示正号,“1”表示负号。原码 反码 补码原 码返回 设X为带有符号的二进制数,X的绝对值用|X|表示,则原码定义为:X原=X 0X2n2n+|X|-2nX0 正数的原码符号位为0,值为X;负数的原码符号位为1,值为该数的绝对值。例:已知X11101001,X21101001,Y10000000,分别求原码X1原、X2原、Y1原。解:X1原01101001X2原11101001Y1原00000000八位二进制数原码表示范围为127127反 码返回 设X为带有符号的二进制数,X的绝对值用|X|表示。2n+11为二进制数编码的全1状态。反码定义为:X反X 0X2n2n+11|X|-2nX0 正数的反码符号位为0,值为X;负数的反码符号位为1,数值逐位取反。例:已知X11101001,X21101001,Y10000000,分别求原码X1反、X2反、Y1反。解:X1反01101001X2反10010110Y1反00000000补 码继续 设X为带有符号的二进制数,X的绝对值用|X|表示,2n+1表示模。补码的定义为:X补X 0X2n 2n+1|X|2nX0 正数的补码符号位为0,值为X;负数的补码符号位为1,值为反码加1。例:已知X11101001,X21101001,Y10000000,分别求原码X1补、X2补、Y1补。解:X1补01101001X2补10010111Y1补00000000补 码返回 补码转化为原码表示方法:X原 X补 补。例:已知X补10010111,求X原。解:X原 X补补10010111补11101001 补码的运算规则。两个二进制数之和的补码等于该 两数的补码之和,即:XY补X补Y补例:已知X35,Y19,试求XY补。解:X补=00100011 Y补00010011X+Y补x补+Y补001000110001001100110110X-Y补x补+-Y补001000111110110100010000 C语言程序在运行时,有符号数是以补码形式在计算机内存存储单元中存放的。C语言概述返回 c语言的起源及其特点 c语言程序的基本构架及执行过程 c语言基本字符集与保留字C语言的起源继续 c语言是在B语言的基础上发展起来的。1972年,贝尔实验室的学者D.M.Ritchie在B语言的基 础上设计了c语言。1983年,美国国家标准协会(ANSI)对c语言进行了 扩充和规范,指定了新的标准,称为ANSI C。Turbo C是美国Borland公司推出的,在微机上使用c 语言的编译系统带有一个易学易用的集成开发环境,编译生成的可执行文件能在DOS环境中使用。1989年,ISO/IEC提出了国际标准草案,1990年公布 了c语言的正式标准。C语言的特点返回(1)c语言是一种具有低级语言功能的高级语言。(2)c语言是结构化语言。(3)c语言是模块化语言。(4)c语言具有种类丰富的运算符。(5)数据结构丰富。(6)具有较高的移植性。(7)语言简洁、紧凑,使用灵活、方便。C语言程序的基本构架继续例1 显示“Programming is fun.”的c语言程序。main()printf(“Programming is fun.n”);圆括号内写函数参数,不能省略。说明:(1)一个完整的程序必须有一个main函数,它称为主函数,程序 总是从main函数开始执行的。函数体说明部分执行部分(2)c规定每个语句以分号(;)结束,分号是语句不可缺少的组 成部分。;(3)用c语言进行程序设计时,应优先采用c语言函数库中的函数。(4)函数printf由主函数main调用,形成如图的层次结构。mainprintfn作用是“回车换行”C语言程序的基本构架继续设计函数的基本方法是从主函数开始,按调用关系,自上而下地进行。例2 求三个数的平均值。按自顶向下的方法可写出主函数如下:main()float a,b,c,ave;a=3.5;b=4.6;c=7.9;ave=average(a,b,c);printf(“average=%f”,ave);/声明:名字a,b,c,ave为实型变量/对a,b,c赋值/调用average函数,得到的值赋给ave/输出ave的值/说明:(1)所谓变量,就是在程序运行过程中值可以变化的量,实际上是对 存储空间的指定。(2)c语言约定,名字后面带有一对圆括号者,均为函数名,如main、printf都是函数名。关键字格式字符C语言程序的基本构架继续可以这样定义average函数:float average(float x,float y,float z)float aver;aver=(x+y+z)/3;return(aver);/函数头,声明参数x,y,z为实型/声明变量aver为实型/说明:1.函数头用来说明函数的名字,返回值的类型,对什么样的 数据(参数)进行操作以及参数的类型。2.函数定义中所使用的参数(x,y,z)称为形式参数(简称形 参),只用于描述被加工的数据是一种什么样的角色,以 及如何对它们进行加工,并不说明哪些具体的数据被加工。具体的数据是由调用语句在调用时传递的。C语言程序的基本构架继续 根据上述分析,将main函数和自己定义的average函数组成一个完整的求三个数的平均值的程序:float average(float x,float y,float z)float aver;aver=(x+y+z)/3;return(aver);main()float a,b,c,ave;a=3.5;b=4.6;c=7.9;ave=average(a,b,c);printf(“average=%f”,ave);C语言程序的基本构架继续例3 求任意三个数的平均值。main()float average(float x,float y,float z);float a,b,c,ave;scanf(“%f,%f,%f”,a,b,c);ave=average(a,b,c);printf(“average=%fn”,ave);float average(float x,float y,float z)float aver;aver=(x+y+z)/3;return(aver);/函数声明/定义函数/格式输入函数a,b,c把从键盘输入的值送到地址a,b,c所指出的单元中去。“”是“地址运算符”或“取地址符”。表示输入的数为实数,且每两个输入的数据间以逗号相隔。如果main函数写在被调用函数前面,则要先声明被调用函数;如果main函数写在被调用函数后面,则不用声明被调用函数。C语言程序的基本构架继续(1)c程序的组成。一个c程序可以由一个或多个具有相对独立功 能的函数构成,其中有且仅有一个以main命 名的主函数。程序从main函数开始执行,直到执行完函数 体语句运行结束。其它子函数由函数调用语句引用,运行完子 函数后,返回到调用处继续执行后续语句。函数与函数之间用参数传递信息,子函数只 能被主函数或其它子函数调用,不能单独运 行。C语言程序的基本构架继续(2)函数的组成。一般形式为:函数类型函数名()形参类型 函数形参数据定义部分函数执行部分函数头部函数体可以没有参数C语言程序的基本构架继续(3)c函数库。c函数标准函数用户定义函数由编译程序提供的,其定义是以编译后的目标代码形式存放在系统的函数库中,称为c函数库。用户编程时直接调用标准函数,如scanf、printf等。必须由用户在源程序中编写函数定义,根据模块功能,设计和编写用户定义的函数语句,供其它函数调用。注意:用户定义函数与调用函数的函数名必须一致,两者 参数的个数与参数的类型必须按位置相同放置。C语言程序的基本构架返回(4)书写格式。一般使用小写英文字母(大小写敏感)。使用分号“;”作为语句的终止符或分隔符。一条语句可以写成多行,多条语句也可以写成 一行。用大括弧对“”表示程序的结构层次范围。c语言的书写支持缩进格式。用/对程序的任何部分作注释。一个c程序总是从main函数开始执行,而不论 main函数在程序的位置如何。C语言基本字符集继续 c语言的基本字符集是编写源程序时准用字符的集合,c语言编译程序能够识别集合中的字符。c语言基本字符包括:(1)大写字母A B C D Z,小写字母a b c dz。(2)数字0 1 2 3 4 5 6 7 8 9。(3)图形符号 !#%&?|*+-_/“(),.:;。(4)转义字符 n t a b f r v ”ddd xhh。C语言基本字符集继续 基本字符集中的字符组合成一个个具有独立意义的最小语法单位,称之为单词。组成c语言的单词有六类:保留字(关键字)、标识符、常数、标点字符、运算符、分隔符。(1)保留字:又称关键字,是由编译程序预定义具 有固定含义的单词。保留字有特定的 含义和专门的用途,用户不能用保留 字作为常量、变量、类型或函数的名 字。C语言基本字符集继续(2)标识符:是程序员为程序中的一些要素所取 的名字,如变量名、函数名、宏等。c语言规定标识符号可以由字母、数字和下划线组成,并且规定首字符必须是字母或下划线。PRICE、sum、_567、Select_sort合法0_max、long、ABC.不合法C语言基本字符集继续注意:1.对于标识符有效字符的个数,Turbo C允许 32个字符。2.c语言属字母大小写敏感语言,max与Max 是不同的标识符。3.选择含义明确的标识符,使它能明确地提示 标识符所代表的实体。4.不用大量相似的名字,如EM、EN等,要正 确区别0与o,1与l等。C语言基本字符集返回()常数:各种类型的常数,如20,a和“EFG”等。()标点符号:c语言的标点符号共11个:#(),;“()运算符:如、=等。()分隔符(定界符):包括空格、回车键、ab键、。作 业返回实验教程:P10:1.4 习题:一、判断题;二、填空题;三、选择题
展开阅读全文