1 00:00:00,000 --> 00:00:01,500 >> [GIOCO MUSICA] 2 00:00:01,500 --> 00:00:11,000 3 00:00:11,000 --> 00:00:16,110 >> DAVID MALAN: Va bene questo è CS50 e questa è la fine di una settimana. 4 00:00:16,110 --> 00:00:20,760 Quindi vorrei presentarvi il mio ex advisee, Andel Duff, che non solo rende 5 00:00:20,760 --> 00:00:25,460 iPhone 5 sta, così come questo leggio, fa anche vetture. 6 00:00:25,460 --> 00:00:27,927 7 00:00:27,927 --> 00:00:29,510 ANSEL DUFF: Come va, tutti? 8 00:00:29,510 --> 00:00:31,980 Voglio solo dirvi un po ' po 'di Formula SAE, di cui ho 9 00:00:31,980 --> 00:00:32,604 Sono il capitano. 10 00:00:32,604 --> 00:00:33,437 E 'un team del MIT. 11 00:00:33,437 --> 00:00:35,520 Voglio solo dirti ragazzi un po 'su di esso 12 00:00:35,520 --> 00:00:37,520 e si spera di generare un certo interesse. 13 00:00:37,520 --> 00:00:41,590 >> Quindi lasciatemi correre attraverso un paio di cose circa la nostra squadra. 14 00:00:41,590 --> 00:00:43,640 Quindi siamo completamente studentesca, in cui tutti 15 00:00:43,640 --> 00:00:47,300 del disegno membri, simulare, prova, e produttore di un sottosistema 16 00:00:47,300 --> 00:00:48,090 della vettura. 17 00:00:48,090 --> 00:00:51,240 Noi abbiamo la nostra officina meccanica e garage, e N52-- o mi dispiace, 18 00:00:51,240 --> 00:00:54,140 N51-- che è lo stesso edificio come il Museo della Scienza MIT. 19 00:00:54,140 --> 00:00:55,990 E noi siamo il popolo che guidano la macchina. 20 00:00:55,990 --> 00:00:58,340 C'è un concorso nazionale all'inizio dell'estate, 21 00:00:58,340 --> 00:01:01,215 e poi ci sono più piccoli sparatoria concorsi durante tutto l'anno. 22 00:01:01,215 --> 00:01:04,400 E poi facciamo formazione dei conducenti giorni per ottenere nuovi membri conoscono. 23 00:01:04,400 --> 00:01:08,280 >> I nostri giorni di compilazione sono Sabato 11:00-20:00. 24 00:01:08,280 --> 00:01:11,060 Il pranzo e la cena si prendono cura di, da Bertucci e di Beantown 25 00:01:11,060 --> 00:01:12,130 rispettivamente. 26 00:01:12,130 --> 00:01:15,260 Abbiamo una riunione settimanale e seminario, che è per il credito corso. 27 00:01:15,260 --> 00:01:18,560 Che è come nuovo di questo semestre, e sarà anche per il prossimo semestre, 28 00:01:18,560 --> 00:01:19,940 in modo da poter attraversare-reg per questo. 29 00:01:19,940 --> 00:01:22,960 E poi abbiamo la progettazione, negozio, e giorni CAD durante la settimana, 30 00:01:22,960 --> 00:01:26,870 considerando che i membri saranno indipendente Parti CAD, per magazzino et cetera. 31 00:01:26,870 --> 00:01:29,200 >> Così per elettrico ingegneria presso il team 32 00:01:29,200 --> 00:01:31,110 abbiamo la nostra trazione, sistema ad alta tensione, 33 00:01:31,110 --> 00:01:33,390 che corre a un nominale 300 volt, che comprende 34 00:01:33,390 --> 00:01:35,360 motori, controllori a motore, e batterie. 35 00:01:35,360 --> 00:01:37,235 Poi abbiamo un basso sistema di tensione, che corre 36 00:01:37,235 --> 00:01:40,180 a 12 volt, che comprende controlli, CAN nodi, il cervello 37 00:01:40,180 --> 00:01:41,570 scatola, e il cruscotto. 38 00:01:41,570 --> 00:01:43,890 Per quanto riguarda CS va, facciamo avere manutenzione del sito web 39 00:01:43,890 --> 00:01:47,940 che abbiamo bisogno di fatto per gli eventi, l'adesione modifiche, nuove immagini, e materiali di PR. 40 00:01:47,940 --> 00:01:51,540 E poi abbiamo il codice che controlla il macchina per il nostro controllo di trazione, di lancio 41 00:01:51,540 --> 00:01:55,750 controllo, controllo cruscotto, torque vectoring, e sistemi di frenata rigenerativa, che 42 00:01:55,750 --> 00:01:59,170 conduzione tipicamente in MATLAB, Simulink, e LabView. 43 00:01:59,170 --> 00:02:00,910 >> Vi dica un po 'su la macchina. 44 00:02:00,910 --> 00:02:02,470 Quindi è di circa 500 chili. 45 00:02:02,470 --> 00:02:04,285 E 'norme limitate a 85 kilowatt. 46 00:02:04,285 --> 00:02:08,310 Dispone di 2 EMRAX 207 motori in indietro, uno per ogni ruota posteriore. 47 00:02:08,310 --> 00:02:11,880 Ha batterie custom-built da cellule A123 sacchetto prismatici, 48 00:02:11,880 --> 00:02:14,780 per un totale di 300 volt e 5.6 chilowattora. 49 00:02:14,780 --> 00:02:17,950 Ed è a trazione diretta con un rapporto 2,64-1 unità. 50 00:02:17,950 --> 00:02:20,970 Ecco alcune immagini noi prese di esso in concorrenza. 51 00:02:20,970 --> 00:02:25,820 Ecco il cono posteriore, naso, e qui ci sono i motori, 52 00:02:25,820 --> 00:02:29,682 quei grandi dischi neri sotto la mens et manus. 53 00:02:29,682 --> 00:02:32,140 Ecco una diapositiva che ho tirato fuori del nostro schema concorrenza. 54 00:02:32,140 --> 00:02:35,389 E questo è solo paragonando la nostra macchina per una paio di auto disponibili in commercio, 55 00:02:35,389 --> 00:02:38,380 come la KTM XBOW, Ariel Atom, e Caterha M 7-280. 56 00:02:38,380 --> 00:02:42,110 Se si ha familiarità con il prezzo, il potere tirare peso, di dollari per cavallo, 57 00:02:42,110 --> 00:02:44,930 dollari per la coppia, e la nostra macchina li soffia fuori dall'acqua. 58 00:02:44,930 --> 00:02:47,520 Se avete domande, annotare questo indirizzo email. 59 00:02:47,520 --> 00:02:50,800 Ci Spara una e-mail a fsae@mit.edu. 60 00:02:50,800 --> 00:02:53,350 >> Siamo felici di parlare qualsiasi cosa vuoi. 61 00:02:53,350 --> 00:02:55,600 Studenti di Harvard sono gentili della minoranza sulla squadra. 62 00:02:55,600 --> 00:02:58,350 Se avete domande su che si prega di farci sparare una e-mail, 63 00:02:58,350 --> 00:03:00,810 felice di parlare, e io vado di tornare a Davide. 64 00:03:00,810 --> 00:03:01,550 Grazie. 65 00:03:01,550 --> 00:03:02,466 Lo apprezzo, ragazzi. 66 00:03:02,466 --> 00:03:03,615 [Applausi] 67 00:03:03,615 --> 00:03:07,080 68 00:03:07,080 --> 00:03:10,980 >> DAVID MALAN: Ansel trascorso l'estate lavora con noi qui nel campus in CS50 69 00:03:10,980 --> 00:03:11,480 questa estate. 70 00:03:11,480 --> 00:03:13,505 Ed oltre a lavorare sul cose come le lampadine binari, 71 00:03:13,505 --> 00:03:16,090 egli in realtà davvero aperto il nostro eyes-- e la mia in particular-- 72 00:03:16,090 --> 00:03:20,535 di quanto realmente l'intersezione di non di hardware e software può essere. 73 00:03:20,535 --> 00:03:23,410 In realtà molte delle cose che ha appena viaggiammo attraverso sei in ultima analisi, 74 00:03:23,410 --> 00:03:26,030 creato prima nel software, e quindi in ultima analisi fabbricato 75 00:03:26,030 --> 00:03:27,299 nel mondo reale in hardware. 76 00:03:27,299 --> 00:03:29,590 Quindi, se siete interessati a esplorando quella intersezione, 77 00:03:29,590 --> 00:03:31,430 forse prendere quel gruppo. 78 00:03:31,430 --> 00:03:34,140 >> Ora nel frattempo, quelli di voi che sono appassionati di tecnologia, 79 00:03:34,140 --> 00:03:36,140 e prodotti Apple in particolare sapere che ci 80 00:03:36,140 --> 00:03:37,860 erano un paio di annunci di ieri. 81 00:03:37,860 --> 00:03:39,776 Ma abbiamo pensato mostriamo Sei uno che è venuto fuori 82 00:03:39,776 --> 00:03:43,590 un paio di giorni prima che si potrebbe non aver visto. 83 00:03:43,590 --> 00:03:46,150 >> JORGEN EGHAMMER: Sai, di tanto in tanto qualcosa 84 00:03:46,150 --> 00:03:49,540 viene avanti che cambia il nostro modo di vivere. 85 00:03:49,540 --> 00:03:53,479 Un dispositivo in modo semplice ed intuitivo utilizzo si sente quasi familiare. 86 00:03:53,479 --> 00:03:59,710 87 00:03:59,710 --> 00:04:04,138 Presentazione catalogo IKEA 2015. 88 00:04:04,138 --> 00:04:10,420 Non è un libro digitale o un e-book, è un libro-libro. 89 00:04:10,420 --> 00:04:14,440 >> La prima cosa da notare è cavi, nemmeno un cavo di alimentazione. 90 00:04:14,440 --> 00:04:18,519 Il catalogo IKEA 2015 viene completamente carica, 91 00:04:18,519 --> 00:04:20,550 e la durata della batteria è eterna. 92 00:04:20,550 --> 00:04:27,300 L'interfaccia è 7,5 da 8 pollici, ma può espandersi a 15 da 8 pollici. 93 00:04:27,300 --> 00:04:32,410 La navigazione è basata sul tocco tattile La tecnologia che si può effettivamente sentire. 94 00:04:32,410 --> 00:04:37,120 >> Il contenuto viene fornito pre-installato con 328 pagine in alta definizione 95 00:04:37,120 --> 00:04:40,180 di ispirare idee di arredamento per la casa. 96 00:04:40,180 --> 00:04:43,740 Per avviare la navigazione, è sufficiente toccare e trascinare. 97 00:04:43,740 --> 00:04:50,870 Da destra a sinistra per andare avanti, sinistra a destra per tornare indietro. 98 00:04:50,870 --> 00:04:52,770 >> Notate qualcosa di diverso? 99 00:04:52,770 --> 00:04:53,780 Giusto. 100 00:04:53,780 --> 00:04:55,190 No lag. 101 00:04:55,190 --> 00:04:58,400 Ogni pagina cristallino carichi istantaneamente, 102 00:04:58,400 --> 00:05:00,586 non importa quanto velocemente si scorre. 103 00:05:00,586 --> 00:05:03,710 Se si desidera ottenere una rapida panoramica, basta tenerlo nel palmo della tua mano, 104 00:05:03,710 --> 00:05:06,816 e usando solo il pollice, velocità di sfogliare il contenuto. 105 00:05:06,816 --> 00:05:10,930 >> Se trovate qualcosa che si desidera salvare per dopo, si può semplicemente segnalibro. 106 00:05:10,930 --> 00:05:17,620 E anche se si chiude l'applicazione, si può facilmente ritrovare il segnalibro. 107 00:05:17,620 --> 00:05:18,490 Incredibile. 108 00:05:18,490 --> 00:05:20,434 >> [Risate] 109 00:05:20,434 --> 00:05:21,406 [Applausi] 110 00:05:21,406 --> 00:05:26,760 111 00:05:26,760 --> 00:05:29,870 In modo che ci porta a la fine della settimana uno. 112 00:05:29,870 --> 00:05:31,760 Alcuni annunci ora. 113 00:05:31,760 --> 00:05:33,440 Così sezionamento è ora in corso. 114 00:05:33,440 --> 00:05:36,860 Vai a questo URL qui qualche volta tra oggi e Venerdì a mezzogiorno 115 00:05:36,860 --> 00:05:39,960 per specificare in realtà se siete tra quelli meno confortevole, più 116 00:05:39,960 --> 00:05:41,690 confortevole, o una via di mezzo. 117 00:05:41,690 --> 00:05:44,511 >> Questo è in genere uno di quelli cose che solo tipo di sapere. 118 00:05:44,511 --> 00:05:47,510 E infatti quelli di voi che sono meno comodo probabilmente conoscere il più, 119 00:05:47,510 --> 00:05:49,634 quelli di voi che sono più confortevole sa tanto, 120 00:05:49,634 --> 00:05:54,960 e di nuovo, se non si è abbastanza sicuri che di quei secchi si cade in sei 121 00:05:54,960 --> 00:05:56,210 probabilmente da qualche parte nel mezzo. 122 00:05:56,210 --> 00:05:59,810 Ma certi è possibile scambiare dopo un paio di settimane, se necessario. 123 00:05:59,810 --> 00:06:02,620 >> Nel frattempo, per la prossima settimana non partiamo sezioni di per sé, 124 00:06:02,620 --> 00:06:04,760 ma le sezioni super, che sono aperti a tutti gli studenti. 125 00:06:04,760 --> 00:06:08,220 Domenica prossima in una posizione di sarà annunciato sul sito del corso 126 00:06:08,220 --> 00:06:10,190 avremo uno per quelli meno confortevole, 127 00:06:10,190 --> 00:06:12,470 così come uno per quelli più comodo. 128 00:06:12,470 --> 00:06:15,460 E quelli nel mezzo può scegliere quale di questi due, 129 00:06:15,460 --> 00:06:17,360 o entrambi, se vuoi, a sit-in su. 130 00:06:17,360 --> 00:06:19,630 E l'attenzione di coloro che sarà in ultima analisi C, 131 00:06:19,630 --> 00:06:22,440 che continueremo la nostra conversazione di oggi. 132 00:06:22,440 --> 00:06:25,070 >> Problema impostare 0 nel frattempo è speriamo nelle vostre mani. 133 00:06:25,070 --> 00:06:27,500 Ufficialmente a causa di domani, Giovedi, a mezzogiorno. 134 00:06:27,500 --> 00:06:29,490 A meno che non incassare in un dei tuoi 5 giorni di ritardo, 135 00:06:29,490 --> 00:06:31,780 che porterebbe essa fino a Venerdì a mezzogiorno. 136 00:06:31,780 --> 00:06:34,420 Problema 1 set nel frattempo sarà pubblicato sul sito web del corso. 137 00:06:34,420 --> 00:06:37,381 E questo sarà il nostro primo incursione come una classe in C. 138 00:06:37,381 --> 00:06:40,630 E questo problema impostare spec vi guiderà attraverso un sacco di meccanica di ciò che 139 00:06:40,630 --> 00:06:43,960 abbiamo iniziato a parlare il Lunedi, e noi continueremo a parlare di oggi. 140 00:06:43,960 --> 00:06:46,770 C, Linux, il CS50 apparecchio, tutto questo 141 00:06:46,770 --> 00:06:48,990 vi attenderà nelle specifiche. 142 00:06:48,990 --> 00:06:52,840 >> Orario di ricevimento nel frattempo sono in corso, nella sala da pranzo di laurea. 143 00:06:52,840 --> 00:06:56,240 Andate a questo URL qui per vedere il pianificare per stasera e domani, 144 00:06:56,240 --> 00:06:57,930 se volete partecipare. 145 00:06:57,930 --> 00:07:01,920 Domande nel frattempo, in modo che si avere l'opportunità di porre domande 146 00:07:01,920 --> 00:07:05,860 in modo asincrono, 24/7, rendi conto che stai non limitato alle sezioni e l'ufficio 147 00:07:05,860 --> 00:07:09,530 ore, ma piuttosto questo strumento qui, CS50 discutere a questo URL 148 00:07:09,530 --> 00:07:12,150 sarà online del corso bollettino software di bordo, tramite la quale 149 00:07:12,150 --> 00:07:15,030 si possono porre domande su compagni di classe e anche personale. 150 00:07:15,030 --> 00:07:18,492 Quindi, tenere a mente che risorse come bene. 151 00:07:18,492 --> 00:07:20,200 Nel frattempo una tradizione inizia questo Venerdì. 152 00:07:20,200 --> 00:07:23,200 Come avrete intravisto da video teaser di Mercoledì scorso, 153 00:07:23,200 --> 00:07:25,510 abbiamo una tradizione più ogni Venerdì durante il periodo 154 00:07:25,510 --> 00:07:28,750 di prendere circa 50 studenti e personale per un ristorante locale chiamato 155 00:07:28,750 --> 00:07:31,510 Fuoco e ghiaccio, in cui siamo tipicamente raggiunto da alcuni alunni 156 00:07:31,510 --> 00:07:33,850 o amici dell'industria di solito aspirare 157 00:07:33,850 --> 00:07:35,780 per fare una grande classe si sentono più piccoli. 158 00:07:35,780 --> 00:07:37,560 Quindi è un pranzo del tutto casuale. 159 00:07:37,560 --> 00:07:40,160 Un gruppo di noi, il personale soprattutto, giocherà sedie musicali 160 00:07:40,160 --> 00:07:43,360 e chiacchierare con gli studenti su 50, vita fuori di 50, 161 00:07:43,360 --> 00:07:46,510 vita, in futuro, il mondo reale, Sto parlando di opportunità di lavoro 162 00:07:46,510 --> 00:07:47,680 con gli amici nell'industria. 163 00:07:47,680 --> 00:07:51,110 >> Quindi, se volete unirvi a noi questo Venerdì, testa a questo URL qui. 164 00:07:51,110 --> 00:07:54,180 Lo spazio è limitato, ma faremo questo recurringly per tutta la durata. 165 00:07:54,180 --> 00:07:57,380 Andate lì per cs50.harvard.edu/rsvp. 166 00:07:57,380 --> 00:07:59,380 E se non si ottiene in questa volta, di non preoccuparsi. 167 00:07:59,380 --> 00:08:02,390 Lo faremo di nuovo in prossime settimane pure. 168 00:08:02,390 --> 00:08:05,434 >> Quindi questo è il quadro abbiamo dipinto la scorsa settimana, 169 00:08:05,434 --> 00:08:07,350 e probabilmente siete stati dilettarsi in finora. 170 00:08:07,350 --> 00:08:10,360 Ma cerchiamo di collegare questo ora a quello che stiamo andando a fare oggi 171 00:08:10,360 --> 00:08:11,440 e in avanti. 172 00:08:11,440 --> 00:08:14,760 Potrei avere un volontario? 173 00:08:14,760 --> 00:08:16,000 Va bene, o più. 174 00:08:16,000 --> 00:08:18,460 Che ne dite qui sul fine, in camicia blu. 175 00:08:18,460 --> 00:08:20,329 Vieni su, come ti chiami? 176 00:08:20,329 --> 00:08:20,870 ALANA: Alana. 177 00:08:20,870 --> 00:08:21,661 DAVID MALAN: Alana. 178 00:08:21,661 --> 00:08:25,100 Così Alana, solo per un moment-- Piacere di conoscerti you-- 179 00:08:25,100 --> 00:08:28,260 sta per svolgere il ruolo di questa funzione qui. 180 00:08:28,260 --> 00:08:31,290 Il blocco viola che abbiamo chiamato finora una funzione. 181 00:08:31,290 --> 00:08:34,830 Così che cosa ho intenzione di andare avanti qui e offrire Alana 182 00:08:34,830 --> 00:08:38,380 è un po targhetta, per rendere chiaro quale ruolo si sta giocando. 183 00:08:38,380 --> 00:08:39,753 >> Così sarai il blocco dire. 184 00:08:39,753 --> 00:08:41,419 Se si vuole andare avanti e metterlo su. 185 00:08:41,419 --> 00:08:43,169 E stiamo andando a mantenere questo super semplice. 186 00:08:43,169 --> 00:08:46,180 Se l'obiettivo a portata di mano è semplicemente ora di attuare con Alana, 187 00:08:46,180 --> 00:08:49,710 questo cosiddetto dire blocco, ecco come sta andando a lavorare. 188 00:08:49,710 --> 00:08:52,574 I have-- chiamiamolo un argomento o un parametro, 189 00:08:52,574 --> 00:08:54,240 è davvero solo un foglio di carta bianco. 190 00:08:54,240 --> 00:08:57,239 Ed è bianco per essere una sorta di reminiscenza della scatola bianca in cui si 191 00:08:57,239 --> 00:08:58,080 può scrivere parole. 192 00:08:58,080 --> 00:09:00,660 >> Nel frattempo ho intenzione di andare qui. 193 00:09:00,660 --> 00:09:06,560 Ho intenzione di andare avanti e scrittura H-E-L-L-O virgola mondo. 194 00:09:06,560 --> 00:09:09,972 Ed ora io, come dire che il programmatore, non lo faccio in realtà saper dire qualcosa. 195 00:09:09,972 --> 00:09:12,180 Posso venire con le parole, ma non necessariamente 196 00:09:12,180 --> 00:09:15,220 saper esprimere me stesso verbalmente o sullo schermo. 197 00:09:15,220 --> 00:09:17,280 E così quello che sto fare è prendere questo pezzo 198 00:09:17,280 --> 00:09:21,157 di funzionalità, il cui input-- o argomento, come ci chiamiamo, 199 00:09:21,157 --> 00:09:23,990 Ho scritto su questo pezzo di paper-- e ho intenzione di esternalizzare esso. 200 00:09:23,990 --> 00:09:26,831 >> E infatti questo è il ruolo che funzioni in un linguaggio di programmazione 201 00:09:26,831 --> 00:09:27,330 può giocare. 202 00:09:27,330 --> 00:09:29,246 Qualcosa come dicono blocco può essere esternalizzate 203 00:09:29,246 --> 00:09:32,074 a qualcuno che sa veramente quello che lei o lui sta parlando. 204 00:09:32,074 --> 00:09:33,990 Quindi, se ti passo sopra qui solo per un attimo, 205 00:09:33,990 --> 00:09:40,092 Ho intenzione di passare questo ingresso per Alana, e chiedere che tu dici questo ingresso. 206 00:09:40,092 --> 00:09:41,202 >> ALANA: Ciao, mondo. 207 00:09:41,202 --> 00:09:42,160 DAVID MALAN: Questo è tutto. 208 00:09:42,160 --> 00:09:43,326 Quindi che c'è una funzione. 209 00:09:43,326 --> 00:09:46,556 Ora siamo in grado di prendere un po 'di più, siamo in grado di fare un passo avanti qui. 210 00:09:46,556 --> 00:09:48,180 Perché quello era chiaramente deludente. 211 00:09:48,180 --> 00:09:51,670 Quindi cerchiamo di ora convertire questo a qualcosa di un po 'più sofisticato. 212 00:09:51,670 --> 00:09:53,630 >> Quindi questo, naturalmente, è la nostra versione C. 213 00:09:53,630 --> 00:09:56,760 Così ora se si vuole prendere quel una tantum, che il nome del tag off, 214 00:09:56,760 --> 00:09:58,530 e diamo si mette su un nuovo nome. 215 00:09:58,530 --> 00:10:00,850 Ma fondamentalmente sei giocare lo stesso ruolo, 216 00:10:00,850 --> 00:10:03,400 così succede per essere chiamato printf ora. 217 00:10:03,400 --> 00:10:06,930 >> La storia è, naturalmente, andando a essere-- probabilmente 218 00:10:06,930 --> 00:10:09,317 proprio come underwhelming-- è sarà la seguente. 219 00:10:09,317 --> 00:10:10,650 Si è ora la funzione printf. 220 00:10:10,650 --> 00:10:13,300 Io sono il chiamante, o il programmatore, che vuole 221 00:10:13,300 --> 00:10:15,745 a stare sulle spalle dei persone in passato come te, 222 00:10:15,745 --> 00:10:18,670 che hanno già capito come in realtà scrivere qualcosa. 223 00:10:18,670 --> 00:10:20,650 E così questa volta, piuttosto che dire che andiamo 224 00:10:20,650 --> 00:10:22,255 effettivamente utilizzare il nostro schermo qui. 225 00:10:22,255 --> 00:10:24,130 Quindi, se vuoi fare un passo qui, io vado 226 00:10:24,130 --> 00:10:27,196 per passare di nuovo questo come Ingresso al mio amico printf. 227 00:10:27,196 --> 00:10:29,320 Se si potesse andare avanti e stampare che sullo schermo, 228 00:10:29,320 --> 00:10:31,611 semplicemente disegnando con il vostro dito sullo schermo nero. 229 00:10:31,611 --> 00:10:43,680 230 00:10:43,680 --> 00:10:44,180 Eccellente. 231 00:10:44,180 --> 00:10:47,350 Va bene, così un sacco di suspense per come che stava andando a giocare fuori. 232 00:10:47,350 --> 00:10:51,390 >> Così ora prendiamo le cose un notch finale, se potessimo, come segue. 233 00:10:51,390 --> 00:10:53,980 Quindi questo è un programma C come abbiamo detto l'ultima volta. 234 00:10:53,980 --> 00:10:57,460 E questo fa proprio quello che hai fatto, che stampa fuori allo schermo, ciao, mondo. 235 00:10:57,460 --> 00:11:00,290 Anche se c'è chiaramente un sacco roba di distrazione lassù. 236 00:11:00,290 --> 00:11:03,630 Ma facciamo le cose su una tacca e introdurre questa versione, che richiamano 237 00:11:03,630 --> 00:11:06,160 Era la terza versione che abbiamo finito con l'ultima volta. 238 00:11:06,160 --> 00:11:09,120 >> Ed ora c'è chiaramente due usi di printf. 239 00:11:09,120 --> 00:11:12,280 Ci sono 2 chiamate a Alana in questo caso per printf, 240 00:11:12,280 --> 00:11:14,740 ma c'è anche una chiamata a un'altra funzione. 241 00:11:14,740 --> 00:11:17,150 Che cosa è che la funzione chiaramente? 242 00:11:17,150 --> 00:11:17,650 GetString. 243 00:11:17,650 --> 00:11:18,980 >> Possiamo ottenere un altro volontario? 244 00:11:18,980 --> 00:11:20,980 OK, andiamo su. 245 00:11:20,980 --> 00:11:21,805 Come ti chiami? 246 00:11:21,805 --> 00:11:22,990 >> JAVIER: Javier. 247 00:11:22,990 --> 00:11:24,750 >> DAVID MALAN: Javier, vieni su. 248 00:11:24,750 --> 00:11:27,270 Quindi il ruolo di Javier è in questo pezzo di carta. 249 00:11:27,270 --> 00:11:28,860 Che io vado a chiamare genericamente s. 250 00:11:28,860 --> 00:11:32,250 Ora, questa è una variabile, è di tipo stringa, come implicita 251 00:11:32,250 --> 00:11:34,290 che da seconda linea nel mezzo là. 252 00:11:34,290 --> 00:11:36,540 E mi piacerebbe che tu vada me ottenere una stringa. 253 00:11:36,540 --> 00:11:40,120 Specificamente testa in giù per l'orchestra sezione e mi ottenere il nome di qualcuno, 254 00:11:40,120 --> 00:11:43,142 e tornare con una variabile che contiene tale valore. 255 00:11:43,142 --> 00:11:44,225 Può essere chiunque tu voglia. 256 00:11:44,225 --> 00:11:47,590 257 00:11:47,590 --> 00:11:48,520 >> Eccoci qui. 258 00:11:48,520 --> 00:11:53,620 259 00:11:53,620 --> 00:11:55,960 Va bene, Javier è scrivere il nome. 260 00:11:55,960 --> 00:12:02,210 261 00:12:02,210 --> 00:12:03,280 Bene. 262 00:12:03,280 --> 00:12:05,740 Noi tutti possiamo intuire come questo sta andando a giocare fuori. 263 00:12:05,740 --> 00:12:07,489 Stiamo forse belaboring il punto di ciò 264 00:12:07,489 --> 00:12:10,320 una funzione è fare, ma comunque vi ringrazio molto. 265 00:12:10,320 --> 00:12:13,890 >> Così Javier è tornato questa stringa qui, che, non riesco a vedere, 266 00:12:13,890 --> 00:12:15,800 Jonathan è la stringa che abbiamo ottenuto. 267 00:12:15,800 --> 00:12:18,330 Così ora quello che sto realmente accadendo per fornire a Alana però 268 00:12:18,330 --> 00:12:20,150 è qualcosa di un po 'diverso. 269 00:12:20,150 --> 00:12:23,800 Perché in questa versione del programma, prima c'è il vostro nome. 270 00:12:23,800 --> 00:12:26,160 Quindi il primo argomento Ho bisogno di fornire Alana 271 00:12:26,160 --> 00:12:33,030 con sta per essere letteralmente il vostro nome. 272 00:12:33,030 --> 00:12:35,280 Va bene, in modo semplice come quello Vorrei consegnare questo a voi. 273 00:12:35,280 --> 00:12:36,730 E mentre scrivo il argomento successivo, se si 274 00:12:36,730 --> 00:12:39,230 voglia di andare avanti e scrivere questo sulla scheda, andiamo avanti 275 00:12:39,230 --> 00:12:42,659 e fare l'ultimo esempio qui per fare cancellare ciò che è in ultima analisi, deve accadere. 276 00:12:42,659 --> 00:12:44,450 Quindi indicare il vostro nome, scriverlo verso l'alto 277 00:12:44,450 --> 00:12:47,220 se non ti dispiace, solo in modo che abbiamo camera per una seconda linea. 278 00:12:47,220 --> 00:12:52,890 Perché l'ultima cosa che ho intenzione per ora offrire non è uno, 279 00:12:52,890 --> 00:12:57,220 ma due pezzi di carta. 280 00:12:57,220 --> 00:12:58,074 >> Bene. 281 00:12:58,074 --> 00:13:01,920 H-E-L-L-O virgola e poi una riga vuota. 282 00:13:01,920 --> 00:13:04,780 Quindi quello che sto per consegnare Alana ora è qualcosa di un po 'diverso. 283 00:13:04,780 --> 00:13:08,600 Non solo è sempre presente, dove riempire il vuoto rappresenta 284 00:13:08,600 --> 00:13:12,050 che percent-- quello che era il segnaposto abbiamo usato? 285 00:13:12,050 --> 00:13:13,890 Sì, così cento s. 286 00:13:13,890 --> 00:13:16,530 Nel frattempo ho intenzione di passare lei in un secondo argomento, che 287 00:13:16,530 --> 00:13:19,290 è esattamente ciò che Javier recuperato da Jonathan. 288 00:13:19,290 --> 00:13:20,534 >> Allora lascia che ti dia questi due. 289 00:13:20,534 --> 00:13:22,575 Se vuoi, andare avanti e di stampa che effetto. 290 00:13:22,575 --> 00:13:25,660 291 00:13:25,660 --> 00:13:28,130 Cosa sta succedendo in ultima analisi, ora è, Alana nuovo 292 00:13:28,130 --> 00:13:29,410 sta giocando il ruolo di printf. 293 00:13:29,410 --> 00:13:32,160 Javier stava giocando il ruolo di GetString. 294 00:13:32,160 --> 00:13:34,700 Quindi, che sarà il vostro souvenir. 295 00:13:34,700 --> 00:13:39,910 E in ultima analisi, ciò che sta accadendo, nonostante questo hello-- yep andare avanti e virgola. 296 00:13:39,910 --> 00:13:41,410 ALANA: Ho ricevuto questo ancora o no? 297 00:13:41,410 --> 00:13:43,451 DAVID MALAN: Sì, si entrambi ricevuti in una sola volta. 298 00:13:43,451 --> 00:13:45,740 Così l'idea è che si ora può capovolgere la pagina 299 00:13:45,740 --> 00:13:50,000 per gestire la seconda di questi due ingressi. 300 00:13:50,000 --> 00:13:53,280 Quindi questo è solo per ribadire il sottolineare che mentre Alana eseguito 301 00:13:53,280 --> 00:13:55,830 questa linea verde qui, e poi Javier ha fatto questo per noi 302 00:13:55,830 --> 00:13:57,820 e tornare a me qualcosa chiameremo s, ma era davvero 303 00:13:57,820 --> 00:13:59,520 solo quel pezzo di carta della propria. 304 00:13:59,520 --> 00:14:02,320 E ora Alana ha fatto questa terza linea. 305 00:14:02,320 --> 00:14:06,010 >> E anche se tutto questo sembra così incredibilmente criptico forse 306 00:14:06,010 --> 00:14:08,870 a prima vista, in realtà è così semplice come sembra. 307 00:14:08,870 --> 00:14:11,390 Passando ingressi in giro, ottenendo uscite, sia 308 00:14:11,390 --> 00:14:14,560 essere fisicamente consegnato indietro qualcosa, o di vedere un effetto collaterale come questo. 309 00:14:14,560 --> 00:14:17,170 Qualcosa visivamente scritta sullo schermo. 310 00:14:17,170 --> 00:14:19,990 Quindi cerchiamo di andare avanti e ringraziare Alana e Javier, 311 00:14:19,990 --> 00:14:25,012 che era qui, per unirsi a noi qui. 312 00:14:25,012 --> 00:14:25,934 >> [Applausi] 313 00:14:25,934 --> 00:14:29,360 314 00:14:29,360 --> 00:14:33,480 >> Così ora diamo per scontato quanto semplice tutto questo potrebbe essere. 315 00:14:33,480 --> 00:14:36,775 E andiamo alla realtà fare qualcosa in codice vero e proprio. 316 00:14:36,775 --> 00:14:40,620 Quindi sullo schermo ecco uno screenshot del cosiddetto apparecchio CS50. 317 00:14:40,620 --> 00:14:43,980 E se si doveva a, come 02:00 il Mercoledì pomeriggio, 318 00:14:43,980 --> 00:14:46,602 spiegare a qualche amico ciò che l'apparecchio CS50 è, 319 00:14:46,602 --> 00:14:48,185 come definirebbe in una frase? 320 00:14:48,185 --> 00:14:52,160 321 00:14:52,160 --> 00:14:53,240 Qualsiasi una frase? 322 00:14:53,240 --> 00:14:54,876 Sì? 323 00:14:54,876 --> 00:14:57,334 STUDENTE: E 'come un programma che rende il computer di tutti 324 00:14:57,334 --> 00:14:58,460 eseguire con lo stesso sistema. 325 00:14:58,460 --> 00:14:59,210 DAVID MALAN: Buono! 326 00:14:59,210 --> 00:15:02,810 E 'un programma che permette a tutti di computer per eseguire con lo stesso sistema. 327 00:15:02,810 --> 00:15:04,920 È una specie di tuo copia di un esercizio 328 00:15:04,920 --> 00:15:07,540 sistema che accade a essere chiamato Ubuntu Linux. 329 00:15:07,540 --> 00:15:11,070 E funziona in modo efficace all'interno di una finestra sul proprio Mac o PC, 330 00:15:11,070 --> 00:15:15,080 in modo che questo modo di destra fuori del cancello in settimana 1, tutti qui nella classe 331 00:15:15,080 --> 00:15:17,590 ha accesso agli stessi strumenti, la stessa configurazione, 332 00:15:17,590 --> 00:15:21,250 e non c'è specifica curva di apprendimento a un Mac o un PC in particolare. 333 00:15:21,250 --> 00:15:25,620 >> Ora abbiamo aperto, all'interno del CS50 apparecchio il Lunedi, questo programma. 334 00:15:25,620 --> 00:15:27,040 Capita di essere chiamato gedit. 335 00:15:27,040 --> 00:15:29,050 Ma questo è davvero solo un editor grafico. 336 00:15:29,050 --> 00:15:33,170 E 'qualcosa come Notepad o Testo Modifica su Windows o Mac OS, rispettivamente. 337 00:15:33,170 --> 00:15:36,720 E ho proposto che ci fossero davvero tre parti importanti di questa schermata. 338 00:15:36,720 --> 00:15:39,560 Il lato superiore è dove si sarebbe scrivere il codice. 339 00:15:39,560 --> 00:15:44,080 E questo è dove abbiamo trascorso gran parte della nostra tre esempi a lezione di Lunedi. 340 00:15:44,080 --> 00:15:47,650 Il fondo quello che abbiamo chiamato, questa finestra nera, si '? 341 00:15:47,650 --> 00:15:48,640 >> STUDENTE: Compiler? 342 00:15:48,640 --> 00:15:51,500 >> DAVID MALAN: Compiler noi accede attraverso quella finestra. 343 00:15:51,500 --> 00:15:53,040 Ma più in generale. 344 00:15:53,040 --> 00:15:54,540 Sì, era solo una finestra di terminale. 345 00:15:54,540 --> 00:15:57,780 Questo è un vecchio termine di età che appena descrive essenzialmente un lampeggio 346 00:15:57,780 --> 00:16:01,910 pronta, che anni fa usato per essere in uno di quei grandi monitor CRT stile. 347 00:16:01,910 --> 00:16:04,300 Ma oggi è una specie di virtuale nel software. 348 00:16:04,300 --> 00:16:06,710 E le finestre di terminale Facciamo noi digitare i comandi. 349 00:16:06,710 --> 00:16:11,750 E 'una sorta di versione semplificata dell'interfaccia utente o utente. 350 00:16:11,750 --> 00:16:14,060 Non è un grafico interfaccia utente o GUI, 351 00:16:14,060 --> 00:16:17,250 si tratta di una interfaccia basata su testo o un'interfaccia a riga di comando. 352 00:16:17,250 --> 00:16:20,770 >> E infatti è lì che in ultima analisi Sono stato in grado di scrivere del codice. 353 00:16:20,770 --> 00:16:24,200 Una volta avevo scritto qualche codice, però, Ricordo che ho usato questo comando. 354 00:16:24,200 --> 00:16:26,210 E come il nome tipo di suggerisce, questo 355 00:16:26,210 --> 00:16:29,860 mi permette di fare un programma chiamato Ciao. 356 00:16:29,860 --> 00:16:33,400 Ma che cosa stava realmente facendo? 357 00:16:33,400 --> 00:16:36,180 Beh make stava prendendo il mio ingresso, il mio codice sorgente, 358 00:16:36,180 --> 00:16:39,380 e la conversione a ciò che, in ultima analisi? 359 00:16:39,380 --> 00:16:40,060 >> Il codice oggetto. 360 00:16:40,060 --> 00:16:42,790 Ed codice oggetto è solo una fantasia modo di dire zero e uno. 361 00:16:42,790 --> 00:16:46,420 E poi una volta ho voluto per eseguire tale codice oggetto, 362 00:16:46,420 --> 00:16:50,940 Una volta ho voluto passare come input quelli zero e uno nel mio computer di 363 00:16:50,940 --> 00:16:54,430 cervello, il cosiddetto CPU o unità centrale di elaborazione, 364 00:16:54,430 --> 00:16:55,730 Ho dovuto eseguire il programma. 365 00:16:55,730 --> 00:16:59,042 Ma non era abbastanza semplice il Lunedi come solo un doppio clic sull'icona po '. 366 00:16:59,042 --> 00:17:01,375 Quello che invece avevo da fare in modo di eseguire un programma? 367 00:17:01,375 --> 00:17:04,130 368 00:17:04,130 --> 00:17:07,890 >> Che cosa era che secondo comando? 369 00:17:07,890 --> 00:17:09,619 Mi sento un po 'slash? 370 00:17:09,619 --> 00:17:10,544 Sì, sì? 371 00:17:10,544 --> 00:17:12,474 >> STUDENTE: Dot slash il nome del programma. 372 00:17:12,474 --> 00:17:13,349 DAVID MALAN: Esattamente. 373 00:17:13,349 --> 00:17:15,030 Dot slash il nome del programma. 374 00:17:15,030 --> 00:17:16,210 Ora, che cosa significa? 375 00:17:16,210 --> 00:17:19,470 Beh dot è solo un modo arcano di dire directory corrente. 376 00:17:19,470 --> 00:17:23,440 Qualunque sia la cartella ci si trova come riferimento, è rappresentato come dot. 377 00:17:23,440 --> 00:17:26,680 La barra è proprio quello che hai visto in Mac OS e Windows per anni, 378 00:17:26,680 --> 00:17:30,329 si tratta di un separatore tra una directory o la cartella e il resto di qualche nome. 379 00:17:30,329 --> 00:17:32,620 In Windows capita di andare indietro, in Linux e Mac 380 00:17:32,620 --> 00:17:34,210 OS capita di andare avanti. 381 00:17:34,210 --> 00:17:37,560 Ma è solo il separatore, quindi è solo un dettaglio sintattico interessante. 382 00:17:37,560 --> 00:17:40,440 >> La parte succosa del corso è il nome del programma, Ciao. 383 00:17:40,440 --> 00:17:42,650 Ed è quello che rendono creato per noi. 384 00:17:42,650 --> 00:17:44,910 Si emesso che file e noi. 385 00:17:44,910 --> 00:17:46,700 Ma come siamo arrivati ​​a questo punto? 386 00:17:46,700 --> 00:17:48,870 Passiamo ora chiedono la domanda, ciò che era realmente 387 00:17:48,870 --> 00:17:52,470 succedendo qui, almeno con per quanto riguarda alcuni di questa sintassi? 388 00:17:52,470 --> 00:17:57,000 >> Quindi, in una frase o così, come abbiamo fatto a spiegare 389 00:17:57,000 --> 00:17:59,020 questa prima linea che è evidenziato in verde? 390 00:17:59,020 --> 00:18:02,998 Cos'era quella prima linea facendo, per quanto riguarda il mio programma? 391 00:18:02,998 --> 00:18:03,974 Sì? 392 00:18:03,974 --> 00:18:05,067 >> STUDENTE: [incomprensibile]. 393 00:18:05,067 --> 00:18:06,150 DAVID MALAN: Dillo di nuovo? 394 00:18:06,150 --> 00:18:08,734 STUDENTE: Inclusione ed il download funzioni ultimi [incomprensibile]. 395 00:18:08,734 --> 00:18:09,483 DAVID MALAN: Good. 396 00:18:09,483 --> 00:18:11,900 Compreso, non dirò il download, ma diciamo 397 00:18:11,900 --> 00:18:15,500 comprese le funzioni che le persone hanno scritto in passato. 398 00:18:15,500 --> 00:18:18,260 E queste funzioni sono implementate da qualche parte nel mio computer. 399 00:18:18,260 --> 00:18:20,470 Qualcuno ha scritto un file anni fa, e quel file 400 00:18:20,470 --> 00:18:23,490 è da qualche parte all'interno del CS50 apparecchio, o sul mio disco rigido 401 00:18:23,490 --> 00:18:24,480 più in generale. 402 00:18:24,480 --> 00:18:27,810 E così questa linea è essenzialmente dicendo, andare a trovare quel file, punti I / O standard 403 00:18:27,810 --> 00:18:31,740 h, e copia e incolla il suo contenuto proprio qui sulla cima del mio file 404 00:18:31,740 --> 00:18:33,860 in modo che io non devo farlo manualmente io. 405 00:18:33,860 --> 00:18:40,970 >> E tra i pezzi più succosi all'interno di che file che abbiamo richiesto era quale funzione? 406 00:18:40,970 --> 00:18:45,740 Quale funzione abbiamo detto è stato dichiarato o citato in I / O standard dot h 407 00:18:45,740 --> 00:18:47,120 più probabilmente? 408 00:18:47,120 --> 00:18:47,900 Printf, giusto? 409 00:18:47,900 --> 00:18:50,797 Noi non scriviamo printf su Lunedi, semplicemente esistito. 410 00:18:50,797 --> 00:18:52,880 Proprio come Alana appena uscito sul palco e ha appena 411 00:18:52,880 --> 00:18:55,540 esistito e sapeva come disegnare qualcosa sullo schermo, 412 00:18:55,540 --> 00:18:58,660 così esiste printf per molti anni. 413 00:18:58,660 --> 00:19:00,240 E così questo è il modo in cui accedervi. 414 00:19:00,240 --> 00:19:03,280 Ora, se passiamo qui, principale era che analogo 415 00:19:03,280 --> 00:19:06,620 disse il pezzo del puzzle chiamato quando verde bandiera cliccato 416 00:19:06,620 --> 00:19:07,620 nel mondo di Scratch. 417 00:19:07,620 --> 00:19:10,130 E 'solo una sorta di nome predefinito che gli esseri umani 418 00:19:10,130 --> 00:19:13,340 deciso rappresenterebbe il predefinito punto di ingresso a un programma. 419 00:19:13,340 --> 00:19:16,540 Il pezzo di codice di programmazione che viene eseguito prima. 420 00:19:16,540 --> 00:19:19,700 >> Nel frattempo queste parentesi graffe sono un po 'come la forma curva 421 00:19:19,700 --> 00:19:21,410 di un sacco di quei pezzi scratch gialli. 422 00:19:21,410 --> 00:19:24,860 Essi tipo di incapsulare un insieme mazzo di istruzioni insieme. 423 00:19:24,860 --> 00:19:28,350 Quindi è solo tipo di lega insieme alcune funzionalità correlate. 424 00:19:28,350 --> 00:19:33,750 printf, naturalmente, è una funzione che stampa dello schermo, come abbiamo appena fatto. 425 00:19:33,750 --> 00:19:35,190 >> Che dire di queste parentesi? 426 00:19:35,190 --> 00:19:38,770 Come si define-- anche se avete mai programmato prima, ma solo in base 427 00:19:38,770 --> 00:19:41,320 ora in una crescente si spera intuizione, cosa 428 00:19:41,320 --> 00:19:43,290 sono le parentesi facendo per noi qui? 429 00:19:43,290 --> 00:19:45,450 O cosa stanno circondando? 430 00:19:45,450 --> 00:19:46,360 Sì? 431 00:19:46,360 --> 00:19:49,360 >> STUDENTE: Dicono che cosa si sta andando a stampare con printf. 432 00:19:49,360 --> 00:19:52,401 >> DAVID MALAN: Sì, stanno dicendo quello che si sta andando a stampare con printf. 433 00:19:52,401 --> 00:19:56,260 O, più generalmente, sono che circonda gli input alla funzione. 434 00:19:56,260 --> 00:19:58,530 Così si può quasi pensare di quelle parentesi 435 00:19:58,530 --> 00:20:01,620 come essere come il metallo clip su questo clipboard. 436 00:20:01,620 --> 00:20:05,940 E 'ciò che è in possesso, è ciò che è sta per essere utilizzato per fornire argomenti 437 00:20:05,940 --> 00:20:08,500 nella funzione, che in questo caso si chiama printf. 438 00:20:08,500 --> 00:20:12,390 >> Quindi, in generale, quasi tutte le tempo che noi chiamiamo una funzione, 439 00:20:12,390 --> 00:20:14,280 stiamo andando a vedere un paio parentesi. 440 00:20:14,280 --> 00:20:17,000 Magari con qualcosa in esso, come ora, forse niente in esso. 441 00:20:17,000 --> 00:20:19,770 Ma è lì che si dovrebbe mettere gli ingressi o le cosiddette argomenti 442 00:20:19,770 --> 00:20:20,680 a una funzione. 443 00:20:20,680 --> 00:20:22,470 >> Ecco un argomento del genere. 444 00:20:22,470 --> 00:20:24,467 Ho evidenziato tutto tra le virgolette, 445 00:20:24,467 --> 00:20:26,300 perché si scopre in questo linguaggio chiamato 446 00:20:26,300 --> 00:20:29,950 C, quando si vuole rappresentare un string-- che è una parola o una frase 447 00:20:29,950 --> 00:20:33,470 o anche un paragraph-- devi circondano con doppi apici. 448 00:20:33,470 --> 00:20:35,420 Non apici singoli, doppi apici. 449 00:20:35,420 --> 00:20:37,460 E questo è esattamente quello che ho fatto qui. 450 00:20:37,460 --> 00:20:39,900 >> Nel frattempo c'è un funky simbolo verso la fine lì. 451 00:20:39,900 --> 00:20:41,600 Il backslash n. 452 00:20:41,600 --> 00:20:43,460 Quello che abbiamo detto che rappresentava? 453 00:20:43,460 --> 00:20:44,093 Sì? 454 00:20:44,093 --> 00:20:44,980 >> STUDENTE: Una nuova linea. 455 00:20:44,980 --> 00:20:45,896 >> DAVID MALAN: Nuova linea. 456 00:20:45,896 --> 00:20:47,910 Giusto, non lo fai generalmente premete Invio quando 457 00:20:47,910 --> 00:20:50,430 si desidera che il programma a sputare fuori una nuova linea. 458 00:20:50,430 --> 00:20:54,210 Piuttosto si dice esplicitamente con questo pezzo certamente arcano 459 00:20:54,210 --> 00:20:58,770 di sintassi, backslash n, che si vuole una nuova linea di andare lì. 460 00:20:58,770 --> 00:20:59,810 Infine, il punto e virgola. 461 00:20:59,810 --> 00:21:01,560 Non abbiamo davvero parlare troppo di questo, 462 00:21:01,560 --> 00:21:04,893 e di gran lunga questa sarà la rovina di alcuni della vostra esistenza per il primo problema 463 00:21:04,893 --> 00:21:07,990 set, quando hai appena riusciti a realizzare ti sei dimenticato qualcosa di stupido 464 00:21:07,990 --> 00:21:08,614 come un punto e virgola. 465 00:21:08,614 --> 00:21:11,600 E in generale mettendo ci sarà risolvere questo problema. 466 00:21:11,600 --> 00:21:13,511 Ma che cosa è che fa per noi, vuoi dire? 467 00:21:13,511 --> 00:21:15,670 >> STUDENTE: [incomprensibile]. 468 00:21:15,670 --> 00:21:17,484 >> DAVID MALAN: Ci dispiace? 469 00:21:17,484 --> 00:21:18,532 >> STUDENTE: [incomprensibile]. 470 00:21:18,532 --> 00:21:19,990 DAVID MALAN: Rifinitura una dichiarazione. 471 00:21:19,990 --> 00:21:22,770 E 'un po' come il periodo in la fine di una frase in inglese, 472 00:21:22,770 --> 00:21:25,790 che, in questa lingua C sta terminando una dichiarazione. 473 00:21:25,790 --> 00:21:29,250 Un'istruzione di programmazione codice che si desidera solo per dire, 474 00:21:29,250 --> 00:21:30,500 Ho chiuso con questo. 475 00:21:30,500 --> 00:21:32,240 Ora notate che è l'unico qui. 476 00:21:32,240 --> 00:21:34,614 Quindi non si vuole entrare in l'abitudine di mettere un punto e virgola 477 00:21:34,614 --> 00:21:36,190 dopo ogni parentesi chiusa. 478 00:21:36,190 --> 00:21:38,610 Per esempio non c'è nessuno accanto a vuoto, e ti 479 00:21:38,610 --> 00:21:40,430 tornare in futuro a ciò che significa vuoto. 480 00:21:40,430 --> 00:21:44,080 Ma in questo caso il vostro printf è un funzione, o una dichiarazione in uso, 481 00:21:44,080 --> 00:21:47,420 e così vogliamo avere che capolinea alla fine di esso. 482 00:21:47,420 --> 00:21:50,980 >> E sto volutamente prendersela con C. E francamente un sacco di linguaggi come C, C ++, 483 00:21:50,980 --> 00:21:55,000 Java, JavaScript, e qualsiasi numero di altre lingue hanno un sacco di questi 484 00:21:55,000 --> 00:21:56,730 sorta di dettagli sintattici. 485 00:21:56,730 --> 00:22:00,120 Che certamente se siete nuovi a programmazione può davvero inciampare. 486 00:22:00,120 --> 00:22:02,307 E si, contrassegnare il mio parole, alcuni di voi 487 00:22:02,307 --> 00:22:04,140 avere questa esperienza in orario di ufficio o in ritardo 488 00:22:04,140 --> 00:22:07,554 notte lavorando su alcuni p-set, dove il programma maledetto semplicemente non viene compilato, 489 00:22:07,554 --> 00:22:09,470 non funzionare, avete idea di ciò che è sbagliato, 490 00:22:09,470 --> 00:22:11,513 sembra completamente logicamente corretto per voi. 491 00:22:11,513 --> 00:22:13,596 Ed è perché si è dimenticato qualcosa come colpire 492 00:22:13,596 --> 00:22:15,250 una virgola alla fine di qualche riga. 493 00:22:15,250 --> 00:22:17,590 >> Ma questi sono i tipi di cose che sei intenzione di imparare subito a vedere. 494 00:22:17,590 --> 00:22:20,048 E in effetti queste sono le cose che e di TF della CA hanno 495 00:22:20,048 --> 00:22:23,210 stata una sorta di formazione a vedere molto più rapidamente di quanto si. 496 00:22:23,210 --> 00:22:26,610 E così questo è solo per dire, come si tuffo nel problema impostato 1 in particolare, 497 00:22:26,610 --> 00:22:28,217 non si sente frustrato da questa roba. 498 00:22:28,217 --> 00:22:30,050 Una volta che si ordina di acclimatate al mondo, si 499 00:22:30,050 --> 00:22:35,130 cominciare a vedere le cose che non si potrebbe vedere a prima vista questa prima settimana. 500 00:22:35,130 --> 00:22:37,440 >> Quindi, il codice sorgente è qualcosa di simile. 501 00:22:37,440 --> 00:22:40,370 Vogliamo passare in la cosiddetta compilatore. 502 00:22:40,370 --> 00:22:42,850 E che compilatore come abbiamo detto fornisce in uscita 503 00:22:42,850 --> 00:22:45,660 noto come codice oggetto, la cosiddetta zero e uno. 504 00:22:45,660 --> 00:22:47,747 Ma da lì, cosa ci danno? 505 00:22:47,747 --> 00:22:49,080 Beh, ci dà questi modelli. 506 00:22:49,080 --> 00:22:52,020 E ancora il computer, il vostro Intel all'interno, 507 00:22:52,020 --> 00:22:54,350 capisce questi modelli di zero e uno. 508 00:22:54,350 --> 00:22:57,300 E a volte il modello rappresenta un numero decimale effettivo 509 00:22:57,300 --> 00:22:59,770 come abbiamo visto la scorsa settimana, a volte rappresenta la lettera 510 00:22:59,770 --> 00:23:02,730 come abbiamo visto la scorsa settimana, a volte rappresenta un'istruzione, 511 00:23:02,730 --> 00:23:05,460 come stampare qualcosa sullo schermo. 512 00:23:05,460 --> 00:23:08,782 >> Così printf per instance-- ma piuttosto, fammi riavvolgimento. 513 00:23:08,782 --> 00:23:11,240 Stiamo dando per scontato che tali zero e uno sono 514 00:23:11,240 --> 00:23:14,200 prodotto da questo comando make. 515 00:23:14,200 --> 00:23:16,050 Ma la marca non è un compilatore. 516 00:23:16,050 --> 00:23:19,370 Rendere non è la cosa nel mezzo che sta producendo gli zeri e uno. 517 00:23:19,370 --> 00:23:23,780 Piuttosto fare è solo una molto convenientemente programma denominato il cui scopo nella vita 518 00:23:23,780 --> 00:23:27,267 è essenzialmente di capire come compilare il vostro programma. 519 00:23:27,267 --> 00:23:29,350 E lo usiamo in questi prime settimane perché appena 520 00:23:29,350 --> 00:23:30,910 ci fa risparmiare un sacco di guai. 521 00:23:30,910 --> 00:23:34,080 >> Ma ciò che rende veramente facendo quando si compila ciao, 522 00:23:34,080 --> 00:23:36,690 è, come abbiamo detto l'ultima volta, è guardando sul disco rigido 523 00:23:36,690 --> 00:23:40,620 o nella cartella corrente, per file di quello che ha chiamato, a quanto pare? 524 00:23:40,620 --> 00:23:41,815 Ciao.c, giusto? 525 00:23:41,815 --> 00:23:43,190 Questo è solo una specie di convenzione. 526 00:23:43,190 --> 00:23:45,620 E 'arbitraria, ma è così che stanno le cose. 527 00:23:45,620 --> 00:23:48,620 Fate, se si specifica il nome di un programma che non esiste ancora, 528 00:23:48,620 --> 00:23:52,200 è andare a cercare il codice sorgente in un file, per impostazione predefinita significa hello.c. 529 00:23:52,200 --> 00:23:53,530 E se lo trova, grande. 530 00:23:53,530 --> 00:23:56,650 Sta andando a convertire tale fonte codice in codice oggetto per te. 531 00:23:56,650 --> 00:23:59,670 >> Ma ogni volta che ho colpito Invio dopo l'esecuzione fanno ciao, 532 00:23:59,670 --> 00:24:03,560 ti ricordo di aver visto l'ultima volta un abbastanza lungo e la sequenza criptica 533 00:24:03,560 --> 00:24:06,430 di altre lettere bianche e caratteri sullo schermo? 534 00:24:06,430 --> 00:24:11,220 Beh, quello era il comando effettivo, il compilatore vero e proprio, che era in esecuzione. 535 00:24:11,220 --> 00:24:15,500 Quindi il compilatore effettivo useremo la maggior parte di il semestre è qualcosa chiamato clang. 536 00:24:15,500 --> 00:24:19,280 Alcuni di voi potrebbero aver usato Visual Studio prima, o GCC, 537 00:24:19,280 --> 00:24:21,340 o un qualsiasi numero di altri compilatori. 538 00:24:21,340 --> 00:24:22,620 Useremo clang. 539 00:24:22,620 --> 00:24:26,950 >> E clang ci permette di convertire in realtà che il codice sorgente in codice oggetto. 540 00:24:26,950 --> 00:24:29,430 Che cosa significa questo in realtà significa in pratica? 541 00:24:29,430 --> 00:24:33,390 Beh, mi permetta di andare in uno di le mie cartelle dall'ultima volta. 542 00:24:33,390 --> 00:24:35,760 All'interno dell'apparecchio CS50. 543 00:24:35,760 --> 00:24:42,080 E lasciami andare avanti e creare questo stesso file, includono standard di I / O dot h. 544 00:24:42,080 --> 00:24:42,875 Int void main. 545 00:24:42,875 --> 00:24:46,000 E ci torneremo in futuro a quanto int mezzi e cosa significa vuoto. 546 00:24:46,000 --> 00:24:49,130 Ma per ora facciamolo ciao backslash mondo n, 547 00:24:49,130 --> 00:24:50,500 proprio come abbiamo fatto sul tabellone. 548 00:24:50,500 --> 00:24:53,930 >> Permettetemi di salvare questo file chiamato hello.c. 549 00:24:53,930 --> 00:24:58,280 E ora se voglio compilare questo Ho could-- lasciatemi lo zoom run dentro-- 550 00:24:58,280 --> 00:25:00,450 fare ciao entrare. 551 00:25:00,450 --> 00:25:02,645 E questo nuovo era quella linea molto criptico. 552 00:25:02,645 --> 00:25:05,120 Ma ora almeno una parola probabilmente salta fuori a voi. 553 00:25:05,120 --> 00:25:07,087 Clang è che la linea che abbiamo visto prima. 554 00:25:07,087 --> 00:25:10,420 Ora c'è un sacco di altre cose francamente che ci sventoliamo le nostre mani a oggi. 555 00:25:10,420 --> 00:25:14,020 Ma ci sono alcuni sottoinsiemi, alcuni personaggi in qui 556 00:25:14,020 --> 00:25:14,907 che sono di interesse. 557 00:25:14,907 --> 00:25:16,490 Ma ho intenzione di andare avanti e farlo. 558 00:25:16,490 --> 00:25:18,281 Io vado a prima esecuzione ciao, solo per dimostrare 559 00:25:18,281 --> 00:25:20,320 che questo sta lavorando come era Lunedi. 560 00:25:20,320 --> 00:25:22,330 Ma ora ho intenzione di cancellare il programma. 561 00:25:22,330 --> 00:25:25,870 E proprio come abbiamo avuto questi nomi brevi ultima volta, 562 00:25:25,870 --> 00:25:29,787 il comando per la rimozione qualcosa è rm, rimuovere, immettere. 563 00:25:29,787 --> 00:25:31,870 Stai andando a prendere un po ' domande piuttosto criptici. 564 00:25:31,870 --> 00:25:35,210 Difficile credere che si può fare anche difficile questa domanda per capire. 565 00:25:35,210 --> 00:25:38,100 Ma rimuovere regolare ciao il file appena mezzi fanno si desidera eliminare ciao. 566 00:25:38,100 --> 00:25:42,650 >> E posso andare avanti e digitare y per sì, Enter, e ora non c'è più. 567 00:25:42,650 --> 00:25:45,130 Ciò significa che ora, se io a cancellare il mio schermo, 568 00:25:45,130 --> 00:25:47,301 è che invece di facendo fare hello-- voi 569 00:25:47,301 --> 00:25:48,800 So cosa, sto diventando bravo in questo. 570 00:25:48,800 --> 00:25:50,690 Ho intenzione di eseguire il compilatore stesso. 571 00:25:50,690 --> 00:25:53,330 Non ho bisogno di qualche programma di capire quello che il mio file si chiama. 572 00:25:53,330 --> 00:25:55,370 Ho scritto ciao.c, ho sapere come si chiama, 573 00:25:55,370 --> 00:25:57,640 Sono chiaramente in grado di digitare tale. 574 00:25:57,640 --> 00:26:02,620 Quindi ho intenzione di andare avanti e non clang hello.c Invio. 575 00:26:02,620 --> 00:26:03,264 >> Sembra funzionare. 576 00:26:03,264 --> 00:26:05,930 E non c'è output aggiuntivo, perché clang è il compilatore. 577 00:26:05,930 --> 00:26:08,590 E 'quello che sta convertendo il codice sorgente di zero e uno. 578 00:26:08,590 --> 00:26:12,870 Quindi, se io ora faccio dot tagliare ciao Invio, hm. 579 00:26:12,870 --> 00:26:14,630 Nuovo messaggio di errore oggi. 580 00:26:14,630 --> 00:26:17,610 Così bash è solo il nome del lampeggiante prompt che stiamo usando. 581 00:26:17,610 --> 00:26:20,360 Questa è una grossolana semplificazione, ma per ora questo è tutto ciò che è, 582 00:26:20,360 --> 00:26:21,401 è il prompt lampeggiante. 583 00:26:21,401 --> 00:26:22,880 Ed è per questo che sta urlando a noi. 584 00:26:22,880 --> 00:26:25,690 >> Nessun file o la directory è un po 'più semplice. 585 00:26:25,690 --> 00:26:28,190 Ma sicuramente ho fatto che il codice oggetto. 586 00:26:28,190 --> 00:26:30,930 Ma il problema è, che se digito il comando 587 00:26:30,930 --> 00:26:34,650 per elencare il contenuto di questo directory, che è ciò? 588 00:26:34,650 --> 00:26:36,210 ls per la lista. 589 00:26:36,210 --> 00:26:39,332 C'è un sacco di roba qui, alcune delle quali è venuto con l'apparecchio, 590 00:26:39,332 --> 00:26:42,040 come la mia cartella Desktop, Download cartella, la cartella Dropbox, e tutti 591 00:26:42,040 --> 00:26:42,850 quella roba. 592 00:26:42,850 --> 00:26:45,410 Ma ciò che è interessante è ciao.c, che 593 00:26:45,410 --> 00:26:47,286 Ho creato un momento fa con gedit. 594 00:26:47,286 --> 00:26:49,160 E qual è la più strana guardando nome qui, 595 00:26:49,160 --> 00:26:53,110 forse che non abbiamo fatto vedere l'ultima volta a tutti? 596 00:26:53,110 --> 00:26:54,710 >> a.out, giusto? 597 00:26:54,710 --> 00:26:56,920 Quindi, back in the day, esso è stato appena deciso che quando 598 00:26:56,920 --> 00:26:58,760 si compila un programma per la prima volta, 599 00:26:58,760 --> 00:27:02,360 e non si specifica il nome di un file, chiamiamolo un. 600 00:27:02,360 --> 00:27:05,800 E a.out significa proprio questo è stato l'output del compilatore. 601 00:27:05,800 --> 00:27:07,790 Quindi è un nome orribile per un programma. 602 00:27:07,790 --> 00:27:12,820 Ma da questa logica, dot tagliare per directory corrente, ridurre drasticamente a.out, 603 00:27:12,820 --> 00:27:16,102 dovrebbe significare c'è infatti il mio programma ciao mondo. 604 00:27:16,102 --> 00:27:17,560 Ora un po 'di scaldare esercizio, anche. 605 00:27:17,560 --> 00:27:20,420 Se voglio rinominare questo di file, scopre che si 606 00:27:20,420 --> 00:27:23,000 spostare un file da un nome all'altro. 607 00:27:23,000 --> 00:27:28,750 Così mv a.out, e poi ho può chiamare ciao Invio. 608 00:27:28,750 --> 00:27:30,940 Quindi questo è un comando di Linux. 609 00:27:30,940 --> 00:27:34,370 DOS ha avuto questo anni fa, Windows ha una finestra di terminale 610 00:27:34,370 --> 00:27:36,460 di qualche tipo che guarda in questo modo, Linux e Mac 611 00:27:36,460 --> 00:27:38,140 computer hanno questo prompt lampeggiante. 612 00:27:38,140 --> 00:27:41,490 Anche se la maggior parte di noi probabilmente raramente, se mai, usarlo. 613 00:27:41,490 --> 00:27:44,590 >> Ma quello che ho fatto si esegue una programma, il cui nome è mv, 614 00:27:44,590 --> 00:27:47,900 e io ho fornito con due argomenti, per così dire. 615 00:27:47,900 --> 00:27:48,630 Due ingressi. 616 00:27:48,630 --> 00:27:50,260 a.out è il nome originale. 617 00:27:50,260 --> 00:27:51,630 Ciao è il nuovo nome. 618 00:27:51,630 --> 00:27:55,670 Quindi, se io ora faccio barra dot ciao, Enter, che esiste. 619 00:27:55,670 --> 00:28:00,770 E se lo faccio dot barra a.out, cosa vi aspettate dovrei vedere? 620 00:28:00,770 --> 00:28:02,250 >> Bash, nessun file o directory. 621 00:28:02,250 --> 00:28:03,350 Perché ho appena rinominato. 622 00:28:03,350 --> 00:28:04,975 Quindi, questo richiede un po 'di tempo per abituarsi. 623 00:28:04,975 --> 00:28:06,977 Ma il problema set 1 specifica sarà veramente 624 00:28:06,977 --> 00:28:08,810 tenere la mano attraverso alcune di queste minuzie. 625 00:28:08,810 --> 00:28:11,050 Perché questo è un completo distrazione intellettuale 626 00:28:11,050 --> 00:28:12,966 dalla più interessante idee a portata di mano, che 627 00:28:12,966 --> 00:28:15,310 è in realtà la creazione di qualcosa di codice. 628 00:28:15,310 --> 00:28:18,830 Ma facciamo una modifica ora a questo programma. 629 00:28:18,830 --> 00:28:23,150 >> Ricordiamo che l'ultima volta che ho fatto qualcosa come questo, printf indicare il vostro nome. 630 00:28:23,150 --> 00:28:25,790 E infatti abbiamo appena fatto questo sul grande schermo laggiù. 631 00:28:25,790 --> 00:28:30,640 E poi ho fatto stringa s ottiene GetString paren aperti, vicino paren. 632 00:28:30,640 --> 00:28:33,430 E paren appena stenografia notazione di parentesi. 633 00:28:33,430 --> 00:28:36,460 Così fa GetString richiede alcun argomento? 634 00:28:36,460 --> 00:28:38,440 Nessun input No, ma ha bisogno delle parentesi, 635 00:28:38,440 --> 00:28:41,830 perché è quello che delimita la convocazione di una funzione. 636 00:28:41,830 --> 00:28:46,440 >> Quindi ho intenzione di andare avanti e cercare di eseguire il compilatore su questo programma ora. 637 00:28:46,440 --> 00:28:50,774 Clang ciao.c, perché io non ha cambiato il suo nome per ora. 638 00:28:50,774 --> 00:28:51,940 E ho avuto un sacco di errori. 639 00:28:51,940 --> 00:28:53,570 Diamo l'immagine qui. 640 00:28:53,570 --> 00:28:55,420 Se ho scorrere di nuovo, come ho detto l'ultima volta, 641 00:28:55,420 --> 00:28:58,420 alla prima, stesso errore che ho avuto l'ultima volta. 642 00:28:58,420 --> 00:29:04,210 Sulla linea 6 della ciao.c ho avuto un stringa identificatore non dichiarato, 643 00:29:04,210 --> 00:29:05,590 ho dire standard? 644 00:29:05,590 --> 00:29:06,750 Io no. 645 00:29:06,750 --> 00:29:10,050 Perché quello che errore ho fatto in questo programma, se vi ricordate da l'ultima volta? 646 00:29:10,050 --> 00:29:13,219 647 00:29:13,219 --> 00:29:15,010 Sì, abbiamo bisogno del cosiddetto ruote di formazione 648 00:29:15,010 --> 00:29:16,510 che useremo solo per poche settimane. 649 00:29:16,510 --> 00:29:19,480 Ma ho bisogno di precisare che anche, da qualche parte all'interno dell'apparecchio, 650 00:29:19,480 --> 00:29:22,720 è un file che abbiamo scritto solo pochi anni fa. 651 00:29:22,720 --> 00:29:26,500 All'interno del quale sono funzioni come apparentemente GetString. 652 00:29:26,500 --> 00:29:35,160 Così ora se torno qui, zoom in, e ri-eseguire clang hello.c. 653 00:29:35,160 --> 00:29:36,500 Accidenti, un altro errore. 654 00:29:36,500 --> 00:29:38,590 Ma non abbiamo visto uno prima. 655 00:29:38,590 --> 00:29:41,900 >> Questo è un po 'più esoterico di capire. 656 00:29:41,900 --> 00:29:46,910 Ma questo è volutamente sullo schermo, perché volevamo raccontare questa storia. 657 00:29:46,910 --> 00:29:51,280 Quando si compila ciao.c, proprio come l'immagine da prima suggerito, 658 00:29:51,280 --> 00:29:54,650 si sta convertendo solo che codice sorgente di zero e uno. 659 00:29:54,650 --> 00:30:00,340 Ora il personale CS50 a pochi anni fa ha scritto CS50.h, e un file corrispondente, 660 00:30:00,340 --> 00:30:01,640 CS50.c. 661 00:30:01,640 --> 00:30:04,490 E noi, qualche anno fa, compilati i file 662 00:30:04,490 --> 00:30:07,290 in un file che accade di essere chiamato CS50.o. 663 00:30:07,290 --> 00:30:09,180 >> Oppure può essere rinominato un poche cose diverse. 664 00:30:09,180 --> 00:30:11,054 Ma questo è un modo semplice di pensarci. 665 00:30:11,054 --> 00:30:14,960 Così abbiamo compilato CS50 di libreria in zero e uno. 666 00:30:14,960 --> 00:30:20,340 Ma da nessuna parte ho specificato che voglio unire le mie zeri 667 00:30:20,340 --> 00:30:24,030 e quelli per il mio mondo ciao programma con gli zeri e quelli 668 00:30:24,030 --> 00:30:29,760 che il personale CS50 creato alcuni anni fa in un programma completo. 669 00:30:29,760 --> 00:30:34,100 Tutto quello che ho specificato da scrittura ciao.c clang è compilare hello.c. 670 00:30:34,100 --> 00:30:38,380 >> Io non ho detto clang a Link nei zero e uno 671 00:30:38,380 --> 00:30:41,650 che il personale CS50 creato per voi qualche tempo fa. 672 00:30:41,650 --> 00:30:48,280 Quindi è una soluzione semplice, precipitare l per il link, CS50. 673 00:30:48,280 --> 00:30:52,600 E noi ancora vediamo questo in poco tempo ancora e ancora. 674 00:30:52,600 --> 00:30:54,420 Ma notate ora c'era nessuna lamentela. 675 00:30:54,420 --> 00:30:59,770 Così ora se corro barra dot ciao, ora sta funzionando. 676 00:30:59,770 --> 00:31:03,840 Anche se questo è un po 'fuorviante dato che ho appena ricreato quale file? 677 00:31:03,840 --> 00:31:05,880 a.out. 678 00:31:05,880 --> 00:31:07,930 >> Quindi, mi permetta di riavvolgere per un attimo. 679 00:31:07,930 --> 00:31:10,900 Il programma che abbiamo appena compilato ha le tre linee di codice. 680 00:31:10,900 --> 00:31:14,710 Quando mi sono imbattuto ciao mondo, ciao un momento fa, non ho visto il vostro nome. 681 00:31:14,710 --> 00:31:17,080 E questo è perché ho eseguito il vecchia versione del programma. 682 00:31:17,080 --> 00:31:22,700 Ma se io corro davvero dot barra a.out Invio di indicare il vostro nome, Rob, ciao, 683 00:31:22,700 --> 00:31:23,370 mondo. 684 00:31:23,370 --> 00:31:23,870 Hm. 685 00:31:23,870 --> 00:31:26,110 Questo è il genere di un bug. 686 00:31:26,110 --> 00:31:28,560 Probabilmente voleva dire Rob, giusto? 687 00:31:28,560 --> 00:31:30,997 Quindi qual è la soluzione qui nel codice. 688 00:31:30,997 --> 00:31:31,872 STUDENTE: [incomprensibile]. 689 00:31:31,872 --> 00:31:38,415 690 00:31:38,415 --> 00:31:39,290 DAVID MALAN: Esattamente. 691 00:31:39,290 --> 00:31:43,160 Così ho solo bisogno di fare quel ritocco finale in modo che io sto passando un segnaposto, 692 00:31:43,160 --> 00:31:45,690 come riempire il vuoto, come abbiamo fatto poco fa. 693 00:31:45,690 --> 00:31:47,870 Ma cento s è ora che riempire il vuoto. 694 00:31:47,870 --> 00:31:52,100 Così, infine, cerchiamo di rivelare un ultimo dettaglio in modo che non c'è nessuna magia. 695 00:31:52,100 --> 00:31:54,090 Ho intenzione di andare avanti e di sbarazzarsi di hellow. 696 00:31:54,090 --> 00:31:56,070 Ho intenzione di andare avanti e di sbarazzarsi di a.out. 697 00:31:56,070 --> 00:31:58,410 Così ora non ho programmi, solo il mio codice sorgente. 698 00:31:58,410 --> 00:32:01,100 E ho intenzione di eseguire un comando leggermente più lungo, clang 699 00:32:01,100 --> 00:32:05,650 dash o ciao hello.c cruscotto LCS50. 700 00:32:05,650 --> 00:32:08,700 >> Ora questo sta cominciando ad andare sorta di in un orecchio e l'altro forse. 701 00:32:08,700 --> 00:32:10,366 Ma basta prendere in giro a parte ciò che questo sta facendo. 702 00:32:10,366 --> 00:32:14,910 Clang è il compilatore, trattino LCS50 volutamente alla fine 703 00:32:14,910 --> 00:32:18,330 fa che cosa in una frase? 704 00:32:18,330 --> 00:32:19,607 Collegamenti alla libreria CS50. 705 00:32:19,607 --> 00:32:21,440 Afferra il zeri e quelli che il personale ha fatto 706 00:32:21,440 --> 00:32:23,310 e li stipiti nel mio programma. 707 00:32:23,310 --> 00:32:27,040 Quindi l'ultima domanda è a portata di mano, ciò che è dash o ciao probabilmente 708 00:32:27,040 --> 00:32:30,530 facendo, anche se non hai mai visto questa sintassi prima? 709 00:32:30,530 --> 00:32:34,920 >> Emissione di un programma che è non chiamato a.out predefinito. 710 00:32:34,920 --> 00:32:37,330 Piuttosto è chiamato ciao. 711 00:32:37,330 --> 00:32:39,460 Così ora non c'è a.out. 712 00:32:39,460 --> 00:32:42,660 Nessun file o directory con questo nome, perché ho esplicitamente detto 713 00:32:42,660 --> 00:32:46,720 chiamare questo programma ciao, in modo che Ora posso digitare un nome del genere 714 00:32:46,720 --> 00:32:47,790 e farlo comportarsi. 715 00:32:47,790 --> 00:32:50,180 >> Ora, francamente, ragazzo è che poco interessante avere 716 00:32:50,180 --> 00:32:52,170 per ricordare tutto questo poco minuzia, giusto? 717 00:32:52,170 --> 00:32:54,180 Quindi cerchiamo di andare avanti e sbarazzarsi di ciao di nuovo. 718 00:32:54,180 --> 00:32:57,880 E andiamo ora tornare a un mondo in che è sufficiente dire fare ciao. 719 00:32:57,880 --> 00:33:00,410 Ma questa è la magia che fare sta facendo per te, 720 00:33:00,410 --> 00:33:02,320 questo è il tedio che che sta facendo per voi. 721 00:33:02,320 --> 00:33:04,630 E come i nostri programmi e problemi diventano più complessi, 722 00:33:04,630 --> 00:33:06,142 fare sarà veramente essere tuo amico. 723 00:33:06,142 --> 00:33:07,850 Poiché non troppo lungo da ora stiamo andando 724 00:33:07,850 --> 00:33:11,150 di avere programmi che vengono scritti non con un file, ma diversi file, 725 00:33:11,150 --> 00:33:16,310 e rendere automatizza il processo di compilazione di tutto questo per noi insieme. 726 00:33:16,310 --> 00:33:20,620 >> Così ora stampare. 727 00:33:20,620 --> 00:33:24,960 printf è all'interno di questo file, standard di I / O punto h, che abbiamo visto prima, 728 00:33:24,960 --> 00:33:26,980 ma c'è di più a printf di quello. 729 00:33:26,980 --> 00:33:30,482 C'è backslash n, ma c'è anche un mucchio di altre sequenze di escape. 730 00:33:30,482 --> 00:33:32,940 E sequenza di escape è solo un modo elegante per dire qualcosa 731 00:33:32,940 --> 00:33:35,990 che inizia con una barra rovesciata, non una barra, una barra rovesciata, 732 00:33:35,990 --> 00:33:37,920 e fa qualche cosa di speciale. 733 00:33:37,920 --> 00:33:43,770 E non soffermarsi sulla maggior parte di questi, ma perché c'è backslash doppi apici, 734 00:33:43,770 --> 00:33:44,830 cosa ne pensi? 735 00:33:44,830 --> 00:33:48,010 Perché c'è questa strana sequenza di caratteri, barra rovesciata doppia citazione, 736 00:33:48,010 --> 00:33:50,505 perché potrebbe che essere utile? 737 00:33:50,505 --> 00:33:51,380 STUDENTE: [incomprensibile]. 738 00:33:51,380 --> 00:33:56,594 739 00:33:56,594 --> 00:33:57,760 DAVID MALAN: Esattamente, giusto? 740 00:33:57,760 --> 00:34:01,830 Ripensate al nostro programma di mondo ciao che abbiamo visto un paio di volte ora, 741 00:34:01,830 --> 00:34:05,880 ogni volta che abbiamo visto quel mondo ciao programma abbiamo avuto doppi apici all'interno 742 00:34:05,880 --> 00:34:08,210 di che è ciao virgola backslash mondo n. 743 00:34:08,210 --> 00:34:10,070 Ma pensare a te stesso, cosa se effettivamente 744 00:34:10,070 --> 00:34:12,520 voluto stampare una virgoletta? 745 00:34:12,520 --> 00:34:16,100 Il tuo primo istinto potrebbe essere, non lo faccio so perché potrei voler fare-- qui, 746 00:34:16,100 --> 00:34:18,780 possiamo essere un po 'passivo aggressivo, ciao amico. 747 00:34:18,780 --> 00:34:21,350 Potremmo voler fare qualcosa di simile. 748 00:34:21,350 --> 00:34:25,230 >> Ma perché è questo ora problematico? 749 00:34:25,230 --> 00:34:28,730 Ignorando le virgolette inglesi da parte che Keynote fatto automaticamente per noi. 750 00:34:28,730 --> 00:34:29,730 Perché questa problematica? 751 00:34:29,730 --> 00:34:36,719 752 00:34:36,719 --> 00:34:37,270 >> Esattamente. 753 00:34:37,270 --> 00:34:39,022 Perché abbiamo come 4 virgolette. 754 00:34:39,022 --> 00:34:41,230 Beh, il primo probabilmente va con il secondo, 755 00:34:41,230 --> 00:34:43,271 e forse il quarto va con il terzo, 756 00:34:43,271 --> 00:34:46,170 o, voglio dire che non sono nemmeno sicuro, né il computer sta per essere. 757 00:34:46,170 --> 00:34:48,352 Ancora Computers, compilatori ancora una volta, sono abbastanza stupido. 758 00:34:48,352 --> 00:34:50,060 Faranno solo fare ciò che dite loro di fare. 759 00:34:50,060 --> 00:34:54,270 E se non sei inequivocabile che sono probabilmente andando a gettare un errore. 760 00:34:54,270 --> 00:34:57,700 >> Se non sei univoca su come fare un burro di arachidi e gelatina di sandwich 761 00:34:57,700 --> 00:34:59,510 strane cose potrebbero arrivare. 762 00:34:59,510 --> 00:35:00,580 E 'la stessa idea. 763 00:35:00,580 --> 00:35:03,100 Ora basta dire c'è alcune altre sequenze di escape, 764 00:35:03,100 --> 00:35:04,820 ma verremo a quelli in breve tempo. 765 00:35:04,820 --> 00:35:07,410 Essenzialmente questi fuga sequenze rappresentano qualcosa 766 00:35:07,410 --> 00:35:10,480 che si potrebbe non essere in grado troppo facilmente alla tastiera, 767 00:35:10,480 --> 00:35:12,010 senza confondere il computer. 768 00:35:12,010 --> 00:35:15,733 >> Ora, nel frattempo abbiamo segnaposto in printf. 769 00:35:15,733 --> 00:35:19,630 Percentuale d, che può anche essere scritta in quasi tutti i casi, come i cento, 770 00:35:19,630 --> 00:35:21,610 è un segnaposto per il tipo di dati? 771 00:35:21,610 --> 00:35:23,920 Che tipo di valore? 772 00:35:23,920 --> 00:35:24,920 Un numero decimale. 773 00:35:24,920 --> 00:35:27,234 Quindi in realtà inizieremo utilizzando i cento perché è 774 00:35:27,234 --> 00:35:28,650 un po 'più semplice, come un intero. 775 00:35:28,650 --> 00:35:29,550 Percentuale i. 776 00:35:29,550 --> 00:35:31,320 Un numero intero che sembra essere decimale. 777 00:35:31,320 --> 00:35:35,690 >> Percentuale s abbiamo già detto è stato un segnaposto per una stringa. 778 00:35:35,690 --> 00:35:38,630 Che è solo una parola, una frase, un paragrafo, un saggio, a prescindere. 779 00:35:38,630 --> 00:35:40,830 E 'una sequenza di personaggi di una certa lunghezza. 780 00:35:40,830 --> 00:35:42,820 E vedremo fra poco alcuni di questi altri. 781 00:35:42,820 --> 00:35:45,950 Ma cento c è per un singolo carattere. 782 00:35:45,950 --> 00:35:48,500 Percentuale f è un numero in virgola mobile, 783 00:35:48,500 --> 00:35:50,860 come un numero reale che ha un punto decimale in esso, che 784 00:35:50,860 --> 00:35:52,550 è di non ovviamente un numero intero. 785 00:35:52,550 --> 00:35:54,670 E c'è un intero mucchio di altri. 786 00:35:54,670 --> 00:35:56,990 >> Nel frattempo in C, e in molte lingue, 787 00:35:56,990 --> 00:35:58,650 abbiamo diversi tipi di dati. 788 00:35:58,650 --> 00:36:00,650 Diversi tipi di ciotole di vetro, se vuoi. 789 00:36:00,650 --> 00:36:03,830 La ciotola ho usato l'ultima volta era per palline da ping pong, 790 00:36:03,830 --> 00:36:06,990 ma possiamo anche memorizzare diversi valori come caratteri e stringhe 791 00:36:06,990 --> 00:36:10,820 e interi in un contenitore, come una variabile, e C ha questi. 792 00:36:10,820 --> 00:36:14,020 Char è il tipo di dati, il tipo di variabile, 793 00:36:14,020 --> 00:36:15,700 in cui è possibile memorizzare un carattere. 794 00:36:15,700 --> 00:36:19,560 Float è un tipo di variabile che è possibile memorizzare un numero reale. 795 00:36:19,560 --> 00:36:21,220 >> Int è, naturalmente, per un int. 796 00:36:21,220 --> 00:36:23,760 E piuttosto ridicolmente nominato un lungo lungo 797 00:36:23,760 --> 00:36:26,830 è dove è possibile memorizzare in sostanza, un numero molto lungo, con ancora 798 00:36:26,830 --> 00:36:29,930 più cifre poi un tipico potrebbe negozio int. 799 00:36:29,930 --> 00:36:32,420 Ma torneremo a che tra non molto. 800 00:36:32,420 --> 00:36:35,520 >> In CS50 dot h nel frattempo l'altro file di intestazione 801 00:36:35,520 --> 00:36:37,630 che abbiamo visto una coppia volte in uso, c'è 802 00:36:37,630 --> 00:36:41,350 altri due tipi di dati che non esistono in C in genere. 803 00:36:41,350 --> 00:36:45,000 Uno è stringa, e vedremo in un paio di settimane Quali corde davvero 804 00:36:45,000 --> 00:36:46,610 sono sotto la cappa. 805 00:36:46,610 --> 00:36:47,950 E uno è bool. 806 00:36:47,950 --> 00:36:51,650 E un bool è una variabile che può assumere solo determinati valori. 807 00:36:51,650 --> 00:36:54,370 E proprio sulla base della scorsa settimana spiegazione di Scratch, 808 00:36:54,370 --> 00:36:56,680 e più recentemente C, cosa vorresti indovinare 809 00:36:56,680 --> 00:37:01,770 sono i due valori possibili per qualche contenitore che è di tipo bool? 810 00:37:01,770 --> 00:37:02,860 >> Sì e no. 811 00:37:02,860 --> 00:37:03,870 Uno e zero. 812 00:37:03,870 --> 00:37:04,502 Vero o falso. 813 00:37:04,502 --> 00:37:07,460 E infatti è l'ultimo che tende essere convenzionale in una programmazione 814 00:37:07,460 --> 00:37:10,030 linguaggio, dicendo qualcosa come vero o falso. 815 00:37:10,030 --> 00:37:13,160 >> Nel frattempo la biblioteca CS50 viene con un mazzo di funzionalità 816 00:37:13,160 --> 00:37:16,640 che il personale ha scritto per voi, oltre ad ottenere giusto una stringa. 817 00:37:16,640 --> 00:37:20,910 Abbiamo scritto a funzioni avanzate che può ottenere un numero intero da parte dell'utente, 818 00:37:20,910 --> 00:37:22,990 ottenere un singolo carattere, ottenere un galleggiante, che 819 00:37:22,990 --> 00:37:25,160 è solo un numero con la virgola. 820 00:37:25,160 --> 00:37:28,290 Prendi una lunga lunga, davvero grande valore da parte dell'utente. 821 00:37:28,290 --> 00:37:30,930 Così abbiamo visto solo questo azione sotto forma di GetString. 822 00:37:30,930 --> 00:37:33,230 Ma con queste funzioni sarà presto in grado di scrivere 823 00:37:33,230 --> 00:37:36,070 programmi che ricevono input da parte dell'utente. 824 00:37:36,070 --> 00:37:39,230 >> Nel frattempo considerare questo programma, e considerare 825 00:37:39,230 --> 00:37:42,600 come possiamo ora iniziare ad aggiungere a con nuovi costrutti. 826 00:37:42,600 --> 00:37:44,530 Un rapido giro vorticoso e poi vedremo 827 00:37:44,530 --> 00:37:47,340 a un certo scrivendo qualche programmi manualmente noi stessi. 828 00:37:47,340 --> 00:37:49,700 D'ora in poi se vogliamo attuare una condizione, 829 00:37:49,700 --> 00:37:52,790 non sta andando a guardare come un bel bel pezzo di puzzle. 830 00:37:52,790 --> 00:37:54,460 Sta andando a guardare un po 'più arcano. 831 00:37:54,460 --> 00:37:57,620 Ma questo è il canonico Struttura di una condizione in C. 832 00:37:57,620 --> 00:38:00,380 >> La parola se, due parentesi, all'interno della quale 833 00:38:00,380 --> 00:38:02,590 sta per essere una specie di espressione booleana. 834 00:38:02,590 --> 00:38:04,999 Ora la barra barra nel mezzo, questo è 835 00:38:04,999 --> 00:38:07,290 al momento un po 'come segnaposto codice pseudocodice. 836 00:38:07,290 --> 00:38:11,576 Ma più propriamente, ogni riga di codice in C che inizia con barra barra 837 00:38:11,576 --> 00:38:12,850 è un commento. 838 00:38:12,850 --> 00:38:15,920 >> E 'come una nota che si potrebbe messo su un saggio, stampato su carta. 839 00:38:15,920 --> 00:38:17,290 E 'una nota a te stesso. 840 00:38:17,290 --> 00:38:20,100 Non ha funzionale impatto sul programma. 841 00:38:20,100 --> 00:38:23,580 E 'una sorta di promemoria, è il tuo documentazione di quello che sta succedendo. 842 00:38:23,580 --> 00:38:25,720 Quindi fare questo al momento è una sorta di segnaposto 843 00:38:25,720 --> 00:38:27,560 per che cosa c'è dentro di quelle parentesi graffe 844 00:38:27,560 --> 00:38:29,810 finalmente sta per fare qualcosa. 845 00:38:29,810 --> 00:38:35,160 >> Nel frattempo ci sono due forchette in strada, se un altro costrutto come questo. 846 00:38:35,160 --> 00:38:37,024 È possibile se, elseif, else. 847 00:38:37,024 --> 00:38:39,690 Ora vale la pena notare, in particolare se sei stato googling intorno 848 00:38:39,690 --> 00:38:42,480 on-line per le risorse su curiosità, o se si prende in mano 849 00:38:42,480 --> 00:38:44,575 uno dei corsi di Libri consigliati su C, 850 00:38:44,575 --> 00:38:48,430 vedrete che gli esseri umani hanno un sacco di preferenze diverse per quanto 851 00:38:48,430 --> 00:38:50,510 di esprimersi in codice. 852 00:38:50,510 --> 00:38:53,800 Ad alcune persone piace mettere il parentesi graffe come ho fatto qui. 853 00:38:53,800 --> 00:38:57,760 Ad alcune persone piace mettere il riccio bretelle per esempio qui. 854 00:38:57,760 --> 00:39:01,700 >> Ad alcune persone piace mettere la qualcun'altro qui e poi questo qui. 855 00:39:01,700 --> 00:39:05,120 Ci sono molti modi per codice di scrittura, e nessuno di loro 856 00:39:05,120 --> 00:39:06,566 sono giusto per sé. 857 00:39:06,566 --> 00:39:08,440 Anche se c'è un qualche che sono piuttosto male. 858 00:39:08,440 --> 00:39:11,315 Ma ci sono no-- se questo è in ultima analisi, un dibattito molto religioso. 859 00:39:11,315 --> 00:39:13,940 Infatti, uno dei più fastidiosi cose di informatica 860 00:39:13,940 --> 00:39:16,310 è come supponente scienziati informatici possono essere. 861 00:39:16,310 --> 00:39:19,880 E troverete nel tempo che anche a sviluppare preferenze personali 862 00:39:19,880 --> 00:39:22,130 su come il vostro codice dovrebbe apparire. 863 00:39:22,130 --> 00:39:27,162 >> Non solo si comportano, non basta creare output, ma come dovrebbe apparire esteticamente. 864 00:39:27,162 --> 00:39:30,120 Quindi quello che faremo è vi guidi lungo la via verso, almeno per ora, 865 00:39:30,120 --> 00:39:34,825 uno stile CS50 standard che almeno mantiene le cose uniforme e di facile lettura. 866 00:39:34,825 --> 00:39:37,330 Ma più su quelli distinzioni in breve tempo. 867 00:39:37,330 --> 00:39:41,830 >> Un'espressione booleana in C, se si voluto dire se questa condizione è vera 868 00:39:41,830 --> 00:39:44,650 e questa altra condizione è vero, non si scrive la parola 869 00:39:44,650 --> 00:39:46,610 e, come si farebbe in inglese. 870 00:39:46,610 --> 00:39:50,580 È invece utilizza commerciale e commerciale, per ragioni che torneremo a. 871 00:39:50,580 --> 00:39:54,520 Se si vuole dire o si utilizzano due barre verticali, che su una tastiera americana 872 00:39:54,520 --> 00:39:57,650 è generalmente sopra Enter accanto al tasto backslash. 873 00:39:57,650 --> 00:40:03,080 E questo significa solo se questa condizione o questa altra condizione è vera farlo. 874 00:40:03,080 --> 00:40:05,210 >> Intanto c'è questa cosa pazzesca, che 875 00:40:05,210 --> 00:40:07,760 avrete occasione da utilizzare di tanto in tanto. 876 00:40:07,760 --> 00:40:10,390 Ma è solo una alternativa modo per esprimere se stessi. 877 00:40:10,390 --> 00:40:12,400 Questo, per ora, cerchiamo di stipulare, è solo 878 00:40:12,400 --> 00:40:16,880 un altro modo di esprimere funky se, elseif, ElseIf, ElseIf, ElseIf. 879 00:40:16,880 --> 00:40:19,720 E 'appena formattato in termini dei casi, dove letteralmente 880 00:40:19,720 --> 00:40:23,420 enumerare i valori che si potrebbe desiderare di controllare. 881 00:40:23,420 --> 00:40:24,410 >> Nel frattempo loop. 882 00:40:24,410 --> 00:40:26,842 Abbiamo visto un confronto di Gratta con un loop. 883 00:40:26,842 --> 00:40:29,550 E ho intenzione di agitare la mia mano a ciò che ciascuna di queste cose significa. 884 00:40:29,550 --> 00:40:33,520 Ma si noti che un ciclo sarà molto spesso iniziano con la parola chiave. 885 00:40:33,520 --> 00:40:36,350 O si inizierà con la parola chiave, mentre. 886 00:40:36,350 --> 00:40:41,360 O si inizierà con la parola chiave fare, e terminare con la parola chiave, mentre. 887 00:40:41,360 --> 00:40:43,920 >> Ma che cosa stiamo a vedere è più cose come questa. 888 00:40:43,920 --> 00:40:47,950 Ecco, in generale in C, come si potrebbe dichiarare una variabile e dargli un valore. 889 00:40:47,950 --> 00:40:50,610 In C non è sufficiente, come in Scratch, basta 890 00:40:50,610 --> 00:40:52,810 dire dammi una variabile chiamata qualcosa. 891 00:40:52,810 --> 00:40:55,960 Devi dire C, e dire compilatore, più precisamente, 892 00:40:55,960 --> 00:40:58,680 che tipo di valore si fa vogliono mettere nella ciotola di vetro. 893 00:40:58,680 --> 00:40:59,610 >> È un numero intero? 894 00:40:59,610 --> 00:41:02,210 Se è così, si deve letteralmente dire int e poi 895 00:41:02,210 --> 00:41:04,220 il nome della variabile, poi un punto e virgola. 896 00:41:04,220 --> 00:41:08,050 Se invece volevi stringa e chiamato E 'come ho fatto oggi il mio codice qui, 897 00:41:08,050 --> 00:41:10,920 si direbbe virgola stringa s. 898 00:41:10,920 --> 00:41:14,200 Una volta che si vuole dare un valore è possibile quindi utilizzare il segno di uguale, 899 00:41:14,200 --> 00:41:16,211 altrimenti noto come l' operatore di assegnazione. 900 00:41:16,211 --> 00:41:17,960 E notare come ogni di queste righe di codice 901 00:41:17,960 --> 00:41:20,650 ha la virgola alla fine di esso. 902 00:41:20,650 --> 00:41:22,550 >> Ma francamente questo solo sembra un po 'brutto. 903 00:41:22,550 --> 00:41:26,580 Perché non posso dire al computer, dare me una variabile e inizializzarla a zero. 904 00:41:26,580 --> 00:41:28,380 Cioè, dammi una ciotola di vetro vuota. 905 00:41:28,380 --> 00:41:28,980 Mentre si può. 906 00:41:28,980 --> 00:41:32,250 E così uno della sentenza che si chiama avrete devono fare stilisticamente nel tempo 907 00:41:32,250 --> 00:41:36,290 viene, si fa a scrivere il vostro codice come questo, o cosa tipo di pulirlo e impressionare 908 00:41:36,290 --> 00:41:39,040 persone scrivendo due righe come una sola. 909 00:41:39,040 --> 00:41:41,830 E questo sarebbe considerato generalmente un modo più elegante 910 00:41:41,830 --> 00:41:43,870 di scrivere stilisticamente codice. 911 00:41:43,870 --> 00:41:45,200 >> Funzioni noi siamo naturalmente visto. 912 00:41:45,200 --> 00:41:46,340 Stanno andando a prendere questo formato. 913 00:41:46,340 --> 00:41:48,881 Il nome di una funzione, alcuni parentesi, e poi magari un po ' 914 00:41:48,881 --> 00:41:49,910 roba dentro. 915 00:41:49,910 --> 00:41:52,540 Oppure si potrebbe vedere usi di molteplici funzioni lato 916 00:41:52,540 --> 00:41:55,980 a fianco, come qualcosa di simile. 917 00:41:55,980 --> 00:41:59,390 Ora, come tangente, fa questo scherzo ora ha senso? 918 00:41:59,390 --> 00:42:03,566 919 00:42:03,566 --> 00:42:04,960 >> [Risate] 920 00:42:04,960 --> 00:42:09,360 Ciò non significa che sia divertente, ma non forse fare un po 'più di senso. 921 00:42:09,360 --> 00:42:12,140 Così ora andiamo nel Apparecchio CS50 per un momento. 922 00:42:12,140 --> 00:42:14,640 E lasciate che apro un occhiolino qui. 923 00:42:14,640 --> 00:42:17,470 >> E infatti uno dei motivi per introdurre il catalogo IKEA 924 00:42:17,470 --> 00:42:20,080 e lampeggia l'immagine di iPhone un po 'fa 925 00:42:20,080 --> 00:42:24,700 è stato quello di legare insieme la realtà in fatto che solo pochi anni fa, nel 2007, 926 00:42:24,700 --> 00:42:26,540 questo pezzo di codice è stato rilasciato, che è stata 927 00:42:26,540 --> 00:42:29,820 uno dei primi attuazione di un software 928 00:42:29,820 --> 00:42:31,494 che fa quello che si chiama jailbreaking. 929 00:42:31,494 --> 00:42:34,410 Per chi non conosce, jailbreaking qualcosa di simile a un telefono cellulare o un iPhone 930 00:42:34,410 --> 00:42:37,680 significa essenzialmente capire il modo di fare le cose 931 00:42:37,680 --> 00:42:39,864 con esso che l'azienda che ha fatto non intendeva. 932 00:42:39,864 --> 00:42:42,780 Come si desidera installare determinati software che non è in App Store, 933 00:42:42,780 --> 00:42:45,405 jailbreaking il telefono che si fanno le cose così e più. 934 00:42:45,405 --> 00:42:47,447 Ma ciò che è stato divertente in 2007-- e c'è stato 935 00:42:47,447 --> 00:42:49,780 decine di versioni diverse di queste cose, da allora, 936 00:42:49,780 --> 00:42:53,540 in tutti i tipi di languages-- è che questo programma, chiamato iUnlock, 937 00:42:53,540 --> 00:42:57,036 è stato effettivamente scritto in C. E così ho tirato su il codice sorgente per questo, 938 00:42:57,036 --> 00:42:59,910 solo per mostrare tipo di alcuni dei le somiglianze con i costrutti 939 00:42:59,910 --> 00:43:01,450 abbiamo discusso finora. 940 00:43:01,450 --> 00:43:05,150 Ora non c'è modo più complessità qui che abbiamo visto già in classe. 941 00:43:05,150 --> 00:43:07,160 Permettetemi di scorrere verso l'alto solo un po 'qui. 942 00:43:07,160 --> 00:43:11,520 >> Ma notiamo these-- bene notiamo alcuni things-- a meno di notare queste righe qui, 943 00:43:11,520 --> 00:43:14,090 compresi standard di I / O dot h. 944 00:43:14,090 --> 00:43:17,660 E all-- linea 24, please-- notare lo standard I / O 945 00:43:17,660 --> 00:43:21,380 dot h e un sacco di altri I file che a quanto pare altre persone 946 00:43:21,380 --> 00:43:22,160 hanno scritto. 947 00:43:22,160 --> 00:43:24,850 E se scorriamo attraverso questo, poco arbitrariamente, 948 00:43:24,850 --> 00:43:27,910 Notate che non so come scrivere tutto questo me necessariamente ancora, 949 00:43:27,910 --> 00:43:28,880 ma se c'è. 950 00:43:28,880 --> 00:43:30,400 Quindi, a quanto pare questo ha una succursale. 951 00:43:30,400 --> 00:43:33,210 >> E se ho scorrere giù un po ' inoltre c'è un altro caso. 952 00:43:33,210 --> 00:43:38,210 Se io scorrere verso l'alto, credo intorno alla linea 100 ho visto per. 953 00:43:38,210 --> 00:43:40,020 Quindi io non sono molto sicuro come funziona ancora, 954 00:43:40,020 --> 00:43:43,180 ma questo è un ciclo che sta per mi permetta di iterate un determinato numero di volte. 955 00:43:43,180 --> 00:43:45,230 E se ho scorrere tutti la strada verso il basso 956 00:43:45,230 --> 00:43:51,020 Vedo che c'è un funzionare qui chiamato 957 00:43:51,020 --> 00:43:54,570 principale, e alcuni crediti aggiuntivi per il piacere della lettura. 958 00:43:54,570 --> 00:43:57,830 >> Quindi questo è solo per say-- e ci metterò questa linea tra sorgente del corso 959 00:43:57,830 --> 00:44:01,480 codice oggi-- che anche alcuni di questi dispositivi che diamo per scontato, 960 00:44:01,480 --> 00:44:05,130 alla fine della giornata sei ancora l'utilizzo di questi costrutti di base che abbiamo 961 00:44:05,130 --> 00:44:07,430 state introducendo già finora. 962 00:44:07,430 --> 00:44:08,620 Questo è abbastanza di quello. 963 00:44:08,620 --> 00:44:11,480 Va bene, così ora cerchiamo di effettivamente costruire qualcosa. 964 00:44:11,480 --> 00:44:15,640 >> Andiamo al di là di qualcosa di simile hello.c, e aprire questa, 965 00:44:15,640 --> 00:44:17,170 scriviamo questo programma. 966 00:44:17,170 --> 00:44:19,850 Ho intenzione di andare avanti e scrivere un programma chiamato adder.c, 967 00:44:19,850 --> 00:44:23,310 il cui scopo nella vita sarà come il mio primo super semplice calcolatrice 968 00:44:23,310 --> 00:44:24,840 che aggiunge solo un paio di numeri. 969 00:44:24,840 --> 00:44:27,050 Non perché questo è un disco problema, ma perché 970 00:44:27,050 --> 00:44:29,390 mi permette ora lego insieme un paio di cose. 971 00:44:29,390 --> 00:44:33,100 Quindi ho intenzione di andare avanti e di includere I / O standard dot h e CS50 dot h. 972 00:44:33,100 --> 00:44:34,670 Io vado a dire int void main. 973 00:44:34,670 --> 00:44:36,545 E di nuovo in futuro torneremo ad esso 974 00:44:36,545 --> 00:44:38,560 in in questo contesto e mezzi vuoti. 975 00:44:38,560 --> 00:44:43,340 >> E ora ho intenzione di dire qualcosa come printf, dammi un numero intero. 976 00:44:43,340 --> 00:44:47,610 E ora la mia seconda linea, come faccio a esprimermi come 977 00:44:47,610 --> 00:44:50,980 che voglio dichiarare una variabile che sta per memorizzare un int? 978 00:44:50,980 --> 00:44:55,470 Letteralmente cosa scrivo se voglio creare una variabile che memorizza un int 979 00:44:55,470 --> 00:44:58,270 diresti? 980 00:44:58,270 --> 00:44:59,650 int un uguale getint. 981 00:44:59,650 --> 00:45:00,485 Certo, in modo che funziona. 982 00:45:00,485 --> 00:45:02,360 E proprio per coerenza con il codice avrete 983 00:45:02,360 --> 00:45:04,485 Vedi on line, mi lascia cambiamento questo x, solo perché x 984 00:45:04,485 --> 00:45:06,830 è un nome di variabile comune utilizzare, almeno in algebra. 985 00:45:06,830 --> 00:45:08,720 Ora vorrei andare avanti e fare printf nuovo. 986 00:45:08,720 --> 00:45:10,692 Dammi un altro numero intero. 987 00:45:10,692 --> 00:45:12,900 E ora ho intenzione di genere di imparare da quel modello, 988 00:45:12,900 --> 00:45:14,490 Io vado a dire int y arriva a getInt. 989 00:45:14,490 --> 00:45:16,340 >> E noi non abbiamo usato GetInt prima, ma solo 990 00:45:16,340 --> 00:45:19,860 come GetString va e ottiene una stringa, come Javier ha fatto da parte del pubblico, 991 00:45:19,860 --> 00:45:22,780 similmente fa GetInt inizia a lampeggiare il prompt. 992 00:45:22,780 --> 00:45:26,750 E efficacemente attesa che l'utente per dare un numero intero, digitando in 993 00:45:26,750 --> 00:45:27,900 e premendo invio. 994 00:45:27,900 --> 00:45:30,850 Ora, infine, ho intenzione di fare questo, printf la somma di-- 995 00:45:30,850 --> 00:45:36,080 e mi permetta di ottenere now-- fantasia i cento e cento i è presente 996 00:45:36,080 --> 00:45:39,270 Io punto esclamativo backslash n. 997 00:45:39,270 --> 00:45:42,750 E cosa pensi che ho intenzione di mettere in ora come ingressi aggiuntivi 998 00:45:42,750 --> 00:45:44,620 a printf? 999 00:45:44,620 --> 00:45:47,380 >> Non voglio dire letteralmente tra virgolette x. 1000 00:45:47,380 --> 00:45:52,210 Voglio classe in x e allora, e adesso andiamo di fantasia 1001 00:45:52,210 --> 00:45:54,420 e diciamo solo assumere possiamo fare quello che vogliamo. 1002 00:45:54,420 --> 00:45:56,330 Cosa vuoi dire dopo? 1003 00:45:56,330 --> 00:45:57,070 x + y. 1004 00:45:57,070 --> 00:45:58,520 E infatti che funzionerà. 1005 00:45:58,520 --> 00:46:01,760 E 'minimamente linguaggi di programmazione fare capire l'aritmetica di base, 1006 00:46:01,760 --> 00:46:03,500 e quindi questo dovrebbe in realtà lavoro. 1007 00:46:03,500 --> 00:46:06,730 >> Quindi lasciami andare avanti e fanno vipera nella mia finestra in bianco e nero 1008 00:46:06,730 --> 00:46:08,090 qui, Enter. 1009 00:46:08,090 --> 00:46:10,830 Linea Cryptic ma nessun errore messaggio, in modo che è buono. 1010 00:46:10,830 --> 00:46:14,410 Dot ridurre drasticamente vipera, dammi un intero, 1. 1011 00:46:14,410 --> 00:46:16,230 Dammi un altro numero intero, 2. 1012 00:46:16,230 --> 00:46:18,770 La somma di 1 e 2 è 3. 1013 00:46:18,770 --> 00:46:21,730 >> Va bene, quindi una bella banale programma, ma che cosa è fatto? 1014 00:46:21,730 --> 00:46:25,680 E 'mi ha permesso di utilizzare una funzione chiamare qui, richiamare un'altra funzione qui, 1015 00:46:25,680 --> 00:46:29,260 due chiamate a GetInt, un chiamata di terzo a printf, 1016 00:46:29,260 --> 00:46:30,720 e quindi utilizzando questi segnaposto. 1017 00:46:30,720 --> 00:46:33,160 Quindi è un po 'più sofisticato rispetto l'ultima volta. 1018 00:46:33,160 --> 00:46:35,260 Ma cosa succede se voglio ottenere un po 'di fantasia? 1019 00:46:35,260 --> 00:46:38,900 >> Lasciami andare avanti e ora faccio questo. 1020 00:46:38,900 --> 00:46:42,890 Lasciami andare avanti e creare un nuovo file denominato condizioni zero. 1021 00:46:42,890 --> 00:46:44,890 E ho intenzione di risparmiare po 'di tempo per amor classi 1022 00:46:44,890 --> 00:46:48,260 e semplicemente incollare in quella codice come punto di partenza. 1023 00:46:48,260 --> 00:46:51,510 E ora sto solo andando a mettere qualcosa di nuovo qui in mezzo. 1024 00:46:51,510 --> 00:46:55,889 Così printf mi piacerebbe un numero intero per favore. 1025 00:46:55,889 --> 00:46:58,180 E tutto questo codice è disponibile sul sito web del corso, 1026 00:46:58,180 --> 00:47:00,556 non è necessario digitare tutto fuori in classe, se si preferisce non. 1027 00:47:00,556 --> 00:47:02,638 int, e ora ho intenzione di utilizzare, al posto di x ed y, 1028 00:47:02,638 --> 00:47:05,270 Ho intenzione di utilizzare n, che è probabilmente il nome più comune 1029 00:47:05,270 --> 00:47:09,220 per un numero intero in un programma per computer. 1030 00:47:09,220 --> 00:47:12,060 Ed ora voglio fare un poco giudizio qui. 1031 00:47:12,060 --> 00:47:15,460 Vado a vedere se n è maggiore di 0, allora 1032 00:47:15,460 --> 00:47:23,670 Io vado a dire whoops printf--, printf-- hai scelto un numero positivo, 1033 00:47:23,670 --> 00:47:25,370 punto esclamativo backslash n. 1034 00:47:25,370 --> 00:47:26,460 Chiudere tale. 1035 00:47:26,460 --> 00:47:33,150 Altrimenti ho intenzione di stampare printf hai scelto un numero negativo. 1036 00:47:33,150 --> 00:47:35,377 >> Ora, prima di urlare contro di me, corriamo questo programma. 1037 00:47:35,377 --> 00:47:36,210 Lasciami andare qui. 1038 00:47:36,210 --> 00:47:40,730 E come faccio a compilare un programma chiamato condizioni dash 0? 1039 00:47:40,730 --> 00:47:42,300 Rendere condizioni dash 0. 1040 00:47:42,300 --> 00:47:45,560 Tipo di un nome stupido, ma-- dannazione. 1041 00:47:45,560 --> 00:47:47,560 OK, buon momento di insegnamento. 1042 00:47:47,560 --> 00:47:48,410 Perché che rompere? 1043 00:47:48,410 --> 00:47:51,360 1044 00:47:51,360 --> 00:47:54,710 >> Che cosa ho accidentalmente chiamo questo file? 1045 00:47:54,710 --> 00:47:56,876 È possibile tipo di inferire dalla scheda qui. 1046 00:47:56,876 --> 00:47:58,750 Quindi non è male che ho fatto questo, perché questo 1047 00:47:58,750 --> 00:48:00,208 accadrà forse per alcuni di voi. 1048 00:48:00,208 --> 00:48:03,880 Così ho chiamato per sbaglio il mio codice sorgente condizione di 0. 1049 00:48:03,880 --> 00:48:09,950 Ma il mio codice sorgente per convenzione dovrebbe essere in un file chiamato condizione di 0 dash C, 1050 00:48:09,950 --> 00:48:11,720 o qualunque dot c. 1051 00:48:11,720 --> 00:48:12,610 >> Quindi, mi permetta di risolvere il problema. 1052 00:48:12,610 --> 00:48:16,880 Proprio come Microsoft Word posso salire Salva con nome e fare condizione 0 punti c. 1053 00:48:16,880 --> 00:48:20,100 Ora, giusto per essere in ordine sono intenzione di andare avanti e rimuovere 1054 00:48:20,100 --> 00:48:23,020 condizione di 0, che è stato il mio vecchia versione. 1055 00:48:23,020 --> 00:48:26,550 E ora facciamo fare condizione 0, Enter. 1056 00:48:26,550 --> 00:48:27,870 OK, sembra buono. 1057 00:48:27,870 --> 00:48:29,510 >> Condizione 0, Enter. 1058 00:48:29,510 --> 00:48:33,530 Mi piacerebbe un numero intero per favore, 50, hai scelto un numero positivo. 1059 00:48:33,530 --> 00:48:35,390 Ora, come su negativo 50? 1060 00:48:35,390 --> 00:48:37,660 Hai scelto un numero negativo. 1061 00:48:37,660 --> 00:48:39,605 Che ne dite ora, 0. 1062 00:48:39,605 --> 00:48:42,250 1063 00:48:42,250 --> 00:48:45,350 Abbastanza sicuro 0 non è negativo. 1064 00:48:45,350 --> 00:48:47,780 >> Quindi questo è una specie di bug logico. 1065 00:48:47,780 --> 00:48:50,680 Come posso risolvere questo? 1066 00:48:50,680 --> 00:48:57,260 Altrimenti se n è minore di 0, fare questo, altrimenti possiamo avere una filiale a tre vie qui, 1067 00:48:57,260 --> 00:49:01,740 printf hai scelto 0. 1068 00:49:01,740 --> 00:49:06,150 Così ora, se mi esegue nuovamente questo programma, dopo la compilazione 1069 00:49:06,150 --> 00:49:10,790 di nuovo con make, e ora rieseguire condizione 0, quello che ci vediamo qui 1070 00:49:10,790 --> 00:49:14,570 è 0 mi dà che in uscita. 1071 00:49:14,570 --> 00:49:16,280 Allora, dove stiamo andando con questo? 1072 00:49:16,280 --> 00:49:18,930 >> Beh, è ​​molto facile perdere di vista della foresta per gli alberi. 1073 00:49:18,930 --> 00:49:23,590 E così ci permettono di concludere con questo video 2 e 1/2 minuto 1074 00:49:23,590 --> 00:49:25,710 che in ultima analisi è un po ' di un annuncio da parte di Google, 1075 00:49:25,710 --> 00:49:28,850 ma che è davvero testamento ciò anche utilizzando questi edifici di base 1076 00:49:28,850 --> 00:49:33,020 blocchi in ultima analisi, possiamo fare una volta abbiamo un po 'di programmazione 1077 00:49:33,020 --> 00:49:34,463 savvy sotto le nostre cinture. 1078 00:49:34,463 --> 00:49:35,150 >> [GIOCO MUSICA] 1079 00:49:35,150 --> 00:49:38,370 1080 00:49:38,370 --> 00:49:40,540 >> SAROO BRIERLEY (commento): E 'stato 26 anni fa, 1081 00:49:40,540 --> 00:49:42,470 e stavo per girare 5. 1082 00:49:42,470 --> 00:49:45,465 Siamo arrivati ​​alla stazione ferroviaria e ci siamo imbarcati il ​​nostro treno insieme. 1083 00:49:45,465 --> 00:49:48,010 Mio fratello ha appena detto io rimango qui, e io tornerò. 1084 00:49:48,010 --> 00:49:51,140 E ho pensato, beh sai, Potrei anche semplicemente andare a dormire 1085 00:49:51,140 --> 00:49:52,690 e lui appena mi sveglio. 1086 00:49:52,690 --> 00:49:55,145 E quando mi sono svegliato la prossima giorno, l'intera carrozza 1087 00:49:55,145 --> 00:49:59,125 era vuoto su un treno in corsa, un fantasma treno mi prendere non so dove. 1088 00:49:59,125 --> 00:50:01,980 1089 00:50:01,980 --> 00:50:06,280 >> Sono stata adottata fuori in Australia, ad una famiglia australiana. 1090 00:50:06,280 --> 00:50:09,710 E la mamma aveva decorato la mia camera con la mappa di India, 1091 00:50:09,710 --> 00:50:11,950 che ha messo accanto al mio letto. 1092 00:50:11,950 --> 00:50:15,830 Mi sono svegliato ogni mattina visto che la mappa, e quindi 1093 00:50:15,830 --> 00:50:18,530 è una sorta di mantenuto vivo il ricordo. 1094 00:50:18,530 --> 00:50:20,530 La gente diceva, sei cercando di trovare un ago 1095 00:50:20,530 --> 00:50:23,560 in un pagliaio, Saroo vi troverete mai. 1096 00:50:23,560 --> 00:50:28,540 >> Avrei lampo dei posti che ho usato per andare, i flash della mia famiglia 1097 00:50:28,540 --> 00:50:29,890 facce. 1098 00:50:29,890 --> 00:50:34,060 C'era l'immagine di mia madre, seduto con le gambe incrociate, 1099 00:50:34,060 --> 00:50:35,740 solo a guardare il suo grido. 1100 00:50:35,740 --> 00:50:38,160 La vita è così difficile. 1101 00:50:38,160 --> 00:50:41,237 Quello era il mio tesoro. 1102 00:50:41,237 --> 00:50:44,320 E stavo guardando Google Map e realizzato c'è Google Earth pure. 1103 00:50:44,320 --> 00:50:48,140 In un mondo dove si poteva ingrandire, Ho iniziato ad avere tutti questi pensieri 1104 00:50:48,140 --> 00:50:51,500 e quali possibilità che questo potrebbe fare per me. 1105 00:50:51,500 --> 00:50:54,890 Mi sono detto, sai, hai ottenuto tutti quei ricordi fotografici 1106 00:50:54,890 --> 00:50:58,590 e punti di riferimento da dove vieni, e si sa che cosa la città assomiglia. 1107 00:50:58,590 --> 00:51:03,060 Questo potrebbe essere un programma che è possibile utilizzare per trovare la via del ritorno. 1108 00:51:03,060 --> 00:51:06,720 >> Ho pensato, bene metterò un puntino sulla stazione ferroviaria Calcutta, 1109 00:51:06,720 --> 00:51:10,890 e una linea di raggio, si sa, che si dovrebbe essere alla ricerca intorno a questa zona. 1110 00:51:10,890 --> 00:51:13,750 Mi sono imbattuto in una sorta di questi binari del treno. 1111 00:51:13,750 --> 00:51:18,160 E ho cominciato a seguirlo, e Sono venuto a una stazione ferroviaria che 1112 00:51:18,160 --> 00:51:22,228 riflette la stessa immagine che era nei miei ricordi. 1113 00:51:22,228 --> 00:51:23,707 Tutto abbinato. 1114 00:51:23,707 --> 00:51:27,950 Ho solo pensato che sì, io sapere dove sto andando. 1115 00:51:27,950 --> 00:51:30,116 Sto solo andando a lasciare che il mappa che ho nella mia testa 1116 00:51:30,116 --> 00:51:33,080 mi portano e mi torna alla mia città natale. 1117 00:51:33,080 --> 00:51:36,420 >> Sono arrivato alla soglia di la casa che sono nato. 1118 00:51:36,420 --> 00:51:39,140 E abbiamo girato circa 15 metri dietro l'angolo, 1119 00:51:39,140 --> 00:51:42,980 c'era tre donne in piedi esterno, adiacente all'altro. 1120 00:51:42,980 --> 00:51:47,830 E quella di mezzo si fece avanti, e Ho solo pensato, questa è tua madre. 1121 00:51:47,830 --> 00:51:53,450 Venne avanti, mi ha abbracciato, e eravamo lì per circa cinque minuti. 1122 00:51:53,450 --> 00:51:56,530 1123 00:51:56,530 --> 00:51:59,000 >> Afferrò la mia mano e mi ha portato a casa 1124 00:51:59,000 --> 00:52:02,450 e ottenuto al telefono, dove si suonò mia sorella e mio fratello 1125 00:52:02,450 --> 00:52:05,600 per dire che, si sa, tuo fratello ha appena 1126 00:52:05,600 --> 00:52:09,340 tutto all'improvviso è apparso come un fantasma. 1127 00:52:09,340 --> 00:52:12,440 E poi la famiglia si riunì di nuovo. 1128 00:52:12,440 --> 00:52:15,110 Tutto ciò che va tutto bene, Ho aiutato mia madre, 1129 00:52:15,110 --> 00:52:17,110 lei non ha bisogno di essere sgobbare. 1130 00:52:17,110 --> 00:52:19,555 Si può vivere il resto della sua vita in pace. 1131 00:52:19,555 --> 00:52:23,460 >> E 'stato un ago in un pagliaio, ma l'ago era lì. 1132 00:52:23,460 --> 00:52:24,400 Tutto è lì. 1133 00:52:24,400 --> 00:52:28,260 Tutto ciò che abbiamo nel mondo è al tocco di un pulsante. 1134 00:52:28,260 --> 00:52:32,010 Ma hai avuto modo di avere la volontà e la determinazione a volerlo. 1135 00:52:32,010 --> 00:52:32,950 >> [GIOCO MUSICA] 1136 00:52:32,950 --> 00:52:36,420 1137 00:52:36,420 --> 00:52:38,170 DAVID MALAN: Meravigliosamente dolce testimonial 1138 00:52:38,170 --> 00:52:40,540 a poco ciò che si può ora che fare con la tecnologia. 1139 00:52:40,540 --> 00:52:43,390 Vedremo la prossima settimana. 1140 00:52:43,390 --> 00:52:44,374