程序设计基础第一章_第1页
程序设计基础第一章_第2页
程序设计基础第一章_第3页
程序设计基础第一章_第4页
程序设计基础第一章_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计基础第一章第1页,共114页,2022年,5月20日,11点58分,星期五联系方式cwy主楼B1-513 第2页,共114页,2022年,5月20日,11点58分,星期五学时:24+24成绩构成: 平时10, 期中10分 实验20分,期末60 分考试:闭卷、笔试第3页,共114页,2022年,5月20日,11点58分,星期五教材: C语言程序设计 黄迪明 等 电子科技大学出版社 2008.7第4页,共114页,2022年,5月20日,11点58分,星期五参考书Brian W. Kernighan,Demis RitchieThe C Programming Language 2nd E

2、d(英文影印版)清华大学出版社 2000谭浩强 C程序设计(第3版) 清华大学出版社 2005第5页,共114页,2022年,5月20日,11点58分,星期五程序设计Programming给出解决特定问题程序的方法和过程,是软件构造活动的重要组成部分专业的程序设计人员称为程序员程序设计过程应当包括需求分析 设计 编码 测试 维护五个阶段,并生成各种文档资料。第6页,共114页,2022年,5月20日,11点58分,星期五程序设计程序设计需要以某种程序设计语言为工具:编写出该语言的程序。第7页,共114页,2022年,5月20日,11点58分,星期五问题什么是程序设计语言?什么是程序?什么是软件

3、?程序设计语言与程序的关系是什么?第8页,共114页,2022年,5月20日,11点58分,星期五语言:一组规则的组合自然语言中的英语:1)字母表的定义;2)词法规则:单词符号的形成规则 一个单词对应一条形成规则,规定了该单词由哪些字母按照什么顺序进行排列第9页,共114页,2022年,5月20日,11点58分,星期五3)语法规则:语法单位的形成规则 短语、从句、句子、段落、文章4)语义规则: 单词符号和语法单位的含义规则第10页,共114页,2022年,5月20日,11点58分,星期五5)语用规则: 语义规则的发展和延伸 强调在一定的语境中使用单词和语法单位时体现出来的具体意义 需要根据上下

4、文进行明确第11页,共114页,2022年,5月20日,11点58分,星期五思考英语和英语文章的关系?第12页,共114页,2022年,5月20日,11点58分,星期五程序设计语言: 用于程序设计的人工语言第13页,共114页,2022年,5月20日,11点58分,星期五程序设计语言机器语言:第一代程序设计语言 字母表:0,1 单词符号:操作码、地址 语法单位: 指令 10111000 1001 1110 程序 指令的组合第14页,共114页,2022年,5月20日,11点58分,星期五机器语言编写程序十分繁琐和痛苦;程序不便于记忆、阅读和书写,容易出错(查错和改错,十分困难);每类计算机的指

5、令系统各不相同,可移植性很差,造成了重复工作。第15页,共114页,2022年,5月20日,11点58分,星期五机器语言指令针对特定型号的计算机(与机器有关,低级语言) 运算效率很高第16页,共114页,2022年,5月20日,11点58分,星期五汇编语言字母表:主要增加了英文字母单词符号: 操作码、内存符号、寄存器、数据语法单位: 指令 ADD A,R0 程序 指令的组合第17页,共114页,2022年,5月20日,11点58分,星期五汇编语言:第二代计算机语言助记忆符:用与代码指令含义相近的英文缩写词、字母和数字等符号取代指令代码较容易理解程序,纠错及维护变得较方便汇编语言仍然是面向机器的

6、语言(低级语言),仍比较繁琐,通用性也差。第18页,共114页,2022年,5月20日,11点58分,星期五汇编语言需要将汇编语言指令翻译成机器语言的指令:汇编汇编语言程序的目标程序占用内存空间少,运行速度快有着高级语言不可替代的用途 第19页,共114页,2022年,5月20日,11点58分,星期五高级程序设计语言1)字母表的定义;2)词法规则:一般有五类单词符号3)语法规则: 语法单位包括:表达式、语句、模块、程序第20页,共114页,2022年,5月20日,11点58分,星期五高级程序设计语言4)语义规则:5)语用规则:无二义的6)其他规则: 如数据类型的定义、运算符优先级的定义、参数的

