第01章_概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机程序设计基础
Introduction to Computer Programming
谌
卫
军
清华大学计算机系
1
教学安排
教学对象
非计算机专业本科生
教学目标
掌握一种编程工具(C语言); 掌握程序设计的基本思路和方法,提 高分析问题、解决问题的能力。
2
1
设x、y、t均为int型 变量,则执行语句: x = y = 3; t = ++x || ++y; 后,y的值为: (A) (C) 0 3 (B) 4 (D) 1
没有接触过太多的计算机。
13
Any question?
14
第一章 程序设计概述
1. 计算机与程序 2. 计算机程序设计 3. 一个典型的C语言程序 4. R进制
15
1.1 计算机与程序
这是一个计算机的时代
16
17
计算机 = 电脑?
计算机 +软件 = 电脑
18
何为计算机程序?
QQ.exe iexplore.exe Fterm.exe winamp.exe
2
一个字符串,有小写字 母、大写字母和空格, 编写一个程序,把小写 字母放在最前,空格放 中间,大写字母放最后, 且小写大写字母原来的 顺序不能乱。
In general, we hope that after the course, the students will pass the programming test of a leading software company such as Microsoft, if they go to a job interview... 3
此外,C语言还有一些类型修饰符:short、long、 signed、unsigned。
39
变量的基本概念
变量:其值可变的量。
b 变量名
30 ————变量值
内存空间地址XXXX
通过 b 可以找到相应的存储空间地址XXXX, 从而对该变量的值进行访问和修改。
40
变量的命名规则
仅包含字母、数字和下划线(‘_’);
Main Memory
......
k= 32 位 n= 32 位
CPU
READ
WRITE READY
36
7
不同的数据,可能需要 不同长度的存储空间, 怎么办?
如:1、300、70000
6 5 4
数据3
3
2
数据2
1
0
数据1
37
解决之道 —— 数据类型
把所有的数据归纳为有限的几种类型;
同一种类型的数据具有相同的长度,占用相 同大小的内存空间;
参考书
“计算机程序设计基础”(第2版),乔林
“程序设计基础”,吴文虎;
The C Programming Language (K & R)
9
考核方式(考查课):
上机练习 + 大作业 + 平时表现 (40%) (40%) (20%) 旷课一次(警告)、二次(不能优秀)、 三次(不及格)。
课程站点(网络学堂)
http://learn.tsinghua.edu.cn/
10
联系方式:
办公室:东主楼8区309 电话:62782934
Email:cwj@tsinghua.edu.cn
请不要用QQ邮箱给我写信!!
11
若发现两份相同的程序,均记0分。
12
小调查
编程基础
参加过程序设计类比赛(省、市、全国); 使用过C语言或其他编程语言,编写过一些 小程序; 熟悉电脑操作,熟悉Windows操作系统,熟 悉各种应用软件的使用;
– 接受一个问题;
– 分析这个问题;
– 设想一种方法来解决这个问题; – 在计算机上,用某种计算机语言来描述该 解决方案,即编码; – 测试和调试程序(debug)。
重要性?
22
编程就象厨师烧菜,以红烧茄子为例; 原料(数据):茄子750克、肉片50克、葱姜蒜50克、酱 油、盐、糖、鸡粉适量,水淀粉适量。 制作过程(算法): 将茄子切成块,葱姜蒜切末待用; 起油锅,待油热至八、九成时放入茄子,炸至茄子 由硬变软时取出,将油沥干待用; 另起锅,锅中放油三汤匙,油热后,先爆香葱姜蒜, 下肉片炒散,烹入酱油,加入少量水和鸡粉,放入 茄子、盐、糖,大火煮开后改用小火煮至茄子入味, 最后用淀粉勾芡。
unsigned short 2
16
32
0 (216 – 1)
0 (232 – 1)
45
实数类型
实数类型(浮点类型):分为单精度浮点类型 (float)、双精度浮点类型(double)和长双精 度浮点类型(long double)三种。 实型数据的存放形式:小数部分+指数部分 实数3.14159: + .314159
非计算机专业学生需 要学习编程吗?
4
一些招聘广告。。。
5
6
11月11日光棍节,某大学一男生向他心仪的 女生送出一封他用212天时间写的16万字情书 。情书分散文、诗歌等多种文体,内容主要 是回忆两人在一起做的事或借景抒怀。他将 其装订成册并取名《我不愿让你一个人》。 女孩十分感动,然后拒绝了他。 据该女生透露,她利用课内所学的知识编写 了一个脚本程序,对长达16万字的情书进行 了随机采样并自动搜索,发现有68%的部分 系从网络抄袭,从而拒绝了这个男生。
1
问题?
符号位 小数部分 指数部分
+
.314159 × 101 =3.14159
46
小数部分占的位数越多,数据的有效数字越多, 精度越高;指数部分占的位数越多,则能表示的 数值范围越大。
各种实型数据
类型
float double long double
字节数
4 8 16
有效数字
6~7 15~16 18~19
27
1.3 一个典型的C语言程序
问题描述
“编写一个程序,计算所有课程的 GPA(Grade Point Average)” 4分制(0-4)
28
百分制分数
90-100 80-89 70-79 60-69
等级
A B C D
grade point
4 3 2 1
Fra Baidu bibliotek
60以下
E
0
29
计算方法
将每门课程的学分乘以学时,累加后除以 总学时,得出平均分。
25
26
高级语言
– 用一种更自然、更接近于人类语言习惯的符号形式 来编写程序
发展历史
– 1950's:Fortran, Lisp
– 1960's:Cobol, Algol, APL – 1970's:Basic, Pascal, C – 1980's:Smalltalk, C++, Modula, Ada, Prolog – 1990's:Java
7.0%
// 结果?
49
一些基本概念
常量:程序运行过程中其值不能被改变的量。
– 整型常量:十进制形式(如200),八进制形式(如 0200),十六进制形式(如0x200),二进制形式? – 实型常量:十进制小数形式(如7.0),指数形式 (如321.54e6 = 321.54×106) – 字符型常量:如'F'
数值范围
10-38 ~ 1038 10-308 ~ 10308 10-4932 ~ 104932
47
1.3.2 算术运算
算术运算符
+:加法运算符,如 3 + 5; -:减法运算符,如 5 – 2; * :乘法运算符,如 3 * 5; / :除法运算符。如 5 / 3。两个整数相除,结果 为整数,小数部分被舍去; %:模运算符,或称求余运算符,%两侧均为 整型数据,如 7 % 4。
1. 程序内部结构? 2. 程序如何执行?
19
中央处理器
内存
计算机体系结构图
如何编写程序?
20
1.2 计算机程序设计
输入:文字形式的问题描述
“请问计算机,1+2+…+100等于多少”
“请编写一个即时通信软件”
输出:可执行程序
Sum.exe NewQQ.exe
21
程序员的工作:问题描述 → 可执行程序 如何编写程序?
程序 = 数据结构 + 算法
23
另一个算法…
1、e4 2、d4 3、Nd2 4、e5 5、Bd3 6、c3 7、Ne2 8、Nf4 9、Qh5 10、Ng6 e6 d5 Nf6 Nfd7 c5 Nc6 f6 f5 Ke7 hg
24
计算机语言
机器指令
(直接在硬件执行)
汇编指令
(用符号表示操作码和数据)
44
整型数据的长度及取值范围
数据类型 int short long
unsigned int unsigned long
字节数 比特数 取值范围 4 32 -231 (231 – 1) 16 -215 (215 – 1) 2
4 4 4 32 32 -231 (231 – 1) 0 (232 – 1)
48
#include <stdio.h> void main( ) { int capital, earn; double rate;
// 原始资金、盈利 // 利润率
capital = 200; earn = 15; rate = earn * 100 / capital; printf("%.1f%%", rate); }
有何共同点?
32
代码和数据 都是存放在 内存中
33
内存的工作原理
一个内存中包含有许多 存储单元,每个单元可 以存放一个适当单位的 信息(如:8个bit,即 一个字节,byte);
全部存储单元按一定顺 序编号,这种编号称为 存储器的地址。对各个 存储单元的读写操作就 是通过它们的地址来进 行的。 7 6 5 01000011
7
教学方法
课堂讲解:基本概念、C语言的语法、 语句,编程解题的基本思路、方法。每堂 课要带上纸、笔,进行课题练习。鼓励创 新、鼓励上台讲解自己的方法; 上机实践:实践性极强的课程,将有 大量的编程练习。每周有一次固定上机时 间。
8
教材
“计算机语言与程序设计”,谌卫军,清华大 学出版社
average_samples_div_count √ 合法的名字 != 好名字
42
张三 ╳
变量的定义
数据类型 变量1, 变量2, …, 变量n;
例如:
int nA, nB, nC; double totalCourses, totalPoints, gpa;
43
整数类型
整数类型可分为:基本型、短整型和长整型三种。 1. 基本型:int(4字节); 2. 短整型:short int,或 short(2字节); 3. 长整型:long int,或long(4字节); 无符号整数类型:unsigned int,unsigned short 和 unsigned long。
30
基本思路
让用户输入成绩分别为A、B、C的课程数
计算总分数(分子)
计算总的课程数(分母)
计算GPA
在屏幕上显示计算结果
1. 变量的定义与使用 2. 算术运算 3. 输入和输出
31
1.3.1 变量的定义与使用
why变量?
茄子750克、肉片50克、 葱姜蒜50克、酱油、盐、 糖、鸡粉适量,水淀粉 适量。
每一种类型的数据依然是以二进制的形式存 放在内存当中; 在访问一个数据时,根据它在内存的起始地 址和类型来确定它所占用的存储单元。
占用空间大于实际需要?
38
C语言的四种基本类型:
–字符类型:用 char 来表示; –整数类型:用 int 来表示; –单精度浮点类型:用 float 来表示; –双精度浮点类型:用 double 来表示。
第一个字符必须为字母或下划线;
不能使用C语言保留的“关键字”来作为变量 名,如int, float等; 变量名是大小写有关的,例如:sum和SUM是 两个不同的变量名。
41
合法的变量名:
sum, average, _total, Class, Stu_name, LI
是否合法?
float&variable, Main, ╳ √ 12a, if, a>b, ╳ ╳ ╳ M.John, ╳ _int √
4
3 2 1 0
00110000
00110100
00110010
34
512MByte
0x1FFFFFFF ......
......
......
......
0x00000002 0x00000001 0x00000000
35
AB k 位(给出地址)
AR ......
DB n 位(传送数据)
DR
例如:
例如:某学生的五门课程的学时和成绩为: A课程4个学时,成绩92(A); B课程3个学时,成绩80(B); C课程2个学时,成绩98(A); D课程6个学时,成绩70(C); E课程3个学时,成绩89(B)。 假设所有课程成绩 均不低于C,且学 时数相同。
GPA=(4*4+3*3+2*4+6*2+3*3)/(4+3+2+ 6+3)=3.00
Introduction to Computer Programming
谌
卫
军
清华大学计算机系
1
教学安排
教学对象
非计算机专业本科生
教学目标
掌握一种编程工具(C语言); 掌握程序设计的基本思路和方法,提 高分析问题、解决问题的能力。
2
1
设x、y、t均为int型 变量,则执行语句: x = y = 3; t = ++x || ++y; 后,y的值为: (A) (C) 0 3 (B) 4 (D) 1
没有接触过太多的计算机。
13
Any question?
14
第一章 程序设计概述
1. 计算机与程序 2. 计算机程序设计 3. 一个典型的C语言程序 4. R进制
15
1.1 计算机与程序
这是一个计算机的时代
16
17
计算机 = 电脑?
计算机 +软件 = 电脑
18
何为计算机程序?
QQ.exe iexplore.exe Fterm.exe winamp.exe
2
一个字符串,有小写字 母、大写字母和空格, 编写一个程序,把小写 字母放在最前,空格放 中间,大写字母放最后, 且小写大写字母原来的 顺序不能乱。
In general, we hope that after the course, the students will pass the programming test of a leading software company such as Microsoft, if they go to a job interview... 3
此外,C语言还有一些类型修饰符:short、long、 signed、unsigned。
39
变量的基本概念
变量:其值可变的量。
b 变量名
30 ————变量值
内存空间地址XXXX
通过 b 可以找到相应的存储空间地址XXXX, 从而对该变量的值进行访问和修改。
40
变量的命名规则
仅包含字母、数字和下划线(‘_’);
Main Memory
......
k= 32 位 n= 32 位
CPU
READ
WRITE READY
36
7
不同的数据,可能需要 不同长度的存储空间, 怎么办?
如:1、300、70000
6 5 4
数据3
3
2
数据2
1
0
数据1
37
解决之道 —— 数据类型
把所有的数据归纳为有限的几种类型;
同一种类型的数据具有相同的长度,占用相 同大小的内存空间;
参考书
“计算机程序设计基础”(第2版),乔林
“程序设计基础”,吴文虎;
The C Programming Language (K & R)
9
考核方式(考查课):
上机练习 + 大作业 + 平时表现 (40%) (40%) (20%) 旷课一次(警告)、二次(不能优秀)、 三次(不及格)。
课程站点(网络学堂)
http://learn.tsinghua.edu.cn/
10
联系方式:
办公室:东主楼8区309 电话:62782934
Email:cwj@tsinghua.edu.cn
请不要用QQ邮箱给我写信!!
11
若发现两份相同的程序,均记0分。
12
小调查
编程基础
参加过程序设计类比赛(省、市、全国); 使用过C语言或其他编程语言,编写过一些 小程序; 熟悉电脑操作,熟悉Windows操作系统,熟 悉各种应用软件的使用;
– 接受一个问题;
– 分析这个问题;
– 设想一种方法来解决这个问题; – 在计算机上,用某种计算机语言来描述该 解决方案,即编码; – 测试和调试程序(debug)。
重要性?
22
编程就象厨师烧菜,以红烧茄子为例; 原料(数据):茄子750克、肉片50克、葱姜蒜50克、酱 油、盐、糖、鸡粉适量,水淀粉适量。 制作过程(算法): 将茄子切成块,葱姜蒜切末待用; 起油锅,待油热至八、九成时放入茄子,炸至茄子 由硬变软时取出,将油沥干待用; 另起锅,锅中放油三汤匙,油热后,先爆香葱姜蒜, 下肉片炒散,烹入酱油,加入少量水和鸡粉,放入 茄子、盐、糖,大火煮开后改用小火煮至茄子入味, 最后用淀粉勾芡。
unsigned short 2
16
32
0 (216 – 1)
0 (232 – 1)
45
实数类型
实数类型(浮点类型):分为单精度浮点类型 (float)、双精度浮点类型(double)和长双精 度浮点类型(long double)三种。 实型数据的存放形式:小数部分+指数部分 实数3.14159: + .314159
非计算机专业学生需 要学习编程吗?
4
一些招聘广告。。。
5
6
11月11日光棍节,某大学一男生向他心仪的 女生送出一封他用212天时间写的16万字情书 。情书分散文、诗歌等多种文体,内容主要 是回忆两人在一起做的事或借景抒怀。他将 其装订成册并取名《我不愿让你一个人》。 女孩十分感动,然后拒绝了他。 据该女生透露,她利用课内所学的知识编写 了一个脚本程序,对长达16万字的情书进行 了随机采样并自动搜索,发现有68%的部分 系从网络抄袭,从而拒绝了这个男生。
1
问题?
符号位 小数部分 指数部分
+
.314159 × 101 =3.14159
46
小数部分占的位数越多,数据的有效数字越多, 精度越高;指数部分占的位数越多,则能表示的 数值范围越大。
各种实型数据
类型
float double long double
字节数
4 8 16
有效数字
6~7 15~16 18~19
27
1.3 一个典型的C语言程序
问题描述
“编写一个程序,计算所有课程的 GPA(Grade Point Average)” 4分制(0-4)
28
百分制分数
90-100 80-89 70-79 60-69
等级
A B C D
grade point
4 3 2 1
Fra Baidu bibliotek
60以下
E
0
29
计算方法
将每门课程的学分乘以学时,累加后除以 总学时,得出平均分。
25
26
高级语言
– 用一种更自然、更接近于人类语言习惯的符号形式 来编写程序
发展历史
– 1950's:Fortran, Lisp
– 1960's:Cobol, Algol, APL – 1970's:Basic, Pascal, C – 1980's:Smalltalk, C++, Modula, Ada, Prolog – 1990's:Java
7.0%
// 结果?
49
一些基本概念
常量:程序运行过程中其值不能被改变的量。
– 整型常量:十进制形式(如200),八进制形式(如 0200),十六进制形式(如0x200),二进制形式? – 实型常量:十进制小数形式(如7.0),指数形式 (如321.54e6 = 321.54×106) – 字符型常量:如'F'
数值范围
10-38 ~ 1038 10-308 ~ 10308 10-4932 ~ 104932
47
1.3.2 算术运算
算术运算符
+:加法运算符,如 3 + 5; -:减法运算符,如 5 – 2; * :乘法运算符,如 3 * 5; / :除法运算符。如 5 / 3。两个整数相除,结果 为整数,小数部分被舍去; %:模运算符,或称求余运算符,%两侧均为 整型数据,如 7 % 4。
1. 程序内部结构? 2. 程序如何执行?
19
中央处理器
内存
计算机体系结构图
如何编写程序?
20
1.2 计算机程序设计
输入:文字形式的问题描述
“请问计算机,1+2+…+100等于多少”
“请编写一个即时通信软件”
输出:可执行程序
Sum.exe NewQQ.exe
21
程序员的工作:问题描述 → 可执行程序 如何编写程序?
程序 = 数据结构 + 算法
23
另一个算法…
1、e4 2、d4 3、Nd2 4、e5 5、Bd3 6、c3 7、Ne2 8、Nf4 9、Qh5 10、Ng6 e6 d5 Nf6 Nfd7 c5 Nc6 f6 f5 Ke7 hg
24
计算机语言
机器指令
(直接在硬件执行)
汇编指令
(用符号表示操作码和数据)
44
整型数据的长度及取值范围
数据类型 int short long
unsigned int unsigned long
字节数 比特数 取值范围 4 32 -231 (231 – 1) 16 -215 (215 – 1) 2
4 4 4 32 32 -231 (231 – 1) 0 (232 – 1)
48
#include <stdio.h> void main( ) { int capital, earn; double rate;
// 原始资金、盈利 // 利润率
capital = 200; earn = 15; rate = earn * 100 / capital; printf("%.1f%%", rate); }
有何共同点?
32
代码和数据 都是存放在 内存中
33
内存的工作原理
一个内存中包含有许多 存储单元,每个单元可 以存放一个适当单位的 信息(如:8个bit,即 一个字节,byte);
全部存储单元按一定顺 序编号,这种编号称为 存储器的地址。对各个 存储单元的读写操作就 是通过它们的地址来进 行的。 7 6 5 01000011
7
教学方法
课堂讲解:基本概念、C语言的语法、 语句,编程解题的基本思路、方法。每堂 课要带上纸、笔,进行课题练习。鼓励创 新、鼓励上台讲解自己的方法; 上机实践:实践性极强的课程,将有 大量的编程练习。每周有一次固定上机时 间。
8
教材
“计算机语言与程序设计”,谌卫军,清华大 学出版社
average_samples_div_count √ 合法的名字 != 好名字
42
张三 ╳
变量的定义
数据类型 变量1, 变量2, …, 变量n;
例如:
int nA, nB, nC; double totalCourses, totalPoints, gpa;
43
整数类型
整数类型可分为:基本型、短整型和长整型三种。 1. 基本型:int(4字节); 2. 短整型:short int,或 short(2字节); 3. 长整型:long int,或long(4字节); 无符号整数类型:unsigned int,unsigned short 和 unsigned long。
30
基本思路
让用户输入成绩分别为A、B、C的课程数
计算总分数(分子)
计算总的课程数(分母)
计算GPA
在屏幕上显示计算结果
1. 变量的定义与使用 2. 算术运算 3. 输入和输出
31
1.3.1 变量的定义与使用
why变量?
茄子750克、肉片50克、 葱姜蒜50克、酱油、盐、 糖、鸡粉适量,水淀粉 适量。
每一种类型的数据依然是以二进制的形式存 放在内存当中; 在访问一个数据时,根据它在内存的起始地 址和类型来确定它所占用的存储单元。
占用空间大于实际需要?
38
C语言的四种基本类型:
–字符类型:用 char 来表示; –整数类型:用 int 来表示; –单精度浮点类型:用 float 来表示; –双精度浮点类型:用 double 来表示。
第一个字符必须为字母或下划线;
不能使用C语言保留的“关键字”来作为变量 名,如int, float等; 变量名是大小写有关的,例如:sum和SUM是 两个不同的变量名。
41
合法的变量名:
sum, average, _total, Class, Stu_name, LI
是否合法?
float&variable, Main, ╳ √ 12a, if, a>b, ╳ ╳ ╳ M.John, ╳ _int √
4
3 2 1 0
00110000
00110100
00110010
34
512MByte
0x1FFFFFFF ......
......
......
......
0x00000002 0x00000001 0x00000000
35
AB k 位(给出地址)
AR ......
DB n 位(传送数据)
DR
例如:
例如:某学生的五门课程的学时和成绩为: A课程4个学时,成绩92(A); B课程3个学时,成绩80(B); C课程2个学时,成绩98(A); D课程6个学时,成绩70(C); E课程3个学时,成绩89(B)。 假设所有课程成绩 均不低于C,且学 时数相同。
GPA=(4*4+3*3+2*4+6*2+3*3)/(4+3+2+ 6+3)=3.00