C语言与程序设计ppt-第1章.ppt_第1页
C语言与程序设计ppt-第1章.ppt_第2页
C语言与程序设计ppt-第1章.ppt_第3页
C语言与程序设计ppt-第1章.ppt_第4页
C语言与程序设计ppt-第1章.ppt_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

2019/11/25,华中科技大学计算机学院C语言课程组,1,C语言与程序设计TheCProgrammingLanguage,第1章概述华中科技大学计算机学院曹计昌,2019/11/25,华中科技大学计算机学院C语言课程组,2,C语言程序设计-第1章概论,C语言是目前全球流传最广、使用最多的程序设计语言。本章介绍内容为:程序设计语言与程序设计学习C语言程序设计的第一个例子。C语言的产生与发展,语言特征,标准。计算机硬件系统的组成,数的编码表示以及数在内存中的表现形式。算法的概念及其表示方法。对C语言程序设计概略性的介绍。同时介绍了N进制数,数之间转换的方法,以及原码、补码、反码及其相关运算。,2019/11/25,华中科技大学计算机学院C语言课程组,3,C语言的应用领域(补充),1.操作系统设计UNIX,LINUX,WINDOWS,底层及驱动程序等.3G手机中的Android操作系统1,2层2.计算机网络与通信系统TCP/IP协议栈,路由软件,交换机软件等.3.系统软件各种DBMS,如Oracle,Sybase,MSSQLServer等;各种编译器软件.4.嵌入式系统(民用)汽车(40多个微处理器系统),手机,U盘驱动,MP3等;嵌入式操作系统;智能卡系统等.5.国防,军工,航空航天,工业控制系统中大多数软件均以C,甚至要求以标准C作为软件开发的语言工具.6.图形图像系统各种图形图像处理算法,各种图形图像系统,如OpenCV,各种多媒体系统(音频、视频处理),许多游戏程序均以C作为开发工具。,2019/11/25,华中科技大学计算机学院C语言课程组,4,1.1程序设计语言与程序设计,本门课程的基本研究对象程序设计语言(C语言),以及程序设计(包括各种算法,数据结构)了解什么是程序设计语言,了解什么是程序,了解什么是程序设计,就是了解本门课程的基本研究对象。这些对于学习语言和程序设计来讲是非常必要的。计算机语言包括机器语言、汇编语言和高级语言这三类语言。如果不涉及汇编语言,程序设计语言往往就是指高级语言。,2019/11/25,华中科技大学计算机学院C语言课程组,5,从范型分类角度看程序设计语言,从程序设计语言范型分类的角度看,程序设计语言可以分为:命令型语言(ImperativeLanguage)(因此CMU将本课程称为PrinciplesofImperativeComputation,内容包括C0和C)函数型语言(FunctionalLanguage)面向对象程序设计语言(Object-OrientalProgrammingLanguage)以及逻辑型程序设计语言(LogicProgrammingLanguage)。在目前流行的数十种程序设计语言中,C(编译型)、Python(解释型)、FORTRAN、Pascal属于命令型语言。LISP、ML属于功能型语言。Ada、Smalltalk、C+、Java属于面向对象程序设计语言。Prolog属于逻辑型程序设计语言。,2019/11/25,华中科技大学计算机学院C语言课程组,6,程序设计语言范型,程序设计语言范型指程序设计语言的语言特征,主要涉及到与程序设计语言相关的程序设计方法和组织程序的方式。从国外教科书中关于程序设计语言范型的处理和解释来看,一般是从不同程序设计语言相互比较的角度来讨论程序设计语言范型。就某一特定的程序设计语言而言,范型的讨论则归结为与程序设计技术和程序设计风格相关的程序设计范型。,2019/11/25,华中科技大学计算机学院C语言课程组,7,高级语言产生、发展、演变,高级语言将面向问题的数据类型的概念引入程序设计通过将数据分类成为字符型、整型、浮点型等不同的类型,来刻画、描述不同类型数据。高级语言产生、发展、演变,各种各样高级语言的兴起,实质上就是高级语言数据类型的不断完善、不断扩充、不断复杂多样,以及对客观实体描述能力不断增强的一个过程。,2019/11/25,华中科技大学计算机学院C语言课程组,8,什么是程序设计语言?,计算机的使用者认为程序设计语言是操纵计算机的工具;程序员则认为它是程序员之间的相互通信和交流的方法;喜欢数学和算法的人则认为它是算法的符号表示。按照RaviSethi的观点,一门通用的程序设计语言应该是能够为各种各样的用户都能提供服务的语言。按照一般比较流行的观点,可以认为:程序设计语言是由一些符号所构成,这些符号被用于定义、组织、并完成各种各样的计算任务。,2019/11/25,华中科技大学计算机学院C语言课程组,9,程序设计语言的定义,人类所使用的语言称为自然语言。它是以语音为物质外壳、以词汇为建筑材料、以语法为结构规律而构成的体系。与此类似,可以将程序设计语言定义为:程序设计语言是以具有特定语义的符号为基本构成单位、以语法为程序构成规律、专门用于定义、组织、并完成各种各样的计算任务而形成的体系。,2019/11/25,华中科技大学计算机学院C语言课程组,10,程序与程序设计,程序是用程序设计语言表示的计算机解题算法或计算机解题任务。程序设计是将解题任务转变成程序的过程。NellDale等人指出:程序就是要求计算机执行的指令序列。程序设计就是如何计划、安排计算机必须遵循的操作步骤及顺序的过程。,2019/11/25,华中科技大学计算机学院C语言课程组,11,1.2学习C语言程序设计的第一个例子,例1.1输入自己的名字的汉语拼音,要计算机问候自己并且输出这是自己学习C语言的第一个程序的句子。,2019/11/25,华中科技大学计算机学院C语言课程组,12,例1.1的程序,#includestdio.hvoidshow(charstr);voidmain(void)charname20;printf(Inputyournameplease!n);gets(name);printf(Hello%s!n,name);show(name);voidshow(charstr)printf(Thisisthefirstprogramfor%stolearnCprogramming!n,str);源程序ex1_1.c,2019/11/25,华中科技大学计算机学院C语言课程组,13,操作例1.1的程序(参考p2图1.1),双击VisualC+6.0(即VC6.0)图标打开VC6.0选File,再选下拉菜单中的New,在New窗口中的Project页(缺省)中选择Win32ConsoleApplication(选中变兰),并且在ProjectName编辑框中输入工程名,如:Myproject。再单击OK按钮,在打开的窗口中单击Anemptyproject(缺省),再单击Finish按钮。在打开的窗口中单击OK按钮。此时VC将创建一个空的工程。单击FileView,选中SourceFiles(变成兰色),选File,再选下拉菜单中的New,单击C+SourceFile(变成兰色),在File编辑框中输入hello.c,2019/11/25,华中科技大学计算机学院C语言课程组,14,操作例1.1的程序,点开SourceFiles目录,可以看见hello.c文件,双击hello.c,在右侧文本编辑区域输入例1.1中的源程序。选Build,再选下拉菜单中的RebuildAll。此时VC编译器将对源程序进行编译、链接,并且生成名字为Myproject.exe的可执行文件。选Build,再选ExecuteMyproject.exe运行Myproject.exe程序,2019/11/25,华中科技大学计算机学院C语言课程组,15,例1.1的程序的结果,人机交互与运行结果如下:Inputyournameplease!JichangCao(此为输入信息)HelloJichangCao!ThisisthefirstprogramforJichangCaotolearnCprogramming!,2019/11/25,华中科技大学计算机学院C语言课程组,16,#includestdio.h)/*文件包含编译预处理命令*/voidshow(charstr);)/*函数原型说明语句*/voidmain(void)/*主函数*/charname20;)/*声明语句*/printf(“Inputyournameplease!n”);)/*输出提示*/gets(name);)/*读取用户名字*/printf(Hello%s!n,name);show(name);/*调用show函数*/voidshow(charstr)/*show函数的定义*/printf(Thisisthefirstprogramfor%stolearnCprogramming!n,str);直接打开ex1_1.c,里面有详细注释源程序ex1_1.c,1.2.2解释分析第一个C程序,2019/11/25,华中科技大学计算机学院C语言课程组,17,1.3C语言的产生、发展与语言特征1.3.1C语言的产生与发展,FORTRAN(1957年)ALGOL60(1960年)传统C或K/*正整数个数加1*/*内层if块结束*/else/*如果x0,转到此处执行*/*else块开始*/+negtive;/*负整数个数加1*/*else块结束*/*外层if块结束*/k+;/*循环次数变量k加1*/,2019/11/25,华中科技大学计算机学院C语言课程组,61,printf(positive=%dn,positive);/*输出正数个数*/printf(negtive=%dn,negtive);/*输出负数个数*/return0;/main函数的函数体结束输入10个整数及程序的运行结果如下:80-3-5-7596-1620(符号表示回车,)positive=5sum_pos=48negtive=4sum_neg=-31,2019/11/25,华中科技大学计算机学院C语言课程组,62,1.7学习C语言与程序设计的方法,作为初学者,如何学会、掌握、以及熟练使用C语言?如何用C语言去解决实际工作中的应用问题呢?这主要涉及四个方面的学习和训练。首先,要学习并理解C语言的语法和语义;其次,要学习并掌握一些基本数据结构和常用算法的设计;第三,要学习并熟悉与C语言的集成开发环境(IntegratedDevelopmentEnvironment,简称IDE),如VC或者CodeBlocks集成开发环境;第四,要熟悉C语言相关的库函数(如C提供的各种各样的标准库函数)。,2019/11/25,华中科技大学计算机学院C语言课程组,63,1)学习并理解C语言的语法和语义,在C语言中,语义指的是构成C语言的各种符号的含义。由于C程序是由C语言的符号所组成,因此只有准确理解各种符号的语义,才有可能合适的使用各种符号来表达自己的编程思想。另一方面,C的语法规定了C语言符号集中各种符号的结合方式,规定了各种表达式、语句、函数、乃至程序结构等的构造规则。只有理解和掌握C语言的语法,才有可能正确的用各种符号去构造程序的各种成分,并进而构成满足算法要求、能解决实际应用问题的程序。,2019/11/25,华中科技大学计算机学院C语言课程组,64,2)学习并掌握一些基本数据结构和常用算法的设计,C语言对机器硬件有很强的操纵能力,在大多数情况下可以代替汇编语言。因此,要学好用好C,需要对字符、整型变量、数组元素在内存中的存储形式,对原码、补码,对字节中的位(bit)的操作做到熟练掌握。深刻理解各类指针及所指对象的声明、使用以及物理含义。对结构,结构数组、链表都要熟练掌握,熟悉树、图。由于文本是C语言的基本研究对象,对文本操作的各种算法,如统计字符、单词的个数,字符串的各种操作所涉及的算法要熟练掌握。熟练掌握各种算法,包括查找、排序、枚举、递推、迭代、分治、贪心、递归、回溯、动态规划、高精度计算等,都应该熟练掌握。这样才能奠定程序设计的扎实基础。,2019/11/25,华中科技大学计算机学院C语言课程组,65,3)熟悉集成开发环境,早期的编程者都是在行编辑程序(如:EDLIN)或者全屏幕编辑程序(如:WORDSTAR、SEE等)下编辑创建源程序,也称为源文件(如:.c程序)。然后以命令行方式对源程序进行编译,产生对应的目标程序(如:.obj文件)。由于目标程序地址的浮动性,它还需要经过链接程序Link进行链接,生成对应的可执行程序(如:.exe文件)。最后将可执行程序投入运行以得到运行结果。,2019/11/25,华中科技大学计算机学院C语言课程组,66,3)熟悉集成开发环境,时至今日,几乎所有的程序设计语言都有自己的集成开发环境。集成开发环境将源程序的创建、编辑,以及其后的编译、链接,乃至程序的调试与跟踪全部都集成于一体。为编程者提供了方便的程序开发环境。编程者要能够进行程序的设计和开发,调试与跟踪,就必须学会使用相应的集成开发环境。编程者只有学会使用集成开发环境提供的这些功能,才能进行程序的设计与开发。,2019/11/25,华中科技大学计算机学院C语言课程组,67,4)熟悉库函数,在C语言中,编译系统提供了一些标准的库函数。如输入/输出的标准库函数、字符串处理的标准库函数、数学计算的标准库函数等。编程者只要知道这些标准库函数的功能、调用方式、返回何种结果,并且能够在自己的程序中调用这些标准库函数就行了。完全没有必要自己去编写这些函数。,2019/11/25,华中科技大学计算机学院C语言课程组,68,本章小结,本章首先通过介绍学习C语言程序设计的第一个例子,说明了如何创建并运行第一个C程序同时,对第一个C程序进行了解释分

温馨提示

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

最新文档

评论

0/150

提交评论