>> JASON HIRSCHHORN：欢迎到 CS50节，每个人。
我的名字是贾森·赫塞豪恩。
我是你的转录因子很多，但很多 人们会希望能够加入我们
在线扩展学生或学生 试图通过部分看，如果他们
那一周或错过了他们的部分 正好赶上，如果他们想
回顾一些材料。
>> 因此，按照教学大纲，所有 你们都读过，纠正吗？
我看到了很多的点头。
节为您提供的机会 探索课程
材料在一个更亲密的环境， 以及潜入
实践活动。
>> 所以，基本上我们什么 会做每周。
我们通过我们有什么打算去 确定为最重要的
涵盖的主题演讲，和那些 大概也是最有用和最
最有可能想出问题集 和测验，并在您的编码
CS50之外的生活。
因此，我们要进入这些主题， 讨论这些问题，他们走了过来，
回答你们有任何问题， 然后我们做了很多
在编码的实际问题。
>> 你们都带来了笔记本电脑， 这是梦幻般的。
这是一个计算机科学类。
但是，我们做了很多的练习， 你不会需要你的笔记本电脑。
你可以做他们在片材上的纸张。
这就是你要 做他们的测验。
而事实上，这是一个伟大的方式来 真的知道，你该怎么办
如果你没有的东西检查50〜 依赖或依靠，告诉
你做了任何错误。
>> 因此，欢迎你在代码 装置或run.cs50.net，这是
另一种工具，允许您编写 在线，但我也建议，如果
你有没有试过，使用表 纸和尝试这些做法
一张纸的问题。
这还是因为同样的原因，这是最终 你要什么
要求做测验。
>> 因此，让我们开始我们的 今天的议程。
我们打​​算去了一些规范 我们的部分，然后我们要去潜水
成数组，函数和命令行 参数，这是你们
过去的这一周，已覆盖讲座 然后在周一，你会覆盖
更多的明天。
最后，我们要 谈论pset2。
如果我能得到一个举手，如果你 没有看着两个问题集
规范。
我们大家会说。
太棒了。
>> 我们将谈论问题套在一个位， 但如果你阅读问题集
规范，这是 所有你需要做的。
如果你读之前，你来 类和部分在周二，你会
是一个伟大的位置。
我们可以去通过习题集， 这就是我们要去
做底。
我们要经过 逻辑，确保
每个人都在同一页上。
>> 我希望你能够离开周二 你感觉很舒服
需要做的这个星期的问题集， 如果你不这样做，我会很高兴
留后，并与您合作。
但是，这是一件事，你必须 做，但我认为很聪明，
只是阅读问题集 规范类星期二
这听起来像一个 你们做的很多。
>> 我将开始与每类议程 所以你知道我们要去的地方。
这也是有帮助的人看 在网上，因为每个节
颜色编码，所以如果你要来 ，只是看10分钟，而
比整个90分钟的部分， 刚去的颜色编码部分
并期待在这一部分。
因此，我一直试图将它们分开成漂亮的 模块将允许你 -
如果你想回来，并检讨， 或其他学生只是
看一段检讨 -
找到具体的事情，他们 要注意的
并进一步了解。
甜。
>> 规范。
我是一个FOP在校园里的领导者。
我不知道，如果有人做FOP。
有没有人做FOP？
一个人做FOP。
两个人做FOP。
真棒。
因此，FOP是第一年户外 迎新活动。
我们进了树林，使新生 最神奇的经历
他们的生活，是否正确？
嗯。
听起来是正确的。
>> 所以，我只是想开始我们的第一个 通过讨论一些规范部分
类和我们之间的关系 因为我觉得
他们是非常重要的。
首先，那些你们谁 我的部分已收到并
中讨论的 电子邮件，我喜欢这个。
这是今年我最喜欢的部分。
我一直很兴奋。
我在这里已经好几个小时。
我还没有离开这栋楼除了 去吃饭，因为我爱CS50节，我
爱教学，我爱工作 你们。
>> 我的最高优先事项之一，如果不是我 头号优先，不仅为
这一类，但包括我的其他 类和课外活动，是
支持你们，帮助你们， 尽我所能，确保您
你们有一个美好的，有趣的，多产， 引人入胜，令人振奋
在这个类中的经验。
这就是我的承诺。
这就是为什么我喜欢这样做。
这是我的一件事， 支持你们。
如果您有任何关于讲座的问题， 问题集，节，
生活中，即使你想谈谈 生活中，请随时伸手。
>> 你有我的手机号码， 你有我的电子邮件
地址，你有我的GChat。
你可以联系我的任何或所有 何时何地，但可能不会得到
响应时。
我尝试在24小时内取回。
通常情况下，它会在 20分钟或24分钟。
我应该说， 使其平行。
但是，你会得到一个回应 很快。
>> 如果你给我发短信前一小时 问题集中到期，我会冷静
下来，做深呼吸练习 你，但如果你还没有开始，
你可能不会完成， 我真的不能帮你在那里
尽管我会尽我所能。
所以，我会尽一切 我可以支持你。
请随意是否达到 它在节再次，在办公时间
如果你看到我，甚至在外头。
我很高兴，设立时间，以满足 通过问题和工作
或材料走了过来。
所以这是头号，支持。
我会尽我 可以支持你。
>> 二，会议中间。
就像我想是的，我 不是万能的或强大或
全知的，所以我不知道所有的 时间，如果我在做什么
跨越，如果我教的方式 主题帮助您了解它，或者，如果你
感到困惑的话题，但不 举起你的手，或问我
或发电子邮件给我。
或者，即使你再感到困惑 有关问题上的东西。
如果你不拿出来给我， 我不知道那是肯定的。
我要尽我所能来检查 你们这些家伙，确保一切
顺利，试教的方式的事情 大部分将有利于
您的学习风格，但如果有 我能做些什么，让我知道。
>> 沿着这些线路，如果你想要一些帮助 设置的问题，我更
比竭诚为您服务 问题集。
我们打​​算做了很多 ，朝第二
本节的一半。
但是，如果你还没有阅读问题集 备份和没有看过步行
通过和没有看过的短裤 并期待我来教你
一切已经录像 在线或你可以找到CS50
学习，这不是一个真正公平的 我或你的其他同行。
>> 所以，请我更乐意帮助 你，但你们得到了满足我
中间。
我们有资源吨 你CS50。
我提到其中的一些。
请利用它们。
如果你困惑，我更乐意 帮你解释他们在
另一种方式，但它是不公平的，如果 学生在办公时间，
还没有开始任何事情，它是 周四晚上，他们正在期待
他们通过每一个TF走 由于问题的东西设置
第二天中午。
有意义吗？
再次，请配合我们在中间。
>> 最后，很高的期望。
我要分级大家谁 在我的部分，或得分
习题集。
你还没有问题 设置零次或一次。
我们很遗憾。
我们花了一段时间，终于 解决部分，而现在
我们可以开始分级。
>> 我将让他们回到你 尽快。
这些都是我的一些 有advisees。
我将让他们回到你 尽快。
第二个问题集，我们会在 安排，我们将开始让他们
你很快后 你打开它们。
>> 当您重新设置您的问题， 将获得更高的分数，因为你知道，从
阅读大纲 - 正确性， 设计，范围和风格分数。
您还可以得到意见。
更重要的意见 比分数。
我认为它是安全地说。
>> 分数只是一个数字 从一到五。
这是很难读入那些。
这是从那些难以改善。
但评论指出具体 事情，你做得很好或地区
你可以改善，并给你一些 对未来的想法或替代
做事的方法。
>> 所以，请，请，请仔细阅读“ 通过的意见。
我把大量的时间到 这些意见。
请仔细阅读并通过他们不只是 向下滚动到的底部
PDF格式，看你的分数，或者去网上 找到你的分数，然后忽略
的意见。
那不是你 会变得更好。
那不是你要增加 你的分数，最终，只是
看上面的分数。
请看看这些意见。
>> 沿线很高的期望， 再次，就像我说的，你
可以砍下从一到五。
三三两两，三分球，四肢 绝大多数分数
你要得到。
和五岁以下儿童的都是真的很罕见。
总是有东西 我们可以做的更好。
每当我编写一个程序，有 总有一些事情我
可以做的更好。
>> 因此，而不是说你得到了五 一切所有的时间，并
一切完美，我不认为任何 我们真的相信我们 -
希望我们不要做的一切 完善所有的时间。
所以，不要担心，如果你 没有得到一个五。
一个五不映射到一个A， 不映射到一个B，一个三不
不映射到这不是一个C。 的分数是如何工作的。
>> 像大卫已经说过很多次， 学期结束所有你的分数和
从我做起，输入你的TF，走到了一起 并为您确定最终成绩。
但同样，它不是五， 四，B，等等。
所以我要抱有很高的期望 为你们。
我要去预期良好的问题 套，我要去给
您的反馈等。
它不会意味着你 会得到档次更糟。
您而言，分级 你的进步从周
为零，当然结束。
>> 最后，在高 在课堂上的期望，我爱
人参与。
我明白有些人觉得更多的还是 不太舒服的参与。
其他人参与 不是靠提高他们的手，
说话的时候。
但我们在这个类将要 做了很多的小问题，很多
小的问题，然后一些 更大的编码问题。
所以肯定这些工作锻炼出来 当我们这样做，他们在您的计算机上或
一张纸。
>> 但我还会给你前一段时间 有人回答一些
我问的问题。
所以，因为我会给你一些时间 想想吧，因为我们要去
有时合作伙伴做的事情， 我会期待大家
要有点从事。
而对于缺乏一个更好的词， 可能会冷通话，
是每个人都将有机会 思考答案，然后
我会打电话给你，然后 你会说答案。
>> 不要担心或害怕，。
我已经做到了在过去，我们已经找到了 它的成功得多，
阅读教育研究 确定是否它是一个
良好的战术。
这是非常有用的，特别是如果你 让学生有时间去思考
的答案，不要让他们刚进来 出来，说出来了蝙蝠的权利。
但是，如果你感觉不舒服 回答，我还不错
感应到了，我们不打算 把你在现场，尤其是在
摄像头，即使没有 你是在相机现在。
>> 因此，这些都是我的规范。
沿线的一件事 满足在中间。
我去给你们 很多反馈意见。
请给我反馈。
有一个网站，sayat.me/cs50。
所以这是一个诚实的反馈。
如果你想给它一节期间， 我收到一封电子邮件，每当发生。
我们将稍事休息，所以我会在一个位 然后看通过反馈。
如果你有任何意见， 请给我有。
>> 如果你给我反馈，这是在Q 美妙的，但是这是导
你做底。
但是，这将是在学期结束，所以 我不会可以采取任何的
反馈，并把它融入教学 你们更好。
所以，请如果您有任何 反馈，把它给我。
我爱的反馈。
备份FOP，我们得到的反馈 所有的时间。
>> 你可以给我加号，好东西， 三角洲的事情，我可以改善。
你可以评论我的衣服上。
这不会是有帮助，但你 欢迎发表任何评论，
一切。
请，请给我反馈。
我很看重它了很多，这 对我来说意味着很多。
>> 一个规范，乐趣无穷。
我们将有很多的乐趣。
希望在这个过程中，你会 有很多的乐趣。
我们将有糖果部分。
我们就得音乐。
我们会希望去了解一个 另一个有点好，所以我想
这是一个有趣的，引人入胜的体验。
>> 我知道你们有些人睡着 你今天早些时候的演讲，
所以希望这不会 现在的情况。
而如果是现在的情况下，只是 不打呼噜，因为可能
被抓相机。
甜。
有任何疑问，意见或疑虑 之前，我谨什么，我们已经
谈到？
太好了。
>> 因此，我们打算去 先成阵列。
这是你如何使一个数组。
我们已经看到过。
你有一个数据类型，你有一个 名称，然后你有一个大小。
在这里，我创建了两个数组。
第一个是一个字符数组， 它有26个停车位。
第二个是一个数组 分数，它有三个
空间三个整数。
是吗？
>> 学生：所有这些幻灯片 可为我们的地方吗？
>> JASON HIRSCHHORN：大问题。
问题是，所有的 这些滑动？
是。
所有这些幻灯片将是可利用的， 在未来，我会通过电子邮件给
你之前部分。
然而今天，因为这是第一次 本周，我们起步较晚。
所以通常情况下，你会得到这些幻灯片，但 他们将可在网上和
我会通过电子邮件发送给你 下课后权。
任何其他的问题吗？
>> 如此反复，阵列箱，由于缺乏 一个更好的词，有多个
一种数据类型的元素，而且他们 在内存中彼此旁边。
如此反复，这怎么可以 使两种类型的阵列。
>> 所以在你做出阵列 - 诠释，第一行分数，支架
三，靠近支架 - 想要初始化它。
你想在那里把一些值。
这是你如何把一些值 在那里，只是选择的指数和
记录的号码。
让我们画在黑板上。
每个人都可以看到吗？
每个人都可以看到。
甜。
>> 所以这将是我的 阵列称为比分。
正如你可以看到的，它的大小为3。
在那里有三个框。
每一个可以容纳什么 类型的数据类型？
>> 学生：整数。
>> JASON HIRSCHHORN：一个整数 在这其中。
我们写INT的分数，并且第一个字 那将是数据类型
该数组中的框。
所以，我能适合三种。
为什么我必须零 板？
为什么它说得分为零等于1？
提醒我你的名字。
>> 学生：库尔特。
>> JASON HIRSCHHORN：库尔特。
>> 学生：是的。
>> JASON HIRSCHHORN：为什么呢？
>> 学生：因为第一个索引 为零，我们开始计数为零。
>> JASON HIRSCHHORN：所以我们开始 在零计数。
这是完全正确的。
这是令人困惑的部分和意志之旅 你，尤其是当你
试图遍历数组， 我们会做一个位。
我们开始计数为零。
所以，如果我想参照第一 盒，它不是箱里。
不幸的是，箱零。
第二个是框中，并在这 的情况下，第三个是箱两种。
>> 关于对话框三是什么？
箱三在哪里呢？
或者，如果我想要做的成绩，支架 三，密切支架，那是什么？
所以你说的空字符。
任何其他的想法？
什么是得分支架三个支架？
>> 学生：它并没有真正存在，因为 你只定义为得分，
支架三。
>> JASON HIRSCHHORN：所以你说 它并没有真正存在。
在某些情况下，当我们正在处理 字符串，一般我们把空
结束字符。
我们会在第二。
但是，在这种情况下，有 这里没有第三个方块。
所以任何数组中的最后一箱 的尺寸减去1。
所以，如果我们有一个大小为n的数组， 第一盒是为零，最后一个是
在n减1。
在这种情况下，它不存在。
也有一些是在这里 内存，但它不是我们的。
我们并不拥有它。
我们并没有要求它。
因此，如果我们尝试访问它，我们将 做在一个位，我们很可能会
惹上麻烦。
>> 在这种情况下，我初始化我 三个变量的数组。
我们把一箱零，两 在箱，三箱二。
没有任何人有任何疑问， 有关初始化的数组？
>> 于是我们过刚才。
比分，支架三，靠近支架， 不存在。
我们从零开始编制索引，计算机科学， 所以我们开始计数为零。
最后一箱提供给我们，这是 第三个框，但是它称为盒
数二。
>> 而在下面，这是一种替代 初始化数组的方式。
因此，而不是创建一个数组 线，灌装的第一个框，然后
第二个框中，然后在第三个框， 在同一行中，你可以做到这一切。
因此，在该行中，两个数组。
这将创建完全相同的阵列 我们在这里，但它
只是它在一行。
>> 现在，我们已经创建了我们的阵列。
通常，一旦你创建一个数组，你 它想要做的事，无论是
填写或得到的东西出来呢 并打印出来在屏幕上。
在这种情况下，我们将通过我们的 分数数组，初始化
的第一行，在这里在灰度。
然后在第二行，我们开始 遍历数组。
没有任何人有任何疑问， 一个for循环的结构？
>> 因此，这是for循环。
我们有我们的初始条件，然后 我们的最终状态，然后我们
迭代，我，每一个循环。
而在此花括号中的 循环，会发生什么，如果我是运行
这个程序？
谁能告诉我，我们会得到什么？
[？成熟度？ ？]
>> MATU：打印所有分数 在每一行上。
这将打印每个分数 在一个单独的行。
>> JASON HIRSCHHORN：究竟 它会打印吗？
>> 学生：它会打印一个， 然后两个，然后三个。
>> JASON HIRSCHHORN：没错。
它会打印一个，然后两个，然后 三，每一个单独的行，因为
我们正在经历的数组，你会 看到第二个，在printf
声明，分数。
因此，在第一轮通过我们的 循环，i等于为零，这意味着我们
获得得分为零的值 -
其中，如果我们回去 我们的图，是一个 -
并填写 -
哦，它说。
这应该为％d。
我会解决这个问题有点 我的手，你们。
但我们呈现一个整数，所以 这里应该为％d，而不是％C。
％c代表是什么？
>> 学生：字符。
>> JASON HIRSCHHORN：性格，正是。
另一种是什么呢？
如果你不想做一个％D 整数，还有什么可以做什么？
>> 学生：我。
>> JASON HIRSCHHORN％，完全相同。
所以任何疑问迭代 通过数组？
所以会发生什么，如果我们做到这一点吗？
而不是做i小于 三，我是少
大于或等于3。
当我们运行这段代码，会发生什么事？
是的，安妮？
>> 学生：他们打算打印出来 第四行的怪异的东西。
>> JASON HIRSCHHORN：所以你说的，是什么 要打印出怪异的东西
第四行吗？
没有任何人有一个答案 她的问题？
所以赔率是当 我们得到的 -
通过我们为第四轮 循环，就像你想，安妮，
这将是分数支架三， 我们已经想通了，不
存在的，我们要去尝试 和访问，打印
出来，用一些方式。
所以电脑可能会 我们生气。
你说得对。
>> 它可能完全退出程序。
它可能会打印出来的东西 真不可思议。
你不能说是肯定的。
赔率是它可能会生气 你，只是马上退出。
>> 但是，这是一个常见的​​错误，你就会有 你只是在关闭
到底，这是一个错误，将 困扰你整个编码。
我喜欢做的仅仅是在 白板，经过每次迭代
手头上或在纸上看到循环 发生了什么，然后你
普遍意识到，哦，等一下，我不应该 已经小于或
等于三。
，这是我应该停止在两个 会发生什么，如果你的条件
超过三种。
有任何疑问，这么远吗？
甜。
>> 所以你打开你的电脑。
我们要去给你两到三个 分钟写一个程序，
创建一个数组整数 通过五个，然后打印出每个
在新的一行的整数。
如果您有任何疑问， 举起你的手。
我很高兴来的。
就像我说的，让我们采取三种 分钟来写这篇文章。
是所有人都好，如果我去一个 新窗口，并关闭此？
>> 对不起，如果你还没有机会 完成，但我们要做到这一点
现在一起。
所以在屏幕上，我的＃include cs50.h＃包括stdio.h中。
有人可以告诉我是什么 这两行办？
迈克尔？
>> 学生：他们包括库 CS50和史蒂夫
保存供您使用 使您的生活更轻松。
>> JASON HIRSCHHORN：所以你说他们 包括图书馆，一个CS50
，cs50.h，另一种是 只是标准，自带
C包，stdio.h中。
你是什​​么意思，包括 图书馆，虽然？
你能更具体一点吗？
>> 学生：它使得你可以 使用某些码字有
不必去功能发生 c的功能自己。
>> JASON HIRSCHHORN：你能 给我一个例子吗？
>> 学生：喜欢的printf 是您可以使用。
>> JASON HIRSCHHORN：printf的。
所以，你说的printf是那些 功能而不必
写上自己的printf，printf是 实际上包含stdio.h中，所以你
可以只使用它，并承担 它会奏效。
stdio.h中，如果打开了这个文件， 这包括如何的printf
作品，所有的代码为printf？
你为什么摇头？
>> 学生：因为刚才的头文件 包括函数的声明。
>> JASON HIRSCHHORN：完全正确。
头文件只是包括 在函数声明。
所以基本上，当你编译这个， 打计数，我们将做一个
第二，编译器知道，如果 使用了printf printf的存在。
这是怎么回事某处被定义。
这不是一个问题，你使用它。
再后来，它会包括 实际上包含的和为零
printf的实施和 将其与你的代码。
你如何确保它包括 的和零点，也就是说，得到的字符串？
>> 学生：获取字符串cs50.h.
>> JASON HIRSCHHORN：右。
所以说得到的字符串存在， 在函数声明。
但随后的1和0的二进制 文件实际上包含
实施获取字符串？
你如何确保 与你的程序？
>> 学生：通过连接器 命令行参数。
>> JASON HIRSCHHORN：通过连接器 在命令行参数。
你怎么做到这一点呢？
>> 学生：这是铛-L线
>> JASON HIRSCHHORN：完全正确。
你说CS50-L，对不对？
这包括那些和零。
>> 学生：但要确实 为你，对不对？
>> JASON HIRSCHHORN：没错。
make没有你，但最终， 你不会有厂名，或
你就得做出 你自己的，所以这是一个
好事要记住。
如果你要使用其中的一个 其他图书馆，你不仅有
写＃ 然后图书馆。
您还需要与其链接。
而这两件事情是不同的。 -L CS50是不同的
＃cs50.h.
>> 然后我们有INT主要无效花括号， 现在我们要去代码
主内。
我这里有第一行是注释 说，创建一个数组
与int的一到五。
什么是一个很好的词来形容我 现在在屏幕上，只是
里面主要的意见？
我们称之为什么呢？
>> 学生：伪代码。
>> JASON HIRSCHHORN：伪代码。
谢谢你，杰弗里。
这是完全正确的。
伪代码。
有你们之前见过的伪代码？
举起你的手，如果你使用 问题的伪代码之前设置一个。
关于你的一半。
>> 我会强烈建议使用 伪代码问题
更小，更容易咬掉件。
另外，如果你做伪代码，你 您的意见已经在很大程度上
内置的，所以你不要有 回去揣摩
你在做什么。
因此，有人可以给我这个第一线 创建一个数组int类型之一
通过五个？
你呢？
>> 学生：诠释，然后你可以调用 任何号码，然后方
支架五。
>> JASON HIRSCHHORN：所以整型数， 方形支架五个。
>> 学生：等于， 然后大括号。
>> JASON HIRSCHHORN：等于， 大括号。
>> 学生：一，二，三，四。
>> JASON HIRSCHHORN：一，二， 三，四，五。
>> 学生：那么大括号 然后分号。
>> JASON HIRSCHHORN和卷曲 括号和分号。
优秀的。
打印出每个INT在新的一行。
可以给别人 我该代码，好吗？
[？成熟度？ ？]
来吧。
>> 学生：（
>> JASON HIRSCHHORN：（
>> 学生：INT I = 0
>> JASON HIRSCHHORN：INT I = 0
>> 学生：分号我不到五。
>> JASON HIRSCHHORN：分号， 我小于5。
>> 学生：分号，我+ +。
>> JASON HIRSCHHORN：分号，I + +。
>> 学生：休息括号， 然后开括号。
>> JASON HIRSCHHORN：休息括号 两个大括号。
在大括号内？
>> 学生：当时的printf“％D / N”
>> JASON HIRSCHHORN：很抱歉，挺住。
printf的“％D / N，封闭的引号。
>> 学生：那么封闭报价， 逗号，计数，支架I。
>> JASON HIRSCHHORN：逗号， 数，支架í。
>> 学生：对不起，数字支架。
>> 的JASON HIRSCHHORN：数字，支架I。
>> 学生：对不起。
然后关闭括号， 分号。
>> JASON HIRSCHHORN：休息 括号，分号。
我要去拯救。
我们要去计数。
我怎么运行计数？
>> 学生：反斜杠。
>> 学生：点斜杠 -
>> JASON HIRSCHHORN：。/计数，准确。
谢谢。 /计数。
一，二，三，四， 五个新的生产线。
看起来像它的工作。
是的，诺亚？
>> 学生：你也可以做到小于或 等于4，如i小于
或等于4？
少做有什么优势 五，或只是以不同的方式
写它呢？
>> JASON HIRSCHHORN：所以，问题是你 可以做得i是小于或
等于四，而不是 i是少于五个。
又会有同样的工作吗？
>> 学生：它应该。
>> JASON HIRSCHHORN：是的。
它完全将工作一样。
在文体上，它是一般小于 你会看到在第二个时
我们的字符串，可以使用的东西 调用strlen的，你见过
之前，来取得长度 的字符串。
你不能小于 或等于strlen的。
你可以做到小于或 等于strlen的减一。
所以它只是更好 做小于strlen的。
是吗？
>> 学生：在实际测验， 我们必须提供我们的意见
代码呢？
>> JASON HIRSCHHORN：问题 测验，你
有提供意见？
因此，我们会更多地谈到测验时 他们来了，但一般来说，一个好的
经验法则是，只要你 编写代码，提供意见。
如果你得到的代码错了，但 发表意见的权利，你可能会得到一些
信贷从我，如果我是分级 您的问题集，或交了白卷。
因此，意见总是 好来提供。
甜。
计数。
出色的工作。
让我们继续前进。
>> 字符串。
字符串。
我们已经看到了这个讲座之前。
吹我的脑海里，当我 首先发现了这一点。
它可能没有任何人吹的 想到这里，不过没关系。
>> 字符串是字符数组， 他们最终，正如你自己所说，
空终结者， 这是/ 0个字符。
如果我们要画一个串上 板，我们将它画在这里。
所以，这是字符串有多长？
抱歉。
这是字符串有多长？
>> 学生：[听不清]。
>> JASON HIRSCHHORN：四？
为什么是四个呢？
>> 学生：因为第五位 是空字符。
>> JASON HIRSCHHORN：所以第五位 是空字符。
所以，如果我上运行的strlen 这一点，那就给我4。
正确。
而阵中，不过，如果我是 初始化这个数组，多少个空格
我要问的吗？
>> 学生：五。
>> JASON HIRSCHHORN：五。
我不得不问五，但我可以 在这里只把四个字符
因为我需要把这些空 终结者就结束了。
因此，我们打算写“ohai” 把空终止符结束时。
我们会说这是串 s等于这一点。
什么是支架为零？
Ş支架零，安妮？
>> 学生：O。
>> JASON HIRSCHHORN：O型，正好。 Ş支架？
Ş支架五？
>> 学生：不存在。
>> JASON HIRSCHHORN：不存在。
完全正确。
凉爽。
任何理解问题 字符数组，字符串？
OK，然后。
你们更多的程序。
写一个程序，要求用户 一个字符串，然后打印出每个
在新的一行字符。
因此，让我们三分钟的时间写 这个程序，然后，我们将对其进行编码
作为一个群体。
>> 抱歉。
你需要看到这一点吗？
>> 学生：
>> JASON HIRSCHHORN：确定。
让我们多一分钟的代码这一点， 或至少​​开始浏览网页就可以了。
>> 所以，你可以继续工作，但我要去 开始经历它。
像以前一样，我在屏幕上 ＃＃cs50.h，包括stdio.h中。
int类型主作废。
主要的大括号内，我有 两点意见，伪代码。
其一是要求一个来自用户的字符串。
二是打印出每个人 在新的一行字符。
所以，安娜，你能不能给我问 一个来自用户的字符串？
>> 学生：printf的。
>> JASON HIRSCHHORN：printf的？
>> 学生：是的。
（
>> JASON HIRSCHHORN：（
>> 学生：“给我一个字符串。
>> JASON HIRSCHHORN：“给 我STR - 哎呀 -
字符串。
>> 学生：/ N“）分号。
>> JASON HIRSCHHORN：结束的字符串， 闭合的括号，分号。
>> 学生：是的。
然后，下一行，串 S =得到的字符串。
>> JASON HIRSCHHORN：字符串 S =得到的字符串。
>> 学生：是的。
然后是（）
>> JASON HIRSCHHORN：（）
>> 学生：分号。
>> JASON HIRSCHHORN：分号。
太棒了。
所以我要得到一个字符串 我要保存在什么？
什么是变量 您创建的吗？
>> 学生：String的。
>> JASON HIRSCHHORN：变量 称为s。
字符串类型。
没错。
接下来的事情，我们要的是打印出来 每个字符在新的一行。
谁可以给我代码吗？
[听不清]？
你可以把它给我吗？
>> 学生：当然。
>> JASON HIRSCHHORN：让我们做吧。
对不起。
我不喜欢重复你说的话 因为你得到它的权利，但我
有重复，当他们 抄写这一点，他们可以得到所有
的文本改编出来。
所以，你可以继续说话。
不幸的是，我有 说你。
我很抱歉，但 -
>> 学生：那很好。
对于INT I = 0
>> JASON HIRSCHHORN：INT I = 0
>> 学生：我小于 -
>> JASON HIRSCHHORN：分号。
>> 学生：在此之前，我们可以把一个 可变的，所以你得到的int名长度？
>> JASON HIRSCHHORN：哦，你不要 想要把分号？
确定。
所以，你想要什么后做零？
>> 学生：我想要得到的 字符串的长度和
设置到一个变量？
>> JASON HIRSCHHORN：OK， 所以我怎么做呢？
>> 学生：所以你做INT长度=
>> JASON HIRSCHHORN：诠释长度=
>> 学生：S-T-R-L-E-N。
>> JASON HIRSCHHORN：S-T-R-L-E-Ñ -
>> 学生：的S。
括号内。
>> JASON HIRSCHHORN：（S）。
>> 学生：那么我认为你必须 把两个整数之间用分号隔开。
>> JASON HIRSCHHORN：分号 零后？
>> 学生：是啊。
然后放一个分号后， 你说，我不到长度。
我长度小于 是可变的。
>> 学生：分号。
>> JASON HIRSCHHORN：分号。
>> 学生：我+ +。
>> JASON HIRSCHHORN：我+ +。
还有我们的for循环。
OK，在for循环中。
>> 学生：然后做的printf。
>> JASON HIRSCHHORN：printf的。
>> 学生：括号内。
>> 的JASON HIRSCHHORN：括号，报价。
>> 学生：括号，引号，％C / N。
>> JASON HIRSCHHORN：％C，“确定”。
>> 学生：/ N。
>> JASON HIRSCHHORN / N。
>> 学生：休息的报价。
>> JASON HIRSCHHORN：闭合的引号。
>> 学生：逗号。
>> JASON HIRSCHHORN：逗号。
>> 学生：S.
>> JASON HIRSCHHORN：S。
>> 学生：支架。
>> JASON HIRSCHHORN：支架I。
>> 学生：然后关闭括号。
>> JASON HIRSCHHORN：封闭括号。
>> 学生：分号。
>> JASON HIRSCHHORN：分号。
太棒了。
因此，让我们保存这个。
让拼写。
哦，男孩。
我有一对夫妇的错误。
第11行的第一个错误，它说， 预期表达，它给
我的错误，第二 整型，有错误。
有一些错误围在那里。
有谁知道什么样的错误，是吗？
库尔特？
>> 学生：我认为它应该 是一个逗号，而不是一个分号。
>> ，JASON HIRSCHHORN：OK，逗号 而不是分号。
因此，我们需要修复？
>> 学生：
>> JASON HIRSCHHORN：还有什么 我们需要修正？
>> 学生：我们有包括string.h中。
>> JASON HIRSCHHORN：包括string.h中。
在哪里我需要的是什么？
>> 学生：同一个地方，你包括 其他的东西，右
之后包括stdio.h中。
>> JASON HIRSCHHORN：让我们来看看如果这样运行 首先是因为一般来说，我喜欢
解决一件事第一，然后运行 它，然后看看我们得到的错误。
因此，我们要清除终端 与控制n，让我们做法术。
因此，第11行的另一个错误。
预期分号。
而且我还得到 此线路上的错误。
所以，还没有给我一个错误说 不明白strlen的是，
但它给我的错误 行，所以什么是错的？
马克？
马库斯。
>> 学生：你必须删除 第二个int类型声明？
>> JASON HIRSCHHORN：删除 第二个int。
让我们试试这个。
现在清除的终端。
让拼写。
错误。
隐式声明库 strlen函数。
所以，现在我们看到这个错误。
我们需要包括什么？
>> 学生：string.h中。
>> JASON HIRSCHHORN：包括string.h中， 我们要做的＃include string.h中的顶部
在屏幕上。
让我们保存，拼写。
现在编译。
所以，再一次的事情，我们需要 记得在for循环时，12号线
我们设置它，INT I = 0， 长度= strlen的（）。
>> 这是一个很好的策略。
这样的风格是伟大的， 这是伟大的设计。
我们可以进入这些原因后， 但这样一来，你只需要调用
strlen的一次，而不是每一个 时间运行循环。
但是，您需要使用一个逗号 你不需要重新诠释。
如果你宣布这两个 变量在一起，你
不需要再次诠释。
然后，如果你要使用strlen 这是另一种库
的功能不包括在 stdio.h中或cs50.h的的，使
一定要包括string.h中。
库尔特？
>> 学生：那么，如果你并不需要 说是什么类型的长度，是否
意味着它必须是一个int？
你不能有两个不同的 类型吗？
>> JASON HIRSCHHORN：所以，你可以 有两种不同的类型。
长度是一个int在这里，虽然。
长度是一个int，因为它是逗号 然后同样的事情。
>> 学生：所以它假定它是怎么回事 作为第一个是相同的吗？
>> JASON HIRSCHHORN：没错。
我们不打算现在做到这一点，但你 可以包括两个变量对
同一个联机使用一种数据类型。
所以诠释的x，y将创建 两个变量。
因此，整数X，Y，如果我们做的是，它给 我一个未使用的变量x和y，因为
我们不使用它们。
所以把无效之前，仅仅是一个 花哨的技巧，如果你不使用
的东西，要使用它。
但是，正如你看到的，我创建了x和y 在同一线路上用逗号。
它创建两个整数 就在这里。
所以，是的，完全可以创建 两件事情在同一行上
用逗号分隔。
让我们摆脱这些，虽然。
>> 因此，有法术。
谢谢你们为我们编码。
让我们把它更多的时间，运行它。
给我一个字符串。
[听不清]，你做了大部分。
字符串是什么？
>> 学生：您好。
>> JASON HIRSCHHORN：你好。
H-E-L-L-O，同一行上的每个字符。
看起来不错。
让我们再次运行它。
总是要检查 为一角案件。
有什么好的角落的情况进行检查？
>> 学生：多少？
>> JASON HIRSCHHORN：一个数字。
所以，我会投入1，它打印出1。
它不要求的信件，所以 它看起来像数字工作。
好角落的情况进行检查。
什么是另一个很好的角落 检查的情况？
>> 学生：一个空字符串。
>> JASON HIRSCHHORN：嗯？
>> 学生：喜欢一个空字符串。
>> JASON HIRSCHHORN：空字符串。
所以，让我们不要把任何东西。
什么被打印出来？
>> 学生：没有。
>> JASON HIRSCHHORN：没有。
好像它的工作原理。
你可以尝试更多的角的情况下，但 一般的数字，不同的数据
伟大的尝试，也什么都不是。
没有，零，底片总是 伟大的事情，尝试和活动
测试应该，事情当然我们会测试 和检查50测试。
任何问题spell.c？
>> OK，让我们的后脑勺。
我还有一个程序 你们写。
它称为students.c。
这是一个程序，要求用户 五个名字，然后随机选择
打印出的名字之一。
这个程序是多一点点 参与比过去两年中，我们写道，
那么，为什么我们不采取五分钟 单独代码，然后我们会
代码为一组。
>> 该方案还涉及到一些东西 你可能没有见过，所以如果
你有一个问题，怎么办 我这样做，举起你的手。
我会过来和指向你 在正确的方向。
但我们也这样做，因为这 将是一个很好的方式来介绍一些
是棘手的话题。
>> 因此，它的工作原理，对不对？
>> 学生：是啊。
>> JASON HIRSCHHORN：每当你打开一个 习题集，有很多方法可以做到
，但有些更 优雅的比别人多。
让我们长驱直入
＃包括cs50.h.服务
＃包括stdio.h中。
int主要的空隙中，花括号。
大括号内， 我有两点意见。
第一个问 5名用户。
第二个是，随机选择 打印出来的名字之一。
因此，让我们做的第一个，问 5名用户。
谁已要求用户5名 并能告诉我该怎么办？
只有两个人做的第一部分。
三个人做的第一部分。
四，五。
汤姆，你怎么办呢？
>> 学生：你声明一个字符串 然后将其命名，支架五。
>> JASON HIRSCHHORN：字符串 命名支架五。
那么，什么是做这行， 字符串名称支架五？
>> 学生：你会声明 一个字符串数组。
>> JASON HIRSCHHORN：这是 一个字符串数组。
多少字符串会 适合在这里吗？
>> 学生：五。
>> JASON HIRSCHHORN：五。
优秀的。
我们要调用它的名字，因为 我们要得到多个。
OK，接下来呢？
>> 学生：那么你 有一个for循环 -
>> JASON HIRSCHHORN：For循环。
>> 学生： - 对于i = 0。
>> JASON HIRSCHHORN：为（int i = 0。
>> 学生：分号。
>> JASON HIRSCHHORN：分号。
>> 学生：我不到五。
>> JASON HIRSCHHORN：我不到五。
>> 学生：分号。
>> JASON HIRSCHHORN：分号。
>> 学生：我+ +。
>> JASON HIRSCHHORN：我+ +。
>> 学生：然后关闭括号。
>> JASON HIRSCHHORN：闭合的括号， 然后一些大括号。
花括号内的？
>> 学生：printf的。
>> JASON HIRSCHHORN：printf的。
>> 学生：开括号，名称为％d。
>> JASON HIRSCHHORN：对不起？
>> 学生：名称。
>> JASON HIRSCHHORN：名称。
>> 学生：空间，然后％D。
>> JASON HIRSCHHORN：名称，空间，％D。
>> 学生：/ N，然后关闭。
>> JASON HIRSCHHORN：所以名称，空间， ％D / N，右括号。
>> 学生：逗号，I + 1。
对不起。
封闭报价，然后逗号，我+1。
>> JASON HIRSCHHORN：休息 引号，逗号，I +1。
>> 学生：是的。
然后下一行 -
>> JASON HIRSCHHORN：+ 1。
>> 学生：是的。
然后下一张幻灯片 名称支架I。
>> JASON HIRSCHHORN：下一行 名称支架I。
>> 学生：获得字符串。
>> JASON HIRSCHHORN：= -
资本G-E-T -
字符串。
哎呀，对不起。
>> 学生：开放式，封闭式括号 然后 -
>> JASON HIRSCHHORN：开放，封闭括号。
>> 学生：分号。
>> JASON HIRSCHHORN：分号。
好了，你初始化数组 字符串，名称，然后经过一个
for循环，并打印出一些五倍 提示给用户，然后存储
五根弦。
没有任何人有任何 调整？
汤姆，我想每个人都 同意你的。
看起来还不错。
确定。
你为什么要这么做i +1的，但？
>> 学生：我的意思是，没有 是的，但我+1，它是
名称命名五。
否则，这将是名 仅举四个零。
>> JASON HIRSCHHORN：所以，你做了我+1 因为否则它将有
通过四个零打印出来，因为 这电脑怎么想的，但人类
真的不读这样的。
这是另一回事 你会遇到的问题。
有时，当你打印出来的东西 给用户，你会想它
有点漂亮，做 i +1的在这种情况下，是一个
方式，使其更漂亮。
>> 我也看到了五进行两次，字符串名称 范围是5，i是小于5。
我知道你从哪里得到的五个。
我告诉你猜对了 五个名字。
但是，如果我们想使代码 有点更强大的，有一件事我们
能做的就出在这里，外面的int， 我们可以做这样的事情，
＃定义，我们可以做名称5。
>> 所以基本上，无论我写的资本 N，资本大写M，A，大写字母E，
大写字母S，则该字符串，它将取代 5代码。
还是让我们只是把它 - 我们将 只需拨打号码。
所以我定义全部大写 号码为5。
>> 所以，现在无论我有5号，我 可以将其替换所有瓶盖号码。
而现在，如果我想改变号码 名字，所有我需要做的是
这一条线，4号线，在那里我有 ＃定义5号，改到10，
或改变4。
当你的代码越长，你不是 要记住所有的地方，你
把你想要多少名，并在 为了让你不要错过，这是
做到这一点，找到一个很好的方式 往上顶，然后只使用该短语
各地你的代码。
马库斯？
>> 学生：那是风格的首选 不是全局定义
常数n？
>> JASON HIRSCHHORN：是 文体不是全局的首选
定义一个常数n？
所以你说你能 做数= 5？
>> 学生：他们有辅音 在C或没有？
>> JASON HIRSCHHORN或const - 等于。
所以，你说的只是 一个全局变量？
>> 学生：是啊。
>> JASON HIRSCHHORN：文体， 有没有一定的权利
回答，但那些都更好 不仅仅是扔这些随机
整个代码中的数字。
我们称他们为幻数。
当我看看你的代码或当 任何人的阅读，通过它，他们
要的不只是这些随机数 没有意义的。
连号26，它一般是 字母表中的字母数，
这是更好地定义字母往上顶 并保存在该字符串中的26号，
如果是有道理的。
>> 或者问题上设置一个，而不是 - 再次，我们不谈论这个在
的时候，但不是仅仅抛出 到处25或10，你可以
节省25号的季度或10 毛钱，这使得它更容易
无论是谁，通过阅读你的代码 明白你为什么选择了这个数字。
，也为你，如果你曾经想要的 更新你的代码，这使得它有点
更健壮。
是吗？
>> 学生：这是代码也将 后为我们提供？
>> JASON HIRSCHHORN：所有这些代码 我们一起写的是
将通过电子邮件发送给你 家伙。
是。
因此，要求用户5名。
随机选择和打印 的名称之一。
谁这样做行吗？
这是这里最棘手的线。
对不起，汤姆。
你做了一个很好的工作，但 这是一个有点棘手。
马库斯，请便。
>> 学生：那么首先，你要 需要包含stdlib.h中time.h中
>> JASON HIRSCHHORN：所以你说在 顶部，包括两个库。
你要我包括S-T-D-L-I-乙 点H，标准库，
是另一个人呢？
>> 学生：time.h中
>> JASON HIRSCHHORN：＃包括time.h中
因此，这些都是两个库。
我假设现在我们将要使用 在这些中所包含的功能
二，这就是为什么你需要 包括他们？
>> 学生：那么，你先 会想要写srand函数。
>> JASON HIRSCHHORN：函数srand。
>> 学生：（（0）
>> JASON HIRSCHHORN：对不起。
函数srand（时间（
>> 学生：0。
>> JASON HIRSCHHORN：0。
>> 学生：）），分号。
>> JASON HIRSCHHORN：另一个封闭的括号？
分号。
我要去只需更换 您零NULL。
它会做同样的事情，但 通常，你会看到NULL，
我们会谈论这个 在第二行。
>> 学生：文体更好？
>> JASON HIRSCHHORN：一般来说，人们 右NULL，但同样的事情。
>> 学生：INT名。
>> JASON HIRSCHHORN：诠释名。
>> 学生：=
>> JASON HIRSCHHORN：=
>> 学生：兰特。
>> JASON HIRSCHHORN：兰特。
>> 学生：（）
>> JASON HIRSCHHORN：（）
>> 学生：模数。
>> JASON HIRSCHHORN：模是什么？
字符？
％字符？
>> 学生：百分比字符。
模数定义往上顶。
>> JASON HIRSCHHORN：模数。
>> 学生：分号。
>> JASON HIRSCHHORN：分号。
>> 学生：那么新生产线中，将printf。
>> JASON HIRSCHHORN：printf的。
>> 学生：（
>> JASON HIRSCHHORN：（
>> 学生：“
>> JASON HIRSCHHORN：“
>> 学生：％S / N
>> JASON HIRSCHHORN：％S / N
>> 学生：“
>> JASON HIRSCHHORN：％S / N“
>> 学生：逗号，空间名称。
>> JASON HIRSCHHORN：空间 -
>> 学生：哦，我猜， 我们在这里？
>> JASON HIRSCHHORN：我们称它的名字。
>> 学生：打开支架，名称。
>> JASON HIRSCHHORN打开支架，姓名。
>> 学生：休息支架。
>> JASON HIRSCHHORN：休息支架。
>> 学生：）
>> JASON HIRSCHHORN：）
>> 学生：分号。
>> JASON HIRSCHHORN：分号。
OK，让我们保存。
让我们把这段代码。
学生。
让运行该代码。
学生。
/学生。 /学生。
名称之一。
我们会说大卫。
名称两种，RJ。
名称三，罗布。
名称四，卢卡斯。
名称五，约瑟夫。
然后它打印出约瑟夫。
>> 所以，让我再次运行此。
让我做相同的名称。
大卫，RJ，罗布，卢卡斯，约瑟夫。
它给了我这一次大卫。
所以我做了同样的事情，但它给 我不同的东西，这就是
因为，当然，我们要求 一个随机名称。
所以我认为，根据我徘徊 在房间里，大多数人
可能得到的第一部分权利， 设立该阵列，然后让
所有的名字。
我说的是第10行到16。
但18至21行可能 有些东西，你以前没有见过，
让我们通过这些。
>> 这线，的函数srand时间NULL 本质上是 -
对不起，让我们跳过下来 一条线，RAND（）。
这就给了你一个随机数， 一个随机整数。
如果你打的人兰特， 很多你做 -
M-A-n空间R-A-N-D -
在这样的终端，M-A-N 空间上R-A-N-D，敲回车。
你会拿出来手册 将能够阅读兰特的
命令输出数伪随机字节 播种后的随机数
发电机一次。
>> 所以这是一个描述。
这是什么兰特，给人 你一个随机号码，当
你调用该函数。
不幸的是，这是不是真正的随机 因为如果你只需要调用随机
一些种子，一些没有得到 起点，但它总是会选择
相同的之一，它使用一个公式 以确定下一个。
所以，如果你调用rand，它只是 给你同样的事情。
这将是非常可预测的。
实际上，它不会是随机的。
>> 所以我们需要做什么，每马库斯的 指示给我，种子兰特
别的东西，这是什么 的srand函数确实。
种子兰特的东西多一点 随机比同样的事情，
他的播种时间NULL， 是，按照惯例，目前的
时间（以秒为单位）。
>> 所以，你假设每个人的不 要在准确的运行代码
同一秒内，所以它是一个安全的赌注 时间NULL将是不同的
每次运行此代码。
安全的赌注，因此，srand函数将种子兰特 不同的东西每
一次。
因此，按照惯例，当我们想要一个 随机数，我们写这条线，
函数srand时间NULL，给我们一个更 更多的随机种子，然后我们运行
兰特，这给了我们一个随机数。
是吗？
>> 学生：你能说什么 你的意思是由种子吗？
>> JASON HIRSCHHORN：如在种子 -
所以兰特要挑一些数字 它会使用一些
公式得到。
所以它要的东西开始 然后把它变成一种基于
关闭该公式。
如果你总是给它同样的事情， 它总是会变成
同样的事情。
所以，第一件事你 给它的种子。
所以，你想给的东西 不同的开始，所以它
会变成不同的东西。
>> ，然后最后，第20行 这被称为％
模，那就是混乱。
这东西是一点点 不同，在这里，你真的不
在现实生活中的数学。
但本质上，当你把一个巨大的 号码，你分在C，
发生的其余？
>> 学生：被截断。
>> JASON HIRSCHHORN：被截断。
所以20除以3是什么？
这是什么返回 你，20除以3。
我们很抱歉，10除以3。
这是什么回报给你吗？
>> 学生：[听不清]。
>> JASON HIRSCHHORN：10除以3只是 返回3，不是3余1。
那么，什么10模3返回 仅仅是余数，1。
所以，如果你想知道什么10分 3，你会
做10除以3，你会得到你的3， 然后你会做10模3，
你会得到一个1。
所以，你会意识到10分 3 3，其余1。
>> 在此行中，兰特 的任一整数，本质上。
因此，模说，它除以 号，这是在这种情况下，5。
如果你曾经除以一个数字， 整数总是有小于
这个数字。
所以，如果你数除以5， 剩下的总是要
通过四个零。
这是多么的数学工作。
>> 所以一个一个较小的moduloed的大量 数将始终返回
其余部分将始终返回一些 数数比您少
除以。
没有任何人有任何疑问， 模的，因为它会非常，
非常方便，所以我要确保 大家都明白吗？
凉爽。
而且，我们看到，这个程序工作。
OK，继续前进。
>> 所以接下来，我们将要进入 的功能，我们打算去
通过这个东西剩下的漂亮 很快，因为我想获得
命令行参数。
所以基本上， 如您所见，黑盒子。
他们拿东西名为参数， 他们做了他们，无论是
改变或创造一些副作用， 最后，他们吐
出来的东西，这是 返回值。
有谁能够给我一个理由 为什么我们会使用的功能呢？
任何人吗？
其中一个原因就是为什么我们要使用的功能吗？
有人吗？
我看到了两只手。
一个很好的理由是什么？
马库斯？
>> 学生：如果你必须调用相同的 大块的代码多次。
>> JASON HIRSCHHORN：OK，如果你需要 调用相同的块
多次编码。
杰夫，你是否也有不同的原因吗？
>> 学生：只要 您可以编写更少。
>> JASON HIRSCHHORN：您可以编写更少。
右。
如果你想要做的东西很多 -
在上面的代码中，我能有 书面串五倍，但
for循环，使它看起来更好， 你必须写更少的代码。
函数是一种类似的想法。
如果我想要做同样的事情很多， 将它移动到一个函数，并调用
每次功能。
这会为你做那件事。
这是一个很大的原因 使用功能。
>> 因此，解剖函数。
函数一般会 这个样子。
它会开始返回类型， 那么你会得到这个名字。
它会采取的论点，否则 已知参数，和内部
那些花括号，你会 写你的代码。
>> 我们已经看到了一个功能很多。
这是主要的。
这里主要是叠加 解剖我有更早。
诠释权在这里表示什么？
什么诠释是什么意思？
当我写的诠释主要（无效）。
>> 学生：返回类型？
>> JASON HIRSCHHORN：对不起？
>> 学生：返回类型。
>> JASON HIRSCHHORN：诠释是 返回类型，分毫不差。
主返回一个int。
主要是什么？
>> 学生：功能名称。
>> JASON HIRSCHHORN：主要是 的函数名。
完全正确。
和无效的呢？
括号内的什么是无效的？
>> 学生：它并不需要 任何外部的价值。
>> JASON HIRSCHHORN：所以无效 -
正确的。
括号内的，我们把 参数或参数
功能需要？ 黑盒子内。
当你写无效，你说 这需要什么英寸
因此INT主要无效意味着主要的 不采取任何英寸
>> 花括号内的，我们有一些 代码，然后我们看到了在年底
返回零。
归零什么意思？
好吧，我们谈到的返回类型。
主要需要返回一个int。
这是这一行做什么。
它返回一个int，零。
>> 当然，我们还没有看到，很多 因为在编程中，我们做
我们做的机器和编译器 我们用如今，你
不需要该行。
主要是够特别，它知道 主，只是当你到达终点
返回零，如果一切都很顺利。
事实上，如果事情不顺利， 主往往会返回不同的
数字标志着东西 与你的程序出了错。
>> 所以，通常当你看到代码，你 不写返回零，但它的好
知道背后发生了什么事 场景，因为每当你写
另一种不同的功能， 您将需要
包括返回行。
如果你说我要去 返回一个int，你必须
写返回的东西。
如果你说在这里无效 年初，无效的主要无效，
例如，那么它并没有返回 什么 - 空虚意味着什么 -
所以你不需要返回的行。
但你曾经写的东西，这不是 无效的返回类型，你需要
一个回报，你说行 需要把东西
类型相匹配的。
任何问题吗？
甜。
>> 范围。
这是我们已经 以及感动。
每个变量，因为我们知道，有一个 一定范围内，这是基本
谈论变量 可能会或可能不会被引用。
我喜欢说会发生什么 在大括号中保持
花括号内。
因此，例如，如果我们看一下这段代码， 我们定义了一个全局变量
为主，诠释一个外， 这里在顶部。
我们调用另一个 int一个主里面。
我们有一些比较大括号， 我们调用另一个INT的一个。
>> 我们有三个代码。
这些都是不一样的东西。
我创建了三个不同的变量。
然后里面这些内在的卷发 牙套，我说A = 4。
哪一个是谈论， 第一个，第二个，
第三只呢？
>> 学生：第三个。
>> JASON HIRSCHHORN：在谈论 关于第三个。
所有那些实际上可以 谈到在这个特殊的
例如，由于其范围 到这些最里面的大括号。
然而，当你调用东西是一样的 名称，称为隐藏的东西。
所以你只处理或修复，或使用 最近的变量，或者一个
最接近你。
所以，里面第三个是在这里，这是最接近 该行中，a = 4，所以它
影响第三。
和最后一行中，a = 2，a是 ，谈论，所述第一，第二，
第三个是？
>> 学生：二。
>> JASON HIRSCHHORN：在谈论 关于第二个是。
当然，第三个是最接近 它的代码，但第三个
外部不存在 那些大括号。
一旦你到那个封闭的卷发 梅开二度，这就像它不见了，
本质上。
所以，唯一的两个你已经离开的是那些 第2个，当然，现在
它的最近的第二个。
>> 所以这是一件好事， 记得大约范围。
例如，我敢肯定，你遇到 这在一个do while循环。
如果初始化的变量里面 DO WHILE循环，然后你​​试试
访问它之外，你可能 像，这得到了一些警告
变量不存在。
那是因为范围的想法， 事情只存在
那些大括号内。
大括号是像一个巨大的拥抱 你给你的代码，又是另一回事
去想它。
>> 因此，这是另一种功能，这 你们的代码，hellofunction.c。
我们要跳过的现在，但 这是我鼓励你
在自己的练习。
写一个方案，其中主要电话 另一个函数，打印出
问候给用户。
它本质上是“世界，你好 和抽象成的printf
另一个功能。
但我们不打算这样做，现在 因为我们没有尽可能多的时间
离开，我会很喜欢。
>> 所以函数声明。
我们已经看到了这个前。
如果你想要写另一个函数， 你需要让计算机知道
主知道它的存在。
所以，我们做的是上面的主，我们写 返回类型，名称，和
参数，然后向下跌破主力， 这里，我们实际上该行复制
然后编写实际的代码。
那么这样一来，如果你调用函数 主要在顶部，主知道，
你好存在，例如，如果我是 打电话招呼，然后它看起来
实施向下跌破。
会发生什么事，如果不包括这 线向上顶，无效（无效）？
>> 如果不包括此行 和主呼叫你好，我是
要得到一个错误。
我要得到一个错误，因为 编译器不知道
这件事情的存在。
这就是为什么我们 ＃包括cs50.h.
基本上cs50.h做 放置得到字符串在那里。
推杆得到int的有。
它把所有这些功能 前主让原型时
你叫他们在主，主知道 这些东西的存在。
这是那些h文件。
所以，如果你打算让自己的 功能，你一定要确保
在那里，你把原型。
关于这个到目前为止的任何问题？
>> 命令行参数。
这就是我们要去完成 ，然后希望我们能
挤在一些pset中。
我不知道，如果我们将能够挤 因为时间，但
你们谁在这里，如果你 家伙想了一下后说，我们
可以在它外面。
但我们要完成 命令行参数
最后15分钟。
我们醒了，迈克尔？
你醒了吗？
好。
我不知道，如果你睡 闭上你的眼睛。
这将是非常棘手。
>> 命令行参数。
这是一个的方式来传递信息 进入程序。
最后，我们会遇到别人。
但是，从本质上讲，我们要停止 写诠释的主要（无效）如果我们想
采取一些命令行参数。
我们打​​算写这个东西 被称为国际主要（INT ARGC，
串argv的括号内。
这是令人目不暇接。
这是一个很大的字母中所没有的 人类的英语，所以我们要
现在他们解压。
>> ARGC参数计数 -
再次，所有这些都将 可在线 -
参数的个数。
ARGV参数向量， 这些都是自己的论据。
这是一个字符串数组。
实际上，我们已经看到了一个阵列 今天之前的字符串。
我们创建了一个在过去 程序编码。
>> 因此，这里是一个例子。
我写。/ ohai CS50节 我的命令行。
ARGC在这种情况下等于3。
ARGV支架0 ohai，argv的支架1 CS50，argv的支架2部分。
同样，argc是参数的个数， 把你绊倒了一点
位，我们总是算的名称 函数的第一个参数。
因此，在这种情况下，有三个 参数的函数名
那么这两个，我键入。
>> 下一步，我们要拯救那些 参数本身argv中。
再次，正如我们之前看到的，我们做 这在过去的程序编码。
您可以将通过数组 argv和那些字符串。
本质上这是我们做了什么 年底我们的最后一个节目。
我们挑了随机的名字，然后去 名称支架无论和印刷
出字符串设在那里。
>> 论只是一个阵列的顶部，由于 字符串本身阵列，
谈到，你可以有阵列 的阵列，这是
基本上argv是什么。
一种方式，你可以考虑一下 这是行和列。
现在，我可以得出这样的权利。
所以argv的 -
不擦除。
让我们借鉴ohai下。
>> 所以，如果我写的，ohai CS50部分， 我要截断
在这个例子中的一节。
但是，从本质上讲，我的多维 阵列，ohai CS50
我们要做的教派。
所以在这里，我可以访问 -
如果我只是给argv的一个数字 -
这是错误的。
在这个图中有什么不对？
>> 学生：从零开始。
>> JASON HIRSCHHORN：它应该 从零开始。
也许我应该还可以旋转它，但 因为我已经画了，我
要离开现在。
但是，从零开始。
这是正确的。
对不起，如果这是小的。
你们可以看到吗？
所以，如果我做的argv 0，我会 得到所有ohai。
如果我做的argv 1，我会得到所有的CS50。
如果我做的argv 2，我会得到所有的教派。
>> 但现在，正如我们所说，字符串 阵列本身。
那么我能做什么我就可以把这个 作为一个多维数组，并且我
可以做一些沿线 argv的0，0，这给了我只是
字符0。
ARGV 0，1，这给了我只是ħ。
ARGV 1，3，给我 0这里CS50。
>> 因此，因为字符串本身 阵列，我们把
在另一个数组。
我们现在有数组的数组，我们 我们的第一个数组索引和
然后我们第二个数组的索引。
和你所期望的，我们这样做 只是把那两个 -
只是我们做的方括号 旁边另一个。
所以在这个例子中，argv 1是CS50和 argv的1，2，就像我们所说的，仅仅是5。
没有任何人有任何疑问， 多维数组？
你们做得真棒。
甜。
>> 因此，我们有另一个程序在这里， 这是我们的最后一件事
现在要做的。
所以，我要你写一个程序， 以用户的全名，只有两个
两个命令行参数，最后， 打印出问候
用户包括他们的名字。
那么，为什么不把三个或四个 分钟做这个，然后我们一起去
以上为一组，并 然后我们将收官？
>> 再次，在这里，当我们说一个 描述每个用户的全名
这个问题，它应该是命令 行参数，不使用字符串。
是啊，马库斯？
>> 学生：所以当你说两个命令 行参数，除了
/运行，或者 -
>> JASON HIRSCHHORN：好问题。
做的，包括。/运行，三 命令行参数。
或包括/个性化， 这种情况下，因为这是
此文件的名称。
所以ARGC将有三个。
不过，我想只有两个参数 给程序。
我应该指定。
之前，我交的，我会作出这样的改变 这些，并送他们到你们。
>> 学生：如果你 有一个中间的名字吗？
>> JASON HIRSCHHORN：如果你有一个中间 名字，你的运气了。
对不起。
或者，如果你只去夏奇拉 你也是出于运气。
是吗？
>> 学生：所以当人们没有 cs50.h，他们定义的argv
为char明星argv的？
或者是它仍然被称为串的argv？
>> JASON HIRSCHHORN：是的。
因此，字符串，我们再次掩盖了什么 究竟是有发生。
这是怎么回事也许要解压缩 上周三，但很快。
这就像训练车轮。
因为从本质上讲，它是 同样的事情。
>> 因此，让我们一分钟程序 这一点，然后我们会去
为一组，然后 就像我说的，包裹起来。
而且我觉得他们仍然是额外的糖果， 所以你们应该有希望
，请采取这一。
>> 很抱歉，如果你还在写， 但我想潜水，我们
可以一起完成。
所以，我已经写了＃ cs50.h＃包括stdio.h中。
诠释的主要（无效），卷发，大括号 括号，里面三行
伪代码，用户的全名， 两个，只有两个命令行
参数，打印出问候 用户包括他们的名字。
>> 因此，第一个， 用户的全名。
谁可以帮我 用户的全名吗？
我该怎么做的那部分？
难道你们这样做，第一部分？
以用户的全名。
那么，对于一个命令行 的说法，我应该写什么？
我应该改变什么 我的函数声明？
>> 学生：你不希望 它是无效的了。
>> JASON HIRSCHHORN：没错。
我不希望它是无效的。
我想要什么？
>> 学生：INT ARGC。
>> JASON HIRSCHHORN：INT ARGC。
>> 学生：弦乐的argv。
>> JASON HIRSCHHORN的String argv的。
>> 学生：支架，支架。
>> JASON HIRSCHHORN：支架，支架。
这完全正确的，那就是 其实我会怎么得到
用户的全名。
他们打算把它放在那里。
所以，一个人的工作。
所以现在我想两个，只有两个 命令行参数。
所以，诺亚，什么是尽我所能 检查数量的命令
我行参数？
>> 学生：你做一个if语句。
>> JASON HIRSCHHORN：如果 声明中，完全吻合。
我想要什么条件？
>> 学生：如果大于3的argc。
>> JASON HIRSCHHORN：如果ARGC 大于3。
如果ARGC大于3，怎么做？
>> 学生：返回1。
>> JASON HIRSCHHORN：返回1。
将确保我有 两个只有两个？
>> 学生：
如果argc是大于 3和小于2。
>> JASON HIRSCHHORN：如果argc是更大 比3和argc小于2。
什么方法可以让我写这篇文章，在短短 一行上，或者不使用该
布尔运算符？
>> 学生：这不是等于2。
>> JASON HIRSCHHORN：如果ARGC 不等于2。
没错。
因此，如果argc是不等于2，即 会给我这个程序，
个性化，当我跑的时候， 会给我多少
命令行参数？
我检查了多少？
>> 抱歉。
让我改写了。
如果ARGC = 2，没多少东西 用户写入行？
>> 学生：一。
>> JASON HIRSCHHORN：只有一个问题。
所以之前，你是对的，诺亚。
什么我确实需要放在那里？
>> 学生：那等于3。
>> JASON HIRSCHHORN：ARGC 不等于3。
因为我想，我要等于3 个性化的附加其他两个。
因此，如果ARGC不等于3，返回1。
你为什么说返回1？
>> 学生：因为， 意味着它是错误的。
>> JASON HIRSCHHORN：这意味着它是错误的， 什么该怎么办？
>> 学生：重新提示用户。
>> JASON HIRSCHHORN：这将退出 程序，所以它会运行
了，但我们不会有什么关系 在这里再次要求他们。
我没有要求。
所以这是完全正确的。
返回1只退出程序。
太好了。
>> 并打印出用户打招呼 ，其中包括他们的名字。
我怎样才能做到这一点呢？
安娜？
>> 学生：printf的。
>> JASON HIRSCHHORN：printf的。
>> 学生：（“
>> JASON HIRSCHHORN：（
>> 学生：“你好
>> JASON HIRSCHHORN：“你好
>> 学生：％S
>> JASON HIRSCHHORN：％s的
>> 学生：/ N
>> JASON HIRSCHHORN / N
>> 学生：“
>> JASON HIRSCHHORN：“
>> 学生：ARGV
>> JASON HIRSCHHORN：对不起？
>> 学生：ARGV
>> JASON HIRSCHHORN：ARGV
>> 学生：方括号1。
>> JASON HIRSCHHORN：方括号？
>> 学生：1。
>> JASON HIRSCHHORN：1。
>> 学生：）和分号。
>> JASON HIRSCHHORN：）分号。
让我们运行这个。
使个性化。
/个性化。
它只是退出。
为什么退出？
>> 学生：你没有提出任何论据。
>> JASON HIRSCHHORN：我没有 把任何参数英寸
看起来不错。
你们钉。
如此反复，你走进argv和你 在开始的argc检查。
这些是两个重要的 事情要记住。
因此，在我们之前，我们最后两分钟 离开，我们不会给pset两个，但
就像我说的，如果你想留后 10分钟，我想他乐意去
用你们的逻辑 这些问题集。
我们有很多今天覆盖 所以我没有得到他们。
通常情况下，我想包括 在末端。
所以，如果你要坚持围绕， 坚持10分钟左右。
我们会做到这一点。
>> 然后，我开始提到的， pset的零和一，我们会拿到
反馈回给您 尽快。
我们的目标是获得的pset一个反馈， 注释部分，
之前的pset二是由于。
所以，如果你犯了一些错误或 文体，事情可能会更好，
你就会有这些信息，以便您 不会做同样的事情在pset中两个。
然后在未来，你会得到所有 您的的PSET反馈和意见
回在下单前到期。
>> 最后，如​​果我可以把在另一个 插头反馈。
这是你的第一个部分。
这是我的第一部分 今年教学。
去那里。
写的东西，好的和坏的， 我会用它来作
部分在下一次做得更好。
最后，再次，如果你需要 什么，让我知道。
我更乐意帮助你们。
如果你只是想糖果，我 将有额外的糖果。
我很高兴把它给你。
>> 这将是一个惊人的课程。
这是一个，如果不是我喜欢的 当然，我已经在我的整个生命，
我希望这将是 为您精彩。
所以，我想要做我的一切力量 ，你真棒。
我要发送一封电子邮件，如果你 在我的部分或诺亚，
去尝试，并安排与各 你们的时间检查过
接下来的几个星期，这样我就可以得到 感你的CS背景是什么，
它也将帮助我定制这些 部分，以更好地满足您的需求。
所以，这就是我得到一字排开。
再次，我会看到你外 如果你想在那里。
这是一周两节。
谢谢你们这么多。