LUCAS FREITAS:好吧,我猜 现在我们的现场。 欢迎来到CS50 Supersection。 我们是不太舒服。 我的名字是卢卡斯塔斯。 我算是CS50头转录因子。 这是劳伦。 LAUREN卡瓦略:嗨,我是劳伦。 我也头TF的CS50。 LUCAS FREITAS:今天我们只是 让公众知道你的概述 家伙已经学会了在一个星期内,有希望 给你们一个好 意义是什么你应该知道 对于问题集之一。 只是一对夫妇的公告。 首先,办公时间。 办公时间是从周一发生 周四在不同的房子 嫩伯格的每一天。 他们是为你一个非常好的资源 人来问问题, 聊到TFS,甚至交换 想法与其他同学。 所以一定要使用该资源 对你有利。 第二件事是 CS50电器。 在过去的[听不清] 你们没有真正 有一个设备。 你只是在做的一切 你的个人电脑。 但对于这个问题,你实际上有 有一个虚拟机,因此 一定要下载CS50 电器和设置它。 而第三件事是一定要 启动设置问题尽快公正 因为它更容易找到 帮助时,你在 开始的一周。 因为人们往往要等到 最后一秒启动问题集, 然后你去办公时间, 而且也有很多人。 在那里,如果你去周一,你会 一看就知道你可以倾诉的转录因子 几乎整个晚上, 他们打算超过 竭诚为您服务。 LAUREN卡瓦略:我可以只是停止 您只需一秒? 人人都能够下载 在CS50电器? 人们已经尝试过? LUCAS FREITAS:要下载,由 这样,就可以在得到指令 cs50.net/appliance。 LAUREN卡瓦略:对。 而它确实需要一些时间,我们的 系统管理员以获得您的许可 键,所以报名参加 免费试用第一。 这样,你将拥有它30天, 然后等待您的许可证密钥 这应该给它 你一年。 LUCAS FREITAS:首先, 让我们来谈谈一点点 关于CS50电器。 该CS50设备实际上是一个虚拟的 机器,你要 在你自己的电脑是运行 基本上运行另一台电脑 在你自己的电脑。 这是很酷。 而实际上它的使用无处不在。 人谁到高科技的都知道 这是所使用的所有的时间。 你呢? 可以有多个电脑 在一个设备中。 让我们来实际看看 在电器。 当你以后去的电器 注册后,你将不得不 把你的名字和登录哈佛 所以我们可以让你所有注册。 你会看到基本上是一个 壁纸,然后家庭和垃圾桶, 然后这些小图标。 这三个图标实际上是最 您可以在重要的事情 您的设备。 第一个是gedit的,这是一个文本 编辑器,就像记事本或类似 任何类型的文本编辑器。 这是我们用它来写东西只是 代码,然后做的东西吧。 第二件事,我们 这里是Chrome浏览器。 所以,如果你需要使用互联网 在家电,这是 你可以使用的东西。 而第三件事是终端, 这其实是很甜蜜的。 这类人通常都害怕 终端,因为它是这个非常 在老式的应用程序,您 只是基本型与一切 您的键盘。 有没有很多的互动 用你的鼠标。 但实际上终端 确实很不错的东西。 首先,让我们刚刚经历 一些命令,你 可以在终端中使用。 LAUREN卡瓦略:而且随时停止 我们,如果您有任何问题。 LUCAS FREITAS:是啊。 因此,我们有第一个命令 对于终端是LS。 LS的基本含义列表的一切,都是 文件及全体董事, 那我在,我在这个地方。 所以,如果我在这里做的LS,我要去看看 我有一些目录。 我的桌面上,下载, 日志和虚拟主机。 这些都是蓝色,因为他们 是所有的目录。 那么你有一些其他文件。 你有像打招呼,hello.c中,这 只是文件,而他们在 不同的颜色。 所以这是一个非常重要的命令只是 你可以看到哪些文件 并且您有目录 在该目录中 你在终端正处于。 当你看到jharvard @家电和 接着小符号那里, 波浪,那只是意味着这就是 你是在目前的目录。 LAUREN卡瓦略:所以输入ls几乎是 如单击该文件夹 列出在那里,在它表演 你们凡内容 在该文件夹。 观众:是否有文字 在hello.c中呢? LAUREN卡瓦略:哦,你不能 看到,因为它是蓝色的。 LUCAS FREITAS:它说 日志和虚拟主机。 LAUREN卡瓦略:这些都是 只是其他文件夹。 我很抱歉,这真的很难看到的。 也许如果我们关掉灯? 科尔顿,你想尝试和 找到灯的开关? 我们对此深感抱歉。 我没有去想它。 LUCAS FREITAS:但它基本上是 - 是啊,如果你能 - LAUREN卡瓦略:放大屏幕。 LUCAS FREITAS:我不知道 具有该功能。 LAUREN卡瓦略:[听不清]。 确定。 嗯,有只是很多自然 光在这个房间也是如此。 LUCAS FREITAS:让我们姑且认为 还有另外两个没有目录。 LAUREN卡瓦略:刚才我们一起承担。 这是唯一的一部分,你会 要着眼于终端。 LUCAS FREITAS:下一个命令 基本上,也许你想组织 你的文件 - 例如,所有的在一个C文件 目录,但是你没有一个 只是对于C目录中的文件呢。 你基本上可以创建一个目录 使用终端以及,这是 同样的事情,右击 并说新文件夹。 该命令创建目录,其中 是MKDIR,所以基本上“制造”和 “目录”。 然后你可以把 该目录的名称。 比方说,我想叫, 我不知道,让我们说做PSET1 这一点,我刚刚创建的目录。 让我们只检查它的存在。 所以,如果我做的LS,现在我看日志, 然后PSET1,然后虚拟主机。 所以,我有没有新的目录。 然后经过你有一个新的目录, 也许你想浏览 进去,所以下一个命令这张CD, 这只是基本上意味着去 特定的目录。 所以,如果我想去PSET1, 我可以做CD PSET1。 LAUREN卡瓦略:CD代表变更 目录[听不清]能 记住这一点。 LUCAS FREITAS:现在你看到, 而不是仅仅有jharvard 家电,我已经jharvard家电, 然后PSET1,因为它示出 我在哪里,我在这台电脑。 现在,如果我想回去 目录是这样的人之前,我 可以做一个CD点点,这只是意味着去 到我之前所在的目录, 像这样的父 目录中,基本上是这样。 现在我看到我 回jharvard。 接下来的事情,我可以做到这一点 为rm,这是删除一个文件。 例如,让我们先做LS 看看我这里有。 我有打招呼,hello.c中。 比方说,我想删除它们。 我能做的RM打招呼。 它会说“删除普通文件 你好?“我说:”是的。“现在,如果我 做LS,我看到它的 不存在了。 如果我尝试使用rm等的目录, 不过,它不会 让你做任何事情。 它会说,哎,你 不能删除一个目录。 因此,我们有这个其他都称为RMDIR, 这只是基本含义 删除目录。 我可以,例如,删除PSET1。 如果我做LS,我不 拥有它了。 这方面有任何问题吗? 没有? 是吗? 观众:你离开是很重要 一个空格之后 - 当你 开始输入的东西? LUCAS FREITAS:是啊。 如果我做喜欢的CD和目录, 我要加一个空格。 什么空间你在说什么? LAUREN卡瓦略:之间的空间 CD和[听不清]。 LUCAS FREITAS:是啊,你要 放空间,因为CD是 命令,然后在接下来的字符串 你的类型是基本的目录。 所以它就像一个参数。 是吗? 观众:当你列出,所有这些 在不同的目录,对不对? LUCAS FREITAS:是的,他们 在目录中。 观众:什么是差异 目录中? LUCAS FREITAS:他们只是 不同的文件夹。 目录是一个文件夹 在您的计算机。 观众:打开文件夹。 LUCAS FREITAS:是的,这是 刚打开的文件夹。 LAUREN卡瓦略:在这里,那些 那是蓝色的是实际的 您可以进入和目录 然后看到一堆东西,是 内,这是不幸 因为你不能真正阅读 那些蓝色。 和那些在白色的只是文件 是当前目录内。 LUCAS FREITAS:所以目录 是文件夹。 其他的都是文件。 观众:什么是命令 重设或清除呢? LUCAS FREITAS:要清除? LAUREN卡瓦略:要清除? LUCAS FREITAS:我觉得 这是“清”。是啊。 所以,你只需要输入不清楚 你的屏幕是太乱了。 还有没有其他问题? 你会学到一堆其他的 在命令只是自然的 学期,因为他们是非常有用的。 所以,现在让我们来谈谈编译。 我们谈到伪代码和 源代码和目标代码。 并且有很多代码,也许 你们是困惑的。 让我们说一下什么 当你写一个程序发生, 而你编译它,并成为 一个可执行文件。 这些都是的话,你的家伙 可能听说过,也许你不 真的知道是怎么回事。 比方说,例如,我想 编写一个程序,说:“你好。”该 ,在你的头脑的第一件事就是 有种你再想想你是怎样 要做到这一点在你的心中,并 你可能在想用英语或 其他一些语言,如自然 语言,大概。 然后你想,好吧,如果我想, 例如,编写一个程序, 说:“你好,”我会启动一个程序, 我将打印打招呼,然后我会 退出程序。 这是伪代码。 这只是基本上你想 想出的事件序列 你要做的是 能写一个程序。 那么你的源代码,并 源代码不必 特别是C。我们谈论 C语言有关的源代码,因为这是 我们正在学习的语言,但当然 代码可以是几乎任何 你有编程语言。 在学期过去了,你会 学习其他语言。 这也是源代码。 例如,在这里,这是我的源 代码,然后我包括一个 库,然后我开始 主要的,然后我打印。 和劳拉是要谈一点 所有的这一点。 因此,这是源代码。 什么是目标代码? 对象是一堆零 和的,基本上是这样。 什么情况是你一开始有 伪代码,这是全英文的。 我的意思是,你了解它。 可能是你的朋友了解 它,大多数人会 理解的想法。 但电脑是非常愚蠢的,他们 不懂英语,所以你 已翻译的到的东西, 通常译成 编程语言。 和你能想到一个编程 语言那种作为一门语言 那你告诉你的电脑怎么 说话和理解。 你基本上写的东西在 一种语言,你们俩和你 计算机理解。 这是源代码。 那么回事形式的伪代码源 代码,它是由你决定。 它基本上是你做你的方案。 但问题是, 电脑甚至不 了解编程语言。 它不明白 源代码中。 它实际上只是理解 零和一。 因此,我们有这个非常神奇的东西叫做 一个编译器,这基本上是 要得到所谓的源,你 写在你俩的语言 和你的电脑说话,现在你 要改造,在 零和一。 所以基本上什么样的编译器是 它得到的源代码,在这种情况下,C, 它是将它改造成零 和那些在计算机 理解并可以使一个 可执行文件出来。 这是否有道理? 你可以认为编译器作为 一些翻译的是 帮助您讲解到电脑 究竟什么是应该做的。 但我怎么编译。 让我们回到设备,并 让我们说,我做了计划。 首先我要创建一个目录 在这里,我要叫它 “实践”。现在,我要浏览 到该目录,所以CD的做法。 现在,我在里面练习。 现在,我要开始gedit的, 让我怎么做呢? 我可以点击这里,或者我可以只 逐字输入“gedit的,”它是怎么回事 打开我。 现在,我要输入我的程序,所以 正是我写在幻灯片。 我宣布一个图书馆。 我做整型为主,无效。 现在我做的printf,你好。 现在,我要救这一点。 让我把它付诸实践,并 我要调用这个hello.c中。 所以,现在它的保存。 如果我想编译它,其实我 可以在两个不同的地方做。 我可以做一个终端窗口, 所以这个大的,或者您也可以 用gedit,实际上有一个 终端窗口就在这里。 所以,你可以很方便地就去做 你的代码,那么你可以只输入 无论在这里,并尝试编译它。 让我怎么编译的代码? 我们有最简单的方法是使用 作,这是一个函数,它 基本上要 编译你的代码。 你只需要说做招呼,所以 “使”和该程序的名称。 哎呀。 这是尴尬的。 LAUREN卡瓦略:你能[听不清]? LUCAS FREITAS:对不起。 我没有把它保存在 正确的目录。 来练习,现在 将其保存为hello.c中。 对不起。 现在它的保存。 我只是做ls和被 确保它在这里。 好了,现在就在这里。 所以,现在如果我这样做让你好,它吐出一个 很多东西,但当时它只是给 我的另一条线的终端,它 也就是说,它是成功的。 现在如果我再这样做了LS,我竟如此 看到此文件为绿色,这是 可执行文件。 然后如果我要运行它,所有的 我所要做的就是点斜线打招呼。 它会跟你打招呼就在这里,所以 这正是我要问它。 有编制的一种方式, 这是使用铛。 铛只是一个编译器,我们有, 和它的更详细一点点 编译它。 但它的作品一样好。 所以,如果我做铛,然后邻,然后 我想给的名字 可执行文件,所以让我们说 “你好。”然后我想要的文件 编译,hello.c中。 它也将进行编译。 和你在这里的文件, 我可以执行它。 所以他们两个人的工作。 这是否有道理? 有问题吗? 观众:你能否放大 在一点点? LUCAS FREITAS:对不起? 观众:放大? LAUREN卡瓦略:我想你 只需命令加。 LUCAS FREITAS:命令是什么? LAUREN卡瓦略:命令加。 LUCAS FREITAS:号 LAUREN卡瓦略:哦,那不是 去上班,因为 - 这是因为我们设置的分辨率 对于这件事情。 LUCAS FREITAS:我不知道 认为我们可以放大。 是啊,我们不能放大。 你有别的问题? 抱歉。 观众:你能重复铛? LUCAS FREITAS:该铛? 铛的是同样的事情化妆,但 不同的是,第一次我要去 写铛,这是命令, 那么我该怎么办-0,所有的,这是 只是我们要什么 后来作为一个标志学习。 所以,只是觉得你总是 必须把邻。 然后首先,你要放 该可执行文件的文件名, 基本上,你是该文件 要创建。 所以我可以说,举例来说,的Hello2和 然后,我要编译的文件, 这是c文件。 所以这是hello.c中。 这是否有道理? 观众:你好是什么? 那是什么? LUCAS FREITAS:HELLO.C。 如果我编译它,而如果 我LS,我也有一个 的Hello2,我只是编译。 如果我尝试运行它,它会 做同样的事情为hello, 只是打印打招呼。 观众:怎么来化妆 你可以穿上后的hello.c? LUCAS FREITAS:在化妆,你 不必把。角 在化妆,你刚才说的 该程序的名称。 你不必说了。角 但对于铛,你应该。 观众:随着铛做的,你也 必须添加[听不清] LAUREN卡瓦略:是啊。 所以,你也有图书馆。 LUCAS FREITAS:是啊,这东西 我们打​​算以后使用。 这就是所谓的连接,并且我认为我们 后来去谈论它。 另一个问题? 观众:你放 点斜线铛? LUCAS FREITAS:号 点斜线只是开 可执行文件。 所以,铛,你只写“铛”,并 那么,如果你想打开 可执行文件,你只是 编译,那么你就点 削减而得名。 这是否有道理? 观众:如果你只是改变 [听不清]为Hello World,你 必须重新编译它? LUCAS FREITAS:是啊。 如果我想要说,例如,“你好 在那里,“我可以只保存了,我 只是重新编译它。 因此,让我做一个make打招呼。 如果我做你好,这将 说“你好”。有道理? 还有没有其他问题? 观众:你一定要包括 标准I / O的协调工作? LUCAS FREITAS:是啊。 标准I / O的基本 具有一个库 实现printf的。 所以,在那件事权利 顶部包括标准输入输出。 这是包括一个库, 基本上有一堆不同 工具,你可以使用。 呢? 其中printf的是那是一个函数 基本上版画 消息到屏幕上。 还有没有其他问题? 没有? 确定。 所以,现在让我们来谈谈 - LAUREN卡瓦略:我们只是 去的风格指南。 你想只找到它在这里? LUCAS FREITAS:所以我们要 谈风格。 LAUREN卡瓦略:哦,大卫 没有完成。 确定。 我们为什么不回来 风格在最后? 它实际上已更新 因为我们说话。 LUCAS FREITAS:是啊。 让我们的方式为大卫完成了。 LAUREN卡瓦略:能 我们改用什么呢? 所以我希望每个人都对 享受划痕。 不幸的是,它的时间 远离本 - 不幸的是它的时间离开 从这些漂亮的编程块 到C。但幸运的是,所有的 编程构造,你已经 在划痕一直与有 直接翻译到C,和我们 要开始学习 他们中的一些现在。 让我们谈条件先说说 在布尔表达式。 这是在运行储备 电池电量。 LUCAS FREITAS:如何是 那不工作? 确定。 你去那里,我会得到 - LAUREN卡瓦略:所以条件 重要的,因为它们使我们能够 逻辑引入到我们的节目。 这里有一个条件的例子 在一个C程序。 让我们注意如何 - 所以这种情况下块就在这里,这 printf语句将不会执行 除非内的条件 括号中,n大于0,则 计算结果为true。 现在,所有的F内的条件 语句是布尔表达式, 这意味着有 只有两个选项。 他们既可以评估为true, 或者他们可以评估为false。 所以在这里,所以这是有道理的,对不对? Ñ 大于0时,意味着它是一个正 数,这意味着它将打印 出“你选择了一个正数。” 有很多的布尔表达式 能够形成的条件与 初始化语句。 我们具有比少。 这是小于或等于。 这仅仅是一个有趣的[听不清]。 如果你想,如果它是printf的发生 大于或等于0,则 你会选择这个。 因此,平等公正的权利附加 后大于号。 相等相等,这是从不同 只是一个等号,平等平等 实际上意味着,凡是在 本左手边是一样 什么在这个右手侧 其中一个等号是什么? 什么是只是一个等号? 分配。 LUCAS FREITAS:谁说的? 是糖果? 哦,不。 抱歉。 抱歉。 你都得到糖果。 哦,好吧! 三个人得到的糖果! LAUREN卡瓦略:所以这一块就在这里 是前爆炸运营商 等号,所以这 不等于。 因此,如果这是在我的情况下, 病情的身体会 执行只有当一切在 左边是不一样的 什么是右侧。 我也可以有刚 感叹号。 实际上,我们将在一个功能看 滑动如何做到这一点可以使用。 LUCAS FREITAS:有问题吗? 没有? LAUREN卡瓦略:我们可以结合这些 布尔表达式构建更 复杂的条件语句。 所以在这里,如果凡是在左边 双杆的右手边,或 无论是在右手侧 双杆计算结果为true, 然后我们再打印出来无效。 然后到这里,如果不管的 对2的左手侧 &符号和任何的右侧 两个&符号的右手边 计算结果为true,则 我们将打印出有效的。 双条被称为逻辑 OR运算符的双连字号 所谓逻辑AND运算。 是吗? 观众:是那些刚 小写l的? LAUREN卡瓦略:号 它们实际上是 - 你知道的反弹,像 上面的回车键? 你看到了吗? LUCAS FREITAS:它实际上是一个酒吧。 LAUREN卡瓦略:它实际上是 只是两间酒吧。 观众:你可以使用 字符串相等相等? LUCAS FREITAS:号 我们打​​算以后学习 一些事。 LAUREN卡瓦略:有一个函数 您可以使用。 但你不必 担心,只是还没有。 如果我给这个程序 数字5? 什么会打印出来吗? 观众:[听不清] 有效。 LAUREN卡瓦略:有效? 是啊。 我不知道谁得到了这一点。 [笑] LAUREN卡瓦略:这是一种 吓人[听不清]。 观众:所以,双和, 这只是意味着和? LAUREN卡瓦略:是啊。 因此,5号是两个较大 比大于100 0及以下。 观众:它为什么会呢? LAUREN卡瓦略:一个是符号 其实不同的东西,它是 按位运算符,你会 后来了解。 但它的东西,实际工作 与一个给定数目的位。 LUCAS FREITAS:试想他们不 不用担心它现在。 LAUREN卡瓦略:我觉得它可能 下周就要到了。 LUCAS FREITAS:还有没有其他问题? 没有? LAUREN卡瓦略:因此,我们已经看到了一个 它阻止可单独存在,但它可以 也可以搭配和else块。 因此,在这种情况下,如果n大于 0,我们要打印出“你 拾取的正数。“一样,意味着 如果是0,或者如果它的不足 大于0,我们要打印出来, “你挑一个负数。” 这里有趣的是,这些 是互相排斥的。 还有的永远不会是一个案例 其中这与本 既可以打印出来。 我敢肯定,你曾与if / else语句 方块在刮,所以这应该是 相当熟悉。 是吗? 观众:我们是否需要之间的空间 整数n等于调用getInt然后在空间 if语句? 就像我们使用一个线[听不清] LAUREN卡瓦略:哦,这里的空间? 观众:这样,但 你双倍的空间。 没有,上去了。 上去了。 LUCAS FREITAS:只是行了? 观众:是啊。 LUCAS FREITAS:就在空行? 观众:是啊。 LAUREN卡瓦略:空行? 号 这只是一个风格的东西。 LUCAS FREITAS:这就像有时 你只是跳过一些行,以便 该代码看起来并不像 文本块巨大。 LAUREN卡瓦略:我觉得发生了什么 是,我们必须在这里留言,但我 拿出来,这样你们将有 思考的代码,而 不只是看我的评论。 一般来说,间距不会真的 影响程序的运行方式。 它更多的是一种风格的东西。 而当我们有风格指南更新 并准备去年底 supersection,我们将讨论 关于更多。 有什么东西错 这一方案,对不对? 因为0是不是真的 一个负数。 因此,让我们看看我们是否能够解决这个问题。 你大概可以想像 与此说,对不对? 如果n大于0,我们打印,“你 挑一个正数。“THEN ELSE 如果n小于0,“你挑了个 负数。“一样,”你挑 0。“ 现在,有趣的是, 这可能会永远持续下去。 你可以有一个if块中,否则,如果 块,另一否则,如果块,否则,如果, 否则,如果,否则,如果,否则,基本上 只要你想要的。 而当这样的构造, 这些都将是 互相排斥的。 是吗? 观众:那么,为什么你就不能使用 另外,如果代替[听不清]? LAUREN卡瓦略:在这种情况下,是的,我 如果可以使用另一个,这将是 精绝,因为 条件本身是 互相排斥的。 但如果条件不是唯一 相互的,这将 迫使他们从来没有两个评价, 如果是有道理的。 观众:在这种情况下,我们能否巢 第二,如果在第一,如果? LAUREN卡瓦略:如果 - 你是什​​么意思? 观众:如果这两个条件 并不相互排斥? LAUREN卡瓦略:如果条件 并不相互排斥? 但是你只想要其中的一种来运行? 观众:你只想要 如果不是别的。 LAUREN卡瓦略:是啊。 有总是会很多 的方式,你可以做到这一点。 你绝对可以嵌套它们。 而且你会在将来的幻灯片看到, 你可以有多个如果,只有一个 纷至沓来。 但是,这是逻辑上的一种方法 组织你的程序的流程。 LUCAS FREITAS:而且还有一 的事情,就是你问把 如果再另外如果。 这将很好地工作,但它的坏 设计,因为基本上,如果你 第一,如果检查,而且你注意到 的数目大于0,则 可以只是完成该程序。 你不必检查 它是小于0的,对不对? 但是,如果你做,如果,如​​果,它要检查 这两个,而如果我做,如果其他人在, 它会检查是否 它是大于0。 如果是,它不会连看 在其他行的代码。 所以你基本上是检查它像 两次不必要的,所以这就是为什么我们 如果做别的,如果。 还有没有其他问题? 观众:这样的功能 在其他的,如果是相同的 如果这只是如果? LAUREN卡瓦略:号 你究竟要看到我的未来 滑动的示例,其中它可以 是不同的。 在这种情况下,它几乎是相同的。 所以在这里,我们有多个的一个例子 if语句和 功能是不一样的 就好像我刚刚说,如果 否则,如果其他人,如果其他人。 让我们只是想想将打印 ,如果我输入数字95 到这个程序。 观众:[听不清] LAUREN卡瓦略:然后呢? 观众:[听不清] LAUREN卡瓦略:是啊。 所以在这种情况下,这些条件是 不是相互排斥的。 并且因为没有什么能阻止 从评估这种情况下,如果这 1已经有了,他们只是 一切都将打印出来。 所以,我怎么能解决这个问题? 观众:还有IFS? LAUREN卡瓦略:您可以使用其他IFS。 我可以改变顺序 这些,对不对? 如果我第一次做这个吗? 嗯,事实上,没有。 这不会对95工作。 LUCAS FREITAS:没有,只是在else IFS。 LAUREN卡瓦略:在别的IFS 将固定的。 这是否清理混乱 IFS之间和else IFS? 观众:我只是想问问你,如果 你没有使用否则,如果,它会停下来? LAUREN卡瓦略:对。 所以只有这第一个。 如果我输入的号码95,仅此 将打印出来的,它从不 会进展到别人。 LUCAS FREITAS:刚才那种想到的 它作为如果发生这种情况,做到这一点。 在else是一样,如果没有,检查 对于这一点,然后做到这一点。 因此,像他们都相互 排斥。 你不能为两个以上的。 观众:你可以使用逻辑 而对于这种情况? LAUREN卡瓦略:是啊。 这是另一种方式,我们可以 已经修正了这个问题。 我们可以定义 范围,对不对? 所以我可以说,如果n大于 大于90且小于 - 嗯,我想这其中并没有真正 无所谓,但在这里我可以说,如果 n大于80小于90。 大于70,小于80更大。 那会还努力。 [笑] LUCAS FREITAS:她是害怕。 LAUREN卡瓦略:不要怕。 LUCAS FREITAS:这不是 这将是错误的。 只是,它是不必要的 冗长。 就像在计算机科学,人们应 要尽可能简单,只要 你具备的功能。 你想要的糖果? 观众:不需要它。 LAUREN卡瓦略:你吓到 每个人,卢卡斯。 LUCAS FREITAS:对不起。 LAUREN卡瓦略:大卫还提到 在这些类switch语句。 基本上,这是怎么回事是开关 需要声明一个变量。 在这种情况下,我们正在采取一个整数。 如果整数是1,我们要 打印出来,“你挑一个小 数。“如果整数为1,”你 挑了中等数量。“如果 整数为3,“你挑了个高 号,“而且我也有一个默认的情况下, 到这里,但它没有显示 起来,这是太糟糕了。 基本上,这仅仅是 另一种语法。 我们也可以精确实现这一 同样的事情,if和else if 语句。 但是,当有很多不同 条件和许多不同的 变化你想要做什么 每个输入,这是一种选择。 所以它只是一个很好的语法就知道了。 是吗? 观众:为什么不是一个反斜杠 N的第一个? LAUREN卡瓦略:对于在那里? 有没有反斜线Ñ在那里 因为调用getInt - 如果你试试这个,它会 给你这样的提示。 给我1和3之间的整数。 如果我把背隙N,它会 带我到下一行,但我只是 希望他们键入整数 后右结肠。 你可能已经把反弹ñ。 这不是什么大不了的事。 是吗? 观众:对于此代码,这是 情况1,是因为 这是第一种情况? 因为 - LAUREN卡瓦略:不,不,不。 因此,这是给我一个整数 1到3之间。 如果n为1,我打印了。 如果我问信,我可以有 说给我的一封信 和C那么这将是案件A. 观众:[听不清]。 的情况下也只是[听不清] LAUREN卡瓦略:是的,没错。 是吗? 观众:如果你有什么想有 更多的关系式的? 所以不是说Ñ 等于1,[听不清] n是大于1的第一种情况? LAUREN卡瓦略:其实,如果我不 定义其中的一些情况下,这将 被带下去。 因此,实际上,也许这不是 你问什么。 LUCAS FREITAS:我认为她询问 的情况下为:N比0,更大的情况下, 小于0。 LAUREN卡瓦略:也许开关 声明是不是真的是你想要的东西 在这种情况下使用。 LUCAS FREITAS:switch语句是 只是值,所以你检查 该值是像这样或那样的。 所以你不能真正 把条件。 观众:如果什么人 类型的[听不清]? LAUREN卡瓦略:那将是 我的默认情况下,不幸的是 你看不到。 LUCAS FREITAS:[听不清] 让他们看到。 LAUREN卡瓦略:其实, 你知道吗? 就让我们去研究50,我会 只是放大在学习上的幻灯片 50,因为这仅仅是烦人。 所以让我真正去条件。 这只是要 取一小会儿。 好的。 所以,我很抱歉。 至少现在,我们就可以看到 一切都没有它切断。 好的。 所以,如果他们把在10,我们将默认 这里我默认情况下,我 将只打印无效的,因为我 要求他们输入一个整数 1到3之间。 还有没有其他问题? 是吗? 观众:我们先来说说案例一,案例 3,说,你希望它是所有 同样的事情,所以你选择了一个数 这不是一个中等数量。 在这种情况下,会是多余的? 你只需要改变两个文本 其中,或者会有一些 冗余? 有什么办法来组合 [听不清]? LAUREN卡瓦略:有办法 结合他们,但我相信你可以 只有结合相邻。 所以,如果我没有什么定义 对于案例二,这将 适用于这两种情况。 哦,如果我没有把任何东西的情况下 之一,这将同时适用于 案例一和二。 如果是有道理的。 观众:你能再说一遍吗? LUCAS FREITAS:确定。 如果你做了,基本上一样,你有 同样的事情,但你不把 任何事情在这里,你会无论是对 案例一案例二,做到这一点。 对不对? 如果你得到这个突破意味着 这个情况下,见好就收。 所以,这就是刹车的意思。 所以,如果我只是做了这个,你看,这是 情况之一,你只需做到这一点。 如果是情况二,它也将 刚刚来这里做。 观众:但是你能做到吗? 如果有东西 案例二[听不清] LAUREN卡瓦略:我不相信 你可以做到这一点。 我不认为你可以跳过左右。 你可以做到这一点,罗布? 我不认为如此。 观众:所以只有一个号码 可以去一案之后,对不对? 不能有案例一,逗号,二? LUCAS FREITAS:不,你不能。 你绝对不能。 LAUREN卡瓦略:我的意思是,问题是 这是一种选择,而这可能不是 适合你的使用情况,这样,那么你 在if条件会使用。 观众:那你为什么还要这么做? 开关? LAUREN卡瓦略:我会用这 如果你很确定 - 实际上,卢卡斯,被你堵。 LUCAS FREITAS:哦,对不起。 LAUREN卡瓦略:如果你有非常 您要为定义的行为 每一个输入端,这可能是一个 小比写出来更简洁 一个if语句为每一个。 观众:什么的 再次突破是什么意思? LAUREN卡瓦略:间隔意味着停止。 请记住,如果我没有这个破 在这里,我们刚刚倒下 进入下一个案例。 LUCAS FREITAS:歇手段来获得 出了switch语句。 因为如果它是1,我想 打印该离开。 我并不想检查什么。 观众:你不想 打印任何东西。 LUCAS FREITAS:是啊。 因为它是相互排斥的。 观众:而这是否只是进行 到下一个的情况下,如果第一种情况下 是不是真的? 抑或是测试所有的情况下, 在同一时间? LUCAS FREITAS:不, 检查顺序。 按顺序,是的。 还有一个问题,那我们得 继续前进,所以我们可以面面俱到。 是吗? 观众:所以对于的情况下,可以有 做了一些事情,除了只是一个? 你可以给它一个范围? LUCAS FREITAS:号 LAUREN卡瓦略:我不认为 你可以给它一个范围。 LUCAS FREITAS:你不能你 不能给它一个范围。 观众:此案是具体的 [听不清]。 LUCAS FREITAS:开关 是有点价值的。 你在做不同的事情 上的值,为特定值。 你不能做的范围,你不能 做任何事情。 它只是一个工具来查看。 LAUREN卡瓦略:大多数人不使用 十分CS50 switch语句, 但它的存在。 好的。 因此,我们要谈接下来的事情 大约是三元运算符。 这只是另一种类型 有条件的。 基本上,这是怎么回事是我 寻求的整数,如果n为 大于100,我要打印出来 “高”。如果不是的话,我要去 打印出“低”。 所以它在做什么是条件 在这里,在括号和你 一种能想到的问题 因为我问是否 这是真的还是假的。 如果这是真的,我要做到这一点首先 的事情,如果这不是真的,我 要做到这第二件事。 有关的任何问题 三元运算符? LUCAS FREITAS:只是想注意,从 大卫是,只要你有一个 条件 - LAUREN卡瓦略:我想大卫 通过实时流观看。 LUCAS FREITAS:他在干什么 生活流现在。 所以,只要你有一个条件,你 应该把花括号, 就像我们在一个开关 这里声明。 我们在这里有大括号。 不管是什么条件,你 应该也放了。 LAUREN卡瓦略:你会看到 这在风格指南。 我们实际上并不具备 风格指南现在。 我觉得大卫还在工作。 LUCAS FREITAS:他说, 它只是现在的工作。 LAUREN卡瓦略:哦,原来是现在的工作? 确定。 因此很明显,今年的风格 引导,即使你只是有一条线, 你必须把那些 大括号英寸 你不一定需要为 该程序的功能。 也许我们应该休息一下 之后的条件和直行 在风格指南来清除 一些这些东西? LUCAS FREITAS:是啊。 你有问题吗? 观众:不,我只是等待 直到风格指南。 观众:你能回去 以三元运算符? LAUREN卡瓦略:三元,是的。 LUCAS FREITAS:三元运算符是 基本上是一个的if else语句,但 而不必有两条线 检查了,如果再的 否则,你只是有一条线。 所以基本上,如果我想给一个字符串 高或低的,并且我的一个值 想要做一个高,如果n大于 100还是低,如果是少,我能做些什么 这是[听不清] 该字符串将是,然后我 问该程序是n大于100? 所以这就是为什么我有这样的表达 在括号中,然后 问号。 我问的是它大于100? 如果是这样,这将是很高的。 如果它不是,它要低。 所以基本上你认为是你问 一个问题,所以你把括号 的条件。 然后你把问号 因为你问吧。 如果这是真的,这将是 在第一个值[听不清]在这里。 如果不是的话,我打算把 值,冒号之后。 这是否有意义? 这也是东西,就像是一个 工具在C,但你不必 具体地使用它。 但是CS的人通常喜欢 因为它只是节省了线。 LAUREN卡瓦略:这是非常优雅。 它做了很多,在短短一个语句。 观众:所以百分号是 只是无论对结果 前行? LAUREN卡瓦略:哦,对不起。 这百分号实际上是 一个占位符,这个S。 在printf语句,你有这个 串在这里,这是怎么回事,以 打印出来,但你不能随便 把这个在里面。 否则,将打印 出的S字面上。 所以我们把一个百分点这里,以保持 保持这个地方什么 谈到在逗号后。 因此,对于一个字符串,你有百分之秒。 对于一个整数,百分比我。 对于浮动,百分比f。 你会看到那些为我们 看到更多的例子。 但也许你应该说说 风格指南一小会儿,现在 它的了。 LUCAS FREITAS:如果你去 cs50.net/style,你会看到 风格指南。 对于习题集,你的分数为 习题集是由范围, 而如果你做了所有的基本含义 问题设置的部分,或者如果您 尝试一些东西。 第二件事是正确,这 手段是你的程序在做什么 是应该做的,还是它 有错误,或者是它没有做什么 它应该做的。 第三件事是设计,这意味着 你实现这口井,或者是 您使用不必要的报表? 因此,举例来说,如果你想重复 一个数字的10倍,你在写一个 for循环还是你只是在做10次 相同的语句,只是在做 复制和粘贴。 这样的设计对于那些。 最后,你有风格。 风格就像判断 如果你的代码看起来 可读种漂亮,。 这只是基本含义 是你的代码可读性? 将别人谁一直在寻找有 你的代码能够了解什么 它在做什么? 它有意见之类的? 让我们来谈谈的风格, 你应该使用。 第一件事是注释。 注释是非常重要的,你的 代码,因为有时候你做 你的程序,你知道到底是什么 你想这样做,你刚开始 编码,只要输入了一堆C的,但 如果有人在看着你是 代码,他们不会要能够 了解它,因为他们不知道 是在你的脑袋的东西,比如 该pesudocode,所以也许他们会 有一个很难理解 什么代码正在做什么。 因此,注释是真正有用的解释 以人谁是在看 你的代码它在做什么,和 实际上,即使对你来说, 他们是非常有用的。 当你去努力和辛勤pset时, 你会看到,代码变得 更长的时间,然后注释是真的 所以你记住每一个重要的东西 你的程序的一部分一样。 把一个评论,你可以做一个 斜线斜线,然后写一个评论。 和整个行是注释的一部分, 不管你写下来, 它不会是 用你的代码。 这基本上就像编译器 将要忽略。 这是否有道理? 观众:你又做了什么 写评论? LUCAS FREITAS:这个? 斜线斜线? 当您键入斜线斜线,无论 是在该行的是不会 被认为是C。是吗? 观众:所以注释之后,你 刚刚进入并开始一个新行? LUCAS FREITAS:是的,没错。 LAUREN卡瓦略:斜杠斜杠 是单行注释。 LUCAS FREITAS:例如, 在这里,我们有 - 让我放大 - 例如,我在这里声明一个浮点数, 但也许,如果你只是把这个 在你的代码,就像你不知道 这是什么在做什么,其实像 有人谁的看着这个代码 将是一样,什么样的 到底是怎么回事? 如果你把一个评论说“转换 华氏摄氏度,这让很多 更有意义。 你,想,好,你是 做一个转换。 这是否有道理? 所以它只是一些帮助人们 准备好你的代码,也使 你能够组织 你的代码更好。 第二件事是,你可以做 多行注释,所以有一个 对于一帮行的意见。 相反,不必把斜线斜线 第一行注释,斜线斜线, 在第二行,依此类推,则 可以使用斜线明星。 你做的方式是,对 注释的第一行,你 要做一个斜线明星明星, 所以就是这样。 就像我们这里有初 一个程序,你通常把你们谁 是,这是什么节目呢, 和类似的东西。 这有点像一个头 对于该程序。 再次,它不是一个 编译器会关心,但 这是重要的,你知道这是什么 程序执行或其他人 知道你的程序在做什么。 这样你就凶多吉少明星明星,然后 你要做明星最后一行 削减到能够关闭 这一评论。 因此,基本上所有其它线路, 你可以只写什么,而这 一切会被忽略。 而且,正如风格,你看到 每一行都有一个明星,和所有 星星是一致的。 这些都是重要的东西,所以 你的代码看起来很漂亮。 听起来不错? 现在,条件。 什么大卫说,我们应该 居然把这些幻灯片,是 当你有任何形式的if语句 或任何种类的情况下, 你应该使用大括号表明, 这是发生了什么事情要发生 当你具备的条件。 从技术上讲,当你有一个条件 然后下一行仅仅是一个 行,你没有在技术上有 把花括号。 基本上,编译器会明白 反正是隐式的。 但对于CS50,我们要求你们把 花括号只是让你 代码更有条理 和更具可读性。 因为该代码变得更长,如果你 没有大括号和如此的。 它变得非常凌乱。 LAUREN卡瓦略:这正是 什么大卫刚指出, 在我以前的幻灯片。 它绝对有效不带花 括号,但对于文体的原因 我们要问这个 你不要把那些英寸 而当你开始运行style50, 这是一种检查50对 风格,它会提醒你做到这一点。 LUCAS FREITAS:还有一件事是 记得把花括号沿 在每一行。 所以你做什么,例如,l的。 转到下一行,开大 撑,然后你去下一行。 缩进,这是四个空格。 那么你就写什么,然后又 线,并关闭大括号。 所以,要确保这两个大 括号是在不同的线路。 观众:所以,如果这段代码有一个像 10其他IFS,这应该 有10套括号? LUCAS FREITAS:是的,为他们每个人。 是啊。 因此,如果,否则,如果,等等。 观众:你不能 按Tab键缩进? LUCAS FREITAS:我们要求您 你们用四个空格。 一些文本编辑器翻译标签 作为四个空格自动。 gedit中没有,所以你必须 做空格空格空格空格。 这也未尝一些 程序员只能做标签,有的 程序员只能做四个空格, 和其他一些人甚至做 2或3位。 这只是我们在这里问 你们做四个空格。 观众:有几乎肯定 必须是一个方式的gedit来 自动[听不清]。 像没有[听不清]这样做的。 LUCAS FREITAS:是啊。 我觉得你可以去设置。 观众:它已经这样做了这一切。 LUCAS FREITAS:它已经这样做? 确定。 因此,只要确保你 有4个空格。 观众:我们有没有把卷发 括号中的for循环呢? LUCAS FREITAS:是的。 LAUREN卡瓦略:每当你的 封装的代码块,就 请使用大括号。 而你认为我们只是之前 是拘泥于这个没有很好的 因此,如果你们干什么去了就搞定 高科技在实习的大公司, 他们会给你一个风格指南,并 他们会告诉你,这是你的 代码需要的样子。 而且即使你学会了这样的代码 这一点,也许在你的实习 你必须做一些事情 完全不同的。 他们期望你符合 他们的风格。 LUCAS FREITAS:还有一件事是 那你会注意我怎么有这样的x, 空间少,空间,0? 只要你有一个操作 - 它可以像加,减,时间,少, 更大,无论运营商 - 你必须把左边的空间 和操作者的权利。 LAUREN卡瓦略:这些都是 称为二进制操作数。 只要确保你总是空间 你的二进制操作数。 LUCAS FREITAS:这是 不是二元运算。 LAUREN卡瓦略:这是 因为它需要两个。 LUCAS FREITAS:哦,是的。 OK,开关。 首先,你必须要看到,就像 在if或else语句,你有 把花括号在它自己的行 并根据这里的大括号。 请注意,有一个空格 切换后,如果只是和其他人喜欢 我们之间有一个空格 这和括号。 所以,你必须把那个。 而且也没有空间,之后每 括号中或年底前 括号中。 所以你看,这一切都在一起, 也喜欢这里了。 是吗? LAUREN卡瓦略:我觉得 我们需要继续前进。 LUCAS FREITAS:所以这是其中的一部分, 风格指南,你必须为CS50。 一定要到cs50.net/style 并看看这个。 这些都是非常重要的 为你的风格得分。 让我回去的语句。 LAUREN卡瓦略:我宁愿 只需使用style50。 我们只是要去 直循环。 好的。 因此,让我们回到内容,现在 我们已经讨论了在风格指南。 循环,你见过他们的划痕,并 我们要谈论他们在 C. 在fo​​r循环中,有 三个部分的 声明这个for循环。 你有你的初始化中 您设置的变量。 你有你的条件,这是 检查,看东西是否是 真或假,以及是否 循环应该继续。 和你有你的更新,这 正在更新您的变数。 就让我们来简单看看一些 这个C代码的for循环在行动。 这是怎么回事是在这里的 初始化时,我们设置时i为0。 在此条件下,我们正在检查 i是否小于10。 并在更新我们 i增加。 这样会导致什么 这个循环? LUCAS FREITAS:其实,首先, 做你们知道我+ +是? 观众:由1提高。 LUCAS FREITAS:增加1,是的。 因此,这是同样的事情, 做我等于我加1。 并请注意,我们没有一个空间 在i和+之间。 所以,不要你们知道这是什么会做什么? 有人能告诉我吗? 也许得到一些糖果 正因为如此? 观众:[听不清] LUCAS FREITAS:确定。 [听不清] 显示大家以后[听不清]。 是啊,它会显示“此 是CS50“的10倍。 LAUREN卡瓦略:我想这是 在幻灯片的标题。 LUCAS FREITAS:哦,是的。 [笑] LUCAS FREITAS:没有什么帮助。 LAUREN卡瓦略:那么那些 对于循环。 我们将看到一些更多的例子 以后的循环。 但是,让我们实际来看看的 第二种类型的循环,你会遇到 在C中,它就是所谓的while循环。 在while循环中,你已经 刚刚得到一个条件。 条件是在检查 开始,如果该条件 计算结果为true,那么代码中 而该块体 将执行。 并且代码将继续 执行,只要该 条件保持为真。 下面是C中的while循环的一个例子 我们将设置数为10〜 开始的时候。 只要计数值大于0时, 我们要保持打印出此 变量在这里。 我们将递减计数和 然后再检查的条件。 打印,减量,检查 的条件了。 在这里,我们有一个涉及一个例子 早期你的问题。 我们有百分之S当我们 打印出一个字符串,而现在 我们要打印出一个int,我们有一个 %的我作为我们的占位符代替。 这些信件都应该是相当 直观,s为字符串,i为整数。 所以,如果这段代码执行时,你应该 从10倒数到0时,打印出 每个整数。 LUCAS FREITAS:你能想到的 %,因为它感觉就像一个空白 空间,然后你把这个 这里的变量在该空白。 因此,举例来说,在这里我将刚 一片空白,然后我把 算右那里, 计数的值。 这是否有道理? 难道我只是做如printf 然后报价,算什么? 将这项工作? 观众:号 LUCAS FREITAS:没有,因为它会 实际打印的字“数” 而不是打印的值。 这是你如何让它打印出值 朝向变量,而不是 可变的只是名称。 有问题吗? 观众:你为什么使用 作为反对一会儿? LAUREN卡瓦略:我会用的 循环,如果我知道到底有多少 迭代我想我的循环运行。 在这种情况下,也没有关系,因为 我的意思是,我只是想 想到一个非常简单的 例如这个幻灯片。 但让我们说,你想要的东西 坚持下去,而 - LUCAS FREITAS:例如,你 要求输入,直到人 为您提供了正确的输入。 所以像而输入不 好了,一个劲儿地问它。 还是喜欢,而你父母不给 你的钱,不断地问它。 [笑] LAUREN卡瓦略:你不知道如何 很多时候,你就必须做到这一点。 LUCAS FREITAS:因为你不 知道多少倍的 要继续下去。 LAUREN卡瓦略:但是,在一个for循环, 你需要知道多少倍。 是吗? 观众:我想弄清楚,百分比 说这是一些关于到 发生时,我的为整数, 和反斜线北 - LAUREN卡瓦略:什么意思? 谁知道反斜杠n意思? 新的生产线,是的。 没错。 LUCAS FREITAS:你能想到的 n作为新行。 LAUREN卡瓦略:尼斯。 观众:那是什么数 短跑冲刺[听不清]? LUCAS FREITAS:减计数减为 同样的事情,再加上加分,但 而不是增加, 它减少了1。 LAUREN卡瓦略:任何更多 while循环的问题? 没有? 哦,我们应该 跳过了这一点。 这是一个do while循环。 非常相似,除了在一个while循环 这种情况下,我们检查的条件后, 中的主体的代码 循环执行一次。 因此,我们执行的代码 先不管。 然后我们检查的情况下,执行 再次,如果条件为真。 你会发现自己使用这个时 你要求用户输入。 因为你总是不得不 再问一次,然后根据什么 用户输入的是,您可能需要 重新提示,如果再次问 输入是不是你 希望它是。 观众:所以它就像一个形式 供人填写。 LAUREN卡瓦略:是的,没错。 你会发现,我想,在你的第一个 PSET,你将不得不 使用做好循环收集 来自用户的输入。 观众:视情况而定, 您的while循环将倾向于运行更 往往比while循环,像 由一个或某事? LAUREN卡瓦略:如果是准确的 - LUCAS FREITAS:他们应该始终运行 时代的确切数额,你 希望它运行。 就像我们用做的,而因为我们真的 想要得到的输入至少一次。 在while循环,有时候你不想 执行它在所有,如果它不是 执行的情况。 因此它取决于设计。 我的意思是,你可以使用做,而或 而只要你的代码做了 它应该做的。 LAUREN卡瓦略:但我 认为答案给你 问题很可能是肯定的。 假设条件是假的。 在一种情况下,它会运行一次,并 另一种情况下,它会运行零次。 所以,是的。 还有什么问题吗? 是吗? 观众:可循环条件是 for循环中的变量其他条款 比[听不清]。 LAUREN卡瓦略:是啊, 它可以是任何东西。 可能是开始pset时,你 不会遇到这种情况,但 肯定它可以是任何东西。 LUCAS FREITAS:我觉得 我们在这里完成。 LAUREN卡瓦略:我们? 没有? LUCAS FREITAS:循环? 是啊。 LAUREN卡瓦略:我们不应该。 哦,我们已经完成了循环。 确定。 事实上,因为我们一直在谈论这样 多,让我们居然全部浏览 交给study.cs50.net/conditions。 而你要向下导航 对问题部件。 嗯,事实上,当人们越来越 这种设置中,CS50是研究 将是一个工具,你将转录因子 使用的部分,并且准备 你们可以使用,如果您错过的部分。 这将包含一堆幻灯片, 一些提示和技巧对每个 的话题,和一些实际问题 的解决方案。 为什么不是每个人都只是来看看 这个问题就在这里。 对不起,我应该提醒 今天的人们带来的笔记本电脑。 但是,如果你没有 一台笔记本电脑,那也无妨。 你可以只记下来的 一张纸或查看 你的邻居的肩膀。 让我们试着写一个程序, 提示用户采取了猜测, 每个家庭子女平均数 单元在美国。 这个数字是2,顺便说一下,当你 从这些例子看。 我们想打印出的平均数 在美国每个家庭的孩子,那么我们 想什么? 我们要收集的输入 从用户。 然后这取决于用户的 输入是,你要打印出 无论这是正确的 或者这是不正确的。 而第一件事,你会 看,如果你点击那个小箭头 问题插件的底部是一个 当场记下一些伪代码。 这样你就不会编程呢。 你只是让你的 思想秩序。 有谁想帮助卢卡斯 想出正确的 伪代码这个问题? LUCAS FREITAS:什么是第一件事情 我们也许应该在这里做? 你们有什么想法? 观众:[听不清] LUCAS FREITAS:是的,确定。 因此,打印。 只是说在打印这个平均值 人数? 确定。 打印的问题,让我们说。 之后我打印这个问题, 我该怎么办? 观众:获取输入。 LUCAS FREITAS:获取输入。 还有别的吗? 观众:条件。 LUCAS FREITAS:条件。 LAUREN卡瓦略:那是什么 情况会是什么? 观众:中[听不清]的数量。 LAUREN卡瓦略:对。 LUCAS FREITAS:那么我该怎么 检查的条件? 观众:如果它等于2。 Lauren的CARVALHO:如果它等于2。 没错。 LUCAS FREITAS:这有什么 否则,我应该怎么办? 观众:计数。 LUCAS FREITAS:所以,如果它是 等于2,让我们说 - 让我写,如果输入等于 2,然后我什么都 需要做的就是正确的。 然后别人,我要去 打印不正确。 还有别的吗? 没有? LAUREN卡瓦略:所以你 可以点击 - 每个人都拥有这样下来? LUCAS FREITAS:这是否有意义? 所以,现在让我们尝试编写这一点。 LAUREN卡瓦略:如果您按一下小 箭头,它实际上可以节省您的 伪代码,这实在是令人振奋的。 你可以让那些为注释如果 你要只是为了提醒自己 该怎么做。 LUCAS FREITAS:因此,例如,第一 我要打印的问题,所以 我应该如何去做到这一点,其实? printf的。 所以printf的,问题是平均 每个儿童的数量 家人在美国。 然后我会得到 来自用户的输入。 我那么如何才能做到这一点? 观众:找诠释。 LAUREN卡瓦略:调用getInt。 LUCAS FREITAS:确定。 所以先声明,对不对? 整型,姑且称之为n等于调用getInt。 而现在的情况。 所以,让我说,我要去 来看看这里的答案。 因此,首先,如果输入,这为n,等于 到 - 我应该如何去写呢? 观众:平等相等。 LUCAS FREITAS:完美。 因此n。 并请注意,我做一个空间, 等于,等于,空间,真实的。 现在我该怎么办? 东西的风格很重要。 大括号。 然后我去打印。 如何打印? printf的。 观众:难道资本化? LUCAS FREITAS:号 它应该全部小写。 所以这是正确的。 请问这足以令​​的printf 语句,还是我缺少什么? 观众:新线。 LUCAS FREITAS:新线,是的。 现在别的。 观众:是否有空间 中的printf后,还是没有呢? LAUREN卡瓦略:我们应该 检查风格指南。 观众:它不应该。 LUCAS FREITAS:应该不是,确定。 所以别的,printf的,“这是不正确的。” LAUREN卡瓦略:哎呀,你的报价。 LUCAS FREITAS:确定。 还有别的吗? 它是否好看? LAUREN卡瓦略:大家试试吧? LUCAS FREITAS:是啊,让我们来运行它。 所以它的编译,并将其 看来,它的工作原理。 让我们尝试两个孩子。 这是正确的。 现在让我们再次运行,但现在反而 把两个孩子,让我们的 说,我要去把像5。 这是不正确的。 如此看来,它的工作原理。 LAUREN卡瓦略:你为什么不向他们展示 如果你把东西会发生什么 奇怪,像一些字母。 LUCAS FREITAS:哦,是的。 让我们也检查。 如果什么用户试图一塌糊涂 与你的程序,他们只是 写的,我不知道两。 它会说重试。 LAUREN卡瓦略:所以调用getInt 是要求他们重试。 我们没有照顾 那我们自己。 LUCAS FREITAS:是啊。 所以,除非我居然把一个数字,它是 要不断地问我重试。 观众:你是怎么运行呢? LUCAS FREITAS:只要按一下 这个星号按钮。 LAUREN卡瓦略:你应该上去。 你去那里。 LUCAS FREITAS:星形 按钮就在那里。 是吗? 观众:是否提示[听不清] 与十进制数吗? LAUREN卡瓦略:我相信会的。 LUCAS FREITAS:如果它做什么? LAUREN卡瓦略:如果他们输入 在一个十进制数,我觉得 它会提示。 LUCAS FREITAS:让我们来看看。 LAUREN卡瓦略:因为 它不是一个int。 LUCAS FREITAS:是啊。 LAUREN卡瓦略:所以它不是一个int, 得到诠释将要求您重试。 观众:那么,在该代码将 提示的小数位 用户,他们必须输入 一个整数,具体一点吗? LAUREN卡瓦略:调用getInt实际上是 这样做,对我们来说。 观众:不是,我的意思是,如果我们想 进入[听不清] LUCAS FREITAS:你可以说像平均 在美国的子女数。 我不知道。 我们可以说,例如,“请 输入的整数。“ LAUREN卡瓦略:一个整数,等于 到的平均数目。 我的意思是,它只是如何 你话呢,对吧? LUCAS FREITAS:是啊。 这实际上是不可能的编码的一部分。 它是更多的像什么 你会想 写在你的程序。 观众:怎么会,我们已经运行它,如果它 实际上是在gedit中[听不清]。 而不是压着打? LUCAS FREITAS:我们会 首先编译它。 我们可以通过做凑合吧 和该文件的名称。 然后运行它,我们会做点斜线 和该程序的名称。 观众:我想我的意思是,如果 我们希望该方案以应对 他们不正确,无效的条目, 你不应该把 - LUCAS FREITAS:我们将无法 做到这一点,因为这个代码表示 重试来自获取诠释其是 一个已经实现的功能 我们通过CS50库,并且由于 它已经实现在那里,我们 不能随便[听不清]。 LAUREN卡瓦略:如果你不使用 调用getInt,那么你就可以做到这一点。 LUCAS FREITAS:是啊。 但是,如果你使用的是调用getInt,你不能。 还有没有其他问题? 观众:请问您去与像 GetFloat然后能够把 它在一个小数? LUCAS FREITAS:是啊。 观众:确定。 然后你只需输入能 飘起了一个等号 - LAUREN卡瓦略:是啊。 除了一个完全相同的 浮而不是一个int。 LUCAS FREITAS:只要把它放在这里 然后GetFloat那里。 观众:当你将 看到或已经看到 - LAUREN卡瓦略:我们有 没有得到那里。 观众: - 做与不平等 花车不[听不清] 观众:是什么分号是什么意思? LAUREN卡瓦略:分号刚 也就是说,这种说法是完整的, 我们打​​算去 到下一张幻灯片。 观众:所以这是必要的 每一次? LAUREN卡瓦略:是啊。 好了,好了,没有这些条件, 因为他们是 封装的东西。 所以基本上,如果事情是造成 你再创建一个大括号 块,不要把一个分号 在末端。 LUCAS FREITAS:但是,一切都 否则,是的。 当你完成一项声明, 把分号。 如果你忘了分号,则 编译器会得到你生气, 而你将不得不 以尝试修复它。 LAUREN卡瓦略:如果我把一个分号 在这里,将停止这一点,我 永远不会得到执行什么 内,通过的方式。 所以它的那些常见的错误之一。 观众:始终执行。 LAUREN卡瓦略:是啊。 在这种情况下,我们总是 执行里面有什么。 观众:你的风格[听不清] 附加的你,想过。 LAUREN卡瓦略:哦,这是真的。 观众:[听不清]单 行的事[听不清] 观众:是的? 观众:你可以有多个 在一个线路输入? 所以像你可以问用户 打印两件事? LAUREN卡瓦略:不使用 - LUCAS FREITAS:号 比方说,我也想 得到这个整数米。 我必须这样做,在不同的线路。 观众:如果你要运行 即,如何[听不清]? 这将打印的提示 有[听不清] 然后你会进入一个, - LAUREN卡瓦略:嗯,运行它。 我的意思是,没有什么从阻止我们 只需运行它,看到什么 会发生什么。 LUCAS FREITAS:我认为这是 要在抱怨我们 因为我们没有使用 - LAUREN卡瓦略:哎呀。 LUCAS FREITAS:它在抱怨我们的权利 现在,因为我们没有使用这个 可变的,但如果我这样做,例如, n是等于等于,和m等于 等于,那么会出现什么 发生这种情况? 什么这个节目吗? 观众:我只是想知道 它怎么会 - LAUREN卡瓦略:她只是想 要知道它的外观 像,我想,对不对? 于是花了其中之一,然后 它采取了第二个。 我认为我们应该继续前进, 因为我们多了一个 幻灯片放映去之前 - 你要拉起来的数学? LUCAS FREITAS:是啊,数学。 LAUREN卡瓦略:给 我只是一秒钟。 有几个不同的数值 在C C.数值数据变量 可以分为不同的类型, 而这些是那些你会 看到最频繁。 和int是整数。 你不能有任何小数。 在电器,它需要 32位来存储一个int。 一个浮点可以有小数。 它也需要32位来存储 一个漂浮在电器。 双是一个数字带小数 点需要64位来存储它, 这意味着你可以有 更高的精确度,因为 你可以有更多的 - 你怎么称呼它? LUCAS FREITAS:是啊,这更多。 LAUREN卡瓦略:更多地方 小数点后。 和久长是一个整数 这需要64位 其疼痛的电器。 LUCAS FREITAS:所以它可以 比整数大即可。 LAUREN卡瓦略:关于数据的东西 C语言的类型是,他们告诉你什么 样的数据可以存储 在您的变量。 他们会告诉你如何使用这个 变量在你的程序。 这是非常重要的,只是跟踪 什么样的数据类型,你正在使用的,如果 你需要转换从一个数据类型 另一个,确保你知道 究竟发生了什么时 铸造发生。 你会看到一个例子后 在上一这些幻灯片 错误可能发生。 让我们来看看C语言的一些数学和 觉得真的很用心,我猜, 这是怎么回事就当这 数学正在发生。 在第一行,有什么 发生的事情时,我x声明? 观众:你让 X要的东西? LAUREN卡瓦略:是啊。 好吧,我真的问工作 系统为32位的内存,对不对? 我在其中可以存储一个int,并 我要调用诠释x。 LUCAS FREITAS:基本上会在内存中 并发现有32个地方 位和说法,哎,我想这个空间, 它的将是名为x。 所以,你只是相当多的发现 在你的记忆的盒子 存储值对于x。 LAUREN卡瓦略:然后我初始化 x,它意味着,我只是存储 2在那个地方,那个块的价值 内存,我们问经营 制度。 而这儿正是我们正在做的是 我们实际上并声明 在一行中初始化Ÿ代替 在两行像我们一样在这里, 这也是一个完美的罚款,我们是 加1到x,和我们的存储 在y值。 LUCAS FREITAS:所以基本上这是什么 行呢,它现在发现一个盒子Y, 然后将其值,在东西 你打算把箱子里面,是 将是x的值加1。 所以它有这个方块年。 它得到x的值,看起来 在这里,看看它的2。 把它放在那里,加1,所以 它把一个3那里。 这是否有道理? 所以y是2在这种情况下。 LAUREN卡瓦略:好吧,冷静。 我们看到了一些另外,让我们觉得现在 关于分工。这里我 声明和初始化一个浮点 所谓的答案,1除以10, 然后我打印出来的答案 到小数点后两位。 并注意在这里,在我的printf语句, 当我想打印的东西两 小数位,%.2 f是 我想用。 因此,问题2只是说 我需要经过两地 十进制打印出来。 现在,什么事情要发生 如果我运行这个代码? 有没有人有一个想法? 你会打印出来? LUCAS FREITAS:什么是 我们期望得到的。 LAUREN卡瓦略:做什么 我们想,首先? LUCAS FREITAS:[听不清] LAUREN卡瓦略:0.1,是的。 但是,会打印出? 观众:[听不清] LAUREN卡瓦略:哦,不,其实。 这就是我说的是你为什么 需要保持非常谨慎的轨道 您的数据类型。 那么,什么样的数据类型是什么? 是一个int,对不对? 有没有小数位。 10也是一个int。 有没有小数位。 如果我把一个int一个int,我得到一个 INT这是不是0.1的,因为整型 不能有小数位,但只是0。 由于int只是截断 关闭小数。 LUCAS FREITAS:所以每当你做 与整数运算,你要 得到一个int作为答案。 因此,基本上,什么样的电脑 是干什么的,它的划分由1 10,连带0.1。 但随后的样子,等待,这是 应该是一个整数,所以你只要 忽略了0.1,所以它现在只是0。 LAUREN卡瓦略:所以,当我打印这个 出来,我得到0.00,而不是0.10。 LUCAS FREITAS:这是否有道理? LAUREN卡瓦略:这是一种 不幸的,对不对? LUCAS FREITAS:我们那么如何才能解决这个问题? LAUREN卡瓦略:让我们 尝试解决这个问题。 这里是哪里,我的例子 实际上铸造1 和10至浮动。 所以,现在,1已不再是一个int。 1是一个浮点数。 顺便说一句,这仅仅是个语法 当你想投的一个用于 数据类型到另一个。 你可以把数据类型 括号和有刚刚之前 您正在铸造的值。 所以在这里,我把一个浮点数由 花车得到一个浮动的答案。 是的,这将在 事实上打印0.10。 这是否有道理? LUCAS FREITAS:所以类型转换只是 从一种类型转换到另一边。 因此,浮动1实际上是1.000。 不完全是这样,但是它的东西 带小数位 这实际上是1。 这是否有道理? 是吗? 观众:如果你没有浮答案 等于1.0除以10? LAUREN卡瓦略:你究竟要 一看就知道下一张幻灯片。 这实际上是我们非常下一张幻灯片。 这实际上是一个更好的比 类型转换,我想。 因此,这两个是刚彩车通过 的事实性质,它们 有小数位。 是吗? 观众:如果你的所作所为[听不清] 除以10? LAUREN卡瓦略:其实一个浮动 一个int划分实际上给你一个 浮动,这样就会很好地工作。 等待,每个人都明白这一点? 因为这将是一个非常 大不了在PS​​ET1,其实。 是吗? 观众:你能不能快 走在红色的部分? LAUREN卡瓦略:红色部分,是啊。 卢卡斯,你想? LUCAS FREITAS:确定。 因此请记住百分比 是一个占位符。 这就像一个空格。 因此,让我们试着去了解一切 这是怎么回事。 百分比意味着它是一个占位符。 然后,你必须在F,这意味着 这个占位符是一个浮动。 我们在这里的最后一件事是 2,这意味着我想有两个 小数的浮点数。 如果我刚%F,他们就会把 一堆小数。 这样我就可以把0.2或0.1或0.5,或 什么,以及它打算把那 小数位数。 唯一的一点是,如果你把喜欢 .100或.1,000,它实际上并不是 打算把所有这些小数 因为它不具有足够的内存 有这种精度。 还有没有其他问题? 是吗? 观众:所以刚才浮动允许 你要超越的整数? LUCAS FREITAS:是的。 LAUREN卡瓦略:好了,只是浮 可以让你有小数位。 LUCAS FREITAS:它只是意味着你 现在可以有小数。 观众:为什么我们 用不完的整数? LUCAS FREITAS:为什么会 你使用整数? 也许,如果你是从0数到10, 你想实际使用一个整数。 你并不需要使用浮点数。 在某些情况下,你不 有实际 - LAUREN卡瓦略:也许你 不想小数。 LUCAS FREITAS:也许你不 想用一个浮点数。 LAUREN卡瓦略:另一件事是, 记住,无论是把一个float和int 需要32位来存储它们,也许 你不想浪费比特的 小数位。 LUCAS FREITAS:是啊。 这么喜欢,只是觉得这个问题。 你有32位为 一个int和float类型。 对于一个int,所有这些32位 去的整数部分。 如果您使用的是浮动32位,你 有正在使用这块内存部分 对数,为整数, 和正在使用的其它部分 小数位。 因此,这意味着,你不能去 非常大的数字用浮漂,因为 浮动的已经使用了很多 内存为小数位。 是吗? 观众:那第一个答案, 它到底是什么做的? 它是设置浮动平等的价值 该占位符,你可以 记得在它的下一行? 它说,浮动的答案。 LUCAS FREITAS:是啊。 因此,浮动的答案意味着你得到 现在有点桶的内存 持有浮动,这是怎么回事 被称为应答。 所以,这就是浮动的答案呢。 然后你说的内 这一点,你要放 这样做的结果。 所以你要做1.0除以 10.0,你会得到0.1,然后你把 这里面的答案。 LAUREN卡瓦略:那么在一行中,我们 声明和初始化这个浮动 所谓的答案。 LUCAS FREITAS:有趣的是,虽然 这只是一条线,它在做 多个操作。 这是Ç出租的只是一种方式 你用更少的代码。 这是同样的事情三元 运营商,你怎么可以这样做的 在一行[听不清]。 它实际上在做同样的事情, 做浮动答案,分号和 那么答案等于代替这一点,但 让你做两线的, 它就像一个快捷方式。 是吗? 观众:所以,如果你跑了这一点, 这将是0.10? LUCAS FREITAS:是的。 是吗? 观众:是回答居然代码, 或者是它只是叫什么名字? LAUREN卡瓦略:这 实际上是代码。 这就是我们要去 来命名我们的变量。 观众:所以这只是 名称[听不清]。 LAUREN卡瓦略:是啊。 我可以说浮x等于1.0。 LUCAS FREITAS:问题是, 变量的名称是 您使用的东西。 这是对你很重要。 对于实际的程序,唯一 该事项是价值,你 有桶的内部。 为什么你有变量和的原因 变量名是这样你就会知道 你处​​理的,像什么 你是什​​么样的数据 访问的时间。 但代码本身,如果你调用 它回答或提问或任何东西, 漂亮多了,也没关系。 不要紧 只要你在每一个一致 它的发生,所​​以你叫它 别的东西。 是吗? 观众:执行变量 超越函数? 就像如果你要创建一个支架 [听不清],可能你只是 [听不清]再回答? LAUREN卡瓦略:号 观众:[听不清] LAUREN卡瓦略:号 这将是在范围之外 这个特殊的变量。 而实际上,这是一种 有趣,因为当我们有 之类的东西循环或如果这些 条件下,如果你声明一个变量 在另一组大括号, 它真的只存在 在这些大括号。 观众:最后一个音符左右 在[听不清]花车。 为什么你想使用整数? 这更是一个侧面说明比 任何事情,但你的电脑 显著更好地处理整数 比它在处理浮点数。 这就像一个数量级 幅度更快。 因此,如果我们仅仅只处理了花车, 事情会是慢了很多。 LAUREN卡瓦略:其实,似乎有 要与花车的一个问题。 LUCAS FREITAS:类的原因 这一点,你能想到,就是如何以二进制 你可以表示整数 通过将0和1的。 LAUREN卡瓦略:这是 接下来的事情。 LUCAS FREITAS:确定。 真棒。 LAUREN卡瓦略:只是 持有这种想法。 LUCAS FREITAS:好的,我会 以后告诉你。 LAUREN卡瓦略:在我们到达什么 卢卡斯只是说,运营商 优先。 这是常识。 你们这样做就够了。 所以,只要有什么东西是在括号中, 它会先发生。 这是乘法的优先级 在此外, 减法,这样的事情。 因此,实际上,只是没有人要 告诉我什么头号实际 计算结果为? 对象:27。 LAUREN卡瓦略:27? 是啊。 LUCAS FREITAS:我举 糖果的人。 LAUREN卡瓦略:好吧。 怎么样二号吗? 怎么样二号吗? 对象:22。 LAUREN卡瓦略:22,是的。 我不知道谁得到了这一点。 之三? 对象:10。 LAUREN卡瓦略:10,是的。 凉爽。 所以模。 卢卡斯,你想解释模? LUCAS FREITAS:模数是这样的运营商 这实际上是一个非常有用的 一堆问题。 如果我做55模数10,它做什么 这让我们说,我想 除以10 55。 我能得到什么? 这感觉就像如果我实际上只是 这样的划分,什么是 第一次,我得到了整数? 对象:5。 LUCAS FREITAS:5。 然后余数为5,对不对? 所以它就像5次10加5。 基本上,它,它会尝试什么模 这个数除以这一个, 它看到什么是余数 分工。 LAUREN卡瓦略:因此,它只是 返回余数。 所以,排名第一的是什么? 5。 第二? 对象:3。 Lauren的CARVALHO:3。 之三? 0。 和4是1。 没错。 LUCAS FREITAS:简单,对不对? LAUREN卡瓦略:我们为什么不跳过这 仅仅因为我们没有真正的 一次,人们似乎明白了。 因此,这里就是卢卡斯 刚才讲的。 LUCAS FREITAS:另一个原因,我 将使用整数而不是浮点数是 该花车非常不精确。 他们为什么不精确? 大卫说,代表一个整数, 例如,我们使用0和 1的,对不对? 然后你基本上做 乘法,做所有这些 操作要知道什么十进制数 你有代替二进制。 现在会发生什么,如果我尝试 把小数点? 事实上,举例来说,如果我有 像3.33333多少? 这感觉就像10超过3。 我怎么来存储所有的 3就是我以后有哪些? 这真的很难,对吧? 你不能只是告诉电脑, 哎,我有一个3,和 那么你这样做,直到永远。 其实,电脑是不 足够聪明这一点。 所以基本上所有的计算机所做的就是 它试图把尽可能多的数字作为 它可以达到,你有记忆。 因此,让我们说,它要 说3.3333,就是这样。 所以它不是能够真正表达 正是浮动是什么。 LAUREN卡瓦略:我们有一个有限的数量 比特,表示不 每一个十进制数将是 能够被精确地表示。 所以在这个例子中,如果我们 打印出0.1,我们现在是印刷 出20个名额。 LUCAS FREITAS:就像我告诉 你们这些家伙,你可以​​把任何数字。 但如果你只是做了两个地方, 你会得到0.10,但如果你把20 的地方,它会告诉你一堆 的的,因为这是你可以把什么 在记忆里,对不对? 但在这里,直到0, 然后只是把它放在一个 一串随机数。 这是一种像一些 - LAUREN卡瓦略:这是因为我们 不能够代表这个十进制 精确地与数 位的,我们有。 LUCAS FREITAS:然后是 计算机基本上是 给你一个垃圾数量。 这实际上是不可能的 数的值。 观众:这是亲如 它可以得到[听不清] 使用[听不清]。 LAUREN卡瓦略:的言下之意 这是一个让我们说,而不是 为0.100014,什么的, 如果它是0.0999 - 好,好。 让我们假设实际的答案 到,这是0.9999999。 这是非常接近1,但 它不完全1。 这是0.99999。 这意味着,如果我采取0.999, 我投它为int,我得到0。 我不明白1。 LUCAS FREITAS:因为记得,铸造 从浮到整数,你只是 忽略所有的小数位。 你不理会他们。 有没有这样的东西作为围捕 或向下运行时,强制转换。 其实,有这个功能, 做四舍五入,这是非常 重要的,但你只是认为,当 你做类型转换,它只是 要删除一切。 所以,即使你有0.99999,这是怎么回事 就这样给0,如果你的类型转换 [听不清]的整数。 LAUREN卡瓦略:所以只是真正意识到 在精确的浮点 尤其是当你开始 使用花车在PSET1。 但通过应该走 提醒你这一点。 LUCAS FREITAS:实际上,它真的 难,例如,如果我这样做 浮动答案1比等于1.0 10,然后浮答案2 等于10.0比100.0。 它们是相同的号码,对不对? 0.1,对不对? 1比10或10比100。 但现在,如果我尝试看看的平等, 就像如果答案1等于回答2, 也许它不会实际去 是相同的东西。 所以彩车是有点像那个。 他们喜欢做的平等。