第12章C语言概论

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

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

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

资源描述

C语言程序设计第3版课程关键词C语言(一种程序设计语言)用途适用范围语法规定程序设计(一种能力和思维方式)基本设计方法算法概念程序调试课程目标掌握C语言的基本语法掌握面向过程程序设计的基本方法掌握程序调试的基本方法一些观点正确看待C,C++,Java等语言:近年来,有一些面向对象的计算机语言陆续问世,受到欢迎。有些人认为面向过程的C语言已经过时了,不必学了。这是一种误解。这门课的两个目标:C的语法,程序设计方法,程序调试。在学校中,学习程序设计课程的目的是掌握设计程序的思路,学会用计算机语言编写程序,以实现所需处理的任务。算法是灵魂:(文以载道)不能设想今后一辈子只使用在学校里学过的某一种语言。但是,无论用哪一种语言进行程序设计,其基本规律是一样的。程序是调试出来的:程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行,希望读者一定要重视实践环节,包括编程和上机。熟悉不同的IDE(集成开发环境):使用哪一种编译系统并不是原则问题,重要的是编程能力的培养。程序编好以后,用哪一种编译系统进行编译都可以。本次课的主要内容程序设计概述(第二章)C语言概述(第一章)第二章程序的灵魂—算法怎样进行程序设计的最基本概念和方法不仅仅适用于c语言第二章只是一个开始,后面将贯穿整个课程。第二章程序的灵魂—算法2.1算法的概念2.2简单算法举例(重点)2.3算法的特性2.4怎样表示一个算法2.4.1用自然语言表示算法2.4.2用流程图表示算法2.4.3三种基本结构和改进的流程图2.4.4用N-S流程图表示算法2.4.5用伪代码表示算法2.4.6用计算机语言表示算法2.5结构化程序设计方法程序和算法计算机程序(软件/程序)是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语的人(体系结构)来做这个菜。Anorganizedlistofinstructionsthat,whenexecuted,causesthecomputertobehaveinapredeterminedmanner.Withoutprograms,computersareuseless.程序为了达到某一目标而进行的具体步骤。程序的两个基本特点:由多个步骤构成,步骤之间有顺序程序和算法算法为解决一个问题而采取的方法。计算机算法:计算机能够执行的算法。计算机算法可分为两大类:数值运算算法:求解数值;非数值运算算法:事务管理领域。计算机程序=数据结构+算法一个程序应包括对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(datastructure)。对操作的描述。即操作步骤,也就是算法(algorithm)。程序=算法+数据结构+程序设计方法+语言工具和环境程序设计方法和程序设计语言的种类结构化程序设计(面向过程)汇编、c、pascal面向对象程序设计C++、Java、VB机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加10010000减用助记符号描述的指令系统如ADDA,B面向机器的语言程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象程序设计语言的发展简单算法举例【例2.1】求1×2×3×4×5。最原始方法:步骤1:先求1×2,得到结果2。步骤2:将步骤1得到的乘积2乘以3,得到结果6。步骤3:将6再乘以4,得24。步骤4:将24再乘以5,得120。简单算法举例【例2.1】求1×2×3×4×5。改进的算法:S1:使t=1S2:使i=2S3:计算t×i,乘积仍然放在在变量t中,可表示为t×i→tS4:使i的值+1,即i+1→iS5:如果i≤5,返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。引入变量t:部分积i:每次要乘的数算法的特性有穷性:一个算法应包含有限的操作步骤而不能是无限的。确定性:算法中每一个步骤应当是确定的,而不能是含糊的、模棱两可的。有零个或多个输入。有一个或多个输出。有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。怎样表示一个算法用自然语言表示算法用流程图表示算法用N-S流程图表示算法(改进的流出图)用伪代码表示算法用计算机语言表示算法用流程图表示算法流程图表示算法,直观形象,易于理解。求1×2×3×4×5的算法【例2.1】求1×2×3×4×5。S1:使t=1S2:使i=2S3:计算t×i,乘积仍然放在在变量t中,可表示为t×i→tS4:使i的值+1,即i+1→iS5:如果i≤5,返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。求1×3×5×7×9×11求∑An1求1/4+1/9+1/16+1/25+…+1/n2(n=2…10)2求∏/4=1-1/3+1/5-1/7…(计算50项)3求∑An,其中A1=1,A2=1,An=An-1+An-2(n=3…10)怎样将一个实际问题抽象为计算机可解问题【例2.2】有50个学生,要求将他们之中成绩在80分以上者打印出来如果,n表示学生学号,ni表示第i个学生学号;g表示学生成绩,gi表示第i个学生成绩;则算法可表示如下:S1:1→i(处理第1个学生)S2:如果gi≥80,则打印ni和gi,否则不打印(处理第i个学生)S3:i+1→i(下一个)S4:若i≤50,返回S2,否则,结束。将例2.2的算法用流程图表示练习(使用流程图进行算法设计)1有两个变量A和B,将它们的值交换。2输入3个整数a,b,c,按由大到小的顺序输出。3给定一个正整数M,判断它是否为素数。4找出100以内的素数。5从10个数中找出最大的数。6在10个盒子里放有10个有编号的球,将球按编号从大到小的顺序重新排列。三种基本结构和改进的流程图三种基本结构顺序结构选择结构循环结构三种基本结构的共同特点:1)只有一个入口;2)只有一个出口;3)结构内的每一部分都有机会被执行到;4)结构内不存在“死循环”。用N-S流程图表示算法顺序结构选择结构循环结构流程图VS.N-S流程图【例】求1×2×3×4×5用C语言表示main(){inti,t;t=1;i=2;while(i=5){t=t*i;i=i+1;}printf(“%d”,t);}t=1i=2当i=5t=t*ii=i+1输出t开始t=1;i=2t×i→ti+1→ii≤5输出t结束YN结构化程序设计方法自顶向下;逐步细化;模块化设计;结构化编码。贪吃蛇思路:怎样将游戏中的构成元素和一些具体的数联系起来游戏中的构成元素边界、果实蛇头部身体运动控制和判断一道全国电子设计大赛试题在一块竖立的木板上有两个滑轮和两个电机(如图),通过绳子悬挂一重物,在重物上固定一铅笔。通过单片机控制绳子,使重物上的铅笔在木板上画园。思考:怎样将控制和数对应起来(建模)?思路1.园的参数方程X=R*COS(T)+X0Y=R*SIN(T)+Y02.X,Y和L1,L2的关系L1=SQR(X2+(90-Y)2)L2=SQR((100-X)2+(90-Y)2)L1L210090(X,Y)本次课的主要内容程序设计概述C程序设计语言概述1.1C语言发展历史1.2C语言特点1.3C程序格式和结构特点1.4C程序上机步骤第一章C语言概述*产生背景*应用需求:界于汇编和高级语言之间的中级语言*产生过程*时间:1972~1973地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.Ritchie*C标准*标准C:K&R合著《TheCProgrammingLanguage》(BrianW.Kernighan和DennisM.Rithchie)1978年ANSIC:1983年87ANSIC:1987年1990年国际标准的ANSICC语言发展过程1960:ALGOL语言离开硬件远,不适合编写系统软件1963:CPL语言(剑桥大学)接近硬件1967:BCPL语言(剑桥大学)简化1970:B语言(Bell实验室)1973:C语言(Bell实验室)改进进一步简化1978:传统C语言1990:ANSIC语言规模庞大K&R著作ISO修订语言简洁、紧凑、灵活运算符和数据类型丰富程序设计结构化、模块化生成目标代码质量高可移植性好(较之汇编语言)可以直接操纵硬件C语言特点例1.1第一个程序Hello,World!main(){printf(“Hello,World!”);}Hello,World!第一个C程序32个关键字34种运算符5种数据类型9种控制语句C程序结构特点C程序格式特点C语言基本要素由系统定义,不能重作其它定义的字符串类型说明符autocharconstdoubleenumexternfloatintlongregistershortsignedsizeofstaticstructunsignedunionvoidvolatile2语句、定义符breakcasecontinuedefaultdoelseforgotoifreturnswitchwhiletypedef3预处理命令字(*)defineinclude32个关键字算术运算符:+-*/%++--关系运算符:====!=逻辑运算符:!&&||位运算符:~|^&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.-下标运算符:[]其它:()-(负号)34种运算符数据类型基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union5种数据类型if()~else~for()~while()~do~while()continuebreakswitchgotoreturn9种控制语句例1.1第一个程序Hello,World!/*example1.1ThefirstCProgram*/#includestdio.hmain(){printf(“Hello,World!”);}注释编译预处理函数语句输出:Hello,World!第一个C程序程序语句(statement)和声明(declaration)C程序由语句组成,用“;”作为语句终止符声明:对变量等的定义或说明函数(function)函数是C语言的基本单位能完成一定的功能由一组语句和声明构成c程序由函数构成程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。(习惯上把main()函数放在最前面)注释/**/为注释,不能嵌套不产生编译代码C程序结构特点/*calculatethesumofaandb*/#includestdio.h/*Thisisthemainprogram*/main(){inta,b,sum;a=10;b=24;sum=add(a,b);printf(”sum=%d\n,sum);}/*Thisfunctioncalculatesthesumofxandy*/intadd(intx,inty){intz;z=x+y;return(z);}/*example1.1calculatethesumofaandb*/#includestdio.h/*Thisisthemai

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

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

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

×
保存成功