资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第1章 C语言及程序设计方法,1.1 C语言发展简史 1.2 C语言程序的基本结构 1.3 C语言程序的编辑及运行 本章小结,1.1 C语言发展简史,计算机语言是面向计算机的人工语言,是进行程序设计的工具,因此也称程序设计语言。程序设计语言可以分为机器语言、汇编语言、高级语言。高级语言中一种是面向问题的程序设计语言,它要对具体的算法和过程进行描述,也可以称为面向过程的算法语言,例如FORTRAN语言、PASCAL语言和C语言等。另一种属于人工智能语言,如PROLOG语言。还有一种是当前流行的面向对象的程序设计语言,例如C+、Java等,它们都是以C语言为基础的,学了C语言再学习C+等语言就方便多了。,计算机能直接执行的是机器语言程序。汇编语言也称符号语言,用汇编语言编写的程序称汇编语言程序。计算机不能识别和直接运行汇编语言程序,必须由汇编程序翻译成机器语言程序后才能识别和运行。同样,高级语言程序也不能被计算机直接识别和执行,也必须把高级语言程序翻译成机器语言程序才能执行。语言处理程序就是完成这个翻译过程的,按照处理方式的不同,分为解释型程序和编译型程序两大类。C语言采用编译程序,把源程序编译成目标程序,再通过连接程序的连接,生成可执行程序才能运行。具体过程将在上机操作中详细说明。,C语言是当前广为流行的程序设计语言,它适合于编写系统软件,也可以编写应用软件。 以前的操作系统等系统软件主要是用汇编语言编写的(包括UNIX操作系统在内)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。为了提高可读性和可移植性,最好使用高级语言,但一般的高级语言难以实现对计算机硬件的直接操作,例如对内存地址的操作、位操作等,于是人们期望找到一种既具有高级语言特性,又具有汇编语言特性的新语言。C语言就是在这种情况下应运而生的。,C语言之所以能存在、发展并具有强大生命力是因为它有如下特点: (1) 简洁、紧凑,使用方便、灵活。C语言一共只有32个关键字,9条控制语句,而且有功能很强、非常丰富的运算符(34种)。例如自增(+)、自减(-)运算符,复合赋值运算符,条件运算符,并且把括号、赋值、强制类型转换等都作为运算符处理 (2) 表达能力强。它可以直接访问地址,能进行位(bit)操作,直接操纵硬件,完成通常由硬件实现的普通的算术运算、逻辑运算, (3)数据结构丰富。C语言的数据类型包括整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型、枚举类型等 (4)模块化结构。C语言具有结构化的控制语句(如分支、循环)。以函数作为程序的模块单位,便于程序的分别编写、分别调试,加快软件的开发过程,是理想的结构化语言。 (5)可移植性好。所谓可移植性是指一个程序可以不加修改或稍加修改就能在不同的机器或不同操作系统环境下运行。C语言程序具有很好的可移植性。 (6)C语言语法限制不太严格,书写格式比较自由。 (7)生成目标代码质量高,程序执行效率高。它生成的目标代码效率一般只比汇编语言低10%-20%。,C语言有众多的优点,当然也存在一定的不足,主要是: (1)C语言的类型比较弱,类型转换比较随便。 (2)没有动态数组界限检查。 (3)允许编译程序在表达式中重新安排计算顺序和参数表,容易产生副作用。C语言灵活性高、限制少、功能强的特点对程序员的要求更高,初学者会感到一定困难,但是只要认真掌握它的实质,多读程序,多动手编程序,多上机调试程序,注意总结学习中的经验和体会,是一定可以学好的。,1.2 C语言程序的基本结构,要完成一项任务,必须通过一系列的操作过程。按一定顺序 安排的工作操作序列,称为程序。程序用来描述完成某项功 能所涉及的对象和动作规则。计算机程序就是要计算机完成某项 功能所涉及的对象和动作规则,即由计算机进行解释和执行的指 令和数据。人类和计算机交流要通过计算机语言实现。和人类社会中有 汉语、英语、法语、日语、俄语等语言交流工具一样,每种语言 都有它的语法规则。计算机程序设计语言有上千种,语法规则各 不相同,语言程序就是按照语言所规定的语法规则和它所涉 及的数据编写的程序。,1.2.1 C语言程序的基本结构C语言程序由一个或多个函数组成,有且仅有一个主函数main,C语言的执行总是从主函数开始. C语言是结构化程序设计语言。结构化程序设计强调程序设计风格和程序结构的规范化。提倡清晰的结构,即顺序、分支和循环三种基本结构。对C语言程序有一个总体概念,先看下面几个简单例题。这几个例题暂时不要求深刻理解,在以后学到有关章节时,问题自然迎刃而解。在此只要求对C语言程序的组成和形式有一个初步了解,一开始就对C语言程序的语法规则有清楚的认识。,例.在屏幕上输出一行信息:I am a boy./* 在屏幕上输出信息:I am a boy. */ #include Void main( ) printf(”I am a boy.n”); ,我们来说明一下: 这是由一个函数(主函数main)构成的C程序,运行后输出一个字符串。第一句: /* 注释内容 */ 是注释语句,用来说明程序功能信息,不参加程序编译,所以,注释内容的正确与错误和程序执行无关。第二句:#include 是预处理,包含程序与系统关系。第三句:main() 是主函数。 主函数的名字是main,不能人为改变。第四句:printf()是一个输出函数。由系统提供的。注意:此函数内的双引号是西文双撇号“ “ ”。而且,C语言每一个语句用西文分号“;”结束 。,例1-2: 设a=10,b=20,c=30,计算sum=a+b+c。 #include void main( ) int a,b,c,sum; /* 定义整型变量a,b,c,sum */a=10;b=20;c=30; /* 三个语句,分别给a,b,c赋值 */sum=a+b+c; /* 用赋值运算符“=”求和 */printf(”sum=%dn”,sum); /* %d要求后面变量sum值按照十进制输出 */ 运行程序后输出:sum=60此程序也可以写成如下形式:#include void main( ) int a=10,b=20,c=30 ; /* 定义整型变量a,b,c的同时赋值 */printf(”sum=%dn”,a+b+c); /* “ n”的作用是回车换行 */,这两个程序相同之处在于:第一,都是由一个主函数main完成的;第二,都对a,b,c 的数据类型进行了说明(int整型),并分别赋了初值10,20,30。两个程序的不同之处是:第一,第一个程序在说明a,b,c的数据类型之后单独赋值,第二个程序在说明a,b,c的类型同时赋值。第二,第一个程序说明了sum的类型,计算a+b+c的值后赋给sum,调用printf函数输出sum的值;第二个程序没有单独计算a+b+c 而是在调用printf函数时直接输出a+b+c的值。如果第一个程序中不说明sum的类型,编译时就会出现错误信息:“Undefined symbol sum in function main”(主函数中符号sum 没有定义) 由此可见,解决同一个问题可以采用不同的方法编写程序。,程序运行情况:Input a,b:3,8max=8,主函数的位置对程序有影响吗? 例1-3输入两个整型数,输出其中的大数。 #include void main( ) int a,b,s; /*定义整型变量a,b,s*/printf(”Input a,b:n”); /*屏幕显示Input a,b:*/scanf(”%d,%d”,&a,&b); /*从键盘上输入a和b的值*/s=max(a,b); /*调用max 函数,实参为a,b,*/*转到max 函数*/printf(”max=%dn”,s); /*输出a,b中的大数c*/ int max(int x,int y) /*定义被调用函数max*/ int z; /*定义变量z*/if(xy) /*根据条件判断, 如果xy为真*/z=x; /*把x的值赋给z*/else /* 否则 */z=y; /* 把y的值赋给z */ return(z); /* 把z的值返回主函数赋给c */ ,如果将例1-3写成如下形式:主函数main放在程序后面。 #include int max(int x,int y) /*定义被调用函数max*/ int z; /*定义变量z*/if(xy) /*根据条件判断, 如果xy为真*/z=x; /*把x的值赋给z*/else /* 否则 */z=y; /* 把y的值赋给z */ return(z); /* 把z的值返回主函数赋给c */ void main( ) int a,b,s; /*定义整型变量a,b,s*/printf(”Input a,b:n”); /*屏幕显示Input a,b:*/scanf(”%d,%d”,&a,&b); /*从键盘上输入a和b的值*/s=max(a,b); /*调用max 函数,实参为a,b,*/*转到max 函数*/printf(”max=%dn”,s); /*输出a,b中的大数c*/ 结果相同。,1.2.2 C语言程序设计书写格式 编辑好的C语言程序文件叫源程序文件,源程序文件以 .C作为扩展名(后缀),例如exam1.c, exam2.c等,一个C程序可以由多个源程序文件组成。一个程序中除了一个取名为main的主函数,其余函数可以取任何有意义的名字,由编程者自定义。 C语言源程序文件由函数组成,那我们先了解一下函数的书写。1函数 函数是C程序的基本组成单位,任何函数(包括主函数main)都由函数首部和函数体两部分组成。 (1)函数的首部,即函数的第一行,对函数进行说明,包括函数类型(可缺省)、函数名、函数参数表(形参表)。 数据类型 函数名(数据类型 参数,数据类型 参数2) 例如: int max ( int x, int y ),(2) 函数体 函数首部之后的第一个大括号和与之配对的大括号之间部分为函数体(大括号必须配对使用,如果一个函数内有多对大括号,则最外面的一对大括号是函数体的范围)。 函数体一般由说明部分和可执行语句构成。 说明部分主要是定义变量和自定义类型以及对自定义函数、外部变量等进行说明。例如,例1-3中主函数main函数体里的“int a, b, s;”定义了三个整型变量a,b,s。 可执行语句部分一般由若干条可执行语句构成。例如,在例1-3的main函数体中,说明部分后面的四个语句构成该函数的可执行语句部分。,有关函数的详细内容将在第5章介绍。在此,有几点重要提示需要说明: 函数体中的说明部分必须在所有可执行语句之前,即说明部分不能和可执行语句交织在一起。例如下面的程序在编译时就会出现错误: void main( ) int a,b;scanf(”%d%d”,&a,&b);int c;c=a+b;printf”c=%dn”,c);出错的原因很简单,函数体内的说明部分“int c;”在可执行语句“scanf (”%d%d”, &a, &b);”之后。可以有空函数。即函数体为空,没有任何语句,但函数名和后面的一对大括号不能缺少。例如:void main( ) 是一个空函数,它是一个合法的函数。,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号