[Powered by Google Translate] LEXI罗斯:好,嗨,大家好。 欢迎来到第一CS50 supersection。 这将是只有一周supersections。 在此之后,你就可以与您的定期部分 分配TF。 但这个星期,我们正在做它一点点的不同 格式,虽然实际的格式,它是如何的去 在未来的一个半小时左右,将是非常 你将看到类似 其余的学期。 所以我们要做的是先在 节的一部分,你的习题集。 所以,如果你在P组,希望你有读过, 你会看到,有一部分所谓的“A组 问题“,而这些,目的是要消失了 过在你的小节。 所以,你有一个优势,在这里,你得到的 对这些概念的问题。 之后我们做到这一点,我们要在过去的两个 部分的问题,这是更潜水 到编码类型的问题。 因此,我们有你们需要几 分钟每一个问题,努力解决他们自己的,和 然后,我们将走到一起使用新的CS50 空间的工具,去的答案,所以大家有 正确的代码审查。 因此,一对夫妇的公告。 不要忘了,有办公室小时,每天晚上 安嫩伯格8日至11周,这样做 利用这些。 同时,不要一开始到本周的p设置为时已晚。 今晚或明天晚上在最新的。 你会后悔的,如果等待时间过长,开始 和遇到的​​问题。 所以,我们的建议,绝对年初开始。 这将是一个很好的方式开始使用 这些部分的问题。 所以我乐喜的方式。 我是TF。 这是丹,也是一个TF。 但布拉德利:嘿,伙计们。 LEXI罗斯:他会得到 开始用的问题。 但布拉德利:所有权利。 因此,我将只介绍几个小编译器 的问题,我们要谈的,只是经过 某种概念上的想法,我们需要以实际运行 代码,无论是在设备中或与我们的假排序 家电“,”运行“CS50和空间。 因此,让我们的观众,如果任何人有任何想法 我们在谈论什么。 那么,什么是库中代码的情况下? 任何人有任何想法吗? 好吧。 甜蜜。 观众:像股票一样的功能,别人 已编程,我们就可以建立起来吗? 但布拉德利:没错。 因此,图书馆的功能是股票,别人 已经设定,我们不必 重新实现自己。 因此,我们必须像标准I / O库, cs50.h库,这是这个世界的东西, 上网时,工作人员,使我们 作为编码器的生活更轻松。 那么,你如何打印到屏幕上的东西吗? 我不知道,printf并给我看。 这件事情已经是别人 真棒,工作得很好。 好吧。 因此,要使用库,但是,在另一方面,你有 实际做一些额外的事情与您的代码。 所以,你必须使用像这样的事情#。 那是干什么的? 什么样的角色,发挥作用时,你必须在一个程序? 观众:它可以让​​你使用的任何功能, [听不清] 通过简单地使用已经定义库 [听不清] 库。 但布拉德利:好的。 它可以让你拉你的代码库函数,但 它的方式是不完全一样像 lcs50,我们会在一分钟内。 它只是让编译器知道,嘿,有这些 功能,在你的代码要来了。 要知道,如果他们不完全在代码中 这是在你的面前,有一些库函数 要照顾。 因此,在printf输出的情况下,我们会去一对夫妇 时代的今天,是标准的I / O库。 因此,虽然我没有定义,printf的任何地方,在我的代码以往任何时候都 标准I / O需要照顾它,我会尽我的#include stdio.h中,它会在这些功能中,拉我 永远没有定义。 那么,有什么区别的话,这之间的#include 和lcs50? 什么lcs50做时,我把它传递给 编译器,如铛? 任何人有任何想法吗? 好吧。 是吗? 观众:它可以让​​你访问CS50库? 但布拉德利:它可以让​​你访问的的CS50库中 它告诉编译器,铛,嘿,这是 你真正去获得这些功能。 #因此,包括说,有 这些功能的地方。 lcs50说,这点在您的计算机 - 这是CS50库 - 拉这些功能的实际代码。 这是否有意义,大家吗? 因此,这些都是所有的东西,是来帮助你的编译器 同时使代码运行。 快速的问题。 人们知道编译器是什么? 有意义吗? 它基本上是编写的代码,你有, 将其转换为二进制数,转换成机器代码, 让您的电脑可以真正了解它。 事不宜迟,我们要进入更 实际的编码工作,你们将有一番情趣 下沉你的牙齿,和Lexi去了,。 LEXI罗斯:好吧。 真棒。 因此,我们要在这里走了过来两个问题。 因此,第一个是,你可以看到,它的一点点 小权,但本质上它要求你 写一个程序,采取一些用户输入。 我不知道为什么有一个黑色的方形。 这是神秘的。 它应该是不错的,虽然。 所以,希望您能在摄氏用户输入,转换, 为华氏温度,然后告诉用户什么温度 将在华氏。 所以,你可以看到一个示例输入/输出序列。 用户输入 - 后摄氏度,大胆指 用户输入。 因此,用户输入100,和程序输出 华氏212.0。 一个重要的区别是,我们在这个程序 只有一个小数位,所以我们会看到怎么办 这点。 还有一点要注意的是,我们正在使用a.out ,因为铛,编译器,自动命名的二进制数 a.out的文件,除非你指定它具有一定的标志,给 它自己的名字,但现在我们只是将使用 默认情况下,a.out格式。 因此,让我们实际需要几分钟的时间,并尝试写出来的 一些代码,这个自己。 因此,它是4:15。 因此,在4:20,我们会回来 - 哦,对了。 空间。 酷。 这有点像我们所说的骨架代码中, 这是一个骨架,但你必须填写的肉 计划,使它运行。 所以你可以看到的#include指令在那里,包括 CS50和stdio。 我在评论中指出,实际的换算公式。 摄氏华氏,如果你不记得从高 学校的科学或诸如此类的东西。 然后,这仅仅是一个骨架 实际的主要功能。 所以你写的一切是要去这里。 而为了真正得到这个空间 - 使CS50空间可以使用这个URL访问,丹 写在黑板上,我会决定。 但布拉德利:cs50.net/spaces-- LEXI罗斯:/ qWLc - 对不起,y坐标。 但布拉德利:Y? LEXI罗斯:不,不,不,不。 这很好。 qYLcYWfg。 所以,我要看到每个人的名字样的姿态出现在这里。 真棒。 这看上去很不错。 这意味着人们参与的空间。 所以,如果你还没有得到上场机会在 空间,但其实这是你将要使用 您的TFS第学期。 它是如何工作的,是一种每个人都写自己的 代码,没有人能看到它,直到你按下Save 按钮,我现在指向右边。 所以我打算按保存,如果你去我的名字, 你应该能够看到它的人们在这 空间是法律数据库绿柱石罗斯。 因此,它是如何去看看你点击我的名字, 你会看到修订版5, 是最新的版本。 仅复制修改到您的空间,按一下就可以了。 好的。 因此,让我们一起去通过这个问题,我 其实要在这里写的代码在屏幕上。 您可以在一点点放大。 ,然后当我这样做,你可以复制我的最新修订 到你的空间,如果你想看到最终的解决方案。 现在,空间对我有能力去和任何 你们写的,但只是因为它的代码 这么大的部分,我们并不真正具有相同的 作为一个小的讨论能力的种 节中,我们只是要经过的,我只是去 写的代码。 但可以肯定阻止我在任何时候的问题。 我们要通过种的一步,使 确保我们明白发生了什么事情,在这里的每个部分。 每个人都可以在这里看到这段文字吗? 有谁希望它变大吗? 所以我们要在这里做的第一件事是什么? 基本上好了,因为我们要输入的 用户,我们希望它是一个很好的经验,为种 用户,我们其实是想告诉他们我们正在寻找。 因此,让打印出的正是我们想要的表单上的用户。 因此,只要不打扰提高你的手,只是嘎嘎的。 的命令来打印到屏幕上的东西是什么? 观众:输出。 LEXI罗斯:真棒。 好了,所以输出。 观众:你好,乐? [听不见的? LEXI罗斯:当然。 因此我们知道printf,正如我们看到的,是经常在课堂上 命令来打印输出到标准输出流的东西。 因此,我们要问的用户输入 摄氏温度。 而现在,我们要采取的输入,他们给 我们并将其存储到变量中。 因此,我们已经学到了一点关于类型。 有人记得我们希望什么类型的变量 一个小数位? 观众:浮动。 :浮法LEXI罗斯。 是啊,真棒。 这是一个浮动。 所以。 以及我们如何去 - 大提示 - 得到 飘的用户吗? 观众:getFloat先把。 LEXI罗斯:是的。 酷。 用户可能的意思,给我们一个 负数,但我们不要担心,为了这个, 现在的问题。 你要担心,多一点点,您的 功课上的问题集。 因此,让我们假设他们给我们一个很好的数字,现在我们 实际上是将其转换成浮动在摄氏 华氏度。 因此,让我们在这里咨询我们的公式,让我们创建一个 新的变量,并把它华氏温度。 我研究的拼写。 这是一种疯狂的,我知道。 让我们依靠操作的顺序,来样做 它的工作,但我们将使用括号只是为了 完全详细的,明确的。 再除以5所以摄氏倍9。 我要放大只是一点点,所以可以适合 一条线,但对于那些谁也看不出我会再次放大, 在后面更远。 对不起。 奇怪的光标问题。 再加上32。 好了,没有任何人有任何问题,怎么把 的公式,或任何问题吗? 是啊。 观众:我们需要把输出前的持股量 左右,浮动华氏台词吗? 他们的顺序吗? LEXI罗斯:所以现在的问题是,我们需要的printf 在我们实际的持股量要求吗? 答案是我们做的。 这样一来,光标,用户可以输入自己的 持股量将出现印刷Ç后,对不对? 它是有道理的,如果你认为合理的,如 你问用户问题,那么你 接收一个答案。 所以,打印,并有一个光标,然后 用户可以键入的价值,正如我们将看到的 后来当我们演示。 是吗? 观众:我们为什么要使用浮动,而不是一个双? LEXI罗斯:所以了一倍,从本质上讲,正如其名字 意味着,为我们提供了量的两倍 为float的精度。 但通常情况下,在这个过程中,一些在C 的原因,我们要使用浮动。 这是真正的精确度,我们只需要 种基本温度转换。 通常情况下,双打更习惯在Java语言中, 花车是较为常见的所有权利,真棒。 但布拉德利:一个。 LEXI ROSS:还有一个。 是吗? 观众:你在哪里把空间酒吧? 一样,无声的空间酒吧听不见的? 这有什么关系呢? LEXI罗斯:哦,不。 因此,它并不重要。 其实,我应该把这里的另一个空间。 但是,什么事情是你是一致的 在你的代码。 所以,如果你决定使用一种风格的间距,确保 保持你整个的代码,您可能会收到风格 扣分。 因此,一致性是关键。 但布拉德利:我认为他说的是那个空间。 LEXI罗斯:哦,你正在谈论的是空间? 通过实际的C? 观众:是的。 LEXI罗斯:哦,这仅仅是个长相,对不对? 这样一来,当我们运行的代码,如果我们没有这 空间在这里,如果它看起来像这样,用户将开始 输入的数目,这将是压扁的右上 对冒号后的C,它会看起来有点 更好,如果有一个空间。 你可以看到一次,我们其实有一点点更好 运行此代码,当我们把它完成。 真棒。 是啊,还有一个问题。 观众:我必须把小数点后的一个 [听不见的? LEXI罗斯:所以你不这样做,因为为了 操作。 所以,因为华氏持股量, 左右,你不需要任何显式转换 其他号码,如浮标,但在其它 情况下,当你正在处理int类型,您可以 必须把显式转换为float的一个点。 是吗? 观众:我只是想知道如果大小写问题 像getFloat先把这些命令? LEXI罗斯:嗯,好问题。 所以现在的问题是,资本化问题在 的命令,如getFloat先把吗? 答案是肯定的,确实如此。 所以getFloat先把丹描述所说,图书馆 函数的CS50库中,它被写了作为资本 G,资本F.如果你不把它写这些国家的首都 在那里,编译器是不会明白什么 功能你指的是。 好吧。 是吗? 听众:是主总是无效的说法吗? LEXI罗斯:是的,这也是一个很大的问题。 因此,代码,你从我空间复制错误 一些更多的参数。 所以现在的问题是,是的主要功能参数 始终无效,这本质上意味着什么? 答案是否定的。 您可能会发现你的代码复制到我以前的 修订有可能看起来像什么,真正使 的感觉,现在,一些字符*的argv,argc个。 不要担心,现在,但你会发现 对他们确有差别。 但是,如果你使用的不是那种附加功能 您将了解后,无效 是完全没问题。 好的。 我们多了一个步骤,这是我们要 实际向用户显示转换后的温度是什么。 所以,再一次,我们要使用printf,让我们说f,只是 一致性的缘故。 而现在我们要做的事情有点棘手。 因此,我们要使用一个标志,或一种特殊的符号, 告诉printf只能打印一个小数位。 没有人知道发生什么,去看看 喜欢,我才打出来呢? 是吗? 观众:0.2%F? LEXI罗斯:是的,是的。 因此,实际上,这是非常亲密的。 0.01f 0.01%F,然后我们必须记住,包括 其他参数传递给printf,它本身是可变的, 为n。 最后一个步骤。 有人记得那是在我们的主函数吗? 是的,在那里。 观众:返回? LEXI罗斯:是的。 ,因为这是主函数返回的int,我们要 也可以返回的int。 DAN布拉德利:百分比需要是对另一侧。 LEXI罗斯:好吧。 对不起,伙计们。 这是一个错误。 %来自前0.01。 因此,它的0.01%F。 这是一种很难记住。 很多人都和我一样,只是看他们 当我们使用它们。 是的,在那里。 观众:为什么是0.01,而不是0.2或0.1吗? LEXI罗斯:我不知道,真的。 你知道吗? 但布拉德利:它之所以是0.01,而不是0.02,或 0.2或0.1,是相当武断的方式, 程序员最初设计的。 观众:这不是我的意思。 我没有问原因。 [听不清]的原因。 我把它写为0.2,它提供了两个 - 但布拉德利:是的。 所以,我们只想要一个。 观众:哦,好吧。 所以,你可以0.01然后。 但布拉德利:0.1也可能会工作。 0.01也是有效的。 LEXI罗斯:哦,0,如果可能显示为零 这是小于1。 但布拉德利:是的,我认为这是正确的。 因此,0.01将显示一个零,如果它不具有任何 自然会去那里。 所以,如果你是,比如说,将在100摄氏度, 出来通常在华氏212一样,212准确。 如果你有0.01,它会显示212.0,为 反对只是212。 LEXI罗斯:这是正确的。 因此,阅读它基本上是告诉printf中打印一个小数点, 如果需要打印0。 如果没有,打印小数点后第一位的位置。 但布拉德利:当我们,我们将探讨一些这方面的 实际运行的代码。 LEXI罗斯:是的。 观众:所以我把0.1。 打印零。 但布拉德利:打印零呢? 观众:是的。 但布拉德利:嗯,还行。 LEXI ROSS:酷。 好的。 此代码的问题之前,我编译和运行? 有谁在这里看到的任何错误,首先呢? 任何人看到的东西,应该是在这里吗? 如果这是你的习题集,这将是这里说的是不 现在那里? 是啊,太好了。 所以我没有意见,因为我提供的 口头的,但如果我正在写这方面的问题集,我会 一定要放的话来表明我 做,本质上,在程序中。 种你会得到一个感觉,当您移动通过 本学期,适量的注释。 您不想太冗长,把线和 行的意见,为您的每行代码,但你 也不想是不足够详细和离开 读者揣摩究竟发生了什么 你的代码是干什么的。 好了,爽。 让我们尝试运行此代码。 好了,我要一点点缩小。 酷。 所以,你会发现这里有一个播放按钮。 让我们单击“播放”。 所以,你会发现在这里,就像在规范上的问题 设置,还有就是。/ a.out的。 a.out是二进制可执行文件的名称,这是一个 只是一个文件的二进制代码组成的长字, 您的计算机正在运行。 所以,当我们的预期,我们在这里有C。 因此,调出一个数字。 观众:23。 LEXI ROSS:23。 但布拉德利:你的程序时间太长运行。 只要运行它。 LEXI罗斯:哦,是我不好。 好吧。 空间有时是挑剔的。 希望你觉得在你的脚下。 好了,23。 真棒。 是否每个人都相信吗? 酷,因为它的工作原理。 好吧。 让我们多尝试一些。 让我们在这里尝试一个边缘的情况下。 在计算机科学中,当我们谈论边缘的情况下,我们的意思是 你的程序的情况下运行,是一种非常 合理的输入或测试某些角落的边缘 在你的程序中的逻辑,这使得更多的意义时,我们 做更复杂的程序。 让我们尝试0。 真棒。 我们都知道这一点。 酷。 任何更多的问题在此之前,我谨 到下一个程序? 好了,真棒。 所以,现在,我们要 - 你只想用我的电脑? 但布拉德利:是啊,那是很容易的。 好吧,去和他谈话有关百分比。 所以,我们本质上来说,在这个未来的小运动,要 两个整数来自用户的输入,希望能为 非负分子和积极的分母和 基本上把它们输出什么出来作为一个 百分比。 所以,我们希望它是只接受非负的分子和 只接受积极的分母,不断的问 新的,如果它没有得到想要的东西。 好吗? 所以,给一个去。 LEXI罗斯:哦,是的,你想要做的 - 哦,也许人们应该将我的代码。 但布拉德利:是的。 LEXI罗斯:[听不清] 空间。 观众:我有一个问题。 如果我使用的空间,我想保存[无声] 华氏温度转换,我将它保存,然后作出新的 - LEXI罗斯:我们只是做了新的空间,或者你可能只是 要复制并粘贴到一个文本文件或 这让你拥有它。 但布拉德利:我就改变我的名字。 LEXI罗斯:所以我刚才保存的最新版本 tofahrenheit.c,所以如果你进入AAAA法律数据库绿柱石 罗斯,你可以去和复制,最新的代码,然后 在这个新的开始,我认为丹是要提供 一些骨架代码以及。 好吧。 但布拉德利:我对我的最新的修订版,所以 这是在这段时间的最顶端,是第4修订版 这将有你所需要的,以开始浏览网页。 LEXI Ross:好吧,我会复制到我的。 但布拉德利:所有权利。 我认为,如果我们要开始在这个 有人有兴趣。 LEXI罗斯:我们都感兴趣。 但布拉德利:我们要开始只是通过声明 一些变量。所以我们有一个分子,和为了 现在,我要开始它的值-1, 然后我会成立一个do-whil​​e循环。虽然 - 所以,当我需要它循环? 当我需要它不断地问 - 是吗? 听众:当它小于或等于零。 但布拉德利:为什么不能是等于零? 观众:[听不清]。 但布拉德利:是的。 因此,对于分子,而分子 小于零。 这是否有意义的人呢? 我们不断循环,而分子是小于零, 我们不断要求新的输入,并保持苛刻的,他们 输入新的东西。 因此,我将有一个小的printf在这里,非负 NUM - 。 然后,我们像以前一样做同样的事情,但我们做了 调用getInt,只是因为我们想这样做,因为 整数百分比。 因此,分子调用getInt。 好了,现在几件事情。 我需要这个-1呢? 观众:[听不清]。 但布拉德利:号 为什么不呢? 观众:因为你得到了用户的随机值。 但布拉德利:没错。 但我要声明在这里吗? 是。 为什么呢? 观众:你有,找到外循环。 否则,你不会有其余的变量 的方案。 但布拉德利:没错。 范围。 甜蜜。 这是否有意义,给大家吗? 观众:你能说更多的时间吗? 但布拉德利:好的。 所以,如果我要声明这个分子内循环,如果 我有这个,而不是整数分子的分子, 我完全摆脱, 分子就会消失。 这将不存在这个循环之外,因为一切 是这些花括号的范围内。 有意义吗? 好吧。 因此,为分母,我们做的东西非常相似的,INT 分母= - ,我不需要等于 - 做的,而在这种情况下,我该怎么想呢? 什么条件我想它还是循环的? 听众:小于或等于0。 DAN布拉德利:小于或等于0。 分母= 0。 不要忘了分号,孩子们。 所以,我们做同样的事情之前,输出一个正 分母,我们从这里得到诠释。 我们走吧。 调用getInt。 好吧。 然后在最后,我们要打印出一定的百分比。 因此,要做到这一点,我们的字符串的样子吗? printf的。 任何其他的想法,我可以在这里做什么? 是吗? 观众:也许%0.2 [听不清]。 但布拉德利:是的。 好吧。 我会开始的第一位,%.02%, 引号,逗号分隔。 我在这里要抛出一个新的,只是因为我 新的生产线一样,当我做的事情。 我这里有什么样的数学表达式? 观众:括号和浮动。 但布拉德利:好。 为什么我要在浮动吗? 观众:[听不清]。 但布拉德利:好,好。 浮动。 观众:分子。 但布拉德利:分子? 好了,所以我做浮分子。 观众:除以 - 但布拉德利:除以吗? 观众:分母。 但布拉德利:我这样做分母,还是我做的持股量 分母吗? 对象:只需分母。 但布拉德利:好的。 观众:你也可以将其乘以100。 但布拉德利:我乘上100。 观众:那么整个表达式的左右括号。 但布拉德利:是的。 好吧。 好看吗? 让我们试试吧。 -50。 好,50。 0,和100中,50%。 它的工作,就像我们想要的。 这段代码使人们的意义吗? 我要保存它,这样你就可以得到它的一个副本。 是吗? 观众:你为什么不把无声? 但布拉德利:在哪里? 观众:喜欢,当你说分母等于 [听不清]。 但布拉德利:我会在这? 为什么我之前有int? 观众:因为其他的人有整型前。 但布拉德利:哦,所以这是不是在一个循环中,正确的吗? 因此,我宣布INT分母上面的循环, ,我不,因为我是在循环 声明一群倍,它不会实际进行 在程序中其他地方。 LEXI罗斯:是的,很重要的一点要记住的是, 变量只需要申报一次。 所以,想象一下,它就像引入一个新的变量 通过调用int或者float或诸如此类的东西,成为世界 一旦宣布,所有你需要做的改变是 只是把它通过它的名字:分母,或x,或y。 你只需要调用它是一个整数只有一次。 但布拉德利:是的。 观众:你能解释其中的差别介于%d 和%f,如果你曾经声明 作为一个十进制变量? 所以DAN布拉德利:%d和%f在这里? LEXI罗斯:所以D实际上指的只是一个数字,而不是 十进制,这是一种令人费解的。 有没有实际的数据类型,称为十进制,而当你 要打印出一个int,你是指它为%d,或 % - 无论-D。 F为浮动,你会觉得它 将是我的,但它实际上是d为整数。 但布拉德利:是吗? 观众:因此,在其他程序中,为什么我们不只是做 同样的事情时,你是说华氏? 为什么我们不说,想 - ? 但布拉德利:在这里的底部? 你可以有。 这本来是完全合法的。 我想是这样做的,其他人喜欢分离 它分成不同的代码行。 无论采用哪种方式工作得很好。 怎么了? 观众:你能解释一下% [听不见的? 但布拉德利:好的,%,%。 对,我要过这。 第一个%,被称为转义字符,它只是 说这背后的东西是不实际的代码。 因此,这第一个,右,%%.02 F,所有这些%.02 f 意味着什么的printf的函数。 %%,我只是想让它实际上只是打印 百分号。 所以我不说其背后有什么重要的。 我只是说,它背后有一个百分号。 请打印出一个百分号。 所以%,则另一%。 它看起来像什么,如果你有,你能告诉观众: 浮动的基础上另一条线? 但布拉德利:哦,是的,当然。 所以我被要求出示什么样子,如果我 这浮法分子,这一切数学,另一条线路上。 所以,持股量百分比= - 我将摆脱这只是把%。 它这样做完全一样的东西,我只是 另一个变量。 观众:[听不清]。 但布拉德利:向下滚动的是什么? 观众:这样我就可以看到[听不清]。 DAN布拉德利:你看不出来吗? 观众:对不起,我是听不见的。 但布拉德利:是的。 观众:所以,如果我们要替换的转义字符, 假设我们希望有一个美元符号,而不是,只是 例如,一个美元符号后面%? 但布拉德利:不。 这只是一个美元,一个美元符号,因为一元钱 标志的printf并不意味着什么。 现在的问题是,我需要有一个转义字符 如美元符号的符号? 观众:所以相关的排序,是有任何其他情况下, 我们应该知道,当类似的百分比 符号可能意味着什么[听不清]? LEXI罗斯:是的。 不一定百分号,但反斜线,请参阅 我们如何有反弹结束的呢? 比方说,我们其实是想打印的反弹,我们就会有 逃跑 - 这是怎么回事听起来令人困惑 - 用一个反斜杠。 因此,如果我们想打印\ \,我们将 只需要输入,或者需要额外 反斜杠,另一个逃跑。 而另一人,如果我们要打印出报价 - 基本上,什么样的表示一些特别的东西 在字符串中,我们要逃跑。 因此,让我们说,我们希望有一个报价,我们会 想要做\“。 观众:它通常是一个反斜杠? 但布拉德利:这通常是一个反斜杠。 LEXI罗斯:是的。 出于某种原因,在这里,这是一个百分号。 观众:[听不清]? 但布拉德利:这家伙吗? 这是刚才说的,这件事,这里被划分为 为float的划分是为了要处理。 所以50除以100的情况下,如果我没有有 漂浮在那里,它只是为0。 这是所有想出来的,因为50除以 100,如果你不包含任何小数,0 - 小数点后的一切只是被截断。 观众:嗯, 我们为什么不把它之前分母呢? 但布拉德利:所以我们之所以不把它前面的 分母是因为当你将一些事情的时候 一个整数,它工作得很好。 的底部上有一个更大的数字 不改变任何东西。 您可以将整数就好了。 这其实并不重要。 你可以的,它不会改变任何东西。 观众:所以,如果你想小数点后三位, 你把%,0.03? 但布拉德利:是的。 如果你想,你会把%,0.03 小数点后三位。 观众:做命令,之间的区别是什么 只是在做,而在顶部? 但布拉德利:一个do-whil​​e与while循环中有两个 相当类似的命令。 唯一的区别是,你运行的代码,你可以运行 内循环一次前的代码 做任何实际的检查。 所以它的原因,我可以说没有给予分母 一个数字。 所以,如果我说整数分母,然后一边(分母= 0),甚至可能永远不会 运行里面的代码。 它会作出这样的检查,然后 - 所以在这里。 所以,如果我有这个while循环在这里,我就必须有 分母等于说,-2或数量少一些 大于或等于0,所以它会尝试运行代码 内第一。 所以一般来讲,​​你要使用一个do-whil​​e循环 而不是一个while循环,当你要求用户输入 因为运行一次代码,用户要求的东西 会给你一般是最佳的解决方案,而不是 只相信无论你把开始。 观众:做的是始终遵循的一段时间。 DAN布拉德利:一些代码块, 要执行,然后当某些条件。 LEXI罗斯:你可以把它想打破了一个命令排序 分成两部分。 这是一个DO-WHILE,不喜欢这里的做,然后我 要添加一个while,它只是一个do-whil​​e。 观众:我理解的原因,你正在使用的 两个百分比符号,但你可以给我解释一下为什么我们要 [听不清]? 但布拉德利:好的,这样一来百分号只是说 printf的,这里是一个命令,我要你 填写一些数字。 所以我希望你把它加满小数点后两位和 浮动,你会发现漂浮在结束 命令时,它的这个百分比。 这是否有意义吗? 观众:是的。 但布拉德利:好的。 听众:有什么关于do-whil​​e循环, 如果条件没有被满足,如果你得到一个 负数的分子,它只是保持 问及将继续要求用户? 但布拉德利:是的。 因此,如果还没有满足的条件的同时结束时的 做一段时间,它就会跑回来开始。 这只是一个循环。 因此,它像一个while循环,一直没有条件 达成。 它只是运行一次。 是啊。 观众:所以,如果你这样做,你能,你的同时, 把两个条件呢? 但布拉德利:可以。 这要看你问的是什么。 所以,你可以把在while循环中,如果你有两个条件 所有的布尔运算符,这听起来在某种 丑陋,但它基本上是这个分母小于或 等于零,或者返回真或假的,对不对? 它要么为零或不小于或等于。 所以,你可以做其他的布尔运算符时,会说 这也是如此,同时这也是假的。 因此,它是这样的话,分子是大于 零,对不对? 的要求,这将只循环,而分母是少 大于零,你有一个积极分子。 观众:你做两个与门,对吧? 但布拉德利:两“与”。 LEXI罗斯:我们将讨论更晚一些。 观众:如果有人不积极的投入 分母吗? 如果他们把以一种消极的分子,可以促使他们 ,就是说,把在一个非负的分子和 命令是什么? 但布拉德利:你可以的。 观众:现在它只是说,非负的分子。 将用于该怎么办? 但布拉德利:所以你有一个if条件,所以想 分子是小于零。 LEXI罗斯:你可能只是想要把它分解成多 步骤,对不对? 因此,他们把第一次的输入,我们只是说给 我们的分子或诸如此类的东西。 然后,如果他们做了错误的事情,这可能是 一个while循环,而不是一个do-whil​​e,因为我们有 我们第一次调用getInt,然后输入而 是坏的,我们一直在问他们作进一步的输入与 不同类型的文本一样,没有工作或给我们 非负的分子,而这样的事情。 但布拉德利:是吗? 观众:你怎么清除的东西,听不清] 终端? LEXI罗斯:晴间多云。 但布拉德利:是的,你可以不输入内容。 LEXI罗斯:其实,这是不是一个真正的终端。 现在的问题是,你如何清除那里的东西吗? 答案是,这是不是一个真正的终端,但让我们说你 在一个真正的终端。 清除。 哦,这是一只猫。 但布拉德利:[听不清]? 这是那一个,对不对? LEXI罗斯:不,这是我所有的东西。 但布拉德利:[听不清]。 LEXI罗斯:我们走吧。 但布拉德利:是吗? 观众:如果你有明确的工作 - 喜欢,说你运行一个程序[听不清]和它的要求 你的东西,你也不想。 你怎么了 - 但布拉德利:控制+ C? LEXI罗斯:是的。 所以,如果你正在运行一个程序的东西是不会的 你想要的和你只是想退出整个 计划,控制+ C。即使你在Mac上,苹果+ C, 控制+ C。 观众:你有正确的版本 修订更新? 但布拉德利:我认为这是保存的,不是吗? 是啊。 LEXI罗斯:这就是空间。 是啊。 我认为这是修订11。 但布拉德利:是吗? 观众:C先假设什么 变量是,如果你定义一个变量,但不指定 什么立即? 但布拉德利:所以就只接受整数到该点。 所以,如果你宣布 - 观众:如果我只是做了诠释分母分号,它 假设它是零或任何数目等于 - ? 但布拉德利:不。 所以,如果你不指定,说,INT分母为任意值, 它可以是任何东西。 这是古老的记忆,这是在该位置。 因此,它可能是负2亿元,也可能是积极的 2亿美元,与它之间的任何地方。 因此,如果你实际运行的东西,确保你 指定一个值的变量。 这,这并不重要,因为我们马上 分配的价值,但总体上说,是的。 任何其他的问题吗? LEXI罗斯:在此,我们也可以只采取一般的问题 点上的演讲材料,对材料,什么你已经 一直想知道,这是一个很好的时间来问这些。 观众:那么在演练中,Zamyla 提到ROUND函数。 你不介意详细阐述了如何实现这一点? LEXI罗斯:当然,如何实现呢? 观众:她说是圆的。 LEXI罗斯:哦,是的。 因此,只要我们每个人都有相同的单词之类的东西, 实施通常意味着真正从头开始写。 所以,我不认为她说的是书面形式的 ROUND函数。 她可能只是如何使用它。 实施有点像创建。 因此,总的来说,使用ROUND函数的时候,我们要的是我 意思是,排序的,例如, 如果你想圆。 你能不能给我多一点点的情况下,以什么 问题是吗? 观众:为了避免不精确的小数 通过他们的持股量。 LEXI罗斯:是的。 所以,问题与花车样的,我们已经提到, 因为它们存储在本机的方式, 他们不是100%准确的方式,你可能会认为 您的计算机将它们存储。 这是我很难显示一个例子,不知道什么 的背景下。 我不知道,你能想到的东西,丹? 所以,如果你问,说,数字DAN布拉德利: 大于10,你正在使用的花车,和你添加一个 每次浮动,它有时会等待,直到你 得到12,然后它会说这其实是一个数字 大于10。 的花车有一些严重的问题,只是之间的第32届 十进制和第33的地方去,所以它可能9.9999999,或 这可能是10.0000001,对不对? 它并没有真正区分两者之间的,所以,如果你 等待事情大于或等于10,则可能 那里你认为是第10个迭代。 您可能会在11日。 LEXI罗斯:从本质上讲,是的。 当你遍历了大量的花车,这时候的 不精确发生。 观众:我觉得,所以基本上,它像对p 设置,它让你在24的float值,如果你把在 4.24你需要备份的量的变化,如果你只是做 乘以100,它会转变成423 - 但布拉德利:有时,是的。 观众:所以我认为这是一样的,怎么你使用的轮 功能,使其在实际的代码,所以它不这样做呢? 但布拉德利:所以,如果你乘以424四舍五入 100,并使其转换成整数,它有时会 它423因为不精密度。 这样的事情你可以做的仅仅是添加0.0000003。 观众:但是我认为,实际上,他们想 我们使用的圆形。 但布拉德利:这一轮的功能吗? 有可能是一个数学函数,事中的 数学库。 观众:包括数学。 但布拉德利:包括,并有 可能是一个圆形的功能。 观众:就像ROUND() - ? LEXI罗斯:从本质上讲,因为要舍 最接近的仙位数。 但布拉德利:让我们拉起的手册页。 因此,一个方便的工具,如果你不知道 - 你拉了终端 - 如果你去男人数学。 LEXI ROSS:酷。 所以你可以看到,这样的人是为手动,没有人, 它可以让你看起来更多的信息,任何给定的 功能库,你可能会处理。 所以我刚才输入的男子数学。 让我放大。 但布拉德利:我们可以尝试的人圆了。 LEXI罗斯:当然。 但布拉德利:这将列出 - 男子数学会列出所有在数学库, 我们将包括。 是的,我们也有圆形的。 LEXI罗斯:我只是做了男人轮。 您可以在这里看到的提要,它说的#include 的,所以这是种stdio.h中,像cs50.h,。 它看起来像它实际上是重载,这意味着 它需要不同类型的参数,这样你就可以圆 双打或浮筒。 但布拉德利:轮与roundf。 LEXI罗斯:Roundf。 Zamyla提roundf或圆形? 观众:在演练中,它是圆的()。 但布拉德利:好了,所以她可能是使用双, 然后,相对于一个float。 好了,你就再乘以100,然后绕着它,并 你会得到的数最接近的,我想。 LEXI罗斯:Round函数返回的积分 值最接近为x四舍五入中途情况下,远离0, 无论当前的舍入方向。 所以基本上,你会想圆一次你在 一个整数值,所以你乘 100,然后是圆的。 这使更多的意义吗? 观众:在C文件中要使用该功能,你需要 摆轮浮动,就像如果你的变量被称为Q,你 摆轮(浮动)q,然后一个括号,还是可以的 你只要把圆,然后问:在括号? 因此,如果你想使用此功能DAN布拉德利: 实际上,你会采取Q,Q一浮, 或它是如何申报? 观众:Q是一个浮动。 但布拉德利:所以,如果q被声明为float,你会 只是圆,然后给IT Q。 您可能在这种情况下,将其声明为一个双。 LEXI罗斯:是的,除非你想使用roundf。 观众:我可以只使用roundf,那么q在引号? 但布拉德利:不,不报价,只需q。 观众:很抱歉,而不是引号,括号中。 但布拉德利:在括号中,是的。 LEXI罗斯:对不起,这是一个有点混乱。 还有什么问题吗? 但布拉德利:是吗? 观众:这么圆舍入为整数? LEXI罗斯:是的。 但布拉德利:是啊,轮仅四舍五入为整数。 观众:所以,如果你想有什么确切, 所需的是[听不清]乘以100,然后 除以100,如果你想 - ? LEXI罗斯:所以,如果你想要把它转换成一个十进制的形式吗? 观众:好例子,例如,[无声] 有1.25,然后按[听不清] 1.24,如果你想保持为1.25,你会 乘以100,圆,然后将它除以100 再次获得1.25? LEXI罗斯:是的。 所以现在的问题是,因为四舍五入的原因,该名男子页 说,四舍五入到最接近的整数值,这是否意味着 人会愿意再乘以100,做 舍入,再除以100,也就是说,得到正确的 美元和美分值吗? 答案是 - ? 但布拉德利:号 我的意思是,如果你只是一个浮点值,如果你开始 具有浮点值的1.25,这是怎么回事是 解释。 因此,如果你将它乘以100,再除以100, 它仍然要被解释为1.25,或 可能是1.249 ... .. 999。 LEXI罗斯:我认为这个问题是一样的,你会 乘法,然后用圆形,然后再划分,所以它就像 - 但布拉德利:是的。 我仍然不认为它改变了什么,虽然。 我认为它仍然是。 LEXI罗斯:因为圆 - 它使用的整数。 所以,如果你试图把1.25,你只得到1。 所以我觉得,为了得到这样的额外精度, 如果这是你在说什么。 观众:那么在什么情况下你使用圆,然后呢? 但布拉德利:所以在这种情况下,如果你想的话,说,数 你美分,为1.25美元,再乘以100,圆形,得到 125,把它作为是,如仙,而不是试图 将其转换成美元和美分。 LEXI罗斯:哦,是的,是的,肯定的。 观众:为什么你需要四舍五入[听不清] 但布拉德利:所以,如果你将它乘以100,然后 立即将其转换为一个整数,这是更 有用的形式,即当你处理 不精确,对不对? 因此,它可能是124.999999,所以如果你再转换到 一个整数,它只是下降下面这一切都关掉 小数。 观众:所以,它会给你[听不清]。 但布拉德利:没错,而不是125,这是 为什么要舍。 观众:很抱歉,你可以重复你说你 应该做的,而不是你不应该做的事情吗? 但布拉德利:好的。 所以,你应该做的是,如果你开始与1.25,乘 100,然后四舍五入,整数,即125或 124.9999,并获得到最接近的整数。 观众:所以,如果你圆,把它 到最接近的整数? 但布拉德利:是的。 听众:有没有办法限制的,如果你问一个浮动 要输入,有没有办法限制多少小数 地方,你可以输入一个浮到吗? LEXI罗斯:不使用的CS50的实施。 我的意思是,你可以指望多大的输入给出了 用户,但这需要一个新的实现 getFloat先把,你不需要担心,。 但布拉德利:所以,如果他们输入1.256,也就是说,你可以只 使用1.25,或者你可以做1.26。 无论哪种方式,我觉得说,你可以实施 - 观众:您可以有它四舍五入到 - 但布拉德利:为所欲为,是的,只要你做 某种形式的舍入。 还有别的吗? 没有有关舍入。 LEXI罗斯:是吗? 观众:如果我们要进行检查,看我们的风格 代码是适当的或最好的风格 它可以是诸如此类的事情,我们将在 节,或在办公时间,或者是诸如此类的事情, 我们可以张贴私人的事情,讨论,然后 求教? LEXI罗斯:所以,我们不这样做,在办公室的时间或CS50 讨论,我们不会其实你的P中预先设定 的风格,但我觉得可能是最有帮助 事情你可以做的是看例子, 应该可以发现,在第代码,这应该是 在线分发,以及演讲幻灯片, 应该是实例代码。 但是,如果你有一定的个人问题 作风问题,肯定会觉得问,CS50 讨论和办公时间,或在您自己的时间。 但是,如果它更多的是看看我的代码,这是最好的 种使用的例子和尝试适合你的代码。 我相信这是一个风格指南 - 但布拉德利:有风格指南。 风格指南是可怕的。 教你一切你需要的,它涵盖了漂亮 人类已知的每一个例子,或者至少使我知道。 还有别的吗? 好的。 酷的家伙。 LEXI罗斯:有一个伟大的日子。 但布拉德利:谢谢你能来。