1 00:00:00,000 --> 00:00:12,410 >> [Reproducció de música] 2 00:00:12,410 --> 00:00:12,830 >> DAVID Malan: Molt bé. 3 00:00:12,830 --> 00:00:13,370 Benvingut de nou. 4 00:00:13,370 --> 00:00:16,510 Aquesta és CS50, i això és Setmana Un, Continuació. 5 00:00:16,510 --> 00:00:20,050 Així que una de les raons per les quals hem estat passant al voltant de tecnologies com 6 00:00:20,050 --> 00:00:24,120 Google Glass és que vénen amb una cosa que es coneix com una API, un 7 00:00:24,120 --> 00:00:25,980 Interfície de programació d'aplicacions. 8 00:00:25,980 --> 00:00:28,830 I el que això significa és que amb la arxius adequats i elegibles 9 00:00:28,830 --> 00:00:32,850 documentació, en realitat es pot escriure programari per a dispositius fins i tot com aquests. 10 00:00:32,850 --> 00:00:36,200 >> I així, el que tenim en ment cap semestres final és, si un projecte 11 00:00:36,200 --> 00:00:39,310 que implica, per exemple, Google Glass podria apel · lació, ja veurem el que podem fer a 12 00:00:39,310 --> 00:00:42,220 termes d'enganxar cap amunt amb una mica de maquinari de préstec, així com la 13 00:00:42,220 --> 00:00:46,500 API d'accés públic, perquè pugui realment començar a crear programari 14 00:00:46,500 --> 00:00:48,630 que s'executa en el mateix Google Glass. 15 00:00:48,630 --> 00:00:51,710 >> Un altre dispositiu que hem estat jugant en els últims temps que pensem que podria ser 16 00:00:51,710 --> 00:00:53,910 diversió al final del semestre és aquesta petita cosa aquí. 17 00:00:53,910 --> 00:00:56,860 Es diu Leap Motion, i el que estem a punt de veure és tècnicament un 18 00:00:56,860 --> 00:01:00,280 anunci per al dispositiu, però no parlar del que aquest particular, 19 00:01:00,280 --> 00:01:01,240 dispositiu és capaç de fer. 20 00:01:01,240 --> 00:01:05,550 I és, també, ve amb un API a través d' que es pot escriure programari per 21 00:01:05,550 --> 00:01:10,545 controlar la seva pròpia ordinador de manera bastant com aquesta pel · lícula d'un minut aquí. 22 00:01:10,545 --> 00:01:12,070 >> [REPRODUIR VIDEO] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [FI REPRODUCCIÓ DE VÍDEO] 25 00:02:08,590 --> 00:02:11,190 >> Així que ara mateix, aquest dispositiu passa a ser implementat com un petit USB 26 00:02:11,190 --> 00:02:14,290 connector que es pot connectar al seu ordinador, però no em sorprendria 27 00:02:14,290 --> 00:02:17,930 si al poc temps que tenim aquest tipus de tecnologies en el següent lot de PC 28 00:02:17,930 --> 00:02:20,510 o Mac, perquè pugui, de fet, interactuar amb ell en 29 00:02:20,510 --> 00:02:21,650 una manera així. 30 00:02:21,650 --> 00:02:24,250 De fet, el que vaig pensar que ho faria, també, és Vaig acostar una petita demostració 31 00:02:24,250 --> 00:02:25,860 programa que ve amb aquest programari. 32 00:02:25,860 --> 00:02:28,700 Així que m'he posat el petit sensor davant meu portàtil. 33 00:02:28,700 --> 00:02:32,420 >> I com es pot veure, ja s'adona que la meva mà està aquí 34 00:02:32,420 --> 00:02:33,400 controlar-la. 35 00:02:33,400 --> 00:02:37,900 I tot el que fa l'aplicació és meravelles petites coses com aquesta. 36 00:02:37,900 --> 00:02:41,080 Però es pot veure que, en efecte, Tinc cinc dits allà. 37 00:02:41,080 --> 00:02:44,270 Si podem aconseguir que faci en els 10, es pot imaginar un piano net 38 00:02:44,270 --> 00:02:45,390 aplicació o similar. 39 00:02:45,390 --> 00:02:47,820 Així que si voleu arribar a partir de les classes avui i jugar amb el qual, com 40 00:02:47,820 --> 00:02:49,720 així, vostè és agradable. 41 00:02:49,720 --> 00:02:52,930 Per tant més que cap a fins del semestre. 42 00:02:52,930 --> 00:02:54,420 >> Així que un parell dels procediments administratius anuncis. 43 00:02:54,420 --> 00:02:58,690 Un d'ells, fan part d'aquest divendres al migdia a cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 Això URL està en el curs de pàgina d'inici també. 45 00:03:01,260 --> 00:03:04,010 En l'interval, però, supersections s'estrenarà aquest diumenge. 46 00:03:04,010 --> 00:03:07,800 Supersections són una cosa d'una sola vegada, perquè ens porta una mica de temps per treballar 47 00:03:07,800 --> 00:03:09,470 qui està en quina secció i on. 48 00:03:09,470 --> 00:03:12,280 >> Així que diumenge que ve, hi haurà una secció per als menys còmode, 49 00:03:12,280 --> 00:03:14,040 una secció per als més còmoda. 50 00:03:14,040 --> 00:03:16,110 I aquells de vostès en algun lloc entre els convidem a anar a 51 00:03:16,110 --> 00:03:17,850 qualsevol o tots dos o cap. 52 00:03:17,850 --> 00:03:19,150 Tots dos seran filmats. 53 00:03:19,150 --> 00:03:22,740 Van a estar en un auditori més gran que una secció normalment seria polz 54 00:03:22,740 --> 00:03:26,110 Però l'objectiu aquí és per equipar-lo amb una mica de consol amb el problema d'establir una, 55 00:03:26,110 --> 00:03:29,910 amb C, amb l'aparell CS50, aquest cap de setmana, fins i tot abans de saber que el seu 56 00:03:29,910 --> 00:03:31,050 assignació de la secció oficial. 57 00:03:31,050 --> 00:03:34,700 Així coneixeràs la TF i la més petita grup de sectionmates en al voltant 58 00:03:34,700 --> 00:03:36,350 temps d'una setmana. 59 00:03:36,350 --> 00:03:38,200 >> Les hores d'oficina, per la seva banda, han estat passant. 60 00:03:38,200 --> 00:03:41,020 No prendre avantatge d'ells aquesta nit o demà a la nit si vols. 61 00:03:41,020 --> 00:03:43,460 Problema setembre 0 venç el divendres. 62 00:03:43,460 --> 00:03:46,680 Aquest és un dia més tard de l' regularment programada dijous. 63 00:03:46,680 --> 00:03:50,410 Però amb el conjunt de problemes 1, veurà que inclou algunes d'escalfament 64 00:03:50,410 --> 00:03:52,770 exercicis amb els que tu mateix pot ampliar la seva 65 00:03:52,770 --> 00:03:54,660 Data límit dijous a divendres. 66 00:03:54,660 --> 00:03:58,410 Butlletí de problemes 1, per la seva banda, farà el seu debut a la pàgina web de l'assignatura el proper 67 00:03:58,410 --> 00:04:02,000 Divendres, si desitja arraulir amb com ho vaig fer alguna vegada tard 68 00:04:02,000 --> 00:04:04,370 Divendres a la nit a la seva habitació. 69 00:04:04,370 --> 00:04:07,660 >> Així cs50.net/appliance és el lloc on vostè pot aconseguir l'aparell CS50 70 00:04:07,660 --> 00:04:09,040 que vam començar a fer servir el dilluns. 71 00:04:09,040 --> 00:04:10,140 Utilitzarem una mica més avui. 72 00:04:10,140 --> 00:04:14,040 Però tingui la seguretat que el problema 1 setembre especificació us guiarà a través d' 73 00:04:14,040 --> 00:04:16,490 exactament els passos que ha de per aconseguir que la marxa i funcionant. 74 00:04:16,490 --> 00:04:22,120 Així que no es preocupi per fer-ho abans PSET 1 si vostè preferiria no fer-ho. 75 00:04:22,120 --> 00:04:22,660 >> Està bé. 76 00:04:22,660 --> 00:04:27,180 Així que busquem el dilluns al codi font, però en el context d'un nou 77 00:04:27,180 --> 00:04:30,895 llenguatge de programació, és a dir, C i C, a diferència d'Scratch, no és gràfica. 78 00:04:30,895 --> 00:04:32,270 No és Trencaclosques Pieces. 79 00:04:32,270 --> 00:04:34,450 És més Anglès-com sintaxi. 80 00:04:34,450 --> 00:04:37,140 I hi ha un parell de passos a seguir en realitat, l'escriptura i l'execució d'un 81 00:04:37,140 --> 00:04:41,650 programar en C, ja que a més de font codi com aquest, necessita alguna cosa 82 00:04:41,650 --> 00:04:42,890 anomenat un compilador. 83 00:04:42,890 --> 00:04:46,682 I en termes simples, el que Què fa un compilador per a nosaltres? 84 00:04:46,682 --> 00:04:47,650 Si. 85 00:04:47,650 --> 00:04:51,040 >> Estudiant: Converteix el codi que s'escriu en 0s i 1s. 86 00:04:51,040 --> 00:04:51,151 >> DAVID Malan: Good. 87 00:04:51,151 --> 00:04:53,580 Per tant, converteix el codi que ens dirigim a 0s i 1s. 88 00:04:53,580 --> 00:04:57,730 Es converteix així anomenat codi font a codi objecte, l'últim dels quals es veu 89 00:04:57,730 --> 00:04:59,140 una mica d'alguna cosa com això. 90 00:04:59,140 --> 00:05:02,860 I és que la seva CPU, els cervells dins l'equip, que a causa de la 91 00:05:02,860 --> 00:05:06,280 persones que van crear aquests equips, saber quines són aquestes seqüències 92 00:05:06,280 --> 00:05:07,460 de mitjana 0 i 1. 93 00:05:07,460 --> 00:05:08,640 >> Potser signifiqui impressió. 94 00:05:08,640 --> 00:05:10,265 Potser signifiqui addició. 95 00:05:10,265 --> 00:05:11,610 Potser signifiqui restar. 96 00:05:11,610 --> 00:05:13,350 Potser vol dir mostrar un gràfic. 97 00:05:13,350 --> 00:05:16,870 Hi ha patrons predefinits de bits que el món ha decidit dir 98 00:05:16,870 --> 00:05:17,700 certes coses. 99 00:05:17,700 --> 00:05:20,760 Però en la seva major part en aquest curs, anem a treballar en un nivell superior, i 100 00:05:20,760 --> 00:05:24,180 donarem per fet que hi ha coses com els compiladors que poden 101 00:05:24,180 --> 00:05:27,670 fer la nostra funció de codi font en la forma en què pretenem. 102 00:05:27,670 --> 00:05:31,660 >> Així que el programa que escrivim primer la setmana passada i després va començar a port, per així 103 00:05:31,660 --> 00:05:33,920 parlar, de C, el passat Dilluns, era això. 104 00:05:33,920 --> 00:05:35,700 Quan la bandera verda es fa clic, dir hola. 105 00:05:35,700 --> 00:05:37,430 Això va ser, per descomptat, escrit en zero. 106 00:05:37,430 --> 00:05:40,710 I va afirmar que l'equivalent programa en C es veia una mica 107 00:05:40,710 --> 00:05:41,520 alguna cosa com això. 108 00:05:41,520 --> 00:05:45,050 >> Així que el que vaig pensar que ho faríem en un primer moment és, anem a esmicolar el que sembla, en un primer moment 109 00:05:45,050 --> 00:05:48,790 vista, sens dubte, la forma més justa arcana sintaxi, però vostè començarà a notar 110 00:05:48,790 --> 00:05:50,160 patrons molt ràpidament. 111 00:05:50,160 --> 00:05:53,770 El que també farem avui és proporcionar que amb un model mental per a alguns 112 00:05:53,770 --> 00:05:57,280 canònica, algunes construccions estàndard en la programació. 113 00:05:57,280 --> 00:06:00,420 I després anem a realment a les nostres mans bruta amb alguns exemples, així. 114 00:06:00,420 --> 00:06:04,140 >> Així que per a aquells de vostès més còmode, adonar-se que aquesta setmana i després la següent 115 00:06:04,140 --> 00:06:05,940 setmana molt bé pot ser una mica d'opinió. 116 00:06:05,940 --> 00:06:08,810 Però, sobretot quan l'edició pirata del conjunt de problemes 1 surt a la 117 00:06:08,810 --> 00:06:12,330 Pàgina del curs el divendres, jo crec trobareu que fins i tot quan vostè completa 118 00:06:12,330 --> 00:06:15,390 alguns espais en blanc durant la propera setmana o dues, vostè començarà a apropar-se més 119 00:06:15,390 --> 00:06:18,410 desafiat i trobada nous i més recents les coses. 120 00:06:18,410 --> 00:06:21,310 >> Així que anem a burlen d'aquest programa, a banda unes poques línies alhora. 121 00:06:21,310 --> 00:06:24,140 A la part superior, tenim el que és tècnicament anomenat 122 00:06:24,140 --> 00:06:25,950 directiva de preprocessador. 123 00:06:25,950 --> 00:06:30,510 Això és només una línia de codi que diu per incloure el contingut d'un arxiu, 124 00:06:30,510 --> 00:06:35,080 anomenada I standard / N, entrada estàndard - o, ho sento, E / S estàndard, estàndard 125 00:06:35,080 --> 00:06:38,670 d'entrada / sortida,. h, a l'interior del meu propi programa. 126 00:06:38,670 --> 00:06:41,670 >> En altres paraules, si jo vaig escriure aquest programa amb un simple editor de text com 127 00:06:41,670 --> 00:06:45,260 gedit, l'equivalent més simple de alguna cosa així com Microsoft Word, que 128 00:06:45,260 --> 00:06:50,970 instrucció # include stdio.h, és només vaig a dir que el compilador, pren la 129 00:06:50,970 --> 00:06:56,080 contingut d'aquest altre arxiu, stdio.h, i enganxar-los aquí. 130 00:06:56,080 --> 00:06:57,090 >> Ara, per què m'importa? 131 00:06:57,090 --> 00:07:01,850 Què va ser el que diem que hi ha dins d'aquest arxiu anomenat stdio.h, que s'emmagatzema 132 00:07:01,850 --> 00:07:05,490 en algun lloc del meu disc dur, o en aquest cas, en l'aparell CS50 en algun lloc? 133 00:07:05,490 --> 00:07:06,635 Algú el va posar allà per a mi. 134 00:07:06,635 --> 00:07:09,910 Però, ¿què hi ha dins? 135 00:07:09,910 --> 00:07:13,020 >> Sí, pel que és una declaració de una funció anomenada printf. 136 00:07:13,020 --> 00:07:17,400 Així printf recorda la funció que mostra paraules i caràcters i 137 00:07:17,400 --> 00:07:20,160 nombres a la pantalla a les meves ordres. 138 00:07:20,160 --> 00:07:21,220 Però jo no el vaig escriure. 139 00:07:21,220 --> 00:07:22,230 CS50 no el va escriure. 140 00:07:22,230 --> 00:07:26,990 Fa anys algú va escriure, i que bàsicament ens va donar la recepta perquè 141 00:07:26,990 --> 00:07:29,110 en un arxiu anomenat stdio.h. 142 00:07:29,110 --> 00:07:33,240 Així que la primera línia just em dóna accés a les funcions que una altra persona 143 00:07:33,240 --> 00:07:36,500 va escriure fa anys, entre que són printf. 144 00:07:36,500 --> 00:07:39,450 >> Ara, la línia següent que vaig a moure el meu mà, almenys fins la setmana vinent. 145 00:07:39,450 --> 00:07:43,620 Però per ara, saber que int main (void) és essencialment l'equivalent d'aquesta 146 00:07:43,620 --> 00:07:46,310 peça del trencaclosques groc quan bandera verda clic. 147 00:07:46,310 --> 00:07:49,510 El món, fa anys, va decidir que si vostè està escrivint un programa en 148 00:07:49,510 --> 00:07:53,150 llenguatge anomenat C, s'inicia el seu programa amb una línia 149 00:07:53,150 --> 00:07:54,410 que s'assembla a això. 150 00:07:54,410 --> 00:07:57,650 En gairebé una setmana, que farà sentit del que és int, el que és nul · la. 151 00:07:57,650 --> 00:08:00,840 Però per ara, només pensar-hi ja que aquesta peça del trencaclosques groc. 152 00:08:00,840 --> 00:08:04,550 >> Ara banda, tenim un claudàtor seguit per l'altra clau de tancament, 153 00:08:04,550 --> 00:08:05,240 per dir-ho. 154 00:08:05,240 --> 00:08:07,430 I veurem al llarg d'aquests programes en C, així com 155 00:08:07,430 --> 00:08:08,930 JavaScript i PHP. 156 00:08:08,930 --> 00:08:11,345 I aquests només encapsulen línies relacionades de codi. 157 00:08:11,345 --> 00:08:14,600 La clau d'obertura essencialment diu, aquí ve una mica de codi. 158 00:08:14,600 --> 00:08:17,590 I la clau de tancament tancat, que és en angle en l'altra direcció, només 159 00:08:17,590 --> 00:08:19,920 mitjans, això és tot per el codi corresponent. 160 00:08:19,920 --> 00:08:22,970 >> Així que la sucosa en aquesta primera programa és l'últim, printf, 161 00:08:22,970 --> 00:08:25,080 entre cometes, hola món. 162 00:08:25,080 --> 00:08:30,670 I vaig trucar a la que hi ha entre cita el que l'última vegada? 163 00:08:30,670 --> 00:08:31,285 Així que és una cadena. 164 00:08:31,285 --> 00:08:35,309 I una cadena és només l'aficionat a la tecnologia termini per a una seqüència de 165 00:08:35,309 --> 00:08:37,169 personatges, una paraula, una frase. 166 00:08:37,169 --> 00:08:39,380 Fins i tot una sola carta podria ser el doble de cometes. 167 00:08:39,380 --> 00:08:41,840 Però és una seqüència de zero o més caràcters. 168 00:08:41,840 --> 00:08:43,650 >> Backslash-n, però, es veu una mica estrany. 169 00:08:43,650 --> 00:08:46,290 Però simplement significava alguna cosa senzilla a l'ordinador. 170 00:08:46,290 --> 00:08:48,060 Què hi ha barra invertida-n? 171 00:08:48,060 --> 00:08:48,570 Nova línia. 172 00:08:48,570 --> 00:08:52,490 Així que això és només la seqüència especial d' personatges que el món ha decidit 173 00:08:52,490 --> 00:08:56,880 significa posar un salt de línia just aquí, perquè el compilador aconseguir realment 174 00:08:56,880 --> 00:09:02,280 confús, en general, si, molt és comprensible, però de forma incorrecta, tal 175 00:09:02,280 --> 00:09:04,570 comença a colpejar Enter per posar noves línies en el seu codi. 176 00:09:04,570 --> 00:09:07,150 Has de ser una mica més explícita amb barra invertida-n. 177 00:09:07,150 --> 00:09:10,540 >> I veurem que hi ha alguns altres tals patrons de caràcters especials. 178 00:09:10,540 --> 00:09:14,340 Per exemple, si vostè vol que el seu ment vagar a un cas de la cantonada, 179 00:09:14,340 --> 00:09:18,080 Suposo que volia imprimir un cometes dobles a la pantalla durant 180 00:09:18,080 --> 00:09:21,840 motiu que sigui, això semblaria ser una mica problemàtic, no? 181 00:09:21,840 --> 00:09:24,990 Perquè si em poso les cometes en el mitjà de "hola, món", per al que 182 00:09:24,990 --> 00:09:30,120 raó, per què sembla que potencialment problemàtic? 183 00:09:30,120 --> 00:09:32,180 Es trenca la cadena. 184 00:09:32,180 --> 00:09:34,700 >> El compilador és un programa. 185 00:09:34,700 --> 00:09:37,210 Un programa com un compilador només va per llegir el seu codi de dalt a baix, 186 00:09:37,210 --> 00:09:37,990 esquerra a dreta. 187 00:09:37,990 --> 00:09:41,850 I si veu tres cometes dobles en lloc de dos, no sabrà 188 00:09:41,850 --> 00:09:45,210 si et refereixes a que el més a l'esquerra ha de ser la cadena, o el que cal 189 00:09:45,210 --> 00:09:46,570 la dreta, o la cosa sencera. 190 00:09:46,570 --> 00:09:50,560 És ambigu, per la qual cosa que és un típic compilador fer és s'espanti, 191 00:09:50,560 --> 00:09:53,710 i li donarà algun missatge d'error, i fa a bregar amb el problema. 192 00:09:53,710 --> 00:09:58,120 >> Llavors, atès que barra invertida-n significa un nou línia, el que faria amb els seus instints ara 193 00:09:58,120 --> 00:10:02,610 començar a ser si volia incloure alguna cosa anòmala com una doble 194 00:10:02,610 --> 00:10:06,210 Interior de la cita d'aquesta altra manera esmentat corda? 195 00:10:06,210 --> 00:10:07,640 Barra invertida-cometa doble. 196 00:10:07,640 --> 00:10:09,630 Així que anem a veure aquest tipus de patró també. 197 00:10:09,630 --> 00:10:12,490 >> Si vols fer alguna cosa una mica estrany, trobareu que la 198 00:10:12,490 --> 00:10:15,060 solucions sovint segueixen un patró, i la barra invertida 199 00:10:15,060 --> 00:10:17,150 denota una seqüència d'escapament. 200 00:10:17,150 --> 00:10:20,320 I només significa una cosa especial que hem de representar en un 201 00:10:20,320 --> 00:10:21,060 diferent manera. 202 00:10:21,060 --> 00:10:23,830 Pel que fa a com es representa una barra invertida, bé, anem a 203 00:10:23,830 --> 00:10:24,550 tornar a això. 204 00:10:24,550 --> 00:10:26,930 Però la resposta, també, és en realitat una mica obvi. 205 00:10:26,930 --> 00:10:31,080 >> Així que ara anem a introduir un altre construccions de programació 206 00:10:31,080 --> 00:10:31,915 que va veure en zero. 207 00:10:31,915 --> 00:10:34,790 Vostè probablement ha pres per fet ja de per si ja has bussejat en 208 00:10:34,790 --> 00:10:36,060 problema d'establir 0. 209 00:10:36,060 --> 00:10:40,950 Però ara anem a introduir la sintaxi de C per a aquests la resta bastant intuïtiva 210 00:10:40,950 --> 00:10:42,300 idees, almenys alguns d'ells. 211 00:10:42,300 --> 00:10:45,570 >> Així que aquesta noció d'una condició o una branca, mentre que anteriorment es 212 00:10:45,570 --> 00:10:49,330 representat amb el codi que es veia com aquesta a l'esquerra en Scratch - 213 00:10:49,330 --> 00:10:52,200 si x és menor que i, llavors digues - 214 00:10:52,200 --> 00:10:56,760 en canvi ara en C - m'ho dius esmolar en en el cas més senzill - 215 00:10:56,760 --> 00:11:01,235 estem simplement dirà, si, obriu parèntesi, alguna cosa és cert - 01:00 216 00:11:01,235 --> 00:11:04,190 Expressió booleana es va a anar on he dit estat - 217 00:11:04,190 --> 00:11:08,170 parèntesi de tancament, a continuació, fer el que és dins d'aquestes claus. 218 00:11:08,170 --> 00:11:11,020 >> Així que aquí, també, per les claus són una espècie de Scratch 219 00:11:11,020 --> 00:11:12,460 Peces d'un trencaclosques en forma de U. 220 00:11:12,460 --> 00:11:14,890 Fes el que hi ha dins d'aquestes claus. 221 00:11:14,890 --> 00:11:16,790 En aquest cas, Slash Slash. 222 00:11:16,790 --> 00:11:19,720 I noti això és un avanç retallar, no una barra invertida. 223 00:11:19,720 --> 00:11:21,440 Barra inclinada, barra diagonal, per a aquells que han programat 224 00:11:21,440 --> 00:11:23,370 abans, només significa - 225 00:11:23,370 --> 00:11:24,190 és només un comentari. 226 00:11:24,190 --> 00:11:26,630 Un comentari no és una línia de codi, per se. 227 00:11:26,630 --> 00:11:30,200 És una línia d'anglès que vostè, el humana, han escrit a vostè per 228 00:11:30,200 --> 00:11:33,540 potser li recordi a fer alguna cosa, explicar a tu mateix, per explicar als 229 00:11:33,540 --> 00:11:35,260 altra persona, el que el seu codi està fent. 230 00:11:35,260 --> 00:11:37,050 És només un comentari descriptiu. 231 00:11:37,050 --> 00:11:40,880 >> Bé, és clar, podem tenir una de dues vies bifurcació en el camí només per fer això, una 232 00:11:40,880 --> 00:11:43,930 tres vies forquilla a la carretera fent això, i si continua aquesta 233 00:11:43,930 --> 00:11:47,570 patró, vostè pot tenir quatre vies, cinc vies, forquilles sis bandes a la carretera, si 234 00:11:47,570 --> 00:11:50,150 vostè necessita per manejar, de fet, que moltes condicions. 235 00:11:50,150 --> 00:11:52,010 I a continuació, observeu el paral · lelisme aquí - 236 00:11:52,010 --> 00:11:55,070 if (condició), else if (condició), i l'únic que és una mica 237 00:11:55,070 --> 00:11:58,010 rar és l'últim, que És només que més. 238 00:11:58,010 --> 00:12:01,170 Però de nou, això és idèntic, conceptualment, al que hem fet 239 00:12:01,170 --> 00:12:04,690 ja, tot i que la sintaxi es prendre una mica acostumar. 240 00:12:04,690 --> 00:12:07,730 >> Ara, en aquest exemple, hi ha alguna altra sintaxi estranya. 241 00:12:07,730 --> 00:12:11,220 Veiem printf nou parèntesi d'obertura, i parèntesi de tancament. 242 00:12:11,220 --> 00:12:13,190 I dins de no una cadena entre cometes. 243 00:12:13,190 --> 00:12:17,060 Els parèntesis, en el context de printf, aneu a l'esquerra 244 00:12:17,060 --> 00:12:18,160 i el dret de què? 245 00:12:18,160 --> 00:12:22,190 Què és el que descrivim citat cadena com més en general? 246 00:12:22,190 --> 00:12:23,320 >> Així que és un argument. 247 00:12:23,320 --> 00:12:26,620 Cada vegada que té una funció, com printf, i després un parèntesi obert i un 248 00:12:26,620 --> 00:12:30,330 prop parin i alguna cosa dins que, si es tracta d'una cadena, o un 249 00:12:30,330 --> 00:12:34,420 sencer o qualsevol altra cosa, la cosa en entre els parèntesis, es diu 250 00:12:34,420 --> 00:12:35,110 una discussió. 251 00:12:35,110 --> 00:12:37,910 >> I un argument només influeix El comportament de la funció. 252 00:12:37,910 --> 00:12:39,990 En aquest cas, està molt clar com. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 I printf va a imprimir exactament això. 255 00:12:47,720 --> 00:12:51,590 Perquè sens dubte, fa anys persona qui implementat printf no tenia idea de 256 00:12:51,590 --> 00:12:55,000 el que successors humans érem va a usar printf per. 257 00:12:55,000 --> 00:12:58,610 Per això és que hi ha arguments per influir en el comportament després d'una funció de 258 00:12:58,610 --> 00:12:59,450 ha escrit. 259 00:12:59,450 --> 00:13:00,780 >> Ara, l'expressió booleana. 260 00:13:00,780 --> 00:13:02,470 Hem vist això abans en zero. 261 00:13:02,470 --> 00:13:06,680 Resulta que en C, també pot "o" junts, per dir-ho. 262 00:13:06,680 --> 00:13:10,930 Dues barres verticals significa que aquest bloc del codi, això fa això, es 263 00:13:10,930 --> 00:13:15,350 executar si la primera condició és vertadera o la segona condició és vertadera. 264 00:13:15,350 --> 00:13:17,710 I tot i que no podria haver fet això en Scratch, podeu de fet 265 00:13:17,710 --> 00:13:20,580 fer-ho en Scratch, i també es pot expressar-se de manera diferent - 266 00:13:20,580 --> 00:13:25,300 si la primera condició i la segona condicions són veritables, llavors no ho és 267 00:13:25,300 --> 00:13:27,160 dins de les claus. 268 00:13:27,160 --> 00:13:31,210 >> I així com un a part, la raó per la qual és un signe doble i un doble 269 00:13:31,210 --> 00:13:34,610 barra vertical, ja veurem amb el temps que una sola barra vertical i un 270 00:13:34,610 --> 00:13:38,710 sol caràcter & en realitat tenen diferents significat en C. Així que per ara, 271 00:13:38,710 --> 00:13:41,840 que la duplicació de símbols és intencional. 272 00:13:41,840 --> 00:13:45,070 >> Així que anem a introduir, en poques paraules, aquest una mica de sintaxi. 273 00:13:45,070 --> 00:13:48,940 Això no acaba de dur a Scratch, però jo sostinc que puc 274 00:13:48,940 --> 00:13:55,190 posar en pràctica la idea d'un cas més, si una altra cosa, si bé, si else usant 275 00:13:55,190 --> 00:13:56,760 cosa que es diu una sentència switch. 276 00:13:56,760 --> 00:14:00,820 I l'única raó de que això realment existeix és que vostè acaba de donar, el programador, 1 277 00:14:00,820 --> 00:14:05,470 lleugerament diferent manera de resoldre alguns problema, tot i que lògicament 278 00:14:05,470 --> 00:14:07,340 no et dóna noves capacitats. 279 00:14:07,340 --> 00:14:08,530 >> Amb això vull dir això. 280 00:14:08,530 --> 00:14:13,330 Quan l'interruptor, i després un espai, diu i després un parell de parèntesis, dins 281 00:14:13,330 --> 00:14:14,570 dels quals passa una expressió - 282 00:14:14,570 --> 00:14:18,010 i això podria ser una mica no evident en el primer, però això no és un argument, 283 00:14:18,010 --> 00:14:20,680 tècnicament, perquè commutador no és una funció. 284 00:14:20,680 --> 00:14:24,230 Així que per ara, només suposem que estem utilitzant parèntesi en diferents llocs 285 00:14:24,230 --> 00:14:25,250 per diferents raons. 286 00:14:25,250 --> 00:14:29,310 >> Així interruptor en l'expressió vol dir que puc posar una variable dins dels 287 00:14:29,310 --> 00:14:31,350 parèntesi on diu l'expressió. 288 00:14:31,350 --> 00:14:33,090 I llavors, si aquesta variable - 289 00:14:33,090 --> 00:14:35,400 suposem que es diu x, i és només un nombre sencer - 290 00:14:35,400 --> 00:14:38,900 Llavors puc enumerar en el meu diapositiva aquí alguna cosa com això. 291 00:14:38,900 --> 00:14:41,690 Si x és variable de mi, i jo voler fer alguna cosa si x 292 00:14:41,690 --> 00:14:43,480 és igual a 1, no puc fer això. 293 00:14:43,480 --> 00:14:46,660 >> Si en canvi vull fer alguna cosa si x és 2, no puc fer això. 294 00:14:46,660 --> 00:14:50,390 Si no, si vull fer alguna cosa més tot, puc tenir un cas per defecte en 295 00:14:50,390 --> 00:14:52,750 aquest cas ho faig una altra cosa. 296 00:14:52,750 --> 00:14:58,730 Així que en aquest sentit, és equivalent a una si x és igual a és igual a 1, en cas contrari, si bé, 297 00:14:58,730 --> 00:15:01,150 però ho esmento ara perquè anem a veure de nou. 298 00:15:01,150 --> 00:15:03,720 Però per ara, només sé que existeix. 299 00:15:03,720 --> 00:15:04,220 >> Està bé. 300 00:15:04,220 --> 00:15:07,660 Així que aquests últims són una mica més complex a primera vista, però sí 301 00:15:07,660 --> 00:15:09,385 alguna cosa bastant senzill. 302 00:15:09,385 --> 00:15:14,410 Un bucle en C és un fragment de codi que simplement fa alguna cosa nova i 303 00:15:14,410 --> 00:15:15,330 una i altra vegada. 304 00:15:15,330 --> 00:15:17,590 I l'única cosa molesta d'això és que és que és una mica críptic 305 00:15:17,590 --> 00:15:21,380 d'expressar-se en aquest cíclica patró, però el món estandarditzat 306 00:15:21,380 --> 00:15:22,450 de la següent manera. 307 00:15:22,450 --> 00:15:25,760 >> Quan s'utilitza un bucle for, tens un parell de parèntesis més. 308 00:15:25,760 --> 00:15:27,570 I noti els dos punts i comes en aquest país. 309 00:15:27,570 --> 00:15:34,380 Aquests dos punts i coma separats 03:00 diferents expressions dins del 310 00:15:34,380 --> 00:15:35,020 parèntesi. 311 00:15:35,020 --> 00:15:37,170 Un d'ells és dels anomenats inicialitzacions. 312 00:15:37,170 --> 00:15:38,830 Un d'ells és la condició trucada. 313 00:15:38,830 --> 00:15:40,210 I és un dels anomenats canvis. 314 00:15:40,210 --> 00:15:43,240 >> Mirat en abstracte, és completament no-obvi, així que anem a veure 315 00:15:43,240 --> 00:15:44,630 un exemple concret. 316 00:15:44,630 --> 00:15:46,720 En esgarrapades que tenia un bloc de repetició. 317 00:15:46,720 --> 00:15:50,670 I aquest bloc va dir repeteixi 10 vegades, per exemple "Hola, món". Permetin-me reclamació per 318 00:15:50,670 --> 00:15:53,810 ara, i anem a tornar a això, i això també obtindrà més familiar per 319 00:15:53,810 --> 00:15:57,345 que en poc temps, l'equivalent C codi es podria dir que aquesta - 320 00:15:57,345 --> 00:16:02,320 una instrucció i un espai, un parell de parèntesi, tingueu present el punt i coma en 321 00:16:02,320 --> 00:16:05,730 cal separar tres diferents coses, la inicialització, els 322 00:16:05,730 --> 00:16:07,320 condició i l'actualització. 323 00:16:07,320 --> 00:16:08,840 >> I tenir una pista sobre el que el primer està fent. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 En termes senzills brut, el que és de fer per a nosaltres, probablement? 326 00:16:15,120 --> 00:16:15,590 Així que si. 327 00:16:15,590 --> 00:16:19,630 Es declara una variable anomenada i, i que està donant el que de valor? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Així que està creant una variable anomenada I, emmagatzemar el valor 0 en ella. 330 00:16:24,280 --> 00:16:26,420 Aquesta és l'anomenada d'inicialització. 331 00:16:26,420 --> 00:16:29,360 >> Bé, ara em va reclamar abans que el mitjà, i 332 00:16:29,360 --> 00:16:31,760 <10, és la condició. 333 00:16:31,760 --> 00:16:32,730 Llavors, què està fent? 334 00:16:32,730 --> 00:16:36,560 Bé, el que fa el llaç per quan un programa amb un bucle s'executa, és 335 00:16:36,560 --> 00:16:41,050 cada vegada que l'equip s'executa a través de aquest bucle, de dalt a baix, de dalt a 336 00:16:41,050 --> 00:16:43,740 baix, igual que vostès van fer quan comptant a si mateixos i es va asseure, 337 00:16:43,740 --> 00:16:47,090 una i altra vegada i una altra, l'equip va 338 00:16:47,090 --> 00:16:48,560 per comprovar aquesta condició. 339 00:16:48,560 --> 00:16:51,140 I si i és menor que 10, que va a fer de nou. 340 00:16:51,140 --> 00:16:53,100 Si i és menor que 10, que va a fer de nou. 341 00:16:53,100 --> 00:16:55,030 Si i és menor que 10, que va a fer de nou. 342 00:16:55,030 --> 00:16:57,330 Així que sembla suggerir que espere i està canviant. 343 00:16:57,330 --> 00:16:59,010 En cas contrari, tindríem un bucle infinit. 344 00:16:59,010 --> 00:17:02,590 I, de fet, i està canviant, perquè la L'últim que després de la coma no 345 00:17:02,590 --> 00:17:05,569 és la sintaxi una mica críptica d'i + +. 346 00:17:05,569 --> 00:17:07,630 Però aquells de vostès que han fet això abans, això només significa 347 00:17:07,630 --> 00:17:08,609 senzillament, què? 348 00:17:08,609 --> 00:17:09,730 >> ESTUDIANTS: [interrompent VEUS]. 349 00:17:09,730 --> 00:17:10,740 >> DAVID Malan: Afegir 1 a i. 350 00:17:10,740 --> 00:17:11,819 Incrementar i. 351 00:17:11,819 --> 00:17:13,910 Així que vam veure un trencaclosques esgarrapades peça perquè, en realitat. 352 00:17:13,910 --> 00:17:18,230 No es veia com i + +, però això només significa, simplement, augmentar el 353 00:17:18,230 --> 00:17:24,040 Valoro ia 1 cada vegada que ho faci. 354 00:17:24,040 --> 00:17:26,910 Així que, literalment, es comença per Iniciació d'I a 0. 355 00:17:26,910 --> 00:17:29,520 A continuació, comproveu el seu estat. 356 00:17:29,520 --> 00:17:31,070 És 0, menys de 10? 357 00:17:31,070 --> 00:17:31,730 Sí 358 00:17:31,730 --> 00:17:32,910 Anem a través del bucle. 359 00:17:32,910 --> 00:17:35,150 >> El següent que reclam l'equip de farem és que va 360 00:17:35,150 --> 00:17:35,910 per incrementar i. 361 00:17:35,910 --> 00:17:37,080 Així que ara és d'1. 362 00:17:37,080 --> 00:17:37,940 Es comprova l'estat. 363 00:17:37,940 --> 00:17:39,290 És 1 menys que 10? 364 00:17:39,290 --> 00:17:39,930 Per descomptat. 365 00:17:39,930 --> 00:17:41,030 Així ho fa de nou. 366 00:17:41,030 --> 00:17:43,580 Després s'incrementa i + + a 2. 367 00:17:43,580 --> 00:17:44,610 És 2 de menys de 10? 368 00:17:44,610 --> 00:17:45,230 Sí 369 00:17:45,230 --> 00:17:46,670 I una vegada i una altra i una altra. 370 00:17:46,670 --> 00:17:50,070 I finalment, a causa de la plus-plussing, arribem a i és igual a 10. 371 00:17:50,070 --> 00:17:51,675 És 10 menys de 10? 372 00:17:51,675 --> 00:17:52,990 Bé, òbviament no. 373 00:17:52,990 --> 00:17:55,320 I aquest és el punt en què el bucle només s'atura. 374 00:17:55,320 --> 00:17:58,320 I si té més codi al a sota, l'equip 375 00:17:58,320 --> 00:18:01,620 procedeix a executar el codi en lloc. 376 00:18:01,620 --> 00:18:05,380 >> Així que de nou, tot i que això va a veure i sentir una mica estrany al 377 00:18:05,380 --> 00:18:07,830 primer, sens dubte per a aquells de vostès que mai han programat abans, 378 00:18:07,830 --> 00:18:11,640 literalment redueix conceptualment al que és d'altra banda un molt 379 00:18:11,640 --> 00:18:14,330 trencaclosques senzills peça en zero. 380 00:18:14,330 --> 00:18:19,130 >> Bé, em vaig prometre que no hi havia haver altres anàlegs en zero. 381 00:18:19,130 --> 00:18:20,060 Hi ha aquesta també. 382 00:18:20,060 --> 00:18:21,700 I vam veure breument aquesta última vegada. 383 00:18:21,700 --> 00:18:23,530 Però recordeu sempre el bloquejar en el zero? 384 00:18:23,530 --> 00:18:25,490 Simplement faci alguna cosa per sempre? 385 00:18:25,490 --> 00:18:27,470 Vaig afirmar que vostè podria aplicar aquesta d'aquesta manera. 386 00:18:27,470 --> 00:18:29,740 I en realitat es pot posar en pràctica aquesta en un munt de diferents maneres. 387 00:18:29,740 --> 00:18:34,260 >> Però el bucle while és només una diferent forma en C d'expressar. 388 00:18:34,260 --> 00:18:37,080 Al final del dia, no es pot fer qualsevol cosa amb un bucle while que 389 00:18:37,080 --> 00:18:38,360 no pot amb un bucle for. 390 00:18:38,360 --> 00:18:41,430 Així que estan al final de la dia funcionalment la mateixa. 391 00:18:41,430 --> 00:18:43,840 No obstant això, permet que vostè s'expressi una mica diferent a 392 00:18:43,840 --> 00:18:44,850 de la següent manera. 393 00:18:44,850 --> 00:18:49,720 >> Amb el bucle while, és el que està en parèntesi que comproven una i altra 394 00:18:49,720 --> 00:18:51,050 una i altra vegada. 395 00:18:51,050 --> 00:18:55,100 I tan aviat com l'expressió és falsa, a continuació, el bucle deixa d'executar, 396 00:18:55,100 --> 00:18:57,890 i l'ordinador procedeix a executi qualsevol altre codi que 397 00:18:57,890 --> 00:18:59,230 tenir en el seu arxiu. 398 00:18:59,230 --> 00:19:02,180 >> Però l'interessant aquí és que jo vaig escriure literalment cert. 399 00:19:02,180 --> 00:19:06,680 I fidel és un tipus de valor booleà, un valor vertader o fals. 400 00:19:06,680 --> 00:19:09,750 Així que podria esdevenir realitat mai false si tinc literalment 401 00:19:09,750 --> 00:19:11,970 codificades en el meu programa? 402 00:19:11,970 --> 00:19:12,470 Així que no. 403 00:19:12,470 --> 00:19:13,730 És una mica estrany que jo vaig fer això. 404 00:19:13,730 --> 00:19:15,190 Però cert és cert. 405 00:19:15,190 --> 00:19:16,320 No hi ha més-plussing. 406 00:19:16,320 --> 00:19:17,820 No hi ha ús de variables a aquí. 407 00:19:17,820 --> 00:19:22,740 Així que perquè no modificable, mentre que és veritat, això bucle sempre va a avaluar 408 00:19:22,740 --> 00:19:24,090 una i altra vegada i una altra. 409 00:19:24,090 --> 00:19:27,660 >> Quantes vegades és hola món la impressió a la pantalla? 410 00:19:27,660 --> 00:19:28,170 Forever. 411 00:19:28,170 --> 00:19:31,980 Un nombre infinit de vegades fins que el mor la bateria o alguna altra externs 412 00:19:31,980 --> 00:19:32,730 esdeveniment ocorre. 413 00:19:32,730 --> 00:19:35,880 Així que això no és probablement el millor programa per escriure, perquè si l'usuari 414 00:19:35,880 --> 00:19:38,660 mai no pot sortir del programa, és Probablement no és el que vostè pretén. 415 00:19:38,660 --> 00:19:41,070 >> Però de vegades, els programes haurien tenir un bucle infinit. 416 00:19:41,070 --> 00:19:44,050 Per exemple, si l'equip té un rellotge en ell, sens dubte seria 417 00:19:44,050 --> 00:19:48,130 bo si el rellotge que no mantenir l'actualització en si per sempre, encara que una vegada al 418 00:19:48,130 --> 00:19:50,500 segons o un cop per minut o alguna cosa així. 419 00:19:50,500 --> 00:19:53,690 Així que fins i tot bucles infinits tenen el seu lloc. 420 00:19:53,690 --> 00:19:54,360 >> Està bé. 421 00:19:54,360 --> 00:19:55,190 Finalment, aquest un. 422 00:19:55,190 --> 00:19:57,770 I aquest és una mica diferent funcionalment, i ens tornarem a 423 00:19:57,770 --> 00:19:59,460 això probablement a PSET 1. 424 00:19:59,460 --> 00:20:02,370 Però hi ha un altre tipus de bucle anomenat do while. 425 00:20:02,370 --> 00:20:07,100 I l'única diferència aquí entre un fer mentre bucle i, diguem, un bucle while, 426 00:20:07,100 --> 00:20:11,120 és que la condició es comprova no abans d'executar el codi, però després 427 00:20:11,120 --> 00:20:12,080 s'executa el codi. 428 00:20:12,080 --> 00:20:15,380 Així que a la part superior, mentre que per al llaç, mentre que el fer mentre 429 00:20:15,380 --> 00:20:16,560 comprova que en la part inferior. 430 00:20:16,560 --> 00:20:21,370 >> I això vol dir simplement que el bucle while se solen executar més vegades 431 00:20:21,370 --> 00:20:24,630 o menor nombre de vegades que un bucle while? 432 00:20:24,630 --> 00:20:30,810 Potencialment més vegades, perquè fer-ho while està dient clarament fer-ho, 433 00:20:30,810 --> 00:20:34,600 només després que el punt que comprova si la condició interior de la 434 00:20:34,600 --> 00:20:35,980 parèntesi, és cert. 435 00:20:35,980 --> 00:20:37,940 >> Així que anem a veure això de nou probablement en PSET 1. 436 00:20:37,940 --> 00:20:41,150 Si mai vols fer alguna cosa en menys una vegada i després potser una mica més 437 00:20:41,150 --> 00:20:43,350 vegades, aquest és un bon construir a utilitzar. 438 00:20:43,350 --> 00:20:46,970 Però un bucle mentre que, per contra, es comprovar el seu estat primer. 439 00:20:46,970 --> 00:20:50,660 I això és tot per bucles en C, què mentre que, mentrestant, i per als bucles. 440 00:20:50,660 --> 00:20:54,700 I de nou, s'assignen bastant bé enrere a l'alçada, llevat que aquest no 441 00:20:54,700 --> 00:20:57,350 bastant tenir el mateix analògica a zero. 442 00:20:57,350 --> 00:20:58,880 >> Bé, què, ara, les variables? 443 00:20:58,880 --> 00:21:02,600 Així és com he declarat una variable sintàcticament l'altre dia. 444 00:21:02,600 --> 00:21:06,440 Vaig tenir un int, que vaig afirmar és un nombre enter. 445 00:21:06,440 --> 00:21:09,690 Llavors vaig tenir una trucada variable comptador, i després un punt i coma. 446 00:21:09,690 --> 00:21:11,070 Llavors, què és aquesta línia de codi que fa? 447 00:21:11,070 --> 00:21:14,540 Això és, simplement, que declara una variable - 448 00:21:14,540 --> 00:21:17,940 és a dir, demanar a l'ordinador, dóna'm part de la memòria, dóna'm alguns bits - en 449 00:21:17,940 --> 00:21:19,450 que puc emmagatzemar el que? 450 00:21:19,450 --> 00:21:20,300 Un int. 451 00:21:20,300 --> 00:21:23,570 I el punt i coma només significa final de línia de codi. 452 00:21:23,570 --> 00:21:25,500 >> Ara, la segona línia és probablement bastant fàcil d'endevinar. 453 00:21:25,500 --> 00:21:29,710 Què és el comptador = 0; fent? 454 00:21:29,710 --> 00:21:31,690 S'assigna 0 al marcador. 455 00:21:31,690 --> 00:21:33,470 I això és el altre això és una mica molest 456 00:21:33,470 --> 00:21:34,540 en comparació amb, diguem, l'àlgebra. 457 00:21:34,540 --> 00:21:39,110 Mentre que en l'àlgebra, el signe igual significa iguals, aquí en C, la igualtat de 458 00:21:39,110 --> 00:21:40,470 signe significa assignació. 459 00:21:40,470 --> 00:21:45,380 Per tant, vol dir posar el que està a la dreta en el que està a l'esquerra. 460 00:21:45,380 --> 00:21:49,030 I veurem un altre símbol, és igual a iguals, quan volem provar en realitat 461 00:21:49,030 --> 00:21:50,570 per la qualitat, una mica molest. 462 00:21:50,570 --> 00:21:52,590 >> Però això és una mica ineficient. 463 00:21:52,590 --> 00:21:55,090 És una mica molest que tinc per declarar una variable i 464 00:21:55,090 --> 00:21:56,110 i després donar-li un valor. 465 00:21:56,110 --> 00:21:59,380 Així que en realitat C ens permet simplificar aquest i acaba de fer-ho tot alhora. 466 00:21:59,380 --> 00:22:01,330 Vostè pot declarar la variable a l'esquerra. 467 00:22:01,330 --> 00:22:04,590 Vostè encara pot fer el treball en la dret posant que el signe igual en 468 00:22:04,590 --> 00:22:05,030 el medi. 469 00:22:05,030 --> 00:22:08,740 Així que al final del dia, aquests dos són equivalent, però aquest, francament, 470 00:22:08,740 --> 00:22:11,840 és probablement el millor hàbit per entrar només perquè és una mica menys 471 00:22:11,840 --> 00:22:15,040 codi, és una mica més fàcil de llegir, i que només es contreu 472 00:22:15,040 --> 00:22:17,470 el seu codi, per dir-ho. 473 00:22:17,470 --> 00:22:22,120 >> Qualsevol pregunta fins ara en els circuits, en les variables, de les condicions, en 474 00:22:22,120 --> 00:22:27,001 Booleans, ja sigui tècnicament o conceptualment? 475 00:22:27,001 --> 00:22:28,010 Està bé. 476 00:22:28,010 --> 00:22:30,690 Així que ara aquesta propera aconsegueix 01:00 mica més interessant. 477 00:22:30,690 --> 00:22:34,790 I aquest és l'exemple que vaig posar en marxa el passat temps que s'acaba s'assigna un exemple esgarrapades 478 00:22:34,790 --> 00:22:35,820 a C. 479 00:22:35,820 --> 00:22:36,580 >> Per tant una funció. 480 00:22:36,580 --> 00:22:38,110 En termes senzills, què és una funció? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 He de ser més audaços amb la seva resposta. 483 00:22:44,350 --> 00:22:45,020 Què és una funció? 484 00:22:45,020 --> 00:22:46,320 >> ESTUDIANT: Té alguna cosa. 485 00:22:46,320 --> 00:22:46,780 >> DAVID Malan: Què és això? 486 00:22:46,780 --> 00:22:48,000 >> ESTUDIANT: Té alguna cosa. 487 00:22:48,000 --> 00:22:48,710 >> DAVID Malan: Té alguna cosa. 488 00:22:48,710 --> 00:22:49,000 D'acord. 489 00:22:49,000 --> 00:22:49,590 Anem a començar per aquí. 490 00:22:49,590 --> 00:22:51,270 Així que una funció fa alguna cosa. 491 00:22:51,270 --> 00:22:55,160 Així que és un tros de codi que és essencialment implementat en altres llocs que 492 00:22:55,160 --> 00:22:56,620 En efecte, diu alguna cosa. 493 00:22:56,620 --> 00:23:00,180 Ara, l'interessant d'una funció és que es pot obtenir informació, 494 00:23:00,180 --> 00:23:02,710 i es pot produir una sortida. 495 00:23:02,710 --> 00:23:05,090 I siguem realment prendre una ullada a això. 496 00:23:05,090 --> 00:23:09,030 >> Així que l'home darrere de la cortina va ser deliberada fa un moment. 497 00:23:09,030 --> 00:23:10,320 Aquí tenim una taula. 498 00:23:10,320 --> 00:23:13,010 Però suposem que aquesta realitat representa una gran caixa. 499 00:23:13,010 --> 00:23:14,940 Així que aquest és un quadre negre anomenat. 500 00:23:14,940 --> 00:23:19,800 I, en general, en el disseny, a l'ordinador ciència, caixes negres només es refereixen a 501 00:23:19,800 --> 00:23:22,510 peces de funcionalitat que algú ha posat en marxa, i no fer 502 00:23:22,510 --> 00:23:26,140 necessàriament sap ni li importa com és implementat per sota de la caputxa. 503 00:23:26,140 --> 00:23:28,960 Només importa que aquest quadre negre, que ara anem a començar a trucar a un 504 00:23:28,960 --> 00:23:30,730 funció, fa alguna cosa. 505 00:23:30,730 --> 00:23:34,710 >> Així, per exemple, si aquest quadre negre a l'etapa d'aquí representa printf, un 506 00:23:34,710 --> 00:23:38,040 funció, que sé d'exemples anteriors printf que porta un o més 507 00:23:38,040 --> 00:23:40,910 arguments, i el primer dels arguments han de ser una cadena, com 508 00:23:40,910 --> 00:23:44,780 "Hola, món". Bé, si jo sóc la persona escriure el programa, i vull 509 00:23:44,780 --> 00:23:50,460 utilitzar printf, que, per exemple, podria prengui un tros de paper en blanc aquí i una 510 00:23:50,460 --> 00:23:55,060 marcador negre i escriu en ell - 511 00:23:55,060 --> 00:23:56,580 Jo escric malament "món" - 512 00:23:56,580 --> 00:23:59,560 H-I-L-L-O. 513 00:23:59,560 --> 00:24:04,220 >> Així que vaig a prendre el meu marcador negre i vaig a escriure, tan gran i llegible com pugui en 514 00:24:04,220 --> 00:24:07,260 aquest tros de paper, "hola, món", i Ara afirmo que aquesta és la meva argument. 515 00:24:07,260 --> 00:24:09,740 Aquesta és una cadena representada amb un full de paper blanc. 516 00:24:09,740 --> 00:24:13,030 I la meva entrada ara a la funció printf serà això. 517 00:24:13,030 --> 00:24:18,250 Així que estic trucant printf, passant aquest argument com a entrada a la mateixa. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> I ara, no sé com la persona que escriure printf ho va fer fa anys, però 520 00:24:26,740 --> 00:24:31,110 Jo sé de la seva documentació el seu propòsit a la vida és imprimir el que 521 00:24:31,110 --> 00:24:34,410 proporcionar la mateixa com a entrada. 522 00:24:34,410 --> 00:24:40,630 I així, tot i que aquesta implementació És sense jo saber 523 00:24:40,630 --> 00:24:44,170 sota de la capella, ara Ja veig, oh, es fa. 524 00:24:44,170 --> 00:24:45,740 S'ha imprès alguna cosa a la pantalla. 525 00:24:45,740 --> 00:24:49,070 I ara el control del programa, si hi ha eren més línies de codi, es 526 00:24:49,070 --> 00:24:51,070 Ara han tornat a mi. 527 00:24:51,070 --> 00:24:52,290 I així, el fet que Colton - 528 00:24:52,290 --> 00:24:55,370 beneït sigui, s'amaga aquí sota una taula davant de tots vostès - 529 00:24:55,370 --> 00:24:59,530 és deliberada perquè no sé i no m'importa el printf és 530 00:24:59,530 --> 00:25:00,100 implementat. 531 00:25:00,100 --> 00:25:03,390 Només sé que, de nou, a partir del seu documentació, el que fa i com ho 532 00:25:03,390 --> 00:25:05,040 Se suposa que he de fer-lo servir. 533 00:25:05,040 --> 00:25:09,140 >> Ara, recordem que printf podria aconseguir una mica més sofisticat. 534 00:25:09,140 --> 00:25:12,220 Un cop més, estem parlant de la equivalent del bloc Say d'esgarrapades. 535 00:25:12,220 --> 00:25:14,230 Però també ho vaig fer l'última vegada. 536 00:25:14,230 --> 00:25:17,270 Jo volia fer el meu programa hola 01:00 poc més dinàmica i no només difícil 537 00:25:17,270 --> 00:25:19,740 codi d'una cosa així com "món", i definitivament no codificar alguna cosa 538 00:25:19,740 --> 00:25:22,520 arbitrària com D-A-V-I-D en el programa. 539 00:25:22,520 --> 00:25:27,510 Volia preguntar a l'usuari per a la seva nom i, a continuació, fer alguna cosa amb 540 00:25:27,510 --> 00:25:29,720 aquesta cadena que proporcionen. 541 00:25:29,720 --> 00:25:32,690 >> Així que hi ha alguna cosa una mica diferent aquí. printf, fa un moment, 542 00:25:32,690 --> 00:25:35,860 , En efecte, fer alguna cosa, però no va llançar res. 543 00:25:35,860 --> 00:25:36,020 Cert? 544 00:25:36,020 --> 00:25:38,910 Colton no em lliurarà res esquena, cap tros de paper. 545 00:25:38,910 --> 00:25:40,320 Hi va haver només un efecte secundari. 546 00:25:40,320 --> 00:25:44,510 La meva proporcionar "hola, món" com un argument per Colton resultar en la 547 00:25:44,510 --> 00:25:48,420 efecte secundari d'una paraula, algunes paraules, que apareix a la pantalla. 548 00:25:48,420 --> 00:25:51,350 >> getString, però, és una mica diferent. getString també és un 549 00:25:51,350 --> 00:25:54,590 funciona, però retorna un valor. 550 00:25:54,590 --> 00:25:56,370 No només tenen un efecte secundari estètica. 551 00:25:56,370 --> 00:26:00,230 En realitat, em dóna, la persona trucant o utilitzant la funció, 552 00:26:00,230 --> 00:26:01,320 alguna cosa a canvi. 553 00:26:01,320 --> 00:26:05,740 Així que en aquest cas, és getString trucada amb getString obert 554 00:26:05,740 --> 00:26:07,510 parin, parin a prop. 555 00:26:07,510 --> 00:26:11,370 Té getString, per tant, prendre qualsevol argument o l'entrada? 556 00:26:11,370 --> 00:26:12,340 No, no ho sembla. 557 00:26:12,340 --> 00:26:14,460 El seu propòsit a la vida és només per obtenir una cadena. 558 00:26:14,460 --> 00:26:16,910 No necessita més detalls que això. 559 00:26:16,910 --> 00:26:20,430 Així que permetin-me anar endavant i pretendre que, una altra vegada, aquest quadre negre no és printf, 560 00:26:20,430 --> 00:26:25,160 però getString, i em va deixar, la persona redacció d'aquest programa, truqueu o utilitzar 561 00:26:25,160 --> 00:26:29,720 GetString amb només escriure G-I-T-S-T-I-I-N-G, obert parin, prop 562 00:26:29,720 --> 00:26:32,170 parin, getString. 563 00:26:32,170 --> 00:26:36,920 >> Ara, no tinc ni idea de com el personal CS50 implementat getString, però sé que 564 00:26:36,920 --> 00:26:41,240 si espero prou, es farà tot el alguna cosa sota el capó, potser amb 565 00:26:41,240 --> 00:26:44,940 algunes variables, potser l'ús d'alguns condicions, potser amb alguns bucles, 566 00:26:44,940 --> 00:26:48,170 potser l'ús d'algunes funcions, potser utilitzant - 567 00:26:48,170 --> 00:26:52,290 simplement tractant de guanyar - potser amb algunes altres característiques de programació. 568 00:26:52,290 --> 00:26:55,350 Però si esperem prou - en realitat, en l'equip, això succeeix 569 00:26:55,350 --> 00:26:56,270 super ràpid - 570 00:26:56,270 --> 00:26:59,910 si espero prou, aquesta funció getString es posarà una cadena 571 00:26:59,910 --> 00:27:04,060 per part de l'usuari, que està presumiblement escrivint fora del seu teclat i 572 00:27:04,060 --> 00:27:08,090 llavors, quan getString està fet arribar els personatges de l'usuari 573 00:27:08,090 --> 00:27:14,080 i emmagatzemar-los en una cadena, que funció, getString, tindrà 574 00:27:14,080 --> 00:27:17,990 llest per a mi alguna sortida que sóc va a recuperar a través de la 575 00:27:17,990 --> 00:27:19,470 operador d'assignació. 576 00:27:19,470 --> 00:27:25,390 >> I si em fos, de fet, a la sortida aquí, Obosi té generosament 577 00:27:25,390 --> 00:27:29,900 participat, sense saber això en avançar, escrivint el seu nom en aquesta 578 00:27:29,900 --> 00:27:33,100 variable, que està representant una cadena. 579 00:27:33,100 --> 00:27:35,640 Ara, l'operador d'assignació vol dir que, fins i tot encara que això podria sentir una mica 580 00:27:35,640 --> 00:27:38,790 redundant, que realment fan necessari per fer la meva pròpia còpia d'aquest. 581 00:27:38,790 --> 00:27:40,700 Perquè a la mà esquerra banda - Vaja - 582 00:27:40,700 --> 00:27:45,760 notar que bàsicament tinc corda nom a la banda esquerra. 583 00:27:45,760 --> 00:27:48,280 Així que jo també faré meva pròpia còpia d'aquest. 584 00:27:48,280 --> 00:27:50,990 I això és una mica d'una mentida piadosa, perquè veurem en una setmana o dues de 585 00:27:50,990 --> 00:27:54,100 temps que les cadenes no són en realitat el que semblen ser. 586 00:27:54,100 --> 00:27:56,700 >> Però per ara, aquest és el valor de retorn. 587 00:27:56,700 --> 00:28:00,160 Aquí està la meva pròpia còpia d'ella després d' utilitzant l'operador d'assignació. 588 00:28:00,160 --> 00:28:01,790 I ara, ¿què és el que vull fer a continuació? 589 00:28:01,790 --> 00:28:04,080 Ara tenim la segona de dues línies de codi. 590 00:28:04,080 --> 00:28:05,640 Així que ara vull trucar a printf. 591 00:28:05,640 --> 00:28:08,500 Imaginem ara que el negre quadre està de tornada altra vegada a ser 592 00:28:08,500 --> 00:28:10,210 printf i no getString. 593 00:28:10,210 --> 00:28:12,200 >> Printf aquest temps es va a prendre quants arguments? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Així que mira, és com dues. 596 00:28:16,770 --> 00:28:18,860 Hi ha dues comes en aquest país, però un d'aquests comes, és 597 00:28:18,860 --> 00:28:20,220 dins de les cometes. 598 00:28:20,220 --> 00:28:23,190 Així que el primer argument és, literalment, serà això. 599 00:28:23,190 --> 00:28:31,850 H-I-L-L-O, coma, cent s, la barra invertida-n. 600 00:28:31,850 --> 00:28:36,560 I ara estic oferint no un argument, però dos arguments de printf. 601 00:28:36,560 --> 00:28:39,530 >> I què printf suposa que veure amb aquestes dues entrades després que els passi a 602 00:28:39,530 --> 00:28:42,050 com a arguments? 603 00:28:42,050 --> 00:28:45,360 Se suposa que ha de prendre la segona de ells, que vaig trucar nom, de manera que el 604 00:28:45,360 --> 00:28:48,660 segon tros de paper vaig escriure fa un moment se li diu nom. 605 00:28:48,660 --> 00:28:53,550 Va a endoll del valor a l'interior d'aquesta variable en l'espai, 606 00:28:53,550 --> 00:28:58,310 % S, pel que, de nou, en un moment de temps, anem a veure un efecte secundari de 607 00:28:58,310 --> 00:29:04,180 havent anomenats printf, pel que ara ens no veuen "hola, món", sinó "hola, 608 00:29:04,180 --> 00:29:04,710 Obosi ". 609 00:29:04,710 --> 00:29:08,730 >> Així, un gran aplaudiment per als dos nostres voluntaris, només un dels quals sabien 610 00:29:08,730 --> 00:29:12,010 això estaria passant. 611 00:29:12,010 --> 00:29:12,990 Està bé. 612 00:29:12,990 --> 00:29:16,480 Així que, potser, tan simple com això era, Certament, si vostè ja està familiaritzat 613 00:29:16,480 --> 00:29:20,190 amb tal, espero que mai ho farà oblidar que visual particular de com 614 00:29:20,190 --> 00:29:21,220 funcions de treball. 615 00:29:21,220 --> 00:29:23,000 >> Així que hi ha alguna cosa més que getString. 616 00:29:23,000 --> 00:29:26,020 A l'interior de la biblioteca CS50, hi ha una manat sencer de funcions, tots els quals 617 00:29:26,020 --> 00:29:29,510 es capitalitzen només per deixar en clar que escrivim aquestes funcions. 618 00:29:29,510 --> 00:29:33,610 En general, en C, gairebé tots els altres funció que farem servir és minúscula. 619 00:29:33,610 --> 00:29:36,190 Però deliberadament utilitzem majúscules només per deixar en clar que aquests 620 00:29:36,190 --> 00:29:39,880 són les rodes d'entrenament de classe que anem a utilitzar per tot just un parell de setmanes que 621 00:29:39,880 --> 00:29:42,890 simplificar el procés d'obtenció de entrada de l'usuari. 622 00:29:42,890 --> 00:29:46,740 >> La biblioteca CS50 no fa res que vostès mateixos no es podia fer per 623 00:29:46,740 --> 00:29:50,230 només amb el codi C a partir d'una llibres de text oldschool. 624 00:29:50,230 --> 00:29:53,310 Però, de nou, els utilitzem com a entrenament rodes de les classes per a només un parell de 625 00:29:53,310 --> 00:29:57,250 setmanes perquè puguem desfer-nos de la complexitat que aviat entendrà 626 00:29:57,250 --> 00:30:00,460 mateix de fer una cosa tan relativament senzill com aconseguir 627 00:30:00,460 --> 00:30:02,080 entrada d'un usuari. 628 00:30:02,080 --> 00:30:05,540 >> Així que saber que vostè tindrà accés a getchar, GetDouble - 629 00:30:05,540 --> 00:30:06,050 duplicar. 630 00:30:06,050 --> 00:30:07,050 Com es digui - i després GetFloat. 631 00:30:07,050 --> 00:30:07,600 Què és un flotador? 632 00:30:07,600 --> 00:30:09,382 Anem a començar per aquí. 633 00:30:09,382 --> 00:30:10,600 >> ESTUDIANT: [inaudible]. 634 00:30:10,600 --> 00:30:10,790 >> DAVID Malan: Si. 635 00:30:10,790 --> 00:30:12,120 És un número amb un decimal. 636 00:30:12,120 --> 00:30:15,930 Així que mentre que un int és un enter, que és només un número de 0 a 9, 637 00:30:15,930 --> 00:30:18,940 un nombre de repeticions dels mateixos, un flotador és una cosa 638 00:30:18,940 --> 00:30:20,100 amb un punt decimal. 639 00:30:20,100 --> 00:30:26,090 I una doble, per la seva banda, també és un número amb un decimal, però més 640 00:30:26,090 --> 00:30:28,160 números després de la coma decimal punt, potencialment. 641 00:30:28,160 --> 00:30:30,040 >> Així que ens posarem en contacte amb aquest poc temps. 642 00:30:30,040 --> 00:30:34,560 Però en general, cada un d'aquests tipus de de dades, cadascun d'aquests tipus de variables 643 00:30:34,560 --> 00:30:39,380 que una biblioteca com la nostra pot tornar a vostè, utilitzeu un nombre diferent de bits a 644 00:30:39,380 --> 00:30:40,290 emmagatzemar informació. 645 00:30:40,290 --> 00:30:43,910 Típicament, un Char, que només significa un caràcter, utilitza 8 bits. 646 00:30:43,910 --> 00:30:47,490 I això és realment consistent amb la nostra byte de voluntaris la setmana passada que 647 00:30:47,490 --> 00:30:50,410 es va acostar i representat una Caràcter ASCII alhora. 648 00:30:50,410 --> 00:30:51,850 Així que un Char és de 8 bits. 649 00:30:51,850 --> 00:30:54,430 >> Un flotador passa a ser 32 bits, en general. 650 00:30:54,430 --> 00:30:59,230 I un matrimoni, com ja hauràs endevinat, és en realitat 64 bits, que és simplement més, 651 00:30:59,230 --> 00:31:01,360 el que significa que pot tenir més nombres o més de precisió. 652 00:31:01,360 --> 00:31:03,000 Però, de nou, més sobre això en un altre moment. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, per la seva banda, tot i que estúpidament nom, és en realitat un 654 00:31:06,550 --> 00:31:10,770 sencer que és el doble de gran, el doble de llarg, potencialment, com regular 655 00:31:10,770 --> 00:31:12,940 sencer de 64 bits en lloc de 32. 656 00:31:12,940 --> 00:31:14,560 I GetString que hem estat usant. 657 00:31:14,560 --> 00:31:18,870 >> Però resulta que, a la biblioteca CS50, que s'implementa, com veurem, en 658 00:31:18,870 --> 00:31:23,560 la forma dels dos arxius, un dels quals es diu cs50.h, té dos 659 00:31:23,560 --> 00:31:24,770 tipus de dades en el mateix. 660 00:31:24,770 --> 00:31:29,700 Booleans no existeixen en C. Pot ells simular simplement utilitzant 0s i 1s 661 00:31:29,700 --> 00:31:30,850 a través dels seus programes. 662 00:31:30,850 --> 00:31:35,500 Però a la biblioteca CS50 hem creat els símbols "veritable" i "fals" 663 00:31:35,500 --> 00:31:38,580 per representar 1 i 0 perquè no et que el codi una mica dur 664 00:31:38,580 --> 00:31:39,810 literalment com 1 i 0. 665 00:31:39,810 --> 00:31:40,980 Però anem a veure els de nou. 666 00:31:40,980 --> 00:31:42,330 >> Cadena, també, no existeix. 667 00:31:42,330 --> 00:31:44,520 I és per això que he esmentat és una mica d'una mentida piadosa per ara. 668 00:31:44,520 --> 00:31:46,660 Però anem a pelar que capa de poc. 669 00:31:46,660 --> 00:31:49,540 Però, per ara, una cadena és un seqüència de caràcters. 670 00:31:49,540 --> 00:31:51,790 >> Mentrestant, en C, que de fet tenir diferents tipus de dades. 671 00:31:51,790 --> 00:31:53,200 Observeu aquests són minúscules. 672 00:31:53,200 --> 00:31:56,960 Així que les funcions que es va veure fa un moment són funcions escrites per CS50 que 673 00:31:56,960 --> 00:32:02,310 tornarà a vostè un valor que cau en una d'aquestes categories. 674 00:32:02,310 --> 00:32:06,730 >> Un parell de fulles de trucs només per plantar la llavor aquí. printf fa no només 675 00:32:06,730 --> 00:32:08,600 prengui% s com a marcadors de posició. 676 00:32:08,600 --> 00:32:13,490 Es necessita% d per sencers decimals, o% i funcionaria també. 677 00:32:13,490 --> 00:32:19,450 % F està surant valors de punt. % C és per un char, si voleu connectar només un 678 00:32:19,450 --> 00:32:23,510 caràcter en una cadena amb format previ com ho hem estat fent, podeu utilitzar% c. 679 00:32:23,510 --> 00:32:28,490 >> I després, una mica molest,% LLD és per un llarg, llarg sencer decimal, 680 00:32:28,490 --> 00:32:31,050 que simplement vol dir que si vostè necessita una molt gran nombre i que estàs fent servir alguna cosa 681 00:32:31,050 --> 00:32:35,450 anomenat molt de temps, el que farem arribar de nou a un conjunt de processadors, pot utilitzar% LLD de 682 00:32:35,450 --> 00:32:40,700 dir printf, connecteu un molt gran nombre enter aquí per mitjà de la seva segona o 683 00:32:40,700 --> 00:32:41,830 algun altre argument. 684 00:32:41,830 --> 00:32:45,700 >> I finalment, em vaig prometre que hi ha alguns altres d'escapament 685 00:32:45,700 --> 00:32:47,670 seqüències que dóna suport printf. 686 00:32:47,670 --> 00:32:49,160 Hem vist barra invertida-n. 687 00:32:49,160 --> 00:32:50,510 Backslash-r pot veure. 688 00:32:50,510 --> 00:32:51,780 És una espècie d'una cosa de la vella escola. 689 00:32:51,780 --> 00:32:55,920 Si ha utilitzat alguna vegada un veritable any de màquines d'escriure enrere i va tirar de la maneta 690 00:32:55,920 --> 00:32:59,810 que no només la roda girada a moure la formació, també es va traslladar la 691 00:32:59,810 --> 00:33:03,730 Tot això tot el camí de tornada a l'esquerra, així, la barra invertida-r simplement 692 00:33:03,730 --> 00:33:06,480 essencialment mou el cursor de nou l'inici de la línia 693 00:33:06,480 --> 00:33:07,830 sense moure-la cap avall. 694 00:33:07,830 --> 00:33:09,780 Però, de nou, més sobre això, potser, en el futur. 695 00:33:09,780 --> 00:33:13,670 >> Backslash-cita, la barra invertida-cometa doble, barra invertida-barra invertida és el 696 00:33:13,670 --> 00:33:16,600 solució per al petit petit endevinalla He al · ludit abans. 697 00:33:16,600 --> 00:33:18,920 I barra invertida-0 és en realitat molt interessant. 698 00:33:18,920 --> 00:33:21,470 Però anem a tornar a que en poc temps. 699 00:33:21,470 --> 00:33:25,640 >> Així que permetin-me entrar, ara, el CS50 aparell, i farem una realitat 700 00:33:25,640 --> 00:33:28,930 escalfament ràpid amb un dels exemples que ens vam moure ja i després a 701 00:33:28,930 --> 00:33:31,160 una cosa una mica més complex. 702 00:33:31,160 --> 00:33:34,980 Així que si obro el meu programa anomenat gedit - 703 00:33:34,980 --> 00:33:36,840 aquest és el meu editor gràfic. 704 00:33:36,840 --> 00:33:38,460 I jo puc fer això - 705 00:33:38,460 --> 00:33:39,820 permetin-me tancar aquesta finestra - 706 00:33:39,820 --> 00:33:42,720 a través d'aquesta icona d'aquí baix, gedit, a la part inferior esquerra 707 00:33:42,720 --> 00:33:44,170 cantonada al costat del menú. 708 00:33:44,170 --> 00:33:48,670 >> Vaig a seguir endavant i avançar, i guardar aquest exemple en, per exemple, John 709 00:33:48,670 --> 00:33:49,660 Carpeta de Harvard. 710 00:33:49,660 --> 00:33:52,690 Carpeta de John Harvard és casa directori en el qual tots els seus arxius de viure 711 00:33:52,690 --> 00:33:53,340 per defecte. 712 00:33:53,340 --> 00:33:58,410 I jo vaig a guardar això com un fitxer anomenat hola-0.C. 713 00:33:58,410 --> 00:34:01,260 I jo he triat aquest nom només pel que s'alinea amb el codi d'exemple a la 714 00:34:01,260 --> 00:34:04,210 Pàgina del curs i en el Vídeos de YouTube en línia. 715 00:34:04,210 --> 00:34:06,320 >> Així que ara vaig a començar a escriure el primer programa. 716 00:34:06,320 --> 00:34:08,469 Permetin-me ampliar la imatge durant la llegibilitat. 717 00:34:08,469 --> 00:34:12,760 I seguiré endavant i dir int principal buit, que és igual que 718 00:34:12,760 --> 00:34:14,900 peça del trencaclosques de color groc que comença un programa. 719 00:34:14,900 --> 00:34:18,290 He caigut en l'hàbit durant el anys de l'obertura del meu clau de tancament, llavors 720 00:34:18,290 --> 00:34:22,000 També tancar i després tornar a on vull posar el meu codi, només 721 00:34:22,000 --> 00:34:24,630 perquè m'ajuda a mantenir tot equilibrada, especialment com el meu 722 00:34:24,630 --> 00:34:25,880 programa es fa llarga. 723 00:34:25,880 --> 00:34:29,239 >> I ara, aquí, seguiré endavant i dir: printf, citar cometes, 724 00:34:29,239 --> 00:34:34,330 hola món, la barra invertida-n, prop de cotització, parèntesi de tancament, punt i coma. 725 00:34:34,330 --> 00:34:38,100 Així que només estic repetint tot el que hem estat prenent per fet fins ara. 726 00:34:38,100 --> 00:34:39,270 Ara em vaig a allunyar el zoom. 727 00:34:39,270 --> 00:34:43,030 >> I aquesta finestra de terminal fins aquí, el que ¿Puc fer en aquest negre 728 00:34:43,030 --> 00:34:44,389 i finestra en blanc? 729 00:34:44,389 --> 00:34:46,977 Què puc fer servir? 730 00:34:46,977 --> 00:34:49,770 Així que aquí és on em quedo ordres i on puc compilar coses. 731 00:34:49,770 --> 00:34:50,620 I jo vaig a mantenir la senzillesa. 732 00:34:50,620 --> 00:34:52,780 Vaig a utilitzar un programa de Fer flama, que no és 733 00:34:52,780 --> 00:34:54,020 tècnicament un compilador. 734 00:34:54,020 --> 00:34:56,360 Anomenat Clang del compilador, però anem a tornar a això en un 735 00:34:56,360 --> 00:34:57,190 setmana o el temps de dos. 736 00:34:57,190 --> 00:35:03,410 >> Per ara, només vaig a escriure make hola-0, però els que van ser 737 00:35:03,410 --> 00:35:07,050 comparant en les seves ments el que acabo de escrit del que hauria d'haver escrit pot 738 00:35:07,050 --> 00:35:10,180 Ja sé que vaig fer alguna cosa malament aquí. 739 00:35:10,180 --> 00:35:12,160 Ara, hi ha clarament alguns errors. 740 00:35:12,160 --> 00:35:16,742 Fins i tot abans de mirar al que són, qualsevol pensaments sobre el que vaig fer malament? 741 00:35:16,742 --> 00:35:18,590 >> ESTUDIANTS: [interrompent VEUS]. 742 00:35:18,590 --> 00:35:18,840 >> DAVID Malan: Si. 743 00:35:18,840 --> 00:35:20,640 Em falta el fitxer de capçalera de la biblioteca. 744 00:35:20,640 --> 00:35:24,240 Qualsevol d'aquests fitxers. H s'anomenen encapçalat arxius, i col · lectivament 745 00:35:24,240 --> 00:35:25,680 pertanyen a coses anomenades biblioteques. 746 00:35:25,680 --> 00:35:28,030 Les biblioteques són simplement trossos de codi que altres persones van escriure. 747 00:35:28,030 --> 00:35:32,140 Així que la [estàndard? Biblioteca i?] És un col · lecció de fitxers que contenen codi 748 00:35:32,140 --> 00:35:33,330 que altres persones van escriure. 749 00:35:33,330 --> 00:35:34,820 >> Així que em falta això. 750 00:35:34,820 --> 00:35:36,520 Per què rebo un error? 751 00:35:36,520 --> 00:35:40,840 Bé, deixa retrocedir en la meva finestra de terminal aquí. 752 00:35:40,840 --> 00:35:44,310 I, per desgràcia, en C, com en una gran quantitat de llenguatges de programació, especialment 753 00:35:44,310 --> 00:35:47,830 si tot és nou, l'error missatges són necessàries, però també són 754 00:35:47,830 --> 00:35:48,620 bastant críptic. 755 00:35:48,620 --> 00:35:51,720 I l'error aquí, en vermell, és "Funció de biblioteca declarant implícitament 756 00:35:51,720 --> 00:35:57,660 printf amb el tipus ", i després es desplaça a la següent línia, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "Només es posa molt aclaparadora ràpidament. 758 00:36:00,220 --> 00:36:04,420 >> Però el que ha de començar a fer, si, nou, nou en tot això, és només per 759 00:36:04,420 --> 00:36:06,010 començar a buscar paraules clau. 760 00:36:06,010 --> 00:36:08,770 És clar que jo no podria entendre mitjà de les paraules que estic veient de moment. 761 00:36:08,770 --> 00:36:10,140 Vostè, però, en el temps d'una setmana. 762 00:36:10,140 --> 00:36:11,230 Però veig printf. 763 00:36:11,230 --> 00:36:14,310 I això hauria de començar, en poc temps, a refrescar la memòria, d'acord, printf. 764 00:36:14,310 --> 00:36:15,210 Alguna cosa li passa a printf. 765 00:36:15,210 --> 00:36:16,580 ¿Vaig escriure malament? 766 00:36:16,580 --> 00:36:18,130 No, no es veu com - oh. 767 00:36:18,130 --> 00:36:21,350 No puc usar a menys que ensenyo el compilador que existeix. 768 00:36:21,350 --> 00:36:25,220 I així, un cop més, segueix els teus instints, encara que en realitat no entén 769 00:36:25,220 --> 00:36:26,510 els missatges d'error reals. 770 00:36:26,510 --> 00:36:30,240 >> I, en efecte, la solució en aquest cas és simplement incloure-ho en la part superior de l'arxiu 771 00:36:30,240 --> 00:36:34,340 així, tornar a guardar el meu arxiu amb Control-S o al menú Arxiu. 772 00:36:34,340 --> 00:36:36,730 I si ara torno aquí, Vaig a aclarir això. 773 00:36:36,730 --> 00:36:39,150 Control-L és una bona manera per esborrar la pantalla. 774 00:36:39,150 --> 00:36:44,870 I després vaig a escriure "hola fer 0 "Enter, i ara segueixo veient un 775 00:36:44,870 --> 00:36:47,710 seqüència de símbols críptics, però tornarem a això. 776 00:36:47,710 --> 00:36:49,230 Això és el que fem és fer per vostè. 777 00:36:49,230 --> 00:36:52,590 Es automatitzar el procés de prendre una ordre bastant molest que implica 778 00:36:52,590 --> 00:36:54,050 Clang, el compilador real. 779 00:36:54,050 --> 00:36:57,460 Però el fet que em van donar cap error significa que això hauria de funcionar. 780 00:36:57,460 --> 00:37:00,630 >> Així que ara vaig a fer - permetin-me acostar un nou - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 Enter, i de fet, veig "Hola, món". Així que ara anem a millorar 782 00:37:07,070 --> 00:37:12,105 aquesta molt lleugerament només per replicar els passos que preteníem. 783 00:37:12,105 --> 00:37:15,370 Vaig a canviar el nom d'aquesta amb Desa per hello1.c. 784 00:37:15,370 --> 00:37:20,300 I ara em vaig a declarar una variable nom, el nom de la cadena així, 785 00:37:20,300 --> 00:37:23,420 i jo vaig a posar-hi la valor entre cometes 786 00:37:23,420 --> 00:37:27,030 D-A-V-I-D coma close-quote. 787 00:37:27,030 --> 00:37:31,150 I ara vaig a substituir "món" amb el que marcador de posició per a una cadena? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> I ara, quants arguments han printf aprofitar aquest moment? 790 00:37:35,040 --> 00:37:35,700 Així que dos. 791 00:37:35,700 --> 00:37:37,090 Així que em vaig fora de les cometes. 792 00:37:37,090 --> 00:37:39,330 Escric "nom" després d'una coma. 793 00:37:39,330 --> 00:37:41,550 Però jo he fet alguna cosa cosa malament aquesta vegada. 794 00:37:41,550 --> 00:37:43,940 Però suposem que no ho vaig adonar-se que encara. 795 00:37:43,940 --> 00:37:44,910 Déjame anar aquí. 796 00:37:44,910 --> 00:37:48,850 >> I noti també, m'estic posant una mica avorrit d'escriure "make hola 0" tots els 797 00:37:48,850 --> 00:37:50,180 temps, "fer" i tot això. 798 00:37:50,180 --> 00:37:53,270 Així, resulta que, en Linus pot solen colpejar la fletxa cap amunt en l' 799 00:37:53,270 --> 00:37:56,850 teclat, i vostè pot desplaçar a través de tots els comandaments que he 800 00:37:56,850 --> 00:37:58,830 executat abans d'aquest moment. 801 00:37:58,830 --> 00:38:02,040 Així que si ho faig, dalt, dalt, no fer hola 0. 802 00:38:02,040 --> 00:38:02,610 No vull això. 803 00:38:02,610 --> 00:38:05,450 Només vull canviar això a hola 1 aquesta vegada, Enter. 804 00:38:05,450 --> 00:38:07,620 Amb el temps, aquesta voluntat estalviar una mica de temps. 805 00:38:07,620 --> 00:38:08,150 >> Està bé. 806 00:38:08,150 --> 00:38:09,520 Desafortunadament, no és un error. 807 00:38:09,520 --> 00:38:10,980 Així que em desplaço cap amunt. 808 00:38:10,980 --> 00:38:13,120 Això sembla realment massacrat aquest programa. 809 00:38:13,120 --> 00:38:16,530 Vull dir, per Déu, són dues línies de codi, i els seus 10 línies d'errors. 810 00:38:16,530 --> 00:38:18,800 Però mira a la part superior en primer lloc. 811 00:38:18,800 --> 00:38:21,640 L'ús de cadena d'identificador no declarat. 812 00:38:21,640 --> 00:38:23,270 Em refereixo estàndard i n? 813 00:38:23,270 --> 00:38:23,930 No, no ho vaig fer. 814 00:38:23,930 --> 00:38:24,940 Em referia cadena. 815 00:38:24,940 --> 00:38:29,390 >> Però on és la variable de cadena tipus declarat, DD diem? 816 00:38:29,390 --> 00:38:30,730 Així que és al CS50 la biblioteca. 817 00:38:30,730 --> 00:38:33,740 Per tant, no és suficient, en aquests primers parell de setmanes, només per utilitzar 818 00:38:33,740 --> 00:38:34,860 el que C ens dóna. 819 00:38:34,860 --> 00:38:38,120 També vaig a pujar aquí, i jo va entrar per sobre o per sota, però ho faré 820 00:38:38,120 --> 00:38:40,340 si prefereixes alguna cosa alfabètic per mantenir les coses ordenades. 821 00:38:40,340 --> 00:38:43,470 Vaig a incloure cs50.h, que pre-instal lat per 822 00:38:43,470 --> 00:38:44,900 que l'aparell CS50. 823 00:38:44,900 --> 00:38:47,640 I és de codi obert, de manera que fins i tot les persones a Internet pot usar-lo en la seva 824 00:38:47,640 --> 00:38:48,450 ordinadors propis. 825 00:38:48,450 --> 00:38:50,700 Però ve amb l'aparell CS50. 826 00:38:50,700 --> 00:38:55,320 >> Així que ara m'ho dius tornar i tornar a compilar això amb fer hola gener. 827 00:38:55,320 --> 00:38:55,710 Maledicció. 828 00:38:55,710 --> 00:38:57,240 Encara un altre error. 829 00:38:57,240 --> 00:38:59,370 Permetin-me desplaço fins a la primera, però. 830 00:38:59,370 --> 00:39:00,630 Aquest és una mica complexa. 831 00:39:00,630 --> 00:39:03,830 Multi-caràcter constant de caràcters. 832 00:39:03,830 --> 00:39:04,890 Això no m'ajuda. 833 00:39:04,890 --> 00:39:08,220 Però avís, Clang és almenys una mica poc decent, pel que amb una mica de 834 00:39:08,220 --> 00:39:11,890 verd, símbol d'intercalació, és a dir aquí és on vaig ficar la pota. 835 00:39:11,890 --> 00:39:16,160 Per què s'apunta, amb aquesta petita fletxa verda, l'única oferta següent 836 00:39:16,160 --> 00:39:18,290 al meu nom? 837 00:39:18,290 --> 00:39:20,880 >> Així que aquesta és una de les coses que només acostumar, especialment si vostè ha estat 838 00:39:20,880 --> 00:39:23,980 programació en Python o JavaScript, o altres idiomes en aquest detall 839 00:39:23,980 --> 00:39:24,560 no importa. 840 00:39:24,560 --> 00:39:25,740 En C, sí que importa. 841 00:39:25,740 --> 00:39:29,520 Si declara una cadena, que és una seqüència de 0 o més caràcters, 842 00:39:29,520 --> 00:39:32,280 en realitat s'ha d'utilitzar cometes dobles. 843 00:39:32,280 --> 00:39:36,670 Així que en realitat necessito canviar això de nou obrir cotització, tanca cita, amb 844 00:39:36,670 --> 00:39:37,800 cometes dobles. 845 00:39:37,800 --> 00:39:41,610 Les cometes simples tenen el seu lloc, però només quan s'està utilitzant individu 846 00:39:41,610 --> 00:39:44,100 caràcters, però més d'això en un altre moment. 847 00:39:44,100 --> 00:39:46,550 Per ara, les cometes dobles són necessaris. 848 00:39:46,550 --> 00:39:50,460 >> Així que ara, deixa tornar al meu terminal finestra, feu hola gener. 849 00:39:50,460 --> 00:39:51,450 I qui confia? 850 00:39:51,450 --> 00:39:53,800 És aquest programa ara va per compilar correctament? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 D'acord. 853 00:39:58,540 --> 00:39:59,780 Així que tres de nosaltres pensa que això. 854 00:39:59,780 --> 00:40:00,280 Està bé. 855 00:40:00,280 --> 00:40:01,190 Intro. 856 00:40:01,190 --> 00:40:02,440 I el que realment va fer. 857 00:40:02,440 --> 00:40:05,130 Així que no hi ha cap error aquest cop, fins i tot encara que aquest programa ha tornat una mica 858 00:40:05,130 --> 00:40:05,840 més complex. 859 00:40:05,840 --> 00:40:10,110 Si ara ho faig punt slash hola 1, Enter, que dirà "hola, David." 860 00:40:10,110 --> 00:40:11,750 >> Però farem la tercera iteració d'aquest, on el 861 00:40:11,750 --> 00:40:13,380 programa és veritablement dinàmica. 862 00:40:13,380 --> 00:40:16,770 Deixin-me seguir endavant i canviar l'arxiu nom, només per coherència amb el 863 00:40:16,770 --> 00:40:20,410 arxius que vostè té disponible per a després en línia. 864 00:40:20,410 --> 00:40:21,620 Intro. 865 00:40:21,620 --> 00:40:25,510 I ara em vaig a anar i no emmagatzemar "David" codificat aquí. 866 00:40:25,510 --> 00:40:28,826 Què podia fer per molt simple millorar aquest programa? 867 00:40:28,826 --> 00:40:30,520 >> Podria trucar a getString. 868 00:40:30,520 --> 00:40:33,240 Pot ser que sigui una mica el que no és evident és a punt de succeir, així que vaig 869 00:40:33,240 --> 00:40:38,470 per afegir realment una altra línia, printf, i digui el nom, còlon, prop de cotització, igual 870 00:40:38,470 --> 00:40:40,790 per donar a l'usuari un missatge a la pantalla. 871 00:40:40,790 --> 00:40:42,980 I ara em vaig a anar aquí, i estic va a utilitzar el meu drecera de teclat. 872 00:40:42,980 --> 00:40:47,680 Vaig a anar cap amunt, cap amunt, i canviar hola hola 1 a 2, Enter. 873 00:40:47,680 --> 00:40:49,260 I gràcies a Déu, estic progressant. 874 00:40:49,260 --> 00:40:52,720 >> I ara vaig a pujar al punt slash hola i 875 00:40:52,720 --> 00:40:54,690 canviar això a 2, Enter. 876 00:40:54,690 --> 00:40:55,650 I ara el meu programa - 877 00:40:55,650 --> 00:40:57,700 Vaig a apropar una - és cada vegada una mica més bonic. 878 00:40:57,700 --> 00:41:02,190 Nom serà, diguem Rob aquesta vegada, Enter, hola, Rob. 879 00:41:02,190 --> 00:41:03,260 Podem fer-ho de nou. 880 00:41:03,260 --> 00:41:05,360 Nom, Lauren, Enter. 881 00:41:05,360 --> 00:41:07,820 Nom, Joseph, Enter. 882 00:41:07,820 --> 00:41:11,596 Nom, anem a tractar de ser difícil, Retorn. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 En realitat no és un error. 885 00:41:14,680 --> 00:41:16,090 Així que és una mica lleig. 886 00:41:16,090 --> 00:41:18,640 Així que potser podríem resoldre aquest en el futur, no ara. 887 00:41:18,640 --> 00:41:20,840 >> Però, com ho faries instintivament anar sobre la direcció de 888 00:41:20,840 --> 00:41:21,990 aquest repte particular? 889 00:41:21,990 --> 00:41:23,710 Només es veu estúpid. 890 00:41:23,710 --> 00:41:27,320 Com evitar les coses semblar estúpid? 891 00:41:27,320 --> 00:41:29,890 Així que podríem fer, OK, he sentit un parell de les coses, una condició i un bucle. 892 00:41:29,890 --> 00:41:33,340 Ens vindria bé, un, una condició, per comprovar el que és la longitud de la cadena 893 00:41:33,340 --> 00:41:34,190 l'usuari ens va donar? 894 00:41:34,190 --> 00:41:37,100 I si és 0, és només citar final de la cita, simplement premeu Enter, i després 895 00:41:37,100 --> 00:41:38,930 potser hauria cridar i li demanarà de nou. 896 00:41:38,930 --> 00:41:39,970 Però, com un missatge nou? 897 00:41:39,970 --> 00:41:44,230 Bé, jo també sentit llaç, i jo vaig poder fer-ho una i altra vegada i una altra 898 00:41:44,230 --> 00:41:47,010 preguntar a l'usuari per la mateixa cosa. 899 00:41:47,010 --> 00:41:48,880 >> Bé, anem a veure un altre exemple utilitzant una diferent 900 00:41:48,880 --> 00:41:50,620 en funció de la biblioteca CS50. 901 00:41:50,620 --> 00:41:52,330 Permetin-me concloure aquest fitxer. 902 00:41:52,330 --> 00:41:53,510 Déjame crear un de nou. 903 00:41:53,510 --> 00:41:58,510 I el trucaré adder.c, només perquè és fàcil de fer aritmètica simple, 904 00:41:58,510 --> 00:42:00,890 tot i que aquesta serà completament decebedor, amb el que podria fer 905 00:42:00,890 --> 00:42:02,250 amb qualsevol ordinador modern. 906 00:42:02,250 --> 00:42:03,750 >> Però me n'aniré endavant ara i - 907 00:42:03,750 --> 00:42:10,680 He après la lliçó l'última vegada - incloure cs50.h, include stdio.h, int 908 00:42:10,680 --> 00:42:14,170 que, per ara, jo només, el principal buit agafem amb fe cega, però anem a suposar 909 00:42:14,170 --> 00:42:16,380 entendre el que això significa que en poc temps. 910 00:42:16,380 --> 00:42:21,030 I diré una cosa com "dóna'm un int." 911 00:42:21,030 --> 00:42:22,140 >> I ara, com puc obtenir un int? 912 00:42:22,140 --> 00:42:26,820 Vull declarar en última instància, una variable anomenada x de tipus int i 913 00:42:26,820 --> 00:42:29,240 emmagatzemar-hi un nombre enter de l'usuari. 914 00:42:29,240 --> 00:42:29,970 Així que va ser un mos. 915 00:42:29,970 --> 00:42:35,680 Però si algú vol proposar, com Com em declaro un enter anomenat x? 916 00:42:35,680 --> 00:42:36,310 X int. 917 00:42:36,310 --> 00:42:37,430 >> Així que realment és així de simple. 918 00:42:37,430 --> 00:42:38,240 Dóna'm un int. 919 00:42:38,240 --> 00:42:39,070 Crida x. 920 00:42:39,070 --> 00:42:40,580 Ara ús l'operador d'assignació. 921 00:42:40,580 --> 00:42:43,400 I com puc emmagatzemar a la a l'esquerra d'un valor a l'usuari? 922 00:42:43,400 --> 00:42:47,310 No vull trucar a getString, òbviament, sinó més aviat getint. 923 00:42:47,310 --> 00:42:49,060 Qualsevol argument? 924 00:42:49,060 --> 00:42:49,350 No 925 00:42:49,350 --> 00:42:51,870 Així que és obert parin, parin prop immediatament, i després una 926 00:42:51,870 --> 00:42:53,440 coma acaba la línia. 927 00:42:53,440 --> 00:42:54,930 >> Ara m'ho dius fer això una altra vegada. 928 00:42:54,930 --> 00:42:57,070 Dóna'm una altra int. 929 00:42:57,070 --> 00:43:01,850 Aquesta vegada faré int, anem a criden a, és igual getint. 930 00:43:01,850 --> 00:43:05,060 I ara m'ho dius fer alguna cosa súper senzill com una mica de matemàtica. 931 00:43:05,060 --> 00:43:14,340 Així printf, la suma de% d és la marcador de posició per a un int. 932 00:43:14,340 --> 00:43:20,030 I% d, punt, barra invertida-n. 933 00:43:20,030 --> 00:43:20,360 >> Està bé. 934 00:43:20,360 --> 00:43:21,670 Així que això no és realment matemàtiques. 935 00:43:21,670 --> 00:43:25,500 Però si vull dir que la suma d'aquesta valor més aquest valor és igual a la 936 00:43:25,500 --> 00:43:29,320 altre valor, el nombre d'arguments en total ha de d'estar donant printf, 937 00:43:29,320 --> 00:43:30,520 en última instància? 938 00:43:30,520 --> 00:43:31,420 Així que quatre, no? 939 00:43:31,420 --> 00:43:33,790 Aquesta cadena i després els tres valors. 940 00:43:33,790 --> 00:43:37,560 Així que x és el primer que vull ser endollar primer el% d. 941 00:43:37,560 --> 00:43:39,270 i serà el pròxim. 942 00:43:39,270 --> 00:43:42,030 >> I ara com que vull dir z, z, però no existeix. 943 00:43:42,030 --> 00:43:43,190 Però això no és un gran problema. 944 00:43:43,190 --> 00:43:45,440 Perquè, ¿què faries per instint, especialment si has tingut una 945 00:43:45,440 --> 00:43:47,820 calculadora gràfica, quin tipus? 946 00:43:47,820 --> 00:43:48,760 Què hi ha de x més i? 947 00:43:48,760 --> 00:43:50,200 Així que no és una variable real. 948 00:43:50,200 --> 00:43:51,820 És només la suma de dues altres variables. 949 00:43:51,820 --> 00:43:53,170 I això és perfectament legítim. 950 00:43:53,170 --> 00:43:56,630 C entén molt senzilla aritmètica així. 951 00:43:56,630 --> 00:43:58,450 >> Punt i coma, estalviar. 952 00:43:58,450 --> 00:44:02,080 Ara me n'aniré aquí i escriure make escurçó, Enter. 953 00:44:02,080 --> 00:44:04,100 No hi ha error, pel que és progrés també. 954 00:44:04,100 --> 00:44:04,890 Escriu escurçó. 955 00:44:04,890 --> 00:44:07,100 I un altre drecera de teclat, si vostè comença a avorrir 956 00:44:07,100 --> 00:44:08,760 amb tots els ordres - 957 00:44:08,760 --> 00:44:12,650 si comença a escriure una ordre, com a punt reduir anunci, i aquí és on el seu 958 00:44:12,650 --> 00:44:16,020 avorriment entra en acció, en general, pot colpejar Tab per tenir l'equip va acabar la 959 00:44:16,020 --> 00:44:20,510 resta de la frase per a vostè si no és l'ambigu ha de venir després de l'anunci. 960 00:44:20,510 --> 00:44:23,950 >> Així que permetin-me anar endavant ara i fa clic a Enter. 961 00:44:23,950 --> 00:44:27,490 Dóna'm un int, 1, 2, i gràcies a Déu, que és 3. 962 00:44:27,490 --> 00:44:29,900 Però com sempre, els programes de prova no ha de reduir al 963 00:44:29,900 --> 00:44:30,820 tractant una vegada. 964 00:44:30,820 --> 00:44:35,560 Vaig a tractar d'un cas de la cantonada, com negatiu 1, dóna'm 1, i que una 965 00:44:35,560 --> 00:44:36,210 comprova cap a fora també. 966 00:44:36,210 --> 00:44:38,870 I probablement jo vull fer alguna cosa més rigoroses proves, però estic bastant 967 00:44:38,870 --> 00:44:40,630 còmode amb el lloc on això és a. 968 00:44:40,630 --> 00:44:43,110 >> Bé, ara anem a tractar d'un altre programa que aquesta vegada utilitza un 969 00:44:43,110 --> 00:44:44,620 poc d'una altra sintaxi. 970 00:44:44,620 --> 00:44:46,100 Déjame crear un nou arxiu. 971 00:44:46,100 --> 00:44:51,050 Vaig a trucar a la línia d'aquest conditions0.c amb un codi d'exemple en línia. 972 00:44:51,050 --> 00:44:55,550 I m'ho dius a mi seguir endavant i fer incloure cs50.h, incloure 973 00:44:55,550 --> 00:45:00,320 stdio.h, en void main - 974 00:45:00,320 --> 00:45:01,030 D'acord. 975 00:45:01,030 --> 00:45:01,850 Això és. 976 00:45:01,850 --> 00:45:03,010 Tenim el nostre text model estàndard. 977 00:45:03,010 --> 00:45:08,170 >> I aquesta vegada ho diré printf, "M'agradaria una int, si us plau," només per 978 00:45:08,170 --> 00:45:10,030 fer que el sistema una mica més amigable. 979 00:45:10,030 --> 00:45:11,620 I ara vull tenir una int des de l'usuari. 980 00:45:11,620 --> 00:45:15,010 Vaig a dir-n aquest cop, només n perquè sona com a número. 981 00:45:15,010 --> 00:45:18,140 getint, i ara, què fer El que vull fer amb ell? 982 00:45:18,140 --> 00:45:21,640 Bé, si n és - i vaig a fer un zoom - 983 00:45:21,640 --> 00:45:25,930 si n és més gran que 0, vull fer el següent - 984 00:45:25,930 --> 00:45:36,060 printf "Vas triar un nombre positiu." Si no, escriuré printf "Vostè 985 00:45:36,060 --> 00:45:37,870 triat un negatiu 986 00:45:37,870 --> 00:45:39,650 nombre. "Molt bé. 987 00:45:39,650 --> 00:45:44,410 Així que aquest programa, tot i que ho vaig fer ràpid, es veu bé sintàcticament. 988 00:45:44,410 --> 00:45:45,010 Vaig a tractar això. 989 00:45:45,010 --> 00:45:46,890 Fer condició 0. 990 00:45:46,890 --> 00:45:47,710 Sembla córrer. 991 00:45:47,710 --> 00:45:49,230 Estat 0, entrar. 992 00:45:49,230 --> 00:45:51,910 Anem a donar-li un int de 50. 993 00:45:51,910 --> 00:45:53,160 Vaig agafar un nombre positiu. 994 00:45:53,160 --> 00:45:54,230 Anem a intentar-ho de nou. 995 00:45:54,230 --> 00:45:54,930 Condició 0. 996 00:45:54,930 --> 00:45:56,260 Negatiu 50. 997 00:45:56,260 --> 00:45:57,290 Vaig agafar un nombre negatiu. 998 00:45:57,290 --> 00:46:00,350 >> Però ara, anem a escollir el que seguirem trucar a un cas de la cantonada, que és més 999 00:46:00,350 --> 00:46:04,702 un cas interessant que vostè pensa podria donar-li una mica de problemes, 0. 1000 00:46:04,702 --> 00:46:07,940 Ara, estic bastant segur que aquest és un aquells casos de cantonada on és zero 1001 00:46:07,940 --> 00:46:12,330 ni positiu ni negatiu, pel que el meu programa, tot i que en sintàcticament 1002 00:46:12,330 --> 00:46:15,440 corregir - es compila, s'executa - no és lògicament correcte. 1003 00:46:15,440 --> 00:46:21,050 Així que quin és la solució simple aquí si vull per detectar, si vull gestionar n 1004 00:46:21,050 --> 00:46:23,840 és igual a 0 per separat? 1005 00:46:23,840 --> 00:46:32,980 >> Així que si n és igual a 0, llavors vull dir alguna cosa així com printf "Vostè va agafar 0". 1006 00:46:32,980 --> 00:46:33,990 Vaig a tractar ara. 1007 00:46:33,990 --> 00:46:38,320 Déjame tornar aquí, desactiveu la meva finestra, i recompilar. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Generar Un error. 1010 00:46:39,770 --> 00:46:41,630 Però jo t'estimo comprovar si n és igual a 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Així que de nou, una altra estupidesa acostumar-se a, signe igual és 1013 00:46:47,720 --> 00:46:48,910 l'operador d'assignació. 1014 00:46:48,910 --> 00:46:52,240 Així que aquest és en realitat error en què, tècnicament, tot i que el compilador 1015 00:46:52,240 --> 00:46:56,450 em va protegir de mi mateix, que havia tècnicament ser copiat 0 en n, que 1016 00:46:56,450 --> 00:46:57,590 No és el que vull. 1017 00:46:57,590 --> 00:47:00,950 Vull comprovar la igualtat amb iguals iguals. 1018 00:47:00,950 --> 00:47:03,390 I perquè sigui ara el meu millor solució. 1019 00:47:03,390 --> 00:47:07,810 >> Permetin-me tornar a guardar això com a realitat, dic, condiciones1, ser nova i millorada. 1020 00:47:07,810 --> 00:47:10,480 Així que ara si a compilar aquest, tindria condicions - 1021 00:47:10,480 --> 00:47:16,960 crits - fer condiciones1 dot slash condiciones1, Enter, "M'agradaria una int, 1022 00:47:16,960 --> 00:47:18,760 per favor. "Vaig a anar endavant i escriviu 50. 1023 00:47:18,760 --> 00:47:19,660 Segueix sent bo. 1024 00:47:19,660 --> 00:47:21,200 Negatiu 50, segueix sent bona. 1025 00:47:21,200 --> 00:47:24,920 0, i que, de fet, detecta que vaig recollir 0. 1026 00:47:24,920 --> 00:47:28,200 >> Llavors, què més puc ara faré amb això? 1027 00:47:28,200 --> 00:47:32,280 Bé, sens dubte podem fer cada vegada més coses complexes. 1028 00:47:32,280 --> 00:47:37,240 Però el que m'agradaria proposar és que vam acabar en aquesta nota aquí. 1029 00:47:37,240 --> 00:47:41,680 Si ens aturem això, veuràs, potser, una caricatura favorite seva 1030 00:47:41,680 --> 00:47:43,326 fins avui en dia es podria mai han entès. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 I això és per la qualitat del riure vostè ha d'aconseguir amb acudits CS. 1033 00:47:49,520 --> 00:47:51,060 Així que això és correcte. 1034 00:47:51,060 --> 00:47:54,900 >> Però el més convincent, vaig pensar que havia donar-nos una mica bromista per dilluns. 1035 00:47:54,900 --> 00:47:56,430 Així que hem començat a utilitzar els nombres enters. 1036 00:47:56,430 --> 00:47:57,510 Ens hem referit a la flota. 1037 00:47:57,510 --> 00:48:00,120 Fins i tot ens hem referit dobles, que, de nou, es donarà un nombre 1038 00:48:00,120 --> 00:48:01,390 després dels punts decimals. 1039 00:48:01,390 --> 00:48:04,230 >> Però resulta que els flotadors i dobles, i, en definitiva, la informàtica, 1040 00:48:04,230 --> 00:48:08,470 fonamentalment, no es pot expressar alguns valors de precisió. 1041 00:48:08,470 --> 00:48:12,840 Sabem per les classes de matemàtiques que es pot tenir qualsevol nombre de números després de la 1042 00:48:12,840 --> 00:48:13,510 punt decimal. 1043 00:48:13,510 --> 00:48:16,460 I fins i tot es pot posar una barra vertical dir que aquests van per sempre. 1044 00:48:16,460 --> 00:48:18,810 >> Desafortunadament, vostè no pot realment fer-ho en un ordinador. 1045 00:48:18,810 --> 00:48:20,400 I així sorgeixen casos de cantonada. 1046 00:48:20,400 --> 00:48:23,120 Per exemple, suposem que vostè és fer alguna cosa financera. 1047 00:48:23,120 --> 00:48:25,700 Ho estàs fent matemàtiques amb percentatges, i 1048 00:48:25,700 --> 00:48:27,030 amb dòlars i centaus. 1049 00:48:27,030 --> 00:48:29,230 I aquests centaus no necessàriament del seu equip. 1050 00:48:29,230 --> 00:48:34,120 Bé, resulta que les fraccions de centaus poden començar a sumar quan 1051 00:48:34,120 --> 00:48:37,250 modelada amb un sistema informàtic de tal manera que intel · ligent 1052 00:48:37,250 --> 00:48:39,100 els éssers humans poden aprofitar. 1053 00:48:39,100 --> 00:48:42,650 >> I aquells de vostès que no han vist, m'havia agradaria donar-li a 30 segons teaser 1054 00:48:42,650 --> 00:48:48,290 una pel · lícula meravellosa coneguda com Office Space, de pintar un quadre d'un 1055 00:48:48,290 --> 00:48:51,205 problema farem front a primera hora de dilluns. 1056 00:48:51,205 --> 00:48:53,960 Si poguéssim augmentar el volum una mica, et dono 30 1057 00:48:53,960 --> 00:48:55,495 segons d'espai d'oficines. 1058 00:48:55,495 --> 00:48:55,770 >> [REPRODUIR VIDEO] 1059 00:48:55,770 --> 00:48:59,000 >> -Vull dir que, no has estat mostrant i vostè ha de mantenir el seu treball. 1060 00:48:59,000 --> 00:49:00,620 >> -En realitat, estic sent promogut. 1061 00:49:00,620 --> 00:49:03,240 >> -Podria programar un virus que havia esquinçar aquest lloc en gran. 1062 00:49:03,240 --> 00:49:04,430 >> -Bé, com funciona? 1063 00:49:04,430 --> 00:49:06,782 >> -Cada vegada que hi ha una transacció bancària on es calcula interès, i hi ha 1064 00:49:06,782 --> 00:49:10,160 són milers al dia, acaba l'ordinador amb aquestes fraccions d'un cèntim. 1065 00:49:10,160 --> 00:49:12,030 >> -Però jo no vaig a fer res il · legal. 1066 00:49:12,030 --> 00:49:12,660 >> -Il · legal? 1067 00:49:12,660 --> 00:49:15,075 Samir, això és Estats Units. 1068 00:49:15,075 --> 00:49:16,570 >> -Hem de juro per Déu. 1069 00:49:16,570 --> 00:49:19,070 >> -Si ningú sap d'això però nosaltres, d'acord? 1070 00:49:19,070 --> 00:49:21,920 No hi ha membres de la família, sense núvies, ningú. 1071 00:49:21,920 --> 00:49:22,700 >> -Per descomptat. 1072 00:49:22,700 --> 00:49:23,320 >> -D'acord. 1073 00:49:23,320 --> 00:49:24,280 >> -No et preocupis, home. 1074 00:49:24,280 --> 00:49:25,640 No li diré a ningú. 1075 00:49:25,640 --> 00:49:26,504 >> [FI REPRODUCCIÓ DE VÍDEO] 1076 00:49:26,504 --> 00:49:30,030 >> DAVID Malan: Això és, llavors, CS50, que era l'espai d'oficina, i ho farà tot 1077 00:49:30,030 --> 00:49:31,465 sentit dilluns. 1078 00:49:31,465 --> 00:49:33,940 Ens veiem llavors. 1079 00:49:33,940 --> 00:49:37,880 >> NARRADOR: En la següent CS50, Rob s'ajusta a estar fora de la 1080 00:49:37,880 --> 00:49:39,130 Pla de menjars Harvard. 1081 00:49:39,130 --> 00:49:56,160