【讲义】第13课:编程入门

直播讲义

(方方) #1

什么是编程?

  1. 判断一件事情能否用计算机解决
  2. 然后用计算机解决它(大部分人只学这个)

一般来说新人搞不定第一件事,由于缺乏对「计算机能做什么」的整体了解,所以并不清楚什么时候不能用计算机解决。

开开脑洞:

  1. 炒菜能用计算机解决吗?
  2. 开车能用计算机解决吗?
  3. 拜佛能用计算机解决吗?

编程到底难在哪里?

我适合学编程吗?

编程能帮你完成日常工作

例如 excel 宏、IFTTT、用正则表达式处理文本等。
不只能用于工作(给别人干活),还能给自己干活。

看书看不下去

  1. 换一本看得懂的
  2. 换文字教程、视频教程
  3. 有些书是既能让你看懂,又能讲清楚原理——比如《编码》

你能把做一件事的步骤说清楚吗?

请描述一下如何「煎出一个能吃的鸡蛋」

煎蛋理论:你不是不会写代码,你只是不会煎蛋而已。

大部分事情都是「先干,再了解」的

你不知道 var a = 10 的 10 存在哪里,但这不影响你写出一个网页。
等你写一段时间代码,自然就会自己去学习背后的知识。
「做出东西(Get Things Done)」很重要。

伪代码和流程图

让你「适应」计算机的思维模式。

在一组正整数中选出最小的一个数

第一个想法:人类会怎么做?

逐个看数组里的数字
认为第一个数字是最小的
一旦发现新的数字比这个数字还小,就认为新的数字的最小的

第二个想法:计算机可以做吗?

numbers <- [233,1,100,23,53,42,244,88,1, 2,9]
min <- numbers.at(1)
n <- 1
while n <= numbers.size 
  if numbers.at(n) < min
    min <- numbers.at(n)
  end
  n <- n + 1
end

print min

流程图:

伪代码

伪代码的好处:让你聚焦于思路,而不是细节。

  1. 顺序执行每一行代码
  2. while 循环
  3. if else 判断

这就是结构化编程

接下来来个难的

排序算法

已知有正整数数组 numbers,请将 numbers 中的数字从小到大排列。

第一个想法:人类会怎么做?
第二个想法:计算机可以做吗?

numbers <-  [233,1,100,23,53,42,244,88,1, 2,9]

第几次循环 <- 1
while( 第几次循环 <= numbers.size )
  指向第几个 <- 1
  while (指向第几个 <= numbers.size - 1 - (第几次循环 -1))
    if numbers.at(指向第几个) > numbers.at(指向第几个 + 1)
      temp = numbers.at(指向第几个)
      numbers.set(指向第几个, numbers.at(指向第几个 + 1))
      numbers.set(指向第几个+1, temp)  
    end
    指向第几个 <- 指向第几个 + 1
  end
  第几次循环 <- 第几次循环 + 1
end

生成斐波拉契的第 n 个数

n <- ?
function 斐波拉契 ( n )
  // 补充
  return 斐波拉契( n -1 ) + 斐波拉契( n - 2)
end

print 斐波拉契 (n)