C语言程序设计课件01 程序设计技-沈高峰_第1页
C语言程序设计课件01 程序设计技-沈高峰_第2页
C语言程序设计课件01 程序设计技-沈高峰_第3页
C语言程序设计课件01 程序设计技-沈高峰_第4页
C语言程序设计课件01 程序设计技-沈高峰_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第1章程序设计技术概述

本章知识要点程序设计语言和程序设计的概念算法的概念、特征以及描述方式软件编制的基本步骤

C语言特点及其运行环境1.1程序设计语言概述

1.程序程序就是按某种顺序排列的,能使计算机执行某种任务(例如,解题、检索数据或对一个系统进行控制等)的、连续执行的一条条指令集合。2.程序设计语言

程序设计语言,通常称为编程语言,是一组用来定义计算机程序的语法规则。一种程序设语言能够准确地定义计算机所需要使用的数据,并能精确定义在不同情况下所应当采取的操作。程序设计语言按照使用的方式和功能可分为:机器语言、汇编语言等低级语言和面向过程向对象的高级语言。(1)机器语言。机器语言(MachineLanguage)是直接用二进制编码指令表示的计算机语言,就是机器指令的集合,它与计算机同时诞生属于第一代计算机语言,其指令是由0和1组成的一串代码,有一定的位数,并被分成若干段,各段的编码表示不同的含义。(2)汇编语言。汇编语言(AssemblyLanguage)也是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。所以这种用符号代替机器语言的二进制码的计算机语言也被称为符号语言。汇编语言源程序汇编的过程(3)高级语言高级语言语法和结构更类似普通英文,更关键的是不依赖于特定计算机的结构与指令系统,用同一种高级语言缩写的源程序,一般可以在不同计算机上运行而获得同一结果,计算机的硬件结构没有多大关系。目前常用的高级语言有BASIC、FORTRAN、COBOL、PASCAL、PL/M、C等。高级语言完全采用了符号化的描述形式,用类似自然语言的形式描述对问题的处理过程,使得程序员可以认真分析问题的求解过程,不需要了解和关心计算机的内部结构和硬件细节,更易于被人们理解和接受。(4)面向对象的语言面向对象语言(Object-OrientedLanguage)是以对象作为程序基本结构单位的程序设计语言,程序设计的核心是对象,对象是程序运行的基本成分。面向对象语言的发展有两个方向:一种是纯面向对象语言,如Smalltalk、Eiffel等;另一种是混合型面向对象语言,即在过程式语言及其它语言中加入类、继承等成分,如C++、Objective-C等。面向对象语言刻画客观系统较为自然,便于软件扩充与复用。综上所述,以上四种计算机语言各有优缺点。程序员在使用时,需根据应用场合选用。一般在实时控制中,特别是在对程序的空间和时间要求很高,需要直接控制设备的场合,通常采用汇编语言;在系统程序设计、多媒体应用、数据库等诸多领域采用面向对象语言比较合适,面向过程是程序设计的基础,所以对程序设计的初学者来说,只有学习好面向过程的程序设计,才能对程序设计的学习打下坚实的基础.1.2算法1.算法的概念什么是算法?当代著名计算机科学家D.E.Knuth在他的一本书中写到:“一个算法,就是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。”简单的说,算法(Algorithm)就是确定的解决问题方法和有限步骤。计算机算法通常可以分为两大类:一类是用于解决数值计算,如科学计算中的数值积分、解线性方程等计算方法,就是数值计算的算法;另一类是用于解决非数值计算如信息管理、文字处理、图象图形进行排序、分类、查找等操作,就是非数值计算的算法。【例1.1】求1×3×5×7×9。

算法分析:这是一最原始方法:步骤1:先求1×3,得到结果3。步骤2:将步骤1得到的乘积3乘以5,得到结果15。步骤3:将15再乘以7,得105。步骤4:将105再乘以9,得945。这样的算法虽然正确,但太繁锁。改进的算法:s1:使t=1s2:使i=3s3:使t×i,乘积仍然放在在变量t中,可表示为t×i→ts4:使i的值+2,即i+2→is5:如果i≤9,返回重新执行步骤s3以及其后的s4和s5;否则,算法结束。【例1-3】对给定的两个正整数m和n(m大于等于n),求它们的最大公约数。

