Transcript 没有幻灯片标题
孙爽滋
课程要求
参阅《计算机文化基础》一书第1、2章
课前请做好预习
保持课堂安静,头脑清醒,思维活跃
认真、独立、按时完成并提交作业
重视上机实践,有效利用宝贵的上机时间
第1章 C语言程序设计初步
1.1 C程序设计语言
1.2 计算机中的数据
1.3 C语言符号集
1.4 用库函数组装C语言
1.5 自己设计C函数
第1章 C语言程序设计初步
第三代:面向过程的高级语言= =〉或称算法语言。如:
Fortran,Basic,Pascal,C 等等。
1.1 程序设计语言
优点:灵活,易于理解,容易查错。
缺点:对大型程序而言维护性较差,对“拟定”好的
1.1.1 程序设计语言的发展
程序难以扩充,修改(所谓牵一而动百)。
机
汇
器
编
语
语
冯.诺依曼结构:
言
言
高
级
语
言
运算器
面向过程
面向对象
中央处理器CPU
主机: 控制器
第一代:
客观世界可以分类,对象是类的实例
第二代:汇编语言= =〉用助记符描述的指令系统。
第四代:非过程化的高级语言==〉是一种面向对象的设计
面向机器的语言
机器语言==〉CPU指令系统由0、1序列构成的指令码组成
对象是数据和方法的封装
计算机
存储器
如:Mov
Ax,[bp+4]
语言,如:C++,Java
等等。
如:10000000
加
对象间通过发送和接受消息发生联系
10010000
减 push d1,
优点:灵活、易于理解、维护、修改、扩充。
I/O设备:键盘、显示器等
优点:机器可直接执行,速度快。
优点:比机器语言较易理解,执行速度快。
缺点:掌握难度较大。
程序设计关键是定义类,并由类派生对象
缺点:程序长,难记,难理解,不易查错。
缺点:难度大,非专业人士难以掌握。
第1章 C语言程序设计初步
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
Smalltalk 80
C++
Java
Simula 67
BASIC
FORTRAN
ANSI-BASIC QBASIC VB
FORTRAN90
FORTRAN77
PL/1
COBOL
LISP
PROLOG
第1章 C语言程序设计初步
附:C语言发展过程
1. 1960年出现了Algol60语言,但该语言主
要面向问题,与硬件较远,故英国剑桥大
学 推 出 了 CPL(Combined Programming
Language)
2. 1967年,Matin Richards对CPL进行改进、
简 化 、 推 出 了 BCPL (Basic Combined
Programming Language)
<
>
第1章 C语言程序设计初步
附: C语言发展过程
3. 1970年,美国贝尔实验室Ken Thomson
以BCPL为基础,再次简化推出了B语言,
并写了第一个UNIX系统。
4. 1972年美国贝尔实验室D.M. Ritchie 在B
语言基础上设计出了C语言,并用其将
UNIX系统全部改写并实现。
第1章 C语言程序设计初步
附: C语言发展过程
5. 经进一步改进,至1977年出现了与具体
机器无关的C编译文本,从而使C语言广
泛应用,各种机器皆可使用。
6. 1978 年 , 美 国 Brain W.Kernighan 与
Dennis. M. Ritchie 联合出版一书《The C
Programming Language》成为 ANSI C
之基础。
第1章 C语言程序设计初步
附: C语言发展过程
7. 1983年,美国标准化协会(ANSI) 制定了
ANSI C。
注:以ANSI C 为基础:
不同机器有不同版本,尤其是函数均应参考
相应的版本。
特别说明:
C语言的编译环境有多种
如:Turbo C, Borland C, Microsoft C 等
第1章 C语言程序设计初步
1.1.2 程序设计语言的支持环境
<
>
第1章 C语言程序设计初步
1.1.3 源程序的编辑、编译、连接和执行
1. 编辑 :建立源程序。
2.编译 :检查源程序中的语法错误,并建立目
标代码。
3.连接 :二进制目标代码与系统标准模块连
接,生成可执行文件。
4.运行 :要计算机执行指定的命令。
<
>
第1章 C语言程序设计初步
1.1.3 源程序的编辑、编译、连接和执行
编辑
程序代码的录入,生成源程序*.c
编译
语法分析查错,翻译生成目标程序*.obj
链接
与其它目标程序或库链接装配,生成
可执行程序*.exe
执行
源程序
目标程序 可执行程序
内容
程序设计语言 机器语言 机器语言
可执行
不可以
不可以
可以
文件名后缀
.c
.obj
.exe
第1章 C语言程序设计初步
附:用Turbo C 运行C程序的步骤
Turbo C向用户提供了一个集成开发环境——把
程序的编辑(Edit)、编译(Compile)、连接
(Link)和运行(Run)等操作全部集中在一个界
面上进行。
准备工作——安装 Turbo C。为了能使用Turbo
C,必须先将Turbo C编译程序装入磁盘的某一目录
下,例如放在D盘根目录下一级TC子目录下。
1.调用 Turbo C程序。
DOS状态下,进入TC所在子目录,从键盘
键入“tc” 命令即可。
WINDOWS状态下,双击“tc”图标 菜单区
编辑区
状态区
1.调用 Turbo C程序。
DOS状态下,进入TC所在子目录,从键盘
键入“tc” 命令即可。
WINDOWS状态下,双击“tc”图标 菜单区
编辑区
状态区
在集成开发环境的上部,有一行“主菜单”, 其
中
包括下面8个菜单项:
File Edit Run Compile Project Option Debug
Break/Watch
以上8个菜单项分别代表:文件操作、编辑、运行、编
译、项目文件、选项、调试、中断/观察等功能。
用键盘上的“←”和“→”键可以选择菜单条中所需要
的菜单命令。
File菜单
File下拉菜单
执行Load子菜单
Load对话框
1.调用 Turbo C程序。
DOS状态下,进入TC所在子目录,从键盘
键入“tc” 命令即可。
WINDOWS状态下,双击“tc”图标
2. 编辑(Edit)C语言源文件。根据需要输入或修
改源程序。
3. 编译(Compile)源程序。选择“Compile”菜单
并在其下拉菜单中选择“Compile to OBJ”命令 ,
则进行编译,得到一个后缀为.obj的目标程序。
4. 连接(Link)目标程序,生成可执行文件。选择
菜单命令“Compile/Link EXE file”, 进行连
接操作,可得到一个后缀为.exe的可执行文件。
5. 在编译或连接时,屏幕上会显示有无错误和有几
个错误的提示,在屏幕的下半部分显示出有错误
的行和错误的原因。根据提示信息修改源程序,
再次进行编译和连接。
编辑状态下,
按F9键进行 出错,按
编译
任意键继
续
5. 在编译或连接时,屏幕上会显示有无错误和有几
个错误的提示,在屏幕的下半部分显示出有错误
的行和错误的原因。根据提示信息修改源程序,
再次进行编译和连接。
出错信息
窗
5. 在编译或连接时,屏幕上会显示有无错误和有几
按回车键
个错误的提示,在屏幕的下半部分显示出有错误
回到编辑
的行和错误的原因。根据提示信息修改源程序,
程序状态
再次进行编译和连接。
5. 在编译或连接时,屏幕上会显示有无错误和有几
个错误的提示,在屏幕的下半部分显示出有错误
的行和错误的原因。根据提示信息修改源程序,
再次进行编译和连接。
编辑后,按F9
键重新编译
5. 在编译或连接时,屏幕上会显示有无错误和有几
个错误的提示,在屏幕的下半部分显示出有错误
的行和错误的原因。根据提示信息修改源程序,
再次进行编译和连接。
编译(F9)成功后,
RUN,
按ALT+F5看结果
直接按CTRL+F9,
按ALT+F5看结果
第1章 C语言程序设计初步
1.2 计算机中的数据
1.2.1进位计数制
是人们利用符号来计数的方法。一种进位
计数制包含一组数码符号和两个基本因素
(1)基:
数制所使用的数码个数称为“基”。
(2)权:
数制每一位所具有的值称为“权”。
第1章 C语言程序设计初步
1.2 计算机中的数据
1.2.2 二进制计数及其运算
二进制特点
(1)易于物理实现
二进制数的表示方法
(2)运算规则简单: R ×(R+1)/2种规则
二进制数的算术运算规则:
(3)机器运行可靠性高
(1)数码为2个:0和1。
(4)通用性强适于数值信息和非数值信息的处理。
(2)进位方法:逢2进1,借1当2。
(3)位权:……23,22,21,20,2-1,2-2,2-3……
(4)举例:
01011010.01=0×27+1×26+0×25+1×24+1×23
+0×22+1×21+0×20+0×2-1+1×2-2
第1章 C语言程序设计初步
1.2 计算机中的数据
1.2.2 二进制计数及其运算
二进制数的算术运算规则:
(1) 加法:
0+0=0
0+1=1+0=1
1+1=10 (有进位)
(3) 乘法:
0×0=1×0=0×1=0
1×1=1
(2) 减法:
0-0=1-1=0
1-0=1
0-1=1 (向高位借位)
(4) 除法:
0÷1=0
1÷1=1
第1章 C语言程序设计初步
[例1] 1010+0111=?
[例2] 1010-0111=?
<解1> 1010
<解2> 1010
+ 0111
-0111
10001
0011
第1章 C语言程序设计初步
1.2 计算机中的数据
1.2.3 不同进制之间的转换
1.二、八、十六进制 十进制
原则:按位权展开法
即把一个任意R进制数转换成十进制数,其十
进制数值为每一位数字与其位权之积的和。
[例1] 101101.01B=1×25+0×24+1×23+1×22+0×21
+1×20 +0×2-1 +1×2-2=45.25
[例2] 1705.25O=1×83+7×82+0×81 +5×80 +2×8-1
+5×8-2 =965.328125
[例3] 49B7.1H=4×163+9×162+11×161+7×160
+1×16-1 =18871.0625
第1章 C语言程序设计初步
1.2 计算机中的数据
1.2.3 不同进制之间的转换
2.二、八、十六进制 十进制
原则:整数部分除R取余倒排序法
小数部分乘R取整顺排序法
[例1] 725.625=( ? )B
第1章 C语言程序设计初步
[例1] 725.625=( ? )B=1011010101.101
[解1] 整数部分:
2|725
2|362 …………余数=1
2|181 …………余数=0
2|90 …………余数=1
2|45 …………余数=0
2|22 …………余数=1
2|11 …………余数=0
2|5 …………余数=1
2|2 …………余数=1
2|1 …………余数=0
0 …………余数=1
商为0,转换结束
小数部分:
0.625
×
2
1.250…整数=1
0.250
×
2
0.500…整数=0
×
2
1.000…整数=1
0.000
积为0, 转换结束
第1章 C语言程序设计初步
(139)10=(?)2
2
139 (余1
2 69
(余1
2 34
(余0
2 17
(余1
2 8
(余0
除
余
(余0
2 4
法
2 2
(余0
2 1
(余1
0
(139)10=(10001011)2
10001011
第1章 C语言程序设计初步
[例2] 59.32 =( 111011.0101001 )B
[解2] 小数部分:
0.32
× 2
0.64…...整数=0
× 2
1.28 …..整数=1
0.28
×
2
0.56……整数=0
×
2
1.12……整数=1
0.12
×
2
0.24……整数=0
×
2
0.48…….整数=0
×
2
0.96…….整数=0
整数部分:
2|59
2|29 …………..余数=1
2|14 …………..余数=1
2|7 …………..余数=0
2|3 ……..……余数=1
2|1 …………..余数=1
0 …………..余数=1
商为0,转换结束
提示:
若小数部分经
过乘2取整运算后,
无法得到0.000,则
当达到题目要求的精
度即可停止进制间的
转换。
第1章 C语言程序设计初步
3.八、十六进制二进制
(1) 每一位八进制数对应一个三位二进制数,逐位展开。
(2) 每一位十六进制数对应一个四位二进制数,逐位展开。
八进
制数
二进
制数
十六进制
数
二进
制数
十六进制
数
二进
制数
0
1
2
3
000
001
010
011
0
0000
8
1000
1
2
3
0001
0010
0011
9
a
b
1001
1010
1011
4
5
6
100
101
110
4
5
6
0100
0101
0110
c
d
e
1100
1101
1110
7
111
7
0111
f
1111
第1章 C语言程序设计初步
3.八、十六进制二进制
(1) 每一位八进制数对应一个三位二进制数,逐位展开。
(2) 每一位十六进制数对应一个四位二进制数,逐位展开。
[例] 1. 6 3571.402O=(?)B
2. 91a28.b71H=(?)B
第1章 C语言程序设计初步
3.八、十六进制二进制
(1) 每一位八进制数对应一个三位二进制数,逐位展开。
(2) 每一位十六进制数对应一个四位二进制数,逐位展开。
4.八、十六进制二进制
(1)二八:将二进制数从小数点开始分别向左
(即整数部分)或向右(即小数部分)每三位组成一组,
不足三位补零;将每组三位二进制数用相应的一个
八进制数表示。
(2) 二十六:将二进制数从小数点开始分别向
左(即整数部分)或向右(即小数部分)每四位组成一组,
不足四位补零。将每组四位二进制数用相应的十六
进制数表示。
[例] 1. 11100.11001=(?)O=(?)H
2. 1011001.1101011=(?)O=(?)H
第1章 C语言程序设计初步
[解]:
1. 11100.11001=(?)O=(?)H
=011 100.110 010 =34.62O
=0001 1100.1100 1000 =1c.c8H
2. 1011001.1101011=(?)O=(?)H
=001 011 001.110 101 100
=131.654O
=0101 1001.1101 0110 =59.d6H
3. 3571.402O=(?)B
=110 011 101 111 001.100 000 010B
4.
91a28.b71H=(?)B
=1001 0001 1010 0010 1000.1011 0111 0001B
第1章 C语言程序设计初步
附:原码、反码、补码
1. 原码表示法——最高位表示数的符号,其他为数值位。
如:[97]原=01100001
——若用8位表示一个整数
[-97]原=11100001
2. 反码表示法——正数的反码等同于原码
负数的反码是将正数的原码取反
如: [97]反= [97]原 =01100001
[-97]反= [97]原=10011110
第1章 C语言程序设计初步
附:原码、反码、补码
3. 补码表示法
——正数的补码等同于原码
负数的补码是将各位取反,末位加1
如:
如:
[97]补=[97]反= [97]原 =01100001 [2]补=[2]反= [2]原 =00000010
[-97]补=1 0011110
[-2]补= 1 1111101
+1
+1
1 0011111
1 1111110
第1章 C语言程序设计初步
1.3 C语言符号集
1.3.1 基本符号集
在C语言中可出现的字符:大小写
英文字母、数字转义字符和键盘字符。
1.3.2 标识符
用来标识变量名、函数名、数组名
和文件名等对象的有效字符序列。
第1章 C语言程序设计初步
1.3 C语言符号集
1.3.1 基本符号集
1.3.2 标识符
命名规则:
(1)由英文字母、数字和下划线组成,且首字符必须
是字符或下划线
(2)长度不限,但一般前8个字符有效
(3)不可和关键字同名(见表1-2)
(4)严格区分大小写
(5)做到“见名知意”
第1章 C语言程序设计初步
1.4 用库函数组装C语言
<例>第一个程序 Hello,World!
/* The first C Program*/
编译预处理
#include <stdio.h>
函数
main()
{
语句
printf(“Hello,World!”);
}
输出:
Hello,World!
注释
第1章 C语言程序设计初步
/* The first C Program-——modified!*/
#include <stdio.h>
main()
{
printf(“Hello,World!”);
getch();
}
1. 本程序的作用是在屏幕上输出“Hello World!.”一行信息:
2. 其中 main 表示“主函数”。每一个C程序都必须有且只有一个
main 函数;
3. 函数体由大括弧{}括起来;
4. 本例中主函数内只有一个输出语句-printf语句;
5. “\n”是换行符,即在输出“This is a C program.”后回车换
行;
6. 每条语句最后有一分号;
<例>第二个程序:求任意两个数中的大值。 第1章
C语言程序设计初步
/*the example calculate the maximum of a and b*/
#include <stdio.h>
预处理命令
1.5
自己设计C函数
/* This is the main program */
main()
注释
函数
{
int a,b,c;
scanf(“%d%d”,&a,&b);
c=max(a,b);
语句
printf(”max= %d\n",c);
}
/* This function calculates the max of x and y */
int max(int x,int y)
{
运行结果:
if(x>y) return (x);
12 24
else return (y);
max=24
}
<例>第二个程序:求任意两个数中的大值。 第1章
C语言程序设计初步
/*the example calculate the maximum of a and b*/
#include <stdio.h>
/* This is the main program */
main()
{
/*声明部分,定义变量*/
int a,b,c;
scanf(“%d%d”,&a,&b); /*通过键盘输入变量a、b的值*/
/*调用max函数,将得到的值赋给c*/
c=max(a,b);
printf(”max= %d\n",c);
/*输出c的值*/
}
/* This function calculates the max of x and y */
int max(int x,int y)
{
if(x>y) return (x);
else return (y);
}
第1章 C语言程序设计初步
格式特点
习惯用小写字母,大小写敏感
main(
main() )
不使用行号,无程序行概念
{ { ……………….
可使用空行和空格
int………………
i , j , sum;
常用锯齿形书写格式
sum=0;
…………..
for(i=1;
i<10;i++)
…………..
{
优秀程序员的素质之一:
………
for(j=1;j<10;j++)
使用TAB缩进
……….
{ ……………
{ }对齐
sum+=i*j ;
有足够的注释
…………….
}
有合适的空行
……………….
} ………………..
} printf(“%d\n”,sum);
}
< >
第1章 C语言程序设计初步
结构特点
函数与主函数
程序由一个或多个函数组成
必须有且只能有一个主函数main()
程序执行从main开始,在main中结束,其它函数通过嵌套
调用得以执行。
程序语句
C程序由语句组成
用“;”作为语句终止符
注释 例: /*This is the main /* of example1.1*/ */
/*
*/为注释,不能嵌套
不产生编译代码
<
非法
编译预处理命令
>