C第1章教学zpWord格式.docx
- 文档编号:19024489
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:15
- 大小:177.41KB
C第1章教学zpWord格式.docx
《C第1章教学zpWord格式.docx》由会员分享,可在线阅读,更多相关《C第1章教学zpWord格式.docx(15页珍藏版)》请在冰豆网上搜索。
第一章程序设计基础
1.1程序设计的基本概念
一、程序
二、算法与数据结构
三、程序设计语言
1.2程序设计方法
一、程序设计的一般步骤
二、结构化程序设计方法
1.3程序设计风格
一、程序(p1)
为让计算机完成特定任务(如:
解决某一算题或控制某一过程)而设计的指令序列。
程序是让计算机运行的。
一个程序应包括对解决问题所需要的数据的描述和对数据处理的描述。
1.对数据的描述,即数据结构。
2.对数据处理的描述,即计算机算法。
算法是为解决一个问题而采取的方法和步骤,是程序的灵魂。
为此,著名计算机科学家沃思(NikiklausWirth)提出一个经典公式:
数据结构+算法=程序
二、算法与数据结构(p1)
算法反映了计算机的执行过程,是对解决特定问题的操作步骤的一种描述。
数据结构是对参与运算的数据及他们之间的关系的描述。
1.算法
案例1.1输入三个数,求其最大值。
问题分析:
设num1,num2,num3存放3个数,max存放其最大值。
为求其最大值,就必须对3个数进行比较,可按如下步骤去做:
①输入3个数num1,num2,num3;
②先把第一个数num1的值赋给max;
③将第2个数num2与max比较,如果num2>max,则把第2个数num2的值赋给max(否则不做任何工作)
④将第3个数num3与max比较,如果num3>max,则把第3个数num3的值赋给max(否则不做任何工作)
⑤输出max的值,即最大值。
从案例1.1中可以看出,首先分析问题,然后寻找一种实现这个问题所要完成功能的方法,这种方法的具体化就称为算法。
因此可以说:
算法是由一套明确的规则组成的一些步骤,他指定了操作顺序并通过有限个步骤将问题解决、得出结果。
一个算法应具有以下5个特性:
(p2)
(1)有穷性
一个算法必须总是在执行有限个操作步骤和可以接受的时间内完成其执行过程。
(2)确定性
算法中的每一步都必须有明确的含义,不允许存在二义性。
(3)有效性
算法中描述的每一步操作都应该能有效地执行,并最终得到确定的结果。
(4)输入
一个算法有零个或多个输入数据。
例如:
计算1~10的累计和的算法,是无须输入数据,而对于10个数据进行排序的算法,却需要从键盘上输入这10个数据。
(5)输出
一个算法有1个或多个输出数据。
2.算法的表示方法
算法的表示方法很多,常见的有:
自然语言、传统流程图、N-S结构图、伪代码、PAD图等。
(1)用自然语言表示
自然语言就是人们日常使用的语言,可以是中文、英文等。
用自然语言表示的算法通俗易懂,但一般篇幅冗长,表达上往往不易准确,容易引起理解上的“歧义性”。
所以,一般用于算法较简单的情况。
(2)用传统流程图表示
传统流程图是用规定的一组符号、流程线和文字说明来表示各种操作算法的表示方法。
传统流程图常用的符号如图1.1所示(P3)
案例1.2用传统流程图描述案例1.1的算法如下图所示。
(3)用N-S结构图表示
N-S结构图的目标是开发一种不破坏结构化基本构成元素的过程设计表示。
其主要特点是:
完全取消了流程线,不允许有随意的控制流,全部算法写在一个矩形框内,该矩形框以三种基本结构(顺序、分支、循环)描述符号为基础符合而成。
N-S结构图表示的种基本结构如下:
①顺序结构(P5)
顺序结构是最简单的基本结构。
在顺序结构中,要求顺序地执行且必须执行由先后顺序排列的每一个最基本的处理单位。
如下图所示:
(P5图1.2)
先执行处理A,然后再顺序执行处理B。
②分支结构(选择结构)(P5)
在分支结构中,要根据逻辑条件的成立与否,分别选择执行不同的处理。
如下图所示(P54图1.3)
当逻辑条件成立时,执行A,否则执行处理B。
③循环结构
循环结构一般分为当型循环和直到型循环。
(A)当型循环。
在当型循环结构中,当逻辑条件成立时,就反复执行处理A(称为循环体),直到逻辑条件不成立时结束,如下图所示:
(B)直到型循环
在直到型循环结构中,当反复执行处理A,直到逻辑条件成立时结束(即逻辑条件不成立时继续执行),如下图所示:
案例1.3用N-S结构图描述案例1.1求三个数中最大值的算法。
(4)用伪代码表示
伪代码是一种介于自然语言和计算机语言之间的文字和符号来描述算法。
伪代码的表现形式比较灵活自由,没有严谨的语法格式。
案例1.4用伪代码描述案例1.1,求三个数中最大值的算法
inputnum1,num2,num3
num1→max
ifnum2>
maxthennum2→max
ifnum3>
maxthennum3→max
printmax
理论已证明,任何复杂的算法均可以用顺序、分支、循环这三种基本结构组合、嵌套进行描述。
由于N-S结构图无箭头指向,而局限在一个个嵌套的框中,最后描述的结果必然是结构化的,因此N-S结构图描述表示的算法,适用于结构化设计。
3.数据结构
数据结构是指数据的类型和数据的组织形式。
程序就是在数据的某些特定的表示方式和结构的基础上对抽象算法的具体表述。
因此,编写一个程序的关键就是合理地组织数据和设计好的算法。
三、程序设计语言(p3)
程序设计语言是人们用来编写程序,为计算机能够接受并理解的语言。
他通常是一个能够完整准确表达人的意图,并赖以控制计算机实现给定运算的符号系统。
他是人与计算机进行信息交流的重要工具。
程序设计语言一般分为三大类:
面向机器的语言、面向过程的语言和面向对象的语言。
1.面向机器的语言
面向机器的语言主要是针对特定的机器而设计的计算机语言。
他依赖于具体的计算机,如:
机器语言、汇编语言。
2.面向过程的语言
面向过程的语言又称为结构化语言,用这类语言进行程序设计时,必须用语言的语句、函数、命令描述一步一步地解决问题的步骤,即告诉计算机“如何做”。
这类语言独立于计算机,如:
Pascal语言、C语言等。
3.面向对象的语言
面向对象的语言适于解决大型任务。
用这类语言设计程序时,只需告诉计算机“做什么”,而不用说明“怎么做”。
这类语言也独立于计算机,如C++等。
程序是用程序设计语言编写的,不同的程序设计语言有其不同的特点。
因此,在开始编程之前要根据实际情况选择适合本系统的程序设计语言。
通常可以按照如下原则选择编程语言:
(1)程序设计语言是否能充分描述软件的处理功能,其中包括算法的复杂度、数据结构的要求、运行效率和性能要求等;
(2)程序设计语言的适用性,其中包括语言的复杂程度及程序员和用户对这种语言的熟悉情况等。
程序设计就是针对给定问题进行设计、编写和调试计算机程序的过程。
一般程序设计方法步骤如下:
(1)分析问题,确定解题方案。
首先根据用户的具体要求进行:
用户需求分析(详细而具体地理解用户要解决的问题);
数据及处理分析(已知或需要的输入数据、需要输出的数据、需要进行的处理);
可行性分析(用户提出的问题是否可解?
可解的价值如何?
);
运行环境分析(硬件环境和软件环境分析)。
然后在以上分析的基础上,将实际问题抽象化建立相应的数学模型,并确定解题方案。
(2)确定算法。
根据选取的数学模型和确定的解题方案,设计出具体的操作步骤,并可以通过流程图将确定的算法清晰、直观地表示出来。
(3)编写程序。
选用较为适宜的程序设计语言,以书面形式将算法描述出来,即形成用程序设计语言编制的源程序。
(4)调试运行程序。
对编写好的计算机程序进行试运行和检验,发现问题即对程序进行修改,直至的出正确的结果。
(5)建立文档资料。
整理分析计算结果,并建立相应的文档资料(程序设计说明书、用户使用说明书等),以便维护和修改。
二、结构化程序设计方法(P4,5)
目的:
是为了增强程序的易读性(容易理解),保证程序的质量,降低软件成本,从而提高软件的生产和维护的效率。
所谓结构化程序设计方法,就是“按照一组能够提高程序的易读性和维护性的规则,进行程序设计的方法。
”其要点如下:
①程序的质量标准是“清晰第一,效率第二”。
②程序的设计采用“自顶向下,逐步求精,模块化”的方法。
其中:
模块化,是指将一个复杂的问题或任务,分解成若干个功能单一、相对独立的小问题来进行程序设计,每个小问题就是一个模块,每个模块是一组由3个基本结构(顺序、分支、循环)组成的簇,模块一定要简单、功能独立,这样能使程序具有一定的灵活性和可靠性。
自顶向下,是指模块的划分要从问题的顶层向下逐层分解、逐步细化,直到最底层达到最简单的功能模块。
逐步求精,是指在将抽象问题分解为若干个相对独立的小问题时,要逐级地由抽象到具体、由粗到细、由表及里进行细化,直到将问题细化到可以用程序的3种基本结构来实施为止。
③程序的结构仅由顺序、分支、循环3种基本结构的组合、嵌套而成,且满足:
(a)每个程序模块只有一个入口和一个出口;
(b)没有死语句(永远执行不到的语句);
(c)没有死循环(永远执行不完的无终止的循环)。
④程序的书写必须按一定的规范和格式进行,不能随心所欲地拼凑。
⑤程序的设计风格要以好的可读性为标准,以使用程序的用户为中心,外表美观、结构流畅、语句简洁。
1.3程序设计风格(p6)
程序设计风格是指一个程序员在程序设计过程中所表现的特点、结逻辑思路等习惯和技术的总称。
他应包括:
程序结构形式、程序正文格式(源程序文件、数据说输入和输出等)。
行文格式等。
良好的程序设计风格来源于大量的实践和经验,其总的原则是清晰、易读。
具体表现在以下几个方面。
(1)程序中的算法。
程序中采用的算法要直截了当、尽可能简单,避免使用过于复杂和技巧性强的算法。
描述算法的流程图要尽可能是结构化流程图,注意保持程序结构的清晰、直观。
(2)程序正文格式:
程序正文格式(源程序文件编排格式)根据清晰、易读的原则,应注意以下几点:
①名字命名。
文件名、数据名、过程名、函数名、变量名等命名,要尽可能采用有实际意义的名字命名,即达到“见名知意”。
使人看了一目了然,不仅能帮助理解和记忆,而且还有助于提高程序的可读性。
distance=speed*time要比d=s*t更容易理解。
命名要有统一标准,如所有命名都采用汉语拼音或英文单词及单词的缩写,如:
xm/name(姓名)、xb/sex(性别)等,但不要混合使用。
不要采用过于相似的命名,以避免引起误解或输入错误。
同一名字不要赋予多种含义,以避免增加阅读和修改上的困难。
②程序注释。
程序中使用适当的注释,有助于对程序的理解,提高程序的可读性。
最好的注释是简洁明了地指出程序突出的特点、功能,或提供一种概念,有助于别人理解程序。
注释分为首部注释和功能注释。
首部注释:
位于每个模块的前面,用于说明整个模块的功能、接口信息、程序开发状况、使用方法等。
功能注释:
位于程序的内部,用于说明处理的功能。
③程序书写格式。
程序书写格式要注意清晰、美观,具有整体效果和层次结构。
通常采用一致的缩格书写形式,反映出嵌套的深度和层次。
以突出程序的逻辑结构,提高程序的可读性。
(3)数据说明与语句构造。
数据说明应当标准化,并按一定的次序对不同的数据结构和类型进行定义与说明。
语句构造应以简洁直接为原则,尽量避免使用复杂的条件判断语句和多层次的循环嵌套与条件判断嵌套。
表达式要采用自然形式,尽可能一目了然。
同时,可以使用加括号的方法排除歧异性。
(4)输入/输出格式。
输入/输出格式的设计要以方便用户为原则,简单、通用、规范。
具体包括:
术语、格式、排布方式、字体、颜色等,根据用户的不同类型、不同要求、不同特点,设计不同格式的输入/输出形式。
(5)文档整理。
程序文档尽量使用利于阅读的行文格式,逻辑简单、条理清楚。
作业:
P6:
1,2
补充:
3.用传统流程图和N-S结构图分别表示以下算法:
(1)已知圆的半径,求其圆的周长和面积。
(2)输入一个学生成绩,如果成绩及格,则输出“passed”信息;
如果成绩不及格,则输出“failed”信息。
(3)依次输入10个数,将其中最大数打印输出。
(4)输入50个数,统计其中正数的个数。
参考答案:
开始
输入已知圆的半径r
计算圆的周长
计算圆的面积
输出圆的周长和面积
结束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 zp
![提示](https://static.bdocx.com/images/bang_tan.gif)