版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件技术概论与基础第5章软件开发语言学习导入“工欲善其事,必先利其器”,在软件开发中也是一样。想要高效地进行开发软件活动,那么一种趁手的软件开发语言是必须的。现代编程语言林林总总,如何选择一种适合的编程语言呢?想要做出正确的选择,了解主流编程语言的特性是重要的一环。在了解了不同编程语言的特性和异同之后,才能知道一个软件项目应该选择何种编程语言。本章内容将介绍当前流行的一些编程语言,以及这些编程语言的历史和特点。思维导图学习目标了解常见的编程语言了解不同编程语言的历史和特点了解常见的编程语言类型了解不同编程语言擅长的场景了解编程语言之间语法的差异重点难点学习重点主流编程语言每种语言的历史、特点等学习难点编程开发环境的搭建相关知识5.1Java语言5.2C语言5.3C++语言5.4C#语言5.5Python语言5.6PHP语言5.7HTML、JavaScript、CSS语言5.1Java语言一5.1Java语言5.1.1Java语言简介5.1.2Java语言的发展历史5.1.3Java语言的特点5.1.4Java环境配置5.1.5Java代码展示一5.1Java语言5.1.1Java语言简介Java编程语言是一种通用编程语言,其初衷是作为C++语言的改进语言而被开发出来的,经过多年的发展,Java语言已经在在桌面应用程序、智能移动设备应用程序、企业级应用、互联网Web应用、大数据应用、分布式应用、基于云技术的应用等领域都成为主流的开发语言。一5.1Java语言5.1.2Java语言的发展历史20世纪90年代,Sun(太阳计算机系统)公司准备开拓消费类电子产品市场,使消费类电子产品能够为用户提供更强的智能交互体验。当时的嵌入式单片机系统种类繁杂,由不同企业生产的不同嵌入式处理器之间有较大的差异,使用C语言或C++语言进行软件开发存在通用性和可移植性的问题。一5.1Java语言5.1.2Java语言的发展历史1996年1月,Sun公司发布了Java语言的第一个开发工具包JDK1.0。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器。1997年2月,JDK1.1发布,在随后的3周时间里,达到了22万次的下载量。4月,JavaOne会议召开,参与者逾一万人,创当时全球同类会议纪录。一5.1Java语言5.1.2Java语言的发展历史1999年6月,SUN公司发布了应用于不同领域的3个版本:标准版(Java2StandardEdition,J2SE)应用于桌面环境、企业版(Java2EnterpriseEdition,J2EE)应用于基于Java的应用服务器、微型版(Java2MicroEdition,J2ME)应用于移动设备及有限资源的环境。一5.1Java语言5.1.2Java语言的发展历史2000年后的最初几年,发布了JDK1.3、JDK1.4,以及J2EE1.3、J2EE1.4,这几年随着手机的普及,支持J2ME的设备快速增多,到2003年,仅Nokia就宣称出售了1亿部支持Java的手机。一5.1Java语言5.1.2Java语言的发展历史2004年9月,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为JavaSE5.0。这一版本为Java提供了大量新特性,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。一5.1Java语言5.1.2Java语言的发展历史2005年6月,JavaOne大会召开,Sun公司公开JavaSE6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2ME更名为JavaME,J2SE更名为JavaSE,J2EE更名为JavaEE。一5.1Java语言5.1.2Java语言的发展历史2006年11月,Java技术的发明者Sun公司宣布,将Java技术作为免费软件对外发布,Sun公司正式发布有关Java平台标准版的第一批源代码,以及Java迷你版的可执行源代码。从2007年3月起,全世界所有的开发人员均可对Java源代码进行修改。2009年,甲骨文公司宣布收购Sun公司。此后,甲骨文公司于2014年发布了Java8,于2017年发布了Java9等版本,到写作本文的2022年3月,最新版本为Java18。一5.1Java语言5.1.3Java语言的特点Java程序的运行依赖于一个解释程序执行,即Java虚拟机(JavaVirtualMachine,JVM)。执行Java程序的流程是:首先将Java源文件编译成字节码,字节码类似于CPU执行的指令,不过它不对应于任何真实的CPU指令集;字节码再经由Java虚拟机(JVM)转译为特定平台的指令,如x86的64位平台的CPU指令。一5.1Java语言5.1.3Java语言的特点这样的执行方式固然会有一些性能上的损失,但是带来的好处是Java程序不再受限于软硬件平台,能够通过JVM去适配不同的运行环境。而且现在JVM支持JIT(JustInTimeCompile,即时编译)技术,能让Java程序接近C/C++程序的运行效率,满足需要高性能的应用场景。一5.1Java语言5.1.3Java语言的特点Java语言依托于Java虚拟机,将内存管理完全从软件开发人员手中接管过来,让开发人员根据需要使用内存,而不必关心如何管理内存,极大地减轻了软件开发的难度,也减少了内存管理出错的问题。这一机制就是Java语言的垃圾回收(GarbageCollection,GC)机制。为了能够高效地管理内存,Java虚拟机采用多种不同的算法,如引用计算、标记-清除算法、复制算法、标记-整理算法等,为不同的内存使用场景提供高效的管理方式。相对来说,使用GC机制的Java程序比C/C++程序占用更多的内存。但是,Java程序减少了内存出错的情况,因为程序的稳定性由Java语言和Java虚拟机提供保证,而非由开发人员的经验提供保证,这也是很多大型商业软件使用Java语言开发的原因。一5.1Java语言5.1.4Java环境配置首先需要从甲骨文公司的官网上下载最新的JDK安装包。当前JDK的最新版本为JDK18。一5.1Java语言5.1.4Java环境配置在Windows11的任务栏搜索框中输入“编辑系统环境变量”,按下Enter键后会自动打开“系统属性”对话框,在“高级”选项卡中单击右下角的“环境变量…”按钮,会打开“环境变量”对话框。在“环境变量”对话框中有上下两个“新建…”按钮,可以根据需要选择是创建用户变量还是创建系统变量。一5.1Java语言5.1.4Java环境配置在选择变量类型后,新建环境变量JAVA_HOME,变量值为JDK的安装路径。一5.1Java语言5.1.4Java环境配置需要使用命令创建对应的JRE,如下图所示。以管理员身份运行“CMD”(命令行窗口)。在命令行中执行如下命令:cd“C:\programfiies\Java\jdk-18.0.1”.\bin\jlink--module-pathjmods--add-modulesjava.desktop--outputjre一5.1Java语言5.1.4Java环境配置命令执行完成后,会在安装目录下创建jre目录。配置环境变量JRE_HOME,如图所示,变量值为刚才创建的JRE的路径。一5.1Java语言5.1.4Java环境配置配置环境变量CLASSPATH,如图所示,变量值为“%JRE_HOME%\lib”。一5.1Java语言5.1.4Java环境配置最后将JDK的bin目录及JRE的bin目录加入环境变量PATH中,如图所示,值分别是“%JAVA_HOME%\bin”和“%JRE_HOME%\bin”。一5.1Java语言5.1.4Java环境配置从IntelliJIDEA官网上下载安装程序,IntelliJIDEA官网的主页如图所示。一5.1Java语言5.1.4Java环境配置安装完成后,启动IntelliJIDEA,并创建新项目。设置项目名称、项目保存路径、语言、JDK版本等。在“Name”文本框中输入“HelloWorld”,然后选择项目保存路径,其他选项保持默认设置即可,如图所示。一5.1Java语言5.1.4Java环境配置创建项目后,会显示IntelliJIDEA的主界面,如图所示。一5.1Java语言5.1.5Java代码展示下边的代码展示了使用Java语言编写统计字符与数字的程序:一5.1Java语言importjava.util.Scanner;publicclassAlphabet{
publicstaticvoidmain(String[]args){ System.out.println("请在下面输出字母或数字:"); Scanners=newScanner(System.in); Stringstr=s.nextLine(); char[]ch=str.toCharArray();
intshuzi=0,zimu=0;
for(inti=0;i<ch.length;i++){
if(ch[i]>='0'&&ch[i]<='9'){ shuzi++; }
elseif(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z'){ zimu++; } } System.out.println("字母有:"+zimu+"个"); System.out.println("数字有:"+shuzi+"个"); }}一5.2C语言5.2C语言5.2.1C语言简介5.2.2C语言的发展历史5.2.3C语言的特点5.2.4C环境配置5.2.5C代码展示一5.2C语言5.2.1C语言介绍C语言于1973年被正式发布,正赶上20世纪70、80年代计算机技术的飞速发展时期,得益于自身面向过程、灵活访问硬件的特点,C语言迅速占领了系统软件开发领域,并影响了此后数十年间产生的各种编程语言。C++、Java、C#、JavaScript、PHP、D、Go等编程语言都受到了C语言的影响,这一大类语法相近的语言被称为“Clike”语言。一5.2C语言5.2.1C语言介绍现在,虽然C语言不再像以前一样在软件开发领域占据着统治地位,显得不那么耀眼,但是在需要高性能软件系统的领域,C语言仍然是首选的开发语言。而且在如今的软件产业中,大量基础软件都是由C语言开发的,这些软件在服务器、智能设备、电子设备上及我们不会注意到的幕后默默地运行着,支撑着现代信息社会的运转。可以说,C语言是现代软件产业的基石。一5.2C语言5.2.1C语言介绍(1)华为鸿蒙操作系统、UNIX操作系统、Linux操作系统、苹果macOS操作系统等操作系统,这些操作系统可以为各类计算机系统管理硬件资源、支持程序运行。操作系统作为特殊的软件,需要极高的运行效率及管理计算机硬件的能力,而编写操作系统就是C语言被设计的目的之一,因此,在操作系统开发领域,C语言占据着统治地位。(2)各种编程语言的编译器、虚拟机、解释器等都是由C语言开发的。例如,Python语言的解释程序就是由C语言开发的,并且解释程序的C语言源代码全部开源,任何人都可以将Python解释程序整合到自己的软件中,同时,任何人都可以使用C语言为Python语言开发新的功能;Java语言的编译器与Java虚拟机(JVM)都是由C语言开发的,同样可以使用C语言扩展Java语言的功能;C语言自身的编译器也是由C语言开发的,如GCC。一5.2C语言5.2.1C语言介绍(3)MySQL、Oracle等数据库管理系统的核心部分是由C语言开发的。由于数据库管理系统需要管理大量的数据,同时对外提供高并发的服务,对性能要求极高。(4)Subversion、Git等源代码管理工具是由C语言开发的,大量软件企业使用这些工具管理自身的源代码。(5)在互联网领域,使用C语言开发的Apache、Nginx等高性能Web服务器为全世界的网站提供服务。(6)在嵌入式开发领域,由于硬件资源的限制,要求程序不能有过多的消耗,最好能直接访问各种硬件资源。因此,C语言成为嵌入式开发领域的首选语言,其他语言目前还无法撼动其地位。例如,各种小型电子设备的软件、小型家用路由器、车载电子控制单元(ECU)等都是由C语言开发的。随着物联网、智能汽车等新兴电子设备的兴起,C语言在嵌入式领域将发挥更大的作用。一5.2C语言5.2.1C语言介绍(7)C语言也可以使用GNOME/Gtk+开发桌面应用程序,如Linux系统的Ubuntu发行版桌面环境就是C语言使用GNOME/Gtk+开发的,有着不输于Windows、macOS系统的美观界面。(8)机器学习领域的TensorFlow框架,其核心部分就是由C语言开发的,该框架在大数据、人工智能、自动驾驶等领域被大量使用。一5.2C语言5.2.2C语言的发展历史1970年,肯尼斯·蓝·汤普森和丹尼斯·里奇在贝尔实验室参与UNIX操作系统的开发。随着UNIX操作系统的成功,贝尔实验室考虑将操作系统从PDP-7电脑移植到其他类型的电脑上,由于汇编语言不具备跨平台的能力,因此UNIX开发团队决定使用BCPL语言重写操作系统。在开发过程中,肯尼斯·蓝·汤普森发现BCPL语言不能很好地满足操作系统的开发,就在BCPL语言的基础上设计了一种新的编程语言,这种语言被命名为“B语言”(取“BCPL”语言的第一个字母)。一5.2C语言5.2.2C语言的发展历史后来,在使用B语言开发UNIX操作系统的过程中,发现还是无法达到他们的预期要求,于是丹尼斯·里奇在B语言的基础上做了进一步的改进,设计出了具有丰富的数据类型并支持大量运算符的编程语言。为了支持在不同计算机系统中移植,新语言支持“一次编写,随处编译”。1973年初,新语言的主体完成,改进后的语言较B语言有质的飞跃,这种语言被命名为C语言(取“BCPL”的第二个字母)。随后,汤普森和里奇使用C语言成功重新编写了UNIX操作系统。一5.2C语言5.2.2C语言的发展历史20世纪70、80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。1989年,ANSI发布了第一个完整的C语言标准——ANSIX3.159-1989,简称“C89”。1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC9899:1999,简称“C99”。2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899:2011,简称为“C11”。一5.2C语言5.2.3C语言的特点由于产生的时代及明确的目标,让C语言具有小巧、精悍的特点。第一点,C语言足够高级。C语言不和任何特定的计算机硬件绑定,这让它可以适应不同的硬件。C语言有丰富的内置数据类型,如整型(short、int、long)、浮点型(float、double)、字符型(char)等。除了这些内置数据类型,还可以通过数组类型、枚举类型(enum)、共用体类型(union)、结构体类型(struct)来定义复合类型,使得C语言具有强大的数据描述能力。C语言中包含大量的运算符,远多于同时代的其他编程语言。C语言语法灵活多变,支持不同类型数据之间的自动转换。一5.2C语言5.2.3C语言的特点第二点,C语言足够精简。C语言的所有功能由32个关键字(C89标准32个、C99标准37个、C11标准44个)、34个运算符实现,这让C语言本身非常的简练。另外,20世纪70年代C语言被发布时,面向对象的编程思想还没有大规模流行,C语言面向过程的编程思想足够满足当时软件项目的需求,这也让C语言保持简洁的语法及易学易用的特点。一5.2C语言5.2.3C语言的特点第三点,C语言足够底层。为了适应系统编程的需要,C语言保留指针的概念,让程序员能够自由地访问内存,而其他高级语言为了安全性和稳定性往往会隐藏内存操作。除了能够进行内存操作,C语言还能够对变量的存储类型进行设置,如将变量设置为寄存器类型(register)变量,这样就有更快的存取速度。在必要时,甚至可以在C语言的源代码中嵌入汇编语言,实现更高的执行效率。一5.2C语言5.2.4C环境配置C语言的开发环境有很多,微软的VisualStudio系列集成开发环境、JetBrains的CLion集成开发环境、Dev-C++集成开发环境、C-Free集成开发环境,嵌入式开发领域有KeilC51、AVRGCC、ADS等。这里以Windows平台下的Dev-C++集成开发环境为例配置C语言开发环境。一5.2C语言5.2.4C环境配置Dev-C++原是由Bloodshed公司开发的,后被Embarcadero公司收购,更名为EmbarcaderoDev-C++,可以从Embarcadero官网或GitHub上下载,下载页面如图所示。一5.2C语言5.2.4C环境配置安装完成后,桌面上会出现DevC++的图标,双击DevC++的图标即可运行集成开发环境。在第一次启动DevC++时会要求进行一些设置。一5.2C语言5.2.4C环境配置设置完成后就可以开始使用了。在菜单栏中选择“文件”->“新建”->“项目”命令,新建C语言项目,如图所示。一5.2C语言5.2.5C代码展示右边的代码展示了如何使用C语言代码找到水仙花数。水仙花数是一个三位数整数,这个数中每一位上数三次方的和等于其自身。一5.2C语言#include<stdio.h>//计算num的三次方intcube(intnum){ returnnum*num*num;}//判断num是否为水仙花数intisNarcissistic(intnum){ inth=num/100; //取得百分位上的数 intt=(num/10)%10; //取得十分位上的数 into=num%10; //取得个位上的数 //3个数三次方的和是否等于自身 return(cube(h)+cube(t)+cube(o))==num;}
//在主函数中利用循环寻找水仙花数intmain(intargc,char*argv[]){ //利用循环从100开始遍历所有的三位数 intnum; for(num=100;num<1000;++num){ //利用isNarcissistic函数判断num是否为水仙花数 if(isNarcissistic(num)){ //如果num是水仙花数,则将num打印出来 printf("%d**3+%d**3+%d**3=%d\n",num/100,num/10%10,num%10,num); } } return0;}一5.3C++语言5.3C++语言5.3.1C++语言简介5.3.2C++语言的发展历史5.3.3C++语言的特点5.3.4C++环境配置5.3.5C++代码展示一5.3C++语言5.3.1C++语言介绍20世纪70年代C语言被发布后,编程思想继续在发展,由结构化编程发展到面向对象编程。尤其是在20世纪80年代“个人计算机”概念兴起,为了能让非专业人员方便地使用计算机,需要简化计算机的操作方式,而原有的命令方式就显得复杂难用了,直观的图形化用户界面成为新的趋势。图形化界面软件的规模和复杂性相较于以前的命令行程序大大增加,随着软件项目变得越来越大,C语言这类面向过程的开发语言在新形势下就显得力不从心了。为了解决这个问题,面向对象编程就流行起来,更能适应大型软件项目中复杂的业务逻辑。一5.3C++语言5.3.1C++语言介绍C++语言适合开发对运行效率敏感、功能复杂的应用程序。由C++语言开发或核心功能由C++语言开发并被大量使用的软件列举如下。(1)办公类软件,如金山公司的WPS系列软件、微软公司的Office系列软件、OpenOffice系列软件等。办公类软件功能复杂,对运行效率要求较高,这类软件多数是使用C++语言开发的。(2)互联网浏览器,如谷歌公司的Chrome、Mozilla基金会的Firefox、微软公司的Edge等。随着互联网的发展,为了能展示越来越丰富的互联网内容,浏览器的功能变得越来越强大,对浏览器运行效率的要求也越来越高,此类应用主要使用C++语言开发。一5.3C++语言5.3.1C++语言介绍(3)电子娱乐游戏类软件,如雅基软件的Cocos2d-x游戏引擎、EpicGames公司的游戏引擎——虚幻引擎4等。游戏引擎是用于开发游戏的工具集,Cocos2d-x主要应用于智能设备上,虚幻引擎4主要用于开发一些商业游戏。有一些游戏直接使用C++语言作为开发语言,如《英雄联盟》、《星际争霸2》等。在网络游戏中,也常用C++语言开发游戏服务器,用于处理游戏逻辑。(4)计算机辅助设计类软件,如AutoCAD、SolidWorks、UG、SolidEdge等,这类软件也主要由C++语言开发。一5.3C++语言5.3.1C++语言介绍(5)阿里巴巴公司的国产企业级分布式关系数据库OceanBase是使用C++语言开发的,微软SQLServer、IBMDB2等数据库也是使用C++语言开发的。(6)微软的集成开发环境VisualStudio(VS)使用C++语言作为主要开发语言。VS是当前功能非常完善、运行效率非常高的集成开发环境、是Windows操作系统上主要的开发环境,支持C、C++、C#、python、HTML+CSS+JavaScript、F#等编程语言进行软件开发。一5.3C++语言5.3.2C++语言的发展历史1979年,本贾尼·斯特劳斯特卢普正在AT&T贝尔实验室从事研究工作。当时他接触到一种名为Simula
67的面向对象编程语言。本贾尼·斯特劳斯特卢普发现面向对象思想在软件开发上非常有用,但是因为Simula
67语言的执行效率低,其实用性不强。不过AT&T贝尔实验室正好有一款小巧、精悍的编程语言——C语言。本贾尼·斯特劳斯特卢普决定将这两种语言的优点结合在一起,最终推出了带类的C语言(C
with
classes)。
随着不断地改进,带类的C语言与C语言之间的差距越来越大,最终于1983年,该语言被正式命名为“C++”,成为一种新的编程语言。此时,C++语言与C语言就逐渐不再兼容,C++语言中类型检测变得严格,C语言代码的某些写法在C++语言代码中被视为语法错误。一5.3C++语言5.3.2C++语言的发展历史1985年,本贾尼·斯特劳斯特卢普的C++参考手册《TheC++ProgrammingLanguage》出版,成为C++语言技术规范的重要参考。同年,C++语言的商业版本问世。1990年,《TheAnnotatedC++ReferenceManual》发布,同年,Borland公司的商业版TurboC++编译器问世。TurboC++附带了大量函数库,这一举措对使用C++编程语言进行软件开发产生了极为深远的影响。一5.3C++语言5.3.2C++语言的发展历史1993年,RTTI(运行期类型识别)和namespace(名字空间)被添加到C++语言中。1998年,C++标准委员会发布了C++语言的第一个国际标准——ISO/IEC14882:1998,该标准即为C++98标准,这个标准将标准模板库(StandardTemplateLibrary,STL)也纳入C++语言标准中。一5.3C++语言5.3.2C++语言的发展历史2011年,推出C++11标准,一些新的语言特性被添加到C++语言中,包括正则表达式、完备的随机数生成函数库、新的时间相关函数、原子操作支持、标准线程库、新的for语法、auto关键字、新的容器类、更好的union支持、数组初始化列表,以及变参模板等。此后,在2014年和2017年又分别推出了C++14标准与C++17标准,这两个标准在C++11标准的基础上进行了较少的调整。2020年,发布了C++20标准,C++20标准有了较大的变化,为C++语言添加了协程、模块、新的操作符与关键字、原子智能指针、同步库、概念与约束、范围、指定初始化等新特性。一5.3C++语言5.3.3C++语言的特点C++语言最初被设计为C语言的超集,希望在保留C语言的所有优点的前提下又有更强大的功能,但是C++语言的目标和C语言的目标终究是不一样的,最终这两种语言走向了两个截然不同的方向。C++语言的第一个特点就是复杂。C++语言自发布以来,经过数十年的发展与改进,功能变得越来越强大,但是语法也变得越来越复杂,造成这一现象的原因是C++语言承载了多种不同的编程思想,面向过程、面向对象、函数式编程、泛型编程等,很多评论指出“C++不是一门编程语言,而是多门编程语言”。不像C语言精简灵活的语法,C++语言为了在提供更多功能的同时保持灵活性,在语法中不可避免地引入了很多非常细节的语法,让学习、使用C++语言变得困难。一5.3C++语言5.3.3C++语言的特点与语法复杂对应的是C++语言的强大。C++语言的强大体现在两个方面:高效率和通用性。C++语言能从底层系统的开发覆盖到应用层软件的开发,从操作系统、桌面程序的开发工作到大型分布式系统的开发工作,C++语言都能胜任,有时甚至是唯一选择。可以说,C++语言是一种能覆盖所有开发领域的通用开发语言。不过想要发挥好C++语言的优势并不容易,由于学习、使用C++语言的成本较高,在一些用户需求快速变化的领域,如互联网领域、企业级应用领域、科研领域等,C++语言虽然可以开发,但是并不擅长,在这些领域活跃的就是Java、C#、Python等编程语言了。一5.3C++语言5.3.4C++环境配置C++语言的开发工具很多,而且和C语言的开发工具有很大的重叠。这里以微软Windows平台下的VisualStudio为例配置C++语言开发环境。一5.3C++语言5.3.4C++环境配置Windows平台上VisualStudio有3个版本:Community、Professional、Enterprise,分别是免费的社区版、专业版、企业版,如图所示。社区版包含了所有常用的基础功能,如果以学习为目的,则选择社区版即可。一5.3C++语言5.3.4C++环境配置启动安装后,需要选择安装的内容,如图所示。这里选择“使用C++的桌面开发”,也可以根据需要选择其他内容,如需要使用C#语言,则可以选择与.Net相关的内容。一5.3C++语言5.3.4C++环境配置安装完成后,启动VisualStudio2022。在启动界面中单击“创建新项目”按钮,在弹出的“创建新项目”界面中语言选择“C++”,平台选择“Windows”,项目类型选择“控制台”,项目模板选择“控制台应用”,如图所示。一5.3C++语言5.3.5C++代码展示右边的代码展示了如何使用C++语言代码对一百万个数进行排序。排序的方法是快速排序算法。快速排序算法的思路是:选取一个关键数,用这个关键数将待排序的数据划分成两个区域,一个是比关键数小的区域,一个是比关键数大的区域,然后在这两个区域中反复进行上述操作,直到整个区域都有序为止。代码如下:一5.3C++语言#include<iostream>#include<random>constintMAXLEN=1024*1024;//定义数组的最大长度unsignedintdata[MAXLEN]={0};//定义数组typedefunsignedint(&dataArray)[MAXLEN];//定义部分排序函数,将数据划分为大于关键数的部分和小于关键数的部分,并返回排序后关键数的位置intsortParttion(dataArrayd,intbegin,intend,intkeyPos){std::swap(d[begin],d[keyPos]);autol=begin;auto&keyValue=d[begin];for(autoindex=begin+1;index<end;index++){if(d[index]<keyValue){l++;std::swap(d[l],d[index]);}}std::swap(d[begin],d[l]);returnl;}//定义快速排序函数voidquickSort(dataArrayd,intbegin,intend){if(begin>=end-1)return;
autokeyPos=begin;keyPos=sortParttion(d,begin,end,keyPos);quickSort(d,begin,keyPos);quickSort(d,keyPos+1,end);}intmain(){std::default_random_enginee;for(autoi=0;i<MAXLEN;i++)data[i]=e();quickSort(data,0,MAXLEN);}一5.4C#语言5.4C#语言5.4.1C#语言简介5.4.2C#语言的发展历史5.4.3C#语言的特点5.4.4C#环境配置5.4.5C#代码展示(略)一5.4C#语言5.4.1C#语言介绍C#语言是微软公司发布的一种由C++语言衍生出来的面向对象的编程语言,该语言是运行于.NET平台之上的高级程序设计语言之一。因为这种继承关系,C#语言与C/C++语言具有极大的相似性,熟悉类似语言的开发者可以很快地转向C#语言。C#语言与Java语言有着相近的定位,并且都是大量借鉴了C++语言的语法,以至于它们看起来非常相似,如两种语言都包括了诸如纯面向对象、单一继承、接口等。此外,C#程序的运行方式与Java程序的运行方式一样,由一个被称为公共语言运行时(CommonLanguageRuntime,CLR)的虚拟机执行。一5.4C#语言5.4.1C#语言介绍由C#语言开发并被大量使用的软件列举如下。(1)微软开发者网络(MicrosoftDeveloperNetwork,MSDN)是微软官方关于Windows平台的开发者社区,这个站点上包含了微软全部的技术文档,以及大量开发者在其上讨论的各类开发问题。MSDN的后台Web服务器端是由C#语言开发的,类似的还有StackOverflow等。(2)微软SQLServer数据库产品中的大部分程序是由C#语言开发的,如SQLServerManagementStudio等。(3)微软基于云计算的操作系统MicrosoftAzure主要是由C#语言开发的。一5.4C#语言5.4.1C#语言介绍(4)微软XBOX游戏机中的操作界面主要是使用C#语言开发的。(5)跨平台游戏引擎Unity3D使用C#语言作为开发语言,配合使用开源.Net平台“mono”实现了跨平台游戏开发能力,可以开发Windows平台、Android平台、微软Xbox、索尼PlayStation、任天堂Switch等平台游戏。一5.4C#语言5.4.2C#语言的发展历史2000年,由微软公司的安德斯·海尔斯伯格(AndersHejlsberg)主持开发的C#语言发布,它是一种面向对象的编程语言,其借鉴了C++语言和Java语言的语法特点。2001年,微软发布第一个.NETFramework。2003年,.NETFramework的版本升级到v1.1,完善了桌面应用开发和Web开发。2006年,微软相继推出了2.0和3.0版本的.NETFramework。在3.0版本中,微软推出了WPC、WCF、WF等框架。随着3.0版本的问世,C#语言进入发展的快车道,微软借此占领了开发市场半壁江山。一5.4C#语言5.4.2C#语言的发展历史2009年,微软发布Web框架ASP.NETMVC1.0并完全开源,并在随后几年不断完善,成为.Net平台主要的Web开发框架。2016年,微软开启跨平台产品线.NETCore,并完全开源。同年,微软正式推出.NETCore1.0,在Web领域推出了跨平台Web框架ASP.NETCore,以及开发Win10应用的UWP框架。2017年,.NETCore2.0发布,传统的.NETFramework的版本升级到4.7。2019年,.NETCore3.0发布,.NETFramework的版本升级到4.8,这也是.NETFramework的最后一个版本。2020年,微软关闭了.NETFramework产品线,并将.NETCore产品线更名为.NET。为了和原来的.NETFramework4.x进行区分,新.NET产品线直接从版本号5开始,即.NET5.0。一5.4C#语言5.4.3C#语言的特点C#语言被设计为一种安全的、稳定的、简单的面向对象编程语言。在设计时,C#语言借鉴了C++语言与Java语言的特点,但是去掉了其中一些复杂的语法特性,使得使用C#语言能够高效地编写程序。C#程序的运行方式类似于Java程序的运行方式,先将C#程序的源代码编译为被称为中间公共语言(CommonIntermediateLanguage,CIL)的代码,再被称为CLR的虚拟机执行。CLR内建垃圾收集器,当对象的生命周期结束时,垃圾收集器负责收回不被使用的对象占用的内存空间。在使用C#语言时,不必考虑复杂的内存管理,也不必担心指针操作带来的危险,这让使用C#语言变得安全、简单。一5.4C#语言5.4.3C#语言的特点C#语言是完全的面向对象编程语言,支持面向对象语言的基本特征,即封装、继承、多态。同时,C#语言简化了设计,如C#语言不支持多重继承,减少了开发时的复杂度,让程序结构变得简洁明了,也降低了使用C#语言的成本。一5.4C#语言5.4.4C#环境配置C#语言主要的开发环境使用的是VisualStudio,其安装过程在介绍C++语言时已经展示。这里简单介绍一下安装过程中的区别。在安装VisualStudio的过程中,在选择需要安装的内容时将“ASP.NET和Web开发”、“使用.NET的移动开发”和“.NET桌面开发”内容选上,如图所示。一5.4C#语言5.4.4C#环境配置安装完成启动VisualStudio2022。在启动界面中单击“创建新项目”按钮,在弹出的“创建新项目”界面中,语言选择“C#”,平台选择“Windows”,项目类型选择“控制台”,项目模板选择“控制台应用(.NETFramework)”,如图所示。。一5.4C#语言5.3.4C#环境配置安装完成后,启动VisualStudio2022。在启动界面中单击“创建新项目”按钮,在弹出的“创建新项目”界面中语言选择“C++”,平台选择“Windows”,项目类型选择“控制台”,项目模板选择“控制台应用”,如图所示。一5.4C#语言一5.5Python语言5.5Python语言5.5.1Python语言简介5.5.2Python语言的发展历史5.5.3Python语言的特点5.5.4Python环境配置5.5.5Python代码展示一5.5Python语言5.5.1Python语言介绍吉多·范罗苏姆设计Python编程语言的初衷是替代名为“ABC”的编程语言,ABC语言是面向教育的强交互语言,不过最终ABC语言并未取得成功。作为ABC语言开发者之一的吉多·范罗苏姆,在分析了ABC语言失败的原因后,开发出了语法简练的Python编程语言。Python语言不是一门强调运行效率的编程语言,所以如果开发需要较高运行效率的程序,那么不要选择Python语言。但是,Python语言却是有着非常出众开发效率的编程语言,同样一件事情,在其他编程语言中需要大量的代码,而在Python中则可能只需要寥寥几行代码就能完成。之所以Python语言有如此高的开发效率,是因为Python语言具有种类丰富的开发库,这些不同功能的库往往又是由其他语言开发的,如C语言、C++语言等。一5.5Python语言5.5.1Python语言介绍自发布以来,Python语言受到了软件开发社区的广泛支持,各类开发团体如程序员、开源社区、大型软件企业等,为Python语言贡献了数量庞大的软件开发库。现在,Python语言已经在如下领域建立了庞大的用户基础。(1)互联网Web开发领域:由于互联网应用需求易变的特点,Python语言作为一种动态类型语言,在快速响应需求变化上有先天的优势,尤其以开发迅速著称,配合Python语言丰富的Web服务端框架,如Flask、Django、Tornado等,能够快速部署Web应用。(2)科学计算和统计领域:Python语言的NumPy、Pandas、SciPy、Statsmodel等库在科学计算和统计领域应用广泛,配合Matplotlib绘图库使用,是研究领域常见的使用方式。一5.5Python语言5.5.1Python语言介绍(4)网络爬虫领域:Python语言配合使用Requests、lxml、Scrapy、Selenium等库,能够快速开发各类网络爬虫。(5)图形用户界面(GraphicalUserInterface,GUI)领域:使用PyQt、PyGTK、wxPython、Tkinter等GUI库,能够开发桌面应用程序,如GIMP——一款Photoshop的开源替代品。由于Python语言的解释器是开源软件,因此Python解释器也能非常方便地被集成到使用其他语言开发的程序中,尤其是使用C语言、C++语言开发的程序,通过集成Python解释器,能让宿主软件获得易于扩展、易于修改的特点。一5.5Python语言5.5.2Python语言的发展历史1991年,第一个Python语言解释器诞生。它是用C语言实现的,并能够调用C库。从一诞生,Python语言已经具有了类、函数、异常处理、包括表和词典在内的核心数据类型,以及以模块(module)为基础的拓展系统。1995年,吉多·范罗苏姆在弗吉尼亚州的国家创新研究公司(CNRI)继续他在Python上的工作,并在那里发布了该软件的多个版本。2001年,Python软件基金会(PSF)成立,这是一个专为拥有Python相关知识产权而创建的非营利组织。一5.5Python语言5.5.2Python语言的发展历史2000年,Python2发布,目前稳定版本是Python2.7。同年发布Jython,Jython是使用Java语言编写的Python实现。2006年,IronPython发布,IronPython是一个在.Net平台运行Python程序的项目。2007年,PyPy发布,PyPy是用Python语言实现的Python解释器。2008年,Python3发布,Python3不完全兼容Python2,建议新软件项目使用Python3。2021年,Python语言超过C语言,成为TIOBE排行榜上世界编程语言排行第一的语言。一5.5Python语言5.5.3Python语言的特点Python语言是基于解释器运行的编程语言,这让Python语言有极强的可移植性。再加上Python解释器是开源软件,这也让更多的平台能够运行Python程序。另外,使用C/++语言开发的软件能将Python解释器集成到程序中,这让集成了Python解释器的软件也能通过Python语言提高扩展性和灵活性。Python解释器还可以通过其他编程语言来扩展Python语言的功能,如使用C、C++语言为Python开发新的功能库。Python种类丰富的各类库中很多库是由其他语言开发的,如科学计算库NumPy就是使用C语言开发的。一5.5Python语言5.5.3Python语言的特点Python语言的设计原则是“优雅”、“明确”和“简单”。为了贯彻这些原则,设计者希望Python语言能“用一种方法,最好是只有一种方法来做一件事”,从而让Python语言的使用者能聚焦于想要做的功能,而不是过多地考虑如何去做这个功能。这让Python语言具有语法简洁、易于学习、易于阅读、易于使用的特点。Python语言有相对较少的关键字和简洁清晰的语法结构,学习起来更加简单。标志性的强制代码块缩进,让代码结构更为清晰美观,便于代码的阅读和维护。Python语言作为动态类型语言,在编程时不用纠结于语法细节(如考虑数量的类型等),而是专注于数据如何处理、如何实现功能。当然这也带来了一些问题,在面对大型软件项目时,类型安全将会成为问题,如何协调不同模块之间的数据交互,会考验开发者的设计与项目管理能力。一5.5Python语言5.5.4Python环境配置Python程序的运行需要运行环境支持,这里介绍Python运行环境的安装与配置。首先从Python的官网上下载官方发行版,打开官网后页面中会显示当前最新的Python版本,如图所示。一5.5Python语言5.5.4Python环境配置启动安装程序后,勾选界面下部的“AddPython3.10toPATH”复选框,如果不改变路径,则可以直接选择“InstallNow”,也可以选择“Customizeinstallation”改变默认的安装配置,如图所示。一5.5Python语言5.5.4Python环境配置安装完成后,可以在“开始”菜单中找到Python程序。其中,IDLE是Python运行环境自带的图形化交互界面,如图所示。一5.5Python语言5.5.4Python环境配置安装运行环境后,还需要配置开发环境。能用于开发Python程序的工具有很多,如微软的VisualStudio集成开发环境、VisualStudioCode编辑器、SublimeText编辑器、JetBrains的PyCharm集成开发环境等。一5.5Python语言5.5.4Python环境配置安装完成后,,启动PyCharm开发环境。一5.5Python语言一5.6PHP语言5.6PHP语言5.6.1PHP语言简介5.6.2PHP语言的发展历史5.6.3PHP语言的特点5.6.4PHP环境配置5.6.5PHP代码展示一5.6PHP语言5.6.1PHP语言介绍PHP(超文本预处理器,PHP:HypertextPreprocessor)语言是开发Web服务器端程序的编程语言,最初是由拉斯马斯·勒德尔夫(RasmusLerdorf)为自己的网站创建的一个简单脚本语言,后来发展成为流行的Web服务器端编程语言。PHP语言是一种免费开源、跨平台、被广泛使用的编程语言。一5.6PHP语言5.6.1PHP语言介绍PHP语言是一种Web服务器端面向对象的编程语言,它结合了C语言、Java语言和Perl语言的特点,在互联网领域被广泛使用。PHP程序可以比CGI或Perl程序更快速地执行动态网页。不同于其他的编程语言,PHP语言是将PHP程序嵌入HTML文档中去执行,执行效率比完全由其他语言生成HTML标记的方式快许多。PHP程序还可以被编译成中间代码,编译后的PHP程序可以达到加密和优化代码运行的目的,这样执行起来更快。其他用于开发Web服务器端程序的编程语言所具有的功能,PHP语言都能实现。PHP语言具有非常强大的功能,能够满足Web服务器端程序的开发,而且支持几乎所有流行的数据库及操作系统。一5.6PHP语言5.6.2PHP语言的发展历史PHP语言是在1994年由拉斯马斯·勒德尔夫创建的,最初只是一个简单的用Perl语言编写的统计他自己网站访问者数量的程序,取名为“PersonalHomePageTools”,后来用C语言重新编写,同时可以访问数据库,可以让用户开发简单的动态Web程序。1997年,首个发行版PHP2发布,功能开始逐渐完备,用户量增多。1998年,AndiGutmans和ZeevSuraski在为一所大学的项目中开发电子商务程序时发现PHP2的功能明显不足,于是他们重写了代码,发布了PHP3。一5.6PHP语言5.6.2PHP语言的发展历史2000年,PHP4发布,包含新增的Zend引擎、支持更多的Web服务器、HTTPSessions支持、输出缓冲、更安全的处理用户输入的方法、一些新的语言结构等功能。2004年,PHP5发布,Zend引擎升级到Zend2,引入了新的对象模型和大量新功能。2015年,PHP7发布(PHP6被取消,未发布),Zend升级到Zend3,性能提升并在Windows平台上支持64-bit整数、统一的变量语法、基于抽象语法树编译过程。2020年,PHP8发布,新版本对各种变量判断和运算采用更严格的验证判断模式,这点有利于后续版本对JIT的性能优化。一5.6PHP语言5.6.3PHP语言的特点PHP语言作为Web服务器端编程语言,有一大优势就是开源免费。这里的“开源免费”不仅仅是指PHP语言自身,还包括一整套开发部署工具链。互联网上常见的PHP开发组合包括Linux、Apache、MySQL、PHP,这四款工具简称LAMP,并且全部是开源免费的,这一组合可以节约大量的授权费用。而且这四款工具都有强大的开发者社区作为支撑,持续的迭代为LAMP提供新功能及维护服务。一5.6PHP语言5.6.3PHP语言的特点PHP语言的核心包含了数量超过1000的内置函数,功能全面,开箱即用,程序代码简洁,开发快捷便利。PHP数组支持动态扩容,既支持以数字作为键名的索引数组,也支持以字符串或字符串与数字混合作为键名的关联数组,能大幅度提高开发效率。PHP是一门弱类型语言,程序编译通过率高,相对于其他强类型语言能够更快地开发程序。此外,PHP语言解释器由C语言开发,有非常高的执行效率,还可以使用C语言开发高性能的扩展组件。PHP天然热部署,在php-fpm运行模式下覆盖代码文件即完成热部署,无须复杂的配置和重启Web服务的过程。一5.6PHP语言5.6.3PHP语言的特点随着PHP语言版本的迭代,PHP程序的运行效能显著提高,尤其是在PHP8引入JIT技术后,性能进一步提升。并且每次版本升级不只是带来运行性能的提升,还会为PHP语言带来新的便捷语法,进一步提升开发效率。为了保证持续的更新,版本迭代保持每5年发布一个大版本,每个月发布两个小版本的频率进行。每个平台均有对应的PHP解释器版本,使用PHP语言开发的程序可以不经修改就运行在Windows、Linux、UNIX等多个操作系统上。PHP语言中所有的变量都是页面级的,无论是全局变量还是类的静态成员,都会在页面执行完毕后被清空,这样降低了程序开发的难度,也能减少内存的占用,特别适用于中小型系统的开发。一5.6PHP语言5.6.4PHP环境配置使用PHP语言开发程序需要配置开发环境,这里建议使用XAMPP作为学习PHP语言的开发环境,事实上,XAMPP也可以作为开发PHP程序的实际工作环境。XAMPP包含Apache、MySQL、PHP、Perl这几款工具。Apache作为Web服务器,MySQL作为数据库,还包含PHP语言、Perl语言的运行环境。首先从XAMPP的官网上下载官方发行版,打开官网页面后,根据平台选择下载安装程序。这里以Windows平台为例展示安装过程,如图所示。一5.6PHP语言5.6.4PHP环境配置开发工具可以使用SublimeText编辑器。可以从SublimeText官网上下载安装程序,官网页面如图所示。一5.6PHP语言5.6.5PHP代码展示这里展示使用PHP语言开发一个简易聊天室的服务器端程序。创建两个PHP文件,分别命名为“chatServer.php”和“getChat.php”,并将这两个文件保存到XAMPP安装目录的“htdocs”目录中。一5.6PHP语言chatServer.php文件中的代码如下:<?php$json=file_get_contents('php://input');$json=json_decode($json);session_id("wechat");session_start();if(!isset($_SESSION['contentList'])){ $_SESSION['contentList']="";}$_SESSION['contentList']=$_SESSION['contentList']."\n".$json->{'userName'}.":".$json->{'msg'};?>getChat.php文件中的代码如下:<?phpsession_id("wechat");session_start();if(!isset($_SESSION['contentList'])){$_SESSION['contentList']="";}$contentList=$_SESSION['contentList'];echo$contentList;?>一5.7HTML、JavaScript、CSS语言5.7HTML、JavaScript、CSS语言5.7.1HTML、JavaScript、CSS语言简介5.7.2HTML、JavaScript、CSS语言的发展历史5.7.3HTML、JavaScript、CSS语言的特点5.7.4HTML、JavaScript、CSS环境配置5.7.5HTML、JavaScript、CSS代码展示一5.7HTML、JavaScript、CSS语言5.7.1HTML、JavaScript、CSS语言简介HTML的全称是HyperTextMarkupLanguage(超文本标记语言),是一种用于创建网页的标准标记语言。它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散于互联网上的资源连接为一个逻辑整体。HTML文本是由HTML标签组成的描述性文本,HTML标签可以说明文字、图形、动画、声音、表格、链接等。HTML文档的后缀名是.htm、.html,如果细心,我们会发现在日常使用浏览器的过程中,经常在地址栏里边见到这两个后缀。我们日常说的“网页”实际上就是由HTML标签构成的。HTML标签给出了页面的基础结构,如页面中包含哪些文本、图片、视频、链接内容等,这些内容的显示形式可能是表格、列表、表单、按钮、选项,或者其他显示形式。一5.7HTML、JavaScript、CSS语言5.7.1HTML、JavaScript、CSS语言简介HTML通过将整个页面组织成树形结构来描述整个页面的内容之间的关系,如图所示。一5.7HTML、JavaScript、CSS语言5.7.1HTML、JavaScript、CSS语言简介JavaScript语言是一种编程语言,它能让页面“动”起来,让页面能够根据JavaScript程序的控制执行相应的功能,如页面内容的显示与隐藏、向服务器提交数据、从服务器接收数据、修改页面结构等。当页面有内容,能根据需要执行不同业务逻辑后,还有一个重要的需求没有满足,那就是让页面美观。承担这一任务的就是层叠样式表(CascadingStyleSheets,CSS)。一5.7HTML、JavaScript、CSS语言5.7.2HTML、JavaScript、CSS语言的发展历史一5.7HTML、JavaScript、CSS语言HTMLJavascriptCSS1993年,互联网工程工作小组(IETF)工作草案发布HTML1.0。1995年,发布HTML2.0。1997年,发布HTML3.2。1997年,发布HTML4.0。1999年,发布HTML4.01。2014年,发布HTML5.0。1992年,Nombas公司发布ScriptEase语言。1998年,ECMAScript2.0版发布。1999年,ECMAScript3.0版发布。2009年,ECMAScript5.0版发布。2015年,ECMAScript6.0版发布,即ECMAScript20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行行内培训课程
- 培训师自我评价
- 陕西省扶风县扶风高中2024-2025学年度高二物理上学期期中检测试题
- 河南省郑州市登封市2024-2025学年二年级上学期期中数学试题
- 2024--2025学年江苏省宿迁市沭阳县南湖初级中学八年级(上)第一次月考数学试卷(含答案)
- T-YNRZ 024-2024 黑老虎种植技术规程
- 内蒙古自治区通辽市科尔沁左翼中旗联盟校2024-2025学年三年级上学期期中考试英语试题
- 市场营销学-企业管理出版社
- Windows Server网络管理项目教程(Windows Server 2022)(微课版)4.4 任务3 资源记录
- 语法填空专题复习练习及答案
- 古诗词诵读《江城子-乙卯正月二十日夜记梦》公开课一等奖创新教学设计统编版高中语文选择性必修上册
- 单身证明书12篇
- 2019教科版《三年级科学上册》分组实验报告单
- 现场翻译服务合同范本
- 2024年上海市各区、校七年级语文上学期期中作文题目汇编
- 2019新人教版高中生物选择性必修一点知识点归纳总结(稳态与调节复习必背)
- 医院质控工作汇报
- MOOC 刑事诉讼法-西南政法大学 中国大学慕课答案
- 2024年西藏自治区中考地理真题(解析版)
- 2023年职业技能:平版制版工技术及理论知识考试题附含答案
- 2024年甘肃省法院系统聘用制书记员招聘笔试参考题库附带答案详解
评论
0/150
提交评论