C语言程序设计项目教程PPT课件下载推荐.ppt
《C语言程序设计项目教程PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计项目教程PPT课件下载推荐.ppt(50页珍藏版)》请在冰豆网上搜索。
用汇编语言编程,程序的生产效率及质量都有所提高。
但是汇编语言指令是机器不能直接识别、理解和执行的。
用它编写的程序经检查无误后,要先翻译成机器语言程序才能被机器理解、执行。
这个翻译转换过程称为“汇编”。
汇编后得到的机器语言程序称为目标程序(objectprogram),汇编以前的程序,称为源程序(sourceprogram)。
由于汇编语言指令与机器语言指令基本上具有一一对应的关系,所以汇编语言源程序的汇编可以由汇编系统以查表的方式进行。
汇编语言与机器语言,都是依CPU的不同而异,它们都称为面向机器的语言。
用面向机器的语言编程,可以编出效率极高的程序。
但是程序员用它们编程时,不仅要考虑解题思路,还要熟悉机器的内部结构,并且要“手工”地进行存储器分配。
2.高级语言高级语言使用接近人类自然语言的、但又消除了自然语言中的二义性的语言来描述程序。
这些高级语言使人们开始摆脱进行程序设计必须先熟悉机器的桎梏,把精力集中于解题思路和方法上。
用高级语言编写的程序称为“源程序”。
通常有解释方式和编译方式两种方法在计算机上执行源程序。
解释方式,即让计算机运行解释程序,解释程序逐句取出源程序中的语句,对它作解释执行,输入数据,产生结果。
其优点是计算机与人的交互性好,调试程序时,能一边执行一边直接改错,能较快得到一个正确的程序。
缺点是逐句解释执行,运行速度慢。
编译方式,即先运行编译程序,从源程序一次翻译产生计算机可直接执行的二进制程序(称为目标程序);
然后让计算机执行目标程序,输入数据,产生结果。
其优点是计算机运行目标程序快,缺点是修改源程序后必须重新编译以产生新的目标程序。
现在也有将上述两种方式结合起来的,即先编译源程序,产生计算机还是不能直接执行的中间代码,然后让解释程序解释执行中间代码。
如Java程序,这样做的好处首先是比直接解释执行快;
更大的好处是中间代码独立于计算机,只要有相应的解释程序,就可在任何计算机上运行。
1.2.2高级语言程序的开发过程1.分析问题、建立模型一般来说,一个具体的问题要涉及许许多多的方面,这是问题的复杂性所在。
为了便于求解,往往要忽略一些次要方面。
这种通过忽略次要方面,而找出解题规律,就称为建立模型。
2.表现模型表现模型就是用一种符号-语言系统来描述模型。
模型的表现会随着对问题抽象程度的加深和细化,不断由领域特色向计算机可解释、执行靠近,中间也可能采用一些其他的符号系统,如流程图等,直到最后用一种计算机程序设计语言描述出来。
3.源程序的编写源程序的编辑就是在某种字处理环境下,用具体的程序设计语言书写并修改的过程。
为此就要掌握一种计算机程序设计语言。
4.程序的编译与链接写出一个高级语言程序后,并不是就可以立即拿来执行。
要让机器直接执行,还要将它翻译成由机器可以直接辨认并可以执行的机器语言程序。
第1步:
将源程序文件翻译成0、1码表示的信息,并用相应的目标程序文件保存。
由源文件翻译成目标文件的过程称为编译。
在编译过程中,还要对源程序中的语法和逻辑结构进行检查。
编译任务是由称做编译器(compiler)的软件完成的。
目标程序文件还不能被执行,它们只是一些目标程序模块。
第2步:
将目标程序模块以及程序所需的系统中固有的目标程序模块(如执行输入输出操作的模块)链接成一个完整的程序。
经正确链接所生成的文件才是可执行文件。
完成链接过程的软件称为链接器(linker)。
程序在编译、链接过程中,也可能发现错误。
这时要重新进入编辑器进行编辑。
5.程序的测试与调试经编译、链接的程序文件,生成可执行文件,就可以让计算机执行了。
因此,每一个人编写出一个程序后,在正式交付使用前,总要测试一下。
测试是以程序通过编译、没有语法和链接上的错误为前提,目的是找出程序中可能存在的错误并加以改正。
1.2.3C语言的标准C语言在1978年由美国电话电报公司(AT&
T)贝尔实验室正式发表。
由美国国家标准学会(ANSI)在制定了一个C语言标准,于1989年发表,通常称之为ANSIC(简称“C89”)。
国际化标准组织在1990年制定的C标准,通常称为“C90”。
从1995年开始,国际化标准组织着手对C标准作全面的修订,并于1999年形成正式的C语言标准,简称“C99”。
1.2.4C语言的特点既有高级语言的程序思想与设计方法,又有低级语言的操作能力。
所以它也被称为“中级语言”;
结构化的体系结构。
层次清晰,便于按模块化方式组织程序,易于调试和维护;
处理能力上,不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。
可以直接访问内存的物理地址。
在可移植性上可以方便地移植到不同的软、硬件环境中代码效率高。
1.2.5使用MicrosoftVisualC+6.0开发C语言程序启动MicrosoftVisualC+6.0。
新建项目。
新建文件。
编辑程序。
编译并运行程序。
1.3扩展知识与理论,1.3.1函数C语言程序的部件是函数。
例1.1一个输出一串字符的C程序。
#includeintmain(void)printf(Hello,World!
n);
/*输出一串字符*/return0;
1.主函数这里是一个函数。
这个函数的名字为“main”。
这个名字是专用的,表示这个函数是“主函数”。
所谓主函数,就是执行这个程序时,由操作系统直接调用的函数。
每一个C语言程序必须也只能有一个主函数。
intmain(void),2.函数参数函数名后面的圆括号用于表示参数。
一般说来,用函数进行计算,需要给定参数。
在C语言程序中,参数部分写为“void”,表示该函数没有参数,只执行一个过程。
3.函数体一对花括号中的部分称为函数体,用来表明该函数的功能是如何实现的。
通常,函数体用一些语句表述。
C语言规定语句必须用分号结束。
4.函数值的类型函数名前面的“int”表明函数的返回值是一个整数。
有的操作系统(如Unix)要求在执行一个程序后应向系统返回一个整数值,如程序正常执行和结束,应返回0,否则返回一个非0值。
因此,需要将main函数指定为int(整型),同时在函数体的最后写一返回语句:
return0;
它的功能是向调用者(操作系统)返回0值,表示主函数正常结束(也就是程序正常结束)。
此语句必须写在函数体的最后一行才有意义,因为只要执行到这条语句,就表达程序正常结束,向操作系统返回一个0,如果程序未执行到这个返回语句就非正常结束了,就不会向操作系统返回0。
操作系统会据此作出相应的处理。
有的操作系统(如DOS,Windows)并无程序必须返回整数的要求,因此,可以不指定main函数为整型。
这时可在main函数的前面加上void,如voidmain(void)或voidmain(),5.与处理命令#include是一种在程序编译之前要处理的内容,称为编译预处理命令。
编译预处理命令都用“#”开头,并且不用分号结束,所以不是C语言的语句。
这里的编译预处理命令称为文件包含命令,它的作用是在编译之前把程序中需要使用关于系统定义的函数printf()的一些信息文件stdio.h包含进来。
用“.h”作为后缀的文件称为头文件。
6.程序注释“/*/”中的文字用于做一些说明或注释,让读程序的人容易读懂。
例1-2求阶乘f(n)=n!
#includeintf(int);
/*声明将要使用的函数f()*/intmain(void)intp;
/*声明将要使用的变量p是整型的*/p=f(5);
/*调用f()进行计算,并将结果赋给变量p*/printf(“5!
=%d”,p);
/*输出变量p*/return0;
intf(intn)/*函数fb()的定义*/inti,j;
/*定义变量i,j*/j=1;
for(i=1;
i=n;
i+)/*计算n!
*/j=j*i;
returnj;
/*返回n!
的值*/,说明
(1)图1-3表明了该程序的执行过程。
图1-3程序的执行过程,7.变量及其类型本例中的p、i、j都称为变量。
变量是程序中被命名的数据实体,并且它的值是可以改变的。
同时,为了便于计算与存储,C语言中程序中所使用的每个数据都被规范化了。
这种数据的规范称为数据类型。
本例中使用语句intp;
和inti,j;
的作用就是声明了两个变量p和i,j名字和类型(用“int”表明它们是整型数据)。
变量在使用之前都要先行声明。
8.函数的声明本例中的intf(int,int);
称为函数声明。
函数声明的作用是让编译器知道该函数的原型(包括返回类型、参数个数和类型,以便对调用语句进行语法检查。
如果定义在调用前,从定义可以直接获得这些信息,就可以不写声明。
对于编译系统提供的库函数,它们的定义不在程序中,因此需要给出相应的原型声明。
为了方便使用,系统把某些类型的库函数的原型声明写在某个头文件中,程序员只要把要求的头文件用文件包含语句写在程序中函数调用之前,就等于把原型声明写在了函数调用之前。
这就是使用函数printf(),必须在其前写一条#include的原因。
9.关于printf()函数的参数printf()函数的参数有两部分:
前面的用双引号引起的部分称为“控制串”。
控制串由一些字符组成,这些字符可以分成两类:
第一类字符可以直接显示出来,第二类字符作为格式说明符使用。
或者说,除了格式说明符之外的字符,都是可以直接显示的。
格式说明符是由“%”开头,后面跟着的是格式码。
本例中的“d”就是格式码,它后面输出的数据按照带符号十进制输出。
10.关于赋值运算在C语言中,符号“=”称为赋值运算符,它的作用是把后面(右面)的值,送到其前(左面)的变量(左值)中。
一定不要将其当作是等号。
在C语言中,等号是“=”。
例1-3计算一个数的余弦值的C语言程序。
#include/*包含标准库函数*/#include/*包含数学库函数*/intmain(void)/*主函数*/*函数开头*/doublex,s;
/*定义两个实型变量,被后面程序使用*/printf(inputnumber:
/*显示提示信息*/scanf(%lf,/*函数结尾*/,11.C语言源程序的书写要求源程序通常使用小写字母,只有符号常量或其它特殊用途的符号才大写;
不使用行号,通常按语句