230 likes | 361 Views
计算机程序设计. 二、 C 程序结构和设计方法. 提纲. 1 C 语言的产生和发展 2 C 语言的特点 3 C 程序的基本结构 4 程序设计的方法. 1 C 语言的产生和发展. C 语言在 1969 到 1973 年间随着 Unix 操作系统的开发而诞生并流行 . 发明者为美国贝尔实验室的 Dennis Ritchie 等人。. Dennis Ritchie. 1 C 语言的产生和发展. C 语言的标准:
E N D
计算机程序设计 二、 C程序结构和设计方法
提纲 • 1 C语言的产生和发展 • 2 C语言的特点 • 3 C程序的基本结构 • 4 程序设计的方法
1 C语言的产生和发展 • C 语言在 1969 到1973 年间随着Unix 操作系统的开发而诞生并流行.发明者为美国贝尔实验室的Dennis Ritchie等人。 Dennis Ritchie
1 C语言的产生和发展 C语言的标准: • 1978年,丹尼斯·里奇(Dennis Ritchie)和 Brian Kernighan 合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程序员称作“K&R C” • 1989年,C语言被 ANSI 标准化。后通过对ANSI标准的少量修改,最终通过了 ISO 9899:1990。 C89、C90可看作相同。 • C99。在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化创建过程中继续发展壮大。《标准修正案一》在1995年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。它通常被称为C99。
2 C语言的特点 • 语言简捷、紧凑,使用方便、灵活 • 运算符丰富,数据结构丰富 • 具有结构化的控制语句 • 语法较宽松,程序设计自由度大 • 能实现较底层的功能 • 生成目标代码质量高,程序执行效率高,程序可移植性好
3 C程序的基本结构 【例1】写第一个C程序 #include <stdio.h> /*包含一个标准I/O库*/ int main() /*定义函数main,是程序的主函数*/ /* 函数类型 函数名 (参数)*/ { /*main函数的内容用{}括起来*/ printf("Hello, World!\n"); /*调用库函数打印一行字符。printf函数的功能是把要输出的内容送到显示器去显示*/ } 运行结果:Hello, World!
3 C程序的基本结构 • 分析: • 程序包括两部分: • 预处理部分: • 这里的功能是“文件包含”,#include命令;其他还可以有“宏定义”、“条件编译”。 • 程序基本部分: • 仅有一个main()主函数;必须的。 • 主函数内调用了库函数printf(); • 还可以自己定义函数。 • 注释部分 //单行注释 或 /*多行注释*/
3 C程序的基本结构 • 【例2】 #include<math.h> //include称为文件包含命令 #include<stdio.h>//扩展名为.h的文件称为头文件 int main() { double x,s; //定义两个实数变量,以被后面程序使用 printf("input number:\n"); //显示提示信息 scanf("%lf",&x); //从键盘获得一个实数x s=sin(x); //求x的正弦,并把它赋给变量s printf("sine of %lf is %lf\n",x,s); //显示程序运算结果 } //main函数结束
3 C程序的基本结构 【例3】 #include <stdio.h> int main() /*主函数*/ { int max(int a, int b); /*对函数max的说明*/ int x,y,z; /*变量说明*/ printf (“input two numbers:\n”); /*输出提示信息*/ scanf ("%d%d",&x,&y); /*输入x,y值*/ z=max (x,y); /*调用max函数*/ printf(“maxmum=%d”,z); /*输出结果*/ } int max (int a,int b) /*定义max函数*/ { if (a>b) return a; else return b; /*把结果返回主调函数*/ }
3 C程序的基本结构 • C程序结构的特点: • C程序是由函数组成的 • 函数由说明部分和函数体组成 • C程序总是从main函数开始执行的 • C程序书写格式自由 • 每个语句和数据定义后必须有一个分号 • C语言本身没有输入输出语句 • 可以用/*...*/做注释
3 C程序的基本结构 • 从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下规则: • 一个说明或一个语句占一行。 • 用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。 • 低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。 • 在编程时应力求遵循这些规则,以养成良好的编程风格。
3 C程序的基本结构 • C程序的词法种类: • 1 标识符 在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C 规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。 以下标识符是合法的: a, x, x3, BOOK_1, sum5 以下标识符是非法的: 3s 以数字开头 s*T 出现非法字符* -3x 以减号开头 bowy-1 出现非法字符-(减号)
3 C程序的基本结构 • C程序的词法种类 在使用标识符时还必须注意以下几点: (1)标准C不限制标识符的长度,但它受各种版本的C 语言编译系统限制,同时也受到具体机器的限制。例如在某版本C 中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。 (2)在标识符中,大小写是有区别的。例如BOOK和book 是两个不同的标识符。 (3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便于阅读理解,作到“顾名思义”。
3 C程序的基本结构 • C程序的词法种类: • 2.关键字 关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应与关键字相同。C语言的关键字分为以下几类: (1)类型说明符 用于定义、说明变量、函数或其它数据结构的类型。如前面例题中用到的int, double等 (2)语句定义符 用于表示一个语句的功能。如例1.3中用到的if else就是条件语句的语句定义符。 (3)预处理命令字 用于表示一个预处理命令。如前面各例中用到的include。
3 C程序的基本结构 • C程序的词法种类: • 3.运算符 C语言中含有相当丰富的运算符。运算符与变量,函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成。 • 4.分隔符 在C语言中采用的分隔符有逗号和空格两种。逗号主要用在类型说明和函数参数表中,分隔各个变量。空格多用于语句各单词之间,作间隔符。在关键字、标识符之间必须要有一个以上的空格符作间隔,否则将会出现语法错误,例如把int a;写成 inta; C编译器会把inta当成一个标识符处理,其结果必然出错。
3 C程序的基本结构 • C程序的词法种类: • 5.常量 C 语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。在后面章节中将专门给予介绍。 • 6.注释符 C 语言的注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。注释用来向用户提示或解释程序的意义。在调试程序中对暂不使用的语句也可用注释符括起来,使翻译跳过不作处理,待调试结束后再去掉注释符。
4 程序设计的方法 • 问题分析:将需求转化为计算机能够处理的数据和模型。(建模) • 算法设计:把求解步骤思路表示成流程图等形式,规划数据结构 • 算法实现:使用开发工具编制程序,编辑、编译。语法错误和逻辑错误。 • 调试与更新:排错、修改;文档;参数调整、升级更新
4 程序设计的方法 例:37页10 - 分析: 一般项 termi=(-1)i+1(x2i-1)/(2i-1)!,故 算法描述 初始化i=1,sinx=0,x=指定值 求termi 若|termi|>10-7,则sinx=sinx+termi;i=i+1;转2 否则 输出sinx值,结束。
(续) • 算法细化: • 初始化i=1,sinx=0,x=指定值; • 求termi • t1=x; t2=1; • n=2..2i-1, t1=t1*x,t2=t2*n //再细化。。 • termi=t1/t2; • 若i为偶数,则termi=-termi; • 若|termi|>10-7,则sinx=sinx+termi;i=i+1;转2 否则 输出sinx值,结束。
(续) • 更优的算法: • 初始化:x=指定值,t=x, sinx=0; n=1; • 若|t| <= 10-7转6; • sinx=sinx+t; • n=n+1; • t=-t*x*x/((2n-2)*(2n-1));转2; • 输出sinx值,结束
4 程序设计的方法 • 结构化程序设计方法: • 自顶向下; • 逐步细化; • 模块化设计; • 结构化编码。 • 思想:把一个复杂任务逐步分拆,逐层细化到便于理解和描述的程度;最终形成一个由若干独立模块组成的树状层次结构。由基本结构组成程序,在基本结构内不存在向前或向后的跳转。
4 程序设计的方法 • 开发环境的使用: • Unix/Linux gcc • Microsoft VisualStudio (VC++6)
实验作业存档: • 用自己的unix账号存放在服务器上。