JASON HIRSCHHORN:欢迎光临, 每个人,至10周。 这是一个令人兴奋的一周,因为 明天是测验1,我们将得到 在第二个。 今天在节中,我们将去 对一些资源进行测验,并 然后,我会回答任何和所有 问题你们有。 我们将最终结束于 一些实际问题。 我们可以花整款 回答问题。 我们可以花整款 去在实践中的问题。 我们只会扩大,以填补 空间和时间,我们有。 所以我每星期把这个名单了,但 这个星期是特别重要的。 对于学习,如果你还没有 已经开始了,男孩哦。 但希望你已经开始。 和你正在经历的材料 这里列出的资源。 我会极力推荐 许多这些。 特别是,课堂笔记是 非常重要和有益的。 该study.cs50.net提供 在很多大底 我们讨论的主题。 它也有一些伟大的 实践问题。 然后,谷歌是伟大的,太。 我不知道你会用它来干什​​么。 但使用谷歌,以及。 伸手给我,如果您有任何 问题,意见或疑虑。 期待在审查会议 幻灯片从昨晚。 或者,如果你有一段时间了, 观看视频。 它们提供了很多有帮助的 材料和信息。 并设法弥补,如果不是全部,很多的 我们已经讨论了,而且你的主题 在测验可能会看到。 说到测验,即 将是明天。 它拥有75分钟之久。 你们中许多人正在服用它在1 点多了,有些人相当 把它在5:30。 当时你正在服用它和 你正在做它的位置,确保 您签出该文档 在CS50.net主页。 请记住,你可以得到一个8 1/2 由11片随身携带。 通常情况下,人们不使用此 表在所有的考试中。 不过说真的,这是一个令人难以置信 有用的学习工具。 所以这片放在一起是什么 我花了大概三四个小时 当我攻读CS50做什么, 这是很容易的最有帮助 这样我可以学习的测验。 所以,即使你有一些其他人的 学习指南来看待和 作为参考使用,我强烈推荐 使自己的学习指南,把 这些东西在一起。 这确实能帮助你学习 所有的材料。 最后但并非最不重要在本节中, 有一个明天的测验后, 更多讲座 - 下周一。 还有一节,没有未来 周二感恩节前,但 周二之后。 我们将一起开会作最后 再见了党和也做了一些很酷 事情让你们感到兴奋 进一步研究在计算机科学。 还有一个多项目,多了一个 公平的,多一个hackathon。 我们正在接近CS50年底, 这是令人兴奋的 - 而且,如果你像 我,有点难过。 在我继续前进,没有任何人有 大约有任何疑问什么 我们已经讨论了这么远吗? 好了,好让我们在一些问题 您有测验和主题 我们可能涵盖。 所以这是一个列表,我放在一起。 它绝不是详尽,但 希望能唤起你的记忆,如果你 有任何关于这些问题的一些 主题,或者如果您有关于问题 从测验练习题 在过去的几年。 我有几个问题,是 通过电子邮件发送给我,但我想暂缓 那些一秒钟。 没有任何人有任何疑问, 他们不明白的问题, 答案他们不明白 让我们开始? 阿维。 观众:你能随便去了 DOM和Ajax的真快? 就像,我们需要知道或应该 了解他们的? JASON HIRSCHHORN:我要回答 通常这个问题,有什么事我 需要了解特定主题X' 因为我有一种感觉,你们中许多人 要问我,或者是 好奇的。 所以,在某种程度上,这一专题 涵盖演讲,或部分,或 study.cs50.net,问题集,你 应该熟悉它。 所以,你不需要知道每一种类型 标签,是HTML中可用或 每一种类型的属性或属性的 你可以给一些在CSS中。 但是,如果你看到它在一个演讲的例子, 如果你看到它在一个问题 集,你应该很熟悉 有了它,你看到特别的东西 在演讲。 所以我们讨论的文件 在对象模型中的位 部分,更多的是在演讲。 你应该很熟悉 有这么大的它。 而且你应该熟悉 AJAX到相同的程度。 我们从来没有见过难以置信的先进或 阿贾克斯的复杂的例子,所以 你不会被要求做 一些令人难以置信的复杂。 但你可能会问,我怎么 使用jQuery做一个Ajax调用? 这是你已经看到了一些东西 之前的时间,无论是在 审查会议,并在讲座中,和 它的代码只有两个十岁上下行。 所以这是你应该 熟悉。 但同样,对于所有这些主题, 如果你已经看到了 之前,它是公平的游戏。 我们可能会问你 - 很明显,我们是 要问你的事情你 以前没有见过的。 编码的东西你有没有 以前见过。 这并不是说你有没有 看到解决工具 这个问题之前。 你已经看到了这些工具。 例如,在测试1,如果 你需要编写strlen的。 我们以前没有编码的strlen。 但你知道如何使用for循环, 你知道如何,如果条件下使用。 你知道如何用C编写的变量 这将是在这里同样的事情。 你不会被要求做 你有没有看到过,但什么 你可能会问到,像,放 东西一起以一种新颖的方式,或 解决不同类型的问题。 对不起,这不是特定于您 的问题,但我不能回答有关 每一个话题你 做或不需要知道。 但同时,对不起,这最后的事情。 我们花了显著更多的时间 在链接列表比我们对阿贾克斯。 你没有在问题集中使用Ajax。 其中所述中心功能 问题设置了链接列表。 我们花了很多时间在讲座 和使用它部分。 所以,赔率是链接列表将拿出更多 经常在测验比阿贾克斯的意志。 或问题不得不与链接 名单将是值得更多的积分。 所以,你可以肯定聚焦和窄 在东西比较多 可能是因为我们要拿出 花更多的时间在他们身上。 确定没有别的问题? 是啊。 观众:我们可以走了过来使用 在JavaScript中的匿名函数? 我是有一点困惑了。 JASON HIRSCHHORN:那么在JavaScript - 我试图想我怎么样 可以写这样的 - 让我们实际打开了这个代码。 所以这是代码的最后一周,我们做到了。 和你以前,如果你看到了这 曾在这里一节的最后一周。 或者你已经看到的东西 之前与此类似。 但你可以看看这个第一道防线。 这是你如何开始 - 大家以前也见过这个。 如果你想要把一些JavaScript代码, 你把它放在这里面,假设 您正在使用JQuery。 这是说,什么也不做 直到文件的加载。 然后,简略的,你看这里 我们正在做这样的事情 - 功能开括号,括号封闭。 因此,我们没有给这个 函数的名称。 我们不会定义这个函数 应该运行,然后 说它是一堆倍。 我们只是说这个文件 已经接受一个函数。 一对夫妇的事情要做。 我们不想花时间 给它一个名称,或将其保存为 永久。 我们只是想运行一些事情。 因此,一个匿名函数排序 的服务的目的。 如果你不打算使用的东西 一遍又一遍,所以你不需要 给它一个名字 - 你只是 想一次使用它 - 你只说功能, 例如,在这种情况下,你只是 定义的东西, 你可以给一个名称。 喜欢,我们可以拉这个功能了 并给它一个名称,然后调用 在这里发挥作用。 但是,我们并不需要,因为我们不 不想浪费时间给它一个名称或 浪费的东西在我们的名称空间。 而且你会看到很多。 例如,我们看到了很多在这 代码,但是你以前见过这个时 你点击的东西 - 运行此类型的代码。 我们可以定义我们想要的代码 运行时点击的,在这种情况下, 这个ID,作为一个单独的函数 然后运行该功能。 但在这种情况下,我们只是跳绳 该步骤和在这里将它移入和 只是一切定义 我们希望发生的,并 不给它一个名字。 这仍然可能没有 回答你的问题。 观众:不是,它的作用。 我的意思是,我想我只是真的不 知道为什么它会是一个 功能可言,虽然。 因为它没有真正被调用。 它并没有真正有一个名字。 JASON HIRSCHHORN:这是在一个函数 感,它的一系列步骤, 就像你把一个函数。 然后这就是为什么我们称之为 它的匿名函数。 我们不打算给它一个名字。 我们不会浪费尝试 以它命名的,但我们可以。 匿名函数,你 总是可以给一个名称。 因此,举例来说,这段代码就在这里, 我们可以把这段代码里面 函数,然后调用 此功能在这里。 相反,我们说,我们不打算 打扰了。 我们只是去写 这一切就在这里。 这就像有时当你正在写 四回路用C - 你们 之前已经看到这一点 - 也许你 通过forloop迭代 进入i等于0。 I小于strlen的。 否则你会通过一些 数组,你可以保存数组 索引i中的一些变量。 并使用该变量。 所以,你不需要重写数组 支架我一遍又一遍又一遍。 而这有点像 一个虚拟变量。 这不是服务于很多其他用途, 使你的代码有点清洁 并且更容易阅读。 类似的功能在这里。 只是使它更容易一点,但 在功能上没有区别。 这是否回答你的问题? 观众:是的。 JASON HIRSCHHORN:OK。 马里奥? 观众:昨天他们往往把 函数括号事件。 这是否意味着什么? 或者是它的事情,比如 他们会做 的document.ready功能的事件。 JASON HIRSCHHORN:我们已经看到了这一点, 再次,这些都是小事情, 也许我不想 花太多时间。 因为有时候我不希望人们 得到吓坏了,他们有没有 听到这些事情那么多。 但是,我们讨论了一些 事件处理程序。 所以有事,然后 这个功能被执行。 然后,我们也想知道 关于一些细节是什么 在发生此事件。 所以想回习题集4。 这可能是最简单的方式 明白打出来。 有一些代码 - 就像一个事件会发生,但 事件可能意味着很多东西。 如果可能意味着鼠标被点击时,它 可能意味着你打箭头键,等。 等等,等等。 但是,这一切都保存在这个通用 东西叫做事件。 然后我们就可以说,是 本次活动这件事情? 或者这是事件这件事情? 或者,什么样的事 与该事件? 所以这就是为什么您创建的变量 那里保存额外的信息 关于究竟发生了什么的 你会想 利用在该功能。 但同样,这可能是一个 是超级不那么重要的东西 熟悉。 好了,有什么其他问题才有人 已经或者绊脚石,他们已经 在审查遇到过吗? 我们将回到那个列表。 在练习测验怎么样,如果 人们已经采取了那些已经? 什么是一些问题 绊倒你们了? 我知道一个事实,去年的 测验真的很难。 观众:你能解释一下 SQL注入攻击是什么? JASON HIRSCHHORN:好,太好了。 所以我们谈到这一点。 有关于安全的讲座。 再次,正如我刚才所说, 这是一个在一边。 但你会在测验受挫 当你读了一些小二点 的问题,你像,当 我曾经学来的? 所有这些东西在那些讲座 你你需要的没想到 知道,或者你可以粉饰,因为 他们没有做的 习题集,这些将有可能 再上来的测验。 所以,酷,有趣的东西,你只是 以为大卫告诉你来 享受,他告诉你你来 享受,并让你仅仅是超级 对学习充满兴趣的一切 有学习 关于计算机科学。 那些东西也拿出了上测验。 所以,即使是没有这些小东西 直接关系到您的问题 设置,如你们所熟悉的 测验0,可能会冒出来。 这是一个很好的例子 的东西。 因此,一个SQL注入攻击是当你 从用户获得一些信息和 你想用它插入到一个表 SQL INSERT语句,但你 没有净化输入 提前。 所以,很明显,我们已经看到了 SQL语句。 我就打开了 - 让我们去 - 我们会去检讨 - 我认为,谁支付呢? 我觉得Samala做到了。 所以我们可以得到 - 观众:你在哪里找到呢? JASON HIRSCHHORN:所以,如果你去 CS50.net,测验,然后你就可以 翻阅过,并得到滑梯 从审查会议。 但你可以看到这是一个很好的例子 的SQL注入攻击。 我们从用户处获得的一些信息 他们给我们一个字符串,然后我们 要插入的字符串 到数据库中。 一般来说,我们要消毒的 输入,表示有一些 字符是危险的。 例如,在SQL字符串, 这些报价 - 单引号或双引号 - 意味着什么。 他们的意思是在这里结束这个字符串。 所以,如果用户给你一个 或双引号,他们可能是 试图绊倒你的SQL查询, 插入一些不好的东西进去。 如果他们这样做,他们可以得到 你的数据库的控制权,或做一些 东西,你不希望他们做的。 所以这就是为什么每当我们需要的SQL 查询,我们净化输入之前 将其放入数据库中,这 意味着我们逃避这些字符。 我们将讨论,在第二。 不过长话短说,SQL注入 攻击是,如果你不这样做 - 如果你不把输入的护理 他们给了你把你的前 数据库,他们可以,你下来看看 在这里,运行查询,其实 - 他们把他们的代码到这里,并 这个选择线下这里将选择 一切从表姑 什么是给定的密码。 因为你有1或等于1。 所以基本上,长话短说, 一种方法来接管数据库。 的问题,那么,对于你们,是 凡在p设置7你消毒所有 输入您的SQL查询? 在哪里这一步发生的呢? 你在哪里防止SQL注入 发生用p袭击设置7? 是啊。 观众:地穴? JASON HIRSCHHORN:所以它不是隐窝。 我们没有让你这样做的这个 特别是设置的问题,但它发生 在查询功能。 实际上,我们写了你, 我们花了照顾 消毒的投入为您服务。 但在过去的几年中,学生有 上键入他们自己的输入。 IN P组7,很多你 - 让我打开另外一个文件。 所以,你会发现在这里有很多 人,在问题设置7,没叫 此功能对字符串。 这个函数,用htmlspecialchars, 再次 - 该字符串可能有一些东西 在HTML中是指别的。 像一个大括号,方,或者角度 支架意味着什么在HTML中。 所以,如果你打印出来的 屏幕或者如果你只是采取和 打印出你的HTML,这可能 做一些你不希望。 所以用htmlspecialchars越过所有那些 有特殊字符 会议和逃脱他们。 因此,它被打印出来的文字 你想看到的,而不是 搞砸了你的HTML。 我们在标题中所谓的功能。 和很多人忘了 在程序中调用该函数 你在写代码。 因此,举例来说,如果一只股票名称有一个 在它的角括号,你忘了 调用这个函数,这个角度 支架可能已经揭去什么 你的HTML的样子。 但调用这个函数将难逃 该所以实际打印出来作为一个 尖括号并不会抛出 关闭你的HTML代码。 我们已经看到了同样的原因,有时, 在双引号前斜线 printf的线路,因为我们不希望 双引号下来的字符串。 我们想打印出来 输出到屏幕上。 所以,这一切是同样的想法。 这是否回答你的问题? 种类:受众。 JASON HIRSCHHORN:你 有一个跟进? 观众:我猜的SQL注入 攻击都有做呢? 我不知道如何 这两者是相关的。 为什么你会做specialChars中? JASON HIRSCHHORN:好的,那么在SQL 当你注入注入攻击 一些恶意的字符串到别人的 程序,他们只是把它和运行 用字符串的SQL查询 你给了他们。 正如你所看到这儿,那 可能是有问题的。 所以你防止对的方法是 你把自己的字符串,他们给 你 - 那么这个字符串就在这里 - 你消毒了。 你逃避所有的事情, 是潜在的问题。 所以,你不理解他们的东西 这意味着什么。 以及与一个例子 HTML是这个功能。 所以它在这里同样的想法。 而我只是向您展示其他 当你已经实例 以前见过这样的想法。 付印前逃逸用户输入 它的屏幕还是把它 里面的SQL语句。 因此,在这种情况下,用户:观众 是搞乱与编程。 JASON HIRSCHHORN:是的。 与所有这些安全攻击, 这总是一般的用户,或 一个人,正试图一塌糊涂 与你的程序员。 而这些办法可以 防止对他们。 观众:所以,我有一个问题 关于杂凑函数。 在测验1自2011年,有两个 关于片面哈希值的问题。 我只是想知道 这是什么意思。 JASON HIRSCHHORN:OK,这测验? 2011? 观众:是啊。 观众:测验1? 观众:[听不清]。 这就像一个散列密码。 这不是把事情 - JASON HIRSCHHORN:什么页面呢? 观众:我认为这是 9或10,或两者。 JASON HIRSCHHORN:好吧, 继续前进,柯特。 你可以回答,而我们期待。 观众:我认为这是在说 关于散列密码。 象,当有人输入密码, 你把它变成一个加密的东西。 这是密码散列,这是 从散列函数不同的是 把东西放到一个哈希表。 JASON HIRSCHHORN:让我们来看看。 让我拉他们 给出的答案。 然后我们将通过它走。 所以简略的给了一个很好的例子 一个单向散列。 当我们以前看到这一点,我们 取密码并开启 - 请记住,在p将7,有人可能 有一个密码,这只是密码, 但后来它被加密成 一些很长的事情。 单向散列意味着它是非常容易 从一条路可以走其他的,但 它很难从去 另一种方式回来。 所以你知道,当你检查 人的密码的问题 设置7,你会拿自己 - 因此,举例来说,说他们想 更改他们的密码,你问他们 他们的旧密码。 你把自己的旧密码。 你加密了。 然后比较了两种加密 而不是unencrypting原 之一,因为它是真正 难走那条路。 是啊。 观众:如何深入我们不 的telnet理解必须是? JASON HIRSCHHORN:如果有人提到 在简短的演讲,只是一个短暂的 理解。 再次,回到答案 为AVI的问题 - 在更多的事情上来,就越有可能 它是你必须要超 熟悉他们。 如果他们来了才在演讲中, 这只是一个地方。 但是,如果他们拿出在讲座中,段, 和问题设置,那么你 大概得超 熟悉他们。 所以,我有一个问题,从 早期有关 - IS是2010年秋季 - 测验1,让我们拉起 - 这个问题在栈和队列, 我们确实花了时间的公平一点点 讲座中谈到,即使 虽然我们并没有真正 曾经击中了它的部分。 所以这个问题是给你一个系列 的命令,并要求你什么 被印刷在这种情况下。 所以这是一个完全合理的问题 可能被问的你 家伙,然后你们应该 能够回答它。 那么,为什么你不看它30 秒,然后如果有人想 建议答案给我, 然后我们将通过它走。 好吧,谁拥有一个答案 问题27? 是啊。 观众:它是1,2,3,3? JASON HIRSCHHORN:这是正确的。 图27是1,2,3,3。 所以,让我们来看看我们是如何走到这一点。 首先,我们要说,如果s 队列中的,得到印? 所以q是先入先出。 之前我们已经看到了。 我们看到的人的图片 在苹果等待 商店买一些产品。 在是第一人 第一批人出来。 在队列中的第一件事情 是第一个出来的东西。 所以,如果我们把东西放到一个队列中, 你推了1,那么我们弹出1。 流行只是意味着冒了出来。 在这种情况下,只取出来的东西。 我们拿出第一 的事情,这是一个1。 所以我们把我们的事情 打印下来在这里。 这不再是我们的队列中。 然后我们推a 2和a 3,和 我们流行过的第一件事。 再次,因为它是一个队列。 所以,我们得到了一个2,那么我们就把另一 3,再次调用pop。 我们的3是第一。 然后我们有一大堆的 其他的东西,调用pop。 但同样,因为这是一个队列, 先入先出。 我们拿出的第一件事情 这是以往任何时候都放进去。 这是我们的3。 并且,在这种情况下,我们也不用担心 所有其他的事情。 所以这是,如果这是一个队列。 关于队列的任何问题吗? 堆栈的不同。 什么是我们拥有的缩写 对于理解一叠? 观众:后进先出。 JASON HIRSCHHORN:后进先出法,我想。 后进先出。 因此,我们看到一个栈的实例 在一个食堂托盘。 无论是托盘顶部 捡起。 然后,如果新来的托盘 中,他们得到放在上面。 然后无论是在 顶部捡起。 因此,那些在底部托盘威力 在那里呆上一段时间。 在这种情况下,同样,我们将 得出了这一点。 我们推进的,所以一 是排在第一位。 而我们弹出的东西了。 还有的只有一件事在那里, 所以我们移动1到这里。 然后,我们把2和3 我们流行的东西了。 但同样,因为这是一个队列 - 或者这是一个堆栈,而 - 我们采取一切是最后一次。 不管是在最后出来先。 和3是最后一次。 所以我们把3出现了下滑,那么 我们把另外3我们 再弹出的东西。 最后,我们将在4,5, 6,和7,在这里我们弹出。 并且因为它是一个栈,我们采取 无论是放在最后的,写 下来这里。 因此,我们最终以1,3,3,7。 没有任何人有任何的问题 堆栈或队列,或这个例子吗? 确定。 让我们回到主题列表中。 不是这样的,这样一来。 还有什么其他的问题人们有哪些? 观众:我不知道有多么重要 这是,但我感到困惑的 不同类型之间的差别 语言,如标记,编译, 解释。 JASON HIRSCHHORN:这是 一个很好的问题。 我觉得这是比较重要, 让我们赶紧去了吧。 我们已经看到了很大的语言至今都 C,PHP和JavaScript,在条款 的编程语言。 HTML,正如你所说,是不是 一种编程语言。 这是一种标记语言。 然后我们有CSS,这也是 不是一种编程语言。 我们也看到SQL中,这是不 一种编程语言要么。 所以SQL允许你写 查询一个数据库。 HTML是一种标记语言。 它定义了事物是如何构成的。 和CSS可以让你的风格的东西。 这可能是在多大程度上为你 需要了解这三个。 但更有趣的数字 输出C,PHP之间的差异, 和JavaScript。 因此,一个最大的不同, 正如你所说,是他们如何是 编译,或任何 相当于是。 所以C编译。 我们将始终运行一个编译器。 然后在那里是你的错误 当您运行C编译器? 它在哪里告诉你 代码中的错误? 你怎么知道有一个 在C语言代码中的错误? 观众:这表明你 在终端中。 JASON HIRSCHHORN:这表明你在 终端为你编译。 如果有错误,它 实际上不会编译它。 所以,你知道,有右的错误 走,时间提前,然后再 即使运行代码。 当然,您可能会遇到你的代码, 得到一个段错误,但那是 可能是因为你没有 一些愚蠢的逻辑的事情。 但随着技术的代码 所有正确的,可以运行。 所以C代码被编译的时间提前。 怎么样的PHP代码? 在哪里在你的PHP代码中的错误? 你怎么知道你有错误 在你的PHP代码? 观众:运行时间? JASON HIRSCHHORN:是啊,当你 将运行它,您将运行 在后面的PHP代码。 然后你会显示一个画面。 你可能会看到一些东西在上面, 但随后你会看到,像一些 橙色,丑表。 它会给你一个行号和 比方说,胡说,胡说,胡说,这东西 没有工作。 所以PHP是一行一行 并在服务器上运行。 然后,结果是 发送给您。 大。 在执行逐行服务器产品线 然后发送给你。 如果有错误,它会发送 你的错误,但你可能有 得到的时间提前一些东西。 所以它的一些可能有工作,但 后来,一些东西可能没有 没有奏效。 怎么样的JavaScript? 你在哪里看到JavaScript错误? P中设置8,当你得到一个 错误,你是怎么知道的? 会在哪里出现呢? 观众:在控制台中, 在底部。 JASON HIRSCHHORN:在 控制台上的底部。 它还会给你 行号,它会 显示在底部。 与未执行的JavaScript 在服务器上。 JavaScript最初被发送到你的电脑, 然后当它是时间来运行 JavaScript中,JavaScript的是 由行上线运行 客户端,就在你身边。 没有服务器,客户端。 同样地,它是 通过线运行线路。 然后当你将得到一个错误, 它会显示在底部。 类似于PHP的,它的一些可能 执行,那么你可能会得到一个 错误以后。 此外,有一点不像PHP的,如果 你得到了一个JavaScript错误 - 说你没有做正确的 对于一个警告框代码 - 你可以继续运行你的程序。 该警告框是行不通的,但 你的程序将被罚款。 只是也许该函数将失败。 因此,有一些最大 在如何将这些术语的区别 语言,或如何编程代码 你写的是实际评估。 也有在其他方面的差异 最大的区别 - 条款 我们已经看到在变量方面 在不同的语言。 所以,有谁能够给我一个差 变量之间 在这三种语言? 是。 观众:在C中,他们 严格的类型。 在另外两个,它们是 松散类型。 JASON HIRSCHHORN:与 这是什么意思? 观众:那在C中,你必须声明 该变量的类型时, 你声明的变量, 像interbool或char。 JASON HIRSCHHORN:优秀。 在C语言中,我们总是不得不把 一个类型的变量。 我们不能真正混合类型。 你不能做一个整数 加的字符串。 但是,正如我们已经看到的这些其他 语言,你其实可以混合类型, 你从来没有真正得给 什么类型,直到永远。 那么,我们如何知道的事情是变量 在PHP和JavaScript? 观众:在PHP中,他们开始 用一个美元符号。 在JavaScript中,当你声明 他们,你必须有一个酒吧。 JASON HIRSCHHORN:对。 所以在PHP中,他们开始 用一个美元符号。 在JavaScript中,他们必须有吧, 虽然有时候他们实际上并不 得有吧。 但是,这是正确的。 所以这是一个很大的区别 之间的变量。 我认为这些都是可能,关闭 顶我的头,两个最大 这之间的差异 三种语言。 但是,是的。 观众:和C变量的作用域 被限制在花括号 当其他的,它只是喜欢, 它死了,如果是在只有一个功能, 但除此之外,it's - JASON HIRSCHHORN:对。 所以范围略有不同。作为 你还记得,大括号定义 变量的范围。 所以,如果有人在里面,如果定义 条件,这是一个内部循环, 该变量只存在在那里。 在JavaScript中,如果一个变量被定义 内部的if条件 - 里面的for循环 - 它会存在 该函数,但它不会存在 以外的功能。 所以范围是一点点更灵活 在JavaScript和PHP。 这回答这个问题? 好了,没有别的问题? 我们可以做四个多分钟 的问题,那么 我们会跳进编码。 观众:我们可以进入阿贾克斯 并说说是什么吗? JASON HIRSCHHORN:交谈后为AVI。 他问这个问题前面。 观众:我的坏。 JASON HIRSCHHORN:不用担心。 观众:究竟什么是JSON? JASON HIRSCHHORN:JSON是什么? 什么是你的问题? 观众:刚才真的很快, 之间的差 在PHP打印和回声。 JASON HIRSCHHORN:你为什么不谷歌 打印和回声之间的区别? 细微的差别。 不是什么大不了的事的。 但你一定要google一下, 而且会给你一个很好的答案。 JSON,可能更大的一笔交易。 代表JavaScript对象表示法。 而当我们已经看到的JSON被使用? 当你看到 - 为什么你甚至不知道这个词的JSON? 当你看过了吗? 观众:当我们得到 股票行情融资。 JASON HIRSCHHORN:所以你看到 当你获得了 股票行情融资。 又为什么你看到了吗? 观众:当我们检索 的所有信息, 排在该格式。 JASON HIRSCHHORN:所以你会得到 - 是的。 来吧。 观众:[听不清]的信息 出的对象的? JASON HIRSCHHORN:无论那些 放在一起就是答案 我们正在寻找。 你想要的信息 这另一个网页。 而你希望,当你 获取这些信息,这将是 在某些类型的呈现给大家 标准化的格式。 每个人都可能是熟悉 用逗号分隔的值。 您可以导出为Excel电子表格或 任何类型的电子表格作为一个列表 逗号分隔值。 和逗号分隔的所有 在不同的领域。 JavaScript对象符号 - JSON - 是另一种类型的标准化的 物联网布局。 这就是通常我们如何检索 从我们的Ajax查询的信息。 因此,在这种情况下,我们得到了它 从雅虎网站。 他们返回的东西 我们在一个JSON对象。 然后,我们知道,因为它是 一个标准,它是什么 将会是什么样。 因此,我们可以通过遍历数组 这是退还给我们,数组 返回到我们的对象。 我们可能需要知道密钥, 但他们通常给你 在该网站的文件时, 你想拿几个JSON 标记他们。 同样,你可以JSON 编码的对象。 所以这是一个函数的JSON 强调编码。 所以你可以采取一个对象, 你已经创建,JSON编码它, 它传递的东西 否则,如果你想。 和JSON解码也存在 类似的目的,或用于 相反的目的。 观众:我们是否需要知道编码 哈希表和尝试? 还是我们只是需要理解 他们是如何使用的,概念上? JASON HIRSCHHORN:那么,举起你的手 如果你没有对p哈希表中设置4 带有链接列表。 或p设置5。 所以这是绝大多数人。 p将5,6,谁知道。 很久很久以前。 所以,你绝大多数做 哈希表与链接列表。 而且因为这可能是更 常用的方法,因为我们花了 大量的时间做链接列表和哈希 表,你也许应该 非常熟悉如何编写代码 哈希表和链接列表。 如果你觉得回到了这个问题 设置,它是不是真的 硬如您预期。 并有少了很多 比你预期的代码。 我会说你应该知道如何 编写一个哈希表或链接列表。 这并不是说你会问, 不一定,但你应该 当然知道。 另外,如果你去翻过去的测验, 已经有很多 关于编写功能上的问题 链接列表或双向链表。 这似乎想出 每一年。 右侧插入一个链接列表,右边 从链表中删除,用鼠标右键插入 对于一个双向链表,等等。 所以,我觉得挺舒服的 说你应该知道这一点。 对于尝试,我会说你应该 当然知道它是如何工作的,也许 给一些伪代码如何 它的代码,并设置它。 但它不会是最糟糕的事情 世界上,如果你不知道如何 它在C代码这将是巨大的,如果你 知道如何编写代码在C,但我认为 可能是伪代码试试看会 是你最需要的 要知道一试。 观众:附加题? JASON HIRSCHHORN:而且用相同的,如果我们 进入二叉搜索树,你可能 需要 - 你已经看到在过去, 我们已经做了很多 - 你知道如何 二叉搜索树的作品。 你或许应该能够 设置一个伪代码。 但由于绝大多数人 没有这样做的问题 集,我会说这是不太可能 重要的是你知道如何编写代码 并成立了这样一棵树。 还有没有其他问题? 另外,我们可以在整个问他们 因为我们经历了一些问题。 好了,我们要继续前进。 跳过该幻灯片现在。 发言的树,也就是第一 问题我已经为你们。 因为这是一个问题。 我会说这是极有可能你会 得到这样一个问题,在您的测验 要求您编写一些类型的插入, 删除,查找,一类 数据结构我们已经看到了。 需要达到的每一年,我们花了 这种大量的时间下半年 学期要对这些数据类型。 所以现在,我已经定义了一个节点 在二叉搜索树。 而我希望你做的是给定的 启动一个二叉搜索树 在这个节点星级根,完成 执行下面的功能, 这恰好是一个查找功能。 并有和没有递归做到这一点。 所以,我希望你写两个函数。 一个用递归,一个人​​在做这个 这样做并没有递归。 也不要假设 根将成为非null。 因此,我们正在寻找我的整数 树开始在根,我们需要 递归写这 和迭代。 是啊。 观众:所以,你要我们返回true 如果我们发现,假如果我们 并不觉得。 JASON HIRSCHHORN:你怎么知道的? 你是怎么知道的? 观众:我是问第一次,但我 假设,因为它说,在布尔 该函数的开头。 JASON HIRSCHHORN:对。 它说BOOL,所以我什至都不需要 告诉你,我希望你能返回 因为它说在那里。 但是,这是正确的。 返回,真或假。 在开始之前,我会建议, 如果您不熟悉 二叉搜索树,快速绘制 它的照片,让您的 的理解,正确的。 写作时,也将帮助您 您的代码并检查它。 同样,你也没有那么多 时间上的测验,做所有的事情 我们要求你这样做。 所以写的伪代码 是非常有帮助的。 而我们一般提供有关 - 如果伪代码是完全 正确的,这是 通常50%的问题。 所以它不是一个硬性规定,但如果 你只写伪代码,它的 正确的,它通​​常50%。 所以我总是建议 - 如果你时间紧迫,或者即使 你只是想弄明白 - 开始的伪代码。 最后,如​​果你能写这 所有在C中,这将是非常美妙的。 因此,让我们3分钟 在这方面努力的程序。 然后我们将要编写 伪代码,它只是一次,然后 我们要递归编写它 然后反复。 如果您有任何疑问,请随时 免费举起你的手。 快乐的四处走动,并回答他们 在我们开始之前为一组。 让我们重新开始,而且我们要 伪代码的递归版本 这一点,那么我们将对其进行编码。 因此,一个递归函数 需要两件事情。 这可能是一个问题, 你可能会问。 需要两件事情。 谁可以提高他们的手,告诉我 什么两样东西递归 函数需要? 根据定义它有两件事情。 什么是这两件事情? 新的手。 是的,奥尔登。 观众:所以我不能完全肯定,如果 这是术语,但是 - JASON HIRSCHHORN:我很高兴 你养你的手。 观众:它需要一个基础的情况下, 并且它需要一个递归步骤。 JASON HIRSCHHORN:完美。 它需要一个基本情况和 一个递归步骤。 那么什么是我们的基本情况吗? 观众:F盘根等于等于null。 对不起,只是伪代码, 如果它为空。 如果root为null。 JASON HIRSCHHORN:如果root为null。 这是极好的。 这是我们的基本情况。 这就是我们要去 检查每一个时间。 和基本情况是 你首先要做的。 如果你打的基本情况,你就大功告成了。 现在,我们需要我们的递归调用,而且我 愿意打赌,我们需要一对夫妇 这里的递归调用。 因为它是一棵树,而我们 可以去多种方式。 所以,如果根是空,我们是很好的。 你有什么建议? 而现在我要开始呼叫 对你们,因为我知道你们 都知道这一点。 但安妮,又该 下一行是什么? 如果我们找到了吗? 我们该怎么办? 观众:如果我们找到了吗? JASON HIRSCHHORN:还是什么 应该是 - 给我的伪代码 行,我们发现了它。 观众:如果我等于根我? JASON HIRSCHHORN:与 那么我们该怎么做? 观众:返回true。 JASON HIRSCHHORN:太好了。 所以,如果我是我 - 哦,他们两个叫我。 这得到混乱。 但如果我是我返回true。 这可能是下一个 我们应该做的事情。 有道理。 OK,现在我们还没有做我们的递归 调用的是,虽然,因为一个递归 呼叫会再次调用该函数。 那么又该下一 伪代码的行会? 安娜。 观众:左边。 JASON HIRSCHHORN:要具体,虽然。 这是一个二叉搜索树,还等什么 并检查左侧意味着什么? 观众:那么节点 - 对不起,根。 然后向左箭头。 节点,节点,对不起。 我不会读它正确。 这就是所谓的节点,对不对? JASON HIRSCHHORN:它会被称为根 在该功能,但无论哪种方式。 左侧的 - 是吗? 观众:如果它不等于 我,然后我们将调用 该功能了吗? JASON HIRSCHHORN:这是正确的。 如果它不等于我,我们要去 再次调用该函数。 然而,我们要什么副作用的树 再次调用该函数? 观众:在左侧。 JASON HIRSCHHORN:我们并不总是 要调用它的左边,如果它 不等于它。 观众:哦,对不起。 呼吁的权利。 JASON HIRSCHHORN:我们想知道 具体而言,虽然 - 还记得,在一个 二叉搜索树,一切 左手侧越小。 一切的权利 手侧更大。 所以它只是不 - 是啊,去吧。 观众:如果它的不到我,然后 - 如果它是在左边 - JASON HIRSCHHORN:所以,如果 ri为小于 - 因此,如果我们数小于我, 我们想去什么副作用? 观众:我们想去 向右侧。 JASON HIRSCHHORN:我们想要去 - 让我画一个快速的树。 如果这是5,这将是3。 因此,如果ri为小于5,什么 一边做我们想要去? 观众:对不起,什么? JASON HIRSCHHORN:我们的电话号码是 小于我们的数 现在在看。 观众:哦,那我们要 去的左侧。 是啊。 抱歉。 JASON HIRSCHHORN:没错。 无后顾之忧。 在二叉搜索树,一切 下是到左边, 更大的是在右边。 因此,如果我们的数目小于 我们正在检查我 - 因为你在看 节点,它有一个i - 那么你想要去到左边。 这是一个轻松的一年。 这是它的伪代码的其他线 我们需要写? 卡洛斯? 观众:同样的事情,你只需切换 它以一个大于号 和去的权利。 JASON HIRSCHHORN:你能 说这一次吗? 观众:如果我们的数大于 比我去的权利。 JASON HIRSCHHORN:优秀 就业上的伪代码。 让我们在真正的代码做到这一点。 再次,这将伪代码 可能会得到你的,因为它是 正确的,50%在这个问题上。 但这个伪也意味着1 一,从本质上讲,成代码。 因此,让我们在C谁能给做到这一点 我的第一行代码? 其实,第一次,以前我做的 这一点,让我拉过来 - 观众:我有一个问题。 你为什么要缩进 行我给你? JASON HIRSCHHORN:因为 我不能写。 我不知道。 你说得对。 该行应该在那里。 好了,这里是我们的函数。 让我拉过来,也, 我们定义一个节点。 如果我们没有发生什么 写的typedef? 有谁知道? 观众:它不会编译。 JASON HIRSCHHORN:它会 编译,是的。 观众:难道只是声明了一个 实例,而不是使之成为一个新的 键入您可以声明多个 的实例? JASON HIRSCHHORN:所以它不会 知道 - 它不会 只是声明了一个类型。 你仍然可以做出很多节点。 观众:但是难道我们要 每次写结构节点? JASON HIRSCHHORN:这是正确的。 你必须编写结构节点 每一次,而不是仅仅节点。 但用typedef,你可以只 写节点每一次。 好了,谁没有给出 - 是啊,Avica。 观众:如果root等于等于 空,返回false。 JASON HIRSCHHORN:大和 这是我们的基本情况。 下一行代码。 谁没有给别人 我的代码行了吗? 是啊。 观众:根箭头我 等于等于i。 然后返回true。 JASON HIRSCHHORN:太好了。 下一行? 是啊。 别人? 然后你可以去下一个。 观众:否则,如果根箭头 i小于我返回 函数调用查找根源 - JASON HIRSCHHORN:对不起。 观众:返回找到根 指向左侧逗号我。 JASON HIRSCHHORN:所以,如果ri为更大 比树的东西,我们要 去左边? 观众:不,我有这样的切换。 JASON HIRSCHHORN:哪一个? 观众:没有,是的。 我有一个小于号那里。 JASON HIRSCHHORN:对,如果ri为 不到什么是根 - 我们当前的根 - 那么我们 想要去到左边。 什么是最后一行,你呢? 观众:基本上同样的事情, 除了切换大于或 等于小于和左到右。 JASON HIRSCHHORN:优秀。 没有任何人有任何疑问, 这件事? 因此,一些其他的东西,会 已经正确的是 可能是 - ltiff。 猜测,在技术上,没有这些 真的还需要,ltiff。 此外,有可能只 一个案件​​到这里。 所以这可能是你最后一种情况。 你甚至不需要说 - ltiff。 但可能好写 它是明确的。 是啊。 观众:所以你不认为测验 - 如果我们的错误,例如, 在语法 - 小语法错误 - 那怎么得到采取的测验? JASON HIRSCHHORN:一般的测验, 小的语法错误或小 风格的错误不会失去你点。 所以,如果你忘了一个分号 在这里,这将是确定。 如果您忘记关闭这个括号, 这将是确定。 这改变了巨大的语法错误 你的代码的功能意义 戏剧性的是,你可能会得到 起飞的点。 或一般,只是你分级 是否不是你的 代码的功能,甚至 - 不是它的设计这么多, 而不是它的风格。 现在,让我们编写一个迭代 版本发现的。 因此,这将是相当类似的,但 当然,还有将要 一些关键的差别。 然而,我们的伪代码 大概可以走 - 我们仍然可以采取一系的 伪代码,弄清了 线是在这种情况下。 因此,在一个迭代版本,什么 你认为,朱莉娅,应 在第一线? 观众:同样,在迭代布尔, 您需要建立一个for循环,对不对? JASON HIRSCHHORN:确定。 观众:那么像,K,对于x 等于0时,x是小于我。 或无,x是小于 树的大小。 JASON HIRSCHHORN:树。 所以我们真的不知道的大小 树,我们真的不知道 多少次,我们可以走了,有啥 不同类型的循环,它可能是 在这种情况下更好? 观众:如果别的吗? JASON HIRSCHHORN:如果其他人 不能为一个循环。 那么什么是循环类型,我们可以只 去,直到某些情况下得到满足? 什么是唯一的其他类型的循环 C语言除了for循环? 观众:虽然。 JASON HIRSCHHORN:虽然,没错。 在while循环中,不 需要知道如何 - while循环和for循环可以做 同样的事情,但美好的东西 关于while循环是我们不需要 要知道有多大我们的树。 因此,我们打算去,直到什么? 观众:直到它等于 的大小 - JASON HIRSCHHORN:嗯,这是非常 类似我们的递归情况。 所以 - 观众:虽然根 我不等于我。 JASON HIRSCHHORN:这是真的很近。 而根I - 让我们来试试吧。 我不认为[听不清] 其中root我不等于我。 我们可能需要在一点点改变它 位,但听起来就像是相当 好,现在。 因此,我们将做到这一点。 此外,请记住,我们不能假设 每个问题。 你不假设 根将成为非null。 那么你觉得很 我们应该做的第一件事是什么? 观众:刚刚做同样的 和以前一样的事情。 如果根等于等号 空,返回false。 JASON HIRSCHHORN:太好了。 因此它可以为null。 因此,我们要摆脱 它的时候了。 然后我们要去检查,如果 根我不等于我。 所以,说我们正在寻找在这棵树 3,根我不等于我,现在 我们在我们的while循环。 我们究竟想干什么? 再次,这将是相当 类似于我们的递归版本。 是啊。 观众:所以你想要遍历,或 不断下降的树,只要 根不等于空。 JASON HIRSCHHORN:只要 根不等于空? 观众:根破折号我 不等于空。 只是根,是啊。 作为一个长期的根源是 不等于空。 JASON HIRSCHHORN:所以,你想要 要改变这种成根 不等于空? 观众:是啊。 观众:我们可以结合 这些,对不对? 我们不需要的,如果,最初。 JASON HIRSCHHORN:OK,所以如果我们鸵鸟政策 - 如果我们结合它们,所以我们要做的 而根不等于空, 如果根恰好是在空 开始,我们怎么办下来吗? 观众:返回false。 JASON HIRSCHHORN:太好了。 因此,两种方式可能 会工作。 这是一种不同的方式, 而这个结合了。 但同样,如果你没有任何办法,我们 不打算脱下设计 点上的测验。 但这个看起来不错。 因此,尽管根不等于 空,什么是第一 的事情,我们要检查? 别人? 空,什么是第一件事情? 观众:如果RI小于 - 哦,我想,如果我们已经 发现它的根。 因此,如果根箭头i是等于i - JASON HIRSCHHORN:对不起? 观众:如果根箭头 i等于等于I - JASON HIRSCHHORN:我们该怎么办? 观众:返回true。 JASON HIRSCHHORN:太好了。 而下一步是什么? 杰夫,什么是下一行代码? 观众:如果i小于根箭头 i,则根等于根箭头左边。 JASON HIRSCHHORN:根等号 根箭离开了。 所以,这可能是最大的 区别就在这里在这个迭代 版本相对于 递归版本。 递归版本,我们 再次调用该函数。 我们将更新时,根 我们所说的新功能。 在这里,我们不调用一个新的函数。 我们只是简单地更新 根此功能。 这是极好的。 什么是代码的最后一行? 是啊,马里奥? 观众:否则等于根 根右侧的箭头。 JASON HIRSCHHORN:对不起? 观众:根等号 根右侧的箭头。 JASON HIRSCHHORN:你也可以 写这样的事情? 观众:我不知道。 JASON HIRSCHHORN:不能。 你不能这样做,加上等号。 好了,这个不错。 为什么我们不这样做 把它清理干净。 这看起来不错,这是可行的。 而我们将要爆发。 如果root左为null或向右根 为null,我们会来这儿。 根将等于空。 我们会打破我们的循环, 我们会返回false。 所以,当我们跳出的 循环中,我们返回false。 再次,在一个while循环是完美的 在这里,因为我们不知道如何 大我们的树。 我们试着写for循环,但我们 意识到你必须弄清楚如何 大的是时间提前。 是啊。 观众:如果这不是一个二进制 搜索树,这将是真正的数学-Y 要反复写,对不对? 一样,如果它是一棵树, 但不一定 - 所以它不是在左边的所有越小, 而右边都较大。 这将是非常困难的 遍历它,对不对? 我们不得不拯救早期是什么 在树回去, 和类似的东西。 JASON HIRSCHHORN:如果它不是一个二进制 搜索树,如果它只是一个 树,事情没 整理这样的 - 和我们之前意识到,当安娜 在帮助我们,使 排序的帮助了我们很多 - 我们需要的,是的,永远保存 我们以前。 但有可能是一个很大的 我们在哪里previouslys。 可能有很多父节点的。 可能做到这一点的最好办法就是 是要继续推动东西到一些 类型堆栈或队列。 你将永远不需要编写本 因为这是一个困难的问题。 但你把一些东西到堆栈 或队列,然后弹出他们关闭, 然后评估他们。 然后有一些其他的东西在那里 你实际上是把节点, 然后创建一个,然后 通过搜索。 这可能是做的最好的方式。 好了,关于这个问题的任何问题吗? 观众:这是一个相关的说明。 我们将要比较运行时间 对哈希表,二进制 搜索树,等等? JASON HIRSCHHORN:可能吧。 因此,让我们做到这一点真的很快。 运行时间为哈希表 - 什么样的人? 二叉树? 观众:链接列表。 JASON HIRSCHHORN:好,让我们做插入。 什么是插件的大O 在一个哈希表? 什么是假设 你在做什么? 观众:你要插入的 开头的链接列表。 JASON HIRSCHHORN:可能第一 假设是不存在冲突。 如果没有冲突,则 插入时间就是其中之一。 如果有冲突,你就 做单独的链接和插入 在链接列表的开头, 然后插入也是恒定的。 如果你正在做一个哈希表,但你 有处理的方法不同 有碰撞,有什么 不同的方法? 什么是一个不同的方法 处理的 在哈希表中的碰撞? 观众:线性规划。 JASON HIRSCHHORN:线性规划。 所以,我们要继续寻找 下一个空位。 这不是恒定的插入时间。 你可能不得不通过 整个表,使 可能的n大O。 是啊。 观众:否则只是链接? JASON HIRSCHHORN:我们做了 单独的链接。 这是第一个。 这就是链接列表。 花哨的名字是单独的链接。 它可以是任何类型的列表结构 我们正好在做链接列表。 如此反复,插在一个哈希表 可能是恒定的时间。 关于插入什么 在堆垛机的队列? 观众:是不是恒定的? JASON HIRSCHHORN:这是不变的时间。 你只是推动它。 确定。 插入,请问是什么其他的? 上一试? 什么是插在一个try大O? 观众:长度是恒定的。 最长长度 - 字的长度 要插入。 JASON HIRSCHHORN:对不起? 等等,所以我怎么听见了吗? 你说 - 你说什么? 什么是你的答案,马库斯? 观众:这个词的长度 你要插入的字符, 假设它是一个字符尝试。 JASON HIRSCHHORN:好了, 字的长度。 我们会做一个假设,即 它的字符的字符串。 你说不同的东西,虽然。 你说的最长的单词的长度。 观众:这只是常数,对不对? JASON HIRSCHHORN:为什么会 它是恒定的? 观众:就像,如果你使用大O 符号,那么它不是基于变化 对事物的数 已经在尝试。 JASON HIRSCHHORN:所以我们 说它是常量时间。 它是恒定的插入,并 那是因为这样的想法 - 说我们有一个字,就是45, 或一个词,就是60,那 有一个恒定的数量。 它只会被插入 在常数时间。 但在实践中,它不会是, 显然,发生在一毫秒内 例如。 但我们会说大O是 不断的尝试。 这就是它的一个 最大的优点。 怎么样插入一个链接列表? 只需一个通用的,排序的链接列表? 是啊。 观众:我有一个问题。 在测试中,他们会不断问我们的 插入时间这四个步骤, 还是什么? 还是只是 - 当你说的插入时间为一, 这只是意味着恒定的时间? JASON HIRSCHHORN:是啊,他们会 总是问,是它的n大O? 日志的n大O? Ñ​​平方不变。 这些都是真正的唯一 那些你需要知道的。 什么插入到 排序的链接列表? 观众:我有一个问题 - 一个问题 - JASON HIRSCHHORN:答案是什么 对这个问题有关系吗? 观众:等等,你问什么? JASON HIRSCHHORN:什么是大O 插入排序的链接列表? 观众:一? 无等待,无等待,正。 JASON HIRSCHHORN:N.除了 链接列表。 什么是你的问题? 观众:所以你会写 Øk或邻1对的 - JASON HIRSCHHORN:哦。 我会写邻1,大概。 还有另外一个数据结构 这将是良好的。 树,二叉搜索树。 什么是插入在 二叉查找树? 观众:登录。 JASON HIRSCHHORN:那么,什么是最糟糕的 情况二叉搜索树? 因此,如果我们碰巧从5开始,每 数大于5,则 我们已经有了5,7,9,11,等等。 在这种情况下,它基本上只是一个链接 列表,我们需要插入所有 的方式在末端。 所以它的n个大O。 这可能是我们最糟糕的情况 在二叉搜索树。 很明显,你永远不会建造 与5中的一个二分搜索树 中间,知道5将 是最低的数字。 但它可能是,如果你 从头开始。 这之前的任何问题,我 移动到另一个问题? 这是一个很好的问题。 我想知道大O - 观众:关于搜索什么 这四个? JASON HIRSCHHORN:当然我们 没有搜索和排序。 我们做了所有这些算法,对吧。 等待,是测验1? 是盖 - 你已经有 问题在测验1? 二进制搜索的大O运行时, 插入排序,冒泡排序? 观众:是啊。 JASON HIRSCHHORN:如果您有这样的 在测验0的问题,可能你不会 得到测验1完全相同的问题。 可能是还是不错的知道这些。 你应该希望知道的GH了。 但其他数运行时间 可能是很好的了解。 未涉及的测验0的东西。 像所有的这些运算符的 这些抽象数据类型。 好吧,让我们继续前进。 这应该是相当快的。 这是一种新的语言,我们没有 其实在编码之前。 这是一个问题,问 在PHP代码。 因此,考虑下面的PHP数组。 写PHP和/或HTML代码,使得它 输出与TFS一个两列的表格 名称和房屋。 你从来没有这样做过, 此特定问题。 但是,这应该是非常熟悉的 你的问题确实设置7。 所以,我愿意打赌你会 问到代码的东西在PHP中 非常类似于您 在问题没有设定7。 首先,数组是不是特定的。 什么数组类型是什么? 观众:会意字。 JASON HIRSCHHORN:这是 一个关联数组。 和什么之间的区别 关联数组和对象? 观众:一个对象数组的索引 整数和一个关联数组 是字符串的索引, 或者类似的东西。 JASON HIRSCHHORN:这么一个数组 对象将有指标 整数,但一个对象的字段。 它也有类似的那些字段名称 名称,门牌,学生。 你有一个想法? 观众:嗯,联想 数组是PHP的,对不对? 和对象是在JavaScript? JASON HIRSCHHORN:说实话,有没有 两者之间真正的区别。 两者都有字符串作为密钥,并能 基本上有什么作为值。 不同的语言呼叫一个 事情关联数组, 一件事情的对象。 所以说实话,有没有真正的 差异,但有一些肯定 语法差异 两者之间。 是啊。 观众:那么,对象也根据编码 油烟机作为一个哈希表,然后呢? JASON HIRSCHHORN:你这是什么 意思是,引擎盖下的编码? 观众:我们被告知,联想 阵列在技术上是一个 哈希表。 那么,对象也从技术上 哈希表? JASON HIRSCHHORN:我不会 要回答这个问题。 我会尽快给你这一点。 但我不认为任何一个 那些这样。 但是,以任何方式,关联数组和 对象,通常,人们用这些 术语可以互换。 在这种情况下,凉爽的一部分 是您可以使用键。 字符串作为键,而不是 只是简单的数字。 所以我一直在谈论 这一段时间。 我们希望,有些人有 得到就这样开始了。 我们将编写一些PHP和HTML 代码,这样,我们得到一个两列 表与TFS名和房屋。 好吧,我也想一个标题 排此表上。 所以我要得到直 到这一点。 我们要文件,新建, 而且我们要 - 确定。 我该如何开始一个表? 什么是标签,迈克尔, 启动一个表? 对象:表。 JASON HIRSCHHORN:表。 如果我打开一个标签,是什么 还有什么我需要什么? 观众:头部? 或者,我猜,类。 JASON HIRSCHHORN:那么,对不起。 假定我们已经写 doctab,HTML,所有的东西。 但是,如果我打开这个表标签,是什么 还有什么我需要写? 为验证HTML吗? 观众:关闭它。 JASON HIRSCHHORN:关闭标签。 我怎样写一个特写table标签? 观众:点斜线表。 JASON HIRSCHHORN:斜线表,太好了。 可能是有道理写两个 那些因为一起 你必须做到这一点。 好吧,如果我想要一个标题行,怎么办 我写的标题行的标题? 观众:是不是少 超过10小时密切 - TR,是的。 JASON HIRSCHHORN:TR? 观众:那么同样的事情, 斜线,是啊。 JASON HIRSCHHORN:确定, 给我两列。 观众:T D? JASON HIRSCHHORN:确定。 我想两列。 这是否能给我两列? 多少列,这是? 之一。 因此,让我们复制并粘贴此。 因此,实际上,在测验,所有这些代码 我们已经写了这么远了 其实给你。 但你应该还 知道怎么写呢。 是啊。 观众:你的房子 两者之间。 JASON HIRSCHHORN:繁荣。 它应该就在那里,对不对? 良好的通话。 所以,再一次,所有这些代码实际上是 给你实际的测验。 但它的乐趣,写它,你 应该知道怎么写呢。 因此,这就是你需要 开始你的代码。 什么是我们需要在这里写? 对不起,我需要改变 该文件的名称。 因此,我们将其保存在一个。的HTML文件, 没有一个。PHP文件。 这些东西会是什么呢? 在一个。PHP文件。 所以我们在一个。的HTML文件。 什么是第一件事情 我需要写? 我想提出一些PHP 在HTML代码。 观众:PHP的,像另一个胡萝卜 和问号PHP的,对不对? JASON HIRSCHHORN:太好了。 如何才能结束呢? 观众:用一个问号。 JASON HIRSCHHORN:那太好了。 这就是我需要的,如果我想的第一件事 把一些PHP代码在这里。 观众:我想一个PHP 文件可以采取的HTML。 JASON HIRSCHHORN:是啊。 一,PHP文件可以采取一些 HTML和显示。 这是我的坏。 我只是试图模仿 这是什么的测验。 好了,对不起你迷惑。 是的,practice.HTML。 现在,我们打算把 一些PHP代码英寸 这是第一行 PHP代码我应该怎么写? 我要通过这个数组 并使其成为一个表。 是啊。 观众:您可以使用 一个的H循环或for循环。 JASON HIRSCHHORN:好的,有什么 你要使用? 观众:我会用一个for循环。 对,然后你做的美元符号 i等于0分号美元 签署小于2我。 然后我分号美元 签署加我加。 JASON HIRSCHHORN:如何做 你知道使用一个2? 观众:因为有两个 在较大的关联数组 关联数组。 JASON HIRSCHHORN:那么大的事情的 没有联系的数组。 最重要的事情只是一个正常的数组。 但你说得对,有 2关联数组 我们的内部更大的数组。 这就是为什么你使用两个。 我觉得不舒服假设 他们是2,有啥办法写 这个没有假设他们是2? 观众:[听不清]? JASON HIRSCHHORN:好的,怎么 你写的吗? 观众:Foreach回美元符号 TFS或像美元符号TF。 JASON HIRSCHHORN:OK,所以对于每个 TFS作为TFS,我想,现在 再次,有我的表。 那么,谁可以给我 下一行代码? 观众:打印,然后在 报价,支架TR结束 支架,最终报价。 结束括号,分号。 JASON HIRSCHHORN:确定, 什么该怎么办呢? 观众:它会说,新行。 它会放 标记为新行。 JASON HIRSCHHORN:对,这个PHP一样 我们前面谈到的 - 这 PHP将被求值,然后 它会打印出该文件 表丝束,然后该 HTML将被评估。 我们只是复制本 HTML我们不得不在这里。 是啊。 观众:[听不清]? JASON HIRSCHHORN:对不起? 就是这里。 2012年秋季。 不要看答案, 让我们来解决它在一起。 所以,我们打印的表行。 所以你可能在 摆动的东西。 什么是下一行 代码,我们需要写? 阿萨姆,给我的下一行代码。 观众:你需要的TF的名字。 TF开括号引号 名左右方括号。 JASON HIRSCHHORN:给我他们的名字。 观众:你需要打印。 [插VOICES] JASON HIRSCHHORN:OK, 我怎么打印呢? [插VOICES] JASON HIRSCHHORN:我失踪 现在的东西。 我在想什么? 观众:你需要一个美元符号。 JASON HIRSCHHORN:什么 什么我失踪? 所有我们到目前为止印刷是TR。 观众:后关闭TR。 JASON HIRSCHHORN:因此,我们需要 后关闭TR。 谁看见我们错过了什么 第16行? 是的,安娜。 观众:你需要打开 一个TD和大括号。 JASON HIRSCHHORN:在哪里 我们把花括号? 观众:围绕TF名字。 JASON HIRSCHHORN:喜欢这个? 观众:是啊。 然后关闭TD。 JASON HIRSCHHORN:像这样? 观众:你需要双引号 标记旁边的大括号? JASON HIRSCHHORN:就在这里? 不,你不知道。 所以这是完全正确的。 是啊。 观众:所以这之间的区别 和用点encatenating是,如果 你用点,你必须有 双引号,那么一个点, 然后点 - JASON HIRSCHHORN:正确。 所以你说有一个最终的 的方式写这这样的。 什么是连接运算符 在JavaScript中? 观众:加号。 你忘了把 大括号后面。 JASON HIRSCHHORN:太好了。 并且还有一系 代码丢失。 谁可以给我的最后一行 的代码,我们就错过? 观众:刚才完全一样的东西, 刚刚与房子,而不是名称。 大 JASON HIRSCHHORN:太好了。 和你的语法是完全正确的 在获得一个关联数组的东西。 因此,在实际测验,你是 实际上放弃了,直到这里。 所以这段代码是给你的。 你不得不写有这些 四行并记住 关闭表标签。 你这家伙居然没 一切和更多。 是啊。 观众:所以这将是功能 如果你只是有相同的,所有的 一个大的打印通话,对吧? 然后就连接在一起 其上,等等? JASON HIRSCHHORN:像这样? 观众:是啊。 它只是不会好看,如果你是 看着它,当你检查 在您的网站元素,对不对? JASON HIRSCHHORN:我同意。 如果我装了这个网页,我会成为 能够看到这个PHP代码,永远不会消失? 观众:号 JASON HIRSCHHORN:号 而实际上,我不会。 观众:这是不是HTML,对不对? 所以,你也许可以 - JASON HIRSCHHORN:所以这个PHP将 评估服务器端。 PHP总是被判断服务器端,所以 你永远能看到PHP代码。 观众:但是你能够 看到打印的结果。 JASON HIRSCHHORN:对。 而且说实话可能不 把它全部上线。 它可能很好地格式化你, 或者它可能把它放在同一行。 不清楚。 但是,是的,好一点。 观众:怎么会有的 没有文字的高亮 任何PHP的命令? 因为我记得看到这一点。 JASON HIRSCHHORN:因为它是一个 。html文件在这里在顶部。 你去那里。 观众:如果我们做了初步的方法 用for循环,正确的,如果我们 要访问TFS,我们会 做TFS支架0支架,然后 [听不清]? JASON HIRSCHHORN:你会 - 所以你说的for循环,你 会做的美元符号TFS支架1 或者我,对吧。 或美元符号我关闭支架 然后括号 双引号,是的。 好的,优秀的。 我们有一个更快的之一。 七分钟,所以我想 走在这一个。 这是另一个例子。 我们现在是一个完全另一种语言。 我们有一些HTML代码。 这是在屏幕上种小,但 我希望你仔细看看它真的 很快,有人可以告诉我, 如果我要载入这个网页, 我会看到什么? 详细说明一切 此网页。 诺亚? 那么我看到了什么? 观众:在代码的前端 谷歌有感觉的文字和 提交按钮。 JASON HIRSCHHORN:什么 将按钮说呢? 观众:提交。 哦,搜索。 对不起。 JASON HIRSCHHORN:它会说搜索。 请记住,名称。 我们使用什么名称? 此名称属性,有什么 用的? [插VOICES] 观众:这就是它的名字 因为当它被点击? JASON HIRSCHHORN:这可能是。 但是,我们通常看到的 - 为什么 是我们给这个名称的队列? 为什么我们看到了吗? 是啊。 观众:那岂不是成了指数 超级全局变量? JASON HIRSCHHORN:是啊,一般当 这种形式会提交,然后在那里 将这个提交给? 哪一页? 诺亚,哪一页将这个提交给? 观众:我不知道。 JASON HIRSCHHORN:在哪里 可能我们能找到它吗? 你在哪里找到什么 页面提交给? 哪一行代码? 观众:表单操作。 JASON HIRSCHHORN:没错。 行动。 所以它提交到搜索页面。 反斜杠搜索。 所以这是完全正确的。 用什么方法? 观众:获取。 JASON HIRSCHHORN:获取。 没错。 所以我们阅读这一点。 这将是一种形式。 你说得对。 两件事情的形式,的标题 页面和顶部将是谷歌。 因此,这里有两个问题,你应该 能回答这个页面。 如果此HTML住在这个网站, 用户输入错误到这个文本 场就在这里,什么URL将 用户发现自己因 提交表单? 因此,我们有这个权利在这里。 我要回去 此页,虽然。 我会写了第一部分。 大家可以看到在这里? 好了,马里奥,你以为你知道吗? 哪一页? 观众:反斜杠搜索。 JASON HIRSCHHORN:我要去 搬到这里了。 OK,反斜线搜索问题 马克Q等于错误。 任何人有不同的建议吗? 是啊。 那么,如何才能得到这个? 好了,我们以前见过这个。 而你想出了这点。 你说的没错,诺亚,该 行动告诉我们什么 页面我们要。 我们也知道用什么方法。 我们正在做的get。 和GET和POST的区别 是,获得显示在URL 及后则没有。 所以,如果我在写帖子就在那里 方法,会有什么不同? 观众:它只是 是斜线搜索。 JASON HIRSCHHORN:它会 刚刚被削减搜索。 没有什么比在这里会发生什么。 但因为它是一个得到,网址 显示如下。 首先我们看到了一个问号和 我们看到的名称和值。 说有另外一个文本字段,并 我给它r的名字,我输入一个 值,毛虫。 什么现在这个样子? 我还有一个文本字段,我给一个 r和毛毛虫的值的名称。 观众:酒吧后你就会有 &符号毛虫。 JASON HIRSCHHORN:这是 没有连字符。 观众:或者只是什么 在和符号。 JASON HIRSCHHORN:是啊,没有。 你是对的,我错了。 这就像一克。 对象:卡特彼勒。 r等于毛毛虫,对不起。 JASON HIRSCHHORN:有 在那里没有R? 观众:没有,没有。 JASON HIRSCHHORN:我们将讨论 关于下课。 这是完全正确的。 所以,是正确的。 然后你可以有很多这样的, 他们将全部串连 连同这一点,。 所以这是完全正确的。 还有一个问题。 画出此HTML的DOM,开始 与文件。 我们可以这样做,在两分钟。 我们将在这里做了。 我将回到这个网页。 OK,我们开始文档。 下一步是什么? 所以,当你通读 - 观众:HTML。 JASON HIRSCHHORN:HTML是下一个。 我们将通过标签去标记。 什么是HTML呢? 观众:头。 JASON HIRSCHHORN:头。 头后有什么? 观众:标题。 JASON HIRSCHHORN:标题。 和标题有谷歌的价值, 但我不会去 写在现在。 好了,哪里的身体去了? 观众:还有脱落的HTML。 JASON HIRSCHHORN:没错。 机身自带了这里。 难道大家都明白为什么 是这样的话? 你应该能够计算 这一点,也一样,即使我没有 这个漂亮的缩进。 排序的缩进给它拿走, 但你可以看到,头部标记有 被关闭,这意味着我们可能 不能下去在这里。 我们需要回到多达什么 是头向右前 标签,或未满。 我们甚至用头标记。 并在进入身体的形式。 下形式,有两个输入端。 确定。 这就是我的一切。 测验1是明天。 我很高兴为你们。 这将是一个爆炸。 如果你有 - 观众:[掌声] JASON HIRSCHHORN:哦停下来,停下来。 不过没有关系,我在开玩笑。 如果您有任何疑问,右 节后,我在外面。 如果您有任何疑问,今晚, 随时来电,电子邮件,gchat, 信鸽我。 祝你好运明天。 有一个美好的感恩节假期, 如果我没有看到你在那之前。 我会在感恩节之后见到你 对我们的最终周二 部分党永远。 观众:[听不清]。 JASON HIRSCHHORN:太好了。 好吧,我看下你们 一周或两周。 而明天好运。