0%

BUGs和ERRORs

程序中的缺陷叫做bugs。如果一个程序是思想结晶的,可以将bug大致分为由困惑的想法导致的和由当将想法转换为代码时引入的错误。前者通常比后者更难诊断和修复。

Read more »

项目:机器人

在项目章节,我们将停止学习新知识,我们会一起做个项目。学习编程的理论是必须的,但是阅读和理解实际程序也是很重要的。

我们这个项目会构建一个在虚拟世界实现投递包裹的机器人。

Read more »

对象的秘密生活

第四章介绍了JS的对象。在编程文化中,我们有个叫做object-oriented programming的范式,也即是面向对象编程,就是将对象(和其相关概念)作为程序组织的中心原则。

即使没人同意它的定义,面向对象变成定形了许多编程语言的设计,包括JavaScript。这一章描述这些主意怎样被应用到JavaScript。

Read more »

高阶函数

我们首先来看两个范围和程序的例子:

1
2
3
4
5
6
let total = 0, count = 1;
while (count <= 10) {
total += count;
count += 1;
}
console.log(total);
1
console.log(sum(range(1, 10)));

显而易见,第二种策略更加清晰且不易出错。因为我们将程序设计在一个词汇表框架中,对一个范围内的数字求和无关循环和计数器,而是关于范围(range)以及和(sum)函数。

虽然sum和range内部也会包含循环,计数器等,但他们比将整个程序写在一起,表达了更简单的概念。

Read more »

Longest Increasing Subsequence

Given an unsorted array of integers, find the length of longest increasing subsequence.

Example:

1
2
3
Input: [10,9,2,5,3,7,101,18]
Output: 4
Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.
Read more »

数据结构:对象和数组

数字,布尔值和字符串类型是数据结构构建的原子。许多类型的数据需要很多的原子类型的数据来组成。对象就允许我们将值组合在一起,还可以包含其他对象来构建复杂的结构。

到目前为止的程序只是操作的简单数据,这一章将会介绍一些基本数据结构。结束的时候,将会知道足够多的知识开始写一些有用的程序。

这一章将会解决现实中编程的例子,引入一些概念。例子代码构建在函数和变量基础上。

Read more »

动态规划算法

动态规划算法是一种算法设计范式,将含有重复子问题的复杂问题,存储子问题的计算结果以避免重复计算。问题有如下两种特征可采用动态规划算法设计:

  • 重叠的子问题
  • 最优子结构
Read more »

Minimize Malware Spread II

(This problem is the same as Minimize Malware Spread, with the differences bolded.)

In a network of nodes, each node i is directly connected to another node j if and only if graph[i][j] = 1.

Read more »

程序结构

表达式和语句

一个产生值的代码片段叫做表达式,字面量也可以看作是一种表达式,表达式还可以嵌套表达式构成新的表达式。如果将表达式比喻为句子片段,那么语句就是能表达完整意思的一句话。语句的组合构成了一个程序,程序的意义在于改变“世界”,要么可以在屏幕上打印点什么东西,要么改变某种状态,以影响后面的程序,否则,程序将是无意义的。

Read more »

Functions

JS中的函数可以包装在一个变量当中,也就是说,JS中的函数和其他诸如数字,字符串类型别无二致,只是函数会有一些额外的特性。函数的存在使我们可以更好实现复用,使我们丰富我们的词汇表。

Read more »