1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] DAVID J. Malan: Molt bé, aquest és CS50 i és aquesta la 2 00:00:09,920 --> 00:00:15,250 final de la setmana 1, així que les targetes estan en estudi i el nombre total de 3 00:00:15,250 --> 00:00:18,640 companys de classe que té aquest any és de 745. 4 00:00:18,640 --> 00:00:20,920 I estem molt contents de tenir a molts de vostès en el curs 5 00:00:20,920 --> 00:00:23,680 aquest semestre, però tot i aquest curs és tan gran, 6 00:00:23,680 --> 00:00:26,090 adonar-se que es tracta d'aquestes coses com dinars divendres, com 7 00:00:26,090 --> 00:00:29,020 les hores d'oficina, seccions 15-persona, i que així successivament 8 00:00:29,020 --> 00:00:30,590 són realment la intenció de crear aquest més íntim 9 00:00:30,590 --> 00:00:31,140 ambient. 10 00:00:31,140 --> 00:00:34,070 Així que, encara que és possible que es reuneixen una o dues vegades per setmana, aquí a 11 00:00:34,070 --> 00:00:36,420 Sanders, sabem que gran part de la seva experiència en aquest curs 12 00:00:36,420 --> 00:00:39,330 serà molt estar en mans del costat dels seus companys de classe 13 00:00:39,330 --> 00:00:40,730 i el personal docent. 14 00:00:40,730 --> 00:00:43,960 >> Així que aquí anem, Fall 2012. 15 00:00:43,960 --> 00:00:47,530 Així recordar que l'última vegada que va acabar amb una nota de 16 00:00:47,530 --> 00:00:50,460 imprecisió, parlant de la representació dels nombres. 17 00:00:50,460 --> 00:00:52,950 I ens fixem en un dels fracassos que van ocórrer en el 18 00:00:52,950 --> 00:00:54,920 món real, quan es tractava de malentesos 19 00:00:54,920 --> 00:00:55,890 com funcionen els ordinadors. 20 00:00:55,890 --> 00:00:58,590 Bé, avui anem a revisar una altra d'aquestes idees 21 00:00:58,590 --> 00:01:01,410 així com continuar amb la nostra discussió del client CS50 22 00:01:01,410 --> 00:01:04,090 i C, i el que significa realment per programar. 23 00:01:04,090 --> 00:01:06,430 Però en primer lloc, a només un parell d'anuncis remolí. 24 00:01:06,430 --> 00:01:08,930 >> Seccions començarà aquest diumenge, i la primera setmana és sempre un 25 00:01:08,930 --> 00:01:11,030 poc d'un començament ràpid, ja que només es va posar en 26 00:01:11,030 --> 00:01:12,620 els formularis de la secció. 27 00:01:12,620 --> 00:01:14,450 Estem fent el mateix, ara, amb els companys docents, ara 28 00:01:14,450 --> 00:01:16,410 que coneguin els seus horaris, de manera que estem apuntant, per 29 00:01:16,410 --> 00:01:19,380 Dissabte al matí, fer un seguiment amb vostè amb la seva secció 30 00:01:19,380 --> 00:01:20,760 assignació i TF. 31 00:01:20,760 --> 00:01:22,770 Adonar-se que començaran l'endemà, diumenge 32 00:01:22,770 --> 00:01:24,510 o dilluns o dimarts. 33 00:01:24,510 --> 00:01:27,730 I després anem a acomodar canvis de secció a mesura que sorgeixin 34 00:01:27,730 --> 00:01:28,690 en els dies per venir. 35 00:01:28,690 --> 00:01:31,590 Les hores d'oficina, per la seva banda, són, de nou, aquesta nit, 8 PM 11, en 36 00:01:31,590 --> 00:01:33,740 Annenberg, així com demà a la nit. 37 00:01:33,740 --> 00:01:36,150 Tot i que els conjunts de problemes es deuen generalment els dijous 38 00:01:36,150 --> 00:01:39,020 al migdia, s'adona que té un màxim de cinc dies de retard per gastar, 39 00:01:39,020 --> 00:01:42,430 per tant, la disponibilitat d'hores d'oficina dijous si 40 00:01:42,430 --> 00:01:45,930 diners en efectiu en un d'aquests dies de retard i, per tant presentar, 41 00:01:45,930 --> 00:01:47,070 alguna cosa el divendres. 42 00:01:47,070 --> 00:01:50,850 Permetin-me suggerir que Scratch és una de les més divertides, entre els 43 00:01:50,850 --> 00:01:52,390 el joc de claus més baixes problema. 44 00:01:52,390 --> 00:01:55,160 I m'agradaria penjar en aquests dies finals, estratègicament, només 45 00:01:55,160 --> 00:01:57,380 per més tard en el semestre en què la vida comença a posar-se al camí 46 00:01:57,380 --> 00:01:59,470 amb exàmens parcials i altres classes. 47 00:01:59,470 --> 00:02:01,580 Sèrie de problemes 1, per la seva banda, es publicaran en el curs de 48 00:02:01,580 --> 00:02:06,080 Web per aquest divendres, com es veurà en la caminada del curs 49 00:02:06,080 --> 00:02:08,789 a través de vídeo, que serà filmat a les 2:30 PM divendres 50 00:02:08,789 --> 00:02:11,890 i després publicat en línia pel dia següent. 51 00:02:11,890 --> 00:02:13,880 >> Així que vam acabar dilluns. 52 00:02:13,880 --> 00:02:15,450 Vull - en realitat, una nota aquí. 53 00:02:15,450 --> 00:02:18,870 Com que les classes - perquè Sanders no és exactament presten 54 00:02:18,870 --> 00:02:22,220 si al casual Q & A de tornada i volta terriblement bo, estem 55 00:02:22,220 --> 00:02:24,030 intentarà una cosa una mica nou aquest any, en què 56 00:02:24,030 --> 00:02:26,160 si vostè no se sent còmode aixecar la mà o simplement 57 00:02:26,160 --> 00:02:28,800 prefereixen no aixecar la mà en una habitació com aquesta, 58 00:02:28,800 --> 00:02:30,710 tindrem alguns dels companys docents i les entitats emissores 59 00:02:30,710 --> 00:02:33,260 dotació cs50.net/discuss durant la conferència. 60 00:02:33,260 --> 00:02:35,440 Així que si vostè té una pregunta, perquè jo estava completament 61 00:02:35,440 --> 00:02:37,510 clar sobre alguna cosa o tens curiositat sobre alguns 62 00:02:37,510 --> 00:02:39,640 tema, tracti de publicar allà. 63 00:02:39,640 --> 00:02:42,670 Marqueu amb una etiqueta de classe, i farem tot el possible 64 00:02:42,670 --> 00:02:45,430 avui i la setmana que - ens tornarem provar això - per alinear 65 00:02:45,430 --> 00:02:47,990 ja sigui per mitjans electrònics, en línia, o si se sent com que hauria 66 00:02:47,990 --> 00:02:50,430 realment es tractin de forma massiva, un dels companys docents o de 67 00:02:50,430 --> 00:02:52,080 CA aixecar la mà i demanar 68 00:02:52,080 --> 00:02:53,480 anònimament en nom seu. 69 00:02:53,480 --> 00:02:55,650 Així que anem a donar-li una oportunitat i veure el bé que funciona. 70 00:02:55,650 --> 00:02:58,540 Però, és clar, continuar elevant les mans com li agradaria. 71 00:02:58,540 --> 00:03:11,420 >> Així última vegada que va revelar que el 10% o un desè-no és, en 72 00:03:11,420 --> 00:03:13,840 fet, 0,1, com se'ls va ensenyar fa molts anys. 73 00:03:13,840 --> 00:03:15,390 És de fet, un valor com aquest. 74 00:03:15,390 --> 00:03:16,970 Però això no és totalment cert, no? 75 00:03:16,970 --> 00:03:19,585 Només tenim aquesta restricció en els ordinadors de manera que, si 76 00:03:19,585 --> 00:03:22,450 només té una quantitat finita de memòria, RAM, o més 77 00:03:22,450 --> 00:03:25,220 específicament bits, bé, hi ha només un nombre finit 78 00:03:25,220 --> 00:03:26,980 de coses que pot representar. 79 00:03:26,980 --> 00:03:29,780 Per exemple, si tenim el nombre zero, i volem 80 00:03:29,780 --> 00:03:32,790 representen en binari, utilitzant vuit bits, on un bit, 81 00:03:32,790 --> 00:03:34,710 de nou, és un zero o un u, podríem 82 00:03:34,710 --> 00:03:39,240 representar com 00000000. 83 00:03:39,240 --> 00:03:41,160 I això és una mica innecessàriament prolixa. 84 00:03:41,160 --> 00:03:43,700 Igual que en el sistema decimal al món real, 85 00:03:43,700 --> 00:03:47,040 en general, si voleu escriure el nombre 123, es 86 00:03:47,040 --> 00:03:52,240 humans probablement no escric 00000123 tot i que, 87 00:03:52,240 --> 00:03:53,940 funcionalment, que és el mateix nombre exacte. 88 00:03:53,940 --> 00:03:56,580 Acabem de caure zeros a l'esquerra, per així dir-ho. 89 00:03:56,580 --> 00:03:58,270 >> En binari, podem fer el mateix. 90 00:03:58,270 --> 00:04:01,440 Binari i zero, zero i binari és igual a zero. 91 00:04:01,440 --> 00:04:02,870 Vostè només necessita un únic bit. 92 00:04:02,870 --> 00:04:05,020 Però, de nou, la unitat de mesura més comú en el món 93 00:04:05,020 --> 00:04:07,820 de la informàtica és bytes, vuit bits. 94 00:04:07,820 --> 00:04:09,720 El fet que una mica, bastant inútil. 95 00:04:09,720 --> 00:04:12,020 Vuit bits, no terriblement útils, però almenys és més 96 00:04:12,020 --> 00:04:14,280 útil que una única unitat de mesura. 97 00:04:14,280 --> 00:04:17,100 Així que amb vuit bits, en general va a representar binari. 98 00:04:17,100 --> 00:04:20,459 Així que aquí tenim als números zero, un, dos, i després, com 99 00:04:20,459 --> 00:04:24,200 Nate va fer en el vídeo el dimecres passat, podem seguir 100 00:04:24,200 --> 00:04:25,940 comptant fins a set, vuit. 101 00:04:25,940 --> 00:04:27,860 I si fem servir més i més bits, es 102 00:04:27,860 --> 00:04:29,880 pot comptar fins a l'infinit. 103 00:04:29,880 --> 00:04:32,800 Però si només té un nombre finit d'aquests bits, igual que 104 00:04:32,800 --> 00:04:35,030 en el cas de qualsevol sistema informàtic, o fins i tot míssils 105 00:04:35,030 --> 00:04:36,670 sistema, bé, en realitat només té un 106 00:04:36,670 --> 00:04:37,900 quantitat finita de precisió. 107 00:04:37,900 --> 00:04:41,290 Així que si vols per representar el nombre com 0,1, també, la 108 00:04:41,290 --> 00:04:43,410 equip ha d'escollir i triar. 109 00:04:43,410 --> 00:04:45,970 I si només té un nombre finit de nombres que pot 110 00:04:45,970 --> 00:04:50,490 representen, pot acostar fins a 0,1 per tu, però no pot 111 00:04:50,490 --> 00:04:53,730 necessàriament li dóna exactament el paràmetre que voleu. 112 00:04:53,730 --> 00:04:55,660 I aquest és només un dels reptes de les computadores, 113 00:04:55,660 --> 00:04:57,090 sota de la caputxa, per sort. 114 00:04:57,090 --> 00:04:59,110 >> A mesura que avancem més en el semestre, aquests nivell inferior 115 00:04:59,110 --> 00:05:02,310 detalls es tornen molt menys interessant, però el dubte 116 00:05:02,310 --> 00:05:05,700 aplicació d'aquestes idees poden tenir un món molt real 117 00:05:05,700 --> 00:05:06,760 ramificacions. 118 00:05:06,760 --> 00:05:08,190 Un d'ells és una diversió poc. 119 00:05:08,190 --> 00:05:12,150 Quants de vosaltres heu vist la pel · lícula Space Oficina sorprenent? 120 00:05:12,150 --> 00:05:13,620 Si vostè no té, que és el seu no oficial 121 00:05:13,620 --> 00:05:14,370 tasca per a la setmana. 122 00:05:14,370 --> 00:05:16,730 Però en l'espai d'oficina, els becaris en aquesta pel · lícula pren 123 00:05:16,730 --> 00:05:19,900 avantatge d'precisament aquesta idea, però en realitat va robar 124 00:05:19,900 --> 00:05:21,270 des d'una altra pel · lícula que podria tenir 125 00:05:21,270 --> 00:05:22,760 vist, fins i tot anys abans. 126 00:05:22,760 --> 00:05:24,920 Així que et vaig a donar uns segons d'aquest tràiler de 127 00:05:24,920 --> 00:05:27,470 aquesta pel · lícula increïble i aquest és en gran mesura 128 00:05:27,470 --> 00:05:28,340 acadèmicament rellevant. 129 00:05:28,340 --> 00:05:30,310 >> [JOCS DE VÍDEO] 130 00:05:30,310 --> 00:05:32,240 La veritat és que estic sent promoguts. 131 00:05:32,240 --> 00:05:33,360 Puc programar un virus que esquinçarà que 132 00:05:33,360 --> 00:05:34,460 col · locar en gran. 133 00:05:34,460 --> 00:05:35,770 Bé, com funciona? 134 00:05:35,770 --> 00:05:37,836 Cada vegada que hi ha una transacció bancària on l'interès és 135 00:05:37,836 --> 00:05:40,154 computada, hi ha milers al dia, l'equip acaba 136 00:05:40,154 --> 00:05:41,040 amb aquestes fraccions d'un cèntim. 137 00:05:41,040 --> 00:05:43,050 Però jo no faré res il · legal. 138 00:05:43,050 --> 00:05:46,730 Il · legal? Samir, això és Amèrica. 139 00:05:46,730 --> 00:05:48,010 Vostè ha de juro per Déu. 140 00:05:48,010 --> 00:05:51,870 Si ningú sap sobre això, però nosaltres, d'acord? No hi ha membres de la família, sense 141 00:05:51,870 --> 00:05:52,490 núvies, ningú. 142 00:05:52,490 --> 00:05:53,882 [Inaudible]. 143 00:05:53,882 --> 00:05:57,594 No et preocupis, home, no l'hi diré a ningú. 144 00:05:57,594 --> 00:05:59,680 [Pel · lícula acaba] 145 00:05:59,680 --> 00:06:01,900 >> Molt bé, així que potser van trobar aquesta pel · lícula millor que la majoria 146 00:06:01,900 --> 00:06:05,530 persones aquí, però, en qualsevol cas, el virus que eren 147 00:06:05,530 --> 00:06:06,400 tractant de crear - 148 00:06:06,400 --> 00:06:08,410 i en les pel · lícules, en qualsevol moment que en diria alguna cosa un virus, 149 00:06:08,410 --> 00:06:09,770 que generalment no és realment un virus. 150 00:06:09,770 --> 00:06:11,600 És simplement un programa que algú va escriure que fer alguna cosa. 151 00:06:11,600 --> 00:06:13,800 I en aquest cas, els nois estaven intentant escriure un programa 152 00:06:13,800 --> 00:06:16,610 que es van aprofitar de la seva empresa anomenada Innotech de 153 00:06:16,610 --> 00:06:19,740 sistema informàtic, mitjançant el qual les computadores, també, fins i tot quan 154 00:06:19,740 --> 00:06:21,350 En relació als diners, no pot necessàriament 155 00:06:21,350 --> 00:06:23,490 representen els diners exacte. 156 00:06:23,490 --> 00:06:27,630 Així que, encara que és possible que tingui 0,10 $ en el seu compte bancari, 157 00:06:27,630 --> 00:06:31,060 0,10, bo, l'equip realment pot pensar que vostè té 158 00:06:31,060 --> 00:06:33,560 aquesta centaus molts en el seu compte bancari. 159 00:06:33,560 --> 00:06:35,750 I així, el que aquests nois estaven aspirant a fer - i 160 00:06:35,750 --> 00:06:38,240 va robar la idea, és de Superman III, on 161 00:06:38,240 --> 00:06:41,210 Richard Pryor va fer el mateix - que eren essencialment 162 00:06:41,210 --> 00:06:44,880 escriure programes que aspiren a prendre tot el final 163 00:06:44,880 --> 00:06:46,930 nombres, totes les diminutes fraccions petites, diminutes de 164 00:06:46,930 --> 00:06:50,160 monedes d'un cèntim, i drenant els fora per tal que els éssers humans només 165 00:06:50,160 --> 00:06:52,620 pensament, oh, és només 0,10 $ allà, però tots els que 166 00:06:52,620 --> 00:06:54,410 números finals eventualment es sumen. 167 00:06:54,410 --> 00:06:57,490 Així que una idea meravellosa i divertida en què va sortir per la culata 168 00:06:57,490 --> 00:06:58,250 pel · lícula en particular. 169 00:06:58,250 --> 00:07:01,800 >> Però en el món real, també, hi ha molt més en relació 170 00:07:01,800 --> 00:07:03,190 implicacions d'aquest tipus de coses. 171 00:07:03,190 --> 00:07:05,450 I una de les raons per submergir-se en el camp de la informàtica 172 00:07:05,450 --> 00:07:07,620 ciència és, de nou, la seva aplicabilitat no a la 173 00:07:07,620 --> 00:07:09,740 ciències d'enginyeria sol, però a només 174 00:07:09,740 --> 00:07:10,650 altres camps també. 175 00:07:10,650 --> 00:07:14,760 Així que aquesta és una mirada menys optimista del que pot sortir malament, però 176 00:07:14,760 --> 00:07:17,630 també és bastant obrir els ulls, em sembla, quan es tracta de 177 00:07:17,630 --> 00:07:20,760 entendre exactament com les tecnologies omnipresents com 178 00:07:20,760 --> 00:07:22,870 ordinadors i la programació o en aquests dies, 179 00:07:22,870 --> 00:07:23,930 en forma de programari. 180 00:07:23,930 --> 00:07:26,500 Així que aquest pròxim clip es tracta només de sis minuts, segueix 181 00:07:26,500 --> 00:07:30,320 on el deixem l'última vegada, però ens permet mirar una mica 182 00:07:30,320 --> 00:07:33,370 més en profunditat a aquests d'aquests temes un. 183 00:07:33,370 --> 00:07:35,270 Deixa passar directament a on el deixem, 184 00:07:35,270 --> 00:07:37,780 que era aquí. 185 00:07:37,780 --> 00:07:41,580 I tenim la segona part de dues, durant uns sis minuts aquí. 186 00:07:41,580 --> 00:07:41,980 >> [PLAY MOVIE] 187 00:07:41,980 --> 00:07:45,430 Ple tecnologia de coets moderns. 188 00:07:45,430 --> 00:07:49,280 El 1991, amb l'inici de la primera guerra del Golf, el Patriot 189 00:07:49,280 --> 00:07:51,350 míssil experimentat el mateix tipus de 190 00:07:51,350 --> 00:07:52,645 el problema número de conversions. 191 00:07:52,645 --> 00:07:57,460 I com a resultat, 20 persones, 20 soldats nord-americans, van morir 192 00:07:57,460 --> 00:08:01,130 i prop de 100 van resultar ferides, quan el Patriot, que se suposava 193 00:08:01,130 --> 00:08:03,400 per protegir contra els Scuds entrants, 194 00:08:03,400 --> 00:08:06,020 no va poder disparar un míssil. 195 00:08:06,020 --> 00:08:09,350 >> Quan Iraq va envair Kuwait i Estats Units va posar en marxa un desert 196 00:08:09,350 --> 00:08:13,530 Storm a principis de 1991, bateries de míssils Patriot van ser 197 00:08:13,530 --> 00:08:16,970 desplegats per protegir Aràbia Saudita i Israel des de l'Iraq 198 00:08:16,970 --> 00:08:19,810 Atacs amb míssils Scud. 199 00:08:19,810 --> 00:08:23,740 El Patriot és un EUA mitjà abast superfície-aire del sistema, 200 00:08:23,740 --> 00:08:26,370 fabricat per l'empresa Raytheon. 201 00:08:26,370 --> 00:08:30,860 La mida dels interceptors Patriot si mateix, es tracta 202 00:08:30,860 --> 00:08:35,650 aproximadament 20 peus de llarg i pesa al voltant de 2.000 lliures. 203 00:08:35,650 --> 00:08:38,809 I porta una ogiva d'uns - Crec que és més o menys 204 00:08:38,809 --> 00:08:40,169 150 lliures. 205 00:08:40,169 --> 00:08:45,820 I el propi cap és un explosiu d'alta potència que té 206 00:08:45,820 --> 00:08:48,120 fragments al seu voltant. 207 00:08:48,120 --> 00:08:51,870 La carcassa del cap de combat està dissenyat per actuar com perdigons. 208 00:08:51,870 --> 00:08:54,920 Els míssils es porten quatre per contenidor i són 209 00:08:54,920 --> 00:08:57,850 transportat per un semi-remolc. 210 00:08:57,850 --> 00:09:02,940 >> El Patriot antimíssils sistema es remunta almenys a 211 00:09:02,940 --> 00:09:05,530 20 anys. 212 00:09:05,530 --> 00:09:09,150 Originalment va ser dissenyat com un míssil de defensa aèria per 213 00:09:09,150 --> 00:09:12,920 enderrocar avions enemics, a la primera Guerra del Golf. 214 00:09:12,920 --> 00:09:17,700 Quan la guerra va arribar, l'exèrcit volia utilitzar-lo per disparar 215 00:09:17,700 --> 00:09:19,880 per Scud, no avions. 216 00:09:19,880 --> 00:09:24,860 La força aèria iraquiana no és tant d'un problema, però l'Exèrcit 217 00:09:24,860 --> 00:09:27,260 Estava preocupat per míssils Scud. 218 00:09:27,260 --> 00:09:30,810 I així van tractar d'actualitzar el Patriot. 219 00:09:30,810 --> 00:09:33,770 Interceptar un míssil enemic que viatja a Mach 5 es va 220 00:09:33,770 --> 00:09:35,790 a ser un repte suficient. 221 00:09:35,790 --> 00:09:39,460 Però quan el Patriot va ser traslladat d'urgència en servei, l'Exèrcit 222 00:09:39,460 --> 00:09:43,730 no era conscient d'una modificació iraquiana que van fer la seva 223 00:09:43,730 --> 00:09:46,510 Scuds gairebé impossible d'assolir. 224 00:09:46,510 --> 00:09:50,040 >> El que passa és que els Scud van ser 225 00:09:50,040 --> 00:09:51,360 arribant eren inestables. 226 00:09:51,360 --> 00:09:52,266 Es trontolla. 227 00:09:52,266 --> 00:09:56,300 La raó d'això era que els iraquians, amb la finalitat d'obtenir 600 228 00:09:56,300 --> 00:10:00,650 quilòmetres fora d'un míssil d'abast de 300 quilòmetres, es 229 00:10:00,650 --> 00:10:02,423 pes de l'ogiva davantera i 230 00:10:02,423 --> 00:10:03,990 va fer la ogiva més lleuger. 231 00:10:03,990 --> 00:10:08,700 Així que ara la Patriot està tractant d'arribar a la Scud, i la majoria de 232 00:10:08,700 --> 00:10:11,192 el temps, l'aclaparadora majoria de les vegades, ho faria 233 00:10:11,192 --> 00:10:13,450 només volar pel Scud. 234 00:10:13,450 --> 00:10:16,300 Quan els operadors del sistema Patriot Patriot va adonar de la 235 00:10:16,300 --> 00:10:20,160 no va aconseguir el seu objectiu, que va detonar la càrrega explosiva Patriot. 236 00:10:20,160 --> 00:10:22,760 Per evitar possibles víctimes, es va permetre 237 00:10:22,760 --> 00:10:25,100 a caure a terra. 238 00:10:25,100 --> 00:10:29,400 Això va ser el que molta gent va veure, com grans boles de foc al cel, 239 00:10:29,400 --> 00:10:34,930 i incomprès com interseccions de ogives Scud. 240 00:10:34,930 --> 00:10:37,490 >> Si bé, en el cel de la nit, Patriotes semblava 241 00:10:37,490 --> 00:10:41,570 Scud va destruir amb èxit, en Dhahran, no podia haver 242 00:10:41,570 --> 00:10:43,730 error sobre el seu acompliment. 243 00:10:43,730 --> 00:10:46,370 Allà, el sistema Patriot radar va perdre la pista d'un 244 00:10:46,370 --> 00:10:50,090 Scud entrant i mai va posar en marxa a causa 245 00:10:50,090 --> 00:10:51,340 a un defecte de programari. 246 00:10:54,030 --> 00:10:57,050 Va ser als israelians que van descobrir per primera vegada que com més temps 247 00:10:57,050 --> 00:11:02,000 el sistema estava en, major és el temps de discrepància es va convertir, 248 00:11:02,000 --> 00:11:05,530 causa d'un rellotge incorporat a l'ordinador del sistema. 249 00:11:05,530 --> 00:11:09,060 Unes dues setmanes abans de la tragèdia en Dhahran, el 250 00:11:09,060 --> 00:11:11,730 Israelians van informar al Departament de Defensa que el 251 00:11:11,730 --> 00:11:13,250 sistema estava perdent el temps. 252 00:11:13,250 --> 00:11:15,610 Després de vuit hores de funcionament, es van adonar que el 253 00:11:15,610 --> 00:11:18,330 sistema va ser que es vegi amb menys precisa. 254 00:11:18,330 --> 00:11:20,910 El Departament de Defensa va respondre dient a tots 255 00:11:20,910 --> 00:11:23,710 les bateries Patriot no abandonar els sistemes 256 00:11:23,710 --> 00:11:25,450 durant molt de temps. 257 00:11:25,450 --> 00:11:28,010 Mai van dir el que un temps va ser - 8 hores, 10 258 00:11:28,010 --> 00:11:29,690 hores, 1.000 hores. 259 00:11:29,690 --> 00:11:31,940 Ningú ho sabia. 260 00:11:31,940 --> 00:11:35,020 >> La bateria Patriot destinat a la caserna de Dhahran 261 00:11:35,020 --> 00:11:39,030 i el rellotge intern defectuós havia estat en més de 100 hores en 262 00:11:39,030 --> 00:11:42,240 La nit del 25 de febrer. 263 00:11:42,240 --> 00:11:46,580 És seguit el temps amb una precisió d'una desena part d'un segon. 264 00:11:46,580 --> 00:11:48,830 Ara desè de la segona és un nombre interessant perquè 265 00:11:48,830 --> 00:11:52,660 que no pot ser expressat en binari, exactament, el que significa 266 00:11:52,660 --> 00:11:54,940 no es pot expressar exactament en qualsevol 267 00:11:54,940 --> 00:11:57,330 ordinador digital moderna. 268 00:11:57,330 --> 00:11:59,130 És difícil de creure. 269 00:11:59,130 --> 00:12:01,720 Però utilitzar això com un exemple. 270 00:12:01,720 --> 00:12:04,090 >> Prenguem el nombre d'un terç. 271 00:12:04,090 --> 00:12:07,950 Una tercera no pot ser expressat en decimal, exactament. 272 00:12:07,950 --> 00:12:12,710 Una tercera part es va en 0,333 per l'infinit. 273 00:12:12,710 --> 00:12:17,050 No hi ha manera de fer això amb una precisió absoluta en decimal. 274 00:12:17,050 --> 00:12:19,340 Aquest és exactament el mateix tipus de problema que va passar a 275 00:12:19,340 --> 00:12:20,190 el Patriot. 276 00:12:20,190 --> 00:12:24,680 Com més temps el sistema va funcionar, pitjor és l'error de temps va arribar a ser. 277 00:12:24,680 --> 00:12:28,640 Després de 100 hores de funcionament, l'error en el temps era només 278 00:12:28,640 --> 00:12:29,870 aproximadament un terç d'un segon. 279 00:12:29,870 --> 00:12:34,790 Però en termes de focalització d'un míssil que viatja a Mach 5, 280 00:12:34,790 --> 00:12:39,140 que va donar lloc a un error de seguiment de més de 600 metres. 281 00:12:39,140 --> 00:12:42,510 Seria un error fatal per als soldats en Dhahran. 282 00:12:42,510 --> 00:12:48,680 >> El que va passar és un llançament de Scud va ser detectat per l'alerta primerenca 283 00:12:48,680 --> 00:12:52,440 satèl · lits i sabien que el Scud venia en el seu 284 00:12:52,440 --> 00:12:53,350 direcció general. 285 00:12:53,350 --> 00:12:55,470 No sabia d'on venia. 286 00:12:55,470 --> 00:12:58,210 Correspon ara al component de radar de la Patriot 287 00:12:58,210 --> 00:13:01,920 sistema, la defensa de Dhahran, per localitzar i fer un seguiment de la 288 00:13:01,920 --> 00:13:03,700 míssil enemic entrant. 289 00:13:03,700 --> 00:13:05,390 El radar era molt intel · ligent. 290 00:13:05,390 --> 00:13:07,570 En realitat es podria seguir la posició de la Scud i després 291 00:13:07,570 --> 00:13:10,340 predir on seria probablement la propera vegada que el 292 00:13:10,340 --> 00:13:12,040 radar envia un pols de sortida. 293 00:13:12,040 --> 00:13:13,730 Això es diu la porta de distància. 294 00:13:13,730 --> 00:13:18,820 Després, una vegada que el Patriot decideix ha passat suficient temps per anar 295 00:13:18,820 --> 00:13:22,600 enrere i comprovar la ubicació per a la pròxima detectada 296 00:13:22,600 --> 00:13:24,190 objecte, torna. 297 00:13:24,190 --> 00:13:27,940 Així que quan vaig tornar al lloc equivocat, llavors no veu 298 00:13:27,940 --> 00:13:31,000 objecte, i decideix que no hi havia cap objecte. 299 00:13:31,000 --> 00:13:34,370 Era una falsa detecció i baixa de la pista. 300 00:13:34,370 --> 00:13:37,630 >> El Scud entrant desaparèixer de la pantalla del radar. 301 00:13:37,630 --> 00:13:41,300 I segons després, es va estavellar contra la caserna. El Scud 302 00:13:41,300 --> 00:13:44,730 va matar a 28 i va ser l'últim acomiadat durant 303 00:13:44,730 --> 00:13:46,450 la primera Guerra del Golf. 304 00:13:46,450 --> 00:13:50,570 Tràgicament, el programari actualitzat va arribar a Dhahran 305 00:13:50,570 --> 00:13:52,060 el dia següent. 306 00:13:52,060 --> 00:13:56,210 I la falla de programari havia fixat, tancant un capítol a 307 00:13:56,210 --> 00:13:58,370 la turbulenta història dels míssils Patriot. 308 00:14:01,790 --> 00:14:04,990 PATRIOT és en realitat un acrònim de "Tracking Phased Array 309 00:14:04,990 --> 00:14:08,516 Intercepció de destinació. " 310 00:14:08,516 --> 00:14:13,390 >> D'acord, de manera que un resultat molt més dolorós de no gaire 311 00:14:13,390 --> 00:14:14,430 la comprensió d'aquest món. 312 00:14:14,430 --> 00:14:18,180 I el menjar per emportar, de veritat, de la pel · lícula és que la solució 313 00:14:18,180 --> 00:14:20,790 no reinicieu des de defensa antimíssils 314 00:14:20,790 --> 00:14:21,770 de tant en tant. 315 00:14:21,770 --> 00:14:24,280 I així, una vegada més, un dels objectius d'aquest curs, sens dubte 316 00:14:24,280 --> 00:14:26,900 en una escala més humil que aquestes aplicacions, és 317 00:14:26,900 --> 00:14:30,710 Tothom realment obert els ulls a exactament com vostè va sobre la 318 00:14:30,710 --> 00:14:34,380 màquines de fer el que vostè vol que facin i com es van 319 00:14:34,380 --> 00:14:37,180 fer això correctament, mentre que en el camí fent 320 00:14:37,180 --> 00:14:38,810 bé, amb elegància, i així successivament. 321 00:14:38,810 --> 00:14:41,680 I així, avui, anem a submergir-nos en una mica més d'això, però 322 00:14:41,680 --> 00:14:44,210 pel que no anem massa ràpid, especialment per als menys 323 00:14:44,210 --> 00:14:46,590 còmoda, sinó també per poder mantenir l'interès dels 324 00:14:46,590 --> 00:14:49,390 els més còmodes, anem a començar ràpidament amb una mica 325 00:14:49,390 --> 00:14:50,970 de resum d'algunes d'aquestes idees. 326 00:14:50,970 --> 00:14:53,710 I de nou, pregunti a distància, tant en persona o en línia, si vostè té 327 00:14:53,710 --> 00:14:56,320 preguntes perquè puguem mantenir a tots en la mateixa pàgina. 328 00:14:56,320 --> 00:14:58,820 >> De manera que l'aparell CS50, pas cap enrere, és 329 00:14:58,820 --> 00:15:02,360 el que, en les seves pròpies paraules? 330 00:15:02,360 --> 00:15:06,454 Està bé si no tens idea del que aquestes paraules poden ser encara. 331 00:15:06,454 --> 00:15:07,830 [Inaudible] 332 00:15:07,830 --> 00:15:10,950 Bé, pel que una interfície universal per - 333 00:15:10,950 --> 00:15:11,900 que tots podem compartir. 334 00:15:11,900 --> 00:15:12,470 Per descomptat. 335 00:15:12,470 --> 00:15:14,840 Així, es podria, per exemple, et dirà que vagis a algun 336 00:15:14,840 --> 00:15:16,910 lloc web, descarregar aquest programari per a Mac OS. 337 00:15:16,910 --> 00:15:19,140 Descarregui aquest programari per a Windows, configurar en 338 00:15:19,140 --> 00:15:20,100 amunt i avall. 339 00:15:20,100 --> 00:15:22,370 Però la realitat és que després ens trobem amb innombrables tècniques 340 00:15:22,370 --> 00:15:23,200 donar suport temes. 341 00:15:23,200 --> 00:15:26,630 I també en aquests dies, gran part del que es fa del costat del servidor, 342 00:15:26,630 --> 00:15:28,490 en el món de la informàtica, especialment quan es tracta 343 00:15:28,490 --> 00:15:31,460 desenvolupament web i aplicacions basades en web, és en realitat 344 00:15:31,460 --> 00:15:35,110 molt sovint es realitza en equips UNIX o Linux, a diferència de 345 00:15:35,110 --> 00:15:36,800 Mac o PC amb Windows. 346 00:15:36,800 --> 00:15:39,240 >> Així que entre els upsides, llavors, de la utilització d'aquesta cosa anomenada el 347 00:15:39,240 --> 00:15:41,500 CS50 Appliance és que tots tindrem el mateix entorn. 348 00:15:41,500 --> 00:15:43,670 Així que tothom està a la mateixa pàgina sense importar el maquinari que 349 00:15:43,670 --> 00:15:46,650 va arribar a l'escola amb però també es incursions en exactament 350 00:15:46,650 --> 00:15:48,230 el mateix entorn que vostè va a utilitzar cap 351 00:15:48,230 --> 00:15:51,080 semestre final, així com per al desenvolupament web, així com en la 352 00:15:51,080 --> 00:15:53,580 futur per a aplicacions reals dels mateixos. 353 00:15:53,580 --> 00:15:56,350 Llavors, més concretament, l'aparell CS50 és una peça lliure de 354 00:15:56,350 --> 00:15:59,400 programari que permet executar un altre sistema operatiu, 355 00:15:59,400 --> 00:16:02,670 Linux, en aquest cas, en el seu propi ordinador, en una finestra. 356 00:16:02,670 --> 00:16:04,750 Ara no només pots descarregar l'aparell. 357 00:16:04,750 --> 00:16:08,170 Vostè necessita un programa amb el qual jugar o córrer l'aparell. 358 00:16:08,170 --> 00:16:11,220 I aquest tros de programari es coneix generalment com un 359 00:16:11,220 --> 00:16:11,520 hipervisor. 360 00:16:11,520 --> 00:16:14,050 Els hipervisores es presenten en forma de productes com VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, Parallels. 362 00:16:15,820 --> 00:16:18,390 Tot tipus d'empreses fan programari lliure i 363 00:16:18,390 --> 00:16:19,310 comercial, per igual. 364 00:16:19,310 --> 00:16:21,480 El que veuràs en el problema 1 set són les instruccions sobre com 365 00:16:21,480 --> 00:16:23,440 obtenir programari gratuït amb el qual 366 00:16:23,440 --> 00:16:25,000 funcionar l'aparell CS50. 367 00:16:25,000 --> 00:16:28,060 I una vegada que ho fa, vostè tindrà, en una finestra del teu Mac o PC, 368 00:16:28,060 --> 00:16:30,710 un entorn d'escriptori que es veu bastant com aquest, on 369 00:16:30,710 --> 00:16:33,100 té un menú d'inici-com a cosa al 370 00:16:33,100 --> 00:16:34,510 inferior esquerra cantonada. 371 00:16:34,510 --> 00:16:38,030 Té una carpeta d'inici, o el directori d'inici, a la part superior esquerra 372 00:16:38,030 --> 00:16:40,280 allà, un pot d'escombraries, i així successivament. 373 00:16:40,280 --> 00:16:43,450 Així que anem a esmicolar els detalls necessaris sobre la marxa. 374 00:16:43,450 --> 00:16:46,430 >> Però ara anem a submergir-vos en C. 375 00:16:46,430 --> 00:16:49,200 Així C és aquest llenguatge de programació, similar en esperit a 376 00:16:49,200 --> 00:16:52,390 Scratch, però molt menys gràfica, però, irònicament, molt 377 00:16:52,390 --> 00:16:54,730 més potent un cop que arribi coneixedors d'aquesta. 378 00:16:54,730 --> 00:16:58,970 Així que en C, escrivim programes d'escriptura de codi font, que és 379 00:16:58,970 --> 00:17:01,640 aquesta sintaxi similar a l'anglès, similar als mitjons 380 00:17:01,640 --> 00:17:05,609 demostració que vam fer l'última vegada que li permet 381 00:17:05,609 --> 00:17:07,910 expressar-se amb força precisió, si 382 00:17:07,910 --> 00:17:09,760 arcanely, a l'ordinador. 383 00:17:09,760 --> 00:17:11,960 >> Llavors, quin tipus de producte de programari és el que realment necessita 384 00:17:11,960 --> 00:17:15,520 per escriure programes en un llenguatge com C, basant-nos en la nostra 385 00:17:15,520 --> 00:17:17,492 conversa dilluns? 386 00:17:17,492 --> 00:17:19,650 [Inaudible] 387 00:17:19,650 --> 00:17:21,079 OK, només necessites un editor de text. 388 00:17:21,079 --> 00:17:22,890 No necessita cap programari especial 389 00:17:22,890 --> 00:17:24,460 per se per escriure programes. 390 00:17:24,460 --> 00:17:27,220 Només es necessita un editor de text com el Bloc de notes de Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit en Mac, o alguna cosa que es diu gedit, en el món de la 392 00:17:30,450 --> 00:17:32,020 Linux, que utilitzarem aquí. 393 00:17:32,020 --> 00:17:33,750 I això és tot, per escriure els programes. 394 00:17:33,750 --> 00:17:35,480 >> Però l'escriptura és només la meitat de l'equació. 395 00:17:35,480 --> 00:17:36,630 A continuació, executar-les. 396 00:17:36,630 --> 00:17:38,320 Però per executar programes - 397 00:17:38,320 --> 00:17:39,600 no es pot executar el codi font. 398 00:17:39,600 --> 00:17:41,500 En el seu lloc, ha de fer el que a ell primer? 399 00:17:41,500 --> 00:17:41,900 Si. 400 00:17:41,900 --> 00:17:43,200 DAVID J. Malan: Cal 401 00:17:43,200 --> 00:17:44,130 compilar. 402 00:17:44,130 --> 00:17:49,010 I, de l'altra, compilar el codi font significa - 403 00:17:49,010 --> 00:17:50,260 [Inaudible] 404 00:17:52,300 --> 00:17:52,700 DAVID J. Malan: Exactament. 405 00:17:52,700 --> 00:17:54,430 Traduint això a zeros i uns. 406 00:17:54,430 --> 00:17:57,150 Tots nosaltres, en aquests dies, tenen equips que tenen CPU, 407 00:17:57,150 --> 00:18:00,350 gairebé tots els quals estan fets per una companyia anomenada Intel, i 408 00:18:00,350 --> 00:18:03,320 Intel Inside, vol dir que no està dins del seu cervell 409 00:18:03,320 --> 00:18:04,990 ordinador, conegut com la CPU. 410 00:18:04,990 --> 00:18:07,570 I una de les coses que fa que el cervell és, sap 411 00:18:07,570 --> 00:18:10,390 com entendre els patrons de zeros i uns. 412 00:18:10,390 --> 00:18:13,240 Sap el que representa el patró de bits més, el que 413 00:18:13,240 --> 00:18:15,500 patró representa restes, quin model de 414 00:18:15,500 --> 00:18:18,890 bits representen la impressió, i la creació d'un so audible. 415 00:18:18,890 --> 00:18:22,450 >> Així que en resum, la CPU, juntament amb el sistema operatiu, 416 00:18:22,450 --> 00:18:25,230 que és una peça de programari que s'executa en la part superior de la CPU, 417 00:18:25,230 --> 00:18:26,050 per dir-ho. 418 00:18:26,050 --> 00:18:29,850 Juntes, aquestes dues peces saber com executar programes que 419 00:18:29,850 --> 00:18:31,070 nosaltres els humans escriure. 420 00:18:31,070 --> 00:18:34,040 >> Així que si entro al Appliance CS50 aquí, he d'obrir 421 00:18:34,040 --> 00:18:35,660 un editor de text i puc accedir a aquest 422 00:18:35,660 --> 00:18:36,560 en un parell de maneres. 423 00:18:36,560 --> 00:18:39,060 Em pot anar a Menú, Programació, 424 00:18:39,060 --> 00:18:40,230 i llavors puc seleccionar - 425 00:18:40,230 --> 00:18:40,810 No, no aquest menú. 426 00:18:40,810 --> 00:18:43,860 Puc anar a Accessoris / gedit aquí per obrir 427 00:18:43,860 --> 00:18:45,090 meu editor de text petit. 428 00:18:45,090 --> 00:18:48,030 O més simplement, puc fer clic al símbol petit a la part inferior 429 00:18:48,030 --> 00:18:48,970 cantonada esquerra. 430 00:18:48,970 --> 00:18:50,430 I ara em surt aquest ambient aquí. 431 00:18:50,430 --> 00:18:52,590 És molt evocador d'un editor de text simple, amb només 432 00:18:52,590 --> 00:18:53,820 una o dues diferències. 433 00:18:53,820 --> 00:18:56,420 A la part superior, on hi ha el cursor parpellejant, aquí és on 434 00:18:56,420 --> 00:18:57,900 Puc començar a escriure el codi. 435 00:18:57,900 --> 00:19:00,415 En el fons és aquesta cosa anomenada la finestra de terminal. 436 00:19:00,415 --> 00:19:03,400 I quin tipus de coses que puc fer en aquest 437 00:19:03,400 --> 00:19:04,960 l'anomenada finestra de terminal? 438 00:19:04,960 --> 00:19:06,680 [Inaudible] 439 00:19:06,680 --> 00:19:07,890 >> Està bé, així que vaig a executar ordres. 440 00:19:07,890 --> 00:19:10,300 I algunes de les ordres que va córrer el dilluns eren una mica 441 00:19:10,300 --> 00:19:15,070 críptics al principi, però per ls llista, cd canvi de directori, per 442 00:19:15,070 --> 00:19:16,540 rm, per eliminar-lo. 443 00:19:16,540 --> 00:19:19,680 Així que és una mena de camí de la vella escola de navegació de la seva 444 00:19:19,680 --> 00:19:22,310 ordinador, usant només el teclat i els comandaments textuals, 445 00:19:22,310 --> 00:19:24,130 i no, en general, amb el ratolí. 446 00:19:24,130 --> 00:19:25,960 Però anem a veure, en poc temps, aquest fet ens dóna una 447 00:19:25,960 --> 00:19:28,520 poc més de potència i una mica més precisió amb la qual 448 00:19:28,520 --> 00:19:29,600 expressar-nos. 449 00:19:29,600 --> 00:19:31,330 I després aquí a l'esquerra, només veurem, 450 00:19:31,330 --> 00:19:34,360 a mesura que comencem programari d'escriptura, un petit resum de la 451 00:19:34,360 --> 00:19:36,350 programa que hem escrit a la part superior esquerra. 452 00:19:36,350 --> 00:19:38,360 Però anem a veure que de nou en poc temps. 453 00:19:38,360 --> 00:19:40,050 >> Així que farem alguna cosa molt simple aquí. 454 00:19:40,050 --> 00:19:43,440 Permeteu de seguir endavant i anar a Arxiu, Guardar, i estic 455 00:19:43,440 --> 00:19:45,970 farà clic a jharvard aquí, més a l'esquerra, i 456 00:19:45,970 --> 00:19:48,930 jharvard és, de nou, el nom de la meva carpeta d'inici, el meu 457 00:19:48,930 --> 00:19:52,110 arxius personals, jo, ara és John Harvard, com tots vostès 458 00:19:52,110 --> 00:19:54,230 aviat serà John Harvard en aquest entorn. 459 00:19:54,230 --> 00:19:57,360 Ell té aquest directori Inici, Els meus documents i altres, 460 00:19:57,360 --> 00:19:58,900 que vulgueu conservar i, ara, aquest arxiu polz 461 00:19:58,900 --> 00:20:01,520 Així que vaig a dir-hello.c. Llavors em vaig a anar 462 00:20:01,520 --> 00:20:05,770 a continuació i feu clic a Desa, i ara el que tenim aquí és una fitxa 463 00:20:05,770 --> 00:20:09,440 anomenat hello.c, tant com un altre tipus d'editor. 464 00:20:09,440 --> 00:20:11,760 >> Així que ara seguirem endavant i començar a escriure un programa. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 I després em vaig fer l'última vegada, printf, per a la impressió formatada, 467 00:20:18,150 --> 00:20:22,120 ("Hola, món!" 468 00:20:22,120 --> 00:20:24,500 ). 469 00:20:24,500 --> 00:20:25,630 Gairebé completa. 470 00:20:25,630 --> 00:20:27,130 Però em falta un parell de detalls. 471 00:20:27,130 --> 00:20:30,210 El que falta en aquest programa que s'utilitza necessito per 472 00:20:30,210 --> 00:20:31,890 que es compili en realitat? 473 00:20:31,890 --> 00:20:32,130 Si. 474 00:20:32,130 --> 00:20:33,980 [Inaudible]? 475 00:20:33,980 --> 00:20:35,770 >> DAVID J. Malan: Sí, així que he de incloure la norma 476 00:20:35,770 --> 00:20:36,700 I / O biblioteca. 477 00:20:36,700 --> 00:20:39,470 Així que això ha d'anar per sobre de principal, així que només vaig a 478 00:20:39,470 --> 00:20:40,790 fer una mica d'espai per a ella allà. 479 00:20:40,790 --> 00:20:44,420 I jo faré # include. 480 00:20:44,420 --> 00:20:46,570 I notin els parèntesis angulars allà. 481 00:20:46,570 --> 00:20:49,410 I en un apart, gedit és un usuari poc amigable, si 482 00:20:49,410 --> 00:20:52,420 de vegades una mica confús, ja que tracta d'ajudar a la seva 483 00:20:52,420 --> 00:20:54,770 ulls compte del que s'alinea amb què. 484 00:20:54,770 --> 00:20:57,760 Així que el fet que el meu cursor està al costat d'aquest angle 485 00:20:57,760 --> 00:21:00,600 suport, observi com es destaca l'altre angle 486 00:21:00,600 --> 00:21:01,920 suport més un això. 487 00:21:01,920 --> 00:21:03,770 I això és només per cridar la meva atenció sobre el fet que jo 488 00:21:03,770 --> 00:21:04,460 tenen simetria. 489 00:21:04,460 --> 00:21:07,010 I la simetria en la programació és generalment una bona cosa. 490 00:21:07,010 --> 00:21:10,270 De la mateixa manera, si moc el cursor fins al final, observi com el 491 00:21:10,270 --> 00:21:13,630 claus s'alineen per mostrar que, sí, tinc una oberta 492 00:21:13,630 --> 00:21:15,160 i un tancat, per dir-ho. 493 00:21:15,160 --> 00:21:16,640 >> Molt bé, i no puc fer res més. 494 00:21:16,640 --> 00:21:20,090 No és estrictament necessari, però una bona pràctica, per no dir 495 00:21:20,090 --> 00:21:21,250 retorna 0. 496 00:21:21,250 --> 00:21:24,140 I 0 retorn fa el que per a nosaltres aquí? 497 00:21:24,140 --> 00:21:25,584 O vol dir que? 498 00:21:25,584 --> 00:21:27,480 [Inaudible] 499 00:21:27,480 --> 00:21:28,300 DAVID J. Malan: Però no passa res. 500 00:21:28,300 --> 00:21:30,280 I, francament, és difícil per gran part a anar malament en un 501 00:21:30,280 --> 00:21:31,250 programar aquest curt. 502 00:21:31,250 --> 00:21:33,930 Així que només estic sent súper explícit que tot està bé. 503 00:21:33,930 --> 00:21:36,740 Jo, l'ésser humà, quan executo aquest programa, probablement mai ho farà 504 00:21:36,740 --> 00:21:38,150 veure que 0. 505 00:21:38,150 --> 00:21:41,070 En general, aquests nombres que estan sent retornats a partir de principal 506 00:21:41,070 --> 00:21:43,540 només educar els seus caps als éssers humans quan 507 00:21:43,540 --> 00:21:44,360 alguna cosa va malament. 508 00:21:44,360 --> 00:21:46,640 I et donen una mica de pop up d'error del sistema dient: un, 509 00:21:46,640 --> 00:21:48,760 dos, tres, o qualsevol que sigui el nombre que va ser 510 00:21:48,760 --> 00:21:50,100 va ser realment retornat. 511 00:21:50,100 --> 00:21:52,870 Així que res dolent en això? 512 00:21:52,870 --> 00:21:55,300 [Inaudible] 513 00:21:55,300 --> 00:21:58,100 >> DAVID J. Malan: Així que això no és tant un error funcional 514 00:21:58,100 --> 00:21:59,240 però una estètica. 515 00:21:59,240 --> 00:22:02,340 Probablement hauria de posar en un caràcter de nova línia allà al 516 00:22:02,340 --> 00:22:05,240 final d'aquesta cadena perquè realment moure el cursor a 517 00:22:05,240 --> 00:22:08,340 la següent línia, i el programa només es veu una mica més bonic. 518 00:22:08,340 --> 00:22:10,340 >> Així que ara em deixis anar a la meva finestra de terminal 519 00:22:10,340 --> 00:22:11,490 i amplia la 520 00:22:11,490 --> 00:22:13,390 I això d'aquí, es diu el sistema. 521 00:22:13,390 --> 00:22:16,760 Es m'acaba de recordar qui sóc, jharvard @ aparell, on 522 00:22:16,760 --> 00:22:18,850 aparell és el nom de l'equip que estic. 523 00:22:18,850 --> 00:22:22,380 Entre parèntesi figura l'accent, el símbol gargot, que 524 00:22:22,380 --> 00:22:24,160 representa què? 525 00:22:24,160 --> 00:22:25,590 AUDIÈNCIA: directori d'inici. 526 00:22:25,590 --> 00:22:26,350 DAVID J. Malan: directori d'inici. 527 00:22:26,350 --> 00:22:29,350 Així que això és només una notació abreujada per dir que estan en 528 00:22:29,350 --> 00:22:32,780 vostra carpeta on tots els seus arxius d'anar per defecte. 529 00:22:32,780 --> 00:22:36,080 Així que ara, aquí, puc escriure ls per obtenir la llista. 530 00:22:36,080 --> 00:22:40,020 I l'únic que veig aquí en aquest moment és hello.c. 531 00:22:40,020 --> 00:22:41,770 I això és bo, perquè jo acabo d'escriure això. 532 00:22:41,770 --> 00:22:44,380 >> Així que seguirem endavant i em fan hello. 533 00:22:44,380 --> 00:22:46,830 I notin que no estic escrivint fer hello.c. 534 00:22:46,830 --> 00:22:50,300 En el seu lloc, només estic escrivint el nom base del fitxer, hola. 535 00:22:50,300 --> 00:22:53,690 I que, com vam veure el dilluns, només s'infereix que vull 536 00:22:53,690 --> 00:22:54,920 el. c arxiu. 537 00:22:54,920 --> 00:22:56,820 Així que ara que he escrit fer hello. 538 00:22:56,820 --> 00:22:59,280 Ara veig aquesta comanda bastant llarg i continuarà 539 00:22:59,280 --> 00:23:00,480 veient això una i altra vegada. 540 00:23:00,480 --> 00:23:03,620 Però per ser toc clar, la paraula que acaba d'aparèixer, 541 00:23:03,620 --> 00:23:05,340 aquest és el compilador real. 542 00:23:05,340 --> 00:23:08,200 Fer és una utilitat de generació. 543 00:23:08,200 --> 00:23:11,900 És només un programa més fàcil d'utilitzar que em salva, en la 544 00:23:11,900 --> 00:23:15,310 llarg termini, d'haver de escriure increïblement tediós llarg 545 00:23:15,310 --> 00:23:17,020 ordres com aquesta. 546 00:23:17,020 --> 00:23:18,950 Així que es podria executar Clang manualment. 547 00:23:18,950 --> 00:23:20,530 Es podria escriure tot això manualment. 548 00:23:20,530 --> 00:23:21,580 Només es posa molt avorrit. 549 00:23:21,580 --> 00:23:24,720 I així que és només un programa que simplifica les nostres vides i 550 00:23:24,720 --> 00:23:27,120 executa ordres més complexes per a nosaltres. 551 00:23:27,120 --> 00:23:29,410 >> Molt bé, i ara què arxiu he de tenir 552 00:23:29,410 --> 00:23:31,540 en el meu directori actual? 553 00:23:31,540 --> 00:23:36,310 No només hello.c, però també saludar. 554 00:23:36,310 --> 00:23:39,710 Així que si vull córrer hola, recordem que dic dot slash, 555 00:23:39,710 --> 00:23:42,220 on els mitjans de punt entrar a la carpeta actual, allà on 556 00:23:42,220 --> 00:23:46,060 són, a continuació, executeu el programa anomenat hola, i, de fet, ara, 557 00:23:46,060 --> 00:23:48,080 Tinc hello world. 558 00:23:48,080 --> 00:23:51,640 D'acord, qualsevol pregunta sobre el flux de treball o la sintaxi de 559 00:23:51,640 --> 00:23:52,890 el que acabes de fer? 560 00:23:55,380 --> 00:23:57,040 >> Molt bé, així que anem a prendre les coses a un nivell superior de nou. 561 00:23:57,040 --> 00:24:00,430 Així que això va ser decebedor per escriure un programa que només 562 00:24:00,430 --> 00:24:01,790 mai diu hola, món. 563 00:24:01,790 --> 00:24:03,920 Així que el vam canviar, el dilluns, dir hola, David. 564 00:24:03,920 --> 00:24:06,560 És una mica més personal, però igual de dur codificat com el 565 00:24:06,560 --> 00:24:07,410 primera versió. 566 00:24:07,410 --> 00:24:08,780 Així que no és tan convincent. 567 00:24:08,780 --> 00:24:13,120 Però existeix, al carrer, a més de les funcions dubte 568 00:24:13,120 --> 00:24:15,700 impressió, funcions que permeten obtenir informació de l'usuari. 569 00:24:15,700 --> 00:24:17,990 I la manera com ho va fer, l'altre dia, va ser com segueix. 570 00:24:17,990 --> 00:24:21,440 Abans d'imprimir alguna cosa, vaig arribar per primera vegada 571 00:24:21,440 --> 00:24:22,410 alguna cosa de l'usuari. 572 00:24:22,410 --> 00:24:23,370 Així que anem a fer això una altra vegada. 573 00:24:23,370 --> 00:24:26,580 >> Cadena s, on s és només un nom arbitrari, aquí, per un 574 00:24:26,580 --> 00:24:30,600 cadena, és igual a GetString. 575 00:24:30,600 --> 00:24:32,070 Llavors, què va ser GetString? 576 00:24:32,070 --> 00:24:34,630 Òbviament obté una cadena que, basant-se en el seu nom. 577 00:24:34,630 --> 00:24:37,560 Però el que és, més tècnicament? 578 00:24:37,560 --> 00:24:38,440 És una funció. 579 00:24:38,440 --> 00:24:41,790 Així que és una funció que no ve amb C per se. 580 00:24:41,790 --> 00:24:43,660 CS50 personal escriure això. 581 00:24:43,660 --> 00:24:46,940 I així, per utilitzar això, no es pot simplement incloure stdio.h, 582 00:24:46,940 --> 00:24:49,630 També ha d'incloure què? 583 00:24:49,630 --> 00:24:50,060 Si. 584 00:24:50,060 --> 00:24:54,210 Així cs50.h, que és simplement un arxiu que va escriure fa alguns anys. 585 00:24:54,210 --> 00:24:57,130 El instal · lem en l'aparell perquè vostè juntament amb 586 00:24:57,130 --> 00:24:58,490 tots els arxius estàndard. 587 00:24:58,490 --> 00:25:00,500 I així, en aquestes primeres setmanes de la classe, utilitzarem 588 00:25:00,500 --> 00:25:02,820 això només per simplificar el procés de fer molt bàsic 589 00:25:02,820 --> 00:25:04,600 coses com aconseguir entrada de l'usuari. 590 00:25:04,600 --> 00:25:07,370 Perquè, com veurem en un parell de setmanes, l'usuari aconseguir l'entrada en una 591 00:25:07,370 --> 00:25:10,180 llenguatge com C és en realitat sorprenentment complexa, 592 00:25:10,180 --> 00:25:14,360 sobretot perquè no se sap per endavant, en general, com 593 00:25:14,360 --> 00:25:17,030 quantitat de coses que l'usuari va a escriure polz 594 00:25:17,030 --> 00:25:20,340 I quan vostè no sap la quantitat de dades que pot esperar, no 595 00:25:20,340 --> 00:25:22,380 saber la quantitat de memòria per assignar. 596 00:25:22,380 --> 00:25:25,480 I si vostè realment té un usuari de confrontació que està tractant de 597 00:25:25,480 --> 00:25:28,180 per introduir-se al sistema, bloquejar l'equip, bé, 598 00:25:28,180 --> 00:25:31,600 generalment el primer mètode d'atac és, tal com ho vaig fer en 599 00:25:31,600 --> 00:25:34,950 Dilluns, escriviu tota una seqüència llarga de caràcters a l'atzar, 600 00:25:34,950 --> 00:25:37,020 premeu Enter i mireu el trenca. 601 00:25:37,020 --> 00:25:40,800 En general, si es trenca un programa, que fa referència a 602 00:25:40,800 --> 00:25:42,650 una falla de seguretat, potencialment. 603 00:25:42,650 --> 00:25:45,250 Sens dubte ludeix a vostè, el programador, després d'haver fet una 604 00:25:45,250 --> 00:25:49,050 error, però més perillós, que podria haver fet una 605 00:25:49,050 --> 00:25:52,430 error relacionat amb la seguretat i, en general veurem que 606 00:25:52,430 --> 00:25:54,840 així és com màquines estan compromesos fins ara, tant 607 00:25:54,840 --> 00:25:56,620 en el món de la web i dels programes en la 608 00:25:56,620 --> 00:25:58,070 línia d'ordres, així. 609 00:25:58,070 --> 00:25:58,350 >> Està bé. 610 00:25:58,350 --> 00:26:00,460 Així que la cadena s és igual a getString. 611 00:26:00,460 --> 00:26:03,380 Així que ara més concretament, què significa la línia 6 aquí? 612 00:26:03,380 --> 00:26:05,640 Així, la funció de la dreta es posa cadena, 613 00:26:05,640 --> 00:26:06,890 presa quants arguments? 614 00:26:09,458 --> 00:26:09,900 Bé. 615 00:26:09,900 --> 00:26:10,400 Així que res. 616 00:26:10,400 --> 00:26:11,360 Una mica de seny comprovar. 617 00:26:11,360 --> 00:26:15,380 Un argument, de nou, és només una entrada a una funció per alterar 618 00:26:15,380 --> 00:26:17,250 seu comportament per defecte d'alguna manera. 619 00:26:17,250 --> 00:26:19,540 Però en aquest cas, jo no vull alterar 620 00:26:19,540 --> 00:26:20,650 el comportament de GetString. 621 00:26:20,650 --> 00:26:22,430 Jo només volia arribar a una cadena. 622 00:26:22,430 --> 00:26:25,190 Així que vaig posar res en els parèntesis i després vaig posar un 623 00:26:25,190 --> 00:26:27,550 punt i coma demarcació de la final de la línia de codi. 624 00:26:27,550 --> 00:26:29,840 Ara, el signe d'igualtat no significa igual, per se. 625 00:26:29,840 --> 00:26:32,690 Significa assignació, el que significa posar ho aconsegueix 626 00:26:32,690 --> 00:26:36,060 emeses a l'interior del que és just a l'esquerra. 627 00:26:36,060 --> 00:26:39,400 >> Així que a l'esquerra, diem que hem declarat una 628 00:26:39,400 --> 00:26:41,630 cadena anomenat s. 629 00:26:41,630 --> 00:26:44,240 I més específicament, hem assignat la memòria interna de 630 00:26:44,240 --> 00:26:46,340 que posarem els bits que representen una seqüència de 631 00:26:46,340 --> 00:26:46,850 personatges. 632 00:26:46,850 --> 00:26:49,400 Però per ara, hem assignat 633 00:26:49,400 --> 00:26:51,450 o es declara una cadena. 634 00:26:51,450 --> 00:26:51,790 Està bé. 635 00:26:51,790 --> 00:26:54,760 Així que ara, un cop hagis fet això, vull connectar el valor de 636 00:26:54,760 --> 00:26:56,535 s, no el valor de David. 637 00:26:56,535 --> 00:27:00,200 Així que això està malament per què? 638 00:27:03,060 --> 00:27:04,870 Així que això és només, literalment, la s no modificable. 639 00:27:04,870 --> 00:27:06,870 És a dir "hola, s", que no és el que vull. 640 00:27:06,870 --> 00:27:07,790 Així que puc fer això. 641 00:27:07,790 --> 00:27:10,330 El signe de percentatge és un marcador de posició, però ara he de 642 00:27:10,330 --> 00:27:12,520 passar a imprimir un segon argument. 643 00:27:12,520 --> 00:27:15,160 Recordem que els arguments a funcions estan separades per 644 00:27:15,160 --> 00:27:20,300 comes, de manera que el pròxim coma aquí poso després d'això la lletra s. 645 00:27:20,300 --> 00:27:23,740 I en aquest context actual, s és la variable, i printf, 646 00:27:23,740 --> 00:27:25,550 en rebre les dues entrades - 647 00:27:25,550 --> 00:27:29,440 la cadena a la banda esquerra i el nom de la variable s a la dreta - 648 00:27:29,440 --> 00:27:32,750 es podrà connectar a aquest últim en la primera per a nosaltres, i 649 00:27:32,750 --> 00:27:34,600 només imprimir una cadena bé preciós que conté 650 00:27:34,600 --> 00:27:36,770 el que sigui que hem escrit polz 651 00:27:36,770 --> 00:27:37,560 >> Així que anem a provar això. 652 00:27:37,560 --> 00:27:38,860 Seguirà endavant i allunyar la imatge, de nou 653 00:27:38,860 --> 00:27:40,250 al meu finestra de terminal. 654 00:27:40,250 --> 00:27:41,840 Apropar al final aquí. 655 00:27:41,840 --> 00:27:44,070 Torneu a fer hello. 656 00:27:44,070 --> 00:27:45,870 Clang sembla haver estat repetició. 657 00:27:45,870 --> 00:27:49,280 Vaig a escriure. / Hello Intro. 658 00:27:49,280 --> 00:27:52,145 Res sembla estar passant encara, però és en aquesta pantalla 659 00:27:52,145 --> 00:27:55,700 que puc escriure alguna cosa com Nate, Enter, i ara tenim 660 00:27:55,700 --> 00:27:56,380 Hola, Nate. 661 00:27:56,380 --> 00:27:59,600 I puc fer-ho de nou amb Rob, i així successivament. 662 00:27:59,600 --> 00:28:03,410 Així que espero que ara aquest programa es comporta com penso. 663 00:28:03,410 --> 00:28:05,720 >> Ara, no tota amigable per a l'usuari. 664 00:28:05,720 --> 00:28:07,930 No tinc ni idea del que s'esperava de mi. 665 00:28:07,930 --> 00:28:09,620 Així que sens dubte podem netejar això una mica. 666 00:28:09,620 --> 00:28:13,270 Deixa tornar aquí, i en lloc de busseig i 667 00:28:13,270 --> 00:28:16,480 preguntar a l'usuari per a una cadena, permetin-me dir-los explícitament la 668 00:28:16,480 --> 00:28:17,750 usuari el que estic esperant. 669 00:28:17,750 --> 00:28:21,610 Així printf ("Introduïu una cadena:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Així que no hi ha variables aquí. 672 00:28:25,510 --> 00:28:26,750 No hi ha signes de percentatge. 673 00:28:26,750 --> 00:28:28,550 Només la frase en Anglès simple. 674 00:28:28,550 --> 00:28:34,030 Permetin-me ara passar a la final aquí i tornar a executar el meu programa. 675 00:28:34,030 --> 00:28:35,380 Però res sembla haver canviat. 676 00:28:35,380 --> 00:28:37,350 Per què? 677 00:28:37,350 --> 00:28:38,380 He de tornar a compilar. 678 00:28:38,380 --> 00:28:39,570 Així error fàcil de cometre. 679 00:28:39,570 --> 00:28:41,700 Però vostè ha de no només guarda l'arxiu però 680 00:28:41,700 --> 00:28:43,260 tornar a compilar el programa. 681 00:28:43,260 --> 00:28:46,640 I així, si puc tornar a fer funcionar hola, ara Clang executa. 682 00:28:46,640 --> 00:28:51,800 Ara es pot executar. / Hello. I ara veig "Introduïu una cadena:". 683 00:28:51,800 --> 00:28:52,050 Bé. 684 00:28:52,050 --> 00:28:53,440 Ara és una mica més fàcil d'utilitzar. 685 00:28:53,440 --> 00:28:55,850 Nate, Enter, hola, Nate. 686 00:28:55,850 --> 00:28:57,310 >> Bé, ho intentarem de nou i començar a pensar 687 00:28:57,310 --> 00:28:58,080 sobre els casos de cantonada. 688 00:28:58,080 --> 00:29:00,520 Així com en scratch, és recomanable o s'estan 689 00:29:00,520 --> 00:29:03,180 encoratjat en l'especificació de pensar tipus del que podria passar 690 00:29:03,180 --> 00:29:06,610 malament si vostè no anticipa tot el que l'usuari pot fer. 691 00:29:06,610 --> 00:29:08,050 Bugs, per tant, podria ser. 692 00:29:08,050 --> 00:29:09,710 Així que introdueixi una cadena - 693 00:29:09,710 --> 00:29:11,130 Què és un cas extrem en aquesta llista? 694 00:29:11,130 --> 00:29:13,320 Què és un escenari que jo, el programador, que no tingui 695 00:29:13,320 --> 00:29:16,070 previst? 696 00:29:16,070 --> 00:29:17,600 Si. 697 00:29:17,600 --> 00:29:17,920 Bé. 698 00:29:17,920 --> 00:29:22,060 I què si escric en una sèrie com aquesta? 699 00:29:22,060 --> 00:29:22,500 Està bé. 700 00:29:22,500 --> 00:29:24,490 Per tant, encara funciona. 701 00:29:24,490 --> 00:29:25,880 Gramaticalment no té sentit. 702 00:29:25,880 --> 00:29:27,180 Però si més no funciona el programa. 703 00:29:27,180 --> 00:29:28,650 >> Quin és un altre cas de la cantonada? 704 00:29:28,650 --> 00:29:29,610 Una cosa que no esperava. 705 00:29:29,610 --> 00:29:31,590 Sí? 706 00:29:31,590 --> 00:29:31,940 Bé. 707 00:29:31,940 --> 00:29:34,950 Així que podríem fer una mena nombre molt, molt gran. 708 00:29:34,950 --> 00:29:37,270 Així que farem això aquí. 709 00:29:37,270 --> 00:29:40,880 Permetin-me allunyar per un segon, voldria destacar. 710 00:29:40,880 --> 00:29:42,250 No es pot copiar i enganxar aquí. 711 00:29:42,250 --> 00:29:42,470 Està bé. 712 00:29:42,470 --> 00:29:44,440 Així que no es pot copiar i enganxar a la finestra de terminal, així que anem a 713 00:29:44,440 --> 00:29:46,950 simplement simular. 714 00:29:46,950 --> 00:29:51,340 Permetin-me allunyar la imatge, va a embolicar. 715 00:29:51,340 --> 00:29:52,700 No faré això per molt temps, perquè no ho farà 716 00:29:52,700 --> 00:29:54,440 en realitat trencar en aquest programa. 717 00:29:54,440 --> 00:29:55,260 Però podria. 718 00:29:55,260 --> 00:29:55,830 Retorn. 719 00:29:55,830 --> 00:29:56,580 Però no va ser així. 720 00:29:56,580 --> 00:29:57,050 Està bé. 721 00:29:57,050 --> 00:29:58,440 Però és un cas genuí racó. 722 00:29:58,440 --> 00:30:01,610 I l'única raó per la qual es van comportar correctament, de manera que 723 00:30:01,610 --> 00:30:05,820 parlar, és perquè la funció GetString CS50 és en realitat 724 00:30:05,820 --> 00:30:08,040 dissenyat sota el capó, com veurem en un parell de setmanes, 725 00:30:08,040 --> 00:30:11,570 per assignar automàticament RAM més i més, més i més 726 00:30:11,570 --> 00:30:14,330 de memòria del sistema operatiu, quan s'adona, wow, 727 00:30:14,330 --> 00:30:16,670 realment has escrit en alguna cosa bastant llarg. 728 00:30:16,670 --> 00:30:18,500 Ara, això és una mica d'una mentida piadosa. 729 00:30:18,500 --> 00:30:22,020 Si realment va fer una pausa durant una bona estona i em va escriure en 730 00:30:22,020 --> 00:30:24,640 alguna cosa així com 5 mil milions de caràcters en el teclat 731 00:30:24,640 --> 00:30:28,060 aquí, o realment va copiar i enganxar una mica, que molt possiblement 732 00:30:28,060 --> 00:30:29,730 podria fer que el programa es bloquegi. 733 00:30:29,730 --> 00:30:32,130 Només una mica més difícil de simular que amb una finita 734 00:30:32,130 --> 00:30:33,740 quantitat de temps. 735 00:30:33,740 --> 00:30:37,320 >> Quin és un altre cas de la cantonada que vam poder provar? 736 00:30:37,320 --> 00:30:38,730 Sí? 737 00:30:38,730 --> 00:30:39,020 Si. 738 00:30:39,020 --> 00:30:40,360 Així que per què no respons res? 739 00:30:40,360 --> 00:30:43,130 Així que en realitat ha de prendre alguna acció, perquè en cas contrari 740 00:30:43,130 --> 00:30:45,060 el programa va a seure allà parpellejant tot el dia. 741 00:30:45,060 --> 00:30:46,860 Però si sols premeu Enter - 742 00:30:46,860 --> 00:30:48,780 Bé, ara, encara es veu malament. 743 00:30:48,780 --> 00:30:51,670 És que no xocar, però potser ara hi ha una oportunitat per 744 00:30:51,670 --> 00:30:54,190 començar a aplicar un programa més rigorós 745 00:30:54,190 --> 00:30:55,290 que comprova efectivament. 746 00:30:55,290 --> 00:30:57,640 I si la cadena, l'oració, la paraula que jo 747 00:30:57,640 --> 00:31:00,890 escriure en té longitud 0, bé, potser hauria cridar a la 748 00:31:00,890 --> 00:31:03,770 usuari, o li dic o li permet introduir una cadena de nou, de manera que 749 00:31:03,770 --> 00:31:06,560 aconseguim realment el que sembla ser un comportament correcte i no 750 00:31:06,560 --> 00:31:08,570 només la supervisió completa del meu part. 751 00:31:08,570 --> 00:31:11,130 >> Pregunta a l'esquena? 752 00:31:11,130 --> 00:31:11,970 Nombre decimal. 753 00:31:11,970 --> 00:31:13,120 Així que podríem intentar això. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Sembla que funcionarà realment bé. 756 00:31:19,470 --> 00:31:21,160 I que en realitat s'espera. 757 00:31:21,160 --> 00:31:24,550 Tot i que podria haver escrit aquest nombre hi ha, o un 758 00:31:24,550 --> 00:31:28,200 major nombre anterior, s'adonen que quan estàs escrivint usuari 759 00:31:28,200 --> 00:31:31,070 entrada i estem usant la funció GetString, no 760 00:31:31,070 --> 00:31:34,380 importa si el que estic escrivint es veu com un nombre. 761 00:31:34,380 --> 00:31:36,720 Recordem que d'acord amb ASCII, tot en el seu 762 00:31:36,720 --> 00:31:39,920 teclat té un valor numèric que es pot assignar a un 763 00:31:39,920 --> 00:31:41,480 caràcter, un char. 764 00:31:41,480 --> 00:31:44,490 Així que en aquest cas, tot i que podria escriure un nombre, el 765 00:31:44,490 --> 00:31:48,190 equip pensarà que és, per dir-ho, com una cadena - 766 00:31:48,190 --> 00:31:49,870 una cosa que es veu com un nombre, però és 767 00:31:49,870 --> 00:31:51,090 realitat no és un nombre. 768 00:31:51,090 --> 00:31:53,450 Però això és en realitat una transició perfecta, perquè ara podem 769 00:31:53,450 --> 00:31:55,450 de fet la transició a programes d'escriptura que 770 00:31:55,450 --> 00:31:56,730 utilitzar altres tipus de dades. 771 00:31:56,730 --> 00:32:01,840 >> Així que a més d'usar caràcters, o més bé, a més d'utilitzar cordes, 772 00:32:01,840 --> 00:32:04,510 adonar que tenim altres tipus de dades en C i en 773 00:32:04,510 --> 00:32:05,230 altres idiomes. 774 00:32:05,230 --> 00:32:08,480 Un char, com el seu nom indica, és un personatge únic. 775 00:32:08,480 --> 00:32:12,150 Un flotador és un valor de punt flotant, i això és només una fantasia 776 00:32:12,150 --> 00:32:14,470 manera de dir un nombre real - una cosa que té un decimal 777 00:32:14,470 --> 00:32:17,410 punt en què amb alguns números a l'esquerra i / o dreta. 778 00:32:17,410 --> 00:32:21,370 Un valor int és un enter, que és només un nombre com 123. 779 00:32:21,370 --> 00:32:24,170 I ara el més interessant són coses com doble. 780 00:32:24,170 --> 00:32:28,540 Què vam dir una habitació doble era l'última vegada? 781 00:32:28,540 --> 00:32:30,050 És 64, dreta. 782 00:32:30,050 --> 00:32:33,560 Així que, en general un float és de 32-bit - 783 00:32:33,560 --> 00:32:37,340 pel que és tot aquest temps en la memòria, utilitza 32 zeros i uns a 784 00:32:37,340 --> 00:32:40,530 són la - un doble és literalment el doble, el qual 785 00:32:40,530 --> 00:32:43,810 significa que pot representar grans nombres, o 786 00:32:43,810 --> 00:32:45,810 pot representar nombres més precisos. 787 00:32:45,810 --> 00:32:48,690 Així que vostè pot tenir més números després del punt decimal, però 788 00:32:48,690 --> 00:32:51,520 com l'home va dir en el vídeo, fins i tot una cosa tan simple 789 00:32:51,520 --> 00:32:55,360 conceptualment com 1/3 no pot representar-se amb precisió per un 790 00:32:55,360 --> 00:32:58,330 equip, perquè amb el temps se li acaba de bits, i 791 00:32:58,330 --> 00:33:02,510 per tant, només es pot fer .33333333 tantes vegades, en 792 00:33:02,510 --> 00:33:05,050 el que vostè acaba de dir que m'he quedat sense representació 793 00:33:05,050 --> 00:33:08,120 espai, he de trucar a només un dia i representar 794 00:33:08,120 --> 00:33:10,200 una mica imprecisa així. 795 00:33:10,200 --> 00:33:11,110 I molt de temps - 796 00:33:11,110 --> 00:33:13,880 nom estúpid, però és perquè hi ha un tipus de dades coneguda com 797 00:33:13,880 --> 00:33:19,350 long en C que casualment és sovint 32 bits, igual que un 798 00:33:19,350 --> 00:33:21,670 int és de 32 bits, però és un temps llarg 799 00:33:21,670 --> 00:33:23,560 general 64 bits. 800 00:33:23,560 --> 00:33:25,740 Per tant, només significa que vostè pot representar més 801 00:33:25,740 --> 00:33:26,990 nombres que això. 802 00:33:26,990 --> 00:33:27,410 >> Està bé. 803 00:33:27,410 --> 00:33:29,390 Així que si realment vols començar representant les coses, 804 00:33:29,390 --> 00:33:31,030 podria necessitar més tipus sofisticats, i 805 00:33:31,030 --> 00:33:32,340 és per això que comptem amb cadena. 806 00:33:32,340 --> 00:33:36,450 Així, a la biblioteca CS50, aquest arxiu anomenat cs50.h, hem 807 00:33:36,450 --> 00:33:41,110 en realitat va declarar un tipus de dades, per així dir-ho, anomenada cadena, 808 00:33:41,110 --> 00:33:42,710 però string en realitat no existeix. 809 00:33:42,710 --> 00:33:44,780 Això és, una vegada més, una d'aquestes capes que anem a pelar 810 00:33:44,780 --> 00:33:47,490 de nou en una setmana o dues i llençar a les escombraries, i de fet 811 00:33:47,490 --> 00:33:49,640 mirar sota el capó al que en realitat és una cadena, i 812 00:33:49,640 --> 00:33:50,840 com està representada. 813 00:33:50,840 --> 00:33:53,520 També veurem valors booleans. 814 00:33:53,520 --> 00:33:56,040 >> Llavors, què era un bool en el context de Scratch? 815 00:33:59,154 --> 00:34:00,300 És cert o fals. 816 00:34:00,300 --> 00:34:03,900 Així que és un valor que és vertader o fals, encès o apagat, 1 o 817 00:34:03,900 --> 00:34:06,140 0, però vol veure el món. 818 00:34:06,140 --> 00:34:09,739 Així que en C, gràcies a la biblioteca CS50, que al seu torn 819 00:34:09,739 --> 00:34:12,179 inclou una altra biblioteca sota la caputxa, tenim 820 00:34:12,179 --> 00:34:14,909 l'accés a un tipus de dades que es diu bool, que es 821 00:34:14,909 --> 00:34:18,730 literalment ens permet assignar els valors true o false per 822 00:34:18,730 --> 00:34:20,219 les coses en un programa. 823 00:34:20,219 --> 00:34:23,880 >> Així que seguirem endavant aquí i escriure un petit programa que 824 00:34:23,880 --> 00:34:26,330 fa alguna cosa relacionada amb nombres. 825 00:34:26,330 --> 00:34:29,840 Així que permetin-me tornar al Dispositiu CS50, deixa seguir endavant i 826 00:34:29,840 --> 00:34:32,770 crear un nou arxiu anomenat aquí - 827 00:34:32,770 --> 00:34:35,460 direm alguna cosa simple, com math.c. 828 00:34:38,270 --> 00:34:38,710 Està bé. 829 00:34:38,710 --> 00:34:41,600 I ara puja a la part superior del meu programa, estic 830 00:34:41,600 --> 00:34:42,510 farà l'habitual - 831 00:34:42,510 --> 00:34:44,780 # Include, així que puc utilitzar 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 tornarem, amb el temps, el que significa int 834 00:34:49,270 --> 00:34:52,389 aquí, el buit significa aquí, però per ara, només sé que 835 00:34:52,389 --> 00:34:54,270 vostè ha de començar programes com aquest. 836 00:34:54,270 --> 00:34:56,280 Ara vaig a seguir endavant i dir alguna cosa una mica 837 00:34:56,280 --> 00:35:02,110 diferent - printf ("Dóna'm un nombre:" 838 00:35:02,110 --> 00:35:03,570 ). 839 00:35:03,570 --> 00:35:09,220 Llavors em vaig a fer int n = getInt, perquè 840 00:35:09,220 --> 00:35:12,770 Resulta getInt és una altra funció a la biblioteca CS50 841 00:35:12,770 --> 00:35:14,060 més GetString. 842 00:35:14,060 --> 00:35:17,340 I ara me'n vaig a fer alguna cosa estúpid, com "gràcies 843 00:35:17,340 --> 00:35:25,760 per al% d ", per al nombre enter decimal, i després coma n, i 844 00:35:25,760 --> 00:35:26,620 a continuació, retorna 0. 845 00:35:26,620 --> 00:35:28,940 Així que de nou, torna 0 no té res a veure amb el nombre que estic 846 00:35:28,940 --> 00:35:30,080 preguntar a l'usuari. 847 00:35:30,080 --> 00:35:33,620 Només vol dir que al final de tot, presumiblement, és així. 848 00:35:33,620 --> 00:35:36,290 >> Així que permetin-me anar a la meva finestra de terminal aquí. 849 00:35:36,290 --> 00:35:39,590 Deixa escriure make matemàtiques, introdueixi. 850 00:35:39,590 --> 00:35:41,360 I alguna cosa està malament. 851 00:35:41,360 --> 00:35:44,620 Fer les matemàtiques no va funcionar. 852 00:35:44,620 --> 00:35:46,170 Aquest és el primer dels nostres missatges d'error. 853 00:35:46,170 --> 00:35:46,570 Per què? 854 00:35:46,570 --> 00:35:49,720 Un críptic mica, però - 855 00:35:49,720 --> 00:35:50,060 Si. 856 00:35:50,060 --> 00:35:51,240 Així cs50.h. 857 00:35:51,240 --> 00:35:53,900 Així que de nou, especialment al principi, podràs escriure el teu primer 858 00:35:53,900 --> 00:35:56,590 programa conjunt de processadors 1 en seccions, en hores d'oficina, i 859 00:35:56,590 --> 00:35:59,050 francament, serà aclaparador de vegades el que aquestes coses 860 00:35:59,050 --> 00:36:00,000 en realitat estan dient. 861 00:36:00,000 --> 00:36:01,890 Però t'adonaràs molt aviat comencen a caure 862 00:36:01,890 --> 00:36:06,120 en les galledes mitjançant el qual aquest vol dir que vostè ha deixat una 863 00:36:06,120 --> 00:36:08,290 de la # inclou a la part superior de l'arxiu. 864 00:36:08,290 --> 00:36:10,960 I Clang, el compilador, se l'informa d'això per 865 00:36:10,960 --> 00:36:14,090 dir, en lloc imaginari, la declaració implícita de 866 00:36:14,090 --> 00:36:15,990 getint funció no és vàlid. 867 00:36:15,990 --> 00:36:16,310 >> Està bé. 868 00:36:16,310 --> 00:36:17,520 Llavors, què significa això? 869 00:36:17,520 --> 00:36:22,080 Només vol dir que vostè ha declarat implícitament en getInt 870 00:36:22,080 --> 00:36:24,850 el sentit que no s'ha declarat explícitament. 871 00:36:24,850 --> 00:36:27,300 Per declarar explícitament int, cal ensenyar 872 00:36:27,300 --> 00:36:28,740 Clang que existeix. 873 00:36:28,740 --> 00:36:32,020 I la solució molt simple per això és per ensenyar per 874 00:36:32,020 --> 00:36:34,780 incloent aquest altre arxiu, cs50.h, en 875 00:36:34,780 --> 00:36:35,850 la part superior del seu arxiu. 876 00:36:35,850 --> 00:36:40,380 Perquè literalment, el que fa és # include li diu Clang 877 00:36:40,380 --> 00:36:44,030 més o menys per anar a buscar l'arxiu anomenat cs50.h, copiar, 878 00:36:44,030 --> 00:36:48,150 enganxar-lo automàticament a la part superior del meu programa per mi, 879 00:36:48,150 --> 00:36:50,850 i després convertir el codi font en zeros i uns. 880 00:36:50,850 --> 00:36:52,850 Però això, òbviament, seria molt avorrit si nosaltres, els humans tenien 881 00:36:52,850 --> 00:36:55,370 per anar copiant i enganxant aquests arxius grans tot el temps, 882 00:36:55,370 --> 00:36:58,540 # Include només fa tot de forma automàtica sense 883 00:36:58,540 --> 00:37:01,550 enterbolir el meu codi amb una altra persona biblioteca. 884 00:37:01,550 --> 00:37:06,370 I una biblioteca és més que un altre arxiu que conté les funcions i 885 00:37:06,370 --> 00:37:08,340 altres coses que algú ha escrit, que som 886 00:37:08,340 --> 00:37:10,270 aprofitar per al nostre propi bé. 887 00:37:10,270 --> 00:37:10,580 >> Està bé. 888 00:37:10,580 --> 00:37:11,200 Anem a intentar-ho de nou. 889 00:37:11,200 --> 00:37:12,250 Fer matemàtiques. 890 00:37:12,250 --> 00:37:13,120 Retorn. 891 00:37:13,120 --> 00:37:13,530 Bé. 892 00:37:13,530 --> 00:37:14,880 Així que sembla haver funcionat. 893 00:37:14,880 --> 00:37:18,330 Així que permetin-me ara funcionen les matemàtiques,. / Matemàtiques. 894 00:37:18,330 --> 00:37:21,100 Introduïu em dóna un nombre, 123. 895 00:37:21,100 --> 00:37:22,620 Gràcies pel 123. 896 00:37:22,620 --> 00:37:24,490 Ara anem a provar amb un altre cas de la cantonada. 897 00:37:24,490 --> 00:37:26,530 Una cadena és bastant generós, ja que un 898 00:37:26,530 --> 00:37:27,620 cadena pot ser qualsevol cosa. 899 00:37:27,620 --> 00:37:28,910 Pot semblar que els números, sembla 900 00:37:28,910 --> 00:37:30,600 personatges, semblen paraules. 901 00:37:30,600 --> 00:37:31,900 Però un int és un enter. 902 00:37:31,900 --> 00:37:34,370 Així que ara si sóc l'usuari difícil, i diu "Dóna'm 903 00:37:34,370 --> 00:37:38,730 un nombre ", el que si intento fer alguna cosa com 0,1? 904 00:37:38,730 --> 00:37:41,510 Bé, això és un nombre, i és consistent amb la 905 00:37:41,510 --> 00:37:44,180 gramàtica que s'utilitza aquí, però per sota de la caputxa, estic d' 906 00:37:44,180 --> 00:37:45,610 curs usant el getInt funció. 907 00:37:45,610 --> 00:37:46,610 >> Així que anem a veure què passa. 908 00:37:46,610 --> 00:37:48,250 Intro, torni a intentar-ho. 909 00:37:48,250 --> 00:37:48,560 Està bé. 910 00:37:48,560 --> 00:37:50,570 Vaig a ser difícil i simplement premeu Enter. 911 00:37:50,570 --> 00:37:51,700 Enter, Intro. 912 00:37:51,700 --> 00:37:53,890 Així que ara sembla que getInt és una mica més 913 00:37:53,890 --> 00:37:55,240 poderós que GetString. 914 00:37:55,240 --> 00:37:58,540 Nosaltres, el personal, implementat de manera que si s'observa 915 00:37:58,540 --> 00:38:02,100 no ens ha donat un enter - i un int és un nombre decimal 916 00:38:02,100 --> 00:38:04,785 contenen zeros, uns, dos, tres, quatre, cinc, sisos, 917 00:38:04,785 --> 00:38:05,540 barlets, vuits, o nous. 918 00:38:05,540 --> 00:38:06,310 I això és tot. 919 00:38:06,310 --> 00:38:08,810 No hi ha punts decimals, ni personatges, ni signes de puntuació. 920 00:38:08,810 --> 00:38:10,390 Sembla que hem de cooperar. 921 00:38:10,390 --> 00:38:13,680 Així que tractaré de quatre, cinc, sis, i això m'ajuda a passar. 922 00:38:13,680 --> 00:38:16,760 Així que en realitat, per ser anal aquí, probablement hauria de dir "Dóna'm 923 00:38:16,760 --> 00:38:20,310 un nombre sencer "per tal de transmetre a l'usuari 924 00:38:20,310 --> 00:38:22,620 exactament el que pretenc. 925 00:38:22,620 --> 00:38:24,090 >> Ara anem a pensar sota la campana. 926 00:38:24,090 --> 00:38:27,930 No anem a veure com s'implementa cs50.h avui, 927 00:38:27,930 --> 00:38:29,080 que biblioteca. 928 00:38:29,080 --> 00:38:33,600 Però si se segueix dient reintentar, reintentar, reintentar, el que la programació 929 00:38:33,600 --> 00:38:36,970 construir estic fent servir presumiblement per sota de la campana 930 00:38:36,970 --> 00:38:39,000 implementar això? 931 00:38:39,000 --> 00:38:39,980 Així que només un bucle, oi? 932 00:38:39,980 --> 00:38:41,930 Una de les idees més senzilles que hem vist en Scratch. 933 00:38:41,930 --> 00:38:45,050 The Forever construir, construir la repetició. 934 00:38:45,050 --> 00:38:47,320 És de suposar que, en aquest programa, per sota de la campana, fins i tot 935 00:38:47,320 --> 00:38:49,470 tot i que està escrit en C i no zero, que està fent 936 00:38:49,470 --> 00:38:54,300 una cosa que es diu equivalent a sempre si l'usuari no té 937 00:38:54,300 --> 00:38:58,710 escriure en un nombre sencer, per exemple reintentar, reintentar, reintentar, reintentar, de manera que 938 00:38:58,710 --> 00:39:01,220 finalment, quan ho fem arribar un sencer, llavors 939 00:39:01,220 --> 00:39:02,970 sortir d'aquest bucle. 940 00:39:02,970 --> 00:39:05,610 >> Llavors, ¿quines altres funcions poden usem aquí a la biblioteca del CS50? 941 00:39:05,610 --> 00:39:07,880 Bé, una mica de les òbvies, si més no sobre la base de la 942 00:39:07,880 --> 00:39:09,570 Tipus de dades que ara sabem que existeixen. 943 00:39:09,570 --> 00:39:12,900 Implementem GetString, getInt, sinó a tot el 944 00:39:12,900 --> 00:39:15,680 primeres setmanes del terme, també es pot utilitzar GetFloat i 945 00:39:15,680 --> 00:39:18,870 GetDouble i GetLongLong amb la finalitat d'obtenir exactament els 946 00:39:18,870 --> 00:39:20,030 Tipus de dades que desitgi. 947 00:39:20,030 --> 00:39:24,030 Com que el detall clau aquí és que a diferència d'altres idiomes, 948 00:39:24,030 --> 00:39:26,630 com Python i Ruby, en el qual no necessàriament han de 949 00:39:26,630 --> 00:39:29,730 declarar el tipus de dades d'una variable - 950 00:39:29,730 --> 00:39:32,390 vostè no ha de dir-li a l'ordinador quin tipus de coses 951 00:39:32,390 --> 00:39:34,000 et posaràs en la variable - 952 00:39:34,000 --> 00:39:36,640 al carrer, vostè ha de ser sempre tan precisa. 953 00:39:36,640 --> 00:39:40,060 Així que si vols una variable anomenada n, un tros d'emmagatzematge 954 00:39:40,060 --> 00:39:42,900 que en aquest cas passa a ser de 32 bits per convenció, 955 00:39:42,900 --> 00:39:45,660 ha de dir-li a l'ordinador que aquests bits són 956 00:39:45,660 --> 00:39:47,840 va a emmagatzemar un nombre - 957 00:39:47,840 --> 00:39:50,630 No és un personatge, no una cadena, no un flotador. 958 00:39:50,630 --> 00:39:52,620 I això es refereix a la qüestió que efectivament 959 00:39:52,620 --> 00:39:53,760 vaig trobar la setmana passada. 960 00:39:53,760 --> 00:39:57,050 Si estem usant zeros i números d'éssers per representar no només 961 00:39:57,050 --> 00:40:00,770 nombres, però A i B i C, com en el món és un 962 00:40:00,770 --> 00:40:03,460 equip sabrà que aquest patró de bits en realitat 963 00:40:03,460 --> 00:40:07,650 representa el nombre 65, en lloc de representar el 964 00:40:07,650 --> 00:40:09,860 lletra A, que casualment, segons 965 00:40:09,860 --> 00:40:13,440 ASCII, recordo, era equivalent a 65? 966 00:40:13,440 --> 00:40:16,550 >> Així que aquests tipus de dades proporcionen un context per a l'equip, per la qual 967 00:40:16,550 --> 00:40:18,810 que se sap si aquests bits s'ha d'interpretar com una 968 00:40:18,810 --> 00:40:23,660 int o com una cadena. 969 00:40:23,660 --> 00:40:26,500 Qualsevol pregunta, llavors, a això? 970 00:40:26,500 --> 00:40:28,149 Sí? 971 00:40:34,780 --> 00:40:35,270 DAVID J. Malan: Bona pregunta. 972 00:40:35,270 --> 00:40:39,140 Si traiem stdio.h, guardem l'arxiu - 973 00:40:39,140 --> 00:40:44,360 m'ho dius a mi anar a la finestra de terminal i executeu make matemàtiques, zoom 974 00:40:44,360 --> 00:40:45,530 i entrar - 975 00:40:45,530 --> 00:40:47,700 ara em surt un error diferent, perquè sóc implícitament 976 00:40:47,700 --> 00:40:49,650 declarant quina és la funció ara? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Així que ara he creat un nou problema, la solució és 979 00:40:52,970 --> 00:40:53,890 essencialment el mateix. 980 00:40:53,890 --> 00:40:55,365 He de posar això de tornada. 981 00:40:55,365 --> 00:40:56,615 AUDIÈNCIA: [inaudible] 982 00:41:03,534 --> 00:41:04,030 DAVID J. Malan: Oh. 983 00:41:04,030 --> 00:41:04,850 Així que si sac - 984 00:41:04,850 --> 00:41:05,360 Bé, sí. 985 00:41:05,360 --> 00:41:08,960 Així que si em trec la inclusió de l'E / S de la biblioteca fins 986 00:41:08,960 --> 00:41:12,020 aquí, i llavors estàs dient que si em desfaig de printf, obtenir 987 00:41:12,020 --> 00:41:13,450 desfer-se de printf? 988 00:41:13,450 --> 00:41:13,810 Sí 989 00:41:13,810 --> 00:41:18,450 Això hauria de funcionar, perquè ja no estic fent servir qualsevol - crits. 990 00:41:18,450 --> 00:41:20,110 ¿Acabo de mentir? 991 00:41:20,110 --> 00:41:21,650 Oh, està bé. 992 00:41:21,650 --> 00:41:25,640 Això no funcionarà a causa d'un nou error que acaba de presentar. 993 00:41:25,640 --> 00:41:28,390 I aquest és una mica més fàcils d'entendre. 994 00:41:28,390 --> 00:41:29,440 >> Quin és el problema? 995 00:41:29,440 --> 00:41:30,680 Sense utilitzar la variable núm. 996 00:41:30,680 --> 00:41:34,040 Així que aquest error és el resultat d'haver configurat el 997 00:41:34,040 --> 00:41:36,640 aparell a ser particularment pedant, cridar realment en 998 00:41:36,640 --> 00:41:39,060 per tots els errors possibles, fins i tot si és una espècie de 999 00:41:39,060 --> 00:41:41,950 un error no fatal com això - és realment tan gran 1000 00:41:41,950 --> 00:41:44,820 tractar que em van assignar un int, posar un nombre en ell, i després 1001 00:41:44,820 --> 00:41:46,030 acabo de fer res amb ell? 1002 00:41:46,030 --> 00:41:47,020 Així que funcionalment, no. 1003 00:41:47,020 --> 00:41:50,410 Això no va a trencar el programa. 1004 00:41:50,410 --> 00:41:51,490 És només una mica estúpid, oi? 1005 00:41:51,490 --> 00:41:54,220 No hi ha valor per haver demanat aquest número, emmagatzemats 1006 00:41:54,220 --> 00:41:56,370 en una variable, si mai farem res 1007 00:41:56,370 --> 00:41:58,000 amb ella, ja sigui imprimir o guardar. 1008 00:41:58,000 --> 00:42:00,270 Així doncs, en aquest cas, Clang està reconeixent com a molt, i 1009 00:42:00,270 --> 00:42:02,010 que està dient sense usar la variable núm. 1010 00:42:02,010 --> 00:42:05,380 >> Així que podem arreglar això, si realment volem. 1011 00:42:05,380 --> 00:42:07,250 Però de nou, això no és una bona programació ara. 1012 00:42:07,250 --> 00:42:09,310 Així que només podia fer això - 1013 00:42:09,310 --> 00:42:12,060 baixar aquí, deixa netejar la pantalla, fer matemàtiques. 1014 00:42:12,060 --> 00:42:13,090 Això funciona. 1015 00:42:13,090 --> 00:42:18,110 Ara puc executar el meu programa de matemàtiques, presa d'entrada - 1016 00:42:18,110 --> 00:42:18,700 bé, això era dolent. 1017 00:42:18,700 --> 00:42:23,450 Presa d'entrada, i que és tot el que fa, en aquest cas. 1018 00:42:23,450 --> 00:42:25,220 >> Així que en realitat, anem a provar un cas, una altra cantonada que 1019 00:42:25,220 --> 00:42:26,300 no va pensar abans. 1020 00:42:26,300 --> 00:42:28,220 En aquest cas - aquí, anem a tornar a la que és una 1021 00:42:28,220 --> 00:42:29,500 poc més fàcil d'utilitzar. 1022 00:42:29,500 --> 00:42:32,580 Deixa tornar aquí i fer funcionar de nou les matemàtiques. 1023 00:42:32,580 --> 00:42:34,190 Vaja, què vaig fer malament? 1024 00:42:34,190 --> 00:42:35,400 He de fer retrocedir encara més. 1025 00:42:35,400 --> 00:42:36,390 Bé. 1026 00:42:36,390 --> 00:42:38,490 Ara estem de tornada en l'estat original, on tots 1027 00:42:38,490 --> 00:42:39,990 és d'esperar també. 1028 00:42:39,990 --> 00:42:43,360 I ara si em quedo matemàtiques, 123 sembla funcionar. 1029 00:42:43,360 --> 00:42:46,010 Però això no és realment una prova eficaç, per dir només 1030 00:42:46,010 --> 00:42:47,930 bé, això funciona. 1031 00:42:47,930 --> 00:42:49,120 789, que funciona. 1032 00:42:49,120 --> 00:42:50,100 És hora de presentar. 1033 00:42:50,100 --> 00:42:51,870 Perquè hi ha altres casos de cantonada aquí. 1034 00:42:51,870 --> 00:42:55,040 Una cadena que realment no ens donen molts problemes en escriure un 1035 00:42:55,040 --> 00:42:56,510 gran quantitat de personatges. 1036 00:42:56,510 --> 00:42:59,580 Però, i si escric en això? 1037 00:42:59,580 --> 00:43:04,850 Donar al número 1 de molt, molt aquí - 1038 00:43:04,850 --> 00:43:06,300 bé, s'està fent una mica avorrit, així que vaig a 1039 00:43:06,300 --> 00:43:10,040 parar aquí, i vaig a pressionar Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Què dimonis ha passat? 1041 00:43:14,110 --> 00:43:17,680 Així que en realitat això pot ser explicat. 1042 00:43:17,680 --> 00:43:18,920 Així que s'ho pren com binari? 1043 00:43:18,920 --> 00:43:21,130 Un bon pensament, però no, no és el fet que es va prendre 1044 00:43:21,130 --> 00:43:22,815 com binari, perquè en realitat, això era només una mena de 1045 00:43:22,815 --> 00:43:23,080 coincidència. 1046 00:43:23,080 --> 00:43:23,930 Podem fer això una altra vegada. 1047 00:43:23,930 --> 00:43:26,530 Així que no hi ha 2 al sistema binari, que és 1048 00:43:26,530 --> 00:43:27,420 probablement suficient de totes maneres. 1049 00:43:27,420 --> 00:43:28,780 Retorn. 1050 00:43:28,780 --> 00:43:30,140 Així que aquest no era el problema. 1051 00:43:30,140 --> 00:43:31,390 Què més? 1052 00:43:34,650 --> 00:43:35,400 Exactament. 1053 00:43:35,400 --> 00:43:37,830 >> Així de pensar en tornar al que realment és un int. 1054 00:43:37,830 --> 00:43:40,970 És 32 bits que col · lectivament s'interpreten 1055 00:43:40,970 --> 00:43:42,090 com un nombre. 1056 00:43:42,090 --> 00:43:44,730 Si té 32 bits, que significa que cada un dels bits pot ser 1057 00:43:44,730 --> 00:43:46,690 un 0 o un 1, 0 o un 1. 1058 00:43:46,690 --> 00:43:49,090 Així que això vol dir que hi ha dues possibilitats per aquest bit, 1059 00:43:49,090 --> 00:43:51,140 dues possibilitats per això, dues possibilitats per a aquesta 1060 00:43:51,140 --> 00:43:52,570 bit - pel que és 2 vegades 2 vegades - 1061 00:43:52,570 --> 00:43:55,480 de manera que és 2 a la potència 32 és el nombre total de 1062 00:43:55,480 --> 00:43:58,960 permutacions de zeros i uns, si vostè té 32 1063 00:43:58,960 --> 00:44:01,400 marcadors de posició, zeros o uns, al davant de vostè. 1064 00:44:01,400 --> 00:44:04,250 Així que si tinc 2 a la 32, matemàticament, que és el que? 1065 00:44:07,080 --> 00:44:07,840 Així que és molt. 1066 00:44:07,840 --> 00:44:09,910 Són les 4 milions de dòlars, més o menys. 1067 00:44:09,910 --> 00:44:13,510 I 4 mil milions no sembla ser el que va ser imprès aquí. 1068 00:44:13,510 --> 00:44:16,290 De fet, això es veu més prop de 2 milions de dòlars. 1069 00:44:16,290 --> 00:44:17,970 Però això no és una coincidència. 1070 00:44:17,970 --> 00:44:21,590 El fet que l'ordinador s'ha malinterpretat el meu número enorme, 1071 00:44:21,590 --> 00:44:24,260 meu enorme seqüència d'uns i llavors el meu gran seqüència de dos en dos, 1072 00:44:24,260 --> 00:44:26,880 ja que al voltant de 2 mil milions, s'explica com? 1073 00:44:30,250 --> 00:44:32,180 Hi ha un límit en el int. 1074 00:44:32,180 --> 00:44:34,970 Hi ha un sens dubte un valor màxim que es pot representar. 1075 00:44:34,970 --> 00:44:36,370 Però en general és 4 mil milions, no? 1076 00:44:36,370 --> 00:44:39,100 Si 2 a la 32 és aproximadament 4 mil milions, que sembla 1077 00:44:39,100 --> 00:44:40,350 que és el major nombre. 1078 00:44:42,420 --> 00:44:45,240 Així que no és un residu, sinó un bon pensament. 1079 00:44:45,240 --> 00:44:46,340 Els nombres negatius. 1080 00:44:46,340 --> 00:44:49,570 Així que si vostè té 4000000000 les coses possibles que pot 1081 00:44:49,570 --> 00:44:52,970 representar amb aquestes diverses permutacions de 32 0 i 1082 00:44:52,970 --> 00:44:55,600 1s, bé, és lògic pensar que els éssers humans pot ser que vulgui 1083 00:44:55,600 --> 00:44:57,110 representar no només nombres enters positius 1084 00:44:57,110 --> 00:44:58,240 però sencers negatius. 1085 00:44:58,240 --> 00:45:00,410 I de fet, aquesta és la suposició que C fa. 1086 00:45:00,410 --> 00:45:03,550 Així que amb 32 bits, pot representar aproximadament 2 negatiu 1087 00:45:03,550 --> 00:45:06,630 milions de tot el camí fins positiu 2000000000. 1088 00:45:06,630 --> 00:45:08,750 I així, en aquest cas, el que realment estem veient és només 1089 00:45:08,750 --> 00:45:13,600 al marge de la capacitat del nostre sencer, i tenim, per la qual cosa 1090 00:45:13,600 --> 00:45:15,860 per parlar, es va desbordar un nombre enter. 1091 00:45:15,860 --> 00:45:19,180 Hem tractat de ficar més bits en el que realment pot encaixar. 1092 00:45:19,180 --> 00:45:22,960 Així, el resultat final és que tenen essencialment les 1 bits. 1093 00:45:22,960 --> 00:45:25,280 Hem voltejat totes les nostres bits en, hem tractat de representar 1094 00:45:25,280 --> 00:45:27,630 el major nombre possible, però és evident que no és gairebé 1095 00:45:27,630 --> 00:45:30,960 prou gran com per representar les dues coses que acabo escrit polz 1096 00:45:30,960 --> 00:45:31,730 Sí? 1097 00:45:31,730 --> 00:45:32,980 AUDIÈNCIA: [inaudible] 1098 00:45:37,230 --> 00:45:37,830 >> DAVID J. Malan: Bona pregunta. 1099 00:45:37,830 --> 00:45:40,080 Per què no podem simplement representa que negatiu 1100 00:45:40,080 --> 00:45:41,500 com s'acaba de signar un personatge? 1101 00:45:41,500 --> 00:45:44,200 Així que és absolutament possible, i llavors podríem estalviar 1102 00:45:44,200 --> 00:45:45,470 un bit addicional. 1103 00:45:45,470 --> 00:45:49,100 No obstant això, vostè encara haurà de representar aquest guió, i 1104 00:45:49,100 --> 00:45:50,700 que et costarà almenys alguna cosa, 1105 00:45:50,700 --> 00:45:52,220 presumiblement una mica. 1106 00:45:52,220 --> 00:45:55,610 Així que sí, podríem tenir 32 bits que s'utilitzen per obtenir el nombre, però ara 1107 00:45:55,610 --> 00:45:57,610 necessitem una mica utilitzat per al nostre guió 1108 00:45:57,610 --> 00:45:58,810 símbol, el signe menys. 1109 00:45:58,810 --> 00:46:01,470 Així que ara tenim 33 valors de bit, el que podem fer, però és 1110 00:46:01,470 --> 00:46:02,570 No de la manera que es fa. 1111 00:46:02,570 --> 00:46:05,140 Vam fer una sentència de trucada fa anys, 32 bits és una espècie de 1112 00:46:05,140 --> 00:46:06,170 unitat de mesura aquí. 1113 00:46:06,170 --> 00:46:08,120 Així que farem servir un d'aquests bits amb eficàcia a 1114 00:46:08,120 --> 00:46:12,950 representa la negativitat, i 31 bits per representar el nombre. 1115 00:46:12,950 --> 00:46:15,550 Altres preguntes? 1116 00:46:15,550 --> 00:46:15,670 Està bé. 1117 00:46:15,670 --> 00:46:16,030 Això és molt. 1118 00:46:16,030 --> 00:46:17,930 Per què no seguir endavant i prendre els nostres cinc minuts de descans aquí? 1119 00:46:23,580 --> 00:46:24,270 >> Està bé. 1120 00:46:24,270 --> 00:46:31,250 Així que de nou, no posar massa èmfasi en les aplicacions matemàtiques 1121 00:46:31,250 --> 00:46:33,840 de la programació, anem a arrencar aquest exemple 1122 00:46:33,840 --> 00:46:36,590 abans de passar a altres construccions, només perquè 1123 00:46:36,590 --> 00:46:39,430 s'il · lustren alguns punts de ensopegada comuns en alguns 1124 00:46:39,430 --> 00:46:41,520 els conceptes bàsics a l'hora d'escriure programes. 1125 00:46:41,520 --> 00:46:44,360 En aquest cas, fent expressions aritmètiques que tenen algun 1126 00:46:44,360 --> 00:46:48,010 rellevància interessant a la sintaxi. 1127 00:46:48,010 --> 00:46:50,430 >> Així que això és només una fórmula amb la qual podem convertir 1128 00:46:50,430 --> 00:46:52,690 temperatura de Fahrenheit a Celsius. 1129 00:46:52,690 --> 00:46:54,600 Si no recorda, això és només la fórmula. 1130 00:46:54,600 --> 00:46:58,870 Així que si ho connectem a Fahrenheit valor de 32 graus, que és 1131 00:46:58,870 --> 00:47:02,850 congelació, que serà 32 menys 32 és 0, i de fet, 1132 00:47:02,850 --> 00:47:05,130 0 en graus Celsius és també la congelació. 1133 00:47:05,130 --> 00:47:08,210 Així seny registre ràpid allà - aquesta és la fórmula familiar. 1134 00:47:08,210 --> 00:47:10,880 Permetin-me passar a l'aparell, però, i començar 1135 00:47:10,880 --> 00:47:13,920 escriure un programa que es diu, com, F2C, "Fahrenheit a 1136 00:47:13,920 --> 00:47:15,920 Celsius punt c ". 1137 00:47:15,920 --> 00:47:18,930 I a la part superior aquí, vaig a començar amb # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, i jo vaig a fer int main (void), i 1139 00:47:22,190 --> 00:47:24,680 de nou, tornarem al futur pel que fa al int significa 1140 00:47:24,680 --> 00:47:26,820 allà i el buit significa que hi ha. 1141 00:47:26,820 --> 00:47:28,770 I ara m'ho dius a mi seguir endavant i posar en pràctica un programa que 1142 00:47:28,770 --> 00:47:31,170 bàsicament fa aquesta conversió per a nosaltres. 1143 00:47:31,170 --> 00:47:36,830 >> Així printf, diguem, la temperatura en graus Fahrenheit. 1144 00:47:36,830 --> 00:47:40,140 I després em deixa seguir endavant i obtenir el valor per a l'usuari. 1145 00:47:40,140 --> 00:47:43,120 Quin tipus de valor hauria d'obtenir dels usuaris, si vull 1146 00:47:43,120 --> 00:47:45,620 que em donessin una temperatura a Fahrenheit? 1147 00:47:45,620 --> 00:47:48,090 Sí? 1148 00:47:48,090 --> 00:47:50,090 Què et proposes? 1149 00:47:50,090 --> 00:47:50,410 Si. 1150 00:47:50,410 --> 00:47:51,960 Així flotador se sent bastant raonable. 1151 00:47:51,960 --> 00:47:53,950 Tenim, de nou, només algunes opcions que 1152 00:47:53,950 --> 00:47:55,310 que hem vist fins ara. 1153 00:47:55,310 --> 00:48:00,100 Tenim coses com char, float doble, int, long long, 1154 00:48:00,100 --> 00:48:01,150 bool, string. 1155 00:48:01,150 --> 00:48:03,510 Així que d'aquests, el flotador se sent bastant raonable. 1156 00:48:03,510 --> 00:48:06,340 Ens vindria bé un dret doble, perquè, si de veritat volem 1157 00:48:06,340 --> 00:48:07,580 representen la temperatura d'un ésser humà - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 podríem utilitzar 64 bits per fer això, però se sent com 1160 00:48:12,990 --> 00:48:14,200 exageració per a la temperatura. 1161 00:48:14,200 --> 00:48:16,380 Així que anirem amb flotador. 1162 00:48:16,380 --> 00:48:18,100 Ara necessito una variable. 1163 00:48:18,100 --> 00:48:20,500 Només per no complicar les coses, vaig a dir-f, però 1164 00:48:20,500 --> 00:48:23,370 bé podria anomenar correctament la temperatura, 1165 00:48:23,370 --> 00:48:24,600 però tampoc està bé. 1166 00:48:24,600 --> 00:48:27,610 Així float f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Així que ara ha decidit utilitzar GetFloat, però, em 1168 00:48:30,220 --> 00:48:33,340 necessita fer una correcció. 1169 00:48:33,340 --> 00:48:33,720 Si. 1170 00:48:33,720 --> 00:48:37,460 Així que hem d'incloure # , en cas contrari el compilador 1171 00:48:37,460 --> 00:48:39,000 va a cridar a nosaltres. 1172 00:48:39,000 --> 00:48:41,720 Ara que tinc un flotador, deixa anar endavant i fer el 1173 00:48:41,720 --> 00:48:42,460 conversió. 1174 00:48:42,460 --> 00:48:44,980 >> Així que primer, permetin-me entrar en l'hàbit d'aquí 1175 00:48:44,980 --> 00:48:46,310 comentant el meu codi. 1176 00:48:46,310 --> 00:48:49,820 Així que de nou, un comentari és només una notació per a l'ésser humà que és 1177 00:48:49,820 --> 00:48:52,600 no formen part del programa en si, però un, que ajuda 1178 00:48:52,600 --> 00:48:55,010 entendre el que va fer l'endemà, ni el següent 1179 00:48:55,010 --> 00:48:57,570 mesos, ajuda al seu company d'ensenyament entendre el que vas fer 1180 00:48:57,570 --> 00:48:59,230 o el que pretenia fer, pel que és 1181 00:48:59,230 --> 00:49:00,950 pràctica general molt bo. 1182 00:49:00,950 --> 00:49:02,940 Cada poques línies de codi, escriu un comentari a 1183 00:49:02,940 --> 00:49:04,490 vostè o el seu company. 1184 00:49:04,490 --> 00:49:08,460 Així que aquí, vaig a dir: "Demana a l'usuari per a la temperatura." 1185 00:49:08,460 --> 00:49:10,890 No ha de ser una frase completa, només una frase curta. 1186 00:49:10,890 --> 00:49:14,270 Però la idea darrere comentant en C és que cada un dels seus 1187 00:49:14,270 --> 00:49:17,980 observacions en cas que l'autonomia - o, diguem, un TF o un col · lega - 1188 00:49:17,980 --> 00:49:21,290 a fregar el seu programa i saber exactament el que fa, no per 1189 00:49:21,290 --> 00:49:24,650 tant la lectura del codi, però en llegir els comentaris que, 1190 00:49:24,650 --> 00:49:26,220 ha de ser breu i clar. 1191 00:49:26,220 --> 00:49:29,030 Molt bé, així que ara vull seguir endavant i dir, "Convert 1192 00:49:29,030 --> 00:49:32,660 Fahrenheit a Celsius. "Així que vaig a seguir endavant i fer-ho, 1193 00:49:32,660 --> 00:49:34,340 diguem, surar c. 1194 00:49:34,340 --> 00:49:36,610 Seguirem Celsius com un valor de punt flotant. 1195 00:49:36,610 --> 00:49:37,630 >> I m'ho dius a mi prendre una punyalada en això. 1196 00:49:37,630 --> 00:49:40,350 La fórmula és, de nou, fins aquí. 1197 00:49:40,350 --> 00:49:45,510 Com 09/05 vegades menys F 32. 1198 00:49:45,510 --> 00:49:46,360 Així que anem a fer això. 1199 00:49:46,360 --> 00:49:50,450 Així que 5 dividit per 9, menys - 1200 00:49:50,450 --> 00:49:52,330 Vaja, m'ho va arruïnar tot ja. 1201 00:49:52,330 --> 00:49:53,070 Times. 1202 00:49:53,070 --> 00:49:56,550 Així que 05/09 vegades menys F 32. 1203 00:49:56,550 --> 00:49:59,650 Així F menys 32, punt i coma. 1204 00:49:59,650 --> 00:50:02,000 I ara, aquí, vaig a seguir endavant 1205 00:50:02,000 --> 00:50:03,220 i dir, imprimir resultat. 1206 00:50:03,220 --> 00:50:05,160 I aquesta part és fàcil. Printf. 1207 00:50:05,160 --> 00:50:07,980 Com puc imprimir això? 1208 00:50:07,980 --> 00:50:16,890 Bé, podria dir: "Aquest nombre en graus Celsius és% f \ n", 1209 00:50:16,890 --> 00:50:18,060 només per alguns estètica. 1210 00:50:18,060 --> 00:50:20,450 I llavors, quin valor és el que vull connectar aquí com de printf 1211 00:50:20,450 --> 00:50:21,360 El segon argument? 1212 00:50:21,360 --> 00:50:21,650 Bé. 1213 00:50:21,650 --> 00:50:22,540 Així que c. 1214 00:50:22,540 --> 00:50:24,760 Així que anem a començar amb això i després simplement tornar 0. 1215 00:50:24,760 --> 00:50:25,960 Un cop més, no té res a veure amb les matemàtiques. 1216 00:50:25,960 --> 00:50:27,610 Només vol dir que tot està bé. 1217 00:50:27,610 --> 00:50:31,210 >> Ara, és això correcte, aquest programa? 1218 00:50:31,210 --> 00:50:31,520 Està bé. 1219 00:50:31,520 --> 00:50:33,630 Així que he comès alguns errors. 1220 00:50:33,630 --> 00:50:35,980 Encara que no té idea del que és la programació, pot ordenar 1221 00:50:35,980 --> 00:50:37,120 de tornada a l'escola primària inferir el que la 1222 00:50:37,120 --> 00:50:38,740 errors aquí podria ser. 1223 00:50:38,740 --> 00:50:40,050 Quin és un dels primers? 1224 00:50:40,050 --> 00:50:41,256 AUDIÈNCIA: [inaudible] 1225 00:50:41,256 --> 00:50:41,660 DAVID J. Malan: Si. 1226 00:50:41,660 --> 00:50:42,940 Així que ens falta parèntesi. 1227 00:50:42,940 --> 00:50:45,420 Va ser deliberat que vaig fer parèntesi en la keynote 1228 00:50:45,420 --> 00:50:48,130 llisqui aquí, perquè no hi ha en realitat aquesta noció d'ordre 1229 00:50:48,130 --> 00:50:51,590 de les operacions, o precedència, en què certes operacions - 1230 00:50:51,590 --> 00:50:52,890 multiplicació - 1231 00:50:52,890 --> 00:50:56,000 tenen una major unió, tenen major prioritat, que les coses 1232 00:50:56,000 --> 00:50:58,050 com a suma o resta. 1233 00:50:58,050 --> 00:51:00,550 Per això hem fet això durant anys només per deixar en clar exactament 1234 00:51:00,550 --> 00:51:02,840 quina operació matemàtica s'ha de fer primer. 1235 00:51:02,840 --> 00:51:05,010 Així que probablement hauria d'imitar exactament això. 1236 00:51:05,010 --> 00:51:08,990 En cas contrari, l'equip està probablement va a tractar de fer 1237 00:51:08,990 --> 00:51:13,090 una mena dividir 5 per 9, i després multiplicar F, després restar 1238 00:51:13,090 --> 00:51:14,850 32 de tot l'assumpte. 1239 00:51:14,850 --> 00:51:16,480 La qual cosa no és, de fet, el que volem fer. 1240 00:51:16,480 --> 00:51:17,340 Així que anem a posar entre parèntesi. 1241 00:51:17,340 --> 00:51:20,860 Anem a afegir meus parèntesi aquí, parèntesi aquí. 1242 00:51:20,860 --> 00:51:22,670 Anem a posar això aquí. 1243 00:51:22,670 --> 00:51:25,130 Aquí, em vaig adonar d'un altre error que vaig cometre en el camí. 1244 00:51:25,130 --> 00:51:25,680 Sí? 1245 00:51:25,680 --> 00:51:26,930 AUDIÈNCIA: [inaudible] 1246 00:51:29,632 --> 00:51:30,130 >> DAVID J. Malan: Ah. 1247 00:51:30,130 --> 00:51:30,470 Bé. 1248 00:51:30,470 --> 00:51:32,400 Així que en realitat tenen el mateix nombre enter 1249 00:51:32,400 --> 00:51:34,020 divisió qüestió d'abans. 1250 00:51:34,020 --> 00:51:35,800 Puc corregir això, anem a veure el que el símptoma és. 1251 00:51:35,800 --> 00:51:36,990 Però haurem de corregir una 1252 00:51:36,990 --> 00:51:37,680 un altre error aquí. 1253 00:51:37,680 --> 00:51:38,015 Sí? 1254 00:51:38,015 --> 00:51:39,540 AUDIÈNCIA: [inaudible] 1255 00:51:39,540 --> 00:51:40,070 DAVID J. Malan: Si. 1256 00:51:40,070 --> 00:51:43,130 Per tant, l'error estúpid que vaig fer, però increïblement important. 1257 00:51:43,130 --> 00:51:45,870 L'equip no es convertirà només els ulls grossos i deixar que 1258 00:51:45,870 --> 00:51:48,770 usarme F capital, quan en realitat declarat la variable 1259 00:51:48,770 --> 00:51:51,360 com una f minúscula aquí, en la línia 8. 1260 00:51:51,360 --> 00:51:54,470 Així que he de corregir al meu línia 11 capitalització, que un 1261 00:51:54,470 --> 00:51:56,820 moments abans era una F majúscula per error. 1262 00:51:56,820 --> 00:51:57,610 Què passa aquí? 1263 00:51:57,610 --> 00:51:59,980 Si això no fos així en minúscules? 1264 00:51:59,980 --> 00:52:02,260 Ha de ser, sinó que és una coincidència. 1265 00:52:02,260 --> 00:52:05,070 Això% f no té res a veure amb la variable. 1266 00:52:05,070 --> 00:52:07,980 Així que per ser super clar aquí, deixa seguir endavant i 1267 00:52:07,980 --> 00:52:10,710 canviar el nom d'aquest, en poques paraules, "temperatura". Deixeu-me canviar el nom de 1268 00:52:10,710 --> 00:52:15,050 aquesta "temperatura". No deixis que em canviï el nom d'aquesta. 1269 00:52:15,050 --> 00:52:18,180 Perquè, de nou, f% a nivell mundial significa, "flotant valor en punts." 1270 00:52:18,180 --> 00:52:19,950 No té res a veure amb la meva variable. 1271 00:52:19,950 --> 00:52:23,080 No obstant això, "temperatura" per tot el lloc és una mica prolix, 1272 00:52:23,080 --> 00:52:25,370 així que vaig a tornar al meu minúscula "f" s. 1273 00:52:25,370 --> 00:52:27,890 >> Ara, deixa anar per davant fins la meva finestra aquí. 1274 00:52:27,890 --> 00:52:29,190 Fer F2C - 1275 00:52:29,190 --> 00:52:31,200 que va ser, de nou, el nom arbitrari I 1276 00:52:31,200 --> 00:52:32,590 va donar a aquesta imatge. 1277 00:52:32,590 --> 00:52:33,690 Sembla que ha compilat. 1278 00:52:33,690 --> 00:52:35,080 Deixa córrer F2C. 1279 00:52:35,080 --> 00:52:35,780 Retorn. 1280 00:52:35,780 --> 00:52:37,786 La temperatura a Fahrenheit - farem fàcil. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, corregir-los. 1283 00:52:40,910 --> 00:52:45,910 Però, si ara faig 212 per bullir - 1284 00:52:45,910 --> 00:52:46,630 maleït. 1285 00:52:46,630 --> 00:52:47,030 Està bé. 1286 00:52:47,030 --> 00:52:50,780 Per tant, clarament no corregir, si el TF intenta 1287 00:52:50,780 --> 00:52:51,800 almenys dos valors. 1288 00:52:51,800 --> 00:52:53,340 Llavors, quin és el problema aquí? 1289 00:52:53,340 --> 00:52:55,970 Bé, ia posar el dit a quin és el problema. 1290 00:52:55,970 --> 00:52:57,600 Però per què és així? 1291 00:52:57,600 --> 00:53:00,630 Fins aquí, quan estic fent la matemàtiques de 5 dividit per 9. 1292 00:53:00,630 --> 00:53:02,190 Llavors, conceptualment, és perfectament correcte. 1293 00:53:02,190 --> 00:53:03,690 Totalment coherent amb la fórmula. 1294 00:53:03,690 --> 00:53:05,940 Però els ordinadors només fan precisament el que 1295 00:53:05,940 --> 00:53:06,760 els diuen que facin. 1296 00:53:06,760 --> 00:53:08,940 I el que estem dient l'ordinador efectivament aquí és 1297 00:53:08,940 --> 00:53:12,320 dividir el sencer de 5 pel nombre enter 9 1298 00:53:12,320 --> 00:53:13,670 i em dóna el resultat. 1299 00:53:13,670 --> 00:53:16,230 El problema és, però, quan s'utilitza la divisió de dades 1300 00:53:16,230 --> 00:53:20,220 tipus, la sortida és el mateix tipus de dades que les entrades. 1301 00:53:20,220 --> 00:53:23,670 I així, si les dues entrades són alhora INT, la sortida es va 1302 00:53:23,670 --> 00:53:25,110 a ser un int. 1303 00:53:25,110 --> 00:53:28,770 I així que 5 dividit per 9 és alguna cosa punt. 1304 00:53:28,770 --> 00:53:32,320 Però quin és el nombre enter més proper al punt alguna cosa? 1305 00:53:32,320 --> 00:53:33,630 Per tant, en realitat és 0. 1306 00:53:33,630 --> 00:53:36,620 Així com discutim el dilluns, després de tot el decimal 1307 00:53:36,620 --> 00:53:37,940 punt queda truncada. 1308 00:53:37,940 --> 00:53:39,495 Només es llença. 1309 00:53:39,495 --> 00:53:42,760 Així que això és un greu error, perquè pot ser que també acaba de 1310 00:53:42,760 --> 00:53:44,700 multipliquem tot per 0 aquí. 1311 00:53:44,700 --> 00:53:46,550 >> Ara, puc arreglar això en un parell de maneres. 1312 00:53:46,550 --> 00:53:48,080 Jo podria fer això. 1313 00:53:48,080 --> 00:53:50,490 5,0 dividit per 9,0. 1314 00:53:50,490 --> 00:53:52,110 Tècnicament, no tens necessitat de fer això. 1315 00:53:52,110 --> 00:53:55,780 Això és suficient perquè només un dels números d'un flotador - 1316 00:53:55,780 --> 00:53:58,290 o doble - en posar el punt decimal aquí. 1317 00:53:58,290 --> 00:54:01,740 Perquè el que passa ara és quan es divideix un enter 1318 00:54:01,740 --> 00:54:04,670 un flotador, o un doble, l'equip donarà compte 1319 00:54:04,670 --> 00:54:06,830 oh, un d'ells és més precís. 1320 00:54:06,830 --> 00:54:09,420 Permetin-me errar pel costat de donar-li més precisió que 1321 00:54:09,420 --> 00:54:10,310 vostè pretén. 1322 00:54:10,310 --> 00:54:12,700 Així que convertirà el resultat - 1323 00:54:12,700 --> 00:54:16,240 tornarà el resultat com un valor de coma flotant també. 1324 00:54:16,240 --> 00:54:17,330 Així que anava a funcionar. 1325 00:54:17,330 --> 00:54:18,060 Això funcionaria. 1326 00:54:18,060 --> 00:54:20,010 I no hi ha cap diferent que veurem en 1327 00:54:20,010 --> 00:54:21,390 més detall la setmana. 1328 00:54:21,390 --> 00:54:24,690 En realitat es pot, ja que el programador, dir-li a l'ordinador 1329 00:54:24,690 --> 00:54:27,930 per tractar realment un tipus de dades com 1330 00:54:27,930 --> 00:54:29,260 si fos un altre. 1331 00:54:29,260 --> 00:54:30,990 >> Així que jo podia fer això. 1332 00:54:30,990 --> 00:54:35,280 Entre parèntesi, puc dir alguna cosa com (float), obert 1333 00:54:35,280 --> 00:54:36,350 Parin, parin prop. 1334 00:54:36,350 --> 00:54:39,050 I això és el que s'anomena "càsting". Una vegada més, més 1335 00:54:39,050 --> 00:54:39,940 en aquesta setmana. 1336 00:54:39,940 --> 00:54:42,280 Però això és només la forma programàtica de comptar 1337 00:54:42,280 --> 00:54:45,910 l'ordinador, sí que sé 9 és un nombre enter o una llarga. 1338 00:54:45,910 --> 00:54:47,700 Jo sé que no és un valor de coma flotant. 1339 00:54:47,700 --> 00:54:49,420 Però tractar com a tal de totes maneres. 1340 00:54:49,420 --> 00:54:52,000 Així que per convertir un tipus de dades significa convertir 1341 00:54:52,000 --> 00:54:53,310 d'una a l'altra. 1342 00:54:53,310 --> 00:54:55,790 Francament, això és només una mica lleig, així que em proposo anar 1343 00:54:55,790 --> 00:54:58,830 donar suport al suggeriment original de només convertir 1344 00:54:58,830 --> 00:55:00,770 aquestes coses a valors de punt flotant de forma manual. 1345 00:55:00,770 --> 00:55:02,890 Per ara és només súper clar el que està passant, i 1346 00:55:02,890 --> 00:55:04,280 no és tot el que distreu. 1347 00:55:04,280 --> 00:55:06,710 >> Així que ara anem a anar de nou a la meva finestra de terminal. 1348 00:55:06,710 --> 00:55:07,990 Fer F2C. 1349 00:55:07,990 --> 00:55:09,430 Deixin-me seguir endavant i executar aquest. 1350 00:55:09,430 --> 00:55:12,340 I, en un apart, t'avorreixes escrivint aquestes comandes 1351 00:55:12,340 --> 00:55:14,910 una i altra vegada, s'adonen que les computadores, com Linux aquí, 1352 00:55:14,910 --> 00:55:16,010 tendeixen a ser bastant intel · ligent. 1353 00:55:16,010 --> 00:55:18,890 I si cop cap amunt, podem anar a través de la meva història sencera de 1354 00:55:18,890 --> 00:55:20,380 comandaments, amunt i avall. 1355 00:55:20,380 --> 00:55:23,840 Així que en aquest cas aquí, puc anar fins a executar make F2C. 1356 00:55:23,840 --> 00:55:25,830 Estic sent cridat, perquè jo només vaig fer fa un segon. 1357 00:55:25,830 --> 00:55:27,030 Ja està actualitzat. 1358 00:55:27,030 --> 00:55:30,720 Així que ara puc córrer F2C nou. 1359 00:55:30,720 --> 00:55:33,260 Tractarem de 32 graus Fahrenheit. 1360 00:55:33,260 --> 00:55:36,720 Ara anem a tractar de 212 graus Fahrenheit. 1361 00:55:36,720 --> 00:55:37,250 >> Phew. 1362 00:55:37,250 --> 00:55:38,250 Sembla que funciona. 1363 00:55:38,250 --> 00:55:41,760 Ara, això és bo, però se sent una mica arbitrari que 1364 00:55:41,760 --> 00:55:44,890 Estic mostrant sis números després dels punts decimals. 1365 00:55:44,890 --> 00:55:45,070 ¿És cert? 1366 00:55:45,070 --> 00:55:47,830 Si vostè és la persona el temps a TV, ets una espècie de doofus 1367 00:55:47,830 --> 00:55:49,150 si estàs llegint la temperatura a 1368 00:55:49,150 --> 00:55:50,070 aquest grau de precisió. 1369 00:55:50,070 --> 00:55:51,270 Així que anem a simplificar això. 1370 00:55:51,270 --> 00:55:53,880 Així que en realitat van per aquí, al meu printf. 1371 00:55:53,880 --> 00:55:55,490 I sí, vull surar. 1372 00:55:55,490 --> 00:55:57,570 Però vull precisar ara la precisió. 1373 00:55:57,570 --> 00:55:59,070 I jo seré una mica breu. 1374 00:55:59,070 --> 00:56:03,090 Jo vaig a dir, dóna'm un punt després del punt decimal. 1375 00:56:03,090 --> 00:56:07,590 Així que en lloc de dir f%, jo diré% .1 f. 1376 00:56:07,590 --> 00:56:09,760 I això només significa dóna'm una posició 1377 00:56:09,760 --> 00:56:11,410 després del punt decimal. 1378 00:56:11,410 --> 00:56:11,700 Està bé. 1379 00:56:11,700 --> 00:56:12,570 Anem a intentar-ho de nou. 1380 00:56:12,570 --> 00:56:15,590 Permetin-me repetir l'execució després de compilar. 1381 00:56:15,590 --> 00:56:18,160 I ara escric a 32 anys, i que torni a 1382 00:56:18,160 --> 00:56:19,310 més succinta valor. 1383 00:56:19,310 --> 00:56:22,480 I puc escriure, ara, 212, i tornar a una més succinta 1384 00:56:22,480 --> 00:56:23,260 valor també. 1385 00:56:23,260 --> 00:56:25,190 I hi ha altres coses que pots fer amb printf. 1386 00:56:25,190 --> 00:56:27,950 En realitat es pot especificar l'ample de la quantitat que hauria de ser. 1387 00:56:27,950 --> 00:56:30,900 Si vostè vol tenir encoixinat-hi, perquè pugui alinear a la dreta o 1388 00:56:30,900 --> 00:56:32,360 esquerra alinear tots els nombres o 1389 00:56:32,360 --> 00:56:33,400 tractar de centrar les coses. 1390 00:56:33,400 --> 00:56:35,340 Així que adonar-se que hi ha petits trucs que es poden fer. 1391 00:56:35,340 --> 00:56:38,420 Però només es redueixen als codis de format, 1392 00:56:38,420 --> 00:56:39,600 com el que tenim allà. 1393 00:56:39,600 --> 00:56:41,090 >> Així que en termes d'aquesta qüestió de precedència. 1394 00:56:41,090 --> 00:56:43,820 Aquesta és una taula molt avorrit anar a través metòdicament. 1395 00:56:43,820 --> 00:56:46,780 Però adonar-se que els autors de C han arribat a la 1396 00:56:46,780 --> 00:56:50,190 regles que especifiquen que els operadors tenen una major 1397 00:56:50,190 --> 00:56:53,680 prioritat, més poder vinculant, que altres. 1398 00:56:53,680 --> 00:56:55,890 Així, mentre que a l'escola primària, en general sabia que era 1399 00:56:55,890 --> 00:56:58,930 multiplicació i divisió, després suma i resta, 1400 00:56:58,930 --> 00:56:59,950 llavors algunes altres coses. 1401 00:56:59,950 --> 00:57:01,720 En un món de la programació, hi ha un gran 1402 00:57:01,720 --> 00:57:03,360 ia llista de les coses. 1403 00:57:03,360 --> 00:57:05,150 I això no és una cosa que val la pena memoritzar ara. 1404 00:57:05,150 --> 00:57:07,310 Vas a aclimatar-se a ella abans de temps. 1405 00:57:07,310 --> 00:57:10,690 Però igual que a l'escola primària, generalment entre parèntesi resoldre 1406 00:57:10,690 --> 00:57:12,990 les qüestions de prioritat, fent la súper clara a la 1407 00:57:12,990 --> 00:57:15,620 ordinador i humans per igual el que es pretén. 1408 00:57:15,620 --> 00:57:17,770 Així que consideri això una mica costella allà. 1409 00:57:17,770 --> 00:57:21,690 Però la majoria d'aquests detalls que no s'arriba a un temps. 1410 00:57:21,690 --> 00:57:21,900 >> Està bé. 1411 00:57:21,900 --> 00:57:24,120 Ara, anem a construir i allunyar d'aquests poc ximple 1412 00:57:24,120 --> 00:57:25,460 exemples matemàtics. 1413 00:57:25,460 --> 00:57:27,500 Seguiu utilitzant els mateixos fonaments, però el començament 1414 00:57:27,500 --> 00:57:29,960 expressar una mica més com Scratch. 1415 00:57:29,960 --> 00:57:31,660 Així que en Scratch, teníem aquestes expressions booleanes. 1416 00:57:31,660 --> 00:57:34,890 I en anglès, una expressió booleana és el que? 1417 00:57:34,890 --> 00:57:35,580 Veritable o fals. 1418 00:57:35,580 --> 00:57:38,300 És una cosa que s'avalua com a veritable o falsa. 1419 00:57:38,300 --> 00:57:39,060 1 o 0. 1420 00:57:39,060 --> 00:57:39,870 Activat o desactivat. 1421 00:57:39,870 --> 00:57:41,000 El que sigui que vulguis dir. 1422 00:57:41,000 --> 00:57:43,210 Ara en Scratch, les peces del trencaclosques es veia així. 1423 00:57:43,210 --> 00:57:45,850 I aquesta és la combinació, en la part inferior hi ha, de tres 1424 00:57:45,850 --> 00:57:47,980 peces d'un trencaclosques. 1425 00:57:47,980 --> 00:57:48,980 Una conjunció - 1426 00:57:48,980 --> 00:57:51,710 una cosa que té en blanc i en blanc. 1427 00:57:51,710 --> 00:57:53,970 I després dues expressions booleanes dins d'ella. 1428 00:57:53,970 --> 00:57:56,460 Així que vostè pot niar booleana per obtenir més 1429 00:57:56,460 --> 00:57:59,360 complicades expressions booleanes. 1430 00:57:59,360 --> 00:58:03,930 Per exemple, si és dissabte, i és agradable 1431 00:58:03,930 --> 00:58:06,180 temps, i després sortir al carrer. 1432 00:58:06,180 --> 00:58:07,500 O alguna cosa arbitrari així. 1433 00:58:07,500 --> 00:58:10,090 Així que vostè pot unir-se a expressions booleanes per arribar a un 1434 00:58:10,090 --> 00:58:12,780 major valor de la veritat, la resposta es basa 1435 00:58:12,780 --> 00:58:13,800 en els més petits. 1436 00:58:13,800 --> 00:58:15,770 >> Ara, en C, per sort, aquesta assignació és 1437 00:58:15,770 --> 00:58:16,720 en realitat bastant simple. 1438 00:58:16,720 --> 00:58:18,820 Els parèntesis ajudar a aclarir les coses aquí. 1439 00:58:18,820 --> 00:58:21,700 && És el que significa "i". Així és com 1440 00:58:21,700 --> 00:58:24,700 anem a convertir aquests blocs de Scratch per C. 1441 00:58:24,700 --> 00:58:27,590 I per les condicions que vam veure en Scratch, a la mà esquerra 1442 00:58:27,590 --> 00:58:31,150 banda allà, es poden apilar de manera similar a C. Si x és menor 1443 00:58:31,150 --> 00:58:32,970 que i, a continuació, fer això. 1444 00:58:32,970 --> 00:58:35,100 Perquè si x és més gran que i, a continuació, fer això. 1445 00:58:35,100 --> 00:58:38,030 Altres vendes lògicament han de ser iguals, pel que diuen 1446 00:58:38,030 --> 00:58:39,140 que són iguals. 1447 00:58:39,140 --> 00:58:41,210 Així que ara podem començar a construir aquestes coses. 1448 00:58:41,210 --> 00:58:42,170 >> Així que farem un exemple. 1449 00:58:42,170 --> 00:58:45,550 Permetin-me obrir un arxiu que està a la pàgina web de l'assignatura que 1450 00:58:45,550 --> 00:58:47,270 Jo vaig escriure amb antelació. 1451 00:58:47,270 --> 00:58:50,540 Això es diu nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 I veurem per què en un moment. 1453 00:58:52,270 --> 00:58:54,770 Així que en aquest arxiu - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 compte per primera vegada que hi ha un munt de 1455 00:58:56,830 --> 00:58:58,460 comentaris a la part superior. 1456 00:58:58,460 --> 00:59:00,110 Això és només explicar el nom del fitxer, el que 1457 00:59:00,110 --> 00:59:01,260 fa, i així successivament. 1458 00:59:01,260 --> 00:59:04,390 I, pel que sembla, es mostra l'ús dels operadors booleans AND-ing - 1459 00:59:04,390 --> 00:59:06,220 conjugar dues expressions. 1460 00:59:06,220 --> 00:59:07,670 >> Així que anem a veure com funciona aquest programa. 1461 00:59:07,670 --> 00:59:10,840 Incloc meus dos arxius, cs50.h i stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Si desplaceu-vos cap avall, ara, per al programa, que és una mica més llarg 1463 00:59:13,180 --> 00:59:15,730 del que hem escrit abans, però bastant llegible. 1464 00:59:15,730 --> 00:59:18,360 Així que primer imprimeix a l'usuari, en la línia 18, 1465 00:59:18,360 --> 00:59:20,460 "Dóna'm un nombre enter entre 1 i 10." Tan 1466 00:59:20,460 --> 00:59:21,530 que està just aquí. 1467 00:59:21,530 --> 00:59:23,410 Ara tinc el sencer. 1468 00:59:23,410 --> 00:59:25,380 Però adonar-se que getInt - bastant simple. 1469 00:59:25,380 --> 00:59:26,510 És només va a aconseguir un int. 1470 00:59:26,510 --> 00:59:28,830 Això va a assegurar-se que rep un int i no un 1471 00:59:28,830 --> 00:59:30,060 cadena o un flotador. 1472 00:59:30,060 --> 00:59:32,390 No va fer cap tipus de comprovació de límits. 1473 00:59:32,390 --> 00:59:34,750 No va a filtrar els números a ser entre un 1474 00:59:34,750 --> 00:59:35,630 cert rang. 1475 00:59:35,630 --> 00:59:37,730 Així que hem de posar en pràctica que nosaltres mateixos. 1476 00:59:37,730 --> 00:59:40,680 Així com en Scratch, on podria fer una conjunció de 1477 00:59:40,680 --> 00:59:43,560 dues expressions, puc fer això en C com segueix. 1478 00:59:43,560 --> 00:59:48,660 Si n és més gran que o igual a 1, i n és menor que i 1479 00:59:48,660 --> 00:59:52,220 o igual a 3, vaig a molt arbitràriament decret que 1480 00:59:52,220 --> 00:59:53,830 nombre a ser un nombre petit. 1481 00:59:53,830 --> 00:59:56,730 Només pel bé d'un comunicat. 1482 00:59:56,730 --> 01:00:00,210 Perquè si n és entre 4 i 6, print "Vostè va escollir 1/2 1483 01:00:00,210 --> 01:00:03,440 nombre. "Si no, si n és entre 7 i 10, escriviu" escollit vostè un 1484 01:00:03,440 --> 01:00:06,390 nombre gran. "Else print" Vostè tria un nombre no vàlid ". 1485 01:00:06,390 --> 01:00:07,900 Perquè, lògicament, que segueix si hem 1486 01:00:07,900 --> 01:00:09,230 esgotat la nostra gamma. 1487 01:00:09,230 --> 01:00:12,400 >> Així que adonar-se'n no és del tot com escrivim major o 1488 01:00:12,400 --> 01:00:15,000 igual en una classe de matemàtiques. 1489 01:00:15,000 --> 01:00:15,160 ¿És cert? 1490 01:00:15,160 --> 01:00:17,430 En general, dibuixar així, amb la línia sota d'ella. 1491 01:00:17,430 --> 01:00:19,250 Però no hi ha tal clau en el meu teclat. 1492 01:00:19,250 --> 01:00:22,390 Per tant el símbol en C per expressar major o 1493 01:00:22,390 --> 01:00:25,770 és igual a dos personatges, i el símbol de menys de 1494 01:00:25,770 --> 01:00:29,100 o és igual a dos personatges també. 1495 01:00:29,100 --> 01:00:29,330 Està bé. 1496 01:00:29,330 --> 01:00:31,910 Així que si executa aquest programa, que és fàcil endevinar el que és 1497 01:00:31,910 --> 01:00:32,650 farem. 1498 01:00:32,650 --> 01:00:36,180 Si torno a anar endavant i fer nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 I a continuació, executeu nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Dóna'm un nombre entre 1 i 10. 1501 01:00:39,530 --> 01:00:40,870 Jo vaig a donar 11. 1502 01:00:40,870 --> 01:00:42,280 Vaig triar un nombre no vàlid. 1503 01:00:42,280 --> 01:00:44,090 Vaig a tractar el número 3. 1504 01:00:44,090 --> 01:00:45,990 Vaig triar un nombre petit. 1505 01:00:45,990 --> 01:00:48,360 Així que hi ha bastant senzill. 1506 01:00:48,360 --> 01:00:52,230 >> Què passa si vull canviar el comportament d'aquest programa i 1507 01:00:52,230 --> 01:00:54,250 fer alguna cosa una mica diferent en el seu lloc? 1508 01:00:54,250 --> 01:00:57,620 Deixin-me seguir endavant i dir això. 1509 01:00:57,620 --> 01:00:59,480 Déjame desfer de tot això. 1510 01:00:59,480 --> 01:01:03,780 I permetin-me dir if (n == 42). 1511 01:01:03,780 --> 01:01:08,730 I després vaig a seguir endavant i dir print "Vostè va prendre la 1512 01:01:08,730 --> 01:01:16,340 resposta correcta. "En cas contrari seguirem endavant i dir, 1513 01:01:16,340 --> 01:01:18,460 printf ("vas triar la 1514 01:01:18,460 --> 01:01:21,170 resposta incorrecta ");. Okay. 1515 01:01:21,170 --> 01:01:22,040 El fet que. 1516 01:01:22,040 --> 01:01:23,890 >> Ara, alguns punts que podem fer aquí. 1517 01:01:23,890 --> 01:01:26,570 Un, que no escrigui el símbol que es podria pensar és el 1518 01:01:26,570 --> 01:01:27,390 més raonable. 1519 01:01:27,390 --> 01:01:30,110 Quan vulgui comprovar la igualtat, resulta que vostè no utilitzi el 1520 01:01:30,110 --> 01:01:30,910 signe igual. 1521 01:01:30,910 --> 01:01:34,000 En el seu lloc, utilitzeu el signe d'igual a igual. 1522 01:01:34,000 --> 01:01:36,440 I per què podria ser això, només intuïtivament? 1523 01:01:36,440 --> 01:01:37,030 Si. 1524 01:01:37,030 --> 01:01:39,330 AUDIÈNCIA: [inaudible] 1525 01:01:39,330 --> 01:01:39,615 DAVID J. Malan: Correcte. 1526 01:01:39,615 --> 01:01:41,630 El signe igual s'utilitza ja per a l'assignació. 1527 01:01:41,630 --> 01:01:43,020 Algú realment no pensar en això. 1528 01:01:43,020 --> 01:01:45,820 I ara, quan es tracta de proves d'igualtat, hem de 1529 01:01:45,820 --> 01:01:48,850 ser més explícit, i dir igual a igual. 1530 01:01:48,850 --> 01:01:52,110 Un error molt comú és fer això. 1531 01:01:52,110 --> 01:01:54,800 I, si en horari d'oficina o una setmana en algun lloc o al 1532 01:01:54,800 --> 01:01:58,340 pròximes dues setmanes es fa alguna cosa com això i després 1533 01:01:58,340 --> 01:02:00,920 lluitar amb ell durant 10 a 20 minuts tractant d'esbrinar 1534 01:02:00,920 --> 01:02:03,330 el que la bestiola maleït és, adonar-se que vostè és un dels 1535 01:02:03,330 --> 01:02:04,470 persones que van fer aquest error. 1536 01:02:04,470 --> 01:02:06,030 Per tant, molt fàcil de fer. 1537 01:02:06,030 --> 01:02:08,240 Però l'objectiu ara és evitar aquest error. 1538 01:02:08,240 --> 01:02:11,840 Això podria avaluar, perquè el que s'està dient en realitat? 1539 01:02:11,840 --> 01:02:15,010 Si n es fa 42. 1540 01:02:15,010 --> 01:02:18,250 Així que la gent verb usar, verbalment, per expressar el 1541 01:02:18,250 --> 01:02:21,800 concepte d'assignació és "aconsegueix". Així que si n es fa 42. 1542 01:02:21,800 --> 01:02:24,060 Així que això significa assignar 42 a núm. 1543 01:02:24,060 --> 01:02:26,250 Ara tinc una expressió booleana entre parèntesis, 1544 01:02:26,250 --> 01:02:30,230 dins d'aquesta condició, el valor del qual és 42. 1545 01:02:30,230 --> 01:02:30,390 ¿És cert? 1546 01:02:30,390 --> 01:02:32,690 Perquè si ho avaluarà de dins cap a fora, el total 1547 01:02:32,690 --> 01:02:34,100 resposta, ara, és de 42. 1548 01:02:34,100 --> 01:02:37,360 >> Així que si vostè va fer la pregunta, "si (42)," el que és 1549 01:02:37,360 --> 01:02:38,410 que realment està dient? 1550 01:02:38,410 --> 01:02:40,990 Doncs bé, les expressions booleanes només poden ser veritables o falses. 1551 01:02:40,990 --> 01:02:42,010 1 o 0. 1552 01:02:42,010 --> 01:02:43,010 Activat o desactivat. 1553 01:02:43,010 --> 01:02:45,240 Així que sembla que tenim aquí un cas de cantonada, en el qual tots d'una 1554 01:02:45,240 --> 01:02:50,060 sobtat, estic dient "si (42)". Això no és un valor booleà. 1555 01:02:50,060 --> 01:02:54,500 Llavors, què fan les computadores, però, és que essencialment equival 1556 01:02:54,500 --> 01:02:58,620 res que no sigui 0 s'interpreta per ser veritat. 1557 01:02:58,620 --> 01:02:59,340 1. 1558 01:02:59,340 --> 01:02:59,690 On. 1559 01:02:59,690 --> 01:03:01,510 Tots són funcionalment equivalents. 1560 01:03:01,510 --> 01:03:05,070 Només el valor 0, la paraula clau o fals, com veurem 1561 01:03:05,070 --> 01:03:07,860 finalment veure, en realitat és falsa. 1562 01:03:07,860 --> 01:03:15,040 Així que "si (42)" en realitat seria veritat, perquè és diferent de zero. 1563 01:03:15,040 --> 01:03:18,620 Així que per ser més precisos aquí, un valor booleà no és realment tan 1564 01:03:18,620 --> 01:03:20,680 Cert o fals, però per aquest 1565 01:03:20,680 --> 01:03:24,650 cas, si és 0 o diferent de zero. 1566 01:03:24,650 --> 01:03:26,330 Així falsa o no falsa. 1567 01:03:26,330 --> 01:03:28,640 I això ens permet abastar tant més 1568 01:03:28,640 --> 01:03:30,980 possibilitats en l'expressió entre parèntesis. 1569 01:03:30,980 --> 01:03:33,840 Així tenim que, amb tanta precaució, dir això - 1570 01:03:33,840 --> 01:03:35,620 si (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Simplement perquè hem de especificar una prova de la igualtat, 1572 01:03:39,100 --> 01:03:40,930 no una assignació d'un valor. 1573 01:03:40,930 --> 01:03:42,830 >> Quina altra cosa és la pena assenyalar aquí? 1574 01:03:42,830 --> 01:03:46,030 Aquestes claus no són realment necessaris. 1575 01:03:46,030 --> 01:03:48,650 He estat fent només per ser volgués filar prim primmirat aquí. 1576 01:03:48,650 --> 01:03:51,350 Però quan vostè té una condició que només té una línia de 1577 01:03:51,350 --> 01:03:55,100 codi, per motius de comoditat, els programadors no és necessari utilitzar 1578 01:03:55,100 --> 01:03:56,030 les claus. 1579 01:03:56,030 --> 01:03:59,370 N'hi ha prou simplement guió, per raons estètiques, i 1580 01:03:59,370 --> 01:04:01,050 a continuació, escriure la línia de codi. 1581 01:04:01,050 --> 01:04:04,160 Només quan es vol escriure dues línies de codi - per 1582 01:04:04,160 --> 01:04:08,230 exemple, else printf ("Adéu!"). Si vostè vol fer 1583 01:04:08,230 --> 01:04:09,540 que, no funciona. 1584 01:04:09,540 --> 01:04:11,700 Pot sagnar tot el que vulguis, però el fet que té 1585 01:04:11,700 --> 01:04:14,600 escriure dues línies de codi sense necessitat d'utilitzar claus 1586 01:04:14,600 --> 01:04:16,860 significa que aquest programa no s'executa correctament o podria 1587 01:04:16,860 --> 01:04:18,530 Ni tan sols compilar correctament. 1588 01:04:18,530 --> 01:04:21,040 Així que per ara, per ser honest, crec que el millor hàbit és només 1589 01:04:21,040 --> 01:04:24,460 utilitzar les claus, i t'adonaràs que fan 1590 01:04:24,460 --> 01:04:25,750 súper clar el que està passant. 1591 01:04:25,750 --> 01:04:29,410 >> També, com un part - especialment si vostè està entre aquells que utilitzen 1592 01:04:29,410 --> 01:04:31,700 els llibres recomanats o recursos en línia - 1593 01:04:31,700 --> 01:04:33,480 adonar-se que existeix aquesta noció d'estil en 1594 01:04:33,480 --> 01:04:34,130 programació. 1595 01:04:34,130 --> 01:04:37,280 I algunes persones prefereixen posar la clau de tancament 1596 01:04:37,280 --> 01:04:38,720 aquí en una línia. 1597 01:04:38,720 --> 01:04:41,520 Hi ha qui prefereix fer coses ridícules, 1598 01:04:41,520 --> 01:04:43,830 com posar aquí. 1599 01:04:43,830 --> 01:04:45,140 No hi ha una resposta equivocada a l'hora de 1600 01:04:45,140 --> 01:04:46,710 estil, però això és incorrecte. 1601 01:04:46,710 --> 01:04:47,700 No obstant això, algunes persones ho fan. 1602 01:04:47,700 --> 01:04:49,160 [Rialles] 1603 01:04:49,160 --> 01:04:51,760 DAVID J. Malan: Així que parlar d'això ara, simplement perquè com 1604 01:04:51,760 --> 01:04:54,400 llegir sobre coses en els llibres o en línia, vostè va a obtenir 1605 01:04:54,400 --> 01:04:55,990 diferents missatges de diferents mestres i 1606 01:04:55,990 --> 01:04:56,730 diferents autors. 1607 01:04:56,730 --> 01:04:58,640 I només s'adonen que, funcionalment, són 1608 01:04:58,640 --> 01:05:00,740 generalment equivalent, però sigui constant. 1609 01:05:00,740 --> 01:05:02,850 Així que en aquest cas, anem a normalitzar l'arrissat 1610 01:05:02,850 --> 01:05:04,650 claus alineant aquí a l'esquerra. 1611 01:05:04,650 --> 01:05:04,910 >> Està bé. 1612 01:05:04,910 --> 01:05:07,040 Així que seguirem endavant ara i executar-lo, i veure què passa 1613 01:05:07,040 --> 01:05:07,780 amb aquest programa. 1614 01:05:07,780 --> 01:05:09,970 Fer nonswitch. 1615 01:05:09,970 --> 01:05:11,040 A continuació, executeu nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Dóna'm un nombre enter entre 0 i - pel que no és rellevant 1617 01:05:13,900 --> 01:05:16,480 més, però jo només diré arbitràriament 42. 1618 01:05:16,480 --> 01:05:17,850 I he triat la resposta correcta. 1619 01:05:17,850 --> 01:05:20,430 Bé, en realitat prendrem això en una direcció diferent. 1620 01:05:20,430 --> 01:05:22,070 Resulta que hi ha una mica d'una altra sintaxi que 1621 01:05:22,070 --> 01:05:23,480 pot utilitzar en un programa. 1622 01:05:23,480 --> 01:05:27,310 Heus aquí una nova peça de sintaxi que és funcionalment el mateix, 1623 01:05:27,310 --> 01:05:30,680 però només introdueix una altra manera d'expressar-nos. 1624 01:05:30,680 --> 01:05:32,830 Així que això és el que es coneix com "declaració de canvi". I un 1625 01:05:32,830 --> 01:05:34,820 declaració interruptor funciona com segueix. 1626 01:05:34,820 --> 01:05:37,580 Cal, entre parèntesis, el valor que voleu 1627 01:05:37,580 --> 01:05:38,860 "Interruptor" on. 1628 01:05:38,860 --> 01:05:41,490 Vostè vol comportar-se de manera diferent en funció del seu valor. 1629 01:05:41,490 --> 01:05:44,360 Per tant això vol dir que l'interruptor en el valor de n. 1630 01:05:44,360 --> 01:05:45,480 I què vol dir això? 1631 01:05:45,480 --> 01:05:50,530 Bé, si n és 1 o 2 o 3, endavant i imprimir "Vostè 1632 01:05:50,530 --> 01:05:52,680 triat un nombre gran "i després trencar. 1633 01:05:52,680 --> 01:05:55,720 La raó de la ruptura és que la forma C és com funciona 1634 01:05:55,720 --> 01:05:59,790 aviat com es troba un cas que coincideix, comença l'execució 1635 01:05:59,790 --> 01:06:01,610 tot el codi sota d'ella. 1636 01:06:01,610 --> 01:06:04,580 Així que si tinc una línia de codi, com ho faig aquí a la línia 27, es 1637 01:06:04,580 --> 01:06:05,360 és executat. 1638 01:06:05,360 --> 01:06:07,520 Si afegeixo una altra línia aquí, el fitxer és executat. 1639 01:06:07,520 --> 01:06:09,350 Una altra línia aquí, el fitxer és executat. 1640 01:06:09,350 --> 01:06:12,460 El programa només deixa d'executar el que està per sota de la 1641 01:06:12,460 --> 01:06:14,680 declaració de cas aplicable quan explícitament 1642 01:06:14,680 --> 01:06:17,210 dir "trencar". Tan malament. 1643 01:06:17,210 --> 01:06:19,220 Dreta, en aquest cas, com a conseqüència d'això. 1644 01:06:19,220 --> 01:06:22,130 4 Cas o 5 o 6, de manera similar, va 1645 01:06:22,130 --> 01:06:23,160 per imprimir un missatge. 1646 01:06:23,160 --> 01:06:24,410 En aquest cas, el nombre mitjà. 1647 01:06:24,410 --> 01:06:25,200 Salt. 1648 01:06:25,200 --> 01:06:28,160 Cas 7, 8, 9, 10, que voleu imprimir "vas triar un gran 1649 01:06:28,160 --> 01:06:28,950 nombre. "Break. 1650 01:06:28,950 --> 01:06:31,290 I després hi ha, literalment, una paraula clau denominada "default" 1651 01:06:31,290 --> 01:06:34,090 que és eficaç com el "altre" constructe. 1652 01:06:34,090 --> 01:06:36,010 Així nova sintaxi, però intel · lectualment, 1653 01:06:36,010 --> 01:06:37,060 res de nou aquí. 1654 01:06:37,060 --> 01:06:38,280 És com el Scratch. 1655 01:06:38,280 --> 01:06:41,040 Si, en cas contrari si, en cas contrari si, tipus de bloc. 1656 01:06:41,040 --> 01:06:44,560 >> Així que aquesta és la versió commutada d'aquest programa. 1657 01:06:44,560 --> 01:06:46,280 Però noti que ho vam fer amb nombres aquí. 1658 01:06:46,280 --> 01:06:49,040 Permetin-me obrir una segona versió, només per mostrar 1659 01:06:49,040 --> 01:06:50,670 una cosa una mica més concret. 1660 01:06:50,670 --> 01:06:52,840 Així que aquí tenim graus en el seu lloc. 1661 01:06:52,840 --> 01:06:55,540 Resulta que es pot utilitzar switches no només en nombres enters, però en 1662 01:06:55,540 --> 01:06:56,340 personatges. 1663 01:06:56,340 --> 01:06:58,930 No en tots els tipus de dades, però almenys en caràcters. 1664 01:06:58,930 --> 01:07:02,670 Així que aquí, podríem fer alguna cosa com si el valor de C que 1665 01:07:02,670 --> 01:07:06,230 l'usuari va escriure, en la línia 19, amb la funció GetChar, 1666 01:07:06,230 --> 01:07:09,410 és majúscula o minúscula a, anem a interpretar com una qualificació, 1667 01:07:09,410 --> 01:07:11,340 i diuen que va recollir una qualificació excel · lent. 1668 01:07:11,340 --> 01:07:14,690 I a baix al llarg de la instrucció switch, tenim un altre 1669 01:07:14,690 --> 01:07:17,950 casos de "B" s i "C" s, i així successivament. 1670 01:07:17,950 --> 01:07:19,780 Però ara anem a completar una altra cosa. 1671 01:07:19,780 --> 01:07:21,130 I de nou, una mena de volar a través de 1672 01:07:21,130 --> 01:07:22,200 alguns d'aquests exemples. 1673 01:07:22,200 --> 01:07:26,990 Però en realitat és perquè puguem aplicar-les, ara - 1674 01:07:26,990 --> 01:07:28,880 o en realitat, només ha de traduir ara - 1675 01:07:28,880 --> 01:07:32,220 a C. 1676 01:07:32,220 --> 01:07:33,310 >> Així que permetin-me anar endavant i fer-ho. 1677 01:07:33,310 --> 01:07:34,830 Vaig a obrir un nou arxiu. 1678 01:07:34,830 --> 01:07:39,430 I jo faré include. 1679 01:07:39,430 --> 01:07:42,770 I després em vaig a fer int main (void). 1680 01:07:42,770 --> 01:07:46,390 Deixa guardar aquest arxiu com una loop.c. 1681 01:07:46,390 --> 01:07:48,280 Només com un exemple. 1682 01:07:48,280 --> 01:07:49,910 I seguiré endavant i fer el següent. 1683 01:07:49,910 --> 01:07:54,180 Vull escriure un programa molt tediós. 1684 01:07:54,180 --> 01:07:56,170 Així 10. 1685 01:07:56,170 --> 01:07:58,862 Anem a fer això. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 Està bé. 1688 01:08:00,360 --> 01:08:02,120 Així que vostè comenci a fer-ho a la programació, vostè és 1689 01:08:02,120 --> 01:08:03,490 probablement fent alguna cosa malament. 1690 01:08:03,490 --> 01:08:04,950 Però anem a començar per aquí de totes maneres. 1691 01:08:04,950 --> 01:08:05,430 Oops. 1692 01:08:05,430 --> 01:08:06,950 Això és realment dolent. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Res del que passarà quan arribem a 0. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 1. 1701 01:08:15,630 --> 01:08:16,020 Bé. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Elimina. 1704 01:08:18,689 --> 01:08:19,029 >> Està bé. 1705 01:08:19,029 --> 01:08:20,029 Així que tornarà 0. 1706 01:08:20,029 --> 01:08:22,010 Així que aquest programa és, òbviament, farà el mateix 1707 01:08:22,010 --> 01:08:23,310 tediosament diu que farà. 1708 01:08:23,310 --> 01:08:24,060 Es va a imprimir tots els 1709 01:08:24,060 --> 01:08:25,290 valors, de dalt a baix. 1710 01:08:25,290 --> 01:08:27,140 Així que em fan bucle. 1711 01:08:27,140 --> 01:08:28,640 I llavors - crits. 1712 01:08:28,640 --> 01:08:29,700 Fer circular. 1713 01:08:29,700 --> 01:08:31,479 Jo era al directori equivocat. 1714 01:08:31,479 --> 01:08:33,300 I ara m'ho dius a mi córrer bucle. 1715 01:08:33,300 --> 01:08:34,140 Retorn. 1716 01:08:34,140 --> 01:08:34,620 Woohoo. 1717 01:08:34,620 --> 01:08:35,270 Molt bonic. 1718 01:08:35,270 --> 01:08:36,279 Programa Niça, molt de temps. 1719 01:08:36,279 --> 01:08:38,109 >> Està bé, però ara farem això millor. 1720 01:08:38,109 --> 01:08:40,810 Igual que en Scratch, quan va començar a utilitzar un bucle 1721 01:08:40,810 --> 01:08:43,149 construir, en comptes de copiar i enganxar tota la 1722 01:08:43,149 --> 01:08:45,580 peces d'un trencaclosques, permetin-me presentar a aquesta cosa. 1723 01:08:45,580 --> 01:08:48,609 Així que en C, hi ha diverses construccions de bucles, 1724 01:08:48,609 --> 01:08:50,540 un dels quals té aquest aspecte. 1725 01:08:50,540 --> 01:08:55,069 Un bucle "for" té tres coses, separats per dos punts i comes. 1726 01:08:55,069 --> 01:08:57,770 I, a continuació, a l'interior del cos del bucle, per dir-ho - la 1727 01:08:57,770 --> 01:08:59,390 coses dins de les claus - 1728 01:08:59,390 --> 01:09:01,010 podem fer alguna cosa una i altra vegada. 1729 01:09:01,010 --> 01:09:02,310 Així que el que tenim aquí a la pantalla, és a dir 1730 01:09:02,310 --> 01:09:03,300 literalment, només un comentari. 1731 01:09:03,300 --> 01:09:05,380 El / / significa aquí ve un comentari. 1732 01:09:05,380 --> 01:09:06,180 Aquest no és el codi. 1733 01:09:06,180 --> 01:09:08,890 Això és només descripció d'Anglès, per a mi, l'ésser humà. 1734 01:09:08,890 --> 01:09:11,300 >> Així inicialitzacions, condicions i actualitzacions. 1735 01:09:11,300 --> 01:09:12,770 Bé, anem a veure com funciona això. 1736 01:09:12,770 --> 01:09:15,520 Això em permet reescriure el programa de la següent manera. 1737 01:09:15,520 --> 01:09:16,399 For - 1738 01:09:16,399 --> 01:09:18,029 així que aquí ve la meva loop - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 aquí ve una variable anomenada "i" - 1741 01:09:21,330 --> 01:09:23,140 s'inicialitza a 10. 1742 01:09:23,140 --> 01:09:25,260 Així que aquí està la meva inicialització. 1743 01:09:25,260 --> 01:09:29,450 Vull fer aquest circuit tan llarg com "i" és major o 1744 01:09:29,450 --> 01:09:30,899 igual a 0. 1745 01:09:30,899 --> 01:09:32,880 I en cada iteració d'aquest bucle, vull 1746 01:09:32,880 --> 01:09:34,979 cal fer? -. 1747 01:09:34,979 --> 01:09:36,310 Així que vam veure + + dilluns. 1748 01:09:36,310 --> 01:09:37,660 - És l'oposat. 1749 01:09:37,660 --> 01:09:39,410 Es redueix el valor d'1. 1750 01:09:39,410 --> 01:09:43,319 Dins d'aquest cicle, el que vull fer realment alguna cosa. 1751 01:09:43,319 --> 01:09:46,390 Així que vaig a dir alguna cosa com printf. 1752 01:09:46,390 --> 01:09:48,939 No vull dir que 10 ara, perquè això òbviament és 1753 01:09:48,939 --> 01:09:50,000 d'imprimir el mateix valor. 1754 01:09:50,000 --> 01:09:52,246 Què és el que vull imprimir en canvi, probablement? 1755 01:09:52,246 --> 01:09:52,590 Si. 1756 01:09:52,590 --> 01:09:55,270 Així que "i". Així que% d, i. 1757 01:09:55,270 --> 01:09:57,340 >> Així que em vaig a robar una d'aquestes idees d'abans - 1758 01:09:57,340 --> 01:09:59,640 aquesta substitució de codis de format - 1759 01:09:59,640 --> 01:10:01,620 i aquí baix, en el fons, vaig a tornar 0, només 1760 01:10:01,620 --> 01:10:02,710 per si de cas. 1761 01:10:02,710 --> 01:10:04,740 Però ara, tinc un programa més succinta. 1762 01:10:04,740 --> 01:10:07,490 No és més que unes poques línies, i algunes línies no 10 o 11. 1763 01:10:07,490 --> 01:10:09,440 Deixa sortir el meu missatge aquí. 1764 01:10:09,440 --> 01:10:10,630 Remake bucle. 1765 01:10:10,630 --> 01:10:12,140 Torneu a executar el bucle. 1766 01:10:12,140 --> 01:10:13,570 I el que sembla ser la mateixa. 1767 01:10:13,570 --> 01:10:15,550 Ara, el programa no és més interessant. 1768 01:10:15,550 --> 01:10:17,180 Però ara puc escriure alguna cosa com això. 1769 01:10:17,180 --> 01:10:18,970 Jo puc canviar això a 100. 1770 01:10:18,970 --> 01:10:21,400 Després pot tornar a compilar el meu programa. 1771 01:10:21,400 --> 01:10:23,360 I llavors puc tornar a executar el meu programa. 1772 01:10:23,360 --> 01:10:26,390 I ara va super ràpid en els ordinadors d'avui en dia. 1773 01:10:26,390 --> 01:10:27,820 Però no tinc - 1774 01:10:27,820 --> 01:10:29,620 i, de fet, la meva memòria de retrocés no 1775 01:10:29,620 --> 01:10:30,890 fins i tot anar tan lluny. 1776 01:10:30,890 --> 01:10:31,680 Aquí anem. 1777 01:10:31,680 --> 01:10:34,090 Així que aquí tenim tot 100. 1778 01:10:34,090 --> 01:10:35,880 Però és fàcil cometre errors aquí. 1779 01:10:35,880 --> 01:10:37,920 Quin serà el comportament esperat si 1780 01:10:37,920 --> 01:10:41,150 accidentalment fer això? 1781 01:10:41,150 --> 01:10:42,550 Així que se sent com infinit. 1782 01:10:42,550 --> 01:10:44,670 Així que anem a veure si l'equip es comporta. 1783 01:10:44,670 --> 01:10:47,020 >> Així que permetin-me anar endavant i fer bucle. 1784 01:10:47,020 --> 01:10:48,355 I m'ho dius a mi córrer bucle. 1785 01:10:53,590 --> 01:10:55,210 Així que anem a tornar a això en un moment. 1786 01:10:55,210 --> 01:10:56,720 Anem a deixar que aquesta execució. 1787 01:10:56,720 --> 01:10:59,520 Perquè el que hem de comptar, com a mínim? 1788 01:10:59,520 --> 01:11:02,200 És probable que almenys 2 milions de dòlars, si hem de molts bits, i 1789 01:11:02,200 --> 01:11:03,660 estem utilitzant valors positius. 1790 01:11:03,660 --> 01:11:04,890 Així que anem a tornar aquí. 1791 01:11:04,890 --> 01:11:07,810 Davant aquest tipus de bucles, tenim el que s'anomena temps 1792 01:11:07,810 --> 01:11:09,430 bucles. Per tant, igual que en Scratch, vostè tenia sempre 1793 01:11:09,430 --> 01:11:11,240 blocs, blocs i havies de repetir. 1794 01:11:11,240 --> 01:11:13,270 De la mateixa manera, al carrer, només hi ha altres maneres 1795 01:11:13,270 --> 01:11:14,260 d'expressar-se. 1796 01:11:14,260 --> 01:11:17,110 Pel que té aquesta noció d'un bucle while que li permet 1797 01:11:17,110 --> 01:11:18,860 expressar-se de manera diferent. 1798 01:11:18,860 --> 01:11:21,490 I després hi ha una cosa que es diu un bucle do-while, 1799 01:11:21,490 --> 01:11:24,200 que funciona lleugerament diferent també. 1800 01:11:24,200 --> 01:11:25,320 I anem a molestar aquests a part amb el temps. 1801 01:11:25,320 --> 01:11:28,630 >> Però donem una ullada a aquest últim aquí. 1802 01:11:28,630 --> 01:11:30,160 Si entrem en - 1803 01:11:30,160 --> 01:11:31,466 segueix funcionant. 1804 01:11:31,466 --> 01:11:32,770 És bastant infinita. 1805 01:11:32,770 --> 01:11:36,870 Així que permetin-me anar en positiu, i mostrar com podem realment 1806 01:11:36,870 --> 01:11:39,410 governen l'entrada de l'usuari una mica més eficaç. 1807 01:11:39,410 --> 01:11:40,910 És un programa bastant curt. 1808 01:11:40,910 --> 01:11:43,730 I aquí tenim, en principal, una declaració int n. 1809 01:11:43,730 --> 01:11:46,570 Així que dóna'm una variable anomenada núm. Ara, jo dic literalment 1810 01:11:46,570 --> 01:11:48,340 "Fer". I després tinc obert arrissat 1811 01:11:48,340 --> 01:11:49,630 abraçadora, clau de tancament prop. 1812 01:11:49,630 --> 01:11:52,000 I després es dóna compte, després d'això, es diu que encara n 1813 01:11:52,000 --> 01:11:53,790 és menor que 1. 1814 01:11:53,790 --> 01:11:55,300 Així notar que aquestes línies - 1815 01:11:55,300 --> 01:11:56,740 19-24 - 1816 01:11:56,740 --> 01:11:59,450 redactar col · lectivament un bucle do-while. 1817 01:11:59,450 --> 01:12:01,280 I de nou, la sintaxi nova, no és una idea nova. 1818 01:12:01,280 --> 01:12:03,740 És només una altra forma de bucle, sintàcticament. 1819 01:12:03,740 --> 01:12:04,890 Llavors, què fa això? 1820 01:12:04,890 --> 01:12:08,000 Fer el següent mentre que n és menor que 1. 1821 01:12:08,000 --> 01:12:09,080 Llavors, què és el que vull fer? 1822 01:12:09,080 --> 01:12:11,390 Exigeixo que em donis un enter positiu. 1823 01:12:11,390 --> 01:12:14,110 Llavors jo realment tractar d'obtenir un nombre sencer de l'usuari. 1824 01:12:14,110 --> 01:12:16,740 Però en termes de l'ordre de les operacions aquí, pel fet que el 1825 01:12:16,740 --> 01:12:21,850 mentre condició és aquí, llavors em va a comprovar, és n 1826 01:12:21,850 --> 01:12:23,100 menys d'1? 1827 01:12:23,100 --> 01:12:24,600 Així que suposem que l'usuari - 1828 01:12:24,600 --> 01:12:26,450 després de ser exigit d'aquesta manera - 1829 01:12:26,450 --> 01:12:29,190 tipus en el valor 0. 1830 01:12:29,190 --> 01:12:34,510 Aquesta condició serà vertadera o falsa? 1831 01:12:34,510 --> 01:12:35,820 Bé, en realitat serà veritat. 1832 01:12:35,820 --> 01:12:38,700 Atès que n és 0, i 0 és menor que 1. 1833 01:12:38,700 --> 01:12:40,140 Llavors, què implica això? 1834 01:12:40,140 --> 01:12:41,160 Fes-ho de nou. 1835 01:12:41,160 --> 01:12:41,990 Fes-ho de nou. 1836 01:12:41,990 --> 01:12:42,640 Fes-ho de nou. 1837 01:12:42,640 --> 01:12:46,080 Només una vegada que la condició s'avalua com false. 1838 01:12:46,080 --> 01:12:47,510 Si escric en 42. 1839 01:12:47,510 --> 01:12:49,690 Doncs no, 42 no és menor que 1. 1840 01:12:49,690 --> 01:12:52,320 Per tant, aquest bucle es realitza executant. 1841 01:12:52,320 --> 01:12:54,650 I així, en aquest moment, el programa dirà, gràcies per 1842 01:12:54,650 --> 01:12:57,530 el 42, en aquest cas. 1843 01:12:57,530 --> 01:13:00,320 Ara que té aquesta forma d'expressar - 1844 01:13:00,320 --> 01:13:02,360 No hem d'esperar que això acabi. 1845 01:13:02,360 --> 01:13:03,620 Va a portar el seu temps. 1846 01:13:03,620 --> 01:13:04,990 Continuarà la propera vegada, potser. 1847 01:13:04,990 --> 01:13:08,050 >> Però ara, vostè té la capacitat d'entendre una mena 1848 01:13:08,050 --> 01:13:09,060 poc d'humor geek. 1849 01:13:09,060 --> 01:13:11,560 Disculpes. 1850 01:13:11,560 --> 01:13:13,620 Això no és representatiu d'humor en la ciència de la computació 1851 01:13:13,620 --> 01:13:14,870 món, però és valent. 1852 01:13:21,020 --> 01:13:23,890 Final [rialles] Anem en aquesta nota. 1853 01:13:23,890 --> 01:13:25,750 I ens veiem el dilluns. 1854 01:13:25,750 --> 01:13:31,629 [Aplaudiments]