喇叭:我听不清。 我莱弗里特楼的高级。 我是学计算机科学, 我就是一个TF CS50。 作为一个新生,我什至没有 一台笔记本电脑或智能手机。 我有没有编程经验。 CS50是最难忘的课程, 我拿了,因为它是在哈佛 一场斗争,但它是一个真正的 同时的乐趣斗争。 我做了很多惊人的,永久的 朋友,我真的学到了很多东西 适用技能。 我只是很高兴,我没有让我的 缺乏背景是我的借口 不CS50。 我听不清。 我是一个高级莱弗里特 房子,类2014年。 我把CS50。 DAVID马兰:所以这是CS50。 这是周零年底。 记得在那里我们开始了最后一次, 这些灯,这是 如此受欢迎,我们去 买了一些今天。 所以,我认为这将是 我们的事今年 - 台灯,如果你来到舞台上, 至少要等到我们用完。 但是,我们使用这些召回,给大家介绍 基础数据的代表性。 我们需要的方式开始代表 一台计算机内的信息。 而最简单的办法做到这一点是 一个成分,电力。 最简单的事情可以做, 电力是打开它,它关闭。 让电子流与否。 使用这两种基本状态,关闭 和,虚假和真实的,或零和 一,我们开始看到,我们可以建立 了,在这种情况下,与光 灯泡,更多的数字比 只有零和一。 我们七算作高, 例如,最后一次。 但是,所有我们需要做的是不断的扔 越来越亮的灯泡 问题,说真的,我们可以代表 任何数字,我们 可能想要的。 好吧,我们上,然后迅速过渡 周三这个字节的志愿者。 8位是什么,我们一般称之为一个字节, 所以在这里,我们有8个志愿者 上周三统称 占8位。 而当他们的手去 了,他们分别为一个。 而当他们的手 下来,有一个零。 我们这些人 拿出在舞台上,为什么? 我们能够做到什么 这个序列的比特? 要创建一个字母。 最重要的是我们能够建立 以前的教训,实际上 开始做更有趣 的信息,至少有 我们人类所熟悉。 这是怎么回事是一个反复出现 50主题贯穿,但电脑 科学更一般地,这一想法 分层,其中,在结束的 一天,如果你真正开始 与计算机的基本知识,是的, 这是零和的。 下面,它是 只是电力。 但是,我们非常迅速地开始采取这些 低级别的细节是理所当然的 ,并开始在过去工作层 这样做,我们最终 学期结束的时候,真的, 更普遍的计算机科学家 和程序员,可以做一些真正 强大的东西利用工作 我们自己也做了,也 站在别人的肩膀上。 现在,我们很快就转换日(星期三) 只需要 希望代表信息 用它做什么。 所以我们定义是什么算法? 一系列指令。 所以这是一个系列的指令, 数的步骤,您的人,或 一台计算机,更典型地,对 为了执行一前一后 实现某种目标。 我们有几个目标最后一次, 其中之一是计数 房间里的人。 另一个这样的例子是要找到 麦克·史密斯在电话簿。 所以,你可能还记得,我撕了电话 本书一半向为此 找到迈克·斯密。 视觉的目的,是为了 再次证明,我们 此问题在字面上撕裂 一半一半,一半,而且很 很快像1000页 只是一个单页。 那些你们谁错过了这个 周三,我想我们会回放 一些镜头,你错过了什么。 让我们来看看。 [视频回放] 我们有去。 1500页,漂亮干净的线, 合法撕裂。 [END视频播放] DAVID马兰:所以这是星期三。 我们过渡,虽然上周三 想代表算法 在使用一些标准的方式,不只是 他们口头描述,但 他们在书面或试图表达 电脑屏幕上,以便我们能 开始改善,并修改 它们,并且,最终,实际上 分析是多么正确 有多快他们。 因此,我们推出这个概念 的伪代码,其中,在 通俗地说,是什么呢? OK,词。 让我们去更深一点。 英语,肯定,但 朝什么目的呢? 话来创建或 来表示的算法。 因此,有没有一种语言称为 作为在世界上的伪代码。 这只是你的英语,或 无论你的口语,使用 粗略的符号来传达一种 一个想法非常简洁的。 但是,我们会看到,肯定与 英语的伪代码,原来 大多数编程语言本身 英语本身衍生, 我们会发现,有一些标准 代表伪代码的方式和 编程代码。 因此,当你开始看到即使是最简单的 今天的例子,实现这些 相同的图案会复发下周。 因此,伪代码是某种 语言类似 一种编程语言。 和第一个例子中,我们看到的视觉 写下来是这一个。 这只是一个三步计划, 这是目标的数量来计算 宿舍的人 周三上的影片。 但也有一些有趣的方面 这个简单的程序。 这将是反复出现的主题。 因此,对于那些不熟悉 这一点,我们,我们引入了一个变量。 这个房间里的每个人都可能 熟悉与产品中的一个变量 代数的上下文。 但在这里,在编程中,变量 ,一,可以 叫我们想要的东西。 我们一直在使用n作为一个计数器。 不过,我们可以使用字计数器,或 你会看到,大多数的任何短语 你可能会喜欢这么长时间,因为它是 描述性的,但它真的只是一个 贮存容器。 这是一个内存块,一定数量的 位,并且不同的电脑,如何 有多少位, 撰写该变量。 但我们可以把它的值。 到目前为止,我们只把号码。 但我们可以把实际的话。 我们可以把段落。 我们可以把图像 - 什么,真的,我们可以代表 零和的,我们可以把在 这个更高层次的概念 一个变量。 所以有相当平直向前。 线之一。 但我们从移动非常迅速 真正做到行 与该变量的东西。 而第三行中,我们更新N. 递增N.,我们可以写 任何数量的方式。 但也许是最明显的是 只是说,将N等于 N是加1。 所以这是我们的增量。 同时,有一个循环。 而这其中,也可能是 非常直观。 环路仅仅是在程序的东西 一次又一次地发生,有些 样的周期。 而这在这里,关键短语, 在大多数其实很普遍 编程语言,包括 我们在使用过程中会看到。 每当你看到这个词的话,那 通常传达的想法, 循环,周期性的东西, 即将发生。 但是,这是值得注意的一个 其他句法的细节。 的事实,第三行 实际上曾触及的缩进 空格几次是经过深思熟虑的。 因为人类的惯例是这样的, 当你正在做的事情再次 再次,在一个循环中,开始上线两条, 你缩进任何属于 该回路只是作出明确规定 一行三人,而不是,例如, 行,如果有四个或五个 线或五个,是 该循环的一部分。 因此,这个简单的压痕 传达这一基本想法。 因此,我们应用这个算法, 现在,列举几个例子。 而这,也简单的例子 在现实世界中。 但是它要能代表 你将如何去有关测试 拥有日益复杂的程序。 你尝试了一些场景,一些 代表输入,看是否 获得所需的输出。 因此,这个例子中有两个人 坐在宿舍里。 在左边是相同的伪代码。 而且这是一个非常的屏幕快照 在此应用程序的最后一步 算法的输入,那里 两个人在房间里, 还记得,我们通过加强线之一, 和二,三,和两个 三和做 - 年底该算法,我们有 的确算的两个家伙谁是 在房间里。 那么我们尝试另一个例子。 我们说什么,如果有 零房间里的人? 这是代码仍然是正确的吗? 的确是。 它只是恰巧线两条 线,因此,三个或 不会执行。 他们不会发生的事情 因为他们只是如果不适用 还有人在房间为零。 但不是什么大不了的。 线一个初始化的N为零,所以 即使只有一个线 方案实际上最终是有用的, 它仍然得到了正确的答案, 以橙色显示 零在底部。 但后来我们决定, 样一个愚蠢的算法。 这是相当缓慢的。 当然,我可以做二,四, 六,八,十,当 计数的人在一个房间里。 因此,我们调整了算法, 伪代码,可以说,现在在二号线, 每对房间里的人, 进行第三行中,增量 在每次迭代两个。 因此,这将在这里工作 这对在房间里的人。 然而,如果你开始思考 这一点,它并不需要很长时间, 实现好,等待一分钟,这是 要打破,打破 在什么情况下,简单吗? 如果有三个人在房间里, 更普遍的是,当有一个 人们在奇数 室,其中包括。 我们会想念这里,因为那个人 有没有这样的对。 因此,我们迅速解决,而不是 引进什么额外的 编程结构 的伪代码。 所以一个条件,我们叫 ,或者是分支。 它要传达,视觉, 分支的想法,一个岔路口 在那里你可以做到这一点 或者,也许别的东西。 事实上,我们解决这个问题, 加入线4条,说,真的, 结束,如果一个人仍然存在, 然后继续前进,指望他们的特殊。 所以,你的特殊情况下,他们的排序,所以 说话,让我们现在可以处理 一个偶数的人 和奇数号码的人。 现在有任何数目的方式 我们可以表达这一点。 坦率地说,我会一直更 挑剔挑剔的,当它来到我的选择 英国的伪。 但至少精神 的想法转达了。 如果你把这个代码给朋友 谁不是在CS,或者从来没有采取 CS,赔率是他们能想出, 三个房间里的人,如何 指望那些人 这些说明。 而这一切我们真的要实现 伪代码,不知何故 我们如何去规范 代表想法,这样我们就可以 开始做更复杂 东西还在。 所以导致我们的话,今天, 实际代码。 我们开始今天的节目,尽管 在友好的环境。 然后,我们非常迅速地过渡 的更艰涩难懂的语法,而是一个 你将看到的是基本相同的 的想法会看到表现 今天这个其他语言。 它只是去看看 有一点不同。 因此,而不是只是调用此代码,我 更确切的一点 和说,从今以后,当写 程序,你写的源代码。 这是一种像伪代码。 但是,我们会看到它是不是有点松动 当涉及到选择的话, 您使用。 当编程的语言,你必须 使用的单词,短语, 的语法,这其他人 决定代表 特定的语言。 所以pseudocodes给你。 一个实际的编程语言,如 C,因为我们最终会看到, 标准化是由其他人。 那么,我们如何去写 一些源代码? 嗯,我要去 进取,做到这一点。 我要继续前进, 在这里打开一个窗口。 更多关于这个下星期。 但是,这是一种叫做 的CS50家电。 我在我运行一个软件 Mac上,但你可以做同样的事情 在Windows计算机上,是给 我的错觉运行不同 操作系统完全正确 在我的Mac上的一个窗口。 我刚刚满筛选,让你不 实际上,现在的Mac OS。 这是一个操作系统 称为Linux。 这是非常流行的。 这是非常快的。 这是很自由,很 引人注目的,尤其是在 商业世界。 和上向端的 当我们使用Linux颇有几分学期 网页编程与托管 实际的网站和项目。 所以,现在,只知道这是一个桌面 这意味着隐约看 熟悉Windows和Mac OS。 它只是有一些不同的名字 及的事情图标。 但是,这是所谓的CS50 设备的虚拟机, 从下周开始,你们会 内部运行的一个窗口, 你自己的Mac或PC。 今天,我要开拓 最简单的方案。 这就是所谓的gedit的。 而这仅仅是一个图形编辑器。 这是一种像微软 字,但更简单。 这是一种类似文本 编辑或记事本。 这只是一个很简单的程序, 写屏幕上的字。 它只是会发生什么,如果我救 这个程序时创建的文件,我 像C,而不是在一个特殊的扩展 DOC,或XLS,或任何 你熟悉的,其实我可以 甚至使用这个简单的创建程序 文本编辑器。 因此,让我做到这一点。 让我继续前进,并保存此 先向作为HELLO.C。 再次,这个用户界面将 迅速变得熟悉你。 但是现在,我只是打字 在一个文件名。 我打算将它保存到我的约翰 哈佛家里目录。 现在我有这个标签,表示 我的确编辑 一个文件名为hello.c。 所以没有什么太有趣了。 现在,它要 得到相当神秘。 我要放大,只是 所以它的更为明显。 我要开始打字包括 stdio.h中,诠释主,无效的,开放的卷发 撑,一个,两个,三个,四个空格 压痕,印刷F,打印 格式化的东西,报价引文结束, “你好,世界”反斜线,正,靠近 报价,封闭括号,分号, 进入退格键,退格键,退格, 退格,闭花括号 - 我已编程。 所有的权利,所以这是一个超级简单 程序,真正的程序 有人开始编程。 它所做的一切,其复杂性, 被打印出来 屏幕上,你猜是什么? 世界,你好。 但它不是足够的刚 写一个程序。 因此,这是代码。 这是源代码 一个名为c语言。 目前保存在 一个文件名为hello.c。 现在看底部 这里的画面。 此,再次, 今后几个星期。 但是,这就是我们会打电话 一个终端窗口。 这是一个闪烁,黑色 和白色的提示。 这是一个老同学的接口 一台电脑,一般不 使用鼠标或其他 图形元素。 它只是使用你的键盘。 我可以输入命令 这个闪烁提示。 而对于今天的目的,我只是 键入以下 - 使打招呼。 并且该程序,制作,仅仅是一个 程序,在现实世界中这些 天,我们就双击。 但在今天这个接口,我们 要在此提示下键入其名称。 使打招呼字面上去 让我一个程序名为hello。 它要寻找这样做 文件,只需通过 默认情况下,名为hello.c。 这将假设我想要一个C程序 此计算机的性质 配置。 所以,我继续前进,按下回车键。 我看到一些神秘的输出,但 这将成为太 熟悉用不了多久。 这发生在运行一个编译器,更 在某一时刻,被称为锵。 但是现在,我已经有了只是另一个 闪烁提示。 现在,我可以继续键入点 斜线,无趣的原因,我们会 下周回来 - 打招呼。 因此,所有这方面的努力迄今只是 编写简单的程序, 只要我一敲回车,这样做的。 因此,我写我的第一个程序。 所以我故意取笑 这个非常简单的程序 一对夫妇的原因。 一,它是很难兴奋起来 一类,如果 这是比赛结束。 但更重要的是,有一个 很多分心这里。 当您第一次学习程序, 那些你不舒服, 就连我,早在一天,当我第一次 看到这样的事情 - 你可以 图,所有的权利,这 在打印的hello world。 但有这么多的分心。 在屏幕上有这么多的语法 它得到的方式很 简单,否则简单的想法。 所以我们今天要做的是,我们 抛开C和来 回到上周一。 我们要使用图形 编程语言,叫划痕。 这是一种编程语言,我 上周三提到的,这是怎么回事 让我们做同一种东西 但视而不见,今天, 大括号,括号, 分号,所有这些愚蠢的 分心的方式获得, 这第一天,一些基本的,漂亮的 有趣的想法。 为此,我要去 回到我的桌面在这里 给你介绍替代 程序,这是怎么回事,看起来 光这一点东西。 这就是我们要实现该 今天的节目 - 两个难题 件时,互锁 点击,将走向世界,说: 你好世界。 因此,让我们去那里。 所以我要继续前进,并打开一个 网站被称为scratch.mit.edu。 而这将导致我 这个网站在这里。 在前进,我已经登录到这个 网站的第一个问题, 将步行通过 一些步骤。 我要继续前进,然后按一下 这里我从头文件夹。 而这是要告诉我 一些项目,我 实际上预先创建。 而事实证明,此图形 编程语言不仅是怎么回事 让我们计划通过拖放 丢弃这些拼图, 甚至不需要特殊的软件。 这一切都嵌入在浏览器内,所以 你可以做到这一点,在理论上, 您的计算机现在,你们有些人 很可能,甚至无需 软件像CS50家电, 下周来。 所以我要上去右上角 在这里,点击创建。 在某一时刻,我要得到一个空白 屏幕,通过它,我就可以开始 此图形编程 编程环境。 但是这一次,它会是多少, 要简单得多,实际上这样做。 因此,在短短的时刻,当无线网络连接 合作,我们现在有这样的画面。 所以简单的口头之旅,但我敢说, 当然,当你潜入 第一个问题集,你会 发现这一切非常 访问和相当直观。 但是,让我们画一个心理图片 只是一瞬间。 因此,下面这个提示说保存 变化,你从头看到。 这是一个精灵。 这是一个字符。 和他住在我们就这么叫一个阶段, 这个大的白色矩形 ,他可以向上,向下,向左, 正确的,做的,真的, 其他类型的动作。 同时,在中间的该用户的 接口,我们有一大堆 拼图碎片。 你会看到,他们说这样的话, 移动10步,转身15度, 在目标方向上的点。 但有类别 块。 所以,如果我去的外观,你会看到, 还有其他拼图 显然会告诉这CIT 打个招呼,去思考,去展示 自己,隐藏自己。 如果我走下来的声音,它的出现 的方式来播放声音,如喵, 停止所有的声音,发挥了鼓。 所以,长话短说,有一个整体 一堆拼图,让您 告诉猫,或任意数量的 其他字符,该怎么做。 但是,为了使这一切发生 需要开始编程。 和这个大的白盒或灰色的框, 在右手边,这就是 我要拖动 丢弃这些拼图。 这是我的空白文本 窗口当量。 所以我要继续前进,然后按一下 控制在中间。 或者说,让我先 下设活动。 根据事件板凳,你会发现一个 是故意的几件事情 在这样一种方式,在顶部弯曲 他们可能不联锁 顶部的拼图碎片。 那是因为他们丹麦开始 的一个程序,开始一个 脚本,可以这么说。 所以,如果我继续前进,拖动,当绿色 旗点击这里,然后我 希望这个猫说 在第一次的事情。 所以我打算去下 外观面板。 而且我要继续前进,并抓住 打招呼块,然后拖放, 放手所以,它会自动 互锁。 然后通知我 点击上的文字。 我可以覆盖更 具体喜欢,说,你好,世界。 现在我们有我要求的程序 是等价的更 神秘的节目,我实现 在C刚才。 如果我走了过来左侧, 注意到有一个大的停止标志 和一个大的绿色标志。 让我放大清晰。 而当我点击这个绿色标志, 你可能已经猜到这是什么第一 程序现在要做的事情。 过,所以,我们的编程,但 我们实际上不是陷入困境 在一些那些句法, 微小的细节。 但是,让我们尝试一些 更有趣一点。 让我去到这里我的临时文件夹。 而实际上,让我如此让我开了 一个单独的程序,这里只是一个 时刻,最大化这个窗口,打开文件, 我要进入​​今天的 源目录。 一如往常,你会发现,今天和 以后,所有今天的例子 内部的访问 本课程的网站。 而且我要继续前进并挑选 出一点东西不同。 在这里,这一个 我需要一个志愿者。 谁愿意今天台灯? OK,怎么样一点的人 - 你就结束了吗? 下来吧。 现在,你想参加,或 只是说开始伏案工作的台灯吗? 凡妮莎:[听不清]。 DAVID马兰:OK。 优秀的,什么是你的名字吗? 凡妮莎? 大卫。 认识你很高兴。 这样一来和Vanessa的打算, 我采取控制 键盘只是一瞬间。 和我做了什么在这里,只是时间的 的缘故,因为我已经实现了 Wi-Fi的速度有点慢,从无到有, 编程环境,我们 使用,也可以被下载并 您的本地计算机上运行。 所以我做了什么,提前讲座 如果出现这种情况,是我下载 我们一起玩的所有文件 这样,他们可以运行一个小 很快就在这里我的笔记本电脑。 所以这就是为什么现在我看到 在Mac专用接口。 所以,我要继续前进 打开了这一点。 我要继续前进,现在, 全屏窗口。 你会看到,我们可以非常快, 这个学生之一, 你的前辈,从“世界,你好 一个非常更引人注目 应用程序。 因此,这里的指示。 哦,我们有其他的事情之一。 我想这将是有趣的,因为, 通常情况下,我们将拍摄 相机这种方式。 我想这将是有趣,凡妮莎, 我们可以看到世界 通过你的眼睛。 所以,在这里,我们有一些谷歌的玻璃。 [惊讶的喘气] 国宝马兰:我们将只给 远离台灯今天。 [笑] 因此,让我暗示这件事。 所有权利,所以触摸。 OK,玻璃,录像。 所有权利,凡妮莎? 现在,顺便说一句,什么都没有 从头开始做,如果你看一下 小幅上涨的右侧,你会看到 字面的玻璃,你应该 看到一个小矩形窗口。 你会看到所有你的同学 正在拍摄的权利吗? 是。 VANESSA:是的。 DAVID马兰:OK。 所以这就是罚款。 我们将在稍后释放了这组镜头。 现在,把你​​的注意力 这里的画面。 和你的前任所做的是 把一些屏幕上的说明 只需使用一个画图程序。 所以,你会在某一时刻, 按空格键开始。 然后一些拼图 开始向上移动屏幕。 和你想打,只是箭头键 喜欢在真正的DDR,按照 事情排着队 这些箭头。 VANESSA:OK。 DAVID马兰:你玩这个。 VANESSA:是啊。 国宝马兰:所有的权利,蛱蝶, 继续前进,把它拿走。 [MUSIC - 西KAYNE,“做强”] [掌声] DAVID马兰:现在让我们 采取一个步骤。 所以很明显,这是游戏结束。 结局是不是“世界,你好。 但你不必一定做 事情是这样的互动。 你也可以做动画。 因此,例如,你的另一个 接班人在这里提出这个方案, 它讲述了一个故事多 它实现了一个游戏。 所以,让我去进取,不断开拓这里 在我们的程序相同的源代码目录 从今天开始。 这一个电话,让我们开始 ,一个cookie爱情故事。 而不是使这个太学术,但是, 你看这一条,认为 自己的那些简单 我们已经讨论过的编程概念 迄今 - 变量,循环,条件, 你的前任是可能只使用 以实现一些 可视化效果。 你在这里看到的。 所以我给你一个cookie的爱情故事。 [音乐 - GREEN DAY,“假期”] [CRASH] [音乐 - 海龟, “春光乍泄”] 国宝马兰:所有的权利,所以, 我们有一个cookie的爱情故事。 但即使在那里 - [掌声] 国宝马兰:所有的权利,即使在那里, 想想,那些心去 屏幕顶部的底部的 实际上是有一点点 随机性。 事实上,我们可以看到,即使在 最简单的环境中,如 从无到有,在C语言中,您可以生成 随机数,或幻觉 随机数,因此,游戏是一个 比它更有趣 如果你有绝对 硬编码的一切。 在运动中,你看到的,有 有某种响应。 只要姜饼人接触 姜饼的女人,她 似乎搬走。 因此,事实上,你可以实现, 大多数编程语言的概念 的事件,即如果一个人用手触球 另一方面,可以引发一些 的源代码 实际执行。 你可以听等 在屏幕上的东西。 因此,让我们来快速浏览,然后, 我们可以使用的一些积木 实现一些目标。 因此,这里就是我们今后会 调用语句。 的声明恰好是紫色的 从头开始,一点点这样的事情, 但是,这是任意的。 一种说法是只是一块拼图, 更一般地,一个指令,即 告诉计算机做 的东西,一个声明。 所以这里有一个简单的示例。 问好世界。 另一种可能是等待一秒。 所以这一块拼图,这是支持 划痕,我们就会让你 一些字符暂停 秒数。 这,也只是一句话。 这里未来,我们有另一种更 有趣的一个,播放声音喵, 小箭头表示,在从无到有, 这是一个下拉菜单。 因此你可以导入声音。 您可以录制声音和做其他 有趣的事情划痕。 而这,也,虽然在年底 的一天,只是一句话。 但现在让我们引入一个更 有趣的片,称为 布尔表达式。 资本B,得名 一个家伙命名BOOL。 仅仅是一个布尔表达式 一块拼图,或者更普遍的是,一个 片信息 无论是真的还是假的 - 一或为零,“是”或“否”。 因此,它只是其中的一个 两个对立面。 所以这样的一个布尔表达式 世界从头开始看起来像这个蓝色 一块拼图。 它提出一个问题,鼠标 下来,并可以是, 当然,真或假。 因此,这一块拼图从无到有, 好了,你就能够检测,如果 益智如果鼠标,事实上, 按住人类相互作用 你的程序。 这其中的一个更抽象一点, 但是这两个白色盒子 只是数字。 所以,你可以做的事情,就像是这 人数比对方少? 如果是的话,划痕会表现 一种方式或其他。 这是一个小的图形。 如果精灵,如果猫, 例如,实际接触 鼠标指针。 因此,如果小箭头头徘徊 在猫,那么这 一块拼图将评估为true。 这是真实的,在这种情况下,如果 我们会使用这个布尔表达式, 在某一时刻,在一个分支,你可以 做到这一点,或者你可以做到这一点, 就像我们有一个条件, 检查,有一个以上的最后一个人 在房间里? 如果是这样,添加一个。 否则,不要再担心。 所以,也可以是一个布尔表达式 和一起或一起。 所以,你可以结合布尔表达式 并说这必须是真实的 整个事情是真实的。 这里是一个更现实世界的例子。 如果你已经使用了CS50课程做当然 购物,这些复选框 在那里,如果你检查框明年 课程,会说,是的, 只显示我的课程 Q值是4.5或更高。 如果取消,不,不 担心。 或类似的权利,不 我服用的课程冲突, 这是无论是真的还是假的。 这只是一个布尔表达式。 所以这一切的时候,当你使用 网站复选框,你只是 切换相当于一个布尔 表达的开和关。 因此,在你用什么样的形式? 嗯,从无到有,我们会看到在某一时刻 条件, 这个样子。 这就是一种明智的,因为多 像伪代码,我们缩进 U形拼图排序,平均 该U里面,任何 要执行与否,取决于 它在哪里。 因此,如果布尔表达式,然后 无论是内将得到执行。 同时,有一个的if / else块。 所以,如果你想有一个分支去 这样或划痕给我们。 通过这样的逻辑,现在,尽管这 显然是太小了一块拼图 楔它里面的其他东西, 从头拼图,他们 只是要成长。 当你过的东西,拖放 只是,它会成长,以适应不管它 你要怎样做。 因此,我们可以采取两种这些东西, 三路的岔路口,所以 您这样做,否则, 这个其他的东西,只是通过嵌套 在这种方式。 当然,如果你这样做太 多,它开始变得丑陋。 但在这一点上,你实际上 可能不是编程很好。 因此,这将是经常性的 主题,风格。 究竟确实 格式化你的代码吗? 或者,你如何设计你的代码吗? 但是,在未来。 现在我们有循环。 有一个很好的无限循环在Scratch 它的字面意思是 - 做 凡是在这里面,再次, 一遍,又一遍。 你可以更具体的说, 做以下的事情10倍。 您还可以使用变量。 你能想出任何名称, 小降下来,说,给我一个 变量称为n和 它等于某个值。 然后你就可以具备的功能。 但在短短的时刻。 让我回到我的 刮开界面。 并让我继续。 让我们去进取,不断开拓, 比方说,一个例子 - 这是一个有点更有趣。 让我先走了,实际上, 让我自己。 我不需要打开这一个。 让我去,新文件。 我打算去活动。 我要去当绿旗 点击,我要进入声音。 我要拖放这个 一块拼图,播放声音喵。 闩锁在一起。 而现在,如果我点击绿色旗帜 - [MEOW声音] 国宝马兰:可爱。 好了,现在让我们做的东西一点点 更符合逻辑的,只是为了演示 我们就可以了,现在。 我要解锁 从那个家伙。 我打算去控制。 我要抢了条件。 因此,如果做某事。 所以这是它看起来如何。 所以我需要一个布尔表达式。 让我继续说, 让我去运营。 我要稍微做些什么 麦菲,只是踢。 我要在这里说,如果 事情是不到别的东西, 继续前进,做一些事情。 所以,现在,你知道吗,一个随机块。 所以请注意,如果我悬停 事情在这里,将卡在那里。 所以,现在,通知,我开始做 东西已经更具逻辑 有意思的。 如果一个随机数介于1和 10不到,比方说6。 如果我选择六个,基本上 手段,50%以下 概率。 这就像抛硬币。 现在,我可以有条件地做一些事情。 而这东西我要去 要做的就是播放声音。 所以,现在,当我在屏幕上点击 标志,它就像掷硬币。 [MEOW声音] 国宝马兰:这是头 或诸如此类的东西。 让我们再做一次。 [MEOW声音] 再国宝马兰头。 [MEOW声音] 再国宝马兰头。 呼,“确定”。 当时的尾巴。 因此,50%的时间,如果我们这样做 无限长的,我们将得到50%的猫叫声 和50%的沉默。 所以,只是一个基本的建筑 块,让我们做到这一点。 但是,这是一种繁琐的,我有 继续点击该按钮。 因此,我们只需拖动和投掷 所有那些离开。 如果你拖着他们中间, 他们就删除自己。 让我上去控制。 让我去到永远。 而这个时候,我要做的事情 较小烦人的东西。 [笑] DAVID马兰:让我走。 提前做控制。 只是等待一秒 它不是太光栅。 [MEOW声音] DAVID马兰:这是不自然的。 确定。 [MEOW声音] 国宝马兰:通知什么的,真好 关于划痕,对于那些你谁 事先编程的经​​验, 不需要启动和停止。 你不需要进行编译。 你只需要改变它,程序 将动态适应。 因此,这是获得 有趣的小。 但是,让我们把它一步。 让我继续前进,让 摆脱该程序。 [MEOW声音] 国宝马兰:这就是我们将 调用错误从无到有。 他不应该保持声音。 所以我们会告诉他停下来。 所有的权利,所以现在我 要进入 - 我会让麻省理工知道。 在这里我们会去到永远。 而现在,我想要做的事 一遍又一遍。 我要进入​​控制。 ,让我们看看,我要拖 我如果条件存在。 所以,现在发现的逻辑。 当点击绿旗,做 永远的东西,但只做到这一点 的东西,如果这件事是真的。 我会去,让我们 说,传感。 而且我要继续前进,并选择 触摸和拖放那里。 这是一个布尔表达式。 现在,请注意,在该下拉 下拉菜单中,有 一些预定义的值。 所以我可以说,你动 在屏幕的边缘吗? 或者你动鼠标指针, 屏幕上的箭头? 所以我打算这样做。 如果是这样,那么我会去 提前打声喵。 所以,现在我种 一个游戏的开端 - 一个可爱的游戏。 [MEOW声音] 国宝马兰:OK,一个可爱的, 越野车游戏。 让我等待,比方说, 1秒。 现在玩了,通过点击 绿色环保标志。 [MEOW声音] 国宝马兰:所以现在 像抚摸一只猫。 [MEOW声音] 国宝马兰:好的,现在这个 我没有提前作出。 很晚了,它得到种 容易做愚蠢的事情。 因此,让我在这里。 比方说,宠物猫。 现在,让我们打开不要宠物猫。 现在,如果我们玩这个, 你可以猜到,如果你 看着屏幕 - [MEOW声音] 国宝马兰:现在,如果我的宠物猫 [狮子吼] 国宝MALAN:所以实际上并不 在这种情况下,宠物猫。 所以,现在我们只是有一个例子, 分支会在两个方向。 现在让我继续前进, 打开另一个在这里。 这其中,我们的源代码,其中也 代码文件的一天。 所以,让我回去到我的源 目录和进入,让我们的选择 这里,看看这个家伙 什么是不同的。 哇,所有的权利,所以现在越来越 更复杂一点。 之前,我们看到这个家伙做什么, 让我们试着来推断,从程序 在右手边。 现在从头明确允许我们 有多个脚本,多 与一个精灵程序, 具有一个字符,并且,明显地, 他们俩都运行在步调一致。 因为这些节目都开始 点击绿色标志时,这是 暗示了一个更先进的话题, 一些你可能很熟悉, 被称为线程,或 多线程。 原来,长话短说,电脑 今天基本上可以做多 事情一次。 或者,他们可以做一件事的时间, 快,你甚至不会注意到, 它实际上是在做一个 在一个时间的事情。 但现在,让我们假设两个 这些程序去执行 在同一时间。 和通知,它们都有 永远迷惑件。 因此,他们既要保持运行 直到我打了红色的停车标志。 那么,他们怎么办呢? 在左侧,我显然 声明一个变量称为静音。 所以,我没有称之为像 像N.无聊,我把它叫做静音 时间传达的意思。 我将它设置等于零。 让我们来想想,作为虚假或 让我们想想,作为假。 现在,永远做到以下几点。 如果按下键盘的空格键, 那么静音等于零, 然后改变静音等于1。 否则,静音设置为零。 所以从逻辑上讲,这是一个整体,即使 一堆拼图这是 只是说,当我打空格键, 我应该怎么办变量 被称为静音? 改变它从一到零, 或零到一。 这就是全部。 因此,它就像打开电灯开关 开启或关闭和记忆,具有 可变的,我做过。 同时,在右手侧,在 通俗地说,目的是什么 的脚本在右侧? 学生:要播放的海狮声音。 国宝马兰:要发挥海狮声, 如果他不是静音, 该变量的性质。 因此,我们共享状态,可以这么说, 在这两个信息共享 脚本,因为,在这里,我们注意到 永远做以下。 如果处于静音状态是零,因此,如果它没有被静音 - 如果静音是假的,然后播放 这海狮声音。 自己认为,喜喜喜 两秒钟,稍等片刻,然后 再次检查。 因此,如果我们现在在这里的左侧, 这家伙是打 绿色标志, [海狮声音] 国宝马兰:在什么时候 这得到真的很烦人吗? 因为这将只是永远持续下去。 所以有时候,无限循环 可以这么说,是故意的。 但是,在这种情况下,只要我 敲击空格键,他停止。 现在的程序还没有退出。 它仍然运行在这些循环。 但是,如果我再次得到空格键 - [海狮声音] 国宝马兰:他要挑 在那里他离开。 因此,有一个为我们做的方式 一次又一次的东西,但,即 时间,仅有条件。 那么,当我们在做这个静脉 一遍又一遍的东西,让我 到这里另一个这样的例子。 这一次,我们会打电话给数羊。 注意到这家伙做什么。 它实际上更像是一个位 伪代码,我们使用了与上 周三,据此,他设置一些计数器, 认为它是一次N, 为零,他永远做以下。 他说,一个计数器的值 第二,等待一秒钟,然后 改变的一个柜台。 并在这方面,这只是 是指它的增量。 所以他增加1到它。 因此,这是字面上 - 它并不完全是我们认为 作为计数的羊。 这是羊做计数, 永远从零。 因此,我们可以做类似的事情 在那里,头头是道。 但现在让我们尝试清理 一些这些东西。 让我继续前进,现在进入一个简单的 例如,我们的猫只是要 开始咳嗽。 所有的权利,所以在这里我们有咳嗽0 - 计算机科学家开始 从0开始计数。 因此,这猫只是要 咳嗽三次。 和这里的我是如何实现的。 当点击绿旗,咳嗽, 等待,咳嗽等,咳嗽,稍候。 我这样做只是通过拖动 拖放拼图碎片。 或者,如果你开始鼓捣从无到有, 你会看到你其实可以 所以,你可以做复制件 事情变得更加快速拖动 和删除广告nauseum。 但是,我们不是在这里的最佳路径。 因为我怎么做他 咳了第四次吗? 好吧,我可以下去这里进行排序。 我可以复制,然后 粘贴在那里。 我如何让他咳了第五次? 那么,再次复制和粘贴。 或将再次下降。 而且速度非常快,这个程序启动 以获得冗余真的,真的, 真的很长,但真的很无趣。 但是,有一种方法来清理它。 什么是显而易见的方法 清理它? OK,所以我们实际上可以真正去 出来,当你打的空间 酒吧,他咳嗽起来。 但如果我只是想要做的事 重复,记得,我们有 一些控制结构。 让我搬出来的 的方式,去控制。 让我只是做了再说, 例如,三次。 现在让我偷些 这些拼图。 让我捕捉在我们这里。 让我把这些东西拿走干脆。 而现在,我有一个更好的 设计方案。 为什么呢? 如果我想改变的次数 这个猫咳嗽,我要 要做的是改变一个变量或一个值, 而从三个,四个或 五或六。 或者,我可以有条件地做一些事情, 甚至,空间 吧,如果我想。 因此,这是一个普遍的原则。 一旦你开始复制和粘贴代码, 无论是在从无到有,或 C,你正在做的事情 错了,最有可能的。 或者至少,一旦你超过了一些 合理的数字副本 膏,你可能 做错了什么。 但是你知道吗? 我真的不这样。 这是不干净的设计。 我希望有一块拼图称为 因为那时我不会咳嗽 实现这个自己, 老式的方式,通过 说,等待 - 如果他们只是 咳嗽一块拼图。 好吧,其实我可以做到这一点。 让我去下更多的块,单击“ 块,现在我得到这个 这里的窗口。 我要去来调用这个事情咳嗽。 我要继续前进,并单击“确定”。 现在通知,我得到一个新的起点 一块弯曲的顶部。 我会做这个,我 要偷这些块。 我要在这里把它们。 而现在,这三件,我 我要调用实现 函数或过程,或一些 你可能知道它作为一种方法。 字间的细微差别。 但现在,让我们 调用这个函数。 这仅仅是一个新的一块拼图。 现在,它是这样实现的。 但是要注意,划痕已经给了我们一个 物理表示,整体 在这里阻止。 所以,现在,我就可以拖动该在这里, 说,重复三次, 发生了什么事情发生的,现在,我玩的时候 这个脚本,只有一个程序 是在同一时间运行。 这里只有一个时 绿旗点击。 但是,紫块,称为咳嗽 有效地告诉划痕,每 当你看到那一块拼图,其实 执行这些步骤,我 发生在手动执行。 所以这是一种整齐。 但现在,假设我决定了,我不知道 希望这猫只是咳嗽。 我希望他能够 打喷嚏。 那么,我们怎么可能去 实施喷嚏? 好吧,我几乎可以 做同样的事情。 我可以做另一个块。 我可以打电话给这个喷嚏,单击“确定”。 然后,在这里我居然可以 已经让我重复这一点 - 还有就是你应该感到像 你可能不会做的东西 最好的办法。 我可以这样说: ,一秒钟achoo。 等待一秒钟。 现在我有一个新的块称为喷嚏。 事实上,它就在那里。 但是,这也应该开始感受到 - 也许不是第一个星期的类,但 由第二 - 有点多余。 显然,在这里有一些冗余。 所以我建议,而不是我们 细化定义如下。 让我上去我的文件“菜单。 我救不了这个版本。 我要进入​​一个 我这里预制文件。 而且我要继续前进 并开辟咳嗽2。 哎呀,那是咳嗽2。 让我去进取,不断开拓咳嗽3, 这是源代码目录。 咳嗽3和发现 - 哦,我告诉 故事以错误的顺序。 让我从这个故事中恢复过来。 我的意思是告诉的故事 咳嗽4结束 - 它是。 那么如果我,而不是定义 叫一个更大的一块拼图 定义,说字n倍。 打喷嚏是正义的,显然, 划痕ACHOO。 所以,我们对此表示为一个单词, 只是因为这是 程序的约束。 咳嗽[咳嗽,但咳嗽, C-O-U-G-H。所以这只是两个 不同的单词,本质上,做 同样的事情。 所以其实我可以做一个 像这样的新块。 我没有使用此菜单选项。 但是,当你点击座 你可以选择一些选项。 你可以说,此块实际上 需要一定的投入,否则 参数或参数,所以被称为 您可以修改的行为 你的块。 所以我做了什么刚才 我称此块说。 然后我说,它需要 字符串输入。 现在注意到,默认情况下, 它说串1。 字符串就是一个字,或 短语,我们的目的。 但我只是把一些 占位符文本,就像在 网站,当你看到的用户名,或 密码,然后它消失时, 你开始打字。 这一切是。 现在我要去 添加一个数字输入。 我要调用这个N - 但是这是相当武断的。 然后只是一个标签,只是为了让 此块多一点自我 解释 - 倍,这是我刚刚做了什么。 而最终的结果是,我得到 像这样的一个块。 现在注意,我使用 重复块。 但是,而非硬编码三,我 拖放中n,所以我 可以参数化的功能。 我可以让这个功能做一些事情 基于不同数量的次 该值。 注意到,说,这是我做了什么 在这里,如果我拖字,我可以说不是一个 硬编码字,但无论 是通过在一秒钟。 同时,我怎么重新实现 咳嗽吗? 我不是咳嗽定义为 说咳嗽的n倍。 因此,在短期,我要通过这 很快,但其基本思路是尽快 当你开始看到在你的程序中 ,等待一分钟,我已经做了 挺喜欢这个东西之前, 我可以提出一些共同 功能吗? 我可以分解我在做什么 到一些基本的想法? 这就是我们在这里做什么。 而且我已经堆放这些东西,在视觉上, 顶部的一个 因为它是证明这个想法 二进制,开始为ASCII, 图形程序,排序 分层日益复杂的想法 顶部的一个。 同样的想法在这里。 我从头开始,实施 咳嗽,然后实现咳嗽 真的只是说着什么。 所以让我代替实施 说什么概念。 而最重要的是,我可以实现 打喷嚏或咳嗽? 我们可以做更多这样的 变种依旧。 因此,从这个基本原则, 我们可以开始做 日益复杂的程序。 让我开了这一个。 事实上,我们可以有多个精灵 一次在屏幕上交互。 如果我去到我的源目录 抢所谓的主题之一,​​回想一下, 线程仅仅是真正的能力 两个脚本运行并排 侧在同一时间。 注意,现在,有两个鸟精灵 一个的猫子画面,两者都具有 自己的脚本。 所以通知,当我点击 猫,我得到这些脚本。 当我点击鸟, 我得到这些脚本。 所以这些家伙有 他自己的节目。 现在,当我点击绿色旗帜,请注意 ,这是什么节目 有猫,令人难以置信 慢慢地,追鸟。 但猫的优势有 被编程以这样一种方式 无论在哪里的鸟 是,猫走向他。 我们可以玩这个游戏要快得多。 所以,如果我是猫,我注意到 使用,让我们说移动一个步骤。 让他感动的五个步骤 一时间,所以五个点的时间。 让我单击发挥。 [狮子吼] 国宝马兰:好的,现在我们可以 真正给猫的优势。 10个步骤的时间。 [狮子吼] 国宝马兰:好的,非常迅速, 它变得有点优势 猫。 但我会挥挥手 的一些细节。 但原因,该路径是 开始一点点的不同,每次 是,我做一点随机性。 实际上,我指着猫在 基于不同的方向在哪里 想他开始,每次 游戏或动画,是一个 有点不同。 现在,让我给你介绍一个 其他构造。 因此,在这种情况下,我们不得不功能。 也有将是一块拼图 被称为一个数组,或者一个列表, 允许你存储多个 里面一个变量的值。 我们看到线程,现在 有活动。 因此,这里是一个事件使用 这两个家伙在这里。 如果我打开文件名为活动 从今天的例子中,我们将 看到一个程序,看起来 有点像这样。 现在发现这家伙 - 因此注意到我有蓝色 布偶点击 - 他只执行以下操作。 他没有之一 绿旗拼图。 他有一个当我收到事件 - 所以一些任意的单词。 我只是打出来的事件 - 他会说,波罗, 两秒钟。 因此,那些你熟悉 这个游戏可能知道 这是怎么回事。 如果我现在点击橙色布偶, 他的计划做这件事。 永远,如果键盘空格键 抑制,他会说,马可, 两秒钟,在屏幕上。 但他也将使用这个票友 阻止称为广播。 他打算广播报价 引文结束,“事件”。 同时,蓝色的家伙,召回, 听的报价引文结束,“事件。” 不知何故,现在,我们可以有 两个精灵交互。 当我们到达web编程, 后来在长期,同样 有利于有你的网站 做一些响应, 例如,敲击键盘的声音。 因此,让我继续前进, 按空格。 橙色的家伙马尔科说。 蓝家伙说马球。 如果我这样做,再次橙家伙说 马可,蓝色的家伙说,马球。 所以,让我们进一步采取这一步。 这一次,我们就去,很可能 这里只是一个几分钟。 我们有 - 台灯,下来吧。 你是对的就完了。 OK,你都可以上来了。 我们为大家的台灯。 来吧。 我不知道,如果我们能保持 这是荒谬的插科打诨起来 整个学期,虽然。 好吧,下来吧。 而在此之前,我们有 拉起下面的例子,只是为了 现在加快东西,这样我们 从另一个的体现 用你的前身 相同的基本构建块。 你叫什么名字? 约翰:约翰。 国宝马兰:约翰。 我很高兴你。 然后呢? SETZ:Setz的。 国宝马兰:Setz的,对我很好。 约翰,如果你愿意来 先上去,这是一个老 学校游戏名为青蛙。 对于这一点,您可以使用键盘。 其目标是要跨越 街道和水。 [FROGGER音乐播放声音] 国宝马兰:对不起,没有 台灯今天为你。 所有权利,SETZ,你会 喜欢来? 好吧,让我们再做一次。 SETZ:我使用的箭头? 国宝马兰:箭头键。 上,下,左,右。 [FROGGER音乐播放声音] 国宝马兰:我们会打电话给他们 安慰奖今天, 然后,做得非常好。 这里,你,约翰和SETZ,。 恭喜你,所有的权利。 如此反复,游戏,这个游戏 想想这是怎么回事? 其中,显然是一个有很多运动。 但我们已经看到,猫和 鸟的例子,你怎么可以使 只是将一些运动错觉 数一次又一次像素。 如果你有一个永远的块, 你可以有这些 汽车做下去。 我们有能力 有一定的随机性。 因此,这个游戏并不需要成为 完全一样的,每次。 这些日志,那些汽车,可以开始 稍微不同的时间,使 游戏本身更有趣 每场比赛的发挥。 与此同时,我们看到的能力 听空格键。 但显然,在从无到有,你可以也 听向上,下,左,右, 真的键盘上的任意键。 而且你还可以做一些其他的事情。 让我继续前进,回去 网络版。 让我进入我们的集合 这里的例子。 而根据我的工作室,视频 从本质上讲,是一个文件夹 scratch.mit.edu。 我们有网页版本的 所有这些项目。 ,让我们看看,如果我能得到我 计算机合作。 这是我们的一个朋友写的 在麻省理工学院,被称为移动的蝴蝶。 并且,一旦这打开了,这是 要使用更多的 我的电脑的硬件。 从头恰好是实施 用Flash。 Flash可以谈谈你的摄像头, 如果你有一个。 所以,如果我继续和全屏 在这里,点击绿色旗帜,通知 Flash的安全消息 是说,你要 允许使用我的摄像头? 通常情况下,你应该 可能会说“拒绝”。 但是,在这种情况下,我们会说允许。 然后我会告诉铬 允许这一点。 而现在,在短短的时刻, 你看我,是的,我的。 如果我的手 - 我有不动我 头在同一时间。 还有一个反射 在屏幕上。 来吧,我们去那里 - 你可以将它在屏幕上,因为 也有拼图碎片 - 哦,你 知道它是什么,那是因为你还 看到我身后的投影屏幕。 因此,我们有一点点的无限 对那里发生的事情。 所有权利,所以我会打下来。 我们去那里。 所以也有一块拼图, 说,当你看到运动下方 精灵之一,你可以把它去 向上,下,左,右等。 因此,我们有位虚拟现实 在这里,所有内 我的浏览器,只是局限 我这里使用的网络摄像头。 那么什么是在地平线上。 第一个问题集,你会看到, 或网站将稍后去网上 今晚cs50.net,是相当 多少将是开放式的。 并实施划痕项目 你的兴趣,游戏, 互动,艺术的东西, 挑战自己使用任意数量 这些拼图。 并且它可以是交互的 以这种方式。 或者,它可以更多的东西故意 讲一个故事。 事实上,这就是我们最终会关闭 今天,随着最后一个例子。 让我从头进入本地。 让我继续打开这个,玩 最后一个写一个程序 你的前任,即 一个在这里。 好,这一个提高音量。 [音乐播放] 旁白:在未来CS50,大卫 邀请志愿者在舞台上。 国宝马兰:对于本演示, 我们将需要一个志愿者。 你想下来吧? 你叫什么名字? 移动。