MIT_CS6.00笔记Lec1-3

计算机科学及编程导论 Lec1.

什么是计算思维(computation)

知识:

  • 陈述性知识(declarative):描述事实 Ex: 若sqrt(x)=y则y^2=x
  • 程序性知识(imperative):对推论过程的描述 Ex:GCD求法

计算机:

fixed-program computer: 固定程序用来做特定的运算
  • calculator(计算器)
  • Atanasoff(解线性方程组)
  • Turing bombe(破译代码-图灵)
stored-program computer: 提供一系列的指令,计算机来执行这些指令(现代计算机模型)

program is a recipe: given a fixed set of primitives -> can program anything

讨论语言的三个维度:

  • High vs Low: 离计算机核心有多接近
  • General vs targetted: 被设计为通用还是面向目标群体(领域语言)
  • interpreted vs compiled: 编译型语言还是解释型语言

Python: High,General,Interpreted

Syntax(语法): 什么是这种语言中的合法表达
Semantics(语义):
  • Static: 那些程序是有意义的
  • Full:程序有什么意义(运行时意义)

Lec2.

程序运行2种方式:

  • Interpret(直接解释)->eval&print

  • script(存储脚本)-> no print unless explict

    类型检查:

  • weak vs strong typing

    Typediscipline(代码规范)

  • A:检查运算符或程序来看他们在不同条件下做的操作是什么

  • B:约束参数的类型

    赋值

1
2
x = 3 + 5
y = 15
  • 类型
  • 类型转换
  • 类型绑定(动态绑定)
    建议:Don’t change types arbitrary

Variable used any place it’s legal to required

Statements(声明):

legal commands that Python can Interpret

直线式(顺序)程序:

按照顺序一条条代码执行

分支式(条件)程序:

改变程序执行的顺序通过一些条件Test(一般是变量的值)

Lec3.

流程图

防卫性程序

程序要覆盖所有的可能路径

Tuple: 一系列有序的元素的集合

foo=(1, 2, 3, 4)