第一章 C语言概述
本章要求:
(1)C语句概述;
(2)程序的三种基本结构;
(3)赋值语句;
(4)数据的输入与输出。
教学重点:
1. C语言的特点。
2. C语言的编程环境。
教学难点:
掌握编程环境的使用方法
教学方法:
采用多媒体教学的方法进行讲授,学生在教师指导下通过计算机进行操作练习。
课时数:4(讲授2节课,上机练习2节课)
1.1 C语言的发展及特点
1.1.1 C语言的发展过程
1、C语言是国际上流行的、很有发展前途的计算机高级语言。C语言适合于作为“系统描述语言”。它既可以用来编写系统软件,也可以用来编写应用程序。
以前操作系统等系统软件主要采用汇编语言编写。汇编语言依赖于计算机硬件,程序的可读性、可移植性都比较差。为了提高可读性和可移植性,人们希望采用高级语言编写这些软件,但是一般的高级语言难以实现汇编语言的某些操作,特别是针对硬件的一些操作(如:内存地址的读写-直接硬件、二进制位的操作)。人们设法寻一种既具有一般高级语言特性,又具有低级语言特性的语言,C语言就在这种情况下应运而生。
2、C语言的发展见下图:
ALGOL60 -> CPL -> BCPC -> B -> C -> 标准C -> ANSI C -> ISO C
● ALGOL60:一种面向问题的高级语言。ALGOL60离硬件较远,不适合编写系统程序。
● CPL(Combined Programming language,组合编程语言):CPL是一种在ALGOL60基础上更接近硬件的一种语言。CPL规模大,实现困难。
● BCPL(Basic Combined Programming language,基本的组合编程语言):BCPL是对CPL进行简化后的一种语言。
● B语言:是对BCPL进一步简化所得到的一种很简单接近硬件的语言。B语言取BCPL语言的第一个字母。B语言精练、接近硬件,但过于简单,数据无类型。B语言诞生后,Unix开始用B语言改写。
● C语言:是在B语言基础上增加数据类型而设计出的一种语言。C语言取BCPL的第二个字母。C语言诞生后,Unix很快用C语言改写,并被移植到其它计算机系统。
● 标准C 、ANSI C、ISO C:C语言的标准化。
注:最初Unix操作系统是采用汇编语言编写的,B语言版本的Unix是第一个用高级语言编写
的Unix。在C语言诞生后,Unix很快用C语言改写,C语言良好的可移植性很快使Unix从PDP计算机移植到其它计算机平台,随着Unix的广泛应用,C语言也得到推广。从此C语言和Unix像一对孪生兄弟,在发展中相辅相成,Unix和C很快风靡全球。
3、从C语言的发展历史可以看出,C语言是一种既具有一般高级语言特性(ALGOL60带来的高级语言特性),又具有低级语言特性(BCPL带来的接近硬件的低级语言特性)的程序设计语言。C语言从一开始就是用于编写大型、复杂系统软件的,当然C语言也可以用来编写一般的应用程序。也就是说:C语言是程序员的语言!
IBM PC微机DOS、Windows平台上常见的C语言版本有:
● Borland公司:
Turbo C,Turbo C++,Borland C++
C++ Builder(Windows版本)
● Microsoft公司:
Microsoft C
Visual C++(Windows版本)
1.1.2 C语言的特点
C语言是从“组合编程语言”CPL发展而来,C语言既具有一般高级语言特性(ALGOL60带来的高级语言特性),又具有低级语言特性(BCPL带来的接近硬件的低级语言特性)。C语言具有下面特点(其中1-6属于高级语言特性,7,8属于低级语言特性)
1、 C语言的语言成分简洁,紧凑,书写形式自由
例:将C语言程序段与实现同样功能的PASCAL语言程序段进行比较。
C语言 | PASCAL语言 | 含义 | 说明 | |
1 | {…} | BEGIN…END | 复合语句 (或:语句块) | PASCAL显得罗嗦 |
2 | if(e)S; | IF(e)THEN S; | 条件语句 | PASCAL至少多了一个THEN关键词 |
3 | int i; | VAR i:INTEGER | 定义i为整型变量 | PASCAL至少多了一个VAR关键词 |
4 | int a[10]; | VAR a:ARRAY[1..10] OF INTEGER | 定义a为整型一维数组,10个元素 | PASCAL多了VAR、ARRAY、OF等关键词 |
5 | int f(); | FUNCTION f():INTEGER | 定义f为返回值为整型的函数 | PASCAL至少多了一个FUNCTION关键词 |
6 | int *p; | VAR p:^INTEGER | 定义p为指向整型变量的指针变量 | PASCAL至少多了一个VAR关键词 |
7 | i+=2; | i:=i+2 | 赋值语句 | C中如果将一个变量与另外一个操作数运算后赋值给原来的变量,使用复合的运算符可以不要重复书写此变量。C形式上更加简洁。 |
8 | I++ | I=I+1 | I自增1 | C定义了常用的自增1、自减1运算符。形式上显得相当简洁 |
2、 C语言拥有丰富的数据类型
C语言具有整型、实型、字符型、数组类型、指针类型、结构体类型、共同体类型等数据类型。能方便地构造更加复杂的数据结构(如:使用指针构造链表、树、栈)。
3、 C语言的运算符丰富、功能更强大
例如:
(1) C语言具有复合的赋值运算符“+[-*/%]=”(加等、减等、乘等、除等) ,“>>=”“<<=”(右移等、左移等),“&[^|]=”(与等、或等、非等)。
x+=5等价于x=x+5
(2) C语言有条件运算符“?:”可代替简单的if/else语句。
如果需要表示:“如果x小于或等于0,y为0;否则y为1”可以采用:
y=x<=0?0:1;
如果用一般的程序设计语言表示就应该像下面这样表示:
if(x<=0)y=0;
else y=1;
C语言避免了一切可能的罗嗦,
(3) C语言中连赋值这种操作都定义为运算符,也就是说赋值操作本身可以作为表达式的一部分,参与运算。如:
if((p=malloc(sizeof(int)))==NULL){printf(“Error!”);exit(1);}
如果改写为一般形式:
p=malloc(sizeof(int));
if(p==NULL){printf(“Error!”);exit(1);}
又如下面算式是正确的:
x=y=z=6;
如果改写为一般形式:
z=6;y=6;x=6;
4、 C语言是结构化的程序设计语言
● C语言具有结构化的控制语句(if/else,switch/case,for,while,do…while)
● 函数是C语言程序的模块单位。
5、 C语言对语法限制不严格,程序设计灵活
C语言不检查数组下标越界,C语言不限制对各种数据转化(编译系统可能对不合适的转化进行警告,但不限制),不限制指针的使用,程序正确性由程序员保证。
实践中,C语言程序编译时会提示:“警告错”“严重错误”。警告错误表示你使用的语法可能有问题,但是你有时可以忽略,你的程序仍然可以完成编译工作,然后运行。(但是一般情
况下警告错,往往意味着程序真的有问题,你应该认真地检查)“严重错”是不能忽略的,编译系统发现严重错误,就不会产生目标代码。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论