370 likes | 506 Views
C 语言程序设计. 主讲:沈济南. TEL: 13971887071 E-mail: shenjinan@163.com. 课程安排. 总学时: 64 学时(理论 40 学时 实验 24 学时) 教材: C 语言程序设计教程 · 中国铁道出版社 · 李清政等编 参考教材: C 语言程序设计教程 · 华中科技大学出版社 · 秦友淑等编 C 语言程序设计教程 · 清华大学出版社 · 谭浩强等编. 计算机技术学什么?. 什么是 “ 会计算机 ” ? 会打字? 会编程? 会 DIY ? 会上网? 会 “ 黑客 ” ? …… 懂原理、能应用、有创新.
E N D
C语言程序设计 主讲:沈济南 TEL:13971887071 E-mail:shenjinan@163.com
课程安排 • 总学时: • 64学时(理论40学时 实验24学时) • 教材: • C语言程序设计教程·中国铁道出版社·李清政等编 • 参考教材: • C语言程序设计教程·华中科技大学出版社·秦友淑等编 • C语言程序设计教程·清华大学出版社·谭浩强等编
计算机技术学什么? • 什么是“会计算机”? • 会打字? • 会编程? • 会DIY? • 会上网? • 会“黑客”? • …… • 懂原理、能应用、有创新
计算机(Computer) • 计算机是用来延伸人的能力的工具,需要人来驾驭 • AI能实现吗?(AI,Artificial Intelligence,人工智能) • 会有那么一天,人与计算机的位置互换吗? • 我们的职责是让它更容易被驾驭 • 自我毁灭的过程
人与计算机的对话 • 两个说不同母语的人的对话方式: • 一方学另一方的语言 • 双方都学习一种第三方语言 • 人与计算机的对话方式: • 计算机学习人的语言(自然语言理解) • 人学习计算机的语言 • 学习第三方语言
人与计算机的鸿沟 客观世界 (问题域) 对问题域的认识(人) 自然语言 语言的鸿沟 语言的过渡(人) 编程语言 编程(人) 程序的理解和执行(机器) 客观世界 (问题域)
语言的发展使得鸿沟变小 客观世界 (问题域) 自然语言 语言的鸿沟 面向对象高级语言 非OO的高级语言 汇编语言 机器语言 计算机
机器语言 • 计算1+1 10111000 00000001 00000000 00000101 00000001 00000000
BASIC语言 PRINT 1+1
C语言 #include <stdio.h> main() { printf("%d\n", 1+1); }
CPL语言:剑桥大学,1963年 经简化 BCPL语言:剑桥大学,1967年 进一步简化 B语言:Bell实验室,1970年 在PDP机器上用其编写UNIX系统 保持精练、接近硬件的优点,克服数据类型过少的不足 C语言:Bell实验室,1972~1973年用其改写UNIX系统 C语言的发展
C语言的创世纪 • 一切从一个叫“Space Travel”的电子游戏开始…… • 为了让他的游戏能在PDP-7上运行,Ken Thompson用汇编语言给PDP-7写了一个操作系统——UNIX • 汇编太不好用了,Thompson需要高级语言 • 试验了一些高级语言,包括Fortran,都不理想 • 他在BCPL基础上,自己设计了一个B语言 • UNIX开始发展,B也不够用了 • Dennis Ritchie加入,把B改造成C • 开始用C重写UNIX
C程序设计语言 • 是一种高级语言 • 高级语言并不是“高级”,只是相对低级语言,在一个高的级别上进行编程 • 历史悠久,战勋卓著 • 诞生于上世纪70年代初,成熟于80年代(C89),修订与90年代(C99) • 很多重量级软件都是用C写的 • 上天入地,无所不能 • 几乎没有不能用C写出来的软件,没有不支持C的系统 • 很多流行语言、新生语言都借鉴了它的思想、语法 • 从C++,到Java,再到C#,还有php等
C语言的祖师爷Dennis M. Ritchie http://www.cs.bell-labs.com/who/dmr/
Ritchie漫画像 C is quirky, flawed, and an enormous success.
第1章 C语言及程序设计概述 讲授:沈济南 TEL:13971887071 E-mail:shenjinan@163.com
1.1 程序与程序设计语言 • 1.1.1 程序的概念 • 程序是计算机指令的序列,是可以被连续执行的一条条指令的集合 。 • 1.1.2 程序设计语言的发展 • 计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程 • 1.1.3 C语言的发展及特点
C语言的特点 • 1)语言简洁、紧凑,使用方便、灵活 • 2)具有结构化的控制语句,以函数作为程序模块以实现程序的模块化。 • 3)数据类型丰富 • 4)允许直接对位、字节和地址进行操作 • 5)可直接操纵硬件 • 6)生成的目标代码质量高,程序执行效率高 • 7)可移植性好
1.2 程序设计方法 • 1.2.1 结构化程序设计方法 • 1.2.2 面向对象程序设计方法
1.3 算法及其表示 • 程序规定了计算机执行的动作和动作的顺序,一个程序应包括以下两方面的内容: • (1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构。 • (2)对操作的描述。即操作步骤,也就是算法。 • 程序 = 数据结构 + 算法+程序设计方法+语言环境 (Nikiklaus Wirth )
1.3 算法及其表示 • 算法的概念 • 计算机解决问题的方法和步骤,就是计算机的算法 • 算法的组成要素 • 操作+控制结构 • 算法的特征 • 有穷性 、确定性 、可行性 、输入、输出 • 算法的表示 • 自然语言表示、流程图表示、伪代码表示、计算机语言表示
自然语言表示求5! 原始方法: Step1:求1×2,得到结果2; Step2:将Step1中的结果乘以3,得到新的结果6; Step3:将Step2中的结果乘以4,得24; Step4:将Step3中的结果乘以5得到最后的结果120。
自然语言表示求5! 改进方法: Step1:使p=1; Step2:使i=2; Step3:使p×i乘积放在p中; Step4:使i的值增加1; Step5:如果i的值不大于5,返回Step3重复Step4和Step5。最后的p值为所求。
开始 起止框 i=2;p=1 输入/输出框 判断框 i<=5 ? 处理框 p*ip;i+1i; 流程线 输出z 结束 用流程图表示求5!的算法 Y N
用伪代码表示算法求5! 开始: 置t的初值为1 置i的初值为2 当i<=5,执行下面的操作: 使t=t*i 使i=i+1 (循环体到此结束) 打印t的值 结束 也可以写成以下形式: Begin(算法开始) 1->t 2->i while i<=5 { t*i->t i+1->i} Print t End(算法结束)
用计算机语言实现算法求5! /*源程序名:CH0104.C*/ /*01*/ main() /*02*/ { int i,p; /*03*/ p=1; i=2; /*04*/ while(i<=5) /*05*/ { /*06*/ p=p*i; /*07*/ i=i+1; /*08*/ } /*09*/ printf("%d",p); /*10*/ }
1.4 C语言程序的基本结构 一个完整的C语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,或仅由一个main()函数构成 /*功能:仅由main()函数构成的C语言程序示例*/ /*源程序名:CH0105.C*/ /*01*/ main() /*02*/ { /*03*/ printf(“Hello World!\n”); /*04*/ } 程序运行时,在屏幕上显示一行英文: Hello World! 。
1.4 C语言程序的基本结构 • 1.4.1 C程序的结构特点 • 1.4.2 源程序书写格式
1.5 C语言的基本语法单位 • 1.5.1 C语言的字符集 • 1.5.2 关键字 • 1.5.3标识符 • 1.5.4 分隔符 • 1.5.5 注释
1.5.1 C语言的字符集 字符是组成语言的最基本的元素。C语言字符集由字母,数字,空格,标点和特殊字符组成。在字符常量,字符串常量和注释中还可以使用汉字或其它可表示的图形符号。 (1)字母:小写字母a~z共26个,大写字母A~Z共26个; (2)数字:0~9共10个; (3)空白符:空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其它地方出现时,只起间隔作用,编译程序对它们忽略。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性; (4)标点和特殊字符。
1.5.2 关键字 关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应与关键字相同。标准C定义的32个关键字如下表
1.5.3标识符 • 在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C 规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。 以下标识符是合法的: a x _3x BOOK_1 sum5 以下标识符是非法的: 3s 以数字开头 s*T 出现非法字符* -3x 以减号开头 bowy-1 出现非法字符减号
C语言程序设计 主讲:沈济南 TEL:13971887071 E-mail:shenjinan@163.com