1、 第第1章章计算机程序设计与算法计算机程序设计与算法C/C+程序设计教程程序设计教程主要内容有主要内容有 l l程序设计语言程序设计语言l l程序设计过程程序设计过程l l程序设计算法程序设计算法l l自然语言描述计算机算法自然语言描述计算机算法l l程序流程图描述计算机算法程序流程图描述计算机算法l lN-SN-S图描述计算机算法图描述计算机算法l l用用程程序序设设计计语语言言描描述述计计算算机机算算法法 1.1程序设计程序设计 学习程序设计并不是简单地学习计算机语法规范或程序设计语言的本身,而是要学会怎么用计算机程序设计语言解决实际问题、提高工作效率和工作质量。计算机技术应用领域博大而广
2、泛,谁也不可能完全学会计算机技术的方方面面,这是因为计算机涉及到的领域太广了,计算机技术的发展日新月异,即使学上很久我们也不可能完全学到头,可以说学无止境。1 1.1 1.1 1程序设计语言程序设计语言 (1)科学计算科学计算语言。用于科学计算,基础是语言。用于科学计算,基础是数学模型数学模型,过程描述的是数值,过程描述的是数值计算,如计算,如FORTRAN语言;语言;(2)系系统统开开发发语语言言。用用于于编编写写编编译译程程序序、操操作作系系统统、数数据据库库管管理理系系统统DBMS等,如等,如C语言;语言;(3)实实时时处处理理语语言言。及及时时响响应应环环境境信信息息,可可以以根根据据
3、外外部部信信号号对对不不同同的的程程序序段进行并发控制执行;如汇编语言段进行并发控制执行;如汇编语言(4)商商用用语语言言。主主要要用用于于商商业业处处理理、经经济济管管理理,基基础础为为自自然然语语言言模模型型;如如COBOL语言语言(5)人工智能描述人工智能描述语言。模拟人的思维推理过程,实现智能化控制等;语言。模拟人的思维推理过程,实现智能化控制等;(6)模模拟拟建建模模语语言言。用用于于模模拟拟实实现现客客观观事事物物的的发发展展与与变变化化过过程程,以以提提前前预预测未来发展的结果;测未来发展的结果;(7)网络编程网络编程语言,在网络技术基础上进入深层次的应用研究与开发的语语言,在网
4、络技术基础上进入深层次的应用研究与开发的语言言,如如Dephi适于网络化环境的编程,而适于网络化环境的编程,而JAVA是一种是一种 新型跨平台分布式程新型跨平台分布式程序设计语言,语义规范与序设计语言,语义规范与C C语言相同等等,不再列举。语言相同等等,不再列举。1.1.2 1.1.2 程序程序设计过设计过程程 1.1.程序实现过程程序实现过程程程序序设设计计是是指指我我们们使使用用一一种种计计算算机机语语言言为为实实现现解解决决实实际际问问题题的的算算法法去去设设计计编编写写计计算算机机程程序序的的过程。过程。计计算算机机语语言言是是人人与与计计算算机机进进行行交交流流的的媒媒介介,通通过
5、过语语言言编编写写的的程程序序,计计算算机机就就会会准准确确地地按按程程序序步步骤骤执执行行操操作作,计计算算机机解解决决实实际际问问题题的的一一般般过过程程如如图图1.1所示:所示:2.2.程序设计的过程程序设计的过程 程序设计大致包含以下几个步骤程序设计大致包含以下几个步骤(1)分析问题分析问题程程序序设设计计首首先先要要进进行行对对问问题题的的分分析析,明明白白我我们们要要作作什什么么,确确定定要要使使用用的数学模型。的数学模型。(2)确定算法确定算法确定算法即确定解决问题时要执行的一系列步骤。确定算法即确定解决问题时要执行的一系列步骤。(3)算法描述算法描述算法描述就是使用计算机语言对
6、算法予以描述。算法描述就是使用计算机语言对算法予以描述。(4)确定程序设计语言确定程序设计语言由由于于不不同同的的计计算算机机程程序序设设计计语语言言有有不不同同的的特特点点,根根据据实实际际情情况况与与需需要要选定好程序设计语言后,就可以用该语言编程实现以算法。选定好程序设计语言后,就可以用该语言编程实现以算法。(5)调试和运行程序调试和运行程序 1.2 程序设计算法程序设计算法 计算机程序可以这样表示计算机程序可以这样表示程序程序=算法算法+数据结构数据结构其中其中数据结构数据结构:对对数数据据的的描描述述,包包括括对对数数据据类类型型的的描描述述核核对对数数据据组组织织形形式式描描述述定
7、定义义.算法算法:对操作过程的描述对操作过程的描述,即操作步骤的描述。即操作步骤的描述。如果考虑现代编程的工程化与多样性,可以这样表示:如果考虑现代编程的工程化与多样性,可以这样表示:程序程序=数据结构数据结构+算法算法+(程序设计方法(程序设计方法+编程工具编程工具+语言环境)语言环境)其中算法是关键,是实现程序设计的依据和基础,算法分析作的其中算法是关键,是实现程序设计的依据和基础,算法分析作的完整,作的精细,才能有完整的程序设计,才可能对程序进行优化,完整,作的精细,才能有完整的程序设计,才可能对程序进行优化,所以掌握算法至关重要。所以掌握算法至关重要。1.31.3计算机算法的表示计算机
8、算法的表示1.3.1自然语言自然语言描述描述期末数学成绩高于期末数学成绩高于90分,英语成分,英语成绩高于绩高于95分,有很好的团队协作精分,有很好的团队协作精神的同学,可以报名参加国际数学神的同学,可以报名参加国际数学建模比赛。建模比赛。(有很多种理解有很多种理解)1.31.3计算机算法的表示计算机算法的表示1.3.2程序流程图程序流程图描述描述 顺序结构 条件判断分支结构 循环控制结构 图1.4 表示复杂的算法看似乱麻 1.3 1.3计算机算法的表示计算机算法的表示 1.3.3N-S图描述 图1.6 N-S图表示三种基本结构 1.4 1.4 用用程序设计语言程序设计语言描述描述 1.机器语
9、言机器语言(Machinelanguage)例例如如,计计算算表表达达式式 mn-z的的值值,并并把把结结果果值值存存到到1001000010010000号号内内存存单单元元。假假设设已已知知某某计计算算机机的的取取数数操操作作码码为为10001000,除除法法操操作作码码为为10101010,减减法法操操作作码码为为10011001,传传送送操操作作码码为为01000100,另另外外也也知知m m、n n、z z中中的的三三个个数数已已分分别别存存放放在在1111011011110110、1010110110101101、0101011001010110号号内存单元内存单元。用机器语言可描述
10、编写如下程序:。用机器语言可描述编写如下程序:1000 11110110 1000 11110110 取出放在取出放在1111011011110110内存单元的值内存单元的值 1010 10101101 1010 10101101 除法操作放在除法操作放在1010110110101101内存单元的值内存单元的值 1001 01010110 1001 01010110 把结果值减去放在把结果值减去放在1010110110101101内存单元的值内存单元的值010010010000把最后结果值存到把最后结果值存到10010000号内存单元号内存单元 2.2.汇编语言汇编语言(Assembler l
11、anguage)Assembler language)例如计算表达式例如计算表达式mn-z值的程序可以写成:值的程序可以写成:LDA MLDA M DIV N DIV N SUB Z SUB Z MOV Y MOV Y 使使用用这这种种语语言言计计算算机机CPU不不能能直直接接识识别别,必必须须用用事事先先存存放放在在存存储储器器中中的的“翻翻译译程程序序”,把把汇汇编编语语言言翻翻译译成成机机器器语语言言,计计算算机机指指令令系系统统才才能能识识别别和和执执行行,这这个个翻翻译译程程序序称称为为编编译译汇汇编编程程序序,翻翻译译成成机机器语言描述的程序叫器语言描述的程序叫目标程序目标程序。3
12、.3.高级语言高级语言(High-level language)High-level language)不管使用不管使用机器语言机器语言还是使用还是使用汇编语言汇编语言描述算描述算法和编写程序,都没有摆脱法和编写程序,都没有摆脱计算机指令系统计算机指令系统的束的束缚。到了缚。到了1954年,出现了一种与具体计算机指令年,出现了一种与具体计算机指令系统无关的语言,即系统无关的语言,即高级语言高级语言。它与人们习惯使。它与人们习惯使用的用的自然语言自然语言与与数学语言数学语言非常接近,例如:非常接近,例如:y=2x2-x+1这样一个数学式子用高级语言来写,就写成这样一个数学式子用高级语言来写,就写
13、成 y=2*x*x-x+1 基本上是原样表达,这样描述程序算法显然就基本上是原样表达,这样描述程序算法显然就得心应手的多。得心应手的多。高级语言的解释过程如图高级语言的解释过程如图1.10所示。所示。高级语言的编译过程如图高级语言的编译过程如图1.111.11所示。所示。1.5 1.5 算法举例算法举例 算法步骤分析:算法步骤分析:S1:累加器变量累加器变量sum赋初值赋初值0,即,即sum=0S2:计数器变量计数器变量i赋初值赋初值1,即,即i=1S3:使累加器变量值使累加器变量值sum加计数器变量值加计数器变量值i,结果仍放在结果仍放在sum中中,即即sum=sum+i,此时此时sum值为
14、值为sum=sum+i=0+1=1S4:使计数器变量使计数器变量i加加1,结果仍放在结果仍放在i中中,即即i=i+1,此时此时i值为值为i=i+1=1+1=2S5:使累加器变量值使累加器变量值sum加计数器变量值加计数器变量值i,结果仍放在结果仍放在sum中中,即即sum=sum+i,此时此时sum值为值为sum=sum+i=1+2=3S6:使使i加加1,结果仍放在结果仍放在i中中,即即i=i+1,此时此时i值为值为i=i+1=2+1=3S7:使使sum加加i,结果仍放在结果仍放在sum中中,可表示为可表示为sum=sum+i,此时此时sum值为值为sum=sum+i=3+3=6S8:使使i加
15、加1,结果仍放在结果仍放在i中中,可表示为可表示为i=i+1,此时此时i值为值为i=i+1=3+1=4S9:使使sum加加i,结果仍放在结果仍放在sum中中.,可表示为可表示为sum=sum+i,此时此时sum值为值为sum=sum+i=6+4=10 程序流程图如图程序流程图如图1.121.12所示,所示,N-SN-S图如图图如图1.131.13所示。所示。图1.12 累加运算程序流程图 图1.13 累加运算N-S图 开 始 sum=0 i=0sum=sum+i i=i+1i=100打 印NYC语言程序算法如下:语言程序算法如下:main()inti=1,sum=0;/*定义变量及其数据类型定
16、义变量及其数据类型*/while(i=100)/*循环控制结构循环控制结构*/sum+=i;i=i+1;/*循环体结束循环体结束*/printf(sum=%dn,sum);/*输出累加结果输出累加结果*/程序算法不是唯一的,这个问题还有其它的算法程序算法不是唯一的,这个问题还有其它的算法 算法算法1:main()floatsum=0;inti=1;loop:if(i=100)sum=sum+i;i=i+1;gotoloop;printf(n%f,sum);算法算法2:main()floatsum=0;inti=1;while(i=100)sum=sum+i;i+;printf(n%f,sum)
17、;算法算法3:main()inti=1,sum=0;dosum=sum+i;i=i+1;while(i=100);printf(thesumis%d,sum);以此类推以此类推可以很容易表示出计算可以很容易表示出计算 之和的算法,当分母大于之和的算法,当分母大于100100时程序结束,时程序结束,输出计算结果。程序算法如下。输出计算结果。程序算法如下。算法算法3的的N-S图如图图如图1.14所示。所示。图图1.14累加运算累加运算N-S图图 本本章章是是计计算算机机程程序序设设计计的的基基础础,介介绍绍了了计计算算机机程程序序设设计计语语言言的的应应用用特特点点和和发发展展演演变变,特特别别介
18、介绍绍了了程程序序设设计计过过程程以以及及程程序序设设计计算算法法,学学要要重重点点理理解解和和掌掌握握的的是是计计算算机机算算法法的的表表示示方方法法,列列举举了了用用自自然然语语言言描描述述结结局局问问题题过过程程的的特特点点与与不不足足。作作为为一一个个程程序序设设计计人人员员,应应该该熟熟悉悉并并掌掌握握比比较较常常用用的的程程序序流流程程图图描描述述方方法法,以以及及N-SN-S图图描描述述算算法法的的基基本本技技能能,最最终终需需要要使使用用计计算算机机语语言言,即即程程序序设设计计语语言言描描述述并并实实现现。本本章章通通过过算算法法举举例例以以训训练练引引导导读读者者用用计计算
19、算机机的的思思维维表表达达解解决决问问题题的的过过程程,以以最最终实现算法,这就是程序设计算法的根本。终实现算法,这就是程序设计算法的根本。本章小结本章小结 1.6 1.6 练习思考题练习思考题1.程程序序设设计计语语言言有有哪哪些些相相同同和和不不同同之之处处,有有哪哪些些分分类类?2.试述试述程序实现过程包括那几方面?程序实现过程包括那几方面?3.简述程序设计包含那些步骤。简述程序设计包含那些步骤。4.什么是计算机程序设计算法什么是计算机程序设计算法?5.用那些方法表示计算机算法,各有哪些利弊?用那些方法表示计算机算法,各有哪些利弊?6.程序流程图有哪些表示符号,你认为有哪些优缺点程序流程图有哪些表示符号,你认为有哪些优缺点7.简述简述N-S图有什么特点。图有什么特点。8.请请用用程程序序流流程程图图和和N-S图图表表示示从从键键盘盘输输入入两两个个数数,用用计算机判别其大小的算法。计算机判别其大小的算法。
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922