计算机思维

计算机思维的本质是抽象和自动化。

计算机思维特征:

  1. 设计
  2. 构造

在程序设计范畴,计算思维主要反映在理解问题的计算特性、将计算特性抽象为计算问题、通过程序设计语言实现问题的自动求解等几个方面。

面向过程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语言程序设计基础笔记(三)计算机思维相关推荐

  1. Python语言程序设计基础_实验四_函数(三)_答案_通识教育必修课程_上海师范大学

    实验4 函数(二) 答案 Python语言程序设计基础 上海师范大学 通识教育必修课程 授课教师:吴春英 徐晓钟 题目来源:上海师范大学网络教学平台(超星泛雅) I 实验要求

  2. python语言程序设计嵩天-Python语言程序设计基础(第2版)嵩天课后答案

    嵩天.礼欣.黄天羽Python语言程序设计基础(第2版)习题答案本书提出了以理解和运用计算生态为目标的Python语言教学思想,在系统讲解Python语言语法的同时介绍了从数据理解到图像处理的14个P ...

  3. python语言程序设计2019版第二章课后答案-python语言程序设计基础课后答案第二章...

    python语言程序设计基础课后答案第二章 以下合法的用户自定义标识符是____________. 导入模块或者模块中的元素要使用关键字________ . 下列哪个函数是用来控制画笔的尺寸的____ ...

  4. python程序设计题怎么写_《Python语言程序设计基础》第1章程序练习题

    本文为中国大学MOOC<Python语言程序设计>课程学习笔记,课程主讲:嵩天老师,练习平台:Python123,参考教材:<Python语言程序设计基础> 1.1 字符串拼接 ...

  5. python语言程序设计嵩天-python语言程序设计基础(嵩天版),第二章程序练习题...

    python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...

  6. python语言程序设计基础嵩天答案第二章_python语言程序设计基础(嵩天版),第二章程序练习题...

    python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...

  7. python语言程序设计基础第二章答案_python语言程序设计基础(嵩天版),第二章程序练习题...

    python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...

  8. python语言程序设计基础(第2版) 嵩天 礼欣 黄天羽 著

    python语言程序设计基础(第2版) 嵩天 礼欣 黄天羽 著 程序练习题第5章  5.1输出更大的田子格 5.1  程序练习题3.5输出了一个简单的田字格,用函数简化其代码,输出更大的田子格. 刚开 ...

  9. python语言程序设计2019版第二章课后答案-python语言程序设计基础(嵩天)第二章课后习题...

    **第二学期第一周学习总结 一. 本周学习内容总结 一维数组,了解了一维数组的定义(定义一个数组,需要明确数组变量名,数组元素的类型和数组大小,即数组中元素的数量) 一维数组定义的一般形式为:类型名, ...

  10. python语言程序设计基础网课-Python语言程序设计基础答案

    [填空题]逻辑型数据在参与算术运算的过程中可以被当作整数进行操作,通常True的值对应整数1,False的值对应整数____________. [单选题]在Python中,不可以用来表示字符串的符号是 ...

最新文章

  1. 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 )
  2. 数据结构——Java Stack 类
  3. “物联网+云平台”的实验室管理方案,瞄准的是生物医药和化工行业
  4. 【教女朋友学网络系列3】之手把手教她明白交换机的基本原理
  5. 牛客-Forsaken喜欢独一无二的树【并查集,最小生成树】
  6. 建筑电气工程设计常用图形和文字符号_怎么看懂建筑电气工程图?用最直白方式,教你基础识图!超级详细...
  7. linux按括号截取字符串,Linux作业4
  8. 任正非卸任上海华为董事;百度“云手机”今日线上发布;Inkscape 1.0 RC 版发布 | 极客头条...
  9. python写入access_使用Python对Access读写操作方法详解
  10. Unity之VideoPlayer组件——循环播放视频
  11. 信号与系统实验一 信号在MATLAB中的表示
  12. Vue实现tab导航栏,支持左右滑动
  13. win10解决安装.NET Framework 3.5安装不上,错误代码:0x800F081F,解决办法:超级管用。
  14. log文件过大处理方法
  15. 港科夜闻|国务院港澳办主任夏宝龙在香港科大考察期间,表示对学校开展创科工作的鼓励及希望...
  16. webstorm配置环境变量_Webstorm 配置与使用 Less
  17. visio 中取消 交叉连接线的拱形的方法
  18. Android 蓝牙连接,蓝牙配对,自动连接蓝牙
  19. [更新ing]sklearn(十六):Nearest Neighbors *
  20. oracle列求平均

热门文章

  1. [ACCESS]档案数字化加工录入系统使用说明(干部职工退休档案)
  2. PS使用技巧(一) 移动工具 V
  3. 串行通讯控制器8250
  4. 使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(概念篇)
  5. 数据结构设计题大题总结(非代码)
  6. win10 计算机描述,怎么设置win10以安全描述符定义语言(SDDL)语法表示的计算机访问权限...
  7. 二手车交易价格预测 ——EDA 探索性数据分析
  8. vue-app之H5打开第三方app
  9. josn 格式 解析
  10. 书摘—跟鬼谷子学处世 跟菜根谭学修身