C语言概述PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20
第20页/共41页
4
用计算机语言表示算法
要完成一件工作,包括设计算法和实现算法两个部分。设 计算法的目的是为了实现算法。
我们的任务是用计算机解题,也就是要用计算机实现算法。 计算机是无法识别流程图和伪代码的。
只有用计算机语言编写的程序才能被计算机执行(当然还 要经过编译成目标程序才能被计算机识别和执行)。
• 程序设计语言
机器语言 特点:面向机器的二进制表示的语言。 汇编语言 特点:面向机器的符号化的机器语言。 高级语言 特点:面向问题的类自然语言。
2+3
A2+D3D 2, 3
5
第5页/共41页
C语言发展历史
程序设计语言的发展
程序设计侧重于系统功能 解题过程是数据被加工的过程
机
汇
高
面向过程
器
编
级
语
语
因此,在用流程图或伪代码描述出一个算法后,还要将它 转换成计算机语言程序。
用计算机语言表示算法必须严格遵循所用语言的语法规则, 这是和伪代码不同的。我们将前面介绍过的算法用C语言 表示。
21
第21页/共41页
【例】 求10!
vlong t;
t=1;
i=2;
while(i<=10)
A
P
成立
不成
B
立
A
B
0⇒s,1⇒i 当i≤100成立
s+i⇒s
当P成立
A
i+1⇒i
A
直到P成立
输出s的值
17
第17页/共41页
3
用伪代码表示算法
用传统的流程图表示算法,直观易懂,但画起来比较费事。 因此,流程图适宜表示一 个算法,但在设计算法过程中 使用不是很理想。为了设计算法时方便,常用一种称为伪 代码(pseudo code)的工具。
27
第27页/共41页
/* example calculate the sum of a and b*/
#include <>
预处理命令
/* This is the main program */
main() { int a,b,sum;
函数
a=10;
b=24;
sum=add(a,b);
语句
printf(”sum= %d\n",sum);
10000000加10010000减用助记符号描述的指令系统如addab面向机器的语言程序设计侧重于系统功能解题过程是数据被加工的过程客观世界可以分类对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类并由类派生对象c语言发展历史8c语言概述?程序设计?确定数据结构?确定算法?编写程序?程序调试?整理源程序并总结资料?程序设计结构?顺序结构?选择结构?循环结构9算法是指解决问题的方法和步骤
课程目标:
熟悉C 语言的基本概念 熟悉Turbo C的上机操作环境 会读、会编、会调试C程序 顺利通过省二级考试
课程要求:
课堂做笔记 多上机实习
1
第1页/共41页
运算器
计
硬件
控制器 存储器 输入输出设备
算
机
操作系统
系
数据库系统
统
系统软件
网络系统
软件
机器语言和汇编语言 程序设计语言
与语言处理程序 高级语言:C语言、Fortran、Pascal
10
第10页/共41页
• 算法 衡量算法优劣的标准: (1) 思路:清晰、正确。 (2) 过程:简单、明了、扼要。 (3) 算法:合适。
11
第11页/共41页
算法的特征
算法的五个基本特征: • 有穷性 一个算法必须在有限次执行后完成。 • (2) 确定性 算法中的每一个步骤都应当是确定的,而不应当是含
糊的、模棱两可的 (3) 输入 是指在执行算法时需要从外界取得必要的信息,提供运算对象
的初始情况,一个算法有0个或多个输入。 (4) 输出 一个算法要有一个或多个输出。若无输出,则无法知道结果。 (5) 有效性 算法中的每一个步骤都应该被有效地执行,并应能得到一
个明确的结果。 实质上,算法反映的是解决问题的思路。许多问题,只要仔细分析对
• 不使用行号,无程序行概念 • 可使用空行和空格 • 常用锯齿形书写格式
优秀程序员的素质之一:
使用TAB缩进 {}对齐 有足够的注释 有合适的空行
m{ am{{inisfnoau(trimn)(…f{…ii(o==,…r)1…0(j;j;s…………=,……iu<1s…………m…1;…uj……<0+m……………;1…=i……+;0…………i…*…+;j……j+)..…….;..+..) }……………….
开始 作: 结束
置t的初值为1 置i的初值为2
当i<=20,执行下面操
使t=t×i 使i=i+1 (循环体到此结束) 打印t的值
也可以写成以下形式:
BEGIN(算法开始) 1=>t 2=>i while i<=20 {t×i=>t i+1=>i} print t
END(算法结束)
在本算法中采用当型循环(第3行到 笫5行是一个当型循环)。while 意思为“当”, 它表示当i<=5时 执行循环体(大括弧中的两行) 的操作。
应用软件
面向对象的程序设计:C+ +
2
第2页/共41页
第1章
• 1.1 程序与程序语言
C语言概述
• 1.2 算法概述
• 1.3 C语言概况
• 1.4 C程序的开发过程与开发环境
3
第3页/共41页
【本章导读】
本章从C语言的发展出发,主要介绍C语言的发展 历史、基本特点和简单的C语言程序结构与组成,重 点介绍了算法的含义与算法的描述工具,以传统流 程图为重点分析了算法的描述方法。
9
第9页/共41页
例续
设置两个变量,一个变量代表被乘数,一个变量代表乘数。 不另设变量存放乘积结果,而直接将每一步骤的乘积放在 被乘数变量中。今设t为被乘数,i为乘数。用循环算法来结 果。可以将算法改写如下: S1: 使1 =>t S2: 使2 =>i S3: 使t×i,乘积仍放在变量t中,可表示为t×i=>t S4: 使i的值加1,即i+1 => i S5: 如果i <=20,返回重新执行步骤S3以及其后的步骤S4 和S5;否则,算法结束。最后得到t的值就是20!的值。
24
第24页/共41页
C语言的特点(续)
(4) 数据结构丰富,便于数据的描述与存储
C语言具有丰富的数据结构,其数据类型有整型、实型、 字符型、数组类型、指针类型、结构体类型、共用体类 型等,因此能实现复杂的数据结构的运算。
(5) C语言是结构化、模块化的编程语言
程序的逻辑结构可以使用顺序、分支和循环3种基本结 构组成。C语言程序采用函数结构,十分便于把整体程 序分割成若干相对独立的功能模块,并且为程序模块间 的相互调用以及数据传递提供了便利。
通过本章的学习,要求达到以下目标: 了解C语言的形成、发展和基本特点;了解程序、 程序设计、高级语言的概念;掌握C语言程序的基本 结构和组成;掌握计算机算法的基本概念和算法描 述的基本工具;运用传统流程图描述一个具体的算 法。
4
第4页/共41页
1.1 程序与程序设计语言
• 1程序:指令的集合 数据结构+算法=程序
26
第26页/共41页
C程序格式和结构特点
例 第一个程序 Hello,World!0
/* example1.1 The first C Program*/
#include <>
预处理命令
main()
函数
{
printf(“Hello,World!”); 语句
} /*ch1_1.c*/
注释
输出: Hello,World!
程序设计结构 顺序结构 选择结构 循环结构
7
第7页/共41页
1.2 算法概述 算法概念 算法是指解决问题的方法和步骤。 正确的计算机程序必须具备两个基本条件: 一是掌握一门计算机高级语言的规则 二是要掌握解题的方法和步骤
8
第8页/共41页
算法简例
【例】求 1×2×3×……×20 可以用最原始的方法进行。 步骤1: 先求1×2,得到结果2。 步骤2: 将步骤1得到的乘积2再乘以3,得到结果6。 步骤3: 将6再乘以4,得24。 步骤4: 将24再乘以5,得120。 …… 这样的算法虽然是正确的,但太繁琐。如果要求 1×2×…×1000,则要写999个步骤,显然是不可取的。 而且每次都直接使用上一步骤的数值结果(如2,6,24 等),也不方便。应当找到一种通用的表示方法。
IF x is positive THEN print x
ELSE print –x
它像一个英语句子一样好懂,在国外用得比较普遍。也可以用汉字伪代码,如: 若 x为正
打印 x 否则
打印 –x 也可以中英文混用,如: IF x 为正
print x ELSE
print –x
19
第19页/共41页
例
求20!用伪代码表示的算法如下:
语
言
言
言
面向对象
一如种:C110P0面00U01向指00用如0机0令0助00器A0系记D的统D程符语,加减序号客对对言由A设描观象象,0计述B、世是间关的1界数通序键指可据过列是令以和发构定系分方送成义统类法和的类,的接指,对封受令并象装消码由是息组类类发成派的生生实联对例系象
6
第6页/共41页
程序设计 确定数据结构 确定算法 编写程序 程序调试 整理源程序并总结资料
(6) C语言程序中,可使用宏定义编译预处理语句、条件 编译预处理语句,为编程提供了方便。
25
第25页/共41页
C语言的特点(续)
(7) 可移植性好 与汇编语言相比,C程序基本上不作修改就可以运行于各 种型号的计算机和各种操作系统。 (8) C语言也存在一些不足之处,例如运算符及其优先级 过多、语法定义不严格等,对于初学者有一定的困难。 由于C语言具有上述特点,因此C语言得到了迅速推广, 成为人们编写大型软件的首选语言之一。许多原来用汇 编语言处理的问题可以用C语言来处理了。
伪代码是用介于自然语言和计算机语言之间的文字和符号 来描述算法。它如同一篇文章,自上而下地写下来。每一 行(或几行)表示一个基本操作。它不用图形符号,因此书 写方便 、格式紧凑,也比较好懂,便于向计算机语言算 法(即程序)过渡.
18
第18页/共41页
例如 “打印x的绝对值”的算法可以用伪代码表示如 下:
{
t=t*i;
i=i+1;
}
printf("%d",t);
}
22
第22页/共41页
1.3 C语言概况
• 产生背景
– 汇编语言程序依赖于计算机硬件,可读性和可移植性 都差
– 一般的高级语言又难以实现对计算机硬件的直接操作
• 产生过程 (BCPL → B → C)
– 时间:1972~1973
– 地点:美国贝尔实验室
图 具有连接点的流程图
15
第15页/共41页
【例】 画出求1×2×3×……×20的流程图
Y
i <=20
N
Y
i <=20
N
图1.4 求20!
第16页/共41页
图1.5 求20!并输
16
2
N-S图
1973年美国学者提出了一种新的流程图形式。在 这种流程图里,完全去掉了带箭头的流程线。全部算法 写在一个矩形框内,在框内还可以包含其它从属于它的 方框,即由一些基本的框组成一个大框。这种流程图适 于结构化程序设计算法的描述。
– 目的:UNIX操作系统
– 设计人: 、和
• C标准
– 标准C: K&R合著第2《3页T/h共e4C1页Programming Language》
23
C语言的特点
(1) C语言是具有低级语言功能的高级语言 C语言既具有高级语言的功能,又具有低级语言的许多功能。它把高级 语言的基本结构和语句与低级语言的实用性结合起来,是处于汇编语 言和高级语言之间的一种程序设计语言,也可称其为“中级语言”。 (2) C语言简洁、紧凑,使用方便、灵活 C语言一共只有32个关键词,9种控制语句,增加了11个关键词(用于 各种增强和扩展功能)。程序书写形式自由,主要用小写字母表示, 相对于其他高级语言源程序短。 (3) 运算符丰富,表达式能力强 C语言共有34种运算符,范围广泛,除一般高级语言所使用的算术、 关系和逻辑运算符外,还可以实现以二进制位为单位的运算,并且具 有如a++,--b等单项运算符和+=、-=、*=、/+等复合运算符等。
}
注释
/* This function calculates the sum of x and y */
int add(int x,int y)
{ int z;
z=x+y; return(z);
运行结果:
} /*ch1_2.c*/
sum=34
28
第28页/共41页
格式特点
• 习惯用小写字母,大小写敏感
} }print…f(“…%…d\n…”,…su…m)..; }
29
第29页/共41页
结构特点
• 函数与主函数
– 程序由一个或多个函数组成
– 必须有且只能有一个主函数main()
– 程序执行从main开始,在main中结束,其它 函数通过嵌套调用得以执行。
象数据,就容易找到处理方法。
12
第12页/共41页
算法的表示
• 算法的表示方法很多,主要有:
•
自然语言
• 传统流程图
•
N-S图
•
伪代码
•
计算机程序语言
13
第13页/共41页
1
传统流程图
起止框 处理框 流程线
判断框 连接点 数据
图 常用流程图符号
14
第14页/共41页
Y
x≥
输出x 0
N
输出-x
图 条件判断图