7、传递方式、作用域的规定等第21页,共114页,2022年,5月20日,11点58分,星期五FORTRAN语言的一条语句: if (num0) then abs:=num else abs:=-num;第22页,共114页,2022年,5月20日,11点58分,星期五高级程序设计语言独立于计算机的硬件对具体的算法进行描述(算法语言)独立性,通用性和可移植性好第23页,共114页,2022年,5月20日,11点58分,星期五高级程序设计语言一般包含有以下四种成分:数据成分:描述程序所涉及的数据运算成分:描述运算控制成分:表达程序的控制结构传输成分:表达数据的传输(输入输出、文件读写操作)第24页,

8、共114页,2022年,5月20日,11点58分,星期五高级程序设计语言高级语言的程序主要是描述计算机的解题过程,即描述复杂的加工处理过程,所以也称高级语言为面向过程语言。计算机不能直接执行高级语言的程序(源程序);通常有解释方式和编译方式两种方法在计算机上执行程序(目标程序)。第25页,共114页,2022年,5月20日,11点58分,星期五第26页,共114页,2022年,5月20日,11点58分,星期五思考 大量的程序设计语言被发明、被取代、被修改或组合在一起; 尽管多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的 WHY?第27页,共114页,2022年,5月20日,11点5

9、8分,星期五高级语言的发展从 早期语言 到 结构化程序设计语言从 面向过程 到 非过程化程序语言第28页,共114页,2022年,5月20日,11点58分,星期五FORTRAN=FORmula TRANslation 主要用于科学计算2.ALGOL 60=ALGOrithmic Language 60 采用BNF形式描述语法一. 早期的高级语言(50年代)第29页,共114页,2022年,5月20日,11点58分,星期五早期的高级语言 3. COBOL COmmon Business Oriented Language.广泛应用于各种事务处理领域.引入了文件和数据描述第30页,共114页,20

10、22年,5月20日,11点58分,星期五基于数学原则的语言 1. LISP.其基础是函数和函数作用2. APL.支持函数式程序设计风格.应用于大量矩阵运算的科学计算二.早期的突破第31页,共114页,2022年,5月20日,11点58分,星期五3. SNOBOL 4 .主要用于字符串处理 . 与机器无关的宏功能,增加了程序的可移植性第32页,共114页,2022年,5月20日,11点58分,星期五PL/1 .希望将所有语言概念集成大全 .分程序概念和递归过程 .数据描述机能 .动态数据结构 .异常处理 .多任务机能 .可用于科学数值计算,数据处理等 .难以得到广泛的应用三. 概念的集成(64年

11、)第33页,共114页,2022年,5月20日,11点58分,星期五 引入了许多有趣的概念1. ALGOL 68 .以零型文法描述语法规则 .引入正交性和通用性原则四. 再一次突破(60年代后期)第34页,共114页,2022年,5月20日,11点58分,星期五2. SIMULA67 .应用于模拟领域 .协同程序 .引入了类的概念第35页,共114页,2022年,5月20日,11点58分,星期五3. PASCAL .具有明显的简洁性 .体现结构程序设计思想 .具有用户自定义类型 利用语法图形式描述语法规则第36页,共114页,2022年,5月20日,11点58分,星期五 4. BASICBeg

12、inners All-purpose Symbolic Instruction Code .简单易学 .交互式工作环境 .解释执行第37页,共114页,2022年,5月20日,11点58分,星期五70年代,支持系统软件开发1. 语言研究 涉及抽象数据类型,异常处理和并行处理机制 2. MODULA-2 .支持模块结构,模块可以独立编译 .面向实时系统和并行系统综合功能五. 大量的探索第38页,共114页,2022年,5月20日,11点58分,星期五3. C CPLBCPLBC .具有高级语言和低级语言的优点 .应用于各种领域第39页,共114页,2022年,5月20日,11点58分,星期五70

13、年代以后,注重可移植性 1. Ada .面向专门领域的特殊要求 .是在引入了一个不大的,容易理解的 概念集合的基础上开发的 .体现许多现代软件设计方法学的语言 .提高程序的可读性,可靠性,可维护性六. Ada和第四代语言第40页,共114页,2022年,5月20日,11点58分,星期五2. 第四代语言超高级语言 面向问题 .表达力强,更接近于问题的描述 .着重关心的是:做什么第41页,共114页,2022年,5月20日,11点58分,星期五 Java、HTML Java是一种通用、并发、基于类的面向对象的程序设计语言。面向对象实现:编译与解释相结合分布性、安全性、并发性七. 网络时代的语言第4

