软件技术基础教学绪论(2).ppt
《软件技术基础教学绪论(2).ppt》由会员分享,可在线阅读,更多相关《软件技术基础教学绪论(2).ppt(89页珍藏版)》请在三一办公上搜索。
1、第一章 软件技术基础,软件设计能力是大学生的一种基本能力科研需要:现有工具软件并不总能满足要求工作需要:现代工业离不开自动化设备,自动化设备离不开计算机的控制,计算机的灵魂是软件。对于一个非计算机专业的人来说,“如何学、学什么”是学习计算机技术的重要问题。,为什么学习 这门课?,如何学、学什么,如何学兴趣+实践学什么将本专业和计算机的应用联系起来。在学习中应该掌握尺度,并非每一门课都做到“完全透彻”。但也不能什么都一知半解,要有一个“拳头”方向。必要的准备熟悉应用开发平台上的常用工具至少掌握一种程序设计语言注重分析:分析问题、解决问题,课程内容,算法数据结构查找与排序技术操作系统数据库技术计算
2、机网络软件工程,课程特点重点分散难度集中广而不深杂而不乱学习方法重视基础原理理解思维方式实践、实践再实践善于自学,善于利用电子资源,软件改变了我们的生活,工作生活娱乐,第一章 计算机软件技术基础,第一章 计算机软件技术基础,软件无所不在,软件无所不在,第一章 计算机软件技术基础,第一章 计算机软件技术基础,软件无所不在,第一章 计算机软件技术基础,软件无所不在,第一章 计算机软件技术基础,软件无所不在,第一章 计算机软件技术基础,软件无所不在,软件无处不在,电力调度系统火车调度系统民航调度系统天气预报系统地震预警系统核试验模拟系统,第一章 计算机软件技术基础,看不见的软件-嵌入式软件,战斗机飞
3、控系统坦克火控系统导弹弹上控制系统工业控制系统核反应堆控制系统,第一章 计算机软件技术基础,什么是软件,软件(Software)是一系列按照特定顺序组织的计算机的数据和指令的集合。软件并不只是包括可以在计算机上运行的程序,与这些电脑程序相关的文档,一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。,第一章 计算机软件技术基础,什么是软件,软件(Software)是程序、数据及相关文档的集合 程序:指示计算机完成指定任务的命令序列 数据:程序操作的对象,也是操作的结果 文档:软件开发、维护与使用的相关图文材料,是对程序与数据的描述。,第一章 计算机软件技术基础,软件和硬件的关系,硬
4、件是基础软件是灵魂,第一章 计算机软件技术基础,软件的分类,第一章 计算机软件技术基础,操作系统数据库技术开发工具,计算机软件,系统软件,中间件,用户软件,办公软件专业软件娱乐,软件的分类,中间件 在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。IDC表述:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。,软件学科,软件理论算法理论数据理论 软件系统操作系统数据库开发工具(编译原理)软件开发软
5、件工程,软件,软件是程序+说明信息(从内容上说)软件是具有使用性能的程序(从性能上说)软件是商品(从本质上说)。与其他商品比较,研制开发是主要的生产方式。(软件工程)软件只有过时而无“损耗”的商品。注重软件的柔性或有机性。,第一章 计算机软件技术基础,软件开发项目结构组成,第一章 计算机软件技术基础,软件开发文档,系统建设可行性研究报告系统现状调研报告项目开发计划系统及软件需求说明书;数据要求说明书概要设计说明书详细设计说明书,数据库设计说明书用户操作手册测试计划;测试分析报告;模块开发卷宗;开发进度月报项目开发总结报告,软件开发和程序设计(编程),软件开发:根据用户要求建造出软件系统或者系统
6、中软件部分的一个产品开发的过程。软件开发是一项包括需求获取、开发规划、需求分析和设计、编程实现、软件测试、版本控制的系统工程。程序设计,是指编写和维护源代码的过程。是软件开发过程的一小部分,有时也用来指狭义的软件开发。软件一般是通过某种或数种程序设计语言、在特定的计算机平台上实现的。通常采用软件开发工具进行开发。,合格软件开发人员的素养,团队精神和协作能力文档习惯规范化,标准化的代码编写习惯 需求理解能力 复用性,模块化思维能力测试习惯 学习和总结的能力,软件设计的一些问题,这么多的程序设计语言,我究竟该选哪一种?是不是懂得的计算机语言越多,就表示计算机水平越高?怎样才能学好软件设计?,开发语
7、言的选择,C 语言编写的 Hello,World 程序void main()printf(“Hello,world!n”);Pascal 语言编写的 Hello,World 程序Program main;begin Writeln(Hello,world!);end,第一章 计算机软件技术基础,根据具体的应用选择程序设计语言,没有必要反复争论哪种语言好(如 VC+与 Delphi 之争,注意开发工具和语言本身的区别),(1)通讯软件(实时系统、嵌入式系统):汇编、C、Java(2)数据库管理软件:Delphi、VB(3)计算机游戏:VC+(网络游戏)、Java(手机游戏)(4)Web 设计:A
8、SP、JSP、PHP+MySQL、Python(5)特定平台:.NET C#(6)科学仿真:Matlab(7)数值计算:Fortran(8)特征领域:人工智能(Lisp),第一章 计算机软件技术基础,熟悉基本的程序设计原理和相关知识(如数据结构),精通最常用 1 2 门语言(如C+,Java等),程序设计语言是相通的,高手使用任何语言都能够设计出高质量的程序。关键不在于语言本身,而在于程序设计理念与方法,以及大量的项目经验。,是否要掌握多种语言,怎样提高软件设计水平,第一章 计算机软件技术基础,熟悉应用开发平台上的常用工具。至少掌握一种程序设计语言。请注意,程序语言只是表达工具,重要的是学会分
9、析问题和解决问题的方法,不要以为学会C+就会用oo范型编制oo软件了。注重分析:从某种意义上来讲,软件开发其实就是用程序语言来描述解决问题的方法和步骤。所以分析用户的需求得到需要解决的问题,分析问题得到解决的方法步骤。分析是软件开发中最基本的一环。写文档,软件开发其实是一个问题驱动的基于文档的开发过程。应把写文档看作是应用开发的主要工作,这是最容易被忽视的工作也是现代软件工程最为强调的一点。,怎样提高软件设计水平,第一章 计算机软件技术基础,从来没有那个高手是培训成功的。成为软件开发高手的路只有一条:自学!软件开发中需要大量的编程实践和独立思考,只有在此过程中,你才能够逐步成长起来。学院里面能
10、够培养出软件开发经理更是十足的谎言,软件项目经理更强调从实际中学习软件。,第一章 计算机软件技术基础,2012-8 编程语言排名TOP20,第一章 计算机软件技术基础,Long term trends,GNU/Linux,Windows 能干而 Linux 干不了的事情,那就是不需要干的事情。,GNU是“GNUs Not Unix”的递归缩写自由自在永远免费资源众多没有病毒,UNIX,UNIX元年1970两个人Ken ThompsonDennis Ritchie UNIX is basically a simple operating system,but you have to be a g
11、enius to understand the simplicity.-Dennis Ritchie 两大阵营AT&T的UNIXUC Berkeley的BSD,对抗霸权的GUN,“革奴计划”的精神领袖Richard StallmanGNU 工程 开始於一九八四年,旨在发展一个类似 Unix,且为自由软件的完整操作系统:GNU 系统。两种思潮“大教堂”:集权、封闭、受控、保密“集市”:分权、公开、精细的同僚复审Open source距开源越近就越繁荣。任何将Unix专有化的企图,只能陷入停滞和衰败。GNU General Public License(GPL),到了1990年,GNU计划已经开发
12、出的软件包括了一个功能强大的文字编辑器Emacs、C语言编译器GCC以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件,就是操作系统的内核,网络时代的英雄Linux,比尔盖茨的头号对手Linus Torvalds1990年,芬兰赫尔辛基大学的一名学生Linus Torvalds发布了与UNIX兼容的Linux内核“hello,this is linus torvalds and i pronounce linux as Linux”,Top 5 Distributions,5,4,3,2,全人类的Linux:UBUNTU,Mark Shuttleworth 1969年,生于南非小
13、镇。大学毕业后创办了以及信息安全公司,1999年以5.75亿美元的价格卖出。在30岁时成为南非最年轻有为的本土富翁。2002年他自费3百万英镑乘坐俄罗斯联盟号飞船,在国际空间站中度过了8天的时光。当时他不知道他是否能回到遥远而又真实的地球。所以他决定如果能顺利回到地球,一定为人类做一件有意义的事。结束太空之行之后,Mark Shuttleworth创立了Ubuntu社区。Ubuntu发行版光盘,免费索取,发展简介,4.10.Warty Warthhog.(长疣的疣猪)2004-10 5.04.Hoary Hedgehog.(灰白的刺猬)2005-045.10 Breezy Badger.(愉快
14、的獾)2005-106.06 Dapper Drake.(LTS)(漂亮的鸭子)2006-66.10 Edgy Eft.(躁动的蜥蜴)2006-107.04 Feisty Fawn.(活泼的小花鹿)2007-47.10.Gutsy Gibbon.(勇敢的长臂猿)2007-108.04.Hardy Heron.(LTS)(强壮的苍鹭)2008-48.10.Intrepid Ibex(无畏的山羊)2008-109.04.Jaunty Jackalope(活潑的兔子)2009-49.10.Karmic Koala(命運的考拉)2009-1010.04 Lucid Lynx(LTS)(清醒的猞猁)20
15、10-4,第一章 计算机软件技术基础,1算法所谓算法是指解题方案的准确而完整的描述。2算法的基本特征(1)可行性(2)确定性(3)有穷性(4)拥有足够的情报,1.3 算法及算法分析 一、算法,第一章 计算机软件技术基础,3算法的基本要素一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。(1)算法中对数据的运算和操作基本的运算和操作有以下四类:算术运算:主要包括加、减、乘、除等运算。逻辑运算:主要包括“与”、“或”、“非”等运算。关系运算:主要包括“大于”、“小于”、“等于”、“不等于”等运算:数据传输:主要包括赋值、输入、输出等操作。,1.3 算法及算法分析 一、
16、算法,第一章 计算机软件技术基础,(2)算法的控制结构 算法的控制结构给出了算法的基本框架,它不仅决定了算法中各操作的执行顺序,而且也直接反映了算法的设计是否符合结构化原则。描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。,1.3 算法及算法分析 一、算法,第一章 计算机软件技术基础,4算法设计基本方法(1)列举法根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。(2)归纳法通过列举少量的特殊情况,经过分析,最后找出一般的关系。(3)递推所谓递推,是指从已知的初始条件出发,
17、逐次推出所要求的各中间结果和最后结果。其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简而确定。(4)递归(5)减半递推技术,1.3 算法及算法分析 一、算法,第一章 计算机软件技术基础,对算法的分析主要是对算法的时间复杂度和空间复杂度的分析。1时间复杂度一个算法的时间复杂度是该算法的时间耗费,即算法执行过程中所需要的基本运算次数。一个算法所耗费的时间=算法中每条语句的执行时间之和。每条语句的执行时间=语句的执行次数语句执行一次所需时间。2空间复杂度一个算法的空间复杂度为该算法在执行过程中所需要的存储空间。算法的时间复杂度和空间复杂度合称为算法的复杂度。,1.3 算法及算法分析 二、
18、算法分析,第一章 计算机软件技术基础,1线性表的逻辑定义线性表(Linear List)是由n(n0)个数据元素(结点)a1,a2,an组成的有限序列。数据元素的个数n定义为表的长度(n=0时称为空表)。将非空的线性表(n0)记作:(a1,a2,an)数据元素ai(1 i n)只是个抽象符号,其具体含义在不同情况下可以不同。如学生成绩表中,每个学生及其成绩是一个数据元素,其中数据元素由学号、姓名、各科成绩等数据项组成。,1.4 线性表、栈和队列 一、线性表,第一章 计算机软件技术基础,2线性表的逻辑结构特征对于非空的线性表:有且仅有一个开始结点a1,没有直接前趋,有且仅有一个直接后继a2;有且
19、仅有一个终结结点an,没有直接后继,有且仅有一个直接前趋an-1;其余的内部结点ai(2in1)都有且仅有一个直接前趋ai-1和一个直接后继ai1。,1.4 线性表、栈和队列 一、线性表,第一章 计算机软件技术基础,3线性表的顺序存储结构 有顺序存储和链式存储两种 顺序存储方法即把线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法。用顺序存储方法存储的线性表简称为顺序表。在顺序表中,每个结点ai的存储地址是该结点在表中的位置i的线性函数。只要知道基地址和每个结点的大小,就可在相同时间内求出任一结点的存储地址。,1.4 线性表、栈和队列 一、线性表,第一章 计算机软件技术基础,4常见
20、的线性表的基本运算(1)InitList(L):构造一个空的线性表L,即表的初始化。(2)ListLength(L):求线性表L中的结点个数,即求表长。(3)GetNode(L,i):取线性表L中的第i个结点,这里要求1 i ListLength(L)。(4)LocateNode(L,x):在L中查找值为x 的结点,并返回该结点在L中的位置。若L中有多个结点的值和x 相同,则返回首次找到的结点位置;若L中没有结点的值为x,则返回一个特殊值表示查找失败。,1.4 线性表、栈和队列 一、线性表,第一章 计算机软件技术基础,(5)InsertList(L,x,i):在线性表L的第i个位置上插入一个值
21、为x 的新结点,使得原编号为i,i1,n的结点变为编号为i1,i2,n1的结点。这里1 i n1,而n是原表L的长度。插入后,表L的长度加1。(6)DeleteList(L,i):删除线性表L的第i个结点,使得原编号为i1,i2,n的结点变成编号为i,i1,n1的结点。这里1 i n,而n是原表L的长度。删除后表L的长度减1。,1.4 线性表、栈和队列 一、线性表,第一章 计算机软件技术基础,1栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。栈的示意图如图1-4所示:(1)通常称插入、删除的这一端为栈顶,另一端称为栈底。(2)当表中没有元素时称为空栈。(3)栈为后进先出
22、(Last In First Out)的线性表,简称为LIFO表。栈的修改是按后进先出的原则进行。,1.4 线性表、栈和队列 二、栈,第一章 计算机软件技术基础,2栈的基本运算(1)InitStack(S):构造一个空栈S。(2)StackEmpty(S):判栈空。若S为空栈,则返回TRUE,否则返回FALSE。(3)StackFull(S):判栈满。若S为满栈,则返回TRUE,否则返回FALSE。注意:该运算只适用于栈的顺序存储结构。(4)Push(S,x):进栈。若栈S不满,则将元素x插入S的栈顶。(5)Pop(S):退栈。若栈S非空,则将S的栈顶元素删去,并返回该元素。(6)StackT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术 基础 教学 绪论
链接地址:https://www.31ppt.com/p-2719529.html