[音乐] DAVID J. MALAN:好的。 这是CS50这 2周的开始。 你会记得,在 在过去的几个星期, 我们已经引进电脑 科学和,反过来,编程。 我们依路开始的故事 从无到有,即图形语言 来自麻省理工学院媒体实验室。 然后最近一段时间, 上周,我们什么 引入higher--一 较低级别的语言已知 如C,一些纯粹的文字。 而且,事实上,我们最后一次 该范围内探讨 一些概念。 这一点,回忆,是非常 第一个节目,我们看着。 而这个程序很简单, 打印出来,“你好,世界”。 但有这么多 似乎魔术回事。 有此#include 这些尖括号。 有int类型。 有(无效)。 有括号,大括号, 分号,和这么多。 所以,记得 我们推出划痕 这样我们就可以,理想情况下,看过去 该语法,那真的不是东西 所有的理智 有趣的,但早 是的,绝对的,有点棘手 来包装你的头脑周围。 而且,事实上,最常见的一种 事情早在编程类, 特别是对于那些不太 舒适,是让被挫败 并绊倒了某些语法 错误,更不用说逻辑错误。 所以我们的目标之一 今天,居然会 与某些装备你 解决问题的技巧如何 更好地解决自己的问题 在调试的形式。 你会记得,这才明白, 我们引入了环境 最后一次被称为CS50 IDE。 这是基于网络的软件是 让你在云中进行编程, 可以这么说,同时保持你的所有 文件一起,为我们再次将在今天。 而记得,我们 在这里重温这些话题, 其中的功能,以及环路,并 变量和布尔表达式, 和条件。 而实际上多了一些,我们 从头开始的世界翻译 到C的世界 但根本建设 块,可以这么说, 真的还是上周相同。 实际上,我们真的只是有一个 不同的拼图,如果你愿意。 而不是紫色的 保存块,而不是我们 已经printf的,这是 这个功能在C,它 允许您打印的东西 并格式化在屏幕上。 我们推出了CS50 图书馆,在那里你 现在在您的处置GET_CHAR, 和get_int和get_string, 和其他一些功能 好了,通过它你可以输入 从用户自己的键盘。 我们也看了看东西 像these-布尔和char, 和双,浮法, INT,long_long字符串。 还有的在C.甚至其他数据类型 换句话说,当你声明 一个变量来存储一定的价值, 或者当你实现一个功能 返回一定的价值, 您可以指定哪些 类型的值即是。 它是一个字符串,如 字符序列? 它是一个数字,如一个整数? 它是一个浮点 值,等等? 因此,在C,不像划伤,我们实际上 开始指定什么样的数据 我们正在返回或使用。 但是,当然,我们也遇到了 计算的一些基本限制。 并且特别地, 这种语言C,召回 我们看一看在 整数溢出,现实 如果你只有一个 内存数量有限 或者,具体而言,有限数量的 位的,你只能算这么高。 因此,我们看这个例子在这里 因此在飞机上的计数器, 实际上,如果运行时间足够长会 溢出,并导致一个软件 一个实际的物理潜在错误。 我们也看了浮动 点不精确,现实 仅与有限数量的 位,无论是32还是64, 你只能指定如此多的号码 后一个小数点,之后你 开始变得不精确。 因此,例如,三分之一的 世界在这里,在我们人类世界, 我们知道仅仅是一个无限多 小数点后3秒。 但一台电脑可不一定 表示数字无限数量 如果只允许它的一些 有限数量的信息。 所以,我们不仅装备你 在条款更大的权力 你会如何​​表达自己的 键盘编程方面, 我们还限制什么 你实际上可以做。 事实上,错误和错误会 从这些类型的问题的出现。 事实上,在主题中今天 要像调试主题 实际上看引擎盖下 在上周的事情是如何介绍 实际上实施 让你更好 了解两者的能力和 如C语言的限制 而事实上,我们将剥开层层 最简单的数据结构, 一种叫做阵列,它 划痕发生所谓的“清单”。 这是一个有点 在这方面有所不同。 然后,我们还将介绍之一 首先我们特定领域的问题 在CS50,世界 加密,加扰的艺术 或加密信息,以便 您可以发送秘密信息 和解码秘密信息 两个人,A和B之间 所以,我们之前的过渡 那个新的世界, 让我们尝试一些装备你 技术,使用它可以消除 或减少至少一些 坎坷的 你可能已经遇到过 仅在过去的一周。 事实上,在你前面的such--一些 在C和赔率你的第一个问题是, 如果你像我一样,在第一时间 您尝试键入一个方案, 即使你认为逻辑 该方案是非常简单的, 你很可能会碰了壁,并 编译器是不会合作。 制作或锵不会 真正做您的出价。 而为什么会这样呢? 好吧,让我们来看看, 也许,一个简单的程序。 我要继续前进,它保存在 故意叫buggy0.c文件, 因为我知道它要 提前缺陷。 不过,我可能没有意识到,如果这 是在第一或第二或第三程序 这实际上,我让自己。 所以我要继续前进, 打出来,主要INT(无效)。 然后我里面的花括号, 一个非常熟悉的(“你好,天下 - 反斜线,正“) - 和一个分号。 我保存的文件。 现在,我要下去 我的终端窗口 并输入make buggy0,因为,同样, 该文件的今天的名称是buggy0.c。 所以我键入make buggy0,回车。 而且,哦,天哪,从最后一次召回 没有错误消息是一件好事。 因此,没有输出是一件好事。 但在这里我必须清楚地 一些数字错误。 所以输出的第一行 输入make buggy0后,召回, 是锵的相当详细的输出。 在底层, CS50 IDE配置 使用一大堆 与此编译器选项 让您不必 想想他们。 而这所有的第一线 装置与锵开始。 但在此之后,该问题 开始让自己的外表。 Buggy0.c上线3条,性格 5,有一个大的,红色的错误。 那是什么? 隐式声明的库函数 int型的(为const char *的printf, ...)[-Werror。 我的意思是,它非常快 变得很神秘。 当然,在第一次 一目了然,我们不会 希望你能理解 该消息的全部内容。 和教训,所以一 今天是怎么回事 要尝试,以通知 图案,或类似的事情, 错误你可能有 在过去所遇到。 因此,让我们只能梳理出 这些话是很熟悉。 大,红色的错误显然是 象征性的东西是错误的。 隐式声明 库函数printf。 所以,即使我不太明白什么 隐式声明的库函数 手段,肯定是问题 涉及到莫名其妙的printf。 这问题的根源 有宣称它做。 声明一个函数 提到它的第一次。 而我们所使用的术语上周 声明一个函数的原型, 无论是与在顶部的一行您的 自己的文件或在一个所谓的头文件。 在什么文件做我们说 上周printf的是报价, 引文结束,宣告? 在哪些文件是它的原型? 所以,如果你还记得,第一件事我 类型化,几乎每个节目最后时间 - 一不小心刚才开始 打字myself--是这一个这里 - hash--的#include