14、2页,共114页,2022年,5月20日,11点58分,星期五抛弃冯.诺依曼体系结构包括函数式,逻辑式语言应用于人工智能等领域八. 新一代程序设计语言第43页,共114页,2022年,5月20日,11点58分,星期五1.基础 存储器,控制器,处理器,ip2.特点 数据或指令以二进制形式存储; 存储程序的工作方式; 程序顺序执行;可强制修改执行顺序 存储器的内容可以被修改。 冯.诺依曼体系结构(模型)第44页,共114页,2022年,5月20日,11点58分,星期五ip代码存储器(C)数据存储器(D)第45页,共114页,2022年,5月20日,11点58分,星期五一些高级语言的关系第46页,共

15、114页,2022年,5月20日,11点58分,星期五程序设计语言的发展小结 机器语言汇编语言高级语言 用机器语言编写的程序由二进制代码组成,计算机可以直接执行。 将机器语言符号化,于是产生了汇编语言。 机器语言和汇编语言都是与机器有关的语言,通常称为低级语言。第47页,共114页,2022年,5月20日,11点58分,星期五C语言的发展1963年,在ALGOL 60 的基础上,英国剑桥大学推出了CPL(Combined Programming Langurage)语言。1967年英国剑桥大学的 Matin Richards对CPL语言做了简化,推出了 BCPL (Base CPL )语言。1

16、970年美国贝尔实验室的 Ken Thompson 对 BCPL 进一步简化,设计出了简单的而且很接近硬件的 B 语言,并用B语言写出了第一个 UNIX 操作系统。第48页,共114页,2022年,5月20日,11点58分,星期五1972年至1973年间,贝尔实验室的戴尼斯利奇(Demis Ritchie)和布朗卡尼汉(Brian Kernighan)在 B 语言的基础上设计出了 C 语言(BCPL)。C语言即保持 BCPL 语言和 B 语言的优点(精练、接近硬件),又克服了他们的缺点(过于简单,数据无类型等)。 1973年新的UNIX版本完全用C语言编写 第49页,共114页,2022年,5

17、月20日,11点58分,星期五1977年出现了可移植C语言的编译程序 ,推动了UNIX在各种机器上实现 ,C语言也迅速得到推广,其发展相辅相成。1978年以后,C语言先后移植到大、中、小、微型计算机上,成为最广泛使用的计算机程序设计语言之一。第50页,共114页,2022年,5月20日,11点58分,星期五1978年在Brian W.Kernighan和Dennis M.Ritchie 合著的The C Programming Language 成为C语言的标准。第51页,共114页,2022年,5月20日,11点58分,星期五1983年,美国国家标准化协会(ANSI)根据C语言各种版本对C的

18、发展和扩充,制定了新的标准ANSI C,比标准C有了很大的发展1987年,ANSI公布了新标准:87 ANSI C。1989年,公布了新的C语言标准C891990年,ISO接受C89作为国际标准,通常称为C90第52页,共114页,2022年,5月20日,11点58分,星期五1999年,ISO对C语言增加了一些面向对象的特征,简称为 C99。 目前流行的C语言编译系统大多是以C89为基础进行开发的。第53页,共114页,2022年,5月20日,11点58分,星期五第一章 C语言程序设计基础知识 C语言是一种通用的高级程序设计语言当今世界上最流行的程序设计语言之一开发系统软件和应用软件中得到广泛

19、应用本章简介C语言程序设计相关的基础知识 第54页,共114页,2022年,5月20日,11点58分,星期五1.1 引言1.1.1 计算机与信息社会计算机定义: 一种在事先存入程序的控制下,能够接收数据、存储数据、处理数据并提供处理结果的数字化电子设备。第55页,共114页,2022年,5月20日,11点58分,星期五计算机工作流程图输入运算与控制存储输出数据计算机结果第56页,共114页,2022年,5月20日,11点58分,星期五1.1.2 计算机中信息的表示 1.计算机内所有信息采用二进制表示 2.采用二进制的原因: 1)二进制只包含0和1,因此可用大量具有两种不同稳定状态的元件来表示。

