1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> DAVID J. MALAN: Quindi questo è CS50. 3 00:00:13,800 --> 00:00:18,970 E questo era di CS50 proprio Colton Ogden, per più di chi è la musica si può 4 00:00:18,970 --> 00:00:22,820 scaricare a soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Così oggi ci concentriamo tanto più sull'arte della programmazione. 6 00:00:26,690 --> 00:00:28,980 E prendiamo dove abbiamo lasciato la scorsa settimana, la messa a fuoco 7 00:00:28,980 --> 00:00:31,660 su Scratch, che era questa linguaggio di programmazione grafica. 8 00:00:31,660 --> 00:00:35,490 E prendere le cose ad un livello più basso, utilizzando una programmazione più tradizionale 9 00:00:35,490 --> 00:00:38,420 lingua conosciuta come C. Ma lungo il percorso, realizzando 10 00:00:38,420 --> 00:00:40,730 che le stesse idee che parlato di Venerdì scorso 11 00:00:40,730 --> 00:00:44,390 si ripresenterà non solo in questo linguaggio C, ma nella maggior parte ogni altra 12 00:00:44,390 --> 00:00:46,350 che guardiamo questo semestre. 13 00:00:46,350 --> 00:00:50,247 >> Così abbiamo chiamato questa cosa qui quello che l'ultima volta? 14 00:00:50,247 --> 00:00:51,830 Questo è rappresentativo di una dichiarazione. 15 00:00:51,830 --> 00:00:53,080 Così abbiamo chiamato questa una dichiarazione. 16 00:00:53,080 --> 00:00:54,100 E lo fa qualcosa. 17 00:00:54,100 --> 00:00:56,910 Si tratta di un'istruzione che un computer o Scratch potrebbe eseguire. 18 00:00:56,910 --> 00:00:59,910 E d'ora in poi, cominciamo anche chiamare qualcosa come questo una funzione, 19 00:00:59,910 --> 00:01:02,070 per ragioni che vedremo presto. 20 00:01:02,070 --> 00:01:03,681 >> Nel frattempo, abbiamo visto cose come questa. 21 00:01:03,681 --> 00:01:05,680 E questi sono generalmente noto come cosa costruire? 22 00:01:05,680 --> 00:01:06,240 >> PUBBLICO: Loop. 23 00:01:06,240 --> 00:01:06,860 >> DAVID J. MALAN: Quindi un ciclo. 24 00:01:06,860 --> 00:01:07,943 Quindi abbastanza semplice. 25 00:01:07,943 --> 00:01:09,470 Fa letteralmente quello che dice. 26 00:01:09,470 --> 00:01:12,210 E in Scratch, se si vuole stipare più pezzi del puzzle in là, 27 00:01:12,210 --> 00:01:13,950 il pezzo crescerà per adattarlo. 28 00:01:13,950 --> 00:01:16,790 E vedremo in C che siamo in grado di fare la stessa cosa. 29 00:01:16,790 --> 00:01:20,000 >> Un altro tipo di ciclo, però, in Scratch potrebbe essere per sempre, 30 00:01:20,000 --> 00:01:21,820 o c'è qualche numero di altri approcci. 31 00:01:21,820 --> 00:01:24,150 Ma facciamo un più sguardo generalista, con una faccia 32 00:01:24,150 --> 00:01:27,402 questo è probabilmente molto familiare, a loop più in generale. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: One cosa che i computer 34 00:01:29,110 --> 00:01:31,860 sono veramente bravo a è ripetendo i comandi. 35 00:01:31,860 --> 00:01:33,910 Come persona, si otterrebbe davvero annoiato se 36 00:01:33,910 --> 00:01:36,730 ha dovuto fare la stessa cosa un sacco di volte di fila. 37 00:01:36,730 --> 00:01:40,530 Ma un computer può fare la stessa cosa milioni o addirittura miliardi di volte, 38 00:01:40,530 --> 00:01:43,290 e non annoiarsi, ed essere in grado di eseguirla veramente bene. 39 00:01:43,290 --> 00:01:45,650 >> Così, per esempio, se ha voluto augurare a tutti 40 00:01:45,650 --> 00:01:48,840 su Facebook un felice compleanno inviando loro una e-mail, 41 00:01:48,840 --> 00:01:51,550 mi potrebbe prendere più di un secolo di scrivere in realtà fuori 42 00:01:51,550 --> 00:01:53,000 tutti quei messaggi di posta elettronica a tutti. 43 00:01:53,000 --> 00:01:57,780 Ma con poche righe di codice, posso dispone di un sistema di inviare una e-mail a tutti 44 00:01:57,780 --> 00:01:59,930 su Facebook che desiderano loro un felice compleanno. 45 00:01:59,930 --> 00:02:02,730 Ecco, questo è quello che i cicli sono e perché sono qualcosa di prezioso e 46 00:02:02,730 --> 00:02:04,740 che i computer possono fare molto bene. 47 00:02:04,740 --> 00:02:05,630 >> DAVID J. MALAN: Quindi, se sei stato il destinatario 48 00:02:05,630 --> 00:02:07,820 di alcuni dei CS50 e di Spazio di Dropbox di ritardo, 49 00:02:07,820 --> 00:02:10,590 che in realtà è esattamente quello che abbiamo fare, utilizzando il codice proprio così. 50 00:02:10,590 --> 00:02:12,600 Abbiamo in sostanza, abbiamo un grande foglio di calcolo in cui 51 00:02:12,600 --> 00:02:15,016 persone sono state inserendo il loro nomi e indirizzi email. 52 00:02:15,016 --> 00:02:18,160 E abbiamo scritto un po 'di codice che può iterare su quegli indirizzi 53 00:02:18,160 --> 00:02:21,860 e sputare indirizzi univoci in caso qualcuno ha presentato più volte. 54 00:02:21,860 --> 00:02:25,120 E da allora in poi, inviamo un automatizzato e-mail da bot di CS50, 55 00:02:25,120 --> 00:02:27,190 compreso il codice coupon. 56 00:02:27,190 --> 00:02:29,290 >> Ora abbiamo anche guardato questo costrutto ultima volta. 57 00:02:29,290 --> 00:02:33,100 E questo è un particolare esempio di che cosa? 58 00:02:33,100 --> 00:02:35,050 Quindi, sì, un'espressione booleana. 59 00:02:35,050 --> 00:02:37,050 E la forma è destinata per catturare anche quello. 60 00:02:37,050 --> 00:02:39,966 Tutte queste domande del formare vero o falso in Scratch 61 00:02:39,966 --> 00:02:41,590 avrà un aspetto un po 'di qualcosa come questo. 62 00:02:41,590 --> 00:02:43,200 E chiamiamo questo un'espressione booleana. 63 00:02:43,200 --> 00:02:46,170 Questo è effettivamente vero o falso, sì o no. 64 00:02:46,170 --> 00:02:49,150 E 'un modo di rispondere a una domanda. 65 00:02:49,150 --> 00:02:52,420 >> E intanto è possibile utilizzare questi booleano espressioni all'interno di costrutti 66 00:02:52,420 --> 00:02:54,720 come questi, che di Naturalmente sono condizioni 67 00:02:54,720 --> 00:02:57,259 o rami, proverbiale forchette in mezzo alla strada. 68 00:02:57,259 --> 00:02:59,550 E possono guardare non solo in questo modo, ma possono anche 69 00:02:59,550 --> 00:03:02,080 hanno altre famiglie ad essi associati. 70 00:03:02,080 --> 00:03:05,820 E si può effettivamente avere un tre vie bivio o quattro vie forchetta 71 00:03:05,820 --> 00:03:08,340 nella strada, semplicemente nidificazione queste cose, 72 00:03:08,340 --> 00:03:10,510 come si vedrà in Scratch se non l'hai già. 73 00:03:10,510 --> 00:03:13,550 E come si può fare in C pure. 74 00:03:13,550 --> 00:03:16,810 >> Prendiamo un altro generalista guardare un alumnist, pure, che 75 00:03:16,810 --> 00:03:21,490 potrebbe presentare un approccio diverso a queste cose chiamate condizioni. 76 00:03:21,490 --> 00:03:24,060 >> BILL GATES: La gente fa decisioni di ogni giorno. 77 00:03:24,060 --> 00:03:27,530 Ad esempio, prima di andare fuori di te tipo di avere un'istruzione if che dice, 78 00:03:27,530 --> 00:03:31,480 se piove allora ho bisogno di ottenere la mia giacca. 79 00:03:31,480 --> 00:03:36,820 E i computer sono incredibili, una volta decidere questo tipo di dichiarazioni, 80 00:03:36,820 --> 00:03:42,280 che possono eseguire in modo affidabile queste cose a velocità incredibile. 81 00:03:42,280 --> 00:03:48,240 E così un programma per computer molto è un po 'di matematica e un po' 82 00:03:48,240 --> 00:03:53,050 if dove la decisione viene fatto. 83 00:03:53,050 --> 00:03:55,020 >> DAVID J. MALAN: Quindi, come si può sapere, era 84 00:03:55,020 --> 00:03:57,880 gente come Bill Gates, Paul Allen, e altri 85 00:03:57,880 --> 00:04:00,240 che veramente dato il via alla cosiddetto personal computer 86 00:04:00,240 --> 00:04:01,990 rivoluzione qualche anno fa. 87 00:04:01,990 --> 00:04:04,140 Ho pensato, prima di tuffarci in qualche Administrivia, 88 00:04:04,140 --> 00:04:09,920 avremmo relazioniamo un racconto dal Albuquerque, New Mexico Museum of Natural History 89 00:04:09,920 --> 00:04:13,650 e scienza in cui alcuni di Bill Gates ' e le prime storie di Paul Allen 90 00:04:13,650 --> 00:04:17,470 sono raccontati come abbiamo ora PC di oggi e Mac e altro ancora. 91 00:04:17,470 --> 00:04:22,390 Per questo, però, abbiamo bisogno di due volontari che hanno ottime voci di narrazione 92 00:04:22,390 --> 00:04:23,735 per leggere un copione ad alta voce. 93 00:04:23,735 --> 00:04:25,530 >> Va bene, che ne dici di tornare lì. 94 00:04:25,530 --> 00:04:26,120 Andiamo su. 95 00:04:26,120 --> 00:04:27,770 E che dire di fronte qui. 96 00:04:27,770 --> 00:04:28,340 Vieni giù. 97 00:04:28,340 --> 00:04:29,600 Prendete i vostri posti qui. 98 00:04:29,600 --> 00:04:32,444 Come voi ragazzi venire, una coppia di annunci amministrative. 99 00:04:32,444 --> 00:04:34,360 sezionamento, il processo di scegliere una sezione, 100 00:04:34,360 --> 00:04:36,068 darà inizio a questo Mercoledì al Venerdì. 101 00:04:36,068 --> 00:04:38,400 Più su quello prossimo Mercoledì a lezione. 102 00:04:38,400 --> 00:04:41,770 >> Sezioni Super, nel frattempo, sono qualcosa che offriamo la prossima settimana 103 00:04:41,770 --> 00:04:45,310 in base al quale l'intera classe è invitata di partecipare in scala abbastanza grande 104 00:04:45,310 --> 00:04:47,690 sezioni, una più confortevole, uno meno confortevole. 105 00:04:47,690 --> 00:04:51,340 E annunceremo i particolari di che, pure, entro questa settimana. 106 00:04:51,340 --> 00:04:53,310 >> Nel frattempo, le sezioni stessi, inizierà 107 00:04:53,310 --> 00:04:57,241 in tre del corso di settimana, indice zero, il che significa che questi sono un paio di settimane 108 00:04:57,241 --> 00:04:57,740 out. 109 00:04:57,740 --> 00:04:58,450 Quindi non preoccuparti. 110 00:04:58,450 --> 00:05:01,014 Non hai ancora perso nulla in questo senso. 111 00:05:01,014 --> 00:05:03,930 Nel frattempo, nel frattempo, se si avere amministrativamente tutte le domande, 112 00:05:03,930 --> 00:05:08,120 e-mail me e Devon e Gabe e Rob a questo indirizzo qui. 113 00:05:08,120 --> 00:05:10,320 >> Infine, impostare problema 0 è, naturalmente, fuori. 114 00:05:10,320 --> 00:05:12,320 Potreste aver notato sul sito web del corso. 115 00:05:12,320 --> 00:05:14,840 Esso dovrebbe fornire con tutte le risposte alle domande 116 00:05:14,840 --> 00:05:18,250 si potrebbe avere lungo la strada per iniziare con il problema insieme. 117 00:05:18,250 --> 00:05:21,430 Ma se vi trovate ha bisogno di una mano, 118 00:05:21,430 --> 00:05:25,020 con tutti i mezzi frequentano le ore di ufficio, Lunedi, Martedì, Mercoledì, Giovedi 119 00:05:25,020 --> 00:05:27,290 di questa settimana, la sera in quattro sale da pranzo. 120 00:05:27,290 --> 00:05:31,650 Vedere che ci URL delle indicazioni di di cui dell'orario di ufficio devono essere. 121 00:05:31,650 --> 00:05:34,000 >> Ora Incontriamoci nostro due ospiti qui oggi. 122 00:05:34,000 --> 00:05:34,740 Come ti chiami? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> DAVID J. MALAN: Jay Paolo, piacere di conoscerti. 125 00:05:36,880 --> 00:05:37,330 >> HIKARI: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> DAVID J. MALAN: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> HIKARI: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> DAVID J. MALAN: Hikari. 129 00:05:38,810 --> 00:05:39,790 Piacere di conoscerti pure. 130 00:05:39,790 --> 00:05:42,123 Jay Paul e Hikari hanno in davanti a loro su questi musicale 131 00:05:42,123 --> 00:05:45,100 si erge due script che ho stampato questa mattina dal New Mexico 132 00:05:45,100 --> 00:05:46,692 Museo di Storia Naturale e della Scienza. 133 00:05:46,692 --> 00:05:48,400 E quello che ho pensato Farei sulla testa 134 00:05:48,400 --> 00:05:52,830 è accompagnare il vostro recitazione dello script e questa storia 135 00:05:52,830 --> 00:05:54,700 con alcune immagini visive, senza sorprese. 136 00:05:54,700 --> 00:05:57,512 >> E quello che ho fatto in anticipo è pre-evidenziare il vostro script 137 00:05:57,512 --> 00:05:59,470 quello che si dovrebbe leggere, e ciò che si dovrebbe leggere. 138 00:05:59,470 --> 00:06:00,920 E faremo essenzialmente paragrafi appena si alternano. 139 00:06:00,920 --> 00:06:03,211 Quindi è molto simile si potrebbe hanno fatto in classe di inglese. 140 00:06:03,211 --> 00:06:06,875 Questo è davvero costringere il pubblico a credere nella tua storia qui. 141 00:06:06,875 --> 00:06:07,600 Lo facciamo? 142 00:06:07,600 --> 00:06:13,272 Così la storia qui è, abbiamo un BASIC, e comincia a Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: Era inverno, 1974 a Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 dove gli inverni possono essere freddi. 145 00:06:20,240 --> 00:06:22,800 Un barbuto, dai capelli lunghi College Dropout nome 146 00:06:22,800 --> 00:06:27,280 Paul Allen è stato drudging attraverso Harvard Piazza, assorto nei suoi pensieri. 147 00:06:27,280 --> 00:06:31,050 La sua principale preoccupazione in quei giorni era come ottenere il suo amico, Bill Gates, 148 00:06:31,050 --> 00:06:34,974 lasciare la scuola e andare in affari con lui. 149 00:06:34,974 --> 00:06:37,890 HIKARI: I due si erano già andati attraverso una serie di iniziative imprenditoriali 150 00:06:37,890 --> 00:06:40,850 insieme, con inizio alle Lakeside scuola di Seattle dove 151 00:06:40,850 --> 00:06:45,220 sono stati pagati in tempo computer libero di testare un computer PDP-10 in un momento locale 152 00:06:45,220 --> 00:06:46,580 condivisione azienda. 153 00:06:46,580 --> 00:06:50,930 Il piano più recente era stato quello di smettere scuola e formare una società di software. 154 00:06:50,930 --> 00:06:53,440 Allen aveva lasciato Washington State University. 155 00:06:53,440 --> 00:06:58,380 Ma all'ultimo minuto, Gates ha deciso di attaccare con Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: Quel giorno, attraversando Harvard Piazza, Allen individuato il mese di gennaio, 157 00:07:02,080 --> 00:07:07,530 1975 numero di Popular Electronics con il titolo arresto terra, 158 00:07:07,530 --> 00:07:11,900 Kit di primo minicomputer del mondo per rivaleggiare con modelli commerciali. 159 00:07:11,900 --> 00:07:14,430 Sotto il titolo era una foto di una piccola scatola 160 00:07:14,430 --> 00:07:16,160 ornata con luci e interruttori. 161 00:07:16,160 --> 00:07:19,770 E 'stato chiamato il MITS Altair 8800. 162 00:07:19,770 --> 00:07:24,100 E Allen sapeva che questo era quello che stava cercando. 163 00:07:24,100 --> 00:07:26,350 >> HIKARI: Giorni di discussione seguita. 164 00:07:26,350 --> 00:07:30,170 Allen e Gates capito la significato della Altair. 165 00:07:30,170 --> 00:07:32,480 Avevano parlato spesso su microprocessori 166 00:07:32,480 --> 00:07:35,250 e sono stati in attesa di vedere cosa verrebbe fatto con loro. 167 00:07:35,250 --> 00:07:39,770 Ora c'era un kit minicomputer su la copertina di Popular Electronics. 168 00:07:39,770 --> 00:07:42,830 E a quanto pare non aveva ancora alcun software. 169 00:07:42,830 --> 00:07:46,830 Hanno immaginato una nazione di programmatori decrescente su MITS. 170 00:07:46,830 --> 00:07:49,590 E così hanno chiamato Ed Roberts, il capo della società, 171 00:07:49,590 --> 00:07:53,330 sostenendo di avere una versione del Linguaggio di programmazione BASIC quasi pronto 172 00:07:53,330 --> 00:07:54,710 per l'Altair. 173 00:07:54,710 --> 00:07:55,570 Non lo fecero. 174 00:07:55,570 --> 00:07:58,910 Ed Roberts deve aver saputo non l'hanno fatto. 175 00:07:58,910 --> 00:08:03,170 Stava diventando 10 chiamate al giorno da persone che avevano un BASIC quasi pronto. 176 00:08:03,170 --> 00:08:05,570 E la sua risposta magazzino era, "La prima persona 177 00:08:05,570 --> 00:08:11,090 che si presenta con un lavoro BASIC ottiene il contratto. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates e Allen non aveva mai visto un Altair. 179 00:08:13,910 --> 00:08:17,600 Non avevano mai nemmeno visto la Intel 8080 microprocessore 180 00:08:17,600 --> 00:08:19,060 nel cuore della Altair. 181 00:08:19,060 --> 00:08:21,470 Ma un paio di anni prima Allen aveva scritto un programma 182 00:08:21,470 --> 00:08:25,220 su un computer mainframe che emulato il funzionamento di un precedente Intel 183 00:08:25,220 --> 00:08:26,217 microprocessore. 184 00:08:26,217 --> 00:08:28,300 E questa volta hanno avrebbe fatto la stessa cosa. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> HIKARI: Con un processore Intel 8080 manuale al suo fianco, 187 00:08:34,380 --> 00:08:37,770 Allen si sedette a un Computer di Harvard PDP-10 188 00:08:37,770 --> 00:08:42,010 e scrisse l'emulatore e software strumenti necessari per fare la programmazione. 189 00:08:42,010 --> 00:08:45,820 Nel frattempo Gates smesso di andare alle classi e si dedicò 190 00:08:45,820 --> 00:08:48,120 alla progettazione del BASIC, usando ogni trucco 191 00:08:48,120 --> 00:08:53,130 sapeva che per ottenere la dimensione al di sotto di 4 kilobyte. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAUL: in Albuquerque, Ed Roberts ricevuto una telefonata da Gates 193 00:08:55,870 --> 00:08:59,754 chiedere per i dettagli su come il Altair gestito routine specifiche. 194 00:08:59,754 --> 00:09:01,170 Nessuno aveva mai chiesto prima. 195 00:09:01,170 --> 00:09:02,670 Ed Roberts ha cominciato ad interessarsi. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> HIKARI: Con lo sviluppo strumenti e il progetto pronto, 198 00:09:07,970 --> 00:09:10,780 Gates e Allen hanno scritto il codice sul PDP-10, 199 00:09:10,780 --> 00:09:16,060 arruolando un altro studente di Harvard, Monte Davidoff, a scrivere le routine matematiche. 200 00:09:16,060 --> 00:09:19,450 Dopo una notte finale programmazione, Allen riceve un aereo 201 00:09:19,450 --> 00:09:22,970 a consegnare il loro BASIC MITS. 202 00:09:22,970 --> 00:09:25,800 Ha trascorso l'aereo cavalcare preoccuparsi. 203 00:09:25,800 --> 00:09:28,490 E torna a Cambridge Gates era preoccupante. 204 00:09:28,490 --> 00:09:32,100 Avevano provato il loro BASIC e che aveva lavorato sull'emulatore. 205 00:09:32,100 --> 00:09:35,444 Ma cosa succede se l'emulatore è stato sbagliato? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Mentre l'aereo avvicinato Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen si rese conto che il loro BASIC, ora ordinatamente contenuta 208 00:09:40,070 --> 00:09:42,460 su un piccolo rullo di perforato nastro di carta, avrebbe 209 00:09:42,460 --> 00:09:44,970 inutile senza un separato programma, chiamato un caricatore, che 210 00:09:44,970 --> 00:09:47,550 direbbe il Altair come Per vedere l'essere nastro di carta 211 00:09:47,550 --> 00:09:49,620 immesso nella macchina telescrivente. 212 00:09:49,620 --> 00:09:52,970 Tirò fuori il taccuino e rapidamente scarabocchiato giù un programma di caricamento 213 00:09:52,970 --> 00:09:56,819 in linguaggio Assembly, poi manualmente che tradotto nelle 1 e 0 214 00:09:56,819 --> 00:09:57,985 l'Altair avrebbe capito. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> HIKARI: Allen si aspettava un pulito, piccolo, azienda high tech 217 00:10:03,830 --> 00:10:05,470 gestito da uomini in giacca e cravatta. 218 00:10:05,470 --> 00:10:09,210 Quindi era sorpreso quando Roberts incontrò lui in aeroporto che sembra un ranch 219 00:10:09,210 --> 00:10:10,270 mano. 220 00:10:10,270 --> 00:10:12,070 Roberts è stato anche sorpreso. 221 00:10:12,070 --> 00:10:16,340 Quando lasciò cadere la Harvard programmatore in un hotel costoso, 222 00:10:16,340 --> 00:10:20,790 Allen ha dovuto confessare che non poteva permettersi la stanza. 223 00:10:20,790 --> 00:10:24,510 >> JAY PAUL: MITS, in sé, era situato in un centro commerciale polveroso. 224 00:10:24,510 --> 00:10:27,040 All'interno di una ingombra banco di lavoro era un Altair 225 00:10:27,040 --> 00:10:30,390 caricato con 5 kilobyte di memoria e collegati da un cavo 226 00:10:30,390 --> 00:10:32,030 ad una macchina telescrivente. 227 00:10:32,030 --> 00:10:37,200 Roberts e Chief Engineer, Bill Yates, aspettava ansiosamente 228 00:10:37,200 --> 00:10:40,660 come Allen attivata suo loader programma nel Altair. 229 00:10:40,660 --> 00:10:44,980 La telescrivente iniziato sbuffando come è tirato il nastro di carta attraverso il lettore di nastro. 230 00:10:44,980 --> 00:10:47,215 Ci sono voluti forse 15 minuti per caricare il programma. 231 00:10:47,215 --> 00:10:52,110 Poi la telescrivente bruscamente stampato un prompt di memoria, quindi un prompt pronto, 232 00:10:52,110 --> 00:10:55,340 e Allen cominciò a digitare Comandi di alcuni test. 233 00:10:55,340 --> 00:10:57,400 Per lo stupore di tutti, il software ha funzionato. 234 00:10:57,400 --> 00:10:58,525 C'erano degli insetti, naturalmente. 235 00:10:58,525 --> 00:11:02,070 Ma la cosa principale era ha funzionato. 236 00:11:02,070 --> 00:11:06,570 >> HIKARI: Più tardi, nel loro cammino verso una 3,00 dollari pranzo a Pancho di una vespa volò 237 00:11:06,570 --> 00:11:10,470 nella finestra del pickup camion e punse Allen sul braccio. 238 00:11:10,470 --> 00:11:13,070 Ma a quel punto nulla potrebbe rovinare l'umore. 239 00:11:13,070 --> 00:11:17,210 L'Altair ora aveva il suo BASIC, il primo software commerciale per una casa 240 00:11:17,210 --> 00:11:23,260 del computer, fatta da Paul Allen e Bill Gates, fare affari come Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> DAVID J. MALAN: Molti grazie ai nostri due lettori. 242 00:11:25,336 --> 00:11:30,690 >> [Applausi] 243 00:11:30,690 --> 00:11:32,520 >> DAVID J. MALAN: Ora avete la vostra scelta, 244 00:11:32,520 --> 00:11:35,880 prima di partire, di una scintillante o un bagliore nel dark-- oh, 245 00:11:35,880 --> 00:11:40,810 attendere un sec, wait-- scintillante e un bagliore nel buio elefante 246 00:11:40,810 --> 00:11:42,534 da di CS50 proprio Cheng Gong. 247 00:11:42,534 --> 00:11:43,450 HIKARI: Aw, grazie. 248 00:11:43,450 --> 00:11:45,324 DAVID J. MALAN: Tutti a destra, grazie mille. 249 00:11:45,324 --> 00:11:49,855 [Applausi] 250 00:11:49,855 --> 00:11:51,105 DAVID J. MALAN: Così vera storia. 251 00:11:51,105 --> 00:11:54,380 Questo per dire che tutti questi macchine e la facilità con cui si 252 00:11:54,380 --> 00:11:56,270 usarli subito e prendere per scontato, davvero 253 00:11:56,270 --> 00:12:00,070 iniziato qui, a pochi passi da questo teatro reale. 254 00:12:00,070 --> 00:12:03,930 E ora oggi, se non siete stati, questo è Maxwell Dworkin, il computer 255 00:12:03,930 --> 00:12:05,810 scienze edificio, anche dietro l'angolo. 256 00:12:05,810 --> 00:12:09,760 E al secondo piano di questo edificio fa appendere tre pagine 257 00:12:09,760 --> 00:12:12,740 dal codice sorgente originale che Bill Gates e Paul Allen ha scritto. 258 00:12:12,740 --> 00:12:14,770 In effetti, se l'uso si zoom in è possibile vedere non solo 259 00:12:14,770 --> 00:12:17,350 i loro nomi nella tipo di originale, ma anche 260 00:12:17,350 --> 00:12:22,100 le loro firme che adornavano un alcuni anni fa, quando l'ultima visitato. 261 00:12:22,100 --> 00:12:25,800 >> Ma ciò che è stato particolarmente convincente questo è ciò che si prefiggono di fare 262 00:12:25,800 --> 00:12:29,760 era quello di scrivere un programma che farebbe consentire ad altre persone di scrittura 263 00:12:29,760 --> 00:12:30,950 i propri programmi. 264 00:12:30,950 --> 00:12:34,280 Al momento tutto quello che c'era con questa macchina Altair fatta da MITS. 265 00:12:34,280 --> 00:12:40,020 E tutto quello che serviva era un modo di rendendo facile per hobbisti e persone 266 00:12:40,020 --> 00:12:45,300 ci piace in questa stanza in realtà programma che senza necessariamente capire 267 00:12:45,300 --> 00:12:49,060 Codice Assembly, o macchina codice, o Dio non voglia, 0 e 1. 268 00:12:49,060 --> 00:12:51,190 Noi programmatori, come quelli in questa stanza, ci 269 00:12:51,190 --> 00:12:54,070 vogliono essere in grado di esprimere noi stessi molto più simile pseudo codice 270 00:12:54,070 --> 00:12:57,330 anche se è un po 'più nit esigente di quanto abbiamo parlato la settimana scorsa. 271 00:12:57,330 --> 00:13:00,970 Non vogliamo scrivere codice come questo, che Paul Allen e Bill Gates ha fatto. 272 00:13:00,970 --> 00:13:04,850 Noi, invece, vogliamo scrivere codice che sembra un po 'più user friendly. 273 00:13:04,850 --> 00:13:07,150 >> Ora, questo è un linguaggio noto come BASIC. 274 00:13:07,150 --> 00:13:11,497 E i numeri di riga sono ciò che si utilizzare per numerare semplicemente le righe di codice 275 00:13:11,497 --> 00:13:12,330 che si sta scrivendo. 276 00:13:12,330 --> 00:13:14,038 Non hanno nemmeno bisogno di farlo in questi giorni. 277 00:13:14,038 --> 00:13:16,060 Ma si può vedere qui come PRINT "ciao, mondo" 278 00:13:16,060 --> 00:13:18,660 sarebbe davvero presumibilmente stampare proprio questo. 279 00:13:18,660 --> 00:13:22,710 E così quello che Bill e Paul fatto è stato permettere alle persone di scrivere codice come questo 280 00:13:22,710 --> 00:13:27,240 invece di-- se si dà un'occhiata al informatica wall-- codice come questo. 281 00:13:27,240 --> 00:13:29,290 >> In realtà, CS50 recente avuto l'opportunità 282 00:13:29,290 --> 00:13:32,540 di sedersi con il professor Harry Lewis nel Computer Science Department, che 283 00:13:32,540 --> 00:13:34,640 effettivamente insegnato Bill Gates alcuni anni fa, 284 00:13:34,640 --> 00:13:38,460 ed è qui in piedi davanti quelle tre pagine di estratti. 285 00:13:38,460 --> 00:13:39,560 Diamo uno sguardo. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: Quello che abbiamo qui è un quotazione di un pezzo precoce di software 287 00:13:45,520 --> 00:13:50,240 scritto da Bill Gates e Paul Allen, i fondatori di Microsoft. 288 00:13:50,240 --> 00:13:52,570 Quindi il codice è interessante per due ragioni. 289 00:13:52,570 --> 00:13:55,480 Prima di tutto, è diventato Primo prodotto di Microsoft, 290 00:13:55,480 --> 00:14:01,810 che era un interprete per il linguaggio di programmazione BASIC. 291 00:14:01,810 --> 00:14:04,940 E in secondo luogo, questo è stato uno dei primi tentativi 292 00:14:04,940 --> 00:14:10,580 per creare un interprete così ordinario persone potrebbero utilizzare i personal computer. 293 00:14:10,580 --> 00:14:12,670 >> Così Bill Gates è stato un laurea ad Harvard. 294 00:14:12,670 --> 00:14:14,820 Ho iniziato a insegnare ad Harvard nel 1974. 295 00:14:14,820 --> 00:14:16,560 Ciò è stato fatto nel 1975. 296 00:14:16,560 --> 00:14:20,180 Così è stato all'inizio della sua carriera e all'inizio della mia carriera. 297 00:14:20,180 --> 00:14:23,790 Io in realtà insegnato Bill in un corso in questo periodo. 298 00:14:23,790 --> 00:14:27,130 Paul Allen non era un Harvard studente, ma ha 299 00:14:27,130 --> 00:14:31,020 era stato un liceo compagno di classe di Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Se venite e guardate al profilo, avrete 301 00:14:33,740 --> 00:14:36,230 effettivamente trovare una terza nome, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 che era compagno di classe di Gates qui a Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, quindi ecco un interessante commento qui. 304 00:14:41,340 --> 00:14:47,150 Si dice "In 4K può cancellare radice quadrata ma per cicli dovrebbe ancora funzionare. " 305 00:14:47,150 --> 00:14:53,080 OK, allora ciò significa che non ci sono due modi per compilare questo programma. 306 00:14:53,080 --> 00:14:57,860 Uno era per funzionare su una versione di questo computer Altair 307 00:14:57,860 --> 00:15:04,310 che aveva solo 4K parole di memoria, 4.096 parole di memoria. 308 00:15:04,310 --> 00:15:07,050 Ma la versione grande aveva 8K. 309 00:15:07,050 --> 00:15:09,770 E quindi cosa dice questo è che nella versione 4K 310 00:15:09,770 --> 00:15:12,770 si doveva eliminare alcuni codice per renderlo in forma. 311 00:15:12,770 --> 00:15:14,790 E una delle cose che saranno eliminati 312 00:15:14,790 --> 00:15:16,290 sarebbe la routine di radice quadrata. 313 00:15:16,290 --> 00:15:20,360 Ma a quanto pare il cicli for dovrebbe ancora 314 00:15:20,360 --> 00:15:26,392 funzionare anche quando si sta compilando giù solo per la versione 4K del computer. 315 00:15:26,392 --> 00:15:29,350 DAVID J. MALAN: Così uno dei temi, come vedremo in informatica, 316 00:15:29,350 --> 00:15:31,430 è questa nozione di stratificazione e astrazione, 317 00:15:31,430 --> 00:15:34,670 e davvero in piedi sulle spalle di persone che sono venuti prima di noi, non 318 00:15:34,670 --> 00:15:37,890 a differenza di alcuni dei Bill Gates e Paul Allen narrativa qui. 319 00:15:37,890 --> 00:15:40,080 E ciò significa che oggi possiamo dare per 320 00:15:40,080 --> 00:15:43,490 concesso che le cose sono in realtà più facile per noi di scrivere codice. 321 00:15:43,490 --> 00:15:47,170 Infatti il ​​codice, come abbiamo detto il Venerdì, è più tecnicamente noto come codice sorgente. 322 00:15:47,170 --> 00:15:52,210 Ed è questo l'inglese come sintassi che è più corretta e più ben definito 323 00:15:52,210 --> 00:15:55,480 di qualcosa come pseudo codice, per che non esiste una definizione formale. 324 00:15:55,480 --> 00:15:58,320 >> E oggi che cosa stiamo andando di concentrarsi su è il codice sorgente 325 00:15:58,320 --> 00:16:01,010 che assomiglia a questo, che certamente a prima vista 326 00:16:01,010 --> 00:16:02,690 sembra completamente criptico. 327 00:16:02,690 --> 00:16:08,540 E, francamente, è il modo più esteticamente complesso di quanto il programma sottostante è. 328 00:16:08,540 --> 00:16:13,300 Tutto questo programma fa, richiamo, è che cosa abbiamo detto? 329 00:16:13,300 --> 00:16:14,990 Essa si limita a stampare "ciao mondo". 330 00:16:14,990 --> 00:16:19,600 Eppure guardate tutte le cose abbiamo bisogno avvolgere intorno a quel molto semplice frase. 331 00:16:19,600 --> 00:16:21,750 Ma prima di tutto di queste righe e più 332 00:16:21,750 --> 00:16:24,800 renderà molto più senso per voi. 333 00:16:24,800 --> 00:16:26,940 >> E il flusso è il seguente. 334 00:16:26,940 --> 00:16:31,220 Quello che dobbiamo a nostra disposizione è quello di prendere il codice, come sorgente 335 00:16:31,220 --> 00:16:32,340 codice che abbiamo appena visto. 336 00:16:32,340 --> 00:16:35,060 E abbiamo bisogno di un nuovo programma a correre attraverso. 337 00:16:35,060 --> 00:16:39,130 Abbiamo bisogno di algoritmi che possono convertire il codice sorgente, come questo, 338 00:16:39,130 --> 00:16:41,932 in codice oggetto, 0 e 1. 339 00:16:41,932 --> 00:16:43,890 In altre parole, ciò stiamo andando a imparare oggi 340 00:16:43,890 --> 00:16:46,620 è come fare questo, scrivere codice sorgente sulla parte superiore, 341 00:16:46,620 --> 00:16:49,930 passarla come ingresso ad una speciale programma noto come un compilatore, 342 00:16:49,930 --> 00:16:52,140 e stiamo andando a produrre codice oggetto. 343 00:16:52,140 --> 00:16:54,600 Che è solo un modo elegante di dicendo che prenderemo qualcosa 344 00:16:54,600 --> 00:16:58,350 che assomiglia a questo, passare in un programma chiamato compilatore, 345 00:16:58,350 --> 00:17:01,210 la produzione di codice oggetto che assomiglia a questo. 346 00:17:01,210 --> 00:17:04,720 >> Quindi questi sono letteralmente i modelli di 0 e 1 347 00:17:04,720 --> 00:17:08,550 che sono comprese da un Computer di Intel in questi giorni, 348 00:17:08,550 --> 00:17:12,480 che se interpretato dalla CPU, i cervelli all'interno di un computer, 349 00:17:12,480 --> 00:17:16,130 letteralmente stampare, molto semplicemente, "ciao mondo". 350 00:17:16,130 --> 00:17:19,670 Ora c'è modo più 0 e 1 che si sarebbe la speranza potrebbe essere necessario per questo. 351 00:17:19,670 --> 00:17:22,520 Ma questo è perché stiamo costruendo su una buona dose di complessità 352 00:17:22,520 --> 00:17:24,270 che possiamo ormai dare per scontato. 353 00:17:24,270 --> 00:17:27,869 In altre parole, un sacco di persone intelligenti ci hanno dato un sacco di strumenti interessanti 354 00:17:27,869 --> 00:17:32,480 e potente software con cui abbiamo può ora fare progetti della nostra. 355 00:17:32,480 --> 00:17:33,400 >> Quindi cerchiamo di iniziare. 356 00:17:33,400 --> 00:17:36,640 Considerando che lo scorso Venerdì, e per un problema Set 0 questa settimana, 357 00:17:36,640 --> 00:17:39,000 potrai giocare in un mondo che assomiglia a questo. 358 00:17:39,000 --> 00:17:42,180 Oggi Avvio e Problem Set 1 la prossima settimana, il codice 359 00:17:42,180 --> 00:17:45,410 sta andando a guardare un po 'più criptico, ma è funzionalmente 360 00:17:45,410 --> 00:17:46,940 sarà lo stesso. 361 00:17:46,940 --> 00:17:50,770 Quindi avviso, è superiore Scratch, di fondo è C. Francamente Scratch 362 00:17:50,770 --> 00:17:52,780 è molto più user amichevole e accessibile. 363 00:17:52,780 --> 00:17:56,890 Ma se ora si confronta visivamente superiore a fondo, c'è una specie di uno a uno 364 00:17:56,890 --> 00:17:59,690 corrispondenza tra la pezzi del puzzle e la lingua 365 00:17:59,690 --> 00:18:00,870 stiamo per giocare. 366 00:18:00,870 --> 00:18:04,420 In particolare, dire, il blu pezzo di puzzle sulla parte superiore, 367 00:18:04,420 --> 00:18:08,370 è apparentemente equivalente a quello parola chiave o una frase speciale in questa lingua 368 00:18:08,370 --> 00:18:09,062 chiamato C? 369 00:18:09,062 --> 00:18:09,770 PUBBLICO: Printf. 370 00:18:09,770 --> 00:18:10,728 DAVID J. MALAN: printf. 371 00:18:10,728 --> 00:18:12,140 Ciò significa che la stampa formattata. 372 00:18:12,140 --> 00:18:15,240 E questo è solo una fantasia modo di dire printf in C 373 00:18:15,240 --> 00:18:18,615 sta per essere una dichiarazione o una funzione che consente di stampare qualcosa sullo schermo. 374 00:18:18,615 --> 00:18:19,990 Che cosa stampa sullo schermo? 375 00:18:19,990 --> 00:18:23,627 Qualunque cosa gli si dice di dentro di citazioni, all'interno di parentesi. 376 00:18:23,627 --> 00:18:25,460 Quindi, di nuovo, è vero, c'è un sacco di roba 377 00:18:25,460 --> 00:18:27,990 che devi tenere a mente, parentesi, virgolette, punti e virgola, 378 00:18:27,990 --> 00:18:28,656 e tutto questo. 379 00:18:28,656 --> 00:18:30,600 Ma tutto questo è una sorta di questo il punto. 380 00:18:30,600 --> 00:18:33,660 L'asporto interessante per ora è che il blocco di voce in Scratch 381 00:18:33,660 --> 00:18:37,520 è più o meno equivalente a printf in C. 382 00:18:37,520 --> 00:18:41,390 >> Nel frattempo, il pezzo di puzzle giallo fino in alto, quando la bandiera verde cliccato, 383 00:18:41,390 --> 00:18:44,736 è probabilmente equivalente a quanto parola chiave qui? 384 00:18:44,736 --> 00:18:45,360 PUBBLICO: principale. 385 00:18:45,360 --> 00:18:46,359 DAVID J. MALAN: So principale. 386 00:18:46,359 --> 00:18:47,410 Forse int, forse nulla. 387 00:18:47,410 --> 00:18:51,280 Ma tipo principale di suoni come è importante, e infatti lo è. 388 00:18:51,280 --> 00:18:54,080 Così, quando la bandiera verde cliccato è, ancora una volta, il pezzo del puzzle 389 00:18:54,080 --> 00:18:56,390 che prende il via un intero programma Scratch. 390 00:18:56,390 --> 00:19:02,140 Ma stiamo per ora iniziare a chiamare quella principale, questa funzione denominata principale. 391 00:19:02,140 --> 00:19:06,410 >> Ora, nel frattempo faremo generalizzare questo modo seguente. 392 00:19:06,410 --> 00:19:08,780 Potremmo dire chiamare una funzione. 393 00:19:08,780 --> 00:19:10,580 E potrebbe guardare in particolare come questo. 394 00:19:10,580 --> 00:19:11,770 Beh, che dire loop? 395 00:19:11,770 --> 00:19:16,540 Se vogliamo iniziare la conversione o traducendo più in Scratch a C, 396 00:19:16,540 --> 00:19:19,400 questa cosa qui apparentemente appena dice "ciao mondo" per sempre. 397 00:19:19,400 --> 00:19:23,060 Quindi, se si associa questi script con un gatto in Scratch, 398 00:19:23,060 --> 00:19:26,560 sta solo andando a continuare a dire in una sorta di bolla, 399 00:19:26,560 --> 00:19:29,922 "Ciao mondo, ciao mondo, ciao mondo ", fino alla nausea, per sempre. 400 00:19:29,922 --> 00:19:33,130 Se vogliamo fare qualcosa di simile in C, è andare a guardare un po 'criptico. 401 00:19:33,130 --> 00:19:35,463 Ma siamo in grado di ottenere lo stesso risultati, come vedremo alla fine 402 00:19:35,463 --> 00:19:36,861 scoprire, con una sintassi come questo. 403 00:19:36,861 --> 00:19:39,360 Ho intenzione di utilizzare di nuovo printf, perché alla fine della giornata 404 00:19:39,360 --> 00:19:42,040 Voglio stampare "ciao mondo". 405 00:19:42,040 --> 00:19:45,610 E sto a quanto pare con un parola chiave che non è per sempre. 406 00:19:45,610 --> 00:19:47,320 E 'invece la parola tempo. 407 00:19:47,320 --> 00:19:49,650 Ma solo semanticamente in Inglese, mentre il tipo di 408 00:19:49,650 --> 00:19:52,120 suggerisce una sorta di loop o ciclo. 409 00:19:52,120 --> 00:19:55,070 >> Quindi, che sembra essere la parola chiave che C utilizza. 410 00:19:55,070 --> 00:20:00,700 E se è vero, perché lo fa mentre vere efficacemente significa per sempre? 411 00:20:00,700 --> 00:20:04,240 Ebbene, mentre, come vedremo presto apprezzare ancor più, 412 00:20:04,240 --> 00:20:08,140 ha questo tra parentesi accanto ad esso dove si può mettere una espressione booleana. 413 00:20:08,140 --> 00:20:11,360 E fintanto che espressione è vera, questo codice, 414 00:20:11,360 --> 00:20:14,750 come indicato tra queste due parentesi graffe, come li chiameremo, 415 00:20:14,750 --> 00:20:16,880 sarà solo continuare a correre ancora e ancora. 416 00:20:16,880 --> 00:20:18,410 >> Tant'è vero è vero. 417 00:20:18,410 --> 00:20:20,900 Così, mentre i veri mezzi basta fare questo per sempre. 418 00:20:20,900 --> 00:20:23,480 E 'quasi una stupida costruire per esprimere se stessi. 419 00:20:23,480 --> 00:20:26,590 Ma non ci fu per sempre parola chiave in C. Non c'era tempo. 420 00:20:26,590 --> 00:20:29,390 E c'era una molto semplice Espressione booleana come true. 421 00:20:29,390 --> 00:20:32,210 E così questo, vedremo, ottiene lo stesso risultato. 422 00:20:32,210 --> 00:20:33,890 >> In quale altro modo si potrebbe implementare un ciclo? 423 00:20:33,890 --> 00:20:36,980 Beh, in Scratch si potrebbe codificare un numero specifico 424 00:20:36,980 --> 00:20:39,430 di iterazioni nel ciclo qui. 425 00:20:39,430 --> 00:20:43,210 E così questo è esattamente quello che abbiamo potrebbe fare in questa versione di C, 426 00:20:43,210 --> 00:20:46,140 per cui abbiamo un cosiddetto ciclo for. 427 00:20:46,140 --> 00:20:49,850 E il ciclo for qui sta per scorrere, un po 'criptico, 428 00:20:49,850 --> 00:20:54,100 dal valore 0 sul piano ma inferiore a 10. 429 00:20:54,100 --> 00:20:55,955 >> Ora variabili in Scratch. 430 00:20:55,955 --> 00:20:57,830 Non potrebbe avere avuto occasione del loro utilizzo. 431 00:20:57,830 --> 00:21:02,516 Ma qual è il punto, in generale, di una variabile abbiamo detto la settimana scorsa? 432 00:21:02,516 --> 00:21:03,015 Che cos'è? 433 00:21:03,015 --> 00:21:03,780 >> PUBBLICO: Punti. 434 00:21:03,780 --> 00:21:05,200 >> DAVID J. MALAN: Per il punto? 435 00:21:05,200 --> 00:21:05,700 Oh, punti. 436 00:21:05,700 --> 00:21:07,620 OK, tenere traccia dei punti, per esempio, in un gioco. 437 00:21:07,620 --> 00:21:09,510 O più in generale fare quello che con il variabile? 438 00:21:09,510 --> 00:21:10,450 Qual è l'utilità di loro? 439 00:21:10,450 --> 00:21:10,825 >> PUBBLICO: Memoria. 440 00:21:10,825 --> 00:21:11,750 >> DAVID J. MALAN: Sì, così la memoria. 441 00:21:11,750 --> 00:21:13,000 E 'per memorizzare qualcosa. 442 00:21:13,000 --> 00:21:17,336 E il tipo di sciocco I visivo usato l'ultima volta era come questa ciotola di vetro. 443 00:21:17,336 --> 00:21:19,710 E se volessimo memorizzare qualcosa all'interno di una variabile, 444 00:21:19,710 --> 00:21:21,918 per esempio in questo momento il valore è sei, perché ci 445 00:21:21,918 --> 00:21:23,450 sono sei palline da ping pong in qui. 446 00:21:23,450 --> 00:21:26,158 E 'solo una specie di stoccaggio contenitore che sotto la cappa 447 00:21:26,158 --> 00:21:30,030 è realizzato con bit, 0 e 1, tuttavia un computer capita di farlo. 448 00:21:30,030 --> 00:21:32,900 >> Quindi, in Scratch, se vogliono avere una variabile, 449 00:21:32,900 --> 00:21:34,840 possiamo utilizzare un blocco arancione come questo. 450 00:21:34,840 --> 00:21:37,050 Chiameremo quel contatore in questo caso particolare. 451 00:21:37,050 --> 00:21:38,890 Ho inizializzato a 0. 452 00:21:38,890 --> 00:21:41,080 E ciò che io allora faccio? 453 00:21:41,080 --> 00:21:44,780 Per sempre, dire contatore, che se si gioca con quella in Scratch, 454 00:21:44,780 --> 00:21:45,780 ti basta vedere Scratch. 455 00:21:45,780 --> 00:21:49,920 Il gatto o qualunque costume si indossa lui parlerà il numero in questione. 456 00:21:49,920 --> 00:21:52,840 >> Modifica contatore da 1 è come incrementare di 1. 457 00:21:52,840 --> 00:21:56,580 E così questo sta per contare da che cosa allora? 458 00:21:56,580 --> 00:21:59,114 Da 0 fino all'infinito, o fino a quando si rompe Scratch, 459 00:21:59,114 --> 00:22:01,030 o fino a che tipo di perdere interesse nel guardare 460 00:22:01,030 --> 00:22:02,650 quanto in alto si può effettivamente contare. 461 00:22:02,650 --> 00:22:04,800 >> Così come potremmo convertire questo a C? 462 00:22:04,800 --> 00:22:06,480 Sta andando a guardare un po 'criptico. 463 00:22:06,480 --> 00:22:08,896 Ma ancora una volta, se si guarda a ogni di queste linee singolarmente 464 00:22:08,896 --> 00:22:10,410 che tipo di formazione in generale. 465 00:22:10,410 --> 00:22:13,526 Quindi, apparentemente int sta per avere qualche significato speciale in C. 466 00:22:13,526 --> 00:22:14,400 Vedremo ancora una volta che. 467 00:22:14,400 --> 00:22:15,810 Per inciso significa intero. 468 00:22:15,810 --> 00:22:16,990 Quindi significa solo numero. 469 00:22:16,990 --> 00:22:18,920 Ecco, questo è il tipo di ciotola di vetro che voglio, uno 470 00:22:18,920 --> 00:22:21,120 che può memorizzare i numeri, non il ping pong palline. 471 00:22:21,120 --> 00:22:25,520 E ho intenzione di utilizzare il segno di uguale lì per assegnare un valore di 0. 472 00:22:25,520 --> 00:22:29,440 Ecco, questo è abbastanza come set contatore a 0, ma in C. 473 00:22:29,440 --> 00:22:32,840 >> Nel frattempo, mentre il vero, che è stato equivalente, naturalmente, per sempre, 474 00:22:32,840 --> 00:22:35,980 anche se è un po 'criptico, e poi all'interno delle parentesi graffe. 475 00:22:35,980 --> 00:22:39,188 E si può pensare di queste parentesi graffe, che è possibile digitare sulla tastiera, 476 00:22:39,188 --> 00:22:43,110 come davvero essere come la curvatura in questi blocchi ciclo gialli in Scratch. 477 00:22:43,110 --> 00:22:45,700 Esso comprende più righe di codice. 478 00:22:45,700 --> 00:22:48,120 >> Printf sta ottenendo un po 'paura ora perché 479 00:22:48,120 --> 00:22:51,120 vedi cita non solo tra parentesi. 480 00:22:51,120 --> 00:22:55,160 Ma cosa c'è di nuovo sintatticamente in questo esempio? 481 00:22:55,160 --> 00:22:57,300 C'è una percentuale d. 482 00:22:57,300 --> 00:22:58,551 E poi backslash n è lì. 483 00:22:58,551 --> 00:23:00,883 Abbiamo visto che prima, anche anche se non ho menzionato esso. 484 00:23:00,883 --> 00:23:01,886 Poi c'è una virgola. 485 00:23:01,886 --> 00:23:03,010 E poi c'è un contatore. 486 00:23:03,010 --> 00:23:05,010 >> Ma vedremo in un momento che questo è solo 487 00:23:05,010 --> 00:23:09,080 un modo standard di dire una stampa "Numero decimale", citazione, unquote, 488 00:23:09,080 --> 00:23:10,500 un numero decimale. 489 00:23:10,500 --> 00:23:13,370 Ma ho intenzione di dirvi più tardi cosa che il numero decimale è. 490 00:23:13,370 --> 00:23:16,835 Quindi il fatto che ci sia una virgola in questa linea dicendo printf, 491 00:23:16,835 --> 00:23:18,710 significa andare avanti e di stampa un numero decimale. 492 00:23:18,710 --> 00:23:23,110 Oh, e dal modo, il numero è qualunque sia il valore di questa variabile è. 493 00:23:23,110 --> 00:23:25,880 E così per renderlo più chiaro, vedremo un esempio 494 00:23:25,880 --> 00:23:30,930 prima lungo che coinvolge esattamente printf nel contesto dei programmi reali C. 495 00:23:30,930 --> 00:23:33,472 >> Ora basta avvolgere un po ' di questi costrutti. 496 00:23:33,472 --> 00:23:36,680 Espressioni booleane, non si potrebbe avere occasione di utilizzare questi nel vostro programma 497 00:23:36,680 --> 00:23:39,450 ma si potrebbe molto bene, soprattutto se si utilizza condizioni. 498 00:23:39,450 --> 00:23:43,460 E così questi due esempi di Gratta dire se x è minore di y, 499 00:23:43,460 --> 00:23:48,770 o se x è minore di y ed y è minore di z, come potremmo tradurre questo? 500 00:23:48,770 --> 00:23:50,810 >> Beh, in C è solo andando a guardare come questo. 501 00:23:50,810 --> 00:23:55,300 Un po 'criptiche, più parentesi, alcuni strani e commerciali, ma fondamentalmente 502 00:23:55,300 --> 00:23:59,160 le idee sono così semplici come sono nel mondo pezzo di puzzle. 503 00:23:59,160 --> 00:24:02,690 Stiamo semplicemente controllando se qualcosa è inferiore a qualcos'altro. 504 00:24:02,690 --> 00:24:03,910 >> Come sulle condizioni? 505 00:24:03,910 --> 00:24:09,710 In poche parole in inglese, cosa fa questo pezzo di codice Scratch ne diresti? 506 00:24:09,710 --> 00:24:11,050 >> PUBBLICO: Confronta due numeri. 507 00:24:11,050 --> 00:24:13,760 >> DAVID J. MALAN: Confronta due numeri, e se x è minore di y 508 00:24:13,760 --> 00:24:14,860 si dice tanto. 509 00:24:14,860 --> 00:24:18,080 Se x è maggiore di y si dice tanto, altro 510 00:24:18,080 --> 00:24:20,740 se x è uguale a y dice tanto. 511 00:24:20,740 --> 00:24:22,180 Ora, da dove x e y vengono? 512 00:24:22,180 --> 00:24:22,680 Chi lo sa. 513 00:24:22,680 --> 00:24:25,380 Questo pezzo di Scratch codice è fuori contesto. 514 00:24:25,380 --> 00:24:29,050 Ma quello che vogliamo fare ora è tradurre questo solo per un momento a vedere. 515 00:24:29,050 --> 00:24:31,660 >> Così come si ottiene agio questa settimana in Problem Set 516 00:24:31,660 --> 00:24:34,190 0 giocando in questo mondo sulla sinistra, realizzare 517 00:24:34,190 --> 00:24:36,940 che le idee non cambiano questa settimana o la prossima o al di là. 518 00:24:36,940 --> 00:24:38,690 Stiamo semplicemente andando a iniziare a scrivere cose 519 00:24:38,690 --> 00:24:41,240 in modo diverso con il nostro tastiera invece del nostro mouse. 520 00:24:41,240 --> 00:24:44,577 >> Quindi, se x è minore di y, e c'è qualche parentesi lì, 521 00:24:44,577 --> 00:24:47,160 poi ci sono alcune parentesi graffe di nuovo al tipo di incapsulare esso 522 00:24:47,160 --> 00:24:48,970 proprio come i pezzi del puzzle giallo fanno. 523 00:24:48,970 --> 00:24:53,000 E ho intenzione di printf x è minore di y e così via. 524 00:24:53,000 --> 00:24:56,540 >> Ciò che è bello su C, come potete vedere qui, 525 00:24:56,540 --> 00:25:00,480 è che non si ottiene questo nidificazione, nidificazione, nidificazione che è necessariamente 526 00:25:00,480 --> 00:25:02,220 andando a spingere il codice a destra. 527 00:25:02,220 --> 00:25:04,990 È invece può avere tutto scaletta ordinatamente piace questo. 528 00:25:04,990 --> 00:25:08,960 Ma questo è solo un valore estetico dettaglio vedremo di nuovo in poco tempo. 529 00:25:08,960 --> 00:25:09,660 >> Bene. 530 00:25:09,660 --> 00:25:13,290 Quindi, che ci riporta al questo criptico programma cercando. 531 00:25:13,290 --> 00:25:15,180 Facciamo in realtà scrivere del codice. 532 00:25:15,180 --> 00:25:16,830 Ora come si fa a scrivere codice? 533 00:25:16,830 --> 00:25:21,310 In tutti questi anni che ho posseduto un Mac o un PC, desktop o portatile, 534 00:25:21,310 --> 00:25:24,520 hai effettivamente avuto la possibilità per iniziare a scrivere codice di programmazione. 535 00:25:24,520 --> 00:25:27,050 Ma probabilmente stai manca un tipo speciale di programma. 536 00:25:27,050 --> 00:25:28,470 Si può certamente scrivere codice. 537 00:25:28,470 --> 00:25:30,740 Ma non si può necessariamente, fuori dalla scatola, 538 00:25:30,740 --> 00:25:34,210 convertire il codice sorgente in codice oggetto, 0 e 1 539 00:25:34,210 --> 00:25:35,619 senza che sul vostro computer? 540 00:25:35,619 --> 00:25:36,410 PUBBLICO: Compiler. 541 00:25:36,410 --> 00:25:37,630 DAVID J. MALAN: Così un compilatore, a destra. 542 00:25:37,630 --> 00:25:39,730 Ora la maggior parte di voi probabilmente non possiedono un compilatore, 543 00:25:39,730 --> 00:25:41,259 non hanno mai scaricato un compilatore. 544 00:25:41,259 --> 00:25:44,300 Ma vedrete potete scaricarlo come la maggior parte qualsiasi altro pezzo di software. 545 00:25:44,300 --> 00:25:47,470 Nel mondo di Mac OS, si potrebbe scaricare o hanno scaricato già 546 00:25:47,470 --> 00:25:50,437 qualcosa chiamato Xcode o GCC o Clang. 547 00:25:50,437 --> 00:25:52,270 Se si proviene da Finestre mondo si potrebbe 548 00:25:52,270 --> 00:25:56,190 hanno scaricato Visual Studio, Visual Basic ambienti del genere. 549 00:25:56,190 --> 00:25:59,200 Ci sono decine di compilatori in questi giorni che si potrebbe utilizzare. 550 00:25:59,200 --> 00:26:01,940 Ma il corto di esso qui è che sarebbe un dolore 551 00:26:01,940 --> 00:26:04,480 e, francamente, un tecnologico incubo per centinaia 552 00:26:04,480 --> 00:26:07,680 di persone di varia configurazioni dei computer a tutti 553 00:26:07,680 --> 00:26:09,800 configurare le loro macchine esattamente nello stesso modo 554 00:26:09,800 --> 00:26:11,700 in modo che possiamo essere tutti sulla stessa pagina. 555 00:26:11,700 --> 00:26:15,240 >> Quindi quello che, invece, facciamo in CS50 è vi diamo 556 00:26:15,240 --> 00:26:18,349 un ambiente standard, un Ambiente Linux che è 557 00:26:18,349 --> 00:26:20,140 andando a guardare un po ' qualcosa di simile. 558 00:26:20,140 --> 00:26:22,980 Vedrete più di questo nel Problema Set 1 specifica che 559 00:26:22,980 --> 00:26:25,330 andrà on-line questo Venerdì sera. 560 00:26:25,330 --> 00:26:28,360 >> E che cosa significa è che d'ora in poi 561 00:26:28,360 --> 00:26:32,060 stanno per essere in grado di scaricare e installare un programma 562 00:26:32,060 --> 00:26:33,650 chiamato CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 E si sta andando a scaricare e installare un altro programma chiamato 564 00:26:36,275 --> 00:26:40,300 un hypervisor, che è solo un modo elegante per raggiungere tale obiettivo. 565 00:26:40,300 --> 00:26:44,600 Se possedete un Mac o PC o una Computer Linux o un computer Solaris, 566 00:26:44,600 --> 00:26:46,830 o qualsiasi altra cosa operativo pazzo sistema che si sta eseguendo, 567 00:26:46,830 --> 00:26:49,820 hai intenzione di scaricare un programma chiamato hypervisor che è 568 00:26:49,820 --> 00:26:53,350 andare a correre il CS50 Appliance sul tuo computer 569 00:26:53,350 --> 00:26:55,430 non importa quale sia il sistema operativo è. 570 00:26:55,430 --> 00:27:00,640 Un hypervisor in altre parole converte la nostra roba per qualsiasi lingua, 571 00:27:00,640 --> 00:27:03,850 qualunque istruzioni tuoi proprio calcolatore capisce. 572 00:27:03,850 --> 00:27:04,962 >> Quindi questa è una stratificazione. 573 00:27:04,962 --> 00:27:06,920 E di nuovo, questo è una specie di tematiche di computer 574 00:27:06,920 --> 00:27:08,722 la scienza, la costruzione in cima delle cose. 575 00:27:08,722 --> 00:27:09,680 Si potrebbe avere di Windows. 576 00:27:09,680 --> 00:27:10,710 Si potrebbe avere Mac OS. 577 00:27:10,710 --> 00:27:12,960 Ma a partire dalla prossima settimana sei andando a hanno scaricato 578 00:27:12,960 --> 00:27:14,980 un software gratuito chiamato hypervisor. 579 00:27:14,980 --> 00:27:17,800 Stai andando a hanno scaricato un pezzo di software chiamato CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Che sta andando a correre in hypervisor, che sta per eseguire sul computer. 581 00:27:21,050 --> 00:27:23,030 E il risultato finale è che tutti noi 582 00:27:23,030 --> 00:27:26,220 avere una semplice finestra come questo sul vostro Mac o PC 583 00:27:26,220 --> 00:27:30,160 che ci dà l'illusione di tutti eseguire lo stesso sistema operativo, 584 00:27:30,160 --> 00:27:32,800 senza altro impatto sul vostro computer. 585 00:27:32,800 --> 00:27:34,870 E si può schermo intero e sostanzialmente comportarsi 586 00:27:34,870 --> 00:27:37,550 come se si esegue un sistema operativo chiamato Linux, 587 00:27:37,550 --> 00:27:40,270 che è ciò che il CS50 Apparecchio si riferiscono. 588 00:27:40,270 --> 00:27:42,930 >> Quindi cerchiamo di effettivamente utilizzare questo ora di scrivere un programma. 589 00:27:42,930 --> 00:27:45,450 È possibile scrivere un programma utilizzando Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 È possibile scrivere un programma utilizzando TextEdit o Notepad, 591 00:27:48,160 --> 00:27:51,880 o WordPad, o praticamente qualsiasi parola programma di elaborazione hai mai usato. 592 00:27:51,880 --> 00:27:55,174 Ma la realtà è che non si dovrebbe usare veramente uno di questi programmi. 593 00:27:55,174 --> 00:27:57,840 Certamente non dovrebbe usare qualcosa di simile a Microsoft Word, che 594 00:27:57,840 --> 00:28:01,120 ha rivestimento e corsivo grassetto e font più grandi e caratteri più piccoli, 595 00:28:01,120 --> 00:28:03,560 perché il computer non lo fa preoccuparsi di tutto questo. 596 00:28:03,560 --> 00:28:05,600 Tutto il computer è andando a preoccuparsi è 597 00:28:05,600 --> 00:28:09,040 Inglese come istruzioni scritte in C. 598 00:28:09,040 --> 00:28:12,050 >> Così che cosa faremo dentro del Appliance CS50 599 00:28:12,050 --> 00:28:14,290 è utilizzare un programma liberamente disponibili, ed è 600 00:28:14,290 --> 00:28:17,360 preinstallato in questo apparecchio, chiamato Gedit. 601 00:28:17,360 --> 00:28:22,280 E Gedit è solo un super semplice editor di testo come TextEdit di Mac OS, 602 00:28:22,280 --> 00:28:26,200 come Blocco note di Windows che sta per guardare un po 'di qualcosa come questo. 603 00:28:26,200 --> 00:28:28,910 >> Quindi cerchiamo di realtà non guardare diapositive di questo. 604 00:28:28,910 --> 00:28:32,580 Ma cerchiamo di andare effettivamente in l'ambiente stesso. 605 00:28:32,580 --> 00:28:36,090 Ho intenzione di andare avanti e log in, in questo altra finestra, 606 00:28:36,090 --> 00:28:40,910 al mio CS50 Appliance, che ho pre-installato sul mio portatile qui. 607 00:28:40,910 --> 00:28:43,771 >> Si noti che, come Windows e Mac OS, è ottenuto alcuni menu. 608 00:28:43,771 --> 00:28:45,520 Come di Windows mette laggiù invece 609 00:28:45,520 --> 00:28:47,020 di Mac OS, che mette giù lì. 610 00:28:47,020 --> 00:28:48,930 Ma la realtà è che è tutti i tipi dello stesso. 611 00:28:48,930 --> 00:28:50,770 E qui è un intero mazzo di software. 612 00:28:50,770 --> 00:28:51,770 C'è Dropbox. 613 00:28:51,770 --> 00:28:54,780 C'è un sacco di accessori, programmi grafici che ti 614 00:28:54,780 --> 00:28:56,430 utilizzare in seguito nel termine per i set di problemi. 615 00:28:56,430 --> 00:28:59,650 C'è un browser web integrato in modo che questo è un computer pieno titolo 616 00:28:59,650 --> 00:29:01,240 all'interno di un computer. 617 00:29:01,240 --> 00:29:04,170 >> Ma ho intenzione di fare clic su questo più a sinistra icona bianco qui, 618 00:29:04,170 --> 00:29:05,890 che è l'icona per Gedit. 619 00:29:05,890 --> 00:29:09,650 E sta andando ad aprire una finestra che ha tre pannelli ad esso, 620 00:29:09,650 --> 00:29:12,590 uno a sinistra, uno superiore e uno inferiore. 621 00:29:12,590 --> 00:29:16,071 >> Ora è in questa top quella giusta che Ho intenzione di scrivere in realtà un po 'di codice. 622 00:29:16,071 --> 00:29:16,820 Quindi cerchiamo di fare questo ,. 623 00:29:16,820 --> 00:29:19,040 Ho intenzione di andare su File, Salva. 624 00:29:19,040 --> 00:29:22,100 E non potrebbe mai aver visto questa particolare finestra prima. 625 00:29:22,100 --> 00:29:23,620 Ma questo è come Mac OS o Windows. 626 00:29:23,620 --> 00:29:25,490 E 'solo una finestra con tutte le cartelle 627 00:29:25,490 --> 00:29:27,290 che ho dentro di questo computer. 628 00:29:27,290 --> 00:29:30,320 >> E ho intenzione di risparmiare il file come hello.c. 629 00:29:30,320 --> 00:29:32,690 E ho intenzione di andare avanti e fare clic su Salva. 630 00:29:32,690 --> 00:29:36,364 E ora notare ho una scheda in alto a sinistra chiamato hello.c. 631 00:29:36,364 --> 00:29:38,280 Quindi probabilmente abbastanza familiare, anche se non hai 632 00:29:38,280 --> 00:29:40,240 usato questo particolare programma prima. 633 00:29:40,240 --> 00:29:44,890 >> E ora vado a digitare quelle sequenza abbastanza criptico di comandi 634 00:29:44,890 --> 00:29:46,360 che abbiamo visto poco fa. 635 00:29:46,360 --> 00:29:49,330 Includere, standard I / O.h. 636 00:29:49,330 --> 00:29:50,600 Più su quello presto. 637 00:29:50,600 --> 00:29:55,670 Int void main, riccio aperto brace, chiusa parentesi graffa. 638 00:29:55,670 --> 00:30:01,570 E poi dentro ci penso è dove abbiamo avuto "ciao mondo", punto e virgola. 639 00:30:01,570 --> 00:30:03,100 E ora salva. 640 00:30:03,100 --> 00:30:08,780 >> Quindi questo è un programma scritto in C, scritta, dunque, nel codice sorgente. 641 00:30:08,780 --> 00:30:10,720 Ma non posso semplicemente eseguire questo programma. 642 00:30:10,720 --> 00:30:13,390 I tipi di voglia di raddoppiare fai clic su un'icona da qualche parte, 643 00:30:13,390 --> 00:30:16,390 ma nessuna icona esiste altro che il file di codice sorgente. 644 00:30:16,390 --> 00:30:20,359 Che, ancora una volta, è il processo, ora che Ho bisogno di eseguire questo file tramite? 645 00:30:20,359 --> 00:30:21,150 PUBBLICO: Compiler. 646 00:30:21,150 --> 00:30:22,399 DAVID J. MALAN: Così un compilatore. 647 00:30:22,399 --> 00:30:24,890 Quindi, in diversi computer si farlo in modi diversi. 648 00:30:24,890 --> 00:30:27,480 Ma quello che abbiamo fatto qui in Appliance CS50 che è 649 00:30:27,480 --> 00:30:31,260 rappresentativo di come si potrebbe fare questo su molti sistemi diversi, 650 00:30:31,260 --> 00:30:34,036 è che io sono semplicemente andando a eseguire un comando chiamato make. 651 00:30:34,036 --> 00:30:35,660 E fare è letteralmente sta per farlo. 652 00:30:35,660 --> 00:30:36,640 Fammi un programma. 653 00:30:36,640 --> 00:30:39,060 >> Quindi, fare sta per eseguire un compilatore per me. 654 00:30:39,060 --> 00:30:42,160 E il nome del programma Voglio fare è ciao. 655 00:30:42,160 --> 00:30:43,510 Ora fate è un programma. 656 00:30:43,510 --> 00:30:47,170 E fare è abbastanza intelligente per rendersi conto che se io dico fare ciao, 657 00:30:47,170 --> 00:30:50,980 è andare a guardare automaticamente per un file chiamato ciao.c 658 00:30:50,980 --> 00:30:53,420 solo perché questo è il modo in cui è configurato. 659 00:30:53,420 --> 00:31:00,300 >> Così, quando ho adesso premi invio qui, questo pazzo linea criptico appena stato eseguito. 660 00:31:00,300 --> 00:31:02,720 E credimi, prima lungo, entro pochi giorni, 661 00:31:02,720 --> 00:31:05,590 capirete che cosa tutto di quei mezzi senza senso. 662 00:31:05,590 --> 00:31:11,150 Ma per ora, è sufficiente sapere che fare esecuzione trigger di un compilatore. 663 00:31:11,150 --> 00:31:13,290 In altre parole, si pensa un compilatore sul mio computer 664 00:31:13,290 --> 00:31:14,820 che è pre-installato sul Appliance CS50 665 00:31:14,820 --> 00:31:16,560 che ci consegniamo a voi in Set Problema 1. 666 00:31:16,560 --> 00:31:20,990 E poi ha preso ciao.c come ingresso, e prodotto apparentemente 667 00:31:20,990 --> 00:31:23,040 0 e 1 come output. 668 00:31:23,040 --> 00:31:29,410 >> E per impostazione predefinita ciò che fa è salva quei 0 e 1 in un file chiamato ciao. 669 00:31:29,410 --> 00:31:33,180 E anche se questa sintassi troppo potrebbe essere una novità per voi, semplicemente dicendo dot 670 00:31:33,180 --> 00:31:37,110 tagliare ciao sta per essere il mezzo con il quale ho eseguito questo programma. 671 00:31:37,110 --> 00:31:40,360 >> Per ora e per almeno un paio di settimane, quasi tutti i programmi 672 00:31:40,360 --> 00:31:44,230 scriviamo stiamo per essere in finestre di testo in bianco e nero. 673 00:31:44,230 --> 00:31:47,006 No topi, no click, senza finestre, senza icone. 674 00:31:47,006 --> 00:31:49,630 Abbiamo intenzione di mantenere le cose semplici e concentrarsi sulle idee alla base 675 00:31:49,630 --> 00:31:52,490 inizialmente prima di arrivare a qualcosa di livello superiore, ad esempio, 676 00:31:52,490 --> 00:31:56,410 come il gioco di rottura che abbiamo parlato circa nella prima lezione la settimana scorsa. 677 00:31:56,410 --> 00:32:00,820 >> Così, quando ho colpito Inserisci qui, è equivalente in un testo unico ambiente 678 00:32:00,820 --> 00:32:03,272 al doppio clic su un'icona chiamata ciao. 679 00:32:03,272 --> 00:32:05,480 Che cosa si aspetta volontà accadere quando ho colpito Invio allora? 680 00:32:05,480 --> 00:32:07,120 >> PUBBLICO: Sarà print "ciao mondo". 681 00:32:07,120 --> 00:32:10,000 >> DAVID J. MALAN: Speriamo stamperà "ciao mondo". 682 00:32:10,000 --> 00:32:11,370 E in effetti lo ha fatto. 683 00:32:11,370 --> 00:32:13,690 Ora c'è stato un po ' sintassi criptica qui. 684 00:32:13,690 --> 00:32:15,950 Diciamo solo per riavvolgere un attimo e vedere se ci 685 00:32:15,950 --> 00:32:19,530 non può iniziare dedurre semplicemente armeggiare, cercando e non riuscendo, 686 00:32:19,530 --> 00:32:21,130 quanto a che cosa sta succedendo qui. 687 00:32:21,130 --> 00:32:23,609 Che cosa succede se mi libero del backslash n? 688 00:32:23,609 --> 00:32:25,650 Ora alcuni di voi che hanno programmato prima, probabilmente 689 00:32:25,650 --> 00:32:27,054 sanno subito cosa significa. 690 00:32:27,054 --> 00:32:29,220 Ma per quelli di voi che hanno mai programmato prima, 691 00:32:29,220 --> 00:32:34,052 almeno pensare a te stesso cosa sta succedendo a cambiare quando ho eseguire nuovamente questo programma? 692 00:32:34,052 --> 00:32:37,010 Quindi ho intenzione di tornare giù al mio finestrella bianco e nero, che 693 00:32:37,010 --> 00:32:39,290 è la finestra in cui Posso compilare questo. 694 00:32:39,290 --> 00:32:41,130 Ho intenzione di ricompilare ciao. 695 00:32:41,130 --> 00:32:43,520 Stiamo andando a vedere lo stesso sequenza di comandi criptico. 696 00:32:43,520 --> 00:32:45,719 E ho intenzione di fare barra puntino ciao. 697 00:32:45,719 --> 00:32:48,260 E ora qualcuno, se si farebbe, che non ha mai programmato prima, 698 00:32:48,260 --> 00:32:49,770 quello che potrebbe essere diverso questa volta? 699 00:32:49,770 --> 00:32:50,020 Già. 700 00:32:50,020 --> 00:32:51,840 >> PUBBLICO: Non si fermerà stampa "ciao mondo". 701 00:32:51,840 --> 00:32:52,660 >> DAVID J. MALAN: Sta andando a-- dispiace? 702 00:32:52,660 --> 00:32:54,210 >> PUBBLICO: Non si fermerà stamparlo? 703 00:32:54,210 --> 00:32:55,810 >> DAVID J. MALAN: Non sarà arrestare la stampa "ciao mondo". 704 00:32:55,810 --> 00:32:56,560 Quindi non è una cattiva idea. 705 00:32:56,560 --> 00:32:58,633 Altre idee? 706 00:32:58,633 --> 00:32:59,132 Già. 707 00:32:59,132 --> 00:33:00,060 >> PUBBLICO: Messaggio di errore? 708 00:33:00,060 --> 00:33:01,750 >> DAVID J. MALAN: Errore messaggio, OK, potrebbe essere. 709 00:33:01,750 --> 00:33:02,250 Cos'altro? 710 00:33:02,250 --> 00:33:05,479 PUBBLICO: Si potrebbe stampare il staffa con il punto e virgola come bene? 711 00:33:05,479 --> 00:33:08,270 DAVID J. MALAN: Potrebbe stampare il staffa con il punto e virgola come bene. 712 00:33:08,270 --> 00:33:11,950 Così forse che backslash allora è un po ' tipo di terminous che è importante. 713 00:33:11,950 --> 00:33:14,860 Eventuali altri pensieri? 714 00:33:14,860 --> 00:33:16,412 >> Quindi tutto buone idee. 715 00:33:16,412 --> 00:33:18,370 E in effetti, sta andando essere un messaggio di errore. 716 00:33:18,370 --> 00:33:20,400 Questo è probabilmente più probabile essere la risposta in generale 717 00:33:20,400 --> 00:33:22,420 per le prossime settimane come impariamo a codificare qui. 718 00:33:22,420 --> 00:33:27,680 >> Ma per ora ricordare che i computer fare solo ciò che gli si dice di fare. 719 00:33:27,680 --> 00:33:30,400 Molto simile al ridicolo di arachidi burro e gelatina di esempio. 720 00:33:30,400 --> 00:33:33,860 I nostri computer umani dovevano solo a fare quello che hai detto loro di fare. 721 00:33:33,860 --> 00:33:36,250 Quindi, in questo caso, se si non dire al computer 722 00:33:36,250 --> 00:33:41,190 per spostare il cursore lampeggiante che al riga successiva, non sta andando a farlo. 723 00:33:41,190 --> 00:33:45,390 Così, quando ho eseguito questo programma ora, notare la differenza. 724 00:33:45,390 --> 00:33:46,900 >> Sembra un insetto. 725 00:33:46,900 --> 00:33:49,190 Si tratta di un bug di estetica, forse. 726 00:33:49,190 --> 00:33:53,310 Ma ciò che è diverso in questa uscita verso l'ultimo ovviamente? 727 00:33:53,310 --> 00:33:53,810 Già. 728 00:33:53,810 --> 00:33:54,920 >> PUBBLICO: Non ha fatto una nuova linea. 729 00:33:54,920 --> 00:33:56,586 >> DAVID J. MALAN: Non ha fatto una nuova linea. 730 00:33:56,586 --> 00:33:58,740 Ora, quelli di voi che avere pagine web forse fatti 731 00:33:58,740 --> 00:34:01,910 prima, si potrebbe sapere della Tag BR o il tag di paragrafo, 732 00:34:01,910 --> 00:34:03,120 molto simile nello spirito. 733 00:34:03,120 --> 00:34:06,680 Un browser web ignorerà voi fino si dice esattamente cosa fare. 734 00:34:06,680 --> 00:34:10,020 Allo stesso modo, è un linguaggio come C solo intenzione di fare quello che gli si dice di fare. 735 00:34:10,020 --> 00:34:12,730 >> Quindi la ragione che tutti questi esempi, 736 00:34:12,730 --> 00:34:15,350 finora, hanno tipo di casualmente avuto questa barra rovesciata 737 00:34:15,350 --> 00:34:18,560 in là, ecco i mezzi con il quale ti esprimi 738 00:34:18,560 --> 00:34:21,380 come un carattere di nuova riga, per così dire. 739 00:34:21,380 --> 00:34:26,219 E si può tipo di apprezzare, forse, che questo apparirebbe tipo di stupido 740 00:34:26,219 --> 00:34:27,070 se non altro. 741 00:34:27,070 --> 00:34:29,150 Se volevo una nuova linea, appena premendo Invio e poi tipo 742 00:34:29,150 --> 00:34:32,219 di macellare il codice come quella non dovrebbe davvero strofinare il modo giusto. 743 00:34:32,219 --> 00:34:33,830 E anche se non lo fai veramente a cuore a questo punto, 744 00:34:33,830 --> 00:34:35,830 vi renderete conto che questo non è un particolare 745 00:34:35,830 --> 00:34:37,870 buon pezzo cercando di codice. 746 00:34:37,870 --> 00:34:39,969 >> E così ciò che il mondo anni fa, è deciso 747 00:34:39,969 --> 00:34:43,420 che quando si vuole mettere il cursore su una nuova linea in modo esplicito, 748 00:34:43,420 --> 00:34:46,332 devi dire in modo esplicito nuova linea, backslash n. 749 00:34:46,332 --> 00:34:48,040 E c'è qualche altro simboli come tale. 750 00:34:48,040 --> 00:34:50,719 Ma per ora ci limiteremo a concentrarsi sulla backslash n. 751 00:34:50,719 --> 00:34:53,790 >> Ora facciamo il programma un po 'più interessante. 752 00:34:53,790 --> 00:34:59,200 Ho intenzione di andare avanti e questa volta aprire un nuovo file. 753 00:34:59,200 --> 00:35:02,520 Io vado a salvare questo come ciao-1.c. 754 00:35:02,520 --> 00:35:05,540 E proprio per i calci, ho intenzione di andare messo nella mia cartella Dropbox. 755 00:35:05,540 --> 00:35:09,030 >> Come vedrete nel CS50 documentazione per l'apparecchio, 756 00:35:09,030 --> 00:35:11,210 entro questa settimana per il problema Set 1, ci incoraggiamo 757 00:35:11,210 --> 00:35:13,230 di utilizzare Dropbox o qualche servizio equivalente, 758 00:35:13,230 --> 00:35:15,430 perché allora tutto il codice di sta per essere eseguito il backup automaticamente. 759 00:35:15,430 --> 00:35:17,830 Ed ecco perché ho andato in questa cartella qui. 760 00:35:17,830 --> 00:35:20,230 >> E ora ho intenzione di scrivere un programma leggermente diverso. 761 00:35:20,230 --> 00:35:24,740 Includere, standard I / O.h, int void main. 762 00:35:24,740 --> 00:35:29,660 E poi qui printf, ciao mondo, che è esattamente lo stesso come prima. 763 00:35:29,660 --> 00:35:32,450 >> Ma ora voglio stampare qualcosa che è un po 'diverso. 764 00:35:32,450 --> 00:35:34,800 Voglio stampare, dire: "Ciao, David." 765 00:35:34,800 --> 00:35:37,590 Va bene, quindi ovviamente, dovrebbe auspicabilmente 766 00:35:37,590 --> 00:35:40,360 essere il caso che se io ricompilare questo programma, eseguire nuovamente esso, 767 00:35:40,360 --> 00:35:41,840 sta andando a dire "ciao, David." 768 00:35:41,840 --> 00:35:45,160 >> Ma cosa succede se voglio introdurre questo tipo di variabile, 769 00:35:45,160 --> 00:35:49,240 l'idea di un contenitore che sta succedendo per memorizzare D-un-v-i-d e non è difficile che il codice 770 00:35:49,240 --> 00:35:50,600 nel mio programma. 771 00:35:50,600 --> 00:35:53,430 Beh, quello che se comincio fare qualcosa di simile? 772 00:35:53,430 --> 00:35:57,120 >> String s, quindi questa è una variabile. 773 00:35:57,120 --> 00:36:00,250 Se si desidera una stringa, a.k.a. una parola o una frase. 774 00:36:00,250 --> 00:36:03,485 Una sequenza di caratteri è quello abbiamo in programmazione chiamiamo una stringa. 775 00:36:03,485 --> 00:36:06,610 Stiamo solo andando a genericamente chiamata it s, perché è un bel nome semplice. 776 00:36:06,610 --> 00:36:08,010 Ma potrei chiamarlo nulla. 777 00:36:08,010 --> 00:36:12,920 >> Io vado a dire eguali stringa s tra virgolette, "David," punto e virgola. 778 00:36:12,920 --> 00:36:18,330 E ora voglio inserire I-d D-un-v-in quello che sto stampa. 779 00:36:18,330 --> 00:36:23,720 E prima abbiamo visto un teaser su lo schermo di una sintassi speciale 780 00:36:23,720 --> 00:36:26,050 che ci ha permesso di sostituto in un valore. 781 00:36:26,050 --> 00:36:29,250 Qual è stata la speciale simbolo di alcune diapositive fa? 782 00:36:29,250 --> 00:36:30,040 >> Così per cento. 783 00:36:30,040 --> 00:36:33,830 A quel tempo era per cento d per numero decimale. 784 00:36:33,830 --> 00:36:35,850 Non mi sembra davvero rilevante qui. 785 00:36:35,850 --> 00:36:38,650 Si scopre che c'è un altro simbolo di percentuale, 786 00:36:38,650 --> 00:36:42,810 che è cento s, che significa per un segnaposto per una stringa. 787 00:36:42,810 --> 00:36:49,350 >> Così ora, molto semplicemente, io sono intenzione di andare fare ciao-1, 788 00:36:49,350 --> 00:36:54,210 perché questo file chiamato ciao-1.c, e premere Invio. 789 00:36:54,210 --> 00:36:56,230 E ho fatto un casino. 790 00:36:56,230 --> 00:36:57,394 Cosa sta succedendo? 791 00:36:57,394 --> 00:37:00,560 Bene, qui è dove dobbiamo cominciare a Apprezziamo il fatto che siamo in questo comando 792 00:37:00,560 --> 00:37:02,810 ambiente linea, questo testo unico ambiente. 793 00:37:02,810 --> 00:37:06,114 Non c'è click sulle icone come le cartelle in questo momento. 794 00:37:06,114 --> 00:37:07,280 E ripensare un attimo fa. 795 00:37:07,280 --> 00:37:10,740 In quale cartella ho detto Mi stavo salvando il mio codice? 796 00:37:10,740 --> 00:37:11,657 Quindi la cartella Dropbox. 797 00:37:11,657 --> 00:37:12,989 Avrebbe potuto essere chiamato nulla. 798 00:37:12,989 --> 00:37:14,530 Ma capita di essere chiamato Dropbox. 799 00:37:14,530 --> 00:37:18,380 Quindi in qualche modo bisogno di fare doppio clic su tale cartella Dropbox al fine di ottenere 800 00:37:18,380 --> 00:37:21,657 in esso e ottenere il mio codice chiamato ciao-1.c. 801 00:37:21,657 --> 00:37:24,490 In realtà, lasciami andare avanti e ridurre al minimo questa finestra solo per un momento. 802 00:37:24,490 --> 00:37:27,560 Proprio come Windows e Mac OS, ci sono cartelle in Linux. 803 00:37:27,560 --> 00:37:29,410 Ci sono cartelle nella CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 E 'solo in questo momento ci stiamo limitando noi stessi a questo ambiente testo. 805 00:37:32,380 --> 00:37:34,700 >> Ma se faccio doppio click su Dropbox, notare ci 806 00:37:34,700 --> 00:37:37,210 è il file che voglio compilare. 807 00:37:37,210 --> 00:37:41,430 Ma ho bisogno di questo in bianco e nero finestra di terminale, per così dire. 808 00:37:41,430 --> 00:37:45,750 Ma ho bisogno, quindi, di muoversi in quella cartella o directory. 809 00:37:45,750 --> 00:37:48,290 Così un po 'arcano, ma ti abitui anche a questo. 810 00:37:48,290 --> 00:37:50,430 >> Nel mondo di Linux, che è ancora operativo 811 00:37:50,430 --> 00:37:54,860 Sistema stiamo in esecuzione all'interno del CS50 Appliance, c'è un comando chiamato CD. 812 00:37:54,860 --> 00:37:58,310 Il che significa che posso fare CD, spazio, Dropbox. 813 00:37:58,310 --> 00:37:59,900 CD, cambiare directory. 814 00:37:59,900 --> 00:38:00,400 Destra. 815 00:38:00,400 --> 00:38:02,890 Indietro nel giorno in cui le persone erano inventare computer e di funzionamento 816 00:38:02,890 --> 00:38:05,806 sistemi come questo, hanno voluto digitare i tasti minor numero possibile. 817 00:38:05,806 --> 00:38:08,760 Quindi il modo più semplice per dire directory cambiamento era del CD. 818 00:38:08,760 --> 00:38:13,910 >> Quindi, se ho colpito CD, spazio Dropbox, notare ciò che è cambiato qui. 819 00:38:13,910 --> 00:38:16,480 All'interno delle parentesi l'apparecchio è di tipo 820 00:38:16,480 --> 00:38:19,360 di me assecondando e ricordarmi dove mi trovo. 821 00:38:19,360 --> 00:38:21,480 Quindi la cartella aperta è Dropbox. 822 00:38:21,480 --> 00:38:24,950 Se ora digito ls per lista, ancora una volta succinta, 823 00:38:24,950 --> 00:38:27,540 perché la gente non voleva digitare nel giorno l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Così hanno invece reso ls. 825 00:38:29,300 --> 00:38:30,110 >> Invio. 826 00:38:30,110 --> 00:38:35,740 Notate vedo due cose, ciao-1.c, e poi questa cosa criptica, fonte 1m. 827 00:38:35,740 --> 00:38:38,310 Questo è solo il mio modo di dire codice sorgente per 1 settimana Lunedi. 828 00:38:38,310 --> 00:38:42,020 Questa è una cartella che ho scaricato da Sito web di CS50 che prima di oggi ho fatto 829 00:38:42,020 --> 00:38:43,990 e appena messo in apparecchio in anticipo. 830 00:38:43,990 --> 00:38:47,550 >> Ma per ora l'unica cosa che abbiamo interessa è rendere questo programma. 831 00:38:47,550 --> 00:38:50,440 Così, quando digito fare ciao-1, Enter. 832 00:38:50,440 --> 00:38:51,320 Accidenti. 833 00:38:51,320 --> 00:38:53,060 Qualcosa è andato storto. 834 00:38:53,060 --> 00:38:54,580 Quindi cerchiamo di prendere in giro questa parte. 835 00:38:54,580 --> 00:38:58,489 E purtroppo questo è dove le cose ottenere un po 'stressante in un primo momento, 836 00:38:58,489 --> 00:39:00,280 almeno se hai mai programmato prima. 837 00:39:00,280 --> 00:39:00,980 >> Mio Dio. 838 00:39:00,980 --> 00:39:04,990 Ho scritto un programma di due linee e Ho quattro linee di errori. 839 00:39:04,990 --> 00:39:07,180 Così che cosa sta succedendo qui. 840 00:39:07,180 --> 00:39:11,370 In primo luogo scorrere sempre indietro e trovare il primo messaggio di errore, 841 00:39:11,370 --> 00:39:15,730 perché compilatori spesso solo ottenere confuso da ciò che voi e io sì. 842 00:39:15,730 --> 00:39:17,000 I compilatori sono abbastanza stupida. 843 00:39:17,000 --> 00:39:18,360 Faranno solo fare ciò che dite loro di fare. 844 00:39:18,360 --> 00:39:21,484 E se li si confondono, sono solo andando a tipo di vomitare le loro mani 845 00:39:21,484 --> 00:39:25,010 e magari lanciare più messaggi di errore che sono in realtà rilevanti. 846 00:39:25,010 --> 00:39:26,380 >> Quindi diamo un'occhiata alla prima. 847 00:39:26,380 --> 00:39:27,540 Super criptico in un primo momento. 848 00:39:27,540 --> 00:39:31,050 Ma preavviso, ecco il nome del file in cui ho avvitato a quanto pare. 849 00:39:31,050 --> 00:39:36,570 Colon 5, 5 colon significa semplicemente su linea 5 al quinto carattere. 850 00:39:36,570 --> 00:39:39,760 Così quinta colonna di caratteri, se si vuole, errore. 851 00:39:39,760 --> 00:39:41,870 L'utilizzo di stringa identificatore non dichiarato. 852 00:39:41,870 --> 00:39:43,120 Intendevi serie n? 853 00:39:43,120 --> 00:39:44,850 >> No, volevo dire stringa. 854 00:39:44,850 --> 00:39:47,640 E poi è una specie di copia e incolla 855 00:39:47,640 --> 00:39:50,700 quello che ho scritto a disegnare davvero il mio attenzione a dove ho fatto un casino. 856 00:39:50,700 --> 00:39:54,260 Così, per qualche motivo C, o almeno il compilatore 857 00:39:54,260 --> 00:39:56,470 non capisce la stringa di parola. 858 00:39:56,470 --> 00:39:57,890 E questo perché abbiamo fatto in su. 859 00:39:57,890 --> 00:40:01,440 Quindi stringa non esiste in C. Cosa CS50 fa, 860 00:40:01,440 --> 00:40:03,380 per le prime settimane solo della classe, 861 00:40:03,380 --> 00:40:05,700 è forniamo qualche formazione ruote, per così dire. 862 00:40:05,700 --> 00:40:11,160 E mettiamo queste ruote di formazione all'interno di un file speciale chiamato CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Quindi questo è il secondo di due file di nomi che apparentemente terminano in punti h. 864 00:40:14,970 --> 00:40:16,300 Facciamo riavvolgere. 865 00:40:16,300 --> 00:40:19,360 Printf è una dichiarazione o una funzione che stampa a quanto pare qualcosa 866 00:40:19,360 --> 00:40:20,580 allo schermo. 867 00:40:20,580 --> 00:40:23,470 Ma non hai visto me implementare printf, a destra. 868 00:40:23,470 --> 00:40:26,360 Qualcuno anni fa, attuate printf. 869 00:40:26,360 --> 00:40:30,420 In quale file vuoi scommettere che o ha messo l'attuazione 870 00:40:30,420 --> 00:40:34,270 per printf, il codice per printf? 871 00:40:34,270 --> 00:40:36,860 >> In un file chiamato standard di I / O.h. 872 00:40:36,860 --> 00:40:39,930 In realtà, è probabilmente in due file, standard I / O.h, 873 00:40:39,930 --> 00:40:42,650 che sta per intestazione file e standard I / O.c, 874 00:40:42,650 --> 00:40:44,060 che sta per C del codice sorgente. 875 00:40:44,060 --> 00:40:48,220 Così lui o lei qualche anno fa piazzati il codice che hanno scritto in quel file 876 00:40:48,220 --> 00:40:51,240 modo che le persone come noi anni dopo possono includere, 877 00:40:51,240 --> 00:40:53,040 per così dire, nei nostri programmi. 878 00:40:53,040 --> 00:40:56,320 >> E in effetti, questo è ciò che il segno di cancelletto seguito dalla parola comprendono fa. 879 00:40:56,320 --> 00:41:00,250 Sembra sul disco rigido locale, trova il file chiamato standard di I / O.h, 880 00:41:00,250 --> 00:41:03,840 e poi copia efficacemente e Paste all'interno del mio file. 881 00:41:03,840 --> 00:41:07,210 Così ora il mio programma sa come stampare sullo schermo. 882 00:41:07,210 --> 00:41:11,120 >> Così da questa logica, dove stringa è definita? 883 00:41:11,120 --> 00:41:12,260 >> PUBBLICO: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> DAVID J. MALAN: CS50.h. 885 00:41:13,290 --> 00:41:15,540 E in effetti, questo è quello che, il nucleo di personale, hanno fatto. 886 00:41:15,540 --> 00:41:19,590 Abbiamo inventato un paio di tipi di dati, per così dire, come una stringa, 887 00:41:19,590 --> 00:41:22,370 in aggiunta a quelle che ottenere gratuitamente, come un int. 888 00:41:22,370 --> 00:41:26,010 E vedremo altri come un char per un carattere e un paio di più. 889 00:41:26,010 --> 00:41:30,670 All'interno di CS50.h apparentemente è almeno qualche cenno di stringa. 890 00:41:30,670 --> 00:41:34,980 >> Così ora lasciami andare avanti e rieseguire make ciao-1. 891 00:41:34,980 --> 00:41:37,100 Io lo zoom di nuovo e incrocio le dita. 892 00:41:37,100 --> 00:41:41,370 Ora, avendo fatto uno cambio ho risolto la maggior parte delle cose. 893 00:41:41,370 --> 00:41:42,100 Ma porca miseria. 894 00:41:42,100 --> 00:41:44,290 Più percentuali di argomenti dati. 895 00:41:44,290 --> 00:41:45,980 Che cosa ho fatto di sbagliato questa volta? 896 00:41:45,980 --> 00:41:47,420 >> Quindi è ancora piuttosto criptico. 897 00:41:47,420 --> 00:41:51,560 Ma questo errore è accesa linea 7 e carattere 21. 898 00:41:51,560 --> 00:41:53,880 Quindi cerchiamo di andare a cercare qui. 899 00:41:53,880 --> 00:41:55,350 E 'un po' sottile. 900 00:41:55,350 --> 00:41:59,167 Ma se si pensa a cosa le idee fondamentali qui sono, 901 00:41:59,167 --> 00:42:00,500 forse possiamo prendere in giro questa parte. 902 00:42:00,500 --> 00:42:02,300 >> Quindi printf è il nome della funzione. 903 00:42:02,300 --> 00:42:04,960 Parentesi, finora, è proprio come quello che abbiamo messo in giro 904 00:42:04,960 --> 00:42:07,005 la roba stiamo passando come input per una funzione. 905 00:42:07,005 --> 00:42:08,921 Va bene, solo un arbitraria convenzione umana. 906 00:42:08,921 --> 00:42:09,919 Utilizzare le parentesi. 907 00:42:09,919 --> 00:42:12,460 All'interno di queste parentesi stiamo mettendo virgolette, 908 00:42:12,460 --> 00:42:14,810 e quindi una stringa come "ciao mondo". 909 00:42:14,810 --> 00:42:18,160 >> Ma in che nell'esempio precedente molto brevemente fatto guardiamo con Scratch. 910 00:42:18,160 --> 00:42:22,590 E abbiamo avuto la percentuale d, che altro era dentro di quelle parentesi 911 00:42:22,590 --> 00:42:23,730 che ho chiamato fuori verbalmente? 912 00:42:23,730 --> 00:42:24,230 Già. 913 00:42:24,230 --> 00:42:28,166 >> PUBBLICO: Quindi è quello che si sta prendendo [Incomprensibile] dall'interno [incomprensibile] 914 00:42:28,166 --> 00:42:30,200 ciò che questi [incomprensibile]? 915 00:42:30,200 --> 00:42:31,200 DAVID J. MALAN: Esattamente. 916 00:42:31,200 --> 00:42:32,700 Così abbiamo avuto la percentuale d. 917 00:42:32,700 --> 00:42:36,620 Ma poi abbiamo avuto vicino citazione, virgola, contatore. 918 00:42:36,620 --> 00:42:37,120 Destra. 919 00:42:37,120 --> 00:42:40,680 Abbiamo specificato quello che vogliamo di fare come segnaposto. 920 00:42:40,680 --> 00:42:44,621 Così che cosa ho intenzione di fare qui è virgola, cosa vuoi che metta? 921 00:42:44,621 --> 00:42:45,120 PUBBLICO: S. 922 00:42:45,120 --> 00:42:46,828 DAVID J. MALAN: S, perché s in questo caso 923 00:42:46,828 --> 00:42:48,700 è il nome del contenitore di stoccaggio. 924 00:42:48,700 --> 00:42:50,180 E 'il nome di quel ciotola di vetro. 925 00:42:50,180 --> 00:42:53,610 Mentre prima era contatore in quel semplice esempio Scratch abbiamo guardato. 926 00:42:53,610 --> 00:42:56,630 Così ora dopo aver fatto due modifiche, lasciatemi lo zoom in 927 00:42:56,630 --> 00:42:59,800 e prova ancora una volta a compilare questo programma. 928 00:42:59,800 --> 00:43:01,596 >> Ora vedo che la linea criptico. 929 00:43:01,596 --> 00:43:03,470 Ma questo è in realtà il nome del compilatore. 930 00:43:03,470 --> 00:43:04,886 Clang è il nome del compilatore. 931 00:43:04,886 --> 00:43:07,100 Fare è solo avermi salvato il mal di testa di sempre 932 00:43:07,100 --> 00:43:09,830 digitando il comando lunga pazzo fuori. 933 00:43:09,830 --> 00:43:14,900 Così ora se faccio dot slash ciao-1, Dovrei vedere "ciao, David." 934 00:43:14,900 --> 00:43:16,450 >> Piuttosto deludente, però, giusto? 935 00:43:16,450 --> 00:43:18,158 Avremmo potuto fare questo molto più semplicemente 936 00:43:18,158 --> 00:43:20,940 senza parlare di variabili e CS50.h e tutto il resto. 937 00:43:20,940 --> 00:43:23,080 Quindi facciamo un po 'più interessante. 938 00:43:23,080 --> 00:43:31,010 >> Oltre a CS50.h, avere le cose come stringa 939 00:43:31,010 --> 00:43:34,550 dichiarato, la biblioteca CS50 ha anche alcune funzioni. 940 00:43:34,550 --> 00:43:38,520 Quindi, proprio come anni fa, qualcuno ha scritto printf e metterlo in standard di I / O.h 941 00:43:38,520 --> 00:43:39,530 e qualche altro file. 942 00:43:39,530 --> 00:43:44,010 >> Noi, il personale CS50, scritto una funzione chiamato GetChar, getDouble, getFloat, 943 00:43:44,010 --> 00:43:47,610 GetInt, GetLongLong, GetString, e mettiamo quelli all'interno di un file 944 00:43:47,610 --> 00:43:49,890 chiamato CS50.h e CS50.c. 945 00:43:49,890 --> 00:43:51,880 E li abbiamo messi dentro del CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 E la gente può anche scaricarle online, se si 947 00:43:53,880 --> 00:43:55,880 vogliono mettere loro sul loro propri computer come bene. 948 00:43:55,880 --> 00:44:00,880 Vale a dire che abbiamo creato funzioni che ricevono input da parte dell'utente. 949 00:44:00,880 --> 00:44:02,930 Non so cosa tutto di questi tipi di dati sono. 950 00:44:02,930 --> 00:44:06,490 GetInt è una specie di semplice, come ottenere un numero intero in qualche modo da parte dell'utente. 951 00:44:06,490 --> 00:44:09,980 E GetString è probabilmente come get una parola o una frase da parte dell'utente. 952 00:44:09,980 --> 00:44:11,770 >> Quindi concentriamoci su quello. 953 00:44:11,770 --> 00:44:14,710 E ho intenzione di tornare in apparecchio e ho intenzione di andare avanti 954 00:44:14,710 --> 00:44:20,790 e salvare il file come, chiamiamolo si ciao-2.c come la mia seconda versione. 955 00:44:20,790 --> 00:44:23,030 E facciamo un paio di modifiche. 956 00:44:23,030 --> 00:44:25,800 >> Questa volta, invece di duro David di codifica, che 957 00:44:25,800 --> 00:44:29,120 rende incredibilmente coerente ma il programma deludente, 958 00:44:29,120 --> 00:44:32,640 se io invece faccio GetString? 959 00:44:32,640 --> 00:44:35,660 Ora notate GetString ha una parentesi aperta, 960 00:44:35,660 --> 00:44:38,500 parentesi chiusa, perché non ha bisogno di alcun input. 961 00:44:38,500 --> 00:44:40,850 E 'solo andando a andare a prendere una stringa dall'utente. 962 00:44:40,850 --> 00:44:42,460 >> Ed ora una parola su un altro sintassi. 963 00:44:42,460 --> 00:44:45,439 Virgola solo alla fine di una riga di codice. 964 00:44:45,439 --> 00:44:46,730 Non hai bisogno ovunque. 965 00:44:46,730 --> 00:44:48,896 Ma questo significa solo che sono fatto con questa riga di codice. 966 00:44:48,896 --> 00:44:51,080 Permettetemi di spostare su un altro dichiarazione o la funzione. 967 00:44:51,080 --> 00:44:53,010 String dichiara una variabile. 968 00:44:53,010 --> 00:44:55,920 String è come dire dammi una ciotola, per favore. 969 00:44:55,920 --> 00:44:57,940 E mi permetta di mettere una stringa in esso. 970 00:44:57,940 --> 00:44:59,430 >> E ora il segno di uguale. 971 00:44:59,430 --> 00:45:03,510 Qual è il segno di uguale sostanzialmente equivalente a? 972 00:45:03,510 --> 00:45:04,500 >> PUBBLICO: Assegna. 973 00:45:04,500 --> 00:45:06,190 >> DAVID J. MALAN: Sì, l'assegnazione di un valore. 974 00:45:06,190 --> 00:45:09,872 Quindi, se io, per esempio, chiamata questa funzione GetString, 975 00:45:09,872 --> 00:45:12,830 e vedremo in un momento che è andando a richiedere all'utente una stringa. 976 00:45:12,830 --> 00:45:17,810 Questo è come lasciare me allora scrivo D-i-d a-v-su un pezzo di carta. 977 00:45:17,810 --> 00:45:21,060 E quando dico stringa s uguale GetString, 978 00:45:21,060 --> 00:45:24,140 uguale realmente non significa uguali in programmazione C. 979 00:45:24,140 --> 00:45:27,880 Significa assegnare da destra lato di sinistra. 980 00:45:27,880 --> 00:45:29,510 >> Così ho ottenuto una stringa. 981 00:45:29,510 --> 00:45:32,785 E il segno di uguale significa metterlo nello stoccaggio contenitore chiamato s. 982 00:45:32,785 --> 00:45:36,730 E poi passare questa via a printf per fare realmente la sua cosa. 983 00:45:36,730 --> 00:45:39,790 >> Così il risultato finale poi sta andando a guardare un po 'diverso. 984 00:45:39,790 --> 00:45:40,840 Facciamo fare ciao-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 O potrebbe funzionare. 987 00:45:45,260 --> 00:45:46,450 Si sta seguendo. 988 00:45:46,450 --> 00:45:47,940 Fai ciao-2 ha funzionato. 989 00:45:47,940 --> 00:45:52,640 Dot ridurre drasticamente ciao-2, Enter. 990 00:45:52,640 --> 00:45:54,620 >> Mi sembra di avere un infinito loop o qualcosa. 991 00:45:54,620 --> 00:45:55,453 Niente sta succedendo. 992 00:45:55,453 --> 00:45:56,134 Perché? 993 00:45:56,134 --> 00:45:57,805 >> PUBBLICO: Sta facendo un ciclo infinito. 994 00:45:57,805 --> 00:45:59,430 DAVID J. MALAN: Si tratta di un ciclo infinito. 995 00:45:59,430 --> 00:46:02,710 È un po 'che mi aspetta a effettivamente fornire con qualche input. 996 00:46:02,710 --> 00:46:05,800 Quindi lasciami andare avanti e digitare in David, e premere Invio. 997 00:46:05,800 --> 00:46:07,230 E ora si dice "ciao, David." 998 00:46:07,230 --> 00:46:09,040 Se lo eseguo di nuovo. 999 00:46:09,040 --> 00:46:11,530 Proviamo quindi a digitare in Rob, "ciao, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Ora, questo è il peggiore Interfaccia utente mai. 1001 00:46:13,900 --> 00:46:16,110 L'utente è apparentemente dovrebbe sapere cosa fare. 1002 00:46:16,110 --> 00:46:17,120 Ma non importa. 1003 00:46:17,120 --> 00:46:19,570 L'utilizzo di questi stesso edificio blocchi proprio come in Scratch, 1004 00:46:19,570 --> 00:46:24,980 siamo in grado di risolvere il problema e dire qualcosa come il tuo nome per favore, colon, 1005 00:46:24,980 --> 00:46:27,820 spazio, chiuso citazione, vicino parentesi, punto e virgola. 1006 00:46:27,820 --> 00:46:30,680 Così un sacco di nuovo stupidità con la sintassi. 1007 00:46:30,680 --> 00:46:34,040 >> Ma ho notato appena aggiunto un pezzo di puzzle sopra questo 1008 00:46:34,040 --> 00:46:35,280 e sopra questo. 1009 00:46:35,280 --> 00:46:38,870 Così ora, se mi esegue nuovamente questa, ciao-2, Enter. 1010 00:46:38,870 --> 00:46:41,180 Apetta un minuto. 1011 00:46:41,180 --> 00:46:41,830 Cosa c'è di sbagliato? 1012 00:46:41,830 --> 00:46:43,570 Non è comportarsi in modo diverso. 1013 00:46:43,570 --> 00:46:44,200 Già. 1014 00:46:44,200 --> 00:46:46,010 >> PUBBLICO: Lei non ha funzionato fate di nuovo. 1015 00:46:46,010 --> 00:46:47,968 >> DAVID J. MALAN: io no eseguire rifare, a destra. 1016 00:46:47,968 --> 00:46:49,430 Così ho cambiato il mio codice sorgente. 1017 00:46:49,430 --> 00:46:50,638 Ma ancora una volta, c'è quel flusso. 1018 00:46:50,638 --> 00:46:54,530 Il codice sorgente attraverso il compilatore dà Sei nuovo codice oggetto, o 0 e 1. 1019 00:46:54,530 --> 00:47:00,209 Così ho bisogno di realtà rieseguire make ciao-2 Enter. 1020 00:47:00,209 --> 00:47:01,750 OK, qualcosa sembra essere accaduto. 1021 00:47:01,750 --> 00:47:04,220 Dot ridurre drasticamente ciao-2. 1022 00:47:04,220 --> 00:47:05,390 Il tuo nome per favore. 1023 00:47:05,390 --> 00:47:09,990 E per essere chiaro ora, perché è il cursore sulla stessa linea? 1024 00:47:09,990 --> 00:47:10,490 Esattamente. 1025 00:47:10,490 --> 00:47:13,020 Non ho messo il backslash n qui nel mio codice. 1026 00:47:13,020 --> 00:47:16,110 Così ora posso scrivere qualcosa come Daven, Invio. 1027 00:47:16,110 --> 00:47:18,710 Posso correre di nuovo e digitare qualcosa come Gabe, Enter, 1028 00:47:18,710 --> 00:47:22,250 e otteniamo un programma diverso ancora e ancora e ancora. 1029 00:47:22,250 --> 00:47:28,940 >> Ora, in ultima analisi, stiamo andando ad avere bisogno utilizzare alcune funzionalità diverse. 1030 00:47:28,940 --> 00:47:32,860 Abbiamo bisogno di introdurre in ultima analisi, un po ' condizioni per fare le cose in modo condizionale. 1031 00:47:32,860 --> 00:47:35,550 Loops Forse è così che possiamo fare ancora e ancora le cose. 1032 00:47:35,550 --> 00:47:38,220 >> Forse sarebbe bello se potrebbe implementare le nostre funzioni, 1033 00:47:38,220 --> 00:47:41,355 come abbiamo potuto realizzare il nostro printf o la nostra versione di GetString 1034 00:47:41,355 --> 00:47:45,870 e GetFlow, perché in ultima analisi anche usando questo ambiente a riga di comando 1035 00:47:45,870 --> 00:47:49,780 possiamo fare anche i più visivamente interessante di cose. 1036 00:47:49,780 --> 00:47:51,950 >> Infatti, in conclusione, mi permetta di fare questo. 1037 00:47:51,950 --> 00:47:54,020 Ho intenzione di andare avanti e chiudere queste finestre 1038 00:47:54,020 --> 00:47:57,400 e aprire questa icona qui, che è solo un grande 1039 00:47:57,400 --> 00:48:00,020 versione di quel incorporato finestra di terminale. 1040 00:48:00,020 --> 00:48:02,329 Quindi Gedit non solo il posto per il mio codice, 1041 00:48:02,329 --> 00:48:05,620 ma anche una costruito nel finestra di terminale, il finestra in bianco e nero dove posso correre 1042 00:48:05,620 --> 00:48:06,230 comandi. 1043 00:48:06,230 --> 00:48:08,600 >> Mi è capitato di aprire una versione più grande di questo. 1044 00:48:08,600 --> 00:48:11,170 E ora ho intenzione di andare in la cartella che ho già 1045 00:48:11,170 --> 00:48:13,150 mettere in anticipo sul sito web del corso. 1046 00:48:13,150 --> 00:48:16,720 E ho intenzione di andare avanti e aprire un file chiamato thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 che è stato scritto da qualcun altro. 1048 00:48:18,710 --> 00:48:21,220 >> E se guardiamo a questo, questo non è il tipo di codice 1049 00:48:21,220 --> 00:48:24,370 saremo scrivendo dal l'obiettivo di questo codice 1050 00:48:24,370 --> 00:48:28,450 era di scrivere la più bella guardando il codice che lui o lei poteva, 1051 00:48:28,450 --> 00:48:31,290 indipendentemente dal fatto che o non un altro essere umano potrebbe mai 1052 00:48:31,290 --> 00:48:33,660 capire questo codice. 1053 00:48:33,660 --> 00:48:37,050 >> Infatti, ogni anno ci è ciò che è chiamato un concorso C offuscato, che 1054 00:48:37,050 --> 00:48:39,570 è per veri geek che scrivono codice che nessun altro può leggere, 1055 00:48:39,570 --> 00:48:42,050 ma che fa qualcosa o molto semplice o molto sorprendente. 1056 00:48:42,050 --> 00:48:43,890 E abbiamo pensato di Concludo con questo look 1057 00:48:43,890 --> 00:48:48,300 a qualcosa che è piuttosto sorprendente si potrebbe avere visto una volta prima. 1058 00:48:48,300 --> 00:48:52,650 Ma finiremo su questo nota, barra puntino, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Questo allora è ciò che vi aspetta. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Questo è tutto per CS50. 1062 00:48:58,500 --> 00:48:59,935 Ci vediamo il Mercoledì. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [GIOCO MUSICA] 1065 00:49:10,016 --> 00:53:31,883