[Powered by Google Translate] [♪嗡嗡声♪]
所以把你介绍给我有什么在屏幕上;
它是一个在今年夏天，我们开发的工具;
它被称为CS50空间，
这是我们的合作编码应用
我们要使用的部分。
这实在是太酷了。
您有任何CS50运行吗？
让我拉起来，在另一个选项卡。
Run.cs50.net
所以
如果你去run.cs50.net，
你可以看到这是一个在您的浏览器的方式
其实代码 - 编写C代码，
然后运行它，
所以编译，运行它，然后输出返回给你，
所以这是一个冷静的方式进行实验
大卫在课堂上的一些代码
和我们给你的问题​​集
没有真正火起来的家电。
>> 因此，空间做什么，不同的
如果我切换到该选项卡，
空间是CS50运行，就像你看到这里，
但是，如果我们滚动，并期待在另一边的窗口，
你看到的我是唯一的人在这个空间，
但我要问你们加入这个跟我的空间
，我们将所有的代码在同一个小窗口，
相互共享代码，
谈论我们的代码之间的差异。
所以这是一件很酷的事情的一种 -
所以要加入，如果您访问此链接在顶部
我已经强调了，
你可以直接输入在apps.cs50.net/spaces/vqcspSnO。
>> 好了，所以开始时，
我去给你一点点的参观。
我们会做一些愚蠢的小编码与它在第一，
只是让大家有点的感觉是什么样子的，
但我做了什么 -
我在这里做什么 -
我要的代码，我已经写在这里，
正如你现在看到的是空的;
它不会做任何事情。
这只是锅炉板代码，我们将调用它。
随着一点点地做评论。
我要通过点击此“保存”按钮保存。
是什么做的是什么
强调它在这里简单 - 修订版本保存的绿框，
现在，如果你搜索我的空间，
你点击我的名字，
你可以看到，我已经得到了本次修订在这里，
如果你点击该版本，
它会加载的代码到你的空间了。
>> 所以每个人都加载了代码到他们的空间吗？
好吧，如果你还没有，去进取，做到这一点，
那么我希望你们在这个小的办节
是使用printf自己写一点点，
例如，我会写
printf的（“我的名字是Nate”）;
然后我会写
“我2009年毕业的
从斯坦福大学“
，我很想听到
你是哪一年在学校里，
无论你是在大学或商学院
或其他的哈佛学派，
你正在学习什么，如果它的未知;
如果它不知道，这是很酷的。
我没有决定，直到我在我大二的时候已经很晚了。
然后我也很想知道
什么疯狂的，你要告诉我，或
类或别的东西。
当你写完你的小printf的，
如果你能保存修改，或者更确切地说，
首先要确定，你可以运行它
它打印出的正是你想要它打印出来，
然后如果你继续前进，并保存该修订
使用修改保存“按钮，这小家伙在这里，
，我们会有点儿经过，这样做一简单介绍。
所以，你应该只需要点击“播放”按钮，
这是在左上角，
所以这左上角的播放按钮将
你的代码发送到我们​​的服务器，它被编译，然后运行。
那么，什么是有点疯狂
这段代码实际上是在计算机上运行;
它实际上是在互联网上发送。
>> 怎么样了，夏洛特？
>>我 - 好了。我 - 我想我
有困难的保存
在服务器上，这样它可以 - 我可以运行的程序。
然后当我尝试运行它，它说，有一个错误。
声明为病毒，这是不是在那里了。
哦，让我们来看看，你可以再次点击保存？
我看到它在屏幕上。
“对了，好了，所以这是我所拥有的。
我不知道为什么它不会让我运行它。
哦，好吧，对不起。
你能解释为什么 - 什么是错的 - 什么是不工作？
“是啊，因为我没有看到，有一个最后一行那里的仍然是一个变量
我没有宣布，我不打算为它在那里。
是的，完美的！
>>现在，如果我保存它，我认为它应该工作。
现在，你已经救了它，它的工作原理;真棒。
>> 所以，是的，我们通过 -
所以发生了什么事情，
我只是重复的摄像头。
发生了什么事，这个变量s
留在后 - 我想你删除了一些其他的东西，
你宣布，
，所以这个扔东西了，并没有让你运行它。
因此，这正是我们想要做的第
有人尝试写不同的代码块，
编译它，看看你的作品，看看有什么不
然后有点谈论这些事情，因为这是跳闸点
我仍然会遇到，
我还是 - 我做很多愚蠢的东西所有的时间，
我不知道为什么它不工作，
让我们拉起夏洛特的修订3，
我们会运行它。
>> 所以，当我运行了，现在我已经拿到了她在这里的代码，
我可以放大，打到“运行”按钮，
上传它，建立它，运行它，
说，它成功地跑了，如果我向下滚动，
夏洛特是一个大三学生亚当斯房子，
心理学，经济二次真棒。
很高兴见到你！
真棒。
好，继续，让我们去丹尼尔，
修订3，
编译，运行;
你为什么不告诉我们一些关于自己，丹尼尔？
给我打电话丹。
我要你们对面的商学院，
我是在海军陆战队员之前，在这里，
这是我的全部新，所以啊。
不要难过，我30岁，我不知道任何这方面的东西。
真棒，谢谢你，丹！
好了，我们还有丹尼尔。
您的丹尼尔 - 你介绍一下自己，丹尼尔？
>> >>当然，我是丹尼尔。
我是一个大二的学生现在在奥美。
我专注于政府，
但我想借此CS50，因为我已经听到了巨大的类评论
和我从来没有尝试过CS。
向下滚动，并出示此 - 凉。
移动，贾里德。
怎么了？
>>好，你怎么样？
正如你可以看到，我是一个初中理念集中在艾略特，
最初由加利福尼亚州南部，
和我采取CS50很感兴趣，因为我喜欢它的逻辑，
它在电脑上做的事情，所以看起来真的很酷。
真棒，你是在南加州吗？
“关于一个小时[听不清]的一个小城市[听不清]。
哦，是的，我爸从雷德兰兹。
很酷的东西。
>> 好吧，吉米怎么了，吉米？
>>好，你怎么样？
算不错了！
告诉我们你的。
我是一名大一新生，我不知道我主修
但我有点倾向于经济学。
像丹尼尔在我面前，我从来没有做过任何CS，但它听起来还挺酷的。
我最初来自芝加哥。
真棒。因此，检查了他的打印输出。
我想问问，这样做打印出你所期望的吗？
>>没有，我忘了打印新的生产线。
我竟然忘了，当我在写我的事
为第一次，太。
这是一种痛苦，要记得把那些手动。
它会是不错的，如果它只是知道这是你想要的。
>> 好吧，凯利。
哇，我们有2个的凯丽; 2丹尼尔斯，2凯丽。
因此，凯利 - 你去凯利任吗？
好了，真棒。
凯利，我的意思。
“所以呀，所以我凯利。
我大二学生Pfoho。
今天，我仍然有7周宣布我的注意力，我收到一封邮件，
所以我试着不去想它，
和我喜欢烘焙，运行和Craisins。
我没有经验，大部分的CS;
我教自己建立的网站，我很年轻的时候，
但我想我可能教自己错了很多次。
希望我会学多一点点
- 是的。
>> 真棒，好，谢谢你。
让我们去其它Kelly;
我没有什么 - 你在这里说些什么？
>> [听不清]
在那里！
太好了！
>>所有权利，所以我凯利。
我是第一年的研究生。
我主修心，脑和教育。
在2008年，我毕业于富兰克林与马歇尔学院
在心理学和社会学专业
未成年人在法国。
我CS50
因为我有兴趣在神经科学中获得博士学位
我觉得这会帮助我了解正在使用的技术。
真棒。
移动，米凯拉。
那是正确的发音吗？
好了，真棒。
>> >>，我Mikhaila。
我是一个大二的学生在柯克兰楼，
我集中在机械工程。
我真的很喜欢骑自行车，自行车在今年夏天建成。
我的CS，其实，
作为的浓度要求，
但你知道，我认为这是尚酷样的工程类。
真棒 - 你建立了一个自行车今年夏天？
>>呀。
哇，像框架和所有呢？
>> UH-hunh（肯定的）。
哇，这真的很酷。
>> [卡通摄像头聊天]
[笑声]
是啊，这是这么久。
你永远不知道，对不对？
好了，凉;以及感谢，Mikhaila。
>> 好了，大小姐。
>>我的名字叫大小姐，我是一个大一学生，
因此，这意味着我什么都不知道！
我想集中在天体物理学。
在CS50，
我觉得肯定会帮助。
我是一个奇怪的事实，我是国家认证的消防队员。
哇！
这是怎么回事呢？
>>我参加了学院
经历了地狱了很多周
并得到我的认证。
哇，恭喜！
这是不小的壮举，是肯定的。
好了，现在我们要做我。
我行中的下一个。
我 - 运行它。
>> 所以我的名字是Nate。
我是2009级在斯坦福大学。
我是一个符号系统的主要
这是心，脑，行为集中在这里，
但它是一种混合
计算机科学，语言学，心理学和哲学。
样的 - 是的，有很多奇怪的东西，但它是伟大的，
，然后我做我的主人在计算机科学，以及。
所以，我到哈佛大学今年。
我真的很想进入教学。
我花了近4年在斯坦福大学的TA-计算机科学类
大卫让我来吧，
我要帮助CS50，
所以我做到这一点的时候，我不是在读研究生。
这很有趣。
希望它会继续是有趣的，我敢肯定会的。
>> 所有权利，山姆。
>>我的名字是山姆，我是在大学二年级，在法律上明确。
我主要将是科学史上的可能，VES二次，
我最喜欢的颜色是黄色的。
没有必要通过判断或任何东西，但它是一个很好的颜色！
斯特拉。
>>你好，我是斯特拉，我是一个大一的灰色。
我有没有什么线索，我尚未集中，
所以CS50是一种随机，
这是有趣的。
有趣的事实，吉米是哈佛的第一个朋友，
因为我们俩都从芝加哥。
冷却，格雷斯 - 这应该是非常好的，对不对？
>>我想[听不清]。
哦，是的。
[卡通/关闭摄像头聊天]
好了，我现在还在学习，还在学习。
>> 因此，我们有别的东西，这是一种有趣的。
是啊，我只是想知道，你有一个想法，是怎么回事？
你知道该如何解释呢？
>>我本来是要放在每一行后面的分号。
这是一种痛苦。
有时，这些的分号可以是一个真正的痛苦追查。
所以，事实证明，
我们使用的是今年的特别节目
编译我们的C代码被称为铛，
的原因，我们已经开始使用铛今年 -
因为我们没有使用该程序在过去的;
我们已经使用了另外一个叫GCC，实在是很受欢迎 -
铛实际上是为您提供了有意义的错误消息。
这一个说，“预计”，“表达”之后，
它甚至会告诉你之后，你需要一个分号的表达。
那么，你修复它？
>>是的，没错。
真棒，让我知道，我们将它拉起来，我们将运行它。
但是，是的，把这些分号，是一种痛苦。
我固定的，所以我认为它应该工作。
真棒 - 修订3。
这看起来像它。
好了，所以现在如果我们运行它，
就这样吧。
很酷的东西。
>> 好的。
因此，感谢你这样做。
这极大地满足了你们。
什么现在我们要做的就是在接下来的点点
有点潜入的部分问题
从本周的问题来自
我们会做到这一点的大部分路段
的其余部分的术语，
然后，我们将保存最后15，20分钟左右
谈论的问题本身
，然后就您有任何其他问题，在一般的类。
这就是说，我们真的很想做
有大家参与
使用空间的东西，
在代码中扔，扔了建议，
和谈论这样的事情休息时，
或不工作，只是因为这些事情，
我知道我遇到了
当我开始编码，
真的有点令人沮丧次
因为如果它像凌晨2点之前是由于你的习题集，
- 只是披露，
我并没有开始编程，直到我是一个大二学生。
这是种奇怪的，未知的事情
我听到的是有点凉
我还听说它可能是一个真正的痛苦的对接
如果你错过了一个分号，使你的程序不能正常工作，这是唯一的错误
让你去睡觉，
所以肯定，
如果你有这样的问题，
如果你有这样的问题，让我知道，
因为我要让你们这是一个很好的经验。
>> 因此，有你们所有下载的问题还设置？
均田知道它在哪里？好吧。
所以，我们去cs50.net，因为我没有在此帐户，
拉起来的问题集，
拉起来的问题集2，今天我们来看看标准版。
我们会拉规范。
向下滚动。
因此，我们要的问题，在本节开始寻找。
你们看着这些短裤吗？
好吧。
所以有循环短裤，
这是由汤米，头部教学研究员之一。
还有一个关于范围，
我相信，通过另一个教学名叫大卫的家伙，
恺撒密码，然后由大卫也做了。
他们很酷。
你们看他们的短裤这么远吗？
还好吗他们了？
有帮助吗？好了，好知道。
如果不是这样，你可以这么说。
但在此之前，
有你们看着这些问题，
在所有？
>> 我们谈谈这有点。
因此，我们已经介绍了在过去的几个星期
在讲座
若干不同的循环。
有for循环，
while循环，do-whil​​e循环，
在讲座中，我们已经谈论了很多有关
如何将这些循环
相当类似，在很多方面，
和一个while循环，你可以做同样的事情
你可以用一个for循环。
你只需要种使用正确的组合变量等。
等真的
所有的循环的真正区别是，
有时，他们更多有用的
使用它们比在另一时间在同一时间。
>> 因此，例如，
从do-whil​​e循环while循环不同的。
大家都觉得像他们有一个很好的处理时
一个do-whil​​e循环更
有用的或有什么区别吗？
>>我认为所不同的是一个do-whil​​e循环
运行 - 我不知道是怎样的术语，
但内环路的一系列的功能。
他们自动 - 它至少运行
前检查的情况下，或在while循环将只运行它​​时，
连续运行 - 是否得到满足的条件。
是的，这有意义吗？
>> 让我们来看看一点点的代码。
因此，只要重复的问题，
或答案，而;
得到的答复是，
一个while循环检查，看看是否条件
您指定的会面
前运行的主体的第一次循环，
而do-whil​​e循环会自动执行循环体，
就是我们所说的 - 这是奇怪的术语，
但如果我说什么没有意义的，让我知道 -
循环体是，你把花括号之间的东西。
在do-whil​​e循环，
该机构获得至少运行一次，
检查的条件，然后被运行之前，每个连续的时间。
>> 因此，实际上，山姆，
你不介意编写一个简单的while循环
在空间？
>>你怎么有点像
一个新的吗？
我只是删除了，无论你在那里。
是啊，就清除它。
>>好吧，我相信我有这个 -
哪一个你想要的，而你要吗？
是啊，就做了而真正的，打印的东西。
让我们来看看。
亚历山大，我意识到我们从来没有向你介绍。
“哦，那很好。
你 - 你可以编写一个do-whil​​e循环的我们吗？
是的，我会尽力。
好了，我们就拉在屏幕上，
种让你有一个把手上的差异是什么。
>> 因此，这里的山姆做什么。
他有一个名为i的整数
他的初始化为17。
然后，他说，虽然（INT I = 17）
printf的（“我的名字是山姆”）;
所以我们运行这个代码时会发生什么？
有一个错误;错误说什么？
让我们把它和谈论它。
发生错误，它说。
让我们向下滚动。
因此，它给了我们这个错误，它说，
“嘿，我预计的表达。”
这有点难以理解。
是啊，所以准确 - 再次，
会有另一个小错误，我们将赶在第二。
但是，这是另一个那些奇怪的术语的东西，
所以这INT I = 17
是不是一个表达式。
它看起来像它在做什么，是它的
声明一个整数叫我
将其设置为等于17
或者说，叫我把17这个int。
这没有任何意义
在这个while循环的上下文中。
这有一定道理，因为我们可以看到，
for循环的背景下，由于环声明开始
为int i等于什么
和。
>> 那你有没有 -
修复的东西，所有的权利。
在这里，它会真棒。
所以，现在的情况看起来有些不同。
一对夫妇的事情发生了变化。
你能告诉我们什么事情发生了变化？
>>我拿出的int，所以没有声明[听不清]，而不是分配。
一个等号，我把2个等号，这意味着一个等号。
真棒。
是啊，所以什么山姆没有他拿出的int
这是在这里，
所以，如果我只是在看这 - 这是早，故称INT，
宣布 - 让我们拿出的类型。
int，char和字符串，短，
那些被称为类型。
所以，你拿出的类型
然后以前，
他只是单一等号
他说的是问题的有关
当你有1个等号，
这是一个赋值运算符。
这不是测试，是否事情都是平等的。
这实际上是设置的东西的东西。
我们将在17号到变量i。
因此，做这种比较，
你必须使用双等号，
这是一种一个奇怪的事情
但它是一个相当常见的错误。
因此，另一件事情，我会指出，如果你不介意的话，
的是，在
在国际主要功能，
你看，我们的身体功能
从左侧偏移
4个空格或制表符。
我们这样做的原因
仅仅是为了提高可读性。
正如你可以看到这里在山姆的while循环中，
他并没有在所有的缩进，
并且不影响的功能的代码。
它将运行完全一样的。
>> 因此，举例来说，如果我们拿出顶端
，然后按播放按钮，它会建立，
它会运行它，
什么事情发生？
为什么仍然说吗？
>>，因为它会不断地重复您好。
没错，为什么它不停地重复您好吗？
“由于整数永远不会改变，所以它总是17。
是的，没错，所以
让我们来看看， - 再次提醒我你的名字吗？
吉米。吉米说，
您好一遍又一遍不断重复的原因
是因为这种情况下总是如此。
我们永远不会改变i的值。
我们永远不会改变该变量中存储的内容。
因此，在这一点上，我们得到了这个错误，
你的程序产生过多的输出，
如果我们向下滚动，看看这是怎么回事种，
你可以看到，它是嗨，嗨，嗨，嗨，嗨，嗨，嗨，一路过关斩将。
真棒。
>> 因此，种回原点
有压痕这里
在身体的while循环没有造成任何影响。
该程序仍运行得很好。
通常，对于良好的作风 -
这是什么，我们期待在您的问题集 -
我们希望您能缩进4个空格，你可以做
只需按下Tab键
或通过手动把自己的4个空格。
酷，好了，让我们回去看看
亚历山大的DO-WHILE。
>>只是有点有点麻烦了。
好了，让我们的工作。
这很酷？
>>呀。
>> 好了，所以在这里我们去。
这是代码，亚历山大写道。
你去亚历克斯 - 好吧。
因此，这里的亚历克斯写的代码。
所以，我们已经得到了我们的声明，主要就在这里，
然后，我们得到了这个整数变量名为i
被宣布就在这里。
我们已经有了一个do语句
然后身体再次与这些大括号，
因此，这是人体的DO-WHILE -
让我在此放大，因此它更具可读性 -
在身，我们正在试图打印“，这是身体”，
我+ +，
因此，增加的内容，我这样做
直到i得到为3，
那么，我们的程序结束。
>> 所以当我们运行这个程序时，会发生什么呢？
>>我预期的标识符。
好了，因此，建立，运行，就会发生错误。
发生了什么？
我们向下滚动，
我们得到这个有些神秘的东西，
预计分号后的顶级声明。
这是有点怪异。
没有任何人有一个想法可能是什么回事上？
有点不可思议，是的。
>> [听不清]声明以外的括号？
那么，不适用，那么当您使用括号吗？
因此，他宣称这其中括号外的家伙？
噢，这些家伙 - 在大括号？
>>呀。
是的，没错。
所以，事实证明，
你可以声明一个变量实际上不是在这里是这样的。
你可能一直在试图做的是 -
削减它的存在 -
你可以把它在大括号在这里
或另一种选择
是把它完全脱离。
所以，这些 - 这取决于你居然把声明
该整数变量，
你可以得到2个不同类型的变量;
时，它的主要外，
这就是我们所说的一个全局变量。
它的范围以外的任何的功能 -
这是不是在函数 -
而如果我们把它里面的主，
喜欢这里，然后它被称为局部变量，
因为它是本地的主要范围。
我们将讨论多一点点的区别是什么
之间的2种类型，以及为什么要使用不同类型的变量，
但现在，
你可以保持所有的局部变量，
因为我们没有任何需要全局变量。
>> 好了，所以这是一件事。
让我们尝试再次运行这个，看看会发生什么。
运行“，另一个错误。
放大一点，我们都能得到什么呢？
后做/而我们得到这一预期的括号。
任何想法，这是怎么回事呢？丹？
“一会儿，然后括号，然后 -
我不知道，如果你需要重新定义诠释，
但的do while（i <3的）。
没错，是的。
因此，原来，丹完全正确。
我们没有必要再在这里把这个类型。
相反，我们可以杀死类型
做到这一点。
好的。
我会放大，尝试更多的时间。
看它运行成功。
如果我们向下滚动，“这是身体的”打印出来的3倍。
这是非常甜蜜的。
干得好，干得好，伙计们。
干得好。
怎么这么远吗？
体面的步伐？
好了，爽。
>> 因此，作为一种回到原来的问题，
我们 - 现在如果我们看到了差距，
您看，这do-whil​​e循环，
条件是最后的。
因此，随着计算机读取程序
种在这个顺序执行C程序，
他们从字面上开始与第一线的主要
然后执行第6行，第7行，第8行，第9行中，
第10行，第11行，
这一切的东西在这里的右上角
要执行一次
之前我们曾经测试情况，以
是否我 - 的内容我，而 -
小于数字3。
只有一次，我们到12号线，
的内容的i是小于3
我们跳转到第7行
然后重复这个过程中，
然后我们测试的条件，再一遍又一遍。
>> 因此，我们可以对比
- 缩放退了出去，
向下滚动到山姆的版本，
我们要看看这个，稍有改变，因此，它不再是一个无限循环 -
如果我们放大，
我们可以看到，这个程序执行，
它会首先声明INT I，
设置的i的内容是0，
然后它击中的while循环的第一条件，
因此，在这种情况下，这个身体，这个printf（“HI”）和i + +
甚至不会执行
除非实际上i是小于或等于2。
因此，如果i是3，例如，
如果我们在这里
等于4 - 或者我会做，因为我说3 -
然后运行它，
它会建立，它会运行完全正常，
，但它不会打印出任何东西，
因为它对于第一种情况，测试失败。
因此，在课堂上，我们谈到了为什么这些do-whil​​e循环
是有用的，有时
为什么我们会使用它，而不是一个while循环。
>> 在那里 - 你们有任何的建议
为什么do-whil​​e循环可能更为有用吗？
>>嗯，我想do-whil​​e循环是，如果你希望用户输入，
因为这样可以让他们
把东西一次，如果它是正确的，
我们可以移动到程序的其余部分，
但如果它是不正确的，那么你继续提示用户
直到你把正确的输入。
是的，没错 - 这正是，
因此do-whil​​e循环是有益的
提示用户输入，因为当
因为你需要得到用户的输入，才能真正检查。
在pset中1，在pset中2，
您在何处提示用户输入了很多，
这是一个方便的事情
而不是只是一个简单的while循环。
如果您使用一个while循环，你可以做同样的事情 -
你可以做同样的事情，一个while循环
当你做一个do-whil​​e循环。
你只需要种有这个重复的过程
你在哪里得到的输入，然后开始你的while循环。
而一个do-whil​​e循环，你只需要编写一次
这是一个很大清洁。
>> 好的。
有什么问题吗？
有意义吗？
>>返回0 - 那只是种一档或者是 - ？
是啊，所以我们可以 -
好了，我们将讨论这有点多了以后
但事实证明，
我们把这个返回0，
结束时的主所有的时间 -
你可以还挺只是把它作为我们做的事情
暂时。
现在我们开始谈论与功能
种在上周结束，本周再次
是，函数
需要输入括号内的这些东西;
这是2个输入，参数或参数，
他们也被称为我们的主要功能，
然后一个函数产生一个输出
我们调用的返回值。
和返回值的情况下，主要是这样的诠释，
这个整数，
告诉函数的方式，“嘿，这是你的输出
将是“是”回归“这个词，
该关键字，而
等主返回0
或主输出0
在C程序中的标准
从主要手段，因为返回0
“嘿，一切执行我的程序就好了。”
如果我们把其他的东西比0，
如1中，例如，
这是用来告诉运行这个程序
出事了。
所以，当我们在这学期更复杂的东西，
如果你曾经可以说，
“哎呀，你知道的，出了这个程序错误”
而不是我的程序崩溃，我想通知
亚军我的程序出现了错误，
您可以使用返回值，
我们称呼它，这是不为0。
>> 所以我们将讨论多一点点
一旦我们进入功能。
诸如此类的有道理吗？
好吧。
函数是一种奇怪的 -
我认为有很多的数学背景的人，
谈到更容易一点，
特别是如果你有一点点抽象的数学背景
和你谈论功能
和所有类似的东西。
但我们会尽力并覆盖
很好的和缓慢的，因为他们拿出去。
同样，这整个的int argc个，
的char * argv的[]
现在，你也可以把它看作锅炉板。
我们已经开始覆盖那些在演讲一点点
当我们谈论到程序中的命令行参数获得通过，
但在你的习题集和你的程序，
这是完全正常，只是写作废，并保持它的简单。
无效的意思是，
“嘿，主要是不会接受任何输入;
这仅仅是一个程序，我们会刚刚运行。
我们不会给它任何额外信息。
我们每次启动运行。“
所以现在，你可以做到这一点;
你甚至也可以省略return 0
您的程序结束时，他们会运行得很好，
但我建议只是保持，在。
在几个星期中，我们将开始种
拉回来盖一点点，更多的了解
所有这些不同的小运动部件。
>> 好了，现在让我们来谈谈我们在这里的第二个问题。
那么什么是“未声明的标识符”，则通常表明
如果输出铛？
我想我们可能已经看到，今天已经。
有人可以给一个回顾一下这是什么意思呢？
让我们来看看，凯利 - 的凯丽之一。
>> -
是啊，这是什么 -
>>我认为，当你一样，不声明变量，并尝试使用它。
是的，没错，没错。
所以，如果你看到这样的输出
当您尝试编译程序，
就像凯利说，
这意味着你使用一个变量，你没有申报，
所以，如果我回到我们的空间，
我做这样的事情
输出（
“您好％s”）
和尝试，并填写％s的
，我没有任何地方声明一个变量s
我尝试运行它，
你会看到我所得到的，在这个底部就在这里：
“使用未声明的标识符”S“”;
这只是意味着你不声明你的变量。
同样的事情发生，如果
你有X，你尝试和存储7
和我没有申报X.
我得到了同样的错误：
“使用未声明的标识符'X'”。
>> 好吧，
所以恺撒密码，不是很安全，
我将让你们看这短短的，一种明白为什么，
后，希望做这个星期的问题集
在那里你写的恺撒密码，你就会明白一点点
它的意思是什么一个安全的和不安全 -
或不安全，我猜 - 不安全略有不同。
另一件事是，我们这些其他的问题在这里
有关职能
和功能是什么，
我们种，简要谈到，当我们谈到的返回值;
为有人的演讲，
你可以回顾一下谁是今天讲课的吗？
好的。
让我们来看看，让我们 - 有人可以告诉我们的功能是什么？
凯利？
>> >>基本上是借鉴的东西，写的库
更复杂的那边，然后你只写一个简短的形式，
那么喜欢​​你是指该库，使用
所有的长码和[听不清]。
是的，没错，然后你想添加的东西吗？
>>是的，我把它作为类似数学公式的概念
你只写一个公式，然后你可以插入变量
这就是一个功能是听不见的。
>> 是啊，所以我们有一对夫妇的答案在这里
都非常好，右。
有指使你的代码库中的某处被写入
是更复杂的
然后你可以借鉴的代码
真正地使用它，只是写的简短形式 -
或者说，它的名字 -
再有就是数学中的公式比较
或物理，所有这样的东西;
你有一个公式
然后，您可以插入
该公式的变量
然后公式得到的结果，
让你觉得它像一元二次方程。
试想一下，如果，而不是了解
二次方程求根公式是什么在数学课上，
你只是有一个小的计算器程序，这样做是为了你。
有没有人在高中数学课中使用的计算器程序？
是啊，物理课吗？
在那里你可以说，“嘿，二次公式。
这些都是我要输入的变量。
现在给我答案。“
这是一种功能是什么。
这是一个方式，让我们
种写像一个小的小的子计划
在我们的程序
并用它一遍又一遍
所以，我们不必复制和粘贴代码，
我们可以给它不同的输入和得到不同的输出，
这是超级方便
当你试图在不同的时间写不同的程序。
>> 因此，举例来说，一个功能，我们已经使用了一遍又一遍，一遍又一遍
整个过程是printf。
printf是本身就是一个函数
事实证明，它实际上是一个相当漫长而复杂的，
讨厌的，写的功能。
因此，简单的，因为在我们看来，
要打印的东西输出到屏幕上，
因为我们都只是做节今天开始，
事实证明，它实际上是，你知道，
一个很好的情侣几百行代码。
这不是我真的愿意写，可以肯定，
但我们每天都使用它，这是一种很酷的，
所以我们把它分享给对方，
不同的程序，
所以我们就到功能更潜水;
暂时，我们不 -
我们要编写的唯一功能是主要的。
主本身也是一个函数，
你可以看到它有它的输出，
它的输入就像我们谈到，
那么它的名字，这是主要的。
主要是怎么样的 - 那里是一个特殊的功能。
在你的C程序中，必须有一个主要功能，
所以现在，我们已经遗漏的写作
的原型，或声明的，主要的。
我们已经给了你，
我们刚刚有你填写的空白种。
>> >>因此，对于第二个问题集，我们并不需要
把它写在第二个功能吗？
我不这么认为。
我相信，这一切都在这里。
是啊，所以恺撒密码，
你没有，它看起来并不像，
维琼内尔，你不要么，
- 事实证明，你没有真正写
的功能，对不对？
你打电话总是把所有的代码在main，
许多程序员做到这一点。
随着我们继续前进，
我们开始引入功能的一种方式
清理你的代码，
，使其更加优雅，
如果你有当我们谈到循环任务 - 有点像，
有时有一些事情你想做的事一而再，再而三，
你有一种天真的方式 -
也就是我们常称的“稻草人”的解决方案，
只需复制并粘贴一遍又一遍 -
你可以做同样的事情的功能，您只需复制并粘贴
一遍又一遍相同的代码，
但涨大了你的代码 -
最终使你的代码很长的 -
它也变得有点混乱，
那么就意味着，你是不是能够喜欢 -
如果你想再次使用该代码在另一个程序中，
你还坚持再次复制和粘贴，
这样的事情之一，我们来谈谈
种你的程序的设计和风格，
因此，当它是有道理的种
包的东西，并把它作为一个单独的函数，
我们鼓励你这样做，
那是，再次
有没有硬性规定。
我们很少说，你必须写一个函数调用此，
但更重要的是，一个人的东西，你只是随着时间的发展
为你写的节目越来越多。
>> 还有什么问题吗？
好吧，让我们现在
返回这个家伙在这里，
所以，我仍然在这部分问题。
我们已经讨论了所有这些不同的，
什么是一个函数，为什么写功能，
当你可以复制和粘贴？
希望我们确信你写功能是一件好事。
所以，现在让我们继续这MySpace的计划，
我们会花一点点的时间这样做。
>> 所以，让我们来看看，
我有一个人读这个吗？
让我们Mikhaila - 你阅读这篇文章，我们呢？
>>你的意思是回来时，MySpace的 -
回来时，MySpace是酷。
“返回时，MySpace是凉爽，
这是所有的愤怒，象这样。
也许它仍然是吗？我真的不知道。
在任何情况下，使用CS50电器，
CS50运行，或CS50空间的的，
写一个程序，提示用户的消息
它的第一个字母大写，然后输出信息，
在交替的情况下，与所有其他字母，
如下面的示例输出，
其中粗体文字表示一些用户的输入。
为简单起见，你可以假设用户
只能输入小写字母和空格。
考虑这个问题的一个练习的机会;
你不会被要求提交这一计划。“
>> 真棒，谢谢你。
因此，作为Mikhaila说，
我们要编写一个程序，MySpaces你的代码。
因此，没有任何你们使用MySpace上吗？
你有任何MySpace帐户？
哦，是啊，是啊！
这是很酷。
[笑声]
我知道。
约会自己。
所以我们正在试图做的是写一个程序，
经过
的首字母大写
然后此后的每一个字母 -
其后或其他字母，对不起。
>> 所以 - 你可以看到在这个例子中，
这是怎么了，我们运行程序，
所以这只是说，“我们正在运行一个名为a.out的程序。
我们要赋予它的输入，
将被提示。
我们不是让你去提供在命令行上输入“。
如果你一直遵循所有的演讲
和听到的命令行参数，
这是种者 - 那时髦的语法
在主要的用int argc个，所有的东西，
所以在这里我们没有使用;我们并没有任何的处理。
我们只是得到这类型的用户，
那么这第二个行与时髦的资本
是什么，我们希望我们的程序输出。
>> 因此，而不是使用设备或运行中，我们将使用空间，
因为我们有空间，
因此，如果你们会
让你的代码看起来像这样，
所以我要救这个修订
只是让你在这里得到了锅炉板
像这样的，诠释的主要（无效），什么也没有。
其实，我们要做的是，我们只是删除一切。
我们希望有一个空白的石板，
因为我们不会开始编写代码;
相反，我们要去尝试写一些伪代码
这真的只是意味着我们将写的东西，这不是代码
这样的描述，我们想要做的是什么，
有点像大卫那样在第一天的演讲，
我想是第二天的演讲时，他做了整个袜子演示。
你们还记得 - 看到袜子呢？
约瑟夫是在那里种输入中英文吗？
所以，我们要做同样的事情。
>> 所以，当我开始写伪代码，
我喜欢的输入将是开始。
我给自己一个样品的情况下，
所以像添加“谢谢！”
然后我也写的是什么，我想要的输出，
在这种情况下是这样的事情。
给了我一个这样的好事，比如，开始认为，
“好吧，我想采取1号线
我想将其改造成2行，“
而这种帮助引导我的思想。
这是一个良好的开端。
另一种思考方式，也为我们还挺移动
和你这样做，是在自己的程序
认为像边缘的情况下，这是什么样的呢？
是什么样的怪异的情景吗？
奇怪的投入，我们可能会得到什么？
这些产出应该是什么样子？
例如，一个奇怪的输入
会是这一个，
创建绝对没问题，
像我们在这种情况下，输出吗？
我们想要的东西去思考，太。
>> 因此，正如一个问题，
我们可能要输出什么？
如果我们没有得到任何输入，如果我们的程序输出？
“什么也没有。
什么都没有？听起来很不错。
因此，我们要确保我们不写任何东西
如果我们没有得到任何东西英寸
酷。好吧。
所以
我要叫上几个人，我们去通过
只是有点像一般的算法是什么
样开始，我们会一起度过这次难关。
>> 所以，让我们来看看。大小姐。
您如何看待我们就开始吗？
这将是一个好地方，从这里开始
如果我们要进行改造，比如，1号线
到第2行吗？
你能种只是向我解释，英语，你在想什么？
不要担心代码。
>>我会做的第一件事情将是
种直接用户，告诉他们你想要什么。
好了，所以，比如说，
“嘿，用户，我想
一个字符串“ - 真棒。
因此，让我们把这个写下来。
提示用户输入一个字符串。
这听起来像一个良好的开端。
好的。
让我们问凯利任。
什么我们愿意做的事吗？
我们的未来是什么样的 - ？
>>收集他们的意见，并将其存储为一个变量。
大。
因此，收集的字符串，
它存储在变量中。
那么，有没有什么特别的，我们要在这里做吗？
我们要检查他们的意见
前 - ？
>>呀。
我们可能要检查什么？
>>嗯，你说我们没有检查它是否是一个数字，对吗？
因为它会假设它是小写吗？
是啊。
>> 因此，原来， - 是啊。
因此，保证返回一个字符串的getString。
它不会返回一个数字或类似的东西。
有可能是数字字符在该字符串。
而这些，我们可以忽略，因为我们没有资本化。
但一个空字符串是完全正常的，
这样的情况下，于4日和5号线在这里，
正确的，那里没有输入，
我们已经把什么作为输出。
我们不必担心肯定有什么东西在字符串中
该字符串是至少4个字符长;
什么是好的。
因此，这是对比，例如，像便士你写的程序，
其中，以确保你得到非负数;
你必须确保你得到正确的天数在一个月内。
如何你们这样做吗？
你将如何做这个测试吗？
那是什么要求你使用吗？
>> do-whil​​e循环。
do-whil​​e循环，其他类型的循环，太多，是的。
因此，原来，我们没有在这种情况下，使用一个循环，
当我们提示的字符串，这是一种不错的。
>> 好吧，继续前进。
所以，斯特拉。
你能告诉我们什么，我们下一步应该做的一点点吗？
现在，我们已经得到的字符串，我们已经有了它存储在一个变量;
的字符串，我们需要做的是什么？
>>我们需要 -
识别的2 -
是啊，就用英语说，这是真棒。
>>确定[听不清]首都 - 或大写字母。
是啊，所以你识别哪些是大写和小写。
我们可以没有他们，直到我们已经确定了哪些大写或小写。
因此，我们将在这里。
>> 所以，只要一想到这个过程中，
我们怎么做这个鉴定呢？
你知道吗，丹？
种什么，我们 - 我们不得不使用我们的工具箱里什么工具？
>>我把它在某种方式中像一个数组或每行
是它自己的小盒子，
然后大写有或没有。
好了，所以我们可以利用的一个工具，是一个数组。
我们有什么看在字符串中的，
不过，要弄清楚 - 我们有看的字符。
“所以，你得看在字符串的长度？
是啊，所以得到的字符串的长度。
只是出于好奇，我们用它来得到一个字符串的长度？
>> strlen的？
是啊，strlen的，我们称之为“strlen的”
所有这些字符串函数，所以strlen的是一个函数，
这是超级方便的，因为我们可以用它来只是说，
嘿，strlen的：这是一个字符串，你能告诉我它有多长。
在今天的演讲中，大卫谈了很多关于如何strlen的实施，
幕后到底发生了什么。
但是这是一个非常超级方便的。
有也字符串中的库的其他那些，
如STRCMP的拼写是“STRCMP”，
这是用来相互比较字符串。
您将使用函数strstr一样，
这是很好的发现子串等。
在大多数情况下，他们开始用str，然后去别的东西。
的原因，他们没有实际拼写，如字符串，等等
因为早在初期的C一样，
当人们第一次写操作，这一切，
他们，你可以使用的字符数限制
函数名和变量名，
所以，一切都像超浓缩。
但是，任何时候，你看到的东西，开始用str，
通常是指有做一个字符串。
>> 好了，你已经得到了字符串的长度，
然后，我们做的字符？
你知道吗，萨姆？
>>我不知道，我正试图弄明白。
我真的不知道 - 我希望有一些方法 -
我的意思是，我想，也许我们可以做一些事情的赔率，均匀，
但我不知道任何这样的功能。
是啊。
“但是，这 - 它不一定会工作，
因为那样的话，你会得到的空间 -
你就必须有足够的空间，以获得关于如何 -
好吧。
我不知道 - 我在这一点上失去了。
是啊 - 不，不，不，这些都是很好的点。
所以，我们需要做的是，像萨姆说，
我们需要跟踪的字母是奇怪的字母，
的，哪些是偶数字母。
但是，我们要确保我们不只是寻找
在奇数场和偶数
指数在字符串中，
而是寻找在字符串中的奇数和偶数的字母，
因此，我们需要还挺有这之间的区别
字母 - 像实际上是A，B，C，D等，
什么事都没有字母，但仍然在我们的字符串。
例如，在这里，像这样的感叹点是不信，
但它仍然是我们的字符串的一部分，它仍然是一个字符。
同样，所有的这些空间 -
不利用的空间，对不对？
因此，我们要确保我们莫名其妙地跳过这些
，同时还跟踪总入球数单。
>> 所以在我们的编程工具箱
到目前为止，如果你愿意，
我们有许多不同的工具，我们已经谈到了。
因此在一个，例如，是变量，
就像我们以前谈到这里。
另一种工具，我们所谈论的是功能。
因此，我们已经讨论过的变量，我们的伪代码在这里
正如我们将用它来存储我们的字符串。
我们已经讨论了函数来获取一个字符串的长度，如strlen的。
我们一直在谈论别的事情，我们已经谈论了
进行了大量前面部分的今天：循环。
>> 你们觉得在这个程序中使用循环？
贾里德，你有什么感想？
在这个程序中，我们使用一个循环？
“也许不，不，因为你没有去多一次。
好了，你没有通过什么去多一次？
>>的整个字符串。
好，那你不有一次去的字符串全。
遗憾的是，绝对没有任何意义！
你不必去通过整个字符串不止一次。
好吧。
你怎么想？
>>我认为这是更好地使用它们
所以我们可以这样做利用，而
它的位置是[听不清]数。
太好了，所以利用什么？
好了，所以我们说，
因为我们想，我们应该使用一个循环
大写字母，虽然它不是一个数字。
- 对不起，没有您要添加吗？
>>我要说的话，你的方式治疗的字符串
[听不清]将[听不清]的字符？
是啊。
>>，然后我们可以指定号码 -
或基于位置的字符串中的字母？
是啊。
>>，并确定它是否是奇数或偶数和大写字母本身
而信的位置是听不见的 - 对不起。
大。
>> 因此，只要回顾一下。
你的名字，你能提醒我 - 我很抱歉。
“夏洛特。
夏洛特，没问题。
那么，什么夏洛特说，
这是完全正确的 - 天哪，我喜欢汽车缩进 -
是，如果我们检查一个字符串
如这一个在顶部 -
“谢谢你的”添加“ -
为一个字符序列
在位置0，
h是在位置1。
一个是在2，然后我们得到了3，4，5;
的空间是在6位。
鉴于 - f的位置是什么？
7！
O？ 8。
R？ 9。
然后，我们得到了10，然后我真的不能没有它的把它写
有点让凌乱的在屏幕上。
但是，这其实是我们可以谈论如何在内存中的字符串。
它是一个字符串
是一个字符序列，
当我们提到一个单个的字符在字符串中，
我们经常这样做参照该字符的位置
在字符串中，
可能以同样的方式，当我们谈论九月
的第九个月的一年
或星期一是一周的第一天。
因此，这为我们提供了一种方法，
找出哪些是奇与偶
因为你可以在这里看到，
如果我们符合了这件T，
你可以看到，所有符合资本化条件的
在偶数位置，
至少在第一个字，
然后事情变得揭去后，我们打的空间，
因为我们不指望这个空间为一个字母，
所以，如果我们开始
去0，1，2，3，4，5，
空间，6，7，8，空间，
9，然后10，11，12，并依此类推。
>> 酷，所以我们肯定会想使用某种循环
去中的每个字符。
因此，在这一点上，
我们再回过头来我们这里的老伪代码。
作为这个识别哪些
是大写的，哪些是小写，
我们将要做到这一点，在某种循环。
“循环”，冒号。
什么样的类型，我们的循环，循环，
似乎是一个很好的使用在这种情况下？
>>我想在for循环。
你为什么要思考的for循环？
>>因为它从0开始，然后
当我们到达字符串的长度，
，然后每次迭代中，您可以[听不清]吗？
是的，没错。
因此，出于不同的选择的循环，
我们有for循环，while循环，do-whil​​e循环。
一个for循环是特别有用的
当你想知道
你在循环中的一种，
循环已经执行了多少次为止。
这正是我们想知道在这种情况下，
像凯利说，
根据夏洛特的先前的评论，我们想知道的位置
在字符串中的字符，
和for循环会给我们带来了这一点，
因为，如果我们回头看我们的字符串开始种，
如果我们开始我们的for循环为0，
我们上去通过整个字符串的长度，
然后，我们可以将字母T
0的循环，
字母H的1在我们的for循环，依此类推，
将所有的方式通过字符串的结尾。
>> 因此，让我们开始编码这只是一点点
只是让你们得到的感觉，这看起来像。
我要救，
所以在这里，我们已经得到了我们的伪代码，
我要删除一切。
所以，我有一个空白的石板。
我要开始写（无效）
{
我会把返回0
然后}。
因此，通常当我开始计划，这是我的开始。
我会保存它，以便你们有它。
因此，我们谈论的第一件事情之一是
得到来自用户的输入
并把它存储在一个字符串中。
我们怎样才能从用户的输入？
>> GetString的。
GetString时，所有的权利。
所以，如果我输入的GetString（）
和分号。
让我们尝试运行来看，第一呢？
为什么不运行？
>>您必须声明变量。
我要声明一个变量。好吧。
>> 那么，如何才能做到这一点？
你不介意写的东西，分享了吗？
然后，我们可以把它拽上来。
让我们来看看，但正确的，没问题。
大牛。复制，字符串输入的GetString（）。
真棒。
这会不会跑？
让我们试试吧。
命中来看，上载源代码，建筑，发生了错误。
好吧。
因此，whats怎么回事呢？
使用未声明的标识符“字符串”。
>>我们有包括库吗？
是啊，所以丹说，我们有包括库。
这是你会说，斯特拉？真棒。
这是可怕的，所以斯特拉，你能
复制此代码的丹尼尔的空间？
如果您点击上丹尼尔·罗兰文，将其复制，
然后你把include行，然后保存它吗？
让我知道，当你准备好了。
因此，这包括语法也是一种时髦;
有这样的散列标签，
的，然后有这些尖括号。
你还记得是如何工作的，或者我应该把它放在这个代码在这里吗？
>>我很好。
好吧。
>>我打印了 - 我不知道哪个库，虽然。
哦，好吧 - 是的，所以它的的CS50库。
哦，我把stdio库。
>> 哦，找到了 - 啊，不，that's -
所以，字符串实际上是一些特别CS50。
其实是不是一个真正的字符串类型
因为在这里，字符串类型的位置 -
我们要声明一个变量称为输入字符串类型的 -
我们把里面的输入
得到的值返回给我们：这GetString函数调用的输出。
可以说这是一个函数调用，因为它得到了括号，就像printf并
就像strlen的。
但是，字符串实际上是不是一个真正的类型
在C语言中。
我们已经取得了一个类型，我们会采取更多的它究竟是什么
C，因为有一种方法使用字符串;
我们刚刚做的东西，使它看起来更好一点。
>> 所以，在这里，我们走了。
下面是Stella的代码。
它得到了包括。
其他人会称此如哈希有时，或尖锐包括。
现在，我们可以启动它，运行它，
我们还得到一个错误。
让我们来看看发生了什么事。
“未使用的变量'输入'。”
好了，所以这很酷，这很酷。
我的意思是，这不是真的很酷，
因为我们得到一个错误，它没有运行，
但是这是说的是，
我们还没有使用我们的变量，这是有道理的。
我们还没有尝试用它做什么。
这是一种方式，
铛正试图帮助我们确保我们不只是使用变量
然后在不经意间调用他们别的事情后来在我们的代码中，
帮助我们避免错误的方法。
>> 所有的权利，因此，我们已经得到了来自用户的输入，
我们把它存储在变量中。
下一步是那么
在所有的字符在字符串中开始寻找
并确定哪些是大写
哪些是小写的。
而像凯利和夏洛特长大了，
我们使用一个for循环。
因此，任何人都不会记得一个for循环的语法
并希望借此刺在只写
在fo​​r循环的第一行，只是位吗？
凯利，你想给它一个尝试？
呀，所以你必须先进行初始化，
所以我把我= 0，
然后我做了我<strlen（）函数。
它是在你的空间 - 我可以拉起来吗？
是的，我搞砸了一点点，但是是的。
>> 好吧，让我们把它拽上来。
真棒。
“但是我不知道，如果你有这样的 -
是啊，好吧。
所以这里是凯利的：让我们再看一下。
所以她的包括CS50库的在顶部。
包括她的标准IO库的顶部，
和标准的IO函数如printf，
因此，如果你想使用printf，你需要的线。
然后，她又包含字符串库，
我们需要的，
因为字符串库的strlen函数，
我们会在短短位。
因此，如果我们在这里看凯利做了什么，
你能走我们通过你做了什么？
>>呀，所以 - 我的意思是，我有错误，所以 -
啊，不，it's -
“所以，我想叫我只是”字符串“的字符串。
我想打印出字符串
然后我 -
我想喜欢像一个数组中的每个字符的字符串
不同的[听不见的，对不对？
然后我想在位置0开始
然后每2位，
我要利用，
所以我刚才所描述的为23，因为我一直在寻找的ASCII表。
所以，这就是我在想 - 我知道这是不对的。
>> 得到它，所以这是一个很好的开始。
我想了很多的框架是在这里举行。
让我们通过逐行种，看看会发生什么。
所以我喜欢的方式做到这一点，刚开始编译代码
并让编译器告诉我，像我的代码有什么错，
因为编译器会告诉你，什么是错的，你的代码是非常好的。
因此，如果我们发挥，建筑，它没有建立。
它说有一个错误，
因此，如果我们向下滚动，并期待在第一个错误，
它说 -
滚动到顶部，
我们可以看到有5个在底部产生的错误。
哎呀，这是真正切断。
我猜这只是不会得到任何好转。
>> 在这里，我们走了。
因此，总有5所产生的错误。
在这里，我只能看到第2，
这样我就可以移动一点点，然后向上滚动种。
这是命令运行编译的代码，
然后file.c的第一个错误是在这里：
“预计识别或”（“”，是在这条线
在这里我们说的字符串= getString（）方法。
在这里你可以看到，它是在第8行file.c，
然后我相信这是12字符 - 这是错误的。
那么，这是怎么回事第8行 - 凯利错误吗？
>>您只需要调用它一样，一个字母或什么的，
如字符串s或东西吗？
是啊，所以事实证明，这些特殊类型的名称，
这样的字符串，整型，字符型，短，
他们都是特殊的关键字，
，你不能使用他们的姓名您的变量，
因为编译器看，并说，
“哦，我知道这是一个类型，”
所以，你不能真正称为字符串有一个字符串变量，
我想在这里做的，这将无法工作。
但相反，我们可以把它像S或ST或str。
我们也没办法把它诠释。
我们不能有一个字符串调用int。
我们不能有一个称为字符的字符串，没有这些工作。
>> 因此，我们将只需要调用它的暂时。
真棒。
那么下一步是什么在这条线是怎么回事？
字符串 - 这条线看起来很不错吗？
让我们给它一个尝试，让我们来运行它。
好了，我们仍然出现错误。
这一次，我们4个错误。
因此，我们得到其中之一。
让我们继续。
“意外的类型名称的字符串：预期的表情，”是吗？
“是的，那是因为我试图命名的字符串。
是啊，所以它看起来像我们现在也有去修复
所有这些引用字符串。
你可以看到这里有一个参考字符串，在这里，在这里，
因此，我们可以将所有这些为s。
大。好了，再次运行它。
大厦 - 另一个错误的发生。
>> 好了，现在我们已经到了一个错误，
所以int i = s，然后在方括号。
所以你能告诉我们一点关于你在这里做什么，凯利？
“是的。
这是第10行。
>>我不知道，如果我们需要它，
但我认为我是想 -
所以你可以跟着我将它保存。
>>我想我是
想告诉它开始在位置0
在我的for循环的开始，
所以我觉得也许该说是不必要的。
因此，只要回顾一下，
你说，这 - 你试图启动该位置0
得到这个 - 是的，
过，所以我觉得所说，当你步行通过的代码，
你在谈论你想如何处理字符串作为一个数组
这样我们就可以访问每个字符单独。
我觉得丹提到过，阵列，试图将字符串转换成数组。
>> 事实证明，这样的引擎盖下，
实际存储为一个字符串数组了，
您可以访问它像一个数组;
有没有转换，你必须做的。
一个字符串，isn't - 所以 -
一个字符串是不是一个真正的阵列，
但您可以访问它是这样的，因为所有的字符都存储
一个正确的彼此相邻的，在内存中，
所以，如果你想要得到的第一个字符的字符串，
为获得一个整数数组的第一个整数是相同的。
所以我们经常 - 我们就会
参阅2类似
哦，作为一个字符串，数组，
即使它真的 - 他们非常不同的事情，
但你可以把他们大同小异。
因此，原来，这条线实际上是 -
我们不需要做任何转换，
而事实上，
这实际上是不是一个有效的表达，
这是我们的编译器是在告诉我们什么。
它说：“嘿，它预计的表达，
我来到这里是这不是一个表达的东西。“
声明一个数组，
所有你需要做的是用分号这样的事情，
然后你告诉阵列多久，你希望它是，
如5，所以这一行10
声明一个数组，叫我5个整数。
>> 这是一个的一边，这是没有必要的代码，
但是，这是 - 这是一种什么样的声明看起来像。
>>你会不会使用char我的strlen（）]？
CHAR I的strlen（）]？
>>字符i，然后括号内的，strlen的（）。
是啊，所以我们可以 -
我们能做到这一点，
这将宣布 - 这样做什么？
>>我想声明一个数组
的一样 - 的 -
哦，你不需要我 - 哦，
是啊，你绝对不需要我。
你声明一个字符数组
长度为S。
所以山姆说的是，
10号线 - 让我把一些空间，所以我们可以在它与其余孤立 -
这10行声明一个数组
的字符，字符strlen（）价值，
但我们其实需要我，
和的原因，我们需要的，我是因为我们需要为阵列的名称;
否则，我们就没有办法在后面的代码请参考阵列。
>> 所以在这里是数组名
和内部的长度。
这将为我们提供一个数组，
但是，这是 - 再次，这是一个声明。
这不是一项任务，它不是初始化。
如果我们宣布这样的数组，
其实也没什么的数组中的内容。
这只是垃圾 - 无论是在那里。
像我们所说的，
我们其实并不需要做这种转换，
因为我们已经可以把字符串s为一个数组。
我知道我们正在运行的时间有点长，
但我想真的很快得到这个for循环
并告诉你如何访问数组中的单个字符，
因为这是我们的任务的关键。
然后，我们将让你从那里走。
>> 所以在这里，我们已经有了一个for循环
看起来差不多好了。
什么不太几乎没有呢？
What's - 什么是不完全正确的循环吗？
>>不花括号？
没有花括号，对于一个。
想确保我们身体的循环使用花括号。
哎呀，而不是方括号！
接下来的事情，我们需要做的，这个循环是什么？
如果我尝试运行它，
这个错误，我得到什么？
我得到的所有这些错误 - 我必须初始化i。
大。
因此，这将是一个循环 - 这是没有做到这一点，
但它真的很近。
我们现在可以运行此代码，
建立，仍出现错误。
为什么它仍然抱怨，
说表达的是未使用的，
这是因为该行不会做任何事情。
我们并没有存储在任何地方，我们并没有将结果保存。
我们应该在哪里保存这个结果呢？
>> S或我呢？
没错，这个时髦的语法，
这个S的方括号
装置进入的s的第i个字符。
这将是东西是真正重要的是分配。
不幸的是，我们将不得不停止在这里，
所以，塞巴斯蒂安部分可以进来，
但我很高兴留后外，并会采取任何问题。
所以，谢谢你们的到来。
现在应该上载，建立，运行。
我们可以输入一个字符串，如“你好”
打印“中Qox”的。
[笑声]
>> 因此，不太有，但移动，获得对这些循环！
谢谢你能来，我会在外面。