1 00:00:00,000 --> 00:00:07,070 [Powered by Google Translate] [♪ ♪ Buzzing] 2 00:00:07,070 --> 00:00:10,380 Així que per introduir al que tinc a la pantalla; 3 00:00:10,380 --> 00:00:12,710 és una de les eines que hem desenvolupat durant l'estiu; 4 00:00:12,710 --> 00:00:15,530 es diu CS50 Spaces, 5 00:00:15,530 --> 00:00:18,860 i és la nostra aplicació de col · laboració codificació 6 00:00:18,860 --> 00:00:20,180 que utilitzarem en les seccions. 7 00:00:20,180 --> 00:00:22,470 És molt bo. 8 00:00:22,470 --> 00:00:26,040 Algun de vostès ha vist CS50 carrera encara? 9 00:00:26,040 --> 00:00:29,760 Deixa treure això en una altra pestanya. 10 00:00:29,760 --> 00:00:33,440 Run.cs50.net 11 00:00:33,440 --> 00:00:36,230 Tan 12 00:00:36,230 --> 00:00:39,700 si vas a run.cs50.net, 13 00:00:39,700 --> 00:00:43,030 es pot veure aquest és un navegador en el seu camí a 14 00:00:43,030 --> 00:00:45,940 en realitat codi - escriure codi C, 15 00:00:45,940 --> 00:00:47,460 i després executar-lo, 16 00:00:47,460 --> 00:00:50,960 per tant compila, executa, retorna les dades resultants a vostè, 17 00:00:50,960 --> 00:00:53,350 així que això és una espècie d'una manera fresca d'experimentar 18 00:00:53,350 --> 00:00:56,060 amb una part del codi que David s'acosta a conferències 19 00:00:56,060 --> 00:00:58,640 i li donem a vostè en el conjunt de problemes 20 00:00:58,640 --> 00:01:01,900 sense haver d'encendre l'aparell. 21 00:01:01,900 --> 00:01:04,489 >> Llavors, què fa que els espais és diferent de la 22 00:01:04,489 --> 00:01:07,450 si torno a aquesta fitxa, 23 00:01:07,450 --> 00:01:11,580 Spaces és CS50 d'execució, com es veu aquí, 24 00:01:11,580 --> 00:01:15,380 però si es desplaça sobre i mirar a l'altre costat de la finestra, 25 00:01:15,380 --> 00:01:18,130 que vegi la raó que sóc l'única persona en aquest espai, 26 00:01:18,130 --> 00:01:21,030 però el que vaig a fer és preguntar vostès a sumar-se a aquest espai amb mi 27 00:01:21,030 --> 00:01:24,590 i tots arribarem al codi a la finestra petita mateix, 28 00:01:24,590 --> 00:01:26,070 compartir codi entre si, 29 00:01:26,070 --> 00:01:28,900 i parlar sobre les diferències entre el nostre codi. 30 00:01:28,900 --> 00:01:31,530 Així que és una espècie de cosa cool - 31 00:01:31,530 --> 00:01:35,770 a sumar, si vostè visita aquest enllaç aquí mateix, a la part superior 32 00:01:35,770 --> 00:01:38,980 que he ressaltat, 33 00:01:38,980 --> 00:01:53,860 vostè pot simplement escriure en apps.cs50.net/spaces/vqcspSnO. 34 00:01:53,860 --> 00:01:56,610 >> Molt bé, així que per començar, 35 00:01:56,610 --> 00:01:59,720 Jo et vaig a donar una mica d'un viatge d'aquest. 36 00:01:59,720 --> 00:02:01,720 Farem uns ximples encriptació amb ell al principi, 37 00:02:01,720 --> 00:02:06,200 només perquè tothom té una mica una idea del que és, 38 00:02:06,200 --> 00:02:09,000 però el que he fet - 39 00:02:09,000 --> 00:02:11,830 o el que vaig a fer aquí és - 40 00:02:11,830 --> 00:02:13,480 Vaig a obtenir les que he escrit aquí, 41 00:02:13,480 --> 00:02:15,800 així que vostè veu en aquest moment és buida; 42 00:02:15,800 --> 00:02:17,090 no fa res. 43 00:02:17,090 --> 00:02:21,080 És sol codi de la caldera placa, anem a cridar. 44 00:02:21,080 --> 00:02:23,820 Amb una mica de coses per fer comentaris. 45 00:02:23,820 --> 00:02:27,850 Vaig a guardar prement aquest botó Guardar. 46 00:02:27,850 --> 00:02:30,190 I el que fa és 47 00:02:30,190 --> 00:02:34,400 destacat fins aquí breument - la caixa de revisió save verd, 48 00:02:34,400 --> 00:02:37,570 i ara, si vostè busca per a mi en l'espai, 49 00:02:37,570 --> 00:02:40,340 fa clic en el meu nom, 50 00:02:40,340 --> 00:02:43,370 es pot veure que tinc aquesta revisió aquí, 51 00:02:43,370 --> 00:02:45,490 i si fa clic en aquesta revisió, 52 00:02:45,490 --> 00:02:48,240 que va a carregar aquest codi en l'espai, també. 53 00:02:50,510 --> 00:02:54,160 >> Així que tothom s'ha carregat el codi en el seu espai? 54 00:02:54,160 --> 00:02:57,810 Molt bé, si no ho ha fet encara, seguir endavant i fer això, 55 00:02:57,810 --> 00:03:01,120 i llavors el que jo vull que vostès fan en aquesta petita secció de tasques 56 00:03:01,120 --> 00:03:05,940 és escriure una mica sobre tu mateix usant printf, 57 00:03:05,940 --> 00:03:08,310 Així, per exemple, m'agradaria escriure 58 00:03:08,310 --> 00:03:12,270 printf ("El meu nom és Nate"); 59 00:03:15,140 --> 00:03:17,700 i després m'agradaria escriure 60 00:03:17,700 --> 00:03:21,660 "Em vaig graduar el 2009 61 00:03:21,660 --> 00:03:24,440 de Stanford " 62 00:03:26,050 --> 00:03:28,390 i m'agradaria conèixer la seva opinió sobre 63 00:03:28,390 --> 00:03:30,270 quin any estàs a l'escola, 64 00:03:30,270 --> 00:03:33,910 si estàs a la universitat o l'escola de negocis 65 00:03:33,910 --> 00:03:36,130 o una altra escola de Harvard, 66 00:03:36,130 --> 00:03:39,200 el que està estudiant si se sap encara; 67 00:03:39,200 --> 00:03:41,290 si no se sap, això és totalment fresc. 68 00:03:41,290 --> 00:03:45,170 Jo no vaig decidir fins que vaig arribar tard en el meu segon any. 69 00:03:46,910 --> 00:03:49,210 i llavors també m'agradaria saber 70 00:03:49,210 --> 00:03:51,610 cap bogeria que vols dir-me o 71 00:03:51,610 --> 00:03:54,790 alguna cosa sobre la classe o simplement qualsevol altra cosa. 72 00:03:56,930 --> 00:04:00,370 En acabar d'escriure que amb el seu petit printf, 73 00:04:00,370 --> 00:04:03,480 si vostè s'estalviarà la revisió o bé 74 00:04:03,480 --> 00:04:06,080 1 assegureu-vos que es pot executar 75 00:04:06,080 --> 00:04:10,640 i que s'imprimeix exactament el que vol que la imprimeixin, 76 00:04:14,050 --> 00:04:16,399 i llavors si seguir endavant i salvar aquesta revisió 77 00:04:16,399 --> 00:04:21,600 utilitzant el botó Guardar de revisió, aquest primer noi poc per aquí, 78 00:04:24,080 --> 00:04:27,340 i que poc anirà a través i fer una petita introducció d'aquesta manera. 79 00:04:27,340 --> 00:04:30,150 Pel que només hauria d'haver de prémer el botó Play, 80 00:04:30,150 --> 00:04:32,550 que és aquí a la part superior esquerra, 81 00:04:32,550 --> 00:04:35,340 per la qual cosa aquest botó Reprodueix en la part superior esquerra es 82 00:04:35,340 --> 00:04:39,050 enviar el codi de descompte al nostre servidor on Donat llavors. 83 00:04:40,600 --> 00:04:43,300 Llavors, què és una mica boig per això es 84 00:04:43,300 --> 00:04:46,550 Aquest codi en realitat no s'està executant en l'equip; 85 00:04:46,550 --> 00:04:49,290 en realitat està sent enviat a través d'Internet. 86 00:04:49,290 --> 00:04:51,240 >> Com va tot, Charlotte? 87 00:04:51,240 --> 00:04:54,810 >> I - està bé. Jo - jo crec que sóc 88 00:04:54,810 --> 00:04:57,330 havent dificultats de salvar 89 00:04:57,330 --> 00:05:00,530 al servidor de manera que pugui - I pot executar el programa. 90 00:05:02,090 --> 00:05:05,780 I després quan intento executar, es diu que hi ha un error. 91 00:05:05,780 --> 00:05:08,850 Declarat com un virus, el que no hi és ja. 92 00:05:08,850 --> 00:05:11,860 Oh, anem a veure, pots colpejar de nou a Desa? 93 00:05:11,860 --> 00:05:13,770 El veig a la pantalla. 94 00:05:13,770 --> 00:05:15,120 Dret >>, està bé, així que això és el que tinc. 95 00:05:15,120 --> 00:05:19,430 I jo no sé per què no em deixa córrer. 96 00:05:22,990 --> 00:05:24,990 Oh, està bé, ho sento. 97 00:05:27,930 --> 00:05:31,220 Pot explicar per què - el que estava malament - el que no estava treballant amb ell? 98 00:05:31,220 --> 00:05:34,760 >> Sí, perquè jo no vaig veure que hi havia una última línia on encara hi ha una variable 99 00:05:34,760 --> 00:05:37,700 que no havia declarat, que no tenia la intenció que hi sigui. 100 00:05:37,700 --> 00:05:38,730 Sí, perfecte! 101 00:05:38,730 --> 00:05:40,390 >> Ara, si el guarda, jo crec que hauria de funcionar. 102 00:05:40,390 --> 00:05:42,970 Ara que ho has salvat, funciona; impressionant. 103 00:05:42,970 --> 00:05:44,570 >> Així que sí, a mesura que avancem a través de - 104 00:05:44,570 --> 00:05:46,690 així que el que estava passant, 105 00:05:46,690 --> 00:05:49,130 Només vaig a repetir això per la càmera. 106 00:05:49,130 --> 00:05:51,760 El que estava passant era que aquesta variable es 107 00:05:51,760 --> 00:05:54,310 va ser deixat en post - Suposo que va eliminar algunes altres coses 108 00:05:54,310 --> 00:05:56,670 en la que va declarar com, 109 00:05:56,670 --> 00:05:59,560 de manera que aquest estava tirant coses i no deixar que l'hi s'executa. 110 00:05:59,560 --> 00:06:02,540 Així que això és exactament el que vols fer a la secció 111 00:06:02,540 --> 00:06:05,690 S'han escrit persones intenten diferents peces de codi, 112 00:06:05,690 --> 00:06:08,490 la compilació, vegi el que funciona, veure el que no, 113 00:06:08,490 --> 00:06:10,730 i després una mica parlar d'aquestes coses, perquè aquests són els punts de tret que 114 00:06:10,730 --> 00:06:12,850 Encara em trobo, 115 00:06:12,850 --> 00:06:15,470 Encara - faig moltes tonteries tot el temps, 116 00:06:15,470 --> 00:06:17,820 i jo no sé per què no funciona, 117 00:06:17,820 --> 00:06:22,960 així que anem a aixecar revisió de Charlotte 3, 118 00:06:23,980 --> 00:06:25,380 i anem a córrer. 119 00:06:25,380 --> 00:06:28,950 >> Així que quan corro, ara que tinc el seu codi aquí, 120 00:06:28,950 --> 00:06:31,450 Puc fer un zoom, premeu el botó Run, 121 00:06:31,450 --> 00:06:33,680 el puja, el construeix, executa, 122 00:06:33,680 --> 00:06:36,980 diu que s'ha executat correctament i, si em desplaço cap avall 123 00:06:36,980 --> 00:06:39,440 veure Charlotte és un júnior a Adams House, 124 00:06:39,440 --> 00:06:42,720 la psicologia, la secundària en l'economia; impressionant. 125 00:06:42,720 --> 00:06:44,310 Encantat de conèixer! 126 00:06:44,310 --> 00:06:46,550 Awesome. 127 00:06:46,550 --> 00:06:49,670 Està bé, de seguir endavant, anirem a Daniel, 128 00:06:49,670 --> 00:06:52,710 anar a la revisió 3, 129 00:06:52,710 --> 00:06:54,180 compilar, executar; 130 00:06:54,180 --> 00:06:56,680 ¿Per què no ens expliques una mica sobre vostè, Daniel? 131 00:06:56,680 --> 00:06:59,380 Llámame >> Dan. 132 00:06:59,380 --> 00:07:01,920 Vaig a l'escola de negocis a través de vostès, 133 00:07:01,920 --> 00:07:05,020 i jo era a la Infanteria de Marina abans que aquí, 134 00:07:05,020 --> 00:07:08,020 i tot això és nou per a mi, així que sí. 135 00:07:08,020 --> 00:07:11,060 No et sentis malament, tinc 30 anys i no sé res d'això. 136 00:07:11,060 --> 00:07:13,800 Impressionant, gràcies, Dan! 137 00:07:13,800 --> 00:07:17,300 Molt bé, tenim un altre Daniel. 138 00:07:17,300 --> 00:07:20,930 Un va per Daniel - li presentar, Daniel? 139 00:07:20,930 --> 00:07:22,260 >> >> És clar, sóc Daniel. 140 00:07:22,260 --> 00:07:24,330 Sóc un estudiant de segon any a Mather en aquests moments. 141 00:07:24,330 --> 00:07:25,840 M'estic concentrant en el govern, 142 00:07:25,840 --> 00:07:28,760 però jo volia prendre CS50 perquè he sentit molt bones crítiques sobre la classe 143 00:07:28,760 --> 00:07:30,750 i mai he provat abans de CS. 144 00:07:30,750 --> 00:07:34,680 Desplaceu-vos cap avall i aquí es repeteix el missatge - cool. 145 00:07:36,330 --> 00:07:39,090 Canviant de tema, Jared. 146 00:07:39,090 --> 00:07:41,990 Com va tot? 147 00:07:41,990 --> 00:07:43,430 >> Bé, com estàs? 148 00:07:43,430 --> 00:07:47,520 Com pot veure, sóc un concentrador filosofia júnior a Eliot, 149 00:07:47,520 --> 00:07:50,260 originalment des del sud de Califòrnia, 150 00:07:50,260 --> 00:07:53,100 i estic interessat en prendre CS50 perquè m'agrada la lògica de la mateixa, 151 00:07:53,100 --> 00:07:57,420 i sembla realment bo per fer coses a l'ordinador, així que. 152 00:07:57,420 --> 00:07:59,570 Impressionant, on al sud de Califòrnia és vostè? 153 00:07:59,570 --> 00:08:02,340 >> Al voltant d'una hora a partir de [inaudible], una petita ciutat [inaudible]. 154 00:08:02,340 --> 00:08:04,850 Oh, sí, el meu pare és de Redlands. 155 00:08:04,850 --> 00:08:07,060 Cool stuff. 156 00:08:07,060 --> 00:08:12,130 >> Bé, Jimmy, com et va, Jimmy? 157 00:08:12,130 --> 00:08:15,130 >> Bé, com estàs? 158 00:08:15,130 --> 00:08:16,040 Si ho fa prou bé! 159 00:08:16,040 --> 00:08:17,710 Explica'ns sobre tu. 160 00:08:17,710 --> 00:08:20,840 >> Sóc un estudiant de primer any, i no estic del tot segur del que estic especialitzant en 161 00:08:20,840 --> 00:08:22,820 però estic una mica inclinat cap a l'economia. 162 00:08:22,820 --> 00:08:25,680 Com Daniel davant meu, mai he fet res CS, però sona una mica fred. 163 00:08:25,680 --> 00:08:28,120 Sóc originari de Chicago. 164 00:08:28,120 --> 00:08:31,640 Awesome. Així que fes un cop d'ull al seu llistat aquí. 165 00:08:31,640 --> 00:08:34,630 Jo volia preguntar, va fer aquesta impressió cap a fora com vostè esperava? 166 00:08:34,630 --> 00:08:37,650 >> No, em vaig oblidar d'imprimir una nova línia. 167 00:08:37,650 --> 00:08:41,270 De fet, m'oblidava que quan estava escrivint el meu cosa 168 00:08:41,270 --> 00:08:43,090 per primera vegada, també. 169 00:08:43,090 --> 00:08:46,330 És un tipus de dolor que recordar-se dels col · loqui en manualment. 170 00:08:46,330 --> 00:08:50,560 Seria bo si només sé que és el que volia. 171 00:08:50,560 --> 00:08:53,630 >> Bé, Kelly. 172 00:08:53,630 --> 00:08:56,050 Wow, tenim 2 Kellys, 2, 2 Kellys Daniels. 173 00:08:56,050 --> 00:09:00,490 Així que Kelly - vas per Kelly Ren? 174 00:09:00,490 --> 00:09:03,870 Bé, impressionant. 175 00:09:03,870 --> 00:09:07,270 O Kelly, vull dir. 176 00:09:07,270 --> 00:09:10,260 >> Així que sí, així que estic Kelly. 177 00:09:10,260 --> 00:09:12,930 Sóc un estudiant de segon any a Pfoho. 178 00:09:12,930 --> 00:09:17,000 Vaig rebre un correu electrònic avui que encara tinc 7 setmanes per declarar la meva concentració, 179 00:09:17,000 --> 00:09:20,940 així que estic tractant de no pensar-hi, 180 00:09:20,940 --> 00:09:24,090 i m'agrada enfornar, córrer i Craisins. 181 00:09:24,090 --> 00:09:29,110 No tinc experiència amb la majoria de CS; 182 00:09:29,110 --> 00:09:32,700 Em va ensenyar a construir llocs web quan jo era molt jove, 183 00:09:32,700 --> 00:09:35,750 però crec que probablement em van ensenyar malament un munt de vegades. 184 00:09:35,750 --> 00:09:39,260 Esperem que vaig a aprendre una mica més 185 00:09:39,260 --> 00:09:41,450 i - si. 186 00:09:41,450 --> 00:09:44,100 >> Impressionant, bé, gràcies. 187 00:09:44,100 --> 00:09:47,190 Anem a anar a l'altra Kelly; 188 00:09:47,190 --> 00:09:48,880 Jo no tinc res - va dir vostè alguna cosa aquí? 189 00:09:48,880 --> 00:09:51,880 >> [Inaudible] 190 00:09:51,880 --> 00:09:56,180 Aquí està! 191 00:09:56,180 --> 00:09:58,120 Sweet! 192 00:09:58,120 --> 00:10:01,400 >> Molt bé, així que estic Kelly. 193 00:10:01,400 --> 00:10:03,980 Sóc un estudiant graduat de primer any. 194 00:10:03,980 --> 00:10:05,560 Estic especialitzant en la Ment, Cervell i Educació. 195 00:10:05,560 --> 00:10:07,940 Em vaig graduar al Franklin & Marshall College el 2008 196 00:10:07,940 --> 00:10:10,840 amb especialització en psicologia i sociologia 197 00:10:10,840 --> 00:10:13,120 i un menor en francès. 198 00:10:13,120 --> 00:10:15,330 Estic prenent CS50 199 00:10:15,330 --> 00:10:18,080 perquè estic interessat en obtenir un doctorat en Neurociències 200 00:10:18,080 --> 00:10:21,220 i sento que això m'ajudarà a entendre les tecnologies que s'utilitzen. 201 00:10:21,220 --> 00:10:23,150 Awesome. 202 00:10:26,980 --> 00:10:29,390 Canviant de tema, Mikaela. 203 00:10:29,390 --> 00:10:31,640 És que la pronunciació correcta? 204 00:10:31,640 --> 00:10:32,990 Bé, impressionant. 205 00:10:32,990 --> 00:10:34,640 >> >> Sóc Mikhaila. 206 00:10:34,640 --> 00:10:36,870 Sóc un estudiant de segon any a Kirkland House, 207 00:10:36,870 --> 00:10:39,950 i m'estic concentrant en Enginyeria Mecànica. 208 00:10:39,950 --> 00:10:43,180 Realment m'agrada el ciclisme, construir una bicicleta aquest estiu. 209 00:10:43,180 --> 00:10:46,140 Estic prenent CS, en realitat, 210 00:10:46,140 --> 00:10:48,350 com un requisit de concentració, 211 00:10:48,350 --> 00:10:52,550 però ja saps, crec que és encara fresc espècie de classe d'enginyeria. 212 00:10:52,550 --> 00:10:55,150 Impressionant - que va construir una bicicleta aquest estiu? 213 00:10:55,150 --> 00:10:56,730 Sí >>. 214 00:10:56,730 --> 00:10:58,900 Wow, com el marc i tot això? 215 00:10:58,900 --> 00:11:00,120 >> Uh-eh (afirmativa). 216 00:11:00,120 --> 00:11:01,530 Wow, això és genial. 217 00:11:01,530 --> 00:11:06,370 >> [Inaudible fora de càmera xat] 218 00:11:06,370 --> 00:11:10,000 [Rialles] 219 00:11:12,640 --> 00:11:14,200 Sí, ha passat tant de temps. 220 00:11:14,200 --> 00:11:16,730 Mai se sap, no? 221 00:11:16,730 --> 00:11:19,420 Bé, fresc, bé gràcies, Mikhaila. 222 00:11:19,420 --> 00:11:21,390 >> Molt bé, senyoreta. 223 00:11:21,390 --> 00:11:23,280 >> El meu nom és Missy, sóc un estudiant de primer any, 224 00:11:23,280 --> 00:11:25,500 el que significa que no sé res! 225 00:11:25,500 --> 00:11:29,180 Vull concentrar-me en astrofísica. 226 00:11:29,180 --> 00:11:31,220 En CS50, 227 00:11:31,220 --> 00:11:33,350 Sento que definitivament l'ajudarà amb això. 228 00:11:33,350 --> 00:11:37,750 Una dada curiosa sobre mi és que sóc un bomber certificat a nivell nacional. 229 00:11:37,750 --> 00:11:39,960 Wow! 230 00:11:39,960 --> 00:11:42,440 Com va succeir això? 231 00:11:42,440 --> 00:11:45,570 >> Vaig assistir a una acadèmia 232 00:11:45,570 --> 00:11:49,000 i va passar per l'infern d'un munt de setmana 233 00:11:49,000 --> 00:11:51,200 i vaig obtenir el meu certificat. 234 00:11:51,200 --> 00:11:54,090 Wow, felicitats! 235 00:11:54,090 --> 00:11:57,280 Això no és poca cosa, segur. 236 00:11:57,280 --> 00:11:59,070 Està bé, així que ara em farà. 237 00:11:59,070 --> 00:12:01,290 Jo sóc el següent a la fila. 238 00:12:01,290 --> 00:12:04,510 Jo - l'executi. 239 00:12:04,510 --> 00:12:07,580 >> Així que el meu nom és Nate. 240 00:12:07,580 --> 00:12:11,160 Jo era la classe de 2009 a Stanford. 241 00:12:11,160 --> 00:12:13,840 Jo estava als principals sistemes simbòlics, 242 00:12:13,840 --> 00:12:17,370 que és similar a la ment, la concentració Brain Behavior, aquí, 243 00:12:17,370 --> 00:12:19,300 però és una mena de barreja de 244 00:12:19,300 --> 00:12:22,350 ciències de la computació, la lingüística, la psicologia i la filosofia. 245 00:12:22,350 --> 00:12:26,600 Una cosa així - si, un munt de coses rares, però va ser genial, 246 00:12:26,600 --> 00:12:29,880 i després vaig fer la meva mestratge en Ciències de la Computació allà, també. 247 00:12:29,880 --> 00:12:33,250 Així que jo sóc nou a Harvard aquest any. 248 00:12:33,250 --> 00:12:35,750 Tenia moltes ganes d'entrar en l'ensenyament. 249 00:12:35,750 --> 00:12:39,860 He passat els últims 4 anys a Stanford TA-ció classes de Ciències de la Computació 250 00:12:39,860 --> 00:12:43,370 pel que David em deixa anem, 251 00:12:43,370 --> 00:12:45,550 i jo estaré ajudant amb CS50, 252 00:12:45,550 --> 00:12:47,890 així de fer això tot el temps, jo no estic a l'escola de postgrau. 253 00:12:47,890 --> 00:12:50,330 Ha estat divertit. 254 00:12:50,330 --> 00:12:53,130 Esperem que seguirà sent divertit, estic segur que ho farà. 255 00:12:53,130 --> 00:12:56,040 >> Està bé, Sam. 256 00:13:01,910 --> 00:13:05,470 >> El meu nom és Sam, sóc un estudiant de segon any a la universitat, a la legislació específica. 257 00:13:05,470 --> 00:13:10,110 La meva major serà la història de la ciència, probablement, i VEUS secundària, 258 00:13:10,110 --> 00:13:13,240 i el meu color favorit és el groc. 259 00:13:18,790 --> 00:13:21,100 No hi ha necessitat d'emetre un judici ni res, però és un bon color! 260 00:13:21,100 --> 00:13:24,780 I Stella. 261 00:13:24,780 --> 00:13:26,980 >> Hola, sóc Stella, sóc un estudiant de primer any a Grays. 262 00:13:26,980 --> 00:13:30,070 No tinc ni idea del que m'he concentrat en, però, 263 00:13:30,070 --> 00:13:32,500 així CS50 era només una mica a l'atzar, 264 00:13:32,500 --> 00:13:34,220 que és interessant. 265 00:13:34,220 --> 00:13:36,080 Dada curiós, Jimmy va ser el primer amic de Harvard de la mina, 266 00:13:36,080 --> 00:13:38,360 perquè els dos som de Chicago. 267 00:13:38,360 --> 00:13:42,450 Cool, i Grace - que se suposa que és la realment bonic, oi? 268 00:13:42,450 --> 00:13:45,220 Vaig pensar >> [inaudible]. 269 00:13:45,220 --> 00:13:46,690 Oh, sí. 270 00:13:46,690 --> 00:13:51,210 [Inaudible / off-camera xat] 271 00:13:51,210 --> 00:13:54,420 Bé, jo encara estic aprenent, encara està aprenent. 272 00:13:54,420 --> 00:13:57,800 >> Així que tenim una mica més que és una cosa interessant aquí. 273 00:13:59,600 --> 00:14:02,870 Sí, em pregunto, té vostè una idea que està passant aquí? 274 00:14:02,870 --> 00:14:05,890 Vostè sap com interpretar això? 275 00:14:05,890 --> 00:14:13,340 >> Se suposava que havia de ser posat el punt i coma després de cada línia. 276 00:14:13,340 --> 00:14:16,370 Això és una mica d'un rotllo. 277 00:14:16,370 --> 00:14:19,100 De vegades aquests punts i comes poden ser un veritable mal de localitzar. 278 00:14:19,100 --> 00:14:21,420 Així que resulta que 279 00:14:21,420 --> 00:14:22,820 el programa especial que estem fent servir aquest any per 280 00:14:22,820 --> 00:14:26,670 compilar el nostre codi C es diu Clang, 281 00:14:26,670 --> 00:14:29,460 i la raó per la qual han començat a utilitzar Clang aquest any - 282 00:14:29,460 --> 00:14:32,030 perquè no hem utilitzat aquest programa en el passat; 283 00:14:32,030 --> 00:14:35,710 hem utilitzat un altre anomenat GCC que és molt popular - 284 00:14:35,710 --> 00:14:38,420 Clang en realitat li dóna missatges d'error que té sentit. 285 00:14:38,420 --> 00:14:41,420 Aquest diu "espera", "després de l'expressió" 286 00:14:41,420 --> 00:14:45,260 i fins i tot et diu l'expressió després que es necessitava un punt i coma. 287 00:14:45,260 --> 00:14:47,830 Així que estàs arreglant? 288 00:14:47,830 --> 00:14:48,930 >> Sí, ara mateix. 289 00:14:48,930 --> 00:14:52,040 Impressionant, m'ho saber i anem a tirar cap amunt, i ho anem a executar. 290 00:14:52,040 --> 00:14:55,830 Però sí, posant aquests punts i comes és una espècie de dolor. 291 00:14:55,830 --> 00:14:59,580 >> M'ho van arreglar, així que crec que hauria de funcionar. 292 00:14:59,580 --> 00:15:02,760 Impressionant - revisió 3. 293 00:15:02,760 --> 00:15:05,250 Això sembla. 294 00:15:05,250 --> 00:15:08,580 Molt bé, així que ara si l'executem, 295 00:15:08,580 --> 00:15:11,020 aquí va. 296 00:15:11,020 --> 00:15:13,830 Cool stuff. 297 00:15:13,830 --> 00:15:15,340 >> Està bé. 298 00:15:15,340 --> 00:15:18,230 Així que gràcies per fer això. 299 00:15:18,230 --> 00:15:20,210 És molt bo per complir amb vostès. 300 00:15:20,210 --> 00:15:22,880 Què farem ara és gastar el poc que ve 301 00:15:22,880 --> 00:15:24,740 una mica d'entrar en els problemes de la secció 302 00:15:24,740 --> 00:15:27,550 que provenen del conjunt de problemes d'aquesta setmana 303 00:15:27,550 --> 00:15:29,920 i farem tot el que per a la majoria de les seccions 304 00:15:29,920 --> 00:15:32,110 per a la resta del terme, 305 00:15:32,110 --> 00:15:35,580 i després anem a salvar els últims 15, 20 minuts o menys 306 00:15:35,580 --> 00:15:38,490 per parlar sobre el problema fixat 307 00:15:38,490 --> 00:15:41,420 i després simplement qualsevol altra pregunta que vostè té en general sobre la classe. 308 00:15:43,380 --> 00:15:45,670 Dit això, el que realment vull fer 309 00:15:45,670 --> 00:15:49,390 S'han participant tots 310 00:15:49,390 --> 00:15:51,500 utilitzant el material Spaces, 311 00:15:51,500 --> 00:15:53,500 llençar al codi, llançant a suggeriments, 312 00:15:53,500 --> 00:15:56,500 i parlant quan coses com aquesta ruptura 313 00:15:56,500 --> 00:15:58,360 o no funcionen, perquè són coses que 314 00:15:58,360 --> 00:16:00,870 Sé que em vaig trobar 315 00:16:00,870 --> 00:16:03,180 quan vaig començar codificació, 316 00:16:03,180 --> 00:16:05,490 i eren molt poc frustrant de vegades 317 00:16:05,490 --> 00:16:08,690 perquè si és com 2:00 abans del seu conjunt de problemes es deu, 318 00:16:08,690 --> 00:16:11,330 així - només per a la divulgació, 319 00:16:11,330 --> 00:16:14,590 Jo no vaig començar programació fins que jo era un estudiant de segon any a la universitat. 320 00:16:14,590 --> 00:16:17,360 Va ser una mica d'aquesta cosa estranya, desconeguda 321 00:16:17,360 --> 00:16:20,360 que vaig sentir va ser una mica fred 322 00:16:20,360 --> 00:16:23,590 i també he sentit que podria ser un veritable mal al cul 323 00:16:23,590 --> 00:16:27,610 si no compleix amb un punt i coma i aquest és l'error només mantenir el seu programa de treball 324 00:16:27,610 --> 00:16:30,890 i li impedeix anar a dormir, 325 00:16:30,890 --> 00:16:32,650 així que sens dubte, 326 00:16:32,650 --> 00:16:34,020 Si té preguntes per l'estil, 327 00:16:34,020 --> 00:16:37,060 si vostè té preocupacions per l'estil, que em faci saber, 328 00:16:37,060 --> 00:16:40,050 perquè vull fer d'això una bona experiència per a vostès. 329 00:16:40,050 --> 00:16:44,620 >> Així que vostès han descarregat tot el conjunt de problemes encara? 330 00:16:44,620 --> 00:16:47,160 Kinda saber on és? Bé. 331 00:16:47,160 --> 00:16:51,490 Així que anirem a cs50.net, perquè jo no ho tinc en aquest compte, 332 00:16:51,490 --> 00:16:54,110 aixecar els butlletins de problemes, 333 00:16:54,110 --> 00:16:57,940 aixecar conjunt de problemes 2, i anem a veure l'edició estàndard d'avui. 334 00:16:57,940 --> 00:17:01,190 Anem a aixecar l'especificació aquí. 335 00:17:02,640 --> 00:17:04,420 Desplaceu-vos cap avall. 336 00:17:06,790 --> 00:17:11,109 Així que anem a començar a buscar en aquesta secció de preguntes. 337 00:17:14,069 --> 00:17:16,710 Han vist aquests curts encara? 338 00:17:16,710 --> 00:17:18,329 Bé. 339 00:17:18,329 --> 00:17:21,329 Així que hi ha curtcircuits en els bucles, 340 00:17:21,329 --> 00:17:24,700 que es realitza per Tommy, un dels homes de cap d'ensenyament. 341 00:17:24,700 --> 00:17:27,230 Hi ha un en l'abast, 342 00:17:27,230 --> 00:17:30,530 Crec fet per un altre company d'ensenyament anomenat David 343 00:17:30,530 --> 00:17:33,400 i després en una xifra de Cèsar també es fa per David. 344 00:17:33,400 --> 00:17:35,550 Estan molt bé. 345 00:17:35,550 --> 00:17:37,770 Han estat veient els seus pantalons curts fins ara? 346 00:17:37,770 --> 00:17:39,270 How've estat? 347 00:17:39,270 --> 00:17:41,490 ¿Interessant? Bé, és bo saber-ho. 348 00:17:41,490 --> 00:17:44,210 Si no ho són, es pot dir així. 349 00:17:46,290 --> 00:17:49,870 Però abans de fer-ho, 350 00:17:49,870 --> 00:17:52,600 Han mirat a aquestes preguntes 351 00:17:52,600 --> 00:17:55,430 després de tot? 352 00:17:55,430 --> 00:17:57,480 >> Anem a parlar d'això una mica. 353 00:17:57,480 --> 00:18:00,600 Així que hem introduït en l'últim parell de setmanes 354 00:18:00,600 --> 00:18:02,480 en conferència 355 00:18:02,480 --> 00:18:04,910 un nombre de bucles diferents. 356 00:18:04,910 --> 00:18:06,140 Aquest és el bucle for, 357 00:18:06,140 --> 00:18:09,570 el bucle de temps, i després el bucle do-while, 358 00:18:09,570 --> 00:18:13,100 i en la conferència, hem estat parlant molt sobre 359 00:18:13,100 --> 00:18:16,010 com aquests llaços són tots 360 00:18:16,010 --> 00:18:18,320 bastant similar en molts aspectes, 361 00:18:18,320 --> 00:18:21,210 i vostè pot fer moltes de les mateixes coses amb un bucle while 362 00:18:21,210 --> 00:18:23,260 que es pot amb un bucle per. 363 00:18:23,260 --> 00:18:26,300 Només has de tipus d'ús de les combinacions adequades de les variables i tal. 364 00:18:26,300 --> 00:18:28,680 pel que realment 365 00:18:28,680 --> 00:18:31,200 la distinció real entre tots els bucles és que 366 00:18:31,200 --> 00:18:33,620 de vegades són més útils 367 00:18:33,620 --> 00:18:36,930 per utilitzar-los en un moment que en un altre moment. 368 00:18:36,930 --> 00:18:39,340 >> Així, per exemple, 369 00:18:39,340 --> 00:18:42,260 el bucle while que difereix d'un bucle do-while. 370 00:18:42,260 --> 00:18:45,680 Tots senten que tenen un bon control sobre quan 371 00:18:45,680 --> 00:18:48,650 un document while és més 372 00:18:48,650 --> 00:18:50,990 útil o quina és la diferència? 373 00:18:50,990 --> 00:18:53,410 >> Crec que la diferència és un bucle do-while 374 00:18:53,410 --> 00:18:56,960 corre - No sé ben bé què és la terminologia, 375 00:18:56,960 --> 00:18:59,750 però la sèrie de funcions dins del bucle. 376 00:18:59,750 --> 00:19:02,020 Automàticament - que fa les seves carreres com a mínim 377 00:19:02,020 --> 00:19:05,390 abans de comprovar la condició, o el bucle mentre que només va a funcionar quan 378 00:19:05,390 --> 00:19:08,290 s'executa contínuament - si o no la condició és satisfeta. 379 00:19:08,290 --> 00:19:11,010 Sí, això té sentit? 380 00:19:11,010 --> 00:19:14,200 >> Fem una ullada a una mica de codi. 381 00:19:14,200 --> 00:19:16,930 Així que per repetir la pregunta, 382 00:19:16,930 --> 00:19:19,230 o la resposta, en lloc; 383 00:19:19,230 --> 00:19:22,050 la resposta va ser que 384 00:19:22,050 --> 00:19:25,850 un bucle while comprovar per veure si la condició 385 00:19:25,850 --> 00:19:27,440 que especifiqui es compleix 386 00:19:27,440 --> 00:19:31,320 abans que s'executa el cos del bucle, per primera vegada, 387 00:19:31,320 --> 00:19:35,000 mentre que el do bucle while s'executarà automàticament el cos del bucle, 388 00:19:35,000 --> 00:19:38,450 és el que anomenem - és estrany terminologia, 389 00:19:38,450 --> 00:19:41,460 però si mai dir alguna cosa que no té sentit, m'ho saber - 390 00:19:41,460 --> 00:19:45,360 el cos del bucle és aquesta cosa que es posa enmig de les claus. 391 00:19:45,360 --> 00:19:47,840 I en un bucle do-while, 392 00:19:47,840 --> 00:19:50,220 que el cos s'executa almenys una vegada, 393 00:19:50,220 --> 00:19:54,460 i llavors la condició es comprova abans d'executar cada temps successiu. 394 00:19:54,460 --> 00:19:56,580 >> Així que en realitat, Sam, 395 00:19:56,580 --> 00:20:00,820 Et faria res escriure un senzill bucle while 396 00:20:00,820 --> 00:20:02,840 en els espais? 397 00:20:02,840 --> 00:20:05,600 >> Com una mena 398 00:20:05,600 --> 00:20:07,060 fer una nova ...? 399 00:20:07,060 --> 00:20:09,220 Acabo d'esborrar tot el que tens aquí. 400 00:20:09,220 --> 00:20:11,300 Sí, només de netejar. 401 00:20:11,300 --> 00:20:14,510 >> Bé, crec que estic tenint aquest - 402 00:20:14,510 --> 00:20:16,640 que un vol, quan, o vols ...? 403 00:20:16,640 --> 00:20:19,350 Sí, només és un temps real, imprimir alguna cosa. 404 00:20:21,050 --> 00:20:23,140 I anem a veure. 405 00:20:23,140 --> 00:20:25,850 Alexander, em vaig adonar que mai et va presentar. 406 00:20:25,850 --> 00:20:27,510 >> Oh, això està bé. 407 00:20:27,510 --> 00:20:30,760 Vostè - pot codificar un bucle do-while per a nosaltres? 408 00:20:30,760 --> 00:20:32,520 >> Sí, ho intentaré. 409 00:20:32,520 --> 00:20:34,370 Molt bé, només haurem de tirar d'ells cap amunt a la pantalla, 410 00:20:34,370 --> 00:20:38,240 perquè tipus de tenir una idea del són les diferències. 411 00:20:38,240 --> 00:20:41,280 >> Així que aquí està el que Sam ha fet. 412 00:20:41,280 --> 00:20:44,460 Té un enter anomenat i 413 00:20:44,460 --> 00:20:47,480 que s'ha inicialitzat a 17. 414 00:20:47,480 --> 00:20:51,570 Llavors diu: while (int i = 17) 415 00:20:51,570 --> 00:20:54,230 printf ("El meu nom és Sam."); 416 00:20:54,230 --> 00:20:57,300 Llavors, què passa quan executi aquest codi? 417 00:20:57,300 --> 00:21:00,340 Hi ha un error, què vol dir l'error? 418 00:21:00,340 --> 00:21:02,890 Anem a estirar-lo cap amunt i parlar-ne. 419 00:21:02,890 --> 00:21:05,040 S'ha produït un error, diu. 420 00:21:05,040 --> 00:21:07,400 Anem a desplaçar-se cap avall. 421 00:21:07,400 --> 00:21:09,460 Així que ens va donar aquest error, i va dir que, 422 00:21:09,460 --> 00:21:12,690 "Hey, jo esperava una expressió." 423 00:21:12,690 --> 00:21:16,180 Això és una mica críptic. 424 00:21:19,160 --> 00:21:23,140 Sí, exactament així - i de nou, 425 00:21:23,140 --> 00:21:27,140 hi haurà un altre petit insecte que ens posarem al dia en tan sols un segon. 426 00:21:27,140 --> 00:21:31,800 Però aquest és un altre d'aquest tipus de coses estranyes terminologia, 427 00:21:31,800 --> 00:21:36,150 de manera que aquest int i = 17 428 00:21:36,150 --> 00:21:39,290 no és una expressió. 429 00:21:39,290 --> 00:21:41,220 El que sembla que està fent és que és 430 00:21:41,220 --> 00:21:43,410 declarar un enter anomenat i 431 00:21:43,410 --> 00:21:45,540 i s'estableix per ser igual a 17 432 00:21:45,540 --> 00:21:48,780 o, més aviat, posar 17 en què int i anomenat. 433 00:21:50,560 --> 00:21:53,350 I això no té sentit 434 00:21:53,350 --> 00:21:55,790 en el context d'aquest bucle while. 435 00:21:55,790 --> 00:21:58,190 Això té sentit, com veurem, 436 00:21:58,190 --> 00:22:01,250 en el context d'un bucle for, perquè les declaracions bucle Do començar 437 00:22:01,250 --> 00:22:05,800 amb que per int i és igual a alguna cosa 438 00:22:05,800 --> 00:22:07,830 i continua. 439 00:22:07,830 --> 00:22:09,500 >> Així que vaig fer - 440 00:22:09,500 --> 00:22:12,630 arreglar alguna cosa, està bé. 441 00:22:12,630 --> 00:22:15,270 Aquí va, impressionant. 442 00:22:15,270 --> 00:22:17,920 Així que ara les coses es veuen una mica diferent. 443 00:22:17,920 --> 00:22:19,030 Un parell de coses han canviat. 444 00:22:19,030 --> 00:22:21,300 Ens pot dir quines coses han canviat? 445 00:22:21,300 --> 00:22:24,950 >> Vaig treure el int, així que no hi ha declaració [inaudible] en lloc d'una tasca. 446 00:22:24,950 --> 00:22:28,770 El signe d'un igual, vaig posar dos signes d'igual, el que significa un peu d'igualtat. 447 00:22:28,770 --> 00:22:30,560 Awesome. 448 00:22:30,560 --> 00:22:33,320 Sí, i què va fer Sam es va treure la int 449 00:22:33,320 --> 00:22:35,770 que era aquí abans, 450 00:22:35,770 --> 00:22:39,340 així que si tinc prou amb veure això - això és el que era abans, va dir int, 451 00:22:39,340 --> 00:22:41,970 que es declari que - pel que va treure el tipus. 452 00:22:41,970 --> 00:22:44,710 Hi int, string char, curta, 453 00:22:44,710 --> 00:22:47,380 els que són anomenats tipus. 454 00:22:47,380 --> 00:22:49,510 Així que vaig treure el tipus 455 00:22:49,510 --> 00:22:51,580 i després anteriorment, 456 00:22:51,580 --> 00:22:54,190 acabava l'únic signe d'igualtat 457 00:22:54,190 --> 00:22:57,300 i el que va dir era problemàtica sobre això 458 00:22:57,300 --> 00:22:59,580 quan es té un signe igual, 459 00:22:59,580 --> 00:23:01,780 que és un operador d'assignació. 460 00:23:01,780 --> 00:23:04,930 Això no és provar si dues coses són iguals. 461 00:23:04,930 --> 00:23:07,920 Això és realment posar una mica igual a alguna cosa. 462 00:23:07,920 --> 00:23:11,110 Estem posant el número 17 a la variable i. 463 00:23:11,110 --> 00:23:13,850 Així que per fer aquest tipus de comparació, 464 00:23:13,850 --> 00:23:16,430 vostè ha d'utilitzar el doble iguals, 465 00:23:16,430 --> 00:23:19,640 que és una mena de cosa rara 466 00:23:19,640 --> 00:23:22,760 però és un error bastant comú. 467 00:23:23,980 --> 00:23:27,830 Així que una cosa sí vaig a assenyalar, si no t'importa, 468 00:23:27,830 --> 00:23:30,610 és que, en 469 00:23:30,610 --> 00:23:33,210 nostra funció aquí a int main, 470 00:23:33,210 --> 00:23:36,740 es veu que el cos de la nostra funció 471 00:23:36,740 --> 00:23:39,810 es desplaça des del costat esquerre 472 00:23:39,810 --> 00:23:42,400 per 4 espais o un tabulador. 473 00:23:42,400 --> 00:23:44,730 La raó per la qual fem això 474 00:23:44,730 --> 00:23:47,000 és només per facilitar la lectura. 475 00:23:47,000 --> 00:23:51,620 Com es pot veure en el bucle mentre que Sam és aquí, 476 00:23:51,620 --> 00:23:53,120 no guió en absolut, 477 00:23:53,120 --> 00:23:55,390 i que no afecta la funcionalitat del codi. 478 00:23:55,390 --> 00:23:57,860 S'executa exactament el mateix. 479 00:23:57,860 --> 00:24:00,950 >> Així, per exemple, si arribem al cim aquí 480 00:24:00,950 --> 00:24:02,680 i premi el botó Reproduir nostre, l'hi construeix, 481 00:24:02,680 --> 00:24:04,470 que va a executar, 482 00:24:04,470 --> 00:24:06,700 i el que passarà? 483 00:24:06,700 --> 00:24:08,360 Per què diuen que encara funcionant? 484 00:24:08,360 --> 00:24:10,560 >> Perquè seguiré repetint hi. 485 00:24:10,560 --> 00:24:12,900 Exactament, i per què seguir repetint hi? 486 00:24:12,900 --> 00:24:15,850 Com que el nombre enter >> mai canvia, pel que és sempre 17. 487 00:24:15,850 --> 00:24:18,030 Sí, exactament, així 488 00:24:18,030 --> 00:24:20,970 veurem, després - em recorden el teu nom? 489 00:24:20,970 --> 00:24:24,020 Jimmy. Així que Jimmy va dir que 490 00:24:24,020 --> 00:24:27,340 la raó de que això no deixa de repetir alta una i altra vegada 491 00:24:27,340 --> 00:24:30,510 és perquè aquesta condició es compleix sempre. 492 00:24:30,510 --> 00:24:33,270 Mai canviï el valor de i. 493 00:24:33,270 --> 00:24:36,170 Mai canviar el contingut del que està emmagatzemat en aquesta variable. 494 00:24:36,170 --> 00:24:39,180 Així que en aquest punt tenim aquest error que 495 00:24:39,180 --> 00:24:42,170 el programa genera una sortida molt alta, 496 00:24:42,170 --> 00:24:45,100 i si desplaceu-vos cap avall i tipus de mirada al que està passant aquí, 497 00:24:45,100 --> 00:24:49,160 es pot veure que és hi, hi, hi, hi, hi, hi, hi tot el camí a través. 498 00:24:49,160 --> 00:24:51,200 Awesome. 499 00:24:51,200 --> 00:24:53,750 >> Així espècie de tornada al punt original 500 00:24:53,750 --> 00:24:57,020 que tingui la sagnia aquí 501 00:24:57,020 --> 00:25:00,110 en el cos del bucle, mentre que no afecta res. 502 00:25:00,110 --> 00:25:03,050 El programa segueix corrent bé. 503 00:25:03,050 --> 00:25:06,790 Típicament, per a un bon estil - 504 00:25:06,790 --> 00:25:10,210 i això és una cosa que busquem en els conjunts de problemes - 505 00:25:10,210 --> 00:25:13,930 li demanem que aquest guió per 4 espais, que es pot fer 506 00:25:13,930 --> 00:25:16,440 amb només prémer la tecla de tabulació 507 00:25:16,440 --> 00:25:18,860 o manualment posant en 4 espais a tu mateix. 508 00:25:21,880 --> 00:25:25,050 Cool, bé així que anem a tornar enrere i mirar 509 00:25:25,050 --> 00:25:30,460 Alejandro do-while. 510 00:25:30,460 --> 00:25:32,980 >> Just alguna cosa que té una mica de dificultat. 511 00:25:32,980 --> 00:25:34,390 Bé, bé, treballarem a través d'ell. 512 00:25:34,390 --> 00:25:36,400 ¿Això és bo? 513 00:25:36,400 --> 00:25:37,430 Sí >>. 514 00:25:37,430 --> 00:25:39,200 >> Bé, aquí anem. 515 00:25:39,200 --> 00:25:41,010 Aquest és el codi que va escriure Alexander. 516 00:25:41,010 --> 00:25:43,410 Vostè va per Alex - està bé. 517 00:25:43,410 --> 00:25:46,380 Així que aquí està el codi que Alex ha escrit. 518 00:25:46,380 --> 00:25:50,500 Per tant, tenim la nostra declaració de principal aquí, 519 00:25:50,500 --> 00:25:54,410 i després tenim aquesta variable sencera anomenada i 520 00:25:54,410 --> 00:25:57,320 de ser declarat just aquí. 521 00:25:57,320 --> 00:26:01,060 Tenim una instrucció do 522 00:26:01,060 --> 00:26:04,600 i després el cos de nou amb aquests aparells, 523 00:26:04,600 --> 00:26:06,520 de manera que aquest és el cos de la do-while - 524 00:26:06,520 --> 00:26:09,210 permetin-me fer un zoom en aquesta manera és més fàcil de llegir - 525 00:26:09,210 --> 00:26:12,730 i al cos, estem tractant d'imprimir "aquest és el cos", 526 00:26:12,730 --> 00:26:14,300 i + +, 527 00:26:14,300 --> 00:26:17,710 així incrementar el contingut de i i fer això 528 00:26:17,710 --> 00:26:19,470 fins que arriba a ser 3, 529 00:26:19,470 --> 00:26:22,440 i després el nostre programa acaba. 530 00:26:22,440 --> 00:26:24,680 >> Llavors, què passa quan executeu aquest programa? 531 00:26:24,680 --> 00:26:27,580 >> M'esperava un identificador. 532 00:26:27,580 --> 00:26:32,070 Bé, construir, executar, error. 533 00:26:32,070 --> 00:26:34,820 Què passa? 534 00:26:34,820 --> 00:26:37,060 Nosaltres ens desplacem fins aquí, 535 00:26:37,060 --> 00:26:40,260 tenim aquesta cosa una mica críptic mirar, 536 00:26:40,260 --> 00:26:43,930 esperat punt i coma després de la declaració d'alt nivell. 537 00:26:43,930 --> 00:26:46,620 Això és una mica estrany. 538 00:26:46,620 --> 00:26:50,990 Algú té una idea del que podria estar passant? 539 00:26:53,080 --> 00:26:54,640 Una mica estrany, sí. 540 00:26:54,640 --> 00:26:57,640 >> [Inaudible] es declara fora dels parèntesis? 541 00:26:57,640 --> 00:27:03,480 Així que no s'apliquen a continuació, quan s'utilitzen parèntesi? 542 00:27:03,480 --> 00:27:07,390 Així, va declarar que aquest tipus fora de les quals parèntesi? 543 00:27:09,670 --> 00:27:12,240 Oh, aquests nois - les claus? 544 00:27:12,240 --> 00:27:13,850 Sí >>. 545 00:27:13,850 --> 00:27:15,310 Sí, exactament. 546 00:27:15,310 --> 00:27:17,120 Així que resulta que 547 00:27:17,120 --> 00:27:21,550 en realitat no es pot declarar una variable aquí així. 548 00:27:23,750 --> 00:27:26,690 El que podria haver estat tractant de fer era - 549 00:27:26,690 --> 00:27:30,110 recórtelo d'allà - 550 00:27:30,110 --> 00:27:34,330 vostè pot posar dins de les claus aquí 551 00:27:34,330 --> 00:27:37,400 o una altra alternativa 552 00:27:37,400 --> 00:27:40,350 és posar completament fora. 553 00:27:42,480 --> 00:27:46,610 I així aquests - depenent d'on vostè realment posar la declaració 554 00:27:46,610 --> 00:27:48,550 d'aquesta variable sencera, 555 00:27:48,550 --> 00:27:53,540 vostè pot obtenir 2 tipus molt diferents de variables; 556 00:27:53,540 --> 00:27:55,100 quan està fora de la principal, 557 00:27:55,100 --> 00:27:58,240 és el que anomenem una variable global. 558 00:27:58,240 --> 00:28:00,070 Està fora de l'abast de qualsevol de les funcions - 559 00:28:00,070 --> 00:28:03,420 no és dins d'una funció - 560 00:28:03,420 --> 00:28:07,050 mentre que si ho posem dins de la principal, 561 00:28:07,050 --> 00:28:10,000 com aquí, llavors s'anomena una variable local, 562 00:28:10,000 --> 00:28:13,830 perquè és local per a l'àmbit d'aplicació de principal. 563 00:28:13,830 --> 00:28:16,720 I anem a parlar una mica més sobre quins són les diferències 564 00:28:16,720 --> 00:28:20,970 entre els 2 tipus i per què s'utilitzen diferents tipus de variables, 565 00:28:20,970 --> 00:28:23,040 però per ara, 566 00:28:23,040 --> 00:28:25,070 vostè pot mantenir totes les variables locals, 567 00:28:25,070 --> 00:28:28,320 perquè nosaltres no tenim cap necessitat que les variables globals. 568 00:28:28,320 --> 00:28:31,390 >> Està bé, així que això és una cosa aquí. 569 00:28:31,390 --> 00:28:34,680 Intentarem executar de nou, a veure què passa. 570 00:28:37,420 --> 00:28:40,270 Executar, aconseguir un altre error. 571 00:28:40,270 --> 00:28:43,320 Apropar una mica, què obtenim? 572 00:28:45,110 --> 00:28:50,000 Ens esperava després d'aquest parèntesi do / while. 573 00:28:53,660 --> 00:28:55,260 Alguna idea del que està passant? Dan? 574 00:28:55,260 --> 00:28:58,880 >> El temps i després parèntesi i després - 575 00:28:58,880 --> 00:29:01,990 No sé si ha de redeclare int, 576 00:29:01,990 --> 00:29:04,980 però el fer mentre (i <3). 577 00:29:04,980 --> 00:29:06,930 Exactament, sí. 578 00:29:06,930 --> 00:29:08,830 Així que resulta que Dan és exactament correcte. 579 00:29:08,830 --> 00:29:11,230 No necessitem posar aquest tipus aquí de nou. 580 00:29:11,230 --> 00:29:14,440 En el seu lloc, pot matar el tipus 581 00:29:14,440 --> 00:29:17,220 i acaba de fer això. 582 00:29:19,270 --> 00:29:21,640 Està bé. 583 00:29:21,640 --> 00:29:24,950 Vaig a allunyar amb el zoom, provar un cop més. 584 00:29:26,360 --> 00:29:29,580 Mira això, sinó que s'executa amb èxit. 585 00:29:29,580 --> 00:29:33,260 Si es desplaça cap avall, "aquest és el cos" imprimeix 3 vegades. 586 00:29:33,260 --> 00:29:35,820 Això és molt dolç. 587 00:29:35,820 --> 00:29:38,670 Ben fet, ben fet, nois. 588 00:29:38,670 --> 00:29:41,080 Ben fet. 589 00:29:41,080 --> 00:29:43,250 Com va fins ara? 590 00:29:43,250 --> 00:29:46,200 Ritme decent? 591 00:29:46,200 --> 00:29:49,200 D'acord, genial. 592 00:29:49,200 --> 00:29:52,590 >> Així que, com a espècie de tornada a la pregunta original, 593 00:29:52,590 --> 00:29:55,430 nosaltres - i ara si veiem la diferència, 594 00:29:55,430 --> 00:29:58,240 es veu que en aquest bucle do-while, 595 00:29:58,240 --> 00:30:00,030 l'estat ocupa l'últim lloc. 596 00:30:00,030 --> 00:30:02,530 Així com l'ordinador llegeix el programa 597 00:30:02,530 --> 00:30:06,050 des de programes en C s'executen en aquest tipus d'ordre seqüencial, 598 00:30:06,050 --> 00:30:09,450 on, literalment, començar amb la primera línia de principal, 599 00:30:09,450 --> 00:30:13,450 i després executar la línia 6, línia 7, línia 8, línia 9, 600 00:30:13,450 --> 00:30:16,150 línia 10, línia 11, 601 00:30:16,150 --> 00:30:18,440 tot això a la part superior dreta aquí 602 00:30:18,440 --> 00:30:20,020 es va a executar un cop 603 00:30:20,020 --> 00:30:23,350 abans que alguna vegada provar aquesta condició de veure 604 00:30:23,350 --> 00:30:26,240 si i - o el contingut de i, més aviat - 605 00:30:26,240 --> 00:30:29,750 són menors que el nombre 3. 606 00:30:29,750 --> 00:30:33,300 I només si un cop arribem a la línia 12, 607 00:30:33,300 --> 00:30:36,260 el contingut de i són menys de 3 608 00:30:36,260 --> 00:30:39,150 és el que realment tornar enrere a la línia 7 609 00:30:39,150 --> 00:30:41,140 i després repetir el procés, 610 00:30:41,140 --> 00:30:44,620 i després es prova la condició de nou i de nou i de nou. 611 00:30:44,620 --> 00:30:47,440 >> Així que podem contrastar aquesta 612 00:30:47,440 --> 00:30:50,240 amb - zoom de tornada, 613 00:30:50,240 --> 00:30:56,500 desplaceu-vos cap avall a la versió de Sam, 614 00:30:56,500 --> 00:31:00,760 anem a veure això, una mica canviat perquè ja no és un bucle infinit - 615 00:31:00,760 --> 00:31:03,570 on si el zoom, 616 00:31:03,570 --> 00:31:06,300 veiem que a mesura que el programa s'executa, 617 00:31:06,300 --> 00:31:09,120 que va a declarar primer int i, 618 00:31:09,120 --> 00:31:12,030 establir el contingut del i be a 0, 619 00:31:12,030 --> 00:31:15,820 i llavors es realitza la condició del primer bucle mentre que, 620 00:31:15,820 --> 00:31:19,210 pel que en aquest cas, aquest cos, aquesta printf ("hola") i + + i 621 00:31:19,210 --> 00:31:21,630 ni tan sols executar 622 00:31:21,630 --> 00:31:24,310 llevat que en realitat és menor o igual a 2. 623 00:31:24,310 --> 00:31:26,750 Així que si i és 3, per exemple, 624 00:31:26,750 --> 00:31:28,840 si posem això aquí 625 00:31:28,840 --> 00:31:32,160 igual a 4 - o vaig a fer 3, perquè he dit 3 - 626 00:31:32,160 --> 00:31:34,890 i després executar-lo, 627 00:31:34,890 --> 00:31:38,320 que construirà, que executarà totalment bé, 628 00:31:38,320 --> 00:31:40,530 però en realitat no s'imprimirà res, 629 00:31:40,530 --> 00:31:43,030 perquè no prova que per al primer cas. 630 00:31:44,780 --> 00:31:47,530 Així que a classe, quin tipus de parlar de per què aquests bucles do-while 631 00:31:47,530 --> 00:31:49,800 són útils de vegades 632 00:31:49,800 --> 00:31:53,140 i per que s'utilitzen en lloc d'un bucle while. 633 00:31:53,140 --> 00:31:56,450 >> Hi ha - ¿Vostès tenen algun suggeriment 634 00:31:56,450 --> 00:31:59,090 per què un document while pot ser més útil? 635 00:31:59,090 --> 00:32:02,560 >> Bé, crec que do-while és que si vols entrada de l'usuari, 636 00:32:02,560 --> 00:32:05,020 perquè d'aquesta manera vostè pot deixar 637 00:32:05,020 --> 00:32:07,780 posar alguna cosa en un cop, si és correcte, 638 00:32:07,780 --> 00:32:09,300 podem passar a la resta del programa, 639 00:32:09,300 --> 00:32:11,250 però si no és correcte, llavors segueixes preguntant a l'usuari 640 00:32:11,250 --> 00:32:13,250 fins que col · loqui l'entrada dreta. 641 00:32:13,250 --> 00:32:14,260 Sí, exactament - exactament, 642 00:32:14,260 --> 00:32:16,840 de manera que un do-while és útil 643 00:32:16,840 --> 00:32:18,930 perquè quan es demani confirmació de l'entrada de l'usuari 644 00:32:18,930 --> 00:32:23,000 perquè és necessari per obtenir l'entrada de l'usuari abans de poder comprovar-ho. 645 00:32:23,000 --> 00:32:27,330 Així que en un conjunt de processadors, en pset 2, 646 00:32:27,330 --> 00:32:29,650 on vostè està incitant a que l'usuari molt, 647 00:32:29,650 --> 00:32:31,200 això és pràctic l'ús de 648 00:32:31,200 --> 00:32:33,740 en lloc de només un bucle while simple. 649 00:32:33,740 --> 00:32:36,780 Si un bucle while, es pot fer la mateixa cosa - 650 00:32:36,780 --> 00:32:38,750 vostè pot fer el mateix amb un bucle while 651 00:32:38,750 --> 00:32:40,580 com ho fa amb un bucle do-while. 652 00:32:40,580 --> 00:32:43,380 Només has de tipus de tenir aquest procés duplicat 653 00:32:43,380 --> 00:32:47,010 on s'obté la primera entrada i després iniciar el bucle while. 654 00:32:47,010 --> 00:32:49,800 Mentre que un document while, només has d'escriure un cop 655 00:32:49,800 --> 00:32:52,430 i és molt més net. 656 00:32:52,430 --> 00:32:54,650 >> Està bé. 657 00:32:55,970 --> 00:32:57,330 Alguna pregunta? 658 00:32:59,350 --> 00:33:01,380 Té sentit? 659 00:33:01,380 --> 00:33:06,200 >> The return 0 - això és només una espècie de lloc o és -? 660 00:33:06,200 --> 00:33:08,960 Sí, pel que pot - 661 00:33:08,960 --> 00:33:11,960 Bé, anem a cobrir això una mica més tard 662 00:33:11,960 --> 00:33:13,290 però resulta que 663 00:33:13,290 --> 00:33:15,720 0 aquest retorn que posem 664 00:33:15,720 --> 00:33:19,090 al final del principal tot el temps - 665 00:33:19,090 --> 00:33:21,980 que poc es pot simplement prendre com una cosa que fem 666 00:33:21,980 --> 00:33:24,930 de moment. 667 00:33:24,930 --> 00:33:28,860 El que hem començat a parlar amb funcions 668 00:33:28,860 --> 00:33:31,600 tipus d'al final de la setmana passada i de nou aquesta setmana 669 00:33:31,600 --> 00:33:33,550 és que una funció 670 00:33:33,550 --> 00:33:37,680 pren les entrades que són aquestes coses dins dels parèntesis; 671 00:33:37,680 --> 00:33:41,690 aquests són 2 entrades, els nostres arguments o paràmetres, 672 00:33:41,690 --> 00:33:44,540 el que estan cridats també a la nostra funció principal, 673 00:33:44,540 --> 00:33:48,510 i llavors una funció produeix una sortida 674 00:33:48,510 --> 00:33:51,290 que anomenem un valor de retorn. 675 00:33:51,290 --> 00:33:56,260 I el valor de retorn en el cas dels principal és aquest tipus int 676 00:33:56,260 --> 00:33:58,320 aquest sencer, 677 00:33:58,320 --> 00:34:01,160 i la manera d'explicar una funció, "Hey, això és el que la seva sortida 678 00:34:01,160 --> 00:34:05,840 serà ", és amb la paraula" retorn ", 679 00:34:05,840 --> 00:34:07,960 aquesta paraula clau, més aviat, 680 00:34:07,960 --> 00:34:11,000 i principal per tornar 0 681 00:34:11,000 --> 00:34:13,389 o principal sortida 0 682 00:34:13,389 --> 00:34:15,139 és estàndard en els programes en C 683 00:34:15,139 --> 00:34:18,110 perquè tornant 0 dels principals mitjans que 684 00:34:18,110 --> 00:34:21,600 "Hey, tot executat amb el meu programa molt bé." 685 00:34:21,600 --> 00:34:24,639 Si haguéssim de posar una mica diferent de 0, 686 00:34:24,639 --> 00:34:27,440 1 com, per exemple, 687 00:34:27,440 --> 00:34:31,080 que es fa servir per dir a qui va córrer aquest programa 688 00:34:31,080 --> 00:34:33,540 que alguna cosa va sortir malament. 689 00:34:35,739 --> 00:34:39,989 Així que a mesura que més involucrats amb la matèria durant el semestre, 690 00:34:39,989 --> 00:34:42,670 si mai necessitat de dir, 691 00:34:42,670 --> 00:34:46,650 "Oops, ja saps, alguna cosa va sortir malament amb aquest programa" 692 00:34:46,650 --> 00:34:49,409 en lloc de tenir la meva caiguda del programa, vull notificar 693 00:34:49,409 --> 00:34:52,310 el corredor del meu programa que alguna cosa anava malament, 694 00:34:52,310 --> 00:34:54,530 es pot utilitzar el valor de retorn, 695 00:34:54,530 --> 00:34:57,230 com en diem nosaltres, això no és 0. 696 00:35:00,180 --> 00:35:02,240 >> Així que anem a cobrir una mica més 697 00:35:02,240 --> 00:35:05,480 una vegada que entrem en funcions. 698 00:35:05,480 --> 00:35:09,030 Aquest tipus de sentit? 699 00:35:09,030 --> 00:35:11,240 Bé. 700 00:35:11,240 --> 00:35:13,530 Les funcions són una mica estrany - 701 00:35:13,530 --> 00:35:17,270 Crec que per a la gent que té un munt de fons matemàtiques, 702 00:35:17,270 --> 00:35:20,100 es tracta d'una mica més fàcilment, 703 00:35:20,100 --> 00:35:22,540 especialment si vostè té una mica de fons matemàtiques més abstractes 704 00:35:22,540 --> 00:35:24,240 i que està acostumat a parlar sobre les funcions 705 00:35:24,240 --> 00:35:27,370 i tot aquest tipus de coses. 706 00:35:28,590 --> 00:35:30,610 Però anem a tractar de cobrir les 707 00:35:30,610 --> 00:35:33,280 i anar bé i poc a poc a mesura que sorgeixen. 708 00:35:34,730 --> 00:35:37,870 De la mateixa manera, aquest argc int conjunt, 709 00:35:37,870 --> 00:35:41,090 char * argv [], 710 00:35:41,090 --> 00:35:44,960 per ara, també pot prendre això com placa de la caldera. 711 00:35:46,650 --> 00:35:49,050 Hem començat a cobrir els poc una mica en la conferència 712 00:35:49,050 --> 00:35:53,060 quan parlem sobre els arguments que es passen als programes en la línia d'ordres, 713 00:35:53,060 --> 00:35:55,700 però en els seus butlletins de problemes i els seus programes, 714 00:35:55,700 --> 00:35:58,760 és totalment bé només per escriure buit i que sigui senzill. 715 00:35:58,760 --> 00:36:01,490 I el que això significa és que el buit 716 00:36:01,490 --> 00:36:04,630 "Hey, principal no acceptarà o no entrades; 717 00:36:04,630 --> 00:36:07,440 aquest és només un programa que anem a executar just. 718 00:36:07,440 --> 00:36:09,320 No anem a lliurar qualsevol informació addicional 719 00:36:09,320 --> 00:36:12,420 cada vegada que la posada en marxa corrent. " 720 00:36:14,730 --> 00:36:16,600 Així que per ara, vostè pot fer això; 721 00:36:16,600 --> 00:36:19,710 també es pot fins i tot ometre el 0 retorn 722 00:36:19,710 --> 00:36:22,650 al final dels seus programes i van a córrer molt bé, 723 00:36:22,650 --> 00:36:26,150 però et recomano que simplement mantenir polz 724 00:36:26,150 --> 00:36:28,320 En un parell de setmanes, començarem a tipus d' 725 00:36:28,320 --> 00:36:31,340 retirar la tapa una mica i entendre més sobre 726 00:36:31,340 --> 00:36:34,380 totes aquestes diferents parts mòbils petits. 727 00:36:34,380 --> 00:36:38,160 >> Molt bé, ara anem a parlar de la nostra segona pregunta aquí. 728 00:36:38,160 --> 00:36:43,190 Llavors, què significa "identificador no declarat" solen indicar 729 00:36:43,190 --> 00:36:46,040 si enviada per Clang? 730 00:36:46,040 --> 00:36:49,290 Crec que podria haver vist que ja avui en dia. 731 00:36:51,170 --> 00:36:54,370 Pot algú donar un resum del que això significa? 732 00:36:54,370 --> 00:36:57,680 A veure, Kelly - un dels Kelly. 733 00:37:02,580 --> 00:37:05,300 >> So - 734 00:37:05,300 --> 00:37:07,080 Sí, ho fa - 735 00:37:07,080 --> 00:37:10,140 >> Crec que quan, com, no declarar les variables i s'intenta usar. 736 00:37:10,140 --> 00:37:13,310 Sí, exactament, exactament. 737 00:37:13,310 --> 00:37:15,250 Així que si mai veure aquesta sortida 738 00:37:15,250 --> 00:37:17,690 al de compilar el programa, 739 00:37:17,690 --> 00:37:19,470 igual que Kelly va dir: 740 00:37:19,470 --> 00:37:24,210 significa que ha utilitzat una variable que no va declarar, 741 00:37:24,210 --> 00:37:28,460 així que si torno a anar al nostre espai, 742 00:37:28,460 --> 00:37:31,150 i faig alguna cosa com 743 00:37:31,150 --> 00:37:34,800 printf ( 744 00:37:34,800 --> 00:37:38,260 "Hola% s") 745 00:37:40,070 --> 00:37:42,440 i tractar d'omplir aquest% s 746 00:37:42,440 --> 00:37:45,640 s amb una variable que no he declarat en qualsevol lloc 747 00:37:45,640 --> 00:37:48,330 i tracte d'executar, 748 00:37:48,330 --> 00:37:51,330 veuràs el que em poso en aquesta part inferior dreta aquí: 749 00:37:51,330 --> 00:37:54,010 "L'ús d'identificador no declarat 's'"; 750 00:37:54,010 --> 00:37:57,710 que simplement vol dir que vostè no va declarar la seva variable. 751 00:37:57,710 --> 00:38:00,750 El mateix passa si 752 00:38:00,750 --> 00:38:05,240 té x i intenta emmagatzemar i 7 en el 753 00:38:05,240 --> 00:38:08,720 i jo no declarar X. 754 00:38:08,720 --> 00:38:10,200 Ho entenc mateix error: 755 00:38:10,200 --> 00:38:13,480 "L'ús de 'x' identificador no declarat". 756 00:38:16,390 --> 00:38:18,250 >> D'acord, 757 00:38:18,250 --> 00:38:21,720 de manera que el xifrat César, no és molt segur, 758 00:38:21,720 --> 00:38:24,590 Vaig a deixar que vostès veure aquest tipus curt, d'entendre per què, 759 00:38:24,590 --> 00:38:27,590 i espero que després de fer un problema d'aquesta setmana estableix 760 00:38:27,590 --> 00:38:29,270 on realment escriure un xifrat César, vas a entendre una mica més 761 00:38:29,270 --> 00:38:32,600 sobre el que significa ser un lloc segur i insegur - 762 00:38:36,180 --> 00:38:38,960 o no segur, suposo - insegur és lleugerament diferent. 763 00:38:40,560 --> 00:38:43,140 L'altra cosa és que tenim aquestes altres preguntes aquí 764 00:38:43,140 --> 00:38:45,470 sobre les funcions 765 00:38:45,470 --> 00:38:47,330 i el que és una funció, 766 00:38:47,330 --> 00:38:52,820 i quin tipus de parla breument que quan parlem de valors de retorn; 767 00:38:52,820 --> 00:38:54,560 per a algú que hagi estat en una conferència, 768 00:38:54,560 --> 00:38:57,790 pot resumir que ha estat a la conferència d'avui? 769 00:38:57,790 --> 00:38:59,670 Està bé. 770 00:39:01,210 --> 00:39:04,320 Anem a veure, tindrem - Pot algú dir-nos què és una funció? 771 00:39:04,320 --> 00:39:06,060 Kelly? 772 00:39:07,800 --> 00:39:11,260 >> Bàsicament >> cosa que recórrer a alguna cosa que està escrit a la biblioteca que és 773 00:39:11,260 --> 00:39:14,460 més complicat allà, i llavors vostè acaba d'escriure un breu formulari d'ella, 774 00:39:14,460 --> 00:39:17,360 així com la que vostè es refereix de nou a la biblioteca, utilitzant 775 00:39:17,360 --> 00:39:19,650 tot aquest codi llarg i [inaudible]. 776 00:39:19,650 --> 00:39:22,680 Sí, exacte, i després vols afegir alguna cosa a això? 777 00:39:22,680 --> 00:39:27,050 >> Sí, penso com alguna cosa similar al concepte d'una fórmula matemàtica en 778 00:39:27,050 --> 00:39:30,130 en el que acaba d'escriure una fórmula i llavors es pot connectar variables en 779 00:39:30,130 --> 00:39:32,660 i això és el que una funció és [inaudible]. 780 00:39:32,660 --> 00:39:35,390 >> Sí, així que tenim un parell de respostes aquí 781 00:39:35,390 --> 00:39:38,080 que són alhora molt bo i just. 782 00:39:38,080 --> 00:39:43,040 No s'està referint al codi que s'ha escrit en algun lloc a la biblioteca 783 00:39:43,040 --> 00:39:45,390 que és més complicat 784 00:39:45,390 --> 00:39:47,130 i llavors vostè pot aprofitar aquest codi 785 00:39:47,130 --> 00:39:50,480 i realment s'utilitzin amb només escriure la forma curta de la mateixa - 786 00:39:50,480 --> 00:39:54,060 o, millor dit, el seu nom - 787 00:39:54,060 --> 00:39:57,590 i llavors també hi ha aquesta comparació a una fórmula en matemàtiques 788 00:39:57,590 --> 00:40:00,400 o la física, tot aquest tipus de coses 789 00:40:00,400 --> 00:40:02,980 on es té una fórmula 790 00:40:02,980 --> 00:40:05,690 i que poden connectar a l'ordinador 791 00:40:05,690 --> 00:40:08,100 les variables que la fórmula 792 00:40:08,100 --> 00:40:11,130 per obtenir el resultat de la fórmula, 793 00:40:11,130 --> 00:40:14,580 per la qual cosa pensar-hi com com l'equació de segon grau. 794 00:40:14,580 --> 00:40:17,690 Imagineu si en comptes d'haver d'aprendre sobre 795 00:40:17,690 --> 00:40:21,310 el que la fórmula quadràtica es troba a la classe de matemàtiques, 796 00:40:21,310 --> 00:40:24,610 vostè acaba de tenir un programa de calculadora poc que vaig fer per tu. 797 00:40:24,610 --> 00:40:28,930 Algú utilitza programes de calculadora a les classes de matemàtiques a l'escola secundària? 798 00:40:28,930 --> 00:40:31,020 Sí, les classes de física? 799 00:40:31,020 --> 00:40:34,670 On vostè pot dir, "Hey, fórmula quadràtica. 800 00:40:34,670 --> 00:40:37,740 Aquestes són les variables que desitja ingressar. 801 00:40:37,740 --> 00:40:40,250 Ara dóna'm la resposta ". 802 00:40:40,250 --> 00:40:42,170 Això és una cosa del que és una funció. 803 00:40:42,170 --> 00:40:44,850 És una manera per a nosaltres per 804 00:40:44,850 --> 00:40:47,720 tipus d'escriptura com un petit subprograma mica 805 00:40:47,720 --> 00:40:51,700 dins del nostre programa més ampli 806 00:40:51,700 --> 00:40:55,090 i l'utilitzen una i altra vegada 807 00:40:55,090 --> 00:40:58,380 de manera que no hem de copiar i enganxar el codi, 808 00:40:58,380 --> 00:41:04,220 podem donar-li diferents entrades i obtenir resultats diferents, 809 00:41:04,220 --> 00:41:07,090 és súper pràctic 810 00:41:07,090 --> 00:41:11,420 quan vostè està tractant d'escriure programes diferents en moments diferents. 811 00:41:11,420 --> 00:41:14,580 >> Així, per exemple, una funció que hem estat usant una i altra vegada i una altra 812 00:41:14,580 --> 00:41:17,310 durant tot el curs és printf. 813 00:41:17,310 --> 00:41:19,680 Printf és en si mateixa una funció 814 00:41:19,680 --> 00:41:23,360 i resulta que en realitat és un bastant llarg i complicat, 815 00:41:23,360 --> 00:41:26,420 desagradable aspecte, funcionen per escriure. 816 00:41:26,420 --> 00:41:29,590 Així tan simple com sembla a nosaltres 817 00:41:29,590 --> 00:41:31,810 per imprimir matèria cap a fora a la pantalla, 818 00:41:31,810 --> 00:41:34,820 perquè tots ens vam fer al principi de la secció d'avui, 819 00:41:34,820 --> 00:41:36,870 resulta que en realitat és, ja saps, 820 00:41:36,870 --> 00:41:39,900 un bon parell de centenars de línies de codi. 821 00:41:42,030 --> 00:41:45,620 No és una cosa que jo mai voldria escriure, sens dubte, 822 00:41:45,620 --> 00:41:47,480 però nosaltres la fem servir cada dia, això és una mena de fresc, 823 00:41:47,480 --> 00:41:49,020 de manera que hem de compartir amb els altres, 824 00:41:49,020 --> 00:41:51,790 amb diferents programes, 825 00:41:51,790 --> 00:41:54,520 pel que anem a bussejar més en funcions; 826 00:41:54,520 --> 00:41:56,090 de moment, no estem - 827 00:41:56,090 --> 00:41:59,150 l'única funció que estarem escrivint és principal. 828 00:41:59,150 --> 00:42:01,570 Principal en si és també una funció, 829 00:42:01,570 --> 00:42:04,270 i es pot veure que té la seva sortida, 830 00:42:04,270 --> 00:42:06,610 seus insums, com els que hem parlat, 831 00:42:06,610 --> 00:42:08,930 i després el seu nom, que és el principal. 832 00:42:08,930 --> 00:42:11,800 Principal és una espècie de - és una funció especial allà. 833 00:42:11,800 --> 00:42:14,800 Al programa de C, ha d'haver una funció principal, 834 00:42:14,800 --> 00:42:17,900 i així de moment, hem omès tipus d'escriptura 835 00:42:17,900 --> 00:42:21,400 el prototip, o la declaració de, principal. 836 00:42:21,400 --> 00:42:23,050 Li hem donat a tu, 837 00:42:23,050 --> 00:42:25,650 i hem acabava d'omplir els espais en blanc de classe. 838 00:42:25,650 --> 00:42:29,120 >> >> Per tant per al conjunt de segon problema, no cal 839 00:42:29,120 --> 00:42:31,350 escriure en la segona funció? 840 00:42:31,350 --> 00:42:34,200 Jo no ho crec. 841 00:42:34,200 --> 00:42:37,600 Jo crec que és tot aquí. 842 00:42:37,600 --> 00:42:41,710 Sí, i xifrat de Cèsar, 843 00:42:41,710 --> 00:42:45,000 vostè no ha de fer-ho, no ho sembla, 844 00:42:48,740 --> 00:42:53,150 i Vigenère, vostè tampoc, 845 00:42:53,150 --> 00:42:56,400 Per tant - i resulta que no sempre realment ha d'escriure 846 00:42:56,400 --> 00:42:58,250 una funció, no? 847 00:42:58,250 --> 00:43:01,950 Vostè diu sempre posar tot el codi dins de principal, 848 00:43:01,950 --> 00:43:04,500 i molts programadors fer això. 849 00:43:04,500 --> 00:43:07,130 A mesura que avancem, 850 00:43:07,130 --> 00:43:09,480 comencem la introducció de funcions com una forma de 851 00:43:09,480 --> 00:43:11,530 per netejar el codi, 852 00:43:11,530 --> 00:43:13,380 perquè sigui més elegant, 853 00:43:13,380 --> 00:43:16,890 en cas de tenir tasques - una cosa així com quan parlem de bucles, 854 00:43:16,890 --> 00:43:20,400 com de vegades hi ha coses que vostè vol fer una i altra vegada i una altra, 855 00:43:20,400 --> 00:43:23,510 i que té una espècie de la manera ingènua - 856 00:43:23,510 --> 00:43:26,360 o el que sovint anomenem el "home de palla" solució, 857 00:43:26,360 --> 00:43:29,390 és simplement copiar i enganxar una i altra vegada - 858 00:43:29,390 --> 00:43:31,000 vostè pot fer el mateix amb les funcions on només has de copiar i enganxar 859 00:43:31,000 --> 00:43:33,360 el mateix codi una i altra vegada, 860 00:43:33,360 --> 00:43:35,750 però que infla el codi - 861 00:43:35,750 --> 00:43:38,550 acaba de fer el seu codi molt llarg - 862 00:43:38,550 --> 00:43:41,550 i també posa una mica confús, 863 00:43:41,550 --> 00:43:43,470 i llavors vol dir que vostè no és capaç de com - 864 00:43:43,470 --> 00:43:45,250 si mai vols utilitzar aquest codi de nou en un altre programa, 865 00:43:45,250 --> 00:43:48,610 vostè també està atrapat copiar i enganxar de nou, 866 00:43:48,610 --> 00:43:51,170 així que una de les coses que anem a parlar és de 867 00:43:51,170 --> 00:43:54,960 tipus de disseny i l'estil dels seus programes, 868 00:43:54,960 --> 00:43:57,010 i així, quan té sentit mena de 869 00:43:57,010 --> 00:43:59,800 paquet d'alguna cosa i posar-lo com una funció separada, 870 00:43:59,800 --> 00:44:02,080 t'animem a fer-ho, 871 00:44:02,080 --> 00:44:04,700 i això és una cosa que, de nou, 872 00:44:04,700 --> 00:44:07,790 no hi ha regla dura i ràpida. 873 00:44:07,790 --> 00:44:11,540 Poques vegades ens diuen que vostè ha d'escriure una funció anomenada aquesta, 874 00:44:12,870 --> 00:44:16,320 sinó que és més aviat una d'aquelles coses que només es desenvolupen amb el temps 875 00:44:16,320 --> 00:44:19,470 com s'escriu més i més programes. 876 00:44:21,940 --> 00:44:24,790 >> Una mica més preguntes? 877 00:44:26,340 --> 00:44:30,610 Està bé, així que anem ara 878 00:44:30,610 --> 00:44:34,750 tornar a pujar a aquest noi aquí, 879 00:44:34,750 --> 00:44:37,800 així que estic encara en aquesta secció de preguntes. 880 00:44:37,800 --> 00:44:39,900 Hem parlat de tots aquests éssers diferents, 881 00:44:39,900 --> 00:44:42,050 el que és una funció, per què escriure funcions, 882 00:44:42,050 --> 00:44:44,700 quan es pot copiar i enganxar? 883 00:44:44,700 --> 00:44:47,700 Esperem que t'hem convençut que l'escriptura de funcions és una bona cosa. 884 00:44:47,700 --> 00:44:50,870 Així que ara passarem a aquest programa MySpace, 885 00:44:50,870 --> 00:44:53,080 i passarem una mica de temps fent això. 886 00:44:54,600 --> 00:44:56,480 >> Per tant, anem a veure, 887 00:44:56,480 --> 00:45:00,230 puc tenir algú que llegeixi això per a mi? 888 00:45:02,640 --> 00:45:04,660 Tindrem Mikhaila - vaig a llegir aquest per a nosaltres? 889 00:45:07,660 --> 00:45:08,890 >> Vols dir tornar quan MySpace - 890 00:45:08,890 --> 00:45:10,920 Abans, quan MySpace era fresc. 891 00:45:10,920 --> 00:45:12,070 >> "Abans, quan MySpace era fresc, 892 00:45:12,070 --> 00:45:14,900 que era l'últim crit de tipus com aquest. 893 00:45:14,900 --> 00:45:17,320 Potser encara ho és? Jo no estic molt segur. 894 00:45:17,320 --> 00:45:19,990 En qualsevol cas, d'utilitzar l'aparell CS50, 895 00:45:19,990 --> 00:45:22,600 CS50 Run, o espais CS50, 896 00:45:22,600 --> 00:45:25,370 escriure un programa que sol · licita a l'usuari un missatge 897 00:45:25,370 --> 00:45:29,350 i després mostra el missatge amb la seva primera lletra en majúscula, 898 00:45:29,350 --> 00:45:31,800 amb totes les altres lletres en el cas d'alternança, 899 00:45:31,800 --> 00:45:34,010 com per la sortida d'exemple següent, 900 00:45:34,010 --> 00:45:37,060 text en negreta representa l'entrada en la qual alguns usuaris. 901 00:45:37,060 --> 00:45:39,800 Per simplificar, es pot suposar que l'usuari 902 00:45:39,800 --> 00:45:42,810 voluntat només lletres minúscules i els espais d'entrada. 903 00:45:42,810 --> 00:45:45,900 Penseu en aquest problema una oportunitat de practicar; 904 00:45:45,900 --> 00:45:48,640 no se li va demanar que presentés aquest programa ". 905 00:45:48,640 --> 00:45:51,640 >> Awesome, gràcies. 906 00:45:51,640 --> 00:45:54,750 Així com Mikhaila va dir, 907 00:45:54,750 --> 00:45:58,850 anem a escriure un programa que myspaces seu codi. 908 00:45:58,850 --> 00:46:02,230 Així que, algun de vostès utilitzen MySpace? 909 00:46:02,230 --> 00:46:04,100 Qualsevol de vostès tenen comptes de MySpace? 910 00:46:04,100 --> 00:46:05,920 Oh, sí, sí! 911 00:46:05,920 --> 00:46:08,300 Va ser molt cool. 912 00:46:08,300 --> 00:46:09,950 [Rialles] 913 00:46:09,950 --> 00:46:12,060 Ho sé. 914 00:46:12,060 --> 00:46:14,500 Cites mi mateix. 915 00:46:15,490 --> 00:46:18,300 Així que el que estem tractant de fer és escriure un programa 916 00:46:18,300 --> 00:46:21,110 que passa a través 917 00:46:21,110 --> 00:46:24,490 i en majúscula la primera lletra 918 00:46:24,490 --> 00:46:27,140 i després cada lletra després - 919 00:46:27,140 --> 00:46:29,350 o qualsevol altra lletra després d'això, ho sento. 920 00:46:29,350 --> 00:46:32,910 >> Per tant - i es pot veure en aquest exemple, 921 00:46:32,910 --> 00:46:35,260 així és com s'executa el programa, 922 00:46:35,260 --> 00:46:38,780 pel que aquest és només dir: "Estem executant un programa anomenat a.out. 923 00:46:41,490 --> 00:46:44,630 L'entrada que anem a donar-li 924 00:46:44,630 --> 00:46:47,090 va que se li pregunti. 925 00:46:47,090 --> 00:46:51,150 No anem a proporcionar l'entrada a la línia d'ordres. " 926 00:46:51,150 --> 00:46:54,100 Si vostè ha estat seguint totes les conferències 927 00:46:54,100 --> 00:46:56,710 i sentint sobre els arguments de línia de comandes, 928 00:46:57,810 --> 00:47:00,080 això és una cosa que aquells - que la sintaxi covard 929 00:47:00,080 --> 00:47:04,530 a principal ve amb l'int argc, totes aquestes coses, 930 00:47:04,530 --> 00:47:07,630 pel que aquí no s'està usant això, no estem tractant amb res d'això. 931 00:47:09,400 --> 00:47:12,650 Només obtindrem aquest tipus en l'usuari, 932 00:47:12,650 --> 00:47:15,700 i llavors aquesta segona línia amb la capitalització covard 933 00:47:15,700 --> 00:47:18,550 és el que volem que el nostre programa de sortida. 934 00:47:19,790 --> 00:47:22,860 >> Així que en lloc d'utilitzar l'aparell o Executar, utilitzarem els espais, 935 00:47:22,860 --> 00:47:25,360 perquè tenim espais, 936 00:47:25,360 --> 00:47:28,640 i per tant si vostès ho faria 937 00:47:28,640 --> 00:47:32,380 obtenir el seu codi per buscar alguna cosa com això, 938 00:47:32,380 --> 00:47:35,930 així que vaig a guardar aquesta revisió 939 00:47:35,930 --> 00:47:38,390 només pel que té la placa de la caldera aquí 940 00:47:38,390 --> 00:47:42,840 que són aquestes, int main (void), res en ell. 941 00:47:44,480 --> 00:47:48,460 En realitat, el que farem és que només haurem de esborrar tot junt. 942 00:47:48,460 --> 00:47:50,330 Volem una pissarra en blanc, 943 00:47:50,330 --> 00:47:52,470 perquè no anem a començar a escriure codi; 944 00:47:52,470 --> 00:47:55,380 més aviat, intentarem escriure una mica de pseudocodi 945 00:47:55,380 --> 00:47:58,580 que en realitat només vol dir que anem a escriure alguna cosa que no és codi 946 00:47:58,580 --> 00:48:01,010 aquest tipus de descriu el que volem fer, 947 00:48:01,010 --> 00:48:05,180 una mica com David ho va fer en el primer dia de la conferència, 948 00:48:05,180 --> 00:48:08,310 o suposo que va ser el segon dia de la conferència quan ho va fer la demostració mitjons conjunt. 949 00:48:08,310 --> 00:48:10,990 Vostès recorden que - de veure els mitjons? 950 00:48:10,990 --> 00:48:13,300 Joseph hi era espècie d'escriure en anglès? 951 00:48:13,300 --> 00:48:16,300 Així que anem a fer el mateix. 952 00:48:16,300 --> 00:48:18,380 >> Així que quan començo a escriure pseudocodi, 953 00:48:18,380 --> 00:48:22,640 M'agrada començar per mirar el que l'entrada es serà. 954 00:48:22,640 --> 00:48:24,950 I em dono un cas d'exemple, 955 00:48:24,950 --> 00:48:28,780 així com "gràcies per l 'add!" 956 00:48:35,030 --> 00:48:38,010 I llavors jo també escric el que vull que la sortida sigui, 957 00:48:38,010 --> 00:48:42,210 que en aquest cas és una cosa semblant. 958 00:48:53,790 --> 00:48:56,050 I aquest tipus de em dóna un bon lloc, igual que, començant a pensar, 959 00:48:56,050 --> 00:48:59,730 "Està bé, vull prendre la línia 1 960 00:48:59,730 --> 00:49:03,560 i vull convertir-la en la línia 2, " 961 00:49:03,560 --> 00:49:06,570 i aquest tipus d'ajuda a guiar el meu pensament. 962 00:49:06,570 --> 00:49:09,990 Aquest és un bon lloc per començar. 963 00:49:09,990 --> 00:49:12,190 Una altra forma de pensar-hi, també, a mesura que es mouen en kinda 964 00:49:12,190 --> 00:49:15,020 i com ho fa en els seus propis programes, és 965 00:49:15,020 --> 00:49:18,530 pensar en alguna cosa així com ho són els casos límit a això? 966 00:49:18,530 --> 00:49:20,740 Quins són els escenaris de tipus d'estranys? 967 00:49:20,740 --> 00:49:23,660 Quines són les entrades estranyes que podríem obtenir? 968 00:49:23,660 --> 00:49:26,550 I què si aquestes sortides sembla? 969 00:49:26,550 --> 00:49:29,670 Per exemple, una entrada estrany 970 00:49:29,670 --> 00:49:33,200 seria aquest, 971 00:49:33,200 --> 00:49:35,630 crear absolutament res, 972 00:49:35,630 --> 00:49:37,840 semblant al que hem d'emetre en aquest cas? 973 00:49:37,840 --> 00:49:40,530 Una cosa que vull pensar, també. 974 00:49:40,530 --> 00:49:44,450 >> Així que com una pregunta, 975 00:49:44,450 --> 00:49:46,870 el que volem de sortida? 976 00:49:46,870 --> 00:49:50,740 Si no rep cap entrada en absolut, el que hauria de ser la sortida del nostre programa? 977 00:49:53,740 --> 00:49:54,860 >> Res. 978 00:49:54,860 --> 00:49:57,340 Res? Sona molt bé. 979 00:49:57,340 --> 00:49:59,280 Així que volem assegurar-nos que no estem escrivint res 980 00:49:59,280 --> 00:50:01,500 si no s'aconsegueix res polz 981 00:50:01,500 --> 00:50:04,320 Cool. Bé. 982 00:50:04,320 --> 00:50:07,370 Tan 983 00:50:07,370 --> 00:50:09,380 Vaig a trucar a un parell de persones a mesura que avancem a través d' 984 00:50:09,380 --> 00:50:12,790 i només imaginar una cosa així com el que l'algorisme general és 985 00:50:12,790 --> 00:50:15,250 i quin tipus començarà a treballar per això junts. 986 00:50:16,240 --> 00:50:19,710 >> Per tant, anem a veure. Missy. 987 00:50:19,710 --> 00:50:21,220 Com creus que ens agradaria començar? 988 00:50:21,220 --> 00:50:24,830 Quin seria un bon lloc per començar aquí 989 00:50:24,830 --> 00:50:27,900 si volem transformar, per exemple, la línia 1 990 00:50:27,900 --> 00:50:29,440 a la línia 2? 991 00:50:29,440 --> 00:50:32,650 Pot vostè només tipus d'explicar, en anglès, el que estàs pensant? 992 00:50:32,650 --> 00:50:34,770 No et preocupis pel codi. 993 00:50:34,770 --> 00:50:38,250 El >> primer que faria seria 994 00:50:38,250 --> 00:50:41,170 classe de dirigir l'usuari a dir-los el que vols. 995 00:50:41,170 --> 00:50:44,730 Molt bé, així, per exemple, 996 00:50:44,730 --> 00:50:47,450 "Hey, usuari. Vull 997 00:50:47,450 --> 00:50:50,560 una cadena "- impressionant. 998 00:50:50,560 --> 00:50:52,990 Així que anem a escriure això. 999 00:50:52,990 --> 00:50:56,140 Preguntar a l'usuari en una cadena. 1000 00:50:56,140 --> 00:50:59,270 Això sona com un bon començament. 1001 00:51:03,920 --> 00:51:06,460 Està bé. 1002 00:51:06,460 --> 00:51:09,750 Anem a preguntar a Kelly Ren aquest moment. 1003 00:51:09,750 --> 00:51:11,580 Què faríem llavors vols fer ara? 1004 00:51:11,580 --> 00:51:14,220 Quina classe del nostre costat -? 1005 00:51:14,220 --> 00:51:18,080 >> Recollir la seva entrada i guardar com una variable. 1006 00:51:18,080 --> 00:51:20,470 Gran. 1007 00:51:20,470 --> 00:51:24,280 Així recollir la cadena, 1008 00:51:25,450 --> 00:51:27,880 emmagatzemar en una variable. 1009 00:51:34,840 --> 00:51:36,460 Llavors, hi ha alguna cosa en especial que volem fer aquí? 1010 00:51:36,460 --> 00:51:39,700 Volem comprovar la seva entrada 1011 00:51:39,700 --> 00:51:42,260 abans de -? 1012 00:51:42,260 --> 00:51:43,790 Sí >>. 1013 00:51:43,790 --> 00:51:46,330 Què podríem voleu cercar? 1014 00:51:46,330 --> 00:51:48,980 >> Bé, vostè ha dit que no cal comparar és un nombre, no? 1015 00:51:48,980 --> 00:51:52,400 Perquè a suposar que es tracta de minúscules? 1016 00:51:52,400 --> 00:51:55,650 Si. 1017 00:51:56,380 --> 00:51:58,920 >> Així que resulta que - si. 1018 00:51:58,920 --> 00:52:01,850 Així getString està garantit per a nosaltres tornar una cadena. 1019 00:52:01,850 --> 00:52:05,050 No tornarà un nombre a nosaltres o alguna cosa així. 1020 00:52:05,050 --> 00:52:09,140 És possible que hi hagi caràcters dígits dins d'aquesta cadena, però. 1021 00:52:09,140 --> 00:52:13,460 I aquells, podem ignorar com es va fer la capitalització. 1022 00:52:13,460 --> 00:52:16,620 Però una cadena buida és totalment bé, 1023 00:52:16,620 --> 00:52:19,900 de manera que el cas aquí, a la línia 4 i 5, 1024 00:52:19,900 --> 00:52:22,020 dreta, on no hi ha entrades, 1025 00:52:22,020 --> 00:52:25,190 i hem posat res com la nostra sortida. 1026 00:52:25,190 --> 00:52:28,730 No ha de preocupar-se per assegurar-se que hi ha alguna cosa en la cadena de 1027 00:52:28,730 --> 00:52:31,840 o que la cadena és d'almenys 4 caràcters de longitud; 1028 00:52:31,840 --> 00:52:34,190 tot està bé. 1029 00:52:34,190 --> 00:52:38,270 Així que això es contrasta, per exemple, amb programes com els centaus que va anotar 1030 00:52:38,270 --> 00:52:42,340 on calia assegurar-se que estaven rebent nombres no negatius; 1031 00:52:42,340 --> 00:52:46,430 calia assegurar-se que vostè estava rebent el nombre correcte de dies en un mes. 1032 00:52:46,430 --> 00:52:49,630 I què fan això? 1033 00:52:49,630 --> 00:52:51,470 Com fer la prova? 1034 00:52:51,470 --> 00:52:54,090 Què és el que podria utilitzar? 1035 00:52:54,090 --> 00:52:55,650 >> Do-while. 1036 00:52:55,650 --> 00:53:00,840 Do-while, altres tipus de bucles, també, sí. 1037 00:53:02,190 --> 00:53:04,520 Per tant, resulta que no és necessari utilitzar un bucle en aquest cas, 1038 00:53:04,520 --> 00:53:07,360 quan ens demani la cadena, que és bastant agradable. 1039 00:53:08,280 --> 00:53:10,620 >> Molt bé, seguim. 1040 00:53:12,410 --> 00:53:14,270 Per tant, Stella. 1041 00:53:14,270 --> 00:53:17,530 Pots explicar-nos una mica sobre el que hem de fer ara? 1042 00:53:17,530 --> 00:53:20,270 Així que ara tenim la cadena, el tenim emmagatzemat en una variable; 1043 00:53:20,270 --> 00:53:23,360 ¿Què és el que hem de fer amb la cadena? 1044 00:53:26,790 --> 00:53:33,530 Necessitem >> - 1045 00:53:33,530 --> 00:53:36,550 identificar el 2 - 1046 00:53:36,550 --> 00:53:39,290 Sí, només ho diu en anglès, que és impressionant. 1047 00:53:39,290 --> 00:53:42,670 Identificar els >> [inaudible] capitals - o, en majúscules. 1048 00:53:44,420 --> 00:53:48,130 Sí, pel que hauria identificar quines són les lletres majúscules i minúscules. 1049 00:53:50,020 --> 00:53:54,180 No podem majúscules o minúscules fins que hem identificat quins. 1050 00:54:03,790 --> 00:54:06,350 Així que anem a posar això aquí. 1051 00:54:06,350 --> 00:54:10,210 >> Per tant, només de pensar en aquest procés, 1052 00:54:10,210 --> 00:54:13,200 Com fer aquesta identificació? 1053 00:54:13,200 --> 00:54:15,050 Sap vostè, Dan? 1054 00:54:15,050 --> 00:54:18,120 Una mica el que nosaltres - què eina que hauríem de fer servir fora de la nostra caixa d'eines? 1055 00:54:18,120 --> 00:54:22,500 >> El posaria en alguna manera en com una matriu o una línia cada 1056 00:54:22,500 --> 00:54:24,240 és la seva pròpia caixeta, 1057 00:54:24,240 --> 00:54:27,240 i després des d'allà majúscules o no. 1058 00:54:27,240 --> 00:54:30,440 Bé, una eina que podem utilitzar és una matriu. 1059 00:54:30,440 --> 00:54:33,760 Què hem de veure a la cadena, 1060 00:54:33,760 --> 00:54:36,680 però, per entendre - que vam haver de buscar els personatges. 1061 00:54:36,680 --> 00:54:40,890 >> Així que has de mirar la longitud de la corda? 1062 00:54:40,890 --> 00:54:43,880 Sí, per la qual cosa part de que està rebent la longitud de la cadena. 1063 00:54:50,450 --> 00:54:54,150 Només per curiositat, què és el que utilitzem per obtenir la longitud d'una cadena? 1064 00:54:54,150 --> 00:54:58,080 >> Strlen? 1065 00:54:58,080 --> 00:55:02,870 Sí, strlen, anomenem a això "strlen" 1066 00:55:04,180 --> 00:55:08,620 Totes aquestes funcions de cadena, de manera que és una funció strlen, 1067 00:55:08,620 --> 00:55:10,670 i és súper útil, perquè podem usar per dir simplement, 1068 00:55:10,670 --> 00:55:13,430 Ei, strlen: Això és una cadena, digues-me quant temps és. 1069 00:55:13,430 --> 00:55:17,350 En la conferència d'avui, David va parlar molt sobre com s'implementa strlen, 1070 00:55:17,350 --> 00:55:20,370 el que realment està succeint darrere de les escenes. 1071 00:55:20,370 --> 00:55:25,450 Però aquest és un dels més pràctics molt super. 1072 00:55:25,450 --> 00:55:29,170 Hi ha altres que també estan a la biblioteca de cadenes, 1073 00:55:29,170 --> 00:55:34,690 com strcmp, que s'escriu "strcmp" 1074 00:55:34,690 --> 00:55:38,010 que s'utilitza per comparar cadenes entre si. 1075 00:55:41,220 --> 00:55:45,020 Els altres que utilitzarà com strstr, 1076 00:55:45,020 --> 00:55:48,770 que és bo per trobar seqüències sub i així successivament. 1077 00:55:48,770 --> 00:55:53,380 En la seva major part, tots comencen amb la cadena i després passar a ser una altra cosa. 1078 00:55:53,380 --> 00:55:57,080 La raó per la qual en realitat no els escriu com a cadena i així successivament 1079 00:55:57,080 --> 00:56:00,260 és perquè en com els primers dies de C, 1080 00:56:00,260 --> 00:56:04,100 quan la gent era la primera escriptura i tot això, 1081 00:56:04,100 --> 00:56:07,580 tenien limitacions en el nombre de caràcters que pot utilitzar 1082 00:56:07,580 --> 00:56:09,950 per als noms de funcions i noms de variables, 1083 00:56:09,950 --> 00:56:12,620 així que tot és com súper condensada. 1084 00:56:12,620 --> 00:56:15,750 Però cada vegada que veig una cosa que comença amb str, 1085 00:56:15,750 --> 00:56:18,600 que normalment vol dir que això té alguna cosa a veure amb una cadena. 1086 00:56:20,990 --> 00:56:23,350 >> Molt bé, així que has de obtenir la longitud de la cadena, 1087 00:56:23,350 --> 00:56:27,110 i llavors, què fem amb els personatges? 1088 00:56:27,110 --> 00:56:29,020 Saps, Sam? 1089 00:56:29,020 --> 00:56:32,410 >> No tinc ni idea, jo estava tractant d'esbrinar. 1090 00:56:32,410 --> 00:56:35,410 Realment no ho sé - M'agradaria que hi hagués alguna manera de - 1091 00:56:35,410 --> 00:56:38,990 Vull dir, jo crec que potser podríem fer alguna cosa amb parells i imparells, 1092 00:56:38,990 --> 00:56:40,860 però jo no conec cap funció així. 1093 00:56:40,860 --> 00:56:42,240 Si. 1094 00:56:43,160 --> 00:56:45,200 >> Però això - no necessàriament funcionaria, 1095 00:56:45,200 --> 00:56:48,690 perquè llavors vostè aconseguiria els espais a ser - 1096 00:56:48,690 --> 00:56:51,130 vostè hauria de tenir l'espai per obtenir consells sobre com - 1097 00:56:51,130 --> 00:56:54,310 Bé. 1098 00:56:54,310 --> 00:56:56,490 >> No sé - sóc de classe perdut en aquest punt. 1099 00:56:56,490 --> 00:56:58,120 Sí - no, no, no, aquests són bons punts. 1100 00:56:58,120 --> 00:57:00,420 Així que el que hem de fer és, igual que Sam va dir: 1101 00:57:00,420 --> 00:57:02,970 necessitem per seguir què cartes són les cartes imparells, 1102 00:57:02,970 --> 00:57:05,540 i quines són les lletres, fins i tot. 1103 00:57:06,650 --> 00:57:09,090 Però volem assegurar-nos que no només estàs buscant 1104 00:57:09,090 --> 00:57:12,110 a l'una i imparell 1105 00:57:12,110 --> 00:57:14,030 Els índexs de la cadena, 1106 00:57:14,030 --> 00:57:17,660 sinó més aviat mirar les cartes parells i imparells a la cadena, 1107 00:57:17,660 --> 00:57:20,190 així que hem de tenir una mica aquesta distinció entre 1108 00:57:20,190 --> 00:57:25,190 lletres - com el que en realitat és A, B, C, D, o així successivament, 1109 00:57:25,190 --> 00:57:29,090 i les coses que no són lletres, però encara en la nostra cadena. 1110 00:57:29,090 --> 00:57:32,390 Per exemple aquí, com aquest signe d'exclamació no és una lletra, 1111 00:57:32,390 --> 00:57:36,060 però segueix sent part de la nostra cadena, és encara un char. 1112 00:57:36,060 --> 00:57:38,820 Així mateix, tots aquests espais - 1113 00:57:38,820 --> 00:57:41,710 no té sentit per aprofitar un espai, no? 1114 00:57:41,710 --> 00:57:46,160 Així que volem assegurar-nos que estem d'alguna manera ometre els 1115 00:57:46,160 --> 00:57:49,410 sense deixar de rastrejar parells i imparells. 1116 00:57:50,900 --> 00:57:54,990 >> Així que una mica en la nostra caixa d'eines de programació 1117 00:57:54,990 --> 00:57:57,270 fins ara, si es vol, 1118 00:57:57,270 --> 00:58:01,310 tenim un nombre de diferents eines que hem parlat. 1119 00:58:01,310 --> 00:58:04,640 Així que una, per exemple, són variables, 1120 00:58:04,640 --> 00:58:07,120 com hem parlat aquí. 1121 00:58:07,120 --> 00:58:10,730 Una altra de les eines que hem parlat són funcions. 1122 00:58:10,730 --> 00:58:15,800 Fins ara hem parlat sobre les variables en el nostre pseudocodi aquí 1123 00:58:15,800 --> 00:58:19,760 com el que utilitzarem per emmagatzemar la nostra cadena. 1124 00:58:19,760 --> 00:58:24,630 Hem parlat de funcions per obtenir la longitud d'una corda, com strlen. 1125 00:58:28,510 --> 00:58:31,170 Hem estat parlant d'una altra cosa, i hem parlat 1126 00:58:31,170 --> 00:58:34,850 de molt abans a la secció d'avui: bucles. 1127 00:58:39,390 --> 00:58:42,030 >> Què pensen vostès sobre l'ús d'un bucle en aquest programa? 1128 00:58:42,030 --> 00:58:44,110 Jared, què et sembla? 1129 00:58:47,150 --> 00:58:50,030 Podríem utilitzar un bucle en aquest programa? 1130 00:58:50,030 --> 00:58:52,500 >> Probablement no, no, perquè vostè no ha d'anar a través d'ell més d'una vegada. 1131 00:58:52,500 --> 00:58:55,260 Bé, vostè no ha de passar pel que més d'una vegada? 1132 00:58:55,260 --> 00:58:57,190 >> La cadena completa. 1133 00:58:57,190 --> 00:59:00,660 Bé, així que vostè no ha de passar per tota la cadena una vegada. 1134 00:59:00,660 --> 00:59:03,330 Em sap greu que no tenia cap sentit! 1135 00:59:03,330 --> 00:59:06,360 Vostè no ha d'anar a través de tota la cadena més d'una vegada. 1136 00:59:06,360 --> 00:59:08,660 Bé. 1137 00:59:09,790 --> 00:59:11,920 Què et sembla? 1138 00:59:11,920 --> 00:59:14,110 >> Crec que és millor usar-los 1139 00:59:14,110 --> 00:59:16,640 pel que podem fer com capitalitzar mentre 1140 00:59:16,640 --> 00:59:19,750 la ubicació de la mateixa és el nombre de [inaudible]. 1141 00:59:19,750 --> 00:59:22,940 Gran, i així capitalitzar què? 1142 00:59:22,940 --> 00:59:25,200 Bé, pel que estem dient que 1143 00:59:25,200 --> 00:59:28,130 hem d'utilitzar un bucle perquè volem 1144 00:59:28,130 --> 00:59:32,550 una lletra en majúscules, mentre que no és un nombre. 1145 00:59:35,130 --> 00:59:37,140 Així que - ho sento, t'agradaria afegir? 1146 00:59:37,140 --> 00:59:39,340 >> Jo havia de dir que la manera de tractar la cadena 1147 00:59:39,340 --> 00:59:42,290 i [inaudible] a part de [inaudible] en els personatges? 1148 00:59:42,290 --> 00:59:43,710 Si. 1149 00:59:43,710 --> 00:59:45,850 >> I llavors podem assignar els nombres a - 1150 00:59:45,850 --> 00:59:47,780 o en base a la ubicació de les lletres a la cadena? 1151 00:59:47,780 --> 00:59:49,720 Si. 1152 00:59:49,720 --> 00:59:53,640 >> I identificar si és parell o imparell i capitalitzar la pròpia carta 1153 00:59:53,640 --> 00:59:57,750 mentre que la ubicació de la carta és [inaudible] - ho sento. 1154 00:59:57,750 --> 01:00:00,150 Gran. 1155 01:00:00,150 --> 01:00:03,430 >> Així que només un resum. 1156 01:00:03,430 --> 01:00:05,840 Em pots recordar el teu nom una altra vegada - Em sap greu. 1157 01:00:05,840 --> 01:00:06,900 >> Charlotte. 1158 01:00:06,900 --> 01:00:08,490 Charlotte, està bé. 1159 01:00:08,490 --> 01:00:11,130 Llavors, què està dient Charlotte, 1160 01:00:11,130 --> 01:00:14,950 que és totalment correcte - Déu, això li agrada auto guió en mi - 1161 01:00:14,950 --> 01:00:17,770 és que si ens fixem en una cadena 1162 01:00:17,770 --> 01:00:19,160 com està a la part superior - 1163 01:00:19,160 --> 01:00:21,590 "Thanks for the add" - 1164 01:00:21,590 --> 01:00:24,790 com una seqüència de caràcters 1165 01:00:24,790 --> 01:00:29,010 on el està en la posició 0, 1166 01:00:29,010 --> 01:00:32,260 la h està en la posició 1. 1167 01:00:32,260 --> 01:00:36,880 A és a 2, llavors tenim 3, 4, 5; 1168 01:00:36,880 --> 01:00:40,830 l'espai està en la posició 6. 1169 01:00:42,380 --> 01:00:45,300 Considerant - quina és la posició de f? 1170 01:00:45,300 --> 01:00:47,610 7! 1171 01:00:47,610 --> 01:00:49,300 O? 8. 1172 01:00:49,300 --> 01:00:52,070 R? 9. 1173 01:00:52,070 --> 01:00:54,340 I després tenim a 10, i llavors jo realment no es pot escriure sense 1174 01:00:54,340 --> 01:00:57,430 poc embrutar a la pantalla. 1175 01:00:57,430 --> 01:01:02,340 Però això és en realitat la manera com es pot parlar de cadenes en memòria. 1176 01:01:02,340 --> 01:01:04,660 És una cadena 1177 01:01:04,660 --> 01:01:07,920 és una seqüència de caràcters, 1178 01:01:07,920 --> 01:01:12,430 i quan ens referim a un caràcter individual en una cadena, 1179 01:01:12,430 --> 01:01:15,280 que sovint ho fan amb referència a la posició del personatge 1180 01:01:15,280 --> 01:01:17,620 dins de la cadena, 1181 01:01:17,620 --> 01:01:19,910 probablement de la mateixa manera que parlem de setembre 1182 01:01:19,910 --> 01:01:22,870 sent el novè mes de l'any 1183 01:01:22,870 --> 01:01:27,730 o el dilluns és el primer dia de la setmana. 1184 01:01:29,280 --> 01:01:33,070 Així que això ens proporciona una forma de 1185 01:01:33,070 --> 01:01:37,030 esbrinar quines són imparells fins i tot davant 1186 01:01:37,030 --> 01:01:39,540 perquè vostè pot veure aquí, 1187 01:01:39,540 --> 01:01:43,640 si ho coincideixin amb aquesta samarreta, 1188 01:01:46,310 --> 01:01:49,360 es pot veure que totes les majúscules 1189 01:01:49,360 --> 01:01:53,040 estan en posicions parells, 1190 01:01:53,040 --> 01:01:55,880 almenys per a la primera paraula, 1191 01:01:55,880 --> 01:01:59,080 i llavors les coses són llançats fora un cop arribem a aquest espai, 1192 01:01:59,080 --> 01:02:02,460 perquè no es tenen en compte aquest espai com una carta, 1193 01:02:02,460 --> 01:02:05,150 així que és com si comencéssim 1194 01:02:05,150 --> 01:02:08,930 i va ser 0, 1, 2, 3, 4, 5, 1195 01:02:08,930 --> 01:02:12,600 espai, 6, 7, 8, l'espai, 1196 01:02:12,600 --> 01:02:16,440 9, i després 10, 11, 12, i així successivament. 1197 01:02:19,300 --> 01:02:22,910 >> Cool, així que sens dubte haurà de fer servir algun tipus de bucle 1198 01:02:22,910 --> 01:02:27,760 per revisar cada un dels personatges alhora. 1199 01:02:31,330 --> 01:02:34,580 Per tant en aquest punt, 1200 01:02:36,490 --> 01:02:38,360 tornarem al nostre pseudocodi vell aquí. 1201 01:02:40,970 --> 01:02:42,650 Com a part d'aquesta identificació de quines 1202 01:02:42,650 --> 01:02:45,350 estan en majúscules i quins són minúscules, 1203 01:02:45,350 --> 01:02:48,340 voldrem fer això en algun tipus de bucle. 1204 01:02:51,080 --> 01:02:53,390 Loop, còlon. 1205 01:02:55,070 --> 01:03:01,220 Quin tipus de bucle, dels tipus de bucles que tenim, 1206 01:03:01,220 --> 01:03:03,670 sembla ser una bona opció per utilitzar aquí? 1207 01:03:03,670 --> 01:03:05,610 >> Jo estava pensant el bucle for. 1208 01:03:05,610 --> 01:03:07,500 I per què està vostè pensant en bucle? 1209 01:03:07,500 --> 01:03:10,000 >> Com que comença en zero i, a continuació, 1210 01:03:10,000 --> 01:03:13,000 quan arribem a la longitud de la cadena, 1211 01:03:13,000 --> 01:03:16,170 i llavors cada iteració pot [inaudible], també? 1212 01:03:16,170 --> 01:03:18,260 Sí, exactament. 1213 01:03:18,260 --> 01:03:21,490 Així, de les opcions diferents de bucles, 1214 01:03:21,490 --> 01:03:25,350 que tenim per bucles, els bucles while i do-while. 1215 01:03:25,350 --> 01:03:28,550 Quan un bucle és particularment útil 1216 01:03:28,550 --> 01:03:32,120 és quan es vol saber 1217 01:03:32,120 --> 01:03:34,940 classe d'on vostè està en el bucle, 1218 01:03:34,940 --> 01:03:38,520 quantes vegades el bucle ha estat executat fins ara. 1219 01:03:38,520 --> 01:03:42,490 Que és exactament el que volem saber en aquesta situació, 1220 01:03:42,490 --> 01:03:44,640 com Kelly va dir: 1221 01:03:44,640 --> 01:03:47,400 amb seu fora del comentari anterior de Charlotte que volem saber la posició 1222 01:03:47,400 --> 01:03:49,900 del caràcter dins de la cadena, 1223 01:03:49,900 --> 01:03:51,750 i el bucle for ens donarà exactament això, 1224 01:03:51,750 --> 01:03:54,680 perquè si comencem espècie de mirar cap enrere en la nostra cadena, 1225 01:03:54,680 --> 01:03:57,140 si comencem el nostre llaç per a 0, 1226 01:03:57,140 --> 01:04:00,350 i es puja a través de la longitud de la cadena completa, 1227 01:04:00,350 --> 01:04:04,740 llavors podem associar la lletra T 1228 01:04:04,740 --> 01:04:08,110 amb el 0 en el nostre bucle for, 1229 01:04:09,950 --> 01:04:13,080 lletra H amb l'1 al nostre de bucle, i així successivament, 1230 01:04:13,080 --> 01:04:16,600 va tot el camí a través de l'extrem de la cadena. 1231 01:04:18,810 --> 01:04:21,890 >> Així que anem a començar a programar aquesta una mica 1232 01:04:21,890 --> 01:04:24,930 només per vostès tenir una idea de com es veu. 1233 01:04:24,930 --> 01:04:27,980 Vaig a guardar això, 1234 01:04:27,980 --> 01:04:31,230 així que tenim el nostre codi pseudo aquí, 1235 01:04:33,490 --> 01:04:38,120 i vaig a esborrar tot. 1236 01:04:38,120 --> 01:04:42,210 Així que tinc una pissarra en blanc. 1237 01:04:42,210 --> 01:04:45,910 Vaig a començar per escriure int main (void) 1238 01:04:45,910 --> 01:04:48,440 { 1239 01:04:48,440 --> 01:04:51,380 Vaig a posar el 0 retorn a 1240 01:04:51,380 --> 01:04:53,320 i després el.} 1241 01:04:53,320 --> 01:04:56,130 Així que en general quan començo a programar, això és el que començar. 1242 01:04:56,130 --> 01:04:59,370 El guardaré perquè vostès ho tenen. 1243 01:05:06,290 --> 01:05:08,440 Així que una de les primeres coses que parlem va ser 1244 01:05:08,440 --> 01:05:10,920 rebent l'entrada de l'usuari 1245 01:05:10,920 --> 01:05:13,740 i el seu emmagatzematge en una cadena. 1246 01:05:13,740 --> 01:05:16,420 Com fem perquè l'entrada d'un usuari? 1247 01:05:16,420 --> 01:05:19,640 >> GetString. 1248 01:05:19,640 --> 01:05:21,870 GetString, està bé. 1249 01:05:23,150 --> 01:05:26,820 Així que si escric GetString () 1250 01:05:26,820 --> 01:05:32,150 i un punt i coma. 1251 01:05:32,150 --> 01:05:36,630 Tractarem d'executar aquest, es aquesta carrera, en primer lloc? 1252 01:05:36,630 --> 01:05:38,430 I per què no funcionarà això? 1253 01:05:38,430 --> 01:05:40,090 >> Vostè ha de declarar la variable. 1254 01:05:40,090 --> 01:05:43,040 He de declarar una variable. Bé. 1255 01:05:43,040 --> 01:05:45,700 >> Llavors, com puc fer això? 1256 01:05:45,700 --> 01:05:48,400 T'importa escriure alguna cosa, compartir? 1257 01:05:48,400 --> 01:05:51,270 I després podem pujar. 1258 01:05:51,270 --> 01:05:54,630 A veure, Dan, oi, està bé. 1259 01:05:54,630 --> 01:05:59,100 O Daniel. Copiar en què, d'entrada cadena = GetString (). 1260 01:05:59,100 --> 01:06:01,340 Awesome. 1261 01:06:01,340 --> 01:06:02,890 Això córrer? 1262 01:06:02,890 --> 01:06:05,210 Anem a intentar-ho. 1263 01:06:05,210 --> 01:06:08,890 Cop d'execució, el codi font pujar, edifici, va ocórrer un error. 1264 01:06:08,890 --> 01:06:11,040 Bé. 1265 01:06:11,040 --> 01:06:14,950 Llavors, què s'està encenent aquí? 1266 01:06:14,950 --> 01:06:18,700 L'ús de 'cadena' identificador no declarat. 1267 01:06:18,700 --> 01:06:22,840 >> Hem de incloure les biblioteques? 1268 01:06:22,840 --> 01:06:25,130 Sí, així de Dan dient que hem d'incloure les biblioteques. 1269 01:06:25,130 --> 01:06:28,270 És això el que anaves a dir, Stella? Awesome. 1270 01:06:29,450 --> 01:06:31,430 Això és impressionant, pel que Stella, pot 1271 01:06:31,430 --> 01:06:34,800 còpia aquest codi de espai de Daniel? 1272 01:06:34,800 --> 01:06:37,580 Si fa clic sobre Daniel Roland Ki, copiar, 1273 01:06:37,580 --> 01:06:41,360 i després es col · loca la línia include, i després guardar fora? 1274 01:06:46,580 --> 01:06:49,360 Avísame quan estiguis llest. 1275 01:06:57,160 --> 01:06:59,490 Així que aquesta sintaxi d'inclusió és també una espècie de covard; 1276 01:06:59,490 --> 01:07:02,210 hi ha com aquesta etiqueta hash, 1277 01:07:02,210 --> 01:07:05,760 I aquí està el incloure, i després hi ha els claudàtors angulars. 1278 01:07:12,490 --> 01:07:15,360 Te'n recordes de com funciona això, o he de posar en el codi aquí mateix? 1279 01:07:15,360 --> 01:07:17,850 >> Estic bé. 1280 01:07:17,850 --> 01:07:19,810 Bé. 1281 01:07:19,810 --> 01:07:23,260 >> El imprimir - No estava segur de quina biblioteca, però. 1282 01:07:23,260 --> 01:07:25,570 Oh, està bé - si, de manera que és la biblioteca CS50. 1283 01:07:25,570 --> 01:07:27,660 >> Oh, vaig posar biblioteca stdio. 1284 01:07:27,660 --> 01:07:30,950 >> Oh, el tinc - sí, no, això és - 1285 01:07:30,950 --> 01:07:34,380 per la qual cosa resulta que la cadena és realment una cosa que és especial per CS50. 1286 01:07:36,590 --> 01:07:41,240 Hi ha en realitat no és un tipus de cadena true 1287 01:07:41,240 --> 01:07:45,000 perquè aquí, la cadena està en la posició tipus, - 1288 01:07:45,000 --> 01:07:49,140 estem declarant una variable d'entrada es diu de tipus cadena - 1289 01:07:49,140 --> 01:07:53,320 i estem posant dins de l'entrada 1290 01:07:53,320 --> 01:07:58,440 el valor que es retorna a nosaltres: la sortida d'aquesta crida a la funció GetString. 1291 01:07:58,440 --> 01:08:02,910 Pots dir que això és una crida a la funció perquè té els parèntesis, com printf fa, 1292 01:08:02,910 --> 01:08:05,920 igual que strlen fa. 1293 01:08:05,920 --> 01:08:09,860 Però cadena no és en realitat un tipus real 1294 01:08:09,860 --> 01:08:11,760 en el llenguatge C. 1295 01:08:11,760 --> 01:08:15,710 Ho hem fet en un tipus, i anem a prendre alguna cosa més del que realment és 1296 01:08:15,710 --> 01:08:19,000 al carrer, perquè no hi ha una manera de treballar amb cadenes; 1297 01:08:19,000 --> 01:08:22,479 que acabem de fer alguna cosa perquè es vegi una mica millor. 1298 01:08:22,479 --> 01:08:25,240 >> Així que aquí anem. 1299 01:08:25,240 --> 01:08:28,439 Aquí està el codi de Stella. 1300 01:08:28,439 --> 01:08:32,470 Té el # include . 1301 01:08:32,470 --> 01:08:36,390 Altres persones criden a això com un hash de vegades inclouen o poden incloure una esmolada. 1302 01:08:36,390 --> 01:08:39,580 Ara podem començar, executar, 1303 01:08:39,580 --> 01:08:43,649 i encara obtenir un error. 1304 01:08:43,649 --> 01:08:46,290 Anem a veure el que passa. 1305 01:08:48,069 --> 01:08:50,569 "Variable no utilitzada 'input'". 1306 01:08:50,569 --> 01:08:53,350 Bé, això està bé, està bé. 1307 01:08:53,350 --> 01:08:55,859 Vull dir, no és genial, 1308 01:08:55,859 --> 01:08:57,930 perquè estem rebent un error i no està en funcionament, 1309 01:08:57,930 --> 01:09:00,410 però el que això vol dir és que 1310 01:09:00,410 --> 01:09:03,130 no hem usat la nostra variable, el que té sentit. 1311 01:09:03,130 --> 01:09:06,090 No hem tractat de fer res amb ella. 1312 01:09:07,819 --> 01:09:10,490 Aquesta és una forma que 1313 01:09:10,490 --> 01:09:14,170 Clang està tractant d'ajudar a fer de no només estem utilitzant variables 1314 01:09:14,170 --> 01:09:18,819 i després sense voler cridar res més endavant en el nostre codi, 1315 01:09:18,819 --> 01:09:21,649 ajudant a evitar els errors d'aquesta manera. 1316 01:09:23,130 --> 01:09:28,810 >> Molt bé, així que tenim l'entrada d'usuari, 1317 01:09:28,810 --> 01:09:31,910 que s'emmagatzema en una variable. 1318 01:09:31,910 --> 01:09:34,569 El següent pas va ser llavors 1319 01:09:34,569 --> 01:09:37,609 començar a buscar en tots els caràcters de la cadena 1320 01:09:37,609 --> 01:09:41,830 i la identificació de quines seran majúscula 1321 01:09:41,830 --> 01:09:44,600 i quins han de ser minúscules. 1322 01:09:44,600 --> 01:09:49,439 I igual que Kelly i Charlotte criat, 1323 01:09:49,439 --> 01:09:52,340 fem això amb un bucle for. 1324 01:09:52,340 --> 01:09:55,520 Llavors, ¿Algú es recorda de la sintaxi d'un bucle for 1325 01:09:55,520 --> 01:09:58,670 i m'agradaria prendre una punyalada en l'escriptura justa 1326 01:09:58,670 --> 01:10:03,170 la primera línia del bucle for, només per l'estona? 1327 01:10:05,740 --> 01:10:07,330 Kelly, vols donar-li una oportunitat? 1328 01:10:07,330 --> 01:10:10,300 >> Sí, així que cal inicialitzar primer, 1329 01:10:10,300 --> 01:10:13,170 així que em vaig posar = 0, 1330 01:10:13,170 --> 01:10:15,390 i després vaig fer i 01:10:18,570 Està a l'Espai - puc aixecar? 1332 01:10:18,570 --> 01:10:21,330 >> Sí, vaig ficar la pota una mica, però sí. 1333 01:10:21,330 --> 01:10:24,180 >> Bé, anem a estirar-lo cap amunt. 1334 01:10:24,180 --> 01:10:26,490 Awesome. 1335 01:10:26,490 --> 01:10:29,510 >> Però llavors jo no sabia si havia de - 1336 01:10:29,510 --> 01:10:32,180 Sí, està bé. 1337 01:10:33,020 --> 01:10:36,030 Així que aquí està el que Kelly té: veurem aviat. 1338 01:10:36,030 --> 01:10:40,290 Així que ella s'inclou la biblioteca CS50 a la part superior. 1339 01:10:40,290 --> 01:10:44,790 Ha inclòs la biblioteca estàndard de IO a la part superior, 1340 01:10:45,550 --> 01:10:48,990 i el IO estàndard té funcions com printf, 1341 01:10:48,990 --> 01:10:51,690 de manera que si mai vols utilitzar printf, necessita aquesta línia. 1342 01:10:53,060 --> 01:10:56,140 I llavors es va incloure la biblioteca cadena, 1343 01:10:56,140 --> 01:10:58,200 que necessitarem, 1344 01:10:58,200 --> 01:11:01,010 perquè la biblioteca de cordes té la funció strlen, 1345 01:11:01,010 --> 01:11:04,320 que arribarem en només una mica. 1346 01:11:04,320 --> 01:11:07,560 Així que si ens fixem en el que Kelly ha fet aquí, 1347 01:11:07,560 --> 01:11:10,260 Què ens pot caminar a través del que vas fer? 1348 01:11:10,260 --> 01:11:13,600 >> Sí, que sí - Dic, tinc errors, així que - 1349 01:11:13,600 --> 01:11:15,380 Sí, no, és - 1350 01:11:15,380 --> 01:11:18,580 >> Així que volia cridar a la cadena que em va venir a mi "cadena". 1351 01:11:18,580 --> 01:11:22,230 Volia imprimir la cadena 1352 01:11:22,230 --> 01:11:25,640 i llavors - 1353 01:11:27,450 --> 01:11:30,930 Jo volia com establir la cadena com una matriu com de cada personatge 1354 01:11:30,930 --> 01:11:33,170 ser diferent [inaudible], no? 1355 01:11:33,170 --> 01:11:38,080 I llavors jo volia començar a la posició 0 1356 01:11:38,080 --> 01:11:40,630 i després cada 2 espais, 1357 01:11:40,630 --> 01:11:42,580 M'anava a capitalitzar, 1358 01:11:42,580 --> 01:11:45,680 així que només ho va descriure com el 23, perquè jo estava mirant la taula ASCII. 1359 01:11:45,680 --> 01:11:48,730 Així que això és el que estava pensant - Sé que no està bé. 1360 01:11:48,730 --> 01:11:50,920 >> Ho tinc, així que això és un gran començament. 1361 01:11:50,920 --> 01:11:54,120 Crec que molta de l'estructura està en el seu lloc aquí. 1362 01:11:54,120 --> 01:11:57,500 Anem a passar per tipus de línia a línia i veure el que està passant. 1363 01:11:57,500 --> 01:12:01,040 Així que la manera que m'agrada fer això acaba de començar compilant el codi 1364 01:12:01,040 --> 01:12:04,300 i deixar que el compilador em diu com el que li passa al meu codi, 1365 01:12:04,300 --> 01:12:07,450 ja que el compilador és realment bo en que li diu el que està malament amb el seu codi. 1366 01:12:09,790 --> 01:12:12,780 Així que si la toquem, la construcció, i no s'acumula. 1367 01:12:12,780 --> 01:12:14,860 Es diu que hi va haver un error, 1368 01:12:14,860 --> 01:12:17,320 de manera que si desplaceu-vos cap avall i busqueu en el primer error, 1369 01:12:17,320 --> 01:12:20,960 va dir - 1370 01:12:20,960 --> 01:12:22,040 de desplaçar de nou fins a la part superior, 1371 01:12:22,040 --> 01:12:26,070 podem veure que hi ha 5 errors generats per aquí, a la part inferior. 1372 01:12:26,070 --> 01:12:30,180 Vaja, això és realment curta. 1373 01:12:31,810 --> 01:12:35,790 Suposo que simplement no aconseguirà res millor. 1374 01:12:36,970 --> 01:12:38,500 >> Aquí anem. 1375 01:12:39,790 --> 01:12:42,530 Així que hi ha 5 errors totals generats. 1376 01:12:42,530 --> 01:12:45,140 Aquí només puc veure les 2 primeres, 1377 01:12:45,140 --> 01:12:49,100 per la qual cosa es pot moure això una mica i després tipus de desplaçament cap amunt. 1378 01:12:49,100 --> 01:12:53,220 Aquest és el comandament que es va executar per compilar el codi, 1379 01:12:53,220 --> 01:12:59,030 i després el primer error va ser en file.c aquí: 1380 01:12:59,030 --> 01:13:03,300 "S'espera identificar o '('", i va ser en aquesta línia 1381 01:13:03,300 --> 01:13:06,680 on aquesta cadena = GetString (). 1382 01:13:07,660 --> 01:13:12,920 Es pot veure aquí que era a la línia 8 de file.c, 1383 01:13:12,920 --> 01:13:17,230 i llavors jo crec que això és de 12 caràcters - que és l'error. 1384 01:13:17,230 --> 01:13:20,390 Així que el que va malament en la línia 8 - Kelly? 1385 01:13:20,390 --> 01:13:22,810 >> Vostè només ha de trucar, com una carta o alguna cosa així, 1386 01:13:22,810 --> 01:13:24,400 s com a cadena o alguna cosa així? 1387 01:13:24,400 --> 01:13:28,250 Sí, per la qual cosa resulta que aquests noms de tipus especials, 1388 01:13:28,250 --> 01:13:31,770 així string, int, curt char, 1389 01:13:31,770 --> 01:13:35,740 que són totes les paraules clau especials, 1390 01:13:35,740 --> 01:13:38,940 i en realitat no es poden utilitzar com a noms de variables, 1391 01:13:38,940 --> 01:13:41,430 perquè el compilador veu això i diu: 1392 01:13:41,430 --> 01:13:43,680 "Oh, ja sé que és un tipus" 1393 01:13:43,680 --> 01:13:46,530 així que en realitat no es pot tenir una variable de cadena anomenada cadena, 1394 01:13:46,530 --> 01:13:50,800 com que estic tractant de fer aquí, el que no funcionarà. 1395 01:13:52,610 --> 01:13:58,250 Però en canvi, podem dir que és com es o st o str. 1396 01:13:58,250 --> 01:14:01,540 Tampoc es podria dir int. 1397 01:14:01,540 --> 01:14:03,740 No podem tenir una cadena anomenada int. 1398 01:14:03,740 --> 01:14:06,740 No podem tenir una cadena anomenada char; cap d'ells va a funcionar. 1399 01:14:06,740 --> 01:14:09,420 >> Així que simplement l'anomenarem s de moment. 1400 01:14:10,630 --> 01:14:13,170 Awesome. 1401 01:14:13,170 --> 01:14:17,500 Així que el següent que està passant en aquesta línia? 1402 01:14:21,390 --> 01:14:24,350 String - aquesta línia es veu molt bé? 1403 01:14:24,350 --> 01:14:27,830 Anem a donar-li una altra oportunitat, anem a executar. 1404 01:14:27,830 --> 01:14:30,360 Bé, de manera que encara amb errors. 1405 01:14:30,360 --> 01:14:32,080 Aquesta vegada, estem a 4 errors. 1406 01:14:32,080 --> 01:14:34,350 Així que ens van donar una. 1407 01:14:34,350 --> 01:14:36,130 Anem a pujar. 1408 01:14:36,130 --> 01:14:38,890 "Nom de tipus inesperat 'cadena': Expressió esperat", no? 1409 01:14:38,890 --> 01:14:41,780 >> Sí, això és perquè he intentat nomenar la cadena. 1410 01:14:41,780 --> 01:14:44,270 Sí, el que sembla que ara també hem d'anar fix 1411 01:14:44,270 --> 01:14:46,560 totes aquestes referències a cadena. 1412 01:14:46,560 --> 01:14:50,070 Vostè pot veure que hi ha una referència a la cadena d'aquí, un aquí, un aquí, 1413 01:14:50,070 --> 01:14:53,440 perquè puguem passar tot això a s. 1414 01:14:56,040 --> 01:15:00,930 Gran. Bé, executeu-lo de nou. 1415 01:15:00,930 --> 01:15:03,260 Edifici - un altre error. 1416 01:15:03,260 --> 01:15:06,900 >> Bé, ara que estem a un error, 1417 01:15:06,900 --> 01:15:11,090 així int i = s i després els claudàtors. 1418 01:15:11,090 --> 01:15:14,880 Llavors, ¿Pots explicar una mica sobre el que estava fent aquí, Kelly? 1419 01:15:14,880 --> 01:15:17,120 Sí >>. 1420 01:15:17,120 --> 01:15:19,410 Era a la línia 10. 1421 01:15:19,410 --> 01:15:22,760 >> No sé si necessitàvem tot, 1422 01:15:22,760 --> 01:15:25,560 però crec que estava intentant - 1423 01:15:25,560 --> 01:15:27,580 El guardaré perquè pugui seguir endavant. 1424 01:15:27,580 --> 01:15:30,470 >> Crec que estava 1425 01:15:30,470 --> 01:15:33,150 tractant de dir-li que comencen a la posició 0 1426 01:15:33,150 --> 01:15:35,030 al principi de la meva bucle for, 1427 01:15:35,030 --> 01:15:38,370 així que crec que potser aquesta paraula no era necessària. 1428 01:15:39,690 --> 01:15:41,350 Així que per recapitular, 1429 01:15:41,350 --> 01:15:44,850 vostè deia que això - que estaven tractant d'iniciar aquesta en la posició 0 1430 01:15:44,850 --> 01:15:47,030 I aconseguir això - si, 1431 01:15:47,030 --> 01:15:50,460 així que crec que abans, també, quan anaven caminant pel codi, 1432 01:15:50,460 --> 01:15:54,070 que estava parlant de com volia tractar la cadena com una matriu 1433 01:15:54,070 --> 01:15:57,440 pel que podem accedir a cada personatge individualment. 1434 01:15:57,440 --> 01:16:00,660 Crec que Dan matrius esmentades, també, tractant de convertir cadenes a una matriu. 1435 01:16:01,400 --> 01:16:03,300 >> Resulta que el tipus de sota el capó, 1436 01:16:03,300 --> 01:16:06,060 una cadena que s'emmagatzema com una matriu ja, 1437 01:16:06,060 --> 01:16:08,060 i es pot accedir com una matriu; 1438 01:16:08,060 --> 01:16:12,390 no hi ha conversió que vostè ha de fer. 1439 01:16:12,390 --> 01:16:15,770 No és una cadena - curs - 1440 01:16:15,770 --> 01:16:18,200 una cadena no és realment una matriu, 1441 01:16:18,200 --> 01:16:21,940 però es pot accedir com a tal, ja que tots els caràcters s'emmagatzemen 1442 01:16:21,940 --> 01:16:25,160 un al costat de l'altre en la memòria d'un, 1443 01:16:25,160 --> 01:16:28,310 així que si vol aconseguir el primer caràcter de la cadena, 1444 01:16:28,310 --> 01:16:31,910 és el mateix que rebre el primer nombre enter en una matriu d'enters. 1445 01:16:31,910 --> 01:16:35,010 Així que moltes vegades - ens tornarem 1446 01:16:35,010 --> 01:16:36,360 es refereixen a la 2 com 1447 01:16:36,360 --> 01:16:38,590 oh, com una cadena, com una matriu, 1448 01:16:38,590 --> 01:16:40,830 encara que en realitat - són coses molt diferents, 1449 01:16:40,830 --> 01:16:43,410 però es poden tractar molt semblants. 1450 01:16:44,700 --> 01:16:47,400 Així que resulta que aquesta línia en realitat - 1451 01:16:47,400 --> 01:16:51,270 no cal fer cap conversió, 1452 01:16:51,270 --> 01:16:53,500 i, de fet, 1453 01:16:53,500 --> 01:16:56,790 això en realitat no és una expressió vàlida, 1454 01:16:56,790 --> 01:16:59,040 que és el que el nostre compilador ens està dient. 1455 01:16:59,040 --> 01:17:01,290 És com dir, "Hey, espera una expressió, 1456 01:17:01,290 --> 01:17:04,610 i el que tenim aquí és una cosa que no és una expressió. " 1457 01:17:04,610 --> 01:17:07,310 Per declarar una matriu, 1458 01:17:07,310 --> 01:17:11,780 tot el que ha de fer és una cosa com això amb un punt i coma, 1459 01:17:11,780 --> 01:17:15,080 i després et dic la matriu quant de temps voleu que sigui, 1460 01:17:15,080 --> 01:17:18,370 tal com 5, de manera que aquesta línia 10 1461 01:17:18,370 --> 01:17:23,880 declarar una matriu anomenada i amb 5 punts en el mateix. 1462 01:17:23,880 --> 01:17:26,540 >> Aquest és una banda, el que no és necessari que el codi, 1463 01:17:26,540 --> 01:17:30,970 però això és - això és una cosa del que la declaració sembla. 1464 01:17:30,970 --> 01:17:35,310 >> Com no s'utilitza char i [strlen (s)]? 1465 01:17:35,310 --> 01:17:38,500 Char i [strlen (s)]? 1466 01:17:38,500 --> 01:17:41,500 I >> char, i després dins del parèntesi, strlen (s). 1467 01:17:43,900 --> 01:17:47,710 Sí, per la qual cosa podria - 1468 01:17:47,710 --> 01:17:49,460 que podíem fer això, 1469 01:17:49,460 --> 01:17:52,160 i això seria declarar - què això? 1470 01:17:52,160 --> 01:17:55,900 >> Crec que seria declarar una matriu 1471 01:17:55,900 --> 01:18:01,780 de, com - de - 1472 01:18:01,780 --> 01:18:04,540 oh, no cal l'i - oh, 1473 01:18:04,540 --> 01:18:06,420 sí, definitivament no és necessari l'i. 1474 01:18:06,420 --> 01:18:10,250 Ha declarar una matriu de caràcters 1475 01:18:10,250 --> 01:18:13,150 s de longitud. 1476 01:18:14,680 --> 01:18:16,770 I així, el que Sam està dient és que 1477 01:18:16,770 --> 01:18:20,660 aquesta línia 10 - m'ho dius a mi posar una mica d'espai entre ell i la resta perquè puguem aïllar - 1478 01:18:20,660 --> 01:18:23,440 aquesta línia 10 es declara una matriu 1479 01:18:23,440 --> 01:18:28,520 de caràcters, strlen (s) per valor d'ells, 1480 01:18:28,520 --> 01:18:32,270 però en realitat cal l'i, 1481 01:18:32,270 --> 01:18:35,710 i la raó per la qual necessitem i és perquè hem de donar un nom de la matriu; 1482 01:18:35,710 --> 01:18:38,900 en cas contrari, no tindria una forma de referir-se a la matriu més endavant en el codi. 1483 01:18:38,900 --> 01:18:41,180 >> Així que això d'aquí és el nom de la matriu 1484 01:18:41,180 --> 01:18:43,420 ia l'interior és la longitud. 1485 01:18:43,420 --> 01:18:45,010 Això ens donarà una matriu, 1486 01:18:45,010 --> 01:18:47,430 però això és - de nou, aquesta és una declaració. 1487 01:18:47,430 --> 01:18:50,380 No és una feina, no és una inicialització. 1488 01:18:50,380 --> 01:18:52,330 Si declarem aquesta sèrie com aquesta, 1489 01:18:52,330 --> 01:18:54,490 hi ha realment res en el contingut de la matriu. 1490 01:18:54,490 --> 01:18:57,490 És només escombraries - ho està aquí. 1491 01:18:57,490 --> 01:18:59,780 I com hem dit, 1492 01:18:59,780 --> 01:19:01,340 que en realitat ni tan sols és necessari fer aquesta conversió, 1493 01:19:01,340 --> 01:19:04,810 perquè ja podem tractar cadena s com una matriu. 1494 01:19:06,750 --> 01:19:09,170 Sé que ens estem quedant una mica llarg en el temps, 1495 01:19:09,170 --> 01:19:12,330 però vull aconseguir realment ràpidament a aquest bucle for 1496 01:19:12,330 --> 01:19:14,850 i li mostrarà com tenir accés als caràcters individuals de la matriu, 1497 01:19:14,850 --> 01:19:17,170 perquè això és clau per a la nostra missió. 1498 01:19:17,170 --> 01:19:20,790 I llavors et deixarem anar d'allí. 1499 01:19:20,790 --> 01:19:24,610 >> Així que aquí, tenim un bucle for 1500 01:19:24,610 --> 01:19:28,310 que es veu gairebé bé. 1501 01:19:28,310 --> 01:19:30,960 El que no és del tot gairebé arribem? 1502 01:19:30,960 --> 01:19:33,240 Com es digui - el que no està del tot bé en això per bucle? 1503 01:19:33,240 --> 01:19:36,010 >> No hi ha claus? 1504 01:19:36,010 --> 01:19:38,420 No hi ha claus, per exemple. 1505 01:19:38,420 --> 01:19:42,580 Vull assegurar-me que tenim el cos del bucle amb claus. 1506 01:19:42,580 --> 01:19:45,240 Vaja, no la clau de quadrat! 1507 01:19:45,240 --> 01:19:48,660 I què és el següent que hem de fer amb aquest bucle? 1508 01:19:48,660 --> 01:19:52,640 Si tracte i executar, 1509 01:19:52,640 --> 01:19:56,740 quin és aquest error que em surt? 1510 01:19:56,740 --> 01:20:00,990 Tinc tots aquests errors - que he de inicialitzar i. 1511 01:20:00,990 --> 01:20:03,610 Gran. 1512 01:20:03,610 --> 01:20:05,770 Així que aquest serà un bucle - això no és molt allà, 1513 01:20:05,770 --> 01:20:08,680 però està molt a prop. 1514 01:20:08,680 --> 01:20:11,260 Aquest codi, ara pot córrer, 1515 01:20:11,260 --> 01:20:14,620 construir, un error es segueix produint. 1516 01:20:17,960 --> 01:20:19,800 Per què se segueixen queixant, 1517 01:20:19,800 --> 01:20:22,030 dient que l'expressió no s'utilitza, 1518 01:20:22,030 --> 01:20:24,600 i això és perquè aquesta línia no fa res. 1519 01:20:24,600 --> 01:20:27,620 No ho guardi en qualsevol lloc, no teníem guardar el resultat. 1520 01:20:27,620 --> 01:20:30,210 On hauríem d'estar estalviant aquest resultat? 1521 01:20:30,210 --> 01:20:32,920 >> S o i? 1522 01:20:32,920 --> 01:20:35,990 Exactament, i aquesta sintaxi funky, 1523 01:20:35,990 --> 01:20:38,550 aquest s amb els claudàtors 1524 01:20:38,550 --> 01:20:41,500 significa l'accés del caràcter i de s. 1525 01:20:41,500 --> 01:20:45,650 Això serà una cosa que és realment important per a l'assignació. 1526 01:20:45,650 --> 01:20:48,070 Malauradament, haurem de parar aquí, 1527 01:20:48,070 --> 01:20:50,550 de manera que la secció Sebastià pot entrar, 1528 01:20:50,550 --> 01:20:53,980 però estic content d'estar fora després, i prendran les preguntes. 1529 01:20:53,980 --> 01:20:56,680 Així que gràcies nois per venir. 1530 01:20:56,680 --> 01:20:59,730 Això hauria de carregar, crear, executar. 1531 01:21:01,570 --> 01:21:04,320 Podem entrar en una cadena com "hola" 1532 01:21:06,570 --> 01:21:08,730 i s'imprimeix "qox". 1533 01:21:08,730 --> 01:21:11,030 [Rialles] 1534 01:21:11,030 --> 01:21:14,640 >> Així que no hi ha prou, però en moviment, aconseguint als bucles! 1535 01:21:14,640 --> 01:21:18,640 Gràcies per venir, i vaig a estar fora.