1 00:00:07,830 --> 00:00:12,200 [Powered by Google Translate] David Malan: Aquest és CS50, i aquest és el començament de la Setmana 1. 2 00:00:12,200 --> 00:00:15,520 El que nosaltres pensem que ho fan avui dia és fer una ullada enrere en 3 00:00:15,520 --> 00:00:18,290 cosa que molts de vostès probablement va passar per alguna 4 00:00:18,290 --> 00:00:20,570 temps i pot semblar una mica familiar. 5 00:00:20,570 --> 00:00:23,720 Aquesta cosa aquí, això és clar és al - 6 00:00:23,720 --> 00:00:24,155 AUDIÈNCIA: Ciència. 7 00:00:24,155 --> 00:00:26,030 David Malan: Science Center. 8 00:00:26,030 --> 00:00:28,940 Així que això és realment una de les primeres computadores 9 00:00:28,940 --> 00:00:30,220 A la tornada de la dècada de 1940. 10 00:00:30,220 --> 00:00:33,790 Va ser un dels equips electromecànics de primera 11 00:00:33,790 --> 00:00:35,730 que era capaç d'especialment llarga, 12 00:00:35,730 --> 00:00:38,450 sostingudes càlculs, i el que veiem en 13 00:00:38,450 --> 00:00:41,580 el centre de la ciència és només una petita part d'aquesta cosa. 14 00:00:41,580 --> 00:00:44,170 El que pensem que seria millor fer llavors és prendre un cop d'ull a un vídeo 15 00:00:44,170 --> 00:00:46,670 que es va fer fa algun temps, la introducció d'aquesta 16 00:00:46,670 --> 00:00:47,520 cosa al món. 17 00:00:47,520 --> 00:00:50,200 I veuràs des de la música i la veu que, efectivament, els 18 00:00:50,200 --> 00:00:52,070 Eren temps molt feliços. 19 00:00:54,885 --> 00:00:59,700 >> [REPRODUCCIÓ DE VÍDEO] 20 00:00:59,700 --> 00:01:02,490 -Un triomf de l'habilitat matemàtica i la mecànica és la següent 21 00:01:02,490 --> 00:01:06,340 gran nova calculadora automàtica de la Universitat de Harvard. 22 00:01:06,340 --> 00:01:08,620 Un complex entramat de problemes en matemàtiques, passar pel 23 00:01:08,620 --> 00:01:12,420 màquina en forma codificada a la cinta, cal resoldre en un 24 00:01:12,420 --> 00:01:15,200 fracció de minut el temps requerit per humans 25 00:01:15,200 --> 00:01:16,450 càlcul. 26 00:01:27,050 --> 00:01:30,600 Dissenyat per agilitzar totes les formes de matemàtica i científica 27 00:01:30,600 --> 00:01:34,610 investigació, el cervell mecànic gegant va a treballar per les Nacions Unides 28 00:01:34,610 --> 00:01:36,570 Marina dels Estats fins al final de la guerra. 29 00:01:50,280 --> 00:01:52,980 >> David Malan: Així que el que potser no sap és que va ser en 30 00:01:52,980 --> 00:01:56,310 aquest mateix dispositiu que un terme que ara tots prendre més o menys 31 00:01:56,310 --> 00:01:59,300 per fet va ser encunyat, el d'un insecte. 32 00:01:59,300 --> 00:02:01,140 Així que un dels enginyers que treballen en aquest equip 33 00:02:01,140 --> 00:02:05,280 literalment trobar una petita arna en la màquina que va donar com a resultat 34 00:02:05,280 --> 00:02:07,580 en alguns càlculs incorrectes. 35 00:02:07,580 --> 00:02:10,410 I a mesura que la història diu que la arna es va gravar en aquest registre 36 00:02:10,410 --> 00:02:14,180 revista aquí, de tornada del 9 de setembre de 1940 i tants, 37 00:02:14,180 --> 00:02:16,550 i així va néixer per al món el terme "bug". 38 00:02:16,550 --> 00:02:19,880 Així que a partir d'ara considerem errors a haver cap tipus d'errors en la 39 00:02:19,880 --> 00:02:23,290 programes, siguin d'origen humà o, en aquest cas, els insectes. 40 00:02:23,290 --> 00:02:25,030 >> Així que alguns anuncis, a mesura que avancem. 41 00:02:25,030 --> 00:02:29,160 Així CS50 té una tradició d'oferir àpats de tot tipus de 42 00:02:29,160 --> 00:02:31,600 majoria dels divendres durant el semestre, on es pren de 30 a 43 00:02:31,600 --> 00:02:34,650 40 estudiants en Fire and Ice in the Square per casual 44 00:02:34,650 --> 00:02:36,390 xerrada, parlar de la informàtica, 45 00:02:36,390 --> 00:02:37,420 parlar sobre el futur. 46 00:02:37,420 --> 00:02:40,000 Convidem a exalumnes i amics de la indústria per xerrar 47 00:02:40,000 --> 00:02:40,690 els estudiants també. 48 00:02:40,690 --> 00:02:44,020 Realment cap a un extrem de fer el que és una classe bastant gran 49 00:02:44,020 --> 00:02:46,740 encara més íntims, si més no de tant en tant per 50 00:02:46,740 --> 00:02:47,710 subgrups d'estudiants. 51 00:02:47,710 --> 00:02:50,940 Així que si vol unir-se a nosaltres avui, 1:15 PM, aneu a 52 00:02:50,940 --> 00:02:53,340 CS50.net/lunch per confirmar la seva assistència. 53 00:02:53,340 --> 00:02:55,840 I ho farem recurrentment, no així et preocupis si no ets 54 00:02:55,840 --> 00:02:57,930 entre els primers 30 o menys aquesta setmana. 55 00:02:57,930 --> 00:02:59,070 >> Així que pren nota de escrivà. 56 00:02:59,070 --> 00:03:01,500 Una paraula sobre els recursos que ara començarà a ser disponible 57 00:03:01,500 --> 00:03:03,040 als estudiants a la classe. 58 00:03:03,040 --> 00:03:05,540 De manera que el cap no ha de ser cap avall durant les classes 59 00:03:05,540 --> 00:03:08,560 anotant tot el que dic i així successivament, el que fem 60 00:03:08,560 --> 00:03:10,765 en el seu lloc s'ofereixen des del personal docent li 61 00:03:10,765 --> 00:03:11,920 conjunt canònic de notes. 62 00:03:11,920 --> 00:03:14,850 Així que tenim una de les investigadores nostre ensenyament, Andrew Sellergren, 63 00:03:14,850 --> 00:03:17,830 que se senti cada setmana, revisa els vídeos, i després 64 00:03:17,830 --> 00:03:19,730 escriu el que creiem que és una molt 65 00:03:19,730 --> 00:03:21,840 conjunt autoritzat de notes. 66 00:03:21,840 --> 00:03:24,180 I estimo d'Andrés, també, de posar notes al peu en snarky 67 00:03:24,180 --> 00:03:24,820 la part inferior. 68 00:03:24,820 --> 00:03:27,300 Així que t'esperem gaudir d'aquests com un llibre de referència per 69 00:03:27,300 --> 00:03:30,230 diversió, i també, arribat Quiz Time, com una oportunitat per revisar 70 00:03:30,230 --> 00:03:31,830 el que va passar en conferències individuals. 71 00:03:31,830 --> 00:03:33,580 Així que aquests estan vinculats a la pàgina de conferències. 72 00:03:33,580 --> 00:03:35,300 >> Conjunt de problemes 0, en tant, està fora. 73 00:03:35,300 --> 00:03:37,470 I en termes dels recursos disponibles per a vostè - 74 00:03:37,470 --> 00:03:38,020 el tutorial. 75 00:03:38,020 --> 00:03:39,730 Milo va dirigir la primera el divendres. 76 00:03:39,730 --> 00:03:41,470 Va ser filmat, posat en línia el dissabte. 77 00:03:41,470 --> 00:03:44,030 I així donem compte, si no estàs molt segur de per on començar, 78 00:03:44,030 --> 00:03:47,280 per aquesta o futures de p sets, sempre en primer lloc el 79 00:03:47,280 --> 00:03:49,300 tutorial o el mateix vídeo. 80 00:03:49,300 --> 00:03:52,950 Seccionament està en curs i, al cs50.net/section és on es 81 00:03:52,950 --> 00:03:54,540 hauran de presentar les seves preferències, si no ho ha 82 00:03:54,540 --> 00:03:55,880 ja, per ara. 83 00:03:55,880 --> 00:03:58,140 Com que les seccions s'iniciarà diumenge, dilluns, 84 00:03:58,140 --> 00:03:58,760 i dimarts. 85 00:03:58,760 --> 00:04:02,470 Fem seccions aquests tres dies, totes les setmanes de l' 86 00:04:02,470 --> 00:04:03,870 semestre en la seva major part. 87 00:04:03,870 --> 00:04:06,600 I també introduir, de nou, les diferents pistes. 88 00:04:06,600 --> 00:04:08,270 Llavors se li demanarà en aquest formulari seccionament, si 89 00:04:08,270 --> 00:04:10,350 no ho he vist, si vostè està entre els menys 90 00:04:10,350 --> 00:04:12,800 còmode, més còmode, o en algun punt intermedi. 91 00:04:12,800 --> 00:04:14,960 I si tens sort de la tanca, en general en algun lloc de 92 00:04:14,960 --> 00:04:18,160 entre el que és la majoria dels estudiants acaben de xecs. 93 00:04:18,160 --> 00:04:19,579 Horari de començar aquesta nit. 94 00:04:19,579 --> 00:04:23,020 >> Així Scratch és força baix clau, tot i que és molt natural 95 00:04:23,020 --> 00:04:25,300 per funcionar en diversos errors i ser incert pel que fa a com 96 00:04:25,300 --> 00:04:26,550 implementar alguna cosa. 97 00:04:26,550 --> 00:04:28,880 Així adonem que començarem les hores d'oficina aquesta setmana. 98 00:04:28,880 --> 00:04:30,500 Estaran en Annenberg dilluns, dimarts, dimecres, 99 00:04:30,500 --> 00:04:34,300 Dijous, de 8:00 pm a 11:00 pm durant trencament del cervell. 100 00:04:34,300 --> 00:04:38,160 Classmen superior pot entrar, i fer si mai té problemes 101 00:04:38,160 --> 00:04:40,720 a la porta, perquè van a pispar, parla a la seva manera 102 00:04:40,720 --> 00:04:42,560 i expliquen que estàs amb CS50. 103 00:04:42,560 --> 00:04:45,230 Típicament de 20 a 30 de nosaltres en el personal estarà allà per ajudar 104 00:04:45,230 --> 00:04:46,190 vostè un a un. 105 00:04:46,190 --> 00:04:48,980 >> En arribar la idea és la següent: vostè porta el seu ordinador portàtil, 106 00:04:48,980 --> 00:04:51,300 vostè tindrà el seu carregador, tindrem els cables de corrent extra, 107 00:04:51,300 --> 00:04:53,320 particularment al llarg de la paret sud del Annenberg on 108 00:04:53,320 --> 00:04:55,080 hi ha un munt d'endolls elèctrics. 109 00:04:55,080 --> 00:04:59,290 I el principal punt d'entrada a horaris d'oficina Q & A és anar a 110 00:04:59,290 --> 00:05:01,690 cs50.net/discuss i per publicar 111 00:05:01,690 --> 00:05:02,580 els teus dubtes. 112 00:05:02,580 --> 00:05:05,600 I per etiquetar amb pset 0 o conjunt de processadors 1, sigui quina sigui la setmana 113 00:05:05,600 --> 00:05:06,810 vulgui es trobin. 114 00:05:06,810 --> 00:05:09,240 I llavors el que farem és tenir una taula de becaris d'ensenyament 115 00:05:09,240 --> 00:05:12,040 i els assistents del curs, generalment de 8 o 10 o així de nosaltres, 116 00:05:12,040 --> 00:05:14,430 passant, mantenir un ull vigilant sobre el tauler, i 117 00:05:14,430 --> 00:05:16,810 arrencant preguntes realment el més ràpid que puguem, 118 00:05:16,810 --> 00:05:19,600 referint-se als missatges relacionats si vostè no ha trobat els 119 00:05:19,600 --> 00:05:22,220 vosaltres mateixos, referències en línia, segons correspongui. 120 00:05:22,220 --> 00:05:24,280 I després, si hi ha problemes, ja que, inevitablement, 121 00:05:24,280 --> 00:05:27,190 serà, o simplement té més sentit per seure un a un, 122 00:05:27,190 --> 00:05:28,660 resoldre problemes amb algú. 123 00:05:28,660 --> 00:05:30,810 >> O vostè acaba d'entrar en hores d'oficina realment 124 00:05:30,810 --> 00:05:31,640 necessitat d'aquesta mentalitat. 125 00:05:31,640 --> 00:05:33,400 No vol anar a través del formulari electrònic, 126 00:05:33,400 --> 00:05:34,410 realment vull conèixer algú. 127 00:05:34,410 --> 00:05:37,240 Comunicar que per a nosaltres, i el que succeirà és quan la seva 128 00:05:37,240 --> 00:05:40,620 qüestió ha estat vist per un membre del personal, i 129 00:05:40,620 --> 00:05:43,660 determinar, yup, això ha de ser enviat a una de les 20 o 130 00:05:43,660 --> 00:05:47,800 30 membres de l'equip aquí localment, podràs veure a la part superior esquerra aquesta 131 00:05:47,800 --> 00:05:51,590 Introduïu el petit botó Cola comença a parpellejar en cs50.net / 132 00:05:51,590 --> 00:05:52,165 discutir. 133 00:05:52,165 --> 00:05:55,260 I això li està dient que ara han estat convidats, de manera que 134 00:05:55,260 --> 00:05:56,880 per parlar, per entrar a la cua. 135 00:05:56,880 --> 00:05:59,090 I en fer clic en aquest botó, el seu nom apareixerà en 136 00:05:59,090 --> 00:06:02,660 un iPad que la interfície CS50, un dels caps del curs, es 137 00:06:02,660 --> 00:06:05,250 celebrarà prop de l'entrada de Annenberg, que llavors 138 00:06:05,250 --> 00:06:08,630 veiem com es mostra aquí, els estudiants que tinguin preguntes sobre 139 00:06:08,630 --> 00:06:11,630 l'esquerra, els membres del personal que són presents a la dreta. 140 00:06:11,630 --> 00:06:14,830 I amb un clic esquerre i dret, el seu navegador web 141 00:06:14,830 --> 00:06:18,610 començarà a parpellejar quan, per exemple, el professor McGonnagal 142 00:06:18,610 --> 00:06:21,460 està disposada a veure't en una taula en particular en Annenberg. 143 00:06:21,460 --> 00:06:23,340 >> Així que vam fer una mica d'això l'any passat. 144 00:06:23,340 --> 00:06:25,430 Hem reiniciat les hores d'oficina i 145 00:06:25,430 --> 00:06:26,980 reimplementat gran part del programari. 146 00:06:26,980 --> 00:06:29,940 Així que adonar-se que aquest s'escalfi aquesta setmana. 147 00:06:29,940 --> 00:06:32,970 Però també s'adonen també, en els últims anys, com vostè pot haver sentit 148 00:06:32,970 --> 00:06:35,710 dels amics, les hores d'oficina en efecte tenia entre 50 i 149 00:06:35,710 --> 00:06:37,040 150 estudiants alhora. 150 00:06:37,040 --> 00:06:39,300 I no és simplement impossible per a nosaltres per manejar aquest 151 00:06:39,300 --> 00:06:42,060 efectivament, un a un, al llarg de la nit. 152 00:06:42,060 --> 00:06:44,570 I així el que realment anem a tractar de fer aquest any és 153 00:06:44,570 --> 00:06:46,590 aprofitar el fet que una gran quantitat de preguntes estan 154 00:06:46,590 --> 00:06:49,050 preguntes més freqüents i, sovint es pot respondre millor 155 00:06:49,050 --> 00:06:50,030 de manera asincrònica. 156 00:06:50,030 --> 00:06:52,140 Així que es pot ordenar de pensar a través de la resposta del funcionari, 157 00:06:52,140 --> 00:06:54,360 i podem pensar a través del seu codi, sense la calefacció 158 00:06:54,360 --> 00:06:57,050 pressió de lluitar necessàriament 159 00:06:57,050 --> 00:06:58,210 a través d'ella al costat de l'altre. 160 00:06:58,210 --> 00:07:00,980 Per tant s'estima que aproximadament un terç o la meitat de les preguntes 161 00:07:00,980 --> 00:07:03,500 serà enviat a persona, i tractarem d'arrencar com 162 00:07:03,500 --> 00:07:05,530 molts com un mitjà més o electrònicament, 163 00:07:05,530 --> 00:07:06,710 durant les hores d'oficina. 164 00:07:06,710 --> 00:07:08,070 I continuarem utilitzant Comenta 165 00:07:08,070 --> 00:07:09,990 al llarg de la setmana també. 166 00:07:09,990 --> 00:07:12,680 >> I, finalment, es donen compte que aquest curs pot ser pres passa / no passa. 167 00:07:12,680 --> 00:07:16,230 Així que si vostè està en la tanca o simplement pensar que ets realment 168 00:07:16,230 --> 00:07:18,650 no estic segur si aquest és el món per a tu, o això és realment 169 00:07:18,650 --> 00:07:21,310 absolutament aliè a tu, tingueu en compte que aquesta és una manera meravellosa 170 00:07:21,310 --> 00:07:24,840 de guanyar una mica de confiança amb què fer un pas en la 171 00:07:24,840 --> 00:07:26,780 classe, com ho vaig fer jo, francament, fa anys. 172 00:07:26,780 --> 00:07:28,630 I després tenim cinc setmanes per ordenar la figura cap a fora per 173 00:07:28,630 --> 00:07:30,850 si vol romandre passa / falla, canviï a una carta 174 00:07:30,850 --> 00:07:31,800 grau, o similar. 175 00:07:31,800 --> 00:07:34,050 I en general el que passa / falla és, crec jo, per als estudiants és 176 00:07:34,050 --> 00:07:36,700 que, si es posa en aquests 10 hores, 20 hores, sigui quina 177 00:07:36,700 --> 00:07:38,830 pot estar en problemes, i que està colpejant el seu cap 178 00:07:38,830 --> 00:07:39,690 contra la paret, 179 00:07:39,690 --> 00:07:41,750 i que realment no pot perseguir alguna cosa a baix, i vostè 180 00:07:41,750 --> 00:07:44,230 té moltes altres coses que cal fer, de veritat, el que jo 181 00:07:44,230 --> 00:07:46,070 Crec passa / no passa és que es necessita la vora de 182 00:07:46,070 --> 00:07:47,250 situacions com aquesta. 183 00:07:47,250 --> 00:07:49,350 Si vostè ha pres la cosa el 90% del camí. 184 00:07:49,350 --> 00:07:50,830 Ja saps, no és del tot perfecte. 185 00:07:50,830 --> 00:07:52,950 Però vostè té un munt d'ell, però. 186 00:07:52,950 --> 00:07:55,440 Així que consideri passa / no passa com que li dóna aquest 187 00:07:55,440 --> 00:07:57,590 model mental, potser. 188 00:07:57,590 --> 00:08:00,680 >> Durant tota la setmana dreta, per l'últim que es va capbussar en Scratch, i ens 189 00:08:00,680 --> 00:08:03,610 va parlar sobre la programació en un nivell gràfic bastant alt. 190 00:08:03,610 --> 00:08:05,340 I avui fem la transició a una llengua 191 00:08:05,340 --> 00:08:08,300 anomenat C, un llenguatge de programació més avall en la part superior de 192 00:08:08,300 --> 00:08:11,260 que moltes llengües modernes es construeixen ara, fins i tot alguns 193 00:08:11,260 --> 00:08:13,010 dels que utilitzarem a finals terme. 194 00:08:13,010 --> 00:08:15,530 I sintàcticament, el que semblen 195 00:08:15,530 --> 00:08:17,330 és tot molt semblant. 196 00:08:17,330 --> 00:08:19,080 Així que anem a començar a fer aquesta transició aquí. 197 00:08:19,080 --> 00:08:21,730 Així que aquest era un programa de la setmana passada que era el més simple de 198 00:08:21,730 --> 00:08:22,910 hola programes mundials. 199 00:08:22,910 --> 00:08:25,560 Simplement imprimeix a la pantalla hola món, amb una 200 00:08:25,560 --> 00:08:27,650 entrepà petit que surt del gat. 201 00:08:27,650 --> 00:08:30,590 Bé, si comencem ara a traduir això a un altre 202 00:08:30,590 --> 00:08:33,419 idioma, s'adonen que les idees d'avui i dimecres 203 00:08:33,419 --> 00:08:36,450 són idèntiques, però la sintaxi comença a canviar. 204 00:08:36,450 --> 00:08:39,370 Així que, la setmana passada vam tenir, quan fa clic a la bandera verda, per exemple 205 00:08:39,370 --> 00:08:40,340 hola món. 206 00:08:40,340 --> 00:08:43,870 Avui tindrem int, void main, printf, 207 00:08:43,870 --> 00:08:46,350 A canvi, amb una sintaxi altre en allà també. 208 00:08:46,350 --> 00:08:49,200 Els claudàtors i parèntesis i cometes, i altres coses. 209 00:08:49,200 --> 00:08:54,520 Però adonar-se que el nucli de la idea és la tecnologia d'impressió, 210 00:08:54,520 --> 00:08:58,470 i, finalment, el fet que la principal és ara serà 211 00:08:58,470 --> 00:09:00,770 sinònim de la partida d'un programa. 212 00:09:00,770 --> 00:09:04,250 Principal serà on la bandera verda trepitja les coses. 213 00:09:04,250 --> 00:09:06,390 >> Així que ara anem a separar alguns dels components bàsics aquí 214 00:09:06,390 --> 00:09:08,650 Abans d'aprofundir en alguns exemples concrets. 215 00:09:08,650 --> 00:09:11,620 Així que ens van cridar aquesta setmana una última declaració, pel que és just 216 00:09:11,620 --> 00:09:12,470 una instrucció. 217 00:09:12,470 --> 00:09:15,660 Feu això - en aquest cas, per exemple hello world. 218 00:09:15,660 --> 00:09:18,400 Bé, al carrer, si mirem només aquesta línia, aquesta és la forma en què estem 219 00:09:18,400 --> 00:09:20,920 començarà a expressar aquesta peça del trencaclosques particular: 220 00:09:20,920 --> 00:09:24,780 printf ("hola món");. 221 00:09:24,780 --> 00:09:27,330 I ara anem a fastiguejar les distingeix més i més amb el temps, 222 00:09:27,330 --> 00:09:29,330 però s'adonen que hi ha un patró aquí. 223 00:09:29,330 --> 00:09:31,870 Per tant, tenim aquesta cosa anomenada printf, que és 224 00:09:31,870 --> 00:09:34,310 essencialment anàloga a la paraula Say. 225 00:09:34,310 --> 00:09:35,800 Això és el que farà. 226 00:09:35,800 --> 00:09:37,870 Printf, if aquí significa "formatat". 227 00:09:37,870 --> 00:09:39,270 Per tant, només significa que vostè pot inserir 228 00:09:39,270 --> 00:09:41,600 diversos detalls estètics. 229 00:09:41,600 --> 00:09:43,770 Així que entre cometes és el començament del que anem 230 00:09:43,770 --> 00:09:45,340 per començar a trucar a una cadena. 231 00:09:45,340 --> 00:09:47,110 Una paraula, una frase, una oració. 232 00:09:47,110 --> 00:09:50,220 Una cadena en un llenguatge de programació és una seqüència de zero 233 00:09:50,220 --> 00:09:51,330 o més caràcters. 234 00:09:51,330 --> 00:09:54,390 Així que h-i-l-l-o, coma, i és així successivament, 235 00:09:54,390 --> 00:09:56,290 entre cometes, una cadena. 236 00:09:56,290 --> 00:09:58,710 I ara backslash n, una mica estrany sintàcticament, però 237 00:09:58,710 --> 00:10:01,780 ja s'ha definit que la setmana passada en el sentit que? 238 00:10:01,780 --> 00:10:02,630 És només una nova línia. 239 00:10:02,630 --> 00:10:05,000 És només una forma de transmetre a l'ordinador que vostè desitja que el 240 00:10:05,000 --> 00:10:07,700 equivalent de colpejar la tecla Intro allà, però no ho fa 241 00:10:07,700 --> 00:10:10,460 volen colpejar realment Entra i per tant espatllar tota la 242 00:10:10,460 --> 00:10:12,130 format del seu programa actual. 243 00:10:12,130 --> 00:10:15,500 Ara els parèntesis inclouen aquesta cadena, parin obert i 244 00:10:15,500 --> 00:10:18,130 parin prop i dins d'això és la nostra cadena. 245 00:10:18,130 --> 00:10:22,600 Perquè això és degut a que en C, i altres programes 246 00:10:22,600 --> 00:10:27,510 llengües, coses com printf prenen arguments, o prendre 247 00:10:27,510 --> 00:10:28,420 paràmetres. 248 00:10:28,420 --> 00:10:31,490 >> Així que començar a pensar ara d'aquest bloc Say porpra com un 249 00:10:31,490 --> 00:10:34,890 funció, com un mètode, com un procediment. 250 00:10:34,890 --> 00:10:36,890 Segur que es pot dir el que vulguis, per ara, però 251 00:10:36,890 --> 00:10:39,260 és una espècie d'un programa en miniatura que només fa una 252 00:10:39,260 --> 00:10:41,480 cosa, en una sola línia, ni menys. 253 00:10:41,480 --> 00:10:43,620 Així que printf és també el que començarem a trucar a un 254 00:10:43,620 --> 00:10:46,680 funció, i les funcions de fer alguna cosa - en aquest cas 255 00:10:46,680 --> 00:10:49,320 imprimeix una cadena amb format a la pantalla - 256 00:10:49,320 --> 00:10:53,220 sinó que funciona també prenen arguments o paràmetres. 257 00:10:53,220 --> 00:10:55,880 I per arguments o paràmetres, gràcies, volem dir 258 00:10:55,880 --> 00:11:01,220 que el seu comportament pot ser influenciat pel que passa en 259 00:11:01,220 --> 00:11:03,420 dins dels parèntesis. 260 00:11:03,420 --> 00:11:06,460 Així que en aquest cas, les necessitats de printf se'ls digui el que voleu imprimir, i 261 00:11:06,460 --> 00:11:09,520 passeu a, entre cometes aquí, la cadena que ens 262 00:11:09,520 --> 00:11:11,270 realment voleu imprimir. 263 00:11:11,270 --> 00:11:14,060 I el punt i coma al final d'aquesta línia és només una 264 00:11:14,060 --> 00:11:18,020 molèstia històrica segons la qual al final de la majoria de les línies de codi, 265 00:11:18,020 --> 00:11:21,170 es posa un punt i coma per fer súper clar per a l'equip 266 00:11:21,170 --> 00:11:23,020 que aquesta línia de codi acaba aquí. 267 00:11:23,020 --> 00:11:25,600 Ara bé, això és bo, perquè com veurem com obtenir més programes 268 00:11:25,600 --> 00:11:29,030 complex, el punt i coma farà súper clares per a nosaltres els éssers humans, 269 00:11:29,030 --> 00:11:32,280 i també l'ordinador, on les línies de codi d'inici i de fi. 270 00:11:32,280 --> 00:11:34,360 Adonar-se que alguns llenguatges no tenen algun 271 00:11:34,360 --> 00:11:35,045 d'aquests mateixos detalls. 272 00:11:35,045 --> 00:11:37,870 I de fet, en JavaScript, que no sempre es necessita alguna cosa 273 00:11:37,870 --> 00:11:38,670 com el punt i coma. 274 00:11:38,670 --> 00:11:40,210 Però més sobre això més per venir. 275 00:11:40,210 --> 00:11:41,170 >> Així bucles. 276 00:11:41,170 --> 00:11:43,520 Teníem una cosa així, molt intuïtiva, òbviament, fer 277 00:11:43,520 --> 00:11:44,860 alguna cosa una i altra vegada i una altra. 278 00:11:44,860 --> 00:11:47,720 Com posar-se els mitjons, o dir hola, en aquest cas. 279 00:11:47,720 --> 00:11:51,090 Doncs bé, a partir d'avui en C, que podríem expressar aquesta esgarrapades 280 00:11:51,090 --> 00:11:54,970 bloquejar com while (true) printf ("hola món"). 281 00:11:54,970 --> 00:11:57,630 Així notar que estem començant a construir literalment en el trencaclosques 282 00:11:57,630 --> 00:11:58,480 peça d'abans. 283 00:11:58,480 --> 00:12:01,310 Tenim el mateix bloc morat, però és dins d'aquest 284 00:12:01,310 --> 00:12:04,880 Sempre entre claudàtors bloc, i la millor manera de traduir que 285 00:12:04,880 --> 00:12:06,480 per C és aquest. 286 00:12:06,480 --> 00:12:08,130 No hi ha cap paraula clau per sempre. 287 00:12:08,130 --> 00:12:10,940 No es pot escriure f-o-r-i-i-v-r en C. 288 00:12:10,940 --> 00:12:13,440 Així que l'anàleg més proper és temps. 289 00:12:13,440 --> 00:12:17,050 >> Ara bé, mentre que (veritat) sembla una mica estúpid perquè té el valor 290 00:12:17,050 --> 00:12:18,700 de canvi mai és veritat? 291 00:12:18,700 --> 00:12:19,810 Presumiblement no. 292 00:12:19,810 --> 00:12:22,770 És com dir que mentre un, mentre que d'ara endavant, mentre que cert. 293 00:12:22,770 --> 00:12:25,430 Tot és el mateix, veritable és sempre el cas. 294 00:12:25,430 --> 00:12:29,860 Així que aquest circuit és en realitat la inducció de quin tipus de bucle? 295 00:12:29,860 --> 00:12:31,210 Només un bucle infinit, és clar. 296 00:12:31,210 --> 00:12:32,930 Un bucle infinit o com el va anomenar la setmana passada, 297 00:12:32,930 --> 00:12:33,870 només un bucle infinit. 298 00:12:33,870 --> 00:12:35,250 Així que de vegades això és dolent. 299 00:12:35,250 --> 00:12:37,060 De vegades això és un error, de vegades és per això que et donen 300 00:12:37,060 --> 00:12:39,340 la pilota de platja girant o rellotge de sorra o similar. 301 00:12:39,340 --> 00:12:41,260 Però en aquest cas, de manera deliberada, per a la qual 302 00:12:41,260 --> 00:12:43,040 raó, volia imprimir la mateixa cosa altra vegada 303 00:12:43,040 --> 00:12:43,970 i una i altra vegada. 304 00:12:43,970 --> 00:12:45,900 O en el cas d'un rellotge, que vol fer 305 00:12:45,900 --> 00:12:47,470 alguna cosa una i altra vegada i una altra. 306 00:12:47,470 --> 00:12:49,070 Així bucles infinits podria tenir sentit. 307 00:12:49,070 --> 00:12:53,560 I és així com en C que podríem traduir per sempre amb el codi. 308 00:12:53,560 --> 00:12:55,570 >> Així que ara aquest és una mica més específic. 309 00:12:55,570 --> 00:12:58,880 Havíem repetir 10 vegades la declaració. 310 00:12:58,880 --> 00:13:02,490 Així, mentre que (veritat) no acaba de funcionar allà, perquè és la veritable 311 00:13:02,490 --> 00:13:03,590 sempre és cert. 312 00:13:03,590 --> 00:13:07,060 Així que si en lloc de mirar la versió C, ara la sintaxi obté una 313 00:13:07,060 --> 00:13:08,180 poc més críptic. 314 00:13:08,180 --> 00:13:11,380 Però per ser honest, quan un s'hi comença a veure això, tot es torna 315 00:13:11,380 --> 00:13:12,600 bastant familiaritzat amb rapidesa. 316 00:13:12,600 --> 00:13:14,370 Així que això és el que s'anomena un bucle for. 317 00:13:14,370 --> 00:13:17,210 Un bucle que va a dir-li a l'ordinador que faci alguna cosa 318 00:13:17,210 --> 00:13:20,710 una i altra vegada i una altra durant el temps que 319 00:13:20,710 --> 00:13:21,850 aquestes coses són veritables. 320 00:13:21,850 --> 00:13:23,370 Ara, què volem dir amb això? 321 00:13:23,370 --> 00:13:25,470 Bé, hi ha tres parts per un bucle for, i anem a 322 00:13:25,470 --> 00:13:28,240 tornar a això en el context de l'actual 323 00:13:28,240 --> 00:13:29,100 exemples en un moment. 324 00:13:29,100 --> 00:13:31,650 Així que no et preocupis si no acaba d'enfonsar en un sol cop. 325 00:13:31,650 --> 00:13:35,400 Però int i = 0 és, conte llarg, dient dóna'm un 326 00:13:35,400 --> 00:13:38,290 variable que és de tipus sencer, així que dóna'm un nombre 327 00:13:38,290 --> 00:13:40,890 anomenat i, i s'inicialitza a 0. 328 00:13:40,890 --> 00:13:43,460 Això és donar-me com una variable x algebraica i 329 00:13:43,460 --> 00:13:44,580 inicialitzar a 0. 330 00:13:44,580 --> 00:13:46,250 Però en aquest cas l'anomenem i. 331 00:13:46,250 --> 00:13:49,120 Llavors en el medi, es diu i és menor que 10. 332 00:13:49,120 --> 00:13:52,150 Això diu l'ordinador és els materials següents, sempre 333 00:13:52,150 --> 00:13:53,770 com i és menor que 10. 334 00:13:53,770 --> 00:13:55,370 I, òbviament, que s'inicia a menys de 10, perquè 335 00:13:55,370 --> 00:13:56,550 que comença en 0. 336 00:13:56,550 --> 00:13:59,150 Llavors, finalment, potser puguis endevinar el que significa + +. 337 00:13:59,150 --> 00:14:02,140 És una mica de sintaxi que només significa incrementar i. 338 00:14:02,140 --> 00:14:05,270 Així que afegir 1 a i, una i altra vegada i una altra. 339 00:14:05,270 --> 00:14:09,260 >> I així, com veurem aquest bucle, aquesta sintaxi, més aviat, posa en pràctica 340 00:14:09,260 --> 00:14:12,160 precisament la mateixa cosa que, francament, en Scratch era tan 341 00:14:12,160 --> 00:14:13,250 molt més fàcil d'expressar. 342 00:14:13,250 --> 00:14:15,170 Repetiu 10, i ja està. 343 00:14:15,170 --> 00:14:17,690 En C, i en la majoria dels llenguatges de programació, que ha de ser un 344 00:14:17,690 --> 00:14:20,190 poc més instructiu per a l'equip i en realitat 345 00:14:20,190 --> 00:14:21,630 especificar alguna cosa com això. 346 00:14:21,630 --> 00:14:23,730 Però anem a tornar a aquesta i altres sintaxi. 347 00:14:23,730 --> 00:14:24,780 >> Quines variables? 348 00:14:24,780 --> 00:14:26,940 En Scratch teníem una mena aquests blocs de color taronja, 349 00:14:26,940 --> 00:14:28,180 on podria declarar una variable. 350 00:14:28,180 --> 00:14:30,000 Anem a cridar arbitràriament en sentit contrari. 351 00:14:30,000 --> 00:14:31,880 Anem a inicialitzar a 0 i, a continuació, 352 00:14:31,880 --> 00:14:33,240 sempre farem alguna cosa. 353 00:14:33,240 --> 00:14:35,760 En aquest cas en Scratch que estic dient el taulell, de manera que el 354 00:14:35,760 --> 00:14:38,230 gat tindrà un entrepà petit que està parlant 355 00:14:38,230 --> 00:14:40,010 el nombre que hi ha en aquesta variable. 356 00:14:40,010 --> 00:14:42,460 I després tenim comptador de canvi en 1. 357 00:14:42,460 --> 00:14:45,760 Així que tot això està embolicat dins d'un pany Forever. 358 00:14:45,760 --> 00:14:48,960 Així que ara ja tenim els elements bàsics en C amb 359 00:14:48,960 --> 00:14:50,040 que per traduir aquesta. 360 00:14:50,040 --> 00:14:51,650 >> Una manera com podria fer-ho és la següent. 361 00:14:51,650 --> 00:14:53,890 Dóna'm un nombre enter, en diuen taulell. 362 00:14:53,890 --> 00:14:55,190 Inicialitzar a 0 363 00:14:55,190 --> 00:14:56,490 en la primera línia allà. 364 00:14:56,490 --> 00:14:59,390 Mentre que (veritat), així que estic robant la idea d'un moment 365 00:14:59,390 --> 00:15:01,300 fa, seguir endavant i fer el següent. 366 00:15:01,300 --> 00:15:04,880 Imprimir el comptador, i després incrementar el comptador, 367 00:15:04,880 --> 00:15:06,930 de nou, i de nou, i de nou. 368 00:15:06,930 --> 00:15:09,380 O, de nou, + + només significa afegir 1 a alguna cosa. 369 00:15:09,380 --> 00:15:11,030 Però hi ha una nova peça de sintaxi aquí. 370 00:15:11,030 --> 00:15:15,730 Què està saltant com no es troba entre els exemples anteriors? 371 00:15:15,730 --> 00:15:17,190 Sí,% d. 372 00:15:17,190 --> 00:15:19,810 Així que potser pot inferir què està fent això, francament, basat 373 00:15:19,810 --> 00:15:21,410 en el que el bloc Scratch està fent. 374 00:15:21,410 --> 00:15:24,510 Però, de nou al carrer, només hem de ser una mica més concret 375 00:15:24,510 --> 00:15:25,990 a l'hora d'expressar-nos. 376 00:15:25,990 --> 00:15:30,560 >> Així printf ("% d \ n"). 377 00:15:30,560 --> 00:15:32,320 Bé, la major part de que podem tirar tan familiar. 378 00:15:32,320 --> 00:15:34,910 Les cometes només significa que és una cadena, la barra invertida núm 379 00:15:34,910 --> 00:15:35,970 és només una nova línia. 380 00:15:35,970 --> 00:15:38,860 Així que l'única cosa nova aquí és% d. 381 00:15:38,860 --> 00:15:40,390 I tot el que és, és un marcador de posició. 382 00:15:40,390 --> 00:15:43,510 D% va a denotar un nombre decimal. 383 00:15:43,510 --> 00:15:47,820 I equip% mitjà d, posar un nombre decimal aquí. 384 00:15:47,820 --> 00:15:49,450 Bé, quin nombre vols posar allà? 385 00:15:49,450 --> 00:15:52,400 Bé, com vostè potser pugui deduir, després de la coma es diu 386 00:15:52,400 --> 00:15:55,480 comptador, que és el nom d'una variable que es declara o 387 00:15:55,480 --> 00:15:57,260 creat un parell de línies abans. 388 00:15:57,260 --> 00:16:02,420 Així que això és només la forma de C de connectar una variable en una 389 00:16:02,420 --> 00:16:04,480 cadena dinàmicament. 390 00:16:04,480 --> 00:16:07,350 Com que per contra, si jo hagués fet en el seu lloc una mena 391 00:16:07,350 --> 00:16:12,470 això, printf ("contra"), el que faria aquest 392 00:16:12,470 --> 00:16:15,220 programa en lloc fer-ho, presumiblement? 393 00:16:15,220 --> 00:16:17,260 És, literalment, d'imprimir "comptador". 394 00:16:17,260 --> 00:16:18,750 La qual cosa no és l'efecte que vull. 395 00:16:18,750 --> 00:16:20,920 He de substituir en un valor numèric. 396 00:16:20,920 --> 00:16:24,340 Així que veurem que les funcions de llavors, com printf, no pot prendre 397 00:16:24,340 --> 00:16:26,930 tot just arguments individuals, com 398 00:16:26,930 --> 00:16:28,150 "Hola món". 399 00:16:28,150 --> 00:16:32,050 Ells poden prendre coma cita fi de la cita i, a continuació algunes variables 400 00:16:32,050 --> 00:16:35,830 que rebrà connectat a, com veurem la cadena anterior 401 00:16:35,830 --> 00:16:38,280 a través d'aquestes variables% de signes. 402 00:16:38,280 --> 00:16:39,660 >> Bé, què passa amb les expressions booleanes? 403 00:16:39,660 --> 00:16:42,200 Les expressions booleanes són aquests valors, vertader o fals. 404 00:16:42,200 --> 00:16:42,830 Sí o no. 405 00:16:42,830 --> 00:16:44,020 1 o 0. 406 00:16:44,020 --> 00:16:45,190 Activat o desactivat. 407 00:16:45,190 --> 00:16:47,570 Així que en Scratch es veuen així, i noti que la 408 00:16:47,570 --> 00:16:50,170 bloc de fons aquí és en realitat la conjunció 409 00:16:50,170 --> 00:16:51,500 de dos blocs més petits. 410 00:16:51,500 --> 00:16:53,610 Així que tipus d'arrossegar i deixar anar les peces del trencaclosques 3 411 00:16:53,610 --> 00:16:56,450 junts per fer que la peça del trencaclosques que és allà perquè jo 412 00:16:56,450 --> 00:17:00,420 podria transmetre la idea que vull que x sigui menor que i i 413 00:17:00,420 --> 00:17:02,540 i perquè sigui menor que z. 414 00:17:02,540 --> 00:17:05,790 I pel que puc traduir aquestes dues línies separades de la següent manera. 415 00:17:05,790 --> 00:17:08,650 La de dalt pot ser molt trivial traduït a C, 416 00:17:08,650 --> 00:17:10,069 amb prou feines x 00:17:11,990 Potser amb alguns parèntesis per a una bona mesura. 418 00:17:11,990 --> 00:17:15,520 I després, al carrer, no s'escriu i denoten la 419 00:17:15,520 --> 00:17:16,819 conjunció d'alguna cosa. 420 00:17:16,819 --> 00:17:19,585 En el seu lloc, escrigui &&. 421 00:17:19,585 --> 00:17:22,849 I a mesura que el temps ho veuràs, un sol caràcter & li passa a 422 00:17:22,849 --> 00:17:23,880 significa alguna cosa diferent. 423 00:17:23,880 --> 00:17:27,530 Així && només denota la idea d'AND. 424 00:17:27,530 --> 00:17:30,040 >> Així que de nou, encara que això comença a semblar bastant complex, 425 00:17:30,040 --> 00:17:32,560 un dels propòsits de la introducció de Scratch, a més 426 00:17:32,560 --> 00:17:34,810 només tenir una mena de diversió de la rampa on es pot fer 427 00:17:34,810 --> 00:17:36,590 una cosa que és molt gràfic i animació, i 428 00:17:36,590 --> 00:17:39,000 compartible i similars, és també de transmetre la idea que els 429 00:17:39,000 --> 00:17:42,010 totes les idees que submergir-vos en l'actualitat i en endavant 430 00:17:42,010 --> 00:17:44,300 han estat incorporats a fins i tot de simple 431 00:17:44,300 --> 00:17:46,850 interfície des del primer dia. 432 00:17:46,850 --> 00:17:47,790 I aquest d'aquí? 433 00:17:47,790 --> 00:17:48,860 >> Així condicions. 434 00:17:48,860 --> 00:17:50,590 De manera que el bloc d'esgarrapades a la part esquerra es veu allà 435 00:17:50,590 --> 00:17:51,610 una mica més complex. 436 00:17:51,610 --> 00:17:52,650 Però és només una mica d'arrossegament i 437 00:17:52,650 --> 00:17:54,140 deixar caure de peces conegudes. 438 00:17:54,140 --> 00:17:56,690 Si x és menor que i, digui-ho. 439 00:17:56,690 --> 00:17:59,900 Perquè si x és més gran que i, digui-ho. 440 00:17:59,900 --> 00:18:02,460 Si no, lògicament podem assumir que és inferir que 441 00:18:02,460 --> 00:18:03,580 han de ser iguals. 442 00:18:03,580 --> 00:18:05,220 Així que dir que són iguals. 443 00:18:05,220 --> 00:18:07,690 Ara en C en el correcte, exactament el mateix. 444 00:18:07,690 --> 00:18:09,730 I noti que les claus es serà un 445 00:18:09,730 --> 00:18:12,190 característica de C i altres llenguatges que fan aquest tipus 446 00:18:12,190 --> 00:18:13,210 d'encapsulació. 447 00:18:13,210 --> 00:18:15,470 Igual que el bloc és si aquesta cosa groga que és una espècie de 448 00:18:15,470 --> 00:18:17,770 agafar el bloc morat dins d'ella. 449 00:18:17,770 --> 00:18:19,480 De la mateixa manera són aquestes claus - 450 00:18:19,480 --> 00:18:20,870 aquestes claus - 451 00:18:20,870 --> 00:18:24,710 destinat a evocar la idea mateixa d'abraçar un o més 452 00:18:24,710 --> 00:18:27,680 línies de codi que es sagnia dins d'ells. 453 00:18:27,680 --> 00:18:31,270 Així que en la part dreta aquí, si x menor que i, printf 454 00:18:31,270 --> 00:18:32,270 ("X és menor que i"). 455 00:18:32,270 --> 00:18:34,980 Else si x és més gran que i, imprimir el mateix. 456 00:18:34,980 --> 00:18:38,360 Altres vendes imprimir que són iguals. 457 00:18:38,360 --> 00:18:41,750 >> Així que en resum, no hi ha una correlació bastant directa o traducció 458 00:18:41,750 --> 00:18:44,720 del llenguatge que hem vist fins ara, fins i tot per alguns 459 00:18:44,720 --> 00:18:45,940 de les característiques més sofisticades. 460 00:18:45,940 --> 00:18:48,680 Així que no podria estar usant això per al seu projecte, o potser no 461 00:18:48,680 --> 00:18:51,150 utilitzar això per al seu projecte aquesta setmana. 462 00:18:51,150 --> 00:18:54,650 Però hem aquestes coses anomenades matrius en C. En Scratch, 463 00:18:54,650 --> 00:18:55,680 s'anomenen llistes. 464 00:18:55,680 --> 00:18:59,370 I vam veure això amb el RPG Fruitcraft la setmana passada. 465 00:18:59,370 --> 00:19:01,320 El petit blau que estava caminant, recollint 466 00:19:01,320 --> 00:19:03,010 cireres i taronges i similars. 467 00:19:03,010 --> 00:19:05,110 Bé, en Scratch, que es va dur a terme amb aquesta taronja 468 00:19:05,110 --> 00:19:09,000 bloc que conté paraules, en aquest cas, estem literalment 469 00:19:09,000 --> 00:19:10,800 i ha afegit que "taronja" a un 470 00:19:10,800 --> 00:19:12,460 variable anomenada inventari. 471 00:19:12,460 --> 00:19:14,910 Així que en C, aquesta sintaxi es posarà una mica més críptic. 472 00:19:14,910 --> 00:19:17,250 I tornarem a la setmana següent i fer més 473 00:19:17,250 --> 00:19:21,060 coses interessants en el món de la criptografia amb ell. 474 00:19:21,060 --> 00:19:23,990 Però en el fons aquí, aquestes dues línies essencialment 475 00:19:23,990 --> 00:19:27,550 es tradueixen en el que estem fent en una rascada bloquejar-hi. 476 00:19:27,550 --> 00:19:30,120 Però més sobre això més per venir. 477 00:19:30,120 --> 00:19:34,120 >> Per tant, posar junts, aquí hi ha un programa en C. Per tant anem a 478 00:19:34,120 --> 00:19:36,590 ràpidament separar algunes de les peces de la sintaxi aquí, però 479 00:19:36,590 --> 00:19:40,300 llavors anem a realment començar a escriure una mica de codi, familiaritzar 480 00:19:40,300 --> 00:19:42,440 amb algunes de les eines que utilitzarà, i veure si podem 481 00:19:42,440 --> 00:19:45,400 pot aprofitar ara alguns d'aquests blocs de construcció bàsics de 482 00:19:45,400 --> 00:19:49,150 la setmana passada, ara sintàcticament en C. Per tant a la part superior aquí, aquesta 483 00:19:49,150 --> 00:19:51,380 és potser un dels programes més avorrits que podria 484 00:19:51,380 --> 00:19:53,130 escriure en gairebé qualsevol llenguatge de programació. 485 00:19:53,130 --> 00:19:55,010 Però és una espècie de té un significat especial perquè és la 486 00:19:55,010 --> 00:19:58,120 programa canònic que qualsevol científic de la computació quan escriu 487 00:19:58,120 --> 00:19:59,620 ensenyar a algú un llenguatge de programació - 488 00:19:59,620 --> 00:20:01,230 un programa hello world. 489 00:20:01,230 --> 00:20:05,120 >> Així que en la part superior, veiem que aquesta noció de # include 490 00:20:05,120 --> 00:20:08,180 i, a continuació, entre parèntesis angulars, stdio.h. 491 00:20:08,180 --> 00:20:10,580 Ens tornarem a això, però el que realment 492 00:20:10,580 --> 00:20:13,770 significa és que no és un arxiu en aquest món anomenat estàndard 493 00:20:13,770 --> 00:20:17,670 I / O, stdio punt h, i això és només un arxiu de text que 494 00:20:17,670 --> 00:20:19,240 algú va escriure fa anys. 495 00:20:19,240 --> 00:20:22,550 I dins d'aquest arxiu de text són un munt de 496 00:20:22,550 --> 00:20:25,840 funcions o mètodes o procediments, que algú més 497 00:20:25,840 --> 00:20:28,970 escriure que nosaltres som els beneficiaris de perquè 498 00:20:28,970 --> 00:20:31,420 Ara pot utilitzar el codi d'aquesta persona. 499 00:20:31,420 --> 00:20:33,070 Les funcions que ell o ella va escriure. 500 00:20:33,070 --> 00:20:36,320 En aquest cas, printf no és una cosa que jo vaig escriure, és 501 00:20:36,320 --> 00:20:37,500 no és una cosa que va escriure CS50. 502 00:20:37,500 --> 00:20:40,290 És una cosa que algú va escriure fa anys i posar en un 503 00:20:40,290 --> 00:20:43,450 arxiu anomenat stdio.h i després, en un apart, posar 504 00:20:43,450 --> 00:20:45,830 altra part de la funció en un altre arxiu. 505 00:20:45,830 --> 00:20:46,940 Però anem a arribar-hi. 506 00:20:46,940 --> 00:20:50,070 >> Així que # include és només la nostra manera de dir, en 507 00:20:50,070 --> 00:20:53,110 C, dóna'm accés a les funcions que una altra persona va escriure. 508 00:20:53,110 --> 00:20:55,490 I en aquest cas m'importa perquè vull printf. 509 00:20:55,490 --> 00:20:57,530 Ara tenim int main (void). 510 00:20:57,530 --> 00:21:00,160 Així que aquesta és una d'aquestes coses que, francament, que en el dia 0, 511 00:21:00,160 --> 00:21:02,400 més o menys he de tipus de fora de zona, perquè és només 512 00:21:02,400 --> 00:21:03,260 No és interessant 513 00:21:03,260 --> 00:21:04,780 intel · lectual, alguns de la sintaxi. 514 00:21:04,780 --> 00:21:07,940 Però per ara sabem que les funcions, també conegut com 515 00:21:07,940 --> 00:21:11,660 procediments o mètodes, generalment produeixen un cert valor. 516 00:21:11,660 --> 00:21:12,520 Fan alguna cosa. 517 00:21:12,520 --> 00:21:13,810 Ells vénen amb una resposta. 518 00:21:13,810 --> 00:21:15,020 Produeixen sortida. 519 00:21:15,020 --> 00:21:18,780 Així int costat del principal és només la nostra forma abreujada de dir 520 00:21:18,780 --> 00:21:21,380 que aquesta funció, aquest procediment, finalment es va 521 00:21:21,380 --> 00:21:22,650 per donar-li de nou un nombre. 522 00:21:22,650 --> 00:21:24,370 I per què això és, anem a tornar. 523 00:21:24,370 --> 00:21:27,810 Principal és l'estàndard mundial per al valor predeterminat per defecte 524 00:21:27,810 --> 00:21:30,990 funció que va a s'executen en un programa de C quan 525 00:21:30,990 --> 00:21:31,860 que l'executi. 526 00:21:31,860 --> 00:21:34,160 Void només significa aquesta cosa, principal, no es fa 527 00:21:34,160 --> 00:21:35,270 arguments, en aquest cas. 528 00:21:35,270 --> 00:21:36,400 Així que estic sent súper explícit. 529 00:21:36,400 --> 00:21:38,160 No hi ha cadenes a allà, no hi ha comes. 530 00:21:38,160 --> 00:21:40,690 Buit significa que no hi ha arguments per principal. 531 00:21:40,690 --> 00:21:44,350 >> Ara, finalment, per sort, les dues últimes línies estan familiaritzats. 532 00:21:44,350 --> 00:21:46,160 Dins de les claus tenim un printf 533 00:21:46,160 --> 00:21:47,620 i tenim un canvi. 534 00:21:47,620 --> 00:21:50,450 I el retorn és una mica lamentable que hàgim de 535 00:21:50,450 --> 00:21:53,510 el va posar allà, perquè en aquest cas no està fent tot el que 536 00:21:53,510 --> 00:21:54,600 molt d'interès. 537 00:21:54,600 --> 00:21:58,790 Però en un programa d'ordinador, quan una funció retorna 0, 538 00:21:58,790 --> 00:22:00,610 això vol dir que tot està bé. 539 00:22:00,610 --> 00:22:01,820 Res del que va sortir malament. 540 00:22:01,820 --> 00:22:06,170 Per contra, si una funció retorna 1, 1 o negatiu, o 541 00:22:06,170 --> 00:22:11,670 1.337 negatius, o alguns números a l'atzar per l'estil, que 542 00:22:11,670 --> 00:22:14,020 generalment significa que un error ha ocorregut realment. 543 00:22:14,020 --> 00:22:16,150 Així que si vostè està en el seu Mac o el PC, si alguna vegada has vist 544 00:22:16,150 --> 00:22:18,590 algun missatge molest perquè l'equip s'ha estavellat o 545 00:22:18,590 --> 00:22:20,660 congelat, i hi ha un missatge d'error críptic, 546 00:22:20,660 --> 00:22:23,320 i després una mica de codi, com a sistema de codi 547 00:22:23,320 --> 00:22:25,110 1,2,3,4, algun nombre, 548 00:22:25,110 --> 00:22:29,270 que generalment és un detall innecessari dir 549 00:22:29,270 --> 00:22:32,110 la majoria de nosaltres els éssers humans, però això és el que alguna funció o algun 550 00:22:32,110 --> 00:22:34,890 programa en realitat ha tornat, un valor diferent de zero. 551 00:22:34,890 --> 00:22:38,540 I el benefici d'això és que 0 significa tot també, i 552 00:22:38,540 --> 00:22:40,470 llavors vostè essencialment té un nombre infinit de coses que 553 00:22:40,470 --> 00:22:41,130 pot sortir malament. 554 00:22:41,130 --> 00:22:44,700 És per això que van triar 0 per al bé i un valor diferent de zero per 555 00:22:44,700 --> 00:22:46,450 dolent, com aviat veurem. 556 00:22:46,450 --> 00:22:47,870 >> Així que seguirem endavant i escriure això. 557 00:22:47,870 --> 00:22:51,610 Així recordar que l'altre dia vaig utilitzar el meu Mac per obrir un 558 00:22:51,610 --> 00:22:53,970 finestra de terminal, i després vaig obrir programa de text, com 559 00:22:53,970 --> 00:22:55,900 TextEdit, i vaig començar a escriure una mica de codi. 560 00:22:55,900 --> 00:22:56,580 Bé, això està bé. 561 00:22:56,580 --> 00:22:58,636 No obstant això, la seva experiència serà diferent en un Mac, o 562 00:22:58,636 --> 00:23:01,220 en un equip Solaris, un equip amb Linux, el que sigui operatiu 563 00:23:01,220 --> 00:23:02,810 sistema que s'estigui utilitzant. 564 00:23:02,810 --> 00:23:04,970 I així, en el curs, el que en lloc d'utilitzar és quelcom 565 00:23:04,970 --> 00:23:07,010 anomenat Appliance CS50. 566 00:23:07,010 --> 00:23:10,420 De manera que l'aparell CS50 és un programari descarregable 567 00:23:10,420 --> 00:23:13,640 que li permet executar un sistema operatiu anomenat Linux, 568 00:23:13,640 --> 00:23:16,810 específicament Fedora Linux, en el seu propi Mac o PC. 569 00:23:16,810 --> 00:23:20,810 I ho fa mitjançant la descàrrega d'una cosa que es diu un hipervisor. 570 00:23:20,810 --> 00:23:23,100 Així que tot això es documenta en el butlletí de problemes 1. 571 00:23:23,100 --> 00:23:25,240 I vostè serà guiat cap al que vostè necessita per descarregar. 572 00:23:25,240 --> 00:23:27,510 Però el resultat final, si tens un Mac o un PC, és 573 00:23:27,510 --> 00:23:29,080 descarregar algun programari lliure. 574 00:23:29,080 --> 00:23:32,340 A continuació, descarregui l'aparell CS50, i dir-los que 575 00:23:32,340 --> 00:23:33,960 programari lliure - l'hipervisor - 576 00:23:33,960 --> 00:23:38,080 per executar el CS50 Appliance en una finestra a l'ordinador. 577 00:23:38,080 --> 00:23:39,490 I el que passa és el següent. 578 00:23:39,490 --> 00:23:43,660 >> He Ara, fixin-aquí, el que sembla ser un ordinador d'escriptori 579 00:23:43,660 --> 00:23:44,130 ambient. 580 00:23:44,130 --> 00:23:46,150 I deixin-me realment reduir aquesta finestra. 581 00:23:46,150 --> 00:23:49,640 Així que aquesta és la meva Mac, amb un temps molt limitat, ia l'interior 582 00:23:49,640 --> 00:23:51,300 d'aquesta finestra esdevé un completament 583 00:23:51,300 --> 00:23:52,380 sistema operatiu diferent. 584 00:23:52,380 --> 00:23:55,250 De fet hi ha aquest menú d'inici aquí baix, que recorda 585 00:23:55,250 --> 00:23:57,990 Windows, que té un munt de sub-menús, incloent 586 00:23:57,990 --> 00:24:00,720 un enllaç al manual CS50, Dropbox, i similars. 587 00:24:00,720 --> 00:24:03,480 I el que aquest entorn és un entorn estàndard 588 00:24:03,480 --> 00:24:06,280 que tots nosaltres podem utilitzar, de manera que no importa quina sigui la seva 589 00:24:06,280 --> 00:24:08,960 ordinador és, el que vostè ha instal · lat, la versió 590 00:24:08,960 --> 00:24:11,430 de Mac OS o Windows que està executant, ara tots tenen la 591 00:24:11,430 --> 00:24:12,800 mateix entorn. 592 00:24:12,800 --> 00:24:15,850 I ara, en aquest ambient podem començar a escriure una mica de codi. 593 00:24:15,850 --> 00:24:18,480 >> Així que vaig a seguir endavant i obrir un programa anomenat gedit. 594 00:24:18,480 --> 00:24:21,500 Això és comparable a notepad.exe, o 595 00:24:21,500 --> 00:24:22,790 TextEdit en Mac 596 00:24:22,790 --> 00:24:25,390 I això és només un super senzill programa d'edició de text 597 00:24:25,390 --> 00:24:27,500 que té aquest aspecte a primera vista. 598 00:24:27,500 --> 00:24:30,640 Ara a la part superior, tinc una paleta de color blanc, a la part inferior que 599 00:24:30,640 --> 00:24:33,860 tenir aquesta finestra en negre que diu jharvard aparell @. 600 00:24:33,860 --> 00:24:36,440 I això és perquè el compte d'usuari que prèviament creat 601 00:24:36,440 --> 00:24:38,430 per a tothom que es diu John Harvard. 602 00:24:38,430 --> 00:24:41,490 Ell té una carpeta on tots els seus arxius s'aniran, i 603 00:24:41,490 --> 00:24:43,500 aquí és on podem començar a escriure una mica de codi. 604 00:24:43,500 --> 00:24:45,810 Així que permetin-me anar davant aquí i apropar una mica, i estic 605 00:24:45,810 --> 00:24:51,550 farem # include, int main (void), i 606 00:24:51,550 --> 00:24:57,470 llavors jo vaig a fer printf ("hola món") 607 00:24:57,470 --> 00:24:59,490 , Retorna 0. 608 00:24:59,490 --> 00:25:01,400 Ara tot això és bastant blanc i negre. 609 00:25:01,400 --> 00:25:03,830 >> Deixin-me seguir endavant i fer una cosa per ensenyar gedit el que sóc 610 00:25:03,830 --> 00:25:04,510 fent en realitat. 611 00:25:04,510 --> 00:25:06,140 Deixa anar a desa. 612 00:25:06,140 --> 00:25:08,560 Vaig a triar a l'esquerra aquí jharvard. 613 00:25:08,560 --> 00:25:11,010 Així que de nou, fins i tot si vostè mai ha usat Linux abans, francament 614 00:25:11,010 --> 00:25:13,680 aquests dies, tots ells estan delegant en essencialment la 615 00:25:13,680 --> 00:25:14,590 mateix tipus d'interfície - 616 00:25:14,590 --> 00:25:16,030 Mac OS, Windows i Linux. 617 00:25:16,030 --> 00:25:18,680 Així que vaig triar la carpeta jharvard casa. 618 00:25:18,680 --> 00:25:21,120 I vaig a guardar aquest fitxer hello.c. 619 00:25:21,120 --> 00:25:24,260 Així que en la part superior, vaig escriure hello.c; nomenar un C 620 00:25:24,260 --> 00:25:26,520 programa amb l'extensió. c és 621 00:25:26,520 --> 00:25:27,570 el que és una pràctica comuna. 622 00:25:27,570 --> 00:25:28,650 I em va colpejar a Desa. 623 00:25:28,650 --> 00:25:32,510 I ara el millor és que he ensenyat efectivament gedit, 624 00:25:32,510 --> 00:25:33,690 que aquest és un programa C. 625 00:25:33,690 --> 00:25:36,470 Tingueu en compte que el meu text en blanc i negre és ara un codi de colors, o 626 00:25:36,470 --> 00:25:39,330 sintaxi ressaltada, que només em crida l'atenció sobre la 627 00:25:39,330 --> 00:25:41,540 diferents parts semàntiques del programa. 628 00:25:41,540 --> 00:25:44,260 A la part superior esquerra hi ha, ja que els meus programes es tornen més complexos, estic 629 00:25:44,260 --> 00:25:47,060 tindrà un resum de totes les coses que he escrit. 630 00:25:47,060 --> 00:25:48,050 Així que és això allà dalt. 631 00:25:48,050 --> 00:25:52,350 Ara permetin-me fer un zoom cap a fora i anar a aquesta finestra de terminal. 632 00:25:52,350 --> 00:25:54,570 >> Així que aquesta és potser nou per a moltes persones. 633 00:25:54,570 --> 00:25:57,260 Si vostè mai ha usat un entorn de línia d'ordres, vostè mai ha 634 00:25:57,260 --> 00:26:00,020 utilitza DOS, o mai ha usat Linux, o mai has obert 635 00:26:00,020 --> 00:26:02,550 Mac OS finestra de terminal, hi ha un munt de coses que 636 00:26:02,550 --> 00:26:04,820 es podia fer amb la interfície gràfica d'usuari, com ara assenyalar i fer clic, i 637 00:26:04,820 --> 00:26:07,080 arrossegant i deixant anar, i similars, però en general - 638 00:26:07,080 --> 00:26:09,360 certament en el món de la informàtica - 639 00:26:09,360 --> 00:26:11,580 utilitzant una línia d'ordres, on vostè no té el punter del ratolí 640 00:26:11,580 --> 00:26:14,220 en general, és suficient amb el teclat, és en realitat molt 641 00:26:14,220 --> 00:26:17,260 més poderosa que la interfície, un cop s'aclimati a la 642 00:26:17,260 --> 00:26:18,580 diversos ordres. 643 00:26:18,580 --> 00:26:20,940 I quin tipus de alliberar-se de la necessitat d'apuntar i fer clic 644 00:26:20,940 --> 00:26:21,690 en tot. 645 00:26:21,690 --> 00:26:23,890 Així que en gedit anem a resoldre de tenir el millor d'ambdós mons. 646 00:26:23,890 --> 00:26:25,600 Podem arrossegar i deixar anar text, podem veure 647 00:26:25,600 --> 00:26:26,840 bonic i amb colors. 648 00:26:26,840 --> 00:26:29,630 Però quan arriba el moment d'executar el nostre programa, de vegades vaig a 649 00:26:29,630 --> 00:26:31,750 només ha d'utilitzar aquesta petita finestra aquí. 650 00:26:31,750 --> 00:26:33,460 >> Així que vaig a seguir endavant i fer-ho. 651 00:26:33,460 --> 00:26:36,420 A la finestra de fons en blanc i negre, seguiré endavant 652 00:26:36,420 --> 00:26:37,890 i escriure clang. 653 00:26:37,890 --> 00:26:40,130 I clang és el nom d'un compilador. 654 00:26:40,130 --> 00:26:43,310 És un programa que converteix el codi font 655 00:26:43,310 --> 00:26:48,770 a, per la qual cosa, de codi objecte. 656 00:26:48,770 --> 00:26:51,270 0s i 1s, que vam veure breument la setmana passada. 657 00:26:51,270 --> 00:26:53,700 Recordem que la setmana passada, ens van prometre que ens anaven a 658 00:26:53,700 --> 00:26:55,920 passar d'alguna cosa com això - que necessitàvem estar 659 00:26:55,920 --> 00:26:57,010 alguna cosa com això - 660 00:26:57,010 --> 00:26:58,700 i això certament no és una cosa que un ésser humà va 661 00:26:58,700 --> 00:26:59,690 per fer-ho manualment. 662 00:26:59,690 --> 00:27:01,980 Així que en comptes que farem servir un programa, i aquest programa en 663 00:27:01,980 --> 00:27:03,430 aquest cas es denomina Clang. 664 00:27:03,430 --> 00:27:06,020 I el nom del meu programa és hello.c. 665 00:27:06,020 --> 00:27:09,670 Així que per compilar hello.c de codi font en 666 00:27:09,670 --> 00:27:12,930 codi objecte o 0s i 1s, hauria de ser suficient amb només fer 667 00:27:12,930 --> 00:27:14,820 això i premeu Enter. 668 00:27:14,820 --> 00:27:16,850 >> Bé, res sembla haver succeït. 669 00:27:16,850 --> 00:27:20,450 Però sé que ara, o des de la setmana passada, que el nom predeterminat de 670 00:27:20,450 --> 00:27:24,920 un programa, quan està escrit en C, es tontament anomenat a.out. 671 00:27:24,920 --> 00:27:26,610 Nom menys interessant que podria ocórrer. 672 00:27:26,610 --> 00:27:28,790 A és la primera lletra de l'alfabet, la sortida és el que era 673 00:27:28,790 --> 00:27:29,960 emesa, però que així sigui. 674 00:27:29,960 --> 00:27:33,570 Aquest és el meu programa, i ara punt barra inclinada, com veurem és, 675 00:27:33,570 --> 00:27:36,170 en realitat una mena de funció de seguretat, ja que 676 00:27:36,170 --> 00:27:38,250 a.out és un programa que vaig escriure. 677 00:27:38,250 --> 00:27:39,650 No va venir amb el meu ordinador, és 678 00:27:39,650 --> 00:27:40,790 no en Arxius de programa. 679 00:27:40,790 --> 00:27:42,910 No està a la carpeta Mac OS Aplicacions. 680 00:27:42,910 --> 00:27:45,740 He de ser súper explícit amb l'ordinador, i dir 681 00:27:45,740 --> 00:27:49,030 aquest programa, a.out, es troba a la carpeta actual, la 682 00:27:49,030 --> 00:27:50,260 directori actual. 683 00:27:50,260 --> 00:27:53,160 I la manera de representar això en un ambient com aquest 684 00:27:53,160 --> 00:27:57,070 és punt representa qualsevol carpeta que està actualment polz 685 00:27:57,070 --> 00:27:59,420 I així. / A.out només significa córrer 686 00:27:59,420 --> 00:28:00,530 a la carpeta actual. 687 00:28:00,530 --> 00:28:04,830 I em quedo amb aquest Enter, i llest, el meu programa per primera vegada. 688 00:28:04,830 --> 00:28:05,990 >> Ara vaig a fer un pas enrere. 689 00:28:05,990 --> 00:28:08,280 Aquesta finestra és una mica petita, i adonar-se que la part inferior 690 00:28:08,280 --> 00:28:10,340 esquerra de l'aparell aquí és un altre icona. 691 00:28:10,340 --> 00:28:12,660 Un d'ells és Chrome, que ha de ser molt familiar, només un web 692 00:28:12,660 --> 00:28:14,350 navegador a l'interior de l'aparell. 693 00:28:14,350 --> 00:28:16,340 I aquesta icona en blanc i negre és només un 694 00:28:16,340 --> 00:28:17,720 terminal de finestra més gran. 695 00:28:17,720 --> 00:28:19,830 Així que si es posa una mica molest per ordenar de tenir només 696 00:28:19,830 --> 00:28:22,270 aquesta petita porció petita d'una finestra amb la qual interactuen 697 00:28:22,270 --> 00:28:24,370 amb programes, en el seu lloc pot fer això. 698 00:28:24,370 --> 00:28:26,640 I ara anem a començar a escriure una mica aviat 699 00:28:26,640 --> 00:28:27,980 per ser ordres coneguts. 700 00:28:27,980 --> 00:28:28,900 ls. 701 00:28:28,900 --> 00:28:31,410 Així és la comanda ls per al llistat. 702 00:28:31,410 --> 00:28:33,900 Així que en un sistema operatiu Mac o Windows, generalment doble clic en un 703 00:28:33,900 --> 00:28:36,510 carpeta i, voila, vostè veu tots els arxius de diverses 704 00:28:36,510 --> 00:28:37,210 i carpetes. 705 00:28:37,210 --> 00:28:39,650 En un entorn de línia d'ordres, on només es pot escriure 706 00:28:39,650 --> 00:28:42,390 ordres o text, ls és l'equivalent. 707 00:28:42,390 --> 00:28:44,380 Així que em mostren el que hi ha en aquest directori. 708 00:28:44,380 --> 00:28:46,540 >> Ara hi ha un munt de coses aquí que alhora una mica 709 00:28:46,540 --> 00:28:48,190 familiar i una mica estrany. 710 00:28:48,190 --> 00:28:50,740 Però cal notar que igual que Windows i Mac OS, jharvard 711 00:28:50,740 --> 00:28:52,190 té una carpeta de l'escriptori. 712 00:28:52,190 --> 00:28:54,520 Així que les icones que es troben a l'escriptori de succeir 713 00:28:54,520 --> 00:28:55,650 estar en aquesta carpeta. 714 00:28:55,650 --> 00:28:57,250 Hi ha una carpeta de descàrregues, coses que 715 00:28:57,250 --> 00:28:58,890 Chrome podria posar allà. 716 00:28:58,890 --> 00:28:59,250 Dropbox. 717 00:28:59,250 --> 00:29:01,820 De manera que l'aparell ve amb suport integrat per Dropbox 718 00:29:01,820 --> 00:29:04,500 pel que al llarg del semestre, pots sincronitzar amb el teu Dropbox 719 00:29:04,500 --> 00:29:06,420 compte perquè tots els programes estan recolzats. 720 00:29:06,420 --> 00:29:08,050 Són accessibles en l'altre ordinador. 721 00:29:08,050 --> 00:29:09,780 Si alguna cosa li surt malament amb l'aparell, pot 722 00:29:09,780 --> 00:29:11,340 molt fàcilment recuperar de Dropbox. 723 00:29:11,340 --> 00:29:12,940 Així que aquesta carpeta hi és per això. 724 00:29:12,940 --> 00:29:14,660 Hi ha dos arxius que he fet - hello.c 725 00:29:14,660 --> 00:29:16,540 i a.out. 726 00:29:16,540 --> 00:29:18,530 I després, a la dreta hi ha algunes altres carpetes que anem a 727 00:29:18,530 --> 00:29:20,710 arribar a al final del semestre, amb web 728 00:29:20,710 --> 00:29:21,540 programació. 729 00:29:21,540 --> 00:29:26,160 Així que quan ho faig. /, A.out, Enter, que ja és dir anar 730 00:29:26,160 --> 00:29:29,460 en el directori que estigui en el directori actual, i executar el 731 00:29:29,460 --> 00:29:32,465 programa anomenat a.out aquí. 732 00:29:32,465 --> 00:29:35,810 >> Molt bé, així que és agradable i bo, però no és tot el que 733 00:29:35,810 --> 00:29:38,550 de pes per escriure un programa anomenat a.out ajudar. 734 00:29:38,550 --> 00:29:40,790 Així que en realitat es pot fer això una mica diferent. 735 00:29:40,790 --> 00:29:43,980 Així que en lloc de només so metàl · lic en execució, hello.c, anem a afegir 736 00:29:43,980 --> 00:29:46,850 el que s'anomena un argument de línia d'ordres. 737 00:29:46,850 --> 00:29:50,730 Així que un argument de línia d'ordres, o un interruptor en aquest cas, és només 738 00:29:50,730 --> 00:29:54,930 altra paraula o frase que s'escriu en l'indicador després d' 739 00:29:54,930 --> 00:29:56,290 el programa que voleu executar. 740 00:29:56,290 --> 00:29:59,970 Així que en aquest cas, clang és el programa que voleu executar,-o 741 00:29:59,970 --> 00:30:03,480 sortida mitjançant un arxiu que ja no es diu a.out. 742 00:30:03,480 --> 00:30:07,510 Imprimeix un fitxer anomenat hola, i ho fan mitjançant la compilació de la 743 00:30:07,510 --> 00:30:10,200 última paraula en la línia, hello.c. 744 00:30:10,200 --> 00:30:13,200 Així que en resum, es tracta d'una millora molt marginal, per la qual cosa 745 00:30:13,200 --> 00:30:15,850 en lloc de tenir aquest arxiu a.out estúpidament nomenat, 746 00:30:15,850 --> 00:30:21,430 Ara puc fer soroll metàl · lic-o hola, llavors hello.c, i 747 00:30:21,430 --> 00:30:22,530 a continuació, premeu la tecla Enter. 748 00:30:22,530 --> 00:30:25,510 Res sembla succeir, però de nou molt semblant amb 0 - quan 749 00:30:25,510 --> 00:30:28,510 sembla que res passa que no significa res dolent va succeir - 750 00:30:28,510 --> 00:30:31,460 així que farem ls ara, Acceptar, i de fet jo ara 751 00:30:31,460 --> 00:30:32,780 tenir un programa de hola. 752 00:30:32,780 --> 00:30:38,510 Així que si escric hola ara, no s'ha trobat comanda. 753 00:30:38,510 --> 00:30:39,440 OK,. /. 754 00:30:39,440 --> 00:30:40,220 Així que la raó. 755 00:30:40,220 --> 00:30:43,170 Així doncs aquest programa que he escrit, i no va venir amb 756 00:30:43,170 --> 00:30:45,810 l'ordinador,. / hola, Enter, significa 757 00:30:45,810 --> 00:30:47,350 Ara estic corrent hola. 758 00:30:47,350 --> 00:30:48,440 >> Així que aquí està. 759 00:30:48,440 --> 00:30:51,070 Ara el que finalment arribarà a la línia de comandes cada vegada més 760 00:30:51,070 --> 00:30:54,110 arguments que ens permeten fer més, però només per als de 761 00:30:54,110 --> 00:30:57,760 els quals això podria ser força vell, vull realment anar a un 762 00:30:57,760 --> 00:31:01,910 directori aquí i només li donen un teaser de la resta que 763 00:31:01,910 --> 00:31:05,770 podria anar sobre l'aplicació Hello World. 764 00:31:05,770 --> 00:31:10,730 Déjame entrar aquí, i vaig a obrir. 765 00:31:10,730 --> 00:31:13,090 Així que en realitat, vaig a explicar el que estic fent, així 766 00:31:13,090 --> 00:31:15,610 això és útil. 767 00:31:15,610 --> 00:31:17,410 Permetin-me tornar. 768 00:31:17,410 --> 00:31:19,620 >> Així que he estat fent això des de fa molt temps. 769 00:31:19,620 --> 00:31:23,030 Així notar més a la dreta, hi ha un parell de 770 00:31:23,030 --> 00:31:26,940 directoris que són estranyament anomenat source1m i source1w. 771 00:31:26,940 --> 00:31:28,830 Això és només convenció ximple que utilitzem. 772 00:31:28,830 --> 00:31:31,825 Font només significa codi font, 1 significa que es tracta d'una setmana, i 773 00:31:31,825 --> 00:31:34,000 m significa que és dilluns, i w significa que és dimecres. 774 00:31:34,000 --> 00:31:34,900 Així que res críptic allà. 775 00:31:34,900 --> 00:31:37,830 És només notació abreujada. 776 00:31:37,830 --> 00:31:39,860 Aquestes coses són les carpetes blaves, també coneguda com 777 00:31:39,860 --> 00:31:40,630 directoris. 778 00:31:40,630 --> 00:31:43,870 Jo vull anar a aquesta carpeta ara, i en un ordinador normal 779 00:31:43,870 --> 00:31:45,710 Només pot fer doble clic a una icona de carpeta i 780 00:31:45,710 --> 00:31:46,810 hi ha tots els meus arxius. 781 00:31:46,810 --> 00:31:49,270 No obstant això, en un entorn de línia d'ordres, jo no puc fer 782 00:31:49,270 --> 00:31:52,640 que, pel que en el seu lloc, he de canviar de directori manualment. 783 00:31:52,640 --> 00:31:57,900 Així que si jo escrigui cd i després source1m, Enter, observi que 784 00:31:57,900 --> 00:32:01,180 meu sistema, la cosa en blanc a l'esquerra, acaba de canviar. 785 00:32:01,180 --> 00:32:03,690 I així, en efecte, quan s'acaba de dir parèntesi i després els 786 00:32:03,690 --> 00:32:06,450 gargot poc, el símbol de titlla, això significava que era 787 00:32:06,450 --> 00:32:08,800 al directori principal John Harvard, els seus meus documents, 788 00:32:08,800 --> 00:32:10,390 seus arxius personals. 789 00:32:10,390 --> 00:32:14,000 Però ara entre parèntesi que diu ~ / source1m. 790 00:32:14,000 --> 00:32:17,090 Això només vol dir que estic en una carpeta anomenada source1m 791 00:32:17,090 --> 00:32:19,160 això és al directori principal John Harvard. 792 00:32:19,160 --> 00:32:22,030 Així que si ara volem llistar els arxius en aquesta carpeta, fàcil 793 00:32:22,030 --> 00:32:25,300 pregunta, escric només ls. 794 00:32:25,300 --> 00:32:28,860 I ara veig tots els arxius que he creat prèviament per avui 795 00:32:28,860 --> 00:32:31,020 conferència, tots els quals, o la major part dels quals, es produeixen 796 00:32:31,020 --> 00:32:32,740 per acabar en. c. 797 00:32:32,740 --> 00:32:36,210 >> Així que permetin-me anar endavant ara i executar gedit d'un programa anomenat 798 00:32:36,210 --> 00:32:39,140 holloway.c, que està escrit per algun hacker atzar 799 00:32:39,140 --> 00:32:42,920 a Internet, que s'assembla una mica a això. 800 00:32:42,920 --> 00:32:44,880 I no anem a anar a través d'aquest, en qualsevol 801 00:32:44,880 --> 00:32:48,530 detall, però per aquells més còmode, en particular, si 802 00:32:48,530 --> 00:32:50,935 vostè vol prendre una conjectura pel que fa al que fa el programa aquí. 803 00:32:57,950 --> 00:32:59,990 Tingui la seguretat, ja que és menys o més còmoda, 804 00:32:59,990 --> 00:33:01,655 no estem tan sols arribar a aquest tipus de coses abans de finals d' 805 00:33:01,655 --> 00:33:02,160 aquest semestre. 806 00:33:02,160 --> 00:33:05,390 Això és el que és un exemple d'un concurs ofuscat C, que 807 00:33:05,390 --> 00:33:08,390 significa escriure el programa més críptic buscant possiblement 808 00:33:08,390 --> 00:33:10,820 pot superar a altres persones intel · ligents, que són igualment 809 00:33:10,820 --> 00:33:13,010 tractant d'escriure les coses i mostrar que poden escriure 810 00:33:13,010 --> 00:33:14,280 les coses més secretes que tu. 811 00:33:14,280 --> 00:33:17,290 Així que això no és un exemple d'un programa ben escrit de la 812 00:33:17,290 --> 00:33:21,260 punt de vista d'estil, aquest és un exemple d'un programa que 813 00:33:21,260 --> 00:33:22,860 guanya un concurs, per a la gent tractant de 814 00:33:22,860 --> 00:33:24,090 ser vague i abstracte. 815 00:33:24,090 --> 00:33:27,670 >> Així que si correm això, deixa entrar a la meva finestra de terminal, 816 00:33:27,670 --> 00:33:28,110 per dir-ho. 817 00:33:28,110 --> 00:33:29,650 Així que aquest medi ambient en blanc i negre es denomina 818 00:33:29,650 --> 00:33:31,160 finestra de terminal en general. 819 00:33:31,160 --> 00:33:32,600 Deixa anar per davant i compilar. 820 00:33:32,600 --> 00:33:34,440 Jo no vaig a utilitzar so metàl · lic, ja que aquest programa és un 821 00:33:34,440 --> 00:33:36,340 poc críptic i necessita una diferent 822 00:33:36,340 --> 00:33:38,190 compilador, un anomenat GCC. 823 00:33:38,190 --> 00:33:39,200 Però fa el mateix. 824 00:33:39,200 --> 00:33:41,130 Es necessita codi font a codi objecte. 825 00:33:41,130 --> 00:33:43,940 I ara si em quedo a.out, aquest programa que 826 00:33:43,940 --> 00:33:46,065 acabo de veure fa això. 827 00:33:49,220 --> 00:33:51,170 Així que aquest any va guanyar company aquest concurs. 828 00:33:51,170 --> 00:33:54,020 De tota manera, no anem en aquesta direcció, per se. 829 00:33:54,020 --> 00:33:57,400 >> Així que en realitat tracten de burlar-ara, a part el que podem fer 830 00:33:57,400 --> 00:33:59,540 amb aquests blocs de construcció bàsics per fer més i més 831 00:33:59,540 --> 00:34:00,590 programes interessants. 832 00:34:00,590 --> 00:34:02,800 Per això hem escrit un programa, hem executar un programa. 833 00:34:02,800 --> 00:34:05,780 Ara realment podem simplificar i ja no han d'escriure 834 00:34:05,780 --> 00:34:07,210 el so metàl · lic paraula en l'indicador. 835 00:34:07,210 --> 00:34:10,710 Resulta que els nostres programes es fan més críptic, podem, o 836 00:34:10,710 --> 00:34:14,699 més complex i no, en realitat podem executar aquesta comanda. 837 00:34:14,699 --> 00:34:17,610 Així que permetin-me tornar al meu directori personal, per dir-ho així, permetin-me 838 00:34:17,610 --> 00:34:20,750 treure - rm és la comanda remove - Vaig a treure 839 00:34:20,750 --> 00:34:23,060 l'arxiu anomenat a.out i una salutació. 840 00:34:23,060 --> 00:34:25,489 I ara notin en un entorn de línia d'ordres, igual que en 841 00:34:25,489 --> 00:34:27,800 una interfície gràfica d'usuari, s'obté se li sol · liciti. No pot fer clic en un botó, encara que, jo 842 00:34:27,800 --> 00:34:31,040 ha d'escriure i per a si, i per a si. 843 00:34:31,040 --> 00:34:33,460 I ara si em escriviu ls de nou, observi que els verds 844 00:34:33,460 --> 00:34:35,469 - Programes a.out i hola - 845 00:34:35,469 --> 00:34:35,734 s'han anat. 846 00:34:35,734 --> 00:34:37,340 Aneu amb compte amb rm. 847 00:34:37,340 --> 00:34:39,739 Es poden fer coses dolentes, igual que vostè pot arrossegar 848 00:34:39,739 --> 00:34:40,810 coses a les escombraries. 849 00:34:40,810 --> 00:34:43,989 >> Així que ara seguirem endavant - i no vaig poder fer això - so metàl · lic-o 850 00:34:43,989 --> 00:34:45,139 hola, hola - 851 00:34:45,139 --> 00:34:46,884 Ja estic avorrit escriure aquest comando. 852 00:34:46,884 --> 00:34:48,080 Tot i que ha escrit una mica ràpid. 853 00:34:48,080 --> 00:34:51,870 Així que en el seu lloc pot fer fer hello. 854 00:34:51,870 --> 00:34:53,880 Així que no és un compilador. 855 00:34:53,880 --> 00:34:57,720 És només un programa amigable que ve amb Linux, en aquest 856 00:34:57,720 --> 00:34:59,070 cas - el sistema operatiu - 857 00:34:59,070 --> 00:35:02,480 que automatitza el procés de compilació de programes. 858 00:35:02,480 --> 00:35:05,555 Així que en lloc de recordar clang-o nom d'arxiu i 859 00:35:05,555 --> 00:35:08,190 llavors així successivament, especialment una vegada que aquestes línies es fan més llargs i 860 00:35:08,190 --> 00:35:10,110 més temps, puc escriure fer. 861 00:35:10,110 --> 00:35:12,030 I això va a escopir un munt de coses que 862 00:35:12,030 --> 00:35:13,940 que finalment veurà aquest semestre. 863 00:35:13,940 --> 00:35:17,500 Però noti ara si ls tipus, hola està de tornada en el meu directori. 864 00:35:17,500 --> 00:35:19,850 I de fet ho puc executar amb. / Hello. 865 00:35:19,850 --> 00:35:23,330 Així que simplement automatitza el procés d'execució del que va ser, 866 00:35:23,330 --> 00:35:26,910 en aquest cas, una molt més llarga, més complex de comandaments. 867 00:35:26,910 --> 00:35:29,060 Així que anem a començar a utilitzar la marca, només perquè és molt 868 00:35:29,060 --> 00:35:30,530 més fàcil d'usar. 869 00:35:30,530 --> 00:35:32,770 >> Però ara anem a fer un programa més interessant 870 00:35:32,770 --> 00:35:34,650 que acaba de dir hola. 871 00:35:34,650 --> 00:35:38,680 Així que en els programes que hem escrit fins ara no hi ha principal. 872 00:35:38,680 --> 00:35:40,890 Això és just el que s'inicia per defecte tot el que fos. 873 00:35:40,890 --> 00:35:43,340 Però hi ha funcions que hi ha per aquí també, i 874 00:35:43,340 --> 00:35:45,890 stdio.h és el que vam veure a la part superior de la nostra 875 00:35:45,890 --> 00:35:48,480 arxius, i això és el que es coneix com la biblioteca estàndard. 876 00:35:48,480 --> 00:35:51,300 A l'interior de la biblioteca estàndard és un munt de funcions 877 00:35:51,300 --> 00:35:53,850 que algú més va escriure, i podem començar a utilitzar aquests 878 00:35:53,850 --> 00:35:55,050 funcions per escriure més 879 00:35:55,050 --> 00:35:56,760 programes interessants per a nosaltres mateixos. 880 00:35:56,760 --> 00:35:58,370 >> Així que permetin-me tornar a l'equip. 881 00:35:58,370 --> 00:35:59,820 Vaig a tancar aquesta finestra de terminal. 882 00:35:59,820 --> 00:36:02,630 Vaig a tancar les coses que escrivim abans, i només anar 883 00:36:02,630 --> 00:36:07,350 en hello.c, i noti que ara puc fer el següent. 884 00:36:07,350 --> 00:36:09,730 Hola món no és tan interessant, m'agradaria 885 00:36:09,730 --> 00:36:11,770 personalitzar aquest programa per a mi. 886 00:36:11,770 --> 00:36:13,440 Així que en comptes de dir el món, vaig a 887 00:36:13,440 --> 00:36:14,830 seguir endavant i dir - 888 00:36:14,830 --> 00:36:16,880 Jo podria escriure David - però això realment és una espècie de 889 00:36:16,880 --> 00:36:18,050 fonamentalment els mateixos. 890 00:36:18,050 --> 00:36:19,970 Però anem a provar aquesta idea marcador de posició. 891 00:36:19,970 --> 00:36:24,460 Recordem que en C, en lloc de printf, hem tingut aquests 892 00:36:24,460 --> 00:36:28,110 marcadors de posició, i hi ha més de% d justa. 893 00:36:28,110 --> 00:36:31,150 Així va ser% d, comprovació de validesa ràpid. 894 00:36:31,150 --> 00:36:32,310 Bé, el nombre decimal, això és tot. 895 00:36:32,310 --> 00:36:33,860 Dígits decimals, això és tot. 896 00:36:33,860 --> 00:36:37,755 Així que c%, ja que es trobarà, serà un personatge. 897 00:36:37,755 --> 00:36:40,530 Posi un personatge aquí, una carta de la az, 898 00:36:40,530 --> 00:36:41,600 o puntuació símbol. 899 00:36:41,600 --> 00:36:45,590 Un personatge únic,% f, algú sap d'altres idiomes? 900 00:36:45,590 --> 00:36:47,020 Així un valor de punt flotant. 901 00:36:47,020 --> 00:36:47,880 Un nombre real. 902 00:36:47,880 --> 00:36:51,550 Així que no és un nombre decimal - això és realment un nombre real amb 903 00:36:51,550 --> 00:36:54,130 un punt decimal i un nombre de dígits a l'esquerra 904 00:36:54,130 --> 00:36:55,520 i dret de la mateixa. 905 00:36:55,520 --> 00:36:58,060 % S, String. 906 00:36:58,060 --> 00:36:59,530 Aquell que veurem molt sovint. 907 00:36:59,530 --> 00:37:02,140 Una cadena, de nou, és només una paraula, una frase, una seqüència de 908 00:37:02,140 --> 00:37:03,330 caràcters individuals. 909 00:37:03,330 --> 00:37:06,730 I, finalment, LLD? 910 00:37:06,730 --> 00:37:08,210 Així que això és més aviat un cas de la cantonada. 911 00:37:08,210 --> 00:37:09,850 Llarg, llarg decimal. 912 00:37:09,850 --> 00:37:12,035 Així que si no volen només un nombre que és tan gran, que 913 00:37:12,035 --> 00:37:14,160 vol un nombre més gran, hauràs d'especificar a 914 00:37:14,160 --> 00:37:16,400 l'equip que és d'una grandària particular. 915 00:37:16,400 --> 00:37:17,610 >> Així que anem a ajustar això una mica. 916 00:37:17,610 --> 00:37:20,610 En lloc de codificar en David, deixa una mica 917 00:37:20,610 --> 00:37:22,460 dinàmicament diuen% s. 918 00:37:22,460 --> 00:37:25,790 Així que posa't% s aquí, que és un marcador de posició per a una cadena. 919 00:37:25,790 --> 00:37:30,500 Llavors m'ho dius a mi fer coma, i després "David" per aquí. 920 00:37:30,500 --> 00:37:32,770 Ara bé, això no és tot el que intel · lectualment interessant, 921 00:37:32,770 --> 00:37:35,060 perquè tot el que he fet ara és realment crear més treball per 922 00:37:35,060 --> 00:37:35,790 l'ordinador. 923 00:37:35,790 --> 00:37:39,660 En lloc de dir-li a l'ordinador què tot això alhora, estic ara 924 00:37:39,660 --> 00:37:43,760 dient això i inserir una cadena d'aquí al final, coma, 925 00:37:43,760 --> 00:37:44,950 aquí és la cadena. 926 00:37:44,950 --> 00:37:47,220 Així que això no és una millora millor, però és almenys 927 00:37:47,220 --> 00:37:49,010 un pas cap a un programa més interessant. 928 00:37:49,010 --> 00:37:51,240 Perquè ara, deixa seguir endavant i fer una mica aquesta finestra 929 00:37:51,240 --> 00:37:56,850 més gran, deixa seguir endavant i executar make hello. 930 00:37:56,850 --> 00:38:01,340 I ara,. / A.out no funciona, per què? 931 00:38:03,880 --> 00:38:05,570 Molt bé, ara es diu hello. 932 00:38:05,570 --> 00:38:09,400 Així que de nou fan, i també amb un so metàl · lic o-, va canviar el nom del 933 00:38:09,400 --> 00:38:11,120 programa d'haver alguna cosa més interessant. 934 00:38:11,120 --> 00:38:13,060 I voilà: ara diu hola David. 935 00:38:13,060 --> 00:38:14,590 >> Molt bé, segueix sent un programa estúpid. 936 00:38:14,590 --> 00:38:18,070 Així que ara anem a tornar aquí en realitat i introduir la noció 937 00:38:18,070 --> 00:38:18,810 d'una variable. 938 00:38:18,810 --> 00:38:21,600 No seria bo si pogués declarar una variable 939 00:38:21,600 --> 00:38:23,150 el tipus és una cadena? 940 00:38:23,150 --> 00:38:26,720 I el valor de la variable en realitat prové de l'usuari 941 00:38:26,720 --> 00:38:27,810 ell o ella. 942 00:38:27,810 --> 00:38:30,240 Per tant arbitràriament, vaig a trucar al meu variable s, que és 943 00:38:30,240 --> 00:38:32,410 només una convenció comuna quan es té una variable anomenada 944 00:38:32,410 --> 00:38:33,250 la cadena. 945 00:38:33,250 --> 00:38:35,670 Faré signe igual, i després vaig a trucar a un 946 00:38:35,670 --> 00:38:38,030 funció anomenada GetString. 947 00:38:38,030 --> 00:38:40,830 Així GetString no és una cosa que ve incorporat en C. És 948 00:38:40,830 --> 00:38:43,330 una funció que el personal CS50 escriure, en realitat només per 949 00:38:43,330 --> 00:38:45,670 aquestes dues primeres setmanes, per simplificar el procés de 950 00:38:45,670 --> 00:38:49,450 rebent l'entrada de l'usuari i l'obtenció de l'entrada de l'usuari en el formulari 951 00:38:49,450 --> 00:38:51,960 de cadenes o números, i tal. 952 00:38:51,960 --> 00:38:55,520 Així és com GetString printf, però, òbviament, en lloc de 953 00:38:55,520 --> 00:38:58,700 imprimir que farà el que diu el seu nom, obtenir una cadena. 954 00:38:58,700 --> 00:39:00,970 Però per utilitzar GetString, haurem de fer un canvi 955 00:39:00,970 --> 00:39:03,180 aquí, més enllà d'això. 956 00:39:03,180 --> 00:39:07,170 Així intuïtiva, aquest programa, amb sort, d'alguna manera va a 957 00:39:07,170 --> 00:39:09,700 obtenir una cadena de l'usuari i, a continuació, què farà 958 00:39:09,700 --> 00:39:11,460 amb aquesta cadena, anomenada s? 959 00:39:15,060 --> 00:39:16,470 És només voleu imprimir, oi? 960 00:39:16,470 --> 00:39:18,870 Encara no és un programa estimulant perquè tot el que està passant 961 00:39:18,870 --> 00:39:22,160 de fer és connectar aquest valor on% s 962 00:39:22,160 --> 00:39:23,750 diu que hauria d'anar. 963 00:39:23,750 --> 00:39:25,290 >> Així que anem a almenys veure això en acció. 964 00:39:25,290 --> 00:39:27,040 Deixa guardar i allunyar la imatge. 965 00:39:27,040 --> 00:39:30,280 Ara, en la meva finestra de terminal aquí, la petita porció d'un, 966 00:39:30,280 --> 00:39:32,760 permetin-me tornar a fer fer hello. 967 00:39:32,760 --> 00:39:35,160 Molt bé, i ah, carai, jo tinc un munt d'errors. 968 00:39:35,160 --> 00:39:38,020 Permetin-me desplaçar-se cap amunt, i veiem la nostra primera - 969 00:39:38,020 --> 00:39:40,430 així que anem a fer-ho realitat en una finestra encara més gran pel que 970 00:39:40,430 --> 00:39:42,110 pot veure el malament que vaig ficar la pota - 971 00:39:42,110 --> 00:39:44,460 així que hola. 972 00:39:44,460 --> 00:39:46,540 Bé, això és un desastre, no? 973 00:39:46,540 --> 00:39:48,740 He escrit tres línies de codi, i 974 00:39:48,740 --> 00:39:50,070 que m'ha donat 12 errors. 975 00:39:50,070 --> 00:39:51,980 Per què és això? 976 00:39:51,980 --> 00:39:55,720 Llavors, afortunadament, moltes vegades quan vostè veu molts errors, molts 977 00:39:55,720 --> 00:39:57,730 escopint alhora, no deixa de ser perquè s'ha 978 00:39:57,730 --> 00:39:59,760 confondre l'ordinador fins aquí. 979 00:39:59,760 --> 00:40:02,330 I segueix sent confús per al moment en què arribi fins aquí. 980 00:40:02,330 --> 00:40:04,400 I pel que només s'inicia el tret, i ensopegant, i 981 00:40:04,400 --> 00:40:07,310 escopint més coses de por que s'aplica realment. 982 00:40:07,310 --> 00:40:10,120 Així que en general, sempre comencen amb el superior. 983 00:40:10,120 --> 00:40:13,320 >> Així que l'exemple més part superior de color vermell, el 984 00:40:13,320 --> 00:40:14,740 missatge d'error és aquest. 985 00:40:14,740 --> 00:40:17,750 L'ús de cadena d'identificador no declarat, el que 986 00:40:17,750 --> 00:40:19,160 significar estàndard en? 987 00:40:19,160 --> 00:40:19,900 No ho vaig fer. 988 00:40:19,900 --> 00:40:24,180 I significa cadena, però això és degut a que, també, la cadena de paraules 989 00:40:24,180 --> 00:40:26,020 que segueixo usant verbalment en realitat 990 00:40:26,020 --> 00:40:27,240 no existeix en C tampoc. 991 00:40:27,240 --> 00:40:29,470 És una cosa que utilitzarem només per a la primera setmana o dues 992 00:40:29,470 --> 00:40:34,500 aquí, però hi ha en un arxiu anomenat cs50.h. 993 00:40:34,500 --> 00:40:37,110 Així que per ara, sàpiguen que existeix aquesta altra biblioteca que el 994 00:40:37,110 --> 00:40:39,330 personal escriure, de manera que s'ha escrit més recentment que 995 00:40:39,330 --> 00:40:40,510 stdio.h. 996 00:40:40,510 --> 00:40:45,020 Però dins d'cs50.h és una definició, un sinònim de 997 00:40:45,020 --> 00:40:48,310 tipus, que crea aquesta cadena de paraules. 998 00:40:48,310 --> 00:40:50,890 >> Així que ara vull tornar a la meva finestra de terminal. 999 00:40:50,890 --> 00:40:53,200 Vaig a aclarir tot aquest embolic amb Ctrl-L. Anem a 1000 00:40:53,200 --> 00:40:55,700 Netegeu tot net, i jo seguiré endavant i fer 1001 00:40:55,700 --> 00:40:57,860 hola de nou, Acceptar. 1002 00:40:57,860 --> 00:40:59,440 Què ha passat ara? 1003 00:40:59,440 --> 00:41:01,150 Ara tots aquests errors va ser. 1004 00:41:01,150 --> 00:41:02,230 Llavors, què he fet realment? 1005 00:41:02,230 --> 00:41:05,920 Acabo va ensenyar l'equip que hi ha aquest tipus, i és que 1006 00:41:05,920 --> 00:41:07,890 en aquest arxiu anomenat cs50.h. 1007 00:41:07,890 --> 00:41:10,930 Així que deixi de queixar-se, perquè ara vostè sap on trobar 1008 00:41:10,930 --> 00:41:13,220 declaració d'aquesta funció per dir-ho. 1009 00:41:13,220 --> 00:41:15,200 Quan hi ha al món. 1010 00:41:15,200 --> 00:41:18,820 >> Així que ara vaig a seguir endavant i executar hola. 1011 00:41:18,820 --> 00:41:22,300 Sembla que tinc un bucle infinit, no passa res. 1012 00:41:25,530 --> 00:41:26,870 Així que he d'escriure alguna cosa aquí, clar. 1013 00:41:26,870 --> 00:41:29,650 La primera línia de codi en el meu programa va ser getString. 1014 00:41:29,650 --> 00:41:31,750 Així que, literalment, m'espera per obtenir una cadena. 1015 00:41:31,750 --> 00:41:33,680 Així que en aquest sentit sí, és un bucle infinit. 1016 00:41:33,680 --> 00:41:36,520 Pel que sembla, en GetString és el comportament per defecte que 1017 00:41:36,520 --> 00:41:37,510 escriure - el personal - 1018 00:41:37,510 --> 00:41:39,550 només diu d'esperar i esperar i esperar i esperar i esperar, 1019 00:41:39,550 --> 00:41:42,550 fins que l'usuari li dóna una cadena escrivint alguna cosa polz 1020 00:41:42,550 --> 00:41:46,000 Així que permetin-me anar davant i escriviu D-a-v - i-d, Intro. 1021 00:41:46,000 --> 00:41:47,420 I aquí està, hola David. 1022 00:41:47,420 --> 00:41:50,430 >> Ara bé, Et sembla que és només una actuació? 1023 00:41:50,430 --> 00:41:52,810 Deixin-me seguir endavant i escriure Tommy. 1024 00:41:52,810 --> 00:41:54,740 Introduïu, bé, sembla estar funcionant. 1025 00:41:54,740 --> 00:41:59,130 Obres per Rob, obres per Zamyla, treballa per - bé. 1026 00:41:59,130 --> 00:42:01,000 Així que va a treballar, el més probable. 1027 00:42:01,000 --> 00:42:05,030 Per tant, ha de imprimir qualsevol cosa que realment li donen, 1028 00:42:05,030 --> 00:42:07,830 i que pot ser una mica difícil aquí. 1029 00:42:07,830 --> 00:42:12,130 A veure si podem fer alguna cosa com hola. 1030 00:42:12,130 --> 00:42:18,000 Es pot anar per aquí, anem a veure, copiar, enganxar. 1031 00:42:18,000 --> 00:42:19,950 Jo no seré capaç d'enganxar que moltes vegades aquí. 1032 00:42:19,950 --> 00:42:24,410 Pegar, bé, Shift + Ctrl + V. Llavors, què podria 1033 00:42:24,410 --> 00:42:26,970 succeir això és dolent aquí? 1034 00:42:26,970 --> 00:42:27,770 >> Bé, llavors, segfaults. 1035 00:42:27,770 --> 00:42:29,710 Així que alguns de vosaltres amb antecedents anteriors sabran que 1036 00:42:29,710 --> 00:42:32,710 en general, donant un munt d'ordinadors entrades quan estiguin 1037 00:42:32,710 --> 00:42:36,140 Probablement no pretén rebre noms llargs com aquest - males 1038 00:42:36,140 --> 00:42:36,740 les coses succeeixin. 1039 00:42:36,740 --> 00:42:39,230 De fet, en el món de la web, també, això passa bastant, 1040 00:42:39,230 --> 00:42:41,000 de manera que quan vostè està dissenyant un lloc web, quan estàs 1041 00:42:41,000 --> 00:42:43,850 disseny de Facebook, vostè ha de prendre decisions arbitràries fins 1042 00:42:43,850 --> 00:42:45,370 davant, com el temps que es tracta d'algú 1043 00:42:45,370 --> 00:42:46,360 Facebook nom d'usuari serà? 1044 00:42:46,360 --> 00:42:48,050 O quant de temps va a nom d'algú ser? 1045 00:42:48,050 --> 00:42:50,110 Quant de temps durarà el número de telèfon d'algú ser i similars. 1046 00:42:50,110 --> 00:42:53,580 I si els programadors fer suposicions incorrectes, els programes de trencar 1047 00:42:53,580 --> 00:42:56,640 perquè intenta donar-los una major producció, més entrada 1048 00:42:56,640 --> 00:42:58,330 més aviat, que tenen memòria. 1049 00:42:58,330 --> 00:43:01,860 O RAM assignada per a això, de manera que si ara prem Intro, 1050 00:43:01,860 --> 00:43:04,640 que el programa de treball efectiu, ja que estàvem a la biblioteca 1051 00:43:04,640 --> 00:43:06,790 i que en realitat preveu aquest cas particular. 1052 00:43:06,790 --> 00:43:10,900 Però, sens dubte, en aquest semestre, va a escriure almenys un 1053 00:43:10,900 --> 00:43:13,280 programa que es diran aquestes paraules. 1054 00:43:13,280 --> 00:43:16,520 Recordar aquesta setmana a partir d'ara, potser d'aquí a dos dies. 1055 00:43:16,520 --> 00:43:18,760 Error de segmentació és negatiu. 1056 00:43:18,760 --> 00:43:21,920 Es farà referència a la seva fent una cosa que l'ordinador 1057 00:43:21,920 --> 00:43:23,310 no anticipar. 1058 00:43:23,310 --> 00:43:25,810 I en aquest cas, vostè, el programador, no anticipar. 1059 00:43:25,810 --> 00:43:27,720 Igual que aquest munt de mitjons, hi havia diversos 1060 00:43:27,720 --> 00:43:29,520 casos extrems podríem haver trobat. 1061 00:43:29,520 --> 00:43:32,340 Així mateix, en els programes sinó anticipar quant temps pot 1062 00:43:32,340 --> 00:43:33,310 el nom d'algú serà. 1063 00:43:33,310 --> 00:43:35,890 I si tinc un usuari maliciós, i és el seu nom 1064 00:43:35,890 --> 00:43:37,230 realitat és bastant curt, però s'estan tractant 1065 00:43:37,230 --> 00:43:37,960 ficar amb mi? 1066 00:43:37,960 --> 00:43:40,490 Què serà el comportament del meu programa? 1067 00:43:40,490 --> 00:43:43,930 Bé, en aquest cas, una cosa que en realitat es pot bloquejar. 1068 00:43:43,930 --> 00:43:44,750 >> Així que anem a fer això. 1069 00:43:44,750 --> 00:43:46,860 En 90 minuts, es tracta d'un llarg temps horrible 1070 00:43:46,860 --> 00:43:47,780 per fer la informàtica. 1071 00:43:47,780 --> 00:43:49,550 Per què no ens fiquem en l'hàbit de prendre cinc minuts 1072 00:43:49,550 --> 00:43:51,520 trencar aquí, i quan tornem, anem a bussejar en alguns 1073 00:43:51,520 --> 00:43:53,430 programes més complexos i urgents? 1074 00:43:53,430 --> 00:43:54,680 A cinc minuts. 1075 00:43:56,910 --> 00:43:58,160 >> Està bé. 1076 00:44:01,138 --> 00:44:02,780 Així que un ràpid comentari. 1077 00:44:02,780 --> 00:44:05,590 M'han dit que encara que això va ser a la pantalla abans, el que 1078 00:44:05,590 --> 00:44:08,880 va sortir de la meva boca va ser cs50.net/rsvp. 1079 00:44:08,880 --> 00:44:11,670 Això és correcte. cs50.net/lunch. 1080 00:44:11,670 --> 00:44:16,030 Així que ara vostè pot intentar RSVPing per aquesta en / dinar. 1081 00:44:16,030 --> 00:44:16,980 Però farem això ara. 1082 00:44:16,980 --> 00:44:20,150 Així que això ha estat molt ràpida, súper nou per molta gent. 1083 00:44:20,150 --> 00:44:21,560 Barret vell per a algunes persones. 1084 00:44:21,560 --> 00:44:24,930 Així que anem a retrocedir per un moment, i veure com hem arribat a 1085 00:44:24,930 --> 00:44:29,350 aquesta sortida hola món fa un moment. 1086 00:44:29,350 --> 00:44:31,780 >> Així que primer, hi ha un aparell CS50. 1087 00:44:31,780 --> 00:44:34,270 Un cop més, una peça de programari, el problema d'establir una explicarà 1088 00:44:34,270 --> 00:44:36,610 com descarregar-lo, on descarregar, el que ha de fer clic 1089 00:44:36,610 --> 00:44:37,430 i així successivament. 1090 00:44:37,430 --> 00:44:39,670 I després una vegada de seguir aquestes instruccions, vostè serà capaç de 1091 00:44:39,670 --> 00:44:42,840 per maximitzar la finestra, i el teu Mac o PC es veurà un 1092 00:44:42,840 --> 00:44:43,910 poc alguna cosa com això. 1093 00:44:43,910 --> 00:44:47,170 Un fons negre, una carpeta d'inici a la part superior on tots 1094 00:44:47,170 --> 00:44:49,850 els arxius d'anar, un pot d'escombraries a la part superior esquerra, 1095 00:44:49,850 --> 00:44:51,130 un menú a la part inferior. 1096 00:44:51,130 --> 00:44:54,010 Així que de nou, bastant similar a Mac OS o Windows, 1097 00:44:54,010 --> 00:44:56,040 tot i que passa a ser Linux. 1098 00:44:56,040 --> 00:44:58,120 Llavors, què podem fer al costat? 1099 00:44:58,120 --> 00:44:59,580 Bé, comencem a escriure programes. 1100 00:44:59,580 --> 00:45:02,260 I recordar que la setmana passada que tot el que es necessita per escriure un 1101 00:45:02,260 --> 00:45:04,970 programa és un editor de text simple, 1102 00:45:04,970 --> 00:45:06,550 com el Bloc de notes o TextEdit. 1103 00:45:06,550 --> 00:45:08,360 Francament, vostè pot fins i tot utilitzar Microsoft Word. 1104 00:45:08,360 --> 00:45:11,170 Però les coses dolentes amb el temps passarà, perquè això és una molt 1105 00:45:11,170 --> 00:45:13,930 mà dura solució per escriure un programa, més l'hi 1106 00:45:13,930 --> 00:45:15,400 guardar en el format d'arxiu incorrecte. 1107 00:45:15,400 --> 00:45:18,150 Però és només un editor de text, un processador de textos, és tot el que 1108 00:45:18,150 --> 00:45:19,390 necessari per escriure un programa. 1109 00:45:19,390 --> 00:45:23,420 >> Així que en l'aparell CS50, podem fer-ho d'una manera senzilla. 1110 00:45:23,420 --> 00:45:25,580 Acabem de fer clic en aquesta icona a la part inferior esquerra. 1111 00:45:25,580 --> 00:45:28,790 I de nou, el problema d'establir una li informar i voila - 1112 00:45:28,790 --> 00:45:31,210 rep aquest interfície en blanc i negre en què podem començar a 1113 00:45:31,210 --> 00:45:32,160 escriure codi. 1114 00:45:32,160 --> 00:45:34,960 Així que anem a començar a escriure un programa simple súper nou. 1115 00:45:34,960 --> 00:45:38,890 Vaig a pujar a Arxiu, Guardar, i jo vaig a cridar 1116 00:45:38,890 --> 00:45:42,870 aquesta, diguem, hello2.c. 1117 00:45:42,870 --> 00:45:45,410 I jo només ho dic, feu clic a jharvard, el va posar 1118 00:45:45,410 --> 00:45:46,750 en el seu directori personal, realment no m'importa 1119 00:45:46,750 --> 00:45:47,980 on aquest va. 1120 00:45:47,980 --> 00:45:49,090 I després a Desa. 1121 00:45:49,090 --> 00:45:50,880 I ara puc començar a escriure el meu programa. 1122 00:45:50,880 --> 00:45:53,560 I record d'abans que he d'escriure int 1123 00:45:53,560 --> 00:45:55,400 main (void). 1124 00:45:55,400 --> 00:45:57,000 Zoom a la part superior esquerra. 1125 00:45:57,000 --> 00:46:02,670 I després vull dir printf, pren dues. 1126 00:46:02,670 --> 00:46:05,690 I ara una cita nova línia, tancar, tancar 1127 00:46:05,690 --> 00:46:07,820 parèntesi, punt i coma. 1128 00:46:07,820 --> 00:46:10,560 I després vaig aquí al meu finestra de terminal que és 1129 00:46:10,560 --> 00:46:12,840 incrustat en gedit, només per conveniència. 1130 00:46:12,840 --> 00:46:15,200 I seguiré endavant i fer escriure hola, però no 1131 00:46:15,200 --> 00:46:17,500 hola només, hello2. 1132 00:46:17,500 --> 00:46:20,490 >> Així que el meu arxiu es diu hello2.c. El meu arxiu per tant 1133 00:46:20,490 --> 00:46:23,510 ha de ser anomenat hello2, en aquest cas. 1134 00:46:23,510 --> 00:46:26,490 Maleïda sigui, què vaig fer malament? 1135 00:46:26,490 --> 00:46:29,490 Molt bé, així que clarament s'omet una línia, si vostè recorda el que 1136 00:46:29,490 --> 00:46:31,020 programes anteriors semblen. 1137 00:46:31,020 --> 00:46:32,480 Però anem a veure si no podem molestar aquest part. 1138 00:46:32,480 --> 00:46:35,310 Desafortunadament, la majoria de les persones que escriuen els programes amb els quals 1139 00:46:35,310 --> 00:46:38,820 escrivim programes no simplificar les coses del tot bé. 1140 00:46:38,820 --> 00:46:41,520 Així que hem de tipus de lliscar sobre el que no acaba de fer 1141 00:46:41,520 --> 00:46:44,050 sentir aquí i veure si podem esbrinar el que està malament. 1142 00:46:44,050 --> 00:46:46,700 La primera línia es diu implícitament declara C 1143 00:46:46,700 --> 00:46:49,310 biblioteca printf amb int tipus de funció. 1144 00:46:49,310 --> 00:46:51,210 OK, vaig entendre part d'això. 1145 00:46:51,210 --> 00:46:54,570 Però sembla estar al · ludint al fet que he fet servir printf 1146 00:46:54,570 --> 00:46:55,700 malament, d'alguna manera. 1147 00:46:55,700 --> 00:46:56,930 I quin sentit té de dolent? 1148 00:46:56,930 --> 00:46:59,970 Jo només no va ensenyar l'equip que es troba en un arxiu 1149 00:46:59,970 --> 00:47:01,420 anomenat stdio.h. 1150 00:47:01,420 --> 00:47:04,120 Ara només he de memoritzar un moment que printf és 1151 00:47:04,120 --> 00:47:06,540 en stdio.h, i de fet hi haurà un altre 1152 00:47:06,540 --> 00:47:08,900 funcions en aquest mateix arxiu que anem a acostumar. 1153 00:47:08,900 --> 00:47:12,490 >> Així que ara seguirem endavant i premeu Ctrl-L per esborrar només que 1154 00:47:12,490 --> 00:47:16,050 de distància, torni a fer hello2, i llest. 1155 00:47:16,050 --> 00:47:19,490 I aquesta comanda de nou, més complex del que anem a explicar per 1156 00:47:19,490 --> 00:47:20,520 actuals propòsits. 1157 00:47:20,520 --> 00:47:23,570 No obstant això, s'ha executat clang, clang i pren el codi font i 1158 00:47:23,570 --> 00:47:24,870 escup 0s i 1s. 1159 00:47:24,870 --> 00:47:28,610 I els 0s i 1s en aquest cas es diuen què? 1160 00:47:28,610 --> 00:47:29,470 Bé, codi objecte. 1161 00:47:29,470 --> 00:47:32,210 I l'arxiu que està en crida, així, 1162 00:47:32,210 --> 00:47:33,820 hello2, en aquest cas. 1163 00:47:33,820 --> 00:47:37,040 Com que el meu fitxer de text va ser hello2.c, Enter. 1164 00:47:37,040 --> 00:47:39,820 I ara he prendre dos signes d'exclamació, signe d'exclamació 1165 00:47:39,820 --> 00:47:41,880 punt, signe d'exclamació. 1166 00:47:41,880 --> 00:47:45,430 Molt bé, així que ara tenim la capacitat d'obtenir cadenes, 1167 00:47:45,430 --> 00:47:46,280 pel que sembla. 1168 00:47:46,280 --> 00:47:48,190 Bé, què més podem obtenir dels usuaris? 1169 00:47:48,190 --> 00:47:51,010 >> Bé, a la biblioteca CS50, hi ha altres funcions que 1170 00:47:51,010 --> 00:47:53,300 Anem a simplificar les nostres vides en aquests primers dies. 1171 00:47:53,300 --> 00:47:56,350 GetChar, GetDouble GetFloat, getInt, 1172 00:47:56,350 --> 00:47:57,290 GetLongLong, GetString. 1173 00:47:57,290 --> 00:47:59,550 Bé, anem a arrencar la més fàcil d'aquests primers. 1174 00:47:59,550 --> 00:48:01,430 GetString literalment fa això. 1175 00:48:01,430 --> 00:48:04,210 Simplement se senti allà, esperant que l'usuari escrigui alguna cosa, 1176 00:48:04,210 --> 00:48:07,170 i tan bon punt em escrigui alguna cosa i prem Intro, es 1177 00:48:07,170 --> 00:48:08,860 fa alguna cosa amb aquest valor. 1178 00:48:08,860 --> 00:48:11,700 Així que anem a tornar a aquest exemple per veure exactament el que 1179 00:48:11,700 --> 00:48:12,950 GetString estava fent. 1180 00:48:12,950 --> 00:48:17,445 Deixin-me seguir endavant i obrir en gedit, hello.c, i recordar 1181 00:48:17,445 --> 00:48:20,590 que just abans del descans, aquí és on el deixem. 1182 00:48:20,590 --> 00:48:23,240 >> Així que ara es burlen d'aquesta separació, en una mica més de detall. 1183 00:48:23,240 --> 00:48:27,190 Així que en la línia 6, hi ha dues coses 1184 00:48:27,190 --> 00:48:28,450 succeint en el moment. 1185 00:48:28,450 --> 00:48:32,630 El signe igual és separar la primera meitat i la segona meitat. 1186 00:48:32,630 --> 00:48:34,670 Així que a la banda esquerra del signe igual, estem 1187 00:48:34,670 --> 00:48:35,580 dient cadena s. 1188 00:48:35,580 --> 00:48:37,580 I llavors, just termes senzills, quina és la cadena es 1189 00:48:37,580 --> 00:48:41,040 fent, què et sembla? 1190 00:48:41,040 --> 00:48:42,990 Es tracta de crear un què? 1191 00:48:42,990 --> 00:48:44,930 Així que és la creació d'una cadena anomenada s. 1192 00:48:44,930 --> 00:48:46,370 Ara, què significa això realment? 1193 00:48:46,370 --> 00:48:51,540 Bé, es reserva espai per a una cadena anomenada s. 1194 00:48:51,540 --> 00:48:52,490 Això no és del tot correcte. 1195 00:48:52,490 --> 00:48:53,120 Què fa això? 1196 00:48:53,120 --> 00:48:55,400 Ordinadors Bé, com vostès saben, tenen unitats de disc dur, que és on 1197 00:48:55,400 --> 00:48:56,300 seus arxius s'emmagatzemen. 1198 00:48:56,300 --> 00:48:59,100 Els ordinadors tenen memòria RAM, i aquí és on els programes es carreguen 1199 00:48:59,100 --> 00:49:00,240 mentre s'estan executant. 1200 00:49:00,240 --> 00:49:02,470 Així que quan es fa doble clic en una icona de Microsoft Word i obre 1201 00:49:02,470 --> 00:49:06,380 amunt, Microsoft Word s'està executant, per dir-ho, a la memòria RAM, que és 1202 00:49:06,380 --> 00:49:08,160 la part electrònica del seu equip. 1203 00:49:08,160 --> 00:49:10,660 No és la part física, mecànica que està girant, on 1204 00:49:10,660 --> 00:49:12,640 les dades s'emmagatzemen generalment a llarg termini. 1205 00:49:12,640 --> 00:49:15,810 Així que la cadena s és més o menys deia l'ordinador em fa 1206 00:49:15,810 --> 00:49:18,150 RAM suficient per adaptar-se a una cadena. 1207 00:49:18,150 --> 00:49:20,450 Això sí que és una mica d'una simplificació excessiva, ja que 1208 00:49:20,450 --> 00:49:22,300 Com és de gran la cadena serà? 1209 00:49:22,300 --> 00:49:24,410 Bé, en realitat no ho sé encara, de manera que en les pròximes setmanes 1210 00:49:24,410 --> 00:49:27,290 que en realitat va a retirar la capa que és una cadena i 1211 00:49:27,290 --> 00:49:28,510 que vaig a dir el que realment és. 1212 00:49:28,510 --> 00:49:31,050 String, per ara, és només una simplificació bonic del nostre món. 1213 00:49:31,050 --> 00:49:35,700 Però la cadena es declara una cadena anomenada s, per ara. 1214 00:49:35,700 --> 00:49:36,520 Declara una cadena. 1215 00:49:36,520 --> 00:49:39,310 Es reserva una mica d'espai a la memòria RAM de la cadena que l'usuari és 1216 00:49:39,310 --> 00:49:40,150 a punt d'escriure. 1217 00:49:40,150 --> 00:49:41,840 >> Ara donem una ullada a la dreta del signe igual. 1218 00:49:41,840 --> 00:49:44,110 Així ho diu GetString (). 1219 00:49:44,110 --> 00:49:45,070 I una mica de seny comprovar. 1220 00:49:45,070 --> 00:49:47,940 El fet que no hi ha res dins dels parèntesis 1221 00:49:47,940 --> 00:49:50,810 implica que aproximadament GetString? 1222 00:49:50,810 --> 00:49:52,180 Això no té arguments. 1223 00:49:52,180 --> 00:49:55,290 És a dir, no es pot influir en el seu comportament de cap manera. 1224 00:49:55,290 --> 00:49:58,940 Cada vegada que l'utilitzi, obtindrà una cadena i això és tot. 1225 00:49:58,940 --> 00:50:02,210 Per contra, printf, esperem que el seu comportament fa 1226 00:50:02,210 --> 00:50:03,010 canviar tot el temps. 1227 00:50:03,010 --> 00:50:05,230 En cas contrari, es tracta d'una funció d'impressió bastant inútil si 1228 00:50:05,230 --> 00:50:06,480 fa el mateix. 1229 00:50:06,480 --> 00:50:07,970 Si sempre imprimeix David o alguna cosa 1230 00:50:07,970 --> 00:50:09,500 arbitrària tot el temps. 1231 00:50:09,500 --> 00:50:11,540 Així printf té sentit tenir un argument. 1232 00:50:11,540 --> 00:50:14,240 GetString realment no necessita un argument, perquè volia 1233 00:50:14,240 --> 00:50:16,700 per obtenir una cadena de l'usuari i és l'usuari qui va 1234 00:50:16,700 --> 00:50:19,580 per abastir el dinamisme escrivint amb lletres diferents 1235 00:50:19,580 --> 00:50:20,850 cada vegada en el teclat. 1236 00:50:20,850 --> 00:50:23,140 >> Llavors, què GetString és en última instància? 1237 00:50:23,140 --> 00:50:25,080 Penseu en això com aquest quadre negre. 1238 00:50:25,080 --> 00:50:29,340 I aquest requadre negre no té entrada, però quan just en 1239 00:50:29,340 --> 00:50:33,240 pronunciació, escup una cadena que l'usuari ha escrit polz 1240 00:50:33,240 --> 00:50:36,660 I el fet que hi ha un signe igual no vol dir prendre 1241 00:50:36,660 --> 00:50:39,890 el que s'escupen a la dreta i deseu dins 1242 00:50:39,890 --> 00:50:41,390 el que està a l'esquerra. 1243 00:50:41,390 --> 00:50:43,470 Així signe igual aquí, que en realitat no vol dir 1244 00:50:43,470 --> 00:50:46,490 igualtat, més aviat tècnicament significa assignació. 1245 00:50:46,490 --> 00:50:49,330 Pren el valor de la dreta, i la va posar al 1246 00:50:49,330 --> 00:50:51,050 variable de l'esquerra. 1247 00:50:51,050 --> 00:50:52,820 Així que això és tot el que està passant allà. 1248 00:50:52,820 --> 00:50:55,640 >> Ara bé, en la línia 7, que anomenem printf. 1249 00:50:55,640 --> 00:50:58,170 Així que espero que printf és cada vegada una mica avorrit per ara. 1250 00:50:58,170 --> 00:50:59,530 Així que imprimir una cadena amb format. 1251 00:50:59,530 --> 00:51:00,440 Què cadena? 1252 00:51:00,440 --> 00:51:05,460 Imprimeixi, "h-i-l-l-o,% s 1253 00:51:05,460 --> 00:51:07,840 \ N ". 1254 00:51:07,840 --> 00:51:10,470 Molt bé, i què és el que vull plug-in per% s? 1255 00:51:10,470 --> 00:51:12,960 Literalment, tot el que s'emmagatzema en s. 1256 00:51:12,960 --> 00:51:15,570 Així que en aquest cas, comprovi la poca seny, quants arguments té 1257 00:51:15,570 --> 00:51:16,820 printf prendre? 1258 00:51:19,860 --> 00:51:21,110 Bé, he sentit un. 1259 00:51:23,840 --> 00:51:26,330 Vaig sentir una vegada. 1260 00:51:26,330 --> 00:51:27,730 Dues, vaig sentir dos. 1261 00:51:27,730 --> 00:51:29,920 I què hi ha tres? 1262 00:51:29,920 --> 00:51:30,450 Bé, tres? 1263 00:51:30,450 --> 00:51:30,930 Excel · lent. 1264 00:51:30,930 --> 00:51:33,170 Tres respostes possibles, només una és correcta. 1265 00:51:33,170 --> 00:51:36,390 Així arguments de nou influir en el comportament d'una funció. 1266 00:51:36,390 --> 00:51:39,380 En el passat, tenia printf només tenen un argument. 1267 00:51:39,380 --> 00:51:42,260 "Hola món" era un sol argument. 1268 00:51:42,260 --> 00:51:45,190 No obstant això, ara, noti que això és una coma. 1269 00:51:45,190 --> 00:51:49,600 Aquesta coma està fora del pressupost / fi de la cita, el que significa 1270 00:51:49,600 --> 00:51:52,170 printf hey, aquí ve un segon argument. 1271 00:51:52,170 --> 00:51:54,240 >> Així que comes en la majoria de llenguatges de programació 1272 00:51:54,240 --> 00:51:57,300 separats múltiples arguments. 1273 00:51:57,300 --> 00:51:59,600 Així que la resposta és definitivament no és un, perquè 1274 00:51:59,600 --> 00:52:00,390 existeix aquesta coma. 1275 00:52:00,390 --> 00:52:03,680 Així mínimament, printf és aparentment prenent dos 1276 00:52:03,680 --> 00:52:04,940 arguments en aquesta ocasió. 1277 00:52:04,940 --> 00:52:07,050 Però l'oportunitat d'una pregunta amb truc aquí és el que 1278 00:52:07,050 --> 00:52:07,990 sobre aquesta coma? 1279 00:52:07,990 --> 00:52:11,260 Vol dir això que no hi ha realment tres arguments? 1280 00:52:11,260 --> 00:52:13,820 Això, això i això. 1281 00:52:13,820 --> 00:52:18,820 Així que no, perquè aquesta coma està dins de les cometes, que 1282 00:52:18,820 --> 00:52:20,890 significa que és en realitat només una estètica d'Anglès. 1283 00:52:20,890 --> 00:52:23,180 No té res a veure amb el nombre de 1284 00:52:23,180 --> 00:52:24,890 arguments a aquest programa. 1285 00:52:24,890 --> 00:52:27,670 Així que aquesta és una coma fora de les cometes dobles. 1286 00:52:27,670 --> 00:52:28,850 I llavors retorna 0. 1287 00:52:28,850 --> 00:52:30,980 Per ara anem a prendre aquest tipus d'un en la fe per 1288 00:52:30,980 --> 00:52:34,460 avui en dia, i només sé que quan les funcions es duen a terme l'execució de 1289 00:52:34,460 --> 00:52:37,950 línies de codi, en general, ha de tornar algun valor. 1290 00:52:37,950 --> 00:52:42,010 En aquest cas, el fet principal ha tornar un int, 1291 00:52:42,010 --> 00:52:44,320 això és només la manera com el llenguatge C funciona. 1292 00:52:44,320 --> 00:52:47,040 >> Llavors, perquè res va sortir malament, se sent com aquest programa de 1293 00:52:47,040 --> 00:52:49,960 bé, només a canvi de codificació fixa 0. 1294 00:52:49,960 --> 00:52:52,980 Però en contrast, i jo vaig a escriure això en pseudo codi 1295 00:52:52,980 --> 00:52:55,020 Ara, igual que ho va fer José quan vam fer el mitjó 1296 00:52:55,020 --> 00:52:56,220 exemple la setmana passada. 1297 00:52:56,220 --> 00:53:00,440 Si alguna cosa va sortir malament - no és codi real - va ser 1298 00:53:00,440 --> 00:53:06,570 malament, i després tornar, diguem, 1. 1299 00:53:06,570 --> 00:53:08,770 Else return 0. 1300 00:53:08,770 --> 00:53:10,070 Així que aquí és on anem amb això. 1301 00:53:10,070 --> 00:53:12,090 Això no és real codi C, només pseudocodi. 1302 00:53:12,090 --> 00:53:14,010 Però així és com es podria tornar 1303 00:53:14,010 --> 00:53:15,580 diferents valors possibles. 1304 00:53:15,580 --> 00:53:19,520 Però per ara només vaig a seguir endavant i tornar 0. 1305 00:53:19,520 --> 00:53:24,410 Molt bé, qualsevol pregunta fins al moment sobre la sintaxi, la funcionalitat, 1306 00:53:24,410 --> 00:53:25,000 o similars? 1307 00:53:25,000 --> 00:53:26,280 Sí, a la part posterior. 1308 00:53:26,280 --> 00:53:27,530 >> AUDIÈNCIA: [inaudible] 1309 00:53:30,510 --> 00:53:32,210 David Malan: Pots parlar una mica més alt? 1310 00:53:32,210 --> 00:53:34,325 Per què aquest programa de retorn 0, i? 1311 00:53:34,325 --> 00:53:35,575 AUDIÈNCIA: [inaudible] 1312 00:53:39,910 --> 00:53:43,450 David Malan: Oh, això és perquè tinc mandra, ho sento. 1313 00:53:43,450 --> 00:53:48,290 No hi ha resposta acadèmica bé, retorna 0. 1314 00:53:48,290 --> 00:53:52,690 Puc salvar aquesta espècie de, en dir tècnicament C, si principal 1315 00:53:52,690 --> 00:53:55,900 no explícitament torna un valor, es tornarà 0 1316 00:53:55,900 --> 00:53:57,730 automàticament per a vostè. 1317 00:53:57,730 --> 00:54:00,290 La qual cosa és cert, jo no estic encobrint. 1318 00:54:00,290 --> 00:54:03,270 Però, jo hauria d'haver fet d'aquesta manera. 1319 00:54:03,270 --> 00:54:05,250 No portar interessant que això no sigui el meu error. 1320 00:54:05,250 --> 00:54:06,170 Sí? 1321 00:54:06,170 --> 00:54:08,470 >> AUDIÈNCIA: En general, quan s'escriu en el buit, que significa 1322 00:54:08,470 --> 00:54:10,770 No torni alguna cosa. 1323 00:54:10,770 --> 00:54:11,420 David Malan: Correcte. 1324 00:54:11,420 --> 00:54:15,800 Si per contra, s'ha d'especificar abans del nom d'una funció, per 1325 00:54:15,800 --> 00:54:18,590 exemple aquí, el buit, la funció 1326 00:54:18,590 --> 00:54:20,480 no torna res. 1327 00:54:20,480 --> 00:54:25,210 I per tant jo diria, la devolució o res en absolut, 1328 00:54:25,210 --> 00:54:26,730 i que seria coherent. 1329 00:54:26,730 --> 00:54:27,750 I tornarem a això. 1330 00:54:27,750 --> 00:54:31,030 I només per la teva informació, una de les captures amb l'aprenentatge 1331 00:54:31,030 --> 00:54:33,450 programació en un món que compta amb centenars de llibres i 1332 00:54:33,450 --> 00:54:36,180 centenars de llocs web per aquí és que invariablement es 1333 00:54:36,180 --> 00:54:38,220 veure sintaxi diferent en diferents llibres 1334 00:54:38,220 --> 00:54:40,220 per diferents persones. 1335 00:54:40,220 --> 00:54:42,100 Adonar-se que farem el nostre millor esforç en les seccions i conferències per ser 1336 00:54:42,100 --> 00:54:42,960 consistent. 1337 00:54:42,960 --> 00:54:46,660 Però de vegades vostè veurà sintaxi conflicte. 1338 00:54:46,660 --> 00:54:48,540 Així que cada vegada té dubtes, pregunteu. 1339 00:54:48,540 --> 00:54:51,100 I en general, nosaltres ens encarregarem de conferències i seccions a 1340 00:54:51,100 --> 00:54:53,710 gairebé sempre es presenten en el camí correcte. 1341 00:54:53,710 --> 00:54:56,070 I dic gairebé sempre, perquè exemple. 1342 00:54:56,070 --> 00:54:56,860 Altres preguntes? 1343 00:54:56,860 --> 00:55:01,590 >> AUDIÈNCIA: Té% s existeix fora de l'aparell? 1344 00:55:01,590 --> 00:55:03,710 David Malan: Té% s existeix fora de l'aparell? 1345 00:55:03,710 --> 00:55:04,180 Sí 1346 00:55:04,180 --> 00:55:07,760 Així que% s té a veure amb C. El fet que s'estigui utilitzant, 1347 00:55:07,760 --> 00:55:10,290 fonamentalment l'aparell no té res a veure amb la 1348 00:55:10,290 --> 00:55:12,080 característiques del llenguatge que utilitzem. 1349 00:55:12,080 --> 00:55:15,990 De fet, la setmana passada, quan es va utilitzar el meu Mac, em va escriure 1350 00:55:15,990 --> 00:55:17,160 C codi en el meu mac. 1351 00:55:17,160 --> 00:55:20,020 Podria haver fet servir% s en el meu Mac, i es podia utilitzar en 1352 00:55:20,020 --> 00:55:22,400 l'ordinador amb Windows si instal · la un compilador, com 1353 00:55:22,400 --> 00:55:24,070 Visual Studio de Microsoft. 1354 00:55:24,070 --> 00:55:24,990 Així que% s. 1355 00:55:24,990 --> 00:55:27,860 Tot el que estem fent dins d'aquesta finestra avui ha de 1356 00:55:27,860 --> 00:55:31,140 res a veure amb C. I fonamentalment a veure amb la 1357 00:55:31,140 --> 00:55:33,450 sistema operatiu en qüestió. 1358 00:55:33,450 --> 00:55:35,900 Per contra, el terminal blanc i negre finestra - quan 1359 00:55:35,900 --> 00:55:40,160 Estic escrivint coses com ls i cd rm, i - 1360 00:55:40,160 --> 00:55:42,020 que té a veure amb el sistema operatiu i 1361 00:55:42,020 --> 00:55:43,562 navegar voltant. 1362 00:55:43,562 --> 00:55:44,546 Si. 1363 00:55:44,546 --> 00:55:46,520 AUDIÈNCIA: Em referia a la biblioteca, la biblioteca CS50. 1364 00:55:46,520 --> 00:55:49,960 David Malan: Està bé, així que si et refereixes a la cadena de paraules clau, que 1365 00:55:49,960 --> 00:55:52,460 només existeix a la biblioteca CS50, correcte. 1366 00:55:52,460 --> 00:55:55,350 Que no existeix en si mateixa C, i de fet en un parell 1367 00:55:55,350 --> 00:55:58,220 de setmanes anem a llençar la biblioteca CS50 i començar 1368 00:55:58,220 --> 00:56:02,290 fer les coses del no-res a nosaltres mateixos, per dir-ho. 1369 00:56:02,290 --> 00:56:02,940 Altres preguntes? 1370 00:56:02,940 --> 00:56:04,577 Si. 1371 00:56:04,577 --> 00:56:05,827 >> AUDIÈNCIA: [inaudible] 1372 00:56:09,470 --> 00:56:10,160 David Malan: Bona pregunta. 1373 00:56:10,160 --> 00:56:11,720 És el cas dels comandaments sensible? 1374 00:56:11,720 --> 00:56:13,710 I permetin-me fer una distinció. 1375 00:56:13,710 --> 00:56:15,840 Així que els comandaments són generalment les coses que vaig a escriure al 1376 00:56:15,840 --> 00:56:17,940 part inferior de la finestra, a la finestra de terminal. 1377 00:56:17,940 --> 00:56:21,770 Tot el fins aquí seria les declaracions o codis C. 1378 00:56:21,770 --> 00:56:24,490 Però en tots dos casos, la resposta és la mateixa, si. 1379 00:56:24,490 --> 00:56:27,800 Tots dos d'aquests entorns, el codi C a la part superior i el 1380 00:56:27,800 --> 00:56:29,910 sistema operatiu de línia d'ordres al 1381 00:56:29,910 --> 00:56:31,440 inferior, es distingeix entre majúscules i minúscules. 1382 00:56:31,440 --> 00:56:33,830 Pel que ha capitalitzar GetString amb un capital G, 1383 00:56:33,830 --> 00:56:37,050 capital de S. Escriu printf en minúscules. 1384 00:56:37,050 --> 00:56:39,520 Escriu ls en minúscules. 1385 00:56:39,520 --> 00:56:43,260 Així, en gairebé totes les situacions d'aquest semestre, el cas serà, en 1386 00:56:43,260 --> 00:56:44,820 fet, la matèria. 1387 00:56:44,820 --> 00:56:46,148 Sí 1388 00:56:46,148 --> 00:56:47,398 >> AUDIÈNCIA: [inaudible] 1389 00:56:54,770 --> 00:56:56,480 David Malan: Ah, llavors està bé, què passaria si tinguéssim un arxiu 1390 00:56:56,480 --> 00:56:57,840 anomenat hello.d. 1391 00:56:57,840 --> 00:57:00,090 Així que resulta que D és un llenguatge de programació. 1392 00:57:00,090 --> 00:57:02,790 I així, en alguns casos, en realitat podríem escriure un programa en 1393 00:57:02,790 --> 00:57:06,190 aquest arxiu i l'han compilat d'aquesta manera. 1394 00:57:06,190 --> 00:57:09,090 Podem, i en realitat, la resposta curta és, no ho sé. 1395 00:57:09,090 --> 00:57:10,440 Així que anem a fer això. 1396 00:57:10,440 --> 00:57:13,040 Deixa anar endavant i crear un nou arxiu. 1397 00:57:13,040 --> 00:57:15,580 I la tornada aquí, de veritat, en general, és quan qualsevol dubte 1398 00:57:15,580 --> 00:57:18,130 aquest semestre, i que tingui el seu aparell o equip 1399 00:57:18,130 --> 00:57:20,030 obrir, seguir endavant i intentar alguna cosa. 1400 00:57:20,030 --> 00:57:23,740 Així que vaig a guardar un arxiu anomenat hello.d. 1401 00:57:23,740 --> 00:57:25,010 Guardar aquest. 1402 00:57:25,010 --> 00:57:29,070 I faré córrer hola Intro. 1403 00:57:29,070 --> 00:57:31,660 Semblava inferir que c és més probable 1404 00:57:31,660 --> 00:57:35,920 que d, en aquest cas. 1405 00:57:35,920 --> 00:57:38,046 Altres qüestions. 1406 00:57:38,046 --> 00:57:40,456 Si. 1407 00:57:40,456 --> 00:57:41,706 >> AUDIÈNCIA: [inaudible] 1408 00:57:48,170 --> 00:57:49,837 David Malan: Bé, dir que una vegada més. 1409 00:57:49,837 --> 00:57:51,087 AUDIÈNCIA: [inaudible] 1410 00:58:04,250 --> 00:58:05,780 David Malan: Com faria vostè per a diagnosticar o que 1411 00:58:05,780 --> 00:58:06,380 solució de problemes que? 1412 00:58:06,380 --> 00:58:08,800 Així que el més probable, perquè són llengües diferents, 1413 00:58:08,800 --> 00:58:10,280 més probable que s'obtindria un complet 1414 00:58:10,280 --> 00:58:11,580 programa diferent emesa. 1415 00:58:11,580 --> 00:58:14,140 Vostè rebrà els missatges d'error totalment diferents. 1416 00:58:14,140 --> 00:58:16,750 I també només en termes de disseny, sens dubte seria un 1417 00:58:16,750 --> 00:58:19,140 decisió de disseny pobre a escriure dos diferents 1418 00:58:19,140 --> 00:58:21,510 idiomes amb arxius gairebé el mateix nom, en 1419 00:58:21,510 --> 00:58:23,000 el directori de exactament la mateixa, utilitzant un 1420 00:58:23,000 --> 00:58:24,550 eina automàtica com fer-ho. 1421 00:58:24,550 --> 00:58:27,750 Així que també pot empènyer cap enrere i dir en 15 anys de fer això, 1422 00:58:27,750 --> 00:58:29,190 mai vaig cometre aquest error. 1423 00:58:29,190 --> 00:58:30,030 Podria succeir. 1424 00:58:30,030 --> 00:58:31,190 Però no només diferents, crec, 1425 00:58:31,190 --> 00:58:33,180 defenses logístiques existents. 1426 00:58:33,180 --> 00:58:35,440 A més, els missatges d'error que es derivarien, que faria 1427 00:58:35,440 --> 00:58:37,260 finalment revelar quin és el problema. 1428 00:58:37,260 --> 00:58:39,120 No obstant això, un cas extrem possible. 1429 00:58:39,120 --> 00:58:41,730 >> Molt bé, així que anem a introduir un parell d'altres 1430 00:58:41,730 --> 00:58:45,600 característiques aquí ara, perquè puguem començar a construir en més 1431 00:58:45,600 --> 00:58:47,140 i més complex programa. 1432 00:58:47,140 --> 00:58:49,000 Així que primer de tot, les matemàtiques. 1433 00:58:49,000 --> 00:58:51,520 Així Exemples de matemàtiques són només una mica fàcil en la primera setmana. 1434 00:58:51,520 --> 00:58:53,560 Això no vol dir que tota la programació és d'aproximadament 1435 00:58:53,560 --> 00:58:54,390 les matemàtiques. 1436 00:58:54,390 --> 00:58:57,890 Certament, la comprensió de les diverses característiques de 1437 00:58:57,890 --> 00:58:59,610 matemàtiques, àlgebra en particular, és 1438 00:58:59,610 --> 00:59:00,330 molt rellevant aquí. 1439 00:59:00,330 --> 00:59:03,010 A les classes de nivell superior CS, àlgebra lineal, 1440 00:59:03,010 --> 00:59:03,920 càlcul, i similars. 1441 00:59:03,920 --> 00:59:06,500 Però es donen compte de la major part del que farem en aquest semestre no es redueix 1442 00:59:06,500 --> 00:59:09,230 a les matemàtiques, i certament no a l'aritmètica, per se, però realment 1443 00:59:09,230 --> 00:59:11,570 a poc la lògica i el raonament assenyat. 1444 00:59:11,570 --> 00:59:14,310 I així, aquest vincle que la informàtica ha tingut durant molt de temps, 1445 00:59:14,310 --> 00:59:16,570 especialment a nivell de l'escola secundària, amb les matemàtiques, és una 1446 00:59:16,570 --> 00:59:17,370 poc enganyós. 1447 00:59:17,370 --> 00:59:20,090 Atès que la majoria dels programes que escriurem, en realitat, són 1448 00:59:20,090 --> 00:59:23,290 espècie de major nivell i es centren en la solució de problemes que, 1449 00:59:23,290 --> 00:59:26,410 Segur, podria utilitzar una mica de sumes, restes, i diversos 1450 00:59:26,410 --> 00:59:28,650 fórmules matemàtiques o similars, 1451 00:59:28,650 --> 00:59:30,860 però al cap ia la fi, es tracta de pensar i no 1452 00:59:30,860 --> 00:59:33,240 només l'aplicació del que podria haver fet en TI com un 1453 00:59:33,240 --> 00:59:35,050 calculadora a l'escola secundària. 1454 00:59:35,050 --> 00:59:38,410 >> Així que dit això, ara farem alguna cosa amb aquests 1455 00:59:38,410 --> 00:59:40,980 operadors matemàtics que existeixen perquè puguem viatge 1456 00:59:40,980 --> 00:59:43,950 sobre alguns dels aspectes subjacents de la programació, o en 1457 00:59:43,950 --> 00:59:48,930 aquest cas C. Així que són aquí, com la biblioteca CS50 suggerit, 1458 00:59:48,930 --> 00:59:51,520 i avui només estem utilitzant GetString - i en un moment 1459 00:59:51,520 --> 00:59:52,940 potser altra funció - 1460 00:59:52,940 --> 00:59:55,380 però hi ha diferents tipus de dades en un ordinador. 1461 00:59:55,380 --> 00:59:58,550 Al final del dia, els ordinadors només saben 0s i 1s. 1462 00:59:58,550 --> 01:00:01,880 Però recordem que la setmana passada vam parlar sobre el sistema binari 1463 01:00:01,880 --> 01:00:05,000 en la representació dels nombres, com el número 0 i 1, i 2, 1464 01:00:05,000 --> 01:00:07,480 tot el camí en un màxim de 8, com al vídeo de Nate. 1465 01:00:07,480 --> 01:00:08,840 I llavors podem comptar molt més gran, ja que 1466 01:00:08,840 --> 01:00:10,000 va fer a l'escenari aquí. 1467 01:00:10,000 --> 01:00:15,660 Però si vostè vol representar no només nombres sinó lletres, 1468 01:00:15,660 --> 01:00:18,240 nosaltres, els humans, hem d'arribar a algun arbitrari 1469 01:00:18,240 --> 01:00:21,180 convencions, de manera que si al final del dia, tot el meu equip 1470 01:00:21,180 --> 01:00:24,260 té és la capacitat d'expressar 0s i 1s, així que serà millor que 1471 01:00:24,260 --> 01:00:27,990 començar a normalitzar els patrons de 0s i 1s que representen 1472 01:00:27,990 --> 01:00:28,800 coses diferents. 1473 01:00:28,800 --> 01:00:32,370 Un patró de 0 i 1 que representa la lletra a. 1474 01:00:32,370 --> 01:00:34,840 Els patrons de 0s i 1s que representen la lletra z. 1475 01:00:34,840 --> 01:00:37,600 Els patrons de 0s i 1s, que representen el color blau, o 1476 01:00:37,600 --> 01:00:38,600 vermell, o similars. 1477 01:00:38,600 --> 01:00:42,360 Hem d'utilitzar tots aquests 0s i 1s per expressar-nos en 1478 01:00:42,360 --> 01:00:45,140 contextos diferents, de diferents maneres que no són 1479 01:00:45,140 --> 01:00:46,470 necessàriament numèriques. 1480 01:00:46,470 --> 01:00:51,150 >> Així que en termes de representació, C té diferents tipus de dades, 1481 01:00:51,150 --> 01:00:52,550 i hem vist a un d'ells fins ara. 1482 01:00:52,550 --> 01:00:54,940 Vam veure int i observi el que no està a la pantalla 1483 01:00:54,940 --> 01:00:56,140 en aquests moments és una cadena. 1484 01:00:56,140 --> 01:00:58,550 La cadena no, de fet, hi ha en C. De nou, és una 1485 01:00:58,550 --> 01:01:00,610 simplificació que presentem per a la primera 1486 01:01:00,610 --> 01:01:01,570 parell de setmanes. 1487 01:01:01,570 --> 01:01:03,770 Un char és un caràcter individual. 1488 01:01:03,770 --> 01:01:07,050 Un flotador és un nombre real, amb un punt decimal i els nombres a 1489 01:01:07,050 --> 01:01:09,066 l'esquerra i la dreta de la mateixa. 1490 01:01:09,066 --> 01:01:16,040 Un doble és el que, per als que tenen antecedents de tornada abans? 1491 01:01:16,040 --> 01:01:19,720 Així, un doble és dues vegades una cosa. 1492 01:01:19,720 --> 01:01:21,240 Afegeix el doble de molta precisió. 1493 01:01:21,240 --> 01:01:22,440 Llavors, què significa això? 1494 01:01:22,440 --> 01:01:26,090 Així, en cada un d'aquests casos, el món té una espècie d'estàndard 1495 01:01:26,090 --> 01:01:27,960 quants bits s'utilitzen per representar 1496 01:01:27,960 --> 01:01:29,160 cadascuna d'aquestes coses. 1497 01:01:29,160 --> 01:01:31,590 Així que si vostè ha mirat vídeo ASCII Nate ja per part 1498 01:01:31,590 --> 01:01:36,170 del conjunt de processadors 0 o més tard aquesta setmana vostè, probablement sabrà per 1499 01:01:36,170 --> 01:01:37,450 que ASCII - 1500 01:01:37,450 --> 01:01:38,610 representacions de caràcters - 1501 01:01:38,610 --> 01:01:40,670 utilitzar la quantitat de bits? 1502 01:01:40,670 --> 01:01:43,410 I fins i tot es pot recordar de la nostra demostració de com la setmana passada 1503 01:01:43,410 --> 01:01:45,500 moltes persones estaven a l'escenari. 1504 01:01:45,500 --> 01:01:46,840 Així 7 o 8, típicament. 1505 01:01:46,840 --> 01:01:49,230 Així que en general, 8, i hi ha alguna cosa que es diu prorrogat 1506 01:01:49,230 --> 01:01:51,240 ASCII que utilitza tots els 8 bits, en lloc de 7. 1507 01:01:51,240 --> 01:01:54,710 Però, en general, es parla en potències de 2, així que en aquest cas, 8. 1508 01:01:54,710 --> 01:01:58,900 Així que un char en un llenguatge de programació sol ser de 8 bits. 1509 01:01:58,900 --> 01:02:02,550 Així que un int és generalment de 32 bits. 1510 01:02:02,550 --> 01:02:04,810 Un flotador és generalment 32 bits. 1511 01:02:04,810 --> 01:02:08,060 Un doble és generalment de 64 bits. 1512 01:02:08,060 --> 01:02:08,870 I què vol dir això? 1513 01:02:08,870 --> 01:02:11,500 Això significa que pot representar grans nombres, o en el cas 1514 01:02:11,500 --> 01:02:15,490 dels nombres reals, pot tenir un nombre molt més després de la 1515 01:02:15,490 --> 01:02:16,240 decimal. 1516 01:02:16,240 --> 01:02:18,980 Precisió molt més, en aquest cas. 1517 01:02:18,980 --> 01:02:21,780 Ara molt de temps és malauradament nom. 1518 01:02:21,780 --> 01:02:24,340 Així que hi ha un int que és de 32 bits. 1519 01:02:24,340 --> 01:02:29,800 Hi ha una llarga que és, nope, 32 bits. 1520 01:02:29,800 --> 01:02:32,610 I molt de temps, que és 64 bits. 1521 01:02:32,610 --> 01:02:34,830 No obstant això, alguns dels quals són sensibles al context, sinó que depèn 1522 01:02:34,830 --> 01:02:36,190 Quin tipus d'equip que té. 1523 01:02:36,190 --> 01:02:40,510 Així que en general, s'ha d'especificar en una tasca o en un concurs quan 1524 01:02:40,510 --> 01:02:41,180 el que realment importa. 1525 01:02:41,180 --> 01:02:43,080 Però el punt és que hi ha tots aquests diferents 1526 01:02:43,080 --> 01:02:44,250 representacions aquí. 1527 01:02:44,250 --> 01:02:45,950 >> Així que anem a bussejar en realitat en un programa. 1528 01:02:45,950 --> 01:02:48,300 En lloc d'escriure aquesta un des de zero, deixa anar per davant 1529 01:02:48,300 --> 01:02:50,940 i obrir a partir del codi font de avui - tot això és 1530 01:02:50,940 --> 01:02:54,980 en línia - si vols improvisar una solució en línia o retorn de la 1531 01:02:54,980 --> 01:02:57,120 Dimecres amb l'aparell en el seu ordinador, les instruccions 1532 01:02:57,120 --> 01:02:59,160 perquè unirà a la pàgina principal del curs. 1533 01:02:59,160 --> 01:03:00,830 Aquest és un programa super simple. 1534 01:03:00,830 --> 01:03:02,520 Però té una mica d'alguna cosa nova a la part superior que 1535 01:03:02,520 --> 01:03:03,650 que no teníem abans. 1536 01:03:03,650 --> 01:03:05,800 Un munt de línies blaves del text. 1537 01:03:05,800 --> 01:03:08,410 Així doncs, aquestes línies blaves representen observacions. 1538 01:03:08,410 --> 01:03:10,620 Així que és molt útil en un programa per poder escriure 1539 01:03:10,620 --> 01:03:13,160 alguns comentaris a tu mateix, o amb col · legues o amics, o 1540 01:03:13,160 --> 01:03:15,700 Teaching Fellows, aquest tipus de descriure el que està passant en 1541 01:03:15,700 --> 01:03:18,500 aquest arxiu, però no tenen res a veure amb el codi C en si. 1542 01:03:18,500 --> 01:03:20,860 Res a veure amb el programa funcional, és només 1543 01:03:20,860 --> 01:03:21,760 estètica. 1544 01:03:21,760 --> 01:03:24,580 Així que la manera de fer això en C és en general comencen la seva 1545 01:03:24,580 --> 01:03:29,860 comentaris amb / * i acaba amb els seus comentaris 1546 01:03:29,860 --> 01:03:31,270 * /. 1547 01:03:31,270 --> 01:03:34,140 I si vostè és realment anal i m'agrada dibuixar tipus d'imatges, 1548 01:03:34,140 --> 01:03:35,870 llavors s'havia posat un munt d'estrelles, que series una 1549 01:03:35,870 --> 01:03:36,970 petita caixa com aquesta. 1550 01:03:36,970 --> 01:03:37,990 Però res d'això importa. 1551 01:03:37,990 --> 01:03:40,230 L'únic que importa és el primer 1552 01:03:40,230 --> 01:03:41,620 i l'. últim 1553 01:03:41,620 --> 01:03:43,820 Això és el que es diu un comentari de diverses línies. 1554 01:03:43,820 --> 01:03:46,610 I és només convenció humana sovint ho fan les estrelles i la caixa 1555 01:03:46,610 --> 01:03:48,420 coses com això si vostè té un munt de temps lliure. 1556 01:03:48,420 --> 01:03:51,550 >> Així que després que vostè ha escrit en alguns comentaris, en general, vénen 1557 01:03:51,550 --> 01:03:53,160 les ganyes reals del programa. 1558 01:03:53,160 --> 01:03:55,630 Aquí està la nostra familiaritzat # include. 1559 01:03:55,630 --> 01:04:00,410 I només ràpid, això és necessari o no cal? 1560 01:04:00,410 --> 01:04:02,860 AUDIÈNCIA: Necessari. 1561 01:04:02,860 --> 01:04:04,390 David Malan: Així que no és realment necessari. 1562 01:04:04,390 --> 01:04:07,070 Per què, però, no és necessari? 1563 01:04:07,070 --> 01:04:08,170 Així que no hi ha printf. 1564 01:04:08,170 --> 01:04:08,510 En efecte. 1565 01:04:08,510 --> 01:04:10,470 Tot el que estem fent en aquest programa són les matemàtiques. 1566 01:04:10,470 --> 01:04:11,640 Així que en realitat es pot esborrar això. 1567 01:04:11,640 --> 01:04:14,330 Així que no sempre han d'incloure res en 1568 01:04:14,330 --> 01:04:15,420 la part superior d'un programa. 1569 01:04:15,420 --> 01:04:17,020 >> Així que anem a simplificar això una mica. 1570 01:04:17,020 --> 01:04:18,650 I ara adonar-se del que fa el programa. 1571 01:04:18,650 --> 01:04:19,920 No hi ha molt d'interès. 1572 01:04:19,920 --> 01:04:21,410 int x = 1. 1573 01:04:21,410 --> 01:04:22,550 Bé, el que s'està fent? 1574 01:04:22,550 --> 01:04:25,130 Bé, pensi en el model mental d'abans. 1575 01:04:25,130 --> 01:04:27,500 El costat esquerre d'aquesta expressió fa què? 1576 01:04:31,440 --> 01:04:32,830 Crear un espai per a un sencer. 1577 01:04:32,830 --> 01:04:33,930 Llavors, com molt espai? 1578 01:04:33,930 --> 01:04:36,980 Bé, passa que ara sabem que és de 32 bits. 1579 01:04:36,980 --> 01:04:40,070 Anteriorment, una cadena era tècnicament 32 bits, però més 1580 01:04:40,070 --> 01:04:40,950 que en el futur. 1581 01:04:40,950 --> 01:04:42,240 Però un int és de 32 bits. 1582 01:04:42,240 --> 01:04:45,590 Així que aquesta expressió de l'esquerra aquí, int x només diu hey 1583 01:04:45,590 --> 01:04:48,490 sistema operatiu, dóna'm 32 bits de RAM - 1584 01:04:48,490 --> 01:04:50,450 també coneguda com 4 bytes de RAM - 1585 01:04:50,450 --> 01:04:53,930 perquè jo pugui posar un sencer en aquest espai. 1586 01:04:53,930 --> 01:04:55,330 Què sencer et vols posar? 1587 01:04:55,330 --> 01:04:56,640 Bé, només el número 1. 1588 01:04:56,640 --> 01:04:59,530 int i rep 2, fa exactament el mateix, encara que el 1589 01:04:59,530 --> 01:05:02,160 nombre és més gran, en termes de la seva magnitud. 1590 01:05:02,160 --> 01:05:04,790 El nombre en si és encara tan sols 32 bits. 1591 01:05:04,790 --> 01:05:06,520 És només el patró de bits és diferent a 1592 01:05:06,520 --> 01:05:08,260 representen l'1 versus 2. 1593 01:05:08,260 --> 01:05:11,980 int z diu ara dóna'm altres 32 bits, en diuen z, i posar el 1594 01:05:11,980 --> 01:05:14,210 la suma de 1 i 2 en allà. 1595 01:05:14,210 --> 01:05:18,050 Així que ara z és de suposar emmagatzemar el valor 3, 1596 01:05:18,050 --> 01:05:19,360 i llavors retorna 0. 1597 01:05:19,360 --> 01:05:23,020 >> Ara aquest programa, és el que fa una mica d'interès? 1598 01:05:23,020 --> 01:05:26,170 Així que en realitat no fa res interessant, en qualsevol 1599 01:05:26,170 --> 01:05:28,450 sentit, perquè per què? És fer una mica de matemàtiques. 1600 01:05:28,450 --> 01:05:30,590 Però no és tornar la resposta correcta. 1601 01:05:30,590 --> 01:05:31,790 Es retorna 0. 1602 01:05:31,790 --> 01:05:33,440 No és la impressió de la resposta. 1603 01:05:33,440 --> 01:05:35,760 Així que aquest programa és fonamentalment inútil, ja que 1604 01:05:35,760 --> 01:05:36,350 està ara. 1605 01:05:36,350 --> 01:05:37,220 És fer una mica de treball. 1606 01:05:37,220 --> 01:05:39,530 Va a portar el seu nombre de segons o microsegons, a 1607 01:05:39,530 --> 01:05:41,510 córrer, però no està fent res 1608 01:05:41,510 --> 01:05:42,770 útil per a l'humà. 1609 01:05:42,770 --> 01:05:46,810 >> Així que en realitat ara obrir math2, on ara estic realment 1610 01:05:46,810 --> 01:05:48,250 imprimir el resultat. 1611 01:05:48,250 --> 01:05:51,260 Així que això també es pot deduir dels exemples anteriors. 1612 01:05:51,260 --> 01:05:54,320 Si vull fer alguna cosa de matemàtiques simples, int x = 1, i 1613 01:05:54,320 --> 01:05:56,820 = 2. z és 1 més 2 ara. 1614 01:05:56,820 --> 01:05:59,240 Què és això d'imprimir òbviament? 1615 01:05:59,240 --> 01:06:00,120 Només 3. 1616 01:06:00,120 --> 01:06:01,590 Així seny registre ràpid. 1617 01:06:01,590 --> 01:06:03,830 Déjame entrar en aquest directori. 1618 01:06:03,830 --> 01:06:06,480 Així cd source1m. 1619 01:06:06,480 --> 01:06:09,370 Deixin-me seguir endavant i escriure make math2. 1620 01:06:09,370 --> 01:06:11,510 No hi ha missatges d'error va sortir, així que vaig a córrer - 1621 01:06:11,510 --> 01:06:14,800 a.out--no em deixa córrer math2. Retorn. 1622 01:06:14,800 --> 01:06:16,750 I, en efecte, s'imprimeixen 3. 1623 01:06:16,750 --> 01:06:18,460 Bé, anem a fer una ullada a una variant d'això. 1624 01:06:18,460 --> 01:06:23,870 En math3.c, ara tenim aquest exemple aquí. 1625 01:06:23,870 --> 01:06:26,540 >> Així que aquesta és una espècie d'interessant. 1626 01:06:26,540 --> 01:06:32,000 Així que en aquesta d'aquí, la resposta es posarà 1 dividit per 10, 1627 01:06:32,000 --> 01:06:33,910 i nota que he declarat com un flotador. 1628 01:06:33,910 --> 01:06:35,200 Per què volem que sigui un flotador? 1629 01:06:35,200 --> 01:06:36,110 Bé, és una fracció. 1630 01:06:36,110 --> 01:06:37,140 Serà un nombre real. 1631 01:06:37,140 --> 01:06:40,970 Així que serà de 0,1, és d'esperar - 10%, en aquest cas. 1632 01:06:40,970 --> 01:06:42,610 I què és el que llavors vull imprimir? 1633 01:06:42,610 --> 01:06:43,440 Bé, aquesta resposta. 1634 01:06:43,440 --> 01:06:44,760 Bé, anem a molestar les distingeix en primer lloc. 1635 01:06:44,760 --> 01:06:47,020 Així que a la banda esquerra, declarar una 1636 01:06:47,020 --> 01:06:49,410 surar, truqui a respondre-la. 1637 01:06:49,410 --> 01:06:52,280 A la part dreta, no 1 dividit per 10 i indicar un 1638 01:06:52,280 --> 01:06:54,370 respondre dins de la variable. 1639 01:06:54,370 --> 01:06:56,410 Ara, aquesta línia es veu una mica més críptic. 1640 01:06:56,410 --> 01:06:59,440 Però noti algunes de les característiques familiars. % Significa aquí ve un 1641 01:06:59,440 --> 01:07:00,490 marcador de posició. 1642 01:07:00,490 --> 01:07:03,230 f significa aquí hi ha un valor de punt flotant, un veritable 1643 01:07:03,230 --> 01:07:05,490 nombre, alguna cosa amb un punt decimal. 1644 01:07:05,490 --> 01:07:07,330 0,2 ¿què significa? 1645 01:07:07,330 --> 01:07:10,740 Algú sap per experiència prèvia? 1646 01:07:10,740 --> 01:07:12,010 Dues decimals. 1647 01:07:12,010 --> 01:07:14,050 Així que no he vist això abans, però és només una forma de 1648 01:07:14,050 --> 01:07:16,360 l'exercici d'una mica més de control sobre printf i 1649 01:07:16,360 --> 01:07:20,840 dit no em donen 30 punts després del punt decimal, 1650 01:07:20,840 --> 01:07:22,490 en canvi em donen només 2. 1651 01:07:22,490 --> 01:07:23,960 >> I després seguirem endavant i executar aquest. 1652 01:07:23,960 --> 01:07:30,160 Així que les matemàtiques 3, i ara em deixa córrer matemàtiques 3, Enter. 1653 01:07:30,160 --> 01:07:34,630 I això no està bé. 1654 01:07:34,630 --> 01:07:37,390 Sembla que hem trobat el nostre error genuí primer. 1655 01:07:37,390 --> 01:07:39,400 Bé, potser no estic buscant prou a prop. 1656 01:07:39,400 --> 01:07:41,960 Així que permetin-me anar fins aquí, i em deixa posar 20 decimal 1657 01:07:41,960 --> 01:07:43,300 llocs puntuals allà. 1658 01:07:43,300 --> 01:07:47,950 I m'ho dius a mi recopilar la informació, fer math3, corre. 1659 01:07:47,950 --> 01:07:50,960 Bastant segur d'1 dividit per 10 no és 0. 1660 01:07:50,960 --> 01:07:54,270 Llavors, què està passant? 1661 01:07:54,270 --> 01:07:56,740 Doncs bé, així que en realitat no té res a veure amb això. 1662 01:07:56,740 --> 01:07:57,600 Això és un bon pensament. 1663 01:07:57,600 --> 01:07:59,140 Això és realment només una coincidència 1664 01:07:59,140 --> 01:08:00,220 que estem fent això. 1665 01:08:00,220 --> 01:08:02,010 Però només per demostrar que això no ho és, vaig a 1666 01:08:02,010 --> 01:08:03,160 tornar una mica a l'atzar. 1667 01:08:03,160 --> 01:08:05,160 No facis això a casa, perquè és simplement incorrecte. 1668 01:08:05,160 --> 01:08:08,000 Però que math3, deixa córrer. 1669 01:08:08,000 --> 01:08:10,690 Així que no té res a veure amb el que estic tornant, només ha de fer 1670 01:08:10,690 --> 01:08:11,940 amb el que estic imprimint. 1671 01:08:11,940 --> 01:08:14,150 Però el vaig escoltar aquí baix. 1672 01:08:14,150 --> 01:08:15,270 Què? 1673 01:08:15,270 --> 01:08:17,524 AUDIÈNCIA: Així que hem d'escriure els nombres en 1674 01:08:17,524 --> 01:08:19,680 la divisió com - 1675 01:08:19,680 --> 01:08:20,319 >> David Malan: Bé bo. 1676 01:08:20,319 --> 01:08:22,810 Així que hem d'escriure els nombres que participen en el 1677 01:08:22,810 --> 01:08:25,979 divisió de punt flotant com aquí es valora. 1678 01:08:25,979 --> 01:08:29,359 Llavors, el problema aquí és que abans: C, com amb una gran quantitat de 1679 01:08:29,359 --> 01:08:31,819 idiomes, compta amb diferents tipus de dades. 1680 01:08:31,819 --> 01:08:34,600 I aquests tipus de dades, per exemple, són aquestes aquí. 1681 01:08:34,600 --> 01:08:37,430 I els tipus de dades que es tracta aquí, quan jo escriviu 1 i després 1682 01:08:37,430 --> 01:08:40,870 tipus 10, són probablement el que els tipus de dades? 1683 01:08:40,870 --> 01:08:42,170 Així que és probable que un int, oi? 1684 01:08:42,170 --> 01:08:44,149 Definitivament no és un flotador perquè no hi ha decimal 1685 01:08:44,149 --> 01:08:45,460 punt o alguna cosa així. 1686 01:08:45,460 --> 01:08:48,270 Així que en realitat, tinc un sencer dividit per un enter. 1687 01:08:48,270 --> 01:08:52,160 >> Així que l'interessant de les matemàtiques i un ordinador és que 1688 01:08:52,160 --> 01:08:54,840 si vostè està fent ús de la divisió de nombres enters - 1689 01:08:54,840 --> 01:08:57,310 1 dividit per 10, si és de 0,1. 1690 01:08:57,310 --> 01:09:01,420 No obstant això, quan s'està dividint un nombre enter per un nombre enter, el 1691 01:09:01,420 --> 01:09:06,859 resposta ha de ser també un nombre sencer només perquè, per ara. 1692 01:09:06,859 --> 01:09:08,630 I quina és la implicació, llavors? 1693 01:09:08,630 --> 01:09:13,640 Bé, si la resposta és 1 dividit per 10 és igual a 0,1, el que 1694 01:09:13,640 --> 01:09:15,680 l'equip es farà és que no tinc idea de com 1695 01:09:15,680 --> 01:09:19,270 representen 0,1, perquè això és un valor de punt flotant, no un 1696 01:09:19,270 --> 01:09:21,910 sencer, sinó que va a tallar tot després de la 1697 01:09:21,910 --> 01:09:27,470 punt decimal i tan sols mostra el 0 al principi. 1698 01:09:27,470 --> 01:09:29,540 I el fet que s'està imprimint, com un punt flotant 1699 01:09:29,540 --> 01:09:31,200 valor, és només una mica estètic. 1700 01:09:31,200 --> 01:09:34,279 Això és perquè estic forçant l'ordinador per imprimir això com un 1701 01:09:34,279 --> 01:09:35,229 surant valor en punts. 1702 01:09:35,229 --> 01:09:37,720 I de fet ho he declarat com un flotador, però la matemàtica 1703 01:09:37,720 --> 01:09:39,010 passant per aquí. 1704 01:09:39,010 --> 01:09:41,859 >> Així que em realment solucionar això d'una manera molt fàcil. 1705 01:09:41,859 --> 01:09:45,250 Per què no acaba de fer 10,0 i 1,0, tot i que 1706 01:09:45,250 --> 01:09:47,609 tècnicament podria sortir-se amb la seva fent un d'aquests. 1707 01:09:47,609 --> 01:09:50,630 Ara vaig a seguir endavant i fer math3. 1708 01:09:50,630 --> 01:09:56,350 Deixin-me seguir endavant i ara s'executen math3, Enter. 1709 01:09:56,350 --> 01:09:57,500 I ara, oh noi. 1710 01:09:57,500 --> 01:10:00,050 Ara tenim un nou problema per complet. 1711 01:10:00,050 --> 01:10:05,600 Així que millor, oi, estem més prop de 0,1, però el que és clarament 1712 01:10:05,600 --> 01:10:06,240 malament aquí? 1713 01:10:06,240 --> 01:10:08,260 Llevat que hagi estat mentint durant anys, no? 1714 01:10:08,260 --> 01:10:13,660 1 dividit per 10 és realment no exactament 0,1, quin és 1715 01:10:13,660 --> 01:10:14,700 realment està passant aquí? 1716 01:10:14,700 --> 01:10:16,420 Així que vostè pot tipus de raó a través d'aquesta lògica. 1717 01:10:16,420 --> 01:10:19,200 Si un equip només té una quantitat limitada de memòria RAM per començar 1718 01:10:19,200 --> 01:10:23,530 amb, i de fet un únic ordinador utilitza 32 bits per a una 1719 01:10:23,530 --> 01:10:26,200 surant valor en punts, és lògic pensar que amb un 1720 01:10:26,200 --> 01:10:29,870 nombre finit de bits, 32 en aquest cas, sí, es pot 1721 01:10:29,870 --> 01:10:31,050 representen un munt de coses. 1722 01:10:31,050 --> 01:10:33,220 En realitat, és 4000000000 valors diferents poden ser 1723 01:10:33,220 --> 01:10:38,040 representat amb 32 bits, 2 a la 32, però és encara limitada. 1724 01:10:38,040 --> 01:10:40,730 Així que el problema és que hi ha un nombre infinit d'arrels 1725 01:10:40,730 --> 01:10:41,370 nombres, clar. 1726 01:10:41,370 --> 01:10:43,560 Si em dóna un nombre real, sempre es pot trobar una 1727 01:10:43,560 --> 01:10:46,080 una mica més gran, una mica menys, amb només ajustar la 1728 01:10:46,080 --> 01:10:47,970 nombres que estan després del punt decimal. 1729 01:10:47,970 --> 01:10:50,870 Així que si vostè no té un nombre infinit de bits, 1730 01:10:50,870 --> 01:10:52,940 no és possible que representi un infinit 1731 01:10:52,940 --> 01:10:54,800 nombre de nombres reals. 1732 01:10:54,800 --> 01:10:58,090 >> Així que aquesta imprecisió inherent a les computadores, i 1733 01:10:58,090 --> 01:11:00,930 això es va ensopegar amb tot el temps, fins i tot en el més simple de 1734 01:11:00,930 --> 01:11:02,260 programes com aquest. 1735 01:11:02,260 --> 01:11:05,640 Però també en alguns problemes del món molt real també. 1736 01:11:05,640 --> 01:11:07,790 De fet, anem a prendre un moment per fer una ullada a 1737 01:11:07,790 --> 01:11:09,530 alguna cosa que realment va succeir en la realitat. 1738 01:11:09,530 --> 01:11:11,620 Anem a veure només el primer parell de minuts, i després 1739 01:11:11,620 --> 01:11:13,270 anem a publicar la línia d'enllaç. 1740 01:11:13,270 --> 01:11:16,700 Però això és una prova del que només pot sortir malament, bastant 1741 01:11:16,700 --> 01:11:19,680 honestament, d'una manera molt tràgica quan aquestes coses no són 1742 01:11:19,680 --> 01:11:23,870 apreciat o només els éssers humans cometen errors a l'hora de 1743 01:11:23,870 --> 01:11:26,792 aquest tipus de detalls d'implementació de les computadores modernes. 1744 01:11:26,792 --> 01:11:27,284 >> [JOC VIDEO] 1745 01:11:27,284 --> 01:11:30,730 -Tornem ara als desastres d'enginyeria en Meravelles Modernes. 1746 01:11:30,730 --> 01:11:32,200 Ordinadors. 1747 01:11:32,200 --> 01:11:34,920 Tots hem arribat a acceptar els problemes sovint frustrants 1748 01:11:34,920 --> 01:11:36,750 d'anar amb ells. 1749 01:11:36,750 --> 01:11:40,690 Errors, virus i errors de programari són un petit preu a 1750 01:11:40,690 --> 01:11:42,550 pagar per la comoditat. 1751 01:11:42,550 --> 01:11:45,170 Però militar d'alta tecnologia i d'alta velocitat i l'espai 1752 01:11:45,170 --> 01:11:48,450 aplicacions de programa, el problema més petit pot ser 1753 01:11:48,450 --> 01:11:52,220 ampliada cap al desastre. 1754 01:11:52,220 --> 01:11:56,780 El 4 de juny de 1996, els científics van preparar per llançar una plataforma no tripulada 1755 01:11:56,780 --> 01:11:58,430 Coet Ariane 5. 1756 01:11:58,430 --> 01:12:00,750 Portava satèl · lits científics dissenyats per 1757 01:12:00,750 --> 01:12:03,580 establir amb precisió com el camp magnètic de la Terra 1758 01:12:03,580 --> 01:12:06,900 interactua amb els vents solars. 1759 01:12:06,900 --> 01:12:10,330 El coet va ser construït per l'Agència Espacial Europea i 1760 01:12:10,330 --> 01:12:13,450 desenganxar de les seves instal.lacions a la costa de la Guaiana Francesa. 1761 01:12:13,450 --> 01:12:16,970 >> -Al voltant d'uns 37 segons de vol, primer 1762 01:12:16,970 --> 01:12:19,700 alguna cosa vaig adonar que anava malament, que els broquets es 1763 01:12:19,700 --> 01:12:21,590 gir d'una manera que realment no hauria. 1764 01:12:21,590 --> 01:12:25,020 Al voltant de 40 segons de vol, és evident que el vehicle 1765 01:12:25,020 --> 01:12:27,340 estava en problemes, i és llavors quan es va prendre la decisió de 1766 01:12:27,340 --> 01:12:28,136 destruir. 1767 01:12:28,136 --> 01:12:31,450 Un funcionari de seguretat de gamma amb ganyes tremendes premut el 1768 01:12:31,450 --> 01:12:34,160 botó, va esclatar el coet abans que pogués esdevenir un 1769 01:12:34,160 --> 01:12:37,470 un perill per a la seguretat pública. 1770 01:12:37,470 --> 01:12:40,750 >> -Aquest va ser el viatge inaugural del Ariane 5, i la seva 1771 01:12:40,750 --> 01:12:43,990 destrucció es va dur a terme a causa d'un defecte incorporat al 1772 01:12:43,990 --> 01:12:45,480 programari coet. 1773 01:12:45,480 --> 01:12:47,660 >> -El problema en l'Ariane va ser que hi havia un nombre que 1774 01:12:47,660 --> 01:12:51,245 requereix 64 bits per expressar i volien convertir 1775 01:12:51,245 --> 01:12:53,010 a un nombre de bit 16. 1776 01:12:53,010 --> 01:12:54,900 Se suposa que el nombre mai va ser 1777 01:12:54,900 --> 01:12:56,280 Serà molt gran, 1778 01:12:56,280 --> 01:12:59,920 que la majoria dels dígits en el nombre de 64 bits van ser 0s. 1779 01:12:59,920 --> 01:13:01,860 Estaven equivocats. 1780 01:13:01,860 --> 01:13:04,550 >> -La incapacitat d'un programa per a acceptar la 1781 01:13:04,550 --> 01:13:07,730 tipus de nombre generat per un altre era a l'arrel de 1782 01:13:07,730 --> 01:13:08,930 el fracàs. 1783 01:13:08,930 --> 01:13:11,490 El desenvolupament de programari s'havia convertit en una part molt costosa de 1784 01:13:11,490 --> 01:13:13,280 nova tecnologia. 1785 01:13:13,280 --> 01:13:16,530 El coet Ariane 4 ha estat molt reeixida. 1786 01:13:16,530 --> 01:13:19,100 Gran part del programari creat per a ell també va ser utilitzat 1787 01:13:19,100 --> 01:13:21,050 al Ariane 5. 1788 01:13:21,050 --> 01:13:25,530 >> -El problema bàsic era que l'Ariane 5 va ser més ràpid, 1789 01:13:25,530 --> 01:13:27,280 accelerat més ràpid. 1790 01:13:27,280 --> 01:13:30,590 I el programari no havien tingut en compte que. 1791 01:13:30,590 --> 01:13:33,060 >> -La destrucció del coet era un enorme financer 1792 01:13:33,060 --> 01:13:37,670 desastre, tot es deu a un error de programari minut. 1793 01:13:37,670 --> 01:13:40,750 Però aquesta no va ser la primera vegada que tenia problemes de conversió de dades 1794 01:13:40,750 --> 01:13:43,680 ple de tecnologia de coets moderns. 1795 01:13:43,680 --> 01:13:44,390 >> David Malan: Anem a deixar les coses així. 1796 01:13:44,390 --> 01:13:46,870 Però això és una prova de com de aplicable fins i tot alguns 1797 01:13:46,870 --> 01:13:48,750 més aquests detalls de nivell que hem començat a 1798 01:13:48,750 --> 01:13:50,040 explorar avui són. 1799 01:13:50,040 --> 01:13:52,510 Així que, com et donen una mica distret potser per alguns 1800 01:13:52,510 --> 01:13:55,240 la sintaxi i arcaneness aquí, es donen compte que més de la 1801 01:13:55,240 --> 01:13:57,690 termini estarem centrat només en com això és aplicable 1802 01:13:57,690 --> 01:13:59,530 mons més enllà de CS. 1803 01:13:59,530 --> 01:14:00,780 Ens veiem el dimecres.