问题解决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
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值