第二章 程序设计与软件开发Word文件下载.docx
- 文档编号:16722106
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:28
- 大小:42.27KB
第二章 程序设计与软件开发Word文件下载.docx
《第二章 程序设计与软件开发Word文件下载.docx》由会员分享,可在线阅读,更多相关《第二章 程序设计与软件开发Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。
sum
S4:
循环控制变量增值:
i+1=>
i
S5:
判断若当前i值不大于n,则
转S3继续循环处理,否则转S6
S6:
输出计算结果
S7:
算法结束
4、数据结构(DataStructure)
⏹(计算机系统内)数据指能够输入到计算机中并被其处理的符号的集合,如数字、字母、汉字、图形、图像及声音等信息在计算机内部的表示都是数据,分为数值数据和非数值数据
⏹数据元素是数据的基本单位,不同的应用环境中数据元素的粒度不同,如排序算法中的整数、数据库中的记录
⏹数据结构研究现实问题中同类数据元素之间相互关系、组织结构和存储模式,包括数据(数据元素)之间的逻辑结构、物理(存储)结构与数据运算三个方面
线性结构(LinearStructure)
⏹特点:
数据元素之间是“一对一”的次序关系。
如每个元素都有唯一的前导元素(除第一个元素)以及唯一的后继元素(除最后一个元素)。
这种线性结构常称为线性表(允许对数据元素进行任意的查找、插入和删除等操作处理)
栈(Stack)工作原理
⏹如果数据按照以下顺序进栈:
a1、a2、…an
⏹一种可能的数据出栈顺序为:
an、…、a2、a1
树形结构(TreeStructure)
图状结构(GraphStructure)
⏹存储结构:
依赖计算机,研究数据的逻辑结构如何在计算机中表示和实现
⏹顺序存储结构:
其特点是逻辑上相邻的数据结点被存储在物理位置也相邻的存储单元里(添加、删除数据需移动大量数据)
⏹C语言中,数组是一种典型的顺序存储结构。
数组元素存储在连续、相邻存储单元中,可以用作线性表、栈等的存储
⏹程序中:
并不需要实际了解任何数组的物理存储地址信息,只需按C语言要求正确定义数组,正确引用数组元素即可(达到用数组存储和处理数据的目的)
数组的定义和数组元素的引用
⏹“冒泡”排序使用数组存储10个整数,数组的定义如下(系统将根据定义分配以连续存储单元)
inta[10];
⏹a[0]-a[9]分别是对应的各个数组元素名(即存储单元,定义后数组元素值尚不能引用)
⏹如何引用数组元素?
数组名[下标]
⏹下标是一个整数值,用于索引数组元素,
⏹例如引用第3个元素(首个元素下标为0)即表示为a[2]
⏹例如a[2]=10;
⏹链式存储结构:
逻辑上相邻的数据结点在物理位置上通常不相邻,数据之间逻辑关系通过指针(链接)来表示
⏹数据的运算:
基于某种数据结构处理数据如查找、插入、删除、排序等各种基础算法
⏹例如排序算法有不同的实现方法,如冒泡排序:
将数据两两比较、符合条件的进行交换,经多遍(趟)处理,使一个无序数据序列有序
⏹1、程序设计语言:
用于书写计算机程序的语言,编写程序的工具。
除了低级语言(机器语言和汇编语言,且汇编语言源程序仍需要通过一种称为汇编程序的翻译程序转换为机器语言目标程序),主要使用与机器无关的面向人类高级语言,高级语言易学、易懂、易交流和维护、设计效率更高
⏹如早期Basic(解释性语言)、Fortran(面向科学计算)、Cobol(面向事务处理)、Pascal(里程碑式、结构化)、经典C(最著名OS—Unix副产品)、C++、C#、Java(最流行主流面向对象语言)及当今可视化程序设计语言(集成开发环境和开发平台)VisualBasic、VisualC++、Deiphi、PowerBuilder等,还有面向Web应用各种语言和开发环境
⏹高级语言中:
语句是构成源程序的基本单位,一条语句通常会被编译或解释为多条机器指令。
程序设计人员编写设计语句必须严格遵循语言词法、语法规则
⏹数据是程序的处理对象,数据类型则是高级语言确定数据范围、数据占据存储空间大小及所能进行的计算的常见要素
⏹大多数高级语言都共同具有的特性:
(1)基本符号集
(2)基本元素:
数、名字(定义变量、函数等)、字符串等(3)基本数据类型(4)构造类型,数组、栈等(5)运算符与表达式:
如算术/逻辑运算等(6)语句(如赋值/条件/循环以及输入输出等)(7)库函数(由系统提供)、自定义函数(8)注释
⏹2、程序设计(Programming):
使用计算机语言编写、调试程序的过程,也称编程。
从算法角度,是用计算机语言对所解决的问题中的数据及数据处理的方法和步骤进行完整、准确描述的过程
⏹主要步骤
(1)确定问题、分析问题(原始数据、解题要求、输出及形式等)
(2)确定算法与数据结构(3)编写源程序(4)编译、测试程序(5)交付
高级语言程序的编译、运行
案例体验:
C语言程序
⏹C语言是当今最广泛应用高级语言,典型的结构化程序设计语言,基本成分包括:
#include<
stdio.h>
main()
{intx,y,sum;
//数据类型定义(定义三个变量)
printf("
Entertwointegers:
"
);
//提示信息
scanf("
%d%d"
&
x,&
y);
//输入数据到x和y中
sum=x+y;
//计算(算术表达式)并保存结果
Sum=%d\n"
sum);
//输出结果
}//说明:
输入源程序时不要输入“//”及随后的注释
⏹函数:
高级语言的重要概念,理解现代软件技术许多概念的基础,一个函数与问题中划分的一个相对独立的模块对应
⏹函数应用涉及
(1)自定义函数的设计(函数名、返回值类型、形式参数以及函数体内的语句序列设计)
(2)调用函数中的调用位置和形式、实际参数及返回值的处理等(实参应与自定义函数中形参的数量、类型及顺序应一致)
⏹从程序执行的角度,一旦程序执行到“调用点”,意味着程序的执行流程将会改变:
即转向执行被调用函数
(1)调用函数首先向被调用函数传递参数
(2)执行被调用函数语句序列,直到结束(结果将传回调用函数)
⏹被调用函数执行结束后:
将返回调用函数原调用点的下一条语句继续执行
⏹案例2—函数应用简单程序:
重新设计上述案例1
⏹上述是针对具有返回值及函数参数的函数设计和调用模式。
无参数和无返回值的函数也可以实现特定的功能,其函数设计和调用模式如下:
关于TC集成开发环境
双击桌面TC快捷图标启动软件,组合键功能如下:
⏹Alt+F打开“文件”菜单,其中常用命令为New(新建)、Save(保存)
⏹Alt+C打开“编译”菜单,直接单击“Compile”
⏹Alt+R打开“运行”菜单,直接单击“Run”
⏹Alt+F5可以查看运行结果(或者用Alt+R打开“运行”菜单,再单击“Userscreen”)
上机任务(3)
⏹练习利用VisualC++开发平台编辑、编译和运行C语言的选择、循环结构案例,认知和掌握C语言选择结构、循环结构的构建形式以及简单应用并掌握案例涉及的算法实现原理(C++程序案例一般了解,不做要求)
⏹1、程序设计语言
⏹2、程序设计(Programming)
(1)数据类型
(2)传输(3)运算(4)控制:
涉及选择(分支)语句、循环语句
⏹例如C语言中的if语句(if语句或者if-else语句)、for语句等:
可以用来实现简单或复杂的选择结构、循环结构的控制语句
if(a[i]>
a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
⏹选择结构的简单程序:
输入三个整数,按照从小到大排序,并输出排序结果(算法略)
for(表达式1;
表达式2;
表达式3)语句
{
inti,n;
longintfact=1;
Computationofn!
\n"
Enteraninteger:
%d"
n);
for(i=1;
i<
=n;
i++)
fact=fact*i;
%d!
=%ld\n"
n,fact);
}
longintfacFun(intm);
main(){intn;
longintr;
Inputaninteger:
if(n<
1){printf("
Errordata!
exit(0);
}
r=facFun(n);
n,r);
拓展—利用循环的嵌套应用模式,可以解决更复杂的问题,实现复杂的功能。
分析程序:
main()
{inti,j;
i<
=3;
i++)
{for(j=1;
j<
=i;
j++)
%d*%d=%d"
j,i,i*j);
}
拓展—“冒泡”排序程序分析:
通过若干趟两两比较与交换(每趟结束后使当前无序整数中最大数“沉底”)
⏹3、程序设计除了高效率,还要考虑程序可靠性、可扩充性、可重用性和等要素。
经典程序设计方法:
●
(1)结构化程序设计方法
●
(2)面向对象程序设计方法
(1)结构化程序设计方法
⏹自上而下、逐步降低抽象度、逐步细化的原则:
确保程序的正确性
⏹模块化原则:
复杂问题可以划分为若干简单问题(对应一个模块或再分为更小的模块),程序由若干模块组成
⏹程序逻辑步骤由顺序、分支、循环控制结构组成:
具有结构良好、易理解以及易维护,易验证程序正确性等优点
⏹结构化程序设计方法侧重过程描述,将数据和对数据处理分离开。
若出现数据结构需要修改、程序需要扩充或升级等情况,对应的模块/函数也需大量修改,这对于大型程序的设计效率有不利影响
⏹通过重新认知人类解决现实问题的方法和过程,人们找到更适合、更接近人类认识现实世界和解决现实问题的方法
(2)面向对象(Object-Oriented)程序设计方法
⏹目前主流的程序设计方法:
基本思想是
(1)将现实世界的实体映射为程序中的对象,该对象是由描述实体内部状态(静态特征)的数据及对这些数据实施的操作(即实体动态特征)封装在一起构成的统一体
⏹我们熟悉的基于图形用户界面(GUI)的WindowsOS中:
对象无处不在,如键盘、鼠标、按钮、滚动条、对话框、文本框、菜单及窗口等都是对象,还有用户应用程序的操作也都基于对象
⏹从设计的角度,先设计类(定义对象的全部特征),再创建对象(对象是类的实例,是程序中的执行体)。
利用已有的类创建(派生)子类,实现代码重用
理解:
对象、实体与类(图略)
C++程序
⏹当今流行和典型的面向对象语言:
C++、C#、Java(基于不同软件开发平台)
⏹C++:
(美国贝尔实验室)基于C语言的扩展OOP语言,语法上与C语言兼容
⏹美国SUN公司1995年推出非常成功的OOP语言—Java,微软后来则推出基于C/C++重新实现的先进OOP语言—C#,以推动基于微软网络平台的应用开发
⏹C++程序中:
“类”定义“对象”的数据(称为数据成员)以及对数据的操作(称为成员函数,Java称“方法”),类结构实现将对象所有特征的封装
⏹程序中以“类”为模板创建各种需要的“对象”(类的实例),通过发送消息(参数)让对象协作实现特定任务(结构化程序设计中,数据与对数据的操作代码在结构上是完全分离的)
⏹C++类基本结构示例
#include<
iostream.h>
string.h>
classCStudent
{
private:
public:
};
voidmain()
cout<
<
Hello,WelcometoC++world!
;
CStudentme;
me.init();
me.display();
2.3软件工程与软件开发
2.4Web应用中的软件技术
⏹1、软件工程概念
⏹2、软件开发环境
⏹3、软件开发过程
1、软件工程(SoftwareEngineering)概念
⏹背景:
“软件”概念提出之前只有“程序”,程序设计基于低级语言和设计者个体的低效率模式。
高级语言及OS出现后有了软件的概念,程序设计环境和效率有了一定的改善。
⏹软件危机是指软件系统开发过程中遇到的一系列严重问题:
⏹引发软件危机的因素很多。
基于对软件开发过程实施管理的“软件工程”很好地起到了化解和避免软件危机问题的作用
⏹软件开发过程与软件的生存周期对应,我们通过基于软件生存周期的软件开发模型认知和了解软件的开发过程,软件开发还涉及软件开发环境、方法等,与前面的程序设计及程序设计方法相对应
⏹软件工程作为当今的热门学科,其内涵非常丰富。
这里简要介绍软件开发环境和软件开发过程的主要组成和基本内容
2、软件开发环境
⏹软件开发环境:
是指支持软件项目、产品开发的特定软件系统(平台)
⏹这种软件系统通常是某个软件公司的产品:
用于快速开发其他应用软件,这些环境都含有大量可以借鉴和利用资源,基于“软件复用”(SoftWareReuse)思想,使软件开发不需一切从零开始,大大提高了软件开发效率
⏹软件开发环境涉及程序设计语言、软件开发工具等的选择。
不同的开发环境(语言、工具)对开发效率的影响很大
⏹如用C语言进行软件开发(程序设计)可以使用简单易用的TurboC2.0或专业级、可视化的VisualC++6.0
⏹软件开发环境还需要基础软件支持,一般指操作系统一类的系统平台
●基于微软的Windows系列平台
●IT企业专用OS平台:
如IBM公司的OS/2、Apple公司的MacOS
●免费的Linux及Unix等OS平台
3、软件开发过程
⏹软件开发的一个重要内容是确定用户如何使用软件即软件呈现什么样用户界面模式(软件界面),体现了人与计算机之间的交互模式,如前介绍CUI、GUI、BUI,目前软件界面设计主要采用GUI、BUI
⏹软件开发模型:
以全景图方式,清晰、直观地描述软件开发过程以及各阶段的主要任务。
软件开发模型有多种,模型不同,对应软件开发模式不同
可行性研究
⏹市场可行性:
对于软件产品开发尤其重要;
政策可行性:
相关政策的支持和扶持力度;
技术可行性:
核心技术能否实现、开发时间能否保证、系统性能是否有特别要求;
成本效益分析:
软件项目可以体现在合同中,而软件产品要依靠销售,要考虑成本;
可行性研究的结果最终决定软件“做还是不做”问题
需求分析
⏹解决和决定“做什么,不做什么”的问题
⏹需求分析的困难
(1)业务模式的复杂性及需求本身的不断变化(业务模式等)
(2)开发人员与用户交流的困难和差异
⏹需求分析的任务:
软件功能、技术性能、软件的环境、用户界面要求及数据特点
⏹需求分析的结果:
主要成果是软件需求分析说明书(用户需求说明书)
系统设计
⏹系统设计包括总体设计和详细设计
⏹详细设计:
模块、界面、数据库等详细的数据结构和算法设计,形成程序详细规格说明(类似于工程领域工程蓝图),作为后续阶段程序员进行代码编写的工作依据
⏹模块化是结构化设计的重要思想,软件被分解为一系列的功能模块,可以逐个编码设计,最后把所有模块集成在一起
⏹模块化具有可降低软件开发难度(模块划分使问题及实现抽象度逐步减小),便于进行软件测试及维护等诸多的优点。
模块划分模式也是团队协作开发的基础
编码
⏹编码:
用程序设计语言及相应开发工具将各模块转为程序
⏹最终结果是提交软件“源程序清单”及相关的设计说明书等资料
软件测试
⏹编码完成之后交付用户运行前,必须对软件的程序代码进行各种测试,以最大程度发现程序隐含的各类错误,通常要把问题追溯到前期需求分析、系统设计等阶段,复审这些阶段工作
⏹测试环节是确保软件质量的重要步骤
软件运行与维护
⏹软件开发完成并投入运行后,即进入不断的维护过程和阶段。
这期间,会根据实际使用出现的问题不断完善
⏹软件维护代价很高。
但如果软件质量很高,维护工作量就大大减少
⏹从市场角度,软件维护是一种为用户提供的服务,“软件即服务”
软件项目与产品的开发阶段
⏹软件项目:
合同阶段(标书的分析、方案书写、合同签订等)、个性化的设计与开发阶段、软件运行维护阶段(项目验收、软件安装及用户培训等)
⏹软件产品:
产品立项阶段(产品市场调研、立项申请等)、产品开发阶段以及产品发行(渠道)与维护阶段
软件技术与软件企业人才发展结构
2.4Web应用中的软件技术
2.4.1理解Internet与Web
2.4.2Web应用的软件技术
1、Internet(互联网)概念
⏹Internet:
基于TCP/IP协议的全球信息资源共享网络,由各子网互联构成,子网连接计算机(即主机)[Intranet:
企业或组织内部基于TCP/IP的网络,即企业内联网。
防火墙(FireWall)技术可以对Intranet的实施保护,阻止来自Internet非法访问]
基础设施
⏹由传输线路、中继器、集线器(路由器)、终端、主机等各种的物理设备及相关的软件及协议组成,从局域网(LAN)(如校园网、企业网)、广域网(WAN)规划建设,到接入Internet都依赖这些应用成熟的基础设施,支撑起高速、可靠的互联网
应用服务
⏹基于Internet基础设施实现的面向最终用户的整体应用:
包括交易服务(如电子商务)、信息服务以及通信服务、计算服务(如基于超级计算机的科学计算服务)等,这些应用服务的实现手段是Web、Email、FTP等
⏹Web应用服务:
最为广泛(Email等服务已融入其中)的模式,当今Internet应用服务的核心即Web应用
软件开发
⏹软件开发是Internet基础设施与应用服务之间的桥梁。
Internet软件开发技术包括各种应用层协议、网络编程技术以及Web开发技术等。
Web应用不是单一的某种开发工具能实现的,涉及到广泛的计算机软件技术知识,且Web应用的软件技术更新速度很快
2、Web及其构成
⏹
(1)什么是Web?
Web(WorldWideWeb)是基于Internet基础设施的一种应用服务,它利用超文本技术将全球各种信息资源链接起来,供用户随时浏览和访问(共享资源)
⏹Internet与Web:
Internet是物理平台,Web是基于该平台的一种应用层服务,人们基于Web可以很方便地获取信息或发布信息。
用户不需要关心信息如何在Internet上传送
⏹Web的组成:
除了各种信息资源外,由Web服务器和客户端组成
●Web服务器:
从物理设备的角度,是存储和提供应用服务信息资源的由企业、机构或提供者管理的远程计算机(还可从软件的角度理解)
●客户机:
用户所用的本地计算机,即客户端(软件为浏览器)
(2)服务器简介
⏹服务器:
各种网络中能够为其它计算机提供存储服务、计算服务及信息服务的计算机。
互联网中,服务器可用来提供Web、邮件、文件及数据库等服务,构成各种专用服务器
⏹服务器作为网络的节点,构成与微机相似,但具有更高的处理能力、更大的存储配置、更好的可靠性、稳定性及可扩展和可管理性
⏹服务器按体系架构分为:
x86和非x86服务器
(3)Web服务器
⏹Web服务器:
向客户端提供各种Web应用服务的计算机,需要安装Web服务器软件(在网络OS下)。
如支持ASP技术的Web服务器软件IIS(在WindowsOS下运行)
⏹从软件的角度:
Web服务器实际是指Web服务器软件,不同的Web服务器软件又是基于不同的网络OS平台的。
软件开发必须对这些平台和技术体系做出选择。
不同平台提供不同的技术实现难度、效率及应用效果
⏹当今主流的Web服务器(软件):
●IIS:
基于ASP软件开发技术的Web应用开发运行环境,仅能运行于WindowsOS平台,如Windows2003Server等
●Apache/Tomcat:
开源软件,支持基于CGI、Perl、PHP及JSP软件开发技术的Web应用,适于Unix/Linux/Windows平台
1、Web的基本支撑技术
2、Web的内容及原理
3、Web应用的软件技术
1、Web的基本支撑技术
⏹Web的支撑技术体系中最基本的是
●URL—解决信息资源定位
●HTTP—解决信息资源传输
●HTML—解决信息资源描述
URL
⏹URL(统一资源定位器)—解决信息资源的定位,即标识网页等信息资源的位置,每个资源都赋予一个唯一的标识,格式:
协议:
//主机名/路径/文件名
HTTP
⏹HTTP(超文本传输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二章 程序设计与软件开发 第二 程序设计 软件 开发