【算法分析:本题中属于一种数学数值运算题目,利用它成熟的算法可以很好的解决这个问题,这个算法就是辗转相除法求解最大公约数。例如:假设m=35,n=15,余数用r表示,它们的最大公约数的求法为:35/15商为2余数为5将n作新的m,以r作新的n,继续相除;15/5商为3余数为0当余数为零时,所得n就是两数的最大公约数。所以35和15的最大公约数为5。使用计算机解题的算法描述如下s1:将两个正整数分别存放到变量m和n中。s2:求余数:将m除以n,所得到的余数存放到变量r中。s3:判断余数r是否为0,如果余数为0则执行s5,否则执行s4。s4:更新被除数和除数:将n的值放入m中,余数r的值方如入到n中,然后转向到s2。S5:输出n当前的值。S6:算法结束。2.算法的特性算法是有穷规则的集合,通过这些规则可以确定出解决某些问题的运算序列。对于该类问题的任何输入值,都需要一步一步地执行计算,经过有限步骤后终止计算并产生输出结果。归纳起来,算法包括以下基本特性:①有穷性②确定性③可行性④零个或则多个输入⑤一个或多个输出:一个算法中有一个或多个输出。3.算法的描述原则上来说,算法可以用任何形式的语言和符号工具来表示,采用不同的算法描述工具对算法的质量有很大的影响。通常算法常用的表示方法有自然语言、传统流程图、结构化N-S图、伪代码、程序设计语言等。自然语言自然语言就是人们日常生活中使用的语言,可分为英语、汉语或其他语言等,理想状态下,算法的描述过程应当使用自然语言表达,因为其表示时算法通俗易懂,无需任何的专业训练就能看明白。程序流程图程序流程图(ProgramFlowChart)是最早提出的用图形表示算法的工具,也称为传统流程图。用它表示算法,具有直观性强、清晰性好、便于阅读、易于理解等特点,也便于转化成计算机程序设计语言,是软件开发人员经常使用的算法描述方式,具有程序无法取代的作用常用的流程图符号

【例1.4】将例1.1求1×3×5×7×9的算法用流程图表示,流程图如图1-3所示。如果需要打印出来运算结果,这可以用流程图1-4表示。【例1.5】将例1.2的算法用流程图表示,流程图如图1-5所示。【例1.6】将例1.3的算用流程图表示,流程图如图1-6所示图1-4算法流程图1→t3→it×i→ti+2→ii>9开始YN打印t结束结束1→t3→it×i→ti+2→ii>9开始YN图1-3算法流程图开始输入m和nm/n求得余数→rr=0?输出n结束n→mr→nYN结束f=3x+af=ax+b+c+c输入a,b,c,xx≤a?开始YN输出f图1-6图1-5在书写流程图时,人们规定了三种基本结构,这些结构按照一定的规律组成算法结构,可以保证算法质量。三种基本程序结构为:顺序结构(如图1-7)、分支结构(如图1-8)和循环结构图(如图1-9)。图1-8选择结构程序流程图(b)直到型循环(a)当型循环图1-9循环结构程序流程图图1-7顺序结构程序流程图(3)N-S流程图N-S流程图,是1973年美国学者I.Nassi和B.Shneiderman提出了一种新型流程图形式,其中N-S是两位学者的姓氏的首字母。这是一种去掉了流程线的流程图,算法的描述是在一个矩形框内,每个框内又可以包含下级矩形框,一个矩形框表示一个独立功能的N-S图,因为其符合结构化程序设计要求的特点,比较适合在软件工程中进行使用。(4)伪代码虽然用流程图描述算法直观易理解,但画起来比较麻烦,当算法稍微复杂时,算法修改很不方便。为使算法设计容易修改,使用伪代码描述算法比较合适。伪代码也称为类程序设计语言,是一种近似高级语言但又不受语法约束的一种算法语言描述形式,是介于自然语言和计算机语言之间的文字符号来描述算法。通过用伪代码描述的算法看到,其中可以包含计算机语言语句,也可以不用像计算机语言语法那样严格,有些地方还可以用自然语言进行描述。这样的方式方便修改算法,很大程度上可以简化了算法的设计工作。(5)计算机语言直接使用计算机语言书写算法,可以令算法由设计到实现一步到位,通常对计算机语言非常熟悉的程序员来说,直接使用计算机语言编写算法很方便,这种方法的优点是避免了算法到计算机语言的转换,其缺点是要求程序员在书写时严格谨慎,必须按照程序语言的语法规则编写语句,否则无法运行,同时改成其他计算机语言编程时,又需按照新的计算机语言规则重新编写,对于不熟悉程序语言的人来说,看不懂书写的算法。允许在算法的描述和实现方法上有所不同,用各种算法描述方法描述的同一算法功用是一样的。1.3软件的编制步骤

日常生活中可以使用计算机进行画图、制表或者闲暇时听歌曲、看电影,计算机可以帮我们做很多的事情,计算机做为一种批量生产的设备,只有在安装了不同的软件,才能处理问题,换句话说如果没有是计算机软件的产生及其广泛应用,计算机也就不会在今天的工作以及生活中产生如此巨大的影响。一个软件的开发,包含需求分析、可行性分析、初步设计、详细设计、形成文档、建立初步模型、编写详细代码、测试修改、发布等多个步骤。首先要找到解决问题的突破口(先要搞明白需要做什么,然后再考虑如何做)。至于采用什么表示方法(简单文本、UML图、E-R图)、什么语言开发工具都是次要的问题。总体来看软件开发过程主要包括以下四个阶段:第一阶段:确定软件开发需求第二阶段:软件设计与开发问题分析选择一个全面的解决算法方案编写程序调试程序第三阶段:文档整理第四阶段:软件维护1.4C程序设计语言的产生与特点