20、 2)二进制数的运算规则简单,使得计算机中的运算部件的结构变得比较简单。第57页,共114页,2022年,5月20日,11点58分,星期五3 .计算机中信息的表示数值直接转换为二进制字符采用ASCII编码(7位、美国标准信息交换码)其它信息(汉字、图形、图象、声音、表格)也有相应的编码标准和规则。第58页,共114页,2022年,5月20日,11点58分,星期五 计算机系统软件系统硬件系统系统软件(操作系统、编译程序、诊断程序系统服务软件等)应用软件(信息管理软件、游戏等)CPU控制器运算器输入设备(鼠标、键盘、手写笔、MIC等)输出设备(显示器、绘图仪、打印机等)存储器 内存储器(RAM)外

21、存储器(软盘、硬盘、光盘)1.1.3 计算机系统的组成第59页,共114页,2022年,5月20日,11点58分,星期五程序的灵魂算法一个程序应包括: 对数据的描述:在程序中要指定数据的类型和数据的组织形式 即数据结构(data structure) 对数据进行操作的描述:即操作步骤,也就是算法(algorithm)第60页,共114页,2022年,5月20日,11点58分,星期五Nikiklaus Wirth 提出的公式: 程序=数据结构+算法目前 程序=算法+数据结构 +程序设计方法+语言工具和环境 第61页,共114页,2022年,5月20日,11点58分,星期五算法及其表示算法:解决问

22、题所采取的一系列步骤例,要求用一个给定的半径计算圆的面积,计算机算法为: 设置半径值r; 使用公式s=r2; 显示S的值。第62页,共114页,2022年,5月20日,11点58分,星期五算法的特点(1)有输入 算法可以有零个或多个输入。输入是用来在一个算法的执行过程中,向它提供处理对象(数据)或控制算法执行过程的信息。(2)有输出 算法必须具有一个或多个执行结果的输出。没有输出的算法是一个无效的算法。第63页,共114页,2022年,5月20日,11点58分,星期五算法的特点(3)有穷性 任何算法都应该在执行有穷步骤之后结束。(4)确定性 算法不能具有二义性。算法中每一步的语义都应该清晰明了

23、,明确指出应该执行什么操作,如何执行操作。第64页,共114页,2022年,5月20日,11点58分,星期五算法的特点(5)高效性 根据算法编写出来的程序应具有较高的时空效率。 执行时间短 不占用过多内存。第65页,共114页,2022年,5月20日,11点58分,星期五算法的表示(描述)自然语言表示 易理解和交流,但易产生二义性。伪代码表示 伪代码使用介于自然语言和计算机语言之间的文字和符号来描述算法 (用形式化语言描述算法的逻辑过程)第66页,共114页,2022年,5月20日,11点58分,星期五算法的表示(描述)程序流程图 用图形符号和文字说明来表示数据处理的过程和步骤。N-S流程图

24、也称方框图;适于结构化程序设计的算法描述工具。第67页,共114页,2022年,5月20日,11点58分,星期五程序流程图是描述算法的良好工具。由逻辑框和流向线组成。 逻辑框是表示程序操作功能的图形符号。 流向线用来指示程序的逻辑处理顺序。第68页,共114页,2022年,5月20日,11点58分,星期五流程图的逻辑框起止框 表示程序的开始和结束。处理框 表示一种处理功能或程序段,框内用文字简述其功能。第69页,共114页,2022年,5月20日,11点58分,星期五逻辑框判断框 表示在此进行判断以决定程序的流向,框内注明判断条件。连接框 框内注有字母,当流程图跨页时,或者可能出现流向线交叉时

25、,用它来表示彼此之间的关系,相同符号的连接框表示它们是相互连接的。第70页,共114页,2022年,5月20日,11点58分,星期五流向线流向线 表示程序处理的逻辑顺序。以单向箭头表示。第71页,共114页,2022年,5月20日,11点58分,星期五逻辑框和流向线NY第72页,共114页,2022年,5月20日,11点58分,星期五N-S流程图 1973年美国学者Nassi和Schneiderman提出N-S流程图(也称为方框图),它是一种适于结构化程序设计的算法描述工具。 由于流程图各步骤之间,一般总是按照从上到下顺序执行,N-S流程图中取消了流向线 。第73页,共114页,2022年,5

