资源描述
高级语言程序设计高级语言程序设计计算机基础教研室计算机基础教研室1第第1 1章章 程序设计程序设计ABCABC南京邮电大学计算机学院南京邮电大学计算机学院计算机基础教研室计算机基础教研室2计计算算机机基基础础教教研研室室本章作业l作业本:作业本:P12页:页:1.1,1.2,1.4,1.53计计算算机机基基础础教教研研室室内容提要l什么是计算机什么是计算机l基于二进制的冯基于二进制的冯诺依曼体系结构计算机的基本诺依曼体系结构计算机的基本组成及工作原理组成及工作原理l什么是程序?程序员、计算机与程序的关系什么是程序?程序员、计算机与程序的关系l计算机语言及其发展、特点计算机语言及其发展、特点lC语言简介语言简介l程序件开发的基本步骤程序件开发的基本步骤l软件质量属性软件质量属性4计计算算机机基基础础教教研研室室What is a computer?lComput+er 计算的机器计算的机器lA Computer is a device capable of performing computations and make logical decisions at speeds millions(even billions)of times faster than human beings can.l计算机的另一个定义:计算机是一种具有计算机的另一个定义:计算机是一种具有记忆记忆能力,能能力,能自动执行自动执行指定的任务并能高速执行指定的任务并能高速执行运运算算功能的功能的电子电子设备。设备。5计计算算机机基基础础教教研研室室What is a computer?l目前最快的目前最快的supercomputers可每秒执行可每秒执行trillions of additionsl 目前的目前的PC机可每秒执行十亿次加法机可每秒执行十亿次加法l人用计算器一生也完不成人用计算器一生也完不成PC机机1秒钟完成的计算量秒钟完成的计算量6计计算算机机基基础础教教研研室室What is a computer program?l很像厨师的菜谱,定义了执行某个任务所需的很像厨师的菜谱,定义了执行某个任务所需的步骤步骤l但不幸和不同的是,你不能使用你自己的母语但不幸和不同的是,你不能使用你自己的母语来写来写Codel计算机能读懂的语言计算机能读懂的语言l机器语言机器语言(Machine Language)l由一系列二进制由一系列二进制0和和1组成组成7计计算算机机基基础础教教研研室室计算机与人工智能l计算机行业的梦想计算机行业的梦想l与人自然交流,像人一样地思考与人自然交流,像人一样地思考l人工智能(人工智能(Artificial Intelligence)l机器人的诞生和发展机器人的诞生和发展8计计算算机机基基础础教教研研室室What is programming language?l机器语言:代码和数据全部用机器语言:代码和数据全部用01序列,可读性差序列,可读性差 例:用机器语言编写的例:用机器语言编写的1+1程序程序哈哈,你看懂了吗哈哈,你看懂了吗?(像不像天书?)?(像不像天书?)l汇编语言:引入一些助记符来表示代码和数据汇编语言:引入一些助记符来表示代码和数据 例:用汇编语言编写的例:用汇编语言编写的1+1程序程序 MOV AX,1 ADD AX,1l程序设计语言:用来编写源程序代码的语言。程序设计语言:用来编写源程序代码的语言。源程序源程序=目标程序目标程序源程序源程序 目标程序目标程序汇编程序汇编程序低低级级语语言言9计计算算机机基基础础教教研研室室 l面向过程的语言:面向过程的语言:Basic、Fortran、C等等 例:用例:用C语言编写的语言编写的1+1程序程序What is programming language?#include main()printf(%dn,1+1);源程序源程序 目标程序目标程序编译程序编译程序既不是英语,也非机器语言,但更像英语既不是英语,也非机器语言,但更像英语高高级级语语言言l高级语言的特点:高级语言的特点:l比写机器语言程序容易,但比使用英语难比写机器语言程序容易,但比使用英语难l面向对象的语言:面向对象的语言:C+、Java等等10计计算算机机基基础础教教研研室室What is programmer?l程序员(程序员(Programmer):编写程序源代码):编写程序源代码(Source Code)的人)的人l计算机、程序员、程序之间的关系计算机、程序员、程序之间的关系l乐队、指挥家、乐谱乐队、指挥家、乐谱l军队、总司令、作战计划军队、总司令、作战计划11计计算算机机基基础础教教研研室室怎样让计算机读懂高级语言?l编译器(编译器(Compiler)l把源代码转换为可被计算机理解的机器代码把源代码转换为可被计算机理解的机器代码l把机器代码以把机器代码以可可执行文件执行文件(Executable File)的形式保存在)的形式保存在磁盘上磁盘上l不同的程序设计语言对应不同的编译器不同的程序设计语言对应不同的编译器l一种程序设计语言可以有一种或多种编译器一种程序设计语言可以有一种或多种编译器l例如:例如:C语言的编译器有语言的编译器有Turbo C、Visual C+、Borland C等等12计计算算机机基基础础教教研研室室怎样让计算机读懂高级语言?l程序员按照该语言的语法编写程序源代码程序员按照该语言的语法编写程序源代码l把自己的意图写入源代码中把自己的意图写入源代码中l编译器读入源代码编译器读入源代码l把程序员的意图转换成可执行程序,供他人使用把程序员的意图转换成可执行程序,供他人使用C C语言编写源程序语言编写源程序语言编写源程序语言编写源程序可执行程序可执行程序可执行程序可执行程序编译器编译器编译器编译器13计计算算机机基基础础教教研研室室怎样让计算机读懂高级语言?l程序设计语言是人与计算机进行交流的语言程序设计语言是人与计算机进行交流的语言l有很多种,分别适合做不同的事情有很多种,分别适合做不同的事情l现在人还只能主动学计算机的语言现在人还只能主动学计算机的语言l做不到计算机学会人的语言做不到计算机学会人的语言l当计算机懂了人的自然语言当计算机懂了人的自然语言14计计算算机机基基础础教教研研室室程序开发步骤lWhat is to be done?l可执行文件可执行文件l扩展名为扩展名为.exe的文件的文件 分析分析分析分析(AnalysisAnalysis)设计设计设计设计(DesignDesign)编码编码编码编码(WriteWrite)编辑编辑编辑编辑(EditEdit)编译编译编译编译(CompileCompile)链接链接链接链接(LinkLink)运行运行运行运行 (RunRun)调试调试调试调试(DebugDebug)lHow is it to be done?l扩展名为扩展名为.c的文件(对的文件(对C而言)而言)l扩展名为扩展名为.obj的文件的文件 15计计算算机机基基础础教教研研室室计算机为什么用二进制呢?l为什么不用我们日常熟悉的十进制呢?为什么不用我们日常熟悉的十进制呢?l二进制在在电器元件中容易实现二进制在在电器元件中容易实现 l计算机进行二进制运算比进行十进制运算简单计算机进行二进制运算比进行十进制运算简单l1946年,冯年,冯诺伊曼在计算机中引入二进制,提出诺伊曼在计算机中引入二进制,提出著名的冯著名的冯诺伊曼结构,至今仍被采用,被誉为诺伊曼结构,至今仍被采用,被誉为“计算机之父计算机之父”16计计算算机机基基础础教教研研室室“冯诺依曼机”结构的计算机输入输入/输出输出设备设备存储器存储器运算器运算器控制器控制器源程序源程序和输入数据和输入数据输出结果输出结果取出数据取出数据存入数据存入数据操作命令操作命令存取命令存取命令取出取出程序指令程序指令输入输出输入输出命令命令计算结果计算结果CPU大脑大脑记忆记忆装置装置眼睛眼睛和耳和耳朵朵进行进行运算运算自动执自动执行成为行成为可能可能17计计算算机机基基础础教教研研室室高级语言的魅力l易学、易用、易读、易懂、强大、可移植易学、易用、易读、易懂、强大、可移植l百家争鸣,据不完全统计百家争鸣,据不完全统计2500种,绝大多数是高种,绝大多数是高级语言级语言l可看到其列表和简介可看到其列表和简介 l影响最大、寿命最长的是影响最大、寿命最长的是C语言语言18计计算算机机基基础础教教研研室室流行的高级语言l应用编程语言应用编程语言l机器语言机器语言l汇编语言汇编语言lBasiclPascallClC+lJavalC#l专项编程语言专项编程语言lLotus NoteslPower BuilderlWeb编程语言编程语言lHTMLlXMLlPHPlASPlJSPlJavaScriptlVBScriptl其他其他lperllpythonlVBA19计计算算机机基基础础教教研研室室C程序设计语言l20世纪世纪60年代,贝尔实验室,年代,贝尔实验室,Ken Thompson开开始开发一个叫做始开发一个叫做UNIX的操作系统的操作系统 l70年代,年代,将将BCPL语言改造成更适合开发语言改造成更适合开发UNIX的的B语言语言l1971年,年,Dennis M.Ritchie开始和开始和Thompson合合作开发作开发UNIX,将,将B语言改造成语言改造成C语言语言20计计算算机机基基础础教教研研室室C语言的设计者Dennis M.Ritchie21计计算算机机基基础础教教研研室室和Unix的设计者Ken Thompson接受美国国家技术勋章22计计算算机机基基础础教教研研室室C程序设计语言l是一种高级语言是一种高级语言l高级语言并不是高级语言并不是“高级高级”,只是相对低级语言,在一,只是相对低级语言,在一个高的级别上进行编程个高的级别上进行编程l历史悠久,战勋卓著历史悠久,战勋卓著l诞生于上世纪诞生于上世纪70年代初,成熟于年代初,成熟于80年代年代l“ANSI C”标准的发布是标准的发布是C语言成熟的标志语言成熟的标志l很多重量级软件都是用很多重量级软件都是用C写的写的l上天入地,无所不能上天入地,无所不能l几乎没有不能用几乎没有不能用C写出来的软件,没有不支持写出来的软件,没有不支持C的系统的系统23计计算算机机基基础础教教研研室室C程序设计语言硬件(硬件(Hardware)操作系统(操作系统(OS)应用程序应用程序(Application)应用应用平台平台基于基于平台的平台的应用应用程序程序低级语言低级语言低级语言低级语言的地盘的地盘的地盘的地盘高级语言高级语言高级语言高级语言的地盘的地盘的地盘的地盘C C语语语语言言言言的的的的地地地地盘盘盘盘24计计算算机机基基础础教教研研室室C程序设计语言lC C语言被分类为高级语言,但实际上它是一种介语言被分类为高级语言,但实际上它是一种介于高级语言和低级语言之间的于高级语言和低级语言之间的中级中级语言。语言。l很多流行语言、新生语言都借鉴了它的思想、很多流行语言、新生语言都借鉴了它的思想、语法语法l从从C+C+,到,到JavaJava,再到,再到C#C#l正确地学好正确地学好C C语言,是学习这些流行语言的基础。语言,是学习这些流行语言的基础。lC C语言是下学期学习语言是下学期学习C+C+的重要基础,还有两周的重要基础,还有两周针对该课程的强化针对该课程的强化课程设计课程设计,更是二年级学习,更是二年级学习数据结构数据结构用用C+C+描述描述的基础,的基础,重要啊!重要啊!25计计算算机机基基础础教教研研室室软件的质量属性l正确性正确性(correctness)l健壮性健壮性(robustness)l可靠性可靠性(reliability)l时空效率时空效率(performance)l易用性易用性(usability)l清晰性清晰性(clarity)l安全性安全性(security)l可扩展性可扩展性(extendibility)l兼容性兼容性(compatibility)l可移植性可移植性(portability)26计计算算机机基基础础教教研研室室软件质量属性l正确性正确性(correctness)l软件按照需求正确执行任务的能力软件按照需求正确执行任务的能力l软件在需求范围之内正常运行的能力软件在需求范围之内正常运行的能力l健壮性健壮性(robustness)l指在异常情况下,软件能正常运行的能力指在异常情况下,软件能正常运行的能力l软件在需求范围之外正常运行的能力软件在需求范围之外正常运行的能力l容错能力:指发生异常时系统不出错的能力容错能力:指发生异常时系统不出错的能力l高风险系统(航空航天、武器、金融等)高风险系统(航空航天、武器、金融等)l恢复能力:指软件发生错误后,重新运行时,能恢复能力:指软件发生错误后,重新运行时,能否恢复到没有发生错误前状态的能力否恢复到没有发生错误前状态的能力lUnix的容错能力强,的容错能力强,windows9x的恢复能力还不错的恢复能力还不错27计计算算机机基基础础教教研研室室软件质量属性l可靠性可靠性(reliability(reliability,稳定性,稳定性)l指在一定环境下,在给定时间内,系统不发生故障指在一定环境下,在给定时间内,系统不发生故障的概率,原为硬件领域的术语的概率,原为硬件领域的术语l千年等一回的千年等一回的“千年虫千年虫”问题问题l“误差累积误差累积”问题问题l“内存泄露内存泄露”问题问题 l案例案例1 1:微软对:微软对IEIE的强力测试的强力测试l让它连续让它连续72小时持续不断的打开不同的网页,处理小时持续不断的打开不同的网页,处理几万个不同的网页,而且速度不能减慢几万个不同的网页,而且速度不能减慢l案例案例2 2:Exchange SeverExchange Severl开发测试工具自动产生几万个账号,在同一时间从开发测试工具自动产生几万个账号,在同一时间从不同机器上同时发送不同机器上同时发送Email信息,连续信息,连续7天,每天天,每天24小时不出现死机现象小时不出现死机现象28计计算算机机基基础础教教研研室室软件质量属性l时空效率时空效率(performance)l鱼和熊掌,旧社会的地主鱼和熊掌,旧社会的地主l例如,搜索引擎的搜索效率例如,搜索引擎的搜索效率l提高软件性能的方法提高软件性能的方法l l优化数据结构、算法和代码优化数据结构、算法和代码优化数据结构、算法和代码优化数据结构、算法和代码l l算法复杂性分析可达到算法复杂性分析可达到算法复杂性分析可达到算法复杂性分析可达到“未卜先知未卜先知未卜先知未卜先知”的目的的目的的目的的目的29计计算算机机基基础础教教研研室室软件质量属性l易用性易用性(可用性可用性usability,不是,不是usefulness)l指用户使用软件的容易程度指用户使用软件的容易程度l一般体现在对用户界面的设计上一般体现在对用户界面的设计上l应该由用户来评价应该由用户来评价l案例分析:案例分析:l1996年前后,微软将掌上电脑操作系统年前后,微软将掌上电脑操作系统WinCE(1.0)投放市场,失败!投放市场,失败!l原因:太多的视窗和菜单,而掌上电脑的用户更喜原因:太多的视窗和菜单,而掌上电脑的用户更喜欢简洁的界面和更快捷的操作欢简洁的界面和更快捷的操作l改进版本:改进版本:WinCE(PocketPC)30计计算算机机基基础础教教研研室室软件质量属性l清晰性清晰性(clarity)l容易阅读,容易理解容易阅读,容易理解l通常是简洁通常是简洁(simple)的或简短的或简短(small)的的l当客户使用当客户使用56kb/s的的modem时,下载时,下载1MB的的DLL需要将需要将近近10分钟,升级时间令客户无法忍受分钟,升级时间令客户无法忍受l安全性安全性(security,不是,不是safety)l指信息安全,防止系统被非法入侵的能力指信息安全,防止系统被非法入侵的能力l“道高一尺,魔高一丈道高一尺,魔高一丈”,正义与邪恶的斗争,正义与邪恶的斗争l绝对安全的系统不存在绝对安全的系统不存在31计计算算机机基基础础教教研研室室软件质量属性l可扩展性可扩展性(extendibility)l反映软件(通常指大规模程序)适应反映软件(通常指大规模程序)适应“变化变化”的能的能力力l如需求、设计的变化,算法的改进、程序的变化等如需求、设计的变化,算法的改进、程序的变化等l可移植性可移植性(portability)l指软件运行于不同软硬件环境的能力指软件运行于不同软硬件环境的能力lC比汇编语言可移植性好比汇编语言可移植性好lJava比比C好好32计计算算机机基基础础教教研研室室软件质量属性l兼容性兼容性(compatibility)l指两个或两个以上软件相互交换信息的能力指两个或两个以上软件相互交换信息的能力l同一产品的不同版本之间的兼容性问题,如同一产品的不同版本之间的兼容性问题,如office2000和和officeXPl不同厂家的同一产品之间的兼容性问题,如不同厂家的同一产品之间的兼容性问题,如WPS和和Word,IE和和Netscapel不同类型软件之间的兼容性问题,如不同类型软件之间的兼容性问题,如IE和和Officel如如WPS字处理软件对字处理软件对Word文件格式的兼容性就很文件格式的兼容性就很好好33计计算算机机基基础础教教研研室室软件质量属性l不具备兼容性的软件很难被市场接受不具备兼容性的软件很难被市场接受l案例分析:案例分析:lDEC曾是美国三大计算机公司之一,曾以众多的高新曾是美国三大计算机公司之一,曾以众多的高新技术著称于世,几年前被康柏收购。技术著称于世,几年前被康柏收购。l原因:原因:Alpha芯片盲目追求性能的卓越芯片盲目追求性能的卓越l系统复杂,造价过高,绝大多数用户不能接受系统复杂,造价过高,绝大多数用户不能接受l不能与已有的系统兼容,使得在其上的软件开发相不能与已有的系统兼容,使得在其上的软件开发相当困难,软件开发商也很难接受当困难,软件开发商也很难接受34p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后谢谢你的到来学习并没有结束,希望大家继续努力Learning Is Not Over.I Hope You Will Continue To Work Hard演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文