您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第1章-为什么要学C语言
第1章绪论C语言程序设计C语言程序设计课程教学目标掌握用计算机求解问题的基本思维方法掌握高级语言程序设计的基本知识掌握计算机软件设计与实现的基本方法具备用计算机解决实际问题的能力和基本的程序调试能力HowtoThinkLikeaComputerScientistHowtoprogramLikeaComputerScientist1/37第1章绪论C语言程序设计C语言程序设计第1章学习内容计算机和程序设计的基础知识C语言简介C语言集成开发环境2/37第1章绪论C语言程序设计C语言程序设计问题1:你了解计算机吗?为什么计算机也被俗称为“电脑”?期望计算机有朝一日能像人脑一样聪明让机器能像人一样思考,一直是人类的梦想很多科幻故事描绘了计算机真正成为电脑时的景象《变形金刚》里的机器人大战《AI(人工智能)》里探讨的人类与机器的感情关系《终结者》里机器人企图消灭人类最有想象力的是《Matrix(黑客帝国)》3/37第1章绪论C语言程序设计C语言程序设计问题2:你了解计算机领域的哪些人?你了解计算机科学领域中的哪些著名的人物?阿兰·图灵(AlanTuring)现代计算机科学之父和人工智能之父的英国数学家1950年发表题为“ComputingMachineryandIntelligence”的论文,首次提出“机器思维”的概念,并从“机器能否思考”这一问题出发,提出一个判断机器是否有智能的测试标准——“图灵测试”(TuringTesting)4/37第1章绪论C语言程序设计C语言程序设计问题3:什么是“图灵测试”?图灵提出的一种判断机器是否具有智能的标准(方法)测试人在不接触被测试者(一个人和一台机器)的情况下,通过一些终端设备(如键盘)向被测试者提问如何判断这台机器通过了测试,并具有与人类相当的智能呢?更换测试人或被测试者中的人?5/37第1章绪论C语言程序设计C语言程序设计问题4:什么是人工智能?人工智能(ArtificialIntelligence,简称AI)用机器模拟人类的智能活动博弈(GamePlaying)研究下棋程序1997年IBM公司研制的DeepBlue超级计算机在一场“人机大战”中打败国际象棋大师卡斯帕罗夫,被誉为“AI的一大胜利”世界排名第二的棋手印度人阿南德曾说:“这是一个像人一样的机器同一个像机器一样的人之间的战斗”。奥秘:高速的检索演算能力及其海量的存储能力(200万棋谱)让计算机执行复杂的计算和推理任务不能看成是AI活动6/37第1章绪论C语言程序设计C语言程序设计问题4:什么是人工智能?2012年6月底,在英国著名的布莱切利庄园举行了一场国际人工智能机器测试竞赛由俄罗斯专家设计的“叶甫根尼”电脑程序脱颖而出其29.2%的回答均成功“骗过”了测试者,被视为目前世界上最接近人工智能的机器但距人类级人工智能(HumanLevelAI,HLAI)的目标仍然较远7/37第1章绪论C语言程序设计C语言程序设计问题4:什么是人工智能?AI的先驱者之一美国CMU的西蒙(HerbertSimon)最令他惊讶的是让计算机做“难”的事情是多么的容易,而做“容易”的事情是多么的“难”。图灵曾预言,在20世纪末,一定会有电脑通过“图灵测试”。例如2011年,IBM公司研制的Watson软件系统能以每秒翻100万本书的速度从其存储的2亿页百科全书、字典、文学作品中搜索答案——人类望尘莫及而理解一个儿童故事??8/37第1章绪论C语言程序设计C语言程序设计问题5:什么是计算机系统?一种能按照事先存储的程序自动、高效地对数据进行输入、处理、存储和输出的系统计算机系统(ComputerSystem)=硬件+软件执行程序9/37第1章绪论C语言程序设计C语言程序设计问题6:什么是硬件?硬件(Hardware)计算机系统中所有实体部件和设备的统称由中央处理器(CPU)、存储器和输入/输出设备等核心部件组成在软件的配合下完成输入、处理、存储和输出等基本操作计算机是用来延伸人的能力的工具大脑眼睛和耳朵10/37第1章绪论C语言程序设计C语言程序设计问题7:什么是软件?人驾驭计算机的手段之一是编写软件(OS,Office,IE,…)软件(Software)系统软件—为使用计算机提供最基本的功能操作系统—用户与计算机硬件系统之间的接口,管理计算机系统的各种软、硬件资源,使得它们可以协调工作,最内层支撑软件—环境数据库、接口软件和工具软件应用软件—直接面向特定应用的软件图像处理,文字处理,计算机动画,CAD…11/37第1章绪论C语言程序设计C语言程序设计问题8:软件与硬件的关系是什么?硬件——计算机的躯壳和肉体软件——计算机的灵魂和思想软件促进了计算机从裸机到计算机系统的进化12/37第1章绪论C语言程序设计C语言程序设计问题9:程序和软件有区别吗?程序(Program)为了实现特定目标或解决具体问题而用计算机语言编写的指令的有序集合程序就是软件的全部吗?程序、数据、文档之间的关系厨师软件开发人员烹饪方法软件中的程序菜谱软件的文档食材软件中的数据整个烹饪过程软件的实现过程13/37第1章绪论C语言程序设计C语言程序设计问题10:人与计算机交流用什么语言?“如果你想成为周游世界的旅行家,那么你大概需要学习用6912种语言说:'你好,厕所在哪里?'”——BrianHayes《分号的战争》人类之间沟通和交流的语言——汉语、英语...让计算机像人一样地思考,与人自然交流,一直是计算机行业的梦想。如果计算机能读懂人的自然语言(NaturalLanguage),那么。。。。?14/37第1章绪论C语言程序设计C语言程序设计问题10:人与计算机交流用什么语言?计算机学会人的语言,与人自然交流——自然语言理解(NaturalLanguageUnderstanding)尽管自然语言理解技术得到了长足发展,但目前人机交互(Human-ComputerCommunication)几乎还只能使用严格限制的各种非自然语言,即计算机专用的语言人类只能主动学计算机的语言,做不到计算机学会人的语言15/37第1章绪论C语言程序设计C语言程序设计问题11:计算机能读懂什么语言?计算机只能识别二进制指令机器语言(MachineLanguage)用机器语言编写的一组机器指令的集合,称为机器代码(MachineCode),简称机器码用一系列二进制0和1组成的二进制代码代表不同的机器指令机器语言编写的1+1程序——犹如天书!101110000000000100000000000001010000000100000000计算机的母语是什么?16/37第1章绪论C语言程序设计C语言程序设计问题12:如何让程序员远离二进制?Bothlearnathird-partylanguage用助记符代表机器指令的操作码–用一个汇编器(Assembler)将这些符号翻译成机器可识别、可执行的二进制指令——汇编过程汇编语言(AssemblyLanguage)–低级语言,与计算机硬件的距离的级别较低,对硬件依赖性强MOVAX,1101110000000000100000000ADDAX,100000101000000010000000017/37第1章绪论C语言程序设计C语言程序设计问题13:如何实现更有效的人机交流?设计更贴近人类自然语言和数学语言的计算机语言高级语言(High-levelLanguages)–“高级”在哪里?–可以在一个更高的级别上进行编程–不像低级语言那样依赖于硬件–更远离机器语言–更易学易用,具有可移植性18/37第1章绪论C语言程序设计C语言程序设计问题14:如何将高级语言翻译成机器语言?编译型语言通过编译器(Compiler)把源程序全部翻译成逻辑上与之等价的机器语言表示的目标代码(ObjectCode),才能被计算机识别和执行解释型语言解释程序(Interpreter)边扫描边解释,语句被逐条地解释成可执行的机器指令,不产生目标程序——“同声传译”有些解释语言(如Java和C#)采用了“先编译、后解释”的方法来提速19/37第1章绪论C语言程序设计C语言程序设计PRINT1+1BASIC语言编写的1+1程序高级语言的特点C语言编写的1+1程序#includestdio.hintmain(){printf(%d\n,1+1);return0;}既非英语,也非机器语言,但更像英语高级语言程序必须通过编译器或解释器翻译成机器语言形式的目标代码,才能被计算机识别和执行易学、易用、易读、易懂、强大、可移植20/37第1章绪论C语言程序设计C语言程序设计高级语言的发展历程1954年约翰.巴克斯发明第一个高级语言FORTRAN百家争鸣,据不完全统计2500种–~nkinners/LangList/Extras/langlist.htm可看到其列表和简介影响最大、寿命最长的非C语言莫属百花齐放开宗立派内外兼修互联网时代初露锋芒21/37第1章绪论C语言程序设计C语言程序设计编程语言受欢迎程度排行第1章绪论C语言程序设计C语言程序设计高级语言的分类语言典型代表特点过程式语言(Procedural)C命令驱动,面向动作(语句),即将计算看作是动作(语句)的序列,程序由一系列的语句组成函数式语言(Functional)LISP注重程序实现的功能,程序的编写过程是从已有函数出发构造出更复杂的函数,应用这些函数直至计算求得最终结果面向对象语言(Object-Oriented)SmallTalk、C++、Java程序的编写过程是直接从问题本身出发分析问题,并把数据和操作封装在一起构成对象,用数据描述对象属性,用对数据的操作描述对象行为逻辑式语言(Logical)PROLOG基于规则的具有推理功能的语言23/37第1章绪论C语言程序设计C语言程序设计C语言的设计者KenThompson江湖人称kenDennisM.Ritchie江湖人称dmr两个骨灰级游戏玩家Ritchie漫画像24/37第1章绪论C语言程序设计C语言程序设计C语言的诞生始末1969年,ken梦想能遨游宇宙,设计了一款模拟在太阳系航行的电子游戏——“SpaceTravel”,1971年dmr加入游戏在PDP-7小型机上开发,因为这台机器免费,但免费的机器没有操作系统玩游戏前,先给PDP-7做个操作系统,命名为UNIX20世纪60年代,Ritchie和Thompson在贝尔实验室开发UNIX操作系统25/37第1章绪论C语言程序设计C语言程序设计C语言的诞生始末汇编编写UNIX太慢,而一般的高级语言难以实现汇编语言的某些功能,怎么办?dmr改造B语言,设计了一种新的高级语言,命名为“C语言”,把UNIX的90%以上代码用C改写1983年,因为UNIX和C语言的巨大成功,ken和dmr共同获得当年度的计算机界最高奖——图灵奖1999年接受美国国家技术勋章26/37第1章绪论C语言程序设计C语言程序设计C语言标准1978年,DennisM.Richie和BrianW.Kernighan合著影响深远的名著《TheCProgrammingLanguage》1982年,美国国家标准化协会(AmericanNationalStandardsInstitute,ANSI)成立C标准委员会1989年,发布第一个完整的C语言标准,简称C89–习惯上也称为ANSIC(标准C)–1990年被国际标准化组织ISO采纳,也称为C90–1999年修正和完善之后,ISO发布了C9927/37第1章绪论C语言程序设计C语言程序设计问题15:为什么要学C语言?是一种高级语言并不“高级”,只是相对低级语言在一个高的级别上进行编程实际上是一种介于高级语言和低级语言
本文标题:第1章-为什么要学C语言
链接地址:https://www.777doc.com/doc-4180999 .html