1 00:00:00,000 --> 00:00:02,742 >> [音乐播放] 2 00:00:02,742 --> 00:00:05,030 3 00:00:05,030 --> 00:00:09,090 >> ANDI彭:这是CS50,以及 欢迎第两个星期 4 00:00:09,090 --> 00:00:11,740 这实际上是当周 我们的两个分类 - 实际上, 5 00:00:11,740 --> 00:00:14,550 第一个星期,我们已经有一节。 6 00:00:14,550 --> 00:00:18,897 举手,你们有多少人所有 来到超节最后一周? 7 00:00:18,897 --> 00:00:19,480 OK,没关系。 8 00:00:19,480 --> 00:00:20,020 没关系。 9 00:00:20,020 --> 00:00:23,110 你们有多少人观看 上周超一节? 10 00:00:23,110 --> 00:00:23,610 好。 11 00:00:23,610 --> 00:00:25,702 而你们做精 在问题设置一个? 12 00:00:25,702 --> 00:00:28,660 所以我打算把它,我们有 一群很聪明的孩子 13 00:00:28,660 --> 00:00:32,310 在这个类的东西将被罚款。 14 00:00:32,310 --> 00:00:33,180 好。 15 00:00:33,180 --> 00:00:33,980 所以first-- 16 00:00:33,980 --> 00:00:37,900 17 00:00:37,900 --> 00:00:41,090 >> 首先,我们只是简单地 去了今天的议程。 18 00:00:41,090 --> 00:00:42,700 我们将讨论过程中的物流。 19 00:00:42,700 --> 00:00:45,480 很多人可能 有关于问题 20 00:00:45,480 --> 00:00:46,920 在这个过程中运行的东西怎么样。 21 00:00:46,920 --> 00:00:47,897 我们将回答这些问题。 22 00:00:47,897 --> 00:00:49,730 我们将简要地 过去的情况下,循环 23 00:00:49,730 --> 00:00:51,410 任何你们错过了超级部分。 24 00:00:51,410 --> 00:00:53,240 我们将谈论ASCII映射。 25 00:00:53,240 --> 00:00:56,180 我们将谈论阵列, 功能,命令行参数。 26 00:00:56,180 --> 00:01:00,210 最后,什么你们大概都 真的想在这里学习, 27 00:01:00,210 --> 00:01:01,270 是你的pset2。 28 00:01:01,270 --> 00:01:04,209 我们将有一些很好的技巧 和提示如何做到这一点。 29 00:01:04,209 --> 00:01:07,910 30 00:01:07,910 --> 00:01:08,690 >> 好。 31 00:01:08,690 --> 00:01:11,450 此外,第二,我们有 大量的糖果在这里。 32 00:01:11,450 --> 00:01:13,583 任何人谁喜欢糖果, 刚来到这儿。 33 00:01:13,583 --> 00:01:14,430 抓住一些。 34 00:01:14,430 --> 00:01:15,100 我有一大堆。 35 00:01:15,100 --> 00:01:16,390 我们有一吨在办公室。 36 00:01:16,390 --> 00:01:18,230 我真的不希望 整天吃糖果。 37 00:01:18,230 --> 00:01:20,300 你们应该吃所有的糖果, 因为我把它在这里为你们。 38 00:01:20,300 --> 00:01:20,990 刚吃糖果。 39 00:01:20,990 --> 00:01:24,080 未来将有糖果的每一个部分。 40 00:01:24,080 --> 00:01:25,330 >> 因此,首先,我是谁? 41 00:01:25,330 --> 00:01:27,080 我的名字叫安迪鹏。 42 00:01:27,080 --> 00:01:30,270 我CS50头TA在耶鲁。 43 00:01:30,270 --> 00:01:32,540 而且除了 这一点,我也将be-- 44 00:01:32,540 --> 00:01:35,600 如果有人将like--跑步 哥们,你的肩膀上哭了起来。 45 00:01:35,600 --> 00:01:39,140 如果您PSET的,由于前一天晚上, 你不知道这是怎么回事, 46 00:01:39,140 --> 00:01:40,080 打我。 47 00:01:40,080 --> 00:01:42,770 我们会同情在一起,等等。 48 00:01:42,770 --> 00:01:46,100 只知道我在这里作为一个 资源为你的前线 49 00:01:46,100 --> 00:01:51,830 在帮助你们找出如何 解决CS50及以后的问题。 50 00:01:51,830 --> 00:01:54,590 >> 我的邮箱是andi.peng@yale.edu。 51 00:01:54,590 --> 00:01:58,390 我还将派出一个人 我在里面的电话号码发送电子邮件 52 00:01:58,390 --> 00:02:01,860 所以不是每个人都对 网上能看到我的电话号码。 53 00:02:01,860 --> 00:02:03,640 随时打电话给我在任何时候。 54 00:02:03,640 --> 00:02:07,510 说真的,我的电话是 通常连接到我的手。 55 00:02:07,510 --> 00:02:10,240 我可能不响应 在几分钟内。 56 00:02:10,240 --> 00:02:11,984 我可能不是一两个小时内做出回应。 57 00:02:11,984 --> 00:02:14,400 但我可以向你保证,如果 你给我发电子邮件,如果你打电话给我, 58 00:02:14,400 --> 00:02:17,404 给我发短信,我会在24小时内做出回应。 59 00:02:17,404 --> 00:02:19,820 通常情况下,我才回应 即,因为我明白 60 00:02:19,820 --> 00:02:23,900 每个人都得到了一些问题, 你希望你的答案 61 00:02:23,900 --> 00:02:26,110 要很快回答。 62 00:02:26,110 --> 00:02:28,945 >> 但是,如果你打电话 我前30分钟 63 00:02:28,945 --> 00:02:31,570 这一块是由于周四 night--是这样,安迪,帮我, 64 00:02:31,570 --> 00:02:35,380 我还没有started--我可以给 你的肩膀哭泣。 65 00:02:35,380 --> 00:02:41,520 但是,它可能是时间去思考 如何下一次到不行。 66 00:02:41,520 --> 00:02:44,040 好。 67 00:02:44,040 --> 00:02:44,944 哎呀。 68 00:02:44,944 --> 00:02:45,850 我怎么回去? 69 00:02:45,850 --> 00:02:48,140 在那里,我们走了。 70 00:02:48,140 --> 00:02:52,310 >> 所以在这个过程中,我们有一个 吨为大家的支持。 71 00:02:52,310 --> 00:02:54,640 除了刚 这里的部分​​,这你 72 00:02:54,640 --> 00:02:57,000 每周弄花90 妙钟和我在一起, 73 00:02:57,000 --> 00:02:58,330 我们也有办公时间。 74 00:02:58,330 --> 00:03:01,021 怎么你们许多已经 去过办公时间寻求帮助? 75 00:03:01,021 --> 00:03:01,520 太好了。 76 00:03:01,520 --> 00:03:05,700 这的确是很好看,因为我们 有超过45的TA和CA的工作人员 77 00:03:05,700 --> 00:03:11,780 训练这个课程,在这里 帮助你与你的pset家伙。 78 00:03:11,780 --> 00:03:14,580 >> 周一他们在青色举行 课堂在17个山家在这里 79 00:03:14,580 --> 00:03:15,350 在耶鲁大学。 80 00:03:15,350 --> 00:03:17,349 周二和周四, 他们在下议院举行。 81 00:03:17,349 --> 00:03:20,010 8:00至11:00几乎每一个工作日。 82 00:03:20,010 --> 00:03:21,620 进来,进来了。 83 00:03:21,620 --> 00:03:24,030 如果有任何问题,没有problem-- 刚进来吧, 84 00:03:24,030 --> 00:03:26,650 然后我们会帮你出这一点。 85 00:03:26,650 --> 00:03:31,640 >> 其次,除了在办公时间 而部分,我们也有短裤。 86 00:03:31,640 --> 00:03:35,930 有没有人见过一对夫妇的 在视频短裤或演练 87 00:03:35,930 --> 00:03:36,750 在网站上? 88 00:03:36,750 --> 00:03:37,250 好。 89 00:03:37,250 --> 00:03:39,510 所以他们非常,非常有帮助。 90 00:03:39,510 --> 00:03:42,470 我们可爱的哈佛生产 团队那边那所学校 91 00:03:42,470 --> 00:03:47,910 北上,他们拍摄并制作 这些令人难以置信的演练视频。 92 00:03:47,910 --> 00:03:52,290 >> 他们会带你通过一步一步 如何去解决问题。 93 00:03:52,290 --> 00:03:56,340 通常情况下,如果你感到困惑 一个简单的概念,一个单一的概念, 94 00:03:56,340 --> 00:03:59,780 来看看,因为我们可能有 某处在我们的网站上有一个短。 95 00:03:59,780 --> 00:04:03,800 它通常是一个很好的资源 看,当你第一次的 96 00:04:03,800 --> 00:04:06,510 失去了对如何处理的问题。 97 00:04:06,510 --> 00:04:09,750 >> 第三,我们也有 study50和reference50。 98 00:04:09,750 --> 00:04:15,650 因此,在研究50 网站仅仅是一个链接。 99 00:04:15,650 --> 00:04:21,500 这是,我认为,study.cs50.net 或类似的东西。 100 00:04:21,500 --> 00:04:22,860 它只是谷歌。 101 00:04:22,860 --> 00:04:24,229 我们有很多准备的幻灯片。 102 00:04:24,229 --> 00:04:26,770 我们有很多的短裤和 walkthroughs--东西全部编译 103 00:04:26,770 --> 00:04:31,070 非常漂亮和整洁为你们所有 浏览,看到任何概念 104 00:04:31,070 --> 00:04:32,860 你感到困惑。 105 00:04:32,860 --> 00:04:35,920 它很可能被覆盖 那边study50。 106 00:04:35,920 --> 00:04:37,640 >> Reference50--相似。 107 00:04:37,640 --> 00:04:41,510 我们有很多的各种注意事项 随时可供您使用。 108 00:04:41,510 --> 00:04:44,450 最后,我们有什么 所谓的CS50讨论, 109 00:04:44,450 --> 00:04:48,082 其中一个论坛,如果前一天晚上 你做你的问题,比如, 110 00:04:48,082 --> 00:04:49,880 您有任何问题。 111 00:04:49,880 --> 00:04:52,340 登录到CS50讨论。 112 00:04:52,340 --> 00:04:53,190 发表您的问题。 113 00:04:53,190 --> 00:04:55,820 然后一个hundreds--的 也许,thousands--同行 114 00:04:55,820 --> 00:04:57,960 网上采取这一类将登录。 115 00:04:57,960 --> 00:05:01,182 也许有人可以得到 一个TA可以在你的答案。 116 00:05:01,182 --> 00:05:03,390 它本质上只是一个 在线论坛,我们都可以 117 00:05:03,390 --> 00:05:04,556 用它来讨论我们的问题。 118 00:05:04,556 --> 00:05:06,483 这很酷。 119 00:05:06,483 --> 00:05:10,660 120 00:05:10,660 --> 00:05:11,550 >> 好。 121 00:05:11,550 --> 00:05:13,220 所以,问题的设置。 122 00:05:13,220 --> 00:05:17,840 我们有关的权利的 厚厚的习题集两种。 123 00:05:17,840 --> 00:05:20,570 我们很多人已经 通过问题挣扎设置之一。 124 00:05:20,570 --> 00:05:24,460 我们已经知道,也许等待 在昨晚做你的PSET 125 00:05:24,460 --> 00:05:28,170 是不是做CS50最聪明的事。 126 00:05:28,170 --> 00:05:32,380 >> 技巧和基本的提示 成功读出完整的型号规格。 127 00:05:32,380 --> 00:05:36,270 你们有多少人已经 读取规格为PSET 2? 128 00:05:36,270 --> 00:05:36,770 好。 129 00:05:36,770 --> 00:05:39,840 这是一个坚实的量。 130 00:05:39,840 --> 00:05:43,210 我知道你们可能已经认识到 现在的规格是很长的。 131 00:05:43,210 --> 00:05:45,700 他们是真的,真的很长。 132 00:05:45,700 --> 00:05:49,630 >> 这真的很难读每一行 那认真一字一句。 133 00:05:49,630 --> 00:05:52,780 你想只是走马观花的地方 它告诉你做什么。 134 00:05:52,780 --> 00:05:54,459 我可以向你保证,不这样做。 135 00:05:54,459 --> 00:05:56,750 如果你这样做,你可能 要错过的地方 136 00:05:56,750 --> 00:05:58,458 它会告诉你 如何启动的问题 137 00:05:58,458 --> 00:06:01,140 或者它会告诉你什么名字 您的问题,或者它会告诉你, 138 00:06:01,140 --> 00:06:03,720 这可能是最好的办法 开始做你的问题。 139 00:06:03,720 --> 00:06:05,050 然后你会被丢失。 140 00:06:05,050 --> 00:06:08,219 >> 当您尝试读取你的 SPEC一半, 141 00:06:08,219 --> 00:06:10,510 很多重要 information--在你不 142 00:06:10,510 --> 00:06:12,260 要能够真正地访问。 143 00:06:12,260 --> 00:06:13,219 因此,阅读完整的型号规格。 144 00:06:13,219 --> 00:06:15,468 尝试阅读全规格 你来段之前, 145 00:06:15,468 --> 00:06:17,360 因为那时,当我们 说说处理器集, 146 00:06:17,360 --> 00:06:21,070 我们都可以有一个想法 对正在发生的事情。 147 00:06:21,070 --> 00:06:25,169 >> 其次,这是一个概念 我会喜欢引用 148 00:06:25,169 --> 00:06:26,710 很多整个课程学期。 149 00:06:26,710 --> 00:06:30,070 但本质上,迎接我们半途而废,对不对? 150 00:06:30,070 --> 00:06:33,970 我,作为你的TA和贾森当然 经理和Scaz作为你的教授 151 00:06:33,970 --> 00:06:37,120 大卫为你的教授和所有的 其他可爱的助教在这个过程中, 152 00:06:37,120 --> 00:06:39,830 在此course--助手 我们将尽我们所能 153 00:06:39,830 --> 00:06:42,965 以确保您的设置 多达在这个过程中取得成功。 154 00:06:42,965 --> 00:06:43,840 我们将举行部分。 155 00:06:43,840 --> 00:06:44,870 我们将举行办公时间。 156 00:06:44,870 --> 00:06:47,087 我们会回答你的电话 电话,回答你的电子邮件, 157 00:06:47,087 --> 00:06:49,670 尽我们所能,使 确保你的问题的回答。 158 00:06:49,670 --> 00:06:51,460 >> 但是,帮助我们了。 159 00:06:51,460 --> 00:06:52,450 与我们见面一半。 160 00:06:52,450 --> 00:06:56,040 如果你来到办公时间 不必去节,不 161 00:06:56,040 --> 00:07:02,060 在看到讲座,无 知道是怎么回事,像,帮助我。 162 00:07:02,060 --> 00:07:04,350 我要像,很好,我很抱歉。 163 00:07:04,350 --> 00:07:06,410 这可能是一次借 那肩膀哭泣, 164 00:07:06,410 --> 00:07:08,959 因为我不知道 我能做些什么来帮助你 165 00:07:08,959 --> 00:07:12,000 如果你不尝试,至少帮助 自己在一开始一点点。 166 00:07:12,000 --> 00:07:12,910 与我们见面一半。 167 00:07:12,910 --> 00:07:15,020 你知道吗,请进来 准备回答,并得到 168 00:07:15,020 --> 00:07:16,353 准备从事材料。 169 00:07:16,353 --> 00:07:19,342 这使事情变得这么多 方便大家参与。 170 00:07:19,342 --> 00:07:22,970 是啊,这几乎是它。 171 00:07:22,970 --> 00:07:23,720 >> 评级。 172 00:07:23,720 --> 00:07:29,250 因此,在教学大纲,这是很 深入的关于我们如何档次。 173 00:07:29,250 --> 00:07:32,440 但实际上,故障 在这个成绩的50% 174 00:07:32,440 --> 00:07:34,530 将pset时,这 是可爱的,因为这是 175 00:07:34,530 --> 00:07:37,400 在那里你花了广阔 大部分的课程时间。 176 00:07:37,400 --> 00:07:39,854 测验40%,你的 项目最终将有10%。 177 00:07:39,854 --> 00:07:42,520 将有两个测验贯穿 本学期的课程。 178 00:07:42,520 --> 00:07:47,050 我认为,时间和日期 同时上市的教学大纲。 179 00:07:47,050 --> 00:07:49,210 >> 的方式,我们将 被分级您的pset 180 00:07:49,210 --> 00:07:53,930 就是我们有本质4 我们分配给每个等级的值。 181 00:07:53,930 --> 00:07:57,250 我们有一个范围值, 正确性,设计和风格。 182 00:07:57,250 --> 00:08:01,530 所以你看,这是一种我们 计算公式的pset。 183 00:08:01,530 --> 00:08:03,640 三,我们给予最 重量的正确性, 184 00:08:03,640 --> 00:08:06,140 因为很明显你的教练 应该测试的情况下, 185 00:08:06,140 --> 00:08:08,480 我们希望它来测试。 186 00:08:08,480 --> 00:08:11,000 >> 你们都有 check50在您的处置。 187 00:08:11,000 --> 00:08:13,730 这是一个非常有用的功能 ,你们都可以 188 00:08:13,730 --> 00:08:17,560 你的代码上传到我们的服务器, 在这里,我们将帮你了解一下。 189 00:08:17,560 --> 00:08:20,800 你见过那些 frowny脸,笑脸。 190 00:08:20,800 --> 00:08:22,119 他们是真的,真的很有帮助。 191 00:08:22,119 --> 00:08:23,910 请不要在 学生是喜欢尝试 192 00:08:23,910 --> 00:08:26,230 硬编码在所有的答案。 193 00:08:26,230 --> 00:08:30,050 我肯定看到了PSET哪里 有人看到check50的所有值 194 00:08:30,050 --> 00:08:33,429 他们只是硬编码in--如果 这个数字,打印出这个数字。 195 00:08:33,429 --> 00:08:35,080 如果这个数字,打印出号。 196 00:08:35,080 --> 00:08:36,090 不要那样做。 197 00:08:36,090 --> 00:08:39,360 >> 尽管在技术上 check50是正确的, 198 00:08:39,360 --> 00:08:41,809 你的解决方式 问题是不正确的。 199 00:08:41,809 --> 00:08:45,770 因此,只要使用check50谨慎。 200 00:08:45,770 --> 00:08:48,497 但也确保您 了解它是如何运作的, 201 00:08:48,497 --> 00:08:50,580 程序是否正常 除了check50, 202 00:08:50,580 --> 00:08:53,120 由于我们无法测试每 check50可能的情况下。 203 00:08:53,120 --> 00:08:55,440 我们将测试他们中的一些。 204 00:08:55,440 --> 00:09:00,390 >> 设计本质上是怎么 精心设计的是你的代码? 205 00:09:00,390 --> 00:09:04,150 如果你是复制粘贴多个 行的代码很多很多次。 206 00:09:04,150 --> 00:09:06,960 也许你还没有经历 在代码中最好的设计。 207 00:09:06,960 --> 00:09:09,470 也许是时候添加这个循环。 208 00:09:09,470 --> 00:09:12,090 从本质上讲,在这里它只是所有 关于尝试做你的代码, 209 00:09:12,090 --> 00:09:17,010 试图尽可能高效编写代码 尽可能让你的程序运行 210 00:09:17,010 --> 00:09:19,630 尽可能快。 211 00:09:19,630 --> 00:09:20,996 >> 最后,我们有风情。 212 00:09:20,996 --> 00:09:24,360 因此,风格是怎样的 随心所欲,主观的词。 213 00:09:24,360 --> 00:09:27,470 我知道,我们正式拥有 风格50指南CS50, 214 00:09:27,470 --> 00:09:30,050 它会告诉你,哦,你, 应该有一个空间在这里。 215 00:09:30,050 --> 00:09:32,220 你应该用什么样的格式 你的代码这种方式。 216 00:09:32,220 --> 00:09:34,070 你应该事物命名这种方式。 217 00:09:34,070 --> 00:09:38,180 >> 我真的不关心,本身,怎么 您选择的风格你的代码, 218 00:09:38,180 --> 00:09:39,840 就像只要你保持一致。 219 00:09:39,840 --> 00:09:43,732 例如,如果你喜欢 四位后留下的空间 220 00:09:43,732 --> 00:09:45,690 四位循环之前, 只是做每一次。 221 00:09:45,690 --> 00:09:46,523 那种不这样做。 222 00:09:46,523 --> 00:09:47,730 不这样做,其他时间。 223 00:09:47,730 --> 00:09:51,046 如果你想保持卷发 括号空间一定的方式, 224 00:09:51,046 --> 00:09:52,170 只是一直这样做的。 225 00:09:52,170 --> 00:09:54,628 那种不要做它的地方 这里地方不存在。 226 00:09:54,628 --> 00:09:57,010 当我们分级, 真的很难 227 00:09:57,010 --> 00:09:59,420 如果我不知道如何 你格式化你的代码, 228 00:09:59,420 --> 00:10:02,064 事情是古怪和不合时宜。 229 00:10:02,064 --> 00:10:04,980 如果你只是保持一致,这是 对我来说更容易为大 230 00:10:04,980 --> 00:10:06,310 要能看懂你的代码。 231 00:10:06,310 --> 00:10:09,393 这是你作为一个学生更容易 要能看穿你的代码 232 00:10:09,393 --> 00:10:11,720 看看有什么错 它削减为什么有问题。 233 00:10:11,720 --> 00:10:15,740 风格是最简单的事情之一 你们能做得到充分的分数。 234 00:10:15,740 --> 00:10:18,770 从本质上讲,如果你只关心,如果 你付出五分钟关注 235 00:10:18,770 --> 00:10:22,760 你的代码每个星期,你应该 要获得完整的造型加分。 236 00:10:22,760 --> 00:10:26,020 >> 最后,我们有什么所谓 范围乘数。 237 00:10:26,020 --> 00:10:28,890 Scope--我知道这是一个很大 字,尤其是在这个类。 238 00:10:28,890 --> 00:10:31,030 但是范围,所有的手段 是你正在尝试 239 00:10:31,030 --> 00:10:33,670 pset时尽你的能力。 240 00:10:33,670 --> 00:10:37,180 如果你把三出 你的四个问题 241 00:10:37,180 --> 00:10:39,460 甚至不尝试 最后一个,你可能 242 00:10:39,460 --> 00:10:41,630 要输的范围几点。 243 00:10:41,630 --> 00:10:44,560 >> 即使你刚开始的问题, 尽你所能地穿行了。 244 00:10:44,560 --> 00:10:47,691 即使不工作,把它在, 因为显示和演示 245 00:10:47,691 --> 00:10:50,190 我们说你想,那 你尝试的问题集 246 00:10:50,190 --> 00:10:51,430 尽你的能力。 247 00:10:51,430 --> 00:10:53,800 然后我们可以给你 全点的范围。 248 00:10:53,800 --> 00:10:58,715 >> 适用范围也是我们非常重要的 说说最低PSET得分下降。 249 00:10:58,715 --> 00:11:02,010 因此,在的过程 学期,你们有九pset中。 250 00:11:02,010 --> 00:11:05,340 我们实际上将下降 得分最低的掉那些九, 251 00:11:05,340 --> 00:11:07,670 但前提是你有充分的范围点。 252 00:11:07,670 --> 00:11:11,120 >> 因此,如果你在一个不完整的PSET转, 不幸的是,我们不能删除的, 253 00:11:11,120 --> 00:11:13,540 因为你的范围 点没有完成。 254 00:11:13,540 --> 00:11:16,570 所以,即使你有可怕的一周 在这里你死,你生病了 255 00:11:16,570 --> 00:11:20,040 或者你的狗死掉,你的猫死了, 而你超负荷作业, 256 00:11:20,040 --> 00:11:21,074 只是试图处理器集。 257 00:11:21,074 --> 00:11:22,490 它做尽你的能力。 258 00:11:22,490 --> 00:11:23,840 如果它不工作,也没关系。 259 00:11:23,840 --> 00:11:24,506 只要把它研究。 260 00:11:24,506 --> 00:11:26,590 至少我们可以给 你点的努力。 261 00:11:26,590 --> 00:11:28,510 >> 一种努力,在这个类。 262 00:11:28,510 --> 00:11:30,170 至少有最低分数下降的努力。 263 00:11:30,170 --> 00:11:32,354 所以呀。 264 00:11:32,354 --> 00:11:33,270 这几乎是它。 265 00:11:33,270 --> 00:11:36,521 有没有人有问题,所以 远的我们在课堂上怎么样档次? 266 00:11:36,521 --> 00:11:37,187 或任何这些? 267 00:11:37,187 --> 00:11:41,220 任何这些所以far-- 段,办公时间? 268 00:11:41,220 --> 00:11:41,720 酷。 269 00:11:41,720 --> 00:11:46,720 270 00:11:46,720 --> 00:11:47,800 好。 271 00:11:47,800 --> 00:11:51,260 >> 因此,这是一个主题,没有 人真的喜欢谈论。 272 00:11:51,260 --> 00:11:53,084 我真的不喜欢谈论它。 273 00:11:53,084 --> 00:11:55,250 你们真的不希望 听到我谈论它。 274 00:11:55,250 --> 00:11:57,690 但不幸的是,我们都 要谈论它。 275 00:11:57,690 --> 00:12:00,110 大卫花了20分钟 演讲谈论它。 276 00:12:00,110 --> 00:12:02,580 那就是主体 学术诚信。 277 00:12:02,580 --> 00:12:08,110 >> 所以,我们都在这里可能已经写 一篇文章的某个时候在我们耶鲁上学。 278 00:12:08,110 --> 00:12:11,800 我们可能已经得到了谈话,我们已经 被告知不要抄袭我们的作文, 279 00:12:11,800 --> 00:12:13,940 因为这项工作是不是我们的。 280 00:12:13,940 --> 00:12:18,109 在计算机科学中,我们有 同一种概念。 281 00:12:18,109 --> 00:12:20,150 您提交的所有工作, 你写的所有代码 282 00:12:20,150 --> 00:12:21,900 应该是你写的代码。 283 00:12:21,900 --> 00:12:24,280 不应该说你已经码 从别的地方复制。 284 00:12:24,280 --> 00:12:26,777 不应该代码 你一派,一屁股在 285 00:12:26,777 --> 00:12:28,360 你真的不知道,如果它的工作原理。 286 00:12:28,360 --> 00:12:32,440 有种你有感 它在做什么,但不是真的。 287 00:12:32,440 --> 00:12:36,562 如有疑问,本质上, 它仅仅是合理的。 288 00:12:36,562 --> 00:12:38,520 在我们的教学大纲,我们有 事情的完整列表 289 00:12:38,520 --> 00:12:40,560 我们认为是合理的 对不合理的。 290 00:12:40,560 --> 00:12:43,820 >> 例如,合理 是你和你的朋友 291 00:12:43,820 --> 00:12:47,360 在讨论什么是最好的方式去 大约在逻辑上解决问题。 292 00:12:47,360 --> 00:12:48,910 这是相当合理的。 293 00:12:48,910 --> 00:12:53,244 什么是不合理的,如果你 人聚在一起,键入相同的代码, 294 00:12:53,244 --> 00:12:54,410 ,并获得了相同的代码。 295 00:12:54,410 --> 00:12:56,302 这不是合理的。 296 00:12:56,302 --> 00:12:57,510 同样的事情,那种短文。 297 00:12:57,510 --> 00:12:59,290 如果你想讨论 与您的朋友,哎, 298 00:12:59,290 --> 00:13:00,220 这就是我想写。 299 00:13:00,220 --> 00:13:02,500 这些是我想要的步骤 需要写下来,太棒了。 300 00:13:02,500 --> 00:13:03,208 那好极了。 301 00:13:03,208 --> 00:13:04,790 请互相协作。 302 00:13:04,790 --> 00:13:06,540 如果你们开始 写同样的事情, 303 00:13:06,540 --> 00:13:10,020 把在同一篇文章,那是不太确定。 304 00:13:10,020 --> 00:13:13,200 因此,有疑问的时候,就不要去做。 305 00:13:13,200 --> 00:13:16,940 >> 在这里,我们在CS50,我们有脚本 该运行自动化测试 306 00:13:16,940 --> 00:13:21,740 不仅是你的代码的正确性, 而且你的代码的唯一性。 307 00:13:21,740 --> 00:13:25,920 所以,请不要把我们的位置 具有参考您的案件EXCOMM。 308 00:13:25,920 --> 00:13:31,110 请只是为了大家,我们只 使这是一个奇妙的经历。 309 00:13:31,110 --> 00:13:33,600 每个人都学会更好, 大家都快乐, 310 00:13:33,600 --> 00:13:37,926 我们都设置为 在这个过程中取得成功。 311 00:13:37,926 --> 00:13:39,800 东西是很 独特的关于这个类 312 00:13:39,800 --> 00:13:42,660 我认为每个人都应该真 要注意的是,我们有 313 00:13:42,660 --> 00:13:44,930 什么叫做后悔 在我们的教学大纲条款。 314 00:13:44,930 --> 00:13:50,010 所以基本上,在72小时内,如果 你相信你已经做了一些 315 00:13:50,010 --> 00:13:53,240 你真的不知道是 相应的,请来找我们。 316 00:13:53,240 --> 00:13:57,220 我们向你们保证,72小时内 我们将处理的情况下自己 317 00:13:57,220 --> 00:13:59,820 不参照更高 当局在管理。 318 00:13:59,820 --> 00:14:03,100 >> 所以,如果你来找我,说: 岸堤,哎,我真的很抱歉, 319 00:14:03,100 --> 00:14:07,620 但我认为有一对夫妇线在我的 代码昨晚那种我GOOGLE了, 320 00:14:07,620 --> 00:14:10,120 下车栈 溢出,复制和粘贴, 321 00:14:10,120 --> 00:14:13,680 而我真的,真的很抱歉 这件事,让我知道。 322 00:14:13,680 --> 00:14:16,900 请不要让它溃烂 而只是希望我抓住它。 323 00:14:16,900 --> 00:14:17,784 我们将抓住它。 324 00:14:17,784 --> 00:14:18,450 只是到我这里来。 325 00:14:18,450 --> 00:14:20,520 让我知道,在72小时内。 326 00:14:20,520 --> 00:14:22,240 我们会找出一个解决方案。 327 00:14:22,240 --> 00:14:26,679 我们承诺,我们将不参考 大学当局本质。 328 00:14:26,679 --> 00:14:29,220 所以这是在你最感兴趣 只是说实话大家一起 329 00:14:29,220 --> 00:14:31,720 涉及的过程。 330 00:14:31,720 --> 00:14:34,630 >> 好。 331 00:14:34,630 --> 00:14:35,240 好。 332 00:14:35,240 --> 00:14:37,800 所以,现在,快速前 我继续前进,没有任何人 333 00:14:37,800 --> 00:14:42,670 有关于物流问题 如何课程,我们要去跑, 334 00:14:42,670 --> 00:14:45,982 如何节会 运行,所有的是什么? 335 00:14:45,982 --> 00:14:46,711 好。 336 00:14:46,711 --> 00:14:47,210 是啊。 337 00:14:47,210 --> 00:14:48,126 >> 听众:[听不清]? 338 00:14:48,126 --> 00:14:50,414 339 00:14:50,414 --> 00:14:51,080 ANDI彭:是的。 340 00:14:51,080 --> 00:14:54,850 那么quizzes--你们有多少人是 在周一/周三部分? 341 00:14:54,850 --> 00:14:56,700 有多少人都在 周二/周四? 342 00:14:56,700 --> 00:14:58,550 好了,就在这里了坚实的分裂。 343 00:14:58,550 --> 00:15:00,900 让我们运行方式 它在耶鲁是我们 344 00:15:00,900 --> 00:15:04,040 将有两个独立的 quizzes--一个用于每个section--那 345 00:15:04,040 --> 00:15:06,160 上课时将采取。 346 00:15:06,160 --> 00:15:09,310 我认为这是十月十月底, 这样的事情,一个星期 347 00:15:09,310 --> 00:15:10,794 的测验。 348 00:15:10,794 --> 00:15:11,960 是啊,所以才来上课。 349 00:15:11,960 --> 00:15:13,920 在周一或周三, 你会参加测验。 350 00:15:13,920 --> 00:15:16,336 在那个星期二或星期四 你会采取不同的测验。 351 00:15:16,336 --> 00:15:18,570 但是,同样的材料将被覆盖。 352 00:15:18,570 --> 00:15:19,160 是啊。 353 00:15:19,160 --> 00:15:20,660 好问题。 354 00:15:20,660 --> 00:15:21,160 是啊。 355 00:15:21,160 --> 00:15:23,260 >> 听众:我们在哪里 去检查我们的成绩? 356 00:15:23,260 --> 00:15:23,926 >> ANDI彭:是的。 357 00:15:23,926 --> 00:15:28,420 因此,我将派出一个 电子邮件无论每个星期 358 00:15:28,420 --> 00:15:31,460 当测验是graded--或者, 对不起,当pset中分级。 359 00:15:31,460 --> 00:15:34,120 Pset中通常转向 在中午或周五。 360 00:15:34,120 --> 00:15:37,540 所以,我承诺,我会 试图让他们回到你身边 361 00:15:37,540 --> 00:15:40,000 由上周五的中午。 362 00:15:40,000 --> 00:15:44,950 >> 每当我一年级pset的,我会送 出上档次书的通知 363 00:15:44,950 --> 00:15:47,070 告诉你你的分数 可在线观看。 364 00:15:47,070 --> 00:15:52,022 所以,正确的这一周,之后我 完成分级上周的pset时, 365 00:15:52,022 --> 00:15:54,230 你们会得到一封电子邮件 通知告诉你, 366 00:15:54,230 --> 00:15:55,870 嘿,这是你 去查看你的成绩。 367 00:15:55,870 --> 00:15:57,680 你可以看到每一个 你的成绩击穿。 368 00:15:57,680 --> 00:15:58,555 你可以看到评论。 369 00:15:58,555 --> 00:16:00,360 噢,快的事也。 370 00:16:00,360 --> 00:16:03,060 在伟大的注释部分 本书是我可能会 371 00:16:03,060 --> 00:16:05,300 花我的大部分时间分级。 372 00:16:05,300 --> 00:16:07,094 所以一件事是 真正重要的当 373 00:16:07,094 --> 00:16:09,010 你们正在查看 你的成绩在你的pset 374 00:16:09,010 --> 00:16:11,400 不仅找 在物理得分 375 00:16:11,400 --> 00:16:14,630 而且服用时间 真正读懂我的意见。 376 00:16:14,630 --> 00:16:17,820 >> 通常情况下,给你的反馈 关于你如何解决问题。 377 00:16:17,820 --> 00:16:20,480 如果你需要做的 东西好一点, 378 00:16:20,480 --> 00:16:24,080 建设性的批评通常是 在这些意见节最好的说明。 379 00:16:24,080 --> 00:16:26,950 所以,请,请,我要去 花时间写评论。 380 00:16:26,950 --> 00:16:30,440 请,我真的很感激它 如果你们会读这些意见。 381 00:16:30,440 --> 00:16:31,170 好。 382 00:16:31,170 --> 00:16:34,150 酷。 383 00:16:34,150 --> 00:16:34,680 >> 好吧。 384 00:16:34,680 --> 00:16:40,680 因此,我们将开始讨论 和公正的审查快速 385 00:16:40,680 --> 00:16:45,040 一些从该材料的 零只所以我们一周 386 00:16:45,040 --> 00:16:48,760 正确的页面上 开始这个星期的问题。 387 00:16:48,760 --> 00:16:52,600 因此,while循环是 三种类型的循环的 388 00:16:52,600 --> 00:16:54,510 前面我们在这个课堂上讨论。 389 00:16:54,510 --> 00:16:57,060 >> while循环本质 被写在语法 390 00:16:57,060 --> 00:17:00,666 其中,而在一定条件下, 这样做反复,对不对? 391 00:17:00,666 --> 00:17:02,040 想想它在这个图形在这里。 392 00:17:02,040 --> 00:17:04,780 你会开始在 某一点在你的代码。 393 00:17:04,780 --> 00:17:09,030 你要进入循环条件 if--我不知道 - x小于1。 394 00:17:09,030 --> 00:17:11,677 >> 如果是真的,你要 执行循环体。 395 00:17:11,677 --> 00:17:14,010 而你要继续做 一遍,再次再次 396 00:17:14,010 --> 00:17:17,900 过去,over--这就是为什么它是一个 loop--直到你的条件变为 397 00:17:17,900 --> 00:17:19,079 假的。 398 00:17:19,079 --> 00:17:22,140 因此以这种方式,一个循环的同时 是比较简单的方法之一 399 00:17:22,140 --> 00:17:25,619 写任何形式的条件 需要重复一遍又一遍又一遍。 400 00:17:25,619 --> 00:17:28,109 只是要小心,每当 你写的任何种类的循环 401 00:17:28,109 --> 00:17:32,140 你有一个退出条件为 还有一个更新不管它 402 00:17:32,140 --> 00:17:36,714 为使您的循环不只是 遍地跑无限。 403 00:17:36,714 --> 00:17:38,630 在任何情况下,你会 想要确保 404 00:17:38,630 --> 00:17:42,670 您正在改变的某些方面 代码或在循环结束 405 00:17:42,670 --> 00:17:46,680 只是为了确保你有办法 迈向的条件 406 00:17:46,680 --> 00:17:48,400 要见面结束。 407 00:17:48,400 --> 00:17:50,239 这是否有意义给大家? 408 00:17:50,239 --> 00:17:52,530 我们只是不希望 陷入这种螺旋式的地方 409 00:17:52,530 --> 00:17:55,710 我们走了一圈又一圈,并 有没有办法来打破循环。 410 00:17:55,710 --> 00:17:58,844 而且每次循环本质 具有这样做的一种方式。 411 00:17:58,844 --> 00:17:59,344 好。 412 00:17:59,344 --> 00:18:03,030 413 00:18:03,030 --> 00:18:06,060 >> 其次,你们中许多人 在马里奥的pset 414 00:18:06,060 --> 00:18:08,910 可能不得不使用 这种类型的循环。 415 00:18:08,910 --> 00:18:11,802 它被称为do while循环。 416 00:18:11,802 --> 00:18:14,510 首先,谁能告诉我 什么做的区别 417 00:18:14,510 --> 00:18:16,586 while循环和while循环? 418 00:18:16,586 --> 00:18:17,086 是啊。 419 00:18:17,086 --> 00:18:21,030 >> 听众:while循环的做 运行在第一个[听不清]。 420 00:18:21,030 --> 00:18:22,120 >> ANDI彭:是的,没错。 421 00:18:22,120 --> 00:18:27,130 因此,一个do while循环总是做什么 是做在里面,括号内 422 00:18:27,130 --> 00:18:30,520 那里确实是条件 检查the--对不起之前, 423 00:18:30,520 --> 00:18:32,940 这是否代码之前 检查的条件。 424 00:18:32,940 --> 00:18:37,200 这是特别相关我们 在这里这个类,因为大多数时候 425 00:18:37,200 --> 00:18:41,450 我们将要提示 用户对某种类型的输入。 426 00:18:41,450 --> 00:18:43,520 然后,视 输入他们给我们, 427 00:18:43,520 --> 00:18:46,150 那么我们可以计算,呵呵, 我们需要再次提示呢? 428 00:18:46,150 --> 00:18:49,930 >> 因此,在马里奥,如果用户给你 一负高度,例如, 429 00:18:49,930 --> 00:18:52,990 你要第一个提示 做任何在里面。 430 00:18:52,990 --> 00:18:54,820 然后,你要检查的同时。 431 00:18:54,820 --> 00:18:57,570 要知道,为负1, 是一个正数? 432 00:18:57,570 --> 00:19:00,680 如果不是的话,我会去 背部和重复做,重复 433 00:19:00,680 --> 00:19:03,950 重复,重复,直到他们 最后给你一个数字,你喜欢, 434 00:19:03,950 --> 00:19:07,002 我们都可以运用在我们的代码。 435 00:19:07,002 --> 00:19:09,210 这对于非常重要的 基本上任何用户输入。 436 00:19:09,210 --> 00:19:11,760 我可以在任何保证你 一次在PSET哪里 437 00:19:11,760 --> 00:19:15,070 我们要求您输入 任何类型的代码,我们 438 00:19:15,070 --> 00:19:17,540 可能要给你 测试案例中,我们 439 00:19:17,540 --> 00:19:21,200 想给你的东西不好那 要尝试打破你的代码。 440 00:19:21,200 --> 00:19:25,044 >> 如果我们试图要求你输入一个 整数,我们可能只给你一个字符串 441 00:19:25,044 --> 00:19:26,460 看看你会如何处理。 442 00:19:26,460 --> 00:19:30,610 如果我们要求您使用的时代, 我们可以给你一个负数 443 00:19:30,610 --> 00:19:32,340 就看你会如何处理。 444 00:19:32,340 --> 00:19:37,260 只要确保你们正在测试 案件中,你没有得到最好的 445 00:19:37,260 --> 00:19:38,590 输入,让我们只说。 446 00:19:38,590 --> 00:19:40,510 而一个do while循环 通常情况下是最好的 447 00:19:40,510 --> 00:19:45,260 的方式来设计你的代码,以便 它符合该范围。 448 00:19:45,260 --> 00:19:45,760 好。 449 00:19:45,760 --> 00:19:48,930 450 00:19:48,930 --> 00:19:49,470 >> 好。 451 00:19:49,470 --> 00:19:53,270 因此,这可能是最 复杂的环出三个 452 00:19:53,270 --> 00:19:54,990 我们已经看到了这么远。 453 00:19:54,990 --> 00:19:56,689 它看起来很吓人在第一。 454 00:19:56,689 --> 00:19:59,730 但我向你保证,一旦你们 了解如何使用一个for循环的窍门, 455 00:19:59,730 --> 00:20:03,320 这是最有用的事情之一, 在您的阿森纳最有用的工具 456 00:20:03,320 --> 00:20:05,300 为推动这一类。 457 00:20:05,300 --> 00:20:09,920 >> 因此,例如,在刮, 我们有一个非常简单的块 458 00:20:09,920 --> 00:20:13,180 只是说重复这个特定 短语一定的次数。 459 00:20:13,180 --> 00:20:16,260 顺便说一下,SAJ-- 这是Scaz安迪杰森。 460 00:20:16,260 --> 00:20:18,740 我们常常签署我们的邮件SAJ。 461 00:20:18,740 --> 00:20:20,360 如果说SAJ,不要混淆。 462 00:20:20,360 --> 00:20:22,630 这只是我们。 463 00:20:22,630 --> 00:20:28,600 >> 因此,在刮,我们能够有 一个块表示,重复我爱SAJ! 464 00:20:28,600 --> 00:20:29,430 的10倍。 465 00:20:29,430 --> 00:20:30,130 很简单。 466 00:20:30,130 --> 00:20:32,302 背后的逻辑是一个 非常,非常简单吧? 467 00:20:32,302 --> 00:20:35,260 我想先通过第一 时间和看到的是,第二次 468 00:20:35,260 --> 00:20:38,510 并看到,第三次,依此类推 并依此类推,直到你打10。 469 00:20:38,510 --> 00:20:41,960 >> 而这样,我们将表示​​在 代码只是通过for循环的简单。 470 00:20:41,960 --> 00:20:45,440 因此,对,你要申报 这里对您的变量,在这种情况下, 471 00:20:45,440 --> 00:20:46,349 用int。 472 00:20:46,349 --> 00:20:47,390 我们将其命名为我。 473 00:20:47,390 --> 00:20:49,500 我们将其初始化为0。 474 00:20:49,500 --> 00:20:52,490 和制动版本是 将是i小于10。 475 00:20:52,490 --> 00:20:54,622 并且更新将是我++。 476 00:20:54,622 --> 00:20:57,750 >> 而内环路,这是怎么回事 直到最后它来执行 477 00:20:57,750 --> 00:21:01,490 击中condition--的端部,其中 情况下,这将打破循环。 478 00:21:01,490 --> 00:21:04,600 应该有东西,你 所有类型的球员已经见过 479 00:21:04,600 --> 00:21:07,270 而不得不做你的问题集之一。 480 00:21:07,270 --> 00:21:12,310 有没有人有任何问题 关于for循环的权利吗? 481 00:21:12,310 --> 00:21:12,930 好。 482 00:21:12,930 --> 00:21:13,430 太好了。 483 00:21:13,430 --> 00:21:17,520 484 00:21:17,520 --> 00:21:18,620 >> 好。 485 00:21:18,620 --> 00:21:22,270 因此,对于那些你们谁 读处理器集规格本周 486 00:21:22,270 --> 00:21:27,690 知道我们将不得不雇用 一些所谓的ASCII和ASCII表。 487 00:21:27,690 --> 00:21:32,380 大卫在演讲走过去简单 计算机如何essentially--一切 488 00:21:32,380 --> 00:21:35,410 被编码在计算机中 二元,在零和一。 489 00:21:35,410 --> 00:21:39,740 而这台计算机能的方式 以存储除了不同的值 490 00:21:39,740 --> 00:21:44,360 以零和的是通过映射 这些数字代表其他数字 491 00:21:44,360 --> 00:21:47,220 或基本上其他字符。 492 00:21:47,220 --> 00:21:49,810 >> 所以在这种情况下,一个 ASCII table--它所做的一切 493 00:21:49,810 --> 00:21:53,600 是图个字符,或字符,为数字。 494 00:21:53,600 --> 00:21:57,385 因此,在源代码文件 您computer--它认为, 495 00:21:57,385 --> 00:22:00,010 哎,一堆零和一, 零和一,零和一。 496 00:22:00,010 --> 00:22:02,350 这就是存储在 您的计算机的实际内存。 497 00:22:02,350 --> 00:22:04,750 >> 但是,当我们人类要 与电脑进行通讯, 498 00:22:04,750 --> 00:22:08,249 我们want--说,例如, 如果我想的大写字母A, 499 00:22:08,249 --> 00:22:10,540 我将需要一些方法 告诉电脑,哦, 500 00:22:10,540 --> 00:22:16,300 当我输入大写字母A,我的意思是 这表示二进制。 501 00:22:16,300 --> 00:22:22,260 >> 所以我们这样做的方式是抛出了一个 随心所欲的东西称为ASCII表, 502 00:22:22,260 --> 00:22:25,020 我们,作为人,作为 程序员,前一段时间, 503 00:22:25,020 --> 00:22:28,660 我们随意决定我们 将要分配这些号码 504 00:22:28,660 --> 00:22:30,960 值这些字符。 505 00:22:30,960 --> 00:22:32,720 >> 所以你们可以google一下网上。 506 00:22:32,720 --> 00:22:37,120 我觉得有一个在你一个链接 pset--只是一个ASCII映射表,ASCII 507 00:22:37,120 --> 00:22:37,720 表。 508 00:22:37,720 --> 00:22:40,722 它只是转换二进制 号码转换成字符。 509 00:22:40,722 --> 00:22:42,930 而且这将是非常 针对您的问题集有用 510 00:22:42,930 --> 00:22:45,470 每当你想 算什么,或者你 511 00:22:45,470 --> 00:22:47,880 要显示一定的 字符或整数 512 00:22:47,880 --> 00:22:50,327 或操纵某些字符。 513 00:22:50,327 --> 00:22:52,160 这将是非常 重要的是你的所有 514 00:22:52,160 --> 00:22:55,140 知道如何定位的ASCII表。 515 00:22:55,140 --> 00:23:01,260 >> 因此,例如,在大写字母A 由数字65表示。 516 00:23:01,260 --> 00:23:04,207 而小写 用97来表示。 517 00:23:04,207 --> 00:23:07,040 因此,重要的是要知道, 两个值之间的差异 518 00:23:07,040 --> 00:23:08,320 是32。 519 00:23:08,320 --> 00:23:13,210 通常情况下,如果你需要从转换 一个到另一个,不同的是32。 520 00:23:13,210 --> 00:23:15,710 如果你是那种不用担心 迷糊这个在第一。 521 00:23:15,710 --> 00:23:20,230 我们一起去了我们如何 在实际的代码中使用此。 522 00:23:20,230 --> 00:23:24,700 523 00:23:24,700 --> 00:23:26,380 >> 好。 524 00:23:26,380 --> 00:23:30,770 因此,对于那些你与笔记本电脑了, 随意拉一个ASCII表, 525 00:23:30,770 --> 00:23:36,030 因为这些大概会 需要你们引用 526 00:23:36,030 --> 00:23:38,100 什么字符。 527 00:23:38,100 --> 00:23:38,640 好。 528 00:23:38,640 --> 00:23:42,840 >> 因此,了解某些 字符映射到特定的号码, 529 00:23:42,840 --> 00:23:47,240 如果我只是跑第一 那行代码 - 在printf的一个, 530 00:23:47,240 --> 00:23:50,900 小写,减 大写字母A.有谁 531 00:23:50,900 --> 00:23:55,880 有这将是一个猜测 打印出来的画面,现在呢? 532 00:23:55,880 --> 00:23:58,190 >> 所以首先,有哪些呢 小写代表什么? 533 00:23:58,190 --> 00:24:00,990 什么号码是 编码在ASCII表。 534 00:24:00,990 --> 00:24:01,490 对不起? 535 00:24:01,490 --> 00:24:02,630 >> 听众:97? 536 00:24:02,630 --> 00:24:03,630 >> ANDI彭:97,伟大的。 537 00:24:03,630 --> 00:24:05,077 什么是大写字母A? 538 00:24:05,077 --> 00:24:06,330 >> 听众:65。 539 00:24:06,330 --> 00:24:08,255 >> ANDI彭:那么,什么是97减65? 540 00:24:08,255 --> 00:24:09,227 >> 听众:32。 541 00:24:09,227 --> 00:24:09,810 ANDI彭:OK。 542 00:24:09,810 --> 00:24:13,530 那么,你们认为是要 发生时,我输入了代码行 543 00:24:13,530 --> 00:24:14,670 进入我的电脑? 544 00:24:14,670 --> 00:24:17,981 545 00:24:17,981 --> 00:24:19,896 >> 听众:[听不清]。 546 00:24:19,896 --> 00:24:21,020 ANDI彭:对不起,说出来。 547 00:24:21,020 --> 00:24:22,520 别担心。 548 00:24:22,520 --> 00:24:25,750 这是一个非常安全的 环境,减去相机。 549 00:24:25,750 --> 00:24:27,550 我们都将用于:无后顾之忧。 550 00:24:27,550 --> 00:24:30,940 只是我们都去假装 它只是我们心寒在这个房间里。 551 00:24:30,940 --> 00:24:31,480 别担心。 552 00:24:31,480 --> 00:24:33,410 毫无疑问是太愚蠢了。 553 00:24:33,410 --> 00:24:35,300 没有答案是愚蠢的答案。 554 00:24:35,300 --> 00:24:38,260 我可能会犯错误 在我的教学过程。 555 00:24:38,260 --> 00:24:40,740 说真的,伙计们,只是脱口而出出来。 556 00:24:40,740 --> 00:24:43,092 要充满自信,你知道吗? 557 00:24:43,092 --> 00:24:43,800 所以,那是什么? 558 00:24:43,800 --> 00:24:47,990 谁说,去年的答案吗? 559 00:24:47,990 --> 00:24:48,540 好。 560 00:24:48,540 --> 00:24:50,380 喊了很好的和明确的。 561 00:24:50,380 --> 00:24:51,220 >> 听众:32? 562 00:24:51,220 --> 00:24:51,850 >> ANDI彭:32。 563 00:24:51,850 --> 00:24:54,141 OK,让我们运行此代码, 看看这是什么情况。 564 00:24:54,141 --> 00:25:00,260 565 00:25:00,260 --> 00:25:00,760 好。 566 00:25:00,760 --> 00:25:03,300 567 00:25:03,300 --> 00:25:06,360 所以当你们可以种 看,典型的符号我已经 568 00:25:06,360 --> 00:25:12,250 设在这里的,我们将如何使用 在我们的电脑任何类型的程序。 569 00:25:12,250 --> 00:25:14,770 我们有我们的主要功能 在我们的主要功能。 570 00:25:14,770 --> 00:25:17,265 我只是去复制和 粘贴此行代码。 571 00:25:17,265 --> 00:25:21,082 572 00:25:21,082 --> 00:25:23,540 你什么时候你们也要小心 正在复制和粘贴代码。 573 00:25:23,540 --> 00:25:28,750 有时候,某些运营商 不贴了正常。 574 00:25:28,750 --> 00:25:31,397 在这种情况下,减 符号实际上是一个破折号。 575 00:25:31,397 --> 00:25:32,980 这样一来,电脑并没有把它捡起来。 576 00:25:32,980 --> 00:25:35,870 因此,我不得不回去 身体重新输入。 577 00:25:35,870 --> 00:25:37,846 只是要小心 你们正在做的。 578 00:25:37,846 --> 00:25:41,178 579 00:25:41,178 --> 00:25:42,660 >> 好。 580 00:25:42,660 --> 00:25:43,980 我们要在这里运行此。 581 00:25:43,980 --> 00:25:45,670 所以,我们要cd到我们的第2节。 582 00:25:45,670 --> 00:25:50,470 583 00:25:50,470 --> 00:25:52,030 我叫这个节目asciimath。 584 00:25:52,030 --> 00:25:55,690 所以请记住,当我们运行任何 程序中,我们要先编译 585 00:25:55,690 --> 00:25:57,150 通过我们的化妆运行它。 586 00:25:57,150 --> 00:26:00,030 然后我们要实际运行 该方案通过做点斜线。 587 00:26:00,030 --> 00:26:01,280 所以,我们要./asciimath。 588 00:26:01,280 --> 00:26:05,780 589 00:26:05,780 --> 00:26:06,590 >> 对了,我们走吧。 590 00:26:06,590 --> 00:26:07,410 我们看到32。 591 00:26:07,410 --> 00:26:07,930 做得好。 592 00:26:07,930 --> 00:26:10,340 你应该得到一块糖。 593 00:26:10,340 --> 00:26:11,160 糖果给你。 594 00:26:11,160 --> 00:26:11,900 抱歉。 595 00:26:11,900 --> 00:26:13,100 好吧。 596 00:26:13,100 --> 00:26:13,670 好。 597 00:26:13,670 --> 00:26:18,070 所以,我们可以回到我们的例子在这里。 598 00:26:18,070 --> 00:26:23,530 599 00:26:23,530 --> 00:26:24,345 啊哈,没有。 600 00:26:24,345 --> 00:26:29,147 601 00:26:29,147 --> 00:26:31,090 AAH。 602 00:26:31,090 --> 00:26:32,490 好。 603 00:26:32,490 --> 00:26:34,610 我只是要保持这样的。 604 00:26:34,610 --> 00:26:48,520 605 00:26:48,520 --> 00:26:51,240 好。 606 00:26:51,240 --> 00:26:51,740 好。 607 00:26:51,740 --> 00:26:55,340 所以当你们可以看到,我们能做到 很多非常有趣的事情, 608 00:26:55,340 --> 00:26:58,880 很多非常酷的事情,很多的 涉及到非常复杂的事情 609 00:26:58,880 --> 00:27:02,720 ASCII字符和数字。 610 00:27:02,720 --> 00:27:05,890 一旦你到五号线, 这是一个很多跟随。 611 00:27:05,890 --> 00:27:07,640 我们不会去 通过部分。 612 00:27:07,640 --> 00:27:10,720 随意,如果可以的话, 原因,它在纸上 613 00:27:10,720 --> 00:27:14,750 第一次什么应该发生时, 你输入这样的字符串值。 614 00:27:14,750 --> 00:27:19,720 例如,在最后一行,我们有 z--表示某种number-- 615 00:27:19,720 --> 00:27:24,740 A--这也代表了 某些number--加1模数26 616 00:27:24,740 --> 00:27:26,750 再加上小写。 617 00:27:26,750 --> 00:27:29,220 >> 如果你们继续阅读 通过这些,你 618 00:27:29,220 --> 00:27:34,009 可以看到一个模式来在 我们是如何操作的代码。 619 00:27:34,009 --> 00:27:36,050 我强烈,强烈建议 毕竟你节 620 00:27:36,050 --> 00:27:38,160 球员前进和投入 这些都在你的电脑 621 00:27:38,160 --> 00:27:40,060 看看是什么样的 数字现身 622 00:27:40,060 --> 00:27:43,090 并通过这些原因是推理 发生的事情,因为你的pset 623 00:27:43,090 --> 00:27:45,060 这将是非常重要的 让你了解 624 00:27:45,060 --> 00:27:47,132 为什么某些事情正在发生。 625 00:27:47,132 --> 00:27:48,590 所有这些幻灯片将在网上。 626 00:27:48,590 --> 00:27:51,510 所以不愁努力 身体上复制下来的笔记。 627 00:27:51,510 --> 00:27:52,510 一切都在网上。 628 00:27:52,510 --> 00:27:54,050 本节本身会上网。 629 00:27:54,050 --> 00:27:57,500 我的所有的源代码, 我正在将是网上。 630 00:27:57,500 --> 00:27:58,180 是啊。 631 00:27:58,180 --> 00:27:59,430 你还有问题吗? 632 00:27:59,430 --> 00:28:00,587 听众:什么是模数? 633 00:28:00,587 --> 00:28:01,170 ANDI彭:OK。 634 00:28:01,170 --> 00:28:05,620 所以模是一个操作员,那将 是你的球员的pset中非常重要的 635 00:28:05,620 --> 00:28:06,690 这里。 636 00:28:06,690 --> 00:28:12,280 这样的方式,操作人员 C语言和编程工作 637 00:28:12,280 --> 00:28:16,360 是,你有什么所谓的 师符号和模量的象征, 638 00:28:16,360 --> 00:28:18,350 这就像百分号。 639 00:28:18,350 --> 00:28:24,840 >> 因此,在C,当你做一个整数 除以整数带斜线, 640 00:28:24,840 --> 00:28:27,720 C具有一种倾向,要削减 关闭所有的小数点, 641 00:28:27,720 --> 00:28:30,290 因为一个整数希望 转换成整数。 642 00:28:30,290 --> 00:28:33,550 它不会想成为一个双 一堆小数所有之后的。 643 00:28:33,550 --> 00:28:39,322 >> 所以,如果我做的3除以2,这是怎么回事 切断0.5和只给你1。 644 00:28:39,322 --> 00:28:41,530 所以这是一件值得 非常小心,当你的 645 00:28:41,530 --> 00:28:45,294 做任何形式的数学编程, 是这些数字你 646 00:28:45,294 --> 00:28:47,210 未必是数字 你所想, 647 00:28:47,210 --> 00:28:50,190 这就是为什么在舍入你的 最后PSET是非常重要的。 648 00:28:50,190 --> 00:28:51,980 >> 模给你的剩余部分。 649 00:28:51,980 --> 00:28:56,200 因此,举例来说,如果我做了3 模2--所以3百分号2-- 650 00:28:56,200 --> 00:28:58,020 它会给你的那剩下的人。 651 00:28:58,020 --> 00:29:00,460 所以3除以2为1.5。 652 00:29:00,460 --> 00:29:01,410 这是1剩下的1。 653 00:29:01,410 --> 00:29:04,600 它会给你1,这 是那剩下的人。 654 00:29:04,600 --> 00:29:07,361 >> 所以,当你们正在 通过ASCII表, 655 00:29:07,361 --> 00:29:09,735 模将最终被 东西是非常重要的, 656 00:29:09,735 --> 00:29:11,240 我们将讨论以后。 657 00:29:11,240 --> 00:29:17,750 658 00:29:17,750 --> 00:29:19,040 >> 好。 659 00:29:19,040 --> 00:29:27,300 所以东西是漂亮, 漂亮的新独辟蹊径 660 00:29:27,300 --> 00:29:31,920 我们已经在本周讨论的 什么数组的概念。 661 00:29:31,920 --> 00:29:34,370 所以阵列是第一 数据结构的类型 662 00:29:34,370 --> 00:29:36,320 我们要去 遇到此类。 663 00:29:36,320 --> 00:29:40,010 所有的数据结构是 某种随意性, 664 00:29:40,010 --> 00:29:43,370 从字面上的东西状结构 我们作为程序员创建的, 665 00:29:43,370 --> 00:29:47,890 我们已经把我们的代码, 可以包含其他的代码段。 666 00:29:47,890 --> 00:29:51,090 >> 所以在这个意义上说,一个array-- 认为它是一个文件柜, 667 00:29:51,090 --> 00:29:53,470 在那里,如果你打开​​不同的 文件柜货架, 668 00:29:53,470 --> 00:29:55,630 您可以访问不同的事情。 669 00:29:55,630 --> 00:29:58,630 在内存中,数组只是做 同样的事情在您的计算机上。 670 00:29:58,630 --> 00:30:01,730 你可以有不同的blocks--我们 称他们indices--数组。 671 00:30:01,730 --> 00:30:04,210 这就像一个块, 的存储器的架子 672 00:30:04,210 --> 00:30:07,580 我们已经在创建了 计算机,你可以输入 673 00:30:07,580 --> 00:30:10,270 在不同的空间中某些事情。 674 00:30:10,270 --> 00:30:18,000 >> 因此,一个数组,你 总是要specify-- 675 00:30:18,000 --> 00:30:22,360 您必须指定在声明 阵列中的下面的格式。 676 00:30:22,360 --> 00:30:24,290 你会第一 指定数据类型 677 00:30:24,290 --> 00:30:25,831 要创建阵列。 678 00:30:25,831 --> 00:30:28,870 如果我想要一个整数数组, 我打算把INT就在这里。 679 00:30:28,870 --> 00:30:32,079 如果我想要一个字符串数组, 我打算把字符串出现, 680 00:30:32,079 --> 00:30:34,995 阵列的名称,然后 你将有方括号。 681 00:30:34,995 --> 00:30:39,580 而在方括号,你 将有你的数组的大小。 682 00:30:39,580 --> 00:30:42,900 >> 东西是真正重要的 记住,当创建阵列是 683 00:30:42,900 --> 00:30:46,530 如此,一旦你创建一个 阵列,该尺寸不能改变。 684 00:30:46,530 --> 00:30:50,180 所以,如果你知道现在 你有大小为10的数组, 685 00:30:50,180 --> 00:30:54,550 你知道,我将有10个小区 内或10这个数组中的索引, 686 00:30:54,550 --> 00:30:56,830 它永远不会 扩大或减少 687 00:30:56,830 --> 00:30:59,850 不管是什么,这有 空间目前只有10个街区 688 00:30:59,850 --> 00:31:04,490 分配你的内存,可以存储 最多10个任何事情,你已经把。 689 00:31:04,490 --> 00:31:08,790 >> 因此以这种方式,阵列数据类型, 的数据结构是数组 690 00:31:08,790 --> 00:31:13,392 从其他一些人,我们将非常不同 在此过程中稍后覆盖。 691 00:31:13,392 --> 00:31:15,170 是啊。 692 00:31:15,170 --> 00:31:20,080 例如,如果你想 创建大小为3的数组 693 00:31:20,080 --> 00:31:23,670 的integer--包含变量 哦,不好意思,temperature-- 694 00:31:23,670 --> 00:31:25,640 和温度, 当然,是整数。 695 00:31:25,640 --> 00:31:28,710 >> 因此,我们将产生int,它是 是我们要存储的数据类型。 696 00:31:28,710 --> 00:31:32,680 我们将调用这个温度 为求命名的命名 697 00:31:32,680 --> 00:31:34,200 东西,大家都明白。 698 00:31:34,200 --> 00:31:35,900 而我们将有方括号。 699 00:31:35,900 --> 00:31:37,200 我们希望三个数字。 700 00:31:37,200 --> 00:31:39,000 因此,我们打算把 三是内部的。 701 00:31:39,000 --> 00:31:41,041 >> 东西是真的 重要的是要记住 702 00:31:41,041 --> 00:31:43,530 是阵列零索引。 703 00:31:43,530 --> 00:31:46,410 所有这一切意味着你 开始为0的索引, 704 00:31:46,410 --> 00:31:49,800 你通过跑起来 减1的阵列的大小。 705 00:31:49,800 --> 00:31:52,730 因此,对于这里的例子,我们 有大小3的数组。 706 00:31:52,730 --> 00:31:54,680 这将能 持有三个值。 707 00:31:54,680 --> 00:31:57,450 但数字themselves--的 号,阵列,该索引, 708 00:31:57,450 --> 00:32:00,271 数组,从0到2。 709 00:32:00,271 --> 00:32:03,520 所以,球员,真的,真的很小心 你要通过你的问题集 710 00:32:03,520 --> 00:32:06,500 和创建任何类型的数组, 因为很多它的时代 711 00:32:06,500 --> 00:32:08,490 真的,真的很容易忘记这一点。 712 00:32:08,490 --> 00:32:11,840 我居然没有索引 3,我现在只是 713 00:32:11,840 --> 00:32:13,130 具有2的索引。 714 00:32:13,130 --> 00:32:16,046 如果你尝试 访问第三索引, 715 00:32:16,046 --> 00:32:18,170 这将是怎样的 所谓空终止。 716 00:32:18,170 --> 00:32:19,990 它不会实际 存在阵列中。 717 00:32:19,990 --> 00:32:21,781 并且计算机 不会喜欢的。 718 00:32:21,781 --> 00:32:24,570 所以要小心,只要 您正在访问的事情只是 719 00:32:24,570 --> 00:32:28,070 确保你记住 该数组是零索引。 720 00:32:28,070 --> 00:32:28,880 >> 好。 721 00:32:28,880 --> 00:32:34,030 所以第一实施例仅仅是 创建阵列的一种方式。 722 00:32:34,030 --> 00:32:36,790 第二个例子,我有 下面就是一个独立的方式 723 00:32:36,790 --> 00:32:40,210 创造了什么是相同的数据 我们刚刚输入的结构。 724 00:32:40,210 --> 00:32:44,347 因此,而不是实际运行 通过并把在0温度 725 00:32:44,347 --> 00:32:47,180 等于什么,温度1 等于什么,温度2等于 726 00:32:47,180 --> 00:32:50,950 不管,我其实只是 在一行中直接创建这一切 727 00:32:50,950 --> 00:32:53,010 成温方括号等于。 728 00:32:53,010 --> 00:32:56,536 >> 并注意在这种情况下,你不需要 到指定的数组有多大, 729 00:32:56,536 --> 00:32:59,160 因为电脑的打算 经过,看到有 730 00:32:59,160 --> 00:33:01,570 在这些大括号三个要素。 731 00:33:01,570 --> 00:33:04,000 而且它会知道,OK, 我需要的大小为3的数组。 732 00:33:04,000 --> 00:33:07,440 你不会需要 输入它下面的方式。 733 00:33:07,440 --> 00:33:10,170 >> 而且,是的,这种方式。 734 00:33:10,170 --> 00:33:12,610 有没有人有问题 关于我们如何数组 735 00:33:12,610 --> 00:33:17,391 或如何阵列结构的工作原理? 736 00:33:17,391 --> 00:33:17,890 是啊。 737 00:33:17,890 --> 00:33:18,806 >> 听众:[听不清]? 738 00:33:18,806 --> 00:33:21,649 739 00:33:21,649 --> 00:33:22,690 ANDI彭:是的,没错。 740 00:33:22,690 --> 00:33:26,150 所以,如果你要声明和初始化 阵列以下的方法, 741 00:33:26,150 --> 00:33:28,477 这是第二次的方式, 你可以离开的。 742 00:33:28,477 --> 00:33:30,310 而且电脑 自动知道它 743 00:33:30,310 --> 00:33:33,950 需要指望有多少元素 在这些大括号,分离 744 00:33:33,950 --> 00:33:34,930 用逗号。 745 00:33:34,930 --> 00:33:37,517 >> 所以在这里,他们看到65,87,30。 746 00:33:37,517 --> 00:33:39,600 因此,计算机就知道,哦, 有三个整数。 747 00:33:39,600 --> 00:33:45,960 我知道要创建一个数组名 温度在其三大要素。 748 00:33:45,960 --> 00:33:46,590 好问题。 749 00:33:46,590 --> 00:33:47,090 是啊。 750 00:33:47,090 --> 00:33:51,590 >> 听众:是不是有可能创建 与不同类型的数据阵列 751 00:33:51,590 --> 00:33:53,021 可能被输入到什么? 752 00:33:53,021 --> 00:33:56,746 例如,对于整数[听不清]? 753 00:33:56,746 --> 00:33:59,120 ANDI彭:为施行 这个类的,不,现在。 754 00:33:59,120 --> 00:34:03,070 当你创建一个数据 结构是怎样的一个数组, 755 00:34:03,070 --> 00:34:04,990 你告诉 计算机,嘿嘿,我需要你 756 00:34:04,990 --> 00:34:08,159 分配这么多 记忆在我的硬盘驱动器, 757 00:34:08,159 --> 00:34:10,690 每个小区是一个 一定数目的位。 758 00:34:10,690 --> 00:34:13,429 >> 还记得我们在上周得知 零的不同的数据 759 00:34:13,429 --> 00:34:15,300 类型有不同的大小? 760 00:34:15,300 --> 00:34:17,630 因此,例如,一个字符串 是一个不同的量 761 00:34:17,630 --> 00:34:20,719 空间不是一个字符,这 是不同量的空间 762 00:34:20,719 --> 00:34:21,830 从一个整数。 763 00:34:21,830 --> 00:34:25,534 所以,如果你没有指定你 混搭是什么类型的变量 764 00:34:25,534 --> 00:34:27,659 你有电脑的 将是很迷茫。 765 00:34:27,659 --> 00:34:29,950 而且它不会知道 多少内存给你。 766 00:34:29,950 --> 00:34:32,480 所以为便于右 现在,计算机只能 767 00:34:32,480 --> 00:34:36,120 识别一种类型的数组。 768 00:34:36,120 --> 00:34:37,940 好问题。 769 00:34:37,940 --> 00:34:38,440 好。 770 00:34:38,440 --> 00:34:45,179 771 00:34:45,179 --> 00:34:47,120 >> 所以很自然的 我们的第二个问题 772 00:34:47,120 --> 00:34:50,760 是,好了,现在我们已经创建了一个 阵列,我们已经把所有的这些东西 773 00:34:50,760 --> 00:34:54,190 阵列中的情况是怎样的 要能够访问它? 774 00:34:54,190 --> 00:34:59,710 因此,典型结构是我们始终 访问数组是我们可爱的for循环。 775 00:34:59,710 --> 00:35:03,830 我答应你们,我们会 看到很多这样的家伙在这里。 776 00:35:03,830 --> 00:35:06,470 >> 从本质上讲,任何时候你想 输入值到一个数组 777 00:35:06,470 --> 00:35:09,940 或者你想访问他们来说, 这样做的最好的方法是一个for循环, 778 00:35:09,940 --> 00:35:13,730 因为在一个for循环,你 知道你有多少次 779 00:35:13,730 --> 00:35:17,290 会希望通过阵列来运行, 因为你有一个停止的版本,对不对? 780 00:35:17,290 --> 00:35:19,680 而每一次运行 通过,你可以访问 781 00:35:19,680 --> 00:35:21,310 不同的元件的阵列构成。 782 00:35:21,310 --> 00:35:26,920 >> 而且,这是一个原因,通常 我们在0值开始我们的for循环, 783 00:35:26,920 --> 00:35:30,080 因为当你访问阵列, 您可以访问零指标。 784 00:35:30,080 --> 00:35:32,070 因此它平行非常漂亮。 785 00:35:32,070 --> 00:35:35,295 你们可能想 写INT I等于1。 786 00:35:35,295 --> 00:35:37,330 i小于或等于3。 787 00:35:37,330 --> 00:35:39,890 >> 但它不会是相当正常工作 还有在这里,因为你只 788 00:35:39,890 --> 00:35:42,010 具有0,1和2的元件。 789 00:35:42,010 --> 00:35:45,815 所以如果你开始 您我在元件1,2,和3中, 790 00:35:45,815 --> 00:35:48,440 你会最终运行 你的数组的边界, 791 00:35:48,440 --> 00:35:50,440 坏的事情将要发生。 792 00:35:50,440 --> 00:35:54,480 >> 所以,我希望你们看到SEGUE 为什么在前面的类 793 00:35:54,480 --> 00:35:58,560 我们教你们如何运行和 格式化的循环,我们的方式。 794 00:35:58,560 --> 00:36:01,900 这是因为,现在我们已经 过渡到阵列, 795 00:36:01,900 --> 00:36:06,760 你可以看到为什么0贷出 本身非常漂亮来访问。 796 00:36:06,760 --> 00:36:09,880 >> 所以我们这样做的方式是that--我 刚刚打印出来这里是为了 797 00:36:09,880 --> 00:36:10,830 打印出来。 798 00:36:10,830 --> 00:36:13,750 但是,我有我的占位符,逗号。 799 00:36:13,750 --> 00:36:15,645 与实际访问 部分正在发生。 800 00:36:15,645 --> 00:36:17,520 所述阵列的名称 被称为温度。 801 00:36:17,520 --> 00:36:21,570 所以它的温度和 该阵列的第i个元素。 802 00:36:21,570 --> 00:36:24,400 >> 所以for循环贯穿, 它会从0开始。 803 00:36:24,400 --> 00:36:27,640 这将打印出 此数组的第0个指标。 804 00:36:27,640 --> 00:36:29,599 然后它会打印 出的第一个元素。 805 00:36:29,599 --> 00:36:31,431 然后它会打印 出第二个。 806 00:36:31,431 --> 00:36:32,880 然后,我们要打破。 807 00:36:32,880 --> 00:36:36,718 是每个人都清楚 怎么说是怎么回事? 808 00:36:36,718 --> 00:36:37,217 太好了。 809 00:36:37,217 --> 00:36:43,230 810 00:36:43,230 --> 00:36:44,100 >> 好吧。 811 00:36:44,100 --> 00:36:47,270 所以在这里我们有办法 他说,如果我们不想要 812 00:36:47,270 --> 00:36:50,020 硬编码in--我为程序员。 813 00:36:50,020 --> 00:36:53,320 我不想实际的物理 摆在每一个单独的元素 814 00:36:53,320 --> 00:36:54,020 此阵。 815 00:36:54,020 --> 00:36:56,500 如果我想,而不是 有用户输入的值, 816 00:36:56,500 --> 00:36:58,100 什么是做到这一点的最好方法是什么? 817 00:36:58,100 --> 00:37:00,920 >> 那么,在这里我已经创建 这个可爱的功能, 818 00:37:00,920 --> 00:37:03,560 我在其中可以声明数组。 819 00:37:03,560 --> 00:37:06,210 因此,廉政scores--我们 只是说我们要 820 00:37:06,210 --> 00:37:10,660 即持有的所有18年级的数组 对这里的学生在本节。 821 00:37:10,660 --> 00:37:12,670 我认为我们已经有了一个位 超过18个孩子的今天。 822 00:37:12,670 --> 00:37:16,460 但如的缘故, 让我们只是假设,我们有18。 823 00:37:16,460 --> 00:37:21,580 我想创建一个数组名得分与 int类型,因为得分,当然, 824 00:37:21,580 --> 00:37:22,987 是数字。 825 00:37:22,987 --> 00:37:24,820 而我将不得不 在方括号18, 826 00:37:24,820 --> 00:37:29,900 有多少学生,因为这是我 希望能够存储的分数。 827 00:37:29,900 --> 00:37:32,206 >> 而这样,我想填充 该阵列是我最好 828 00:37:32,206 --> 00:37:35,572 通过运行for循环中, 当然,0是我的第0指数。 829 00:37:35,572 --> 00:37:38,030 然后用18是我的 停版,因为有 830 00:37:38,030 --> 00:37:39,690 数组中的18个元素。 831 00:37:39,690 --> 00:37:44,620 然后,我会做的printf,输入 得分student--亚达内容十分重要。 832 00:37:44,620 --> 00:37:51,171 >> 谁能告诉我为什么在这里,我 打印I加1,而不是我? 833 00:37:51,171 --> 00:37:52,920 这是怎样的一个把戏 问题,不是真的。 834 00:37:52,920 --> 00:37:56,020 它并没有实际的物理 影响代码的运行。 835 00:37:56,020 --> 00:37:56,520 是啊。 836 00:37:56,520 --> 00:37:57,909 >> 听众:[听不清] 0? 837 00:37:57,909 --> 00:37:58,950 ANDI彭:是的,没错。 838 00:37:58,950 --> 00:38:02,620 这是一个有点尴尬地说,哎, 你是第0个学生在这个类。 839 00:38:02,620 --> 00:38:03,780 这是一个有点怪。 840 00:38:03,780 --> 00:38:08,340 所以我们作为人类,真的不喜欢 想想计算机如何想的。 841 00:38:08,340 --> 00:38:10,930 因此,即使在 计算机,它的存储值 842 00:38:10,930 --> 00:38:13,310 在第0索引,当 我们是人类,我们真的不 843 00:38:13,310 --> 00:38:15,520 喜欢把自己看作为零。 844 00:38:15,520 --> 00:38:18,119 所以,当我刚打印, 我要打印,并添加 845 00:38:18,119 --> 00:38:19,410 1只是为了清楚起见。 846 00:38:19,410 --> 00:38:22,447 所以,当我打印,我将是 能够通过18打印学生1。 847 00:38:22,447 --> 00:38:24,530 它实际上并不影响 代码的运行 848 00:38:24,530 --> 00:38:27,110 以任何方式,我的方式进行打印。 849 00:38:27,110 --> 00:38:30,380 >> 但要小心,当你 实际访问的阵列。 850 00:38:30,380 --> 00:38:32,780 当你看到我得分, 注意这里我其实 851 00:38:32,780 --> 00:38:38,200 访问第0指数 不是1加0--或1加1, 852 00:38:38,200 --> 00:38:45,530 在这种情况下,指数所以 这实际上是明确的。 853 00:38:45,530 --> 00:38:48,870 是每个人都种确定对 这是如何通过运行 854 00:38:48,870 --> 00:38:51,470 并与各项指标我 把一个值到阵列 855 00:38:51,470 --> 00:38:55,340 并创建具有18个数字的数组 该用户将要输入? 856 00:38:55,340 --> 00:38:58,780 857 00:38:58,780 --> 00:38:59,821 好。 858 00:38:59,821 --> 00:39:00,321 酷。 859 00:39:00,321 --> 00:39:05,380 860 00:39:05,380 --> 00:39:07,400 >> 好。 861 00:39:07,400 --> 00:39:12,220 现在,我们进入的东西,是很 有关这片设置为好。 862 00:39:12,220 --> 00:39:15,020 我知道在讲座中,David-- 对不起,你有问题吗? 863 00:39:15,020 --> 00:39:16,840 >> 听众:您可以放大吗? 864 00:39:16,840 --> 00:39:18,080 >> ANDI彭:是啊,所以我尝试。 865 00:39:18,080 --> 00:39:18,788 但我不知道。 866 00:39:18,788 --> 00:39:21,437 出于某种原因,这 版本的PowerPoint 867 00:39:21,437 --> 00:39:23,270 是真的不工作 很好地与所述显示。 868 00:39:23,270 --> 00:39:25,260 因此,我们只是要 要保持这样。 869 00:39:25,260 --> 00:39:27,280 这些都将在网上上传。 870 00:39:27,280 --> 00:39:28,218 对不起大家。 871 00:39:28,218 --> 00:39:30,090 是啊。 872 00:39:30,090 --> 00:39:30,980 好。 873 00:39:30,980 --> 00:39:35,530 >> 因此,我们也可以有字符串。 874 00:39:35,530 --> 00:39:39,320 所以,如果你们确实notice--我 知道罗布走到这在演讲 875 00:39:39,320 --> 00:39:43,652 他did--字符串实际上是 字符的只是阵列, 876 00:39:43,652 --> 00:39:44,860 如果你仔细想想,对吧? 877 00:39:44,860 --> 00:39:47,500 字符串是一个名称或 句子或单词,对不对? 878 00:39:47,500 --> 00:39:52,975 >> 如果我要创建一个名为字符串 Andi--只是我的名字,A-N-D-我。 879 00:39:52,975 --> 00:39:55,460 你认为那是只有一个变量。 880 00:39:55,460 --> 00:39:58,630 但实际上,它的分解 成字符的只是一个数组。 881 00:39:58,630 --> 00:40:01,910 因此它有足够的字符 一个存储在数组中的值。 882 00:40:01,910 --> 00:40:05,420 它有n个存储于一个字符 第二索引等等,等等。 883 00:40:05,420 --> 00:40:08,660 >> 因此,在这样的方式,我们 居然有这样的 884 00:40:08,660 --> 00:40:10,970 结构的设置 把我们的字符串。 885 00:40:10,970 --> 00:40:14,660 所以在这里,如果我输入 词“吃” - 这样的字符串字是 886 00:40:14,660 --> 00:40:15,540 得到的字符串。 887 00:40:15,540 --> 00:40:19,260 如果我要输入单词“吃”了 在物理的方式,我的电脑 888 00:40:19,260 --> 00:40:21,870 是存储该字符串在我的记忆中。 889 00:40:21,870 --> 00:40:27,140 >> 如果我想通过运行 和打印的out--所以到我 890 00:40:27,140 --> 00:40:30,890 等于零,请记住,在讲座中,我们 涵盖的东西,就是所谓的strlen, 891 00:40:30,890 --> 00:40:32,990 或字符串的长度。 892 00:40:32,990 --> 00:40:36,520 因为我不实际 知道数组有多大 893 00:40:36,520 --> 00:40:38,210 无论用户的inputting--的 894 00:40:38,210 --> 00:40:40,370 >> 比如,我输入 字“吃,”我知道 895 00:40:40,370 --> 00:40:41,870 这三个字符长,对不对? 896 00:40:41,870 --> 00:40:44,700 所以,我可以把在三有 一切都会好起来的。 897 00:40:44,700 --> 00:40:49,290 但是,如果用户输入的东西 这是一个不同值的数量, 898 00:40:49,290 --> 00:40:52,760 你将不能够真正 知道,当你的程序代码。 899 00:40:52,760 --> 00:40:56,040 >> 让我们处理测试用例的方法 这样的是,我们有一些 900 00:40:56,040 --> 00:41:00,070 所谓strlen的,这仅仅是一个函数 告诉你一个字符串有多长。 901 00:41:00,070 --> 00:41:02,080 所以strlen的字。 902 00:41:02,080 --> 00:41:03,470 我的话是吃的。 903 00:41:03,470 --> 00:41:05,990 n等于字strlen的。 904 00:41:05,990 --> 00:41:08,930 有谁能告诉我这是什么 值实际上是正确的呢? 905 00:41:08,930 --> 00:41:12,550 这是什么ñ代表权 现在,在这个例子中,如果我有吃的吗? 906 00:41:12,550 --> 00:41:13,530 >> 听众:3。 907 00:41:13,530 --> 00:41:14,520 >> ANDI彭:3,正好。 908 00:41:14,520 --> 00:41:18,820 因此,我们必须对于int i等于 零,n等于3,本质上。 909 00:41:18,820 --> 00:41:22,355 并且i要运行 直到它的不足3I ++。 910 00:41:22,355 --> 00:41:24,980 而这将基本上去 通过做同样的事情。 911 00:41:24,980 --> 00:41:26,979 这将打印出 每个值,并给您 912 00:41:26,979 --> 00:41:29,700 E-A-T。它只是表示一个 写它的不同的方式。 913 00:41:29,700 --> 00:41:31,170 这将是非常有益的。 914 00:41:31,170 --> 00:41:31,670 是啊。 915 00:41:31,670 --> 00:41:35,174 听众:什么是推杆的好处 在n等于里面那个strlen的字 916 00:41:35,174 --> 00:41:36,894 循环[听不清]? 917 00:41:36,894 --> 00:41:37,560 ANDI彭:是的。 918 00:41:37,560 --> 00:41:44,880 所以,如果我是用于:说,例如, 如果我这样做,然后 919 00:41:44,880 --> 00:41:51,935 do-- oop--的是,在我的代码,它会 实际上是在做喜欢同样的事情。 920 00:41:51,935 --> 00:41:55,060 然而,这样,大卫解释 它讲座期间,如果有的话你们 921 00:41:55,060 --> 00:41:57,854 请记住,是,由于 人类,作为程序员, 922 00:41:57,854 --> 00:42:00,270 我们真正尝试编写我们 代码,使我们的电脑有 923 00:42:00,270 --> 00:42:04,070 工作尽可能小,所以 我们的代码是非常有效的。 924 00:42:04,070 --> 00:42:06,850 >> 所以,如果我有,有,有什么 会发生在我的for循环 925 00:42:06,850 --> 00:42:10,790 是,我想首先声明一个 变量命名的我将是0。 926 00:42:10,790 --> 00:42:13,350 我要检查一下,哦, 什么是字的strlen的? 927 00:42:13,350 --> 00:42:15,000 哦,strlen的是3。 928 00:42:15,000 --> 00:42:16,191 那么,我不到三? 929 00:42:16,191 --> 00:42:16,690 是的。 930 00:42:16,690 --> 00:42:17,870 我要去运行。 931 00:42:17,870 --> 00:42:21,130 >> 然后将第二次回周围 循环,我要增加我。 932 00:42:21,130 --> 00:42:22,550 我将是1。 933 00:42:22,550 --> 00:42:25,600 而我是要检查,哦, 但什么是字的strlen的? 934 00:42:25,600 --> 00:42:26,839 哦,这三种。 935 00:42:26,839 --> 00:42:29,880 而确实,似乎有种浪费, 每次通过循环运行时, 936 00:42:29,880 --> 00:42:33,340 要检查的功能, 即使字的strlen 937 00:42:33,340 --> 00:42:35,490 实际上从未改变? 938 00:42:35,490 --> 00:42:38,590 >> 因此,它是额外功率的计算机。 939 00:42:38,590 --> 00:42:42,180 当你开始谈论的东西 这是数十亿 940 00:42:42,180 --> 00:42:44,431 与数十亿的地方 长,想象一下你的电脑 941 00:42:44,431 --> 00:42:47,430 不必实际经历和 检查所有的,每一个时间。 942 00:42:47,430 --> 00:42:53,170 这就是为什么,使刚 为求效率, 943 00:42:53,170 --> 00:42:57,620 我们往往只做到这一点, 因为这样一来,我们只 944 00:42:57,620 --> 00:42:59,850 调用函数 一旦在开始的时候, 945 00:42:59,850 --> 00:43:01,766 并且,每一次它 经过这回事 946 00:43:01,766 --> 00:43:03,789 存储值3 在那里,你不 947 00:43:03,789 --> 00:43:05,330 必须不断地检查每一个时间。 948 00:43:05,330 --> 00:43:05,743 是啊。 949 00:43:05,743 --> 00:43:06,409 >> 听众:对不起。 950 00:43:06,409 --> 00:43:09,070 只是[听不清]。 951 00:43:09,070 --> 00:43:13,985 你可以做诠释n等于strlen的放 上面的for循环的外 952 00:43:13,985 --> 00:43:15,364 呢? 953 00:43:15,364 --> 00:43:16,030 ANDI彭:是的。 954 00:43:16,030 --> 00:43:17,100 你可以做到这一点,绝对。 955 00:43:17,100 --> 00:43:19,970 我们有它在这里的原因是 因为for循环工作方式 956 00:43:19,970 --> 00:43:23,500 的是,它被称为 在这个意义上局部变量 957 00:43:23,500 --> 00:43:26,150 这一切你 创建的内部进行循环 958 00:43:26,150 --> 00:43:27,890 只存在内部循环。 959 00:43:27,890 --> 00:43:31,530 >> 所以变量i仅 存在于这些括号内。 960 00:43:31,530 --> 00:43:35,260 n个而这里的变量也 只存在于那些括号。 961 00:43:35,260 --> 00:43:39,350 所以,如果你使用的strlen的 词多次向下跌破, 962 00:43:39,350 --> 00:43:42,230 绝对做到这一点的最好办法 将宣布它的顶部 963 00:43:42,230 --> 00:43:43,563 所以你不必做一次。 964 00:43:43,563 --> 00:43:45,420 是啊。 965 00:43:45,420 --> 00:43:47,670 听众:你为什么有 百分比后,新生产线 966 00:43:47,670 --> 00:43:51,300 看,如果你想要把所有 字母旁边分开? 967 00:43:51,300 --> 00:43:54,140 >> ANDI彭:哦,我想 全部打印出来,每行。 968 00:43:54,140 --> 00:43:54,890 不要紧 969 00:43:54,890 --> 00:43:55,890 是的,这是一个格式。 970 00:43:55,890 --> 00:43:57,181 这是一个很好的问题,但。 971 00:43:57,181 --> 00:43:59,360 是啊,如果我想打印 这一切只有一行, 972 00:43:59,360 --> 00:44:02,731 我也不会在冲刺。 973 00:44:02,731 --> 00:44:03,230 好。 974 00:44:03,230 --> 00:44:06,880 每个人都好? 975 00:44:06,880 --> 00:44:07,500 好。 976 00:44:07,500 --> 00:44:08,000 酷。 977 00:44:08,000 --> 00:44:12,080 978 00:44:12,080 --> 00:44:14,750 >> 所以,我想我已经谈得够多。 979 00:44:14,750 --> 00:44:20,040 你们轮到通过运行 代码,并告诉我什么是错在这里。 980 00:44:20,040 --> 00:44:21,560 哪里的错误? 981 00:44:21,560 --> 00:44:26,920 因此,大家可以看到,我已宣布 字符串类型命名为类新的数组。 982 00:44:26,920 --> 00:44:30,220 而且我已经输入的山姆, 杰斯和金进去。 983 00:44:30,220 --> 00:44:33,400 而我试图打印出 该阵列中的所有元素。 984 00:44:33,400 --> 00:44:36,796 谁能告诉我为什么这个 是要给我的问题? 985 00:44:36,796 --> 00:44:39,320 我给你们10 秒去想这个。 986 00:44:39,320 --> 00:44:55,490 987 00:44:55,490 --> 00:44:56,619 >> 好。 988 00:44:56,619 --> 00:44:57,118 是吗? 989 00:44:57,118 --> 00:45:01,972 >> 听众:是左侧中心 等于3或[听不清]? 990 00:45:01,972 --> 00:45:02,680 ANDI彭:对。 991 00:45:02,680 --> 00:45:06,784 那么有多少次是这其实 通过这个循环运行? 992 00:45:06,784 --> 00:45:07,620 >> 听众:四。 993 00:45:07,620 --> 00:45:08,070 >> ANDI鹏:没错。 994 00:45:08,070 --> 00:45:09,445 这将通过四次。 995 00:45:09,445 --> 00:45:12,250 这将贯穿 于0,1,2,和3中, 996 00:45:12,250 --> 00:45:15,200 因为他们的元素是我 小于或等于3。 997 00:45:15,200 --> 00:45:16,960 它不会停止时,它的2。 998 00:45:16,960 --> 00:45:18,800 这将继续 走,直到它击中3。 999 00:45:18,800 --> 00:45:21,720 正如我们所知,有只有三 在我们实际的数组元素。 1000 00:45:21,720 --> 00:45:27,260 >> 如果我们试图访问的第四个 元件或3的索引, 1001 00:45:27,260 --> 00:45:30,357 你会打的地方 内存中不存在。 1002 00:45:30,357 --> 00:45:31,690 这就是所谓的空终止。 1003 00:45:31,690 --> 00:45:32,856 没有什么是去那里。 1004 00:45:32,856 --> 00:45:35,324 您的计算机不会 很高兴和你在一起。 1005 00:45:35,324 --> 00:45:36,170 是啊。 1006 00:45:36,170 --> 00:45:38,430 有没有人有问题 为什么这是怎么回事? 1007 00:45:38,430 --> 00:45:39,679 这是一个公共区域,以避免。 1008 00:45:39,679 --> 00:45:40,712 是啊。 1009 00:45:40,712 --> 00:45:45,777 >> 听众:难道不是第一次 滑动也有2一串? 1010 00:45:45,777 --> 00:45:46,360 ANDI彭:没有。 1011 00:45:46,360 --> 00:45:49,610 所以基本上,当 你正在做一个数组, 1012 00:45:49,610 --> 00:45:51,540 该支架右 那里,number--所有 1013 00:45:51,540 --> 00:45:53,480 它告诉你是怎么 许多元素我有。 1014 00:45:53,480 --> 00:45:55,840 它实际上没有告诉 我什么指标。 1015 00:45:55,840 --> 00:45:58,760 因此,在这种情况下,我知道我要 与三地书写, 1016 00:45:58,760 --> 00:46:02,690 有三个物理地方 持有任何我想要持有。 1017 00:46:02,690 --> 00:46:04,510 所以这就是为什么数字三是存在的。 1018 00:46:04,510 --> 00:46:06,560 但是,如果我想 实际访问它, 1019 00:46:06,560 --> 00:46:11,220 如果我想说的话,printf的 类托架号码,然后 1020 00:46:11,220 --> 00:46:14,560 你要真正把 有物理索引。 1021 00:46:14,560 --> 00:46:16,330 是啊,好问题。 1022 00:46:16,330 --> 00:46:20,065 >> 听众:所以是物理 指数应该是[听不清]? 1023 00:46:20,065 --> 00:46:20,940 ANDI彭:我很抱歉。 1024 00:46:20,940 --> 00:46:21,500 你能说了一下? 1025 00:46:21,500 --> 00:46:24,208 >> 听众:所以是物理指标 [听不清]每个盒子? 1026 00:46:24,208 --> 00:46:25,260 [听不清]? 1027 00:46:25,260 --> 00:46:26,040 >> ANDI彭:是的。 1028 00:46:26,040 --> 00:46:28,970 所以,我要回到这里。 1029 00:46:28,970 --> 00:46:31,120 想到这里的。 1030 00:46:31,120 --> 00:46:32,820 我们有大小3的阵列。 1031 00:46:32,820 --> 00:46:35,540 有三个地方,比如, 物理占位符在这里。 1032 00:46:35,540 --> 00:46:37,620 但它们命名为0,1和2。 1033 00:46:37,620 --> 00:46:40,700 所以,如果我想访问他们, 我访问它们的方式 1034 00:46:40,700 --> 00:46:43,480 是的printf什么的,我想在这里。 1035 00:46:43,480 --> 00:46:45,485 你将不得不打印 从它的名字, 1036 00:46:45,485 --> 00:46:47,610 因为这样的计算机 知道,哦,我需要看看 1037 00:46:47,610 --> 00:46:51,391 这个数组的第0个指标。 1038 00:46:51,391 --> 00:46:51,890 是啊。 1039 00:46:51,890 --> 00:46:53,306 但它的大小不发生变化。 1040 00:46:53,306 --> 00:46:55,492 的大小是3,而不管 你如何标记他们。 1041 00:46:55,492 --> 00:46:58,321 1042 00:46:58,321 --> 00:46:58,820 好。 1043 00:46:58,820 --> 00:47:01,387 每个人都好? 1044 00:47:01,387 --> 00:47:02,970 听众:所以每次我[听不清]? 1045 00:47:02,970 --> 00:47:06,357 1046 00:47:06,357 --> 00:47:06,940 ANDI彭:OK。 1047 00:47:06,940 --> 00:47:13,270 因此,在这种情况下,我们真的不 进入它现在在课程。 1048 00:47:13,270 --> 00:47:16,760 但是要知道,像我一个string-- 前面说过,一个字符串,本质上是 1049 00:47:16,760 --> 00:47:18,440 字符数组。 1050 00:47:18,440 --> 00:47:21,430 所以,如果我创建一个数组 字符串类型的,我 1051 00:47:21,430 --> 00:47:24,430 有数组的数组 字符,对不对? 1052 00:47:24,430 --> 00:47:27,720 >> 因此,在这种情况下,因为我 有一个字符串数组, 1053 00:47:27,720 --> 00:47:31,340 如果你输入一个很长的话, 仍然只占用一个空格, 1054 00:47:31,340 --> 00:47:33,230 因为这是一个字符串。 1055 00:47:33,230 --> 00:47:37,492 但是,如果你想 该阵列的字符, 1056 00:47:37,492 --> 00:47:40,450 那么这是占用了很多 字符比任何换言之 1057 00:47:40,450 --> 00:47:41,372 是。 1058 00:47:41,372 --> 00:47:42,830 没有真正的,现在重要的。 1059 00:47:42,830 --> 00:47:44,921 但是,这只是一般 它是如何工作的。 1060 00:47:44,921 --> 00:47:49,750 1061 00:47:49,750 --> 00:47:50,560 >> 好。 1062 00:47:50,560 --> 00:47:55,840 因此,这是我就让你做 很多在这学期的课程。 1063 00:47:55,840 --> 00:47:57,500 我需要休息,我的声音。 1064 00:47:57,500 --> 00:47:59,530 你们需要激励自己。 1065 00:47:59,530 --> 00:48:02,300 很多人可能 要睡现在。 1066 00:48:02,300 --> 00:48:05,960 我输入随机问题 在这里,我们为一类,或者你 1067 00:48:05,960 --> 00:48:09,480 与伴侣在你身边会 花几分钟时间讨论 1068 00:48:09,480 --> 00:48:14,980 关于我们如何去解决 或创建一个程序,如这一点。 1069 00:48:14,980 --> 00:48:17,100 >> 所以,现在,我们要 创建program-- 1070 00:48:17,100 --> 00:48:19,560 我们要叫它 upper.c--可以转换 1071 00:48:19,560 --> 00:48:24,787 小写的字到上流 string--大写,对不起。 1072 00:48:24,787 --> 00:48:26,370 词串,对不起,是同义的。 1073 00:48:26,370 --> 00:48:28,370 我要改变他们 意味着同样的事情。 1074 00:48:28,370 --> 00:48:32,270 1075 00:48:32,270 --> 00:48:33,499 >> 是啊。 1076 00:48:33,499 --> 00:48:34,540 就拿一两分钟。 1077 00:48:34,540 --> 00:48:37,130 它并不必须是 用任何语言。 1078 00:48:37,130 --> 00:48:39,890 就在伪代码或 逻辑上我们怎么会连 1079 00:48:39,890 --> 00:48:42,083 去这样做这样一个问题。 1080 00:48:42,083 --> 00:48:42,583 是啊。 1081 00:48:42,583 --> 00:48:49,881 1082 00:48:49,881 --> 00:48:52,780 >> [副会话] 1083 00:48:52,780 --> 00:49:18,680 1084 00:49:18,680 --> 00:49:22,130 >> 我还注意到,你们can-- 我看到那种已经计划。 1085 00:49:22,130 --> 00:49:24,600 我想我的缺乏 演示模式是一个问题。 1086 00:49:24,600 --> 00:49:27,410 但没关系。 1087 00:49:27,410 --> 00:49:30,410 >> [副会话] 1088 00:49:30,410 --> 00:50:03,589 1089 00:50:03,589 --> 00:50:04,380 是的,请,伙计们。 1090 00:50:04,380 --> 00:50:05,400 来拿糖果。 1091 00:50:05,400 --> 00:50:06,372 来拿糖果。 1092 00:50:06,372 --> 00:50:07,698 >> 听众:是的! 1093 00:50:07,698 --> 00:50:09,958 >> [副会话] 1094 00:50:09,958 --> 00:50:16,101 1095 00:50:16,101 --> 00:50:18,100 ANDI彭:另外,是啊, 我就开始扔糖果 1096 00:50:18,100 --> 00:50:20,280 在人谁不回答问题。 1097 00:50:20,280 --> 00:50:22,260 所以,你都应该回答的问题。 1098 00:50:22,260 --> 00:50:24,895 或者,我想,人谁 不回答问题。 1099 00:50:24,895 --> 00:50:26,070 是的,周围的其他方法。 1100 00:50:26,070 --> 00:50:28,570 >> [副会话] 1101 00:50:28,570 --> 00:51:13,399 1102 00:51:13,399 --> 00:51:14,274 听众:[听不清] 1103 00:51:14,274 --> 00:51:17,300 1104 00:51:17,300 --> 00:51:18,340 >> ANDI彭:是的。 1105 00:51:18,340 --> 00:51:19,340 是啊。 1106 00:51:19,340 --> 00:51:22,840 >> [副会话] 1107 00:51:22,840 --> 00:51:40,700 1108 00:51:40,700 --> 00:51:41,590 >> 好吧,伙计们。 1109 00:51:41,590 --> 00:51:44,731 就拿一样,10多秒。 1110 00:51:44,731 --> 00:51:48,210 >> [副会话] 1111 00:51:48,210 --> 00:52:10,600 1112 00:52:10,600 --> 00:52:11,750 >> OK,伙计们。 1113 00:52:11,750 --> 00:52:14,920 因此,我们开始尝试之前, 实际的物理写代码, 1114 00:52:14,920 --> 00:52:20,650 一个好习惯培养的是, 我们希望第一种原因 1115 00:52:20,650 --> 00:52:22,737 从逻辑上我们将如何做到这一点。 1116 00:52:22,737 --> 00:52:24,570 你要确保, 在你身体 1117 00:52:24,570 --> 00:52:27,210 开始尝试编写 在马里奥,你做 1118 00:52:27,210 --> 00:52:28,870 确保你有你的伪代码。 1119 00:52:28,870 --> 00:52:31,235 这是带你通过 你需要创建这样 1120 00:52:31,235 --> 00:52:33,360 即,物理当你 后来编写程序, 1121 00:52:33,360 --> 00:52:36,640 你能够更好地捕捉错误 在你的代码之类的东西。 1122 00:52:36,640 --> 00:52:40,460 >> 所以,我们要刚开始 by--在英语中,伪代码, 1123 00:52:40,460 --> 00:52:43,320 没有人想给 我一个通用的解释 1124 00:52:43,320 --> 00:52:46,250 我们如何会去这样做呢? 1125 00:52:46,250 --> 00:52:48,102 是啊。 1126 00:52:48,102 --> 00:52:49,664 >> 听众:[听不清]。 1127 00:52:49,664 --> 00:52:50,830 ANDI彭:当然,没有后顾之忧。 1128 00:52:50,830 --> 00:52:57,233 听众:你可以问它还是问 有人拿到字符串1--是啊,串, 1129 00:52:57,233 --> 00:52:58,160 接着 - 1130 00:52:58,160 --> 00:52:59,826 >> ANDI彭:是的,所以这是一个良好的开端。 1131 00:52:59,826 --> 00:53:01,972 我将开始打字,对不起,因为你说话。 1132 00:53:01,972 --> 00:53:02,471 So-- 1133 00:53:02,471 --> 00:53:05,698 >> 听众:--the小写 数字是更高的,对不对? 1134 00:53:05,698 --> 00:53:08,519 还是小写字母 有高的数字? 1135 00:53:08,519 --> 00:53:09,310 ANDI鹏:没错。 1136 00:53:09,310 --> 00:53:16,156 听众:那么接下来我们减去 32从什么[听不清]。 1137 00:53:16,156 --> 00:53:28,600 1138 00:53:28,600 --> 00:53:29,870 >> ANDI彭:太好了。 1139 00:53:29,870 --> 00:53:35,020 所以,我们种得一般意义 如何工作这个问题。 1140 00:53:35,020 --> 00:53:40,060 知道那种我们学到 物理方式串 1141 00:53:40,060 --> 00:53:43,320 被存储在存储器, 你是什​​么已经 1142 00:53:43,320 --> 00:53:45,920 知道你要大概 要在你的代码编写 1143 00:53:45,920 --> 00:53:48,288 以移动通过字符串? 1144 00:53:48,288 --> 00:53:49,259 >> 顾客:循环。 1145 00:53:49,259 --> 00:53:50,550 ANDI彭:一种循环,没错。 1146 00:53:50,550 --> 00:53:56,540 1147 00:53:56,540 --> 00:53:57,220 太好了。 1148 00:53:57,220 --> 00:54:00,539 所以,我们种有一个通用的 伪代码写下来 1149 00:54:00,539 --> 00:54:02,330 那种是给 你注意到你如何 1150 00:54:02,330 --> 00:54:03,900 会动一下解决问题。 1151 00:54:03,900 --> 00:54:06,150 现在,你有这个,你 可以参考它以后 1152 00:54:06,150 --> 00:54:08,233 当你试图对 实际上编写代码。 1153 00:54:08,233 --> 00:54:10,240 所以,我们实际上可以去这里。 1154 00:54:10,240 --> 00:54:25,130 而且我有一个调用的函数upper.c-- 那里is--只是一个空白模板 1155 00:54:25,130 --> 00:54:28,510 现在,你们要 帮我找出如何写 1156 00:54:28,510 --> 00:54:30,430 这行代码 - 不是代码行。 1157 00:54:30,430 --> 00:54:32,890 这将是多行代码。 1158 00:54:32,890 --> 00:54:35,710 >> 当启动任何形式 空白PSET的,什么是 1159 00:54:35,710 --> 00:54:37,418 我需要的第一件事 记得吗? 1160 00:54:37,418 --> 00:54:39,290 >> 听众:[听不清]。 1161 00:54:39,290 --> 00:54:41,000 >> ANDI彭:大是的。 1162 00:54:41,000 --> 00:54:41,500 包括。 1163 00:54:41,500 --> 00:54:44,850 1164 00:54:44,850 --> 00:54:47,130 stdio.h中。 1165 00:54:47,130 --> 00:54:49,640 通常情况下,这是一个 最易犯的错误 1166 00:54:49,640 --> 00:54:51,598 将当他们 写作,是,他们将 1167 00:54:51,598 --> 00:54:54,180 忘了包括 他们需要的重要的图书馆。 1168 00:54:54,180 --> 00:54:57,689 所以,如果是上班时间,你就会说: 我不知道为什么我的代码不能正常工作。 1169 00:54:57,689 --> 00:54:59,230 你能告诉我,为什么它不工作? 1170 00:54:59,230 --> 00:55:00,730 我们会说你#包括? 1171 00:55:00,730 --> 00:55:02,520 你应该#包含它。 1172 00:55:02,520 --> 00:55:03,270 好。 1173 00:55:03,270 --> 00:55:07,230 >> 因此,我们已经得到了标准I / O位置。 1174 00:55:07,230 --> 00:55:10,740 这是唯一的图书馆 我们要在这里需要什么? 1175 00:55:10,740 --> 00:55:12,681 还有什么是我们该怎么办? 1176 00:55:12,681 --> 00:55:13,180 抱歉。 1177 00:55:13,180 --> 00:55:14,562 刚才有人尖叫出来? 1178 00:55:14,562 --> 00:55:15,666 >> 听众:[听不清]。 1179 00:55:15,666 --> 00:55:16,666 ANDI彭:你去那里。 1180 00:55:16,666 --> 00:55:20,320 1181 00:55:20,320 --> 00:55:21,440 好。 1182 00:55:21,440 --> 00:55:26,070 以及如何着手开始任何形式 的功能,任何类型的主要功能的 1183 00:55:26,070 --> 00:55:28,760 在我们的计划? 1184 00:55:28,760 --> 00:55:30,020 诠释为主。 1185 00:55:30,020 --> 00:55:34,531 1186 00:55:34,531 --> 00:55:35,030 好。 1187 00:55:35,030 --> 00:55:35,970 我怎么把里面吗? 1188 00:55:35,970 --> 00:55:37,640 什么是你想要做的第一件事情? 1189 00:55:37,640 --> 00:55:39,910 如果我们想获得一个 来自用户的字符串, 1190 00:55:39,910 --> 00:55:43,870 什么是我们将会有 做这一行头? 1191 00:55:43,870 --> 00:55:46,120 对不起,你们只是觉得 自由发言和响亮。 1192 00:55:46,120 --> 00:55:47,123 刚喊出来什么的。 1193 00:55:47,123 --> 00:55:48,772 >> 听众:询问用户? 1194 00:55:48,772 --> 00:55:49,980 ANDI彭:我们怎么做呢? 1195 00:55:49,980 --> 00:55:51,873 Ask--我是要输入“询问用户”? 1196 00:55:51,873 --> 00:55:52,600 >> 听众:printf的。 1197 00:55:52,600 --> 00:55:54,341 >> ANDI彭:OK。 1198 00:55:54,341 --> 00:55:54,840 PRINTF。 1199 00:55:54,840 --> 00:55:57,372 我想要什么的printf? 1200 00:55:57,372 --> 00:55:58,776 >> 听众:在什么类型。 1201 00:55:58,776 --> 00:56:02,760 1202 00:56:02,760 --> 00:56:03,840 >> ANDI彭:这样呢? 1203 00:56:03,840 --> 00:56:05,430 伙计们,假装我是一台电脑。 1204 00:56:05,430 --> 00:56:08,475 物理告诉我的每一步 我需要在这里输入? 1205 00:56:08,475 --> 00:56:09,600 难道我做错了什么? 1206 00:56:09,600 --> 00:56:10,743 我应该已经输入的东西吗? 1207 00:56:10,743 --> 00:56:11,690 >> 听众:你需要引号。 1208 00:56:11,690 --> 00:56:12,380 >> ANDI彭:我需要报价? 1209 00:56:12,380 --> 00:56:12,880 好。 1210 00:56:12,880 --> 00:56:15,520 1211 00:56:15,520 --> 00:56:16,297 好。 1212 00:56:16,297 --> 00:56:17,698 >> 听众:然后,新的生产线。 1213 00:56:17,698 --> 00:56:21,434 1214 00:56:21,434 --> 00:56:22,465 分号。 1215 00:56:22,465 --> 00:56:23,340 ANDI彭:分号? 1216 00:56:23,340 --> 00:56:24,060 好。 1217 00:56:24,060 --> 00:56:24,560 好。 1218 00:56:24,560 --> 00:56:27,060 >> 听众:也许指定 你想在小写? 1219 00:56:27,060 --> 00:56:30,120 1220 00:56:30,120 --> 00:56:31,415 >> ANDI彭:太好了。 1221 00:56:31,415 --> 00:56:33,540 你们笑我 忘了把一个分号。 1222 00:56:33,540 --> 00:56:36,350 我在某处向你保证 在这个类的过程中, 1223 00:56:36,350 --> 00:56:38,260 你会忘了把 分号,和它 1224 00:56:38,260 --> 00:56:41,116 将带你三个小时图 为什么你的代码不能正常工作。 1225 00:56:41,116 --> 00:56:42,240 这是发生在我们所有人。 1226 00:56:42,240 --> 00:56:43,950 它可能会发生在你身上。 1227 00:56:43,950 --> 00:56:46,352 获取使用分号的好习惯。 1228 00:56:46,352 --> 00:56:46,852 好。 1229 00:56:46,852 --> 00:56:49,010 >> 听众:你想 做的反斜线? 1230 00:56:49,010 --> 00:56:50,398 >> ANDI彭:当然。 1231 00:56:50,398 --> 00:56:51,856 你想要做的反斜线? 1232 00:56:51,856 --> 00:56:53,020 >> 听众:是的。 1233 00:56:53,020 --> 00:56:54,330 >> ANDI彭:太好了。 1234 00:56:54,330 --> 00:56:54,830 好。 1235 00:56:54,830 --> 00:56:57,872 我该怎么办? 1236 00:56:57,872 --> 00:56:58,964 >> 听众:获取字符串。 1237 00:56:58,964 --> 00:56:59,880 ANDI彭:获取字符串。 1238 00:56:59,880 --> 00:57:03,080 1239 00:57:03,080 --> 00:57:03,830 所以,我该怎么输入? 1240 00:57:03,830 --> 00:57:04,233 有人? 1241 00:57:04,233 --> 00:57:05,040 >> 听众:的String。 1242 00:57:05,040 --> 00:57:05,873 >> ANDI彭:的String。 1243 00:57:05,873 --> 00:57:07,251 听众:GetString的。 1244 00:57:07,251 --> 00:57:09,000 ANDI鹏:一个人, 你能告诉我在哪里 1245 00:57:09,000 --> 00:57:12,000 此功能的GetString是哪里来的? 1246 00:57:12,000 --> 00:57:13,660 >> 听众:STRING.H。 1247 00:57:13,660 --> 00:57:15,256 >> ANDI彭:STRING.H? 1248 00:57:15,256 --> 00:57:16,715 你认为这是从string.h中? 1249 00:57:16,715 --> 00:57:17,830 >> 听众:[听不清]。 1250 00:57:17,830 --> 00:57:18,830 >> ANDI彭:你去那里。 1251 00:57:18,830 --> 00:57:21,280 这是一个从CS50.h. 1252 00:57:21,280 --> 00:57:24,530 如果你总是困惑于其中 库文件或头文件, 1253 00:57:24,530 --> 00:57:28,450 谷歌从字面上STRING.H, 我会告诉你 1254 00:57:28,450 --> 00:57:30,450 什么是所有的功能 这是string.h中。 1255 00:57:30,450 --> 00:57:31,340 好。 1256 00:57:31,340 --> 00:57:35,210 >> 所以,现在,我已经创建了一个字符串 而我已经提示用户输入它, 1257 00:57:35,210 --> 00:57:38,770 我存储在一个变量 命名为S,我该怎么现在需要做的? 1258 00:57:38,770 --> 00:57:40,652 >> 听众:检查,如果是小写。 1259 00:57:40,652 --> 00:57:41,360 ANDI彭:对不起? 1260 00:57:41,360 --> 00:57:42,545 听众:检查,如果是小写。 1261 00:57:42,545 --> 00:57:44,045 ANDI鹏:好吧,让我们做到这一点。 1262 00:57:44,045 --> 00:57:45,857 我怎么做? 1263 00:57:45,857 --> 00:57:47,940 实际上,为的宗旨 眼下之类的, 1264 00:57:47,940 --> 00:57:50,330 我们只是要 假设一切 1265 00:57:50,330 --> 00:57:52,620 我们投入已经是小写。 1266 00:57:52,620 --> 00:57:55,430 如果你想检查一下,你会 只需添加一个条件语句 1267 00:57:55,430 --> 00:57:59,640 该检查,该贯穿 每一个数组元素 1268 00:57:59,640 --> 00:58:02,540 并检查它是否 一定值之间。 1269 00:58:02,540 --> 00:58:05,627 我忘了是什么数 小写的值都是。 1270 00:58:05,627 --> 00:58:07,210 你可以看看它的ASCII表。 1271 00:58:07,210 --> 00:58:08,800 但是,是的,这是一个非常好的点。 1272 00:58:08,800 --> 00:58:11,758 但是现在,我们只是要 假设所有的字符串,我们输入 1273 00:58:11,758 --> 00:58:13,130 是小写。 1274 00:58:13,130 --> 00:58:13,870 好。 1275 00:58:13,870 --> 00:58:18,069 >> 所以,我怎么会去 这个问题下一个? 1276 00:58:18,069 --> 00:58:18,860 顾客:循环。 1277 00:58:18,860 --> 00:58:19,340 ANDI彭:For循环? 1278 00:58:19,340 --> 00:58:19,839 好。 1279 00:58:19,839 --> 00:58:20,847 告诉我什么类型。 1280 00:58:20,847 --> 00:58:25,230 >> 顾客:INT I等于0。 1281 00:58:25,230 --> 00:58:27,230 >> ANDI彭:OK。 1282 00:58:27,230 --> 00:58:36,350 >> 听众:呵呵,其实,那你 做一个逗号,做N等于strlen的。 1283 00:58:36,350 --> 00:58:38,940 >> ANDI彭:那么重要的事 我认为她在这里发现 1284 00:58:38,940 --> 00:58:42,936 是,我们没得说INT n向第一次,我们这样做。 1285 00:58:42,936 --> 00:58:45,060 要知道,在一个为 当你声明循环, 1286 00:58:45,060 --> 00:58:47,934 你其实并不需要的INT 第二次你做一个变量。 1287 00:58:47,934 --> 00:58:51,202 你可以说ñstrlen的。 1288 00:58:51,202 --> 00:58:52,620 >> 第:受众。 1289 00:58:52,620 --> 00:58:53,510 >> ANDI彭:秒。 1290 00:58:53,510 --> 00:58:54,706 好。 1291 00:58:54,706 --> 00:58:58,370 >> 听众:然后一个分号。 1292 00:58:58,370 --> 00:59:00,130 >> ANDI彭:当然。 1293 00:59:00,130 --> 00:59:04,050 >> 听众:然后[听不清] n的。 1294 00:59:04,050 --> 00:59:07,480 1295 00:59:07,480 --> 00:59:09,460 然后我++。 1296 00:59:09,460 --> 00:59:11,780 >> ANDI彭:太好了。 1297 00:59:11,780 --> 00:59:12,280 好吧。 1298 00:59:12,280 --> 00:59:14,690 我们想要什么内 本作目前循环? 1299 00:59:14,690 --> 00:59:17,820 请记住,如果我们要贯穿 一个串并通过阵列上运行, 1300 00:59:17,820 --> 00:59:19,287 我们要检查的东西在里面。 1301 00:59:19,287 --> 00:59:20,370 什么是我们将需要? 1302 00:59:20,370 --> 00:59:23,070 1303 00:59:23,070 --> 00:59:26,900 这是一种棘手的部分现在。 1304 00:59:26,900 --> 00:59:27,960 任何人都有一个猜测? 1305 00:59:27,960 --> 00:59:34,160 1306 00:59:34,160 --> 00:59:34,690 >> 好。 1307 00:59:34,690 --> 00:59:37,830 因此,首先,我们怎么连上网? 1308 00:59:37,830 --> 00:59:41,610 我们怎么连第一次检查或 访问数组中的元素? 1309 00:59:41,610 --> 00:59:42,920 我们该怎么做呢? 1310 00:59:42,920 --> 00:59:47,120 什么是我们用来做记号? 1311 00:59:47,120 --> 00:59:50,920 这是什么阵的名字叫什么? 1312 00:59:50,920 --> 00:59:52,400 这就是所谓的S,对吧? 1313 00:59:52,400 --> 00:59:54,850 >> 请记住,任何字符串始终是一个数组。 1314 00:59:54,850 --> 00:59:58,210 所以小号支架我,对吧? 1315 00:59:58,210 --> 01:00:01,360 因为,它是当前值 或索引值,我们正在检查。 1316 01:00:01,360 --> 01:00:05,156 而且我们要设置相同 用于:我们希望有一个小写的价值,对不对? 1317 01:00:05,156 --> 01:00:07,530 我们希望把这一lower-- 对不起,我们希望有一个大写字母。 1318 01:00:07,530 --> 01:00:10,014 我们想将小写 值转换为大写。 1319 01:00:10,014 --> 01:00:11,805 所以like--我很抱歉, 你叫什么? 1320 01:00:11,805 --> 01:00:12,580 >> 听众:海蒂。 1321 01:00:12,580 --> 01:00:12,940 >> ANDI彭:对不起? 1322 01:00:12,940 --> 01:00:13,280 >> 听众:海蒂。 1323 01:00:13,280 --> 01:00:13,988 >> ANDI彭:海蒂。 1324 01:00:13,988 --> 01:00:15,850 就像海蒂说, 最初,我们可能 1325 01:00:15,850 --> 01:00:20,330 将需要the--我们 可能将不得不减去 1326 01:00:20,330 --> 01:00:22,630 32无论从任何charc也就是说,对吧? 1327 01:00:22,630 --> 01:00:24,680 因为在ASCII 表,所不同的 1328 01:00:24,680 --> 01:00:27,790 小写字母之间 和大写字母为32。 1329 01:00:27,790 --> 01:00:31,290 所以,当我们这样做,我们可能 将要减去32,对不对? 1330 01:00:31,290 --> 01:00:33,910 >> 所以,我们要做的I。 1331 01:00:33,910 --> 01:00:37,590 1332 01:00:37,590 --> 01:00:41,200 大家是否明白我为什么这样做? 1333 01:00:41,200 --> 01:00:45,760 因为现在,在我们的数组, 我们正在检查第0个指标,对不对? 1334 01:00:45,760 --> 01:00:49,190 和在的第0索引 字符串,这是第一个字符。 1335 01:00:49,190 --> 01:00:51,820 而这个角色,我们要去 假设它是小写。 1336 01:00:51,820 --> 01:00:55,980 如果我们要使它大写,我们 必须减去32从它的价值, 1337 01:00:55,980 --> 01:00:58,620 因为在我们的ASCII 表,这就是我们如何把它 1338 01:00:58,620 --> 01:01:01,600 到下一个相应的 值,这使得它大写。 1339 01:01:01,600 --> 01:01:03,714 大家是否明白了吗? 1340 01:01:03,714 --> 01:01:04,213 是啊。 1341 01:01:04,213 --> 01:01:06,530 >> 听众:你能不能 做一个小写minus-- 1342 01:01:06,530 --> 01:01:08,080 >> ANDI彭:是啊,所以这是 居然真的不错。 1343 01:01:08,080 --> 01:01:10,455 我会回来的 问题,我们这样做之后。 1344 01:01:10,455 --> 01:01:11,060 是啊。 1345 01:01:11,060 --> 01:01:13,940 然后,如果我想 看看这是怎么回事, 1346 01:01:13,940 --> 01:01:16,180 我可能会 要打印,对吧? 1347 01:01:16,180 --> 01:01:19,930 有人告诉我是什么 我想在这里打印。 1348 01:01:19,930 --> 01:01:29,160 >> 听众:printf的百分比 Ç反斜杠[听不清]。 1349 01:01:29,160 --> 01:01:33,570 这是[听不清]的I值。 1350 01:01:33,570 --> 01:01:34,614 >> ANDI彭:■我,对不起? 1351 01:01:34,614 --> 01:01:35,530 听众:[听不清]。 1352 01:01:35,530 --> 01:01:38,550 1353 01:01:38,550 --> 01:01:39,550 ANDI彭:我不知道。 1354 01:01:39,550 --> 01:01:40,600 你怎么看? 1355 01:01:40,600 --> 01:01:44,016 >> 听众:嗯,我wouldn't-- 我想我不会bring-- 1356 01:01:44,016 --> 01:01:46,944 我把它拿出来 在里面,因为[听不清]。 1357 01:01:46,944 --> 01:01:49,726 1358 01:01:49,726 --> 01:01:51,392 ANDI彭:哦,你会做吗? 1359 01:01:51,392 --> 01:01:53,867 听众:是的。 1360 01:01:53,867 --> 01:01:56,700 ANDI彭:让我们离开的方式 是的,为什么我稍后会解释。 1361 01:01:56,700 --> 01:01:58,533 请记住,即使你 有一个占位符, 1362 01:01:58,533 --> 01:02:00,701 你想要把括号它。 1363 01:02:00,701 --> 01:02:01,200 好吧。 1364 01:02:01,200 --> 01:02:04,810 因此,这应该在这里是一个坚实的功能。 1365 01:02:04,810 --> 01:02:06,370 让我们来运行它,看看它是否编译。 1366 01:02:06,370 --> 01:02:08,750 制作上。 1367 01:02:08,750 --> 01:02:09,250 嗯,哦。 1368 01:02:09,250 --> 01:02:12,030 1369 01:02:12,030 --> 01:02:13,340 这看起来并不太好。 1370 01:02:13,340 --> 01:02:14,507 这究竟是为什么? 1371 01:02:14,507 --> 01:02:17,340 对于任何错误,你想要去的 背部,并开始与第一位的, 1372 01:02:17,340 --> 01:02:20,630 因为通常是一个错误的原因 大量的后其他错误。 1373 01:02:20,630 --> 01:02:26,700 在这里,我们看到upper.c:18:25,它告诉 我这个计划命名为upper.c, 1374 01:02:26,700 --> 01:02:33,800 在第18行,错误隐式声明 函数库strlen的类型 1375 01:02:33,800 --> 01:02:36,330 unassigned--胡说,我不知道 在那之后发生了什么事情。 1376 01:02:36,330 --> 01:02:39,990 >> 所有它告诉我现在是 这东西是怎么回事strlen的。 1377 01:02:39,990 --> 01:02:43,520 和计算机的困惑,因为 这就像,我不知道是什么strlen的是? 1378 01:02:43,520 --> 01:02:45,520 什么是可能 告诉你,你错过? 1379 01:02:45,520 --> 01:02:46,490 >> 听众:你错过了[听不清]。 1380 01:02:46,490 --> 01:02:47,630 >> ANDI彭:你说得对。 1381 01:02:47,630 --> 01:02:49,510 没错。 1382 01:02:49,510 --> 01:02:52,140 因此,这是它的 重要的是要确保 1383 01:02:52,140 --> 01:02:56,970 您在使用每个功能的 码为具有正确的标题 1384 01:02:56,970 --> 01:02:59,660 文件的库,要不然 你会得到很多的错误 1385 01:02:59,660 --> 01:03:01,150 和你的代码是不会 要知道这是怎么回事。 1386 01:03:01,150 --> 01:03:03,050 因此,我们要在这里包括string.h中。 1387 01:03:03,050 --> 01:03:06,270 >> 现在,当我们尝试编译上。 1388 01:03:06,270 --> 01:03:08,410 编译正常。 1389 01:03:08,410 --> 01:03:09,960 让我们来运行这个程序。 1390 01:03:09,960 --> 01:03:12,000 因此,输入一些小写。 1391 01:03:12,000 --> 01:03:14,920 你们有什么要键入? 1392 01:03:14,920 --> 01:03:16,546 喊出来的东西。 1393 01:03:16,546 --> 01:03:17,920 好吧,查理只是走了进来。 1394 01:03:17,920 --> 01:03:18,990 我们键入查理的名字。 1395 01:03:18,990 --> 01:03:21,670 1396 01:03:21,670 --> 01:03:22,840 >> 查理小写。 1397 01:03:22,840 --> 01:03:27,742 并希望,有希望,这是 要喊出来,并吐出 1398 01:03:27,742 --> 01:03:28,575 查理大写。 1399 01:03:28,575 --> 01:03:30,830 好极了! 1400 01:03:30,830 --> 01:03:33,430 大家都知道如何 我去着手解决呢? 1401 01:03:33,430 --> 01:03:36,190 的方式,我可以 操作使用整数 1402 01:03:36,190 --> 01:03:39,410 解决的东西, 我想在字符串, 1403 01:03:39,410 --> 01:03:44,390 因为字符和整数能 以同样的方式,因为进行引用 1404 01:03:44,390 --> 01:03:45,540 ASCII码的映射。 1405 01:03:45,540 --> 01:03:52,890 >> 所以回到你的问题,如果我 希望把32个位置,而不是 1406 01:03:52,890 --> 01:03:58,959 大写字母A减去小写一个活脱脱 即,将工作同样为好, 1407 01:03:58,959 --> 01:04:01,750 因为这只是简单的 这两个值之间的差异。 1408 01:04:01,750 --> 01:04:09,570 如果我想使这个again--查理。 1409 01:04:09,570 --> 01:04:10,320 不好了。 1410 01:04:10,320 --> 01:04:11,820 我想我们走错了路,是吗? 1411 01:04:11,820 --> 01:04:13,260 >> 听众:[听不清]小写。 1412 01:04:13,260 --> 01:04:14,260 >> ANDI彭:你去那里。 1413 01:04:14,260 --> 01:04:22,380 1414 01:04:22,380 --> 01:04:22,880 是的。 1415 01:04:22,880 --> 01:04:24,920 进出吐查理。 1416 01:04:24,920 --> 01:04:28,020 所以,要小心 你减去值 1417 01:04:28,020 --> 01:04:30,400 要记住哪一个是 比其它更大。 1418 01:04:30,400 --> 01:04:35,220 例如,在这里我忘了 这小写实际上是 1419 01:04:35,220 --> 01:04:38,540 大于大写字母A.所以,当我 试图减去它们的其他方式 1420 01:04:38,540 --> 01:04:40,600 的时候,我得到了负32。 1421 01:04:40,600 --> 01:04:42,800 而我的电脑很喜欢, 我不知道那是什么。 1422 01:04:42,800 --> 01:04:45,810 这可能只是一些随意 值不是很好。 1423 01:04:45,810 --> 01:04:48,760 所以请确保你 减去在正确的长度 1424 01:04:48,760 --> 01:04:52,831 找到你想要的字符。 1425 01:04:52,831 --> 01:04:53,330 好。 1426 01:04:53,330 --> 01:04:58,550 有没有人困惑于我们如何 走遍写这个功能呢? 1427 01:04:58,550 --> 01:04:59,180 好。 1428 01:04:59,180 --> 01:05:04,830 所以实际上,功能已经 存在于库调用文件ctype.h。 1429 01:05:04,830 --> 01:05:06,417 图书馆的所谓文件ctype.h。 1430 01:05:06,417 --> 01:05:08,500 这个功能其实是 你已经写。 1431 01:05:08,500 --> 01:05:10,820 这就是所谓的要高。 1432 01:05:10,820 --> 01:05:13,027 >> 所以,为便于 这PSET,你会 1433 01:05:13,027 --> 01:05:15,860 找到你真的要使用 包含了很多功能 1434 01:05:15,860 --> 01:05:17,390 内CTYPE的库。 1435 01:05:17,390 --> 01:05:21,040 要上,为了降低,是上,是 lower--这些都是功能 1436 01:05:21,040 --> 01:05:24,914 你将能够非常使用, 很快在自己的代码, 1437 01:05:24,914 --> 01:05:26,080 不正是这样做。 1438 01:05:26,080 --> 01:05:28,941 我们写了如何转换 一个字符串为大写。 1439 01:05:28,941 --> 01:05:31,440 但其实这是代码 是别人写 1440 01:05:31,440 --> 01:05:33,800 并且您可以访问 经由不同的功能。 1441 01:05:33,800 --> 01:05:34,300 是吗? 1442 01:05:34,300 --> 01:05:39,570 >> 听众:所以你刚才复制的在那里 而做到这一点的每一个字母? 1443 01:05:39,570 --> 01:05:42,070 >> ANDI彭:是的,因为我不知道 关心的一个的值。 1444 01:05:42,070 --> 01:05:44,540 我只是关心的差异 他们之间是32,对吧? 1445 01:05:44,540 --> 01:05:48,210 小写之间的差 b和大写B也32。 1446 01:05:48,210 --> 01:05:50,860 和c之间的差 和大写C是永远32。 1447 01:05:50,860 --> 01:05:53,235 >> 我只需要关心 两者之间的差异, 1448 01:05:53,235 --> 01:05:56,666 因为所有的字母 遵循相同的模式,对不对? 1449 01:05:56,666 --> 01:05:58,540 如果我有差异 它们中的一个之间, 1450 01:05:58,540 --> 01:06:01,050 我知道有什么区别 所有的人之间。 1451 01:06:01,050 --> 01:06:01,740 好问题。 1452 01:06:01,740 --> 01:06:04,090 是啊。 1453 01:06:04,090 --> 01:06:06,660 每个人都好? 1454 01:06:06,660 --> 01:06:09,080 好。 1455 01:06:09,080 --> 01:06:09,580 空中接力。 1456 01:06:09,580 --> 01:06:14,380 1457 01:06:14,380 --> 01:06:15,270 >> 好。 1458 01:06:15,270 --> 01:06:20,310 因此,另一种概念,是 会是你非常有用 1459 01:06:20,310 --> 01:06:22,570 继续发展 你的代码是这样的想法 1460 01:06:22,570 --> 01:06:25,430 对创建函数或抽象。 1461 01:06:25,430 --> 01:06:28,479 所以,现在,我们都采取了代数。 1462 01:06:28,479 --> 01:06:31,770 在代数中,你被教导,有 这个奇妙的东西叫做功能 1463 01:06:31,770 --> 01:06:35,300 机,在那里,如果你 输入某种类型数量, 1464 01:06:35,300 --> 01:06:38,720 它贯穿这个美妙的功能 进出弹出不同的输出,对不对? 1465 01:06:38,720 --> 01:06:42,220 在代码中,同样的事情发生 在任何类型的功能。 1466 01:06:42,220 --> 01:06:48,230 >> 所以我可以物理 写在我的我的代码的身体 1467 01:06:48,230 --> 01:06:52,357 实际上做了主要发言 任何代码的身体在做什么。 1468 01:06:52,357 --> 01:06:54,940 但是,这以外,我还可以 写了许多不同的功能 1469 01:06:54,940 --> 01:06:56,320 是做许多不同的事情。 1470 01:06:56,320 --> 01:06:58,570 例如,我们已把 开始使用其中的一些。 1471 01:06:58,570 --> 01:07:00,610 Printf--这是一个 功能别人 1472 01:07:00,610 --> 01:07:02,870 已经写了 我们可以在代码中调用。 1473 01:07:02,870 --> 01:07:05,410 到upper--在这种情况下, upper--是另一个函数 1474 01:07:05,410 --> 01:07:07,330 我们已经写了我们 可以在我们的代码中调用。 1475 01:07:07,330 --> 01:07:09,520 所以我想,为什么 我们甚至有功能呢? 1476 01:07:09,520 --> 01:07:12,100 为什么我们不只是放下它 所有在相同的代码行? 1477 01:07:12,100 --> 01:07:13,730 这很容易让每一个人。 1478 01:07:13,730 --> 01:07:19,200 >> 好了,背后的理由 是,第一个组织的全部。 1479 01:07:19,200 --> 01:07:21,880 这真是烦人会 通过别人的代码 1480 01:07:21,880 --> 01:07:25,110 和一个功能如printf。 1481 01:07:25,110 --> 01:07:28,570 如果你们真正知道什么是 函数printf entailed写, 1482 01:07:28,570 --> 01:07:30,530 它的一样,1000行代码。 1483 01:07:30,530 --> 01:07:32,357 >> 如果每次我需要时间 对printf的东西, 1484 01:07:32,357 --> 01:07:35,440 我不得不写1000行代码, 这将是非常恼人的阅读, 1485 01:07:35,440 --> 01:07:36,290 对? 1486 01:07:36,290 --> 01:07:38,860 这就是为什么我们刚刚 创建这个抽象函数 1487 01:07:38,860 --> 01:07:41,670 我们已经有人 别人写了别的地方。 1488 01:07:41,670 --> 01:07:44,920 而每一次,我们需要使用它的 我们的代码,我们只是说printf的。 1489 01:07:44,920 --> 01:07:48,070 并且,能够使用该功能 别人已经写在我们的代码。 1490 01:07:48,070 --> 01:07:51,020 这使得它更容易 组织上读取的代码。 1491 01:07:51,020 --> 01:07:53,460 >> 其次,它的简化。 1492 01:07:53,460 --> 01:07:56,750 它简化了我们有以下步骤: 拿地解决我们的问题。 1493 01:07:56,750 --> 01:07:59,300 PRINTF,如printf函数, 喜欢上的功能 1494 01:07:59,300 --> 01:08:03,560 是所有的东西,使我们能够 简化了我们的代码下来,以便更容易。 1495 01:08:03,560 --> 01:08:05,830 而最后一件事是可重用性。 1496 01:08:05,830 --> 01:08:08,710 >> 因此,事实上,我们有 一个函数调用的printf 1497 01:08:08,710 --> 01:08:11,990 我们可以调用许多不同的 倍,并允许它可重复使用。 1498 01:08:11,990 --> 01:08:14,980 如果我写的printf, 我只有一次它写。 1499 01:08:14,980 --> 01:08:16,439 它存在仅在该一个位置。 1500 01:08:16,439 --> 01:08:19,890 如果我想再做一次,我会 要复制并粘贴了这一切 1501 01:08:19,890 --> 01:08:21,760 进入代码我的第二个行。 1502 01:08:21,760 --> 01:08:24,880 这就是为什么如果我们创建了一个功能 存在我们的主要之外, 1503 01:08:24,880 --> 01:08:26,880 我们只能呼吁 它并重复使用它时, 1504 01:08:26,880 --> 01:08:29,604 我们需要这样它是一个更容易 我们作为程序来写。 1505 01:08:29,604 --> 01:08:32,220 1506 01:08:32,220 --> 01:08:35,549 >> 所以这样,我们实际上写 一个功能很相似,对不对? 1507 01:08:35,549 --> 01:08:37,590 这是一种第一 比如在我们将 1508 01:08:37,590 --> 01:08:42,830 看到一个风格的函数取 不同于我们INT主要无效。 1509 01:08:42,830 --> 01:08:46,779 在这种情况下,如果我想 写一个名为Q函数,对不对? 1510 01:08:46,779 --> 01:08:49,370 >> 而这里的int值 在所有的告诉我, 1511 01:08:49,370 --> 01:08:51,649 我该怎么想这个 函数返回我吗? 1512 01:08:51,649 --> 01:08:54,484 如果我想立方体的​​整数, 我将要输入。 1513 01:08:54,484 --> 01:08:55,525 这些是参数。 1514 01:08:55,525 --> 01:08:58,490 我要输入一个int类型的值。 1515 01:08:58,490 --> 01:09:01,300 而我要回报 整型另一种类型的值。 1516 01:09:01,300 --> 01:09:03,050 而在这里,你 可以看到,所有的我做 1517 01:09:03,050 --> 01:09:07,300 在多维数据不管我输入 作为输出,并返回它。 1518 01:09:07,300 --> 01:09:10,790 >> 因此,所有这个函数是 需要某种形式的整数。 1519 01:09:10,790 --> 01:09:14,979 它相乘本身两次 这样它立方体中的效果。 1520 01:09:14,979 --> 01:09:17,729 然后返回 无论是输出。 1521 01:09:17,729 --> 01:09:20,540 因此,在这种情况下,它的两行 我们必须编写额外的代码。 1522 01:09:20,540 --> 01:09:22,880 但是,如果我们想叫 在此多次, 1523 01:09:22,880 --> 01:09:26,210 这是一个更容易输入,一个 线对这里的立方体比 1524 01:09:26,210 --> 01:09:28,830 要经过多次。 1525 01:09:28,830 --> 01:09:34,180 >> 这样的方式,基本上任何 格式化为任何类型的功能 1526 01:09:34,180 --> 01:09:36,420 会存在就是喜欢这里。 1527 01:09:36,420 --> 01:09:38,659 因此,我们有函数名。 1528 01:09:38,659 --> 01:09:39,950 在这种情况下,它被称为立方体。 1529 01:09:39,950 --> 01:09:42,033 我们将其命名为立方体,因为 很容易记住。 1530 01:09:42,033 --> 01:09:44,220 你可以将其命名为正方形, 它其实是可以立方。 1531 01:09:44,220 --> 01:09:45,500 无所谓。 1532 01:09:45,500 --> 01:09:48,020 只要你是一个名字 分配你的函数。 1533 01:09:48,020 --> 01:09:51,660 >> 在这里这项权利,INT,是 类型你需要的参数。 1534 01:09:51,660 --> 01:09:54,149 那么,这功能 需要以操作? 1535 01:09:54,149 --> 01:09:55,990 那么,它需要一个输入。 1536 01:09:55,990 --> 01:09:56,704 我把它命名为输入。 1537 01:09:56,704 --> 01:09:58,120 任何你想要的,你可以将其命名为。 1538 01:09:58,120 --> 01:10:00,500 但我需要的东西int类型。 1539 01:10:00,500 --> 01:10:03,730 这将实际执行 无论是在这里里面, 1540 01:10:03,730 --> 01:10:04,990 功能的主体。 1541 01:10:04,990 --> 01:10:07,847 然后返回类型 就在这里,这int-- 1542 01:10:07,847 --> 01:10:09,680 所有它告诉我的是 这个功能是 1543 01:10:09,680 --> 01:10:11,250 要回到我的int。 1544 01:10:11,250 --> 01:10:14,460 因此,要采取一个int,和 它会还给你一个int。 1545 01:10:14,460 --> 01:10:17,750 每个人都明白是怎么 这种格式的作品? 1546 01:10:17,750 --> 01:10:18,250 酷。 1547 01:10:18,250 --> 01:10:24,690 1548 01:10:24,690 --> 01:10:25,740 >> 好。 1549 01:10:25,740 --> 01:10:31,770 所以不要担心,如果这似乎 现在有点抽象的权利。 1550 01:10:31,770 --> 01:10:33,450 这是我们要谈谈。 1551 01:10:33,450 --> 01:10:36,310 我们将深入更深 后来在使用过程中。 1552 01:10:36,310 --> 01:10:41,170 的方式,任何类型的更高级别的 这些东西的工作抽象 1553 01:10:41,170 --> 01:10:43,530 的是,在存储器中,在 您的电脑,一切 1554 01:10:43,530 --> 01:10:47,660 存储在该类型 栈的,我会说。 1555 01:10:47,660 --> 01:10:49,070 >> 所以在那里在顶部。 1556 01:10:49,070 --> 01:10:50,861 我不知道,如果你 你们可以看到,很好。 1557 01:10:50,861 --> 01:10:52,590 我会尝试进行放大。 1558 01:10:52,590 --> 01:10:55,111 此处在顶部,我们 有物理文 1559 01:10:55,111 --> 01:10:57,860 什么样的电脑是interpreting-- 所有的零和那些 1560 01:10:57,860 --> 01:10:59,540 我们的电脑中存在。 1561 01:10:59,540 --> 01:11:03,390 然后,我们已经初始化 数据和未初始化的数据, 1562 01:11:03,390 --> 01:11:05,340 我们所说的全局变量。 1563 01:11:05,340 --> 01:11:08,200 所以存在变数 所有程序 1564 01:11:08,200 --> 01:11:11,815 并在您的整个, 从本质上讲,代码。 1565 01:11:11,815 --> 01:11:13,940 不,如果你们有隐忧 那种对这个不清楚。 1566 01:11:13,940 --> 01:11:16,060 它并不真正的问题现在。 1567 01:11:16,060 --> 01:11:18,680 >> 然后我们有什么 所谓在栈堆。 1568 01:11:18,680 --> 01:11:21,140 想想一摞字面上 就像一摞东西, 1569 01:11:21,140 --> 01:11:23,098 一叠不同 事情被推向顶部 1570 01:11:23,098 --> 01:11:27,870 彼此存储的各种的 你的代码中的变量和语法。 1571 01:11:27,870 --> 01:11:31,460 然后在此间举行的最底层, 我们的环境变量 1572 01:11:31,460 --> 01:11:35,480 你是在执行什么 只是你的小行代码。 1573 01:11:35,480 --> 01:11:40,510 >> 而我们只是要放大 在实际栈的一部分。 1574 01:11:40,510 --> 01:11:43,880 所以在这里,如果我们放大 在栈只是这个领域, 1575 01:11:43,880 --> 01:11:45,140 这是什么样子。 1576 01:11:45,140 --> 01:11:48,590 这实际上是非常重要的 当你们谈论的功能, 1577 01:11:48,590 --> 01:11:52,330 因为公告称, 计算机中的内存 1578 01:11:52,330 --> 01:11:55,600 正存储变量 和功能 1579 01:11:55,600 --> 01:11:58,790 及两者的参数的 功能与您的主要变数 1580 01:11:58,790 --> 01:12:00,190 在不同的地方。 1581 01:12:00,190 --> 01:12:03,390 >> 所以,现在,主要是 实际功能 1582 01:12:03,390 --> 01:12:04,780 您正在执行的代码。 1583 01:12:04,780 --> 01:12:08,050 你在这儿储存它的参数 这里存放局部变量。 1584 01:12:08,050 --> 01:12:12,270 局部变量只是意味着任何变量 存在仅在该功能。 1585 01:12:12,270 --> 01:12:15,610 而在它的上面,你有这样的 单独的函数调用的立方体。 1586 01:12:15,610 --> 01:12:18,240 你有这就是参数 以及那些当地人。 1587 01:12:18,240 --> 01:12:21,540 >> 其原因可以 在这里看到的是什么 1588 01:12:21,540 --> 01:12:25,030 发生在多维数据集需要在 从你的主函数值 1589 01:12:25,030 --> 01:12:27,640 是,实际上它复制了过来。 1590 01:12:27,640 --> 01:12:31,470 所以,如果我想立方 2,并返回8,即2 1591 01:12:31,470 --> 01:12:33,730 实际输入 作为一个参数,它是 1592 01:12:33,730 --> 01:12:37,690 复制,让你有它存在的 在内存中的两个不同的地方。 1593 01:12:37,690 --> 01:12:40,520 而且你必须要非常小心 在回忆这其中的一个 1594 01:12:40,520 --> 01:12:42,520 你实际操作。 1595 01:12:42,520 --> 01:12:47,170 和发生了什么事的例子 这将是非常,非常糟糕 1596 01:12:47,170 --> 01:12:48,050 存在这里。 1597 01:12:48,050 --> 01:12:50,760 1598 01:12:50,760 --> 01:12:58,650 >> 所以在这里,我有,从理论上讲, 一个程序就在这里,一个主要功能 1599 01:12:58,650 --> 01:13:02,180 那我声明了一个int x等于1。 1600 01:13:02,180 --> 01:13:04,505 我声明了另外一个INT y等于2。 1601 01:13:04,505 --> 01:13:06,380 然后我运行它 通过这个功能 1602 01:13:06,380 --> 01:13:09,647 称为交换,在那里我认为 它交换的两个值。 1603 01:13:09,647 --> 01:13:11,480 然后我要去 把它们打印出来,对不对? 1604 01:13:11,480 --> 01:13:13,220 这就是我想这个程序做。 1605 01:13:13,220 --> 01:13:15,180 >> 因此,让我们下来看一看。 1606 01:13:15,180 --> 01:13:18,200 所以,如果我真的写不同 功能,你可以看到, 1607 01:13:18,200 --> 01:13:19,750 我们在这里有我们的主要功能。 1608 01:13:19,750 --> 01:13:22,860 然后,我们有我们的 第二个功能在这里。 1609 01:13:22,860 --> 01:13:24,520 空掉。 1610 01:13:24,520 --> 01:13:27,090 虚空只是意味着它的 不会返回任何东西。 1611 01:13:27,090 --> 01:13:28,930 该函数名 称为交换,它的 1612 01:13:28,930 --> 01:13:33,730 要进两个变量,INT A和 诠释B,从你的[听不清]功能。 1613 01:13:33,730 --> 01:13:39,010 >> 所以基本上在这里,我们 通过x和y成此功能。 1614 01:13:39,010 --> 01:13:40,760 如果我们要 创建this--所以我们要 1615 01:13:40,760 --> 01:13:42,420 创建一个临时的价值,对不对? 1616 01:13:42,420 --> 01:13:43,930 我们将其赋值给一个。 1617 01:13:43,930 --> 01:13:45,388 然后将要现在等于湾 1618 01:13:45,388 --> 01:13:47,660 而B是要回来 那里的温度值, 1619 01:13:47,660 --> 01:13:51,070 其是,因为当 要交换的东西, 1620 01:13:51,070 --> 01:13:52,320 你不能只是喜欢交换他们。 1621 01:13:52,320 --> 01:13:54,360 >> 你必须保持一个出来 在这里,以便它记住 1622 01:13:54,360 --> 01:13:56,485 那是什么,因为一旦 你换一个,你忘了 1623 01:13:56,485 --> 01:13:58,200 这是什么原值是吧? 1624 01:13:58,200 --> 01:14:00,990 因此从理论上讲,这个方案 应该工作,对不对? 1625 01:14:00,990 --> 01:14:03,630 如果我想交换 二,他们应该掉。 1626 01:14:03,630 --> 01:14:05,490 因此,让我们运行它,看看它是否工作。 1627 01:14:05,490 --> 01:14:11,130 1628 01:14:11,130 --> 01:14:16,940 >> 所以当你们可以看到,X 曾经是1和y曾经2。 1629 01:14:16,940 --> 01:14:21,475 如果我把它打印出来, x是仍然1和y为2。 1630 01:14:21,475 --> 01:14:25,970 嗯,这个方案似乎并不被 工作,我希望它的工作方式。 1631 01:14:25,970 --> 01:14:29,950 有没有人想采取射击在 猜测为什么这是怎么回事? 1632 01:14:29,950 --> 01:14:34,430 它做的方式 不同的事情 1633 01:14:34,430 --> 01:14:38,172 存储在存储器不同的地方。 1634 01:14:38,172 --> 01:14:39,377 >> 好。 1635 01:14:39,377 --> 01:14:41,960 所以你们不必担心 太多关于这个现在。 1636 01:14:41,960 --> 01:14:46,610 但是要知道,立方体的地方 变量是a和b, 1637 01:14:46,610 --> 01:14:49,230 因为在这里我们的功能, 我们已经声明a和b 1638 01:14:49,230 --> 01:14:53,570 如存在的变量 在立方体,该功能。 1639 01:14:53,570 --> 01:14:59,490 但正如你所看到的,参数 它采取的是被存放在这里。 1640 01:14:59,490 --> 01:15:01,370 但是,我们并没有真正 返回任何东西。 1641 01:15:01,370 --> 01:15:03,120 我们并没有实际上改变x和y。 1642 01:15:03,120 --> 01:15:04,440 我们只是改变a和b。 1643 01:15:04,440 --> 01:15:08,340 >> 我们抄袭了x和y成 所谓a和b。 1644 01:15:08,340 --> 01:15:11,092 但是,我们从来没有真正 操纵x和y自己。 1645 01:15:11,092 --> 01:15:12,800 是你们看到的 怎么说是怎么回事? 1646 01:15:12,800 --> 01:15:16,140 是,我们已经简单地复制它 结束了,但我们还没有真正保持 1647 01:15:16,140 --> 01:15:18,030 轨道,其中他们是在存储器。 1648 01:15:18,030 --> 01:15:20,127 >> 所以,现在的电脑 期待哦,我已经 1649 01:15:20,127 --> 01:15:21,960 通过运行这个东西 这个可爱的功能。 1650 01:15:21,960 --> 01:15:23,690 但x和y是仍然x和y。 1651 01:15:23,690 --> 01:15:26,240 什么也没有发生 它们,因为这样的事实 1652 01:15:26,240 --> 01:15:28,340 这些参数 和局部变量 1653 01:15:28,340 --> 01:15:30,150 被存储在一个不同的 放置在存储器中。 1654 01:15:30,150 --> 01:15:32,030 而这是一个较高级别的 概念,我们将 1655 01:15:32,030 --> 01:15:34,300 在启动过程中看到以后。 1656 01:15:34,300 --> 01:15:36,950 但是,仅仅知道这是 可能发生的一个问题 1657 01:15:36,950 --> 01:15:41,400 而且我们会想出办法如何 在使用过程中处理这个以后。 1658 01:15:41,400 --> 01:15:41,900 好。 1659 01:15:41,900 --> 01:15:47,750 1660 01:15:47,750 --> 01:15:48,250 好吧。 1661 01:15:48,250 --> 01:15:51,780 所以,最后的概念,我们是 真的要覆盖 1662 01:15:51,780 --> 01:15:53,880 那将是有益的 本周处理器集 1663 01:15:53,880 --> 01:15:56,060 被所谓的 命令行参数。 1664 01:15:56,060 --> 01:16:00,820 所以抢在他的演讲经历 那种简单地对如何将这些工作。 1665 01:16:00,820 --> 01:16:02,770 从本质上讲知道 你写的时候 1666 01:16:02,770 --> 01:16:06,280 就像一个主要功能,当我们 前过去写功能, 1667 01:16:06,280 --> 01:16:07,804 我们有INT主要无效。 1668 01:16:07,804 --> 01:16:10,470 其原因,我们有空隙存在 是因为我们的方案没有 1669 01:16:10,470 --> 01:16:12,520 需要输入值运行,对吧? 1670 01:16:12,520 --> 01:16:16,020 当我跑马里奥,我也没必要 实际上只需键入一些 1671 01:16:16,020 --> 01:16:16,970 当我跑马里奥。 1672 01:16:16,970 --> 01:16:20,170 我可以提示用户以后。 1673 01:16:20,170 --> 01:16:22,450 但是,这不会总是这种情况。 1674 01:16:22,450 --> 01:16:24,980 >> 例如,在本 本周的习题集, 1675 01:16:24,980 --> 01:16:28,365 你要问的是,在 除了运行您的程序, 1676 01:16:28,365 --> 01:16:30,990 你会想要输入 直某些事情,你 1677 01:16:30,990 --> 01:16:32,050 运行程序。 1678 01:16:32,050 --> 01:16:34,720 所以我们这样做的方式被称为 一个命令行参数,这 1679 01:16:34,720 --> 01:16:37,280 就像是一个说法 你可以直接输入 1680 01:16:37,280 --> 01:16:39,260 因为你想运行您的程序。 1681 01:16:39,260 --> 01:16:44,680 >> 因此,符号对于这一点, 这是相当复杂的前瞻性, 1682 01:16:44,680 --> 01:16:47,320 但它真的不是那么 难。因此,INT main-- 1683 01:16:47,320 --> 01:16:48,910 这只是你的主要功能。 1684 01:16:48,910 --> 01:16:52,110 进入ARGC逗号字符串argv的括号内。 1685 01:16:52,110 --> 01:16:56,040 因此,所有这是说的是,这 INT argc--所有这一切告诉你 1686 01:16:56,040 --> 01:17:00,560 的是,这些是数 参数的计算机应该期望。 1687 01:17:00,560 --> 01:17:03,130 >> 所以一件事是真的 重要的是要保持跟踪 1688 01:17:03,130 --> 01:17:07,080 是你的程序的物理名称 计为这些参数之一。 1689 01:17:07,080 --> 01:17:11,080 所以,如果我想有我的计划 运行加上一个额外的命令行 1690 01:17:11,080 --> 01:17:13,310 的说法,我其实 将有两种。 1691 01:17:13,310 --> 01:17:15,080 ARGC实际发生是两个。 1692 01:17:15,080 --> 01:17:18,010 然后串的argv bracket--一切是干什么的, 1693 01:17:18,010 --> 01:17:20,410 它给了我一个 字符串数组是 1694 01:17:20,410 --> 01:17:24,870 将只显示和存储什么 所有这些命令行参数。 1695 01:17:24,870 --> 01:17:34,090 >> 因此,举例来说,如果我想有这样的 程序,./copy INFILE OUTFILE,对不对? 1696 01:17:34,090 --> 01:17:37,330 这只是一个典型的Linux命令。 1697 01:17:37,330 --> 01:17:38,830 究竟是ARGC? 1698 01:17:38,830 --> 01:17:41,320 多少个命令行参数 有没有真正在这? 1699 01:17:41,320 --> 01:17:45,130 所有这一切确实是做的一个副本 一个文件的名称的infile的 1700 01:17:45,130 --> 01:17:47,070 它拷贝到 另一个文件,对不对? 1701 01:17:47,070 --> 01:17:48,700 这是这一切都在做什么。 1702 01:17:48,700 --> 01:17:53,080 正如你所看到的,我做的在一行 而不实际需要的程序。 1703 01:17:53,080 --> 01:17:55,380 >> 什么是我们在这种情况下ARGC? 1704 01:17:55,380 --> 01:17:58,968 多少个参数我们有吗? 1705 01:17:58,968 --> 01:17:59,634 听众:三? 1706 01:17:59,634 --> 01:18:01,200 ANDI彭:我们有三个,正好。 1707 01:18:01,200 --> 01:18:05,030 所以这是非常直观的 只是觉得它只是 1708 01:18:05,030 --> 01:18:06,290 在INFILE和OUTFILE。 1709 01:18:06,290 --> 01:18:10,190 但是要知道,的物理名称 计划你运行计为一个。 1710 01:18:10,190 --> 01:18:13,220 所以在这种情况下,的argc实际上是三种。 1711 01:18:13,220 --> 01:18:15,860 怎么样,是什么argv的0? 1712 01:18:15,860 --> 01:18:18,180 请记住,所有的 命令行参数 1713 01:18:18,180 --> 01:18:20,500 存储在一个字符串数组。 1714 01:18:20,500 --> 01:18:24,140 所以,如果我尝试访问它,有什么 将argv的支架0给我? 1715 01:18:24,140 --> 01:18:25,364 >> 听众:[听不清]。 1716 01:18:25,364 --> 01:18:26,155 ANDI鹏:没错。 1717 01:18:26,155 --> 01:18:28,550 它会给我点 斜线副本,因为这是 1718 01:18:28,550 --> 01:18:31,070 第0元件,所述 我的数组的第一个元素。 1719 01:18:31,070 --> 01:18:33,236 那么argv的1? 1720 01:18:33,236 --> 01:18:33,945 >> 听众:INFILE。 1721 01:18:33,945 --> 01:18:35,070 ANDI彭:INFILE,没错。 1722 01:18:35,070 --> 01:18:36,272 怎么样的argv 2? 1723 01:18:36,272 --> 01:18:37,022 听众:OUTFILE。 1724 01:18:37,022 --> 01:18:38,190 ANDI彭:OUTFILE。 1725 01:18:38,190 --> 01:18:39,290 现在,这是一个有点棘手。 1726 01:18:39,290 --> 01:18:42,630 你们有什么想的argv 3将是给我 1727 01:18:42,630 --> 01:18:45,522 如果我试图打印出来? 1728 01:18:45,522 --> 01:18:48,260 >> 听众:[听不清]? 1729 01:18:48,260 --> 01:18:50,164 >> ANDI彭:你有一只手吗? 1730 01:18:50,164 --> 01:18:50,663 是啊。 1731 01:18:50,663 --> 01:18:51,550 >> 听众:一个选择。 1732 01:18:51,550 --> 01:18:52,341 >> ANDI鹏:没错。 1733 01:18:52,341 --> 01:18:55,440 所以请记住讲座中,我们 有在比赛的东西到底 1734 01:18:55,440 --> 01:18:56,640 所谓空终结者? 1735 01:18:56,640 --> 01:18:58,890 我们将进入这也 进一步在上课。 1736 01:18:58,890 --> 01:19:02,472 但是要知道,在符号, 顺便你的电脑 1737 01:19:02,472 --> 01:19:04,430 知道它的结束 阵列的是,它 1738 01:19:04,430 --> 01:19:07,310 把一种叫做空 终止或破折号为零。 1739 01:19:07,310 --> 01:19:12,047 >> 所以,如果您尝试访问ARGV 3, 你会打这个破折号0。 1740 01:19:12,047 --> 01:19:13,630 这更是一个很难回答的问题。 1741 01:19:13,630 --> 01:19:17,020 那么argv的4? 1742 01:19:17,020 --> 01:19:20,920 因此,这是过去的空终结, 过去我们的数组的边界。 1743 01:19:20,920 --> 01:19:24,380 你认为是要 发生在我们试图做到这一点? 1744 01:19:24,380 --> 01:19:25,842 >> 听众:[听不清]? 1745 01:19:25,842 --> 01:19:26,550 ANDI彭:对不起? 1746 01:19:26,550 --> 01:19:28,025 都说有点响? 1747 01:19:28,025 --> 01:19:29,086 >> 听众:[听不清]。 1748 01:19:29,086 --> 01:19:29,710 ANDI彭:是的。 1749 01:19:29,710 --> 01:19:32,420 也就是说的名称 区域中,您将最有可能得到的。 1750 01:19:32,420 --> 01:19:36,610 但是要知道,argv的4-- 它允许您访问 1751 01:19:36,610 --> 01:19:38,610 在您的计算机的地方 记忆,你真的 1752 01:19:38,610 --> 01:19:41,650 不应该是感动,因为 现在你知道什么是argv的是。 1753 01:19:41,650 --> 01:19:46,220 你知道它的大小为3的数组 有网点拷贝,INFILE和OUTFILE。 1754 01:19:46,220 --> 01:19:50,200 >> 如果你尝试至今点到为止 你是过去的空结束, 1755 01:19:50,200 --> 01:19:53,050 你的计算机有可能 argv中4存放的东西。 1756 01:19:53,050 --> 01:19:55,790 而你真的不应该 允许访问到argv的4, 1757 01:19:55,790 --> 01:19:58,130 因为你有一个文件 橱柜,你只能是 1758 01:19:58,130 --> 01:19:59,790 允许访问这三个货架。 1759 01:19:59,790 --> 01:20:02,870 但是,如果你试图达到的方式超越 在那里你被允许的架子, 1760 01:20:02,870 --> 01:20:04,930 你要开始​​搞乱 在计算机的内存中其他的东西。 1761 01:20:04,930 --> 01:20:06,690 这将是非常糟糕。 1762 01:20:06,690 --> 01:20:07,440 所以只要知道这一点。 1763 01:20:07,440 --> 01:20:10,370 要非常小心,你 不只是随机启动 1764 01:20:10,370 --> 01:20:14,772 在数组访问元素 是不是你想要的创建。 1765 01:20:14,772 --> 01:20:17,114 是的。 1766 01:20:17,114 --> 01:20:18,430 >> 好。 1767 01:20:18,430 --> 01:20:26,360 所以,我们要做的另一 这里终端的例子。 1768 01:20:26,360 --> 01:20:27,300 好。 1769 01:20:27,300 --> 01:20:29,900 所以罗布迅速讲座 前些天去 1770 01:20:29,900 --> 01:20:35,040 通过这个例子,在那里,他 有INT主要INT ARGC字符串的argv 1771 01:20:35,040 --> 01:20:39,090 括号,这是告诉我,我 将有命令行参数。 1772 01:20:39,090 --> 01:20:41,860 >> 他,如果ARGC等于 等于2--记得, 1773 01:20:41,860 --> 01:20:45,070 等于等于装置的比较。 1774 01:20:45,070 --> 01:20:47,980 如果它等于2,那么我 要打印你好, 1775 01:20:47,980 --> 01:20:51,190 无论第一 数组的元素是。 1776 01:20:51,190 --> 01:20:54,100 否则打印的hello world。 1777 01:20:54,100 --> 01:20:56,300 这是什么打算 发生本质? 1778 01:20:56,300 --> 01:21:00,570 可有人只是解释 英语这是什么程序在做什么? 1779 01:21:00,570 --> 01:21:01,272 是啊。 1780 01:21:01,272 --> 01:21:08,160 >> 听众:如果有人键入命令 并表示,他们的名字和姓氏, 1781 01:21:08,160 --> 01:21:12,096 它不只是打印 第一个说,你好, 1782 01:21:12,096 --> 01:21:14,090 无论你的第一个名字是。 1783 01:21:14,090 --> 01:21:15,410 >> ANDI彭:好吧,让我们来运行它。 1784 01:21:15,410 --> 01:21:22,470 因此,举例来说,如果我做 这个文件让你好你好用于: 1785 01:21:22,470 --> 01:21:24,500 用于:你有什么要我输入? 1786 01:21:24,500 --> 01:21:25,900 >> 听众:姓氏和名字。 1787 01:21:25,900 --> 01:21:27,280 >> ANDI彭:姓氏和名字? 1788 01:21:27,280 --> 01:21:28,180 空间? 1789 01:21:28,180 --> 01:21:29,690 >> 听众:是的。 1790 01:21:29,690 --> 01:21:33,490 >> ANDI彭:谁能告诉 我现在,什么是ARGC? 1791 01:21:33,490 --> 01:21:35,630 只是在那里? 1792 01:21:35,630 --> 01:21:36,290 哎呀,对不起。 1793 01:21:36,290 --> 01:21:37,920 让我回去。 1794 01:21:37,920 --> 01:21:40,740 多少个命令行参数 are--你们真的不能看。 1795 01:21:40,740 --> 01:21:43,760 但我会尝试进行放大。 1796 01:21:43,760 --> 01:21:44,290 我尝试着。 1797 01:21:44,290 --> 01:21:45,414 是啊,有三个,对吗? 1798 01:21:45,414 --> 01:21:48,750 这点斜线你好, 这是安迪,这是鹏。 1799 01:21:48,750 --> 01:21:51,870 >> 那么,你们认为这 程序将被打印出来? 1800 01:21:51,870 --> 01:21:55,550 1801 01:21:55,550 --> 01:21:56,060 呵呵。 1802 01:21:56,060 --> 01:21:57,120 噢对不起。 1803 01:21:57,120 --> 01:21:57,810 错误的名称。 1804 01:21:57,810 --> 01:22:03,630 1805 01:22:03,630 --> 01:22:06,130 它打印出来,你好世界。 1806 01:22:06,130 --> 01:22:09,603 有谁不想解释 为什么会是怎么回事? 1807 01:22:09,603 --> 01:22:10,103 是吗? 1808 01:22:10,103 --> 01:22:11,019 >> 听众:[听不清]。 1809 01:22:11,019 --> 01:22:14,439 1810 01:22:14,439 --> 01:22:15,230 ANDI鹏:没错。 1811 01:22:15,230 --> 01:22:19,940 所以在这里,是有条件的 是,如果的argc等于等于2。 1812 01:22:19,940 --> 01:22:23,650 因此只有在的情况下有 两个命令行参数。 1813 01:22:23,650 --> 01:22:25,850 然后我会打印, 你好,不管它是什么。 1814 01:22:25,850 --> 01:22:28,210 但其他人,我要 仅打印,你好世界。 1815 01:22:28,210 --> 01:22:30,040 因此,没有人想要 给我一个例子 1816 01:22:30,040 --> 01:22:35,050 如何我将能够实际 得到它打印的argv 1的价值? 1817 01:22:35,050 --> 01:22:38,600 >> 什么我都必须输入吗? 1818 01:22:38,600 --> 01:22:39,840 只有一件事,对不对? 1819 01:22:39,840 --> 01:22:42,900 因为点招呼已经 数作为第一个参数。 1820 01:22:42,900 --> 01:22:43,930 我只有一个。 1821 01:22:43,930 --> 01:22:46,470 因此,点你好,如果我只是做安迪。 1822 01:22:46,470 --> 01:22:47,270 你好,安迪。 1823 01:22:47,270 --> 01:22:49,186 大家是否明白 为什么会是怎么回事? 1824 01:22:49,186 --> 01:22:49,602 是啊。 1825 01:22:49,602 --> 01:22:52,500 >> 听众:所以之间的空间 命令line--是[听不清]? 1826 01:22:52,500 --> 01:22:56,247 1827 01:22:56,247 --> 01:22:56,830 ANDI彭:没有。 1828 01:22:56,830 --> 01:23:03,810 因此,在一个命令行的空间 的说法,X,告诉你的电脑 1829 01:23:03,810 --> 01:23:06,820 这是一个新的字符串的开始。 1830 01:23:06,820 --> 01:23:11,130 因此字符串的argv这里 - 它的商店 所有的命令行参数 1831 01:23:11,130 --> 01:23:13,110 在字符串。 1832 01:23:13,110 --> 01:23:17,420 因此在命令行中的空间 argument--所有这些都告诉你, 1833 01:23:17,420 --> 01:23:21,030 这是在一个字符串的末尾 它的时间移动到另一个。 1834 01:23:21,030 --> 01:23:21,990 >> 是啊。 1835 01:23:21,990 --> 01:23:23,530 这是非常重要的 您PSET,因为你 1836 01:23:23,530 --> 01:23:24,613 将要测试这些。 1837 01:23:24,613 --> 01:23:29,300 因此,没有人有 在这个问题吗? 1838 01:23:29,300 --> 01:23:30,016 嗯不错。 1839 01:23:30,016 --> 01:23:30,515 是吗? 1840 01:23:30,515 --> 01:23:35,008 >> 听众:所以你会原因 把整型参数计算的,而不是 1841 01:23:35,008 --> 01:23:40,059 的[听不清]会当你想 键入其他信息 1842 01:23:40,059 --> 01:23:41,030 [听不清]? 1843 01:23:41,030 --> 01:23:42,090 >> ANDI彭:是的,没错。 1844 01:23:42,090 --> 01:23:45,370 有些程序会要求你 输入命令行参数 1845 01:23:45,370 --> 01:23:47,732 它传递中并使用该。 1846 01:23:47,732 --> 01:23:49,035 是啊。 1847 01:23:49,035 --> 01:23:50,410 听众:那么,如果[听不清]? 1848 01:23:50,410 --> 01:23:55,440 1849 01:23:55,440 --> 01:23:58,870 >> ANDI彭:嗯,我有什么 然后改变我的计划? 1850 01:23:58,870 --> 01:23:59,870 >> 听众:刚才3。 1851 01:23:59,870 --> 01:24:12,460 1852 01:24:12,460 --> 01:24:15,020 >> ANDI彭:这是为什么呢 发生的事情,你觉得呢? 1853 01:24:15,020 --> 01:24:18,940 >> 听众:因为[听不清]。 1854 01:24:18,940 --> 01:24:22,370 >> 听众:你得 将其更改为2 [听不清]。 1855 01:24:22,370 --> 01:24:23,484 >> 听众:1和2。 1856 01:24:23,484 --> 01:24:24,650 ANDI彭:1和2,完全吻合。 1857 01:24:24,650 --> 01:24:29,150 因此,在这种情况下,你可能 想要有两个printf的statements-- 1858 01:24:29,150 --> 01:24:32,601 一个印刷的argv 1 在一个印刷的argv 2。 1859 01:24:32,601 --> 01:24:33,100 这里。 1860 01:24:33,100 --> 01:24:34,516 其实我可以做真正的快。 1861 01:24:34,516 --> 01:24:46,720 1862 01:24:46,720 --> 01:24:47,320 你去那里。 1863 01:24:47,320 --> 01:24:48,287 呵呵。 1864 01:24:48,287 --> 01:24:49,370 不太你想要的。 1865 01:24:49,370 --> 01:24:52,590 但是,如果你们更动 格式化,它就会出来。 1866 01:24:52,590 --> 01:24:54,981 是啊。 1867 01:24:54,981 --> 01:24:55,480 酷。 1868 01:24:55,480 --> 01:24:57,670 我知道我们有点短准时。 1869 01:24:57,670 --> 01:25:02,469 但我只是要迅速花 几分钟经历helpful-- 1870 01:25:02,469 --> 01:25:03,760 听众:你有两分钟。 1871 01:25:03,760 --> 01:25:05,010 ANDI彭:我有两分钟? 1872 01:25:05,010 --> 01:25:06,340 谢谢。 1873 01:25:06,340 --> 01:25:09,180 一些快速PSET技巧。 1874 01:25:09,180 --> 01:25:13,100 因此,对于这个pset的,我强烈建议, 就像我说的,每个人都读了规范。 1875 01:25:13,100 --> 01:25:16,804 你会被写入三种programs-- 1 所谓initials.c,一个叫caesar.c, 1876 01:25:16,804 --> 01:25:17,720 一个叫vigenere.c。 1877 01:25:17,720 --> 01:25:20,465 1878 01:25:20,465 --> 01:25:22,340 一些重要的提示, 你们真的想 1879 01:25:22,340 --> 01:25:25,040 保持mind--所以 有这个功能 1880 01:25:25,040 --> 01:25:27,770 所谓atoi--我想说,一个三河。 1881 01:25:27,770 --> 01:25:29,520 目前还不清楚是否这就是 其实你怎么说。 1882 01:25:29,520 --> 01:25:32,510 但是,所有它做,它的输入。 1883 01:25:32,510 --> 01:25:34,320 它转换成一个字符串为int。 1884 01:25:34,320 --> 01:25:37,490 因此,一个代表ASCII到我的整数。 1885 01:25:37,490 --> 01:25:40,310 它只是将ASCII 值整数值。 1886 01:25:40,310 --> 01:25:44,510 所以请记住ARGV,数组,其存储 所有的命令行arguments-- 1887 01:25:44,510 --> 01:25:46,300 这其中所有的存储为字符串。 1888 01:25:46,300 --> 01:25:50,010 所以,如果你想成为能够 具有其中的一个成为一个整数, 1889 01:25:50,010 --> 01:25:52,750 你将有 在这里使用这个值。 1890 01:25:52,750 --> 01:25:56,690 >> 模,就像我们盖 今天早些时候类, 1891 01:25:56,690 --> 01:25:59,550 让你拥有 其余的不管你有。 1892 01:25:59,550 --> 01:26:03,620 因此,如果我们真的,真的 大量的凯撒, 1893 01:26:03,620 --> 01:26:06,117 如果我们有结束 中的Vigenere的字符串? 1894 01:26:06,117 --> 01:26:08,450 你如何将能够 吃出环绕? 1895 01:26:08,450 --> 01:26:11,330 如果我打Z和我想 它返回一个, 1896 01:26:11,330 --> 01:26:13,650 我应该如何获得 那环绕? 1897 01:26:13,650 --> 01:26:15,960 可能需要使用 模在那里的地方。 1898 01:26:15,960 --> 01:26:19,190 >> 其次,四处浏览 您的图书馆。文件ctype.h。 1899 01:26:19,190 --> 01:26:20,680 这是一个新的图书馆,我们有。 1900 01:26:20,680 --> 01:26:25,270 你会发现很多非常,非常 有用functions-- isupper,islower判断, 1901 01:26:25,270 --> 01:26:27,681 TOUPPER,tolower的,因而isalpha,等等。 1902 01:26:27,681 --> 01:26:30,680 所有的功能,这将是非常有用的 当你试图弄清楚, 1903 01:26:30,680 --> 01:26:33,780 这种性格小写字母? 1904 01:26:33,780 --> 01:26:35,730 如何转换这种 字符串大写? 1905 01:26:35,730 --> 01:26:38,146 所有这些都将是非常, 非常有帮助您PSET。 1906 01:26:38,146 --> 01:26:42,720 1907 01:26:42,720 --> 01:26:45,500 好。 1908 01:26:45,500 --> 01:26:49,644 >> 今晚是8:00上班时间到 明天在TEAL教室11:00 1909 01:26:49,644 --> 01:26:51,310 以及周三和周四晚上。 1910 01:26:51,310 --> 01:26:53,280 办公时间是公共资源。 1911 01:26:53,280 --> 01:26:56,180 强烈建议你们 所有马上开始, 1912 01:26:56,180 --> 01:27:00,490 因为你不希望是, 孩子谁周四晚有问题 1913 01:27:00,490 --> 01:27:03,870 提交您的PSET并 就像,我不知道该怎么办。 1914 01:27:03,870 --> 01:27:05,870 我开始,我完了,我提交。 1915 01:27:05,870 --> 01:27:09,737 试着给自己一些空间, 因为在代码中的问题总是会发生。 1916 01:27:09,737 --> 01:27:11,570 你要确保 你给自己 1917 01:27:11,570 --> 01:27:14,810 了大量的时间,以便能够 完成pset中。 1918 01:27:14,810 --> 01:27:15,310 酷。 1919 01:27:15,310 --> 01:27:16,720 我会在这里流连。 1920 01:27:16,720 --> 01:27:18,226 >> 听众:这是网上了吗? 1921 01:27:18,226 --> 01:27:20,850 ANDI彭:我不知道这是否是 在线已经,但它会。 1922 01:27:20,850 --> 01:27:23,500 我会在这里流连,如果任何人 有任何问题了。 1923 01:27:23,500 --> 01:27:25,390 感谢你的到来。 1924 01:27:25,390 --> 01:27:27,105