C 语 言 程 序 设 计 王曙燕 主 编 曹 锰 副主编 王小银负责ppt的制作 2005.2
C语言程序设计 第一章 C语言概述 第一章 C语言概述 C语言发展历史 C语言特点 C程序格式和结构特点 C程序上机步骤
1.1 C语言发展历史 程序设计语言的发展 程序设计是数据被加工的过程 机器语言 汇编语言 高级语言 面向过程 面向对象 冯.诺依曼结构: C语言程序设计 第一章 C语言概述 1.1 C语言发展历史 程序设计语言的发展 程序设计是数据被加工的过程 机器语言 汇编语言 高级语言 面向过程 面向对象 冯.诺依曼结构: 计算机 运算器 控制器 存储器 主机: I/O设备:键盘、显示器等 中央处理器CPU 面向机器的语言 1946年,第一台电子计算机问世,应用领域迅速扩大,软硬件飞速发展,程序设计语言相继问世。 程序设计语言:将自然语言形式化为有格式的语言 1。机器语言: 计算机能够认识的语言 计算机的基础是数字电路 机器语言就是数字电路里的电信号 将在《计算机组成》课程中学习 都是二进制文件 一条机器语言成为一条指令 指令是不可分割的最小功能单元 定义:一种CPU的指令系统,由该CPU可识别的0、1序列构成的指令码组成。 特点: 执行效率高 不直观,不易查错,生产效率低。 2。汇编语言 定义:用助记符号描述的指令系统 生产效率高,质量好,执行效率较高; 要经汇编程序汇编成目标程序(机器语言)才能执行,依赖硬件。 (面向机器的语言----依CPU不同而异) 3。高级语言 编程效率高,不必考虑硬件; 执行效率低,要经编译、连接后才能执行。 面向过程的程序设计语言 认为解题过程是数据被加工的过程 程序=数据结构+算法 C语言是面向过程的高级语言 面向对象的程序设计语言 一种结构模拟方法。认为:现实世界由对象组成,对象是数据和方法的封装体;客观世界可以分类,每个对象是类的一个实例。 特点:比面向过程的语言更清晰、易懂,适宜编更大规模程序,是程序设计的主流 程序设计语言基本成分: 。数据成分 。运算成分 。控制成分 。传输成分 程序设计语言定义:用于书写计算机程序的语言。通常指实现高级语言。 语言的基础是一组记号与一组规则。 程序设计语言包括: 语法:记号的组合规则 语义:记号的特定意义 语用:程序与使用者的关系 CPU指令系统,由0、1序列构成的指令码组成 如:10000000 加 10010000 减 客观世界可以分类,对象是类的实例 对象是数据和方法的封装 对象间通过发送和接受消息发生联系 用助记符号描述的指令系统 如 ADD A, B 程序设计关键是定义类,并由类派生对象
52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 Ada Modula-2 Pascal ALGOL60 ALGOL68 CPL BCPL B C C++ Smalltalk 80 Java Simula 67 QBASIC VB BASIC ANSI-BASIC FORTRAN90 FORTRAN FORTRAN77 PL/1 COBOL LISP PROLOG
C语言发展过程 产生背景 产生过程 C标准 时间:1972~1973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie C标准 标准C: K&R合著《The C Programming Language》 ANSI C: 1983年 87 ANSI C: 1987年 1990年国际标准的ANSI C
1.2 C语言特点 语言简洁、紧凑、灵活 运算符和数据类型丰富 程序设计结构化、模块化 生成目标代码质量高 可移植性好 中级语言 > C语言程序设计 第一章 C语言概述 中级语言 1.2 C语言特点 语言简洁、紧凑、灵活 运算符和数据类型丰富 程序设计结构化、模块化 生成目标代码质量高 可移植性好 > > > > > >
32个关键字:(由系统定义,不能重作其它定义) auto break case char const C语言程序设计 第一章 C语言概述 32个关键字:(由系统定义,不能重作其它定义) auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigned union void volatile while
9种控制语句: if( )~else~ for( )~ while( )~ do~while( ) continue break C语言程序设计 第一章 C语言概述 9种控制语句: if( )~else~ for( )~ while( )~ do~while( ) continue break switch goto return
C语言程序设计 第一章 C语言概述 例 C语言与Pascal语言比较 C语言 Pascal语言 含义 { } BEGIN….END 复合语句 if(e) s; IF(e) THEN s 条件语句 int i ; VAR i:INTEGER 定义i为整型变量 int a[10]; VAR a:ARRAY[1..10] OF INTEGER 定义整型数组a int f(); FUNCTION f():INTEGER 定义f为返值整型的函数 int *p; VAR p:INTEGER 定义p为指向整型变量的指针 i+= 2; i=i+2 赋值i+2i i++,++i; i=i+1 i自增值 结论:C比 Pascal简练,源程序短。
34种运算符: 算术运算符:+ - * / % ++ -- 关系运算符:< <= == > >= != C语言程序设计 第一章 C语言概述 34种运算符: 算术运算符:+ - * / % ++ -- 关系运算符:< <= == > >= != 逻辑运算符:! && || 位运算符 :<< >> ~ | ^ & 赋值运算符:= 及其扩展 条件运算符:?: 逗号运算符:, 指针运算符:* & 求字节数 :sizeof 强制类型转换:(类型) 分量运算符:. -> 下标运算符:[] 其它 :( ) -
C 数 据 类 型 基本类型 构造类型 指针类型 空类型void 定义类型typedef 数值类型 字符类型char 枚举类型enum C语言程序设计 第一章 C语言概述 C 数 据 类 型 基本类型 构造类型 指针类型 空类型void 定义类型typedef 数值类型 字符类型char 枚举类型enum 整 型 浮点型 单精度型float 双精度型double 短整型short 长整型long 整型int 数组 结构体struct 共用体union
1.3 C程序格式和结构特点 例1.1 第一个程序 Hello,World! 注释 C语言程序设计 第一章 C语言概述 1.3 C程序格式和结构特点 例1.1 第一个程序 Hello,World! /* example1.1 The first C Program*/ #include <stdio.h> main() { printf(“Hello,World!”); } 注释 编译预处理 函数 语句 输出: Hello,World!
/* example1.1 calculate the sum of a and b*/ #include <stdio.h> C语言程序设计 第一章 C语言概述 /* example1.1 calculate the sum of a and b*/ #include <stdio.h> /* This is the main program */ main() { int a,b,sum; a=10; b=24; sum=add(a,b); printf(”sum= %d\n",sum); } /* This function calculates the sum of x and y */ int add(int x,int y) { int z; z=x+y; return(z); 例1.2 预处理命令 注释 函数 语句 运行结果: sum=34
格式特点 优秀程序员的素质之一: 习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 main( ) 常用锯齿形书写格式 C语言程序设计 第一章 C语言概述 格式特点 习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式 main( ) { int i , j , sum; sum=0; for(i=1; i<10;i++) for(j=1;j<10;j++) sum+=i*j ; } printf(“%d\n”,sum); main( ) { ………………. ……………… ………….. ……… ………. …………… ……………. ………………. ……………….. } 优秀程序员的素质之一: 使用TAB缩进 {}对齐 有足够的注释 有合适的空行
结构特点 函数与主函数 程序语句 注释 非法 例: /*This is the main /* of example1.1*/ */ C语言程序设计 第一章 C语言概述 结构特点 函数与主函数 程序由一个或多个函数组成 必须有且只能有一个主函数main() 程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。 程序语句 C程序由语句组成 用“;”作为语句终止符 注释 /* */为注释,不能嵌套 不产生编译代码 非法 例: /*This is the main /* of example1.1*/ */ 编译预处理命令