版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章程序设计与
C语言概述
C
语言程序设计1
1.1程序与程序设计1.2程序设计语言1.3C语言概述1.4程序开发环境与程序调试本章主要内容2023/7/2621.1程序与程序设计1.1.1程序1.1.2算法1.1.3程序设计方法和风格返回2023/7/2631.1.1程序
程序是指存储在计算机内部存储器中可以连续执行的一条条指令的集合。著名计算机科学家沃思(NikiklausWirth)提出一个公式:程序=数据结构+算法。即一个程序应该包括两方面的内容:数据结构和算法。2023/7/2641.1.1程序数据结构(datastructure)是对数据的描述,在程序中要指定数据的类型和数据的组织形式。算法(algorithm)是对操作的描述,即操作步骤。是用来解决做什么和怎么做的问题。计算机算法可分为两大类:数值运算算法和非数值运算算法。2023/7/2651.1.1程序设计一个程序时,除了考虑数据结构和算法这两个因素之外,还应当采用程序设计方法进行程序设计,并且考虑用一种语言来表示。因此,一个程序应该表示为:
程序=数据结构+算法+程序设计方法+语言工具和环境2023/7/2661.1.2算法
1.算法概述算法是指为解决某个问题而采用的方法和步骤。这些步骤是按一定的顺序进行的,每个步骤不能缺少,它们之间的次序也不能颠倒。算法体现了人们解决某一类问题时的思维方法和过程,描述了人类解决某类问题所依据的规则和操作。
2023/7/2671.1.2算法
计算机算法可分为两大类:数值运算算法和非数值运算算法。数值运算算法主要用于求解数值问题,如求函数值、求方程的根等。一般数值运算有现成的模型,可以运用数值分析方法,因此对数值运算的算法的研究比较深入,各种数值运算都有比较成熟的算法可供选用。非数值运算算法常用于事务管理领域,如人事管理、行车调度管理等。由于非数值运算要求各异,很难规范化,因此一般只对一些典型的非数值运算算法作比较深入的研究。
2023/7/2681.1.2算法2.算法的特性
有穷性:一个算法应包含有限的操作步骤,且每一步都可在有穷的时间内完成。
确定性:算法中每一个步骤必须有确切的含义,并且在任何条件下,算法只有惟一的一条执行路径,即对于相同的输入只能得出相同的输出。
可行性:一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。2023/7/2691.1.2算法有零个或多个输入:这些输入取自于某个特定的对象的集合。有一个或多个输出:这些输出是同输入有着某些特定关系的量,在一个完整的算法中至少会有一个输出。
2023/7/26101.1.2算法3.算法的描述方法1966年,Bohra和jacopini证明了任何单入口单出口没有死循环的程序都可以由三种基本的控制结构构造出来。这三种基本结构就是顺序结构、选择结构和循环结构,它们作为表示一个良好算法的基本单元。
2023/7/26111.1.2算法算法的表示方法很多,常用的有自然语言、传统流程图、N-S流程图、伪代码、计算机语言等。2023/7/26121.1.2算法(1)用自然语言表示算法自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。
下面通过实例来说明用自然语言来描述三种基本结构的算法。
2023/7/26131.1.2算法【例1-1】
已知a的值是7,b的值是10,将a、b的值互换,互换后a的值为10、b的值为7,然后输出交换后a、b的值。步骤1:把7赋给变量a步骤2:把10赋给变量b步骤3:将变量a的值赋给变量c步骤4:将变量b的值赋给变量a步骤5:将变量c的值赋给变量b步骤6:输出变量a和变量b的值步骤7:算法结束。2023/7/26141.1.2算法【例1-2】
输出a、b两个不同数中的较大数。步骤1:输入a和b的值步骤2:判断a大于b否,如果a大于b,执行第3步,否则执行第4步步骤3:输出a的值步骤4:输出b的值步骤5:算法结束。
2023/7/26151.1.2算法【例1-3】求1+2+3+…+100。步骤1:使p=1步骤2:使q=2步骤3:使p+q,和仍放在p中,可表示为p+q→p步骤4:使q的值加1,即q+1→q。步骤5:如果q不大于100,返回重新执行步骤3、步骤4和步骤5。否则,算法结束。最后得到p的值就是1+2+3+…+100的和。
2023/7/26161.1.2算法(2)用流程图表示算法流程图是用一些图框表示各种操作。美国国家标准化协会ANSI规定了一些常用的流程图符号,已为世界各国程序工作者普遍采用。流程图符号如图1-1所示。
图1-12023/7/26171.1.2算法【例1-4】已知a的值是7,b的值是10,将a、b的值互换,互换后a的值为10、b的值为7,然后输出交换后a、b的值。用流程图表示算法。流程图如图1-2所示。图1-22023/7/26181.1.2算法【例1-5】输出a、b两个不同数中的大数。用流程图表示算法。流程图如图1-3所示。图1-32023/7/26191.1.2算法【例1-6】求1+2+3+…+100。算法用流程图表示。流程图如图1-4所示。图1-42023/7/26201.1.2算法用流程图表示算法直观形象,易于理解,不会产生“歧义性”。三种基本结构的共同特点:只有一个入口只有一个出口结构内的每一部分都有机会被执行到结构内不存在“死循环”
2023/7/26211.1.2算法(3)用N-S流程图表示算法
N-S流程图是美国学者I.Nassi和B.Shneiderman于1973年提出的一种新的流程图。N-S流程图的主要特点是取消了带箭头的流程线,全部算法写在一个矩形框内,在该框内还可以包含其他的从属于它的框。N-S流程图如同一个多层的盒子,又称盒图。
2023/7/26221.1.2算法图1-5表示顺序结构图1-6表示选择结构
图1-5图1-62023/7/26231.1.2算法图1-7表示当型循环结构图1-8表示直到型循环结构
图1-7图1-82023/7/26241.1.2算法已知a的值是7,b的值是10,将a、b的值互换,互换后a的值为10、b的值为7,然后输出交换后a、b的值。用N-S流程图表示算法。如图1-9所示。图1-92023/7/26251.1.2算法输出a、b两个不同数中的大数。用N-S流程图表示算法。如图1-10所示。图1-102023/7/26261.1.2算法求1+2+3+…+100。用N-S流程图表示算法。如图1-11所示。图1-112023/7/26271.1.2算法(4)用伪代码表示算法伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法的。用伪代码表示算法时,可以用英文伪代码,也可以用汉字伪代码,还可以中英文混用。
用伪代码写算法并无固定的、严格的语法规则,只要用清晰易读的形式把意思表达清楚即可。2023/7/26281.1.2算法【例1-7】求1+2+3+…+100。用伪代码表示算法。BEGIN(算法开始)1→p2→qwhileq<=100{p+q→pq+1→q}printpEND(算法结束)2023/7/26291.1.2算法(5)用计算机语言表示算法要完成一项工作,包括设计算法和实现算法两个部分。前面介绍的只是描述算法,计算机无法识别流程图和伪代码,只能识别并执行用计算机语言编写的程序,因此,用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。用计算机语言表示算法必须严格遵循所用语言的语法规则。下面用C语言表示一个算法。2023/7/26301.1.2算法【例1-8】
将变量a,b的值互置。用C语言表示。#include<stdio.h>voidmain(){inta,b,c;/*定义a,b,c为整型变量*/a=7;
/*给a赋以整数7*/b=10;/*给b赋以整数10*/c=a;/*把a的值赋给c*/a=b;b=c;printf(“a=%d,b=%d\n”,a,b);/*输出变量a,b的值*/}2023/7/26311.1.2算法【例1-9】
输出a,b两个不同数中的大数。用C语言表示算法。#include<stdio.h>voidmain(){inta,b,c;scanf("%d%d",&a,&b);if(a>b)printf("%d\n",a);elseprintf("%d\n",b);}2023/7/26321.1.2算法【例1-10】
求1+2+3+…+100)用C语言表示算法。#include<stdio.h>voidmain(){intp,q;p=1;q=2;while(q<=100){p=p+q;q=q+1;}
printf("1+2+3+…+100=%d\n",p);}2023/7/26331.1.3程序设计方法和风格
程序设计(Programming)是指对提出的问题进行分析、确定数据模型、设计算法、编写源代码、调试并运行程序的方法和过程。按照结构性质,程序设计分为非结构化程序设计和结构化程序设计。非结构化的程序设计方法设计出来的程序无章可循,程序常常带有强烈的个人色彩。这样的程序可读性差,编写、调试和维护工作都十分困难。2023/7/26341.1.3程序设计方法和风格结构化程序设计强调从程序的结构上和风格上来研究程序设计方法,提倡利用三种基本结构进行规范化程序设计,使程序具有良好的结构框架。用结构化程序设计方法得到的程序不仅在结构上良好、清晰易读易写,而且易维护、易排错、易验证正确性。
在前面介绍的算法中,顺序、选择和循环就是结构化程序设计方法强调使用的三种基本结构。
2023/7/26351.1.3程序设计方法和风格程序设计风格是指编写程序时表现出的特点、习惯和逻辑思路。良好的程序设计风格是程序质量的重要保证,因为良好的程序设计风格使程序结构清晰合理,便于阅读和维护,提高软件的开发效率。2023/7/26361.2程序设计语言
程序设计语言(ProgrammingLanguage)就是计算机所能识别的代码,计算机代码通常要能够向计算机描述清楚做什么,用什么做这两个问题,因此计算机代码的一般形式是:操作码
目的操作数
源操作数2023/7/26371.2程序设计语言
程序设计语言按照语言级别可以分为低级程序设计语言和高级程序设计语言。低级程序设计语言提供的语句是计算机所能进行的基本操作,如:数据传送指令,算术运算指令,逻辑运算指令等。高级程序设计语言是接近于自然语言或数学语言的计算机语言。高级语言不再面向机器,而是面向解题的过程,因而又称为算法语言或称为过程语言。
2023/7/26381.2程序设计语言对于计算机本身来说,它并不能直接识别由高级语言编写的程序,它只能接收和处理由0和1的代码构成的二进制指令或数据,这种形式的指令是面向机器的,因此也称为“机器语言”。计算机所能直接接受的是二进制信息,利用高级语言编写的程序,应转变为机器代码,才能在计算机上运行。2023/7/26391.2程序设计语言利用高级语言编写程序的过程是:借助每种语言提供的各自的编辑软件生成各自的高级语言源程序,利用各自的翻译程序(编译或解释程序)将高级语言源程序自动翻译成目标程序(.obj文件),再将目标程序与高级语言提供的各种库函数进行连接,生成一个可执行文件(.exe文件)。2023/7/26401.2程序设计语言利用高级语言编写程序的过程可以用图1-12表示。图1-122023/7/26411.3C语言概述
1.3.1C语言的发展过程1.3.2C语言的特点返回2023/7/26421.3.1C语言的发展过程
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL语言(算法语言)。1972年,贝尔实验室的DennisRitchie对B语言进行了扩充和完善,并取BCPL的第二个字母C作为新语言的名称,这就是C语言。1983年,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准,称之为ANSIC。
2023/7/26431.3.1C语言的发展过程为了对C语言先有一个直观的了解,来看几个简单的C程序例子。【例1-11】编写一个C语言程序,在屏幕上显示一行字符“Youarewelcome!”.main(){printf("Youarewelcome!\n");}运行结果:Youarewelcome!2023/7/26441.3.1C语言的发展过程【例1-12】编程实现从键盘输入两个整数,求和并将其结果显示在屏幕上。#include<stdio.h>main(){inta,b,c;scanf("%d,%d",&a,&b);c=a+b;printf("Thesumis%d",c);}程序运行情况如下:5,10↙Thesumis15
2023/7/26451.3.1C语言的发展过程C源程序的结构特点:(1)C程序是由函数构成的。一个C源程序至少有且只能有一个main函数(即主函数),可以包含若干个其他函数。因此,函数是C程序的基本单位。(2)函数由函数首部和函数体两部分组成。函数的第一行是函数首部,包含函数类型、函数名、函数参数等。函数体是由一对花括号“{}”括起来的语句集合,函数体中一般包含变量声明和执行语句。2023/7/26461.3.1C语言的发展过程(3)C程序的函数可以是用户自定义的函数,也可以是系统提供的标准函数(如printf函数、math函数等)。(4)在C程序中,main函数可以放在程序最前,也可以放在程序最后。不论main函数在整个程序中的位置如何,C程序总是从main函数开始执行。(5)C程序中的每一个变量声明和语句都必须以分号结束,分号是C语句的必要组成部分。(6)C语言本身没有输入输出语句,输入和输出的操作是由库函数scanf和printf等函数来完成的。2023/7/26471.3.1C语言的发展过程(7)C程序书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上,C程序没有行号。(8)C语言用“/*……*/”对程序进行注释,注释可以出现在程序中任意合适的位置,它对程序的运行不起作用。一个好的C程序应有必要的注释,以便阅读。2023/7/26481.3.1C语言的发展过程书写C程序时应遵循以下规则:
(1)一个说明或一个语句最好独占一行。(2)用“{}”括起来的部分,通常表示程序的某一种层次结构,“{}”一般与该结构语句的第一个字母对齐,并独占一行。(3)低一层次的语句或说明可比高一层次的语句或说明缩进若干空格后书写,以提高程序的可读性。(4)为源程序添加注释部分,以增加程序的可读性。2023/7/26491.3.2C语言的特点
C语言主要具有下列特点:(1)C语言简洁、紧凑,使用方便。C语言一共有32个关键字(请见附录Ⅲ),9种控制语句,程序书写自由。(2)运算功能丰富。C语言不仅提供了34种运算符(请见附录Ⅱ),还提供了强大的库函数(见附录Ⅳ),从而使C语言的运算类型极为丰富。2023/7/26501.3.2C语言的特点(3)数据结构丰富。C语言具有现代化语言的各种数据结构,C语言的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据结构运算。(4)C语言具有结构化的特点。以函数为单位,通过结构化的控制语句(如if…else语句、switch语句、for语句、while语句等),实现了程序的模块化。(5)语法规则相对宽松,程序设计自由度大。2023/7/26511.3.2C语言的特点(6)生成目标代码质量高,程序执行效率高。(7)C语言允许直接访问物理地址,能进行位操作等,具有汇编语言的大部分功能。(8)可移植性好。基本上不做修改就能用于各种型号的计算机和各种操作系统。2023/7/26521.4C程序开发环境与程序调试对C程序进行编译的系统比较多,大多数C编译系统都是集成环境,即把编辑、编译、连接和运行等操作全部集成在一个界面中进行。常用的有TurboC2.0、TurboC++3.0、VisualC++等。由于TurboC2.0是用于DOS环境的,在进入TurboC2.0环境后,不能用鼠标操作,主要用键盘操作,所以,目前用的比较少。2023/7/26531.4.1TurboC++3.0集成开发环境
TurboC++3.0是美国Borland公司为C++程序的编辑、编译、连接和运行而研制的集成开发环境,由于C++是从C语言发展而来的,C++对C程序是兼容的,因此可以用C++的编译系统对C程序进行编译。TurboC++3.0是DOS环境下的集成环境,但是可以把启动TurboC++3.0集成环境的DOS执行文件“tc.exe”生成快捷方式,并以图标的形式放在Windows桌面上,只要双击该图标,就能进入TurboC++3.0环境,并能用鼠标操作菜单。2023/7/26541.4.1TurboC++3.0集成开发环境1.打开TurboC++3.0集成环境在Windows环境下,安装TurboC++3.0时会在桌面上生成一个快捷方式图标,双击该图标即可进入TurboC++3.0集成开发环境。TurboC++3.0集成环境如下图所示。请进入TurboC++3.0集成环境对其进行介绍2023/7/26551.4.1TurboC++3.0集成开发环境
2.编辑源文件单击“File”→“New”菜单命令,新建一个C源程序,在集成环境的上部出现了编辑窗口,供用户输入C源程序。如果想对已经保存过的C源程序文件进行修改,单击“File”菜单项,从其下拉菜单中选择“Open”菜单命令,在Name下面输入文件所在的文件路径和文件名,然后单击【Open】按钮,系统将把指定的C源程序调入内存并显示在编辑窗口中。可以对打开的源文件进行插入、删除或修改,直到满意为止。2023/7/26561.4.1TurboC++3.0集成开发环境3.保存源文件对C程序完成编辑之后,应该保存它。如果需要保存的C源文件是新创建的,选择“File”下拉菜单中的“Save”菜单命令,弹出“Save”对话框,在“Save”下方的输入框中,输入文件的保存路径和文件名,然后单击【OK】按钮。2023/7/26571.4.1TurboC++3.0集成开发环境需要说明的是,保存源文件时文件没有加后缀,系统会认为其是C++程序,将自动加上后缀“.cpp”。所以,保存C源程序时需要加上后缀“.c”,在编译时系统能识别并编译以“.c”为后缀的C程序。2023/7/26581.4.1TurboC++3.0集成开发环境4.编译源程序编写好一个C源程序后,系统需要对程序进行编译,生成“.obj”目标文件。选择“Compile”→“Compile”菜单命名,或者按下<Alt+F9>组合键,会在屏幕上出现一个编译消息框,显示出编译的信息。如果源程序有语法错误,系统将在编译消息框中显示出错信息,用户根据信息对程序进行修改,然后再进行编译,直到不再出现错误或警告信息为止。按下任意键消息框消失。2023/7/26591.4.1TurboC++3.0集成开发环境5.连接生成可执行文件C源程序经过编译后生成目标代码文件,其后缀为“.obj”,需要让其和系统提供的函数库连接成为一个整体,生成可执行文件,其后缀名为“.exe”。方法是选择“Compile”→“Line”菜单命令,或按下<F9>键。直接按下<F9>键,系统会把编译和连接合为一个步骤来进行。2023/7/26601.4.1TurboC++3.0集成开发环境6.执行C源程序文件选择“Run”→“Run”菜单命名,或按下<Ctrl+F9>组合键,系统会执行已经编译和连接好的可执行文件。若程序需要输入数据,屏幕会切换到运行窗口。输入数据后,将把执行结果输出在运行窗口中。为了查看程序的运行结果,按下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年04月上海中国建设银行上海市分行春季校园招考笔试历年参考题库附带答案详解
- 2024年03月重庆银行合川支行招考大堂经理岗人员笔试历年参考题库附带答案详解
- 2024年中国设备人孔市场调查研究报告
- 2024年03月海南旅投股权投资基金管理有限公司2024年招考3名工作人员笔试历年参考题库附带答案详解
- 2024年03月江苏溧水农村商业银行2024年度春季校园招考12名工作人员笔试历年参考题库附带答案详解
- 2024年03月徽商银行芜湖分行招考笔试历年参考题库附带答案详解
- 2024年离婚双方协商一致协议书
- 2024年03月中国邮政储蓄银行总行招考信息科技工作人员笔试历年参考题库附带答案详解
- 四川2025年应急管理部四川消防研究所招聘博士11人笔试历年典型考点(频考版试卷)附带答案详解
- 四川2024年四川幼儿师范高等专科学校引进高层次人才12人笔试历年典型考点(频考版试卷)附带答案详解
- 内审和管理评审培训课件
- 2024年湖北省公务员录用考试《行测》真题及答案解析
- 自然辩证法习题及答案
- 特色农产品超市方案
- 2024国有企业与民营企业之间的混合所有制改革合同
- 二次函数的几何性质(于特)(1)名师公开课获奖课件百校联赛一等奖课件
- GB/T 30595-2024建筑保温用挤塑聚苯板(XPS)系统材料
- 2024年人教版八年级地理上册期末考试卷(附答案)
- 医学免疫学-医学检验专业学习通超星期末考试答案章节答案2024年
- 《稻草人》阅读题及答案
- 独立基础土方开挖施工方案
评论
0/150
提交评论