1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> DAVID J. Malan: Així que això és CS50. 3 00:00:13,800 --> 00:00:18,970 I això era propi Colton Ogden del CS50, per més de qui és la música que es pot 4 00:00:18,970 --> 00:00:22,820 descarregar en soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Així que avui ens enfoquem tant més en l'art de la programació. 6 00:00:26,690 --> 00:00:28,980 I prenem on ho vam deixar la setmana passada, centrant-se 7 00:00:28,980 --> 00:00:31,660 en Scratch, que era aquesta llenguatge de programació gràfica. 8 00:00:31,660 --> 00:00:35,490 I prendre les coses a un nivell més baix, utilitzant una programació més tradicional 9 00:00:35,490 --> 00:00:38,420 llenguatge conegut com a C. Però en el camí, en adonar- 10 00:00:38,420 --> 00:00:40,730 que les mateixes idees que va parlar sobre el passat divendres 11 00:00:40,730 --> 00:00:44,390 es repetirà, no només en aquest llenguatge C, però en la majoria de tots els altres 12 00:00:44,390 --> 00:00:46,350 que ens fixem en aquest semestre. 13 00:00:46,350 --> 00:00:50,247 >> Així que cridem a aquesta cosa aquí el que l'última vegada? 14 00:00:50,247 --> 00:00:51,830 Això és representatiu d'un comunicat. 15 00:00:51,830 --> 00:00:53,080 Així que cridem a això un comunicat. 16 00:00:53,080 --> 00:00:54,100 I ho fa alguna cosa. 17 00:00:54,100 --> 00:00:56,910 És una instrucció que un ordinador o esgarrapades podrien executar. 18 00:00:56,910 --> 00:00:59,910 I a partir d'ara, anem a començar també cridar alguna cosa com això una funció, 19 00:00:59,910 --> 00:01:02,070 per raons que aviat veurem. 20 00:01:02,070 --> 00:01:03,681 >> Mentrestant, hem vist coses com aquesta. 21 00:01:03,681 --> 00:01:05,680 I aquests són en general conegut com el construir? 22 00:01:05,680 --> 00:01:06,240 >> AUDIÈNCIA: Loop. 23 00:01:06,240 --> 00:01:06,860 >> DAVID J. Malan: Així que un bucle. 24 00:01:06,860 --> 00:01:07,943 Així que bastant senzill. 25 00:01:07,943 --> 00:01:09,470 És, literalment, fa el que diu. 26 00:01:09,470 --> 00:01:12,210 I en Scratch, si vols ficar més peces del trencaclosques en allà, 27 00:01:12,210 --> 00:01:13,950 la peça creixerà per adaptar-s'hi. 28 00:01:13,950 --> 00:01:16,790 I veurem en C que podem fer el mateix. 29 00:01:16,790 --> 00:01:20,000 >> Un altre tipus de bucle, però, en scratch podria ser per sempre, 30 00:01:20,000 --> 00:01:21,820 o hi ha qualsevol nombre d'altres enfocaments. 31 00:01:21,820 --> 00:01:24,150 Però donem una més mirada generalista, amb una cara 32 00:01:24,150 --> 00:01:27,402 això és probablement molt familiar, en bucles de manera més general. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: Un cosa que els ordinadors 34 00:01:29,110 --> 00:01:31,860 són realment bons en és repetint ordres. 35 00:01:31,860 --> 00:01:33,910 Com a persona, s'obtindria molt avorrit si 36 00:01:33,910 --> 00:01:36,730 hagut de fer el mateix un munt de vegades en una fila. 37 00:01:36,730 --> 00:01:40,530 Però un ordinador pot fer la mateixa cosa milions o fins i tot milers de milions de vegades, 38 00:01:40,530 --> 00:01:43,290 i no s'avorreixen, i poder per complir realment bé. 39 00:01:43,290 --> 00:01:45,650 >> Així, per exemple, si volia desitjar a tots 40 00:01:45,650 --> 00:01:48,840 a Facebook un feliç aniversari mitjançant l'enviament d'un correu electrònic, 41 00:01:48,840 --> 00:01:51,550 em podria prendre més d'una segle per escriure realment a terme 42 00:01:51,550 --> 00:01:53,000 tots els correus electrònics a tot el món. 43 00:01:53,000 --> 00:01:57,780 Però amb només unes poques línies de codi, el que pugui té un sistema d'enviar un correu electrònic a tot el món 44 00:01:57,780 --> 00:01:59,930 a Facebook que vulguin un feliç aniversari. 45 00:01:59,930 --> 00:02:02,730 Així que això és el que els bucles són i per què són valuoses i una mica 46 00:02:02,730 --> 00:02:04,740 que els ordinadors poden fer molt bé. 47 00:02:04,740 --> 00:02:05,630 >> DAVID J. Malan: Així que si vostè ha estat el destinatari 48 00:02:05,630 --> 00:02:07,820 d'alguns CS50 i de Espai de Dropbox en els últims temps, 49 00:02:07,820 --> 00:02:10,590 que en realitat és precisament el que fer, utilitzant el codi exactament així. 50 00:02:10,590 --> 00:02:12,600 Essencialment tenim una gran full de càlcul en la qual 51 00:02:12,600 --> 00:02:15,016 la gent ha estat la introducció del seu noms i adreces de correu electrònic. 52 00:02:15,016 --> 00:02:18,160 I escrivim una mica de codi que pot iterar sobre aquestes adreces 53 00:02:18,160 --> 00:02:21,860 i escopir adreces úniques a si algú ha presentat diverses vegades. 54 00:02:21,860 --> 00:02:25,120 I a partir de llavors, li enviarem un automatitzat de bot de CS50, 55 00:02:25,120 --> 00:02:27,190 incloent el codi de cupó. 56 00:02:27,190 --> 00:02:29,290 >> Ara també hem buscat a aquesta construcció última vegada. 57 00:02:29,290 --> 00:02:33,100 I aquest és un particular, exemple de què? 58 00:02:33,100 --> 00:02:35,050 Així que, sí, una expressió booleana. 59 00:02:35,050 --> 00:02:37,050 I la forma es vol dir per capturar això també. 60 00:02:37,050 --> 00:02:39,966 Totes aquestes qüestions de la formar veritables o falses en scratch 61 00:02:39,966 --> 00:02:41,590 es veurà una mica d'alguna cosa com això. 62 00:02:41,590 --> 00:02:43,200 I cridem a això una expressió booleana. 63 00:02:43,200 --> 00:02:46,170 Això és realment cert o fals, sí o no. 64 00:02:46,170 --> 00:02:49,150 És una manera de respondre a una pregunta. 65 00:02:49,150 --> 00:02:52,420 >> I Mentrestant vostè pot utilitzar aquests Boolean expressions dins de constructes 66 00:02:52,420 --> 00:02:54,720 com aquests, que de curs són condicions 67 00:02:54,720 --> 00:02:57,259 o branques, proverbial bifurcacions en el camí. 68 00:02:57,259 --> 00:02:59,550 I poden veure no només d'aquesta manera, però també poden 69 00:02:59,550 --> 00:03:02,080 vigilés han associat amb ells. 70 00:03:02,080 --> 00:03:05,820 I en realitat es pot tenir una forma de tres forquilla a la carretera o una forquilla de quatre vies 71 00:03:05,820 --> 00:03:08,340 en el camí, simplement per implantació d'aquestes coses, 72 00:03:08,340 --> 00:03:10,510 com veuràs en scratch si vostè no té ja. 73 00:03:10,510 --> 00:03:13,550 I com es pot fer en C també. 74 00:03:13,550 --> 00:03:16,810 >> Prenguem un altre generalista mirar un alumnist, a més, que 75 00:03:16,810 --> 00:03:21,490 podria presentar un enfocament diferent a aquestes coses anomenades condicions. 76 00:03:21,490 --> 00:03:24,060 >> BILL GATES: La gent fa decisions cada dia. 77 00:03:24,060 --> 00:03:27,530 Per exemple, abans de sortir fora que tipus de tenir una sentència if que diu: 78 00:03:27,530 --> 00:03:31,480 si està plovent llavors necessitarà aconseguir el meu jaqueta. 79 00:03:31,480 --> 00:03:36,820 I els ordinadors són increïbles una vegada que decidir aquest tipus de declaracions, 80 00:03:36,820 --> 00:03:42,280 que poden executar de forma fiable aquestes coses a una velocitat increïble. 81 00:03:42,280 --> 00:03:48,240 I pel que un programa d'ordinador realment és una mica de matemàtiques i alguns 82 00:03:48,240 --> 00:03:53,050 si els estats on la decisió es va fer. 83 00:03:53,050 --> 00:03:55,020 >> DAVID J. Malan: Així com vostès saben, va ser 84 00:03:55,020 --> 00:03:57,880 gent com Bill Gates, Paul Allen, i altres 85 00:03:57,880 --> 00:04:00,240 que realment va donar inici a la anomenat ordinador personal 86 00:04:00,240 --> 00:04:01,990 revolució fa uns anys. 87 00:04:01,990 --> 00:04:04,140 Vaig pensar, abans de submergir-nos en alguns administrivia, 88 00:04:04,140 --> 00:04:09,920 ens agradaria relacionar un conte des del Albuquerque, Nou Mèxic Museu d'Història Natural 89 00:04:09,920 --> 00:04:13,650 i la ciència, on alguns de Bill Gates i les històries més primerenques de Pablo Allen 90 00:04:13,650 --> 00:04:17,470 es relata la manera que tenim ara PC actuals i les Macs i més. 91 00:04:17,470 --> 00:04:22,390 Per això, però, necessitem dos voluntaris que tenen molt bones veus de narració 92 00:04:22,390 --> 00:04:23,735 per llegir un guió en veu alta. 93 00:04:23,735 --> 00:04:25,530 >> Molt bé, què hi ha a tornar-hi. 94 00:04:25,530 --> 00:04:26,120 Anem amunt. 95 00:04:26,120 --> 00:04:27,770 ¿I què hi ha al davant aquí. 96 00:04:27,770 --> 00:04:28,340 Anem cap avall. 97 00:04:28,340 --> 00:04:29,600 Prengui seus llocs aquí. 98 00:04:29,600 --> 00:04:32,444 Com vostès vénen cap amunt, un parell d'anuncis administratius. 99 00:04:32,444 --> 00:04:34,360 seccionar, el procés de l'elecció d'una secció, 100 00:04:34,360 --> 00:04:36,068 començarà aquest De dimecres a divendres. 101 00:04:36,068 --> 00:04:38,400 Més sobre això ve Dimecres a conferència. 102 00:04:38,400 --> 00:04:41,770 >> Seccions Súper, per la seva banda, són cosa que li oferim la setmana 103 00:04:41,770 --> 00:04:45,310 la qual es convida a tota la classe per participar en escala prou gran 104 00:04:45,310 --> 00:04:47,690 seccions, una més còmoda, un menys còmode. 105 00:04:47,690 --> 00:04:51,340 I anem a anunciar els detalls que, a més, aquesta mateixa setmana. 106 00:04:51,340 --> 00:04:53,310 >> Mentrestant, les seccions sí, s'iniciarà 107 00:04:53,310 --> 00:04:57,241 en la tercera setmana del curs, l'índex zero, el que significa que aquests són un parell de setmanes 108 00:04:57,241 --> 00:04:57,740 fora. 109 00:04:57,740 --> 00:04:58,450 Així que no es preocupi. 110 00:04:58,450 --> 00:05:01,014 Encara no ha perdut res per l'estil. 111 00:05:01,014 --> 00:05:03,930 Mentrestant, en el interí, si vostè té alguna pregunta administrativament, 112 00:05:03,930 --> 00:05:08,120 un correu electrònic a mi mateix i Devon i Gabe i Rob en aquesta direcció aquí. 113 00:05:08,120 --> 00:05:10,320 >> Finalment, estableix problema 0 és, per descomptat, fora. 114 00:05:10,320 --> 00:05:12,320 Vostè pot haver notat que a la pàgina web del curs. 115 00:05:12,320 --> 00:05:14,840 S'ha de proveir de vostè totes les respostes a les preguntes 116 00:05:14,840 --> 00:05:18,250 és possible que tingui al llarg del camí per començar a utilitzar el conjunt de problemes. 117 00:05:18,250 --> 00:05:21,430 Però si vostè es troba en la necessitat d'una mà d'ajuda, 118 00:05:21,430 --> 00:05:25,020 per tots els mitjans atendre les hores d'oficina, Dilluns, dimarts, dimecres, dijous 119 00:05:25,020 --> 00:05:27,290 d'aquesta setmana a la tarda en quatre menjadors. 120 00:05:27,290 --> 00:05:31,650 Veure URL que hi ha de les indicacions d'on les hores d'oficina seran. 121 00:05:31,650 --> 00:05:34,000 >> Ara Complirem el nostre dos convidats aquí presents. 122 00:05:34,000 --> 00:05:34,740 Quin és el teu nom? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> DAVID J. Malan: Jay Paul, un plaer conèixer-te. 125 00:05:36,880 --> 00:05:37,330 >> Hikari: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> DAVID J. Malan: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> Hikari: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> DAVID J. Malan: Hikari. 129 00:05:38,810 --> 00:05:39,790 Encantat de conèixer-te també. 130 00:05:39,790 --> 00:05:42,123 Jay Paul i Hikari tenen en enfront d'ells en aquests música 131 00:05:42,123 --> 00:05:45,100 destaca 02:00 scripts que vaig imprimir a terme aquest matí al Nou Mèxic 132 00:05:45,100 --> 00:05:46,692 Museu d'Història Natural i Ciència. 133 00:05:46,692 --> 00:05:48,400 I el que jo pensava Ho faria en el projector 134 00:05:48,400 --> 00:05:52,830 és acompanyar a la seva recitació del guió i aquesta història 135 00:05:52,830 --> 00:05:54,700 amb algunes imatges visuals, no hi ha sorpreses. 136 00:05:54,700 --> 00:05:57,512 >> I el que he fet amb antelació està ressaltat previ en la seqüència de comandaments 137 00:05:57,512 --> 00:05:59,470 el que vostè ha de llegir, i el que ha de llegir. 138 00:05:59,470 --> 00:06:00,920 I anem essencialment paràgrafs només alterns. 139 00:06:00,920 --> 00:06:03,211 Així que és molt semblant que et poden ho han fet a la classe d'anglès. 140 00:06:03,211 --> 00:06:06,875 Això és realment obligar a l'audiència creure en la seva història aquí. 141 00:06:06,875 --> 00:06:07,600 Hem? 142 00:06:07,600 --> 00:06:13,272 Així que la història aquí és que tenim un BASIC, i comença a Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: Era hivern de 1974, a Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 on els hiverns poden ser freds. 145 00:06:20,240 --> 00:06:22,800 Un barbut, de pèl llarg desertor de la universitat nomenada 146 00:06:22,800 --> 00:06:27,280 Paul Allen va ser drudging través Harvard Quadrat, absort en els seus pensaments. 147 00:06:27,280 --> 00:06:31,050 La seva principal preocupació en aquests dies era com arribar al seu amic, Bill Gates, 148 00:06:31,050 --> 00:06:34,974 de deixar l'escola i anar en negocis amb ell. 149 00:06:34,974 --> 00:06:37,890 Hikari: Els dos ja havien anat a través d'una sèrie de projectes empresarials 150 00:06:37,890 --> 00:06:40,850 junts, a partir de la vora del llac escola a Seattle, on 151 00:06:40,850 --> 00:06:45,220 se'ls pagava en el temps lliure de l'ordinador a provar un ordinador PDP-10 a una hora local 152 00:06:45,220 --> 00:06:46,580 compartir companyia. 153 00:06:46,580 --> 00:06:50,930 El pla més recent havia estat la de deixar de fumar escola i formar una companyia de programari. 154 00:06:50,930 --> 00:06:53,440 Allen havia deixat Washington Universitat de l'Estat. 155 00:06:53,440 --> 00:06:58,380 Però en l'últim minut, Portes decidit seguir amb Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: Aquest dia, creuant Harvard Quadrat, Allen va descobrir el gener 157 00:07:02,080 --> 00:07:07,530 1975 emissió de Popular Electronics amb el titular de parada de la terra, 158 00:07:07,530 --> 00:07:11,900 Kit del Primer Món per miniordinadors per rivalitzar Models Comercials. 159 00:07:11,900 --> 00:07:14,430 Sota el titular era una imatge d'una petita caixa 160 00:07:14,430 --> 00:07:16,160 adornat amb llums i interruptors. 161 00:07:16,160 --> 00:07:19,770 Es deia el MITS Altair 8800. 162 00:07:19,770 --> 00:07:24,100 I Allen sabia que això era el que que havia estat buscant. 163 00:07:24,100 --> 00:07:26,350 >> Hikari: Dies de debat va seguir. 164 00:07:26,350 --> 00:07:30,170 Allen i Gates entenen la importància de l'Altair. 165 00:07:30,170 --> 00:07:32,480 Havien parlat sovint sobre microprocessadors 166 00:07:32,480 --> 00:07:35,250 i estaven esperant a veure què que es faria amb ells. 167 00:07:35,250 --> 00:07:39,770 Ara hi havia un kit miniordinador a la portada de Popular Electronics. 168 00:07:39,770 --> 00:07:42,830 Pel que sembla, no tenia el programari encara. 169 00:07:42,830 --> 00:07:46,830 S'imaginaven una nació de programadors descendien per MITS. 170 00:07:46,830 --> 00:07:49,590 I pel que van cridar Ed Roberts, el cap de l'empresa, 171 00:07:49,590 --> 00:07:53,330 legant tenir una versió de la Llenguatge de programació BASIC gairebé llest 172 00:07:53,330 --> 00:07:54,710 per l'Altair. 173 00:07:54,710 --> 00:07:55,570 No ho van fer. 174 00:07:55,570 --> 00:07:58,910 I Roberts ha d'haver sabut que no ho van fer. 175 00:07:58,910 --> 00:08:03,170 S'estava fent 10 trucades al dia de persones que tenien un BASIC gairebé llest. 176 00:08:03,170 --> 00:08:05,570 I la seva resposta d'estoc va ser: "La primera persona 177 00:08:05,570 --> 00:08:11,090 que es presenta amb un treball BASIC obté el contracte. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates i Allen Mai havia vist un Altair. 179 00:08:13,910 --> 00:08:17,600 Ells mai havien vist la Intel 8080 microprocessadors 180 00:08:17,600 --> 00:08:19,060 al cor de l'Altair. 181 00:08:19,060 --> 00:08:21,470 Però un parell d'anys abans Allen havia escrit un programa 182 00:08:21,470 --> 00:08:25,220 en un ordinador central que emulava l'operació d'un Intel anterior 183 00:08:25,220 --> 00:08:26,217 microprocessador. 184 00:08:26,217 --> 00:08:28,300 I aquesta vegada es faria el mateix. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> Hikari: Amb un processador Intel 8080 Manual al seu costat, 187 00:08:34,380 --> 00:08:37,770 Allen es va asseure a una Harvard ordinador PDP-10 188 00:08:37,770 --> 00:08:42,010 i va escriure l'emulador i programari eines necessàries per fer la programació. 189 00:08:42,010 --> 00:08:45,820 Mentrestant Gates, va deixar d'anar a les classes i es va dedicar 190 00:08:45,820 --> 00:08:48,120 per dissenyar el BASIC, usant tots els trucs 191 00:08:48,120 --> 00:08:53,130 ell sabia que per obtenir la mida per sota de 4 kilobytes. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAUL: Out in Albuquerque, Ed Roberts va rebre una trucada de Gates 193 00:08:55,870 --> 00:08:59,754 demanant informació sobre com el Altair maneja rutines específiques. 194 00:08:59,754 --> 00:09:01,170 Ningú li havia preguntat això abans. 195 00:09:01,170 --> 00:09:02,670 I Roberts va començar a interessar. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> Hikari: Amb el desenvolupament eines i el disseny llest, 198 00:09:07,970 --> 00:09:10,780 Gates i Allen van escriure el codi de la PDP-10, 199 00:09:10,780 --> 00:09:16,060 allistar altre estudiant de Harvard, Muntanya Davidoff, escriure rutines matemàtiques. 200 00:09:16,060 --> 00:09:19,450 Després d'una última nit de programació, Allen va agafar un avió 201 00:09:19,450 --> 00:09:22,970 per lliurar la seva BASIC per MITS. 202 00:09:22,970 --> 00:09:25,800 Va passar el viatge en avió a preocupar-se. 203 00:09:25,800 --> 00:09:28,490 I de tornada a Cambridge Gates, era preocupant. 204 00:09:28,490 --> 00:09:32,100 Havien provat la seva BASIC i que havia treballat en l'emulador. 205 00:09:32,100 --> 00:09:35,444 Però i si l'emulador es va equivocar? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Quan l'avió acostat a Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen va adonar que el seu BASIC, ara continguda prolixament 208 00:09:40,070 --> 00:09:42,460 en un petit rotllo de cinta perforada, es 209 00:09:42,460 --> 00:09:44,970 inútil sense una separada programa, anomenat un carregador, que 210 00:09:44,970 --> 00:09:47,550 diria l'Altair com per llegir l'ésser cinta de paper 211 00:09:47,550 --> 00:09:49,620 alimentat a la màquina de teletip. 212 00:09:49,620 --> 00:09:52,970 Va treure la seva llibreta i ràpidament gargotejar un programa carregador 213 00:09:52,970 --> 00:09:56,819 en llenguatge assemblador, a continuació, de forma manual traduït en què els 1s i 0s 214 00:09:56,819 --> 00:09:57,985 l'Altair entendria. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> Hikari: Allen esperava un neta poc, la companyia, d'alta tecnologia 217 00:10:03,830 --> 00:10:05,470 dirigit per homes en vestits de negocis. 218 00:10:05,470 --> 00:10:09,210 Així que es va sorprendre quan Roberts es va reunir ell a l'aeroport l'aspecte d'un ranxo 219 00:10:09,210 --> 00:10:10,270 mà. 220 00:10:10,270 --> 00:10:12,070 Roberts també es va sorprendre. 221 00:10:12,070 --> 00:10:16,340 Quan se li va caure la Harvard programador en un hotel car, 222 00:10:16,340 --> 00:10:20,790 Allen va haver de confessar que no podia donar-se el luxe de l'habitació. 223 00:10:20,790 --> 00:10:24,510 >> JAY PAUL: MITS, en si, era ubicat en un centre comercial amb molta pols. 224 00:10:24,510 --> 00:10:27,040 Dins un desordenat banc de treball va ser un Altair 225 00:10:27,040 --> 00:10:30,390 carregat amb 5 kilobytes de memòria i connectat per un cable 226 00:10:30,390 --> 00:10:32,030 a una màquina de teletip. 227 00:10:32,030 --> 00:10:37,200 Roberts i l'Enginyer Cap, Bill Iots, va esperar expectant 228 00:10:37,200 --> 00:10:40,660 com Allen alternar la configuració programa en l'Altair. 229 00:10:40,660 --> 00:10:44,980 El teletip va començar esbufegant quan es va aturar la cinta de paper a través del lector de cinta. 230 00:10:44,980 --> 00:10:47,215 Va prendre potser 15 minuts per carregar el programa. 231 00:10:47,215 --> 00:10:52,110 Llavors el teletip imprès abruptament 1 ràpida memòria, llavors el símbol del preparat, 232 00:10:52,110 --> 00:10:55,340 i Allen va començar a teclejar alguns comandaments de prova. 233 00:10:55,340 --> 00:10:57,400 Per a sorpresa de tots, el programari va funcionar. 234 00:10:57,400 --> 00:10:58,525 Hi havia bestioles, és clar. 235 00:10:58,525 --> 00:11:02,070 Però el principal era que funcionava. 236 00:11:02,070 --> 00:11:06,570 >> Hikari: Més tard, en el seu camí a un 3,00 $ dinar en Pancho, una vespa volar 237 00:11:06,570 --> 00:11:10,470 a la finestra de la camioneta camió i va picar Allen al braç. 238 00:11:10,470 --> 00:11:13,070 Però en aquest moment res podria espatllar l'estat d'ànim. 239 00:11:13,070 --> 00:11:17,210 El Altair ara tenia el seu BASIC, el primer programari comercial per a una llar 240 00:11:17,210 --> 00:11:23,260 ordinador, fet per Paul Allen i Bill Gates, fent negocis com Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> DAVID J. Malan: Molts gràcies als nostres dos lectors. 242 00:11:25,336 --> 00:11:30,690 >> [Aplaudiments] 243 00:11:30,690 --> 00:11:32,520 >> DAVID J. Malan: Ara vostè té la seva opció, 244 00:11:32,520 --> 00:11:35,880 abans de sortir, d'un brillant o una resplendor al dark-- oh, 245 00:11:35,880 --> 00:11:40,810 esperi un segon, espera-- brillant i una resplendor en la foscor elefant 246 00:11:40,810 --> 00:11:42,534 a partir del CS50 propi Cheng Gong. 247 00:11:42,534 --> 00:11:43,450 Hikari: Aw, gràcies. 248 00:11:43,450 --> 00:11:45,324 DAVID J. Malan: Tots bé, moltes gràcies. 249 00:11:45,324 --> 00:11:49,855 [Aplaudiments] 250 00:11:49,855 --> 00:11:51,105 DAVID J. Malan: Així veritable història. 251 00:11:51,105 --> 00:11:54,380 Això és per dir que tots aquests màquines i la facilitat amb què 252 00:11:54,380 --> 00:11:56,270 utilitzar ara i prendre per descomptat, de veritat 253 00:11:56,270 --> 00:12:00,070 començat aquí, a prop d'aquest teatre real. 254 00:12:00,070 --> 00:12:03,930 I avui, si no has estat, és a dir Maxwell Dworkin, l'ordinador 255 00:12:03,930 --> 00:12:05,810 edifici de ciències, També al voltant de la cantonada. 256 00:12:05,810 --> 00:12:09,760 I a la segona planta d'aquest edifici fa penjar tres pàgines 257 00:12:09,760 --> 00:12:12,740 a partir del codi font original que Bill Gates i Paul Allen van escriure. 258 00:12:12,740 --> 00:12:14,770 De fet, si l'ús que un zoom en es pot veure no només 259 00:12:14,770 --> 00:12:17,350 els seus noms a la Tipus d'original, sinó també 260 00:12:17,350 --> 00:12:22,100 seves firmes que adornaven 1 uns anys l'última vegada que van visitar. 261 00:12:22,100 --> 00:12:25,800 >> Però el que era especialment convincent sobre això és el que es van proposar fer 262 00:12:25,800 --> 00:12:29,760 era escriure un programa que faria permetre a altres persones a escriure 263 00:12:29,760 --> 00:12:30,950 els seus propis programes. 264 00:12:30,950 --> 00:12:34,280 En aquest moment tot el que hi havia amb aquesta màquina Altair feta per MITS. 265 00:12:34,280 --> 00:12:40,020 I tot el que necessitaven era alguna forma de pel que és fàcil per als aficionats i la gent 266 00:12:40,020 --> 00:12:45,300 Ens agradaria en aquest espai per realment programa que sense necessàriament comprendre 267 00:12:45,300 --> 00:12:49,060 Codi assemblador o màquina codi, o Déu no ho vulgui, 0s i 1s. 268 00:12:49,060 --> 00:12:51,190 Nosaltres els programadors, com els que en aquesta habitació, ens 269 00:12:51,190 --> 00:12:54,070 vull ser capaç d'expressar nosaltres mateixos molt més com pseudo codi 270 00:12:54,070 --> 00:12:57,330 encara que és una mica més nit exigent del que parlem la setmana passada. 271 00:12:57,330 --> 00:13:00,970 No volem escriure codi com aquest, que van fer Paul Allen i Bill Gates. 272 00:13:00,970 --> 00:13:04,850 Nosaltres, en canvi, volem escriure codi que es veu una mica més fàcil d'utilitzar. 273 00:13:04,850 --> 00:13:07,150 >> Ara bé, aquest és un llenguatge conegut com BASIC. 274 00:13:07,150 --> 00:13:11,497 I els números de línia no són el que utilitzar simplement comptar les línies de codi 275 00:13:11,497 --> 00:13:12,330 que vostè està escrivint. 276 00:13:12,330 --> 00:13:14,038 Ni tan sols hem de fer això en aquests dies. 277 00:13:14,038 --> 00:13:16,060 Però es pot veure aquí com escriure "Hola, món" 278 00:13:16,060 --> 00:13:18,660 seria de fet presumiblement imprimir precisament això. 279 00:13:18,660 --> 00:13:22,710 I així el que Bill i Paul van fer va ser donar poder a la gent a escriure codi com aquest 280 00:13:22,710 --> 00:13:27,240 lloc de-- si vostè pren una mirada al ciències de la computació pared-- codi com aquest. 281 00:13:27,240 --> 00:13:29,290 >> De fet, recentment CS50 tingut l'oportunitat 282 00:13:29,290 --> 00:13:32,540 seure amb el professor Harry Lewis en el departament de ciència d'ordinadors, que 283 00:13:32,540 --> 00:13:34,640 realment ensenyat Bill Gates, fa alguns anys, 284 00:13:34,640 --> 00:13:38,460 i és aquí de peu davant aquestes tres pàgines d'extractes. 285 00:13:38,460 --> 00:13:39,560 Anem a fer una ullada. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: El que tenim aquí és una l'oferta d'una peça primerenca de programari 287 00:13:45,520 --> 00:13:50,240 escrit per Bill Gates i Paul Allen, els fundadors de Microsoft. 288 00:13:50,240 --> 00:13:52,570 Així que el codi és interessant per dues raons. 289 00:13:52,570 --> 00:13:55,480 En primer lloc, es va fer El primer producte de Microsoft, 290 00:13:55,480 --> 00:14:01,810 que era un intèrpret per el llenguatge de programació BASIC. 291 00:14:01,810 --> 00:14:04,940 I en segon lloc, es tractava d' un dels primers intents 292 00:14:04,940 --> 00:14:10,580 per crear un intèrpret tan ordinari la gent podria utilitzar els ordinadors personals. 293 00:14:10,580 --> 00:14:12,670 >> Així que Bill Gates va ser una estudiant a Harvard. 294 00:14:12,670 --> 00:14:14,820 Vaig començar a ensenyar a Harvard el 1974. 295 00:14:14,820 --> 00:14:16,560 Això es va fer el 1975. 296 00:14:16,560 --> 00:14:20,180 Així que va ser a principis de la seva carrera i al principi de la meva carrera. 297 00:14:20,180 --> 00:14:23,790 De fet, em van ensenyar a Bill en un curs en aquesta època. 298 00:14:23,790 --> 00:14:27,130 Paul Allen no era un Harvard estudiant, però 299 00:14:27,130 --> 00:14:31,020 havia estat una escola secundària company de Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Si véns i mires a la llista, podràs 301 00:14:33,740 --> 00:14:36,230 en realitat trobar tercera nom, Muntanya Davidoff, 302 00:14:36,230 --> 00:14:39,260 qui va ser company de classe de Gates aquí a Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, així que aquí hi ha un interessant comentari aquí. 304 00:14:41,340 --> 00:14:47,150 Diu "A 4K pot eliminar d'arrel quadrada però per bucles encara han de treballar ". 305 00:14:47,150 --> 00:14:53,080 OK, així que el que això significa és que hi ha Hi havia dues formes de compilar aquest programa. 306 00:14:53,080 --> 00:14:57,860 Un era per executar-se en una versió d'aquest equip Altair 307 00:14:57,860 --> 00:15:04,310 que només tenia 4K paraules de memòria, 4.096 paraules de memòria. 308 00:15:04,310 --> 00:15:07,050 Però la gran versió tenia 8K. 309 00:15:07,050 --> 00:15:09,770 I així, el que diu és que en la versió 4K 310 00:15:09,770 --> 00:15:12,770 calia esborrar alguns codi perquè s'ajusti. 311 00:15:12,770 --> 00:15:14,790 I una de les coses que suprimiria 312 00:15:14,790 --> 00:15:16,290 seria la rutina d'arrel quadrada. 313 00:15:16,290 --> 00:15:20,360 Però pel que sembla, la per llaços encara ha 314 00:15:20,360 --> 00:15:26,392 treballar fins i tot quan estàs compilant baix per només la versió de 4K de l'ordinador. 315 00:15:26,392 --> 00:15:29,350 DAVID J. Malan: Així que un dels temes, com veurem en ciències de la computació, 316 00:15:29,350 --> 00:15:31,430 És aquesta noció de capes i l'abstracció, 317 00:15:31,430 --> 00:15:34,670 i realment dempeus sobre les espatlles de persones que ens han precedit, no 318 00:15:34,670 --> 00:15:37,890 a diferència d'alguns dels Bill Gates i narrativa Paul Allen aquí. 319 00:15:37,890 --> 00:15:40,080 I el que això significa és que avui podem donar per 320 00:15:40,080 --> 00:15:43,490 fet que les coses són en realitat més fàcil per a nosaltres per escriure codi. 321 00:15:43,490 --> 00:15:47,170 De fet el codi, com vam dir divendres, és més tècnicament conegut com codi font. 322 00:15:47,170 --> 00:15:52,210 I és aquest anglès com sintaxi això és més propi i més ben definit 323 00:15:52,210 --> 00:15:55,480 que alguna cosa com pseudo codi, per que no existeix una definició formal. 324 00:15:55,480 --> 00:15:58,320 >> I avui ho anem és centrar-se en el codi font 325 00:15:58,320 --> 00:16:01,010 que té aquest aspecte, el que és cert que a primera vista 326 00:16:01,010 --> 00:16:02,690 sembla completament críptica. 327 00:16:02,690 --> 00:16:08,540 I, francament, és molt més estètic complex que el programa subjacent és. 328 00:16:08,540 --> 00:16:13,300 Tot aquest programa ho fa, record, és el que vam dir? 329 00:16:13,300 --> 00:16:14,990 Simplement imprimeix "Hola món". 330 00:16:14,990 --> 00:16:19,600 I no obstant això, mira totes les coses que necessitem per embolicar al voltant d'aquesta frase molt simple. 331 00:16:19,600 --> 00:16:21,750 Però al poc temps tots aquestes línies i més 332 00:16:21,750 --> 00:16:24,800 farà molt millor sentit per a vostè. 333 00:16:24,800 --> 00:16:26,940 >> I el flux és el següent. 334 00:16:26,940 --> 00:16:31,220 El que necessitem a la nostra disposició és prendre codi, com a font 335 00:16:31,220 --> 00:16:32,340 codi que acabem de veure. 336 00:16:32,340 --> 00:16:35,060 I necessitem un nou programa per executar a través. 337 00:16:35,060 --> 00:16:39,130 Necessitem algorismes que poden convertir el codi font, així, 338 00:16:39,130 --> 00:16:41,932 en codi objecte, 0s i 1s. 339 00:16:41,932 --> 00:16:43,890 En altres paraules, el que anem a aprendre avui 340 00:16:43,890 --> 00:16:46,620 és com fer això, escriure codi font sobre de la tapa, 341 00:16:46,620 --> 00:16:49,930 passar com a entrada a un especial programa conegut com un compilador, 342 00:16:49,930 --> 00:16:52,140 i anem a produir codi objecte. 343 00:16:52,140 --> 00:16:54,600 La qual cosa és només una forma elegant de dient anem a prendre alguna cosa 344 00:16:54,600 --> 00:16:58,350 que són aquestes, passar- en un programa anomenat un compilador, 345 00:16:58,350 --> 00:17:01,210 produir codi objecte que són aquestes. 346 00:17:01,210 --> 00:17:04,720 >> Així que aquests són literalment els patrons de 0s i 1s 347 00:17:04,720 --> 00:17:08,550 que s'entén per un Ordinador Intel en aquests dies, 348 00:17:08,550 --> 00:17:12,480 que si s'interpreta per la CPU, els cervells a l'interior d'un ordinador, 349 00:17:12,480 --> 00:17:16,130 literalment imprimir, simplement, "hola món". 350 00:17:16,130 --> 00:17:19,670 Ara no hi ha manera més 0s i 1s que vostè que espero pugui ser necessària per a això. 351 00:17:19,670 --> 00:17:22,520 Però això és perquè estem construint en una bona part de la complexitat 352 00:17:22,520 --> 00:17:24,270 que a partir d'ara podem donar per fet. 353 00:17:24,270 --> 00:17:27,869 En altres paraules, un munt de gent intel · ligent ens han donat una gran quantitat d'eines interessants 354 00:17:27,869 --> 00:17:32,480 i programari de gran abast amb el qual ara pot fer projectes propis. 355 00:17:32,480 --> 00:17:33,400 >> Així que anem a començar. 356 00:17:33,400 --> 00:17:36,640 Mentre que divendres passat, i per Problemes de 0 aquesta setmana, 357 00:17:36,640 --> 00:17:39,000 estaràs jugant en un món que s'assembla a això. 358 00:17:39,000 --> 00:17:42,180 A partir d'avui i per al problema Setembre 1 la propera setmana, el codi 359 00:17:42,180 --> 00:17:45,410 va a mirar una mica més críptica, però funcionalment és 360 00:17:45,410 --> 00:17:46,940 serà el mateix. 361 00:17:46,940 --> 00:17:50,770 Així previ avís, la part superior és Scratch, conclusió és C. Francament esgarrapades 362 00:17:50,770 --> 00:17:52,780 és molt més fàcil amable i accessible. 363 00:17:52,780 --> 00:17:56,890 Però si ara comparar visualment superior a part inferior, hi ha una espècie d'un a un 364 00:17:56,890 --> 00:17:59,690 correspondència entre el peces d'un trencaclosques i l'idioma 365 00:17:59,690 --> 00:18:00,870 estem a punt de jugar. 366 00:18:00,870 --> 00:18:04,420 En particular, per exemple, la trencaclosques blau peça sobre de la tapa, 367 00:18:04,420 --> 00:18:08,370 aparentment és equivalent al que la paraula clau o frase especial en aquest idioma 368 00:18:08,370 --> 00:18:09,062 anomenat C? 369 00:18:09,062 --> 00:18:09,770 AUDIÈNCIA: printf. 370 00:18:09,770 --> 00:18:10,728 DAVID J. Malan: printf. 371 00:18:10,728 --> 00:18:12,140 Això significa que la impressió amb format. 372 00:18:12,140 --> 00:18:15,240 I això és només una fantasia manera de dir printf en C 373 00:18:15,240 --> 00:18:18,615 serà una declaració o una funció que imprimeix alguna cosa a la pantalla. 374 00:18:18,615 --> 00:18:19,990 Què vol imprimir a la pantalla? 375 00:18:19,990 --> 00:18:23,627 El que vostè li digui que a l'interior de cotitzacions, dins de parèntesi. 376 00:18:23,627 --> 00:18:25,460 Així que de nou, és cert, hi ha un munt de coses 377 00:18:25,460 --> 00:18:27,990 que cal tenir en compte, parèntesi, cometes, punts i comes, 378 00:18:27,990 --> 00:18:28,656 i tot això. 379 00:18:28,656 --> 00:18:30,600 Però tot això és una espècie de fora de lloc. 380 00:18:30,600 --> 00:18:33,660 La lliçó interessant per ara és que el bloc de veu en scratch 381 00:18:33,660 --> 00:18:37,520 és més o menys equivalent a la sentència printf en C. 382 00:18:37,520 --> 00:18:41,390 >> Mentrestant, la peça del trencaclosques de color groc sobre de la tapa, quan la bandera verda es fa clic, 383 00:18:41,390 --> 00:18:44,736 és probablement equivalent al que la paraula clau aquí? 384 00:18:44,736 --> 00:18:45,360 AUDIÈNCIA: Principal. 385 00:18:45,360 --> 00:18:46,359 DAVID J. Malan: Així principal. 386 00:18:46,359 --> 00:18:47,410 Potser int, potser sense efecte. 387 00:18:47,410 --> 00:18:51,280 Però principal tipus de sons com que és important, i de fet ho és. 388 00:18:51,280 --> 00:18:54,080 Així que quan la bandera verda fa clic és, de nou, la peça del trencaclosques 389 00:18:54,080 --> 00:18:56,390 que arrenca un programa d'Scratch sencer. 390 00:18:56,390 --> 00:19:02,140 Però anem a començar ara trucant que la principal, aquesta funció coneguda com a principal. 391 00:19:02,140 --> 00:19:06,410 >> Ara mentrestant anem a generalitzar de la següent manera. 392 00:19:06,410 --> 00:19:08,780 Podríem trucar a dir una funció. 393 00:19:08,780 --> 00:19:10,580 I pot semblar específicament com aquest. 394 00:19:10,580 --> 00:19:11,770 Bé, què passa amb bucles? 395 00:19:11,770 --> 00:19:16,540 Si volem iniciar la conversió o traduir més en Scratch per a C, 396 00:19:16,540 --> 00:19:19,400 aquesta cosa aparentment només diu "hola món" per sempre. 397 00:19:19,400 --> 00:19:23,060 Així que si vostè associa aquests scripts amb un gat en Scratch, 398 00:19:23,060 --> 00:19:26,560 que només seguirà dient en una mena de bombolla de la historieta, 399 00:19:26,560 --> 00:19:29,922 "Hola món, hola món, hola món ", fins a la sacietat, per sempre. 400 00:19:29,922 --> 00:19:33,130 Si volem fer alguna cosa semblant a C, va a semblar una mica críptic. 401 00:19:33,130 --> 00:19:35,463 Però podem aconseguir el mateix resultats, ja que amb el temps 402 00:19:35,463 --> 00:19:36,861 esbrinar, amb una sintaxi com aquesta. 403 00:19:36,861 --> 00:19:39,360 Vaig a utilitzar printf de nou, perquè al final del dia 404 00:19:39,360 --> 00:19:42,040 Vull imprimir "hola món". 405 00:19:42,040 --> 00:19:45,610 I estic semblar servir un paraula clau que no és per sempre. 406 00:19:45,610 --> 00:19:47,320 És el seu lloc, mentre que la paraula. 407 00:19:47,320 --> 00:19:49,650 Però només semànticament en Anglès, mentre que tipus de 408 00:19:49,650 --> 00:19:52,120 suggereix algun tipus de bucle o cicle. 409 00:19:52,120 --> 00:19:55,070 >> Així que passa a ser la paraula clau que utilitza C. 410 00:19:55,070 --> 00:20:00,700 I encara que és cert, per què, mentre que veritable valor eficaç per sempre? 411 00:20:00,700 --> 00:20:04,240 Bé, mentre que, com veurem aviat apreciar encara més, 412 00:20:04,240 --> 00:20:08,140 té aquesta entre parèntesis al costat d'ell on vostè pot posar una expressió booleana. 413 00:20:08,140 --> 00:20:11,360 I mentre que expressió és veritable, el codi, 414 00:20:11,360 --> 00:20:14,750 com s'indica entre aquests dos claus com anem a cridar, 415 00:20:14,750 --> 00:20:16,880 s'acaba de seguir corrent una i altra vegada. 416 00:20:16,880 --> 00:20:18,410 >> Tan cert és cert. 417 00:20:18,410 --> 00:20:20,900 Així, mentre que els mitjans veritables només fer això per sempre. 418 00:20:20,900 --> 00:20:23,480 És gairebé un estúpid construcció d'expressar-se. 419 00:20:23,480 --> 00:20:26,590 Però allà no era sempre paraula clau en C. No hi havia temps. 420 00:20:26,590 --> 00:20:29,390 I hi havia una molt simple Expressió booleana com a veritable. 421 00:20:29,390 --> 00:20:32,210 I pel que aquest, ja veurem, aconsegueix el mateix resultat. 422 00:20:32,210 --> 00:20:33,890 >> Com més podria implementar un bucle? 423 00:20:33,890 --> 00:20:36,980 Bé, en scratch que et poden codificar un nombre específic 424 00:20:36,980 --> 00:20:39,430 d'iteracions en el bucle aquí. 425 00:20:39,430 --> 00:20:43,210 I això és exactament el que podria fer en aquesta versió de C, 426 00:20:43,210 --> 00:20:46,140 pel que tenim una trucada per al bucle. 427 00:20:46,140 --> 00:20:49,850 I el bucle aquí va per repetir, de manera una mica críptica, 428 00:20:49,850 --> 00:20:54,100 des del valor 0 en fins a a però menys de 10. 429 00:20:54,100 --> 00:20:55,955 >> Ara variables en zero. 430 00:20:55,955 --> 00:20:57,830 Potser no hagi tingut ocasió d'utilitzar aquests. 431 00:20:57,830 --> 00:21:02,516 Però quin sentit té, en general, d'una variable vam dir la setmana passada? 432 00:21:02,516 --> 00:21:03,015 Què és això? 433 00:21:03,015 --> 00:21:03,780 >> AUDIÈNCIA: Punts. 434 00:21:03,780 --> 00:21:05,200 >> DAVID J. Malan: destacar? 435 00:21:05,200 --> 00:21:05,700 Oh, assenyala. 436 00:21:05,700 --> 00:21:07,620 Acceptar, fer el seguiment dels punts, per exemple, en un joc. 437 00:21:07,620 --> 00:21:09,510 O més en general fer el que amb la variable? 438 00:21:09,510 --> 00:21:10,450 Quina és la utilitat d'ells? 439 00:21:10,450 --> 00:21:10,825 >> AUDIÈNCIA: Memòria. 440 00:21:10,825 --> 00:21:11,750 >> DAVID J. Malan: Sí, i la memòria. 441 00:21:11,750 --> 00:21:13,000 És per guardar alguna cosa. 442 00:21:13,000 --> 00:21:17,336 I la classe de ximple em visual utilitzat l'última vegada va ser com aquest recipient de vidre. 443 00:21:17,336 --> 00:21:19,710 I si volguéssim emmagatzemar quelcom a una variable, 444 00:21:19,710 --> 00:21:21,918 per exemple, en aquest moment el valor és 6 perquè hi ha 445 00:21:21,918 --> 00:21:23,450 són 6 pilotes de taula a aquí. 446 00:21:23,450 --> 00:21:26,158 És només una espècie d'emmagatzematge contenidor que sota el capó 447 00:21:26,158 --> 00:21:30,030 s'implementa amb bits, 0 i 1, però, un equip passa a fer això. 448 00:21:30,030 --> 00:21:32,900 >> Així que en Scratch, si volen tenir una variable, 449 00:21:32,900 --> 00:21:34,840 podem utilitzar un bloc de color taronja com aquest. 450 00:21:34,840 --> 00:21:37,050 Anomenarem a aquest comptador en aquest cas particular. 451 00:21:37,050 --> 00:21:38,890 Jo inicialitza a 0. 452 00:21:38,890 --> 00:21:41,080 I el que jo faig llavors? 453 00:21:41,080 --> 00:21:44,780 Sempre, dir comptador, que si jugues amb això en Scratch, 454 00:21:44,780 --> 00:21:45,780 vostè només veu les ratllades. 455 00:21:45,780 --> 00:21:49,920 El gat o el que sigui el vestit es posa en ell parlarà el nombre en qüestió. 456 00:21:49,920 --> 00:21:52,840 >> Canviar comptador a 1 és com a increment a 1. 457 00:21:52,840 --> 00:21:56,580 I així això va a comptar de què i què? 458 00:21:56,580 --> 00:21:59,114 Des de 0 fins a l'infinit, o fins que es trenca de Scratch, 459 00:21:59,114 --> 00:22:01,030 o fins que tipus de perdre interès a veure 460 00:22:01,030 --> 00:22:02,650 què tan alt que realment pot comptar. 461 00:22:02,650 --> 00:22:04,800 >> Així que com podem convertir això en C? 462 00:22:04,800 --> 00:22:06,480 Va a semblar una mica críptic. 463 00:22:06,480 --> 00:22:08,896 Però, de nou, si ens fixem en cada d'aquestes línies individualment 464 00:22:08,896 --> 00:22:10,410 quin tipus de formació general. 465 00:22:10,410 --> 00:22:13,526 Així que pel que sembla int va a tenir algun significat especial en C. 466 00:22:13,526 --> 00:22:14,400 Anem a veure això de nou. 467 00:22:14,400 --> 00:22:15,810 Com acotació al marge que significa sencer. 468 00:22:15,810 --> 00:22:16,990 Així que només significa nombre. 469 00:22:16,990 --> 00:22:18,920 Així que aquest és el tipus de recipient de vidre que vull, un 470 00:22:18,920 --> 00:22:21,120 que pot emmagatzemar nombres, No una taula boles. 471 00:22:21,120 --> 00:22:25,520 I jo vaig a utilitzar el signe igual cal assignar-li un valor de 0. 472 00:22:25,520 --> 00:22:29,440 Així que això és bastant com a conjunt comptador a 0, però en C. 473 00:22:29,440 --> 00:22:32,840 >> Mentrestant, mentre que la veritable, que era equivalent, per descomptat, per sempre, 474 00:22:32,840 --> 00:22:35,980 tot i que és una mica críptic, i després dins de les claus. 475 00:22:35,980 --> 00:22:39,188 I vostè pot pensar en aquestes claus, el que pot escriure en el teclat, 476 00:22:39,188 --> 00:22:43,110 com realment ser com la curvatura en aquests blocs de llaç de color groc al principi. 477 00:22:43,110 --> 00:22:45,700 Abasta diverses línies de codi. 478 00:22:45,700 --> 00:22:48,120 >> Printf és cada vegada un mica de por ara perquè 479 00:22:48,120 --> 00:22:51,120 veure no només cita entre parèntesis. 480 00:22:51,120 --> 00:22:55,160 Però, què més hi ha de nou sintàcticament en aquest exemple? 481 00:22:55,160 --> 00:22:57,300 Hi ha un percentatge d. 482 00:22:57,300 --> 00:22:58,551 I a continuació, la barra invertida n hi és. 483 00:22:58,551 --> 00:23:00,883 Ens van fer veure que abans, fins i tot encara que jo no ho vaig esmentar. 484 00:23:00,883 --> 00:23:01,886 Llavors hi ha una coma. 485 00:23:01,886 --> 00:23:03,010 I després hi ha un taulell. 486 00:23:03,010 --> 00:23:05,010 >> Però ja veurem en tan sols un moment en què això és només 487 00:23:05,010 --> 00:23:09,080 una forma estàndard de dir una impressió "Nombre decimal", cometes, tanca, 488 00:23:09,080 --> 00:23:10,500 un nombre decimal. 489 00:23:10,500 --> 00:23:13,370 Però jo vaig a dir més tard qual cosa el nombre decimal és. 490 00:23:13,370 --> 00:23:16,835 Així que el fet que hi ha una coma en aquesta línia refrany printf, 491 00:23:16,835 --> 00:23:18,710 significa seguir endavant i d'impressió un nombre decimal. 492 00:23:18,710 --> 00:23:23,110 Ah, i per cert, el número és qualsevol que sigui el valor d'aquesta variable és. 493 00:23:23,110 --> 00:23:25,880 I així, per fer això més clar, anem a veure un exemple 494 00:23:25,880 --> 00:23:30,930 poc temps que implica exactament printf en el context dels programes de real c. 495 00:23:30,930 --> 00:23:33,472 >> Ara acaba de concloure alguns d'aquestes construccions. 496 00:23:33,472 --> 00:23:36,680 Expressions booleanes, potser no tingui ocasió per utilitzar aquests en el seu programa 497 00:23:36,680 --> 00:23:39,450 Però és possible que molt bé, especialment si l'ús de condicions. 498 00:23:39,450 --> 00:23:43,460 I pel que aquests dos exemples de Raspe significaria si x és menor que i, 499 00:23:43,460 --> 00:23:48,770 o si x és menor que i i i és menys de z, com podríem traduir això? 500 00:23:48,770 --> 00:23:50,810 >> Bé, en C és només tindrà aquest aspecte. 501 00:23:50,810 --> 00:23:55,300 Una mica críptiques, més parèntesi, alguns símbols d'unió estrany, però fonamentalment 502 00:23:55,300 --> 00:23:59,160 les idees són tan simples com estan en el món peça del trencaclosques. 503 00:23:59,160 --> 00:24:02,690 Simplement estem comprovant si alguna cosa és menor que una altra cosa. 504 00:24:02,690 --> 00:24:03,910 >> Què hi ha de les condicions? 505 00:24:03,910 --> 00:24:09,710 En poques paraules en anglès, el que fa aquest tros de codi de Scratch do li diries? 506 00:24:09,710 --> 00:24:11,050 >> AUDIÈNCIA: Compara dos nombres. 507 00:24:11,050 --> 00:24:13,760 >> DAVID J. Malan: Compara dos números, i si x és menor que i 508 00:24:13,760 --> 00:24:14,860 diu tant. 509 00:24:14,860 --> 00:24:18,080 Si x és més gran que i diu tant, una altra cosa 510 00:24:18,080 --> 00:24:20,740 si x és igual a i diu tant. 511 00:24:20,740 --> 00:24:22,180 Ara on x i i vénen? 512 00:24:22,180 --> 00:24:22,680 Qui sap. 513 00:24:22,680 --> 00:24:25,380 Aquest tros d'esgarrapades codi està fora de context. 514 00:24:25,380 --> 00:24:29,050 Però el que volem fer ara és traduir això per un moment per veure. 515 00:24:29,050 --> 00:24:31,660 >> Així com vostè se senti còmode aquesta setmana a de problemes 516 00:24:31,660 --> 00:24:34,190 0 jugant en aquest món a l'esquerra, s'adonen 517 00:24:34,190 --> 00:24:36,940 que les idees no estan canviant aquesta setmana o la que ve o més enllà. 518 00:24:36,940 --> 00:24:38,690 Estem simplement anar a començar a escriure coses 519 00:24:38,690 --> 00:24:41,240 d'una manera diferent amb la nostra teclat en lloc del nostre ratolí. 520 00:24:41,240 --> 00:24:44,577 >> Així que si x és menor que i, i hi ha alguns parèntesis, allà, 521 00:24:44,577 --> 00:24:47,160 llavors hi ha algunes claus de nou al tipus d'encapsular 522 00:24:47,160 --> 00:24:48,970 igual que les peces d'un trencaclosques de color groc fan. 523 00:24:48,970 --> 00:24:53,000 I vaig a printf x és menor que i i així successivament. 524 00:24:53,000 --> 00:24:56,540 >> El millor de C, com es pot veure aquí, 525 00:24:56,540 --> 00:25:00,480 és que no obté aquesta jerarquització, implantació, niant això és necessàriament 526 00:25:00,480 --> 00:25:02,220 va a empènyer al seu codi a la dreta. 527 00:25:02,220 --> 00:25:04,990 Vostè pot tenir tot al seu lloc alineació agrada prolixament això. 528 00:25:04,990 --> 00:25:08,960 Però això és només una estètica detall veurem de nou en poc temps. 529 00:25:08,960 --> 00:25:09,660 >> Bé. 530 00:25:09,660 --> 00:25:13,290 Així que això ens porta de nou a aquest programa busca críptica. 531 00:25:13,290 --> 00:25:15,180 Anem a realment escriure una mica de codi. 532 00:25:15,180 --> 00:25:16,830 Ara, com anar sobre l'escriptura de codi? 533 00:25:16,830 --> 00:25:21,310 Tots aquests anys que he posseït un Mac o un PC, d'escriptori o portàtil, 534 00:25:21,310 --> 00:25:24,520 que realment ha tingut la capacitat de per començar a escriure codi de programació. 535 00:25:24,520 --> 00:25:27,050 Però és probable que falta un tipus especial de programa. 536 00:25:27,050 --> 00:25:28,470 Per descomptat que pot escriure codi. 537 00:25:28,470 --> 00:25:30,740 Però no es pot necessàriament, fora de la caixa, 538 00:25:30,740 --> 00:25:34,210 convertir aquest codi font en codi objecte, 0s i 1s 539 00:25:34,210 --> 00:25:35,619 sense que en el seu ordinador? 540 00:25:35,619 --> 00:25:36,410 AUDIÈNCIA: Compiler. 541 00:25:36,410 --> 00:25:37,630 DAVID J. Malan: Així que un compilador, dreta. 542 00:25:37,630 --> 00:25:39,730 Ara, la majoria de vostès probablement no són amos d'un compilador, 543 00:25:39,730 --> 00:25:41,259 mai han descarregat un compilador. 544 00:25:41,259 --> 00:25:44,300 Però veuràs el pot descarregar com la majoria de qualsevol altra peça de programari. 545 00:25:44,300 --> 00:25:47,470 En el món de Mac OS, és possible que descarregar o ja han descarregat 546 00:25:47,470 --> 00:25:50,437 cosa anomenada Xcode o GCC o Clang. 547 00:25:50,437 --> 00:25:52,270 Si ve de la Finestres món que et poden 548 00:25:52,270 --> 00:25:56,190 han descarregat Visual Studio, Visual Basic, entorns com això. 549 00:25:56,190 --> 00:25:59,200 Hi ha dotzenes de compiladors en aquests dies en què pot utilitzar. 550 00:25:59,200 --> 00:26:01,940 No obstant això, el curt d'ell aquí és que seria un dolor 551 00:26:01,940 --> 00:26:04,480 i, francament, una tecnològica malson per a centenars 552 00:26:04,480 --> 00:26:07,680 de les persones amb diferent configuracions d'ordinador a tot 553 00:26:07,680 --> 00:26:09,800 configurar les seves màquines exactament de la mateixa manera 554 00:26:09,800 --> 00:26:11,700 de manera que tots podem estar a la mateixa pàgina. 555 00:26:11,700 --> 00:26:15,240 >> Així que el que, en canvi, fem CS50 és que li donem 556 00:26:15,240 --> 00:26:18,349 un entorn estàndard, un Entorn de Linux que és 557 00:26:18,349 --> 00:26:20,140 va a semblar una mica alguna cosa com això. 558 00:26:20,140 --> 00:26:22,980 Vas a veure més d'això en el Problema 1 set especificació que 559 00:26:22,980 --> 00:26:25,330 anirà en línia aquest divendres a la nit. 560 00:26:25,330 --> 00:26:28,360 >> I el que això significa és que d'ara endavant 561 00:26:28,360 --> 00:26:32,060 seran capaços de descarregar i instal lar un programa 562 00:26:32,060 --> 00:26:33,650 cridat el CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 I vostè va a descarregar i instal · lar un altre programa anomenat 564 00:26:36,275 --> 00:26:40,300 1 hipervisor, que és només un forma elegant de aconseguir-ho. 565 00:26:40,300 --> 00:26:44,600 Si vostè és propietari d'un Mac o un PC o un Ordinador Linux o un ordinador Solaris, 566 00:26:44,600 --> 00:26:46,830 o el que sigui operatiu boig sistema que s'està executant, 567 00:26:46,830 --> 00:26:49,820 vas a descarregar un programa anomenat l'hipervisor que és 568 00:26:49,820 --> 00:26:53,350 va a executar el CS50 Appliance en el seu ordinador 569 00:26:53,350 --> 00:26:55,430 no importa quin sigui el seu sistema operatiu és. 570 00:26:55,430 --> 00:27:00,640 Un hipervisor és a dir converteix les nostres coses a qualsevol idioma, 571 00:27:00,640 --> 00:27:03,850 qualsevol instrucció que els seus pròpia ordinador entén. 572 00:27:03,850 --> 00:27:04,962 >> Així que aquesta és una estratificació. 573 00:27:04,962 --> 00:27:06,920 I de nou, això és una espècie de temàtica a l'ordinador 574 00:27:06,920 --> 00:27:08,722 la ciència, l'edifici en la part superior de les coses. 575 00:27:08,722 --> 00:27:09,680 És possible tenir Windows. 576 00:27:09,680 --> 00:27:10,710 És possible que tingui Mac OS. 577 00:27:10,710 --> 00:27:12,960 Però a partir de la setmana que vostè és hi haurà descarregat 578 00:27:12,960 --> 00:27:14,980 un programari gratuït anomenat l'hipervisor. 579 00:27:14,980 --> 00:27:17,800 Vostè va a haver descarregat una peça de programari cridat el CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Això va a executar en l'hipervisor, que es va a executar en el seu equip. 581 00:27:21,050 --> 00:27:23,030 I el resultat final és que tots nosaltres 582 00:27:23,030 --> 00:27:26,220 tenir una finestra simple com això en el seu Mac o PC 583 00:27:26,220 --> 00:27:30,160 això ens dóna la il · lusió de tots executar el mateix sistema operatiu, 584 00:27:30,160 --> 00:27:32,800 sense cap altre impacte en l'equip. 585 00:27:32,800 --> 00:27:34,870 I vostè pot pantalla completa i essencialment comportar 586 00:27:34,870 --> 00:27:37,550 com si vostè està executant una sistema operatiu anomenat Linux, 587 00:27:37,550 --> 00:27:40,270 que és el que el CS50 Appliance es basa en. 588 00:27:40,270 --> 00:27:42,930 >> Així que utilitzarem realment aquest ara a escriure un programa. 589 00:27:42,930 --> 00:27:45,450 Vostè pot escriure un programa utilitzant Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 Vostè pot escriure un programa utilitzant TextEdit o Bloc de notes, 591 00:27:48,160 --> 00:27:51,880 o WordPad, o gairebé qualsevol paraula programa de processament que mai ha utilitzat. 592 00:27:51,880 --> 00:27:55,174 Però la realitat és que no hauria utilitzar realment qualsevol d'aquests programes. 593 00:27:55,174 --> 00:27:57,840 Per cert, no ha d'usar alguna cosa com Microsoft Word, que 594 00:27:57,840 --> 00:28:01,120 té orientació i cursiva negreta, i fonts més grans i fonts més petites, 595 00:28:01,120 --> 00:28:03,560 perquè l'equip no preocupar-se per res d'això. 596 00:28:03,560 --> 00:28:05,600 Tot l'equip està tindrà en compte és 597 00:28:05,600 --> 00:28:09,040 Anglès com instruccions escrites en C. 598 00:28:09,040 --> 00:28:12,050 >> Així que el que farem dins del Appliance CS50 599 00:28:12,050 --> 00:28:14,290 és utilitzar un programa de lliure disponibles, i és 600 00:28:14,290 --> 00:28:17,360 pre-instal lat en aquest aparell, anomenat Gedit. 601 00:28:17,360 --> 00:28:22,280 I Gedit és només un super simple editor de text com TextEdit de Mac OS, 602 00:28:22,280 --> 00:28:26,200 com el Notepad de Windows que va a mirar una mica alguna cosa com això. 603 00:28:26,200 --> 00:28:28,910 >> Així que anem en realitat no mirar les diapositives d'aquesta. 604 00:28:28,910 --> 00:28:32,580 Però anirem en realitat a el propi medi ambient. 605 00:28:32,580 --> 00:28:36,090 Vaig a seguir endavant i començar la sessió, en aquesta altra finestra, 606 00:28:36,090 --> 00:28:40,910 al meu CS50 Appliance, que tinc pre-instal lat en el meu ordinador portàtil aquí. 607 00:28:40,910 --> 00:28:43,771 >> Tingueu en compte que, igual que Windows i Mac OS, té alguns menús. 608 00:28:43,771 --> 00:28:45,520 Igual que Windows posa allà baix en comptes 609 00:28:45,520 --> 00:28:47,020 de Mac OS, el que el col · loca allà. 610 00:28:47,020 --> 00:28:48,930 Però la realitat és que és tot tipus de la mateixa. 611 00:28:48,930 --> 00:28:50,770 I aquí és en el seu conjunt manat de programari. 612 00:28:50,770 --> 00:28:51,770 Hi ha Dropbox. 613 00:28:51,770 --> 00:28:54,780 Hi ha un munt d'accessoris, programes gràfics que anem a 614 00:28:54,780 --> 00:28:56,430 utilitzar més tard al terme dels butlletins de problemes. 615 00:28:56,430 --> 00:28:59,650 Hi ha un navegador web integrat a la que es tracta d'un ordinador de ple dret 616 00:28:59,650 --> 00:29:01,240 a l'interior d'un ordinador. 617 00:29:01,240 --> 00:29:04,170 >> Però jo faré clic en aquest més a l'esquerra icona blanc aquí, 618 00:29:04,170 --> 00:29:05,890 que és la icona per Gedit. 619 00:29:05,890 --> 00:29:09,650 I es va a obrir una finestra que compta amb tres panells a la mateixa, 620 00:29:09,650 --> 00:29:12,590 una esquerra, una superior i una inferior. 621 00:29:12,590 --> 00:29:16,071 >> Ara està a la part superior d'aquest dret que Vaig a escriure una mica de codi en realitat. 622 00:29:16,071 --> 00:29:16,820 Així que anem a fer això,. 623 00:29:16,820 --> 00:29:19,040 Vaig a anar a Arxiu, Guardar. 624 00:29:19,040 --> 00:29:22,100 I no pot ser que alguna vegada ha vist aquesta finestra particular abans. 625 00:29:22,100 --> 00:29:23,620 Però això és com Mac OS o Windows. 626 00:29:23,620 --> 00:29:25,490 És només una finestra amb totes les carpetes 627 00:29:25,490 --> 00:29:27,290 que tinc dins d'aquest equip. 628 00:29:27,290 --> 00:29:30,320 >> I em vaig a guardar l'arxiu com hello.c. 629 00:29:30,320 --> 00:29:32,690 I jo vaig a anar endavant i feu clic a Desa. 630 00:29:32,690 --> 00:29:36,364 I ara noto que tinc una pestanya a la part superior esquerra anomenat hello.c. 631 00:29:36,364 --> 00:29:38,280 Així que, probablement, bastant familiaritzats, fins i tot si no tens 632 00:29:38,280 --> 00:29:40,240 utilitzat aquest programa en particular abans. 633 00:29:40,240 --> 00:29:44,890 >> I ara vaig a escriure en els seqüència bastant críptica de comandaments 634 00:29:44,890 --> 00:29:46,360 que vam veure fa un moment. 635 00:29:46,360 --> 00:29:49,330 Inclogui, I estàndard / O.h. 636 00:29:49,330 --> 00:29:50,600 Més sobre això aviat. 637 00:29:50,600 --> 00:29:55,670 Void main Int, arrissat obert cotilla, tancat claudàtor. 638 00:29:55,670 --> 00:30:01,570 I després dins d'allà, crec que és on vam tenir "hola món", punt i coma. 639 00:30:01,570 --> 00:30:03,100 I ara estalviar. 640 00:30:03,100 --> 00:30:08,780 >> Així que aquest és un programa escrit en C, escrit, per tant, en el codi font. 641 00:30:08,780 --> 00:30:10,720 Però jo no puc executar aquest programa. 642 00:30:10,720 --> 00:30:13,390 Jo com que vull duplicar feu clic a una icona en algun lloc, 643 00:30:13,390 --> 00:30:16,390 però no hi ha altra icona que l'arxiu de codi font. 644 00:30:16,390 --> 00:30:20,359 El que, de nou, és el procés ara que He de executar aquest fitxer a través de? 645 00:30:20,359 --> 00:30:21,150 AUDIÈNCIA: Compiler. 646 00:30:21,150 --> 00:30:22,399 DAVID J. Malan: Així que un compilador. 647 00:30:22,399 --> 00:30:24,890 Així que en diferents equips que fer això de diferents maneres. 648 00:30:24,890 --> 00:30:27,480 Però el que hem fet aquí a el Appliance CS50 que és 649 00:30:27,480 --> 00:30:31,260 representatiu de com et poden fer això en molts sistemes diferents, 650 00:30:31,260 --> 00:30:34,036 és que estic simplement anant a executar una ordre anomenat make. 651 00:30:34,036 --> 00:30:35,660 I marca és, literalment, va a fer això. 652 00:30:35,660 --> 00:30:36,640 Em un programa Make. 653 00:30:36,640 --> 00:30:39,060 >> Així que va a executar un compilador per a mi. 654 00:30:39,060 --> 00:30:42,160 I el nom del programa Vull fer és saludar. 655 00:30:42,160 --> 00:30:43,510 Ara que és un programa. 656 00:30:43,510 --> 00:30:47,170 I que és prou intel · ligent per adonar-se que si jo dic hola fan, 657 00:30:47,170 --> 00:30:50,980 que buscarà automàticament un arxiu anomenat hello.c 658 00:30:50,980 --> 00:30:53,420 simplement perquè aquesta és la manera com està configurat. 659 00:30:53,420 --> 00:31:00,300 >> Així que quan em va colpejar ara Introduïu aquí, aquesta línia críptica boig acaba de ser executat. 660 00:31:00,300 --> 00:31:02,720 I confia en mi, abans de de llarg, d'aquí a pocs dies, 661 00:31:02,720 --> 00:31:05,590 vas a entendre el que tots que els mitjans sense sentit. 662 00:31:05,590 --> 00:31:11,150 Però per ara, només sé que fer execució disparada d'un compilador. 663 00:31:11,150 --> 00:31:13,290 En altres paraules, es va trobar un compilador al meu ordinador 664 00:31:13,290 --> 00:31:14,820 això és pre-instal lat al Appliance CS50 665 00:31:14,820 --> 00:31:16,560 que li lliurarem a vostè en el problema 1 set. 666 00:31:16,560 --> 00:31:20,990 I llavors va prendre hola.c com d'entrada, i produït aparentment 667 00:31:20,990 --> 00:31:23,040 0 i 1 com a sortida. 668 00:31:23,040 --> 00:31:29,410 >> I per defecte el que fa és que estalvia els 0s i 1s en un fitxer anomenat hola. 669 00:31:29,410 --> 00:31:33,180 I encara que aquesta sintaxi també podria ser nou per a vostè, simplement dient dot 670 00:31:33,180 --> 00:31:37,110 slash hola serà la mitjà pel qual executo aquest programa. 671 00:31:37,110 --> 00:31:40,360 >> Per ara, i durant almenys un parell de setmana, gairebé tots els programes 672 00:31:40,360 --> 00:31:44,230 escrivim estarem en finestres de text en blanc i negre. 673 00:31:44,230 --> 00:31:47,006 No ratolins, sense fer clic, sense finestres, sense icones. 674 00:31:47,006 --> 00:31:49,630 Anem a mantenir simple i centrar-se en les idees subjacents 675 00:31:49,630 --> 00:31:52,490 inicialment abans que arribem a alguna cosa nivell superior, per exemple, 676 00:31:52,490 --> 00:31:56,410 com el joc de ruptura que parlem aproximadament en la primera conferència la setmana passada. 677 00:31:56,410 --> 00:32:00,820 >> Així que quan em va colpejar Introduïu aquí, és equivalent en un text únic entorn 678 00:32:00,820 --> 00:32:03,272 en fer doble clic a una icona anomenat hola. 679 00:32:03,272 --> 00:32:05,480 Què esperes voluntat succeir quan copejo Introduïu llavors? 680 00:32:05,480 --> 00:32:07,120 >> AUDIÈNCIA: Es va a imprimir "hola món". 681 00:32:07,120 --> 00:32:10,000 >> DAVID J. Malan: Esperem s'imprimirà "hola món". 682 00:32:10,000 --> 00:32:11,370 I de fet ho va fer. 683 00:32:11,370 --> 00:32:13,690 Ara que hi ha hagut un sintaxi críptica aquí. 684 00:32:13,690 --> 00:32:15,950 Anem a retrocedir per només un moment i veure si podem 685 00:32:15,950 --> 00:32:19,530 no es pot iniciar inferir amb només retocs, intents i fracassos, 686 00:32:19,530 --> 00:32:21,130 quant al que està passant aquí. 687 00:32:21,130 --> 00:32:23,609 Què passa si em desfaig de la barra invertida n? 688 00:32:23,609 --> 00:32:25,650 Ara alguns de vostès que han programada abans probablement 689 00:32:25,650 --> 00:32:27,054 saben l'instant el que això significa. 690 00:32:27,054 --> 00:32:29,220 Però per a aquells de vostès que han mai programada abans, 691 00:32:29,220 --> 00:32:34,052 almenys, pensa a si mateix el que està passant canviar quan torneu a executar aquest programa? 692 00:32:34,052 --> 00:32:37,010 Així que vaig a tornar al meu petita finestra en blanc i negre, que 693 00:32:37,010 --> 00:32:39,290 és la finestra en la qual Puc compilar aquest. 694 00:32:39,290 --> 00:32:41,130 Vaig a tornar a compilar hola. 695 00:32:41,130 --> 00:32:43,520 Anem a veure el mateix seqüència críptica de comandaments. 696 00:32:43,520 --> 00:32:45,719 I jo faré slash dot hola. 697 00:32:45,719 --> 00:32:48,260 I ara algú, si ho faria, que mai ha programat abans, 698 00:32:48,260 --> 00:32:49,770 el que podria ser diferent aquesta vegada? 699 00:32:49,770 --> 00:32:50,020 Sí. 700 00:32:50,020 --> 00:32:51,840 >> AUDIÈNCIA: No s'aturarà imprimir "hola món". 701 00:32:51,840 --> 00:32:52,660 >> DAVID J. Malan: Va A-- ho sento? 702 00:32:52,660 --> 00:32:54,210 >> AUDIÈNCIA: No deixarà d'imprimir? 703 00:32:54,210 --> 00:32:55,810 >> DAVID J. Malan: No ho farà deixar d'imprimir "hola món". 704 00:32:55,810 --> 00:32:56,560 Així que no és una mala idea. 705 00:32:56,560 --> 00:32:58,633 Altres idees? 706 00:32:58,633 --> 00:32:59,132 Sí. 707 00:32:59,132 --> 00:33:00,060 >> AUDIÈNCIA: Missatge d'error? 708 00:33:00,060 --> 00:33:01,750 >> DAVID J. Malan: Error missatge, OK, podria ser. 709 00:33:01,750 --> 00:33:02,250 Què més? 710 00:33:02,250 --> 00:33:05,479 AUDIÈNCIA: Podeu imprimir el suport amb el punt i coma així? 711 00:33:05,479 --> 00:33:08,270 DAVID J. Malan: Podria imprimir la suport amb el punt i coma també. 712 00:33:08,270 --> 00:33:11,950 Així que potser que la barra invertida és, llavors, alguns tipus de terminous que és important. 713 00:33:11,950 --> 00:33:14,860 Alguna altra idea? 714 00:33:14,860 --> 00:33:16,412 >> Així que totes les bones idees. 715 00:33:16,412 --> 00:33:18,370 I, de fet, va ser un missatge d'error. 716 00:33:18,370 --> 00:33:20,400 Això és probablement el més probable ser la resposta en general 717 00:33:20,400 --> 00:33:22,420 per a les pròximes setmanes a mesura que aprenem a codificar aquí. 718 00:33:22,420 --> 00:33:27,680 >> Però per ara recordar que els ordinadors només fer el que els diuen que facin. 719 00:33:27,680 --> 00:33:30,400 Igual que el cacauet ridícul mantega i gelea d'exemple. 720 00:33:30,400 --> 00:33:33,860 Els nostres equips humans només es suposava per fer el que vostè els va dir que fer. 721 00:33:33,860 --> 00:33:36,250 Així que en aquest cas, si no li diguis a l'ordinador 722 00:33:36,250 --> 00:33:41,190 per moure aquest cursor parpellejant a la següent línia, que no va a fer-ho. 723 00:33:41,190 --> 00:33:45,390 Així que quan executo aquest programa ara, notarà la diferència. 724 00:33:45,390 --> 00:33:46,900 >> Sembla un error. 725 00:33:46,900 --> 00:33:49,190 És un error estètic, potser. 726 00:33:49,190 --> 00:33:53,310 Però el que és diferent sobre aquesta sortida en funció de l'última òbviament? 727 00:33:53,310 --> 00:33:53,810 Sí. 728 00:33:53,810 --> 00:33:54,920 >> AUDIÈNCIA: No va fer una nova línia. 729 00:33:54,920 --> 00:33:56,586 >> DAVID J. Malan: No va fer una nova línia. 730 00:33:56,586 --> 00:33:58,740 Ara bé, aquells de vostès que tenen pàgines web potser fetes 731 00:33:58,740 --> 00:34:01,910 abans, vostè pot ser que sàpiga de la BR etiqueta o l'etiqueta de paràgraf, 732 00:34:01,910 --> 00:34:03,120 molt similar en esperit. 733 00:34:03,120 --> 00:34:06,680 Un navegador web li ignorar fins vostè li diu exactament què fer. 734 00:34:06,680 --> 00:34:10,020 De la mateixa manera, és un llenguatge com C només farem el que vostè digui que faci. 735 00:34:10,020 --> 00:34:12,730 >> Així que la raó per la qual tots aquests exemples, 736 00:34:12,730 --> 00:34:15,350 fins al moment, té tipus de casualment tenia aquesta barra invertida 737 00:34:15,350 --> 00:34:18,560 allà, això és els mitjans pel qual vostè s'expressa 738 00:34:18,560 --> 00:34:21,380 com un caràcter de nova línia, per així dir-ho. 739 00:34:21,380 --> 00:34:26,219 I vostè pot tipus d'apreciar, potser, que aquest seria una mica estúpid 740 00:34:26,219 --> 00:34:27,070 si res més. 741 00:34:27,070 --> 00:34:29,150 Si volia una nova línia, simplement prement Enter i després tipus 742 00:34:29,150 --> 00:34:32,219 d'esquarterar el codi com aquest no ha de realment li fregui el camí correcte. 743 00:34:32,219 --> 00:34:33,830 I fins i tot si no ho fa m'importa en aquest moment, 744 00:34:33,830 --> 00:34:35,830 t'adonaràs que això no és un particular 745 00:34:35,830 --> 00:34:37,870 bona peça a la recerca de codi. 746 00:34:37,870 --> 00:34:39,969 >> I així, el que el món Fa anys decidit és 747 00:34:39,969 --> 00:34:43,420 que quan es vol posar l' cursor en una nova línia de forma explícita, 748 00:34:43,420 --> 00:34:46,332 ha de dir explícitament nova línia, la barra invertida n. 749 00:34:46,332 --> 00:34:48,040 I hi ha alguna altra símbols com aquelles. 750 00:34:48,040 --> 00:34:50,719 Però per ara només haurem de centrar-se en la barra invertida n. 751 00:34:50,719 --> 00:34:53,790 >> Ara anem a fer el programa una mica més interessant. 752 00:34:53,790 --> 00:34:59,200 Vaig a seguir endavant i aquesta vegada a obrir un nou arxiu. 753 00:34:59,200 --> 00:35:02,520 Vaig a guardar això com hola-1.c. 754 00:35:02,520 --> 00:35:05,540 I només per diversió, em vaig a anar el va posar en el meu carpeta de Dropbox. 755 00:35:05,540 --> 00:35:09,030 >> Com veuràs en el CS50 documentació de l'aparell, 756 00:35:09,030 --> 00:35:11,210 finals d'aquesta setmana per al problema Setembre 1, ens animarem 757 00:35:11,210 --> 00:35:13,230 utilitzar Dropbox o algun servei equivalent, 758 00:35:13,230 --> 00:35:15,430 perquè llavors tot el codi de serà una còpia de seguretat automàticament. 759 00:35:15,430 --> 00:35:17,830 I per això és que tinc entrat en aquesta carpeta aquí. 760 00:35:17,830 --> 00:35:20,230 >> I ara vaig a escriure una lleugerament diferent programa. 761 00:35:20,230 --> 00:35:24,740 Inclogui, I estàndard / O.h, void main int. 762 00:35:24,740 --> 00:35:29,660 I llavors aquí printf, hola món, que és exactament el mateix que abans. 763 00:35:29,660 --> 00:35:32,450 >> Però ara vull imprimir alguna cosa això és una mica diferent. 764 00:35:32,450 --> 00:35:34,800 Vull imprimir a terme, dir: "Hola, David." 765 00:35:34,800 --> 00:35:37,590 Molt bé, així que òbviament, el que hauria d'esperar 766 00:35:37,590 --> 00:35:40,360 ser el cas que si recompilar aquest programa, tornar a executar, 767 00:35:40,360 --> 00:35:41,840 que dirà "hola, David." 768 00:35:41,840 --> 00:35:45,160 >> Però el que si vull introduir aquest tipus de la variable, 769 00:35:45,160 --> 00:35:49,240 la noció d'un contenidor que està passant per emmagatzemar D-a-v-i-d i no és difícil de codi que 770 00:35:49,240 --> 00:35:50,600 en el meu programa. 771 00:35:50,600 --> 00:35:53,430 Bé, i si em poso fer alguna cosa com això? 772 00:35:53,430 --> 00:35:57,120 >> String s, de manera que aquesta és una variable. 773 00:35:57,120 --> 00:36:00,250 Si vols una cadena, àlies una paraula o una frase. 774 00:36:00,250 --> 00:36:03,485 Una seqüència de caràcters és el que que en la programació anomenem una cadena. 775 00:36:03,485 --> 00:36:06,610 Només anem a genèricament anomenada que s, perquè és un nom simple agradable. 776 00:36:06,610 --> 00:36:08,010 Però jo podria dir-res. 777 00:36:08,010 --> 00:36:12,920 >> Vaig a dir iguals cadena s entre cometes, "David," punt i coma. 778 00:36:12,920 --> 00:36:18,330 I ara vull inserir D-una-v-i-d en el que jo sóc la impressió. 779 00:36:18,330 --> 00:36:23,720 I abans que ens vam veure un teaser en la pantalla d'una sintaxi especial 780 00:36:23,720 --> 00:36:26,050 que ens va permetre suplent en un valor. 781 00:36:26,050 --> 00:36:29,250 Quin va ser l'especial símbol fa unes diapositives? 782 00:36:29,250 --> 00:36:30,040 >> Així per cent. 783 00:36:30,040 --> 00:36:33,830 En el moment que era cent d per al nombre decimal. 784 00:36:33,830 --> 00:36:35,850 Això realment no són rellevants aquí. 785 00:36:35,850 --> 00:36:38,650 Resulta que hi ha un altre símbol de percentatge, 786 00:36:38,650 --> 00:36:42,810 que és per cent s, que significa per un marcador de posició per a una cadena. 787 00:36:42,810 --> 00:36:49,350 >> Així que ara, simplement, estic va a anar a fer hola-1, 788 00:36:49,350 --> 00:36:54,210 perquè aquest arxiu es diu hola-1.c, i premeu Enter. 789 00:36:54,210 --> 00:36:56,230 I l'he cagat. 790 00:36:56,230 --> 00:36:57,394 Què està passant? 791 00:36:57,394 --> 00:37:00,560 Bé, aquí és on hem de començar a Apreciem que estem en aquesta comanda 792 00:37:00,560 --> 00:37:02,810 entorn de línia, aquesta text únic entorn. 793 00:37:02,810 --> 00:37:06,114 No hi ha clic en les icones com carpetes en aquests moments. 794 00:37:06,114 --> 00:37:07,280 I pensar de nou fa un moment. 795 00:37:07,280 --> 00:37:10,740 En quina carpeta fer que dic Ho estava guardant el meu codi? 796 00:37:10,740 --> 00:37:11,657 Així que la carpeta de Dropbox. 797 00:37:11,657 --> 00:37:12,989 Podria haver estat cridat res. 798 00:37:12,989 --> 00:37:14,530 Però passa a dir Dropbox. 799 00:37:14,530 --> 00:37:18,380 Així que d'alguna manera he de fer doble clic a aquesta carpeta Dropbox per tal d'aconseguir 800 00:37:18,380 --> 00:37:21,657 en ell i arribar al meu codi diu hola-1.c. 801 00:37:21,657 --> 00:37:24,490 De fet, deixa anar per davant i minimitzar aquesta finestra només per un moment. 802 00:37:24,490 --> 00:37:27,560 Igual que Windows i Mac OS, hi ha carpetes en Linux. 803 00:37:27,560 --> 00:37:29,410 Hi ha carpetes en el CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 És només ara estem confinant nosaltres mateixos a aquest entorn de text. 805 00:37:32,380 --> 00:37:34,700 >> Però si faig doble clic en Dropbox, notarà que hi ha 806 00:37:34,700 --> 00:37:37,210 és l'arxiu que vull compilar. 807 00:37:37,210 --> 00:37:41,430 Però jo necessito això en blanc i negre finestra de terminal, per així dir-ho. 808 00:37:41,430 --> 00:37:45,750 Però necessito, per tant, per moure en aquesta carpeta o directori. 809 00:37:45,750 --> 00:37:48,290 Així que una mica arcà, però Ja t'acostumaràs a això també. 810 00:37:48,290 --> 00:37:50,430 >> En el món de Linux, que al seu torn és l'operatiu 811 00:37:50,430 --> 00:37:54,860 sistema ens estem quedant en l'interior de la CS50 Appliance, hi ha una ordre anomenat CD. 812 00:37:54,860 --> 00:37:58,310 El que significa que puc fer CD, espai, Dropbox. 813 00:37:58,310 --> 00:37:59,900 CD, canvi de directori. 814 00:37:59,900 --> 00:38:00,400 Dreta. 815 00:38:00,400 --> 00:38:02,890 De tornada en el dia, quan la gent estava inventar els ordinadors i operar 816 00:38:02,890 --> 00:38:05,806 sistemes com aquest, que volien escrigui les pulsacions de teclat menor quantitat possible. 817 00:38:05,806 --> 00:38:08,760 Així que la forma més fàcil de dir directori de canvi era de CD. 818 00:38:08,760 --> 00:38:13,910 >> Així que si em va colpejar CD, espai Dropbox, compte del que ha canviat aquí. 819 00:38:13,910 --> 00:38:16,480 Dins dels parèntesis l'aparell és una espècie 820 00:38:16,480 --> 00:38:19,360 de seguir la corrent i recordar on sóc. 821 00:38:19,360 --> 00:38:21,480 Així que la carpeta oberta és Dropbox. 822 00:38:21,480 --> 00:38:24,950 Si ara escric ls per llista, un cop més succinta, 823 00:38:24,950 --> 00:38:27,540 perquè la gent no volia escrigui en el seu dia l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Així que en lloc fer ls. 825 00:38:29,300 --> 00:38:30,110 >> Intro. 826 00:38:30,110 --> 00:38:35,740 Noti que veig dues coses, hola-1.c, i després aquesta cosa críptica, 1m font. 827 00:38:35,740 --> 00:38:38,310 Aquesta és la meva manera de dir codi font de la setmana 1 dilluns. 828 00:38:38,310 --> 00:38:42,020 Això és una carpeta que vaig descarregar El lloc web de CS50 que vaig fer el dia d'avui 829 00:38:42,020 --> 00:38:43,990 i només cal posar al aparell per endavant. 830 00:38:43,990 --> 00:38:47,550 >> Però per ara l'únic que importa és fer aquest programa. 831 00:38:47,550 --> 00:38:50,440 Així que quan escric fan hola-1, Enter. 832 00:38:50,440 --> 00:38:51,320 Maleïda sigui. 833 00:38:51,320 --> 00:38:53,060 Quelcom ha fallat. 834 00:38:53,060 --> 00:38:54,580 Així que anem a burlen d'aquesta separació. 835 00:38:54,580 --> 00:38:58,489 I, per desgràcia això és on les coses ser una mica estressant al principi, 836 00:38:58,489 --> 00:39:00,280 almenys si vostè té mai programada abans. 837 00:39:00,280 --> 00:39:00,980 >> Déu meu. 838 00:39:00,980 --> 00:39:04,990 Vaig escriure un programa de dues línies i Tinc quatre línies d'errors. 839 00:39:04,990 --> 00:39:07,180 Llavors, què està passant aquí. 840 00:39:07,180 --> 00:39:11,370 Primer i abans que res sempre desplaçar-se cap enrere i trobar el primer missatge d'error, 841 00:39:11,370 --> 00:39:15,730 perquè moltes vegades compiladors només confondre pel que tu i jo ho fem. 842 00:39:15,730 --> 00:39:17,000 Els compiladors són bastant ximple. 843 00:39:17,000 --> 00:39:18,360 Ells només fan el vostè els diu que fer. 844 00:39:18,360 --> 00:39:21,484 I si se'ls confon, són només llançarà tipus de les seves mans 845 00:39:21,484 --> 00:39:25,010 i potser llançar més missatges d'error que són realment rellevants. 846 00:39:25,010 --> 00:39:26,380 >> Així que donem una ullada a la primera. 847 00:39:26,380 --> 00:39:27,540 Súper críptica al principi. 848 00:39:27,540 --> 00:39:31,050 Però avís, aquí hi ha el nom de la arxiu en el qual em va ficar la pota pel que sembla. 849 00:39:31,050 --> 00:39:36,570 Colon 5, còlon 5 només significa el la línia 5 en el cinquè caràcter. 850 00:39:36,570 --> 00:39:39,760 Així cinquena columna de caràcters, si es vol, d'error. 851 00:39:39,760 --> 00:39:41,870 L'ús de cadena d'identificador no declarat. 852 00:39:41,870 --> 00:39:43,120 Vol norma n? 853 00:39:43,120 --> 00:39:44,850 >> No, em referia a la cadena. 854 00:39:44,850 --> 00:39:47,640 I llavors és el tipus de copiar i enganxar 855 00:39:47,640 --> 00:39:50,700 el que he escrit per realment treure el meu atenció a on vaig ficar la pota. 856 00:39:50,700 --> 00:39:54,260 Així que per alguna raó C, o almenys el compilador 857 00:39:54,260 --> 00:39:56,470 no entén la cadena de paraules. 858 00:39:56,470 --> 00:39:57,890 I això és perquè ens ho inventem. 859 00:39:57,890 --> 00:40:01,440 Així cadena no existeix en C. Què fa CS50, 860 00:40:01,440 --> 00:40:03,380 durant les primeres setmanes només de la classe, 861 00:40:03,380 --> 00:40:05,700 està proporcionem algun tipus de formació rodes, per així dir-ho. 862 00:40:05,700 --> 00:40:11,160 I posem aquestes rodes d'entrenament dins d'un fitxer especial anomenat CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Així que aquest és el segon de dos arxius noms que aparentment acaben en punt h. 864 00:40:14,970 --> 00:40:16,300 Anem a rebobinar. 865 00:40:16,300 --> 00:40:19,360 Printf és una declaració o funció que aparentment imprimeix alguna cosa 866 00:40:19,360 --> 00:40:20,580 a la pantalla. 867 00:40:20,580 --> 00:40:23,470 Però no em va veure implementar printf, dreta. 868 00:40:23,470 --> 00:40:26,360 Fa anys algú implementades printf. 869 00:40:26,360 --> 00:40:30,420 En un arxiu vols apostar que o ella va posar la implementació 870 00:40:30,420 --> 00:40:34,270 per printf, el codi per printf? 871 00:40:34,270 --> 00:40:36,860 >> En un arxiu anomenat estàndard d'E / O.h. 872 00:40:36,860 --> 00:40:39,930 De fet, és probable que en dos arxius, I estàndard / O.h, 873 00:40:39,930 --> 00:40:42,650 que és sinònim de capçalera arxiu, i jo estàndard / O.c, 874 00:40:42,650 --> 00:40:44,060 que significa el codi font C. 875 00:40:44,060 --> 00:40:48,220 Així que fa ell o ella alguns anys plopped el codi que ells van escriure en aquest arxiu 876 00:40:48,220 --> 00:40:51,240 perquè la gent com nosaltres anys més tard poden incloure, 877 00:40:51,240 --> 00:40:53,040 per així dir-ho, en els nostres propis programes. 878 00:40:53,040 --> 00:40:56,320 >> I de fet, això és el que el signe de lliura seguit de la paraula inclouen ho fa. 879 00:40:56,320 --> 00:41:00,250 Es veu en el disc dur local, troba l'arxiu anomenat estàndard d'E / O.h, 880 00:41:00,250 --> 00:41:03,840 i després còpia eficaçment i el pega a l'interior del meu propi arxiu. 881 00:41:03,840 --> 00:41:07,210 Així que ara el meu programa sap com imprimir a la pantalla. 882 00:41:07,210 --> 00:41:11,120 >> Així que per aquesta lògica, on es defineix la cadena? 883 00:41:11,120 --> 00:41:12,260 >> AUDIÈNCIA: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> DAVID J. Malan: CS50.h. 885 00:41:13,290 --> 00:41:15,540 I de fet, això és el que nosaltres, el personal de base, hauria fet. 886 00:41:15,540 --> 00:41:19,590 Hem inventat uns tipus de dades, per dir-ho, com una cadena, 887 00:41:19,590 --> 00:41:22,370 a més dels que obtenir de forma gratuïta, com un int. 888 00:41:22,370 --> 00:41:26,010 I anem a veure a altres com un char per a un caràcter i uns quants més. 889 00:41:26,010 --> 00:41:30,670 A l'interior de CS50.h és aparentment almenys algun esment de cadena. 890 00:41:30,670 --> 00:41:34,980 >> Així que ara em deixis anar per davant i torneu a executar make hola-1. 891 00:41:34,980 --> 00:41:37,100 Vaig a apropar un nou i creuo els dits. 892 00:41:37,100 --> 00:41:41,370 Ara per haver fet una canviar Vaig fixar la majoria de les coses. 893 00:41:41,370 --> 00:41:42,100 Però maleïda sigui. 894 00:41:42,100 --> 00:41:44,290 Més percentatges que els arguments de dades. 895 00:41:44,290 --> 00:41:45,980 Què vaig fer malament aquesta vegada? 896 00:41:45,980 --> 00:41:47,420 >> Així que tot i així és bastant críptic. 897 00:41:47,420 --> 00:41:51,560 Però aquest error està en la línia 7 i el caràcter 21. 898 00:41:51,560 --> 00:41:53,880 Així que anem a mirar cap amunt aquí. 899 00:41:53,880 --> 00:41:55,350 És una mica subtil. 900 00:41:55,350 --> 00:41:59,167 Però si vostè pensa sobre el que les idees fonamentals d'aquí són, 901 00:41:59,167 --> 00:42:00,500 potser puguem fer broma això a part. 902 00:42:00,500 --> 00:42:02,300 >> Així printf és el nom de la funció. 903 00:42:02,300 --> 00:42:04,960 Els parèntesis, fins al moment, és de la mateixa manera que el que posem en tot 904 00:42:04,960 --> 00:42:07,005 les coses que estem passant com entrades a una funció. 905 00:42:07,005 --> 00:42:08,921 Molt bé, només un convenció humana arbitrària. 906 00:42:08,921 --> 00:42:09,919 Utilitzeu parèntesis. 907 00:42:09,919 --> 00:42:12,460 Dins d'aquests parèntesis hem estat posant cometes dobles, 908 00:42:12,460 --> 00:42:14,810 i després una cadena com "hola món". 909 00:42:14,810 --> 00:42:18,160 >> Però molt en aquest exemple anterior breument va fer mirem amb esgarrapades. 910 00:42:18,160 --> 00:42:22,590 I vam tenir el percentatge d, què més estava dins dels parèntesis 911 00:42:22,590 --> 00:42:23,730 que vaig trucar a terme verbalment? 912 00:42:23,730 --> 00:42:24,230 Sí. 913 00:42:24,230 --> 00:42:28,166 >> AUDIÈNCIA: Així que és el que està prenent [Inaudible] en el termini de [inaudible] 914 00:42:28,166 --> 00:42:30,200 què és això [inaudible]? 915 00:42:30,200 --> 00:42:31,200 DAVID J. Malan: Exactament. 916 00:42:31,200 --> 00:42:32,700 Així que vam tenir el percentatge d. 917 00:42:32,700 --> 00:42:36,620 Però després vam tenir prop cita, coma, taulell. 918 00:42:36,620 --> 00:42:37,120 Dreta. 919 00:42:37,120 --> 00:42:40,680 Nosaltres especifiquem el que volem per fer el que el marcador de posició. 920 00:42:40,680 --> 00:42:44,621 Així que el que vaig a fer aquí és coma, què vols que em posi? 921 00:42:44,621 --> 00:42:45,120 AUDIÈNCIA: S. 922 00:42:45,120 --> 00:42:46,828 DAVID J. Malan: S, s perquè en aquest cas 923 00:42:46,828 --> 00:42:48,700 és el nom del contenidor d'emmagatzematge. 924 00:42:48,700 --> 00:42:50,180 És el nom d'aquest recipient de vidre. 925 00:42:50,180 --> 00:42:53,610 Mentre que abans era comptador en què exemple simple esgarrinxada miràvem. 926 00:42:53,610 --> 00:42:56,630 Així que ara, havent realitzat dos canvis, em van deixar el zoom 927 00:42:56,630 --> 00:42:59,800 i tractar una vegada més per compilar aquest programa. 928 00:42:59,800 --> 00:43:01,596 >> Ara veig que la línia críptica. 929 00:43:01,596 --> 00:43:03,470 Però això és en realitat el nom del compilador. 930 00:43:03,470 --> 00:43:04,886 Clang és el nom del compilador. 931 00:43:04,886 --> 00:43:07,100 Fer que se m'acaba de salvar el mal de cap de tant 932 00:43:07,100 --> 00:43:09,830 escriure aquest comando llarg boig fora. 933 00:43:09,830 --> 00:43:14,900 Així que ara si em dot slash hola-1, Hauria de veure "hola, David." 934 00:43:14,900 --> 00:43:16,450 >> Bastant decebedor, però, no? 935 00:43:16,450 --> 00:43:18,158 Podríem haver fet això molt més simple 936 00:43:18,158 --> 00:43:20,940 sense parlar de les variables i CS50.h i tot això. 937 00:43:20,940 --> 00:43:23,080 Així que anem a fer que un poc més interessant. 938 00:43:23,080 --> 00:43:31,010 >> A més de CS50.h, tenir coses com cordes 939 00:43:31,010 --> 00:43:34,550 declarada, la biblioteca CS50 també té algunes funcions. 940 00:43:34,550 --> 00:43:38,520 Així que fa com any, algú va escriure printf i el va posar en l'estàndard d'E / O.h 941 00:43:38,520 --> 00:43:39,530 i algun altre arxiu. 942 00:43:39,530 --> 00:43:44,010 >> Nosaltres, el personal CS50, escrivim una funció anomenat GetChar, GetDouble GetFloat, 943 00:43:44,010 --> 00:43:47,610 GetInt, GetLongLong, GetString, i posem els que estan dins d'un arxiu 944 00:43:47,610 --> 00:43:49,890 anomenat CS50.h i CS50.c. 945 00:43:49,890 --> 00:43:51,880 I els posem dins del CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 I la gent també pot descarregar en línia si 947 00:43:53,880 --> 00:43:55,880 volen posar-los en la seva ordinadors propis també. 948 00:43:55,880 --> 00:44:00,880 El que equival a dir que hem creat funcions que aconsegueixen l'entrada de l'usuari. 949 00:44:00,880 --> 00:44:02,930 No sé el que tot d'aquests tipus de dades són. 950 00:44:02,930 --> 00:44:06,490 GetInt és una cosa senzilla, com obtenir un nombre enter d'alguna manera l'usuari. 951 00:44:06,490 --> 00:44:09,980 I GetString és probablement com get una paraula o una frase de l'usuari. 952 00:44:09,980 --> 00:44:11,770 >> Així que anem a centrar-nos en això. 953 00:44:11,770 --> 00:44:14,710 I em vaig a anar de nou al aparell i seguiré endavant 954 00:44:14,710 --> 00:44:20,790 i guardi aquest arxiu com, anem a trucar a que hola-2.c com la meva segona versió. 955 00:44:20,790 --> 00:44:23,030 I farem un parell de canvis. 956 00:44:23,030 --> 00:44:25,800 >> Aquesta vegada en lloc de David codificació dur, que 957 00:44:25,800 --> 00:44:29,120 fa un increïblement consistent però el programa que s'esperava, 958 00:44:29,120 --> 00:44:32,640 ¿I si en lloc de fer GetString? 959 00:44:32,640 --> 00:44:35,660 Ara noti GetString té un parèntesi d'obertura, 960 00:44:35,660 --> 00:44:38,500 parèntesi tancat, perquè no necessita cap entrada. 961 00:44:38,500 --> 00:44:40,850 Només va a anar a buscar una cadena de l'usuari. 962 00:44:40,850 --> 00:44:42,460 >> I ara unes paraules sobre una altra sintaxi. 963 00:44:42,460 --> 00:44:45,439 Punt i coma acaba d'acabar una línia de codi. 964 00:44:45,439 --> 00:44:46,730 No cal a tot arreu. 965 00:44:46,730 --> 00:44:48,896 Però això només significa que estic fet amb aquesta línia de codi. 966 00:44:48,896 --> 00:44:51,080 Passem a un altre declaració o funció. 967 00:44:51,080 --> 00:44:53,010 Cadena declara una variable. 968 00:44:53,010 --> 00:44:55,920 La cadena és com dir dóna'm un bol, si us plau. 969 00:44:55,920 --> 00:44:57,940 I m'ho dius a mi posar una cadena en el mateix. 970 00:44:57,940 --> 00:44:59,430 >> I ara el signe igual. 971 00:44:59,430 --> 00:45:03,510 Quin és el signe igual essencialment equivalent a? 972 00:45:03,510 --> 00:45:04,500 >> AUDIÈNCIA: Assignar. 973 00:45:04,500 --> 00:45:06,190 >> DAVID J. Malan: Sí, l'assignació d'un valor. 974 00:45:06,190 --> 00:45:09,872 Així que si, per exemple, l'anomenada GetString aquesta funció, 975 00:45:09,872 --> 00:45:12,830 i anem a veure en un moment que és va a demanar a l'usuari una cadena. 976 00:45:12,830 --> 00:45:17,810 Això és com deixar-me després escric D-una-v-i-d en un tros de paper. 977 00:45:17,810 --> 00:45:21,060 I quan dic cadena s és igual a GetString, 978 00:45:21,060 --> 00:45:24,140 potser no significa realment igualtat en la programació C. 979 00:45:24,140 --> 00:45:27,880 Això significa assignar des de la dreta costat de la mà esquerra. 980 00:45:27,880 --> 00:45:29,510 >> Així que m'he ficat una cadena. 981 00:45:29,510 --> 00:45:32,785 I el signe d'igualtat que significa posar en l'emmagatzematge de contenidors flama s. 982 00:45:32,785 --> 00:45:36,730 I llavors passar això a printf fer realitat la seva cosa. 983 00:45:36,730 --> 00:45:39,790 >> Així, el resultat final, llavors es va a mirar una mica diferent. 984 00:45:39,790 --> 00:45:40,840 Fem-ho fan hola-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 O bé podria funcionar. 987 00:45:45,260 --> 00:45:46,450 Vostè està seguint al llarg. 988 00:45:46,450 --> 00:45:47,940 Fes hola-2 va funcionar. 989 00:45:47,940 --> 00:45:52,640 Dot slash hola-2, Enter. 990 00:45:52,640 --> 00:45:54,620 >> Sembla que tinc un infinit bucle o alguna cosa. 991 00:45:54,620 --> 00:45:55,453 Res està succeint. 992 00:45:55,453 --> 00:45:56,134 Per què? 993 00:45:56,134 --> 00:45:57,805 >> AUDIÈNCIA: Està fent un bucle infinit. 994 00:45:57,805 --> 00:45:59,430 DAVID J. Malan: És un bucle infinit. 995 00:45:59,430 --> 00:46:02,710 És una mica esperant que jo realment dotar d'alguna entrada. 996 00:46:02,710 --> 00:46:05,800 Així que m'ho dius a mi anar endavant i escric en David, i premeu Enter. 997 00:46:05,800 --> 00:46:07,230 I ara es diu "hola, David." 998 00:46:07,230 --> 00:46:09,040 Si em quedo de nou. 999 00:46:09,040 --> 00:46:11,530 Escrivim en Rob, "hola, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Ara bé, aquest és el pitjor interfície d'usuari cada vegada. 1001 00:46:13,900 --> 00:46:16,110 L'usuari és aparentment suposat saber què fer. 1002 00:46:16,110 --> 00:46:17,120 Però no importa. 1003 00:46:17,120 --> 00:46:19,570 L'ús d'aquests mateix edifici blocs igual que en Scratch, 1004 00:46:19,570 --> 00:46:24,980 podem resoldre aquest problema i dir alguna cosa així com el seu nom, si us plau, còlon, 1005 00:46:24,980 --> 00:46:27,820 espai, tancat cita, prop parèntesi, coma. 1006 00:46:27,820 --> 00:46:30,680 Així que un munt de nou estupidesa amb la sintaxi. 1007 00:46:30,680 --> 00:46:34,040 >> Però noto Acabo d'afegir un peça del trencaclosques sobre d'aquesta 1008 00:46:34,040 --> 00:46:35,280 i per sobre d'aquest. 1009 00:46:35,280 --> 00:46:38,870 Així que ara si em torneu a executar això, hola-2, Enter. 1010 00:46:38,870 --> 00:46:41,180 Espera un minut. 1011 00:46:41,180 --> 00:46:41,830 El que passa / el que està malament? 1012 00:46:41,830 --> 00:46:43,570 No es comporta de manera diferent. 1013 00:46:43,570 --> 00:46:44,200 Sí. 1014 00:46:44,200 --> 00:46:46,010 >> AUDIÈNCIA: No fes make de nou. 1015 00:46:46,010 --> 00:46:47,968 >> DAVID J. Malan: no ho vaig fer executar make novament, dreta. 1016 00:46:47,968 --> 00:46:49,430 Així que he canviat de codi font. 1017 00:46:49,430 --> 00:46:50,638 Però de nou, no hi ha aquest flux. 1018 00:46:50,638 --> 00:46:54,530 El codi font a través del compilador dóna Ets nou codi objecte o 0s i 1s. 1019 00:46:54,530 --> 00:47:00,209 Així que he de realment make reestrena hola-2 Retorn. 1020 00:47:00,209 --> 00:47:01,750 Bé, alguna cosa que sembla haver succeït. 1021 00:47:01,750 --> 00:47:04,220 Dot slash hola-2. 1022 00:47:04,220 --> 00:47:05,390 El seu nom, si us plau. 1023 00:47:05,390 --> 00:47:09,990 I per ser clar ara, ¿per què és el cursor en la mateixa línia? 1024 00:47:09,990 --> 00:47:10,490 Exactament. 1025 00:47:10,490 --> 00:47:13,020 No vaig posar la barra invertida n fins aquí en el meu codi. 1026 00:47:13,020 --> 00:47:16,110 Així que ara puc escriure una mena de Daven, Enter. 1027 00:47:16,110 --> 00:47:18,710 Puc córrer de nou i escriviu una mena Gabe, Enter, 1028 00:47:18,710 --> 00:47:22,250 i tenim un programa diferent una i altra vegada i una altra. 1029 00:47:22,250 --> 00:47:28,940 >> Ara en última instància, necessitarem utilitzar uns pocs capacitats diferents. 1030 00:47:28,940 --> 00:47:32,860 Cal introduir en última instància alguna condicions que es poden fer les coses de forma condicional. 1031 00:47:32,860 --> 00:47:35,550 Potser bucles perquè puguem fer coses una i altra vegada. 1032 00:47:35,550 --> 00:47:38,220 >> Potser seria bo si ens podria implementar les nostres pròpies funcions, 1033 00:47:38,220 --> 00:47:41,355 com si poguéssim implementar la nostra pròpia printf o la nostra pròpia versió de GetString 1034 00:47:41,355 --> 00:47:45,870 i GetFlow, perquè en última instància, fins i tot utilitzant aquest entorn de línia d'ordres 1035 00:47:45,870 --> 00:47:49,780 podem fer fins i tot el més visualment interessant de les coses. 1036 00:47:49,780 --> 00:47:51,950 >> De fet, en conclusió m'ho dius a mi fer això. 1037 00:47:51,950 --> 00:47:54,020 Vaig a seguir endavant i tancar aquestes finestres 1038 00:47:54,020 --> 00:47:57,400 i obrir aquesta icona aquí, que és només una més gran 1039 00:47:57,400 --> 00:48:00,020 versió que s'incrusta finestra de terminal. 1040 00:48:00,020 --> 00:48:02,329 Així Gedit té no només el lloc del meu codi, 1041 00:48:02,329 --> 00:48:05,620 sinó també construït a la finestra de terminal, la finestra en blanc i negre on puc córrer 1042 00:48:05,620 --> 00:48:06,230 les ordres. 1043 00:48:06,230 --> 00:48:08,600 >> M'acaba de passar per obrir una versió més gran d'aquesta. 1044 00:48:08,600 --> 00:48:11,170 I ara vaig a entrar en la carpeta que ja he 1045 00:48:11,170 --> 00:48:13,150 posar a la bestreta en la pàgina web del curs. 1046 00:48:13,150 --> 00:48:16,720 I jo seguiré endavant i obrir un fitxer anomenat thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 que va ser escrit per una altra persona. 1048 00:48:18,710 --> 00:48:21,220 >> I si ens fixem en això, aquest no és el tipus de codi 1049 00:48:21,220 --> 00:48:24,370 estarem escrivint des l'objectiu d'aquest codi 1050 00:48:24,370 --> 00:48:28,450 era escriure la més bonica mirant codi que ell o ella podria, 1051 00:48:28,450 --> 00:48:31,290 independentment de si o no altre ésser humà mai podria 1052 00:48:31,290 --> 00:48:33,660 entendre el codi. 1053 00:48:33,660 --> 00:48:37,050 >> De fet, cada any hi ha és el que hi ha anomenat un concurs ofuscat C, que 1054 00:48:37,050 --> 00:48:39,570 és per als frikis reals que escriuen codi que ningú més pot llegir, 1055 00:48:39,570 --> 00:48:42,050 sinó que fa alguna cosa bé realment simple o realment increïble. 1056 00:48:42,050 --> 00:48:43,890 I vam pensar que seria millor concloure amb aquest look 1057 00:48:43,890 --> 00:48:48,300 en una cosa que és bastant increïble que podria haver vist una vegada abans. 1058 00:48:48,300 --> 00:48:52,650 Però anem a acabar en aquest nota, slash dot, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Aquesta és, llavors, el que li espera. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Això és tot per CS50. 1062 00:48:58,500 --> 00:48:59,935 Ens veiem dimecres. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [REPRODUCCIÓ DE MÚSICA] 1065 00:49:10,016 --> 00:53:31,883