戴维·J·马兰:所以这是CS50。 这是CS50自己的科尔顿奥格登 更多的是谁的音乐,你可以 下载的soundcloud.com/cs50。 所以今天我们重点更 编程的艺术。 我们需要在我们离开 关闭上周,重点 上划痕,这是该 图形化编程语言。 走下来,以一个较低的水平, 使用更传统的编程 被誉为C.语言,但 一路走来,实现 ,同样的想法,我们 谈到上周五 不仅会在此复发 C语言,但在大多数每隔 我们看看这个学期。 因此,我们呼吁这件事 这里过去是什么时间呢? 这是代表发言的。 所以我们称这个声明。 它做一些事情。 这是一个指令,一个 计算机或划痕可能执行。 从今以后,我们也开始 调用这样的函数, 对于原因,我们将很快看到。 同时,我们看到了这样的事情。 而这些都是一般 被称为什么构造? 听众:循环。 戴维·J·马兰:所以一个循环。 所以,很简单。 它的字面做什么,它说。 和划痕,如果你想 补习班更多拼图在那里, 片将增长,以适应它。 我们会在C中看到, 我们可以做同样的事情。 另一种类型的环,不过, 在划痕可能是永远的, 或有任何数量 其他方法。 但是,让我们更 多面手的样子,脸上 这可能很熟悉, 在循环更普遍。 马克·扎克伯格:一个 东西电脑 是的,是真的好 重复的命令。 作为一个人,你会得到 如果你真的很无聊 不得不做的同样的事情 许多在一排次。 但是,一台计算机可以做同样的事情 数百万甚至数十亿倍, 不觉得无聊,并且能够 开展了这一点真的很好。 因此,举例来说,如果我 想祝大家 Facebook上的生日快乐 通过向他们发送一封电子邮件, 这可能要花费一个多 世纪真正写出来 所有这些邮件给大家。 但是,代码只有几行,我可以 有一个系统发送一封电子邮件给大家 在Facebook希望 他们生日快乐。 所以,这就是循环是为什么 他们是有价值的东西 计算机能够做的非常好。 戴维·J·马兰:所以,如果 你去过收件人 一些CS50的和 后期的Dropbox的空间, 这其实正是我们 这样做,使用代码挺喜欢的。 我们基本上有一个大的 表格成 人们已经将他们的 姓名和电子邮件地址。 我们写的代码,一点点的 可以遍历这些地址 吐出的唯一地址的 至于有人提出多次。 此后,我们发 从CS50的机器人自动发送的电子邮件, 包括优惠券代码。 现在,我们还看了 这个构造最后一次。 这是一个特殊的 比如什么? 所以,是的,一个布尔表达式。 和形状是指 捕捉到这一点。 的所有这些问题, 形成真或假的划痕 看起来有点像这样。 我们称这是一个布尔表达式。 这的确是真的还是假的,是或否。 这是回答问题的方式。 而同时,你可以使用这些布尔 结构内部表达 像这样的,它的 当然是条件 或分支机构,谚语 岔路。 他们不仅可以看 像这样的,但他们也可以 他们已经偷别人的关联。 而实际上你可以有一个三通 岔路口或四叉方式 在路上,只要通过 筑巢这些东西, 因为你会在看到划痕 如果你还没有。 而且,你可以用C做的一样好。 让我们以另一种通才 看一个alumnist,还有,谁 可能会呈现出不同的方法 这些东西叫做条件。 比尔盖茨:人们经常 每一天的决定。 例如,在你走之前,你外面 种有一个if语句,上面写着: 如果下雨那我 需要让我的夹克。 和电脑是惊人的,一旦你 决定这些类型的语句, 它们可以可靠地执行 这些东西在令人难以置信的速度。 等计算机程序真的 是数学和一些一点点 if语句的地方 该决定被做出。 戴维·J·马兰:那么作为 大家可能都知道,这是 乡亲们像比尔·盖茨, 保罗·艾伦等人 真正拉开序幕 所谓的个人计算机 革命多年。 我想,我们潜水前 到一些文案, 我们希望有关的故事,从阿尔伯克基, 自然历史博物馆新墨西哥州的博物馆 和科学,其中一些比尔·盖茨的“ 和保罗·艾伦的故事最早 是讲述我们现在怎么有 今天的PC和Mac等等。 对于这一点,但是,我们需要两个志愿者 谁都有很好的旁白声音 朗读的脚本。 好吧,怎么样在回到那里。 上来吧。 以及怎么样在前面这里。 下来吧。 把你的地方在这里。 正如你们上来,一对夫妇 行政公告。 切片时,处理 选择部分, 将于本 周三至周五。 更多关于这个未来 周三在演讲。 超级节,同时,在 我们下周提供的东西 由此,整个班级的邀请 参加比较大型 段,多了一个舒适, 少了一个舒适的。 我们将公布详情 这一点,还有,在本周晚些时候。 同时段, 自己,将启动 在三个课程一周,零指数, 这意味着那些一两个星期 出来。 所以不用担心。 你还没有错过 沿着这些线路的东西。 同时,在此期间,如果你 有任何问题行政, 电子邮件我和德文郡和加布 和Rob在这里这个地址。 最后,问题集 0是当然的。 您可能已经注意到了这一点 在球场上的网站。 它应该为你提供 所有问题的答案 你可能有沿途的 入门问题集。 但是,如果你发现自己 需要援助之手的, 通过各种手段参加工作时间, 周一,周二,周三,周四 本周日晚 四食堂。 看到有网址的资料 哪里办公时间应。 现在,让我们来认识我们 两位嘉宾今天。 你叫什么名字? JAY PAUL:周杰伦保罗。 戴维·J·马兰:周杰伦 保罗,很高兴见到你。 HIKARI:光速。 戴维·J·马兰:光速? HIKARI:光速。 戴维·J·马兰:光速。 很高兴认识你。 杰伊·保罗和阿光在 他们对这些音乐前 站在我打印的两个脚本 今天上午从新墨西哥州 自然历史博物馆和科学博物馆。 而我的想法 我会做的开销 是陪你朗诵 剧本,这段历史 一些视觉影像,没有惊喜。 而我事先做了 是prehighlight在你的脚本 你应该阅读, 你应该读什么。 我们将主要 只是备用的段落。 因此,这就像你可能会 做英语课。 这真的迫使观众 相信你的故事在这里。 我们可以? 因此,这里的故事是,我们有一个 BASIC,并开始在剑桥。 JAY PAUL:那是冬天,1974年, 在剑桥,马萨诸塞州 这里冬季非常寒冷。 一个大胡子,长头发 大学辍学命名 保罗·艾伦是耐劳的整个哈佛 广场,专注于他的想法。 他在那些日子里主要的当务之急 是如何让他的朋友,比尔·盖茨, 退学去 与他的生意。 HIKARI:两个已经走了 通过一些商业投资 同时,开始在湖边 学校在西雅图的地方 他们在支付了免费的电脑时间 在当地时间测试一台PDP-10电脑 共享公司。 最近的计划是退出 学校形成了一家软件公司。 阿伦已经离开了华盛顿 州立大学。 但在最后一刻,盖茨 决定坚持哈佛大学。 JAY PAUL:那一天,哈佛大学渡 广场,艾伦看准一月 1975年发行的热门电子产品 与地球停标题, 世界上第一台小型机套件 对手的商业模式。 下方的标题是 一个小盒子的图片 装饰用灯和开关。 这就是所谓的MITS牛郎星8800。 和艾伦知道这是什么 他一直在寻找的。 HIKARI:讨论天紧随其后。 艾伦和盖茨理解 牛郎星的意义。 他们经常讨论 关于微处理器 并等着看 将与他们进行。 现在有一个小型机套件 大众电子封面。 它显然没有软件呢。 他们想象的国度 程序员降在MITS公司。 因此,他们被称为埃德·罗伯茨, 该公司的负责人, 自称有一个版本的 BASIC编程语言几乎准备 为Altair。 他们没有。 和罗伯茨一定知道他们没有。 他渐渐从每天10个电话 谁的人有一个基本快好了。 而他的股票的反应 是,“第一人 谁显示了一个工作 基本得到了合同。“ JAY PAUL:盖茨和艾伦 从来没有见过一个牵牛星。 他们甚至从来没有见过的 英特尔8080微处理器 在牛郎星的心脏。 但几年前 艾伦曾编写过程序 一台主机计算机上仿真 以前英特尔的操作 微处理器。 他们在这段时间 会做同样的事情。 HIKARI:随着英特尔 8080手动在他身边, 艾伦在坐了下来 哈佛的PDP-10电脑 并写下了仿真器和软件 必要的工具来完成编程。 同时盖茨不再去 类和献身 对设计的基础上, 利用一切伎俩 他知道,以获得尺寸 向下跌破4千字节。 JAY PAUL:出阿尔伯克基, 埃德·罗伯茨接到盖茨的电话 问,详细了解如何 Altair的具体处理程序。 从来没有人问过。 和罗伯茨开始得到关注。 HIKARI:随着时代的发展 工具和设计准备, 盖茨和艾伦写道: 在PDP-10中的代码, 争取另一位哈佛大学的学生, 蒙大卫杜夫,写数学例程。 之后的最后一晚 编程,阿伦坐上飞机 提供基本为MITS公司。 他花了乘坐飞机出令人担忧。 而早在剑桥 盖茨担心。 他们测试了他们基本的 它工作在模拟器上。 但是,如果模拟器是错误的? JAY PAUL:随着飞机 走近阿尔伯克基, 艾伦意识到,他们的 BASIC,现在整齐载 在一个小卷 穿孔纸带,将 将是一个没有独立没用 计划,叫装载机,那 会告诉如何牛郎星 阅读纸带幸福 送入电传打字机。 他掏出笔记本,并迅速 潦草下来loader程序 在汇编语言,然后手动 翻译说成1和0 牛郎星会理解的。 HIKARI:艾伦期待 干净,小,高科技公司 男人的西装运行。 于是,他很惊讶,当罗伯茨见面 他在机场看上去就像一个大农场 手。 罗伯茨还惊奇。 当他放弃了哈佛大学 程序员在昂贵的酒店, 艾伦不得不承认, 他买不起房。 JAY PAUL:MITS公司,本身是 坐落在一个尘土飞扬的地带商场。 在里面凌乱 工作台是一个牵牛星 装了5千字节 存储器和通过电缆连接 以电传打字机。 罗伯茨和总工程师, 比尔耶茨,等待着期待 艾伦切换自己的装载机 计划到牛郎星。 电传开始隆隆,因为它拉 纸带通过纸带阅读机。 花了也许15分钟 加载程序。 然后突然电传打印的 记忆的提示,然​​后一个现成的提示, 和艾伦开始打字 一些测试命令。 为了大家的惊愕, 该软件的工作。 有当然的错误。 更主要的是它的工作。 HIKARI:后来,在他们的途中到 3.00美元午餐潘乔的,马蜂飞 在拾取器的窗口 卡车和刺痛了艾伦的手臂。 但在这一点上没有什么 会破坏心情。 牛郎星现在有了基本的 一个家庭的第一商业软件 计算机,由保罗·艾伦和比尔做 盖茨,做生意微软。 戴维·J·马兰:很多 由于我们两国的读者。 [掌声] 戴维·J·马兰:现在 你有你的选择, 你离开的闪闪发光,前 或者在dark--哦辉光, 等待一秒钟,wait--闪闪发光 在黑暗的大象辉光 从CS50自己的成功。 HIKARI:哦,谢谢。 戴维·J·马兰:全部 好,谢谢你这么多。 [掌声] 戴维·J·马兰:所以真实的故事。 这就是说所有这些是 机器和易用性,使我们 现在使用它们,并采取 理所当然的,真的 从这里开始,仅几步之遥 从这个实际战场。 而现在的今天,如果你还没有去过, 这是麦克斯韦德沃金,所述计算机 科学建设, 也蠢蠢欲动。 而在此二楼 建筑不挂三页 从原来的源代码的 比尔·盖茨和保罗·艾伦写道。 事实上,如果你使用放大 在您不仅可以看到 其名称中 原始类型,但也 他们的签名,他们装饰á 几年前,当他们最后一次访问。 但是,什么是特别引人注目 关于这就是他们所要做的 是写一个程序,将 让其他人写的 自己的方案。 当时所有有带 这牵牛星机由MITS进行。 和所有他们需要的是一些方法 因此很容易为业余爱好者和人民 喜欢我们在这个房间里居然程序 如果没有一定了解 汇编代码或机器 码,或上帝保佑,0和1。 我们的程序员一样, 那些在这个房间里,我们 希望能够表达 自己更像伪代码 即使这是一个有点更挑剔 挑剔比上周我们讨论。 我们不希望写这样的代码, 保罗·艾伦和比尔·盖茨一样。 相反,我们要编写代码, 看起来多了几分人性化。 现在,这就是所谓的基本语言。 和行号有你 使用简单的数行代码 那你写的。 我们甚至不须 这样做的这些日子。 但是你可以在这里看到 如何打印“你好,世界” 的确大概印了这一点。 还等什么比尔和保罗所做的是 授权人写这样的代码 而不是of--如果你看一看的 计算机科学wall--这样的代码。 事实上,CS50最近 有机会 坐下来与哈利·刘易斯教授 在计算机科学系,谁 实际上教草案 盖茨几年前, 而站在这里之前 这三页的摘录。 让我们一起来看看。 哈里刘易斯:你在这里是 早期的软件上市 写的比尔·盖茨和保罗 艾伦,微软的创始人。 这样的代码是有趣 有两个原因。 首先,它成为 微软的第一款产品, 这是一个解释器 BASIC编程语言。 其次,这是 第一次尝试之一 创建一个解释如此平凡 人们可以使用个人电脑。 所以,比尔·盖茨是一个 本科在哈佛。 我开始在哈佛大学1974年的教学。 这是在1975年完成。 所以这是他职业生涯的早期 在我职业生涯的早期。 其实我教条例草案 在这段时间的课程。 保罗·艾伦是不是 哈佛的学生,但他 曾是一名高中 同学比尔·盖茨。 如果你来看看 在清单中,将会 居然找到第三 名,蒙大卫杜夫, 谁是盖茨的同学 你们是哈佛。 好了,这里是一个 有趣的评论在这里。 它说:“在4K可以删除平方根 但对于循环应该仍然有效。“ 好了,这是什么意思是,有 两种方法来编译这个程序。 一个是上一个版本运行 这牛郎星电脑 只有具有4K字 存储器中,存储器4096字。 但大版本有8K。 还等什么这说的是 ,在4K版本 你必须删除一些 代码,使其适合。 和的事情之一 这将被删除 将平方根例程。 但显然 for循环应该还是 当你编译下工作,即使 对于刚刚4K版本的计算机。 戴维·J·马兰:所以的主题之一, 我们将在计算机科学中看到, 是这个概念 分层和抽象, 真正站在肩膀上 人谁已经来到我们面前,不是 不像某些比尔·盖茨 和保罗·艾伦的叙事在这里。 而这句话的意思是 今天,我们可以采取 理所当然的事情,其实 我们更容易编写代码。 事实上代码,因为我们上周五表示,为 更多技术上称为源代码。 而正是这种英语的语法 这是更合适的,更明确 不是像伪代码, 其中有没有正式的定义。 今天我们要去 关注的是源代码 看起来像这样,这 诚然,乍一看 看起来完全隐蔽。 坦率地说,它的方式更加美观 较复杂的底层程序。 所有这些程序呢, 召回,是我们没有说什么? 它只是打印的“hello world”。 然而,看看所有我们需要的东西 环绕这很简单的短语。 但没过多久全部 这些线路多 会更好的感觉给你。 且流程如下。 我们需要在我们的处置 是取码,如源 我们刚才看到的代码。 我们需要一个新的计划 通过运行它。 我们需要算法,可以 转换的源代码,这样, 成目标代码,0和1。 换句话说,什么 我们今天要学 是如何做到这一点,写 源代码往上顶, 把它作为输入到一个特殊的 程序被称为编译程序, 而我们将要产生的目标代码。 这是只是一种奇特的方式 他说,我们将采取什么 看起来像这样,通过它 成称为编译程序, 产生的目标代码 看起来是这样的。 因此,这些都是字面上 0和1的模式 是由一个理解 英特尔电脑这几天, 如果解释由CPU, 电脑里面的大脑, 将逐字打印出来, 很简单,“世界你好”。 现在有比你更多的方式0和1 希望可能需要为该。 那是因为我们正在建设 一个很好的协议的复杂性 我们可以从此理所当然的。 换句话说,很多聪明的人 给我们提供了很多很酷的工具 和强大的软件,使用它我们 现在可以让我们自己的项目。 所以,让我们开始吧。 而上周五,和 对于习题集0本周, 你会打的 世界是这样的。 从今天起和问题 设置1,下周代码 会看起来多了几分 神秘,但在功能上是 将是相同的。 所以通知,上面是从无到有, 底部是C坦白划痕 是一个很大的用户 友好访问。 但如果你现在比较直观顶部 底部,有一种一对一的 之间的对应关系 拼图块和语言 我们即将一起玩。 特别是,就是说, 蓝色拼图往上顶, 显然相当于什么关键字 在这门语言或特殊短语 称为C? 听众:printf的。 戴维·J·马兰:printf的。 这意味着格式化打印。 而这只是一个幻想 说法printf的C语言的方式 将会是一个语句或函数 可打印的东西到屏幕上。 这是什么打印到屏幕上? 不管你告诉它里面 的报价,括号内。 如此反复,无可否认, 有很多东西 你必须记住, 括号,引号,分号, 和所有的这一点。 但是,所有这一切是那种 的旁边的点。 有趣的外卖现在 是,在划痕的发言权块 几乎是等同于 在C中的printf语句 同时,黄色拼图 向上顶,当绿旗点击, 大概相当于 在这里什么关键字? 听众:主。 戴维·J·马兰:那么主要。 也许诠释,也许作废。 但主要的有点像声音 这一点很重要,确实是。 所以,当绿旗点击 又正是一块拼图 揭开序幕的 整个耐刮划。 但是,我们要现在就开始打电话 在主,此功能称为主。 现在,同时我们会 这个概括如下。 我们可以称说的功能。 它可能看起来 具体是这样的。 那么,怎么样的循环? 如果我们要开始转换,或 翻译更从头℃, 这件事情在这里显然是刚刚 说的“hello world”永远的。 如果这些关联如此 在划痕猫的脚本, 它只是要不停地说 在某种卡通气泡, “世界你好,你好世界,你好 世界“广告nauseum,直到永远。 如果我们想要做类似的事情 C,它会显得有点神秘。 但是,我们可以达到同样的 结果,我们最终会 发现,像这样的语法。 我要再次用printf, 因为在一天结束时 我想打印的“hello world”。 而我显然使用的是 关键字是不是永远。 这是不是同时的话。 但就在语义 英语,种时 表明某种循环或周期。 因此出现这种情况是 在C使用的关键字。 虽然如此,为什么不同时 真正有效的意思是永远不会消失? 好吧,虽然,因为我们很快就会 欣赏所有的越多, 具有此括号旁边 在那里你可以把一个布尔表达式。 而只要是 表达式为true,则此代码, 在这两者之间,并标示 大括号,我们会打电话给他们, 将只保留一次又一次地运行。 所以,真实不虚。 因此,尽管真正的手段 只是这样做下去。 这几乎是一个愚蠢的 构建表达自己。 但是没有永远 在C语言关键字有一段时间。 并有一个很简单的 布尔表达式像真的。 所以,我们会看到, 实现相同的结果。 你可能怎么回事实现一个循环? 那么,在刮你可能 硬编码一个特定的数 在这里的循环迭代。 所以这正是我们 可能会做在这个版本的C, 因此,我们有一个所谓的循环。 和for循环在这里是怎么回事 迭代,有点神秘地, 从提升价值0 到,但小于10。 现在,变量划伤。 你可能不会有 际使用这些。 但有什么意义,在一般情况下, 变量上周我说? 那是什么? 听众:点。 戴维·J·马兰:来点? 呵呵,点。 好吧,跟踪点, 例如,在一个游戏。 或者更一般地做 与变量是什么? 什么是他们的效用? 听众:内存。 戴维·J·马兰:是啊,所以内存。 它是用来存储东西。 和愚蠢的视觉í排序中使用 最后一次是这样的玻璃碗。 如果我们想存储 一些变量里面, 例如,现在的 值是6,因为有 六个乒乓球在这里。 这只是某种存储 容器,该发动机罩下方 与位0和1实施 然而,一台电脑发生这样做。 因此,在划痕,如果我们 希望有一个变量, 我们可以用一个橙色块这样。 我们称之为反 在这种特殊情况下。 I初始化为0。 什么是我那时候怎么办? 永远的,说柜台,而如果 你在玩刮, 你只看到划痕。 你把猫或其他服装 他将在议题发言的次数。 1更改计数器 如按1递增。 所以这是要 从什么那么什么算什么? 从0直到无穷大,或 直到划痕休息, 或之类的,直到你 失去观看的兴趣 他有多高其实可以算。 那么我们如何把它转换为C? 它会显得有点神秘。 但同样,如果你看一下每个 这些线的单独 他们那种阵容一般。 因此很明显,int是要 有C语言的一些特殊含义 我们将看到一次。 顺便说一句这意味着整数。 所以它只是意味着数量。 所以,这类型 玻璃碗我想,人们 可以存储数字 不是乒乓球。 而我将用等号 那里给它分配一个0值。 所以这是很喜欢集 计数器为0,但在C 同时,在真实的,那就是 等效,当然,永远, 尽管这是一个有点神秘, 然后里面的花括号中。 你也可以认为这些花括号, 您可以输入键盘上, 因为真的是像在曲率 这些黄色的环块划伤。 它包括多行代码。 printf的是得到一个 现在有点吓人,因为我 不仅看到行情在括号中。 还有什么是新的 语法在这个例子? 有一成Ð。 然后反斜杠n是在那里。 我们也看到,之前,即使 虽然我没有提到它。 然后有一个逗号。 然后还有一个计数器。 但是,我们可以看到在短短的 矩,这仅仅是 说法打印的标准方式 “小数”,报价,引文结束, 一些十进制数。 不过,我以后告诉你 什么是十进制数是。 因此,事实上,有一个逗号 在此行中的printf的说法, 是指直接进行打印 一些十进制数。 哦,对了,号码是 不管这个变量的值是。 因此,使这更 显然,我们将看到一个例子 不久,涉及的printf到底 在真正的C程序的上下文。 现在只是换了一些 这些结构。 布尔表达式,你可能没有 机会在你的程序中使用这些 但你很可能, 尤其是在使用条件。 所以这两个例子从 从头开始的意思是如果x小于y, 或者如果x小于y和y是少 大于Z,我们如何翻译呢? 那么,在C中它只是 会是这样的。 有点神秘,更括号, 一些奇怪的符号(&),但从根本上 的想法很简单,因为他们 在一块拼图的世界。 我们只是如果有什么检查 不到别的东西。 怎么样的条件? 在英语简单地说,这是什么 的划痕代码块做,你会说什么? 听众:比较两个数字。 戴维·J·马兰:比较两个 号,并且如果x小于y 它说为多。 如果x大于y 它说为多,其他 如果x是等于y它说为多。 现在在哪里x和y是从哪里来的? 谁知道。 划痕的这一块 代码是断章取义。 但是,我们现在要做的是翻译 这只是一瞬间看到的。 所以,当你舒服 本周习题集 0在这个世界上扮演 在左边,实现 该理念并没有改变 本周或下周或以后。 我们只是要 开始写东西 以不同的方式与我们的 键盘而不是鼠标了。 因此,如果x小于y和 有一些括号那里, 再有就是一些大括号 种再封装它 就像黄色拼图做。 我要去给printf点¯x 小于y等等。 什么是好的关于C, 你可以在这里看到, 是你没有得到这个嵌套, 嵌套,嵌套那是必然 将你的代码推到右侧。 您可以改为拥有一切 阵容整齐这样。 但是,这只是一种美学 细节我们将在不久再见到。 好吧。 所以这使我们回到 这个神秘的寻找程序。 让我们来实际编写一些代码。 现在,你如何去写代码? 所有你所拥有的这些年 在Mac或PC,台式机或笔记本电脑, 你确实有能力 开始编写程序代码。 但是你可能会丢失 一种特殊类型的程序。 你当然可以编写代码。 但是你不一定能, 开箱即, 转换的源代码 成目标代码,0和1 没有你的电脑是什么? 听众:编译器。 戴维·J·马兰:那么编译器吧。 现在,你们中的大多数可能 没有自己的编译器, 从来没有下载的编译器。 但是你会看到,你可以下载它 象大多数其它的软件。 在Mac OS中的世界,你可能会 下载或已下载 一些所谓的Xcode或GCC或锵。 如果你来自 Windows世界,你可能会 下载Visual Studio中, Visual Basic中,环境类的。 有几十个编译器 这些天,你可能会使用。 但是它的短这里 是,这将是一个痛苦 ,坦率地说,一个技术 噩梦数百 的人患有不同 电脑的配置,所有的 配置自己的机器 以完全相同的方式 让我们都可以在同一页上。 所以我们,相反,这样做 在CS50是我们给你 一个标准的环境中, Linux环境下这是 去看看小 这样的事情。 你会看到更多这样的 问题1规范, 将上网本星期五晚上去。 而这意味着什么 就是你从今以后 要能够 下载并安装程序 所谓的CS50电器。 而且你要下载和 所谓安装其他程序 虚拟机管理程序,它仅仅是一个 实现这一目标的假想方式。 无论你拥有Mac还是PC或 Linux的计算机或计算机的Solaris, 或什么疯狂的工作 你正在运行的系统, 你要下载一个程序 所谓的虚拟机管理程序这是 要运行CS50 电器在您的计算机上 无论您的操作系统是什么。 换句话说管理程序转换 我们的东西,以任何一种语言, 无论你说明 自己的电脑理解。 所以这是一个分层。 再次,这是一种 专题中的电脑 科学,对事物的顶部建设。 你可能有Windows。 你可能有Mac的操作系统。 但下周开始你 要下载 一个免费的软件 所谓的虚拟机管理程序。 你要下载的一块 软件名为CS50设备。 这是要在管理程序上运行, 这是要在计算机上运行。 和最终的结果是 那大家都会 有这样一个简单的窗口 这在您的Mac或PC 这给了我们所有的幻想 运行相同的操作系统, 没有任何其它 您的计算机上的影响。 你可以全屏 它与基本行为 就好像你正在运行的 所谓的Linux操作系统, 这是什么CS50 设备是基于。 因此,让我们实际使用此 现在写一个程序。 你可以写一个程序 使用Microsoft Word。 你可以写一个程序 使用文本编辑,或记事本, 或写字板,或几乎任何字 你曾经使用过的处理程序。 但现实情况是,你不应该 使用真正的这些程序。 你当然不应该使用 像Microsoft Word中,这 有大胆的面对和斜体,和 大字体和小字体, 因为电脑没有 关心任何。 所有的电脑 要关心的是 英语就像用C写的说明 所以我们会做内部 在CS50电器 被自由使用的程序 可用,它的 预先安装在此 家电,Gedit的叫。 和Gedit是只是一个超级简单 文本编辑器,像Mac OS的文字编辑, 如Windows记事本,那将 看起来有点像这样。 因此,让我们其实并不 看这个幻灯片。 但是,让我们真正进入 环境本身。 我要继续前进, 登录后,在该另一窗口, 我的CS50电器,我已经 我的笔记本电脑预装了这里。 请注意,如Windows和 Mac OS中,它有一些菜单。 像Windows却让 它在那儿,而不是 的Mac OS中,它把它在那里。 但现实是它的 所有种相同。 而在这里是一个整体 一堆软件。 有Dropbox的。 还有一大堆的配件, 图形化的程序,我们会 后来在任期问题集使用。 有建在这么一个Web浏览器 这是一个全功能的电脑 里面的电脑。 不过,我要点击这个 这里最左边的白色图标, 这对于Gedit的图标。 而且它会打开一个窗口 有三板给它, 左1,个顶个,和底部的。 现在,在这个右上角一个 我要实际编写一些代码。 因此,让我们做到这一点,。 我要去文件,保存。 你可能永远不会看到 这个特殊的窗口前。 但是,这是像Mac OS或Windows。 这只是一个窗口 所有的文件夹 我有这台电脑里面。 我要去拯救 该文件的hello.c。 我要去 未来,然后单击保存。 现在发现我有一个标签 在左上叫hello.c的。 所以,很可能 熟悉即使你不 之前使用这个特定的程序。 现在,我要在那些输入 命令相当神秘的序列 我们刚才看到的。 包括标准I / O.h。 更多关于不久。 智力主要无效,左大 撑,收花括号。 然后还有里面我觉得是 在那里我们有“世界你好”,分号。 现在保存。 因此,这是用C语言编写的程序, 写入,因此,在源代码。 但我不能只是运行此程序。 我有点想翻番 点击一个图标的地方, 但没有图标存在其他 比源代码文件。 什么,又是过程,​​现在 我需要通过运行这个文件? 听众:编译器。 戴维·J·马兰:所以编译器。 因此,在不同的计算机上你 以不同的方式做到这一点。 不过,我们已经在这里做了 在CS50电器这 代表你怎么可能 做到这一点在许多不同的系统, 是,我只是要 运行一个叫做make命令。 并作出简直是要做到这一点。 让我的程序。 因此,请打算 运行一个编译器给我。 和该程序的名称 我想提出的是你好。 现在提出的是一个程序。 并足以聪明 意识到如果我说让你好, 它会自动查找 一个名为hello.c的文件 只是因为这是 这样它的配置。 所以,当我打到现在进入这里,这 疯狂神秘的线刚刚被处决。 相信我,才 长,在短短几天, 你就会明白什么都 那废话手段。 但现在,只知道做 触发执行一个编译器的。 换句话说,它发现 编译器在我的电脑上 这就是预装 在CS50电器 我们会交给你的习题集1。 它然后把hello.c中的 输入和明显产生 0和1的输出。 并且在默认情况下它的作用是它可以节省 这些0和1在一个文件名为hello。 虽然这个语法也可能 是新的给你,只是说点 你好削减将是该 指我运行这个程序。 对于现在和至少一对夫妇 周的,几乎所有的节目 我们写将要在 黑白文本窗口。 没有鼠标,没有点击, 没有窗户,没有图标。 我们要保持简单 并专注于基本思想 一开始之前,我们得到的东西 更高的水平,例如, 喜欢打出来的游戏,我们聊 关于上周的第一场演讲。 所以,当我打在这里输入,它的 在文本仅相当于环境 要双击名为hello的图标。 你还指望意志 发生时,我按下回车键呢? 听众:这将打印的“hello world”。 戴维·J·马兰:希望 将打印的“hello world”。 事实上的确如此。 现在,有过一些 在这里神秘的语法。 让我们倒带仅售 一会儿,看看我们 无法启动只是推断 修修补补,尝试和失败, 至于什么是怎么回事。 如果我摆脱了反斜杠的n? 现在,你们中的一些谁已经 之前大概编程 立刻知道这意味着什么。 但是,对于那些你们谁已经 以前从来没有编程, 至少觉得自己是怎么回事 当我重新运行该程序更改? 所以,我要下来回到我 小黑白窗口, 是窗口,其中 我可以编译的。 我要重新编译打招呼。 我们将看到相同的 命令的神秘序列。 而我会做点斜线打招呼。 而现在的人,如果你愿意, 谁从来没有编程之前, 可能是什么不同呢? 是啊。 听众:它不会停止 印刷的“hello world”。 戴维·J·马兰:这是怎么回事to--遗憾? 听众:它不会停止打印呢? 戴维·J·马兰:不会 停止打印的“hello world”。 所以不是一个坏主意。 其他的想法? 是啊。 听众:错误讯息? 戴维·J·马兰:错误 消息确定,可能是。 还有什么? 听众:它可能打印 支架用分号呢? 戴维·J·马兰:可能打印 支架以分号为好。 所以也许这反斜线然后是一些 样的同时终止这很重要。 任何其他的想法? 因此,所有的好点子。 而事实上,这是怎么回事 为一个错误信息。 这可能是最有可能的 是在一般的答案 在接下来的几个星期 当我们学会了这里的代码。 但现在记得的电脑 只会做你告诉他们做什么。 就像可笑的花生 酱和果冻的例子。 我们人类的电脑只应该 做你告诉他们做什么。 所以在这种情况下,如果 不要告诉电脑 来移动闪烁的光标移动到 下一行,它不会做。 所以,当我运行这个程序 现在,发现其中的差别。 看起来像一个错误。 这是一个审美的错误,也许是。 但是,什么是这个不同 输出与最后一个明显? 是啊。 听众:它没有做新的生产线。 戴维·J·马兰:它没有做新的生产线。 现在,你们谁 有可能做的网页 以前,你可能知道的 BR标记或段落标记, 非常相似的精神。 Web浏览器会忽略你,直到 你告诉它该怎么做。 同样的,就像C语言写成只 会做你告诉它的事情。 这样的理由是 所有的这些例子中, 迄今为止,已经种 随便过这样的反斜线 在那里,这是手段 通过它,你表达你自己 作为新行字符,可以这么说。 您还可以种体会,也许, 这看起来有点傻 如果没有别的。 如果我想要一个新的生产线,只是 按Enter键,然后种 的屠宰一样,该代码 真的不应该擦你以正确的方式。 即使你不 真正关心在这一点上, 你会发现, 这不是一个特别 好看的一段代码。 还等什么世界 决定年前 当你想要把 光标移动到一个新行明确, 你必须明确地说, 新的生产线,反斜线ñ。 而且还有一些其他的 这样的符号。 但现在我们只 专注于反斜线ñ。 现在,让我们把节目 更有趣一点。 我要继续前进, 此时打开一个新的文件。 我要保存此为hello-1.C。 而就踢,我要 去把它放到我的Dropbox文件夹。 正如你将在CS50见 对于家电文档, 本周晚些时候的问题 设置1,我们会鼓励 您使用的Dropbox或 一些等价的服务, 因为那时所有代码的 将被自动备份。 因此,这就是为什么我 去到这个文件夹在这里。 现在我会写一 略有不同的程序。 包括标准I / O.h,INT主要作废。 然后在这里的printf,你好世界, 这也正是像以前一样。 但现在我想打印的东西 这是一个有点不同。 我想打印出来, 说,“你好,大卫。” 好吧,所以很明显, 它应该有希望 是,如果我重新编译的情况下 这个程序,重新运行它, 它会说“你好,戴维。” 但是,如果我想要的东西介绍 这种类型的变量, 容器的概念,是怎么回事 存储的D-A-V-I-D,而不是硬编码 到我的程序。 好吧,如果我开始了 做这样的事情? 字符串s,所以这是一个变量。 如果你想要一个字符串, 又名一个词或短语。 字符的顺序是什么 我们在编程调用的字符串。 我们只是去一般的呼叫 它s,因为它是一个不错的简单名称。 不过,我可以把它叫做什么。 我要说的字符串s等于 报价引文结束,“大卫,”分号。 现在我想插入 D-A-V-I-D成什么样,我打印。 和我们之前看到的传情 对一些特殊的语法屏幕 这使我们能够 替代的价值。 什么是特殊 符号几张幻灯片前? 所以个百分点。 当时它是百分比 d为十进制数。 这不似乎真的与此有关。 原来那里的 另一个百分号, 这是百分之秒,它代表 一个占位符的字符串。 所以,现在,很简单,我 要去使喂-1, 因为这个文件就是所谓的 HELLO-1.C,然后按Enter键。 我搞砸了。 这是怎么回事? 好了,这里就是我们要开始 认识到我们在这个命令 线环境中,这个 纯文字环境。 有图标上单击鼠标无 像文件夹现在。 和刚才想回来。 在哪个文件夹没有我说的 我救了我的代码? 所以Dropbox文件夹。 本来叫什么。 但它发生在被称为Dropbox的。 所以,我莫名其妙地需要双击 即,为了得到收存箱文件夹 然后送我 代码名为hello-1.C。 其实,让我继续前进,并尽量减少 这个窗口只是一瞬间。 就像Windows和Mac OS, 有在Linux下的文件夹。 有在CS50电器夹。 这只是我们马上围 自己这个文本的环境。 但是,如果我双击 对Dropbox的,注意有 是我想对文件进行编译。 但我需要这个黑白 终端窗口,可以这么说。 但是,我所需要的,因此,移动 进入该文件夹或目录。 所以稍微晦涩难懂,但 你会习惯这一点。 在Linux的世界, 这又是操作 系统我们对CS50的内部运行 电器,有一个叫做cd命令。 这意味着我可以做的光盘,空间,Dropbox的。 CD,改变目录。 右。 早在一天,当人们 发明了计算机和操作系统 像这样的系统,他们想 输入最少的按键可能。 所以,最简单的方式说 更改目录为光盘。 所以,如果我打的CD,Dropbox的空间, 察觉到曾在这里改变。 括号内的 该设备是一种 humoring我和 提醒我我在哪里。 所以打开的文件夹是Dropbox的。 如果我现在输入ls的 列表中,再次简洁, 因为人们不想 在当天L-I-S-T型背。 因此,他们反而使得LS上。 输入。 请注意,我看到两件事情,HELLO-1.C, 然后这个隐蔽的事情,源1米。 这只是我的方式说 源代码1周星期一。 这是我从下载的文件夹 CS50的网站,我今天早些时候提出 而只是把它变成了 家电提前。 但现在我们唯一 在乎的是使这一计划。 所以,当我键入make HELLO-1,回车。 该死的。 出事了。 因此,让我们取笑这个分开。 而不幸的是,这是哪里的东西 变得有点紧张,在第一, 至少,如果你已经 以前从来没有编程。 我的上帝。 我写了两行程序,并 我有四根线的错误。 那么,什么是怎么回事。 首先总是向后滚动 并发现第一个错误讯息, 因为通常情况下编译器只 弄糊涂了你和我。 编译器是非常愚蠢的。 他们只会做什么 你告诉他们做什么。 如果你迷惑他们,他们只是 要种丢了手 也许投入更多的错误信息 比实际上是相关的。 因此,让我们来看看第一个。 超级神秘的第一位。 但注意,这里的名字 文件中,我搞砸了明显。 结肠5,结肠5只指 第5行的第五个字符。 因此,字符列第五, 如果你愿意,错误。 使用未声明的标识符字符串。 您的意思是标准N? 不,我的意思是字符串。 然后它的种 复制和粘贴 我打字真的画我 注意,我搞砸了。 所以由于某些原因C, 或者至少编译器 不理解的词串。 那是因为我们和好了。 所以字符串不存在 在C CS50是什么呢, 在最初的几个星期 唯一的类, 为我们提供一些培训 轮子,可以这么说。 我们把这些辅助轮 所谓CS50.h.一个特殊的文件里 因此,这是两种文件的第二 名字中的点h上显然结束。 让我们倒带。 printf的是一个语句或函数 这显然​​是打印的东西 到屏幕上。 但是你没看到我 实现printf的,正确的。 有人年前实现的printf。 在什么样的文件,你会赌他 (或她)把实施 在printf的,对于printf的代码? 在一个叫做标准的I / O.h文件。 事实上,它可能是在 两个文件,​​标准I / O.h, 它代表头 文件和标准I / O.c, 它代表的C源代码。 于是,他或她几年前屁股 他们写道:到该文件中的代码 让我们这样的人 年后,可以将其包含, 可以这么说,在我们自己的节目。 事实上,这就是井号 其次是字,包括做。 它看起来在本地硬盘驱动器上, 发现所谓的标准I / O.h文件, 然后有效地复制和 我自己的文件里粘贴了。 所以现在我的程序知道 如何打印到屏幕上。 因此,通过这种逻辑,其中 是字符串定义? 听众:CS50.h. 戴维·J·马兰:CS50.h. 事实上,这就是我们, 核心员工,都做了。 我们已经发明了一些数据类型, 可以这么说,就像一个字符串, 除了那些你 免费获得,如一个int。 我们会看到其他类似一个char 一个字符和几个。 里面的CS50.h显然是 至少某些提字符串。 所以,现在让我先走 并重新运行化妆HELLO-1。 我会再次放大,穿过我的手指。 现在已经做了一个 改变我固定的大多数事情。 但是,该死的。 更多百分比比数据参数。 我做了什么错了这一次? 因此,它仍然是相当神秘的。 但这个错误是 7号线和21字符。 因此,让我们去看看在这里。 这是一个有点微妙。 但是如果你考虑一下 这里的基本思想是, 或许我们可以这样取笑分开。 这样的printf是函数名。 括号,迄今为止,是 就像我们把各地 我们传递的东西 作为输入的函数。 没事,只是一个 任意人会议。 使用括号。 里面的括号 我们已经把双引号, 然后像一个字符串“Hello World”。 但是在前面的例子很 简单地做我们来看看有划痕。 我们有百分之D,还有什么 是那些括号内 我叫了口头上? 是啊。 听众:所以这是你正在做什么 [听不清],从[听不清] 这是什么[听不清]? 戴维·J·马兰:没错。 因此,我们有百分之ð。 但是,我们不得不关闭 引号,顿号,计数器。 右。 我们规定我们想要的 做作为占位符。 所以,我什么都做的,是 逗号,你想要什么我把? 听众:S。 戴维·J·马兰:S, 因为本例中为 是在存储容器的名称。 那就是玻璃碗的名称。 而在此之前它是反在那 简单的刮例子中,我们看着。 所以,现在已经做了两个 变化,让我放大 并尝试再次到 编译这个程序。 现在我看到神秘的线。 但是,这实际上是 编译器的名称。 铛是编译器的名称。 让刚刚救了我 有史以来头痛 打字那么久疯狂的命令了。 所以,现在如果我不点斜线HELLO-1, 我看到“Hello,大卫。” 漂亮给人留下深刻印象,不过,对吧? 我们可以做 这个有很多更简单 而不谈变量 和CS50.h和所有的。 因此,让我们使它成为一个 更有趣一点。 除了CS50.h, 有东西像字符串 宣布,该CS50库 也有一些功能。 所以就像几年前,有人写 printf和把它在标准I / O.h 和一些其他文件。 我们的CS50的工作人员,写了一个函数 所谓的getchar,GetDouble,GetFloat, 调用getInt,GetLongLong,GetString的, 我们把这些文件里面 所谓CS50.h和CS50.c. 我们把他们的内部 的CS50设备。 而人们也可以 如果他们在网上进行下载 希望把他们在他们的 自己的电脑也是如此。 这就是说,我们已经创建 即获得来自用户的输入的功能。 我不知道,什么都 这些数据类型包括。 调用getInt是一种简单的,像 从用户得到某种方式的整数。 和GetString可能喜欢弄 一个字或从用户的句子。 因此,让我们着眼于这一点。 我要去回 家电,我要继续前进 并保存此文件,姑且称之为 它HELLO-2.C我的第二个版本。 让我们做一些改动。 这一次,而不是 硬编码大卫,这 做一个令人难以置信的一致 但给人留下深刻印象的程序, 如果我不是这样做的GetString? 现在可以看到的GetString 有一个开放的括号, 封闭的括号,因为 它不需要任何输入。 这只是去给 一个字符串从用户。 现在其他的语法词。 分号刚刚结束的代码行。 你并不需要它们无处不在。 但是,这只是意味着我 与这行代码完成。 让我移动到另一个 语句或函数。 字符串声明了一个变量。 串好像是说 给我一碗,请。 并让我把一个字符串在里面。 而现在上了等号。 什么是等号 基本上等同于? 听众:分配。 戴维·J·马兰:是的,分配的值。 所以,如果我,例如,呼叫 这个功能的GetString, 我们会在一个时刻,我们来看看 会提示输入字符串的用户。 这就好比让那么我写 D-A-V-I-D在一张纸上。 当我说的字符串 s等于GetString的, 平等并不真正意味着 相当于C语言编程。 这意味着从右侧分配 右手侧到左手侧。 所以,我已经得到了一个字符串。 和等号手段把它 在存储容器称为第 再通过这关要 printf的实际做它的事。 所以,最终的结果则是怎么回事 看起来有点不同。 让我们不要让HELLO-2。 或者可以工作。 你下沿。 让HELLO-2的工作。 点斜线HELLO-2,回车。 我似乎有无限 环什么的。 什么也没有发生。 为什么呢? 听众:它使得一个无限循环。 戴维·J·马兰:这是一个死循环。 种它等着我 实际上它提供了一些信息。 因此,让我继续前进,并键入 在大卫,然后按Enter键。 而现在它说:“你好,大卫。” 如果我再次运行它。 让我们输入罗布,“你好,罗布。” 现在,这是最糟糕的 用户界面不断。 用户显然 应该知道该怎么做。 但不管。 使用这些相同的建筑 就像在擦除块 我们可以解决这个问题,说 像你的名字吗,结肠癌, 空间,封闭报价,接近 括号,分号。 如此反复了很多 愚蠢的语法。 但是请注意,我只是增加了一个 拼图上面这一个 以上这一个。 所以,现在如果我重新运行此,HELLO-2,回车。 等待一分钟。 怎么了? 它不表现任何不同。 是啊。 听众:你没有运行make了。 戴维·J·马兰:我没有 再次运行做出了吧。 所以我改变了我的源代码。 但同样,有这么流。 通过编译源代码提供 你新的目标代码,或0和1。 所以,我需要实际 重新运行化妆HELLO-2输入。 好了,事情似乎已经发生了。 点斜线HELLO-2。 你的名字吗。 现在要清楚,这是为什么 将光标放在同一行? 没错。 我没有把反斜线 Ñ​​在这里在我的代码。 所以,现在我可以写 像Daven,回车。 我可以再次运行它,然后键入 像加布,回车, 我们得到不同的程序 一遍又一遍又一遍。 现在,最终我们将需要 使用几个不同的功能。 我们需要引入一些最终 条件,有条件做的事情。 也许循环,所以我们可以做 事情一遍又一遍。 也许这将是很好,如果我们 可以实现自己的功能, 就像我们可以实现我们自己的 printf的还是我们自己的版本的GetString的 和GetFlow,因为最终连 使用此命令行环境 我们可以做的,即使是最 视觉上有趣的东西。 事实上,总之让我做到这一点。 我要继续前进 并关闭这些窗口 在这里开这个图标, 这仅仅是一个更大的 版本的嵌入式 终端窗口。 所以Gedit的不仅 这个地方我的代码, 而且一个内置的终端窗口中, 黑色和白色的窗口,在这里我可以运行 命令。 我刚好开 一个更大的版本了。 现在,我要进入 我已经在文件夹 把事先在球场上的网站。 而且我要继续前进, 打开一个名为thadgavin.c文件, 这是别人写的。 如果我们看一下这个, 这不是种代码 我们会因为被写 这段代码的目的 是写的最漂亮的 看代码,他或她可以, 不论是否 另一个人可能永远 理解这段代码。 事实上,每一年有什么 所谓的模糊ç比赛,这 是谁写的真正的怪才 没有其他人可以读取的代码, 但是,做任何事 很简单,或真是太神奇了。 而且我们认为我们会 总结这个样子 在东西是相当惊人的 你可能已经看到过一次。 但我们将结束在这个 注意,点斜线,thadgavin。 然后,这就是等待。 这就是它的CS50。 我们会看到你在星期三。 [音乐播放]