>> [音乐播放]
杰森赫塞豪恩：好，大家好。
欢迎来到科。
这是CS50，我们非常 首超一节。
大家都知道，下周 规则部分将启动，
但本周我们都在一起。
>> 还有就是我自己。
我的名字是贾森。
我在计算机科学系讲师。
我们有安迪，谁是CS50的头TA。
而Scaz，布莱恩Scassellati教授， 他在计算机科学教授。
>> 我们是在耶鲁大学的CS50头。
您可以随时发送电子邮件 我们heads@cs50.yale.edu。
我们将在讲座。
我们会在办公时间。
如果有过什么我们可以 为你做，你需要什么，
随时接触到我们。
>> 那么，我们今天要做？
或者在此之前，有什么 来了这个星期？
因此，办公时间为周一，周二， 周三和周四，8：00至11:00。
还有的网站上日程。
>> 节，就像我提到的， 在下周开始。
而且你会发现这个星期什么 计时您的部分是，今天是什么日子，
和你的TA是谁。
>> 问题1在周四是由于在 中午，周五中午至深夜的一天。
是的，你有九晚了几天。
而且有九个问题集。
而且只能使用一个 每道题集下旬的一天。
是的，实际上，所有的问题 集将于周五中午。
这是所有。
所有的细节都在教学大纲。
>> 每个星期五，我们的午餐。
我们想使这个大 当然感觉有点小。
所以，欢迎您RSVP。
免费的午餐与其他 同学们和工作人员。
cs50.yale.edu/rsvp。
>> 所有这些事情， 我在屏幕上，
多，你可以找到cs50.yale.edu或 cs50.harvard.edu，如果你去哈佛
而在看这个网上。
>> 同时在这些网站上，有 一吨为你的资源。
每个讲座不仅具有视频 讲座，但也注意到。
有人将观看 讲课和做笔记给你。
所以，你可以只支付 在讲座的关注，
或者您可以使用他们的笔记/我们 笔记来补充自己的笔记。
>> 有网上的幻灯片。
源代码 - 一切 大卫都要通过讲座，
或Scaz都要通过讲座，这 源代码可在网上
还有，像我，提到影片。
>> 部分，同样地，都将被拍摄下来。
所有这些幻灯片将可用。
所有这些代码将 可为您服务。
还有的网站，短裤 CS50的工作人员花费5到10
分钟经历的主题为您服务。
其中一些人已经过 在习题中遇到。
>> 办公时间，正如我所说，星期一 至周四，8：00至11:00。
CS50研究是一个奇妙的资源。
有实际问题， 样本幻灯片，已知错误
学生喜欢碰到， 基本上对每一个主题中，我们
将覆盖在这个过程中。
>> 最后，在这张幻灯片 至少，Reference50
它给你的信息 在所有的C函数
你所能可能希望 使用和许多，许多。
>> 再次，点点点的 在屏幕的底部
是表明甚至还有 在这两个网站上更多的资源：
cs50.yale.edu，cs50.harvard.edu。
>> 那么，我们今天做什么？
首先，我想给 你的资源。
已经做了一个。
看看我们。
>> 现在，我们要投奔 数据类型和运营商C.
然后安迪会在这里和 在C中去了图书馆，printf（）的，
一个函数，你已经 熟悉或将很快成为非常
熟悉。
而且你还可以去了 条件和循环。
>> 然后最后，Scaz 会在CS50 ID。
如果你还没有鸽子在 已经在习题集1，
以及如何使用 终端和有用的命令
然后给你一些演示和 实践编码在CS50 ID。
>> 以前我跳这个 在这一侧的内容，
没有任何人有任何问题这么远吗？
太好了。
行。
更换齿轮。
>> [换档]
>> 那是我移 齿轮在手动汽车。
因此，在C数据类型，你不能只是有 一个变量x，并将它是在第10行，
的整数，说不定数字1， 第20行，一个十进制数10.5，
然后一对夫妇行 后来一个字符串，我爱CS50。
>> 在C语言中，变量只能是 一件事，只有一件事。
所以你必须给他们的类型。
而在此板上，我们 有类型的列表。
有字符，这 代表角色。
所以这是一个字母A，B，C， D.这也可以是一个空间，
或者也可以是 新行字符。
>> 有整数，这只是 数字，全numbers--或整数
rather--但没有小数。
>> 对于小数，我们有 浮点数。
浮点数 与小数的数字。
>> 再就是多头头寸，这是 本质上较长的整数。
你会发现，长 是8，而一个int是4。
我会得到，在第二。
这是因为多头可以存储连 比int多个整数可以存储。
双是一个长期的浮动。
>> 最后，我们有 串，其是一种类型的
你可能已经使用过。
如果包括包括hashtag ＃includeCS50.h在源文件中，
那么你可以使用一个字符串类型。
它实际上没有内置到C.
>> 有一对夫妇的其他类型也是如此。
但这些都是与校长的人 您将使用和遇到的问题。
c以，我又提到， 每一个变量 - 它
只能是一种类型的且只有一个类型。
这是因为C是一种静态 类型化的语言，而不是
动态类型语言 如果你创建一个变量在哪里
你可以改变什么是存储在 它在程序中去。
在这里的右手 一边，我有不同的尺寸
这些类型的字节的数据。
这样一个字符是1个字节。
这是8位。
这意味着，因为8 位有八个0和1。
我们看到这些演示在第一 周与二进制灯泡。
>> 随着8位或1个字节，我们可以 表示数字从0到255。
对。
如果所有8位均为0这是0。
如果第一位是1，这是数 1，等等，所有一直到255。
这就是为什么对于字符可以 有本质上最多255，
但是这足够覆盖所有 字符我们需要使用。
>> 对于整数，你可以0， 那么你有2到32减1。
这些都是多少选择 你有整数。
>> 长期以来，你有0 到2〜64减1。
所以，你有很多很多， 更多的选择，为多头。
>> 字符串，这是一个问号 因为这是一个悬念以后。
是啊。
我可以告诉大家的 在他们的座位边，
就像那是什么问号？
这是一个悬念。
我们将最终覆盖的大小 字符串和多谈谈字符串。
因为字符串其实是 培训车轮之一
我们在这个带上 当然，在开始
再起飞后 对，因为在C字符串
实际上指针 字符数组。
但同样，这是一个 扣人心弦以后。
在我继续前进的任何问题， 评论，这个幻灯片的担忧？
>> 行。
我一定是一个梦幻般的讲解员。
此外，当你在编程， 你要使用这些运算符。
很简单的标志，可以做简单的 操作，与你可能
已经很熟悉了。
>> 例如，在右侧 右手边，我们看到的补充。
要添加，你只是做一个加号。
所以，你可能有 两个变量x和y。
你可以在你的代码做X + Y。
也许你想用于：说你 有7号和3，
你想存储 在一个变量中称为总和。
你可以做INT的类型，空间 总和，所述变量的名字，= 7 + 3;
>> 那能店总和？
有人吗？
如果我在总和= 7 + 3。
什么将存储在总和？
你可以只喊出来。
听众：10。
>> 杰森赫塞豪恩：10！
这是完全正确的。
怎么样的总和= 7 - 3， 我只是用了几许的迹象。
这是怎么回事存储？
听众：4。
杰森赫塞豪恩：4。
总和可能是错误的名字 该变量，但4将被存储。
>> 为了繁衍C，使用小 明星的性格，你不使用X。
来划分，使用前向 斜线而不是分裂的象征。
而对于模，使用百分比符号。
>> 所以我们可以说我想看看INT Z = 7％3，什么将被存储在Z'
所以，这是本质 问是什么模办？
有谁知道什么模呢？
是啊。
Y 4。
扬声器1：这是余数。
杰森赫塞豪恩：它是 其余的，当你划分。
所以7除以3余数2 1。
所以1将存储。
>> 你做减法， 但它是如何工作。
这就是模运算符一样。
它需要通过一些它除以 其他号码，并返回到你
其余的。
如此反复，7％，3为您提供了1，因为 7 3 2 1余分，
和返回余。
>> 那么，让我们回到了 一步到位的除号。
如果我做了7 /除以3不 任何人都知道这是什么会回来？
>> 扬声器2：2。
>> 杰森赫塞豪恩：为什么2，而不是2.333？
>> 扬声器2：我觉得它削减 关闭整数之后。
杰森赫塞豪恩：所以 这是完全正确的。
在C语言中，如果你做了分工 两个整数7除以3，
它得到了答案， 在这种情况下，2.3333永远
它认为，小数点和 小数点后挑起大梁事事休
它只是返回2。
>> 所以，如果我做了8除以3。
实际上，我们知道 这回2.666，
但在扒事事休 十进制，截断了这一切，
而刚刚返回给你2。
因此，6除以3，7分 3，8除以3，
都将回报给你2。
>> 任何人都不会知道，或者有一个猜测， 至于我怎么能真正得到
完整的答案，如果我想要那个小数点？
是啊。
前进。
扬声器3：使用浮动？
杰森赫塞豪恩：你是什么意思？
扬声器3：因为你说的 浮动是数字[听不清]
杰森赫塞豪恩：对。
所以，这是完全正确的。
图7是一个整数。
但是，如果我想反过来说 成浮点数，
我将不得不存储 作为7.0，因为计算机
真是stupid--我们看到， 用PB和J example--
它只会做完全 你告诉它。
>> 所以，如果你写的7，它 认为这是一个整数。
如果你写7.0，即使我们 知道那些东西是相同的，
它把那像 浮点数。
所以，如果你没有7.0分 3，或除以3.0，
它会说，好了，现在 我们正在处理的花车。
我会回报给你2.333333永远。
但不是真的永远，因为 因为我们也看到在讲座中，
这些浮点数 并不完全精确。
>> 所以，如果你想要的小数， 或小数的一部分，
那么你必须use--其中之一 必须是一个浮点数
和计算机必须了解 这是一个浮点你
处理，而不是一个整数。
在该表上的任何问题 右手侧，到目前为止？
或者你的左边，你的 离开了，你的左手边。
是啊。
扬声器4：对。
对于就像一个普通的 整数，你会
写 - 将你写浮动？
>> 杰森赫塞豪恩：是这样。
好吧，如果你想创建 一个变量，它是一个浮动，
你需要说浮法 z等于什么。
>> 扬声器4：确定。
>> 杰森赫塞豪恩：但是，如果我想 做7除以3，并获得了小数，
我会做浮动Z = 7.0 / 3.0;和 这会给我的浮点
号。
>> 扬声器4：确定。
>> 杰森赫塞豪恩：如果我这样做 像INT Z = 7/3，
这会给我一个整数， 因为这些都是整数。
那有意义吗？
>> 扬声器4：是的。
>> 杰森赫塞豪恩：OK。
太好了。
有关该表的任何其他问题？
真的吗？
我太激动了。
行。
>> 所以，你会使用一些其他的东西， 经常在条件或循环，
是这些类型的operators-- 这些类型的布尔表达式。
当我们了解到，==就是你 用它来检查，​​如果两件事情都是平等的。
>> 所以在这里我检查如果x == Y，让我们 再次假设x是7和y为3。
所以，如果我写了7 == 3，什么 将返回给我吗？
这是真的还是假的？
>> 听众：假。
杰森赫塞豪恩：OK。
我觉得每个人都可以得到这一个。
所以每个人，那能回来吗？
听众：假。
杰森赫塞豪恩：假。
太好了。
7不等于3。
因此，7 == 3将返回false。
你有没有等号，所以如果我 被查7！= 3，那能回来吗？
听众：真。
杰森赫塞豪恩：真。
优秀的。
有人很言之凿凿 背部和理解。
然后，你必须小于运算符， 小于或等于操作员，
大于运算，更大 于或等于操作员。
>> 因此，人们更全面的检查。
如果我有7大 大于或等于3。
那能回来吗？
>> 听众：真。
杰森赫塞豪恩：真。
是。
这回房，背面 房间的，梦幻般的。
您可以将这些 表达式如果你喜欢，还有，
带有逻辑AND这是 &&或逻辑OR这是||
||。
所以现在你可以测试两个 事情together--是不是可笑吗？
这是为什么笑？
>> 所以，如果我想，我能说的是7 大于3与2小于4？
好吧，如果7大 比3，这是事实。
2小于4，这是事实。
所以，这整个事情将返回true。
>> 如果我测试了7比3和 - 我只是挑选随机数这里 -
4小于2，好，这是假的。
所以真假作出虚假。
你可以去和你结合的 很多条件在一起，你想。
>> 没有任何人有任何问题， 评论，关注这么远吗？
而且我看你拍照的一些 在屏幕上，这是我感激我。
但愿，这不是Snapchat。
我们希望，这对你的笔记。
但所有这些都将 要在网上提供。
所以，你不必 利用这一图像。
就像我提到的，应有尽有 会为你在网上提供。
行。
我即将得到 台下，所以是否有人
不想多说什么 在此之前，会发生什么？
有问题吗？
>> [插入VOICES]
>> 杰森赫塞豪恩：哦，停下来。
你们是太好。
行。
我要挂牌。
我们走吧。
>> ANDI彭：我们要做的 现在是一个尴尬的MIC变化。
>> 杰森赫塞豪恩：我 要采取这一关。
ANDI彭：欣赏支持，伙计们。
你能听到我吗？
好了吗？
完善。
美丽。
让我掖了研究。
行。
所以，我要做到像一个巨大的 信息倾倒在你们现在。
而且没有任何后顾之忧，如果你 不继的每一个小线是什么
我要告诉你。
正如杰森说，一切 完全联机。
只要我们将尝试引进 大家的概念覆盖
在一些幻灯片。
所以只要跟着。
不，如果你不明白的忧虑 一切;然而，如果在任何点
你觉得失落，提高你的 另一方面，我们就会停止，无后顾之忧。
酷。
>> 所以，我认为有些事情，大卫有 已经种提到讲座
那种和贾森已经暗示 今天是一个图书馆。
因此在编程时，我们有 这些东西叫做库。
其中，从本质上讲，所有的 他们只是一组
的功能，即 本质上只是代码的
已经被写入由 别人说我们都可以
我们的程序中使用。
>> 那么，如何正常 图书馆的工作，对不对？
你进入图书馆的门。
你把所有这些 书籍可以拉出来
您可以访问信息 在那些书。
同样的事情在编程。
>> 你有一个已经库 写了由其他人。
而这样就可以了， 作为程序员或学生，
可以访问该库 通过包括hashtag的#include。
>> 例如，在C我们 有三个C--最
常用的三C标准 libraries--输入/输出库，
串库， 和数学库。
>> 所以，在你的第一个 夫妇习题集，
那些将三个 那你主要使用。
因此，大卫已经 讲座中解释说，
标准I / O库，或 标准输入/输出库
正是这么做的。
它可以让你在你的代码，输入 从用户和输出任何
到屏幕上，基本上 它打印到屏幕上。
>> 所以，任何时候你使用任何功能， 例如函数printf（），其
我们要投奔的下一张幻灯片， 一定要包括标准I / O
库要不然你不会 能够使用的printf（）函数。
因为你作为程序员 从来没有真正写到功能，
你只是冒用 在你自己的代码别人的代码。
>> 这是否有意义的人呢？
酷。
>> 然后，我们基本上是沾到 该文件string.h库和文件math.h
图书馆，.H只是表示库， 其他图书馆，你最终会
是你的代码中使用。
>> 然而，为了 这个库，我们也
这个分类 - 我们也有have-- 什么是所谓的CS50库，
cs50.h，我们在那里，为 你细读创造
许多重要和有用的功能。
所以，你作为一个程序员 可以捎带关闭
我们已经写了这样 这一功能的提供给你
供您使用。
>> 我将涵盖几个 功能常用
但要知道，这些都是 所有googleable在线。
随意，拉起CS50库和 然后你把所有的功能出现。
是啊。
>> 扬声器5：所以，如果你不 使用该软件
提供给我们， 类，这是否
意味着我们不得不下载并找到 这个头文件自己，并告诉
它是计算机？
>> ANDI彭：大的问题。
没错。
因此，这就像如果你不 在图书馆实际存在的，
有没有办法为你 其实去访问它。
因此，同样的事情 在C，你的编程
要确保你使用的是我们的 家电，因为图书馆已经
被纳入进去。
然后当你的hashtag ＃包括，图书馆的存在。
是啊。
好问题。
每个人都好？
酷。
好吧。
因此，我们会打， 本质上，是什么
所述第一函数 我们作为程序员
将被我们的代码中使用。
这就是所谓的printf（）函数。
因此，printf（）函数，因为我 已经在最后一张幻灯片说，
包括在标准I / O， 标准输入/输出库。
>> 所以一定要确保无论你using-- 哦，让我抢激光pointer--
每当你使用 在printf（）函数，
你必须包括标准I / O 库否则，当你编译，
你会得到一个错误 因为电脑会像，
哦，我不知道在哪里的printf（）是， 你不告诉我在哪里的printf（）
是。
井的printf（）被包括在 标准I / O，所以当你用printf（）
确保有 上面一行代码。
>> 因此，例如，printf（）的 这里是一个函数。
它所做的就是打印出来的东西 内的括号给用户。
会有人想借此刺 在这行代码的权利
这里是要打印出来？
因此，应答是在屏幕上。
有人吗？
>> VERDI：底部。
>> ANDI彭：威尔第，你为什么不走 直截了当地说出了整个语句？
>> VERDI：你好，我的名字是 安迪，我20岁。
ANDI彭：啊，可爱。
因此，在这条线，我们要 打印出来，你好，我的名字叫安迪，
我今年20岁了，这 其实一个真实的陈述。
>> 语法。
于是几个语法问题的 你们要确保你知道的。
行情。
双引号告诉 计算机里面的一切
将要被打印出来。
>> 里面可以一切 只是究竟如何
您键入它，除了 一般在年底，
我们将要包括 一个hash--哦sorry--破折号ñ。
因此，一个破折号ñ。
>> 有没有人想以此来猜测 什么，做我们的代码？
是啊。
扬声器6：把它放在一个新行。
ANDI鹏：没错。
因此，所有这样做是 让无论发生什么事
在此之后，该语句之后， 要打印到一个新行。
所以，当你写你的 代码，您不要随意有事情
上涨到年底 你不想要的。
这一切变得 整齐地打印一行
然后我们开始在下一行。
>> 有谁还记得那是什么 当我们编码分号呢？
是啊。
>> 扬声器7：声明。
>> ANDI彭：对不起？
>> 扬声器7：是否结束的声明？
>> ANDI彭：是的。
因此，在C或任何编程 语言中，分号
表示一编程线的末端。
因此，例如，在英语中，我们使用期限 说，哦，这是结束一个句子。
在编程中，同样的事情，我们有一个 分号来表示一个行的末尾。
通常情况下，当你 开始编程，
你会发现你 忘了加分号
然后再尝试运行 代码和它不工作。
而你喜欢啊，我不知道 知道为什么，这应该是工作。
>> 有可能到头来你可能忘了 分号或支架或东西
某个地方。
所以，这是重要的是要记住。
酷。
好吧，举手，如何 很多人在这里有过
采取AP计算机科学或 在Java的编程之前，永远？
行。
可爱。
这不会是适用 然后，但在Java，则
有一些所谓的System.out.println 中不存在C.
>> 因此，在C，只要你 要在添加变量
到任何你想要的 打印出来，有
一个特定的语法，我们要使用。
这就是所谓的 placeholding--本质
我们的地方添加占位符 整数或可变的
我们要打印。
>> 所以当你们可以看到，我们已经包括 这里一个新的库头文件。
在CS50库。
而载有CS50库中 是我们将使用一个通用功能
在我们的课程叫调用getInt（）。
>> 有谁要采取刺伤 什么调用getInt（）有可能会做。
>> 听众：[听不清]
>> ANDI彭：对不起。
听不见你。
麦迪，任何人。
曼蒂：哦，它会提示 你一个整数。
ANDI鹏：没错。
所以这个功能，另一个 功能是已经
写了由别人 我们可以在请他发言。
所有这就是提示你，用户， 任何你想要的代码输入
正在运行，并且它存储whatever-- 在这种情况下，我们调用getInt（） - 荷兰国际集团，
所以这意味着我们 获得的整数。
>> 而且我们要存储 在另一个整数
我们已经刚才所谓的年纪。
有意义给大家？
酷。
>> 所以，现在我们已经存储在该整数， 我们已经从用户提示，
在这个变量中，我们 int类型被称为时代的创造​​，
我们可以继续的地方 在我们的printf（）函数。
因此，语法通常是printf（）的是 这无论在实际的物理
行，你希望包括整数， 你这样做，符号在那里，
百分比符号，与 您要的变量类型。
>> 因此，在这种情况下，年龄是一个整数。
所以，你要包括 ％我，因为它是一个整数。
然后经过你 声明中，你会
做逗号和 变量的名称。
>> 所以在这里，我们要打印 出，你好，我的名字叫安迪，
而我的空白岁。
Hashta--或sorry--， 年龄无论我输入。
所以，如果我输入 20我调用getInt（）在这里，
它会打印出完全一样的东西。
但是，如果我想输入的东西 否则，可能像40或45，
然后你会看到反映 因此在代码中。
>> 所以这是一个例子 的东西在其中
它打印出来，并期待 你仿佛这是同样的事情，
但罩下方 计算机实际上有
非常不同的事情发生。
酷。
好吧。
那么，如果我们想要多个变量？
非常的方便。
一样。
我们也有一个新功能 这里所谓的GetString（）
也包括在CS50库中， 所有它的作用是提示用户
为一个字符串，它是 刚一组字符，
因此喜欢的句子或类似的名称。
>> 所以在这种情况下，我们将有两个 占位符％s的字符串和％I
为整数。
而我们将遵循 由两个变量
我们希望包括，在订单 它们出现在句子中。
因此，例如，我的名字是 空白，我想一个名字在那里，
所以我打算先有名字。
再后来，我想 年龄，希望有年龄第二。
所以，如果我想输入，你好， 我的名字叫安迪，我20岁。
如果我输入岸堤和20， 同样的事情将打印;
然而，现在我们已经有了两个存储 名称变量以及INT。
是啊。
>> 扬声器8：它会 能够运行，如果你切换
姓名和年龄在那结束了吗？
>> ANDI彭：是的。
这是非常好的问题。
所以长话短说，没有。
由于名称和age--什么 变量的类型是什么名字？
>> 扬声器8：字符串。
>> ANDI彭：什么 变量的类型是年龄？
>> 扬声器8：整数。
ANDI彭：所以在这里，我们有一个占位符 字符串和整数，对不对？
所以，如果你要切换这些， 计算机不会知道。
这将检查一个字符串， 如果你试图给它一个int，
它会像 等待我很困惑，你
告诉我，我应该是 配发的内存类型为int。
而当就在这里， 它要求整
你给它一个名称 和一个字符串代替，
它也将是非常混乱的，它 将不完全运行，你需要的方式。
所以在这里，命名和语法 用于运行代码非常重要的。
每个人都好？
是啊。
麦迪。
>> 曼蒂：在这里，我知道我们已经看了 在类的例子，他们会问在哪里
什么是你的年龄，你叫什么名字。
在这里，那又是它doesn't-- 如果我们运行这段代码，
它不会要求是什么？
但是，你只是输入两个数字 然后它会运行这样呢？
>> ANDI彭：是的，没错。
所以，如果你想为它 显示器，请输入您的年龄，
你可以再补充一个printf（）函数 上面写着，请输入您的年龄，
它上面。
这是一个很好的问题。
是啊。
>> 扬声器9：那么，就已经是 包括在调用getInt（）[听不清]。
ANDI彭：不，它实际上不是。
因此，所有这样做仅仅是 提示空屏幕
到用户输入的东西。
如果你想它，如果你想让它打印 出来的东西，告诉用户喜欢，
请给我你的年龄，那么你 必须printf（）的那个自己。
因为每个人都使用这个 功能不同的东西，
你可能会被存储时代， 你可以存储地址，
你可能会被储存的电话号码。
所以这真的取决于 你的球员的个人用途
你希望它是什么的话。
是啊。
>> 扬声器10：所以，我只想澄清，在那里 做你输入的名称和年龄
因此，它显示了在地方的％s？
>> ANDI彭：作为用户？
>> 扬声器10：是的，像我该怎么办 使得它 - 我在哪里把安迪，
和我在哪里把20？
>> ANDI彭：是的。
所以，如果你要 实际运行这段代码，
我没有实际运行 代码，这仅仅是现在在这里。
如果我要运行的代码，我会 编译代码，使文件，
运行代码，然后将有 只是两个空格，我将其输入。
是啊。
当你玩你们会看到 周围与自己的代码。
>> 所有我们要向右移动 入的下一个章节什么
我们将涵盖当今。
我们打​​算去了什么 条件语句是。
所以，如果你们还记得 从讲座回忆，
条件语句， 所有却已是一家集
的说明在计算机中 其中，如果某个条件为真，
你执行的代码 内的这一条件。
>> 因此，在Scratch--本质 从今天的大主题
是，你们已经全部 看到一切背后的逻辑
我们正在覆盖。
而我们正在做的是 翻译的东西
这是非常直观的 从无到有，硬编码它
到语法，我们将使用 对于这是C类
所以从逻辑上讲，这一切都堵得 是一段代码就在那里。
是啊。
行。
>> 我们也进入一个if ... else 声明这仅仅是一个额外的层
复杂的if语句 其中，计算机需要看看这个
并认为，如果这种情况是真实的，做的 任何的这两个括号内，
else--样的等等之类的默认值，如果 它不符合condition--做到这一点。
这就像在一个岔路口。
如果它的外面下雨了，我把 在一个防雨外套，还有什么别的
别的我不把一个雨衣。
>> 这是否逻辑意义的人呢？
酷。
好吧。
因此，像硬例子 这一点，我们将在C见
是，如果我想创建一个 变量调用功课小时。
如果作业时间少 超过五个，我说生命是伟大的。
太好了。
不过，说的斗争是real-- 这是我们这一切星期一
下午起来学山都 可能做正确的now--
听众：[笑气]
ANDI彭：他们的方法，我们 会，向你表示感谢。
我们要硬编码的方式 这在C是if--让我们假设
我们已经有类型的变量 int，名为功课小时就在这里。
如果作业小时小于 5 printf（）的，生命是伟大的。
记住保持/ N，因为 你想后，新的生产线。
否则打印的斗争是真实的。
>> 大家是否明白如何 我从这个块转换
到这个代码块？
酷。
好吧。
>> 所以，现在我们要看看 多重如果语句完全。
因此，让我们假设 该计划的目的
为我们提示了一个档次的用户。
我们提示符下使用调用getInt（）的 级，并且它们的输入值，
你想显示 他们得到了什么样的档次。
>> 所以，如果我来设计一个程序，我 在我们所有的目光意味着通常情况下，
90-100是A，80-90是 乙，等等等等。
什么是不对的 一段代码，它不是
做我想做的事情。
是啊。
>> 扬声器11：他们有下限， 但他们没有上限。
>> ANDI鹏：没错。
大家有没有听到她说什么？
还有的将是上 限制，但没有下限。
对不起，反过来， 下限，没有上限。
所以，你想 采取刺伤说
什么将被印刷在该 屏幕如果我要运行该代码。
扬声器11：一个错误？
ANDI彭：一个错误？
伟大的猜测，并不完全正确。
没有任何人有另一种刺？
是啊，阿龙。
>> AARON：如果你把 东西大于90，
它会显示所有你得到的成绩。
它会告诉你得了A， 你有一个B，你得到了一个C.
>> ANDI彭：是的。
这是完全正确的。
所以，这会是美好的。
然而，它们是相互 独家的，我想。
如果我要运行这段代码。
然后让我们只说，我 输入的95级。
所以95现在存储在 整型所谓的档次。
>> 所以C是一门语言 运行了从上到下，
所以它要永远 运行到底部。
所以它要来这里，看是否 级是大于或等于90，
printf（）函数，你得到了一个A.太好了，我 有一个95，这是大于90。
这将打印， 我得到一个答：这是怎么回事
看看这个，如果，这是怎么回事 说，还有95也大于80，
这将打印也得到了GOT A，B感叹号，等等等等
等等。
>> 因此，当我们都可以看到， 这是一种常见的错误
当我们认为可能会出现 编写代码看出来的。
任何人，在任何问题 为什么这是怎么回事？
太好了。
行。
>> 那么，我们如何解决这个问题，显然是 下一个逻辑问题。
好了，我们有这些美丽 事情如果叫别人，如果别人
如果else语句。
所以你可以看到，如果你想 改变这种状况的问题，
你想使每个 条件相互排斥的，
您将添加一个else ... if语句。
>> 而这些course--的认为他们是 梯子，还是喜欢上了ladder--梯级
这些可以添加多达你 希望尽可能多的条件，只要你想。
所以在这里，如果我输入级为95。
如果等级大于95， printf（）的，我得到了一个A.大。
这将看到一个else ...如果 而且它会知道，哦，不，
我已经执行的第一人。
我知道 - 或者第一if--我知道， 我没有看任何这些
因为其中的一个 已是事实。
因此，它会从上往下运行。
一旦第一个是真实的，那么 它会跳过所有的休息
的东西...... IFS。
那有意义吗？
因此，在这种方式你 不同层次的检查的
并尽快其中之一为假，则 其余的都还可以，他们甚至不会检查。
酷。
好吧。
>> 因此，这是一个不同的例子 排序条件语句
我们看到较少，但 我们将看到和使用它们。
而且他们往往更 有效的某些情况。
因此，我们有什么所谓 switch语句。
所以在我们讨论什么是一个else 语句中，if ... else语句。
在这里，我们有什么 所谓的switch语句。
>> 因此，当我们使用开​​关 语句是关键？
因此，在一个switch语句，你 通常情况下，通常情况下，其实你
只能输入整数您 你正在检查的变量。
所以，如果我想查查看 如果某一number--例如
一个档次，如果我有一个90。
我想它，看看如果这是一个A， B或C.我能有这里的情况。
然而，这起案件 是另一个恒定。
>> 所以在这个意义上说， 可以切换语句只
检查两个数相等。
它不检查为别的。
所以，这件事情是非常 小心，当你使用这个的。
所以在这里，如果我想查查看 如果我的90级等于90或80
或70或60，然后打印 相应的等级，
我能写的 在switch语句。
>> 因此，它会来到这里，检查 这个整数等于这个常数？
如果不是，它会跳过。
是不是等于常数 2，等等，等等，
直到你打的默认情况下， 如果他们都不是相等的。
只要其中之一 被设定为相等的，
它会做到这一点 一行代码和休息。
这意味着它会打的 运行，破裂，只是完全跳过
到代码的底部。
因此，在这个意义上说的那种功能 就像if的else if else if语句可。
>> 所以这里有一个具体的 例如，对于你们。
因此，让我们假设，我想 创建一个名为成立的变量。
我想提示用户输入 这一年，他们的学校正式成立。
所以，我可以在这里创建一个switch语句。
而让我们只说，我输入1636。
>> 这里这段​​代码是要见开关 成立时间等于1636。
这将看情况 1636年，哦，这些都是平等的，
的printf（）你不应该 在那所学校北上？
因为我们假设他们不这样做 到这里，如果他们去哈佛，
突破并跳到结束。
>> 如果我输入1701，这 我想大家都会投入，
它会跳过此情况下，来 到案例二是1701年，
和打印欢迎来到耶鲁大学！
打破，跳到结束。
否则你可能正在服用此课程 在网上，其中case--真棒欢迎
以Yale--它会进入 默认打印，您好上网！
而打破。
是啊。
>> SPEAKER 12：您可以使用其他 默认情况下，而不是在那里？
>> ANDI彭：没有，因为 这样，这个整体功能
开关建成，语法， 需要使用的情况下，默认的情况下。
这就像如果别人当此 之一，它的情况下，默认的情况下。是啊。
SPEAKER 13：你也许已经说了这一点， 但你有两个以上的案件？
ANDI彭：是的，你可以 有，只要你想尽可能多的情况下。
把它看成只是想 无限增加的。
>> 扬声器14：如果你 交换1701 1636年，
它并没有真正做 有差别吗？
它只是要检查它。
>> ANDI彭：这是一个 非常好的问题。
我们会触及 这以后，只是
知道这是开关 声明infinitely--它的
超过它，如果更高效 否则，如果因为它的运作
使用不同类型的功能 可以让你，基本上，只是
直接跳转至 如果您需要所在。
是啊。
扬声器14：酷。
谢谢。
ANDI彭：是
>> 扬声器14：你不能 做情况下，像大于。
ANDI彭：没有。
所以，这是什么限制了对 switch语句是，你有
有常数只，只有整数。
是啊。
行。
>> 因此，这是什么，你 球员都会遇到的次数减少，
但我只是想 在情况介绍吧。
我们这里有什么 被称为三元运算符。
凡从本质上讲，它就像一个 if语句编译成一条线。
在这里，我会去到下一行中， 下一个页面，因为它更容易看到的。
>> 所以，我们都看到了这一点吗？
这是很容易理解。
如果我想创建一个名为变量 名为字符串s，如果一定数目的
我给它小于100，我 要分配较低的字符串，
否则我要分配高。
>> 这在这里是做同样的事情 这八行代码在做什么。
所以在这里我想创建 一个变量字符串。
这是我的条件 检查，如果一个数小于100，
那么您分配的低价值， 其他指定的高值。
>> 这些幻灯片将在网上，无后顾之忧 如果你们没有得到这个下来。
这仅仅是一个简单的方法，更 编写代码的有效方式。
行。
>> 所以，现在我们要 输入的内容，对于大多数人来说
就像一个非常，非常混乱 件事想在第一。
环路部分。
所以我们今天要谈 大约有三种类型的循环。
我们将开始一段时间 循环，再来谈一个do while循环，
然后说说for循环。
>> 所以基本上，对于更 视觉学习者在那里，
我们本质上是一个图形化 描写一个什么样的while循环一样。
因此，在编程时，你将开始 并进入循环在某一点。
你检查的条件。
如果条件为真， 你内心执行的代码。
而你再回头来您检查。
如果它仍然是真的，你继续运行 一圈又一圈，这个代码在一个循环。
>> 然而，第二即 条件为假，
你要打破和结束循环。
这在本质上是 语法你要使用。
而一定条件是 真正做到这一点，如果这不是真的，
你要跳到结束 和前进与您的程序。
行。
>> 有没有人有一个例子 什么可能会潜在地发生
如果我尝试运行这段代码？
顺便说一句，SAJ--这是Scaz，安迪， Jason--我们将签署我们的邮件，
爱，SAJ。
这就是我们。
行。
>> 任何人有一个例子，还是有 什么这将打印的想法？
样的一个很难回答的问题。
所以在这里，记住状况 我们正在检查的同时，真实的。
因此，虽然这是真的，这是 付印，我爱SAJ！
有没有在我们最好的任意点 更改为任何其他方式？
没有，对不对？
>> 所以在这里，我们有 遇到什么可能
将要窃听了很多 你的程序，无限循环。
你会发现，如果你 运行这段代码，
它只是要保持 印刷，我爱SAJ！
虽然我们赞赏的支持， 我们不希望你的电脑
崩溃是因为你 保持印刷我爱SAJ！
>> 所以，请，请， 避免无限循环
因为它永远不会 以评估为假
和你永远也不会 离开循环。
而你要 被吸入天长地久。
酷。
行。
第二类型的循环 我们将谈论今天
是while循环，做while循环的做的。
它之所以被称为do while循环 因为你有做，一段时间。
因此，这是非常类似，而 循环，但有一点点不同。
在这里，你打算怎么办 无论公司的这里面
而在一定条件下是真的。
所以，如果我是C和我的电脑 顺着这一段代码，
我看看顶部。
我去到C，我说的做这件事情。
然后我检查，而这 是真的，我要重复它。
不过，虽然这是假的， 然后我往前走
我从来没有回到那个循环一次。
>> 任何人都可以花刺 有什么区别
这个循环和一个我们之间 只是看着是实际。
是啊。
SPEAKER 15：条件 来代替前后？
ANDI鹏：没错。
所以她说的条件 来后，而不是之前。
最终，所不同的 这和while循环之间
是，你只是打算怎么办 任何的这里面不管
无论您的病情 真的，然后检查条件。
所以在这种情况下，你 always--以这种方式，
你总是要确保 无论是内至少运行
检查，看看前一次 如果你想让它再次运行。
>> 这里有一个例子 当我们会使用它。
因此，举例来说，如果我想有 int类型的变量命名的时代，
我想提示 他们的年龄的用户，
我会做的printf（） 你几岁？
年龄=调用getInt（），它 是提示用户。
>> 而有些人会真的很烦人。
而且你不想在错误的 有人程序输入一样，
哦，我是负4岁或什么的。
在这种情况下，如果它们 做到这一点，这个计算结果
为true，这意味着我要去 必须保持回去和这样做。
因此，这是要保持 再次提示用户
给你像一个真正的 年龄号和它的
要保持回去和重做 它，直到他们给你一个真实年龄
大于一，或不为零。
>> 因此暗示，暗示。
这将是非常，非常有用 为你的PSET问题之一。
是啊。
>> 扬声器16：哎呀，对不起。
>> ANDI彭：是的。
>> 扬声器16：有没有，不 是一个混蛋，但 -
ANDI彭：不用担心。
扬声器16：--are有 这里不同的规则，
还是你只是忘记 把报价？
>> ANDI彭：哦，是的。
对不起，这是完全是我不好。
这是肯定 应该是一个报价。
接得好。
那将无法运行。
行。
>> 因此，循环的最后一个类型，我们将讨论 约，最终同类产品中最
复杂的for循环。
如果你不知道不要担心 知道这意味着什么。
这是相当混乱在第一。
我们一起去了一个例子。
>> 所有这一切发生在一个for循环 是，你有三个语句
你要去包含。
因此，对于某一件事情，你 要初始化变量。
你要的条件添加到 此循环将继续运行。
然后，在的结尾 循环，你要更新它。
您可以更新变量 要跟踪。
因此，我们通常使用 for循环的时候，我们
要运行一个循环 一定量的时间
我们已经知道，哦，我想 这个循环就像10次执行，
那么你do--我过去 下页的一个例子。
>> 所以在这里，例如，在刮，如果 想要的东西，重复10次，
你不得不说的是， 重复10次我爱SAJ！
这是一种更可接受 展会对我们的支持
而不是无限循环。
在这里，你会如何 过渡到C和写
这是int--我要创建或 声明一个int类型的变量命名的我。
我要初始化 为0，所以我= 0;
这将是我的病情。
所以i小于10。
然后在end-- 你是最后一个发言
将不得不是的更新 恰好变量i什么
在您的for循环的结束。
因此，它是一种令人困惑的，因为 这条线的不同部分
都发生在不同的 类型的循环。
但我去了一个 那伪代码示例
也许解释 只是好一点。
>> 所以在这里。
这就是我们刚才看到的循环。
基本上伪代码，是什么 在这个程序中，
首先是我创建 我，初始化为0。
我检查，看看我是 小于10，在这种情况
第一次是 因为0小于10。
因此，环路将运行。
然后我会打印这一行。
然后在该行的末尾，右 在这里，我打算做增量我，我++，
所有的手段是 由一个递增它。
>> 所以，我现在是1。
因为它曾经是0，如果我 增加它的，它现在是1。
然后，我要回去 到循环的开始
我检查车况。
是条件还是真的吗？
是的，1仍低于10。
因此，这将再次打印此， 去，然后加我，并检查
条件 不断，不断，
直到你最终得到 到这种地步，我是10。
>> 你要打印10次 然后我会等于10。
你要检查的条件。
比10小10？
不，那是假的。
因此，该环是不会 运行，这将打破，
而你要 继续与您的代码。
>> 所以当你们看到的，这 是一个真正伟大的例子
一个循环，你可以设定在 运行一段指定的时间量。
每个人都清楚了吗？
是啊。
>> 扬声器17：约增量如何 指数，它是不同的编码？
>> ANDI彭：你can--我们会去 在这个下一张幻灯片。
好问题。
是anyone--之前，我谨 on--任何人都糊涂了，
因为这是一个非常艰难的概念。
不用担心，如果you're--确定。
酷。
>> 好吧。
只是一般的幻灯片。
这个while循环做 循环完全一样的事情了。
这只是写的不同。
你们可以仔细阅读幻灯片 在稍后您方便。
但是，仅仅知道有多重 写同样的事情的方法
以发生在不同的循环。
行。
>> 所以，现在我们的问题得到了什么 如果我们有一个循环内的循环。
我们正在转化为现实 盗梦式的东西在这里。
当你想要做的事情多 其他的事情里面倍
该做的事情多次，你 想要什么叫做嵌套循环。
对于那些你们谁第一个看到这一点， 得到非常困惑，所有我们在这里做
是有循环，其中一个 我们有行的变量。
但是它里面，我们也有另一种 用于可变称为柱的循环。
我强烈建议大家 谁是困惑，首先保持
track--画了这一点，画了这一点。
不要试图正当理由 通过它，画出来。
>> 在你的头，在这片 纸，或什么的，写一行，
跟踪哪些行是公平的。
写专栏，跟踪 什么列等于。
并跟踪的是什么 打印出与每一个迭代。
这个循环的每次迭代，每 那个大循环迭代，
只是一味地按照逻辑。
我向你保证， 你一定会喜欢你所看到的，
因为它也很 适用于您的问题集。
酷。
好吧。
所以，最重要的事情 那你们可能都
想着现在， 是你的习题集1秒，
这是由于周四/周五。
>> 在您的water.c程序， 暗示你将会有
以提示的用户输入。
在您mario.c程序 你将有
使用嵌套的for循环，这是 一个for循环的for循环里面，
打印金字塔块，基本上 像什么马里奥跳通过。
然后在你的greedy--或者 找零，如果有的话你们
曾经听说过that-- 你将必须非常
细心的第一个浮点值。
记住浮动小数和 整数是不一样的东西。
跟踪哪个是哪个。
而你要使用 条件语句，也是如此。
>> 好了，最后一件事。
我有留下一两分钟。
样式。
因此，这是一些不 实际上实现的效率，
或代码的实际运行。
然而，它影响我们的 您的平地机，为你的读者。
它会影响你自己，如果你 试图找到一个问题。
它会影响您的代码的可读性。
>> 所以风格，当你试图像 如果你的风格的一篇文章为英语，
没有段落， 你拥有了一切样
的混在一起在同一行，它 使得任何人真的很难
读你的文章，即使 你的观点在逻辑上是健全的。
同样的事情在编程。
你可以有可怕的晦涩 码Scaz将覆盖，
和它仍然可以运行和功能。
但对我们来说，因为你的可爱助教，谁都会 可以阅读和评估您的pset时，
这不是很好。
>> 所以，请为求 我们和你自己的，
当你试图修复 在你的代码中的问题，
和你想 看你自己的代码，使
一定要遵循一些约定 我们打​​算走了过来。
>> 所以第一。
给你的变量有意义的名称。
如果你想存储的整数 所谓的年龄，请其命名为年龄。
不要将其命名高度。
当你想 存储时代的高度，
它使一切 很迷惑我们。
我们不喜欢被人混淆。
你不喜欢被人混淆。
没有人喜欢被混淆。
如果你想创造的东西， 它命名为一些有意义的事情。
>> 然而，在用于循环，单 字符变量通常是罚款。
而在for循环，如果你只想要我， 与J，K，随意仅仅做到这一点。
>> 一致的初始化。
那么，是什么意思呢？
这意味着在技术上，理论上， 你可以发起并创建
在同一行上的多个变量。
因此，例如，我可以创建 称为scaz_age的整数，
和整数称为andi_age = 20， 和整数称为jason_age
在同一行上。
而且我也可以指定只有一个 他们，而不是其他人值。
我们请你，请不要那样做。
因为在这里你已经基本上建立 三个变量，但是它们中只有一个
实际上有一个值。
然后，当我们 试图读取你的代码，
或者如果你试图修复 在你的代码中的问题，
这是非常令人困惑遵循。
因此，只要你的可读性，对于 我们的可读性，不这样做。
>> 一致的大括号。
有些人喜欢把自己的 大括号在不同的地方。
这其实并不重要。
只要确保你在一致的 自己的代码，你喜欢把他们。
>> 一致的间距。
如果你把一个空间后， for循环，始终做到这一点。
那种就像不要在做 有些地方，不要在别人去做。
只要是一致的。
>> 其次，如果有人想 细读CS50风格指南，
我们正式有一番风情指南， 告诉你这些公约，
加上更多。
这是在网上。
这就像cs50.net/style 或类似的东西。
你可以google一下。
>> 一致性是关键。
所以不用担心什么 其他人都在做，
只要确保你 在你自己的代码相一致。
任何人有关于什么问题吗？
是啊。
>> 扬声器18：所以正确的事 做初始化就是
让他们都在一个单独的 行，是你在说什么？
>> ANDI彭：所以我很少有这种情况发生。
但是，如果你想，如果你想 要像节约空间，在你的代码，
或什么的，你可以做到这一点。
我们要求你只是不初始化 有一件事，而不是其他人。
所以，如果你想要做INT scaz_age，INT andi_age，INT jason_age，这很好。
只是不初始化一个 而不是其他的一切。
>> 有问题吗？
好吧。
我要通过关闭 麦克风，激光指示器，
和着指挥棒Scaz在这一点上。
这是尴尬的。
这里是。
>> BRIAN SCASSELLATI：谢谢。
是如何形成的声音？
声音是好的？ 。
优秀的。
行。
所以，大家好。
>> 我要去尝试工作，通过 一个实际的例子和你在一起。
我们要使用CS50的 开发环境，什么所谓
集成开发环境。
你已经看到了这个 证明在讲座。
而在习题集1，你 将有机会
使用它，和玩 它，并习惯于它，
因为我们要使用它 通过本学期的休息。
>> 所以在这个IDE，你有什么期待 就像一个非常传统的文件浏览器
过在一个面上。
你已经有了一个部分了 顶你要去哪里
看看你的源代码，你 CFILE，你写的代码。
上下底，你会 有一个终端窗口
你会使用到 这两个编译程序
并运行或执行程序。
行。
>> 因此，只要给我们一点点 的基础上，在终端窗口中，
你会是 使用一组命令
这是整个标准命令 大多数Unix或Linux系统。
所以，如果你曾经使用过 任何形式的Unix，Ubuntu的的，
或任何其他调味剂， 这些将要看起来很熟悉。
>> 如果你还没有，请不要担心。
没有什么复杂的他们。
他们只是用不同的 语法，不同的命名
约定比你以前见过。
>> 因此，要列出文件 一个特定的目录中，
他们将使用 命令称为LS或列表。
如果你想看到的一切 与所有的细节，
你会使用命令 行参数使用ls -l命令。
这会告诉你一切 更详细地，包括
该权限的文件。
>> 要更改目录， 你会使用cd命令。
而你就可以更改目录 既要到你的主目录。
这只是CD全部由 本身，光盘有两个
点会返回上一层 级别到以前的目录。
而且你还可以cd到一个 子目录通过键入CD
和该子目录的名称。
>> 您还可以创建新的目录。
而且我们要走路 通过这次在短短的一分钟。
但是，仅仅把 一切都在屏幕上。
所以，你可以看到他们。
>> 您也将有能力 直接操作文件
在命令行。
您将能够复制他们， 移动它们，或者将它们删除，
也就是说，有效地将其删除。
>> 该CS50 IDE给你完整的 命令行参数的力量。
这意味着你也可以 这样做非常危险的事情。
行。
例如，你可以 除去，或者说是删除，
不求回报的文件 进行确认。
你甚至可以删除 recursively--那
破折号 - [R flag--整个 子目录及其所有内容。
行。
他们列在红色的，因为你 每次应考虑“危险”
你看到的那些东西。
行。
好吧。
>> 现在，终于，这个事情是 将是真正有价值的给你，
是有几个不错的招数 要知道，你正在浏览
通过这个终端窗口。
首先，你可以清除屏幕上 任何时候只需键入明确。
而且你会看到 我这样经常。
你也可以显示 一个文件的文本
通过键入以上，然后文件名。
然后，您就可以滚动回来， 提出与刚刚与空格键
和箭头键。
>> 如果你有，因为我们今天的演讲做了， 该连续运行的程序
在无限循环，你 可以停止该程序
通过键入控制执行， 即按住Ctrl-C组合。
而且你可能必须做 这种多次。
计算机得到远远领先于你。
你有时需要 给它一个尝试几次
之前它实际上会通过。
>> 您还可以 通过命令排序
您刚刚输入使用向上键， 箭头键，然后向下箭头键。
什么是最有用的是，而不是 打字了长文件名，
您就可以使用Tab键 自动完成几条指令。
现在，我们将演示 所有这些，在短短一秒钟。
所以，如果你不记得 他们，不要担心。
这些事情，你会 拿起和使用，因为我们走。
行。
>> 因此，在C--不像在Scratch-- C是编译型语言。
这意味着，我们将采取一个源 file--这是你写的文字，
你写的命令 的printf（）语句，环，
一切else--，我们要 采取该文件，并把它关闭
到一个程序调用编译器。
>> 那么编译器将 你写的文字
并把它翻译成 二进制指令
您的电脑 实际上是使用。
这就是所谓的对象 或可执行文件。
如果你看一下这个文件，你会 看到你写的代码。
如果你看一下这个文件，你会 看个字符的随机序列
使没有任何意义。
这是因为这是二进制。
这并不意味着你必须阅读。
>> 但是，任何时候你想 运行的东西，你要什么
在运行是这个目标文件。
因此，当我们与这些合作 文件，我们会用C编写的文件
然后，我们将编译它，使用 命令类似于make将调用
编译器铛的C语言。
并且，将产生一个对象 文件，就像一个出来，或在此情况下，
这个名字，我的文件，我已经把研究。
好吧。
>> 因此，让我们真正尝试这一点。
所以，我想出了一个例子 是我想尝试。
和的事情之一 让我着迷的动画。
所以我们要尽量做到 动画的一点点
仅使用ASCII字符。
人物我们现在可以打印出轻松。
>> 因此，这里是我的最好的尝试 创造适合你
兔子的动画 通过高草运行。
他在那。
行。
所以，他没有跑呢，但他 在高高的草丛站在那里。
>> 现在，如果我是一个漫画家， 在老同学
版本的动画，我 会做的是我将产生
这个兔子在草地上的图片。
然后，我会产生 另一个picture--
另外他们所谓cell--了 有兔子只是稍微移动。
然后第三个是有 兔子感动得远一点。
>> 我会产生一个完整的 序列这些细胞。
一些地方的兔子已经结束 到左侧。
然后缓缓移动，人们 由一个向中间。
然后从中间 到正确的。
如果我当时真的 幸运的话，我可以把它在一起
我可以动画。
还有就是我的兔子 通草运行。
>> 这是我的伟大的PowerPoint 欺骗的一天。
行。
因此，这是因为它得到很好的。
行。
所以，在这里，人们有更多的时间，这里是我们的 兔子在草地上运行。
>> SPEAKER 19：再次。
BRIAN SCASSELLATI：一 更多的时间，所有的权利。
这是你的兔子。
行。
>> 所以，我们今天有什么 做的是我们要去
尝试的过程自动化 的生产这些细胞。
我们不会完全得到以点 能够把它们放在一起。
但是，我们要尽量自动化 产生该序列的过程。
>> 这是很多东西， 今日动画等。
也就是说，你没有做的事情不一定 通过绘制一切手工制作。
我们用电脑自动化 零件的过程。
行。
>> 因此，让我切换 现在我们CS50 IDE。
和我已经us--，让创建 我放大这里一点bit--我已经
为我们创造了一个出发点。
>> 我们要求你坐每次 来写一段代码，
我们真正要你做 是我们要求解决的一个问题。
而这样，你应该 想想这样做
是通过启动与一些 该解决方案的简单零件。
然后从该部分打造出来的。
这就是我们今天要做的。
>> 因此，而不是试图全部一次 写整个一串代码这是
要生产这些 10动画细胞，
我们要开始，而不是 与该作品一件。
然后，我们将构建一个 周围的那一点点
多一点，多一点。
>> 现在谈谈好事 解决问题这样
是，它可以让你开始 总是与你知道的东西
作品和介绍一款渐变。
这是一个伟大的方式 学习如何编写，
因为每次你犯了一个 变化，你看到什么影响了。
行。
>> 因此，这里是我们的出发点。
行。
所以在我的文件的开头， 我已经哈希包含（#include）stdio.h中。
这让我可以得到 printf（）函数工作。
>> 我然后我有我的主要功能。
这看起来还是有点 神秘的或不明显的一些你。
没关系。
所有这说的是， 主要功能需要
没有arguments--无效的手段 没有在C.它
按照惯例，返回一个整数。
主总是返回一个整数， 通常一个代码说事
顺利或不顺利。
行。
但主要必须具有该 现在构成了我们。
>> 我再放入三行代码。
而且随着每行 代码，我已经把评论。
现在，人们的事情， 我们将坚持这样做，
它是如此重要 编程实践，
是要始终注释你的代码。
总是在记 英文注释的东西
你认为 代码是应该做的。
这样，以后当你回来的 它，你可以看看它，你可以说，
哦，我记得我是什么 尝试做这个。
或者当TA坐下来与你 尽量帮你在办公时间，
他们可以看看这个去，我 看看你想要做什么，
而是，这是 到底发生了什么。
行。
>> 所以，我有三个部分，以我的代码， 我将首先打印
一些点在开始。
然后我会打印出我的 非常看中的兔子。
然后点在最后的一些位。
>> 而这三种打印报表应 很熟悉，你在这一点上。
所有这一切我做的 他们每个人是我
打印出的字符序列。
有没有涉及到的变量。
一切都只是持平。
行。
>> 所以，如果我现在下去给我terminal-- 让我们来看看，如果我能得到这个回out--
而我要再次键入明确。
>> 扬声器20：我们用 双斜线评论？
BRIAN SCASSELLATI：可以 使用double--肯定。
有多种方式来 离开C.一个评论
的方式是使用双斜线。
另一种方法是使用一个斜杠和一个星 然后关闭与一个明星，一个斜线。
好吧。
>> 首先，我要 从这里开始浏览周围。
所以，如果我去我的主目录， 我已经改变了目录存在，
我要去看看，看看有什么 在该目录中，LS，列出。
我要看到我 有两个子目录。
让我们使这个有点大 在这里，以便我们都可以看到它。
>> 我可以看到我 有两个子目录。
我会改变目录 进入工作区。
而我要的类型只会出 它的一部分，然后只需按一下Tab键。
而且它会完成剩下的我。
花式。
>> 我会看看，看看工作区。
而现在，我的工作 在超部分
我们是在教现在。
所以，我会去到该目录中。
最后，再看看吧。
而且我有这个文件bunny.c。
>> 好所以让我清楚的一次。
而且我要再次声明，我now-- 仍然留在该目录
并且它告诉我，我在 该超部分目录。
我要继续前进， 让我的程序的兔子。
而该命令，使兔子， 虽然听起来有点古怪，
还调用铛编译器。
>> 而且它产生的 我的输出，
可执行funny--的 可执行文件被称为兔子。
行。
我可以再和这听起来 更糟的是，执行兔子。
行。
让我们看看会发生什么。
行。
这是一点点 我所期待的。
我有我的兔子图片在那里， 样的，但我希望它所有的本身。
我错过了什么？
>> 扬声器21：斜线L或斜线ñ。
BRIAN SCASSELLATI：斩ñ。
行。
因此，让我们回到这里。
我会离开的。
我会重新回到这一个。
让我们来看看现在 从我的主要功能在这里。
>> 所以，我应该怎么办？
我想结束就行了。
所以，我加入了注释。
我会在一个printf（）。
而且我有什么投入？
/ N。
行。
我有什么用结束了吗？
分号。
好吧。
>> 现在的人真的 重要的事情是要确保
每当你做出改变 在你的代码，你保存它。
如果您还没有保存你的代码，你 要注意到一个小星星在那里。
这星说你 已经没救了这些代码。
>> 如果我现在编译它，它不是 要反映的任何更改，
因为编译器查看文件 这是磁盘，而不是只是文件上
在编辑器中打开。
好吧。
>> 因此，让我们将它保存，然后我们会去 对上到这里，回来了。
下来到我的终端。
而让我们再次清除空间。
>> 我们可以继续前进，多了一个 时间让我们的兔子计划。
并执行兔子。
这也不起作用。
错误的斜线。
所以，如果你看一下我有，我把 / N在那里，但我有错的斜线。
>> 一切你的电脑 做的是非常明确的。
好不好？
标点符号的一个小错误， 突然间，你没有得到你想要的。
好吧。
因此，让我们放大出来了。
我们会回去。
那么做出非常快修。
我们会把正确的斜线研究。
我们会保存。
我们会放大。
>> 出于某种原因，这不是 快乐，但让我们继续
我们将回到终端在这里。
它清除掉。
我们将进行放大。
而一个更多的时间，我们会让兔子。
而现在果然，它的工作原理。
万岁。
行。
>> 因此，让我们努力使今天 多了几分一般。
让我们来看看，而不仅仅是 打印一个特定的框架，
让我们来看看，如果我们可以让这个 这样我们就可以得到所有10
这些动画帧 我们希望有。
如此反复，让我们 此一步骤的时间。
>> 让我们先来概括它，不是 让我做的所有的帧，
但让我做任何一 框架，我可能想。
所以，有什么区别 在帧之间？
是兔子一样吗？
听众：是的。
BRIAN SCASSELLATI：是的。
有什么不同？
>> 听众：位置。
BRIAN SCASSELLATI：它的位置，对不对？
以及如何控制它的位置？
多少点我 将在开始
而且我有多少点 将在末端。
所以，我有五处 开始和五个在末端。
>> 让我们来替换五连一个for循环。
行。
而且我要创建一个用于 环现在会说，
我要打印一些数 的圆点在开始。
我将使用一个变量。
比方说，怎么样我作为 计数器在我的循环。
而我要声明它往上顶。
>> 然后在for循环 我需要做三件事情。
我需要做的第一件事情 是我需要初始化我。
我应该怎么初始化 它开始呢？
0。
行。
>> 然后，我需要说的，有什么 终止条件？
什么时候应该停下来？
那么多少个点你 要打印在这一个？
>> 听众：五。
BRIAN SCASSELLATI：五了吗？
怎么样让我们做什么 不同的，我们做了五位。
让我们表明，它的不同。
扬声器22：两个。
BRIAN SCASSELLATI：两个。
行。
所以，如果我想两个点， 我应该放在这里？
>> 听众：三。
>> BRIAN SCASSELLATI：三。
行。
多少次是 要办理什么手续？
这是怎么回事要经过 三次，0，1，和图2，是吗？
好吧，让我们回到到两个。
现在，我们会得到两个点。
什么做我想做的每一 一次我去通过循环？
什么必须改变 每次我办理什么手续？
>> 扬声器23：添加一个点。
>> BRIAN SCASSELLATI：我一定要坚持下去。
我要加一个点。
我要打印一个点， 通过每次循环。
但我怎么保存，如何跟踪 很多次，我经历过的循环？
我用我，那 变量，该计数器。
>> 所以每次经过，我要去 一个递增计数器。
现在，这是相同的 我的话说：I = I + 1。
没关系。
我能做到这一点that--我喜欢 速记，所以我会说我++。
行。
>> 让我们做同样的事情 这儿的底部。
那种只有我做了一个。
我将让你们 完全做到这一点。
好吧。
>> 所以，我应该写在这里？
这是我的for循环。
我会做一个printf（），我要去 为让这个我只打印一个点
在该底部。
>> 我应该怎么写 这里面现在循环？
好了，首先是什么 变量我应该使用？
>> 扬声器24：J-。
>> BRIAN SCASSELLATI：我可以用学家
我可以使用相同的吗？
我还可以再用吗？
是啊。
这是确定的，因为是 我使用了这里，
我不要再当需要他们 我得到了这一点。
>> 所以，我应该初始化我来？
扬声器25：10。
BRIAN SCASSELLATI：0。
我应该怎么检查？
多少点我现在需要在最后 如果我有两个点的开始？
我需要8月末，还等什么 我应该检查一下，我少than--
>> 听众：七，八，九。
BRIAN SCASSELLATI：听说七人。
我听到了八强。
我听见九岁。
行。
所以我们都在正确的 ball--杰森说：10。
行。
>> 如果我需要两个点的 第一位的，又有多少呢
我 - 我需要8个点的 最后埃德蒙顿我放了两个加上面，
我应该放下下面？
>> 听众：八。
>> BRIAN SCASSELLATI：八。
因为这是要 算上0到7。
这就是通过环路八次。
行。
什么我必须做底？
>> 观众：我++。
>> BRIAN SCASSELLATI：我++。
好吧。
所以，这看起来相当不错那里。
让我们来试试吧，让我们看看会发生什么。
行。
所以我们要保存它。
尼斯和保存。
>> 我们将放大出来。
我们将尝试在这里的终端。
我们将进行放大。
哎呀。
我们会，更多的时间， 让我们的兔子计划。
并继续前进，执行兔子。
它就在那里。
>> 因此，有我们的兔子。
其中，它有两个点的开头 和8个点出在末端。
大家还我？
行。
>> 因此，我们建立起来。
我们造成了一辆小兔子， 一个特定帧。
现在，我们已经能够 概括说来构建
更，不同种帧。
>> 现在，让我们继续前进，并有 它产生的不只是一个框架，
但让我们产生10 帧，在那里我们慢慢地
让兔子把所有 横跨字段的方式。
好吧。
>> 让我们回去。
我们会尽力了。
那么什么才是我真正需要改变这里的？
我需要做什么改变？
>> 扬声器26：首先，您需要 改变点的最大数量
在开始。
因为如果我们正在做的10点， 这将需要多达规模。
BRIAN SCASSELLATI：是的。
所以，现在我有几分是硬 要始终做到两个点开头
始终做到8个点底。
>> 我想建一个循环，对不对？
因为我不希望 建立只是一个兔子图片，
我想建立10兔子的照片。
所以，我需要建立另一个循环， 当我经过这个循环，
我想换多少 点我打印开头
多少点我打印末， 基于通过环路循环
算我一个。
好吧。
>> 因此，让我们得到另一个柜台。
别人的面前说Ĵ， 所以我们会再拍学家
而现在，我们要 for循环另建。
>> 什么是循环中去？
这东西已去 内循环，对不对？
难道兔子有 走在循环中？
我需要在一个小兔子 其中每个10帧？
>> 听众：嗯。
BRIAN SCASSELLATI：是的。
我想在每一个兔子 在10帧的，对不对？
怎么样的圆点 最后，我需要吗？
行。
>> 所以，我要缩进所有的人。
我要强调的是 这一点，我会打标签。
这就是将他们推向全国各地 一点点，这样很容易让我
看看有什么环路中。
然后，我将结束它。
比如说。
好不好？
>> 现在，在该循环 我building--哎呦，
做出这样你就可以see-- 我有我的计数器j。
我会在0开始的。
多少次，我想 要经过这个循环？
听众：10次。
布莱恩SCASSELLATI：10次。
那么什么号码，我应该把在这里？
>> 听众：9，10。
>> 布莱恩SCASSELLATI：9，10， 有人在得说11了吧？
我想两个点前 并把小于2我。
我想8个点， 我把小于8我。
现在我想通过10 次，所以我把Ĵ少than--
>> 听众：10。
>> BRIAN SCASSELLATI：10。
在那里，我们走了。
而我做底到j是什么？
++，增加它。
行。
现在，这里的棘手的部分，什么是 会发生什么，现在如果我这样做？
我要去打印10帧？
SPEAKER 27：我认为， 他们都会是相同的。
BRIAN SCASSELLATI：他们会 都是一样的，对不对？
因为所有的人都仍在继续 把两个点开头。
但我不希望它们都 有两个点的开始。
多少点我 想在开始？
>> 听众：更改。
>> BRIAN SCASSELLATI：我 想要改变，对不对？
所以，我有什么在这里，正在改变 每次循环经历？
>> 听众：的点数，J。
BRIAN SCASSELLATI：J-， 点的数量。
所以，我可以改变这是学家
第一次通过 环，那是什么打算呢？
我该怎么设置J可在第一？
>> 听众：0。
>> BRIAN SCASSELLATI：那么有多少 次我该怎么做呢？
0。
通过循环，J的第二时间 将是1，因为我加一。
多少点我要去打印？
1。
通过循环的第三次， 多少点我要去打印？
>> 听众：三。
BRIAN SCASSELLATI：J-将是3。
多少点我要去打印？
哦，对不起，J将是2。
多少点我要去打印？
>> 听众：2。
>> BRIAN SCASSELLATI：2。
好了，所以我要保持 递增的，因为我们走。
如何向下跌破？
善有善报这儿？
我不想8总 在结束了吗？
>> 扬声器28：10。
BRIAN SCASSELLATI：我想10点？
我希望它改变了。
所以，我怎么想它改变？
>> 听众：[听不清]。
BRIAN SCASSELLATI：嗯，如果我 有五个点在开始，
多少个点的我在最后得到什么呢？
>> 听众：五。
>> 布赖恩SCASSELLATI：如果我有 6点之初，
多少才能获得在结束了吗？
听众：四。
布赖恩SCASSELLATI：如果我有 7点在一开始，
多少才能获得在结束了吗？
听众：三。
布赖恩SCASSELLATI：如果我 有Ĵ点之初，
多少才能获得在结束了吗？
10-j的。
行。
所以让我们尝试了这一点。
>> 所以，我要拯救我们的兔子计划。
我们再次将缩小。
我们将去到我们的终端。
我们将清除它。
并进行放大。
我们将让我们的兔子节目，再次。
我们将执行它。
嗯，哦。
>> 等一下，让我们缩小。
难道我得到10帧？
那么，有多少兔子 我看到那里？
1，2，3，4，5，6，7，8，9，10。
我得到了10帧。
他们都是一样的吗？
听众：是的。
第
>> BRIAN SCASSELLATI：没有。
这第一位的， 兔子是远在左边。
而在这里，兔子是远在
SPEAKER 29：对。
BRIAN SCASSELLATI：那么， 我怎么忘了怎么办？
扬声器30：启动一个新行。
BRIAN SCASSELLATI：我忘了 开始一个新的生产线，再次。
同样的错误，我之前所做的。
好吧，让我们去解决这个问题。
现在，我还有代码 在那里做一个新的生产线。
为什么不工作？
扬声器31：这不是在循环中。
BRIAN SCASSELLATI：哦， 它不是在循环中。
这是正确的。
它在这里坐在外面。
而for循环就是一切 就是这样的文字里。
>> 所以，我要动 这里面的for循环。
我将标签在它前面 表明它在正确的地方。
而现在，我们将重新保存。
我们会缩小。
我们将切换到我们的终端。
放大。
我们将重塑我们的兔子计划。
而现在，现在我们已经得到了我们的10帧。
>> [掌声]
>> BRIAN SCASSELLATI：OK。
所以。
我们的嵌套这里的for循环。
我们能够生成在 我有多少点希望内环
打印在开始的时候，在末端。
和外环控制 多少帧我是建设。
我们从一个小小的 问题的核心，
我们从该点建造出来。
好吧。
>> 让我们做一个步骤。
你准备好了吗？
有一件事在这儿， 样的，我们实际上已经得到了
更多的复杂性比我们所需要的。
让我们一起来看看。
因此，在我们的兔子节目， 如果我缩小这里，
我实际上做一些相同的 事情一遍又一遍。
我该怎么做那类的 同样的事情重复了两次？
>> 扬声器32：打印点。
>> BRIAN SCASSELLATI：是 我打印这些点的两倍。
说真的，我应该有 此评论到这里。
我打印了一些点在 开始，一直在这里。
然后，我打印了一些点底。
我做那种完全一样的东西。
我们要开始 致力于在未来几周内
是能够利用这些区块 我们使用了一遍又一遍代码，
并通过一个过程 所谓抽象，
我们要拉他们出来， 一旦写出来，这样我们就可以
一遍又一遍重复使用它们。
因此，让我们试试吧。
准备好了吗？
>> 我们将利用这个代码块。
而且我打算把它救出来。
而且我要define-- 向下在底部，
我打算写一个新的功能。
它不会返回任何东西。
而且我要叫它printDots。
>> 这将需要一个 参数，一个整数，
说howManyDots我应打印。
而不是打印Ĵ点和现在，我 打印告诉howManyDots我应打印。
>> 而且还有一个小问题在这里。
任何人都知道它是什么？
我有什么说的上市 在这里没有定义？
>> 听众：[听不清]
>> BRIAN SCASSELLATI：那么怎么样 多点是指直到
在这里，但我使用的变量i。
所以，我要采取的变量i 我要去下来定义它在这里
代替。
>> 所以，现在它要stay--哎呀， 得到了大写锁定somehow--我
要保持我倒在这里。
>> 所以，现在这里是我的小功能 或子程序，它说，
多少点我要去打印？
而且它会通过这个循环， 一遍又一遍打印出来。
>> 那么我可以修改我的程序在这里。
而且我怎么调用该函数？
printDots。
所以，我会打电话给printDots。
多少点我要打印 第一次小兔过吗？
听众：J-。
BRIAN SCASSELLATI：J-。
多少点我要打印 在最后，兔子后？
10-j的。
>> 还有一件事我很想念。
正如你在演讲今天看到的， 我们要声明printDots
高达上面给的原型。
行。
>> 因此，我所做的是我一直在努力， 隔离的代码重用一部分
我已经做了一遍又一遍。
我一直试图将其拉出，使 所有这一切都包含在一个地方。
这样一来，如果我有一个错误的地方， 我只需要解决它在一个地方。
好吧。
>> 因此，让我们将它保存。
而且，我们要确保它的工作原理。
因此，让我们走出去。
我们将再次去我们的终端。
我们将进行放大。
我们会作出这样的兔子进程。
>> 呵呵。
它给了我一个警告。
它是什么告诉我？
那么在任何这些 时候，你总是希望
滚动到第一个error-- 现在就这一个，我只得到了一个。
>> 它告诉我bunny.c，上线 8，第9栏，有一个问题。
它说，你已经声明这 变量i，你还没有使用过。
>> 现在通常，这是 还不是最坏的错误。
这是一个容易解决。
而事实上，我们可以回去研究。
我们可以回到兔子。
在这种情况下，所有的我们 所要做的就是摆脱我，
因为我们没有使用 我在主了。
我们只是用它 在我们的子程序。
>> 因此，让我们保存。
我们会回去。
并进行放大。
我们将更多的时间做兔子。
还有一次是我们的10帧。
行。
>> 提供给您的任何时候 一个procedure--呀。
SPEAKER 33：我有A--我很困惑。
你能回去的代码？
BRIAN SCASSELLATI：是的。
>> SPEAKER 33：所以，当你写的 你的原型，争论你
有它命名叫的howmany？
但是，below--
>> BRIAN SCASSELLATI：哦，是的。
>> SPEAKER 33：--called他们的东西 不同的，我不明白。
>> BRIAN SCASSELLATI：为什么 他们是不同的。
所以这是一个很好的问题。
所以现在的问题是，上升 在这里，我写的howmany，
而楼下，我写了howManyDots。
>> 其原因是，在你的原型， 它实际上不重视
给你把的姓名。
它所真正关心 是，它是一个整数。
它希望知道的形式 对你把什么。
>> 现在stylistically-- oops--我应该 不，是我喜欢做这些比赛。
行。
因为这会保持它 我更容易记住。
但是，这是我的错呀。
>> SPEAKER 34：所以对于 原型去上班，就
写作这一行， 写原型，
允许函数来 右下方它去年底
和检索是什么意思？
>> BRIAN SCASSELLATI：这是什么意思 是当编译经过，
它从顶部 你的代码底部。
什么这个原型是， 是它基本上是一个承诺。
>> 它说，那里将是 一个函数定义的地方。
这将是所谓的printDots。
而这将需要一个参数 那将是一个整数
并且它会返回 什么都没有，空类型。
行。
我向你保证这将是 某处定义的道路。
但是，任何时候你看 那，你下去
通过其余我 主要的功能，我想
你可以把它看成一个函数 这需要一个整数输入。
>> 因此，当编译器出现故障 通过这一点，它认为这一承诺。
当它下来， 一直走，一直走，
它找到的第一次 printDots被提及。
它说，呵呵，你给 我这个学家生的一个整数。
>> 嗯，你答应我，会 是一个整数，这是正确的。
没关系。
然后终于，下来 在最底层，
之前，我到年底我 文件，我兑现我的诺言
我定义它。
好不好？
>> 扬声器35：所以，saves--的 程序将保存空白
它可以追溯到并填充在结束了吗？
>> BRIAN SCASSELLATI：这不是 关于内存分配。
它实际上只是什么 类型是你希望看到的。
如果这件事情有一个 参数或五个参数？
应该有它的整数是 给它，或字符串？
这一切都在寻找 做的是检查，
你给我 正确的说法。
好不好？
好吧。
>> 让我离开你 另外一个位来看待。
ASCII艺术不是伟大的榜样 动画，因为它是今天。
但是，当然，也有人拿东西 他们推到自己的极限。
>> 这是，正如大卫展示 在讲座中，一段代码
你应该在任何情况下 尝试复制自己。
因为它是可怕的文体。
事实上，它的设计是为 困难的，因为可以读取。
行。
>> 所以，再一次做，让我们放大在了这里。
我现在要去走，更改目录。
我要转到上一级 的水平，回到我的工作区。
然后，我会改变目录到这个 我已经创建了其他目录。
>> 这是国际 混淆C程序设计大赛。
混淆手段硬 如可以理解。
所以，请不要如果你吓到 在这去，我无法读取。
这是它的点。
好不好？
>> 但是，我们有这个 精彩的节目，我是
将只需键入更多的关注一下。
让我们来看看，如果我能缩小 只是有点，所以你可以看到它
>> 这就是该程序。
它的命名endo.c.
它看起来像这样桶 一种字母F-L-U-I-D在里面的。
>> 这其实是一个程序。
这是写在最不起眼的 这样，作者可能可能
写下来。
但它是一个奇妙的小片的 产生流体动力学模型。
>> 因此，我们打算给 这种模式的输入端，
看起来的这样， staired集集装箱
一些液体，一些 液，在顶部。
我们将有它模拟 发生了什么吧。
>> 所以，我会调用该函数，内。
而我给它的 ，我已经有输入文件。
还有就是我们的ASCII艺术的缩影。
一个完整的流体动力学模拟 在代码只有几行运行。
>> 现在，什么是居然真的 令人惊奇这个小程序
是，我现在要停止它， 所以我打算用什么命令？
>> 听众：控制-C。
>> BRIAN SCASSELLATI：控制-C。行。
因此，我将使用Ctrl-C组合。 C，它会停止它。
我会再次清除。
而现在我要调用 程序，执行程序，
使用本身作为输入。
>> 我们将看到流体动力 模拟它融化。
行。
请不要让该程序 是因为混淆了你的东西。
这只是这样我们就可以结束 一些冷静和有趣。
行。
>> 祝您好运与你的习题集。
我们很乐意回答 课后问题。
谢谢了，伙计们。