问题解决lesson01

问题解决(problem solving)

  1. 所有问题分为几个状态

    1. 开始状态
    2. 目标
    3. 执行
    4. 阻碍
  2. 解决问题是从一个状态到另一个状态最终到达目标

  3. 练习是能够解决问题的关键。

    1. 识别相似的问题
    2. 熟悉不同问题的解决办法
    3. 建立解决问题时的自信心
  4. 解决问题的方式,计算法和探索法

    1. 计算法会按照所写程序执行
    2. 探索法会尝试多种方式最终达到目标,但有时探索法并不是最优解

问题类型

  1. 好定义的与不好定义的
    1. 好定义的指:所有必要的信息都已经提供了
  2. 好解决的与不好解决的
    1. 好解决的指:拥有已学的知识可以解决的问题

解决方法

  1. brute force: 暴力解决,每个选项都尝试一次
  2. trial&error:尝试单个选项,等效于排除法
  3. analogy:运用之前的经验解决
  4. divide&conquer:拆分问题,逐个解决,然后把每个串联起来
  5. heuristic: 探索

总结:完全理解问题,制定要运用的策略,执行你的策略,检查。

一步一步稳扎稳打的走

编程计划与研发周期

  1. 分析问题
  2. 定义问题并去解决问题
  3. 编写程序
  4. 测试程序
  5. 完善必备的资料
  6. 必要的修订

分析问题

  1. 定义问题
  2. 识别出要求的结果,即目标
  3. 确定产生这些结果,即到达目标,所需要的投入

IPO: input process output

设计程序

  1. 制定问题的解决方法,有很多的解决办法
  2. 建立一个细节的程序描述,可以使用一些工具软件
  3. 识别所需要的计算,这个计算要好定义,好排序,必须要有结果,必须要在有限的时间里终止

编写程序

  1. 翻译你在工具软件上的描述到代码
  2. 用详细明确的程序代码,比如python,这个阶段要在有坚实的设计之后开始

文件编制

加入陈述来向读者描述这个代码是在做什么

分外部文件与内部文件,外部文件是给使用者看的,内部文件是给程序员看的

语法

每个编程语言都有他们自己的语法,熟练掌握这些语法

检测程序的正确性

  1. 定位程序中出错的位置

  2. test data

  3. 经常问自己这几个问题

    1. 我翻译的数据对吗
    2. 我写的程序完成了要求吗
    3. 我的公式和程序正确吗
  4. 在设计阶段:Desk checking

  5. 在码字阶段:

    1. 检查程序能否通过之前设计的test data发现错误
    2. 软件能否在语法中提醒你错误而不是在程序的逻辑方面
  6. 最终,检查你的程序

错误类型

  1. 语法错误
    1. 违反程序的语言规则
    2. 标点符号错误,错误语法,单词拼写错误
    3. 语法错误会导致程序无法运行
  2. 逻辑错误,run time错误
    1. 程序运行了,但是没有产生想要的结果,所以逻辑错误会更难检查
    2. 可能是因为使用了错误的公式导致,也可能是错误的排列顺序
    3. 逻辑错误程序必须要进行调试
    4. 能够被程序循环的desk checking phase所检测

完善文件

  1. 组织所有描述程序的材料
  2. 做一个程序大纲,要明显的看出主要的任务和次要任务确保完成,以及主要次要之间的关系
  3. 细节的描述这些每个任务是如何完成的
  4. 做一个用户向导

程序研发是一个过程

程序研发是一个周期的,循环的过程,经常要求重返上一个步骤,并花费上月时间

设计过程中可能会发现一些分析的缺陷

编码也可能会发现要修改或添加的问题

测试无疑会发现一些需要倒回去解决的问题

软件和程序语言

电脑程序就是软件,是给计算机执行任务的指令

应用软件

  1. 是一个程序,他会使得电脑在每天的任务中更有用

  2. 增加产量;解决问题;提供信息;提供接待服务;

    比如浏览器和图片编辑器

系统软件

  1. 一系列程序用于管理,控制,增强电脑的操作

  2. 和用户沟通

  3. 管理和与应用沟通,应用程序运行时不能没有运行系统

    比如Windows,Linux

机器语言

  1. 最早被编写进每一台电脑里
  2. 每个命令只包含1,0
  3. 计算机语言很烦,看起来也不舒服,二级制的

汇编语言

  1. 使得写代码更容易
  2. 机器语言的符号表示
  3. 使用更短更好记的字
  4. 因为电脑看不懂汇编语言,所以有个叫assembler的程序用来把汇编语言转换成机器语言

高级语言

包含英语单词,短语和代数表达式

不需要知道CPU如何运作,更容易的学习和编写

受欢迎的高级语言,C++ JAVA python

编译源代码

一个在高级语言中的程序,被称为源代码

因为电脑看不懂源代码,称为编译器的程序,用于翻译源代码给电脑看,被称为目标程序

在目标程序用于电脑上之前,他也经常被用于连接其他支持的库代码

编译器

是一个程序,用于翻译和运行在高级语言中的指令

前端后端

  1. 汇编语言只翻译,不编制
  2. 客户端,java-scrip,前端
  3. 服务器端,后端,PHP,ASP

写代码

要想在高级语言中写代码,需要:

  1. 合适的软件
  2. 文本编译器
  3. debugger,发现问题
  4. 一个compiler或interpreter,翻译给电脑看

程序逻辑与设计

所有的编程语言都用的最基础的编程逻辑

如果理解逻辑,会帮助你更好的学习其他的特定语言

程序逻辑和设计的目的时着重于流程图和伪代码(flowchart,pseudocode)

设计是好的程序的基础

工具:伪代码 流程图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值