C语言是一种得到广泛重视并普遍应用的计算机语言,也是国际上公认的最重要的几种通用程序设计语言之一,它既可用来写系统软件,也可用来写应用软件。C语言主要特点如下:表达能力强。丰富的数据类型和运算符,其中运算符有34种,C把括号、赋值、逗号等都作为运算符处理。从而使C的运算类型极为丰富,可以实现其他高级语言难以实现的运算。可直接访问内存物理地址和硬件寄存器,能实现二进制位运算。C语言结构清晰,流程控制结构化、程序结构模块化。具有顺序、分支、循环三种结构化控制结构,便于开发大型软件C语言语言简练、紧凑,。如i=i+1;在C中可写为i++;C语言生成的目标代码质量高,程序执行速度快。编译后生成的目标程序运行速度高占用存储空间少,几乎与汇编语言相媲美。目前C语言版本目前最流行的C语言是MicrosoftC或称TurboC,这些C语言版本不仅实现了ANSIC标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。1.5C语言程序的运行环境

(VisualC++6.0编译环境)

1.5.1C语言程序上机步骤前面编写的一些C语言源程序,它们是不能直接直接运行的。因为计算机只识别和执行有1和0组成的二进制代码指令,不能识别和执行由高级语言写的源程序。源程序就是用某种程序设计语言编写的程序,其中的程序代码称为源代码。因此,一个高级语言写的源程序,必须用编译程序把高级语言程序翻译成机器能够识别二进制目标程序,通过和系统提供的库函数和其他目标程序的连接,形成可以被机器执行的目标程序。一个C语言源程序到扩展名为.exe可执行的文件,一般需要经过:编辑、编译调试、连接、运行四个步骤Li01-01.obj源程序编辑编译可执行程序连接运行目标程序Li01-01.cLi01-01.exe结果1.5.2VisualC++6.0开发环境1.VisualC++6.0开发环境的启动与退出有两种方法可以打开或进入到VisualC++6.0开发环境。直接双击桌面上VisualC++6.0的图标。在Windows桌面上,单击“开始”菜单→“程序”→“MicrosoftVisualC++6.0”图标。

VisualC++6.0开发环境退出操作方法如下:单击“开始“菜单中“退出”按钮,或者单击开发环境右上角的关闭退出VisualC++6.0。VisualC++6.0启动后,打开如图1-16所示集成开发环境主窗口,该界面除包含MicrosoftOffice应用程序窗口所共有的标题栏、菜单栏、工具栏等部件以外,还包含项目窗口、程序编辑窗口和信息输出窗口三个视窗。信息输出窗口项目窗口程序编辑窗口1.5.3如何在VisualC++6.0环境下编辑、运行C程序在VisualC++6.0中有“独立文件模式”和“项目管理模式”两种方式来编辑、编译、运行C语言源程序。当需要编写的源程序文件比较简单时可采可用独立文件模式直接创建、录入、编辑、链接、运行;当一个程序由多个源程序文件组成时,可使用项目管理模式可以将全部源程序文件合在一起,构成一个整体程序,该程序在VisualC++6.0称为项目。两种模式在启动开发环境、编译、连接、运行等方面是相同的,主要区别在于运行环境的建立、源程序的录入与编辑。

图1.17VisualC++6.0新建对话框图1-18选择工程类别对话框图1-19Win32位控制台应用程序框架说明图1-20新创建的空工程窗口图1-21新建工程文件夹中的文件在创建一个

VisualC++6.0工程时,系统会自动产生许多相关的文件,这些文件不同的类型和作用简单介绍如下:.dsw文件:工作区(Workspace)文件,用它可以直接打开工程,属于级别最高的VisualC++6.0文件。.dsp文件:项目文件,主要用来存放应用程序的有关信息。.opt文件:是工程关于环境的选项设置文件,当运行的机器环境发生了变化,该文件删除后也将自动重建。debug文件夹:在刚刚建立工程时里面还没有任何文件,只有当程序编译、链接、运行以后,程序的可执行文件等其他相关文件会放在其中。图1-22新建C++源文件对话框“项目管理模式”下,一个项目由多个源程序文件组成,应该分别对源程序进行创建、录入、编辑,上一步仅仅创建了一个空的工程,必须将C源程序文件和头文件添加到工程中去,才能运行工程。以本例题为例在上面创建的工程

温馨提示

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

评论

0/150

提交评论