第1章程序设计基础.ppt_第1页
第1章程序设计基础.ppt_第2页
第1章程序设计基础.ppt_第3页
第1章程序设计基础.ppt_第4页
第1章程序设计基础.ppt_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计,吉林大学珠海学院计算机系 张荣高,2020/9/13,怎样学好C语言,端正学习态度态度决定一切 课前预习有目的 课后复习温故知新 认真完成作业检验学习成果 多做练习熟能生巧 参考课外书籍它山之石 互相交流兼听则明,2020/9/13,本章内容,程序设计基础(了解、自学) C语言的发展与特点(了解、自学) C语言程序的特点(熟练掌握) C源程序的运行环境(熟练掌握),2020/9/13,程序设计基础,例如:判断输入的任意整数n能否被3整除,程序如下: main( ) int n; printf (n enter a integer:); scanf(%d, ,2020/9/13,

2、程序设计基础,程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分 1.分析阶段 分析阶段由用户和程序开发人员共同研究确定程序应完成的功能,解决“做什么”的问题 2.设计阶段 由程序设计人员设计软件的总体结构,也就是确定程序的组成模块,以及各模块之间的关系,并设计每个模块的实现细节及具体算法,2020/9/13,程序设计基础,3.编码阶段 利用程序设计语言编写各算法的程序代码 4.测试阶段 由专门的测试人员对编写完成的程序代码进行测试,尽可能多的发现其中的错误 5.调试和运行阶段 借助于一定的调试工具找出程序中错误的具体位置,并改正错误,并在运行期间进

3、行维护,2020/9/13,程序设计基础,程序设计语言(Programming Language)是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令,2020/9/13,程序设计基础,0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 1 0 1 1 0,机器语言程序,MOV AX, 300H ADD BX, AX MOV 2100H, BX HLT,汇编语言源程序,main( ) int a, b, c; a=300; b=18; c=a+b; printf( a+b= %dn, c); ,高级语言 源

4、程序(C),源程序需要 翻译,2020/9/13,程序设计基础,程序包含两方面的内容: 对数据的描述 在程序中指定数据的类型和组织形式-数据结构 对操作的描述(操作步骤即算法) 算法“程序是在数据的特定的组织方式的基础上,对抽象算法的具体描述” 程序=算法+数据结构+方法+工具 程序是在数据的特定的组织方式的基础上,对抽象算法的具体描述,2020/9/13,数据结构概念,数据结构是指互相之间存在着一种或多种关系的数据元素的集合。是整个计算机科学与技术领域的一个重要概念。它用来反映一个数据的内部构成,即一个数据包含什么内容,以什么方式构成,呈什么结构 计算机内的数值运算依靠方程式,而非数值运算(

5、如表、树、图等)则要依靠数据结构 程序设计的实质是对实际问题选择一个好的数据结构,加之设计一个好的算法。而好的算法在很大程度上取决于描述实际问题的数据结构,2020/9/13,数据结构的研究对象,数据元素之间的逻辑关系,也称数据的逻辑结构(Logical Structure); 数据元素及其关系在计算机存储器内的表示,称为数据的存储结构(Storage Structure); 数据的运算,对数据施加的操作,即数据的运算,2020/9/13,数据的逻辑结构,集合结构 数据元素间除“同属于一个集合”外,无其它关系 线性结构 一个对一个,如线性表、栈、队列 树形结构 一个对多个,如树 图状结构 多个

6、对多个,如图,2020/9/13,数据的存储结构,顺序存储结构 借助元素在存储器中的相对位置来表示数据元素间的逻辑关系 链式存储结构 借助指示元素存储地址的指针表示数据元素间的逻辑关系 索引存储结构 存储结点信息的同时还建立附加的索引表 散列存储结构 据结点的关键字直接计算出该结点的的存储地址,2020/9/13,顺序存储结构,1.每个元素占用m个存储单元 2.数据元素逐个连续存放(通过物理相邻可确定逻辑关系),2020/9/13,链式存储结构,数据元素可以任意存放(通过指针来确定元素的逻辑关系),2020/9/13,算 法,何谓算法呢? 算法是为解决某一特定问题而采取的具体的有限的方法和操作

7、步骤。 计算机算法分类 数值运算算法 非数值运算算法,2020/9/13,算法的特征,有穷性 在有限的操作步骤内完成。有穷性是算法的重要特性,任何一个问题的解决不论其采取什么样的算法,其终归是要把问题解决好。如果一种算法的执行时间是无限的,或在期望的时间内没有完成,那么这种算法就是无用和徒劳的,我们不能称其为算法。 确定性 每个步骤确定,步骤的结果确定。算法中的每一个步骤其目的应该是明确的,对问题的解决是有贡献的。如果采取了一系列步骤而问题没有得到彻底的解决,也就达不到目的,则该步骤是无意义的,2020/9/13,算法的特征,输 入 算法有零个或多个输入。 有输出 算法执行完毕,必须有一个或若

8、干个输出结果 有效性 算法的每一步都是能够实现的,即可操作的,2020/9/13,算法的要求,算法要求: 正确性 可读性 健壮性 效率,2020/9/13,算法的组成要素,算法中对数据的运算和操作 对于所有算法都是按照要求从环境能够运行的所有操作中选择合适的操作所组成的一组指令序列。 算法的控制结构 算法中各操作之间的执行顺序。包括顺序、选择、循环三种结构,2020/9/13,程序流程图和N-S图,顺序结构 先执行A操作,再执行B操作,两者是顺序执行关系,N-S结构流程图,2020/9/13,程序流程图和N-S图,选择结构 当P条件为真时,执行A模块,否则执行B模块,2020/9/13,程序流

9、程图和N-S图,当型循环结构 当P条件成立时,反复执行A,直到P为假,(a),(b),A,当P为真,2020/9/13,程序流程图和N-S图,直到型循环结构 先执行A操作,再判断P是否为假,若P为假,再执行A,直到P为真为止,(a),(b),2020/9/13,程序基本结构,已经证明,任何复杂的问题都可以三种基本算法结构来描述:顺序、选择、循环。因此用计算机语句描述的程序也包含三种基本结构。 程序的三种基本结构 顺序结构程序:按照书写顺序依次执行语句 选择结构程序:按照条件判断选择执行语句 循环结构程序:通过条件控制循环执行语句,2020/9/13,程序基本结构,程序三种基本结构的特点 1.只

10、有一个入口 2.只有一个出口 3.结构内的每一部分都有机会被执行到 4.结构内部不存在“死循环”,2020/9/13,结构化程序设计的基本原则,如果一个程序仅包含这三种基本结构(由这些基本结构顺序组成),则称为结构化程序。 结构化程序设计的基本原则: 采用自顶向下、逐步细化的方法进行设计 采用模块化原则和方法进行设计。即将大型任务从上向下划分为多个功能模块,每个模块又可以划分为若干子模块,然后分别进行模块程序的编写 每个模块都是用结构化程序实现,即都只能由三种基本结构组成,并通过计算机语言的结构化语句实现,2020/9/13,算法的描述,自然语言表示算法 伪代码表示算法 流程图表示算法 N-S

11、图表示算法 PAD图表示算法 用计算机语言表示算法,2020/9/13,算法的描述,自然语言描述算法 自然语言就是汉语、英语等人们日常使用的语言。 1.通俗易懂 2.文字冗长 3.容易出现“歧义性”,2020/9/13,算法的描述,例如 求1*2*3*4*5即5! S1: p=1 S2: i=2 S3: p*i=p S4: i+1=I S5: 如果i不大于5,重复执行S3,S4,S5;否则,算法结束,2020/9/13,算法的描述,例如:输出两个数中的最大数 第一步:输入x和y的值 第二步:比较x和y的值,如果x大于y,则输出x的值,否则输出y的值 易于理解,但冗长,不够精确,难于描述复杂算法

12、。 例如当描述“输出10个数中最大数”的算法时,会冗长、难于理解,2020/9/13,算法的描述,例如:求n! ( n0 ) 第一步:输入n的值。 第二步:判别n的值,如果小于0,则显示输入错误信息,然后执行第五步 第三步:判断一下n的值如果大于或等于0,则进行以下操作。 1.给存放连乘积的变量fac赋初值为1 2.给代表乘数的变量i赋初值为1 3.进行连乘运算:fac=faci 4,乘数i增加1:i=i+1 5.判断乘数i是否大于n?如果i的值不大于n,重复执行第三步,否则执行下一步 第四步:输出fac的值,即n!值。 第五步:结束运行。,2020/9/13,算法的描述,用伪代码表示算法:用

13、介于自然语言和计算机语言之间的文字和符号来描述算法,2020/9/13,算法的描述,例:求12+22+n2 输出sum 开始 输入n的值 置sum初值为0 置i初值为1 当in,执行下面操作: sum = i*i+sum i = i+1 打印sum的值 结束,2020/9/13,算法的描述,用流程图描述算法 使用自然语言描述算法通俗易懂,它是文字性的。所以,此种方法一般用于算法比较简单的问题 传统流程图是借助一些图形符号来表示算法的一种工具,如下图所示。这种表示方法直观形象,容易理解。这些图形符号均采用美国国家标准协会ANSI规定的通用符号,在世界上也是通用的,2020/9/13,流程图符号,

14、2020/9/13,流程图绘制的注意事项,抓住解决问题的主线 只有一个入口与一个出口 流程图中每一个步骤都有机会被执行 根据不同结构考虑不同流程结构 结构内部不能出现“死循环”,2020/9/13,用流程图描述算法,例如计算5!,2020/9/13,用流程图描述算法,例如:输出两个数中的最大数,2020/9/13,用N-S图描述算法,例如:输出两个数中的最大数,2020/9/13,用N-S图描述算法,例如 求5!,2020/9/13,用计算机语言表示算法,例:求12+22+n2 输出sum #include void main( ) int n,i,sum=0; scanf(%d,i+) su

15、m+=i*i; printf(sum=%dn,sum); ,2020/9/13,用计算机语言表示算法,例如 求5! #include void main( ) int i=2,t=1; while(i=5) t=t*i; i=i+1; printf(%dn,t); ,2020/9/13,C语言的发展,C语言的发展过程 产生背景 低级语言如汇编语言,它的优势在于对硬件编程,可以编写操作系统等系统软件,但它可读性和可移植性差; 而一般高级语言又难以实现汇编语言的一些功能;如:内存地址操作、位操作,2020/9/13,C语言的发展,2020/9/13,C语言的发展,2020/9/13,C语言的发展,

16、C语言在1978年由美国电话电报公司(AT ,程序运行结果: This is a c program !,2020/9/13,C程序结构特点,例1.2: 求两数之和 main( ) int a,b,sum; /* 这是定义变量 */ a=123; b=456; /* 以下3行为C语句 */ sum=a+b; printf(“Sum is %d n”,sum); ,程序运行结果: Sum is 579,2020/9/13,C程序结构特点,例1.3: 从键盘输入两个整数,并将最大的数显示出来 #include /*包含预处理语句*/ main( ) /*主函数*/ int a,b,c; /*声明部

17、分,定义变量*/ printf(“Please input two integers:n”) ; scanf(“%d,%d” , ,程序运行结果: Please input two integers: 8,5 max=8,2020/9/13,C程序结构特点,C程序是由函数组成 程序由一个或多个函数组成,必须有且只能有一个主函数main(),函数容易实现程序的模块化。 函数的结构 函数的首部(函数的第一行) 函数体,函数首部下面的大括弧 内的部分,函数体由若干语句组成 程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行,2020/9/13,C程序结构特点,函数类型 函数名(形

18、参表) 说明部分 函数体 可执行部分 其中,函数中必须的部分是: 函数名( ) 其中: 第一行为函数头,大括号内为函数体,参数根据实际情况可以没有,但括号不能省略。如: void line( ) printf(“-”); 函数体中,说明语句必须在所有可执行语句之前,2020/9/13,C程序结构特点,函数有两类:库函数和用户自定义函数。库函数是系统提供的,用户可直接调用,对于库函数中没有的功能,需要用户自己编程实现,即自己定义函数,2020/9/13,C程序结构特点,C程序书写格式自由,一行内可以写几个语句,一个语句也可以写在多行上 每条语句和数据定义的最后必须有一个分号“;” 说明:在以下三

19、种情况下不允许有分号: a.所定义的函数的名称后面不使用分号 b.在右花括号“”后面不使用分号 c.预处理语句后面不使用分号,while(total=2000) limit+; total=total+limit; ;,sum( ) ; ,#include “stdio.h” ;,2020/9/13,C程序结构特点,注释 /* */为注释,不能嵌套 注释的“/”和“*”之间没有空格 不产生编译代码,例: /*This is the main /* of example1.1*/ */,2020/9/13,C程序结构特点,C对输入输出实行函数化。 在C语言中,大小写字母是有区别的。(C语言习惯用

20、小写字母) 系统预处理命令 #include 其作用是,告诉编译器在编译时需要文件stdio.h。这个文件含有程序为进行正确I/O(输入输出)操作所需要的库函数,称为包含文件。C+提供大量的这类文件,它们需要写在程序的头部,因此又称为头文件(header file),它们都是以h为扩展名的文件,2020/9/13,C程序结构特点,格式特点 习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式 优秀程序员的素质 使用TAB缩进 对齐 有足够的注释 有合适的空行,main( ) int i , j , sum; sum=0; for(i=1; i10;i+)

21、for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum); ,2020/9/13,C程序结构特点,例1. 4 已知圆的半径为6,计算圆的周长和面积 #include main( ) /*说明三个实型变量,分别表示半径、周长和面积*/ float r, length, area; r=6; /*赋值:将6送给r*/ length=2*3.14*r; /*计算周长,结果送length*/ area=3.14*r*r; /*计算面积,结果送给area*/ /*输出周长、面积*/ printf(n length=%f, area=%fn, length, area);

22、,2020/9/13,C程序结构特点,例1.5: 输入2个数,求和 #include void main( ) int value1, value2, sum; printf(“Input 2 numbers:n”); /*输入提示*/ scanf(“%d%d”, printf(“%d+%d=%d n”, value1, value2, sum); ,2020/9/13,C程序结构特点,例1.6: 输入m, n 计算m!和n! #include void main( ) int m, n, resm, resn; scanf(%d%d, /* main函数结束 */,2020/9/13,C程序

23、结构特点,求阶乘函数 int fact( int k ) int i, y = 1; for(i = 2; i = k; i+) y = y*i; /* 计算 k! */ return y; /* 结果返回*/ ,2020/9/13,编译和运行程序,#include文件,库文件,源文件,编译器,目标文件,链接器,可执行文件,其他用户生成 的目标文件,2020/9/13,VC+6.0集成开发环境,2020/9/13,VC+6.0集成开发环境,项目工作区窗口,2020/9/13,Visual C+ 6.0工具栏,标准工具栏,2020/9/13,Visual C+ 6.0工具栏,编译工具栏,2020

24、/9/13,Visual C+ 6.0菜单栏,工程(Project)菜单,2020/9/13,Visual C+ 6.0菜单栏,可以创建的项目类型,2020/9/13,Visual C+ 6.0菜单栏,文件(File)菜单,2020/9/13,Visual C+ 6.0菜单栏,可以创建的文件类型,2020/9/13,Visual C+ 6.0菜单栏,编译(build)菜单,2020/9/13,VC+6.0环境下C程序开发过程,利用Visual C+ 6.0集成环境开发C程序的过程如下: 1. 建立工程项目 2. 向工程项目中添加新文件 2. 编辑源代码 3. 编译和链接 4. 运行程序,202

25、0/9/13,建立工程项目,编译一个C源文件之前,需要有一个活动的项目工作区。要创建一个项目,选择“文件”菜单项,出现下拉菜单,选择“新建”选项,则出现“新建”对话框,,2020/9/13,建立工程项目,选择“工程”标签,在左边的列表框中单击“Win32 Console Application”选项, 在右边的“工程”下方的编辑框中输入一个名字如first作为项目的名称 单击“位置”下方的按钮,来选择项目存放的位置 然后单击“确定”按钮,出现一个对话框 在对话框中,单击“An empty project”选项,然后单击“完成”按钮,一个空项目就创建好了,2020/9/13,建立工程项目,202

26、0/9/13,建立工程项目,此时在资源管理器中看一下,发现系统给我们创建了一个名称为“first”的文件夹,文件夹中创建了3个文件,一个子目录。,2020/9/13,建立工程项目,后缀名为“.dsp”的是项目文件,保存项目设置,它维护应用程序中所有的源代码文件,以及Visual C+如何编译、连接应用程序,以便创建可执行程序。后缀名为“.dsw”的是项目工作区文件,保存项目工作区的设置。,2020/9/13,向项目中添加新文件,项目创建好后, 选择主菜单中的“工程”选项,在出现的下拉菜单中选择“添加工程”选项,如图:,2020/9/13,向项目中添加新文件,再选择“新建”选项,则出现“新建”文件对话框,如图,2020/9/13,向项目中添加新文件,在对话框左边的列表框中选择“C+ Source File”选项,在右边“文件”下方的编辑框中输入一个名字如“first.c”,然后单击“确定”,则系统为你创建了一个first.c文件。,2020/9/13,向项目中添加新文件,2020/9/13,编辑源代码,在代码编辑区中可以输入源程序了 保存源程序,2020/9/13,编译和链接,选择“编译”菜单下的“构建 first.exe”选项,或单击工具栏中的 按钮,则系统开始对first.c文件先进行编译,然后链接 如果源代码没有错误,则生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论