第1章语言程序设计概述精.ppt
《第1章语言程序设计概述精.ppt》由会员分享,可在线阅读,更多相关《第1章语言程序设计概述精.ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1章语言程序设计章语言程序设计概述概述第1页,本讲稿共91页1.1 程序设计的基本概念程序设计的基本概念1.1.1 程序 计算机是一种以二进制数据形式在内部存储信息、以程序存储为基础、由程序自动控制的电子设备。人们需要计算机所做的任何工作,都必须以计算机所能识别的指令形式送入计算机内存中。一条条有序指令的集合称为程序。第2页,本讲稿共91页一个程序通常包含两个方面的内容。(1)数据的描述:指定数据的类型和组织形式(数据结构)。(2)操作的描述:编程的操作步骤,也称算法。数据是操作的对象,操作的目的是对数据进行加工处理,以便得到结果。打个比方,程序设计就像厨师做菜肴时需要菜谱,菜谱上一般包括
2、两个方面。(1)配料:制作菜肴所需的原料(类似于程序设计中的数据结构)。(2)操作步骤:制作某项菜肴时将原料按规定的步骤加工成所需的菜肴(类似于程序设计中的算法)。因此,计算机科学家沃思指出:数据结构+算法=程序第3页,本讲稿共91页1.1.2 计算机语言 程序设计语言是实现程序设计,以便人与计算机进行信息交流的必备工具,又称计算机语言。目前,社会上广泛使用的是高级语言,是一种接近人们习惯的程序设计语言,它使用人们所熟悉的文字、符号及数学表达式来编写程序,使程序的编写和操作都显得十分方便。由高级语言编写的程序称为“源程序”。在计算机内部,源程序必须翻译为机器能够接受的二进制代码所表示的“目标程
3、序”(也称机器语言)。其中,具有这种翻译功能的程序称为“编译程序”。源程序编译过程如图1.1所示。第4页,本讲稿共91页图1.1 源程序编译过程第5页,本讲稿共91页每一种高级语言都有与其相应的编译程序。在计算机内运行编译程序,才能运行相应的高级语言所编写的源程序。本书所介绍的C语言是目前国内外广泛流行的高级程序设计语言,是面向过程的较好的结构化程序设计语言。它不仅可以用来编写系统软件,也可以用来编写应用软件,同时也是面向对象程序设计技术的主要工具。第6页,本讲稿共91页1.1.3 程序设计 下面介绍设计简单程序时的操作步骤。如果进行系统工程开发,则操作步骤比较复杂。对于程序设计人员来说,必须
4、掌握更多的知识,比如软件工程方面的知识等。程序设计的一般步骤如下:1)确定数据结构 依据所需要处理的任务要求,规划输入的数据和输出的结果,确定存放数据的数据结构。由于在C语言中数据结构集中体现在数据类型上,因此,在进行C语言程序设计时,应统筹规划程序中所使用的变量、数组、指针以及它们的类型等。这是很重要的,如果在此期间选择了不合适的变量或者数组,将来修改起来就会比较困难。第7页,本讲稿共91页2)确定算法算法是指为解决某一特定问题而采取的确定的有限的步骤。对同一个问题,每一个人确定的算法都不应该完全相同。算法有优有劣,其评判的标准本书不做介绍。对于程序设计人员来说,应该学习比较优秀和比较经典的
5、算法,本书实例中介绍的均为一些常用的算法。3)编写程序 在充分论证数据结构和算法以后才能考虑编写程序,编写程序需要结合程序设计方法(面向过程的或是面向对象的)和程序设计语言(C语言、C+、Delphi等),当然即使是C语言,还有许多集成开发环境,例如Turbo C或是Microsoft C等,不同的集成开发环境写出的程序代码是有所区别的。第8页,本讲稿共91页4)程序调试 程序开发人员编写的程序称为源程序或源代码,源代码不能直接被计算机执行。源代码要经过编译程序编译,生成目标程序,然后链接其他相应的代码,最后生成可被计算机执行的可执行文件(.EXE或.COM文件)。Turbo C 2.0集成开
6、发环境提供了相应的编译程序。一个源代码有时要经过多次的修改才能编译通过,因此这一步有时是很困难的。程序在编译时,如果不能通过,则会有错误提示信息,程序员要根据错误提示信息调试程序。第9页,本讲稿共91页5)整理源程序并总结资料 有人以为程序调试成功就万事大吉了,其实这种思想是错误的。对于程序设计人员来说,平时的归纳和总结是很重要的。程序员应将平时的源程序进行归类保存,以方便今后查找,同时一定要注意保留文字资料。1.1.4 算法 日常生活中做任何事情都有其方法和步骤,这些方法、步骤就是算法,它要求过程合理而有序。不同的问题,有不同的方法和步骤;同一问题,不同的人也可能有不同的方法和步骤。下面介绍
7、一下衡量算法步骤优劣的标准、算法的分类和算法设计准则的常用方法。第10页,本讲稿共91页 1)衡量算法步骤优劣的标准 衡量一个算法步骤是否优劣的标准主要有以下三个方面。(1)思路:清晰、正确。(2)过程:简单、明了、扼要。(3)算法:合适。例如:计算1+2+3+4+5+99+100的值。算法1:1+2=3,3+3=6,6+4=10,10+5=15,15+6=21,4851+99=4950,4950+100=5050 第11页,本讲稿共91页算法2:100+(1+99)+(2+98)+(3+97)+(48+52)+(49+51)+50=100+49100+50=5050 相对而言,算法2简洁明了
8、、易算。2)算法分类 按数据的处理方式,计算机中的算法可分为两类。(1)数值运算:求数值的解,如求解方程的根,求函数的定积分等。这类算法研究较深入、成熟,如数学程序库中的有关数学问题的求解,已编制成了标准的子程序供人们使用。第12页,本讲稿共91页(2)非数值运算:目前使用的范围广泛,如办公自动化处理、图书情报检索等。此类算法一般没有固定的模式,由编程者自己编制,或参考已有类似的算法重新设计解决特定问题的专门算法。其中,排序是非数值运算算法中研究较为深入的一种。3)算法设计准则 在算法设计中应遵循以下五个准则。(1)有穷性:在合理的范围内操作步骤是有限的,而不能是无限的。一个算法必须在有限的操
9、作步骤完成后,得出正确结果,能够使算法结束。第13页,本讲稿共91页(2)确定性:算法中的每一步骤都应是惟一的和确定无误的,不能出现含糊而产生歧义性。也就是说,该操作对于相同的输入必能得出相同的结果。(3)有零个或多个输入:在执行算法时,需从外界得到的必要信息就是输入。一个算法,可以有零个、一个或多个特定对象的输入。(4)有一个或多个输出:算法的目的是为了求解,算法得到的结果就是该算法的输出,没有输出的算法是没有意义的。一个算法可以有一个或多个与输入相关的输出。(5)有效性:算法是编写程序代码的主要依据,算法设计中的每一个步骤,都必须是所使用的高级语言能够描述的操作。算法中每一步骤都应有效地执
10、行,并得到确定的结果。例如,b=0时,a/b是不能有效执行的。第14页,本讲稿共91页1.1.5 算法的描述 描述算法常用的方法有自然语言、传统流程图和N-S结构化流程图等。1)自然语言 自然语言是指人们日常使用的语言,可以是英文、中文或中英文结合。优点:通俗易懂。缺点:文字冗长,易出现歧义性。2)传统流程图 使用ANSI规定的流程图符号表示算法,其特点是:直观形象、易于理解。在用传统流程图表示算法时使用以下常用的符号。第15页,本讲稿共91页起止框:输入输出框:判别框:处理框:流程线:注释框:连接点:第16页,本讲稿共91页【例1-1】求S=1+2+3+99+100的值的算法可以用下面的方式
11、描述。(1)用自然语言描述。设一整型变量i,并令i=1(这里的“=”不同于数学里的等号,它表示赋值,这里把1赋给i,以下类同)。设一整型变量s,用其存放累加和;每次将i与s相加后存入s;使i值增1,取得下次的加数。重复执行上步,直到i的值大于100时,执行下一步。将累加和s的值输出。第17页,本讲稿共91页图1.2 传统流程图第18页,本讲稿共91页(2)用传统流程图描述,如图1.2所示。3)N-S结构化流程图N-S结构化流程图(简称N-S流程图)是将算法的每一个步骤,按序连接成一个大的矩形框来表示,从而完整地描述一个算法。N-S流程图更适合对结构化程序设计的描述,其描述方法将在下一节介绍。第
12、19页,本讲稿共91页1.2 结构化程序及设计步骤结构化程序及设计步骤1.2.1 结构化程序设计的概念 结构化语言比非结构化语言更易于程序设计,用结构化语言编写的程序的清晰性使得它们更易于维护,这已是人们普遍接受的观点了。结构化语言的显著特征是代码和数据的分离。这种语言能够把执行某个特殊任务的指令和数据从程序的其余部分分离出去。获得隔离的一个方法是调用使用局部变量的子程序。通过使用局部变量,可以写出对程序其他部分没有副作用的子程序。第20页,本讲稿共91页这样,就使得编写共享代码段的程序变得短小简单。如果开发了一些分离较好的函数,在引用时就可以只需知道函数做什么,而不必知道它是如何做的。(切记
13、:过度使用全局变量会由于意外的副作用而在程序中引入错误。)在C语言中,函数是完成程序功能的基本构件。使用函数可以将一个程序的诸任务分别定义和编码,使程序模块化。可以确信,一个好的函数不仅能正确工作,还不会对程序的其他部分产生副作用。第21页,本讲稿共91页1.2.2 三种基本结构 结构化程序由三种基本结构组成:顺序结构、选择结构和循环结构。已经证明,这三种基本结构组成的算法可以解决任何复杂的问题。使用这三种基本结构编写的程序,称为结构化程序。下面通过简单的实例说明结构化程序设计的三种基本结构。1.顺序结构 顺序结构程序中的语句按先后顺序逐条执行。【例1-2】顺序结构示例。求s=a+b的值。其流
14、程图如图1.3所示,图(a)是传统流程图,图(b)是N-S流程图。第22页,本讲稿共91页图1.3 顺序结构流程图(a)传统流程图;(b)N-S流程图第23页,本讲稿共91页程序如下:#include stdio.hmain()/*主函数 */int a,b,s;/*定义a,b,s为整型变量 */a=6;b=8;s=a+b;printf(s=%dn,s);/*输出s的值 */第24页,本讲稿共91页2选择结构在执行程序中的选择结构语句时,该语句的执行将根据不同的条件执行不同分支的语句。【例1-3】选择结构示例。求a、b两数中的较大数。其流程图如图1.4所示,图(a)是传统流程图,图(b)是N-
15、S流程图。第25页,本讲稿共91页图1.4 选择结构流程图(a)传统流程图;(b)N-S流程图第26页,本讲稿共91页程序如下:#include stdio.hmain()int a=6,b=8,max;/*定义变量a,b,max,并给a和b赋值*/if(ab)max=a;/*如果a大于b,将a赋给max*/else max=b;/*否则将b赋给max*/printf(max=%d,max);第27页,本讲稿共91页3.循环结构 在执行程序中的循环结构语句时,该语句将根据各自的条件,对循环结构所限定的语句(即循环体)重复执行多次或零次。循环结构又分为当型循环和直到型循环两种情况。1)当型循环
16、当型循环的特点是:先进行判断,当条件满足时,就执行循环体,否则就退出循环体。第28页,本讲稿共91页【例1-4】循环结构示例。计算n!。其流程图如图1.5所示,图(a)是传统流程图,图(b)是N-S流程图。第29页,本讲稿共91页图1.5 当型循环流程图(a)传统流程图;(b)N-S流程图第30页,本讲稿共91页程序如下:#include stdio.hmain()int i,n,t;/*i用来存放阶乘中的项,t存放阶乘*/i=1;t=1;scanf(%d,&n);while(i=n)t=t*i;i=i+1;printf(n=%d,t);第31页,本讲稿共91页2)直到型循环 直到型循环的特点
17、是:先执行循环体,再判断循环条件,直到条件不满足时,就退出循环结构。【例1-5】用直到型循环求解n!的流程图(见图1.6)和程序段。程序如下:#include stdio.hmain()int i,n,t;/*i用来存放阶乘中的项,t存放阶乘*/i=1;t=1;scanf(%d,&n);do第32页,本讲稿共91页 t=t*i;i=i+1;while(iy)z=x;/*如果xy,将x赋值给z,否则将y赋值给z */else z=y;return(z);/*将z的值返回到函数的调用处 */第48页,本讲稿共91页 说明:(1)本程序由两个函数组成,即main函数和max函数。(2)由一对花括号“
18、”括起来的是函数体。(3)在main函数中通过赋值语句“c=max(a,b);”调用max函数。max函数的功能是求a、b的较大数,并返回主函数。(4)第一行#include stdio.h 是文件包含,将在后面章节中介绍。第49页,本讲稿共91页 通过例1-6可以看出C语言程序结构有以下特点。(1)C语言是由函数组成的。函数是C语言程序的基本单位。一个C语言程序必须包含一个main函数,也可包含若干个其他函数。程序的全部工作由函数来完成。(2)程序总是从main函数开始执行,而不管main函数的位置如何。main函数和其他函数在程序中的先后位置不影响程序的执行过程。由main函数开始调用其他
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 概述
限制150内