1、第第1 1章章 程序设计程序设计ABCABCC 语言计算机专业教研室计算机专业教研室王永会王永会 戊戊2-306 246906662-306 246906662022-6-5C语言程序设计课件语言程序设计课件2计算机专业学什么?计算机专业学什么? 什么是什么是“会计算机会计算机”?会打字?会打字?会编程?会编程?会会DIY?会上网?会上网?会会“黑客黑客”? 懂原理、能应用、有创新懂原理、能应用、有创新2022-6-5C语言程序设计课件语言程序设计课件3计算机计算机 计算机是用来延伸人的能力的工具,需要计算机是用来延伸人的能力的工具,需要人来驾驭人来驾驭 我们的职责是让非计算机专业的人更容易我
2、们的职责是让非计算机专业的人更容易驾驭它驾驭它 完成这一目标的主要手段之一就是完成这一目标的主要手段之一就是“编程编程(Programming)”2022-6-5C语言程序设计课件语言程序设计课件4 巨型化巨型化-Supercomputer 微型化微型化-Microcomputer, Nanotech Computer, embedded system 网络化网络化-Web Internet 智能化智能化-AI data mining Hardware : electronic and electrical system, automation, programming Software: s
3、oftware engineering, programming Computing: Data Intensive Computing, cloud Computing, data warehouse , programming Application-oriented: science computing, social computing, GIS, programming2022-6-5C语言程序设计课件语言程序设计课件5计算机与人工智能计算机与人工智能 计算机行业的梦想 让计算机(让计算机(Computer)能像人一样)能像人一样地思考,与人自然交流,地思考,与人自然交流, 人工智能
4、(人工智能(Artificial Intelligence)图灵测试图灵测试 2022-6-5C语言程序设计课件语言程序设计课件6计算机与人工智能计算机与人工智能 1997年,IBM公司研制的深蓝超级计算机在一场“人机大战”中打败了国际象棋大师卡斯帕罗夫被誉为被誉为“人工智能的一大胜利人工智能的一大胜利” 深蓝的主要研制者之一许峰雄博士:胜利靠的只是不知疲倦地高速运算,并不是什么胜利靠的只是不知疲倦地高速运算,并不是什么智能智能 2022-6-5C语言程序设计课件语言程序设计课件7计算机基本工作过程计算机基本工作过程 整个过程的执行者是硬件,但硬件是受软件控制的整个过程的执行者是硬件,但硬件是
5、受软件控制的 编程,就是编写软件,使硬件按照人的意图工作编程,就是编写软件,使硬件按照人的意图工作2022-6-5C语言程序设计课件语言程序设计课件8计算机基本工作过程计算机基本工作过程输入/输出设备存储器运算器控制器源程序和输入数据输出结果取出数据存入数据操作命令存取命令取出程序指令输入输出命令计算结果CPU“冯冯诺依曼机诺依曼机”结构结构 大脑记忆装置眼睛和耳朵程序和数据执行结果2022-6-5C语言程序设计课件语言程序设计课件9软件的形成软件的形成 软件(Software)的形成程序员程序员(Programmer)编写程序)编写程序源代码源代码(Source Code)编译器编译器(Co
6、mpiler)把源代码转换为可被计)把源代码转换为可被计算机理解的算机理解的机器代码机器代码(Machine Code)并把机器代码以并把机器代码以可执行文件可执行文件(Executable File)的形式保存在磁盘上)的形式保存在磁盘上2022-6-5C语言程序设计课件语言程序设计课件10软件运行过程的简单描述软件运行过程的简单描述 软件的运行 计算机把机器代码读入到内存(Memory) 由CPU运行这些代码 读取输入(Input) 产生输出(Output) 完成程序员预定的功能 计算机专业后续课程 计算机原理 编译原理 操作系统2022-6-5C语言程序设计课件语言程序设计课件11人与计
7、算机的对话人与计算机的对话 两个说不同母语的人的对话方式:两个说不同母语的人的对话方式:一方学另一方的语言一方学另一方的语言双方都学习一种第三方语言双方都学习一种第三方语言 人与计算机的对话方式:人与计算机的对话方式:计算机学习人的语言(自然语言理解)计算机学习人的语言(自然语言理解)人学习计算机的语言人学习计算机的语言学习第三方语言学习第三方语言2022-6-5C语言程序设计课件语言程序设计课件12程序设计语言与人类语言程序设计语言与人类语言人类为了交流思想、表达感人类为了交流思想、表达感 情、交换信息,逐步发明了语言。情、交换信息,逐步发明了语言。 人类为了能够更好地与计人类为了能够更好地
8、与计 算机进行交流与通讯,发明了专门与算机进行交流与通讯,发明了专门与计算机打交道的交流工具。计算机打交道的交流工具。 2022-6-5C语言程序设计课件语言程序设计课件13自然语言的构成自然语言的构成字字2022-6-5C语言程序设计课件语言程序设计课件14程序设计语言的构成程序设计语言的构成基本单元基本单元词:词:标识符标识符 关键字关键字 常量常量 运算符运算符句子句子:语句语句篇章篇章:程序程序程序设计规则2022-6-5C语言程序设计课件语言程序设计课件15 程序设计语言(Programming Language)是人与计算机进行交流的语言 计算机直接能读懂的语言机器语言(Machi
9、ne Code),也叫机器代码一种纯粹的二进制语言程序设计语言的故事程序设计语言的故事2022-6-5C语言程序设计课件语言程序设计课件16程序设计语言的故事程序设计语言的故事 计算机为什么用二进制呢? 为什么不用我们日常熟悉的十进制呢?二进制在在电器元件中容易实现 计算机进行二进制运算比进行十进制运算要简单得多 2022-6-5C语言程序设计课件语言程序设计课件17程序设计语言的故事程序设计语言的故事 机器语言编写的1+1程序 汇编语言(Assemble Language)编写的1+1程序101110000000000100000000000001010000000100000000MOV
10、AX, 1ADD AX, 12022-6-5C语言程序设计课件语言程序设计课件18程序设计语言的故事程序设计语言的故事 BASIC语言编写的1+1程序 C语言编写的1+1程序PRINT 1+1#include main()printf(%dn, 1+1);2022-6-5C语言程序设计课件语言程序设计课件19C语言的创世纪语言的创世纪 一切从一个叫一切从一个叫“Space Travel”的电子游戏开的电子游戏开始始 为了让他的游戏能在为了让他的游戏能在PDP-7上运行,上运行,Ken Thompson用汇编语言给用汇编语言给PDP-7写了一个操作写了一个操作系统系统UNIX 汇编太不好用了,汇
11、编太不好用了,Thompson需要高级语言需要高级语言 试验了一些高级语言,包括试验了一些高级语言,包括Fortran,都不理想,都不理想 他在他在BCPL基础上,自己设计了一个基础上,自己设计了一个B语言语言 UNIX开始发展,开始发展,B也不够用了也不够用了 Dennis Ritchie加入,把加入,把B改造成改造成C 开始用开始用C重写重写UNIX2022-6-5C语言程序设计课件语言程序设计课件20C程序设计语言程序设计语言 是一种高级语言是一种高级语言 高级语言并不是高级语言并不是“高级高级”,只是相对低级语言,在一个高的级别,只是相对低级语言,在一个高的级别上进行编程上进行编程 历
12、史悠久,战勋卓著历史悠久,战勋卓著 诞生于上世纪诞生于上世纪70年代初,成熟于年代初,成熟于80年代(年代(C89),修订与),修订与90年年代(代(C99) 很多重量级软件都是用很多重量级软件都是用C写的写的 上天入地,无所不能上天入地,无所不能 几乎没有不能用几乎没有不能用C写出来的软件,没有不支持写出来的软件,没有不支持C的系统的系统 很多流行语言、新生语言都借鉴了它的思想、语很多流行语言、新生语言都借鉴了它的思想、语法法 从从C+,到,到Java,再到,再到C#,还有,还有php等等2022-6-5C语言程序设计课件语言程序设计课件21C程序设计语言程序设计语言2022-6-5C语言程
13、序设计课件语言程序设计课件22C语言的设计者语言的设计者Dennis M. RitchieC is quirky, flawed, and an enormous success.2022-6-5C语言程序设计课件语言程序设计课件23和和Unix的设计者的设计者Ken Thompson接受美国国家技术勋章接受美国国家技术勋章2022-6-5C语言程序设计课件语言程序设计课件24Ritchie和和Thompson在开发在开发UNIX2022-6-5C语言程序设计课件语言程序设计课件25程序设计语言程序设计语言编辑(Edit)扩展名为扩展名为.c的文件的文件 编译(Compile)扩展名为扩展名为
14、.obj的文件的文件 链接(Link)形成最后的可执行文件形成最后的可执行文件扩展名为扩展名为.exe的文件的文件 运行 (Run)2022-6-5C语言程序设计课件语言程序设计课件26编译语言编译语言 一种编译语言对应一种编译器一种编译语言对应一种编译器 程序员按照该语言的语法编写程序源代码,把程序员按照该语言的语法编写程序源代码,把自己的意图融入到代码中自己的意图融入到代码中 编译器读入源代码,把程序员的意图转换成可编译器读入源代码,把程序员的意图转换成可执行程序,供他人使用执行程序,供他人使用2022-6-5C语言程序设计课件语言程序设计课件27解释运行解释运行 解释运行过程解释运行过程
15、程序员编写程序源代码程序员编写程序源代码解释器读入源代码,并执行源代码解释器读入源代码,并执行源代码 解释运行的语言特点解释运行的语言特点执行速度慢执行速度慢好学易用好学易用 先编译、后解释先编译、后解释把源代码编译成更容易解释的中间代码,然后把源代码编译成更容易解释的中间代码,然后再解释运行再解释运行2022-6-5C语言程序设计课件语言程序设计课件28流行语言流行语言 应用编程语言 机器语言 汇编语言 Basic Pascal C C+ Java C# 专项编程语言 Lotus Notes Power Builder Web编程语言 HTML XML PHP ASP JSP JavaScr
16、ipt VBScript 其他 perl python VBA对一门计算机语言的深入掌握意味着:学习计算机程序设计的对一门计算机语言的深入掌握意味着:学习计算机程序设计的思想、方法思想、方法+经验经验+兴趣兴趣=和成功!和成功!2022-6-5C语言程序设计课件语言程序设计课件29学习学习C语言目的及方法语言目的及方法 期末期末考试考试; ; 等级考试等级考试; ; 后续有关课程的学习打基础后续有关课程的学习打基础; ; 为学习其它的高级语言或开发工具基础为学习其它的高级语言或开发工具基础; ; 工作;工作; 快乐;快乐;预习!预习!+课堂教学课堂教学+实践!实践!调试并去除错误学习编程唯一有
17、效途径调试并去除错误学习编程唯一有效途径2022-6-5C语言程序设计课件语言程序设计课件30#include main()printf(hello, worldn);简单的简单的C程序介绍程序介绍包含标准输入输出库包含标准输入输出库(standard input/output library)无参数的主函数无参数的主函数(main fuction without argument values)Main calls library function printf to print this sequence of characters.n 换行符换行符Newline character202
18、2-6-5C语言程序设计课件语言程序设计课件31#include main() int a, b, c; /变量声明整型(integer)variable declaration a = 100; /变量赋值, assignmentb = 50; c = a + b; /计算,compute and assign. printf(“n c=%d”,c); /output “c” to screen 2022-6-5C语言程序设计课件语言程序设计课件32 前面使用了系统提供的函数前面使用了系统提供的函数printfprintf。不用知道这。不用知道这个函数内部是如何运作的,只按照参数形式调用个函
19、数内部是如何运作的,只按照参数形式调用它即可;它即可; C C程序由函数构成;程序由函数构成; 我们也可以定义自己的函数;我们也可以定义自己的函数; “一个程序应该是轻灵自由的,它的函数就象串一个程序应该是轻灵自由的,它的函数就象串在一根线上的珍珠。在一根线上的珍珠。” (编程之道编程之道)2022-6-5C语言程序设计课件语言程序设计课件33#include /*函数功能函数功能:计算两个整数相加之和计算两个整数相加之和 入口参数入口参数:整型数据整型数据a和和b 返回值:返回值: 整型数整型数a和和b之和之和*/int Add(int a, int b)return (a + b);/*主
20、函数主函数*/main()int x, y, sum = 0;printf(Input two integers:);scanf(%d%d, &x, &y); /*输入两个整型数输入两个整型数x和和y*/sum = Add(x, y); /*调用函数调用函数Add计算计算x和和y相加之和相加之和*/printf(sum = %dn, sum); /*输出输出x和和y相加之和相加之和*/(1 1) 函数由两部分组成:函数由两部分组成: 函数说明部分:函数名、函函数说明部分:函数名、函数类型、形参名、形参类型。数类型、形参名、形参类型。 函数体:实现函数的具体操函数体:实现函数的具体操作;由语句构
21、成。作;由语句构成。 (2 2) 程序总是从程序总是从mainmain函数开函数开始执行。始执行。 2022-6-5C语言程序设计课件语言程序设计课件34 计算公式:计算公式:C=(5/9)(F-32)2022-6-5C语言程序设计课件语言程序设计课件35#include /* 对对 fahr = 0, 20, ., 300 打印华氏温度与摄氏温度对照表打印华氏温度与摄氏温度对照表 */main()int fahr, celsius;int lower, upper, step;lower = 0; /* 温度表的下限温度表的下限 */upper = 300; /* 温度表的上限温度表的上限
22、*/step = 20; /* 步长步长 */fahr = lower;while (fahr = upper) celsius = 5 * (fahr-32) / 9;printf(%dt%dn, fahr, celsius);fahr = fahr + step;While ( ) 2022-6-5C语言程序设计课件语言程序设计课件36#include /* 对对 fahr = 0, 20, ., 300 打印华氏温度与摄氏温度对照表打印华氏温度与摄氏温度对照表 */main() int fahr, celsius; int lower, upper, step; lower = 0; /
23、* 温度表的下限温度表的下限 */ upper = 300; /* 温度表的上限温度表的上限 */ step = 20; /* 步长步长 */ fahr = lower; while (fahr = upper) celsius = 5 * (fahr-32) / 9; printf(%dt%dn, fahr, celsius); fahr = fahr + step; 2022-6-5C语言程序设计课件语言程序设计课件37#include main()int fahr,celsius;int lower,upper,step;lower=0;upper=300;step=20;fahr=lo
24、wer;while (fahr=upper)celsius=5*(fahr-32)/9;printf(%dt%dn,fahr,celsius);fahr=fahr+step;2022-6-5C语言程序设计课件语言程序设计课件38 #include main() printf(), scanf() +,=,=, =, != int, float while 代码风格代码风格 注释、缩进、空行、命名注释、缩进、空行、命名 函数函数2022-6-5C语言程序设计课件语言程序设计课件39作业作业编程题编程题1. 求两数最大值求两数最大值(函数实现函数实现)。2. 华氏温度与摄氏温度转换。要求输入一个华华氏温度与摄氏温度转换。要求输入一个华氏温度转换成摄氏温度。氏温度转换成摄氏温度。2022-6-5C语言程序设计课件语言程序设计课件40#includeint max(int x, int y);main() int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“nmax is:%d”,c); /函数类型 函数名 形参 int max (int x, int y) if (x y) return (x); else return (y);