第三课 一般代码样式,循环式程序

2016-09-29

  • 之前已经学过三种东西DATA, OPERATIONS, COMMANDS

    • data(数据)

      • Numbers

      • Strings

      • Booleans

    • operations(操作)

      • +,*

      • and, or

    • commands(命令)

      • assignment

      • input/output

      • conditionals

      • loop mechanisms (while)

  • good programming style 良好的编程风格

    • comments 要有注释

    • type discipline 类型检查

    • descriptive variable name 有意义的变量名

    • documenting your code 代码文档化

  • Iterative programs 迭代程序

    • choose variable that "count" 选择一个计数器变量

    • initialize outside the loop 在外部初始化

    • set up end test (variable)设置(计数器变量的)终止条件

    • construct block of code 构造循环代码块

      • change variable 记得改变循环计数器

    • what to do when done 完成时做什么

  • Flow chart 流程图

    • 描述程序流程

    • 将流程可视化

    • 直观地看出迭代程序和分支程序的执行顺序不同

  • 线性复杂度程序 a linear process

    • 程序代码执行次数和输入参数线性相关

  • 另一个工具 Simulate the code ,模拟代码

    ans

    x

    ans*ans

    0

    16

    0

    1

    1

    2

    4

    3

    9

    4

    16

    5

    25

  • 程序要保证两件事

    • 程序能够结束

    • 程序返回正确的结果

  • Defensive programming 防卫性程序设计

    • 一种良好的设计方法

    • General principle: People are dumb and will make mistakes. 人是愚蠢的,会犯错的。

  • Exhaustive enumeration 详尽的列举

    • try all "reasonable" values until you find solution 遍历所有合理的值直到找到解决方案

    • 例子,找所有的除数

  • For loop for循环

    • 遍历一个集合

    • for (vov) in (some collection)

      • block of code

    • for循环不用担心程序不能结束

  • Tuple -- ordered sequence of elements 元组,一系列有序的元素

    • (immutable)

    • foo=(1,2,3,4)

    • 元组可以从反向访问 foo[-1]

    • selection foo[0]

    • slicing foo[1:3] 切片

  • range(1,10) 返回的是数组

  • 两个tuple可以相加,接到后面

  • 字符串是有序的元素序列

  • Strings - also support

    • Selection

    • Slicing

  • 形成迭代的思想

    • 弄清楚要变量的东西

    • 弄清楚要遍历的集合

    • 弄清楚每一步做什么

    • 弄清楚终结测试是什么

  • 这些结构可以用来做什么?

    • 可以做所有的事情

    • Turing complete language 这是被称为图灵完全化语言的特点

Last updated