26、月20日,11点58分,星期五二选一结构的表示ABYN满足不满足AB第74页,共114页,2022年,5月20日,11点58分,星期五算法例子1输入一个整数,输出其绝对值:自然语言描述: 1 输入一个整数; 2 若该数为正数,则其绝对值取该数的值 否则,其绝对值取该数的相反数值; 3 输出其绝对值。第75页,共114页,2022年,5月20日,11点58分,星期五伪码表示BEGIN READ numb IF numb0 abs=numb ELSE abs=-numb PRINT absEND第76页,共114页,2022年,5月20日,11点58分,星期五程序流程图BEGINREAD numb

27、numb0abs=numbabs=-numbPRINT absENDYN第77页,共114页,2022年,5月20日,11点58分,星期五算法例子2从键盘读入10个整数输出其中正整数的和。第78页,共114页,2022年,5月20日,11点58分,星期五BEGIN SET 0sum SET 0count WHILE count 0 then sum + x sum END count + 1count END_WHILE PRINT sumEND算法例子2伪代码第79页,共114页,2022年,5月20日,11点58分,星期五程序流程图描述算法第80页,共114页,2022年,5月20日,11

28、点58分,星期五 N-S流程图算法第81页,共114页,2022年,5月20日,11点58分,星期五编写程序 算法用C语言进行实现,该过程也称对算法进行编码。按照算法的流程顺序编写程序编写程序还必须进行语句执行过程的控制。第82页,共114页,2022年,5月20日,11点58分,星期五语言提供的控制结构1顺序:定义了语句按顺序执行的次序。2选择:提供了根据某个条件的结果在不同的语句中选择执行某一条语句的能力。3循环(重复):提供根据某个条件的结果重复地执行某些语句的能力。4调用:即在需要时运行指定的代码段。第83页,共114页,2022年,5月20日,11点58分,星期五C语言程序的基本结构

29、#include void main( ) 数据定义;(变量说明语句); 数据处理;(执行语句);第84页,共114页,2022年,5月20日,11点58分,星期五程序说明每个C程序必须有一个主函数main 是函数开始和结束的标志若需要输入和输出功能,程序开头应该为 #include 第85页,共114页,2022年,5月20日,11点58分,星期五 #include void main( ) printf (“This is a C program.n”); 程序例1程序的作用是输出一行信息:This is a C program.第86页,共114页,2022年,5月20日,11点58分,

30、星期五程序例2 求绝对值#include void main( ) int numb; /*代表某个整数*/int abs; /*代表该整的绝对值*/ scanf(“%d”,&numb); /*输入该整数的值*/ /*求绝对值*/ if ( numb0) abs=numb; else abs= -numb; printf (“the abs of numb is %dn”,abs); /*输出*/第87页,共114页,2022年,5月20日,11点58分,星期五注释/*/表示注释。注释是对源程序进行的注解,增加程序的可读性;对编译和运行不起作用。第88页,共114页,2022年,5月20日,1

31、1点58分,星期五程序例3 求两个实数之和#include void main( ) float a,b,sum; /*实型数据定义*/ scanf(“%f %f”,&a,&b); sum=a+b; printf(sum is %fn,sum); 第89页,共114页,2022年,5月20日,11点58分,星期五程序例4利用海伦公式 计算 边长分别为3、4、5的三角形的面积第90页,共114页,2022年,5月20日,11点58分,星期五#include#include void main( )float a=3.0,b=4.0,c=5.0;float s,area;s=(a+b+c)/2;a

32、rea=sqrt(s*(s-a)*(s-b)*(s-c);printf(“area=%fn”,area); 第91页,共114页,2022年,5月20日,11点58分,星期五库函数C语言(编译器)提供了许多基本的、常用的功能;分别保存在不同的文件中;以函数形式提供给程序员使用;第92页,共114页,2022年,5月20日,11点58分,星期五库函数分类(1)I/O 功能,需要的包含文件:stdio.h 如: printf,scanf等。 (2)字符(串)处理功能, string.h 如:islower,strcat,strcmp,strlen等。 (3)数学功能,math.h 如:sin,cos,exp,log,sqrt等。第93页,共114页,2022年,5月20日,11点58分,星期五库函数分类(4)时间、日期功能,time.h 如:time()(5) 图形功能,包括各种绘制点、线、圆、方和填色等的函数,graphics.h6)动态存储分配,alloc.h第94页,共114页,2022年,5月20日,11点58分,星期五程序例5求2个整数中较大者(通过函数实现) int max(int x, int y) /* x,y :形参 */ int z; if (xy) z=x; else z=y; return (z); 第95页,共114页,2022年,5月20日,11点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论