python语言程序设计基础笔记(三)计算机思维
计算机思维
计算机思维的本质是抽象和自动化。
计算机思维特征:
- 设计
- 构造
在程序设计范畴,计算思维主要反映在理解问题的计算特性、将计算特性抽象为计算问题、通过程序设计语言实现问题的自动求解等几个方面。
面向过程POP(protocol-oriented programming)
一、自顶向下
自顶向下:用于解决复杂问题,其基本思想是以一个总问题开始,试图把它表达为很多小问题组成的解决方案。再用同样的技术一次攻破每个小问题,最终问题变得非常小,以至于可以很容易解决。然后只需把所有的碎片组合起来,就可以得到一个程序。以体育竞技为例,如下图所示,具体参考---python语言程序设计基础
二、顶层设计
自顶向下设计中最重要的是顶层设计。我们可以从问题的IPO描述开始,体育竞技分析从用户处得到模拟参数,最后输出结果。顶层设计一般不写出具体代码,仅给出函数定义。接下来的层理念大都相同,即接受输入,通过函数将中间细节封装或隐藏,返回输出。每层的输入以及输出是层设计的核心,其余的细节部分可以被忽略。这类似于抽象的概念,即仅仅关心典型特征,忽略其他细节。
关于抽象,我们使用抽象数据类型来提供数据对象的外观(其状态)及其可以执行的操作(其方法)的逻辑描述。 通过构建实现抽象数据类型的类,程序员可以利用抽象过程,同时提供在程序中实际使用抽象所需的详细信息。 每当我们想要实现抽象数据类型时,我们都会使用新类。
三、面向过程的程序设计 (结构化编程)
面向过程的程序设计是最自然的设计方法,程序执行过程为设计流程。
面向过程的程序设计基本步骤
- 第一步:分析程序从输入到输出的各步骤
- 第二步:按照执行过程,从前到后编写程序
- 第三步:将高耦合部分封装成模块或函数
- 第四步:输入参数,按照程序执行过程调试
python中面向对象编程-定义类
Python是一种面向对象的编程语言。面向对象更关注数据,然而它与面向过程并不冲突,甚至可以互相弥补。面向对象编程语言中最强大的功能之一是允许程序员(问题解决者)创建新类,以模拟解决问题所需的数据。
面向对象特点:
- 封装: 打包数据和操作。对象的实现与使用独立,支持代码复用。
- 多态: 同一函数名启用不同方法。例如列表包括Circle、Rectangle、Polygon,则使用obj.draw()则画出不同的形状。
- 继承:一个类(subclass)可以借用另一个类(superclass)的行为。优点,避免操作重复,提升代码复用程度。
一、面向对象程序设计的基本步骤
- 第一步:根据功能,抽象业务对象
- 第二步:构建独立地业务模块,利用封装、继承、多态等抽象业务需求。
- 第三步:编写程序
- 第四步:以对象为输入单位输入参数、开展测试
具体参考http://python.jobbole.com/83747/
二、自底向上
自底向上:测试中等程序的最好方法是从结构图最底层开始,而不是从顶部开始,然后逐步上升。即,执行测试每一个基本函数,再测试由基础函数组成的整体函数,这样有助于定位错误。面向对象遵循自底向上。
总结
通过模块化设计可以分解问题使得编写复杂程序成为可能,通过单元测试方法分解问题使运行和调试复杂程序成为可能。自顶向下和自底向上贯穿程序设计和执行的整个过程。两者比较如下
Difference between OOP and POP
Object Oriented Programming (OOP) | Procedure Oriented Programming (POP) | |
Problem Solving | Importance is given to objects. So to solve a problem, it is divided into smaller parts known as objects. | Importance is given to functions or procedures. So to solve a problem it is divided into smaller parts known as functions or procedures. |
Approach | It follows bottom up approach. | It follows top down approach. |
Code Reusability | The existing code can be reused by the feature called inheritance. | There is no such feature. |
Data Hiding | The data is kept secure in class using access specifiers private and protected. | The data is less secure as this paradigm doesn’t provide any way to hide it. |
Modification | Modification and addition of new feature is really easier. | Modification and addition of new feature is difficult. |
Problem Size | It is suitable for solving big problems. | It is not suitable for solving big problems. |
Example | C++, Java and Python are some examples of OOP languages. | C, Fortran and Pascal are some examples of POP languages. |
拓展:软件开发模型
软件开发模型是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成软件的主要活动和任务,用来做为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法,使用不同的编程语言,组织不同技能的人员,运用不同的管理方法等。
参考
中文https://www.bilibili.com/video/av10681614/?p=47
中文https://github.com/facert/python-data-structure-cn/tree/master/1.%E4%BB%8B%E7%BB%8D
英文https://www.appcoda.com/pop-vs-oop/
python语言程序设计基础笔记(三)计算机思维相关推荐
- Python语言程序设计基础_实验四_函数(三)_答案_通识教育必修课程_上海师范大学
实验4 函数(二) 答案 Python语言程序设计基础 上海师范大学 通识教育必修课程 授课教师:吴春英 徐晓钟 题目来源:上海师范大学网络教学平台(超星泛雅) I 实验要求
- python语言程序设计嵩天-Python语言程序设计基础(第2版)嵩天课后答案
嵩天.礼欣.黄天羽Python语言程序设计基础(第2版)习题答案本书提出了以理解和运用计算生态为目标的Python语言教学思想,在系统讲解Python语言语法的同时介绍了从数据理解到图像处理的14个P ...
- python语言程序设计2019版第二章课后答案-python语言程序设计基础课后答案第二章...
python语言程序设计基础课后答案第二章 以下合法的用户自定义标识符是____________. 导入模块或者模块中的元素要使用关键字________ . 下列哪个函数是用来控制画笔的尺寸的____ ...
- python程序设计题怎么写_《Python语言程序设计基础》第1章程序练习题
本文为中国大学MOOC<Python语言程序设计>课程学习笔记,课程主讲:嵩天老师,练习平台:Python123,参考教材:<Python语言程序设计基础> 1.1 字符串拼接 ...
- python语言程序设计嵩天-python语言程序设计基础(嵩天版),第二章程序练习题...
python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...
- python语言程序设计基础嵩天答案第二章_python语言程序设计基础(嵩天版),第二章程序练习题...
python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...
- python语言程序设计基础第二章答案_python语言程序设计基础(嵩天版),第二章程序练习题...
python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...
- python语言程序设计基础(第2版) 嵩天 礼欣 黄天羽 著
python语言程序设计基础(第2版) 嵩天 礼欣 黄天羽 著 程序练习题第5章 5.1输出更大的田子格 5.1 程序练习题3.5输出了一个简单的田字格,用函数简化其代码,输出更大的田子格. 刚开 ...
- python语言程序设计2019版第二章课后答案-python语言程序设计基础(嵩天)第二章课后习题...
**第二学期第一周学习总结 一. 本周学习内容总结 一维数组,了解了一维数组的定义(定义一个数组,需要明确数组变量名,数组元素的类型和数组大小,即数组中元素的数量) 一维数组定义的一般形式为:类型名, ...
- python语言程序设计基础网课-Python语言程序设计基础答案
[填空题]逻辑型数据在参与算术运算的过程中可以被当作整数进行操作,通常True的值对应整数1,False的值对应整数____________. [单选题]在Python中,不可以用来表示字符串的符号是 ...
最新文章
- 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 )
- 数据结构——Java Stack 类
- “物联网+云平台”的实验室管理方案,瞄准的是生物医药和化工行业
- 【教女朋友学网络系列3】之手把手教她明白交换机的基本原理
- 牛客-Forsaken喜欢独一无二的树【并查集,最小生成树】
- 建筑电气工程设计常用图形和文字符号_怎么看懂建筑电气工程图?用最直白方式,教你基础识图!超级详细...
- linux按括号截取字符串,Linux作业4
- 任正非卸任上海华为董事;百度“云手机”今日线上发布;Inkscape 1.0 RC 版发布 | 极客头条...
- python写入access_使用Python对Access读写操作方法详解
- Unity之VideoPlayer组件——循环播放视频
- 信号与系统实验一 信号在MATLAB中的表示
- Vue实现tab导航栏,支持左右滑动
- win10解决安装.NET Framework 3.5安装不上,错误代码:0x800F081F,解决办法:超级管用。
- log文件过大处理方法
- 港科夜闻|国务院港澳办主任夏宝龙在香港科大考察期间,表示对学校开展创科工作的鼓励及希望...
- webstorm配置环境变量_Webstorm 配置与使用 Less
- visio 中取消 交叉连接线的拱形的方法
- Android 蓝牙连接,蓝牙配对,自动连接蓝牙
- [更新ing]sklearn(十六):Nearest Neighbors *
- oracle列求平均