1 00:00:00,000 --> 00:00:02,742 >> [Música tocando] 2 00:00:02,742 --> 00:00:05,030 3 00:00:05,030 --> 00:00:09,090 >> ANDI Pengo: Esta é CS50, e Benvido a semana dous de sección. 4 00:00:09,090 --> 00:00:11,740 Isto é, de feito, mentres semana dous dos nosos class-- de feito, 5 00:00:11,740 --> 00:00:14,550 a primeira semana tivemos sección. 6 00:00:14,550 --> 00:00:18,897 Concerto de mans, como moitos de vostedes todos veu a sección de super a semana pasada? 7 00:00:18,897 --> 00:00:19,480 OK, iso é OK. 8 00:00:19,480 --> 00:00:20,020 Está ben. 9 00:00:20,020 --> 00:00:23,110 Cantos de vostedes viron Super sección a semana pasada? 10 00:00:23,110 --> 00:00:23,610 Aceptar. 11 00:00:23,610 --> 00:00:25,702 E vostedes fixeron ben no problema definir un? 12 00:00:25,702 --> 00:00:28,660 Entón, eu estou indo tomalo que temos unha banda de nenos realmente intelixentes 13 00:00:28,660 --> 00:00:32,310 nesta clase e as cousas van estar ben. 14 00:00:32,310 --> 00:00:33,180 Aceptar. 15 00:00:33,180 --> 00:00:33,980 Entón first-- 16 00:00:33,980 --> 00:00:37,900 17 00:00:37,900 --> 00:00:41,090 >> En primeiro lugar, nós só estamos indo a brevemente atravese a axenda para hoxe. 18 00:00:41,090 --> 00:00:42,700 Imos falar sobre a loxística do curso. 19 00:00:42,700 --> 00:00:45,480 Moitos de vostedes probablemente ten dúbidas sobre 20 00:00:45,480 --> 00:00:46,920 como as cousas funcionan neste curso. 21 00:00:46,920 --> 00:00:47,897 Imos respostas las. 22 00:00:47,897 --> 00:00:49,730 Nós imos brevemente pasar por riba de loops en caso 23 00:00:49,730 --> 00:00:51,410 algún de vós perdeu sección de super. 24 00:00:51,410 --> 00:00:53,240 Imos falar sobre o mapeamento de ASCII. 25 00:00:53,240 --> 00:00:56,180 Falaremos sobre matrices, funcións, argumentos de liña de comandos. 26 00:00:56,180 --> 00:01:00,210 E, finalmente, o que vostedes probablemente todos realmente quero estar aquí para aprender sobre, 27 00:01:00,210 --> 00:01:01,270 é o seu pset2. 28 00:01:01,270 --> 00:01:04,209 Nós imos ter algúns trucos interesantes e consellos para como facelo. 29 00:01:04,209 --> 00:01:07,910 30 00:01:07,910 --> 00:01:08,690 >> Aceptar. 31 00:01:08,690 --> 00:01:11,450 Ademais, en segundo lugar, temos lotes de doces aquí. 32 00:01:11,450 --> 00:01:13,583 Quen gusta de doces, só chegar aquí. 33 00:01:13,583 --> 00:01:14,430 Tome un pouco. 34 00:01:14,430 --> 00:01:15,100 Eu teño unha morea. 35 00:01:15,100 --> 00:01:16,390 Temos unha tonelada na oficina. 36 00:01:16,390 --> 00:01:18,230 Eu realmente non quero para comer doces ao longo do día. 37 00:01:18,230 --> 00:01:20,300 Vostedes deben comer todos os doces, porque o trouxo aquí para vós. 38 00:01:20,300 --> 00:01:20,990 Basta comer doces. 39 00:01:20,990 --> 00:01:24,080 Haberá doces cada sección. 40 00:01:24,080 --> 00:01:25,330 >> Entón, primeiro, quen son eu? 41 00:01:25,330 --> 00:01:27,080 O meu nome é Andi Pengo. 42 00:01:27,080 --> 00:01:30,270 Eu son o xefe de TA CS50 aquí en Yale. 43 00:01:30,270 --> 00:01:32,540 E ademais que, tamén eu me ser-- 44 00:01:32,540 --> 00:01:35,600 se alguén como-- súa carreira amigo, o seu ombreiro para chorar. 45 00:01:35,600 --> 00:01:39,140 Se a noite antes do seu debido pset, non ten idea do que está a suceder, 46 00:01:39,140 --> 00:01:40,080 hit me up. 47 00:01:40,080 --> 00:01:42,770 Nós imos lamentar xuntos, etcétera. 48 00:01:42,770 --> 00:01:46,100 Só sei que eu estou aquí como un recurso para ti como a liña de fronte 49 00:01:46,100 --> 00:01:51,830 para axudar a descubrir como caras para resolver problemas en CS50 e alén. 50 00:01:51,830 --> 00:01:54,590 >> Meu correo é andi.peng@yale.edu. 51 00:01:54,590 --> 00:01:58,390 Eu tamén vou mandar un individuo enviar correo-e co meu número de teléfono nel 52 00:01:58,390 --> 00:02:01,860 de xeito que non todo o mundo no Internet poden ver o meu número de teléfono. 53 00:02:01,860 --> 00:02:03,640 Sinto-se libre para me conectar en calquera momento. 54 00:02:03,640 --> 00:02:07,510 Serio, o teléfono é xeralmente ligadas a miña man. 55 00:02:07,510 --> 00:02:10,240 Non podo responder nuns minutos. 56 00:02:10,240 --> 00:02:11,984 Podo non responder en poucas horas. 57 00:02:11,984 --> 00:02:14,400 Pero podo garantir-lle, se me e-mail, se me chamar, 58 00:02:14,400 --> 00:02:17,404 texto min, vou responder no prazo de 24 horas. 59 00:02:17,404 --> 00:02:19,820 Moitas veces, eu vou responder antes que, porque eu entendo 60 00:02:19,820 --> 00:02:23,900 que todo o mundo ten algúns problemas, e quere que as súas respostas 61 00:02:23,900 --> 00:02:26,110 a ser contestada moi rapidamente. 62 00:02:26,110 --> 00:02:28,945 >> Con todo, se chamar me 30 minutos antes 63 00:02:28,945 --> 00:02:31,570 que peza que é debido xoves noite-- ser como, Andi, me axude, 64 00:02:31,570 --> 00:02:35,380 Eu non podo dar started-- vostede que ombreiro para chorar. 65 00:02:35,380 --> 00:02:41,520 Pero pode ser hora de pensar en como non facelo a próxima vez. 66 00:02:41,520 --> 00:02:44,040 Aceptar. 67 00:02:44,040 --> 00:02:44,944 Oops. 68 00:02:44,944 --> 00:02:45,850 ¿Como volver? 69 00:02:45,850 --> 00:02:48,140 Alí imos nós. 70 00:02:48,140 --> 00:02:52,310 >> Polo tanto, neste curso, temos un tonelada de apoio para todos. 71 00:02:52,310 --> 00:02:54,640 Ademais só seccións aquí, que 72 00:02:54,640 --> 00:02:57,000 cada semana comeza a gastar 90 minutos marabillosos comigo, 73 00:02:57,000 --> 00:02:58,330 temos tamén o horario de oficina. 74 00:02:58,330 --> 00:03:01,021 Cantos de vós xa ten foi para o horario de oficina para obter axuda? 75 00:03:01,021 --> 00:03:01,520 Gran. 76 00:03:01,520 --> 00:03:05,700 Isto é realmente bo de ver, porque temos un equipo de máis de 45 axencias de viaxes e CAs 77 00:03:05,700 --> 00:03:11,780 adestrados para este curso que está aquí para axudar vostedes cos seus Serie de exercicios. 78 00:03:11,780 --> 00:03:14,580 >> Luns están detidos en Teal clase 17 Hill House aquí 79 00:03:14,580 --> 00:03:15,350 en Yale. 80 00:03:15,350 --> 00:03:17,349 Martes e xoves, son mantidos en commons. 81 00:03:17,349 --> 00:03:20,010 8: 00-11: 00 practicamente todos os días da semana. 82 00:03:20,010 --> 00:03:21,620 Veña, veña para fóra. 83 00:03:21,620 --> 00:03:24,030 Calquera problema, non problema-- só veña, 84 00:03:24,030 --> 00:03:26,650 e entón nós imos axudar con iso. 85 00:03:26,650 --> 00:03:31,640 >> En segundo lugar, ademais do expediente e seccións, temos tamén calzóns. 86 00:03:31,640 --> 00:03:35,930 Alguén xa viu unha parella do shorts ou orientacións nos vídeos 87 00:03:35,930 --> 00:03:36,750 na páxina web? 88 00:03:36,750 --> 00:03:37,250 Aceptar. 89 00:03:37,250 --> 00:03:39,510 Entón son moi, moi útil. 90 00:03:39,510 --> 00:03:42,470 Nosa linda produción Harvard equipo alí naquela escola 91 00:03:42,470 --> 00:03:47,910 no norte, eles filmado e producido estes vídeos paso a paso incribles. 92 00:03:47,910 --> 00:03:52,290 >> Eles van leva-lo paso a paso a través como proceder para resolver un problema. 93 00:03:52,290 --> 00:03:56,340 Moitas veces, se está confuso sobre un concepto simple, un concepto singular, 94 00:03:56,340 --> 00:03:59,780 Bótalle un ollo, porque probablemente temos un curto en algún lugar na nosa web. 95 00:03:59,780 --> 00:04:03,800 E normalmente é un gran recurso para buscar cando está primeira 96 00:04:03,800 --> 00:04:06,510 perdido sobre como xestionar un problema. 97 00:04:06,510 --> 00:04:09,750 >> En terceiro lugar, temos tamén study50 e reference50. 98 00:04:09,750 --> 00:04:15,650 Así, no estudo 50 sitio é só unha ligazón. 99 00:04:15,650 --> 00:04:21,500 É, eu creo, study.cs50.net ou algo así. 100 00:04:21,500 --> 00:04:22,860 Pode buscar en Google. 101 00:04:22,860 --> 00:04:24,229 Temos lotes de lamas preparadas. 102 00:04:24,229 --> 00:04:26,770 Temos lotes de calzóns e cousas walkthroughs-- todos compilados 103 00:04:26,770 --> 00:04:31,070 moi agradable e limpo para vós todos para percorrer, consulte os conceptos 104 00:04:31,070 --> 00:04:32,860 que está confuso sobre. 105 00:04:32,860 --> 00:04:35,920 Probablemente estaría cuberta alí study50. 106 00:04:35,920 --> 00:04:37,640 >> Reference50-- semellante. 107 00:04:37,640 --> 00:04:41,510 Temos unha morea de varias notas axiña dispoñíbeis para a súa disposición. 108 00:04:41,510 --> 00:04:44,450 E, para rematar, temos o que é Discutir chamado CS50, 109 00:04:44,450 --> 00:04:48,082 un foro no que, a noite anterior está facendo os seus problemas, din, 110 00:04:48,082 --> 00:04:49,880 Ten unha pregunta. 111 00:04:49,880 --> 00:04:52,340 Entre CS50 Discutir. 112 00:04:52,340 --> 00:04:53,190 Poste súa pregunta. 113 00:04:53,190 --> 00:04:55,820 E, a continuación, un dos hundreds-- quizais, thousands-- de pares 114 00:04:55,820 --> 00:04:57,960 tomar esta clase en liña pode facer login. 115 00:04:57,960 --> 00:05:01,182 E quizais alguén pode obter a súa resposta ante unha lata TA. 116 00:05:01,182 --> 00:05:03,390 É esencialmente só unha foro en liña que todos podemos 117 00:05:03,390 --> 00:05:04,556 utilizar para discutir os nosos problemas. 118 00:05:04,556 --> 00:05:06,483 Iso é legal. 119 00:05:06,483 --> 00:05:10,660 120 00:05:10,660 --> 00:05:11,550 >> Aceptar. 121 00:05:11,550 --> 00:05:13,220 Entón, conxuntos de problema. 122 00:05:13,220 --> 00:05:17,840 Estamos a piques dereita no grosor do conxunto de problemas dous. 123 00:05:17,840 --> 00:05:20,570 Moitos de nós xa ten loitado por un conxunto de problemas. 124 00:05:20,570 --> 00:05:24,460 Xa sabemos que quizais esperando a última noite para facer o seu pset 125 00:05:24,460 --> 00:05:28,170 non é a cousa máis intelixente a facer en CS50. 126 00:05:28,170 --> 00:05:32,380 >> Consellos e suxestións esencialmente para éxito son ler todo o spec. 127 00:05:32,380 --> 00:05:36,270 Como moitos de vostedes xa ten ler a especificación para pset 2? 128 00:05:36,270 --> 00:05:36,770 Aceptar. 129 00:05:36,770 --> 00:05:39,840 Isto é un valor sólido. 130 00:05:39,840 --> 00:05:43,210 Sei que vós probablemente xa recoñecido por agora, as especificacións son moi longo. 131 00:05:43,210 --> 00:05:45,700 Son moi, moi longo. 132 00:05:45,700 --> 00:05:49,630 >> É realmente difícil de ler cada liña de que coidadosamente palabra por palabra. 133 00:05:49,630 --> 00:05:52,780 Quere só roçar a onde di-lle para facer algo. 134 00:05:52,780 --> 00:05:54,459 Podo asegurar que, non fagas iso. 135 00:05:54,459 --> 00:05:56,750 Se fai iso, probablemente está perderá nalgún lugar 136 00:05:56,750 --> 00:05:58,458 onde dille como comezar un problema 137 00:05:58,458 --> 00:06:01,140 ou que lle di o que nome o seu problema ou ela lle di, 138 00:06:01,140 --> 00:06:03,720 esta é probablemente a mellor forma para comezar a facer o seu problema. 139 00:06:03,720 --> 00:06:05,050 E entón vai ser perdida. 140 00:06:05,050 --> 00:06:08,219 >> Cando intenta ler o seu especificación no medio, 141 00:06:08,219 --> 00:06:10,510 unha morea de importante information-- en que non está 142 00:06:10,510 --> 00:06:12,260 vai ser capaz de realmente acceso. 143 00:06:12,260 --> 00:06:13,219 Polo tanto, le toda a spec. 144 00:06:13,219 --> 00:06:15,468 Probe ler toda a especificación antes de ir para a sección, 145 00:06:15,468 --> 00:06:17,360 porque entón, cando falar do pset, 146 00:06:17,360 --> 00:06:21,070 todos podemos facer unha idea do que está pasando. 147 00:06:21,070 --> 00:06:25,169 >> En segundo lugar, este é un concepto que eu vou gusta de referencia 148 00:06:25,169 --> 00:06:26,710 moito ao longo do semestre do curso. 149 00:06:26,710 --> 00:06:30,070 Pero, esencialmente, coñecer-nos a medio camiño, non? 150 00:06:30,070 --> 00:06:33,970 Me, como o seu TA e Jason como curso director e SCAZ como o seu profesor de 151 00:06:33,970 --> 00:06:37,120 e David como o seu profesor e todos os outros ATs adoráveis ​​neste curso, 152 00:06:37,120 --> 00:06:39,830 asistentes neste course-- imos facer o noso mellor 153 00:06:39,830 --> 00:06:42,965 para garantir que está definido para ter éxito neste curso. 154 00:06:42,965 --> 00:06:43,840 Imos realizar sección. 155 00:06:43,840 --> 00:06:44,870 Imos realizar o horario de oficina. 156 00:06:44,870 --> 00:06:47,087 Nós responder o teléfono chamadas, responder aos seus e-mails, 157 00:06:47,087 --> 00:06:49,670 facer todo o que pudermos para facer Comproba se as súas preguntas son respondidas. 158 00:06:49,670 --> 00:06:51,460 >> Con todo, nos axudar tamén. 159 00:06:51,460 --> 00:06:52,450 Atopar-nos no medio do camiño. 160 00:06:52,450 --> 00:06:56,040 Se ven para o horario de expediente non ir para a sección, non 161 00:06:56,040 --> 00:07:02,060 vendo as conferencias, non tendo idea do que está a suceder, sexa como, me axude. 162 00:07:02,060 --> 00:07:04,350 Eu vou ser como, ben, eu sinto moito. 163 00:07:04,350 --> 00:07:06,410 Pode ser o momento para prestar que ombreiro para chorar, 164 00:07:06,410 --> 00:07:08,959 porque eu non estou seguro o que podo facer para axudar 165 00:07:08,959 --> 00:07:12,000 se non tentar, polo menos, axuda Se algo no inicio. 166 00:07:12,000 --> 00:07:12,910 Atopar-nos no medio do camiño. 167 00:07:12,910 --> 00:07:15,020 Vostede sabe, por favor, veña preparado para responder e obter 168 00:07:15,020 --> 00:07:16,353 listo para se implican no material. 169 00:07:16,353 --> 00:07:19,342 Isto fai as cousas moito máis máis doado para todos os implicados. 170 00:07:19,342 --> 00:07:22,970 Si, iso é moi fermoso isto. 171 00:07:22,970 --> 00:07:23,720 >> Grading. 172 00:07:23,720 --> 00:07:29,250 Así, no plan de estudos, é moi en profundidade acerca de como nós grao. 173 00:07:29,250 --> 00:07:32,440 Pero, esencialmente, a repartición neste é do 50% da súa nota 174 00:07:32,440 --> 00:07:34,530 serán os que, Serie de exercicios é fermoso, porque é iso 175 00:07:34,530 --> 00:07:37,400 onde está gastan a ampla maioría do seu tempo no curso. 176 00:07:37,400 --> 00:07:39,854 Quizzes 40%, ea súa proxecto final será do 10%. 177 00:07:39,854 --> 00:07:42,520 Haberá dous cuestionarios ao longo o curso do semestre. 178 00:07:42,520 --> 00:07:47,050 Eu creo que as horas e datas son tamén aparece no plan de estudos. 179 00:07:47,050 --> 00:07:49,210 >> O xeito que nós imos ser Grading seus Serie de exercicios 180 00:07:49,210 --> 00:07:53,930 é que temos esencialmente catro valores que atribúe a cada grao. 181 00:07:53,930 --> 00:07:57,250 Temos un valor de alcance, exactitude, deseño e estilo. 182 00:07:57,250 --> 00:08:01,530 Entón, como podes ver, este é o tipo da nosa fórmula de cálculo Serie de exercicios. 183 00:08:01,530 --> 00:08:03,640 Tres damos máis peso para corrección, 184 00:08:03,640 --> 00:08:06,140 porque, obviamente, o seu adestrador debe ser a probar para os casos 185 00:08:06,140 --> 00:08:08,480 que queremos que para probar. 186 00:08:08,480 --> 00:08:11,000 >> Vós todos teñen check50 á súa disposición. 187 00:08:11,000 --> 00:08:13,730 É unha función moi útil que podedes todo 188 00:08:13,730 --> 00:08:17,560 cargar o seu código para os nosos servidores, onde imos comprobar isto para vostede. 189 00:08:17,560 --> 00:08:20,800 E xa viu aqueles frowny rostros, caras do Smiley. 190 00:08:20,800 --> 00:08:22,119 Son realmente, realmente útil. 191 00:08:22,119 --> 00:08:23,910 Por favor, non ser a estudante que lle gusta intentos 192 00:08:23,910 --> 00:08:26,230 para codificar en todas as respostas a elas. 193 00:08:26,230 --> 00:08:30,050 Eu sempre vin un pset onde alguén viu todos os valores de check50 194 00:08:30,050 --> 00:08:33,429 e eles simplemente codificado em-- se este número, imprimir este número. 195 00:08:33,429 --> 00:08:35,080 Se ese número, imprimir ese número. 196 00:08:35,080 --> 00:08:36,090 Non faga iso. 197 00:08:36,090 --> 00:08:39,360 >> Aínda que tecnicamente check50 está correcto, 198 00:08:39,360 --> 00:08:41,809 a súa forma de resolver o problema non é correcto. 199 00:08:41,809 --> 00:08:45,770 Entón, só tes que usar check50 con moderación. 200 00:08:45,770 --> 00:08:48,497 Pero tamén asegurarse de que entender como funciona, 201 00:08:48,497 --> 00:08:50,580 o programa está funcionando Ademais de check50, 202 00:08:50,580 --> 00:08:53,120 porque non podemos probar todas as posible caso de check50. 203 00:08:53,120 --> 00:08:55,440 Nós imos estar probando algúns deles. 204 00:08:55,440 --> 00:09:00,390 >> O deseño é esencial, como ben deseñado é o código? 205 00:09:00,390 --> 00:09:04,150 Se é copiar-pegar múltiple liñas de código moitos, moitas veces. 206 00:09:04,150 --> 00:09:06,960 Poida que non ten bastante o mellor deseño no seu código. 207 00:09:06,960 --> 00:09:09,470 Quizais sexa hora de engadir que loop. 208 00:09:09,470 --> 00:09:12,090 Esencialmente, aquí é só todo sobre a tentar facer o seu código, 209 00:09:12,090 --> 00:09:17,010 intentando escribir o seu código de forma tan eficiente posible, para que o seu programa execútase 210 00:09:17,010 --> 00:09:19,630 tan axiña como sexa posible. 211 00:09:19,630 --> 00:09:20,996 >> Para rematar, temos estilo. 212 00:09:20,996 --> 00:09:24,360 Entón, o estilo é unha especie de arbitrario, termo subxectiva. 213 00:09:24,360 --> 00:09:27,470 Sei que temos oficialmente unha guía de estilo para 50 CS50, 214 00:09:27,470 --> 00:09:30,050 onde di que, oh, ti debe ter un espazo aquí. 215 00:09:30,050 --> 00:09:32,220 Ten que tipo de formato seu código dese xeito. 216 00:09:32,220 --> 00:09:34,070 Ten que nomear as cousas deste xeito. 217 00:09:34,070 --> 00:09:38,180 >> Realmente non me importa, per se, como escolle o estilo do seu código, 218 00:09:38,180 --> 00:09:39,840 só o tempo que sexa consistente. 219 00:09:39,840 --> 00:09:43,732 Por exemplo, se desexa deixar un espazo despois do seu catro 220 00:09:43,732 --> 00:09:45,690 antes do seu ciclo de catro, só facelo todo o tempo. 221 00:09:45,690 --> 00:09:46,523 Non tipo de facelo. 222 00:09:46,523 --> 00:09:47,730 Non facelo outras veces. 223 00:09:47,730 --> 00:09:51,046 Se che gusta de manter rizado espazo claves dunha certa maneira, 224 00:09:51,046 --> 00:09:52,170 só sempre facelo dese xeito. 225 00:09:52,170 --> 00:09:54,628 Non tipo de facelo nalgún lugar aquí e en algún lugar non existe. 226 00:09:54,628 --> 00:09:57,010 Cando estamos clasificación, é realmente difícil 227 00:09:57,010 --> 00:09:59,420 se eu non teño idea de como está formateo seu código, 228 00:09:59,420 --> 00:10:02,064 as cousas son tolas e fóra de lugar. 229 00:10:02,064 --> 00:10:04,980 Se só mantelo consistente, é moito máis fácil para min como o maior 230 00:10:04,980 --> 00:10:06,310 para poder ler o seu código. 231 00:10:06,310 --> 00:10:09,393 É moito máis doado para ti coma un estudante para poder ollar a través do seu código 232 00:10:09,393 --> 00:10:11,720 para ver o que hai de malo con que cortar porque hai cuestións. 233 00:10:11,720 --> 00:10:15,740 O estilo é unha das cousas máis fáciles podedes facer para obter correas completa. 234 00:10:15,740 --> 00:10:18,770 Esencialmente, se só se preocupan si pagar cinco minutos de atención 235 00:10:18,770 --> 00:10:22,760 ao seu código cada semana, ten que estar recibindo puntos de estilo completos. 236 00:10:22,760 --> 00:10:26,020 >> Para rematar, temos o que se chama o multiplicador do ámbito de aplicación. 237 00:10:26,020 --> 00:10:28,890 Scope-- Sei que é un gran palabra, especialmente nesta clase. 238 00:10:28,890 --> 00:10:31,030 Pero alcance, todo o que medios é que estás 239 00:10:31,030 --> 00:10:33,670 as Serie de exercicios para o mellor da súa capacidade. 240 00:10:33,670 --> 00:10:37,180 Se virar en tres dos seus catro problemas 241 00:10:37,180 --> 00:10:39,460 e nin sequera tentar o última, probablemente está 242 00:10:39,460 --> 00:10:41,630 vai perder algúns puntos en ámbito de aplicación. 243 00:10:41,630 --> 00:10:44,560 >> Mesmo se acaba de comezar o problema, facer o mellor para atravesa-la. 244 00:10:44,560 --> 00:10:47,691 Mesmo se non funciona, transformalo en, pois que mostra e demostra 245 00:10:47,691 --> 00:10:50,190 para nós que estás, que intentou o conxunto de problemas 246 00:10:50,190 --> 00:10:51,430 co mellor da súa capacidade. 247 00:10:51,430 --> 00:10:53,800 E entón podemos darlle todos os puntos de alcance. 248 00:10:53,800 --> 00:10:58,715 >> Scope tamén é moi importante para cando falar do menor gota puntuación pset. 249 00:10:58,715 --> 00:11:02,010 Así, ao longo do curso do semestre, vostedes teñen nove Serie de exercicios. 250 00:11:02,010 --> 00:11:05,340 E nós imos realmente estar caendo a menor puntuación fóra dos nove, 251 00:11:05,340 --> 00:11:07,670 pero só se ten puntos ámbito completo. 252 00:11:07,670 --> 00:11:11,120 >> Entón, se transformar nun pset incompleta, por desgraza, non podemos deixar que un, 253 00:11:11,120 --> 00:11:13,540 xa que o seu ámbito de aplicación Os puntos non foron concluídas. 254 00:11:13,540 --> 00:11:16,570 Así, mesmo se ten a terrible semana onde está morrendo e está enfermo 255 00:11:16,570 --> 00:11:20,040 ou o seu can morre, o seu gato morre, e está resaltado coa lección de casa, 256 00:11:20,040 --> 00:11:21,074 só tentar o pset. 257 00:11:21,074 --> 00:11:22,490 Facelo o mellor da súa capacidade. 258 00:11:22,490 --> 00:11:23,840 Se iso non funciona, non importa. 259 00:11:23,840 --> 00:11:24,506 Basta liga-lo en. 260 00:11:24,506 --> 00:11:26,590 Polo menos podemos dar apunta para o esforzo. 261 00:11:26,590 --> 00:11:28,510 >> Nun esforzo para esta clase. 262 00:11:28,510 --> 00:11:30,170 Polo menos gota puntuación máis baixa para o esforzo. 263 00:11:30,170 --> 00:11:32,354 Entón, si. 264 00:11:32,354 --> 00:11:33,270 Iso é moi fermoso isto. 265 00:11:33,270 --> 00:11:36,521 Alguén ten preguntas para agora sobre como nós grao na clase? 266 00:11:36,521 --> 00:11:37,187 Ou calquera destes? 267 00:11:37,187 --> 00:11:41,220 Calquera destes tan far-- seccións, o horario de oficina? 268 00:11:41,220 --> 00:11:41,720 Legal. 269 00:11:41,720 --> 00:11:46,720 270 00:11:46,720 --> 00:11:47,800 Aceptar. 271 00:11:47,800 --> 00:11:51,260 >> Polo tanto, este é un tema que non un realmente lle gusta falar sobre. 272 00:11:51,260 --> 00:11:53,084 Realmente non me gusta falar sobre iso. 273 00:11:53,084 --> 00:11:55,250 Vostedes realmente non quero para me escoitar falar sobre iso. 274 00:11:55,250 --> 00:11:57,690 Pero, desgraciadamente, todos ten que falar sobre iso. 275 00:11:57,690 --> 00:12:00,110 David pasou 20 minutos a charla falando sobre iso. 276 00:12:00,110 --> 00:12:02,580 E ese é o tema de honestidade académica. 277 00:12:02,580 --> 00:12:08,110 >> Entón, nós todos aquí teñen probablemente escrito un ensaio nalgún momento da nosa carreira Yale. 278 00:12:08,110 --> 00:12:11,800 Nós probablemente xa conquistou unha charla onde temos se dixo para non plagiar noso ensaio, 279 00:12:11,800 --> 00:12:13,940 porque este traballo non é nosa. 280 00:12:13,940 --> 00:12:18,109 En ciencia da computación, temos o mesmo tipo de concepto. 281 00:12:18,109 --> 00:12:20,150 Todo o traballo que enviar, todo o código que escribe 282 00:12:20,150 --> 00:12:21,900 debe ser o código que escribiu. 283 00:12:21,900 --> 00:12:24,280 Non debe ser o código que ten copiado doutro lugar. 284 00:12:24,280 --> 00:12:26,777 Non debe ser un código que xa pesquisei e estatelou no 285 00:12:26,777 --> 00:12:28,360 e realmente non sei se funciona. 286 00:12:28,360 --> 00:12:32,440 Vostede medio que ten un sentido de o que está facendo, pero non realmente. 287 00:12:32,440 --> 00:12:36,562 Cando en dúbida, esencialmente, é só ser razoable. 288 00:12:36,562 --> 00:12:38,520 No noso programa, temos toda unha lista de cousas 289 00:12:38,520 --> 00:12:40,560 vemos como razoable contra non razoable. 290 00:12:40,560 --> 00:12:43,820 >> Por exemplo, razoable é vostede eo seu amigo 291 00:12:43,820 --> 00:12:47,360 discutir cal o mellor camiño a percorrer loxicamente sobre como resolver un problema. 292 00:12:47,360 --> 00:12:48,910 Isto é moi razoable. 293 00:12:48,910 --> 00:12:53,244 O que non sería razoable é se caras reuníronse, escribiu o mesmo código, 294 00:12:53,244 --> 00:12:54,410 e virou-se o mesmo código. 295 00:12:54,410 --> 00:12:56,302 Iso non é razoable. 296 00:12:56,302 --> 00:12:57,510 Mesmo, tipo dun ensaio. 297 00:12:57,510 --> 00:12:59,290 Se quere discutir co seu amigo, hey, 298 00:12:59,290 --> 00:13:00,220 iso é o que quero escribir sobre. 299 00:13:00,220 --> 00:13:02,500 Estas son as etapas que quero tomar para escribir sobre iso, xenial. 300 00:13:02,500 --> 00:13:03,208 Iso é marabilloso. 301 00:13:03,208 --> 00:13:04,790 Por favor, colaborar entre si. 302 00:13:04,790 --> 00:13:06,540 Se vós comezar escribindo o mesmo, 303 00:13:06,540 --> 00:13:10,020 transformar, o mesmo ensaio, que é menos Aceptar. 304 00:13:10,020 --> 00:13:13,200 Así, cando en dúbida, só non facelo. 305 00:13:13,200 --> 00:13:16,940 >> Aquí, en CS50, temos guións que corren para automatizar a probar 306 00:13:16,940 --> 00:13:21,740 non só a corrección do seu código, pero tamén a singularidade do seu código. 307 00:13:21,740 --> 00:13:25,920 Entón, por favor non nos coloquen na posición de ter que someter o seu caso para EXCOMM. 308 00:13:25,920 --> 00:13:31,110 Por favor, só para todo o mundo, imos só facer esta unha experiencia marabillosa. 309 00:13:31,110 --> 00:13:33,600 Todos aprende mellor, todos somos máis felices, 310 00:13:33,600 --> 00:13:37,926 e nós son todos creados para ter éxito neste curso. 311 00:13:37,926 --> 00:13:39,800 Algo que é moi único sobre esta clase 312 00:13:39,800 --> 00:13:42,660 que eu creo que todo o mundo debe realmente prestar atención é que temos 313 00:13:42,660 --> 00:13:44,930 que se chama arrepentimento cláusula no noso programa. 314 00:13:44,930 --> 00:13:50,010 Entón, basicamente, no prazo de 72 horas, se Cree que se faga algo 315 00:13:50,010 --> 00:13:53,240 non está realmente certo foi adecuado, por favor, veña a nós. 316 00:13:53,240 --> 00:13:57,220 Prometemos-lle que dentro de 72 horas imos manexar o caso nos 317 00:13:57,220 --> 00:13:59,820 sen referirse a unha maior autoridade na administración. 318 00:13:59,820 --> 00:14:03,100 >> Polo tanto, se ve a min e dicir: Andi, hey, realmente sinto moito, 319 00:14:03,100 --> 00:14:07,620 pero eu creo que hai algunhas liñas no meu código de onte á noite que eu medio que pesquisei, 320 00:14:07,620 --> 00:14:10,120 saíu de Pila Overflow, copiar e pegar, 321 00:14:10,120 --> 00:14:13,680 e eu estou moi, moi triste sobre iso, deixe-me saber. 322 00:14:13,680 --> 00:14:16,900 Por favor, non só deixar lo apodrecer e só espero que pegalo. 323 00:14:16,900 --> 00:14:17,784 Imos pegalo. 324 00:14:17,784 --> 00:14:18,450 Só veña a min. 325 00:14:18,450 --> 00:14:20,520 Deixe-me saber dentro de 72 horas. 326 00:14:20,520 --> 00:14:22,240 Imos descubrir unha solución. 327 00:14:22,240 --> 00:14:26,679 E nós prometemos que non imos referirse a autoridades universitarias esencialmente. 328 00:14:26,679 --> 00:14:29,220 Polo tanto, é no seu mellor interese para ser só honesto con todos 329 00:14:29,220 --> 00:14:31,720 parte no curso. 330 00:14:31,720 --> 00:14:34,630 >> Aceptar. 331 00:14:34,630 --> 00:14:35,240 Aceptar. 332 00:14:35,240 --> 00:14:37,800 Entón, agora, rapidamente, antes Eu seguir adiante, calquera 333 00:14:37,800 --> 00:14:42,670 ten dúbidas sobre loxística sobre o xeito no que os cursos que imos realizar, 334 00:14:42,670 --> 00:14:45,982 como seccións van a correr, nada diso? 335 00:14:45,982 --> 00:14:46,711 Aceptar. 336 00:14:46,711 --> 00:14:47,210 Si. 337 00:14:47,210 --> 00:14:48,126 >> Audiencia: [inaudível]? 338 00:14:48,126 --> 00:14:50,414 339 00:14:50,414 --> 00:14:51,080 ANDI Pengo: Si. 340 00:14:51,080 --> 00:14:54,850 Entón quizzes-- cantos de vostedes son na sección segunda / mércores? 341 00:14:54,850 --> 00:14:56,700 Cantos de vostedes están en martes / xoves? 342 00:14:56,700 --> 00:14:58,550 OK, polo que é unha fracción sólida aquí. 343 00:14:58,550 --> 00:15:00,900 Así, a forma que nós funcionan que en Yale é que 344 00:15:00,900 --> 00:15:04,040 van ter dous separados quizzes-- un para cada section-- que 345 00:15:04,040 --> 00:15:06,160 serán tomadas durante a clase. 346 00:15:06,160 --> 00:15:09,310 Creo que é de outubro de finais de outubro, algo así como unha semana 347 00:15:09,310 --> 00:15:10,794 do quiz. 348 00:15:10,794 --> 00:15:11,960 É, polo que só vir á clase. 349 00:15:11,960 --> 00:15:13,920 Nesa luns ou mércores, vai facer a proba. 350 00:15:13,920 --> 00:15:16,336 Nesa martes ou xoves, vai facer unha proba diferente. 351 00:15:16,336 --> 00:15:18,570 Pero o mesmo material será cuberto. 352 00:15:18,570 --> 00:15:19,160 Si. 353 00:15:19,160 --> 00:15:20,660 Boa pregunta. 354 00:15:20,660 --> 00:15:21,160 Si. 355 00:15:21,160 --> 00:15:23,260 >> Audiencia: Onde nós ir comprobar nosas notas? 356 00:15:23,260 --> 00:15:23,926 >> ANDI Pengo: Si. 357 00:15:23,926 --> 00:15:28,420 Entón eu vou estar enviando un correo electrónico calquera que sexa cada semana 358 00:15:28,420 --> 00:15:31,460 cando os cuestionarios son graded-- ou, pesaroso, cando Serie de exercicios son clasificados. 359 00:15:31,460 --> 00:15:34,120 Serie de exercicios son xeralmente xirado ao mediodía ou o venres. 360 00:15:34,120 --> 00:15:37,540 Entón, eu prometer que vou tentar levalos de volta para ti 361 00:15:37,540 --> 00:15:40,000 polo mediodía do venres seguinte. 362 00:15:40,000 --> 00:15:44,950 >> Cada vez que grao un pset, eu enviarei unha notificación sobre o libro de notas 363 00:15:44,950 --> 00:15:47,070 que lle di a súa puntuación se pode ver en liña. 364 00:15:47,070 --> 00:15:52,022 Tan certo, esta semana, despois de que eu nivelación de acabado Serie de exercicios da semana pasada, 365 00:15:52,022 --> 00:15:54,230 vostedes van recibir un correo-e notificación dicindo a vostede, 366 00:15:54,230 --> 00:15:55,870 hey este é o lugar onde ir ver as súas notas. 367 00:15:55,870 --> 00:15:57,680 E podes ver todos repartición das súas notas. 368 00:15:57,680 --> 00:15:58,555 Podes ver os comentarios. 369 00:15:58,555 --> 00:16:00,360 Oh, cousa rápida tamén. 370 00:16:00,360 --> 00:16:03,060 A sección de comentarios na gran libro é onde eu probablemente vou 371 00:16:03,060 --> 00:16:05,300 pasan a maior parte do meu tempo de clasificación. 372 00:16:05,300 --> 00:16:07,094 Entón, unha cousa que é realmente importante cando 373 00:16:07,094 --> 00:16:09,010 vostedes están vendo súas notas nos seus Serie de exercicios 374 00:16:09,010 --> 00:16:11,400 é non só mirando no escore físico 375 00:16:11,400 --> 00:16:14,630 pero tamén tendo tempo para realmente ler os meus comentarios. 376 00:16:14,630 --> 00:16:17,820 >> Moitas veces, que lle dá un feedback de como está resolvendo un problema. 377 00:16:17,820 --> 00:16:20,480 Se precisa facer algo un pouco mellor, 378 00:16:20,480 --> 00:16:24,080 crítica constructiva é normalmente mellor dato naqueles sección de comentarios. 379 00:16:24,080 --> 00:16:26,950 Entón, por favor, por favor, eu vou para pasar o tempo escribindo comentarios. 380 00:16:26,950 --> 00:16:30,440 Por favor, eu realmente aprecio iso se vós ía ler estes comentarios. 381 00:16:30,440 --> 00:16:31,170 Aceptar. 382 00:16:31,170 --> 00:16:34,150 Legal. 383 00:16:34,150 --> 00:16:34,680 >> Todo ben. 384 00:16:34,680 --> 00:16:40,680 Entón, imos comezar a falar e só revisar rapidamente 385 00:16:40,680 --> 00:16:45,040 parte do material a partir semana de cero só polo que estamos 386 00:16:45,040 --> 00:16:48,760 na páxina da dereita comezando problemas desta semana. 387 00:16:48,760 --> 00:16:52,600 Así, o loop while é un un dos tres tipos de mallas 388 00:16:52,600 --> 00:16:54,510 discutir anteriormente nesta clase. 389 00:16:54,510 --> 00:16:57,060 >> Un loop while esencialmente está escrito na sintaxe 390 00:16:57,060 --> 00:17:00,666 en que, cando unha determinada condición, facelo varias veces, non? 391 00:17:00,666 --> 00:17:02,040 Pense nisso neste gráfico aquí. 392 00:17:02,040 --> 00:17:04,780 Vas para comezar nunha punto no seu código. 393 00:17:04,780 --> 00:17:09,030 Vai entrar na condición de loop se-- Non sabe-- x é inferior a un. 394 00:17:09,030 --> 00:17:11,677 >> Se iso é verdade, está indo para realizar o corpo do loop. 395 00:17:11,677 --> 00:17:14,010 E vai seguir facendo que unha vez máis, de novo, de novo, 396 00:17:14,010 --> 00:17:17,900 máis e over-- que é por iso que é un loop-- ata que a súa condición convértese en 397 00:17:17,900 --> 00:17:19,079 falsa. 398 00:17:19,079 --> 00:17:22,140 Así, deste xeito, un loop while é unha das formas máis simple 399 00:17:22,140 --> 00:17:25,619 para escribir calquera tipo de condición que Debe repetir máis e máis e máis. 400 00:17:25,619 --> 00:17:28,109 Só ten que ter coidado cando está escribindo calquera tipo de lazo 401 00:17:28,109 --> 00:17:32,140 que ten unha condición de saída como así como unha actualización para o que quere que 402 00:17:32,140 --> 00:17:36,714 é para que o bucle non fai só correr máis e máis infinitamente. 403 00:17:36,714 --> 00:17:38,630 En calquera caso, está indo para querer asegurarse de 404 00:17:38,630 --> 00:17:42,670 que está cambiando algún aspecto da seu código ou ao final do ciclo 405 00:17:42,670 --> 00:17:46,680 só para asegurarse de que ten un xeito para progresar no sentido da condición 406 00:17:46,680 --> 00:17:48,400 que pretende reunirse para final. 407 00:17:48,400 --> 00:17:50,239 Isto ten sentido para todos? 408 00:17:50,239 --> 00:17:52,530 Nós só non quero estar collidos nesta espiral onde 409 00:17:52,530 --> 00:17:55,710 que ir ao redor e ao redor e non hai ningunha forma de romper o ciclo. 410 00:17:55,710 --> 00:17:58,844 E cada lazo esencialmente ten un xeito de facelo. 411 00:17:58,844 --> 00:17:59,344 Aceptar. 412 00:17:59,344 --> 00:18:03,030 413 00:18:03,030 --> 00:18:06,060 >> En segundo lugar, moitos de vostedes Serie de exercicios nos seus Mario 414 00:18:06,060 --> 00:18:08,910 probablemente tivo que contratar este tipo de loop. 415 00:18:08,910 --> 00:18:11,802 El é chamado un loop Do While. 416 00:18:11,802 --> 00:18:14,510 Primeiro de todo, alguén me pode dicir que a diferenza entre un facer 417 00:18:14,510 --> 00:18:16,586 while e un loop while é? 418 00:18:16,586 --> 00:18:17,086 Si. 419 00:18:17,086 --> 00:18:21,030 >> Audiencia O loop Do While execútase en primeiro [inaudível]. 420 00:18:21,030 --> 00:18:22,120 >> ANDI Pengo: Si, exactamente. 421 00:18:22,120 --> 00:18:27,130 Así, un loop Do While sempre fai todo o que está dentro do facer, dentro dos corchetes 422 00:18:27,130 --> 00:18:30,520 alí e fai esa condición antes de comprobar as-- sorry, 423 00:18:30,520 --> 00:18:32,940 fai este código antes comprobando a condición. 424 00:18:32,940 --> 00:18:37,200 E iso é especialmente relevante para nós aquí nesta clase, porque a maioría das veces 425 00:18:37,200 --> 00:18:41,450 imos querer pedir o usuario por algún tipo de entrada. 426 00:18:41,450 --> 00:18:43,520 E entón, dependendo a entrada que nos dan, 427 00:18:43,520 --> 00:18:46,150 entón podemos avaliar, oh, facer necesitamos levalos de novo? 428 00:18:46,150 --> 00:18:49,930 >> Así, no Mario, se o usuario lle deu unha altura negativo, por exemplo, 429 00:18:49,930 --> 00:18:52,990 está indo para a primeira liña e facer todo o que está dentro. 430 00:18:52,990 --> 00:18:54,820 Entón está indo para comprobar agora. 431 00:18:54,820 --> 00:18:57,570 Vostede sabe, é negativo 1, que é un número positivo? 432 00:18:57,570 --> 00:19:00,680 Se non é, eu estou indo a ir volta e repita o tumulto e repita 433 00:19:00,680 --> 00:19:03,950 e repetir e repetir ata que finalmente, darlle un número que lle gusta, 434 00:19:03,950 --> 00:19:07,002 que todos podemos empregar no noso código. 435 00:19:07,002 --> 00:19:09,210 É moi importante para esencialmente calquera entrada do usuario. 436 00:19:09,210 --> 00:19:11,760 Podo asegurar-lle calquera tempo nun pset onde 437 00:19:11,760 --> 00:19:15,070 pedimos-lle para introducir calquera tipo de código, somos 438 00:19:15,070 --> 00:19:17,540 probablemente vai darlle un caso de proba en que somos 439 00:19:17,540 --> 00:19:21,200 vai darlle algo malo é iso vai romper o seu código. 440 00:19:21,200 --> 00:19:25,044 >> Se intentamos pedirte para introducir un enteiro, podemos só darlle unha corda 441 00:19:25,044 --> 00:19:26,460 e ver como lidaria con iso. 442 00:19:26,460 --> 00:19:30,610 Se nós lles pedimos que empregan unha idade, podemos darlle un número negativo 443 00:19:30,610 --> 00:19:32,340 para ver como lidaria con iso. 444 00:19:32,340 --> 00:19:37,260 Só asegúrese de que vostedes están probando para casos en que non obter o mellor 445 00:19:37,260 --> 00:19:38,590 entrada, imos só dicir. 446 00:19:38,590 --> 00:19:40,510 E un loop Do While é moitas veces a mellor 447 00:19:40,510 --> 00:19:45,260 xeito de proxectar o seu código para que atende a ese ámbito. 448 00:19:45,260 --> 00:19:45,760 Aceptar. 449 00:19:45,760 --> 00:19:48,930 450 00:19:48,930 --> 00:19:49,470 >> Aceptar. 451 00:19:49,470 --> 00:19:53,270 Polo tanto, esta é probablemente a máis lazo complexo dos tres 452 00:19:53,270 --> 00:19:54,990 que nós miramos ata agora. 453 00:19:54,990 --> 00:19:56,689 E parece moi asustado no comezo. 454 00:19:56,689 --> 00:19:59,730 Pero eu asegura que, xa que vós incorporarse o xeito de como usar un loop for, 455 00:19:59,730 --> 00:20:03,320 é unha das cousas máis útiles, a maioría das ferramentas no seu arsenal 456 00:20:03,320 --> 00:20:05,300 para avanzar nesta clase. 457 00:20:05,300 --> 00:20:09,920 >> Así, por exemplo, en arañazos, tivemos este bloque moi sinxelo 458 00:20:09,920 --> 00:20:13,180 que dixo só repita esta seguro Frases determinado número de veces. 459 00:20:13,180 --> 00:20:16,260 By the way, SAJ-- iso é SCAZ Andi Jason. 460 00:20:16,260 --> 00:20:18,740 Nós moitas veces asinar a nosa correos electrónicos SAJ. 461 00:20:18,740 --> 00:20:20,360 Se dicimos SAJ, non sexa confuso. 462 00:20:20,360 --> 00:20:22,630 Isto é só nós. 463 00:20:22,630 --> 00:20:28,600 >> Así, en perigo, fomos capaces de ter un bloque que dixo, repita Encántame SAJ! 464 00:20:28,600 --> 00:20:29,430 10 veces. 465 00:20:29,430 --> 00:20:30,130 Moi sinxelo. 466 00:20:30,130 --> 00:20:32,302 A lóxica por tras diso é unha moi, moi sinxelo, non? 467 00:20:32,302 --> 00:20:35,260 Eu quero ir primeiro a través do primeiro tempo e ver que, por segunda vez 468 00:20:35,260 --> 00:20:38,510 para ver que, por terceira vez, etc. etc., ata chegar a 10. 469 00:20:38,510 --> 00:20:41,960 >> E a forma que representamos que en código é só a través dun loop for simple. 470 00:20:41,960 --> 00:20:45,440 Así, para, está indo para declarar súa variable aquí, neste caso, 471 00:20:45,440 --> 00:20:46,349 cun int. 472 00:20:46,349 --> 00:20:47,390 Estamos indo para nomea-la i. 473 00:20:47,390 --> 00:20:49,500 Nós imos arrinque-lo a 0. 474 00:20:49,500 --> 00:20:52,490 E a edición de parada é será i é menos que 10. 475 00:20:52,490 --> 00:20:54,622 E a actualización será i ++. 476 00:20:54,622 --> 00:20:57,750 >> E dentro do loop, que vai a realizar ata que, finalmente, 477 00:20:57,750 --> 00:21:01,490 chega ao final do condition-- onde caso, que vai romper o loop. 478 00:21:01,490 --> 00:21:04,600 Debe haber cousas que caras teñen todo tipo de visto antes 479 00:21:04,600 --> 00:21:07,270 e tiña que facer para o seu problema definido. 480 00:21:07,270 --> 00:21:12,310 Alguén ten algunha dúbida sobre loops agora? 481 00:21:12,310 --> 00:21:12,930 Aceptar. 482 00:21:12,930 --> 00:21:13,430 Gran. 483 00:21:13,430 --> 00:21:17,520 484 00:21:17,520 --> 00:21:18,620 >> Aceptar. 485 00:21:18,620 --> 00:21:22,270 Polo tanto, para aqueles de vostedes que teñen le a especificación pset para esta semana 486 00:21:22,270 --> 00:21:27,690 sabemos que imos ter que empregar algo chamado ASCII e táboa ASCII. 487 00:21:27,690 --> 00:21:32,380 Entón David en charla pasaron brevemente como os ordenadores essentially-- todo 488 00:21:32,380 --> 00:21:35,410 é codificado nun ordenador binario, en ceros e uns. 489 00:21:35,410 --> 00:21:39,740 E a forma que os ordenadores son capaces para almacenar os valores diferentes, ademais 490 00:21:39,740 --> 00:21:44,360 a ceros e uns son a través de cartografía estas cifras para representar outros díxitos 491 00:21:44,360 --> 00:21:47,220 ou esencialmente outros personaxes. 492 00:21:47,220 --> 00:21:49,810 >> Polo tanto, neste caso, un ASCII mesa-- todo o que fai 493 00:21:49,810 --> 00:21:53,600 É personaxes mapa, é carácteres, para números. 494 00:21:53,600 --> 00:21:57,385 Así, o ficheiro de código fonte en seu Computador-- que ve, 495 00:21:57,385 --> 00:22:00,010 hey, unha morea de ceros e uns, ceros e uns, ceros e uns. 496 00:22:00,010 --> 00:22:02,350 Iso é o que almacenado na memoria real do ordenador. 497 00:22:02,350 --> 00:22:04,750 >> Pero cando nós, humanos, tanto comunicar co ordenador, 498 00:22:04,750 --> 00:22:08,249 nós want-- dicir, por exemplo, se quero a maiúsculas A, 499 00:22:08,249 --> 00:22:10,540 Vou ter que dalgunha forma de dicir ao ordenador, oh, 500 00:22:10,540 --> 00:22:16,300 cando escribir letras maiúsculas A, quero dicir esta representación en binario. 501 00:22:16,300 --> 00:22:22,260 >> E así a forma de facelo é xogou un cousa arbitraria chamado unha táboa ASCII, 502 00:22:22,260 --> 00:22:25,020 onde nós, como seres humanos, como programadores, hai algún tempo, 503 00:22:25,020 --> 00:22:28,660 decidimos que arbitrariamente estaban indo para asignar estas cifras 504 00:22:28,660 --> 00:22:30,960 Os valores para estes personaxes. 505 00:22:30,960 --> 00:22:32,720 >> Entón vostedes pode google iso en liña. 506 00:22:32,720 --> 00:22:37,120 Eu creo que hai unha ligazón a el na súa pset-- só un mapa da táboa ASCII, ASCII 507 00:22:37,120 --> 00:22:37,720 táboa. 508 00:22:37,720 --> 00:22:40,722 El só traduce binario números en caracteres. 509 00:22:40,722 --> 00:22:42,930 E iso vai ser moi útil para o seu conxunto de problemas 510 00:22:42,930 --> 00:22:45,470 sempre que sexa calcular calquera cousa ou se 511 00:22:45,470 --> 00:22:47,880 quere amosar certa caracteres ou números enteiros 512 00:22:47,880 --> 00:22:50,327 ou manipular certos personaxes. 513 00:22:50,327 --> 00:22:52,160 Vai ser moi importante que todos vostedes 514 00:22:52,160 --> 00:22:55,140 saben como navegar unha táboa ASCII. 515 00:22:55,140 --> 00:23:01,260 >> Así, por exemplo, a letra maiúscula A é representado polo número 65. 516 00:23:01,260 --> 00:23:04,207 E a unha minúscula é representado por 97. 517 00:23:04,207 --> 00:23:07,040 Por iso, é importante saber que o diferenza entre os dous valores 518 00:23:07,040 --> 00:23:08,320 é 32. 519 00:23:08,320 --> 00:23:13,210 Moitas veces, se precisa converter de un para o outro, a diferenza é de 32. 520 00:23:13,210 --> 00:23:15,710 E non se preocupe se vostede é do tipo de confuso sobre iso en primeiro lugar. 521 00:23:15,710 --> 00:23:20,230 Nós falaremos de como iríamos en empregar este código real. 522 00:23:20,230 --> 00:23:24,700 523 00:23:24,700 --> 00:23:26,380 >> Aceptar. 524 00:23:26,380 --> 00:23:30,770 Polo tanto, para aqueles de vostedes con portátiles fóra, Sinto-se libre para puxar arriba unha táboa ASCII, 525 00:23:30,770 --> 00:23:36,030 porque estes probablemente esixen vostedes para facer referencia 526 00:23:36,030 --> 00:23:38,100 o que os personaxes están. 527 00:23:38,100 --> 00:23:38,640 Aceptar. 528 00:23:38,640 --> 00:23:42,840 >> Entón, sabendo que certos caracteres Rueiro para determinados números, 529 00:23:42,840 --> 00:23:47,240 se eu fose para executar só o primeiro liña de que code-- o printf un, 530 00:23:47,240 --> 00:23:50,900 minúsculas, un sinal de menos maiúscula A. Alguén 531 00:23:50,900 --> 00:23:55,880 ten un palpite sobre o que sería imprimindo da pantalla agora? 532 00:23:55,880 --> 00:23:58,190 >> Entón, primeiro de todo, o que fai minúsculas a representar? 533 00:23:58,190 --> 00:24:00,990 Cal é o número que codificado na táboa ASCII. 534 00:24:00,990 --> 00:24:01,490 Sentímolo? 535 00:24:01,490 --> 00:24:02,630 >> Audiencia: 97? 536 00:24:02,630 --> 00:24:03,630 >> ANDI Pengo: 97, xenial. 537 00:24:03,630 --> 00:24:05,077 E o que é maiúsculo? 538 00:24:05,077 --> 00:24:06,330 >> Audiencia: 65. 539 00:24:06,330 --> 00:24:08,255 >> ANDI Pengo: Entón, o que é 97 menos 65? 540 00:24:08,255 --> 00:24:09,227 >> Audiencia: 32. 541 00:24:09,227 --> 00:24:09,810 ANDI Pengo: Aceptar. 542 00:24:09,810 --> 00:24:13,530 Entón, o que vostedes pensan que vai pasar cando entrada que liña de código 543 00:24:13,530 --> 00:24:14,670 no meu ordenador? 544 00:24:14,670 --> 00:24:17,981 545 00:24:17,981 --> 00:24:19,896 >> Audiencia: [inaudível]. 546 00:24:19,896 --> 00:24:21,020 ANDI Pengo: Sentímolo, fale. 547 00:24:21,020 --> 00:24:22,520 Sen preocupacións. 548 00:24:22,520 --> 00:24:25,750 Este é un moi seguro ambiente, menos a cámara. 549 00:24:25,750 --> 00:24:27,550 Estamos todos indo a-- non se preocupe. 550 00:24:27,550 --> 00:24:30,940 Só imos todos finxir é só nos refrixeración nesta sala. 551 00:24:30,940 --> 00:24:31,480 Sen preocupacións. 552 00:24:31,480 --> 00:24:33,410 Ningunha pregunta é moi estúpido. 553 00:24:33,410 --> 00:24:35,300 Ningunha resposta é unha resposta estúpida. 554 00:24:35,300 --> 00:24:38,260 Eu probablemente vou cometer erros no curso do meu ensino. 555 00:24:38,260 --> 00:24:40,740 Serio, xente, só deixar escapar para fóra. 556 00:24:40,740 --> 00:24:43,092 Sexa confiado en si mesmo, sabe? 557 00:24:43,092 --> 00:24:43,800 Entón, o que foi iso? 558 00:24:43,800 --> 00:24:47,990 Quen dixo que a última resposta? 559 00:24:47,990 --> 00:24:48,540 Aceptar. 560 00:24:48,540 --> 00:24:50,380 Berrar que bos e claros. 561 00:24:50,380 --> 00:24:51,220 >> Audiencia: 32? 562 00:24:51,220 --> 00:24:51,850 >> ANDI Pengo: 32. 563 00:24:51,850 --> 00:24:54,141 OK, imos realizar este código e ver se é iso que pasa. 564 00:24:54,141 --> 00:25:00,260 565 00:25:00,260 --> 00:25:00,760 Aceptar. 566 00:25:00,760 --> 00:25:03,300 567 00:25:03,300 --> 00:25:06,360 Entón, como podedes tipo de ver, a notación típica teño 568 00:25:06,360 --> 00:25:12,250 configurar aquí para saber como ía empregar calquera tipo de programa no noso ordenador. 569 00:25:12,250 --> 00:25:14,770 Temos a nosa función principal dentro da nosa función principal. 570 00:25:14,770 --> 00:25:17,265 Eu só vou copiar e pega esta liña de código. 571 00:25:17,265 --> 00:25:21,082 572 00:25:21,082 --> 00:25:23,540 Tamén debe ter coidado cando caras están copiando e colando código. 573 00:25:23,540 --> 00:25:28,750 Ás veces, certos operadores non pegar máis correctamente. 574 00:25:28,750 --> 00:25:31,397 Nese caso, a non ser sinal era en realidade un trazo. 575 00:25:31,397 --> 00:25:32,980 E así o ordenador non buscalo. 576 00:25:32,980 --> 00:25:35,870 Así que tiven que ir cara atrás e redigitar fisicamente iso. 577 00:25:35,870 --> 00:25:37,846 Só ten que ter coidado cando vostedes están facendo iso. 578 00:25:37,846 --> 00:25:41,178 579 00:25:41,178 --> 00:25:42,660 >> Aceptar. 580 00:25:42,660 --> 00:25:43,980 Estamos indo para executar este aquí. 581 00:25:43,980 --> 00:25:45,670 Entón, nós estamos indo ao noso cd en section2. 582 00:25:45,670 --> 00:25:50,470 583 00:25:50,470 --> 00:25:52,030 Eu chamei este asciimath programa. 584 00:25:52,030 --> 00:25:55,690 Entón lembre, cando executar calquera programa, queremos primeiro recompila-lo 585 00:25:55,690 --> 00:25:57,150 executando a través do noso make. 586 00:25:57,150 --> 00:26:00,030 E entón nós queremos realmente executada o programa facendo dot-slash. 587 00:26:00,030 --> 00:26:01,280 Entón, nós estamos indo a ./asciimath. 588 00:26:01,280 --> 00:26:05,780 589 00:26:05,780 --> 00:26:06,590 >> Seguro, alí imos nós. 590 00:26:06,590 --> 00:26:07,410 E vemos 32. 591 00:26:07,410 --> 00:26:07,930 Ben feito. 592 00:26:07,930 --> 00:26:10,340 Merece unha peza de doce. 593 00:26:10,340 --> 00:26:11,160 Doces para ti. 594 00:26:11,160 --> 00:26:11,900 Desculpe. 595 00:26:11,900 --> 00:26:13,100 Todo ben. 596 00:26:13,100 --> 00:26:13,670 Aceptar. 597 00:26:13,670 --> 00:26:18,070 Así podemos volver ao noso exemplo aquí. 598 00:26:18,070 --> 00:26:23,530 599 00:26:23,530 --> 00:26:24,345 Aah, non. 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 Aceptar. 603 00:26:32,490 --> 00:26:34,610 Eu só vou mantelo así. 604 00:26:34,610 --> 00:26:48,520 605 00:26:48,520 --> 00:26:51,240 Aceptar. 606 00:26:51,240 --> 00:26:51,740 Aceptar. 607 00:26:51,740 --> 00:26:55,340 Entón, como podedes ver, podemos facer unha morea de cousas moi interesantes, 608 00:26:55,340 --> 00:26:58,880 unha morea de cousas moi legal, unha morea de cousas moi complicadas que inclúen 609 00:26:58,880 --> 00:27:02,720 Caracteres ASCII e números. 610 00:27:02,720 --> 00:27:05,890 Despois de descender para a liña de cinco, iso é unha chea de seguir adiante. 611 00:27:05,890 --> 00:27:07,640 Non estamos indo a ir a través da sección. 612 00:27:07,640 --> 00:27:10,720 Sinto-se libre para, se pode, razoar en papel 613 00:27:10,720 --> 00:27:14,750 primeiro sobre o que debe estar a suceder cando introducir tal unha secuencia de valores. 614 00:27:14,750 --> 00:27:19,720 Por exemplo, en que a última liña, temos z-- que representa un certo number-- 615 00:27:19,720 --> 00:27:24,740 A-- o que representa tamén unha certos number-- máis 1 modulos 26 616 00:27:24,740 --> 00:27:26,750 ademais dun minúsculas. 617 00:27:26,750 --> 00:27:29,220 >> Se vós manter a lectura a través destes, ten 618 00:27:29,220 --> 00:27:34,009 pode ver un estándar xorden en como estamos manipulando o código. 619 00:27:34,009 --> 00:27:36,050 Bastante, altamente suxerir despois da sección todos vostedes 620 00:27:36,050 --> 00:27:38,160 caras ir adiante e entrada aqueles todo no seu ordenador 621 00:27:38,160 --> 00:27:40,060 para ver que tipo de números están saíndo 622 00:27:40,060 --> 00:27:43,090 e razoamento través porque aqueles son pasando, porque para os seus Serie de exercicios 623 00:27:43,090 --> 00:27:45,060 que vai ser moi importante para entender 624 00:27:45,060 --> 00:27:47,132 por que certas cousas están a ocorrer. 625 00:27:47,132 --> 00:27:48,590 Todos estes diapositivas será liña. 626 00:27:48,590 --> 00:27:51,510 Así, non preocupacións sobre o intento de fisicamente copiar as notas. 627 00:27:51,510 --> 00:27:52,510 En liña de todo. 628 00:27:52,510 --> 00:27:54,050 Iso por si só sección será liña. 629 00:27:54,050 --> 00:27:57,500 Todo o meu código fonte que Estou executando será liña. 630 00:27:57,500 --> 00:27:58,180 Si. 631 00:27:58,180 --> 00:27:59,430 Será que aínda ten algunha dúbida? 632 00:27:59,430 --> 00:28:00,587 Audiencia: Cal é modulos? 633 00:28:00,587 --> 00:28:01,170 ANDI Pengo: Aceptar. 634 00:28:01,170 --> 00:28:05,620 Entón modulo é un operador que ser moi importante para pset das súas caras 635 00:28:05,620 --> 00:28:06,690 aquí. 636 00:28:06,690 --> 00:28:12,280 Así, a forma que os operadores no C e no traballo de programación 637 00:28:12,280 --> 00:28:16,360 é que ten o que se chama a símbolo de división eo símbolo módulo, 638 00:28:16,360 --> 00:28:18,350 que é como o sinal de porcentaxe. 639 00:28:18,350 --> 00:28:24,840 >> Así, en C, cando fai un enteiro dividido por un número enteiro cunha barra, 640 00:28:24,840 --> 00:28:27,720 C ten unha tendencia a querer cortar off todos os puntos decimais, 641 00:28:27,720 --> 00:28:30,290 quere porque un número enteiro para converterse nun enteiro. 642 00:28:30,290 --> 00:28:33,550 Non vai querer ser un dobre con unha morea de casas decimais despois todo isto. 643 00:28:33,550 --> 00:28:39,322 >> Entón, se eu fai 3 dividido por 2, vai para cortar a 0,5 e só darlle un. 644 00:28:39,322 --> 00:28:41,530 Entón, iso é algo a ser moito coidado cando está 645 00:28:41,530 --> 00:28:45,294 facer calquera tipo de matemáticas na programación, é que as cifras que comeza 646 00:28:45,294 --> 00:28:47,210 poden non ser os números que estaba a pensar, 647 00:28:47,210 --> 00:28:50,190 é por iso que o redondeo na súa última pset é tan importante. 648 00:28:50,190 --> 00:28:51,980 >> Modulo dálle o resto. 649 00:28:51,980 --> 00:28:56,200 Así, por exemplo, se eu fixen 3 modulo 2-- tan 3 por cento sinal 2-- 650 00:28:56,200 --> 00:28:58,020 que lle daría o resto deste. 651 00:28:58,020 --> 00:29:00,460 Entón 3 dividido por 2 é de 1,5. 652 00:29:00,460 --> 00:29:01,410 É un resto de 1. 653 00:29:01,410 --> 00:29:04,600 Sería darlle o 1, que é o que queda de que. 654 00:29:04,600 --> 00:29:07,361 >> Entón, cando vostedes están movendo a través da táboa ASCII, 655 00:29:07,361 --> 00:29:09,735 modulo vai acabar por ser algo que é moi importante, 656 00:29:09,735 --> 00:29:11,240 e imos discutir iso máis tarde. 657 00:29:11,240 --> 00:29:17,750 658 00:29:17,750 --> 00:29:19,040 >> Aceptar. 659 00:29:19,040 --> 00:29:27,300 Polo tanto, algo que é moi, moi novo e moi orixinal 660 00:29:27,300 --> 00:29:31,920 que temos discutido esta semana é o concepto do que é unha matriz. 661 00:29:31,920 --> 00:29:34,370 Entón matriz é o primeiro tipo de estrutura de datos 662 00:29:34,370 --> 00:29:36,320 que imos atopar nesta clase. 663 00:29:36,320 --> 00:29:40,010 Toda a estrutura de datos está é algún tipo de arbitrariedade, 664 00:29:40,010 --> 00:29:43,370 literalmente cousas como estrutura que nós, como os programadores crearon, 665 00:29:43,370 --> 00:29:47,890 que poñemos no noso código que pode conter outros anacos de código. 666 00:29:47,890 --> 00:29:51,090 >> Polo tanto, neste sentido, unha array-- pense nisto como un armario de arquivo, 667 00:29:51,090 --> 00:29:53,470 onde se abre diferente baldas de armario de arquivo, 668 00:29:53,470 --> 00:29:55,630 podes acceder cousas distintas. 669 00:29:55,630 --> 00:29:58,630 Na memoria, unha matriz é só a facer o mesmo no seu ordenador. 670 00:29:58,630 --> 00:30:01,730 Pode ter diferentes nós blocks-- chamalos indices-- dunha matriz. 671 00:30:01,730 --> 00:30:04,210 É como un bloque, andel de memoria 672 00:30:04,210 --> 00:30:07,580 que creamos dentro do seu ordenador que pode introducir 673 00:30:07,580 --> 00:30:10,270 certas cousas en diferentes espazos. 674 00:30:10,270 --> 00:30:18,000 >> Así, con unha matriz, ten Sempre ten que specify-- 675 00:30:18,000 --> 00:30:22,360 ten que especificar declarar un matriz no seguinte formato. 676 00:30:22,360 --> 00:30:24,290 Vai primeiro especificar o tipo de datos 677 00:30:24,290 --> 00:30:25,831 que quere crear da matriz. 678 00:30:25,831 --> 00:30:28,870 Se eu queira un array de enteiros, Vou poñer int alí. 679 00:30:28,870 --> 00:30:32,079 Se quero unha matriz de cadeas, Vou poñer cordas alí, 680 00:30:32,079 --> 00:30:34,995 o nome da súa matriz, e, a continuación, terá corchetes. 681 00:30:34,995 --> 00:30:39,580 E dentro dos corchetes, es terá o tamaño da súa matriz. 682 00:30:39,580 --> 00:30:42,900 >> Algo que é realmente importante para ter en conta ao crear matrices é 683 00:30:42,900 --> 00:30:46,530 que, unha vez que crear un array, que tamaño non pode cambiar. 684 00:30:46,530 --> 00:30:50,180 Entón, se sabe que agora ten unha matriz de tamaño 10, 685 00:30:50,180 --> 00:30:54,550 vostede sabe que eu vou ter 10 células dentro de 10 ou índices neste gama, 686 00:30:54,550 --> 00:30:56,830 e iso non vai para ampliar ou diminuír 687 00:30:56,830 --> 00:30:59,850 non importa o que, e que non hai Actualmente só 10 bloques de espazo 688 00:30:59,850 --> 00:31:04,490 alocados na súa memoria que pode almacenar ata 10 cousas que quere que puxo. 689 00:31:04,490 --> 00:31:08,790 >> Así, deste xeito, un tipo de datos de matriz, a estrutura de datos que é unha matriz 690 00:31:08,790 --> 00:31:13,392 é moi diferente de algúns outros nós imos facer a cobertura máis tarde neste curso. 691 00:31:13,392 --> 00:31:15,170 Si. 692 00:31:15,170 --> 00:31:20,080 Por exemplo, se quería crear unha matriz de tamaño 3 que 693 00:31:20,080 --> 00:31:23,670 contidos variables de integer-- Oh, escusa, de temperature-- 694 00:31:23,670 --> 00:31:25,640 e temperatura, de por suposto, é un número enteiro. 695 00:31:25,640 --> 00:31:28,710 >> Entón, nós criaríamos int, que é o Tipo de datos que queremos para almacenar. 696 00:31:28,710 --> 00:31:32,680 Imos chamar esta temperaturas por unha cuestión de nomenclatura de nomeamento 697 00:31:32,680 --> 00:31:34,200 algo que todos nós entendemos. 698 00:31:34,200 --> 00:31:35,900 E nós imos ter corchetes. 699 00:31:35,900 --> 00:31:37,200 E queremos tres números. 700 00:31:37,200 --> 00:31:39,000 Entón, nós estamos indo a poñer tres no interior do mesmo. 701 00:31:39,000 --> 00:31:41,041 >> Algo que é realmente importante ter en conta 702 00:31:41,041 --> 00:31:43,530 é que as matrices son indexados cero. 703 00:31:43,530 --> 00:31:46,410 Todo o que significa é que comezar co índice de 0, 704 00:31:46,410 --> 00:31:49,800 e corre cara arriba a través da tamaño da matriz menos 1. 705 00:31:49,800 --> 00:31:52,730 Así, por exemplo aquí, teño unha matriz de tamaño 3. 706 00:31:52,730 --> 00:31:54,680 Vai poder para prender tres valores. 707 00:31:54,680 --> 00:31:57,450 Pero os números que themselves-- número, a matriz, este índice, 708 00:31:57,450 --> 00:32:00,271 a matriz, son de 0 a 2. 709 00:32:00,271 --> 00:32:03,520 Polo tanto, rapaces, ser moi, moito coidado cando está pasando por un problema definidos 710 00:32:03,520 --> 00:32:06,500 ea creación de calquera tipo de matriz, porque moitas das veces é 711 00:32:06,500 --> 00:32:08,490 realmente, realmente doado esquecer iso. 712 00:32:08,490 --> 00:32:11,840 En realidade, eu non teño o índice de 3, que actualmente só 713 00:32:11,840 --> 00:32:13,130 ten o índice de 2. 714 00:32:13,130 --> 00:32:16,046 E se tentar acceder ao índice de terceira, 715 00:32:16,046 --> 00:32:18,170 que será o que se chamado o terminador nulo. 716 00:32:18,170 --> 00:32:19,990 Non vai, en realidade, existen na matriz. 717 00:32:19,990 --> 00:32:21,781 E o ordenador é non vai gusta diso. 718 00:32:21,781 --> 00:32:24,570 Polo tanto, teña coidado sempre está accedendo as cousas só 719 00:32:24,570 --> 00:32:28,070 para garantir que Lembre que as matrices son cero-indexado. 720 00:32:28,070 --> 00:32:28,880 >> Aceptar. 721 00:32:28,880 --> 00:32:34,030 Así, o primeiro exemplo é só un xeito de crear unha matriz. 722 00:32:34,030 --> 00:32:36,790 O segundo exemplo, eu teño a continuación é só unha forma separada 723 00:32:36,790 --> 00:32:40,210 de crear o que é o mesmo datos estrutura que temos só introduciu. 724 00:32:40,210 --> 00:32:44,347 Entón, en vez de fisicamente executando a través de e poñendo en temperatura de 0 725 00:32:44,347 --> 00:32:47,180 é igual a calquera outra cousa, temperatura 1 é igual a calquera que sexa, temperatura 2 equals 726 00:32:47,180 --> 00:32:50,950 calquera que sexa, eu podería realmente só crear todo isto directamente nunha liña 727 00:32:50,950 --> 00:32:53,010 a temperatura entre corchetes é igual. 728 00:32:53,010 --> 00:32:56,536 >> E teña en conta, neste caso, non para especificar o tamaño da súa matriz é, 729 00:32:56,536 --> 00:32:59,160 porque o ordenador vai pasar e ver que non hai 730 00:32:59,160 --> 00:33:01,570 tres elementos nesas claves. 731 00:33:01,570 --> 00:33:04,000 E vai saber, OK, Eu teño unha matriz de tamaño 3. 732 00:33:04,000 --> 00:33:07,440 Non está indo a necesidade de introducir-lo do seguinte xeito. 733 00:33:07,440 --> 00:33:10,170 >> E tamén, si, de que xeito. 734 00:33:10,170 --> 00:33:12,610 Alguén ten preguntas acerca de como nós facemos matrices 735 00:33:12,610 --> 00:33:17,391 ou como a estrutura dunha matriz funciona? 736 00:33:17,391 --> 00:33:17,890 Si. 737 00:33:17,890 --> 00:33:18,806 >> Audiencia: [inaudível]? 738 00:33:18,806 --> 00:33:21,649 739 00:33:21,649 --> 00:33:22,690 ANDI Pengo: Si, exactamente. 740 00:33:22,690 --> 00:33:26,150 Entón, se fose para declarar e arrincar unha matriz seguinte método, 741 00:33:26,150 --> 00:33:28,477 que é a segunda forma, pode só deixalos. 742 00:33:28,477 --> 00:33:30,310 E o ordenador automaticamente sabe que 743 00:33:30,310 --> 00:33:33,950 Debe contar cantos elementos son nesas claves, separados 744 00:33:33,950 --> 00:33:34,930 por comas. 745 00:33:34,930 --> 00:33:37,517 >> Entón, aquí ven 65, 87, 30. 746 00:33:37,517 --> 00:33:39,600 Así, o ordenador sabe, oh, hai tres enteiros. 747 00:33:39,600 --> 00:33:45,960 Sei que para crear un nome de matriz temperatura con tres elementos nel. 748 00:33:45,960 --> 00:33:46,590 Boa pregunta. 749 00:33:46,590 --> 00:33:47,090 Si. 750 00:33:47,090 --> 00:33:51,590 >> Audiencia: Non se pode crear unha matriz con diferentes tipos de datos 751 00:33:51,590 --> 00:33:53,021 que poderían ser celebrados iso? 752 00:33:53,021 --> 00:33:56,746 Por exemplo, con números enteiros [inaudível]? 753 00:33:56,746 --> 00:33:59,120 ANDI Pengo: Para efectos desta clase, non, de momento. 754 00:33:59,120 --> 00:34:03,070 Cando se crea un conxunto de datos estruturar como unha matriz, 755 00:34:03,070 --> 00:34:04,990 está dicindo a ordenador, hey, eu teño de ti 756 00:34:04,990 --> 00:34:08,159 para reservar este moi memoria no meu disco duro, 757 00:34:08,159 --> 00:34:10,690 sendo cada célula dun número de bits. 758 00:34:10,690 --> 00:34:13,429 >> Lembre que aprendemos a semana cero que datos diferente 759 00:34:13,429 --> 00:34:15,300 tipo teñen tamaños diferentes? 760 00:34:15,300 --> 00:34:17,630 Así, por exemplo, unha cadea é unha cantidade diferente 761 00:34:17,630 --> 00:34:20,719 de espazo que un char, que é unha cantidade diferente de espazo 762 00:34:20,719 --> 00:34:21,830 a partir dun número enteiro. 763 00:34:21,830 --> 00:34:25,534 E por iso, se non especificar e mesturar e combinar que tipo de variables 764 00:34:25,534 --> 00:34:27,659 tes, o ordenador de vai ser moi confuso. 765 00:34:27,659 --> 00:34:29,950 E non vai saber a cantidade de memoria para che dar. 766 00:34:29,950 --> 00:34:32,480 Así, a efectos do dereito Agora, os ordenadores só poden 767 00:34:32,480 --> 00:34:36,120 recoñecer un tipo dunha matriz. 768 00:34:36,120 --> 00:34:37,940 Boa pregunta. 769 00:34:37,940 --> 00:34:38,440 Aceptar. 770 00:34:38,440 --> 00:34:45,179 771 00:34:45,179 --> 00:34:47,120 >> Entón, por suposto, o segunda pregunta que temos 772 00:34:47,120 --> 00:34:50,760 é, ben, agora que creamos un array e poñemos todas esas cousas 773 00:34:50,760 --> 00:34:54,190 na matriz, como é que imos vai ser capaz de acceder a ela? 774 00:34:54,190 --> 00:34:59,710 Así, a estrutura típica que sempre acceder a unha matriz é a nosa linda para loop. 775 00:34:59,710 --> 00:35:03,830 Eu prometer a vostedes que nós imos ser vendo unha morea de este compañeiro aquí. 776 00:35:03,830 --> 00:35:06,470 >> Esencialmente, en calquera momento para valores de entrada nunha matriz 777 00:35:06,470 --> 00:35:09,940 ou se quere acceder a eles, o mellor forma de facelo é un loop for, 778 00:35:09,940 --> 00:35:13,730 porque en un loop, ten sei cantas veces é 779 00:35:13,730 --> 00:35:17,290 vai querer executar pola matriz, porque ten unha edición de parada, non? 780 00:35:17,290 --> 00:35:19,680 E cada vez que executa través, podes acceder 781 00:35:19,680 --> 00:35:21,310 un elemento diferente da matriz. 782 00:35:21,310 --> 00:35:26,920 >> E tamén, esta é unha das razóns polas que normalmente nós comezamos o noso loops co valor 0, 783 00:35:26,920 --> 00:35:30,080 porque cando acceder arrays, pode acceder ao contido cero. 784 00:35:30,080 --> 00:35:32,070 E así un paralelo moi ben. 785 00:35:32,070 --> 00:35:35,295 Vostedes poden ter quería escribir para int i é igual a 1. 786 00:35:35,295 --> 00:35:37,330 i é menos que ou igual a 3. 787 00:35:37,330 --> 00:35:39,890 >> Pero non ía funcionar tan ben aquí, porque só 788 00:35:39,890 --> 00:35:42,010 teñen elementos de 0, 1, e 2. 789 00:35:42,010 --> 00:35:45,815 E por iso, se fose comezar o i no elemento 1, 2 e 3, 790 00:35:45,815 --> 00:35:48,440 vai acabar en execución fóra dos límites da súa matriz, 791 00:35:48,440 --> 00:35:50,440 e cousas malas van pasar. 792 00:35:50,440 --> 00:35:54,480 >> Entón, eu espero que vós ver o seguinte de por que nas clases anteriores 793 00:35:54,480 --> 00:35:58,560 estabamos ensinando a vostedes como executar e formatar un loop for do xeito que estabamos. 794 00:35:58,560 --> 00:36:01,900 É porque agora temos transitou en matrices, 795 00:36:01,900 --> 00:36:06,760 Podes ver porque os presta 0 Se ben para o acceso. 796 00:36:06,760 --> 00:36:09,880 >> Entón, a nosa forma de facelo é isso-- son só imprimir lo aquí por mor 797 00:36:09,880 --> 00:36:10,830 de imprimir a eles. 798 00:36:10,830 --> 00:36:13,750 Pero eu teño o meu espazo reservado, coma. 799 00:36:13,750 --> 00:36:15,645 E o accedendo real parte está a suceder. 800 00:36:15,645 --> 00:36:17,520 O nome da matriz foi chamado de temperatura. 801 00:36:17,520 --> 00:36:21,570 Polo tanto, é de temperatura eo i-ésimo elemento da matriz. 802 00:36:21,570 --> 00:36:24,400 >> Así como o loop for percorre, que vai comezar a 0. 803 00:36:24,400 --> 00:36:27,640 Vai para imprimir o Índice 0 desta matriz. 804 00:36:27,640 --> 00:36:29,599 A continuación, el vai para imprimir fóra do primeiro elemento. 805 00:36:29,599 --> 00:36:31,431 A continuación, el vai para imprimir a segunda. 806 00:36:31,431 --> 00:36:32,880 E entón nós imos romper. 807 00:36:32,880 --> 00:36:36,718 É clara sobre todo como isto está a suceder? 808 00:36:36,718 --> 00:36:37,217 Gran. 809 00:36:37,217 --> 00:36:43,230 810 00:36:43,230 --> 00:36:44,100 >> Todo ben. 811 00:36:44,100 --> 00:36:47,270 Polo tanto, temos aquí unha forma de dicindo: se non quere 812 00:36:47,270 --> 00:36:50,020 para codificar me em-- como o programador. 813 00:36:50,020 --> 00:36:53,320 Eu non quería realmente fisicamente poñer en cada elemento individual 814 00:36:53,320 --> 00:36:54,020 desta matriz. 815 00:36:54,020 --> 00:36:56,500 Se eu quixese, en vez teñen os valores de entrada do usuario, 816 00:36:56,500 --> 00:36:58,100 cal é a mellor forma de facelo? 817 00:36:58,100 --> 00:37:00,920 >> Ben, aquí eu creei esta función encantador, 818 00:37:00,920 --> 00:37:03,560 en que eu poida declarar unha matriz. 819 00:37:03,560 --> 00:37:06,210 Entón imos int scores-- só dicir que queremos facer 820 00:37:06,210 --> 00:37:10,660 unha matriz que contiña as notas de todos os 18 dos alumnos aquí nesta sección. 821 00:37:10,660 --> 00:37:12,670 Creo que temos un pouco máis de 18 nenos de hoxe. 822 00:37:12,670 --> 00:37:16,460 Pero por mor do exemplo, imos supor que tivemos 18. 823 00:37:16,460 --> 00:37:21,580 Quere crear un nome de matriz con correas Tipo int porque puntuacións, por suposto, 824 00:37:21,580 --> 00:37:22,987 son números. 825 00:37:22,987 --> 00:37:24,820 E eu vou ter 18 en corchetes, 826 00:37:24,820 --> 00:37:29,900 porque é así que moitos estudantes I quero ser capaz de almacenar decenas de. 827 00:37:29,900 --> 00:37:32,206 >> E a forma que eu cubrir a matriz é que eu tiña 828 00:37:32,206 --> 00:37:35,572 executa-lo a través dun loop for, de Claro que, con 0 sendo meu índice 0. 829 00:37:35,572 --> 00:37:38,030 E, sendo, a continuación, con 18 meu deixar edición, porque non hai 830 00:37:38,030 --> 00:37:39,690 18 elementos na matriz. 831 00:37:39,690 --> 00:37:44,620 E entón eu vou facer printf, Intro marcar para student-- Yada Yada Yada. 832 00:37:44,620 --> 00:37:51,171 >> Alguén me pode dicir por que aquí estou imprimir i + 1 e non eu? 833 00:37:51,171 --> 00:37:52,920 É unha especie de un truco pregunta, non realmente. 834 00:37:52,920 --> 00:37:56,020 En realidade, non fisicamente afectar o funcionamento do código. 835 00:37:56,020 --> 00:37:56,520 Si. 836 00:37:56,520 --> 00:37:57,909 >> Audiencia: [inaudível] 0? 837 00:37:57,909 --> 00:37:58,950 ANDI Pengo: Si, exactamente. 838 00:37:58,950 --> 00:38:02,620 É un pouco raro dicir, hey, é o estudante 0 nesta clase. 839 00:38:02,620 --> 00:38:03,780 É un pouco raro. 840 00:38:03,780 --> 00:38:08,340 Entón, nós, como seres humanos, realmente non me gusta para pensar en como os ordenadores pensan. 841 00:38:08,340 --> 00:38:10,930 Así, aínda que no ordenador, é almacenar valores 842 00:38:10,930 --> 00:38:13,310 no 0-th índice, cando somos seres humanos, nós realmente non 843 00:38:13,310 --> 00:38:15,520 quere referirse a nós mesmos como cero. 844 00:38:15,520 --> 00:38:18,119 Entón, cando eu só imprimir que, Eu estou indo a imprimir e engadir 845 00:38:18,119 --> 00:38:19,410 1 só por unha cuestión de claridade. 846 00:38:19,410 --> 00:38:22,447 Entón, cando imprimir, eu vou ser capaz de imprimir os alumnos do 1 ao 18. 847 00:38:22,447 --> 00:38:24,530 En realidade, non ter impacto a execución de código 848 00:38:24,530 --> 00:38:27,110 de calquera forma, do xeito que eu imprimir. 849 00:38:27,110 --> 00:38:30,380 >> Pero teña coidado cando está de feito, o acceso a matriz. 850 00:38:30,380 --> 00:38:32,780 Cando ves as puntuacións i, notar aquí que eu son realmente 851 00:38:32,780 --> 00:38:38,200 acceder ao contido 0 e non o máis 0-- 1 ou 1 + 1, 852 00:38:38,200 --> 00:38:45,530 Neste caso, o índice así que é realmente clara. 853 00:38:45,530 --> 00:38:48,870 Está todo o mundo tipo de Aceptar no como iso está en execución a través 854 00:38:48,870 --> 00:38:51,470 e con todos os índices que son poñer un valor para a matriz 855 00:38:51,470 --> 00:38:55,340 e crear unha matriz con 18 números que o usuario vai a entrada? 856 00:38:55,340 --> 00:38:58,780 857 00:38:58,780 --> 00:38:59,821 Aceptar. 858 00:38:59,821 --> 00:39:00,321 Legal. 859 00:39:00,321 --> 00:39:05,380 860 00:39:05,380 --> 00:39:07,400 >> Aceptar. 861 00:39:07,400 --> 00:39:12,220 Pasamos agora en algo que é moi relevante para esta peza, ben definido. 862 00:39:12,220 --> 00:39:15,020 Sei que na charla, David-- Sentímolo, vostede tiña unha pregunta? 863 00:39:15,020 --> 00:39:16,840 >> Audiencia: pode aumenta-la? 864 00:39:16,840 --> 00:39:18,080 >> ANDI Pengo: Si, entón eu tente. 865 00:39:18,080 --> 00:39:18,788 Pero eu non sei. 866 00:39:18,788 --> 00:39:21,437 Por algunha razón, este versión de PowerPoint 867 00:39:21,437 --> 00:39:23,270 non é realmente traballar ben co visor. 868 00:39:23,270 --> 00:39:25,260 Entón, nós só estamos indo para mantelo así. 869 00:39:25,260 --> 00:39:27,280 Todos estes serán enviados en liña. 870 00:39:27,280 --> 00:39:28,218 Sentímolo, persoal. 871 00:39:28,218 --> 00:39:30,090 Si. 872 00:39:30,090 --> 00:39:30,980 Aceptar. 873 00:39:30,980 --> 00:39:35,530 >> Por iso, tamén pode ter cordas. 874 00:39:35,530 --> 00:39:39,320 Entón, se vostedes realmente notice-- I sabe Rob pasou por riba este en que charla 875 00:39:39,320 --> 00:39:43,652 que fez-- unha cadea é realmente só un array de caracteres, 876 00:39:43,652 --> 00:39:44,860 se pensar sobre iso, non? 877 00:39:44,860 --> 00:39:47,500 Unha secuencia de caracteres é un nome ou un frase ou unha palabra, non? 878 00:39:47,500 --> 00:39:52,975 >> Se eu fose para crear unha cadea co nome Andi-- só o meu nome, A-N-D-I. 879 00:39:52,975 --> 00:39:55,460 Vostede pensar que iso fose só unha variable. 880 00:39:55,460 --> 00:39:58,630 Pero, en realidade, é discriminado en só unha matriz de caracteres. 881 00:39:58,630 --> 00:40:01,910 Entón, ten un carácter de un almacenado nun valor de matriz. 882 00:40:01,910 --> 00:40:05,420 Ten un carácter de n almacenado no segundo índice e así por diante e así por diante. 883 00:40:05,420 --> 00:40:08,660 >> Así, de tal xeito, que realmente ten este tipo 884 00:40:08,660 --> 00:40:10,970 de estrutura definida en pór para nosas cordas. 885 00:40:10,970 --> 00:40:14,660 Entón, aquí, se eu fose para a entrada palabra "comer" - así palabra é igual a cadea 886 00:40:14,660 --> 00:40:15,540 obter cadea. 887 00:40:15,540 --> 00:40:19,260 Se eu fose para introducir a palabra "comer", que é fisicamente o camiño que o meu ordenador 888 00:40:19,260 --> 00:40:21,870 está almacenando esta secuencia na miña memoria. 889 00:40:21,870 --> 00:40:27,140 >> E se eu quería correr por aquela e de impresión que out-- así para a i 890 00:40:27,140 --> 00:40:30,890 é igual a cero, lembre, en charla, que cuberto algo que se chama strlen, 891 00:40:30,890 --> 00:40:32,990 ou a lonxitude da corda. 892 00:40:32,990 --> 00:40:36,520 Porque realmente non saber o quão grande é a matriz 893 00:40:36,520 --> 00:40:38,210 de calquera inputting-- do usuario 894 00:40:38,210 --> 00:40:40,370 >> Por exemplo, I introducido a palabra "comer", e sei 895 00:40:40,370 --> 00:40:41,870 que é tres caracteres, non? 896 00:40:41,870 --> 00:40:44,700 Entón, eu podería poñer nun de tres alí e todo vai estar ben. 897 00:40:44,700 --> 00:40:49,290 Pero se o seu algo a entrada do usuario que é un número diferente de valores, 898 00:40:49,290 --> 00:40:52,760 está indo a non ser capaz de realmente sabe que cando programar o seu código. 899 00:40:52,760 --> 00:40:56,040 >> Así, a forma que lidamos con casos de proba así é que temos algo 900 00:40:56,040 --> 00:41:00,070 chamada strlen, que é só unha función que lle di canto tempo unha cadea é. 901 00:41:00,070 --> 00:41:02,080 Entón strlen da palabra. 902 00:41:02,080 --> 00:41:03,470 Miña palabra é comer. 903 00:41:03,470 --> 00:41:05,990 n é igual a strlen da palabra. 904 00:41:05,990 --> 00:41:08,930 Alguén me pode dicir o que valor, en realidade, é logo alí? 905 00:41:08,930 --> 00:41:12,550 Que n representando dereita Agora, neste exemplo, se eu tivese que comer? 906 00:41:12,550 --> 00:41:13,530 >> Audiencia: 3. 907 00:41:13,530 --> 00:41:14,520 >> ANDI Pengo: 3, exactamente. 908 00:41:14,520 --> 00:41:18,820 Polo tanto, temos para int i é igual a cero, n é igual a 3, esencialmente. 909 00:41:18,820 --> 00:41:22,355 E eu vai executar ata que sexa menos que 3i ++. 910 00:41:22,355 --> 00:41:24,980 E está indo a ir esencialmente a través de e facer o mesmo. 911 00:41:24,980 --> 00:41:26,979 Vai para imprimir cada valor e darlle 912 00:41:26,979 --> 00:41:29,700 E-A-T. É só denotando unha xeito diferente de escribilo. 913 00:41:29,700 --> 00:41:31,170 Isto vai ser moi útil. 914 00:41:31,170 --> 00:41:31,670 Si. 915 00:41:31,670 --> 00:41:35,174 Audiencia: Cal é os beneficios de poñer n é igual a palabra strlen interior que 916 00:41:35,174 --> 00:41:36,894 loop [inaudível]? 917 00:41:36,894 --> 00:41:37,560 ANDI Pengo: Si. 918 00:41:37,560 --> 00:41:44,880 Entón, se eu fose a-- dicir, por exemplo, se eu fose para facer, e, a continuación, 919 00:41:44,880 --> 00:41:51,935 fazer-- oop-- que, no meu código, sería de feito, estar facendo como o mesmo. 920 00:41:51,935 --> 00:41:55,060 Con todo, o xeito que David explicou el durante a charla, se algún de vós 921 00:41:55,060 --> 00:41:57,854 Teña en conta que, foi a de que, como o ser humano, como programadores, 922 00:41:57,854 --> 00:42:00,270 realmente tratamos programar nosa código, polo que o noso equipo ten 923 00:42:00,270 --> 00:42:04,070 para traballar o menos posible, de xeito que o noso código é moi eficiente. 924 00:42:04,070 --> 00:42:06,850 >> Entón, se eu tivese que alí, o que que pasaría a través do meu loop 925 00:42:06,850 --> 00:42:10,790 é que eu ía primeiro declarar unha variable i chamado será 0. 926 00:42:10,790 --> 00:42:13,350 Vou comprobar, oh, o que é a strlen de palabra? 927 00:42:13,350 --> 00:42:15,000 Oh, o strlen é 3. 928 00:42:15,000 --> 00:42:16,191 Entón é i menos de tres? 929 00:42:16,191 --> 00:42:16,690 Si, é. 930 00:42:16,690 --> 00:42:17,870 Vou correr. 931 00:42:17,870 --> 00:42:21,130 >> E entón a segunda vez de volta ao redor o lazo, eu estou indo a incrementar i. 932 00:42:21,130 --> 00:42:22,550 i vai ser un. 933 00:42:22,550 --> 00:42:25,600 E eu vai comprobar, oh, pero cal é a strlen da palabra? 934 00:42:25,600 --> 00:42:26,839 Oh, é tres. 935 00:42:26,839 --> 00:42:29,880 E iso parece tipo de desperdicio, cada vez que realizar a través do lazo, 936 00:42:29,880 --> 00:42:33,340 estar comprobando a función, aínda que os strlen de palabra 937 00:42:33,340 --> 00:42:35,490 nunca realmente cambia? 938 00:42:35,490 --> 00:42:38,590 >> Polo tanto, é enerxía extra para un ordenador. 939 00:42:38,590 --> 00:42:42,180 Cando comezar a falar sobre as cousas que son millóns e millóns 940 00:42:42,180 --> 00:42:44,431 e miles de millóns de sitios longo, imaxine o seu ordenador 941 00:42:44,431 --> 00:42:47,430 ter que ir fisicamente a través de correo comprobar todos os que en cada momento. 942 00:42:47,430 --> 00:42:53,170 É por iso que, para facer só por unha cuestión de eficiencia, 943 00:42:53,170 --> 00:42:57,620 nós só tenden a facelo, pois deste xeito estamos só 944 00:42:57,620 --> 00:42:59,850 chamando a función xa no inicio, 945 00:42:59,850 --> 00:43:01,766 e que cada vez que pasa polo que está pasando 946 00:43:01,766 --> 00:43:03,789 para almacenar o valor 3 alí, que non 947 00:43:03,789 --> 00:43:05,330 ten que comprobar continuamente o tempo. 948 00:43:05,330 --> 00:43:05,743 Si. 949 00:43:05,743 --> 00:43:06,409 >> Audiencia: Sentímolo. 950 00:43:06,409 --> 00:43:09,070 Só [inaudível]. 951 00:43:09,070 --> 00:43:13,985 Podería vostede int n é igual a strlen e colocá- que por enriba do lado de fóra do loop 952 00:43:13,985 --> 00:43:15,364 así como? 953 00:43:15,364 --> 00:43:16,030 ANDI Pengo: Si. 954 00:43:16,030 --> 00:43:17,100 Podería facelo, absolutamente. 955 00:43:17,100 --> 00:43:19,970 A razón pola que temos que aquí é porque a forma como un lazo para obras 956 00:43:19,970 --> 00:43:23,500 é que se chama variable local no sentido 957 00:43:23,500 --> 00:43:26,150 que todo o que é creando dentro do loop for 958 00:43:26,150 --> 00:43:27,890 só existe dentro do loop for. 959 00:43:27,890 --> 00:43:31,530 >> Así, a variable i only existe nestes soportes. 960 00:43:31,530 --> 00:43:35,260 E aquí as variables de n tamén só existe nestes soportes. 961 00:43:35,260 --> 00:43:39,350 Entón, se fose usar strlen de palabra varias veces para abaixo abaixo, 962 00:43:39,350 --> 00:43:42,230 absolutamente a mellor forma de facelo sería declaralo la ata o cumio 963 00:43:42,230 --> 00:43:43,563 así que non ten que facelo unha vez. 964 00:43:43,563 --> 00:43:45,420 Si. 965 00:43:45,420 --> 00:43:47,670 Audiencia: Por que ten un nova liña despois da cento 966 00:43:47,670 --> 00:43:51,300 vendo se quere poñer todo as letras ao lado del separan? 967 00:43:51,300 --> 00:43:54,140 >> ANDI Pengo: Oh, eu quería imprimilas los todos en cada liña. 968 00:43:54,140 --> 00:43:54,890 Non importa. 969 00:43:54,890 --> 00:43:55,890 Si, é un formato. 970 00:43:55,890 --> 00:43:57,181 Esta é unha boa pregunta. 971 00:43:57,181 --> 00:43:59,360 Si, se eu quixese imprimir todo en só unha liña, 972 00:43:59,360 --> 00:44:02,731 Non tería o trazo no. 973 00:44:02,731 --> 00:44:03,230 Aceptar. 974 00:44:03,230 --> 00:44:06,880 Todo o mundo é bo? 975 00:44:06,880 --> 00:44:07,500 Aceptar. 976 00:44:07,500 --> 00:44:08,000 Legal. 977 00:44:08,000 --> 00:44:12,080 978 00:44:12,080 --> 00:44:14,750 >> Entón eu creo que eu falei abondo. 979 00:44:14,750 --> 00:44:20,040 A canto de vós para ser executado a través do código e me diga o que está mal aquí. 980 00:44:20,040 --> 00:44:21,560 Onde está o erro? 981 00:44:21,560 --> 00:44:26,920 Entón, como podes ver, eu teño declarado nova matriz de tipo cadea clase chamada. 982 00:44:26,920 --> 00:44:30,220 E eu teño entrado Sam, Jess, e Kim para el. 983 00:44:30,220 --> 00:44:33,400 E eu estou tentando imprimir todos os elementos da matriz. 984 00:44:33,400 --> 00:44:36,796 Alguén me pode dicir por que iso me vai dar problemas? 985 00:44:36,796 --> 00:44:39,320 Vou dar a vostedes 10 segundos para pensar sobre iso. 986 00:44:39,320 --> 00:44:55,490 987 00:44:55,490 --> 00:44:56,619 >> Aceptar. 988 00:44:56,619 --> 00:44:57,118 Si? 989 00:44:57,118 --> 00:45:01,972 >> Audiencia: É o centro esquerda igual a 3 ou [inaudível]? 990 00:45:01,972 --> 00:45:02,680 ANDI Pengo: Correcto. 991 00:45:02,680 --> 00:45:06,784 Entón, cantas veces é que iso realmente indo para percorrer este ciclo? 992 00:45:06,784 --> 00:45:07,620 >> Audiencia: Four. 993 00:45:07,620 --> 00:45:08,070 >> ANDI Pengo: Exactamente. 994 00:45:08,070 --> 00:45:09,445 Vai por catro veces. 995 00:45:09,445 --> 00:45:12,250 Vai percorrer a 0, 1, 2, e 3, 996 00:45:12,250 --> 00:45:15,200 xa que o seu elemento é i é inferior ou igual a 3. 997 00:45:15,200 --> 00:45:16,960 El non vai parar cando é 2. 998 00:45:16,960 --> 00:45:18,800 Vai mantê- indo ata acadar 3. 999 00:45:18,800 --> 00:45:21,720 E, como sabemos, só hai tres elementos na nosa matriz real. 1000 00:45:21,720 --> 00:45:27,260 >> Se intentamos acceder a cuarta elemento ou o índice de 3, 1001 00:45:27,260 --> 00:45:30,357 está indo bater en algún lugar na memoria que non existe. 1002 00:45:30,357 --> 00:45:31,690 Chámase o terminador nulo. 1003 00:45:31,690 --> 00:45:32,856 Nada vai estar alí. 1004 00:45:32,856 --> 00:45:35,324 O seu ordenador non vai estar moi feliz con vostede. 1005 00:45:35,324 --> 00:45:36,170 Si. 1006 00:45:36,170 --> 00:45:38,430 Alguén ten preguntas sobre por que estaba a suceder? 1007 00:45:38,430 --> 00:45:39,679 Esa é unha área común para evitar. 1008 00:45:39,679 --> 00:45:40,712 Si. 1009 00:45:40,712 --> 00:45:45,777 >> Audiencia: Non fai o primeiro deslice tamén teñen unha secuencia de 2? 1010 00:45:45,777 --> 00:45:46,360 ANDI Pengo: Non. 1011 00:45:46,360 --> 00:45:49,610 Así, esencialmente, cando está facendo unha matriz, 1012 00:45:49,610 --> 00:45:51,540 este dereito paréntese Hai que number-- todos 1013 00:45:51,540 --> 00:45:53,480 está dicindo a vostede é como moitos elementos que eu teño. 1014 00:45:53,480 --> 00:45:55,840 Non está realmente dicindo me os índices de nada. 1015 00:45:55,840 --> 00:45:58,760 Polo tanto, neste caso, eu sei que quero para escribir con tres partes, 1016 00:45:58,760 --> 00:46:02,690 con tres lugares físicos para Manteña o que quero soster. 1017 00:46:02,690 --> 00:46:04,510 É por iso que o número tres está aí. 1018 00:46:04,510 --> 00:46:06,560 Con todo, se eu quería para realmente acceder a ela, 1019 00:46:06,560 --> 00:46:11,220 se eu quería dicir, printf número soporte de clase, a continuación, 1020 00:46:11,220 --> 00:46:14,560 está indo para realmente poñer o índice física alí. 1021 00:46:14,560 --> 00:46:16,330 Si, boa pregunta. 1022 00:46:16,330 --> 00:46:20,065 >> Audiencia: Entón é o físico índice debería ser [inaudível]? 1023 00:46:20,065 --> 00:46:20,940 ANDI Pengo: Eu sinto moito. 1024 00:46:20,940 --> 00:46:21,500 Pode falar un pouco? 1025 00:46:21,500 --> 00:46:24,208 >> Audiencia: Entón é o índice físico [Inaudível] cada unha das caixas? 1026 00:46:24,208 --> 00:46:25,260 [Inaudível]? 1027 00:46:25,260 --> 00:46:26,040 >> ANDI Pengo: Si. 1028 00:46:26,040 --> 00:46:28,970 Entón, eu vou volver a dereita aquí. 1029 00:46:28,970 --> 00:46:31,120 Pense ben aquí. 1030 00:46:31,120 --> 00:46:32,820 Temos unha matriz de tamaño 3. 1031 00:46:32,820 --> 00:46:35,540 Hai tres lugares, como, espazos reservados físicos en aquí. 1032 00:46:35,540 --> 00:46:37,620 Pero son nomeados 0, 1 e 2. 1033 00:46:37,620 --> 00:46:40,700 Entón, se eu quixese acceder a eles, a forma que eu acceder a eles 1034 00:46:40,700 --> 00:46:43,480 é printf de todo o que eu quería aquí. 1035 00:46:43,480 --> 00:46:45,485 Vostede tería que imprimir o seu nome, 1036 00:46:45,485 --> 00:46:47,610 porque, entón, o ordenador sabe, oh, eu preciso ollar 1037 00:46:47,610 --> 00:46:51,391 nesa matriz ao índice 0. 1038 00:46:51,391 --> 00:46:51,890 Si. 1039 00:46:51,890 --> 00:46:53,306 Pero o tamaño non cambia. 1040 00:46:53,306 --> 00:46:55,492 O tamaño é 3, independentemente de como rótula-los. 1041 00:46:55,492 --> 00:46:58,321 1042 00:46:58,321 --> 00:46:58,820 Aceptar. 1043 00:46:58,820 --> 00:47:01,387 Todo o mundo é bo? 1044 00:47:01,387 --> 00:47:02,970 Audiencia: Entón, cada vez que eu [inaudível]? 1045 00:47:02,970 --> 00:47:06,357 1046 00:47:06,357 --> 00:47:06,940 ANDI Pengo: Aceptar. 1047 00:47:06,940 --> 00:47:13,270 Polo tanto, neste caso, nós realmente non chegar a el neste momento en curso. 1048 00:47:13,270 --> 00:47:16,760 Pero sabe que un string-- como eu dixo antes, unha cadea é esencialmente 1049 00:47:16,760 --> 00:47:18,440 un conxunto de caracteres. 1050 00:47:18,440 --> 00:47:21,430 Entón, se eu crear unha matriz de cordas, eu medio que 1051 00:47:21,430 --> 00:47:24,430 teño unha matriz de matriz de caracteres, non? 1052 00:47:24,430 --> 00:47:27,720 >> Polo tanto, neste caso, porque ten unha matriz de cadeas, 1053 00:47:27,720 --> 00:47:31,340 se fose para introducir unha palabra moi longa, que aínda ocupa só un espazo, 1054 00:47:31,340 --> 00:47:33,230 porque esa é a unha cadea. 1055 00:47:33,230 --> 00:47:37,492 Pero se tivese que pensar en os personaxes desa matriz, 1056 00:47:37,492 --> 00:47:40,450 a continuación, que está ocupando moito máis caracteres que calquera das outras palabras 1057 00:47:40,450 --> 00:47:41,372 son. 1058 00:47:41,372 --> 00:47:42,830 Non é realmente importante para o momento. 1059 00:47:42,830 --> 00:47:44,921 Pero iso é só en xeral como está a traballar. 1060 00:47:44,921 --> 00:47:49,750 1061 00:47:49,750 --> 00:47:50,560 >> Aceptar. 1062 00:47:50,560 --> 00:47:55,840 Entón, iso é algo que eu vou deixar facer moito ao longo do semestre. 1063 00:47:55,840 --> 00:47:57,500 Necesito descansar miña voz. 1064 00:47:57,500 --> 00:47:59,530 Vostedes precisan para estimular a si mesmos. 1065 00:47:59,530 --> 00:48:02,300 Moitos de vostedes probablemente teño que durmir agora. 1066 00:48:02,300 --> 00:48:05,960 Estou introducindo problemas aleatorios onde nós, como unha clase ou 1067 00:48:05,960 --> 00:48:09,480 cun compañeiro próximo a está indo para pasar uns minutos discutindo 1068 00:48:09,480 --> 00:48:14,980 sobre como nós iríamos sobre como resolver ou a creación dun programa como este. 1069 00:48:14,980 --> 00:48:17,100 >> Entón, agora, queremos para crear un program-- 1070 00:48:17,100 --> 00:48:19,560 imos chamalo upper.c-- que converte 1071 00:48:19,560 --> 00:48:24,787 unha palabra en minúsculas para unha clase alta maiúscula string--, desculpe. 1072 00:48:24,787 --> 00:48:26,370 Palabra en cordas, desculpe, é sinónimo. 1073 00:48:26,370 --> 00:48:28,370 Eu estou indo a cambia-los para significar o mesmo. 1074 00:48:28,370 --> 00:48:32,270 1075 00:48:32,270 --> 00:48:33,499 >> Si. 1076 00:48:33,499 --> 00:48:34,540 Tome un par de minutos. 1077 00:48:34,540 --> 00:48:37,130 Non ten que ser escrito en calquera lingua. 1078 00:48:37,130 --> 00:48:39,890 Só en código ou pseudocode loxicamente como iríamos mesmo 1079 00:48:39,890 --> 00:48:42,083 vai facer sobre tal problema. 1080 00:48:42,083 --> 00:48:42,583 Si. 1081 00:48:42,583 --> 00:48:49,881 1082 00:48:49,881 --> 00:48:52,780 >> [SIDE conversa] 1083 00:48:52,780 --> 00:49:18,680 1084 00:49:18,680 --> 00:49:22,130 >> Notei tamén que vostedes can-- Eu medio que xa ver o programa. 1085 00:49:22,130 --> 00:49:24,600 Eu creo que a miña falta de modo presentador é un problema. 1086 00:49:24,600 --> 00:49:27,410 Pero é OK. 1087 00:49:27,410 --> 00:49:30,410 >> [SIDE conversa] 1088 00:49:30,410 --> 00:50:03,589 1089 00:50:03,589 --> 00:50:04,380 Si, por favor, rapaces. 1090 00:50:04,380 --> 00:50:05,400 Veña incorporarse doces. 1091 00:50:05,400 --> 00:50:06,372 Veña incorporarse doces. 1092 00:50:06,372 --> 00:50:07,698 >> Audiencia: Si! 1093 00:50:07,698 --> 00:50:09,958 >> [SIDE conversa] 1094 00:50:09,958 --> 00:50:16,101 1095 00:50:16,101 --> 00:50:18,100 ANDI Pengo: Tamén, si, Vou comezar a tirar doces 1096 00:50:18,100 --> 00:50:20,280 en persoas que non responden a preguntas. 1097 00:50:20,280 --> 00:50:22,260 Polo tanto, ten que todas as preguntas de resposta. 1098 00:50:22,260 --> 00:50:24,895 Ou supoño que a xente que non responder a preguntas. 1099 00:50:24,895 --> 00:50:26,070 Si, outra forma arredor. 1100 00:50:26,070 --> 00:50:28,570 >> [SIDE conversa] 1101 00:50:28,570 --> 00:51:13,399 1102 00:51:13,399 --> 00:51:14,274 Audiencia: [inaudível] 1103 00:51:14,274 --> 00:51:17,300 1104 00:51:17,300 --> 00:51:18,340 >> ANDI Pengo: Si. 1105 00:51:18,340 --> 00:51:19,340 Si. 1106 00:51:19,340 --> 00:51:22,840 >> [SIDE conversa] 1107 00:51:22,840 --> 00:51:40,700 1108 00:51:40,700 --> 00:51:41,590 >> Todo ben, persoal. 1109 00:51:41,590 --> 00:51:44,731 Tome-se, como, máis 10 segundos. 1110 00:51:44,731 --> 00:51:48,210 >> [SIDE conversa] 1111 00:51:48,210 --> 00:52:10,600 1112 00:52:10,600 --> 00:52:11,750 >> OK, persoal. 1113 00:52:11,750 --> 00:52:14,920 Entón, antes de comezar a probar realmente escribir fisicamente código, 1114 00:52:14,920 --> 00:52:20,650 un bo hábito para desenvolverse é que queremos primeiro tipo de razón 1115 00:52:20,650 --> 00:52:22,737 loxicamente como iríamos facelo. 1116 00:52:22,737 --> 00:52:24,570 Quere ter a certeza, antes de fisicamente 1117 00:52:24,570 --> 00:52:27,210 comezar a tentar codificar en Mario, que faga 1118 00:52:27,210 --> 00:52:28,870 Asegúrese de que ten o seu pseudocódigo. 1119 00:52:28,870 --> 00:52:31,235 Que está levando-o a través o que precisa para crear así 1120 00:52:31,235 --> 00:52:33,360 que, cando fisicamente escribir o seu programa máis tarde, 1121 00:52:33,360 --> 00:52:36,640 vostede é capaz de detectar erros no seu código e cousas así. 1122 00:52:36,640 --> 00:52:40,460 >> Entón imos só comezar por-- en inglés, en pseudocódigo, 1123 00:52:40,460 --> 00:52:43,320 será que alguén quere dar me unha explicación xenérica 1124 00:52:43,320 --> 00:52:46,250 de como ía facelo? 1125 00:52:46,250 --> 00:52:48,102 Si. 1126 00:52:48,102 --> 00:52:49,664 >> Audiencia: [inaudível]. 1127 00:52:49,664 --> 00:52:50,830 ANDI Pengo: Por suposto, non se preocupe. 1128 00:52:50,830 --> 00:52:57,233 Audiencia: Pode solicitar a el ou pedir alguén para obter corda 1-- si, corda, 1129 00:52:57,233 --> 00:52:58,160 e logo-- 1130 00:52:58,160 --> 00:52:59,826 >> ANDI Pengo: Si, por iso este é un bo comezo. 1131 00:52:59,826 --> 00:53:01,972 Vou comezar a escribir, Sentímolo, como fala. 1132 00:53:01,972 --> 00:53:02,471 Assim-- 1133 00:53:02,471 --> 00:53:05,698 >> Audiencia: -o minúsculas números son máis elevados, non? 1134 00:53:05,698 --> 00:53:08,519 Ou as letras minúsculas teñen números elevados? 1135 00:53:08,519 --> 00:53:09,310 ANDI Pengo: Exactamente. 1136 00:53:09,310 --> 00:53:16,156 Audiencia: Entón subtraímos 32 desde calquera [inaudível]. 1137 00:53:16,156 --> 00:53:28,600 1138 00:53:28,600 --> 00:53:29,870 >> ANDI Pengo: Grande. 1139 00:53:29,870 --> 00:53:35,020 Entón nós medio que ten un sentido xeral de como traballar sobre este problema. 1140 00:53:35,020 --> 00:53:40,060 Sabendo que medio que aprendeu a forma física que as cordas 1141 00:53:40,060 --> 00:53:43,320 son almacenadas na memoria, o que fai xa 1142 00:53:43,320 --> 00:53:45,920 sei que está indo probablemente ten que escribir no seu código 1143 00:53:45,920 --> 00:53:48,288 a fin de percorrer a cadea? 1144 00:53:48,288 --> 00:53:49,259 >> Audiencia: Para loop. 1145 00:53:49,259 --> 00:53:50,550 ANDI Pengo: Un lazo é, exactamente. 1146 00:53:50,550 --> 00:53:56,540 1147 00:53:56,540 --> 00:53:57,220 Gran. 1148 00:53:57,220 --> 00:54:00,539 Entón nós medio que temos un xenérico pseudocódigo escrito 1149 00:54:00,539 --> 00:54:02,330 este tipo de está dando observa sobre como 1150 00:54:02,330 --> 00:54:03,900 movería sobre como resolver o problema. 1151 00:54:03,900 --> 00:54:06,150 Agora que ten iso, pode referencia-lo para máis tarde 1152 00:54:06,150 --> 00:54:08,233 cando estás realmente escribir o seu código. 1153 00:54:08,233 --> 00:54:10,240 Así, podemos realmente ir aquí. 1154 00:54:10,240 --> 00:54:25,130 E eu teño unha función chamada upper.c-- alí é-- de só un modelo en branco 1155 00:54:25,130 --> 00:54:28,510 agora que vostedes están indo me axudar a descubrir sobre como escribir 1156 00:54:28,510 --> 00:54:30,430 esta liña de non code-- liña de código. 1157 00:54:30,430 --> 00:54:32,890 Será varias liñas de código. 1158 00:54:32,890 --> 00:54:35,710 >> Ao iniciar calquera tipo de pset en branco, o que é 1159 00:54:35,710 --> 00:54:37,418 o primeiro que eu teño lembrar de facer? 1160 00:54:37,418 --> 00:54:39,290 >> Audiencia: [inaudível]. 1161 00:54:39,290 --> 00:54:41,000 >> ANDI Pengo: Gran Yep. 1162 00:54:41,000 --> 00:54:41,500 Engadir. 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 Moitas veces este é un dos Os erros máis fáciles persoas 1166 00:54:49,640 --> 00:54:51,598 vai facer cando están escribindo, é que eles van 1167 00:54:51,598 --> 00:54:54,180 esqueza incluír un biblioteca importante que precisan. 1168 00:54:54,180 --> 00:54:57,689 Entón, se é o horario de oficina e está tipo, Non sei por que o meu código non funciona. 1169 00:54:57,689 --> 00:54:59,230 Que me pode dicir por que non funciona? 1170 00:54:59,230 --> 00:55:00,730 Imos dicir que # include? 1171 00:55:00,730 --> 00:55:02,520 Ten que # incluír iso. 1172 00:55:02,520 --> 00:55:03,270 Aceptar. 1173 00:55:03,270 --> 00:55:07,230 >> Entón, nós temos o estándar de E / S aquí. 1174 00:55:07,230 --> 00:55:10,740 É que a única biblioteca nós imos ter aquí? 1175 00:55:10,740 --> 00:55:12,681 O que máis é que imos facer? 1176 00:55:12,681 --> 00:55:13,180 Desculpe. 1177 00:55:13,180 --> 00:55:14,562 Alguén acaba de berrar para fóra? 1178 00:55:14,562 --> 00:55:15,666 >> Audiencia: [inaudível]. 1179 00:55:15,666 --> 00:55:16,666 ANDI Pengo: Alí vai. 1180 00:55:16,666 --> 00:55:20,320 1181 00:55:20,320 --> 00:55:21,440 Aceptar. 1182 00:55:21,440 --> 00:55:26,070 E como fago para ir sobre como iniciar calquera tipo da función, calquera tipo de función principal 1183 00:55:26,070 --> 00:55:28,760 dentro do noso programa? 1184 00:55:28,760 --> 00:55:30,020 Int principal. 1185 00:55:30,020 --> 00:55:34,531 1186 00:55:34,531 --> 00:55:35,030 Aceptar. 1187 00:55:35,030 --> 00:55:35,970 O que fago para poñer aquí dentro? 1188 00:55:35,970 --> 00:55:37,640 Cal é o primeiro que quere facer? 1189 00:55:37,640 --> 00:55:39,910 Se queremos obter un secuencia do usuario, 1190 00:55:39,910 --> 00:55:43,870 o que imos ter para facer nesta primeira liña? 1191 00:55:43,870 --> 00:55:46,120 Sentímolo, vostedes só senten libre para falar e voz alta. 1192 00:55:46,120 --> 00:55:47,123 Só berrar o que quere. 1193 00:55:47,123 --> 00:55:48,772 >> Audiencia: Peza ao usuario? 1194 00:55:48,772 --> 00:55:49,980 ANDI Pengo: Como podemos facer isto? 1195 00:55:49,980 --> 00:55:51,873 Ask-- son eu que vou escribir "preguntar ao usuario"? 1196 00:55:51,873 --> 00:55:52,600 >> Audiencia: printf. 1197 00:55:52,600 --> 00:55:54,341 >> ANDI Pengo: Aceptar. 1198 00:55:54,341 --> 00:55:54,840 Printf. 1199 00:55:54,840 --> 00:55:57,372 O que quero para printf? 1200 00:55:57,372 --> 00:55:58,776 >> Audiencia: Tipo en algo. 1201 00:55:58,776 --> 00:56:02,760 1202 00:56:02,760 --> 00:56:03,840 >> ANDI Pengo: Como isto? 1203 00:56:03,840 --> 00:56:05,430 Xente, finxir que eu son un ordenador. 1204 00:56:05,430 --> 00:56:08,475 Fisicamente me contar cada paso que eu teño para escribir aquí? 1205 00:56:08,475 --> 00:56:09,600 Estou facendo algo mal? 1206 00:56:09,600 --> 00:56:10,743 Debo escribir algo? 1207 00:56:10,743 --> 00:56:11,690 >> Audiencia: Precisa comiñas. 1208 00:56:11,690 --> 00:56:12,380 >> ANDI Pengo: Eu teño citas? 1209 00:56:12,380 --> 00:56:12,880 Aceptar. 1210 00:56:12,880 --> 00:56:15,520 1211 00:56:15,520 --> 00:56:16,297 Aceptar. 1212 00:56:16,297 --> 00:56:17,698 >> Audiencia: E, a continuación, nova liña. 1213 00:56:17,698 --> 00:56:21,434 1214 00:56:21,434 --> 00:56:22,465 Punto e coma. 1215 00:56:22,465 --> 00:56:23,340 ANDI Pengo: Semicolon? 1216 00:56:23,340 --> 00:56:24,060 Aceptar. 1217 00:56:24,060 --> 00:56:24,560 Bo. 1218 00:56:24,560 --> 00:56:27,060 >> Audiencia: E quizais especificar que o quere en minúsculas? 1219 00:56:27,060 --> 00:56:30,120 1220 00:56:30,120 --> 00:56:31,415 >> ANDI Pengo: Grande. 1221 00:56:31,415 --> 00:56:33,540 Vostedes rin de min esquecendo de poñer un punto e coma. 1222 00:56:33,540 --> 00:56:36,350 Eu asegura que en algún lugar no transcurso da presente clase, 1223 00:56:36,350 --> 00:56:38,260 vai se esqueza de poñer un punto e coma, e 1224 00:56:38,260 --> 00:56:41,116 levará tres horas para descubrir por que o seu código non funciona. 1225 00:56:41,116 --> 00:56:42,240 Xa pasou con todos nós. 1226 00:56:42,240 --> 00:56:43,950 Probablemente vai ocorrer con vostede. 1227 00:56:43,950 --> 00:56:46,352 Obter un bo hábito de usar punto e coma. 1228 00:56:46,352 --> 00:56:46,852 Aceptar. 1229 00:56:46,852 --> 00:56:49,010 >> Audiencia: Quere para facer a barra invertida en? 1230 00:56:49,010 --> 00:56:50,398 >> ANDI Pengo: Claro. 1231 00:56:50,398 --> 00:56:51,856 Quere facer a barra invertida en? 1232 00:56:51,856 --> 00:56:53,020 >> Audiencia: Si. 1233 00:56:53,020 --> 00:56:54,330 >> ANDI Pengo: Grande. 1234 00:56:54,330 --> 00:56:54,830 Aceptar. 1235 00:56:54,830 --> 00:56:57,872 O que fago agora? 1236 00:56:57,872 --> 00:56:58,964 >> Audiencia: Get cadea. 1237 00:56:58,964 --> 00:56:59,880 ANDI Pengo: Obter cadea. 1238 00:56:59,880 --> 00:57:03,080 1239 00:57:03,080 --> 00:57:03,830 Entón o que eu escriba? 1240 00:57:03,830 --> 00:57:04,233 Alguén? 1241 00:57:04,233 --> 00:57:05,040 >> Audiencia: String s. 1242 00:57:05,040 --> 00:57:05,873 >> ANDI Pengo: String s. 1243 00:57:05,873 --> 00:57:07,251 Audiencia: GetString. 1244 00:57:07,251 --> 00:57:09,000 ANDI Pengo: Alguén, me pode dicir onde 1245 00:57:09,000 --> 00:57:12,000 esta función GetString vén? 1246 00:57:12,000 --> 00:57:13,660 >> Audiencia: string.h. 1247 00:57:13,660 --> 00:57:15,256 >> ANDI Pengo: string.h? 1248 00:57:15,256 --> 00:57:16,715 Pensas que é de string.h? 1249 00:57:16,715 --> 00:57:17,830 >> Audiencia: [inaudível]. 1250 00:57:17,830 --> 00:57:18,830 >> ANDI Pengo: Alí vai. 1251 00:57:18,830 --> 00:57:21,280 É a partir CS50.h. 1252 00:57:21,280 --> 00:57:24,530 Se está sempre confuso sobre onde un arquivo de biblioteca é un ficheiro de cabeceira é dicir, 1253 00:57:24,530 --> 00:57:28,450 google literalmente string.h, e eu vou che dicir 1254 00:57:28,450 --> 00:57:30,450 cales son as funcións que están en string.h. 1255 00:57:30,450 --> 00:57:31,340 Aceptar. 1256 00:57:31,340 --> 00:57:35,210 >> Polo tanto, agora que eu creei unha secuencia e eu teño solicitar ao usuario que, 1257 00:57:35,210 --> 00:57:38,770 Eu almacenado nunha variable s nomeados, o que eu teño que facer agora? 1258 00:57:38,770 --> 00:57:40,652 >> Audiencia: Asegúrese de que é en letras minúsculas. 1259 00:57:40,652 --> 00:57:41,360 ANDI Pengo: Sentímolo? 1260 00:57:41,360 --> 00:57:42,545 Audiencia: Asegúrese de que é en letras minúsculas. 1261 00:57:42,545 --> 00:57:44,045 ANDI Pengo: Todo ben, imos facelo. 1262 00:57:44,045 --> 00:57:45,857 Como podo facer iso? 1263 00:57:45,857 --> 00:57:47,940 De feito, para os fins da clase agora, 1264 00:57:47,940 --> 00:57:50,330 nós só estamos indo a asumir que todo 1265 00:57:50,330 --> 00:57:52,620 que a entrada que xa está en minúsculas. 1266 00:57:52,620 --> 00:57:55,430 Se quería comprobar, faría basta engadir unha declaración condicional 1267 00:57:55,430 --> 00:57:59,640 que verifiquei, que percorreu cada elemento de matriz única 1268 00:57:59,640 --> 00:58:02,540 e comprobado se é entre certos valores. 1269 00:58:02,540 --> 00:58:05,627 Eu esquezo o que o número de valores son minúsculas. 1270 00:58:05,627 --> 00:58:07,210 Pode buscalo na táboa ASCII. 1271 00:58:07,210 --> 00:58:08,800 Pero si, iso é un punto moi bo. 1272 00:58:08,800 --> 00:58:11,758 Pero agora, nós só estamos indo a asumir que todas as cordas que entrada 1273 00:58:11,758 --> 00:58:13,130 están en minúsculas. 1274 00:58:13,130 --> 00:58:13,870 Aceptar. 1275 00:58:13,870 --> 00:58:18,069 >> Entón, como eu ía sobre este problema vén despois? 1276 00:58:18,069 --> 00:58:18,860 Audiencia: Para loop. 1277 00:58:18,860 --> 00:58:19,340 ANDI Pengo: Para loop? 1278 00:58:19,340 --> 00:58:19,839 Aceptar. 1279 00:58:19,839 --> 00:58:20,847 Dime o que escribir. 1280 00:58:20,847 --> 00:58:25,230 >> Audiencia: Para int i é igual a 0. 1281 00:58:25,230 --> 00:58:27,230 >> ANDI Pengo: Aceptar. 1282 00:58:27,230 --> 00:58:36,350 >> Audiencia: Oh, de feito, entón facer unha coma e facer n é igual a strlen. 1283 00:58:36,350 --> 00:58:38,940 >> ANDI Pengo: cousa tan importante que eu creo que ela entendeu aquí 1284 00:58:38,940 --> 00:58:42,936 é que non teñen que dicir int n a segunda vez que o fixo. 1285 00:58:42,936 --> 00:58:45,060 Só sei que nun de loop cando está declarando: 1286 00:58:45,060 --> 00:58:47,934 realmente non precisa do int de a segunda vez que fai unha variable. 1287 00:58:47,934 --> 00:58:51,202 Pode dicir n strlen. 1288 00:58:51,202 --> 00:58:52,620 >> Audiencia: De s. 1289 00:58:52,620 --> 00:58:53,510 >> ANDI Pengo: s. 1290 00:58:53,510 --> 00:58:54,706 Aceptar. 1291 00:58:54,706 --> 00:58:58,370 >> Audiencia: Entón un punto e coma. 1292 00:58:58,370 --> 00:59:00,130 >> ANDI Pengo: Claro. 1293 00:59:00,130 --> 00:59:04,050 >> Audiencia: E entón [inaudível] n. 1294 00:59:04,050 --> 00:59:07,480 1295 00:59:07,480 --> 00:59:09,460 Entón i ++. 1296 00:59:09,460 --> 00:59:11,780 >> ANDI Pengo: Grande. 1297 00:59:11,780 --> 00:59:12,280 Todo ben. 1298 00:59:12,280 --> 00:59:14,690 O que queremos dentro deste loop for agora? 1299 00:59:14,690 --> 00:59:17,820 Teña en conta que, se nós estamos indo a ser executado a través unha corda e executado a través dunha matriz, 1300 00:59:17,820 --> 00:59:19,287 queremos comprobar as cousas nel. 1301 00:59:19,287 --> 00:59:20,370 O que imos ter? 1302 00:59:20,370 --> 00:59:23,070 1303 00:59:23,070 --> 00:59:26,900 Este é o tipo de parte complicada agora. 1304 00:59:26,900 --> 00:59:27,960 Alguén ten un palpite? 1305 00:59:27,960 --> 00:59:34,160 1306 00:59:34,160 --> 00:59:34,690 >> Aceptar. 1307 00:59:34,690 --> 00:59:37,830 Entón, en primeiro lugar, como é que imos mesmo acceder? 1308 00:59:37,830 --> 00:59:41,610 Como aínda primeiro cheque ou acceder a un elemento na matriz? 1309 00:59:41,610 --> 00:59:42,920 Como facemos isto? 1310 00:59:42,920 --> 00:59:47,120 Cal é a notación que usan para facer iso? 1311 00:59:47,120 --> 00:59:50,920 Cal é o nome dese array chamado? 1312 00:59:50,920 --> 00:59:52,400 É chamado de s, non? 1313 00:59:52,400 --> 00:59:54,850 >> Lembre, calquera secuencia de caracteres é sempre unha matriz. 1314 00:59:54,850 --> 00:59:58,210 Soporte de forma s i, non? 1315 00:59:58,210 --> 01:00:01,360 Porque ese é o valor actual ou valor de índice que estamos comprobando. 1316 01:00:01,360 --> 01:00:05,156 E nós estamos indo a definir que a igualdade de a-- queremos un valor minúsculas, non? 1317 01:00:05,156 --> 01:00:07,530 Queremos transformar esa lower-- Sentímolo, queremos unha maiúscula. 1318 01:00:07,530 --> 01:00:10,014 Queremos transformar a minúscula valor nun maiúsculas. 1319 01:00:10,014 --> 01:00:11,805 E así como-- Sinto moito, cal é o teu nome? 1320 01:00:11,805 --> 01:00:12,580 >> Audiencia: Heidi. 1321 01:00:12,580 --> 01:00:12,940 >> ANDI Pengo: Sentímolo? 1322 01:00:12,940 --> 01:00:13,280 >> Audiencia: Heidi. 1323 01:00:13,280 --> 01:00:13,988 >> ANDI Pengo: Heidi. 1324 01:00:13,988 --> 01:00:15,850 Como dixo Heidi Inicialmente, estamos probablemente 1325 01:00:15,850 --> 01:00:20,330 Vai ter as-- estamos probablemente vai ter que restar 1326 01:00:20,330 --> 01:00:22,630 32 desde calquera charc que é, non? 1327 01:00:22,630 --> 01:00:24,680 Porque nun ASCII táboa, a diferenza 1328 01:00:24,680 --> 01:00:27,790 entre unha letra minúscula e unha letra maiúscula é de 32. 1329 01:00:27,790 --> 01:00:31,290 Entón, cando estamos a facer iso, estamos probablemente Vai querer restar 32, non? 1330 01:00:31,290 --> 01:00:33,910 >> Entón, nós imos facer s i. 1331 01:00:33,910 --> 01:00:37,590 1332 01:00:37,590 --> 01:00:41,200 Será que todo o mundo entender por que eu fixen iso? 1333 01:00:41,200 --> 01:00:45,760 Porque agora, na nosa matriz, estamos comprobando o índice 0, non? 1334 01:00:45,760 --> 01:00:49,190 E no índice de 0 a corda, que é o primeiro carácter. 1335 01:00:49,190 --> 01:00:51,820 E ese personaxe que imos para supoñer que é minúscula. 1336 01:00:51,820 --> 01:00:55,980 Se queremos facelo maiúscula, nós ten que restar 32 a partir do seu valor, 1337 01:00:55,980 --> 01:00:58,620 porque na nosa ASCII mesa, é así que nós obtelo 1338 01:00:58,620 --> 01:01:01,600 correspondente á próxima valor que pasa maiúscula. 1339 01:01:01,600 --> 01:01:03,714 Será que todo o mundo entende isto? 1340 01:01:03,714 --> 01:01:04,213 Si. 1341 01:01:04,213 --> 01:01:06,530 >> Audiencia: Podería tamén non minúsculas un minus-- 1342 01:01:06,530 --> 01:01:08,080 >> ANDI Pengo: Si, o que é realmente moi bo. 1343 01:01:08,080 --> 01:01:10,455 Eu vou volver a iso pregunta despois facemos iso. 1344 01:01:10,455 --> 01:01:11,060 Si. 1345 01:01:11,060 --> 01:01:13,940 E entón se eu queira mira o que está a suceder, 1346 01:01:13,940 --> 01:01:16,180 Eu probablemente vou quere imprimir, non? 1347 01:01:16,180 --> 01:01:19,930 Alguén me diga o que Quero imprimir aquí. 1348 01:01:19,930 --> 01:01:29,160 >> Audiencia: por cento printf c barra invertida [inaudível]. 1349 01:01:29,160 --> 01:01:33,570 Ese é o valor de [inaudível] s i. 1350 01:01:33,570 --> 01:01:34,614 >> ANDI Pengo: s i, desculpe? 1351 01:01:34,614 --> 01:01:35,530 Audiencia: [inaudível]. 1352 01:01:35,530 --> 01:01:38,550 1353 01:01:38,550 --> 01:01:39,550 ANDI Pengo: Eu non sei. 1354 01:01:39,550 --> 01:01:40,600 Que pensas? 1355 01:01:40,600 --> 01:01:44,016 >> Audiencia: Ben, eu wouldn't-- Eu creo que eu non tería bring-- 1356 01:01:44,016 --> 01:01:46,944 Eu ía leva-la para fóra do dentro, porque [inaudível]. 1357 01:01:46,944 --> 01:01:49,726 1358 01:01:49,726 --> 01:01:51,392 ANDI Pengo: Oh, que tería feito isto? 1359 01:01:51,392 --> 01:01:53,867 Audiencia: É. 1360 01:01:53,867 --> 01:01:56,700 ANDI Pengo: Imos deixar de xeito que é, e eu vou explicar por máis tarde. 1361 01:01:56,700 --> 01:01:58,533 Teña en conta que, mesmo cando ten un lugar reservado, 1362 01:01:58,533 --> 01:02:00,701 quere poñer parénteses en torno a el. 1363 01:02:00,701 --> 01:02:01,200 Todo ben. 1364 01:02:01,200 --> 01:02:04,810 Polo tanto, este debe ser unha función sólida aquí. 1365 01:02:04,810 --> 01:02:06,370 Imos executa-lo e ver se compila. 1366 01:02:06,370 --> 01:02:08,750 Fai superior. 1367 01:02:08,750 --> 01:02:09,250 Uh-oh. 1368 01:02:09,250 --> 01:02:12,030 1369 01:02:12,030 --> 01:02:13,340 Isto non parece moi bo. 1370 01:02:13,340 --> 01:02:14,507 Por que isto está a suceder? 1371 01:02:14,507 --> 01:02:17,340 Como ocorre con calquera erro, quere ir para atrás e para comezar co primeiro, 1372 01:02:17,340 --> 01:02:20,630 porque normalmente provoca un erro lotes de outros erros despois. 1373 01:02:20,630 --> 01:02:26,700 Aquí vemos upper.c: 18: 25, que di me neste programa chamado upper.c, 1374 01:02:26,700 --> 01:02:33,800 na liña 18, implicitamente declarando erro biblioteca de funcións co tipo strlen 1375 01:02:33,800 --> 01:02:36,330 blah unassigned--, eu non sei o que está pasando despois diso. 1376 01:02:36,330 --> 01:02:39,990 >> Todo o que está me dicindo agora é que algo está pasando a strlen. 1377 01:02:39,990 --> 01:02:43,520 E o ordenador está confuso, porque é como, eu non sei o que strlen é? 1378 01:02:43,520 --> 01:02:45,520 O que significa que, probablemente, dicirlle que falta? 1379 01:02:45,520 --> 01:02:46,490 >> Audiencia: Está perdendo [inaudível]. 1380 01:02:46,490 --> 01:02:47,630 >> ANDI Pengo: Está seguro. 1381 01:02:47,630 --> 01:02:49,510 Exactamente. 1382 01:02:49,510 --> 01:02:52,140 Polo tanto, este é o lugar onde se importante asegurarse de 1383 01:02:52,140 --> 01:02:56,970 que todas as funcións que usa no seu código está a ter a cabeceira correcto 1384 01:02:56,970 --> 01:02:59,660 ficheiro para a biblioteca, ou vai obter lotes de erros 1385 01:02:59,660 --> 01:03:01,150 eo seu código non vai para saber o que está pasando. 1386 01:03:01,150 --> 01:03:03,050 Entón, nós estamos indo a incluír string.h aquí. 1387 01:03:03,050 --> 01:03:06,270 >> Agora, cando intenta compilar superior. 1388 01:03:06,270 --> 01:03:08,410 Compilar correctamente. 1389 01:03:08,410 --> 01:03:09,960 Imos realizar este programa. 1390 01:03:09,960 --> 01:03:12,000 Entón escribir algo en letras minúsculas. 1391 01:03:12,000 --> 01:03:14,920 O que vostedes queren escribir? 1392 01:03:14,920 --> 01:03:16,546 Berro para fóra algo. 1393 01:03:16,546 --> 01:03:17,920 Todo ben, Charly acaba de entrar. 1394 01:03:17,920 --> 01:03:18,990 Nós imos escribir o nome de Charly. 1395 01:03:18,990 --> 01:03:21,670 1396 01:03:21,670 --> 01:03:22,840 >> Charly en letras minúsculas. 1397 01:03:22,840 --> 01:03:27,742 E espero que, esperanza, este é vai berrar e cuspir 1398 01:03:27,742 --> 01:03:28,575 Charly en letras maiúsculas. 1399 01:03:28,575 --> 01:03:30,830 Yay! 1400 01:03:30,830 --> 01:03:33,430 que todo o mundo entender como Eu fun sobre como solucionar isto? 1401 01:03:33,430 --> 01:03:36,190 O xeito que eu poida manipular usando números enteiros 1402 01:03:36,190 --> 01:03:39,410 algo que para resolver Quero facer en cordas, 1403 01:03:39,410 --> 01:03:44,390 porque os caracteres e enteiros pode ser referenciado do mesmo xeito, porque 1404 01:03:44,390 --> 01:03:45,540 de cartografía ASCII. 1405 01:03:45,540 --> 01:03:52,890 >> Entón, para volver ao seu punto, se eu quería poñer aquí en vez de 32 1406 01:03:52,890 --> 01:03:58,959 A maiúsculo menos minúsculas só como un que, que funcionaría igual ben, 1407 01:03:58,959 --> 01:04:01,750 porque iso é simplemente o diferenza entre estes dous valores. 1408 01:04:01,750 --> 01:04:09,570 Se eu queira facer esta Charly novamente--. 1409 01:04:09,570 --> 01:04:10,320 Oh, non. 1410 01:04:10,320 --> 01:04:11,820 Eu creo que nós fomos polo camiño mal, non? 1411 01:04:11,820 --> 01:04:13,260 >> Audiencia: [inaudível] un minúsculas. 1412 01:04:13,260 --> 01:04:14,260 >> ANDI Pengo: Alí vai. 1413 01:04:14,260 --> 01:04:22,380 1414 01:04:22,380 --> 01:04:22,880 Yep. 1415 01:04:22,880 --> 01:04:24,920 E fóra cospe Charly. 1416 01:04:24,920 --> 01:04:28,020 Polo tanto, teña coidado cando está subtraindo valores 1417 01:04:28,020 --> 01:04:30,400 para lembrar que é maior que o outro. 1418 01:04:30,400 --> 01:04:35,220 Por exemplo, aquí eu esquezo que é, en realidade, unha minúscula 1419 01:04:35,220 --> 01:04:38,540 maior que A. maiúsculas Entón, cando intentou restar-los para o outro lado 1420 01:04:38,540 --> 01:04:40,600 arredor, eu teño 32 negativo. 1421 01:04:40,600 --> 01:04:42,800 E meu ordenador era como, Non sei o que é. 1422 01:04:42,800 --> 01:04:45,810 É probable só algunhas aleatoria valor que non é moi boa. 1423 01:04:45,810 --> 01:04:48,760 E así asegurarse de que é subtraindo na lonxitude correcto 1424 01:04:48,760 --> 01:04:52,831 para atopar o personaxe que quere. 1425 01:04:52,831 --> 01:04:53,330 Aceptar. 1426 01:04:53,330 --> 01:04:58,550 Alguén está confuso sobre como nós foi sobre como escribir esta función? 1427 01:04:58,550 --> 01:04:59,180 Aceptar. 1428 01:04:59,180 --> 01:05:04,830 Entón, en realidade, unha función xa existe na biblioteca chamada ctype.h. 1429 01:05:04,830 --> 01:05:06,417 Chamado ctype.h da biblioteca. 1430 01:05:06,417 --> 01:05:08,500 Esta función é, en realidade xa escrito para ti. 1431 01:05:08,500 --> 01:05:10,820 Chámase a superior. 1432 01:05:10,820 --> 01:05:13,027 >> E así, con fins de este pset, está indo 1433 01:05:13,027 --> 01:05:15,860 para descubrir que realmente quere empregar moitas das funcións contidas 1434 01:05:15,860 --> 01:05:17,390 dentro da biblioteca ctype. 1435 01:05:17,390 --> 01:05:21,040 Para arriba, para descargar, é superior, é lower-- aqueles son todos funcións 1436 01:05:21,040 --> 01:05:24,914 que vai ser capaz de utilizar moito, moi rapidamente no seu propio código que 1437 01:05:24,914 --> 01:05:26,080 fai exactamente o que iso fai. 1438 01:05:26,080 --> 01:05:28,941 Escribir para fóra como converter unha cadea para maiúsculas. 1439 01:05:28,941 --> 01:05:31,440 Pero este é realmente o código que alguén escribiu 1440 01:05:31,440 --> 01:05:33,800 e que pode acceder a través dunha función diferente. 1441 01:05:33,800 --> 01:05:34,300 Si? 1442 01:05:34,300 --> 01:05:39,570 >> Audiencia: Entón acaba de copiar un está alí e facelo para cada carta? 1443 01:05:39,570 --> 01:05:42,070 >> ANDI Pengo: Si, porque eu non facer se preocupan polos valores de un. 1444 01:05:42,070 --> 01:05:44,540 Só me importa que a diferenza entre eles é de 32, non? 1445 01:05:44,540 --> 01:05:48,210 A diferenza entre minúsculas b maiúsculas e B tamén é 32. 1446 01:05:48,210 --> 01:05:50,860 E a diferenza entre C e maiúsculas C é sempre 32. 1447 01:05:50,860 --> 01:05:53,235 >> Eu só teño que se preocupan o diferenza entre os dous, 1448 01:05:53,235 --> 01:05:56,666 porque todas as cartas seguen o mesmo patrón, non? 1449 01:05:56,666 --> 01:05:58,540 Se eu tivera a diferenza entre un deles, 1450 01:05:58,540 --> 01:06:01,050 Eu sei que a diferenza entre todos eles é. 1451 01:06:01,050 --> 01:06:01,740 Boa pregunta. 1452 01:06:01,740 --> 01:06:04,090 Si. 1453 01:06:04,090 --> 01:06:06,660 Todo o mundo é bo? 1454 01:06:06,660 --> 01:06:09,080 Aceptar. 1455 01:06:09,080 --> 01:06:09,580 Oop. 1456 01:06:09,580 --> 01:06:14,380 1457 01:06:14,380 --> 01:06:15,270 >> Aceptar. 1458 01:06:15,270 --> 01:06:20,310 Entón, outro concepto que é vai ser moi útil como 1459 01:06:20,310 --> 01:06:22,570 continuar a desenvolver seu código é esa idea 1460 01:06:22,570 --> 01:06:25,430 da creación de funcións ou abstracción. 1461 01:06:25,430 --> 01:06:28,479 Entón, agora, todos temos tomado álxebra. 1462 01:06:28,479 --> 01:06:31,770 En álxebra, se ensina que non hai esta cousa marabillosa chamada unha función 1463 01:06:31,770 --> 01:06:35,300 máquina, onde se entrada de un tipo de número, 1464 01:06:35,300 --> 01:06:38,720 é executado a través desta función marabillosa e fóra aparece unha saída diferente, non? 1465 01:06:38,720 --> 01:06:42,220 No código, o mesmo acontece en calquera tipo de función. 1466 01:06:42,220 --> 01:06:48,230 >> Para que eu puidese fisicamente escribir no meu corpo do meu código 1467 01:06:48,230 --> 01:06:52,357 unha declaración principal que realmente fai calquera que sexa o corpo do código está facendo. 1468 01:06:52,357 --> 01:06:54,940 Pero fóra iso, eu tamén podo escribir moitas funcións diferentes 1469 01:06:54,940 --> 01:06:56,320 que facer moitas cousas diferentes. 1470 01:06:56,320 --> 01:06:58,570 Por exemplo, xa comezou a usar algúns deles. 1471 01:06:58,570 --> 01:07:00,610 Que é un Printf-- función que outra persoa 1472 01:07:00,610 --> 01:07:02,870 xa escrito que podemos chamar o noso código. 1473 01:07:02,870 --> 01:07:05,410 Para upper-- neste caso upper-- é outra función 1474 01:07:05,410 --> 01:07:07,330 temos escrito que Pode chamar o noso código. 1475 01:07:07,330 --> 01:07:09,520 E entón eu creo que por iso que facer temos ata funcións? 1476 01:07:09,520 --> 01:07:12,100 Por que non só plop lo todos na mesma liña de código? 1477 01:07:12,100 --> 01:07:13,730 Isto fai máis doado para todos. 1478 01:07:13,730 --> 01:07:19,200 >> Ben, o razoamento detrás diso é, ante todo, da organización. 1479 01:07:19,200 --> 01:07:21,880 É realmente irritante ir por medio de códigos de alguén 1480 01:07:21,880 --> 01:07:25,110 e unha función como printf. 1481 01:07:25,110 --> 01:07:28,570 Se vós realmente sabía o que o función printf implicou a escribir, 1482 01:07:28,570 --> 01:07:30,530 é, tipo, 1.000 liñas de código. 1483 01:07:30,530 --> 01:07:32,357 >> Cada vez que eu quería para printf algo, 1484 01:07:32,357 --> 01:07:35,440 Eu tiña que escribir 1,000 liñas de código, que sería moi aburrido de ler, 1485 01:07:35,440 --> 01:07:36,290 non? 1486 01:07:36,290 --> 01:07:38,860 É por iso que temos só creou esta función abstracto 1487 01:07:38,860 --> 01:07:41,670 que xa temos alguén outra persoa escribiu noutro lugar. 1488 01:07:41,670 --> 01:07:44,920 E cada vez que precisa usalo en noso código, nós só temos que dicir printf. 1489 01:07:44,920 --> 01:07:48,070 E que é capaz de usar a función alguén escribise no noso código. 1490 01:07:48,070 --> 01:07:51,020 Ela fai máis doado de organización de ler o código. 1491 01:07:51,020 --> 01:07:53,460 >> En segundo lugar, é a simplificación. 1492 01:07:53,460 --> 01:07:56,750 El simplifica os pasos que temos necesarias para resolver o noso problema. 1493 01:07:56,750 --> 01:07:59,300 Printf, funcións como printf, funcións como a superior 1494 01:07:59,300 --> 01:08:03,560 son todas as cousas que nos permiten simplificar o noso código abaixo polo que é máis fácil. 1495 01:08:03,560 --> 01:08:05,830 Ea última cousa é a posibilidade de reutilización. 1496 01:08:05,830 --> 01:08:08,710 >> Así, o feito de que temos unha función chamada printf 1497 01:08:08,710 --> 01:08:11,990 que podemos chamar de moitos diferente veces e permite que sexa reutilizable. 1498 01:08:11,990 --> 01:08:14,980 Se eu fose escribir printf, Só gravala-lo unha vez. 1499 01:08:14,980 --> 01:08:16,439 El só existe na medida en que un só lugar. 1500 01:08:16,439 --> 01:08:19,890 Se eu quixese facelo de novo, eu faría ten que copiar e pegar todo isto 1501 01:08:19,890 --> 01:08:21,760 na miña segunda liña de código. 1502 01:08:21,760 --> 01:08:24,880 É por iso que se crearmos unha función que existe fóra do noso principal, 1503 01:08:24,880 --> 01:08:26,880 podemos simplemente invocar Lo e reutiliza-la sempre 1504 01:08:26,880 --> 01:08:29,604 necesitamos de xeito que é moito máis fácil para nós, como programas de escribir. 1505 01:08:29,604 --> 01:08:32,220 1506 01:08:32,220 --> 01:08:35,549 >> Así, a forma que nós realmente escribir unha función é moi semellante, non? 1507 01:08:35,549 --> 01:08:37,590 Este é o tipo da primeira caso en que nós imos 1508 01:08:37,590 --> 01:08:42,830 ver un take función nun estilo distinto do noso void main int. 1509 01:08:42,830 --> 01:08:46,779 Neste caso, se eu quixese escribir unha función chamada q, non? 1510 01:08:46,779 --> 01:08:49,370 >> E o valor int aquí é todo a dicirme, 1511 01:08:49,370 --> 01:08:51,649 o que quero iso funcionar para volver para min? 1512 01:08:51,649 --> 01:08:54,484 Se eu queira cubo un número enteiro, Vou querer introducir. 1513 01:08:54,484 --> 01:08:55,525 Estes son os parámetros. 1514 01:08:55,525 --> 01:08:58,490 Eu estou indo a entradas un valor do tipo int. 1515 01:08:58,490 --> 01:09:01,300 E eu vou volver outro tipo de valor int. 1516 01:09:01,300 --> 01:09:03,050 E aquí, como pode ver, todo o que eu estou facendo 1517 01:09:03,050 --> 01:09:07,300 é cubing calquera que sexa a miña entrada é como a miña saída e devolve-lo. 1518 01:09:07,300 --> 01:09:10,790 >> Entón, todo isto fai é función toma algún tipo de número enteiro. 1519 01:09:10,790 --> 01:09:14,979 El multiplica por si só dúas veces de xeito que en cubos efecto. 1520 01:09:14,979 --> 01:09:17,729 E, a continuación, el retorna o que quere que a saída é. 1521 01:09:17,729 --> 01:09:20,540 Polo tanto, neste caso, é dúas liñas de código que tiñamos de escribir extra. 1522 01:09:20,540 --> 01:09:22,880 Pero se nós quería chamar sobre iso varias veces, 1523 01:09:22,880 --> 01:09:26,210 é moito máis fácil de escribir que un liña aquí é o cubo de 1524 01:09:26,210 --> 01:09:28,830 Ten que pasar por varias veces. 1525 01:09:28,830 --> 01:09:34,180 >> Así, a forma que, esencialmente, calquera formato para calquera tipo de función 1526 01:09:34,180 --> 01:09:36,420 vai existir é como aquí. 1527 01:09:36,420 --> 01:09:38,659 Entón temos o nome da función. 1528 01:09:38,659 --> 01:09:39,950 Neste caso, é chamado cubo. 1529 01:09:39,950 --> 01:09:42,033 E nós nomealo porque cubo é doado de lembrar. 1530 01:09:42,033 --> 01:09:44,220 Pode nomealo cadrados e el realmente pode ser en cubos. 1531 01:09:44,220 --> 01:09:45,500 Non importa. 1532 01:09:45,500 --> 01:09:48,020 Só un nome que está atribuíndo a súa función. 1533 01:09:48,020 --> 01:09:51,660 >> Este aquí, int, é a tipo de parámetro que necesitas. 1534 01:09:51,660 --> 01:09:54,149 Entón, o que fai esta función precisa, a fin de operar? 1535 01:09:54,149 --> 01:09:55,990 Ben, el que de unha entrada. 1536 01:09:55,990 --> 01:09:56,704 Eu nomeei-entrada. 1537 01:09:56,704 --> 01:09:58,120 Pode nomealo o que quere. 1538 01:09:58,120 --> 01:10:00,500 Pero eu teño algo do tipo int. 1539 01:10:00,500 --> 01:10:03,730 Vai realmente realizar o que está dentro de aquí, 1540 01:10:03,730 --> 01:10:04,990 o corpo da función. 1541 01:10:04,990 --> 01:10:07,847 E, a continuación, o tipo de retorno aquí, este int-- 1542 01:10:07,847 --> 01:10:09,680 todo isto está me dicindo é que esta función é 1543 01:10:09,680 --> 01:10:11,250 vai voltar a min en int. 1544 01:10:11,250 --> 01:10:14,460 Por iso, vai levar nun int, e el lle vai dar de volta un int. 1545 01:10:14,460 --> 01:10:17,750 Será que todo o mundo entender como o formato deste tipo funciona? 1546 01:10:17,750 --> 01:10:18,250 Legal. 1547 01:10:18,250 --> 01:10:24,690 1548 01:10:24,690 --> 01:10:25,740 >> Aceptar. 1549 01:10:25,740 --> 01:10:31,770 Polo tanto, non se preocupe se isto parece un pouco dereito abstracto agora. 1550 01:10:31,770 --> 01:10:33,450 Isto é algo que nós imos falar sobre. 1551 01:10:33,450 --> 01:10:36,310 Imos mergullar no máis profundo máis tarde no curso. 1552 01:10:36,310 --> 01:10:41,170 O xeito que calquera tipo de nivel superior abstracción destas cousas traballo 1553 01:10:41,170 --> 01:10:43,530 é que, en memoria, en ordenador, todo 1554 01:10:43,530 --> 01:10:47,660 almacénase neste tipo de pila, eu vou dicir. 1555 01:10:47,660 --> 01:10:49,070 >> Entón, alí enriba na parte superior. 1556 01:10:49,070 --> 01:10:50,861 Non sei se podedes ver que ben. 1557 01:10:50,861 --> 01:10:52,590 Vou tentar facer zoom. 1558 01:10:52,590 --> 01:10:55,111 Aquí, na parte superior, nós ter o texto físico 1559 01:10:55,111 --> 01:10:57,860 que o ordenador é interpreting-- todos os ceros e uns que 1560 01:10:57,860 --> 01:10:59,540 existe no noso ordenador. 1561 01:10:59,540 --> 01:11:03,390 E entón temos o inicializar datos de datos e non inicien, 1562 01:11:03,390 --> 01:11:05,340 o que chamamos variables globais. 1563 01:11:05,340 --> 01:11:08,200 Así, as variables que hai en todos os programas 1564 01:11:08,200 --> 01:11:11,815 e en toda a súa totalidade, esencialmente, código. 1565 01:11:11,815 --> 01:11:13,940 Non te preocupes se vostedes son tipo de claro a este respecto. 1566 01:11:13,940 --> 01:11:16,060 Realmente non importa agora. 1567 01:11:16,060 --> 01:11:18,680 >> E entón temos o que é chamado dunha pila dunha pila. 1568 01:11:18,680 --> 01:11:21,140 Pense nunha pila literalmente como só como unha pila de cousas, 1569 01:11:21,140 --> 01:11:23,098 unha pila de diferente cousas que están a ser empurrados enriba 1570 01:11:23,098 --> 01:11:27,870 un do outro que almacenar os diversos variables e sintaxe no seu código. 1571 01:11:27,870 --> 01:11:31,460 E, a continuación, aquí no fondo, temos as variábeis de entorno 1572 01:11:31,460 --> 01:11:35,480 que está executando dentro só a súa pequena liña de código. 1573 01:11:35,480 --> 01:11:40,510 >> E nós só estamos indo a zoom no da parte real do conxunto. 1574 01:11:40,510 --> 01:11:43,880 Entón, aquí mesmo, se fósemos para aumentar en só nesta área do conxunto, 1575 01:11:43,880 --> 01:11:45,140 este é o que parece. 1576 01:11:45,140 --> 01:11:48,590 E iso é realmente moi importante cando vostedes falan sobre funcións, 1577 01:11:48,590 --> 01:11:52,330 porque aviso de que o memoria do seu ordenador 1578 01:11:52,330 --> 01:11:55,600 é almacenar as variables e as funcións 1579 01:11:55,600 --> 01:11:58,790 e os parámetros de ambos seu función e as súas principais variables 1580 01:11:58,790 --> 01:12:00,190 en diferentes lugares. 1581 01:12:00,190 --> 01:12:03,390 >> Entón, agora, a principal é a función real 1582 01:12:03,390 --> 01:12:04,780 que está executando nun código. 1583 01:12:04,780 --> 01:12:08,050 Vostede seus parámetros almacenados aquí e as súas variables locais almacenados aquí. 1584 01:12:08,050 --> 01:12:12,270 Variable local significa só que calquera variable que existe só dentro desa función. 1585 01:12:12,270 --> 01:12:15,610 E encima diso, ten ese función separada chamada cubo. 1586 01:12:15,610 --> 01:12:18,240 Ten que é parámetros así como os veciños locais. 1587 01:12:18,240 --> 01:12:21,540 >> E a razón que pode vexa aquí é que o que 1588 01:12:21,540 --> 01:12:25,030 ocorre cando cubo leva nunha valor da súa función principal 1589 01:12:25,030 --> 01:12:27,640 é que, en realidade, está copiando que rematou. 1590 01:12:27,640 --> 01:12:31,470 Entón, se eu quería cubo 2 e 8 de regreso, que 2 1591 01:12:31,470 --> 01:12:33,730 en realidade, é introducido como un parámetro e está 1592 01:12:33,730 --> 01:12:37,690 copiado forma que ten iso xa existente en dous lugares diferentes na memoria. 1593 01:12:37,690 --> 01:12:40,520 E ten que ter moito coidado en lembranza de que unha desas 1594 01:12:40,520 --> 01:12:42,520 en realidade está manipulando. 1595 01:12:42,520 --> 01:12:47,170 E un exemplo do que pasou que sería moi, moi malo 1596 01:12:47,170 --> 01:12:48,050 existe aquí. 1597 01:12:48,050 --> 01:12:50,760 1598 01:12:50,760 --> 01:12:58,650 >> Entón aquí, eu teño, en teoría, un programa aquí, unha función principal 1599 01:12:58,650 --> 01:13:02,180 que estou declarando un int x é igual a 1. 1600 01:13:02,180 --> 01:13:04,505 Estou declarando outro int y é igual a 2. 1601 01:13:04,505 --> 01:13:06,380 E entón eu estou funcionando- a través desta función 1602 01:13:06,380 --> 01:13:09,647 chamado intercambio, onde supoñer que está cambiando os dous valores. 1603 01:13:09,647 --> 01:13:11,480 E entón eu vou imprimilas los, non? 1604 01:13:11,480 --> 01:13:13,220 Isto é o que quero que este programa para facer. 1605 01:13:13,220 --> 01:13:15,180 >> Entón, imos baixar e un ollo. 1606 01:13:15,180 --> 01:13:18,200 Entón, se eu realmente escribir un diferente función, como se pode ver, 1607 01:13:18,200 --> 01:13:19,750 nós temos a nosa principal función aquí. 1608 01:13:19,750 --> 01:13:22,860 E entón temos o noso segunda función aquí. 1609 01:13:22,860 --> 01:13:24,520 Void intercambio. 1610 01:13:24,520 --> 01:13:27,090 Baleiro significa só que é non vai voltar nada. 1611 01:13:27,090 --> 01:13:28,930 O nome da función é chamado intercambio, e é 1612 01:13:28,930 --> 01:13:33,730 indo a dúas variables de entrada, e un int int b, a partir da súa función [inaudível]. 1613 01:13:33,730 --> 01:13:39,010 >> Entón, basicamente aquí, somos X e Y que pasa a esta función. 1614 01:13:39,010 --> 01:13:40,760 E se fósemos crear isto-- así que queremos 1615 01:13:40,760 --> 01:13:42,420 para crear un valor temporal, non? 1616 01:13:42,420 --> 01:13:43,930 Imos asignar iso a un. 1617 01:13:43,930 --> 01:13:45,388 E entón un vai agora igual b. 1618 01:13:45,388 --> 01:13:47,660 E b vai estar de volta onde o valor temporal foi, 1619 01:13:47,660 --> 01:13:51,070 que é un, porque cando quere cambiar cousas, 1620 01:13:51,070 --> 01:13:52,320 non pode simplemente gusta trocalos. 1621 01:13:52,320 --> 01:13:54,360 >> Ten que manter un fóra para que se lembra 1622 01:13:54,360 --> 01:13:56,485 o que é iso, porque xa cambiar un, esquece 1623 01:13:56,485 --> 01:13:58,200 o que ese valor orixinal, verdade? 1624 01:13:58,200 --> 01:14:00,990 Polo tanto, en teoría, este programa debería funcionar, non? 1625 01:14:00,990 --> 01:14:03,630 Se eu quixese cambiar o dous, deben cambiar. 1626 01:14:03,630 --> 01:14:05,490 Entón, imos executa-lo e ver se funciona. 1627 01:14:05,490 --> 01:14:11,130 1628 01:14:11,130 --> 01:14:16,940 >> Entón, como podedes ver, x Era unha vez un e y era xa dous. 1629 01:14:16,940 --> 01:14:21,475 E se eu imprimir lo, X aínda é 1 e y é 2. 1630 01:14:21,475 --> 01:14:25,970 Hmm, este programa non parece ser funcionando de maneira que quero que funcione. 1631 01:14:25,970 --> 01:14:29,950 Alguén quere tomar un tiro en adiviñando porque iso estaba pasando? 1632 01:14:29,950 --> 01:14:34,430 Ten que ver coa forma na que que as cousas son diferentes 1633 01:14:34,430 --> 01:14:38,172 almacenados en lugares diferentes na memoria. 1634 01:14:38,172 --> 01:14:39,377 >> Aceptar. 1635 01:14:39,377 --> 01:14:41,960 Entón vostedes non teñen que preocuparse moito sobre iso agora. 1636 01:14:41,960 --> 01:14:46,610 Pero sei que o cubo dos lugares variables foron a e b, 1637 01:14:46,610 --> 01:14:49,230 porque aquí na nosa función, temos declarou a eb 1638 01:14:49,230 --> 01:14:53,570 como as variables que hai dentro do cubo, que a función. 1639 01:14:53,570 --> 01:14:59,490 Pero como se pode ver, os parámetros que está tomando en estaban sendo gardados aquí. 1640 01:14:59,490 --> 01:15:01,370 Pero non estabamos realmente retornando nada. 1641 01:15:01,370 --> 01:15:03,120 Non estabamos realmente cambiando xe y. 1642 01:15:03,120 --> 01:15:04,440 Estabamos só cambiando a e b. 1643 01:15:04,440 --> 01:15:08,340 >> Nós tiña copiado x e y en algo chamado a e b. 1644 01:15:08,340 --> 01:15:11,092 Pero nunca realmente manipulado x e y si. 1645 01:15:11,092 --> 01:15:12,800 Vostedes están vendo como isto está a suceder? 1646 01:15:12,800 --> 01:15:16,140 É que nós simplemente copiou acabou, pero non, en realidade, mantido 1647 01:15:16,140 --> 01:15:18,030 o control de onde estaban na memoria. 1648 01:15:18,030 --> 01:15:20,127 >> E agora o ordenador está a buscar, oh, eu teño 1649 01:15:20,127 --> 01:15:21,960 executar esa cousa medio esta función encantadora. 1650 01:15:21,960 --> 01:15:23,690 Pero x e y son aínda xe y. 1651 01:15:23,690 --> 01:15:26,240 Nada aconteceu con Los debido ao feito 1652 01:15:26,240 --> 01:15:28,340 que estes parámetros e variables locais 1653 01:15:28,340 --> 01:15:30,150 almacénanse nunha diferente poñer na memoria. 1654 01:15:30,150 --> 01:15:32,030 E este é un de nivel superior concepto que imos 1655 01:15:32,030 --> 01:15:34,300 comezar a ver máis tarde no curso. 1656 01:15:34,300 --> 01:15:36,950 Pero só sei que este é un problema que pode ocorrer 1657 01:15:36,950 --> 01:15:41,400 e que nós imos descubrir formas de como tratar con isto máis tarde no curso. 1658 01:15:41,400 --> 01:15:41,900 Aceptar. 1659 01:15:41,900 --> 01:15:47,750 1660 01:15:47,750 --> 01:15:48,250 Todo ben. 1661 01:15:48,250 --> 01:15:51,780 Así, o último concepto que estamos realmente cubrirá 1662 01:15:51,780 --> 01:15:53,880 que vai ser útil ao pset esta semana 1663 01:15:53,880 --> 01:15:56,060 son o que son chamados argumentos de liña de comandos. 1664 01:15:56,060 --> 01:16:00,820 Entón Rob na súa charla atravesou tipo de brevemente sobre como estes traballos. 1665 01:16:00,820 --> 01:16:02,770 Esencialmente sabe que cando está escribindo 1666 01:16:02,770 --> 01:16:06,280 como unha función principal, cando escribiu funcións antes no pasado, 1667 01:16:06,280 --> 01:16:07,804 tivemos void main int. 1668 01:16:07,804 --> 01:16:10,470 E a razón que tivemos alí baleiro foi porque os nosos programas non 1669 01:16:10,470 --> 01:16:12,520 Debe os valores de entrada para realizar, non? 1670 01:16:12,520 --> 01:16:16,020 Cando eu execute Mario, eu non precisaba para realmente escriba algo 1671 01:16:16,020 --> 01:16:16,970 cando eu execute Mario. 1672 01:16:16,970 --> 01:16:20,170 Podería pedir ao usuario despois. 1673 01:16:20,170 --> 01:16:22,450 Pero isto non sempre será así. 1674 01:16:22,450 --> 01:16:24,980 >> Por exemplo, neste O problema de semana define, 1675 01:16:24,980 --> 01:16:28,365 vai ser proposta que, en Ademais de realizar o seu programa, 1676 01:16:28,365 --> 01:16:30,990 vai querer entrada certas cousas en liña recta como 1677 01:16:30,990 --> 01:16:32,050 realizar o seu programa. 1678 01:16:32,050 --> 01:16:34,720 Entón, a nosa forma de facelo é chamado un argumento da liña de comandos, que 1679 01:16:34,720 --> 01:16:37,280 é como un argumento pode introducir directamente 1680 01:16:37,280 --> 01:16:39,260 como estás executar o programa. 1681 01:16:39,260 --> 01:16:44,680 >> Así, a cualificación para iso, é moi complexo para o futuro, 1682 01:16:44,680 --> 01:16:47,320 pero realmente non é tan difícil. Entón int main-- 1683 01:16:47,320 --> 01:16:48,910 que é só a súa función principal. 1684 01:16:48,910 --> 01:16:52,110 En argc coma soportes secuencia argv. 1685 01:16:52,110 --> 01:16:56,040 Entón, todo o que está dicindo é que este int argc-- todo o que está dicindo a vostede 1686 01:16:56,040 --> 01:17:00,560 é que aqueles son o número de argumentos do ordenador debe esperar. 1687 01:17:00,560 --> 01:17:03,130 >> Entón, unha cousa que é realmente importante para manter o control de 1688 01:17:03,130 --> 01:17:07,080 é o nome físico do seu programa conta como un dos argumentos. 1689 01:17:07,080 --> 01:17:11,080 Entón, se eu quería ter o meu programa realizar unha liña de comandos adicional 1690 01:17:11,080 --> 01:17:13,310 argumento, son realmente terá dous. 1691 01:17:13,310 --> 01:17:15,080 Argc realmente vai ser dous. 1692 01:17:15,080 --> 01:17:18,010 E entón secuencia argv bracket-- todo o que está facendo, 1693 01:17:18,010 --> 01:17:20,410 iso está me dando unha matriz de cadeas que é 1694 01:17:20,410 --> 01:17:24,870 indo só para ver e almacenar o que todos estes argumentos na liña de comandos son. 1695 01:17:24,870 --> 01:17:34,090 >> Así, por exemplo, se eu quixese ter esa programa, ./copy infile outfile, non? 1696 01:17:34,090 --> 01:17:37,330 Isto é só un típico mando Linux. 1697 01:17:37,330 --> 01:17:38,830 O que realmente é argc? 1698 01:17:38,830 --> 01:17:41,320 Cantos argumentos da liña de comandos están aí realmente niso? 1699 01:17:41,320 --> 01:17:45,130 Todo iso fai é facer unha copia do un infile do nome dun ficheiro 1700 01:17:45,130 --> 01:17:47,070 e copia para outro ficheiro, non? 1701 01:17:47,070 --> 01:17:48,700 Isto é todo isto está facendo. 1702 01:17:48,700 --> 01:17:53,080 Como verás, eu estou facendo iso nunha liña sen realmente ter do programa. 1703 01:17:53,080 --> 01:17:55,380 >> Cal é a nosa argc neste caso? 1704 01:17:55,380 --> 01:17:58,968 Cantos argumentos que temos? 1705 01:17:58,968 --> 01:17:59,634 Audiencia: Tres? 1706 01:17:59,634 --> 01:18:01,200 ANDI Pengo: Temos tres, exactamente. 1707 01:18:01,200 --> 01:18:05,030 Polo tanto, é moi intuitivo para só creo que é só 1708 01:18:05,030 --> 01:18:06,290 o infile e outfile o. 1709 01:18:06,290 --> 01:18:10,190 Pero sei que o nome físico do programa que está executando conta como unha. 1710 01:18:10,190 --> 01:18:13,220 Polo tanto, neste caso, argc é, en realidade, tres. 1711 01:18:13,220 --> 01:18:15,860 Que tal, o que é argv 0? 1712 01:18:15,860 --> 01:18:18,180 Lembre, todo o Argumentos da liña de comandos 1713 01:18:18,180 --> 01:18:20,500 foron almacenados nunha matriz de cadeas. 1714 01:18:20,500 --> 01:18:24,140 Entón, se eu tentar acceder a ela, o que sería argv soporte 0 dáme? 1715 01:18:24,140 --> 01:18:25,364 >> Audiencia: [inaudível]. 1716 01:18:25,364 --> 01:18:26,155 ANDI Pengo: Exactamente. 1717 01:18:26,155 --> 01:18:28,550 Me daría o punto cortar copia, porque iso 1718 01:18:28,550 --> 01:18:31,070 o elemento 0, o primeiro elemento da miña matriz. 1719 01:18:31,070 --> 01:18:33,236 E sobre argv 1? 1720 01:18:33,236 --> 01:18:33,945 >> Audiencia: INFILE. 1721 01:18:33,945 --> 01:18:35,070 ANDI Pengo: INFILE, exactamente. 1722 01:18:35,070 --> 01:18:36,272 E sobre argv 2? 1723 01:18:36,272 --> 01:18:37,022 Audiencia: OutFile. 1724 01:18:37,022 --> 01:18:38,190 ANDI Pengo: OutFile. 1725 01:18:38,190 --> 01:18:39,290 Isto é un pouco complicado agora. 1726 01:18:39,290 --> 01:18:42,630 O que vostedes pensan argv 3 estará me dando 1727 01:18:42,630 --> 01:18:45,522 se eu intentase imprimir iso? 1728 01:18:45,522 --> 01:18:48,260 >> Audiencia: [inaudível]? 1729 01:18:48,260 --> 01:18:50,164 >> ANDI Pengo: Será que ten unha man enriba? 1730 01:18:50,164 --> 01:18:50,663 Si. 1731 01:18:50,663 --> 01:18:51,550 >> Audiencia: Unha alternativa. 1732 01:18:51,550 --> 01:18:52,341 >> ANDI Pengo: Exactamente. 1733 01:18:52,341 --> 01:18:55,440 Entón lembre de unha conferencia que ten ao final dunha carreira algo 1734 01:18:55,440 --> 01:18:56,640 chamado un terminador nulo? 1735 01:18:56,640 --> 01:18:58,890 Nós imos chegar a esta tamén máis adiante, na clase. 1736 01:18:58,890 --> 01:19:02,472 Pero sabemos que na notación, o xeito no que o ordenador 1737 01:19:02,472 --> 01:19:04,430 sabe que é o fin da matriz é que 1738 01:19:04,430 --> 01:19:07,310 pon algo chamado un nulo terminator ou un trazo cero. 1739 01:19:07,310 --> 01:19:12,047 >> Entón, se tentar acceder argv 3, está indo bater ese trazo 0. 1740 01:19:12,047 --> 01:19:13,630 Isto é aínda máis dunha pregunta capciosa. 1741 01:19:13,630 --> 01:19:17,020 E sobre argv 4? 1742 01:19:17,020 --> 01:19:20,920 Polo tanto, este é terminador nulo pasado pasado dos límites da nosa matriz. 1743 01:19:20,920 --> 01:19:24,380 ¿Que pensas que vai ocorrer cando intentamos facelo? 1744 01:19:24,380 --> 01:19:25,842 >> Audiencia: [inaudível]? 1745 01:19:25,842 --> 01:19:26,550 ANDI Pengo: Sentímolo? 1746 01:19:26,550 --> 01:19:28,025 Digamos que un pouco máis alto? 1747 01:19:28,025 --> 01:19:29,086 >> Audiencia: [inaudível]. 1748 01:19:29,086 --> 01:19:29,710 ANDI Pengo: Si. 1749 01:19:29,710 --> 01:19:32,420 Que é o nome do área que probablemente vai conseguir. 1750 01:19:32,420 --> 01:19:36,610 Pero sabe que argv 4-- que permite o acceso 1751 01:19:36,610 --> 01:19:38,610 lugares no seu ordenador de memoria que realmente 1752 01:19:38,610 --> 01:19:41,650 non debe ser conmovedora, porque agora xa sabe o que é argv. 1753 01:19:41,650 --> 01:19:46,220 Vostede sabe que é unha matriz de tamaño 3 que ten dot copia, infile e outfile. 1754 01:19:46,220 --> 01:19:50,200 >> Se tentar ir tan ademais que que é pasado o terminador nulo, 1755 01:19:50,200 --> 01:19:53,050 seu ordenador ten, probabelmente, almacenado algo en argv 4. 1756 01:19:53,050 --> 01:19:55,790 E realmente non debe ser permite o acceso ás argv 4, 1757 01:19:55,790 --> 01:19:58,130 porque ten un arquivo armario e só está 1758 01:19:58,130 --> 01:19:59,790 permitiu o acceso a estes tres baldas. 1759 01:19:59,790 --> 01:20:02,870 Pero se tentar chegar moito máis alá a plataforma de onde está autorizado, 1760 01:20:02,870 --> 01:20:04,930 vai comezar a xogar con outras cousas na memoria do ordenador. 1761 01:20:04,930 --> 01:20:06,690 Isto vai ser moi, moi malo. 1762 01:20:06,690 --> 01:20:07,440 Entón, só sei que. 1763 01:20:07,440 --> 01:20:10,370 Teña moito coidado para que non pode comezar aleatoriamente 1764 01:20:10,370 --> 01:20:14,772 acceder elementos nunha matriz que non estaban en o que quería crear. 1765 01:20:14,772 --> 01:20:17,114 Yep. 1766 01:20:17,114 --> 01:20:18,430 >> Aceptar. 1767 01:20:18,430 --> 01:20:26,360 Entón, imos facer outro exemplo da terminal aquí. 1768 01:20:26,360 --> 01:20:27,300 Aceptar. 1769 01:20:27,300 --> 01:20:29,900 Entón Rob rapidamente charla o outro día fun 1770 01:20:29,900 --> 01:20:35,040 a través deste exemplo, onde tivo int main int argc argv cadea 1771 01:20:35,040 --> 01:20:39,090 corchetes, o que está me dicindo que eu son terá argumentos de liña de comandos. 1772 01:20:39,090 --> 01:20:41,860 >> Ten, se é igual a argc é igual a 2-- lembre, 1773 01:20:41,860 --> 01:20:45,070 é igual a igual significa comparación. 1774 01:20:45,070 --> 01:20:47,980 De ser igual a 2, entón eu son indo para imprimir Ola, 1775 01:20:47,980 --> 01:20:51,190 calquera que sexa o primeiro elemento da matriz é. 1776 01:20:51,190 --> 01:20:54,100 Impresión Else, Ola mundo. 1777 01:20:54,100 --> 01:20:56,300 Que isto vai esencialmente ocorrer? 1778 01:20:56,300 --> 01:21:00,570 Alguén pode explicar só en Inglés o que este programa está facendo? 1779 01:21:00,570 --> 01:21:01,272 Si. 1780 01:21:01,272 --> 01:21:08,160 >> Audiencia: Se alguén escribiu nun comando e dixo que o seu nome e apelidos, 1781 01:21:08,160 --> 01:21:12,096 non vai só imprimir o primeiro e dicir: Ola, 1782 01:21:12,096 --> 01:21:14,090 calquera que sexa o seu primeiro nome é. 1783 01:21:14,090 --> 01:21:15,410 >> ANDI Pengo: OK, imos executalo. 1784 01:21:15,410 --> 01:21:22,470 Así, por exemplo, se eu fose facer o ficheiro facer Ola Ola a-- 1785 01:21:22,470 --> 01:21:24,500 a-- o que me quere de entrada? 1786 01:21:24,500 --> 01:21:25,900 >> Audiencia: Primeiro e último nome. 1787 01:21:25,900 --> 01:21:27,280 >> ANDI Pengo: Primeiro e último nome? 1788 01:21:27,280 --> 01:21:28,180 Espazos? 1789 01:21:28,180 --> 01:21:29,690 >> Audiencia: É. 1790 01:21:29,690 --> 01:21:33,490 >> ANDI Pengo: Pode alguén dizer- me agora, o que é argc? 1791 01:21:33,490 --> 01:21:35,630 Só dereito alí? 1792 01:21:35,630 --> 01:21:36,290 Ops, desculpe. 1793 01:21:36,290 --> 01:21:37,920 Déixeme volver. 1794 01:21:37,920 --> 01:21:40,740 Cantos argumentos da liña de comandos é-- vostedes non poden realmente ver. 1795 01:21:40,740 --> 01:21:43,760 Pero eu vou tentar facer zoom. 1796 01:21:43,760 --> 01:21:44,290 Estou intentando. 1797 01:21:44,290 --> 01:21:45,414 Si, hai tres, non? 1798 01:21:45,414 --> 01:21:48,750 É barra dot Ola, é Andi, e é Pengo. 1799 01:21:48,750 --> 01:21:51,870 >> Entón, o que vostedes pensan que esta programa será imprimir? 1800 01:21:51,870 --> 01:21:55,550 1801 01:21:55,550 --> 01:21:56,060 Oh. 1802 01:21:56,060 --> 01:21:57,120 Oh, desculpe. 1803 01:21:57,120 --> 01:21:57,810 Nome mal. 1804 01:21:57,810 --> 01:22:03,630 1805 01:22:03,630 --> 01:22:06,130 Está imprimindo, Ola mundo. 1806 01:22:06,130 --> 01:22:09,603 Alguén quere explicar por que isto está a suceder? 1807 01:22:09,603 --> 01:22:10,103 Si? 1808 01:22:10,103 --> 01:22:11,019 >> Audiencia: [inaudível]. 1809 01:22:11,019 --> 01:22:14,439 1810 01:22:14,439 --> 01:22:15,230 ANDI Pengo: Exactamente. 1811 01:22:15,230 --> 01:22:19,940 Entón, aquí, son condicionais é, se argc é igual é igual a 2. 1812 01:22:19,940 --> 01:22:23,650 Así, só no caso de que hai dous argumentos de liña de comandos. 1813 01:22:23,650 --> 01:22:25,850 Entón eu estou indo a imprimir, Ola, sexa cal sexa. 1814 01:22:25,850 --> 01:22:28,210 Pero máis, eu vou imprimir só, Ola mundo. 1815 01:22:28,210 --> 01:22:30,040 Así que alguén quere para me dar un exemplo 1816 01:22:30,040 --> 01:22:35,050 de como eu sería capaz de realmente obtelo para imprimir o valor de argv 1? 1817 01:22:35,050 --> 01:22:38,600 >> O que eu tería a entrada aquí? 1818 01:22:38,600 --> 01:22:39,840 Só unha cousa, non? 1819 01:22:39,840 --> 01:22:42,900 Porque o Ola punto para xa conta como o primeiro argumento. 1820 01:22:42,900 --> 01:22:43,930 Eu só teño unha. 1821 01:22:43,930 --> 01:22:46,470 Entón dot Ola eu só fago Andi. 1822 01:22:46,470 --> 01:22:47,270 Ola, Andi. 1823 01:22:47,270 --> 01:22:49,186 Será que todo o mundo entender por que isto está a suceder? 1824 01:22:49,186 --> 01:22:49,602 Si. 1825 01:22:49,602 --> 01:22:52,500 >> Audiencia: Entón, o espazo entre a linha-- comando é [inaudível]? 1826 01:22:52,500 --> 01:22:56,247 1827 01:22:56,247 --> 01:22:56,830 ANDI Pengo: Non. 1828 01:22:56,830 --> 01:23:03,810 Así, o espazo nunha liña de comandos argumento, x, para dicir ao seu ordenador 1829 01:23:03,810 --> 01:23:06,820 que este é o comezo dunha nova secuencia. 1830 01:23:06,820 --> 01:23:11,130 Entón secuencia argv aqui-- el tendas todos os seus argumentos de liña de comandos 1831 01:23:11,130 --> 01:23:13,110 en cordas. 1832 01:23:13,110 --> 01:23:17,420 E así o espazo na liña de comandos argument-- todo o que fai é dicirlle, 1833 01:23:17,420 --> 01:23:21,030 é dicir, ao final dunha cadea e é hora de seguir adiante a outro. 1834 01:23:21,030 --> 01:23:21,990 >> Si. 1835 01:23:21,990 --> 01:23:23,530 Isto é moi importante para seu pset, porque é 1836 01:23:23,530 --> 01:23:24,613 será probar estes. 1837 01:23:24,613 --> 01:23:29,300 Entón, alguén ten dúbidas sobre este asunto? 1838 01:23:29,300 --> 01:23:30,016 OK, legal. 1839 01:23:30,016 --> 01:23:30,515 Si? 1840 01:23:30,515 --> 01:23:35,008 >> Audiencia: Entón a razón que faría poñer enteiro argumento calc vez 1841 01:23:35,008 --> 01:23:40,059 de [inaudível] sería momento para introducir información adicional para 1842 01:23:40,059 --> 01:23:41,030 [Inaudível]? 1843 01:23:41,030 --> 01:23:42,090 >> ANDI Pengo: Si, exactamente. 1844 01:23:42,090 --> 01:23:45,370 Algúns programas esixen que a entrada dun argumento da liña de comandos 1845 01:23:45,370 --> 01:23:47,732 que entra e que usa isto. 1846 01:23:47,732 --> 01:23:49,035 Si. 1847 01:23:49,035 --> 01:23:50,410 Audiencia: Entón, o que se [inaudível]? 1848 01:23:50,410 --> 01:23:55,440 1849 01:23:55,440 --> 01:23:58,870 >> ANDI Pengo: Ben, o que eu teño a continuación, a cambio na miña programa? 1850 01:23:58,870 --> 01:23:59,870 >> Audiencia: Só 3. 1851 01:23:59,870 --> 01:24:12,460 1852 01:24:12,460 --> 01:24:15,020 >> ANDI Pengo: Por que pasando, que pensas? 1853 01:24:15,020 --> 01:24:18,940 >> Audiencia: Porque o [inaudível]. 1854 01:24:18,940 --> 01:24:22,370 >> Audiencia: Vostede tería que cambia-lo para 2 [inaudível]. 1855 01:24:22,370 --> 01:24:23,484 >> Audiencia: 1 e 2. 1856 01:24:23,484 --> 01:24:24,650 ANDI Pengo: 1 e 2, exactamente. 1857 01:24:24,650 --> 01:24:29,150 Polo tanto, neste caso, probablemente quere ter dous printf statements-- 1858 01:24:29,150 --> 01:24:32,601 un impreso que 1 e argv o que impreso argv 2. 1859 01:24:32,601 --> 01:24:33,100 Aquí. 1860 01:24:33,100 --> 01:24:34,516 Podo realmente facelo rápido real. 1861 01:24:34,516 --> 01:24:46,720 1862 01:24:46,720 --> 01:24:47,320 Alí vai. 1863 01:24:47,320 --> 01:24:48,287 Oh. 1864 01:24:48,287 --> 01:24:49,370 Non é o que quería. 1865 01:24:49,370 --> 01:24:52,590 Pero se vostedes xogar con o formato, que vai saír. 1866 01:24:52,590 --> 01:24:54,981 Si. 1867 01:24:54,981 --> 01:24:55,480 Legal. 1868 01:24:55,480 --> 01:24:57,670 Sei que estamos un pouco curto no tempo. 1869 01:24:57,670 --> 01:25:02,469 Pero eu estou indo só para pasar rapidamente un uns minutos pasando por atenciosa-- 1870 01:25:02,469 --> 01:25:03,760 Audiencia: Ten dous minutos. 1871 01:25:03,760 --> 01:25:05,010 ANDI Pengo: Eu teño dous minutos? 1872 01:25:05,010 --> 01:25:06,340 Grazas. 1873 01:25:06,340 --> 01:25:09,180 Algúns consellos PSet rápido. 1874 01:25:09,180 --> 01:25:13,100 Polo tanto, para este pset, eu recomendo, como dixen, todos poderán ler o spec. 1875 01:25:13,100 --> 01:25:16,804 Vai estar escribindo un tres programs-- chamado initials.c, un chamado caesar.c, 1876 01:25:16,804 --> 01:25:17,720 un chamado vigenere.c. 1877 01:25:17,720 --> 01:25:20,465 1878 01:25:20,465 --> 01:25:22,340 Algunhas partes importantes que vostedes realmente queren 1879 01:25:22,340 --> 01:25:25,040 para manter tan mente-- hai esa función 1880 01:25:25,040 --> 01:25:27,770 chamado atoi-- como me gusta de dicir, a trois. 1881 01:25:27,770 --> 01:25:29,520 Claro se isto é de feito, como di. 1882 01:25:29,520 --> 01:25:32,510 Pero todo o que está facendo, está introducindo. 1883 01:25:32,510 --> 01:25:34,320 Converte unha cadea para un int. 1884 01:25:34,320 --> 01:25:37,490 Así, un representa ASCII para i enteiro. 1885 01:25:37,490 --> 01:25:40,310 É só a conversión ASCII valores para valores enteiros. 1886 01:25:40,310 --> 01:25:44,510 Entón lembre se argv, a matriz que almacena todos os seus comandos de liña arguments-- 1887 01:25:44,510 --> 01:25:46,300 almacena-los todos como cadeas. 1888 01:25:46,300 --> 01:25:50,010 E por iso, se quere ser capaz de ter un deles ser un número enteiro, 1889 01:25:50,010 --> 01:25:52,750 terá para utilizar este valor aquí. 1890 01:25:52,750 --> 01:25:56,690 >> Modulo, como nós Cubrimos antes na aula hoxe, 1891 01:25:56,690 --> 01:25:59,550 permite que teña o resto do que ten. 1892 01:25:59,550 --> 01:26:03,620 Entón, se temos realmente, realmente grandes números en Caesar, 1893 01:26:03,620 --> 01:26:06,117 E se temos o fin dunha serie de Vigenère? 1894 01:26:06,117 --> 01:26:08,450 Como está indo a ser capaz para conseguir que a involucrar en torno a? 1895 01:26:08,450 --> 01:26:11,330 Se eu acertar z e quero Lo para volver a un, 1896 01:26:11,330 --> 01:26:13,650 como eu vou chegar que para embrulhar arredor? 1897 01:26:13,650 --> 01:26:15,960 Probablemente vai querer usar modulo en algún lugar. 1898 01:26:15,960 --> 01:26:19,190 >> En segundo lugar, navegar arredor súa biblioteca. ctype.h. 1899 01:26:19,190 --> 01:26:20,680 Esa é unha nova biblioteca que temos. 1900 01:26:20,680 --> 01:26:25,270 Vostede vai atopar unha morea de moi, moi isupper funcións no útil, islower, 1901 01:26:25,270 --> 01:26:27,681 toupper, tolower, isalpha, etcétera. 1902 01:26:27,681 --> 01:26:30,680 Todas as funcións que serán moi útiles cando está tentando descubrir, 1903 01:26:30,680 --> 01:26:33,780 é unha letra minúscula ese personaxe? 1904 01:26:33,780 --> 01:26:35,730 ¿Como converter este cadea para un maiúscula? 1905 01:26:35,730 --> 01:26:38,146 Todas estas cousas van ser moi, moi útil para o seu pset. 1906 01:26:38,146 --> 01:26:42,720 1907 01:26:42,720 --> 01:26:45,500 Aceptar. 1908 01:26:45,500 --> 01:26:49,644 >> O horario de oficina esta noite son 8:00 ás 11:00 na clase Teal mañá 1909 01:26:49,644 --> 01:26:51,310 así como mércores e xoves. 1910 01:26:51,310 --> 01:26:53,280 Horario de atención están en commons. 1911 01:26:53,280 --> 01:26:56,180 Sugiro que caras todo comezar inmediatamente, 1912 01:26:56,180 --> 01:27:00,490 porque non quere ser que neno que xoves ten problemas 1913 01:27:00,490 --> 01:27:03,870 someter o seu pset e é como, eu non sei o que facer. 1914 01:27:03,870 --> 01:27:05,870 Comece, eu rematar, eu sometidos. 1915 01:27:05,870 --> 01:27:09,737 Probe dar-se algún espazo, por mor dos problemas de código sempre ocorrer. 1916 01:27:09,737 --> 01:27:11,570 Quere estar seguro de que dá a si mesmo 1917 01:27:11,570 --> 01:27:14,810 unha gran cantidade de tempo para poder para completar as Serie de exercicios. 1918 01:27:14,810 --> 01:27:15,310 Legal. 1919 01:27:15,310 --> 01:27:16,720 Vou ir por aquí. 1920 01:27:16,720 --> 01:27:18,226 >> Audiencia: É iso en liña xa? 1921 01:27:18,226 --> 01:27:20,850 ANDI Pengo: Non sei se é en liña xa, pero vai ser. 1922 01:27:20,850 --> 01:27:23,500 Vou ir por aquí, se alguén ten dúbidas xa. 1923 01:27:23,500 --> 01:27:25,390 Grazas por vir. 1924 01:27:25,390 --> 01:27:27,105