C语言第1章_C语言概述.ppt_第1页
C语言第1章_C语言概述.ppt_第2页
C语言第1章_C语言概述.ppt_第3页
C语言第1章_C语言概述.ppt_第4页
C语言第1章_C语言概述.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1,第一章 C语言概述,兰州理工大学,2,第一章 C语言概述,1.1 C语言的起源 1.2 C语言是中级语言 1.3 C语言是结构化语言 1.4 C语言是面向程序员的语言 1.5 编译和解释 1.6 C语言程序结构 1.7 术 语 1.8 几种集成编译环境,3,1.1 C语言的起源,4,1.1 C语言的起源,C语言的发展过程,C Dennis Ritchie (1973),B Ken Thompson 美国贝尔实验室(1970),BCPL( Basic Combined Programming Language) Martin Richards 英国剑桥大学(1967年),BCPL和B语言不支持数据类型,C语言支持数据类型,5,1.1 C语言的起源,C语言的发展过程 ALGOL60- CPL- BCPC- B- C- 标准C- ANSI C- ISO C ALGOL60:一种面向问题的高级语言。离硬件较远,不适合编写系统程序。 1963年,剑桥大学将ALGOL60发展成CPL(Combined Programming Language):CPL规模大,实现困难。 1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,产生了BCPL语言。 1970年,美国贝尔实验室的Ken Thompson对BCPL进一步简化成一种很简单接近硬件的语言-B语言。并用B语言写了第一个UNIX操作系统。 B语言精练、接近硬件,但太简单,数据无类型。,6,1.1 C语言的起源,C语言的发展过程 ALGOL60- CPL- BCPC- B- C- 标准C- ANSI C- ISO C 1973年,贝尔实验室的D.M.Ritchie在B语言的基础上设计出一种新的语言-C语言。C语言诞生后,很快用C语言改写Unix ,并移植到其它计算机系统。 1977年Dennis M.Ritchie 发表了不依赖具体机器系统的C语言编译文本可移植的C语言编译程序。 1978年贝尔实验室正式发表了语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书K&R 。 后来由美国国家标准协会(American National Standards Institute)在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。,7,1.1 C语言的起源,Dennis Ritchie和Ken Thompson接受美国国家技术勋章,8,1.1 C语言的起源,C语言的发展过程,Ada,ALGOL60,ALGOL68,Pascal,Modula-2,CPL,BCPL,B,C,C+,Java,LISP,PROLOG,COBOL,FORTRAN77,FORTRAN,PL/1,Simula 67,Smalltalk 80,BASIC,ANSI-BASIC,QBASIC,VB,FORTRAN90,高级语言时间线,更详细的时间线,9,1.1 C语言的起源,IBM PC微机DOS、Windows平台上常见的C语言版本有: Borland公司: Turbo C,Turbo C+,Borland C+ C+ Builder(Windows版本) Microsoft公司: Microsoft C Quick C Visual C+(Windows版本),10,1.2 C语言是中级语言,11,1.2 C语言是中级语言,编程语言的“级”通常是指其贴近硬件的程度。 C不仅包含了高级语言的特增,还包含了汇编语言的一些特征。 一般地说: 机器语言、汇编语言最接近硬件,是面向机器的,被称为低级语言。 高级语言更接近于自然语言,是面向问题、面向对象的、或智能化的。,12,1.2 C语言是中级语言,C语言作为中级语言: 允许对位、字节和地址(通过指针)进行操作; 能够较方便地读写寄存器,即可以较方便地操作硬件; 能够较方便地嵌入汇编、调用中断。 因此, C语言更适合编写系统程序。,13,1.2 C语言是中级语言,C语言的应用领域,硬件(Hardware),操作系统(OS),应用程序 (Application),应用 平台,基于 平台的 应用 程序,低级语言应用领域,高级语言应用领域,C语言的应用领域,14,1.3 C语言是结构化语言,一般地说,结构化语言: 允许程序中的任务被分别定义和编码(子程序、过程、函数、复合语句等),使程序模块化。 模块化应尽可能不会对程序的其它部分产生副作用(采用形式参数、局部变量而尽可能不使用全局变量)。 实现基本的程序控制结构: 顺序结构、 选择结构、 循环结构。 而尽可能不使用goto等跳转语句。 结构化语言编写的结构清晰的程序更易于维护(易读、易重用)。,15,1.4 C语言是面向程序员的语言,“面向程序员的语言”是相对一些被称为“面向初学者、面向工程师、面向的语言”而言的。 一般地说,面向程序员的语言: 功能强,效率高; 灵活,少限制; 允许直接的系统调用(可嵌入汇编); 可以比较复杂。 面向程序员的语言更适合编写大型的、复杂的、高效的系统程序,如:操作系统、编译程序、数据库管理程序等。,16,1.5 编译和解释,编译(Compile)和解释(Interpret)是两种程序执行的方式。 理论上,任何程序语言都既能编译执行、又能解释执行,但特定语言一般仅取两者之一。 解释程序一次读进一行源代码,翻译然后执行。每次运行程序都调用解释程序。 编译程序一次读完全部程序,并把它转换成目标码(Object Code)。目标码经链接(Link)生成可执行文件(.exe)。而此后每次运行均不需再转换。,17,C语言的特点,语言简洁、紧凑,书写形式自由,使用方便灵活; 运算符丰富,有其它语言没有的复合赋值运算符、位操作运算符、三目运算符等; 数据结构丰富,且具有数据类型构造能力; 具有很强的流程控制结构; 用函数作为程序的模块单位,使程序模块化; 可以实现汇编语言的大部分功能(支持对硬件的操作); 代码质量高。 可移植性好。 语法限制不太严格(对数组越界、空指针等均不检验报错),程序设计自由度大。,18,1.6 C语言程序结构,19,1.6 C语言程序结构,例1: /* HELLO.C - Hello, world */ #include “stdio.h“ main() printf(“Hello, worldn“); /* printf(“世界, 你好n“); */ getch(); ,20,1.6 C语言程序结构,例2: /* exsampe 2 */ #include “stdio.h“ main() int a=5, b=6; int c=a+b; printf(“%d“,c); getch(); ,21,1.6 C语言程序结构,C语言程序有以下特点: C程序都由一个或多个函数组成(C是函数型语言,函数是C语言程序的基本单元); 有且仅有一个main()函数,称为主函数。它在程序开始运行时首先被调入执行。 C程序是由一个个语句组成,语句均由分号“;”结尾; 一行可以写多个语句;一个语句可以写在多行上; C程序用大括号“ ”表示程序的范围和层次关系。每个函数、复合语句都用一对大括号括起来; C程序的关键字(和变量)习惯上使用小写英文字母。而宏定义的“宏名”通常用大写字母; C程序通常会有#号开头的一些编译预处理代码行,如:包含头文件(*.h),宏定义等。 程序可以有注释,用“/ * */”或“/”标注。,22,1.6.1 库和链接,C语言编译器的实现者已编写了大部分常见的通用函数,即标准函数库,以完成最常见的任务。 标准函数库作为构成程序的基本构件。标准函数库中的库函数可以反复使用(调用)。 链接器(Linker)把编写的程序同标准函数库中找到的目标码结合起来,称为链接(Link)。链接生成可执行程序。 某些C编译程序带有自己的链接程序,有些则使用操作系统提供的标准链接程序。 程序员也可以编写自己的函数,这些函数也可以放在一个库(可能是标准函数库,也可能是自己的函数库)中,反复使用(编译程序通常会提供一个库管理应用程序)。,23,1.6.1 库和链接,函数库中的函数是可重定位(Relocaltable)的,意味着其中机器码指令的内存地址并未绝对确定,只有偏移量是确定的。把程序与标准函数库中的函数相链接时,内存偏移量被用来产生实际地址。,24,1.6.2 分别编译,多数短程序都可以完全放进一个源文件; 随着程序长度的增加,编译时间也大幅度增加(常使人无法忍耐); 因此,C语言允许将一个程序分块写在多个文件中,每一个文件可单独编译。 分别编译的优点是,当程序代码改变后,只需重新编译改变了的文件,而不必重新编译全部程序。这可以节省大量时间。,25,1.6.3 编译C语言程序,编译C语言程序包括以下三步: (1)程序设计(编辑源程序,或称源代码); (2)程序编译(生成目标码); (3)目标码与库函数链接,生成可执行代码 。 编译、链接与运行过程中通常会有错误,查错与改正错误的过程通常称为调试。 大多编译程序提供一个集成开发环境 (Integrated Development Environment IDE),程序的编辑、编译、链接、调试与运行是一体化的。 也有的编译程序没有集成开发环境,程序员必须用独立的编辑程序编程。 某些字处理软件产生的文件含控制码和非打印字符(包括汉字及全角符号),编译程序会拒绝接受。,26,1.6.3 编译C语言程序,右图是编译C语言程序的全过程。,27,1.6.4 C语言的内存映象,一个已完成编译的C语言程序取得并使用四块在逻辑上不同、且用于不同目的的内存区域。 第一块区域含有程序代码,相邻的一块内存区域存放全局变量; 其它两块分别是: 栈(Stack): 用来处理程序运行的许多事务,保存函数调用时的返回地址、函数的变元、局部变量以及CPU的当前状态。 堆(Heap) :是一个自由内存区域,程序可利用C语言的动态分配函数,由此取得用于链表和树等数据结构所需要的内存。,28,1.6.4 C语言的内存映象,图:,29,1.7 术语,源代码(Source Code):用户可编辑、阅读的程序文本,源代码是C语言编译程序的输入。 目标码(Object Code):由源代码经编译器编译而产生的机器码。目标码是链接程序的输入。 链接程序(链接器)(Linker):可把分别编译产生的目标码与标准库函数链接为完整的可执行程序(.exe)的软件程序。 函数库(Library):存放可被用户程序引用的标准函数。包括所有I/O操作及其它有用的子程序。 编译时(Compile Time):编译时出现的事件。在编译期间出现的错误通常是语法错误。 运行时(Run Time):运行时出现的事件。,30,1.8 几种集成编译环境,31,1.8 几种集成编译环境,全国计算机等级考试-二级C语言程序设计(08版),32,1.8.1 Visual C+ 6.0运行环境,例子:,33,1.8.1 Visual C+ 6.0运行环境,利用Visual C+ 6.0集成环境开发C程序的过程如下: 1.启动Visual C+ 6.0环境 2.编辑源程序文件 3.编译和连接 4.执行,34,1.8.1 Visual C+ 6.0运行环境,1.启动Visual C+ 6.0环境,方法:单击 “开始”-“程序”-“Microsoft Visual studio 6.0”-“Microsoft Visual C+ 6.0”命令,启动Visual C+,VC+6.0主窗口如下:,菜单栏,项目工作区,标题栏,输出区,工具栏,状态栏,文件编辑区,35,1.8.1 Visual C+ 6.0运行环境,2. 编辑源程序文件 (1)建立新工程项目 单击“文件”-“新建”,弹出“新建”对话框。 单击“工程”选项卡;单击“Win32 Console Application”选项;“工程”文件框中输入项目名,如“gc1”和“位置”框输入或选择新项目所在位置,单击“确定”按钮。 弹出“Win32 Console Application Step 1of 1”对话框。 单击“An empty project”按钮和“完成”按钮。系统显示“新建工程信息”对话框。单击“确定”按钮。,36,1.8.1 Visual C+ 6.0运行环境,2. 编辑源程序文件,37,1.8.1 Visual C+ 6.0运行环境,2. 编辑源程序文件 (2)建立新项目中的文件 单击“文件”-“新建”,弹出“新建”对话框。 选择“文件”选项卡。单击“C+ Source File”选项,在“文件”文件框中输入文件名,单击“确定”按钮。系统自动返回VC6主窗口。 显示文件编辑区窗口,在文件编辑区窗口输入源程序文件。,38,1.8.1 Visual C+ 6.0运行环境,2. 编辑源程序文件,39,1.8.1 Visual C+ 6.0运行环境,3. 编译和连接 方法一:选择主窗口菜单栏中“编译”菜单项;系统弹出下拉菜单,选择“构件”菜单命令。 方法二:单击主窗口编译工具栏上的 “Build”按钮进行编译和连接。,40,1.8.1 Visual C+ 6.0运行环境,4. 执行 方法一:单击“编译”菜单中“执行”命令。 方法二:单击主窗口编译工具栏上的 “Build Execute”按钮来执行编译连接后的程序。,41,1.8.2 Turbo C 2.0运行环境,Turbo C 2.0界面如下:,42,1.8.3 WIN-TC运行环境,.,4

温馨提示

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

评论

0/150

提交评论