[音乐播放] 马兰大卫:好吧,这是CS50 这是一周的结束。 所以,我想介绍一下我的前 建议者,安洛达夫,谁不仅使 iPhone 5的手段,以及这 讲台上,他也使汽车。 ANSEL DUFF:怎么样了,人呢? 我只是想告诉你一个小 关于SAE方程式,这一点我 我的船长。 这是麻省理工学院的团队。 我只是想告诉你 人约一点点 并希望产生一些兴趣。 所以,我只想通过运行 我们的团队对夫妇的事情。 所以我们完全 学生而言,其中的所有 成员设计,模拟, 测试和制造商的一个子系统 的汽车。 我们有自己的加工车间 和车库,以及N52--或不好意思, N51--这是同一栋大楼 作为麻省理工学院的科学博物馆。 我们是人民 那开车的人。 有一个国家的竞争 在夏季的开始, 然后有小枪战 比赛贯穿全年。 然后我们做驾驶培训 天获得新成员熟悉。 我们构建的日子上 周六上午11时至下午8时。 午餐和晚餐都照顾 的,从贝图西的与豆城 分别。 我们有一个星期的会议和 研讨会上,这是课程学分。 这是新的,因为这学期,和 这也将是下个学期, 这样你就可以跨章为。 然后我们有设计,店铺, 而在本周的CAD天, 而成员们将各自 CAD零件,订单库存等等。 所以对于电 在工程队 我们有我们的牵引力, 高电压系统, 它运行在标称 300伏,它包括 马达,马达控制器, 和电池组。 然后我们有一个低 电压系统,它运行 在12伏电压,它包括 控制,CAN节点,脑 框,仪表板。 至于CS变,我们做 有网站维护 我们需要做的事件,成员 的变化,新的图片和宣传材料。 然后我们有一个控制码 汽车为我们的牵引力控制系统,发射 控制,仪表板控制,转矩矢量, 和再生制动系统,其 在MATLAB中运行一般, Simulink和LabVIEW中。 告诉你关于这款车一点点。 因此,它是约500磅。 这是仅限于85千瓦规则。 它有2 EMRAX 207汽车在 后面,每一个后轮。 它具有定制电池组 从棱A123囊细胞, 共计300伏, 5.6千瓦小时。 而且它是直接驱动器 2.64比1的传动比。 这里有一些图片,我们 注意到它的竞争力。 这里的背,鼻锥, 这里是电机, 那些大黑盘 下方等男装Manus的。 这里有一个幻灯片,我拉 我们的比赛计划。 这是我们的车刚比作 几个商购的汽车, 像KTM XBOW,林依晨 原子,Caterha M 7-280。 如果你熟悉价格,功耗 拉的重量,美元,每匹马力, 元元的扭矩,而我们的车 打击他们都露出水面。 如果您有任何问题, 记下这个电子邮件地址。 拍我们fsae@mit.edu的电子邮件。 我们很高兴谈论 任何你愿意的话。 哈佛的学生有样 对团队的少数。 如果您有任何问题, 那请不要拍我们的电子邮件, 快乐的交谈,我要 头回了大卫。 谢谢。 我很感激​​,伙计们。 [掌声] 大卫马兰:安塞尔整个夏天 我们在这里CS50工作在校园 今年夏天。 和除了工作 之类的二进制灯泡, 他居然真的打开了我们 eyes--和矿particular-- 以真正的交叉点 没有硬件和软件都可以。 其实有很多的事情,他只是 参观您完成最终是 首先在软件中创建, 然后最终制造 在硬件的真实世界。 所以,如果你有兴趣 探索那个路口, 或许占用该组。 现在,同时,那些你 谁是技术爱好者, 和苹果产品 尤其知道有 一对夫妇的 昨日公布的。 但是,我们认为我们会展示 你一说出来 前几天的 你可能没见过。 约根EGHAMMER:你知道吗, 曾经在一段时间的东西 走来了 改变了我们的生活方式。 一个设备那么简单,直观 使用感觉差不多熟悉了。 在介绍2015年宜家目录。 这不是一个数字图书或 一本电子书,这是一本电子书。 要注意的第一件事情是没有 电缆,甚至没有电源线。 2015年宜家目录 来完全充电, 而电池的寿命是永恒的。 该接口是7.5×8英寸, 但可以8英寸扩大到15。 导航是基于触觉触摸 技术,你可以真正感受到。 内容预装 通过328高清页面 鼓舞人心的家居理念。 开始浏览, 只需触摸和拖动。 从右向左前进, 从左向右向后移动。 请注意别的东西吗? 这是正确的。 没有滞后。 每个晶莹剔透页 负载瞬间, 无论你如何快速滚动。 如果你想获得快速浏览, 只是握在手心, 而只用你的拇指, 速浏览的内容。 如果你发现一些你想要保存 在以后,你可以简单地将它设为书签。 即使你关闭应用程序, 您可以轻松地再次找到书签。 太神奇了。 [笑] [掌声] 所以这给我们带来了 一周的结束。 几项通知了。 所以切片是现在进行时。 去这个网址的某个时候在这里 从现在到周五中午 实际指定是否 在那些不那么舒服,更 舒适,或介于两者之间。 这通常是其中的一个 东西种,你才知道。 而事实上,那些你们谁少 舒适可能知道的不多, 那些你们谁更 舒适的了解一样多, 并再次,如果你不是很确定这 这些桶你落入你 可能介于两者之间。 但请放心,你可以交换 之后的几个星期,如果需要的话。 同时,针对未来一周 我们不开始本身的部分, 但超级部分,这 是开放给所有的学生。 在本星期日在一个位置 可以在课程网站上公布 我们将有一个用于 那些不太舒服, 以及一个用于 那些更舒适。 而那些介于两者之间 可以选择这两个的, 或两者,如果你愿意,坐式的。 而这些重点 将最终的C, 我们将继续我们的 今天的谈话。 习题集0同时是 希望在你的手中。 正式由于明天 周四中午。 除非你在现金1 你迟到5天, 这将使其 直到周五中午。 习题集1同时将 张贴在课程网站。 这将是我们第一次 作为进军一类为C。 而且问题设置规范将引导您 通过大量的哪些力学 我们开始在周一谈到, 我们将继续在谈论今天。 C,Linux上,CS50 设备,所有这些 将等待你的规范。 办公时间同时都在进步, 在大学生食堂。 前往这个网址在这里看到的 安排今晚和明天 如果您想以分享。 问题同时,让你 有机会提问 异步,7天24小时,实现你 不限于节和办公室 小时,而此工具 在这里,CS50讨论那个网址 将过程的在线 公告板软件,通过它 你可以问的问题 同学们也工作人员。 所以请记住,资源也是如此。 同时传统 启动这个星期五。 正如你可能已经从瞥见 上周三的预告片视频, 我们有一个传统,最 期间逢星期五 服用一些50名学生和 工作人员到当地餐厅叫 火与冰,在此我们 通常加入了一些校友 还是从行业的朋友 普遍向往 使一大类觉得小。 所以这是一个完全偶然的午餐。 一堆我们的工作人员 特别是,将发挥音乐椅 并与学生讨论聊天 50,50以外的生活, 生活在未来,现实世界中, 我说的是就业机会 与朋友在工业。 所以,如果你想加入我们的行列 这个星期五,前往该网址在这里。 空间是有限的,但我们会做到这一点 recurringly整个学期。 前往那里cs50.harvard.edu/rsvp。 如果你没有得到的 这个时候,不用担心。 我们将再次这样做 未来几周内为好。 因此,这是图像 我们上周画, 你可能已经被 涉足迄今。 但是,让我们尝试到现在连本 什么我们今天做的 从不间断。 我有一个志愿者? 好吧,或者几个。 如何这里的 最后,在蓝色衬衫。 拜托了,你叫什么名字? ALANA:阿拉纳。 大卫马兰:阿拉纳。 所以阿拉纳,对于只是一个 moment--很高兴认识你 - 将要扮演的角色 这个功能在这里。 我们已经紫块 被称为迄今为止功能。 所以我要去 未来这里提供阿拉纳 是一个小名牌,使 清楚你玩什么样的作用。 所以,你应该发言权块。 如果你想继续前进,把那上。 而我们要 保持这个超级简单。 如果目标在眼前简直是 现在实行与阿拉纳, 这个所谓的说嵌段, 这里是它如何去上班。 íhave--姑且称之为 参数或参数, 它是真正的纸只是一张白纸。 而且它的白色种是让人联想到 白框到您 可以写文字。 同时我会去这里。 我要继续前进, 写H-E-L-L-O逗号世界。 而现在我作为说程序员,不要 根本不知道怎么说的东西。 我能想出的话, 但我不一定 知道如何表达自己 口头或在屏幕上。 所以,我什么都 要做的就是把这块 的功能,其input-- 或说法,因为我们会打电话给它, 我写这片paper--的 我要去外包了。 的确是这样的角色 在编程语言的功能 可以玩。 类似的发言权 块可以外包 的人谁真正知道 她或他在说什么。 所以,如果你跳过 这里只是一瞬间, 我将这个输入传递到 阿拉纳,并要求你说的这个输入。 ALANA:你好,世界。 大卫马兰:就是这样。 所以,有一个功能。 现在,我们可以把它多一点, 我们可以向前迈进了一步这里。 因为这显然是给人留下深刻印象。 现在让我们将它转​​换为 一些更复杂。 因此,这当然是我们的C版本。 所以,现在如果你想利用这 一关,这个名字标签脱落, 并让我们有你换上一个新的名字。 但是从根本上你 扮演相同的角色, 它只是恰巧 可现在叫的printf。 这个故事,当然, 要be--可能 正如underwhelming--是 将是下面的内容。 您现在所在的函数printf。 我的来电,或 程序员,谁愿意 站上的台肩 以往人们喜欢你, 谁已经想出如何 实际上写的东西了。 所以此时, 而不是说出来,让我们 实际使用我们的屏幕在这里。 所以,如果你想一步 在这里,我要 再此为通 输入我的printf的朋友。 如果你能继续前进, 打印在屏幕上, 只需用你的画 手指在黑色的屏幕上。 优秀的。 好吧,所以很多悬念的 怎么说是要发挥出来。 所以,现在让我们东西1 最后的缺口,如果我们可以,如下所示。 因此,这是一个C程序 正如我们上次讲的。 而这只是做你做了什么,它 打印出的画面,你好,世界。 尽管有明显很多 喧宾夺主的东西在那里。 但是,让我们拿东西了一个缺口, 推出这个版本,这回忆 是第三个版本 我们结束了最后一次。 现在有明确 两种用途的printf。 有2呼叫阿拉纳 在这种情况下为printf的, 但也有一个电话 另一个功能。 那是什么功能的清楚一点吗? GetString的。 我们可以得到一个更多的志愿者? 好了,上来吧。 你叫什么名字? 哈维尔:哈维尔。 大卫马兰:哈维尔,上来吧。 所以哈维尔的作用是在 这张纸。 其中我要笼统称S。 现在,这是一个变量,它的 字符串类型,如暗示 在中间有在第二行。 我想请你去给我拿一个字符串。 具体低着头乐团 节,让我一个人的名字, 回来用一个变量 包含该值。 它可以是你想要的人。 开始了。 好吧,哈维尔是 写下名字。 好吧。 大家可以猜到是如何 这是要发挥出来。 我们也许操劳 点什么 功能是干什么的,但 不过非常感谢你。 所以,哈维尔已经返回此字符串 在这里,这,不能完全看到, 乔纳森是字符串 我们已经得到了。 所以,现在就是我究竟要 提供给阿拉纳虽然 是的东西有点不同。 因为在这个版本的 节目中,首先有你的名字。 所以第一个参数 我需要提供阿拉纳 与将是 从字面上说出你的名字。 好吧,让这么简单 我会交给这个给你。 当我写上去的 下一个参数,如果你 要继续写这 在黑板上,让我们继续 而做最后的例子来说明,使 明确什么是最终得到的情况发生。 所以说出你的名字, 写出它朝着顶端 如果你不介意的话,只是让 我们有房间一第二线路。 因为过去的事情我要去 现在为您提供的不是一个, 但是两张纸。 好吧。 H-E-L-L-O逗号,然后空一行。 所以我很担心现在出手阿拉纳 是的东西有点不同。 不仅是她得到这个, 其中填空表示 这percent--究竟是什么 占位符,我们一直在使用? 是啊,所以%的第 同时,我要通过 她在第二个参数,其中 正是哈维尔 从乔纳森检索。 所以让我给你这两个。 如果你想,去吧 和打印的效果。 什么是最终发生 现在的问题是,阿拉纳再次 正在播放的printf的作用。 哈维尔被打 GetString的作用。 所以这将是你的纪念品。 并最终发生了什么,尽管 这hello--是的继续和逗号。 ALANA:我收到这事还是没有呢? 马兰大卫:是的,你 在一次接待了他们两个。 这样的想法是,你 现在可以翻转页面 处理所述第二 的这两个输入。 因此,这是唯一的锤家 指出的是,尽管阿拉纳执行 这个绿线位置,然后 哈维尔做这一块我们 并返回我的东西 我们会打电话给S,但它是真的 只是那件他自己的论文。 现在阿拉纳已经这样做了第三行。 而且即使这一切看起来 如此令人难以置信的神秘也许 乍一看,还真 就是这么简单。 周围路过的投入, 得到的输出,无论是 以物理交回的东西, 或看到这样的副作用。 视觉上的东西 写在屏幕上。 因此,让我们继续前进, 感谢阿拉纳和哈维尔, 是谁到这里,为 加入我们在这里。 [掌声] 所以,现在让我们习以为常的是如何 简单的所有的可能是。 让我们继续来实际 做一些实际的代码。 所以,在这里,屏幕上是截图 的所谓CS50器具。 如果你不得不在作为 下午2时00分在周三下午, 解释一些朋友 什么CS50器具, 你怎么会在一个句子里定义它? 任何一个句子? 是吗? 学生:这就像一个程序 这使得每个人的电脑 用相同的系统上运行。 大卫马兰:好! 这是一个程序,使每个人的 计算机具有相同的系统上运行。 这有点自己的 操作副本 系统,恰好 被称为Ubuntu Linux操作系统。 它有效的内部运行 在自己的Mac或PC的一个窗口, 使这样右边出了大门 在1个星期,这里的每个人在课堂上 可以访问相同的工具, 相同的结构, 而且也没有学习曲线的具体 到Mac或特定的电脑。 现在我们打开了,在CS50内 家电在周一,这个程序在这里。 它发生在被称为gedit的。 但是,这真的只是 图形编辑器。 这有点像记事本或文本 分别编辑在Windows或Mac OS。 我建议有真 三个重要环节进行屏幕。 顶面是你 会写你的代码。 而这也正是我们花了很多的我们 三个例子在周一的演讲。 在底部,我们叫什么, 这个黑色的窗口,是吗? 学生:编译器? 大卫马兰:编译我们 通过该窗口的方式进行访问。 但更普遍。 是的,这只是一个终端窗口。 这是一个古老的术语,只是 本质上描述了一个闪烁 提示,多年前曾经是上 其中的一个大的CRT型的。 但现在它的排序 的虚拟软件。 与终端窗口 让我们输入命令。 它排序的简化版本 用户界面或UI的。 这不是一个图形 用户界面或图形用户界面, 它是一个基于文本的界面 或命令行界面。 而事实上这就是最终 我能写一些代码。 有一次,我写了,虽然一些代码, 记得,我用这个命令。 并且,因为它的名字 种暗示,这 让我做一个 程序名为Hello。 但什么是它真正在做什么? 以及化妆是把我的 输入,我的源代码, 并且将其转换到什么,最后? 目标代码。 代码和目标代码只是一个花哨 说的零和一的方式。 再一次,我希望 来运行的目标代码, 有一次我想通过输入这些 零和一进我的电脑 脑,所谓CPU的 或中央处理单元, 我不得不运行程序。 但它不是在星期一相当简单 像刚才双击的一些图标。 而不是什么都我来 做的,以运行一个程序? 什么是第二个命令? 我听到一个小斜线? 是的,是吗? 学生:点和斜线 该程序的名称。 马兰大卫:没错。 点斜线和程序的名称。 现在没有什么意思? 好点仅仅是一个神秘的方式 的话说当前目录。 不管文件夹,你是在为 作为参考,表示为圆点。 斜线正是你所看到的 在Mac OS和Windows多年, 这是一个目录之间的分隔符 或文件夹的一些名称的其余部分。 在Windows中碰巧去 向后,在Linux和Mac 操作系统它发生向前去。 但是,这仅仅是分隔符,所以它的 只是一个无趣的语法细节。 当然,多汁的部分是 节目的名称,您好。 而这对于我们把创造的东西。 它输出的文件,对我们来说。 但是,我们怎么会到这一点? 现在让我们来问问 的问题,什么是真正的 会在这里,至少在 考虑到一些这方面的语法呢? 因此,在一个句子或左右, 我们是如何解释的距离 这第一行的 以绿色突出显示? 那是什么行头做, 相对于我的程序? 是吗? 学生:[听不清]。 大卫马兰:再说一遍吗? 学生:包括和下载 过去的功能[听不清]。 大卫马兰:好。 其中,我就不说了 下载,但让我们说 包括功能,人们 都写在了过去。 而这些功能的实现 某处在我的电脑。 有人写了一个文件 多年前,并且该文件 是CS50内某处 家电,或在我的硬盘驱动器 更普遍。 因此该线基本上说 去找到那个文件,标准I / O点 小时,复制和粘贴的内容 在这里我文件顶部 这样我就不必 做手工自己。 而且里面最丰厚的部分中 我们称这个文件是什么功能? 什么功能并说被宣布 或在标准I / O点ħ提到 最有可能的? printf的,对不对? 我们没有写上的printf 周一,它只是存在。 就像阿拉纳刚 站在舞台上,她只是 存在并且知道如何绘制 屏幕上的对象, 所以不会printf的多年存在。 所以这是我们如何访问它。 现在,如果我们在这里提出, 主要是类似的,我们 在拼图说 所谓当绿旗点击 在刮的世界。 它的只是排序 在人类的默认名称 决定将代表 默认入口点的程序。 的程序代码的组块 那被先执行。 同时这些花括号 种等的弯曲形状 对很多这些黄色划痕件。 他们种封装的整体 一串指令在一起。 因此,它只是一种结合在一起 一些相关的功能。 当然printf的是一个函数, 打印屏幕,因为我们只是做了。 那么这些括号? 即使你,你会怎么define-- 从未编程之前,但只是基于 现在越来越 希望直觉,什么 正在括号做我们在这里? 或者什么是他们周围? 是吗? 学生:他们在说什么 你要打印带的printf。 马兰大卫:是啊,他们是怎么说的 你要打印带的printf。 或者更一般地,它们是 周围的输入的功能。 所以你几乎可以认为 这些括号 作为是像金属 夹在这剪贴板。 这是什么样的控股,这是什么 将要被用于提供参数 入功能,其中在 这种情况被称为printf的。 所以一般几乎任何 一次,我们调用一个函数, 我们将看到一对括号。 也许有东西在里面, 像现在,也许什么也没有。 但是,这是在那里你可以把 输入或所谓的参数 一个函数。 这里有一个这样的说法。 我已经强调了一切 引号之间, 因为事实证明, 在这种语言称为 C,当你想表示一个 string--这是一个单词或短语 甚至paragraph--你必须 用双引号括起来。 不是单引号,双引号。 而这正是我在这里所做的。 同时有一个时髦的 象征向着结束。 反斜杠ñ。 没有说什么代表? 是吗? 学生:一个新行。 大卫马兰:新行。 对了,你不 一般敲回车时 你想要的程序 吐出一个新行。 而你明确告诉它 这个公认的晦涩作品 语法,反斜线N,即 你想要一个新的生产线去那里。 最后的分号。 我们真的不说话 太多关于这一点, 而到目前为止,这将是一些祸根 你的存在对于第一个问题的 设置,当你只是没有意识到 你忘了什么是愚蠢的 作为一个分号。 一般把它 会解决这个问题。 但是,什么是它做的 对我们来说,你会说什么? 学生:[听不清]。 大卫马兰:对不起? 学生:[听不清]。 大卫马兰:整理一份声明。 这有点像在期限 英语句子的末尾, 而在这门语言 C中,它的结尾的语句。 编程的指令 你刚才想说的代码, 我做这个。 现在发现这是这里唯一的一个。 所以,你不想得到 把分号的习惯 以后每隔封闭括号。 比如有没有 接下来作废,我们将 回来以后 什么无效的手段。 但在这种情况下,你的printf是 功能,或正在使用的声明, 所以我们希望有 总站在它的尽头。 而且我特意挑选的。和 坦率地说了很多,如C,C + +语言, 的Java,JavaScript和任何数量的 其他的语言有很多这样的 之类的语法细节。 这当然如果你是新来 节目能真正你绊倒。 而且你会记住我 也就是说,有些人会 有这方面的经验 在办公时间或延迟 在晚上工作的一些对集,其中 你那该死的程序就是不编译, 它不跑,你有 不知道什么是错的, 它似乎完全 逻辑上正确的给你。 而且那是因为你忘了 像打 分号一些行的末尾。 但这些都是各种各样的事情你 要立即学会看。 而事实上这些都是事 该CA的和TF的有 那种被训练来看看 速度远远超过你。 因此,这只是说,因为你 潜入问题集1特别是, 不要沮丧了这个东西。 一旦那种你适应 走向世界,你 开始看到的东西,你可能不 看第一眼第一周。 因此,源代码是类似的东西。 我们想通过成 所谓的编译器。 和编译器 我们所说的输出提供 称为目标代码,该 所谓的零和一。 但是从那里,是什么给我们? 那么它给了我们这些模式。 并再次在您的计算机, 英特尔内部, 理解这些模式 的零和一。 有时格局 表示实际的十进制数 正如我们上周所看到的,有时 它代表的一封信 就像我们上周看到的,有时 它代表一个指令, 像打印的东西到屏幕上。 所以printf进行instance-- 而是让我退。 我们已经采取理所当然 那些零和一的 通过这个命令彩妆生产。 但要是不是一个编译器。 使是没有的事,中间 该公司生产的零和一。 宁可仅仅是一个很方便的 命名的程序,其目的在生活中 本质上是要弄清楚 如何编译你的程序。 我们用它在这些 第一个星期,因为它只是 为我们节省了很多麻烦。 但是什么使真 当你编译你好做, 是,正如我们上次讲的,它是 期待您的硬盘驱动器上 或当前文件夹中, 所谓的文件是什么,显然? HELLO.C,对不对? 这只是一种一项公约。 这是任意的,但 这就是事物的本质。 做,如果你只是指定名称 一个并不存在的项目, 它会查找源代码 在文件中,默认情况下是指的hello.c。 如果找到了,太棒了。 这将转换的源 代码转换成你的目标代码。 但每次我按Enter 运行make招呼后, 你还记得看到最后一次 相当长的和神秘的序列 其他白色字母和 字符在屏幕上? 嗯,这是实际的指令, 实际的编译器,这是在运行。 因此,实际的编译器,我们将使用最 本学期是一种叫做铛。 你们有些人可能已经使用 Visual Studio中之前,还是海湾合作委员会, 或任何其他的编译器。 我们将用铿锵。 和铛使我们能够真正转换 该源代码,目标代码。 这是什么其实 在实践中意味着? 那么,让我进入一个 我的文件夹从最后一次。 里面的CS50器具。 让我继续前进,创造这个 相同的文件,包括标准的I / O点小时。 INT主要作废。 我们会回来的将来 什么诠释方式,什么无效的方法。 但现在让我们做 你好世界反斜线N, 就像我们做在黑板上。 让我保存这个文件名为hello.c的。 而现在,如果我想要编译该 ícould--让我放大in--运行 让你好进入。 而这又是 这很神秘的线。 但现在至少有一个字 可能跳出你。 铛就是我们之前看到的那条线。 现在有很多其他的东西坦白 我们会挥舞手上的今天。 但是有几个子集, 在这几个字符 这是感兴趣的。 不过,我要继续前进,做到这一点。 我将第一次运行 你好,只是为了证明 这是工作,因为它是星期一。 但现在我要删除的程序。 而就像我们有这些 短名称最后一次, 除去命令 什么是RM,删除,回车。 你会得到一些 很古怪的问题。 很难相信,你可以 即使这个问题不难理解。 但是,删除普通文件只是打招呼 要删除打招呼方式去做。 我可以继续键入y,以 是的,输入的,现在它不见了。 这是什么意思,现在, 如果清除我的屏幕上, 是代替 这样做使hello--你 知道吗,我越来越擅长这个。 我要运行编译器自己。 我并不需要一些程序 弄清楚我的文件就会被调用。 我写的hello.c,我 知道它叫什么, 我很清楚地能打字了的。 所以我要继续前进 做铛的hello.c输入。 似乎工作。 而且也没有额外的输出, 因为铛是编译器。 这是什么样的转换 源代码的零和一。 所以,如果我现在做点 斜线你好输入,HM。 今天新的错误消息。 所以bash是正义的名义 眨眼,我们正在使用的提示。 这是一个过于简单化, 但现在这一切就是, 它的闪烁提示。 这就是为什么它朝着我们大喊大叫。 没有这样的文件或目录 多一点简单。 但可以肯定我做的目标代码。 但美中不足的是,这 如果我输入的命令 列出了这样的内容 目录中,这是什么? LS的列表。 有一堆东西在这里, 其中一些附带的设备, 像我的桌面文件夹,下载 文件夹,Dropbox文件夹,并且所有 这些东西。 但有趣的是, 是的hello.c,这 我创建了一个刚才用gedit。 什么是最怪异的 看名字在这里, 或许,我们没有 看到最后一次呢? a.out的,对不对? 因此,早在一天,它 刚刚决定,当 编译程序 对于第一次, 你没有指定名称 一个文件,让我们把它叫做。 和a.out的意思只是,这是 编译器的输出。 因此,它是一个程序一个可怕的名字。 但是,这种逻辑,点大幅削减 当前目录下,削减的a.out, 应该是说有其实 我的Hello World程序。 现在,一个小热身运动了。 如果我要重新命名此 文件,原来你 从一个名移动一个文件到另一个。 所以MV的a.out,然后我 可以称之为你好Enter键。 所以这是一个Linux命令。 DOS有这个年前, Windows有一个终端窗口 一些看起来的 这样,Linux和Mac 电脑有这样的闪烁提示。 虽然我们大多数人可能 很少,如果有的话,使用它。 但我做了什么是运行 程序,其名称是MV, 我已经向它提供 两个参数,可以这么说。 两个输入。 a.out的是原来的名称。 你好是新名称。 所以,如果我现在做点斜线 你好,回车,即存在。 如果我做点斜线的a.out, 你能指望我应该看什么? 击,没有这样的文件或目录。 因为我只是给它改名。 因此,这需要一点时间来适应。 但问题集1 规范将真正 通过牵你的手 一些本minutae的。 因为这是一个完整的 知识产权分心 从更有趣 创意就在眼前,这 实际上是创造 出来的东西代码。 但是,让我们做一处修改 现在这个计划。 回想一下,上次我做了一件 这样,printf的说出你的名字。 而事实上,我们只是做了该 在大屏幕上在那边。 然后我做字符串s变 GetString的开括号,括号接近。 和括号只是速记 符号的括号。 因此,没有GetString的任何参数? 没有不投入,但它 需要括号, 因为这是划定 一个函数的调用。 所以我要继续前进,并尝试 现在运行的编译器上这个节目。 铿锵的hello.c,因为我 没有现在改名。 我有一大堆的错误。 让我们缩小在这里。 如果我滚动了一遍, 就像我说最后一次, 到第一,相同的错误 我得到了最后一次。 在hello.c中的第6行我有一个 未声明的标识符字符串, 没有我的意思是在标准? 我没有。 因为什么样的错误,我是用这个做 程序,如果从上一次召回? 是的,我们需要的 所谓训练轮 我们就用了几个星期。 但我需要指定另外, 某处的器具的内部, 是,我们写了一个文件 就在几年前。 其内部是功能 就像显然GetString的。 所以,现在如果我去背下来在这里, 放大,并重新运行铛的hello.c。 妈的,另一个错误。 但我们还没有看到过这一项。 这其中的多一点 深奥弄清楚。 但是,这是故意的屏幕上, 因为我们想讲这个故事。 当你编译的hello.c,就像 图片来自前提出, 你只是转换了 源代码的零和一。 现在CS50的工作人员,几年前写的 CS50.h,并有相应的文件, CS50.c. 而我们,几年前, 编译这些文件 到出现这种情况的文件 被称为CS50.o. 或者也可以重命名的 一些不同的东西。 但是,这是一个简单的方法 的考虑。 所以我们做了CS50的 图书馆成零和一。 但无处我已指定 我想结合我的零 和那些对我的hello world 计划与零和一 该CS50人员创建了几年 前成一个完整的程序。 所有我所指定的写作 铛的hello.c是编译的hello.c。 我还没有告诉铛来 在零和一的链接 创建CS50人员 你前一段时间。 所以这是一个简单的办法, 冲升的链接,CS50。 我们会再次看到这个 没过多久连连。 但是现在发现,没有投诉。 所以,现在如果我跑点斜线 您好,现在它的工作。 虽然这是一个有点误导 因为我刚刚重新哪些文件? a.out的。 因此,让我退了一会儿就好了。 我们刚刚编译的程序 有三行代码。 当我跑世界你好,你好一会儿 以前,我没看到你的名字。 那是因为我跑了 老版本的程序。 但是,如果我确实跑点斜线的a.out 输入,说出你的名字,罗布,你好, 世界。 嗯。 这是怎样的一个错误。 大概的意思是说抢了吧? 那么什么是固定在这里的代码。 学生:[听不清]。 马兰大卫:没错。 所以我只需要做出最后的好办法 让我传递一个占位符, 如在空白填充, 就像我们刚才做了。 但百分之s是现在 这填补了空白。 所以,最后我们发现最后一个 这样的细节,有没有魔法。 我要继续前进 并摆脱hellow的。 我要继续前进 和摆脱的a.out的。 所以现在我没有计划, 只是我的源代码。 我要去跑 稍长的命令,铛 冲Ø你好hello.c的冲刺LCS50。 现在,这是开始排序去 在左耳进右耳出的其他可能。 但就取笑除了这是什么做的。 铛是编译器,仪表板LCS50 故意在最后 在一个句子里做什么? 链接到CS50库。 抓住零和 那些员工做 和crams成我自己的计划。 所以手头上的最后一个问题是, 什么是破折号Ø你好可能 这样做,即使你从来没有 以前见过这种语法? 输出一个程序,是 未命名缺省的a.out。 相反,它的命名打招呼。 所以现在还没有a.out的。 没有这样的文件或目录, 因为我明确地说, 这个程序叫做打招呼,让 我现在可以输入这样的名字 并将其行为。 现在坦率地说,男孩是 无趣的有 要记住这一切 小细节,对不对? 因此,让我们继续前进, 再次摆脱打招呼的。 让我们回到一个世界 它足以让说你好。 但是,这就是魔法 让为你做的, 这就是乏味的 它为你做。 而作为我们的计划和 问题变得更复杂, 使将真正成为你的朋友。 因为不会太长 从现在开始我们要 到具有所编写的程序 不是一个文件,而是几个文件, 并会自动的过程 编译所有这一切让我们在一起。 所以,现在打印。 printf的是这个文件里面,标准 I / O点的小时,我们已经看到过, 但有更多的printf比。 有反斜线N,但也有 一堆其他的转义序列。 和转义序列仅仅是一个 的说着什么奇特的方式 以反斜杠开始, 不是一个正斜杠,反斜杠, 并做了一些特别的东西。 我们不会纠缠于其中的大多数, 但为什么会出现反斜杠双引号, 你觉得呢? 为什么会出现这种奇怪的序列 字符,反斜线双引号, 为什么会是这样有用吗? 学生:[听不清]。 马兰大卫:没错,对不对? 回想一下我们的Hello World程序 我们已经见过不少次了, 每一次,我们已经看到的Hello World 方案我们内部有双引号 这是打招呼逗号 世界反斜杠ñ。 但想到自己, 如果你究竟是什么 想打印出一个引号? 你的第一反应可能是,我不 知道我为什么会想在这里do--, 我们可以稍微被动 积极的,你好的朋友。 我们可能需要做这样的事情。 但是,为什么是现在这个问题? 无视弯引号放在一边 基调为我们自动完成。 这是为什么有问题? 没错。 因为我们有像4引号。 以及第一个可能 去与第二个, 也许第四个 去与第三个, 或者,我是说我什至不知道, 也不是计算机将是。 再次计算机,编译器 再次,是相当愚蠢的。 他们只会做什么 你告诉他们做什么。 如果你不明确自己 很可能会引发错误。 如果你不明确就如何 做花生酱和果冻三明治 奇怪的事情可能会到达。 这是同样的想法。 现在,我只想说有 其他一些转义序列, 不过我们会找到那些用不了多久。 本质上这些逃生 序列代表什么 你可能无法 太容易在键盘上, 没有混淆的计算机。 现在,与此同时,我们 占位符的printf。 %的D,它也可以写成 在几乎所有情况下的百分之一, 是一个占位符的数据是什么类型的? 什么样的价值? 十进制数。 所以实际上,我们将开始 使用%的I,因为它是 比较简单,就像一个整数。 %的I。 一个整数,它恰好是小数。 百分比Š我们已经说了 占位符的字符串。 这仅仅是一个词,一个短语, 一个段落,一篇论文,等等。 这是一个序列 一些长度的字符。 我们将不久看到 一些其他的。 但百分之c是单个字符。 百分比f是一个 浮点数 这样有一个实数 在这一个小数点,这 当然不是一个整数。 并有一个整体 一群人也是如此。 同时,在C和 在许多语言中, 我们有不同的数据类型。 不同类型的 玻璃碗,如果你会的。 碗我用最后一次 是为乒乓球, 但是,我们还可以存储不同 如字符和字符串值 并在容器中的整数, 就像一个变量,而C有这些。 char是数据的类型, 变量的类型, 您可以在其中存储的字符。 浮球是一个类型的变量 它可以存储一个实数。 INT当然是一个int。 和相当可笑 命名很长很长 在这里,你基本上可以存储 一个很长的数字,连 更多的数字则 典型的诠释可能存储。 但我们会回来用不了多久。 在CS50点ħ同时 在其他的头文件 我们已经看到一对夫妇 在使用时间,有 另外两种数据类型 不要在C中存在的典型。 一个是字符串,我们会看到在 几个星期什么真正的字符串 在引擎盖下方。 一个是布尔值。 和一个bool是一个变量, 可以只对特定的值。 而只是根据上周的 划痕的解释, 以及最近C, 你会猜想 有两个可能的值 有些容器是bool类型? 是的,没有。 1和0。 真的还是假的。 事实上就这么容易的最后 是传统的编程 语言,说什么 像真或假。 同时,CS50库来 一堆的功能 该工作人员为你写的, 除了刚开始的字符串。 我们提前职能写道, 可以从用户获得的整数, 得到一个字符, 得到一个浮点数,即 仅仅是一个数字的小数点。 得到一个很长很长,真的 从用户的大值。 因此,我们只看到这 动作中的Ge​​tString的形式。 但是,通过这些功能 很快就可以写 即获得来自用户的输入的程序。 同时考虑这 计划,并考虑 我们怎么可能现在就开始增加 将其与新的构建体。 快速旋风之旅 然后我们将看看 一些写一些 手动程序自己。 今后如果我们想 实施条件, 它不会看起来像一个 可爱的小漂亮的拼图。 这将看起来多了几分神秘的。 但是,这是典型的 在C的条件下结构 这个词,如果两 括号,里面其中 将是某种形式的 布尔表达式。 现在斜线斜线 在中间,这是 此刻有点像 伪代码的占位符。 但更正确,任何一行代码 在C中,与斜线斜线开始 是一条评论。 这就像一个便条,你可能 换上的文章,印在纸上。 这是一张纸条给自己。 它没有的功能 对方案的影响。 这有点提醒的,这是你自己 文件以什么回事。 因此,在目前这样做 是那种占位符 不管是什么里面 这些大括号 最终是要做些什么。 同时你有两个叉 路上,一个if else结构是这样的。 你可以的,如果,ELSEIF,否则。 现在,这是值得注意的,尤其是 如果你已经围绕谷歌搜索 网上资源出 好奇心,或者如果你拿起 过程中的一个 在C推荐的书籍, 你会看到,人类有很多 不同的偏好是如何 来表达自己的代码。 有些人喜欢把 大括号,因为我在这里所做的。 有些人喜欢把卷发 在这里括号为实例。 有些人喜欢把偷别人 在这里,然后这个在这里。 有任何数目的方式来 写代码,他们都不 是对本身。 虽然有几个 这是相当错误的。 但也有no--如果这是 最后一个很严谨的辩论。 事实上,最讨厌的1 关于计算机科学的东西 是如何自以为是 计算机科学家都可以。 你会发现随着时间的推移 即使你开发的个人喜好 为你的代码应该是什么样子。 不只是循规蹈矩,不只是建立输出, 但怎么也应该美观。 所以,我们需要做的是沿着引导你 一路走向,至少目前, 一个标准的CS50风格,至少 使事情变得均匀,易于阅读。 但在那些更 不久区别。 布尔表达式在C中,如果你 想说的话,如果这个条件为真 这等条件 真的,你不写的字 并且,你会用英语。 你不是用符号与符号, 对于原因,我们会回来的。 如果你想说的,或者你用两个 竖线,这是美国键盘上 通常上述的输入 键旁边的反斜杠。 这也就意味着,如果这一条件 或该其他条件为真时执行此操作。 同时有这 疯狂的事情,这 你将有机会 在一段时间使用一次。 但它只是一种替代 的方式来表达自己。 这一点,现在,让我们来 规定,它只是 表达的另一种时髦的方式 如果ELSEIF,ELSEIF,ELSEIF,ELSEIF。 它只是在格式条款 情况下,如果你从字面上的 枚举值 你可能要检查。 同时循环。 我们看到的比较 从头开始循环。 而且我要挥挥手 各有什么这些东西的意思。 但是请注意,循环将很 往往先从关键字。 或者,它将开始与关键字一会儿。 或者,它会开始用关键字 做的,用关键字而结束。 但是我们要看到 是东西更是这样。 在这里,在一般的C语言,你怎么可能 声明一个变量,并给它一个值。 在C语言中不足够, 就像在刮,你只要 说给我一个变量叫什么。 你要告诉℃,并告诉 编译器,更具体地说, 什么类型的值你 要放在玻璃碗里。 它是一个整数? 如果是这样,你要 从字面上说,INT,然后 的变量的名称, 然后一个分号。 如果你想要的,而不是字符串,称为 它就像我今天做了我的代码, 你会说字符串s分号。 当你想给它一个值 那么你可以使用等号, 否则被称为 赋值运算符。 并注意各 这些代码行 有分号它的结束。 但是,坦率地说这只是 看起来有点丑。 为什么我不能说,到电脑,给 我一个变量,并将其初始化为0。 也就是说,给我一个空的玻璃碗里。 虽然你可以。 这样一来,判断一个叫你 必须使文体上随着时间的推移 是,你写你的代码,这样,或 有种你把它打扫干净,并留下深刻的印象 人们通过写两行只有一个。 这将被认为是 通常是一个更优雅的方式 的文体写你的代码。 功能我们当然看到了。 他们将采用这种格式。 一个函数的名称,有些 括号,然后也许有些 里面的东西。 或者,你可能会看到应用 多种功能方 并排,像这样的事情。 现在,作为一个切线,不 这个笑话现在做有意义吗? [笑] 这并不意味着这很有趣,但它 也或许做一点更有意义。 所以,现在,让我们进入 CS50家电一会儿。 让我在这里开了1传情。 的原因,事实上1 引入宜家产品目录 和闪烁的画面 在iPhone的前位 是真正绑在了一起 事实上,仅仅在几年前,在2007年, 这段代码是 释放时,将其 在第一个执行的一个 一个软件的 那做什么叫做越狱。 对于那些不熟悉,越狱 像手机或iPhone手机 指基本上搞清楚 如何做事 与它的公司 谁做的,也没打算。 如要安装特定的 软件不是在应用程序商店, 越狱你的手机,它 你做这样的事情多。 但是,什么是乐趣 2007--而且一直 几十个不同版本的 这些东西从那时起, 在各种languages​​--是 这个节目在这里,所谓的iUnlock, 实际上是用C写的所以我 拉升的源代码本, 只是那种告诉你一些 与结构的相似性 我们一直在讨论迄今。 现在有更多的方式在这里的复杂性 比我们在课堂上已经看到了。 让我在这里滚动只是一点点。 但是请注意these--好,我们注意到一些 things--但这里要注意这些线, 包括标准的I / O点小时。 和all--线24,please-- 注意标准的I / O 点H和一大堆其他的 文件,显然其他人 写。 如果我们向下滚动 这一点,随意一点, 请注意,我不知道该怎么写 这一切我一定还, 但是有如果。 因此很明显,这有一个分支。 如果我向下滚动一点点 如果再有另一个。 如果我向上滚动,我觉得 围绕线100,我看到了。 所以我不太清楚 是如何工作的呢, 但是这是一个for循环,那将 让我重复的时候一定数目。 如果我所有的滚动 的方式向底部 我看到有一个 功能这儿叫 主,以及一些额外币 为您的阅读快感。 因此,这仅仅是say--,我们会把 课程的源之间的这种在线 代码today--,即使其中的一些 我们认为理所当然的设备, 在一天结束的时候你还在 用我们这些已经基本结构 不断推出已有迄今。 这就足够了的那一个。 好吧,现在让我们来 实际上建立的东西。 让我们超越像 hello.c中,并打开了这一点, 让我们在这里写这个程序。 我要继续前进, 编写一个名为如adder.c程序, 在生活中,其目的将是 像我的第一个超级简单的计算器 这只是增加了几个数字。 不是因为这是一个硬 的问题,而是因为它 让我现在配合 在一起的几件事情。 所以我要继续前进,包括 标准I / O点H和CS50点小时。 我要说INT主要作废。 并再次在未来的 我们会回来吧 成在这方面和空隙装置。 而现在我会说些什么 如printf,给我一个整数。 现在,在我的第二行, 我该如何表达自己这样的 我想声明一个变量 这是怎么回事存储一个int? 从字面上看我该怎么输入,如果我想 创建一个存储一个int变量 你会说什么? 整数a等于调用getInt。 当然,这样的作品。 和公正的一致性 用你的代码会 在网上看到的,让我改变 此为x,只是因为变量x 是一种常见的变量名 使用中,至少在代数。 现在让我继续前进,不要再printf的。 给我一个整数。 现在,我要那种 对学习的模式, 我要说诠释y到达调用getInt。 我们已经不习惯 调用getInt之前,但只是 喜欢的GetString去,并得到一个字符串, 像哈维尔观众一样, 同样不调用getInt 开始闪烁提示。 和有效地等待用户 给它一个整数,通过键入它 并按下Enter键。 现在,最后,我该怎么办 对此,printf的总和of-- 并让我看上now-- 百分之一和百分之i是目前 í感叹号反斜线ñ。 那你觉得我会 现在摆在作为附加输入 对printf? 我不想说 从字面上报价引文结束的X. 我想在类X和 那么,现在让我们看上 而我们只是假设 我们可以做我们想要的。 你接下来想要说什么? X加Y。 事实上,将工作。 它的最低限度的编程语言 做到了解基本的算术运算, 所以这其实应该工作。 因此,让我继续前进,不要让 加法器在我的黑色和白色窗 到这里,回车。 神秘的线,但没有错误 消息,所以这是很好的。 点斜线加法,给我一个整数,1。 给我一个整数,2。 的1和2的总和为3。 好吧,所以很琐碎 程序,但它是什么呢? 它让我用一个函数 叫这里,这里调用另一个函数, 两次调用调用getInt中, 第三次调用printf, 然后用这些占位符。 所以这是一个多一点 先进的比上一次。 但是如果我想 得到一个小票友? 让我继续前进,现在做到这一点。 让我继续前进,创造一个 新的文件名为为零的条件。 我要去拯救 一段时间类的缘故 而刚刚粘贴在 代码为出发点。 而现在我只是把 一些在中间的是新来的。 所以printf的,我想一个整数吧。 而这一切代码都可以 在球场上的网站, 你不必键入这一切了 在课堂上,如果你不能再喝了。 INT,现在我要去 用它代替x和y, 我要使用N,这是 可能是最常见的名称 用于在计算机程序中的一个整数。 现在我想做一个 在这里,小的判断。 我要去当n看 大于0,则 我会说printf--哎呦, printf--你选择了一个正数, 感叹号反斜杠ñ。 关闭了。 否则我要打印出来的printf 你选择了一个负数。 现在你骂我之前, 让我们来运行这个程序。 让我去这儿吧。 以及如何编译程序 所谓的条件几许0? 请条件几许0。 那种愚蠢的名字,但 - 该死。 好的,好的教学时刻。 为什么说分手? 什么我不小心把这个文件? 种可以推断 从选项卡在这里。 因此,它不是坏的,我 这样做,因为这 也许会发生一些你。 所以我不小心叫我 源代码的条件0。 但是按照惯例,我的源代码应该 在一个名为条件0几许C文件, 或什么的C点。 因此,让我解决这个问题。 就像Microsoft Word中,我可以走了 另存为,做条件0 C点。 现在只是要整齐,我 要继续前进,并删除 状态0,这是我的旧版本。 现在,让我们做制作 状态0,回车。 好吧,似乎不错。 条件0,回车。 我想一个整数请,50, 你选择了一个正数。 现在怎么样负50? 你选择了一个负数。 现在怎么样,0。 很肯定的0不是消极的。 因此,这是怎样的一个逻辑错误。 我该如何解决这个问题? 否则,如果n小于0,这样做,否则 我们可以有一个三路分支在这里, printf的你选0。 所以现在,如果我重新运行该 程序,编译后 再次化妆,现在重新运行 状态0,我会在这里看到 0给我的输出。 所以,我们去哪儿了呢? 那么它很容易忽略 森林中的树木。 所以,让我们来总结 与此2和1.5分钟的视频 最终是有点 从谷歌的广告, 但是这真的是应验了 即使使用这些基本的建筑是什么 块,我们可以最终做一次 我们有位编程 根据我们的皮带头脑。 [音乐播放] SAROO布赖尔利(旁白): 那是26年前, 我正要转5。 我们到了火车站, 我们登上了火车在一起。 我哥哥刚才说我会 住在这里,我会回来的。 我只是在想,嗯,你知道, 我还不如干脆去睡觉 他将只叫我起床。 而当我醒来的时候下一个 天,整个滑架 空了一个失控的火车,鬼 火车带我去,我不知道在哪里。 我采用了澳大利亚, 一个澳大利亚家庭。 和妈妈都装饰了我 房间与印度的地图上, 她把旁边的我的床边。 我每天早上醒来的时候 看到地图,并因此 排序它不停的回忆活着。 人们会说,你是 试图找到一个针 在干草堆里,Saroo 你永远也找不到它。 我曾闪过的地方,我 以前去,我家的闪烁 面孔。 这里是我母亲的形象, 坐在她的双腿交叉, 只是看着她哭。 人生就是这么辛苦。 这是我的宝贝。 我一直在寻找在谷歌地图和 意识到有谷歌地球也是如此。 在这个世界里,你可以放大, 我开始把所有这些想法 和什么样的可能性 这可以为我做。 我对自己说,你知道,你已经 把所有这些照片的回忆 和标志性建筑你来自哪里,以及 你知道什么是城镇的模样。 这可以是一个应用程序,它 你可以用它来找到你的归途。 我想,嗯,我会放 点在加尔各答火车站, 和半径线,你知道,你 应寻找解决这个地区。 那种我碰到 这些火车轨道。 我开始跟随它,并 我来到了火车站的 反射的同一图像 那是在我的记忆。 一切都匹配。 我只是在想是的,我 知道我要去哪里。 我只是打算让 地图,我在我的脑海 引导我,带我回到了我的家乡。 我来到家门口 我出生的房子。 而走了一圈约15 蠢蠢欲动米, 有三个女人站 外,彼此相邻。 而中间的一个走上前去, 我只是觉得,这是你的母亲。 她走上前来,她抱着我, 我们在那里约五分钟。 她抓住我的手, 她把我的房子 并得到了电话,她在 响了我的妹妹和我的兄弟 说,你知道吗, 你的兄弟刚 所有突然出现像幽灵一样。 然后一家人再次团聚。 一切都很好, 我帮我妈出去, 她没有被累死累活。 她能活休息 她在和平的生活。 这是一个大海捞针, 但针在那里。 一切都在那里。 一切,我们在世界 是一个按钮的点击。 但你必须有意愿和 决心想要它。 [音乐播放] 大卫马兰:奇妙 甜蜜的告别赛 刚一下即可 现在做的技术。 我们会看到你下周。