没有幻灯片标题

Download Report

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*/ */
 /*
*/为注释,不能嵌套
 不产生编译代码

<
非法
编译预处理命令
>