python程序设计与算法思维_作为一名程序员该了解的数据结构、算法、编程语言三者的计算思维...

我们使用的计算机绝大多数都是冯·诺依曼体系,其理论基础就是”存储程序“概念。数据和操作数据的指令都需要先存储到地址线性表示的内存单元中。数据的一般操作有”增、查、删、改、遍历“等,数据存储需要”存得进、取得出”,需要考虑时间和空间效率,所以要“存数值、存联系”,数据的存储不仅需要保存数据本身,还需要考虑保存数据本身的逻辑关系。

程序要处理的数据有数值类或非数值类两种类型。数值类处理的是纯数值性的信息,如科学和工程计算。数值类数据的关系一般用数学公式或方程来描述。而非数值类问题的数据及数据间的相应关系一般无法用数学公式或方程来描述,如排序问题、检索问题,需要另外设计数据的描述方法和相应的算法来处理。

所以,用计算机解决实际问题,需要对解决的问题进行分析,提炼出问题的两个要素:信息和功能。(数据描述和数据处理的步骤描述,也就是数据结构和算法)。

分析问题中的已知信息,提炼数据和数据之间的联系(数据的逻辑结构),选用合适的存储方式(数据的存储结构)将逻辑结构(数据元素和逻辑关系)存到计算机中,然后在存储结构之上按照自顶向下逐步细化的方法给出算法。这就是程序设计思维的一般过程。

不要错过 免费学习Python的机会,快来+688244617

上图中,程序设计将算法”翻译“成相应命令语句及处理形成代码。

一般来说,一个逻辑数据结构可能有多种存储结构,在不同的存储结构之上,数据处理的效率不尽相同。许多时候,确定数据结构后,算法就容易找到了。有些时候事情也会反过来,我们根据特定的算法来选择数据结构与之适应。

程序设计中信息的抽象是用标识符、常量、变量、数组和结构体等描述和记录信息及信息间的关系。

下表是一般编程的解题步骤与从软件工程角度看这些步骤的对应关系。

程序解题软件工程具体工作建模型需求分析阶段提取问题要完成的功能;分析问题的数据对象,找出数据对象之间的关系设计设计阶段数据结构设计、软件的结构设计、算法设计编程编码阶段编写程序代码验证测试软件测试与调试

1 数据类型与抽象数据类型

计算机对数据的处理,就如同工厂对“物料”的处理一样,物料如同数据,工艺如同算法。一般来说,按照“存储程序”概念,数据需要保存到“一格一格”的内存单元中,根据数据种类、数量的多少、数据元素的复杂程度,对应的数据结构和复杂度也会有所区别。如果数据量少,数据元素联系简单,则用简单的基本数据类型如变量、数组即可描述需要处理的数据,用简单的一些表达式即可描述算法。如果数据量大,数据元素联系复杂(普通数学方程无法描述),则需要定义或选择复杂的数据结构(抽象数据类型),如栈、树、图等,以及复杂的算法。

1.1 数据类型(data type)是一组性质相同的值的集合和定义在集合上的一级操作的总称。

1.2 抽象数据类型(Abstract Data Type,ADT)指的是用户进行软件系统设计时从问题的数学模型中抽象出来的逻辑数据结构和逻辑数据结构上的运算,而不考虑计算机的具体存储结构和运算的具体实现算法。抽象数据类型中的数据对象和数据运算的声明与数据对象的表示和数据运算的实现相互分离。

一个具体问题的抽象数据类型的定义通常采用简洁、严谨的文字描述,一般包括数据对象(即数据元素的集合)、数据元素关系和基本运算三方面的内容。其基本格式可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值