1 00:00:00,000 --> 00:00:11,736 2 00:00:11,736 --> 00:00:16,626 >> [RIPRODUZIONE VIDEO] 3 00:00:16,626 --> 00:00:19,410 >> -A Trionfo di matematica e l'abilità meccanica 4 00:00:19,410 --> 00:00:23,270 è questo nuovo grande automatica calcolatrice alla Harvard University. 5 00:00:23,270 --> 00:00:27,140 Intricati problemi in matematica mettere attraverso la macchina in forma codificata 6 00:00:27,140 --> 00:00:31,710 su nastro sono risolti in un modo accurato minuti frazione del tempo richiesto 7 00:00:31,710 --> 00:00:32,819 per calcolo umano. 8 00:00:32,819 --> 00:00:44,280 9 00:00:44,280 --> 00:00:48,220 Progettato per accelerare tutte le forme di ricerca matematica e scientifica, 10 00:00:48,220 --> 00:00:53,840 il cervello meccanico gigante funziona per la Marina degli Stati Uniti fino alla fine della guerra. 11 00:00:53,840 --> 00:01:03,620 12 00:01:03,620 --> 00:01:06,570 >> [FINE RIPRODUZIONE] 13 00:01:06,570 --> 00:01:08,590 >> DAVID J. MALAN: Questo è CS50. 14 00:01:08,590 --> 00:01:10,590 Il passato era un magico posto, ma se hai mai 15 00:01:10,590 --> 00:01:13,366 si chiese che cosa dispositivo a Harvard Science Center, 16 00:01:13,366 --> 00:01:16,150 è infatti parte della Harvard Mark I, ed è 17 00:01:16,150 --> 00:01:18,710 in mostra lì adesso negli ultimi anni. 18 00:01:18,710 --> 00:01:20,590 E quello che vedrete incorporato nel set problema 19 00:01:20,590 --> 00:01:24,416 uno è uno sguardo dietro le quinte a ciò che quel dispositivo ha fatto, e fa, 20 00:01:24,416 --> 00:01:27,540 dal professor Harry Lewis, che si trova in il dipartimento di informatica qui. 21 00:01:27,540 --> 00:01:29,440 Quindi più che in appena un po '. 22 00:01:29,440 --> 00:01:33,990 >> Ma oggi cominciamo a transizione dalla settimana scorsa a questo, 23 00:01:33,990 --> 00:01:37,290 e porteremo menzione di una fotografia qui 24 00:01:37,290 --> 00:01:38,630 che in realtà è abbastanza famoso. 25 00:01:38,630 --> 00:01:42,270 Qualcuno sa cosa questo qui è sullo schermo? 26 00:01:42,270 --> 00:01:43,880 Almeno secondo il mito. 27 00:01:43,880 --> 00:01:44,837 Già. 28 00:01:44,837 --> 00:01:45,920 PUBBLICO: Il primo virus. 29 00:01:45,920 --> 00:01:49,570 DAVID J. MALAN: Così è stato presumibilmente il primo problema reale in un computer. 30 00:01:49,570 --> 00:01:52,490 Ora, in realtà, la parola bug, per un errore in un programma, 31 00:01:52,490 --> 00:01:55,250 è stato con noi per un po ' tempo nel mondo fisico, 32 00:01:55,250 --> 00:01:58,190 e questo è stato uno dei primi volte documentati in cui qualcuno realmente 33 00:01:58,190 --> 00:02:02,280 colto una grande falena fuori del Marchio Calcolatore II, lo mise nel legante, 34 00:02:02,280 --> 00:02:05,006 e poi registrato che come il primo bug noto 35 00:02:05,006 --> 00:02:06,630 di essere stato effettivamente trovato fisicamente. 36 00:02:06,630 --> 00:02:10,104 Così così è entrato che nella tradizione di oggi. 37 00:02:10,104 --> 00:02:12,020 Tutto da ultimo settimana è disponibile on-line. 38 00:02:12,020 --> 00:02:14,840 In particolare le risorse che si potrebbe non necessariamente notare, in particolare 39 00:02:14,840 --> 00:02:15,881 se venire qui di persona. 40 00:02:15,881 --> 00:02:20,230 Così uno dei compagni di insegnamento ogni anno fa una serie canonica di note, 41 00:02:20,230 --> 00:02:22,010 quindi non è necessario tenere la testa in giù, cercando 42 00:02:22,010 --> 00:02:24,410 trascrivere più nulla che potrebbe accadere qui in classe. 43 00:02:24,410 --> 00:02:25,940 Quindi rendersi conto che quelli cosiddetto [? Scribd?] Note 44 00:02:25,940 --> 00:02:29,350 sono in linea, certamente le diapositive e il codice sorgente che usiamo in classe. 45 00:02:29,350 --> 00:02:31,436 Facciamo trascrizioni di testo completo disponibili pure. 46 00:02:31,436 --> 00:02:34,310 Quindi, se si ricorda vagamente qualche termine, e si vuole guardare in su un po ' 47 00:02:34,310 --> 00:02:37,280 più facilmente, conto che tutto di che è consultabile on-line. 48 00:02:37,280 --> 00:02:38,930 Nonché procedure dettagliate pure. 49 00:02:38,930 --> 00:02:42,710 In effetti, oggi cominciamo a guardare un linguaggio di programmazione di livello più basso, 50 00:02:42,710 --> 00:02:45,290 presto di essere conosciuto da noi come C, ed è molto facile 51 00:02:45,290 --> 00:02:48,820 al tipo di perdersi dopo solo alcuni momenti di tempo, e quindi una sorta di meraviglia 52 00:02:48,820 --> 00:02:52,370 come abbiamo avuto per un po 'di più complesso esempio dalla più semplice. 53 00:02:52,370 --> 00:02:54,975 E così realizzare faremo ciliegia raccogliere durante le lezioni alcune 54 00:02:54,975 --> 00:02:57,850 degli esempi rappresentativi, ma rendersi conto che molto di più è anche 55 00:02:57,850 --> 00:03:01,140 disponibile on-line in modo da poter lavorare attraverso di essa al proprio ritmo, 56 00:03:01,140 --> 00:03:02,950 tuttavia si è più comodo. 57 00:03:02,950 --> 00:03:05,200 >> Ma abbiamo lasciato con i programmi che sono stati proprio questo. 58 00:03:05,200 --> 00:03:09,690 Quindi clicco la bandiera verde, e che cosa fa questo programma? 59 00:03:09,690 --> 00:03:10,710 Dice, ciao, mondo. 60 00:03:10,710 --> 00:03:13,180 Rende il gatto dire ciao nel suo piccolo mondo 61 00:03:13,180 --> 00:03:15,990 sul lato alto a sinistra di interfaccia utente di Scratch. 62 00:03:15,990 --> 00:03:18,810 Ma abbiamo iniziato a introdurre alcuni termini la settimana scorsa. 63 00:03:18,810 --> 00:03:23,614 E così, le cose come questo abbiamo chiamato cosa? 64 00:03:23,614 --> 00:03:25,280 Quale potrebbe essere il termine generico per questo? 65 00:03:25,280 --> 00:03:26,266 Già. 66 00:03:26,266 --> 00:03:28,210 Un metodo o una dichiarazione. 67 00:03:28,210 --> 00:03:29,280 Certo, è un'azione. 68 00:03:29,280 --> 00:03:30,140 Fai questo. 69 00:03:30,140 --> 00:03:32,400 Eppure ci sono stati altre forme a zero, 70 00:03:32,400 --> 00:03:35,360 Oltre a questi cosiddetti dichiarazione, erano anche 71 00:03:35,360 --> 00:03:38,221 cose come questa, che abbiamo chiamato cosa? 72 00:03:38,221 --> 00:03:38,720 Già. 73 00:03:38,720 --> 00:03:39,634 Quindi un ciclo. 74 00:03:39,634 --> 00:03:42,050 E in questo caso, questa cosa ripetizioni, ovviamente, 10 volte. 75 00:03:42,050 --> 00:03:43,040 C'è un blocco per sempre. 76 00:03:43,040 --> 00:03:44,164 Ci sono un paio di altri. 77 00:03:44,164 --> 00:03:48,309 E oggi stiamo andando a vedere come tradurre questo per un mondo più moderno, 78 00:03:48,309 --> 00:03:50,850 se si vuole, anche se è andando a sembrare a prima vista 79 00:03:50,850 --> 00:03:52,024 di essere molto più arcana. 80 00:03:52,024 --> 00:03:53,190 Ma erano davvero loop. 81 00:03:53,190 --> 00:03:56,182 E poi abbiamo cose come questo, che ha avuto questa forma, 82 00:03:56,182 --> 00:03:57,515 ed essenzialmente domande. 83 00:03:57,515 --> 00:03:58,890 E abbiamo fatto riferimento a questi come cosa? 84 00:03:58,890 --> 00:03:59,762 >> PUBBLICO: espressione booleana. 85 00:03:59,762 --> 00:04:00,320 >> DAVID J. MALAN: Sì. 86 00:04:00,320 --> 00:04:01,340 Espressione booleana. 87 00:04:01,340 --> 00:04:04,502 Qualcosa che è vera o falso, sì o no, uno o zero, 88 00:04:04,502 --> 00:04:05,960 comunque lo si voglia vedere il mondo. 89 00:04:05,960 --> 00:04:08,335 Ma abbiamo chiamato quelli booleano espressioni, e noi li spina 90 00:04:08,335 --> 00:04:09,900 in condizioni, o rami. 91 00:04:09,900 --> 00:04:12,170 E nel mondo di Scratch, tutto bene 92 00:04:12,170 --> 00:04:15,460 interblocchi in termini di forma, se ha senso logico farlo, 93 00:04:15,460 --> 00:04:18,490 ma non c'è bisogno di fermarsi al solo facendo una cosa condizionale, 94 00:04:18,490 --> 00:04:20,450 si può avere una proverbiale bivio 95 00:04:20,450 --> 00:04:24,040 e fare questo o quello, se la condizione è vera o no. 96 00:04:24,040 --> 00:04:26,040 E allora, come si vedrà, se non l'hai già fatto, 97 00:04:26,040 --> 00:04:27,480 È anche possibile nidificare questi blocchi. 98 00:04:27,480 --> 00:04:32,110 Così Scratch cresce fino a riempire le forme che si potrebbe voler inserire in esso, 99 00:04:32,110 --> 00:04:35,330 così si può effettivamente esprimere più una logica che si potrebbe desiderare di fare. 100 00:04:35,330 --> 00:04:38,220 >> Ora un paio di parole di annuncio sia qui e New Haven. 101 00:04:38,220 --> 00:04:39,370 Così sezionamento inizia oggi. 102 00:04:39,370 --> 00:04:42,120 L'URL per questo è in corso di sito web, per chi non conosce. 103 00:04:42,120 --> 00:04:43,970 Le sezioni saranno un occasione per stare insieme 104 00:04:43,970 --> 00:04:46,553 in un ambiente molto più intimo di [? Sanders?] Permette, 105 00:04:46,553 --> 00:04:50,347 da 10 a 20 compagni di classe con un insegnamento fellow presso diverse tracce, 106 00:04:50,347 --> 00:04:51,930 e ritmi diversi, se lo desiderano. 107 00:04:51,930 --> 00:04:54,080 Infatti il ​​corso offre diverse sezioni 108 00:04:54,080 --> 00:04:57,340 per quelli meno comodo, più confortevole, e da qualche parte in mezzo, 109 00:04:57,340 --> 00:04:59,860 e il ruolo di pollice qui, è non c'è una definizione formale, 110 00:04:59,860 --> 00:05:04,600 ma se si è meno comodo, è sorta di conoscerla. 111 00:05:04,600 --> 00:05:07,470 Sei un po 'intrepido sulla idea di mettere piede, forse, di nuovo 112 00:05:07,470 --> 00:05:10,130 in classe, o mostrando fino ad un punto in mezzo. 113 00:05:10,130 --> 00:05:12,770 Se siete stati la programmazione dal momento che erano sei anni, più a suo agio, 114 00:05:12,770 --> 00:05:13,400 forse per te. 115 00:05:13,400 --> 00:05:16,150 E se si tratta di una specie di lancio-up, che è esattamente ciò che la in mezzo 116 00:05:16,150 --> 00:05:17,190 è destinato a essere. 117 00:05:17,190 --> 00:05:18,410 >> Ora, nel frattempo, per una classe di queste dimensioni, 118 00:05:18,410 --> 00:05:21,326 ci vuole un po 'di tempo per sezione tutti, così abbiamo i cosiddetti, 119 00:05:21,326 --> 00:05:24,030 sezioni eccellenti, fino a venire questo fine settimana e all'inizio della prossima settimana, 120 00:05:24,030 --> 00:05:26,570 così dare un'occhiata al sito web del corso per coloro che sono naturalmente ampia, 121 00:05:26,570 --> 00:05:28,610 e anche girato per quelli che non li può fare. 122 00:05:28,610 --> 00:05:33,470 E sezioni stesse inizieranno in settimana tre CS50 indice zero. 123 00:05:33,470 --> 00:05:35,880 Problema set 0 è già sul sito web del corso. 124 00:05:35,880 --> 00:05:40,010 E rendersi conto che si ha nove giorni in ritardo questo semestre. 125 00:05:40,010 --> 00:05:43,240 Quindi questo è un aggiornamento da ultimo anno, quando abbiamo avuto cinque giorni di ritardo. 126 00:05:43,240 --> 00:05:46,210 >> Quindi, se vi state chiedendo, abbiamo nove insiemi di problemi. 127 00:05:46,210 --> 00:05:53,200 Hai nove giorni di ritardo, ognuno dei quali si può spendere solo un a settimana su. 128 00:05:53,200 --> 00:05:56,089 Ciò rende efficacemente tutti il problema imposta dovuta Venerdì, 129 00:05:56,089 --> 00:05:58,630 ma l'obiettivo è quello di mettere un po ' po 'di pressione psicologica 130 00:05:58,630 --> 00:06:01,100 su di voi per cercare di ottenere le cose in su Giovedi 131 00:06:01,100 --> 00:06:03,960 perché, come scoprirete presto, nel bene e nel male, la maggior parte 132 00:06:03,960 --> 00:06:07,820 tutto nel mondo del software finisce prendendo molto più tempo di anticipare. 133 00:06:07,820 --> 00:06:10,620 Quindi prendere in considerazione una sorta di opportunità di aiutare 134 00:06:10,620 --> 00:06:13,880 voi stessi a bersaglio Giovedi, ma consolare che, sì, 135 00:06:13,880 --> 00:06:14,950 tutto è dovuto Venerdì. 136 00:06:14,950 --> 00:06:17,590 E se si presenta loro su Giovedi, che è meraviglioso. 137 00:06:17,590 --> 00:06:21,020 Non ci sono punti bonus o in più credito per soddisfare tale termine. 138 00:06:21,020 --> 00:06:23,250 E 'pensato per essere solo una stampella. 139 00:06:23,250 --> 00:06:25,810 >> E le ore di ufficio, sia qui e in New Haven, 140 00:06:25,810 --> 00:06:28,840 di persona, se si desidera incontro con uno dei nostri corsi 141 00:06:28,840 --> 00:06:31,060 insegnamento borsisti e CA per l'assistenza. 142 00:06:31,060 --> 00:06:31,640 >> Tutto ok. 143 00:06:31,640 --> 00:06:33,110 Così ora, facciamo questo più reale. 144 00:06:33,110 --> 00:06:35,470 E per un momento che sta per iniziare per ottenere un po 'di più arcano, ma molto 145 00:06:35,470 --> 00:06:37,310 rapidamente il Venerdì e la prossima settimana ci sarà 146 00:06:37,310 --> 00:06:41,230 in grado di fare molto di più abbiamo potuto finora nella Scratch. 147 00:06:41,230 --> 00:06:44,350 Così abbiamo introdotto ultimo codice settimana, anche se pittorica. 148 00:06:44,350 --> 00:06:45,620 Era pezzi del puzzle. 149 00:06:45,620 --> 00:06:48,800 E abbiamo formalizzato che è qualcosa chiamato il codice sorgente, 150 00:06:48,800 --> 00:06:50,330 ma sarebbe aveva assomigliare? 151 00:06:50,330 --> 00:06:52,550 Beh, sembrava un po ' qualcosa come questo. 152 00:06:52,550 --> 00:06:55,410 E, infatti, solo tipo di prendere in giro dove possiamo andare con questo. 153 00:06:55,410 --> 00:06:57,800 Ho intenzione di andare avanti e aprire una finestra qui, 154 00:06:57,800 --> 00:06:59,810 e sto solo andando a scegliere Nuovo file. 155 00:06:59,810 --> 00:07:03,200 E ho intenzione di salvare questo file come qualcosa di simile ciao punto c. 156 00:07:03,200 --> 00:07:05,700 Altro su quella scelta parole solo un momento. 157 00:07:05,700 --> 00:07:08,630 E questo è come qualcuno potrebbe andare a scrivere un programma. 158 00:07:08,630 --> 00:07:13,990 Includere I / O standard puntino h, int main vuoto, e quindi aprire parentesi graffa, vicino 159 00:07:13,990 --> 00:07:19,430 parentesi graffa, printf ciao mondo virgola, backslash n, punto e virgola, Salva, fatto. 160 00:07:19,430 --> 00:07:19,930 OK. 161 00:07:19,930 --> 00:07:21,670 Ho scritto il mio primo programma, ma sta andando 162 00:07:21,670 --> 00:07:23,878 ad essere incredibilmente deludente perché quando ho effettivamente 163 00:07:23,878 --> 00:07:27,352 eseguire il programma, naturalmente, per prima scrittura fare ciao, 164 00:07:27,352 --> 00:07:30,310 e poi tagliare dot ciao, e faremo passare attraverso questo in modo molto più dettagliato 165 00:07:30,310 --> 00:07:31,730 in un momento, questo è tutto ciò che fa. 166 00:07:31,730 --> 00:07:33,270 Non pop aperto tutte le finestre. 167 00:07:33,270 --> 00:07:35,070 Non fa niente particolarmente fantasia. 168 00:07:35,070 --> 00:07:38,830 Tutto ciò che fa è quello che ho detto a facciamo, ma come si arriva a questo? 169 00:07:38,830 --> 00:07:40,560 E come possiamo costruire su questo? 170 00:07:40,560 --> 00:07:43,430 Bene, vediamo di introdurre un qualche diversi concetti qui. 171 00:07:43,430 --> 00:07:47,170 >> Quindi uno, stiamo per iniziare utilizzando un programma detto compilatore. 172 00:07:47,170 --> 00:07:51,470 Esiste un compilatore per Mac OS, Windows, Linux, qualsiasi numero di sistemi operativi, 173 00:07:51,470 --> 00:07:54,540 e che presto vi presentiamo il ambiente che useremo, 174 00:07:54,540 --> 00:07:57,410 ma un compilatore è solo un generale termine per un pezzo di software 175 00:07:57,410 --> 00:08:01,940 che prende il codice sorgente e produce codice oggetto da esso. 176 00:08:01,940 --> 00:08:03,940 In altre parole, se si avere come input sorgente 177 00:08:03,940 --> 00:08:08,250 codice, qualcosa di simile a quello che ho appena scritto, produce in ultima analisi, codice oggetto. 178 00:08:08,250 --> 00:08:11,780 E codice oggetto è in realtà solo un modo elegante per dire che uscite 179 00:08:11,780 --> 00:08:12,926 pari a zero e la propria. 180 00:08:12,926 --> 00:08:14,800 In altre parole, fonte codice, anche se è 181 00:08:14,800 --> 00:08:17,240 andando a guardare un po 'arcano, e un po 'meno amichevole 182 00:08:17,240 --> 00:08:19,590 di Scratch a prima vista, è almeno qualcosa 183 00:08:19,590 --> 00:08:21,120 che noi umani possiamo capire. 184 00:08:21,120 --> 00:08:24,360 Che tipo di aspetto e suona come Inglese anche se è molto succinto. 185 00:08:24,360 --> 00:08:28,040 Considerando che la programmazione a Zero e uno di, come i nostri predecessori hanno dovuto fare, 186 00:08:28,040 --> 00:08:30,920 alcuni anni fa, non era particolarmente divertente sfida. 187 00:08:30,920 --> 00:08:33,710 Tuttavia, questo è ciò che il calcolatore capisce ancora. 188 00:08:33,710 --> 00:08:37,010 Così compilatore ci fa da il codice sorgente al codice oggetto. 189 00:08:37,010 --> 00:08:39,860 E 'come aprire un file con il compilatore, e quando lo si salva, 190 00:08:39,860 --> 00:08:41,419 si ottiene questi zero e uno. 191 00:08:41,419 --> 00:08:43,419 Quindi vedremo come fare che in un momento. 192 00:08:43,419 --> 00:08:47,400 >> Ma veniamo ora cercare di fornire un ponte tra la scorsa settimana e questo, 193 00:08:47,400 --> 00:08:50,660 in modo che anche come noi ottenere appeso su cose come parentesi graffe, 194 00:08:50,660 --> 00:08:54,100 e punti e virgola, e parentesi, e tutti questi intellettualmente interessante 195 00:08:54,100 --> 00:08:57,620 aspetti della programmazione, che molto comprensibilmente inciampare la gente nella fase iniziale, 196 00:08:57,620 --> 00:09:00,930 conto che tutte le idee oggi, sono gli stessi dello scorso. 197 00:09:00,930 --> 00:09:03,975 Così lo scorso, abbiamo visto questo esempio qui, il programma Ciao Mondo. 198 00:09:03,975 --> 00:09:07,500 Ebbene, a partire da oggi, se vogliamo di attuare tale programma stesso, 199 00:09:07,500 --> 00:09:10,800 è andare a guardare un po 'di qualcosa di simile. 200 00:09:10,800 --> 00:09:14,040 E spieghiamo in breve tempo quello che int, e principale, e vuoto, e tutto questo 201 00:09:14,040 --> 00:09:18,770 è, ma almeno io vedo qui già il familiare Ciao Mondo. 202 00:09:18,770 --> 00:09:20,860 >> Nel frattempo, le cose come la funzione, diciamo ciao, 203 00:09:20,860 --> 00:09:23,570 sta molto semplicemente andando a essere un dichiarazione molto semplice come questo. 204 00:09:23,570 --> 00:09:26,930 Printf ciao mondo, con un po ' cita, con una barra rovesciata, 205 00:09:26,930 --> 00:09:29,780 con un punto e virgola, ma più su quello a venire. 206 00:09:29,780 --> 00:09:34,066 Loops, nel frattempo, questo è un anello che, naturalmente, dice ciao mondo per sempre, 207 00:09:34,066 --> 00:09:36,690 e questo sta andando a guardare un poco più strano che negli ultimi, 208 00:09:36,690 --> 00:09:39,530 ma se dico qualcosa come, mentre è vero, io 209 00:09:39,530 --> 00:09:44,050 possono poi stampare Ciao mondo ancora e ancora e ancora e ancora. 210 00:09:44,050 --> 00:09:46,660 E allora come si può tipo di iniziare a dedurre qui, 211 00:09:46,660 --> 00:09:49,070 questa convenzione di utilizzo parentesi graffe è gentile 212 00:09:49,070 --> 00:09:52,050 'come abbracciare il riga rientrata di codice lì. 213 00:09:52,050 --> 00:09:55,840 La linea printf di codice molto simile il pezzo di puzzle gialla sopra. 214 00:09:55,840 --> 00:09:58,740 Quindi non stiamo andando a dire per sempre, stiamo andando a dire durante vero, 215 00:09:58,740 --> 00:10:01,020 ma staremo a vedere perché questo è in appena un po '. 216 00:10:01,020 --> 00:10:04,210 >> Nel frattempo, se abbiamo un ciclo come questo, dove si ripete qualcosa di finito 217 00:10:04,210 --> 00:10:07,730 volte numero, anche questo è andando a prendere un po 'di tempo per abituarsi 218 00:10:07,730 --> 00:10:12,820 a, ma sta andando a dire per int mi viene a zero, ho meno di 10, i ++, 219 00:10:12,820 --> 00:10:14,056 e poi di nuovo printf. 220 00:10:14,056 --> 00:10:15,430 Ma ci sara 'modelli. 221 00:10:15,430 --> 00:10:18,434 E per quelli di voi familiare con AP Informatica, o Java, 222 00:10:18,434 --> 00:10:21,100 o un qualsiasi numero di altre lingue, quasi tutti questi costrutti 223 00:10:21,100 --> 00:10:23,820 finora dovrebbe apparire per lo più familiare. 224 00:10:23,820 --> 00:10:24,680 >> Così variabile. 225 00:10:24,680 --> 00:10:29,270 Quindi, ecco un semplice estratto Scratch che imposta una variabile chiamata contatore a zero, 226 00:10:29,270 --> 00:10:33,150 e poi dice sempre il banco, e quindi cambia il contatore di uno. 227 00:10:33,150 --> 00:10:37,030 Quindi si inizia con lo zero, e poi uno, due, tre. 228 00:10:37,030 --> 00:10:42,560 Beh, come potremmo introdurre che in questo nuovo linguaggio un po 'allo stesso modo? 229 00:10:42,560 --> 00:10:45,460 Contatore Int uguale zero, mentre vero che 230 00:10:45,460 --> 00:10:48,100 è la stessa idea da prima di fare qualcosa per sempre, 231 00:10:48,100 --> 00:10:49,530 e sto solo andando a printf. 232 00:10:49,530 --> 00:10:53,310 E ora sta diventando un po 'strano, cento i, ma più su quello a venire, 233 00:10:53,310 --> 00:10:55,140 ma queste idee sono esattamente uguali. 234 00:10:55,140 --> 00:10:58,820 Non ci resta che ora di aderire a la sintassi che il computer è 235 00:10:58,820 --> 00:11:00,010 andare a chiedere a noi. 236 00:11:00,010 --> 00:11:04,620 >> Espressione booleana, qualcosa di simile sx inferiore y, x o meno di y, 237 00:11:04,620 --> 00:11:06,354 e y meno di z. 238 00:11:06,354 --> 00:11:09,270 Sta andando a guardare un po 'di qualcosa in questo modo, con parentesi solo 239 00:11:09,270 --> 00:11:13,020 come in matematica per buona misura a solo garantire che l'ordine delle operazioni 240 00:11:13,020 --> 00:11:14,750 è come intendiamo. 241 00:11:14,750 --> 00:11:15,600 E ora, le condizioni. 242 00:11:15,600 --> 00:11:21,220 Quindi, se x meno di y, x dire è meno di y, altrimenti se x è maggiore di y, 243 00:11:21,220 --> 00:11:26,020 dire x è maggiore di y, altrimenti logicamente, x deve essere uguale a y. 244 00:11:26,020 --> 00:11:28,710 Così si potrebbe implementare qualcosa di simile in Scratch, 245 00:11:28,710 --> 00:11:31,230 o si potrebbe implementare in questa sintassi. 246 00:11:31,230 --> 00:11:35,090 E ancora, le parentesi graffe sono un po ' dandoci la stessa forma del puzzle 247 00:11:35,090 --> 00:11:40,750 pezzi, ma la sintassi, ora, è forse iniziando a seguire alcuni modelli. 248 00:11:40,750 --> 00:11:42,910 >> Allora, che cosa significa questo ci dà qui? 249 00:11:42,910 --> 00:11:45,260 Così siamo tornati quindi al nostro programma principale. 250 00:11:45,260 --> 00:11:47,930 Vediamo in realtà, ora, fare qualcosa con esso. 251 00:11:47,930 --> 00:11:50,660 Quindi, in questo primo Linea vediamo tagliente includiamo, 252 00:11:50,660 --> 00:11:53,160 I / O standard, puntino h, e poi qualche angolo strano 253 00:11:53,160 --> 00:11:57,330 Staffe di sotto di tale. int main vuoto, e poi printf ciao mondo. 254 00:11:57,330 --> 00:11:58,200 Quindi basta fare un passo. 255 00:11:58,200 --> 00:12:02,440 Qualcuno che non ha mai programmato prima, almeno spiegare una di queste linee. 256 00:12:02,440 --> 00:12:04,490 Usando forse alcuni di il gergo della scorsa settimana. 257 00:12:04,490 --> 00:12:06,942 Qual è printf, per esempio? 258 00:12:06,942 --> 00:12:07,442 Già. 259 00:12:07,442 --> 00:12:08,410 >> PUBBLICO: [incomprensibile] 260 00:12:08,410 --> 00:12:08,610 >> DAVID J. MALAN: Sì. 261 00:12:08,610 --> 00:12:11,380 Si tratta di una funzione o di una dichiarazione, dalla terminologia della scorsa settimana. 262 00:12:11,380 --> 00:12:13,470 Ed è una azione che sta facendo qualcosa. 263 00:12:13,470 --> 00:12:15,855 Ora questa funzione, o questa dichiarazione, fa 264 00:12:15,855 --> 00:12:17,550 apparire prendere qualche tipo di input? 265 00:12:17,550 --> 00:12:20,080 266 00:12:20,080 --> 00:12:24,380 E in che senso lo fa sembrano prendere di ingresso, se così? 267 00:12:24,380 --> 00:12:26,180 Ingresso, Cosa voglio dire con questo? 268 00:12:26,180 --> 00:12:26,720 Già. 269 00:12:26,720 --> 00:12:27,595 >> PUBBLICO: [incomprensibile] 270 00:12:27,595 --> 00:12:30,565 271 00:12:30,565 --> 00:12:31,440 DAVID J. MALAN: Sì. 272 00:12:31,440 --> 00:12:34,890 Così Gratta fuori un paio di pezzi di puzzle dove è possibile parametrizzare esso. 273 00:12:34,890 --> 00:12:37,980 Si potrebbe dire la ripetizione bloccare quante volte ripetere, 274 00:12:37,980 --> 00:12:40,320 così che era un ingresso di sorta, e proprio come Scratch 275 00:12:40,320 --> 00:12:43,060 aveva un piccolo segnaposto bianco per il numero che si digita, 276 00:12:43,060 --> 00:12:45,810 così usiamo in questo parentesi mondo testo 277 00:12:45,810 --> 00:12:49,910 a darci quella forma circolare in cui possiamo inserire il nostro ingresso. 278 00:12:49,910 --> 00:12:53,180 Dopo tutto, decine di anni fa quando questo linguaggio, chiamato C, 279 00:12:53,180 --> 00:12:55,950 è stato inventato nessuno ha anticipato che è uno di noi, 280 00:12:55,950 --> 00:12:59,420 questi alcuni anni più tardi, saremmo vogliono una funzione che dice ciao. 281 00:12:59,420 --> 00:12:59,920 Destra? 282 00:12:59,920 --> 00:13:02,880 Sarebbe bello se ci fosse un pezzo di puzzle, o una parola chiave, 283 00:13:02,880 --> 00:13:05,502 che si chiama ciao, che letteralmente dice ciao. 284 00:13:05,502 --> 00:13:06,460 Ma non abbiamo bisogno di questo. 285 00:13:06,460 --> 00:13:09,320 Possiamo avere qualcosa di molto più basso livello, come una stampa generica 286 00:13:09,320 --> 00:13:12,760 il comando, che prende in ingresso, e le stampe quello che vogliamo. 287 00:13:12,760 --> 00:13:14,960 Così ora notare il modello che inizierà ad emergere. 288 00:13:14,960 --> 00:13:19,310 Paren Open, vicino paren è apparentemente abbraccia l'ingresso, 289 00:13:19,310 --> 00:13:21,770 e poi vedo doppio cita su entrambe le estremità. 290 00:13:21,770 --> 00:13:25,110 C'è ancora strano backslash n, ma spero che ora si 291 00:13:25,110 --> 00:13:29,900 può iniziare a visualizzare almeno questo printf sta prendendo in qualche forma di input. 292 00:13:29,900 --> 00:13:31,850 Non facile da usare come Scratch, ma è solo 293 00:13:31,850 --> 00:13:34,920 come aver tappato in qualche valore lì. 294 00:13:34,920 --> 00:13:38,306 >> Va bene, ora andiamo in realtà fare qualcosa con questo. 295 00:13:38,306 --> 00:13:40,930 Così alcuni di voi potrebbe sapere da avendo acquisti la classe prima, 296 00:13:40,930 --> 00:13:42,638 chiacchierato con gli amici, che per molti anni 297 00:13:42,638 --> 00:13:44,590 abbiamo usato qualcosa chiamato l'apparecchio CS50. 298 00:13:44,590 --> 00:13:49,160 Questo era un termine che descrive una tecnologia chiamato la macchina virtuale, che 299 00:13:49,160 --> 00:13:51,870 è un pezzo di software che il vostro predecessori avrebbero scaricare off 300 00:13:51,870 --> 00:13:53,360 il sito web del corso gratuitamente. 301 00:13:53,360 --> 00:13:56,550 Avrebbero anche scaricare un brano gratis di software chiamato un hypervisor, 302 00:13:56,550 --> 00:14:00,590 qualcosa chiamato come VMware, o VirtualBox, o un qualsiasi numero 303 00:14:00,590 --> 00:14:04,450 di altri strumenti, e sul proprio Mac o PC o quello del computer che avevano l'anno scorso 304 00:14:04,450 --> 00:14:06,620 e negli anni passati, hanno raddoppierebbe fare clic su un'icona 305 00:14:06,620 --> 00:14:08,860 per eseguire questo software chiamato l'hypervisor. 306 00:14:08,860 --> 00:14:12,220 E poi all'interno di tale programma avrebbero aperto l'apparecchio CS50. 307 00:14:12,220 --> 00:14:14,710 E l'effetto è che se un predecessore del tuo 308 00:14:14,710 --> 00:14:17,780 era in esecuzione Mac OS o Finestre, lui o lei poi 309 00:14:17,780 --> 00:14:22,910 successivamente aveva una nuova finestra sul loro schermo esecuzione ambiente CS50. 310 00:14:22,910 --> 00:14:27,370 Quindi una macchina virtuale consente di eseguire uno sistema operativo all'interno di un altro, 311 00:14:27,370 --> 00:14:28,785 e questo è esattamente quello che abbiamo fatto. 312 00:14:28,785 --> 00:14:31,410 Durante la maggior parte del corso ci utilizzare un sistema operativo chiamato 313 00:14:31,410 --> 00:14:34,070 Linux, in particolare Ubuntu Linux, e questo 314 00:14:34,070 --> 00:14:37,590 è un modo molto piacevole negli anni passati di assicurandosi che tutti in corso 315 00:14:37,590 --> 00:14:38,840 appena avuto lo stesso ambiente. 316 00:14:38,840 --> 00:14:41,339 Ed è possibile utilizzare qualsiasi tipo di computer che si desidera veramente. 317 00:14:41,339 --> 00:14:43,930 Tra gli aspetti negativi, però, erano era come due gigabyte 318 00:14:43,930 --> 00:14:45,480 per scaricare questa cosa. 319 00:14:45,480 --> 00:14:50,310 Non ha funzionato necessariamente super ben su persone i cui computer che forse solo 320 00:14:50,310 --> 00:14:54,570 aveva un concerto o così di RAM, o no troppi gigahertz di velocità della CPU, 321 00:14:54,570 --> 00:14:56,750 e così quest'anno, per questo ed altri motivi, 322 00:14:56,750 --> 00:14:59,140 siamo stati in transizione a questo ambiente. 323 00:14:59,140 --> 00:15:03,730 Il cosiddetto CS50 IDE, che è basato su software open source, 324 00:15:03,730 --> 00:15:07,380 e una piattaforma supportata che una società denominata Cloud9 325 00:15:07,380 --> 00:15:11,110 sostiene in Europa, che ci permette di avere essenzialmente 326 00:15:11,110 --> 00:15:15,770 che stesso ambiente esattamente come in anni passati, ma nel cosiddetto cloud. 327 00:15:15,770 --> 00:15:17,532 >> Allora, qual è la nuvola? 328 00:15:17,532 --> 00:15:20,480 Probabilmente avete cliccato la sua icona sul vostro Mac o PC. 329 00:15:20,480 --> 00:15:22,210 Che cos'è il cloud? 330 00:15:22,210 --> 00:15:22,709 Sì? 331 00:15:22,709 --> 00:15:25,880 332 00:15:25,880 --> 00:15:26,780 Un po 'più forte. 333 00:15:26,780 --> 00:15:30,510 334 00:15:30,510 --> 00:15:31,010 Già. 335 00:15:31,010 --> 00:15:33,770 E 'solo un mucchio di computer altrove che memorizzare i dati ed eseguire 336 00:15:33,770 --> 00:15:34,880 software e simili. 337 00:15:34,880 --> 00:15:39,390 Quindi è davvero solo per la parola de jure di descrivere [? affittabili?] 338 00:15:39,390 --> 00:15:40,930 i computer che vivono altrove. 339 00:15:40,930 --> 00:15:42,810 Che voi, voi stessi, non necessariamente possedere. 340 00:15:42,810 --> 00:15:45,256 Così, quando i dati, o il vostro programmi, sono in the cloud, 341 00:15:45,256 --> 00:15:47,630 significa solo che è su qualcuno di altro computer altrove, 342 00:15:47,630 --> 00:15:50,510 e non, molto probabilmente, il vostro laptop o desktop fisico. 343 00:15:50,510 --> 00:15:52,990 Ed è quello che CS50 IDE ora è. 344 00:15:52,990 --> 00:15:55,670 >> D'ora in poi si passa a un certo URL che vi introdurrà 345 00:15:55,670 --> 00:16:00,090 a, nel problem set 1, entro la fine settimana, che poi, dopo il login, 346 00:16:00,090 --> 00:16:01,480 dare questo ambiente. 347 00:16:01,480 --> 00:16:03,896 E molto Scratch come ha avuto un alcuni pannelli differenti coinvolti, 348 00:16:03,896 --> 00:16:06,030 così fa IDE CS50 hanno esattamente questo. 349 00:16:06,030 --> 00:16:09,480 In alto a sinistra qui, sei andando a vedere un file browser familiare. 350 00:16:09,480 --> 00:16:11,930 Così uno dei file che si messo in questo ambiente 351 00:16:11,930 --> 00:16:13,346 sono solo andando per essere elencati qui. 352 00:16:13,346 --> 00:16:14,350 File e cartelle. 353 00:16:14,350 --> 00:16:16,790 In alto a destra qui, si sta andando a vedere un luogo 354 00:16:16,790 --> 00:16:18,420 dove si può effettivamente scrivere il codice. 355 00:16:18,420 --> 00:16:21,860 Inizialmente in C, nel corso della termine in PHP e JavaScript, 356 00:16:21,860 --> 00:16:24,739 e, forse per finale progetti, Ruby o Java o Python 357 00:16:24,739 --> 00:16:27,280 o un qualsiasi numero di lingue sono supportato in questo ambiente. 358 00:16:27,280 --> 00:16:30,130 Non è affatto legato a CS50 in particolare. 359 00:16:30,130 --> 00:16:33,390 >> E poi in basso qui, specialmente per quelli più a suo agio, 360 00:16:33,390 --> 00:16:35,590 hai qualcosa chiamato una finestra di terminale. 361 00:16:35,590 --> 00:16:38,770 E questa finestra di terminale permette di eseguire qualsiasi comando che si 362 00:16:38,770 --> 00:16:40,860 desiderare in questo ambiente cloud. 363 00:16:40,860 --> 00:16:42,860 Esso consente di installare alcun software aggiuntivo 364 00:16:42,860 --> 00:16:46,810 che si desidera perché hai cosiddetto radice, o di amministratore privilegi. 365 00:16:46,810 --> 00:16:49,930 In altre parole, anche se questo è in definitiva ospitata in the cloud, 366 00:16:49,930 --> 00:16:52,400 e anche se abbiamo semplificato in qualche misura 367 00:16:52,400 --> 00:16:57,110 Per impostazione predefinita, letteralmente l'introduzione, grazie a Dan Armendariz, e Dino, 368 00:16:57,110 --> 00:17:01,070 e Dan Bradley nella squadra di CS50 sulla passato molti mesi, una meno confortevole 369 00:17:01,070 --> 00:17:05,140 modalità che nasconde un sacco di distrazioni inizialmente confusione. 370 00:17:05,140 --> 00:17:10,119 Tutto esiste per rappresentare un computer generico 371 00:17:10,119 --> 00:17:12,319 che si potrebbe utilizzare nel mondo reale. 372 00:17:12,319 --> 00:17:15,640 >> Che cosa significa tutto questo, e cosa possiamo realmente fare con esso? 373 00:17:15,640 --> 00:17:19,124 Facciamo in realtà dare uno sguardo a un programma. 374 00:17:19,124 --> 00:17:21,290 Quindi ho intenzione di aprire il ambiente reale qui, 375 00:17:21,290 --> 00:17:23,894 che è solo la nostra Chrome del browser, che potrebbe essere di Firefox, 376 00:17:23,894 --> 00:17:26,640 potrebbe essere Internet Explorer, o qualche altro browser pure. 377 00:17:26,640 --> 00:17:28,400 E 'pieno proiettato qui, per il momento. 378 00:17:28,400 --> 00:17:31,580 E voglio davvero prendere in giro a parte ciò che questo programma è stato. 379 00:17:31,580 --> 00:17:36,170 Quindi, diamo uno sguardo, zoomando fino alto, a quello che ho fatto, e come sono arrivato qui. 380 00:17:36,170 --> 00:17:38,315 Quindi, ecco quelli esatto stesse linee di codice. 381 00:17:38,315 --> 00:17:40,440 Quindi questa è la dichiarazione, come lei ha ricordato in precedenza. 382 00:17:40,440 --> 00:17:42,580 La funzione che dice ciao. 383 00:17:42,580 --> 00:17:45,870 Le parentesi graffe, su linea quattro e la linea a sei, 384 00:17:45,870 --> 00:17:49,290 presumibilmente tipo di busta quella linea di associarlo 385 00:17:49,290 --> 00:17:50,890 con l'essenza del mio programma. 386 00:17:50,890 --> 00:17:54,890 Così infatti, questa parola chiave principale, che è lassù sulla linea tre, 387 00:17:54,890 --> 00:17:59,450 si può pensare che come l'equivalente di che, quando la bandiera verde cliccato, 388 00:17:59,450 --> 00:18:01,080 bloccare in Scratch. 389 00:18:01,080 --> 00:18:05,280 Ecco, questo è tutto quello che abbiamo qui, è quando bandiera verde cliccato, stampa, o dire, 390 00:18:05,280 --> 00:18:06,700 Ciao mondo. 391 00:18:06,700 --> 00:18:11,210 >> Ma facciamo una supposizione, ora, a quello che questa prima, linea più arcano, è. 392 00:18:11,210 --> 00:18:15,100 Sharp comprendono, aperto ad angolo staffa I / O standard puntino h, 393 00:18:15,100 --> 00:18:17,320 chiudere staffa angolare. 394 00:18:17,320 --> 00:18:19,850 Che cosa è che forse facendo, soprattutto se hai programmato 395 00:18:19,850 --> 00:18:21,390 prima in un'altra lingua. 396 00:18:21,390 --> 00:18:21,890 Sì? 397 00:18:21,890 --> 00:18:22,765 >> PUBBLICO: [incomprensibile] 398 00:18:22,765 --> 00:18:25,095 399 00:18:25,095 --> 00:18:25,970 DAVID J. MALAN: Sì. 400 00:18:25,970 --> 00:18:26,470 Esattamente. 401 00:18:26,470 --> 00:18:29,455 Quindi questo ti dà accesso a una biblioteca, per così dire, di funzioni. 402 00:18:29,455 --> 00:18:31,830 E una libreria di funzioni è funzioni che qualcun altro 403 00:18:31,830 --> 00:18:34,406 ha scritto, sia di recente o molto tempo fa, in modo da 404 00:18:34,406 --> 00:18:35,780 non c'è bisogno di reinventare la ruota. 405 00:18:35,780 --> 00:18:39,020 Ad esempio, non lo facciamo devono sapere, nel 2015, 406 00:18:39,020 --> 00:18:42,280 come scrivere il codice che mette un personaggio sul mio schermo. 407 00:18:42,280 --> 00:18:44,820 Qualcun altro ha pensato che con la funzione printf 408 00:18:44,820 --> 00:18:47,280 modo che io possa ordinare di astratto lontano da quello, o strato 409 00:18:47,280 --> 00:18:49,350 in cima al suo codice, e ora basta prendere 410 00:18:49,350 --> 00:18:52,760 per scontato che qualsiasi programma scrivo può stampare qualcosa sullo schermo. 411 00:18:52,760 --> 00:18:58,150 Quindi questa prima linea lì a passo uno comprende il cosiddetto file di intestazione 412 00:18:58,150 --> 00:18:59,980 per la libreria standard. 413 00:18:59,980 --> 00:19:02,630 Quindi vedi, la lingua in che ora stiamo lavorando 414 00:19:02,630 --> 00:19:05,010 aveva una libreria standard con un sacco di funzioni. 415 00:19:05,010 --> 00:19:07,240 Printf è uno di loro, e che prima riga di codice 416 00:19:07,240 --> 00:19:10,040 me significa dare accesso a quelle funzioni, in modo che io 417 00:19:10,040 --> 00:19:12,300 non c'è bisogno di reinventare la ruota. 418 00:19:12,300 --> 00:19:15,940 >> Ora andiamo alla finestra in basso e fare esattamente quello che ho fatto prima. 419 00:19:15,940 --> 00:19:18,520 Poco fa, quando ero sfrecciano attraverso il codice, 420 00:19:18,520 --> 00:19:24,540 scrivendo tutto, per la prima volta, Ho molto velocemente digitato, faccio ciao. 421 00:19:24,540 --> 00:19:28,250 Che cosa era che tutto su sarebbe indovinare? 422 00:19:28,250 --> 00:19:29,150 Che cosa stavo facendo? 423 00:19:29,150 --> 00:19:29,649 Sì? 424 00:19:29,649 --> 00:19:31,810 425 00:19:31,810 --> 00:19:32,310 Non importa. 426 00:19:32,310 --> 00:19:32,970 Va bene. 427 00:19:32,970 --> 00:19:33,492 Già. 428 00:19:33,492 --> 00:19:34,450 PUBBLICO: compilarlo. 429 00:19:34,450 --> 00:19:34,700 DAVID J. MALAN: Sì. 430 00:19:34,700 --> 00:19:35,770 E 'stato solo compilarlo. 431 00:19:35,770 --> 00:19:36,270 Destra? 432 00:19:36,270 --> 00:19:39,280 Anche se questo è completamente sconosciuto per te, abbastanza inglese come. 433 00:19:39,280 --> 00:19:41,155 Non è certamente zeri e quelli, quindi ho ancora 434 00:19:41,155 --> 00:19:44,220 necessario eseguire attraverso quella cosiddetta il programma, un compilatore, che sta andando 435 00:19:44,220 --> 00:19:46,060 prendere come input e produrre output. 436 00:19:46,060 --> 00:19:48,270 E almeno, per ora, in questo ambiente Linux, 437 00:19:48,270 --> 00:19:51,030 ma questo non è un prerequisito, questo è solo dove potremo iniziare, 438 00:19:51,030 --> 00:19:53,960 in genere si interagisce con sistemi informatici come questo 439 00:19:53,960 --> 00:19:55,770 da una cosiddetta linea di comando. 440 00:19:55,770 --> 00:19:57,790 Così con un lampeggiante pronta e la tastiera, 441 00:19:57,790 --> 00:20:01,630 e non tanto il mouse, e non tanto finestre e le icone e menu, 442 00:20:01,630 --> 00:20:02,980 piuttosto tutto è testuale. 443 00:20:02,980 --> 00:20:06,180 E anche se questo si sente, in un primo momento sguardo, forse, come un passo indietro, 444 00:20:06,180 --> 00:20:08,437 in realtà è molto più modo potente ed espressiva 445 00:20:08,437 --> 00:20:10,270 di controllare un computer tanto più che si, 446 00:20:10,270 --> 00:20:12,950 te stesso, diventare più comodo da meno. 447 00:20:12,950 --> 00:20:16,790 E 'intenzione di consentire di fare un sacco più cose che solo ciò che Microsoft 448 00:20:16,790 --> 00:20:20,390 o Apple permette di fare con il loro sistema operativo grafico. 449 00:20:20,390 --> 00:20:23,270 >> Così, quando ho colpito Enter, ora, non succede nulla questa volta 450 00:20:23,270 --> 00:20:25,960 perché a quanto pare la ciao programma è aggiornato. 451 00:20:25,960 --> 00:20:28,250 E quello che era il comando Ho eseguito dopo? 452 00:20:28,250 --> 00:20:32,370 Dot taglio su ciao, e ciao mondo. 453 00:20:32,370 --> 00:20:34,350 Ora facciamo un passo indietro solo per un momento. 454 00:20:34,350 --> 00:20:39,510 Si scopre che fanno ciao è solo un modo semplificato di compilazione di un programma. 455 00:20:39,510 --> 00:20:41,670 Diciamo solo introduciamo un pezzo di gergo, 456 00:20:41,670 --> 00:20:43,470 ma poi allontanarsi da esso, dal momento che non è 457 00:20:43,470 --> 00:20:46,640 tutto ciò che interessa per scopi di oggi. 458 00:20:46,640 --> 00:20:51,000 Il compilatore che andremo a iniziare a utilizzare si chiama Clang, per il linguaggio C. 459 00:20:51,000 --> 00:20:54,280 E questo è un programma che è eseguito solo come abbiamo fatto nella riga di comando lì. 460 00:20:54,280 --> 00:20:56,580 E così, se voglio compilare un programma che 461 00:20:56,580 --> 00:21:00,790 hanno scritto in un file chiamato ciao puntino c, ho letteralmente basta digitare clang ciao c 462 00:21:00,790 --> 00:21:02,100 entrare. 463 00:21:02,100 --> 00:21:04,880 >> La cosa divertente è, per ragioni storiche, 464 00:21:04,880 --> 00:21:07,750 se non si specifica il il nome del programma 465 00:21:07,750 --> 00:21:11,690 che voglio uscita, se non lo faccio specificare un nome file per quegli zeri 466 00:21:11,690 --> 00:21:14,990 e quelli, molto strano anni fa Convenzione è stata adottata 467 00:21:14,990 --> 00:21:17,390 dove si sentiva una specie di buona risposta, al momento, 468 00:21:17,390 --> 00:21:21,650 bene facciamo solo arbitrariamente chiamare il primo programma si compila un punto fuori. 469 00:21:21,650 --> 00:21:22,900 Una viene prima dell'alfabeto. 470 00:21:22,900 --> 00:21:23,920 Fuori, è l'uscita. 471 00:21:23,920 --> 00:21:26,210 Quindi chiameremo il programma Per impostazione predefinita, un punto fuori. 472 00:21:26,210 --> 00:21:29,550 E va bene, perché se voglio eseguire il programma in questo testo base 473 00:21:29,550 --> 00:21:33,590 ambiente, mi basta digitare dot taglio su un punto fuori entrare. 474 00:21:33,590 --> 00:21:35,250 E sarebbe eseguito esattamente come prima. 475 00:21:35,250 --> 00:21:36,880 Vediamo quindi che veloce reale. 476 00:21:36,880 --> 00:21:40,370 >> Quindi, se torno al mio codice sorgente in CS50 IDE, 477 00:21:40,370 --> 00:21:47,860 e io invece faccio questo, clang ciao culla c entrare, avviso nulla sembra accadere, 478 00:21:47,860 --> 00:21:49,790 ma quasi sempre questo ambiente Linux, 479 00:21:49,790 --> 00:21:53,310 quando nulla di male sembra accadere, che vuol dire qualcosa di buono realmente accaduto. 480 00:21:53,310 --> 00:21:56,270 Se non vedi un errore messaggio, tutto è probabilmente bene. 481 00:21:56,270 --> 00:22:01,930 E in effetti, se io ora faccio punto tagliano un punto Entro fuori, ho eseguito il mio stesso programma. 482 00:22:01,930 --> 00:22:04,610 Ho ancora il programma ciao da prima perché in effetti, è 483 00:22:04,610 --> 00:22:07,430 sta per essere molto più bello solo digitare fare invece di ricordare 484 00:22:07,430 --> 00:22:10,240 questi incantesimi di comandi, ma vediamo come noi 485 00:22:10,240 --> 00:22:12,890 potrebbe migliorare su questo, comunque. 486 00:22:12,890 --> 00:22:15,340 >> Così, questo è il comando per compilare il codice. 487 00:22:15,340 --> 00:22:19,100 Questo è il comando da eseguire il codice compilato successivamente. 488 00:22:19,100 --> 00:22:20,546 Come è possibile specificare un nome di file? 489 00:22:20,546 --> 00:22:22,670 Beh diciamo solo introduciamo un altro pezzo di gergo. 490 00:22:22,670 --> 00:22:24,461 Quando sei in questo ambiente basato su testo, 491 00:22:24,461 --> 00:22:27,400 si sta andando a voler specificare cose chiamate argomenti della riga di comando. 492 00:22:27,400 --> 00:22:31,380 Che è solo un modo elegante per dire, altre parole al prompt 493 00:22:31,380 --> 00:22:33,860 modificare il comportamento di qualsiasi programma che si sta eseguendo. 494 00:22:33,860 --> 00:22:37,320 Così in particolare il programma sono esecuzione, digitando il nome clang, 495 00:22:37,320 --> 00:22:38,504 è il programma chiamato Clang. 496 00:22:38,504 --> 00:22:40,920 Quindi questo è o la vecchia scuola equivalente di un doppio clic 497 00:22:40,920 --> 00:22:42,860 in Microsoft Word o icona di qualche programma. 498 00:22:42,860 --> 00:22:46,360 Sono invece solo digitando il suo nome, ma in questa versione del comando, 499 00:22:46,360 --> 00:22:51,334 Allora ho trattino o spazio ciao ciao spazio puntino c. 500 00:22:51,334 --> 00:22:53,500 Quindi, anche se non hai mai giocato in questo mondo prima, 501 00:22:53,500 --> 00:22:58,160 basta prendere una congettura che cosa fa precipitare o ciao fare? 502 00:22:58,160 --> 00:23:00,620 O che cosa dice clangore di fare? 503 00:23:00,620 --> 00:23:01,386 Già. 504 00:23:01,386 --> 00:23:02,455 >> PUBBLICO: [incomprensibile] 505 00:23:02,455 --> 00:23:03,330 DAVID J. MALAN: Sì. 506 00:23:03,330 --> 00:23:08,614 Imposta solo l'uscita del file per essere ciao invece del più sciocco un punto fuori. 507 00:23:08,614 --> 00:23:09,780 E, in effetti, proviamo questo. 508 00:23:09,780 --> 00:23:14,250 Quindi, se io ora faccio, prima facciamo questo, r m ciao. 509 00:23:14,250 --> 00:23:15,590 Questo è rimuovere. 510 00:23:15,590 --> 00:23:18,450 E sta andando a dire rimuovere file regolare ciao, che 511 00:23:18,450 --> 00:23:22,210 è inutilmente arcano, ma solo mezzi fanno si desidera eliminare il file, 512 00:23:22,210 --> 00:23:23,230 e ho tipo S per Sì. 513 00:23:23,230 --> 00:23:27,340 E notare, se si getta uno sguardo in alto a sinistra, lo ha fatto sparire da lassù. 514 00:23:27,340 --> 00:23:32,180 Vorrei ora fare clang trattino o, e Ho intenzione di andare avanti e fare ciao, 515 00:23:32,180 --> 00:23:34,890 in tutte le protezioni, ciao puntino c. 516 00:23:34,890 --> 00:23:37,775 Ora, se faccio barra puntino ciao, che cosa ci si può aspettare? 517 00:23:37,775 --> 00:23:41,240 518 00:23:41,240 --> 00:23:42,430 >> Forse è case sensitive. 519 00:23:42,430 --> 00:23:43,070 Forse non è. 520 00:23:43,070 --> 00:23:44,030 Vediamo. 521 00:23:44,030 --> 00:23:45,230 Nessun file o directory con questo nome. 522 00:23:45,230 --> 00:23:47,438 E possiamo tipo di imbrogliare solo guardando in alto a sinistra. 523 00:23:47,438 --> 00:23:49,630 Quello che facevo io, ovviamente, salvare il programma come? 524 00:23:49,630 --> 00:23:51,070 All Caps ciao. 525 00:23:51,070 --> 00:23:53,020 Così infatti, che è in corso per fare la differenza. 526 00:23:53,020 --> 00:23:54,540 Così ora ciao mondo è tornato. 527 00:23:54,540 --> 00:23:56,969 Ora, questo è tutto bello e buono, e tutti molto noiose, 528 00:23:56,969 --> 00:23:59,760 a sorta di ottenere impantanarsi in questi dettagli, ma la loro comprensione 529 00:23:59,760 --> 00:24:00,500 è buono. 530 00:24:00,500 --> 00:24:02,675 >> Digitando a queste sempre più lunghi incantesimi 531 00:24:02,675 --> 00:24:05,980 non sta per essere particolarmente divertimento, così la gente in tutto il mondo 532 00:24:05,980 --> 00:24:08,260 inventato un altro programma, alcuni anni fa, chiamato 533 00:24:08,260 --> 00:24:12,190 fare, che molto semplicemente permette di digitare make, 534 00:24:12,190 --> 00:24:14,530 il nome del programma si vuole fare, e fare 535 00:24:14,530 --> 00:24:18,580 è intelligente nel senso che sarà in la cartella corrente, alias di directory, 536 00:24:18,580 --> 00:24:21,440 e se si dispone di un file chiamato ciao dot c, 537 00:24:21,440 --> 00:24:25,800 che è il file che verrà compilato per voi in un programma chiamato ciao. 538 00:24:25,800 --> 00:24:29,950 Quindi è un modo molto più semplice di facendo i comandi più criptici 539 00:24:29,950 --> 00:24:30,800 che abbiamo fatto in precedenza. 540 00:24:30,800 --> 00:24:34,080 E abbiamo pre-configurato CS50 IDE per conoscere 541 00:24:34,080 --> 00:24:38,560 che dovrebbe fare precipitare o ed un certo numero di altre bandiere, o argomenti della riga di comando, 542 00:24:38,560 --> 00:24:40,670 che vedremo fra poco. 543 00:24:40,670 --> 00:24:43,700 >> Ma veniamo ora effettivamente fare qualcosa di più interessante. 544 00:24:43,700 --> 00:24:46,950 Basta digitando mondo ciao a tutti il tempo non è poi così interessante. 545 00:24:46,950 --> 00:24:52,280 Così mi permetta di andare avanti e il cambiamento questo programma e dire, ciao Davide. 546 00:24:52,280 --> 00:24:54,120 Ora ho intenzione di andare qui. 547 00:24:54,120 --> 00:24:57,360 Ho intenzione di andare avanti e fare fare ciao. 548 00:24:57,360 --> 00:25:00,652 E ancora adesso si sta vedendo farti sta mostrando il più a lungo 549 00:25:00,652 --> 00:25:03,360 sequenza di comandi che è facendo perché abbiamo pre-configurato 550 00:25:03,360 --> 00:25:05,200 in questo modo, ma noi non devono preoccuparsi per ora 551 00:25:05,200 --> 00:25:10,735 quello che sta facendo altro quello che è dot compilazione ridurre drasticamente ciao, ciao mondo. 552 00:25:10,735 --> 00:25:14,969 553 00:25:14,969 --> 00:25:15,510 Cosa c'è che non va? 554 00:25:15,510 --> 00:25:16,177 Già. 555 00:25:16,177 --> 00:25:17,370 >> PUBBLICO: [incomprensibile] 556 00:25:17,370 --> 00:25:18,203 >> DAVID J. MALAN: Sì. 557 00:25:18,203 --> 00:25:19,600 Così, errore noobie. 558 00:25:19,600 --> 00:25:22,394 Ho notato questo è super sottile, ma l'asterisco qui, nella scheda, 559 00:25:22,394 --> 00:25:25,060 semplicemente significa che non avete salvato, e browser e altri programmi 560 00:25:25,060 --> 00:25:25,930 fare questo a volte. 561 00:25:25,930 --> 00:25:27,939 Quindi il controllo s o comando s dovrebbe salvarlo. 562 00:25:27,939 --> 00:25:29,730 Ora lasciatemi andare avanti e ri-eseguire il programma. 563 00:25:29,730 --> 00:25:33,360 564 00:25:33,360 --> 00:25:34,260 Ricompilato. 565 00:25:34,260 --> 00:25:36,050 A destra, quindi è un processo multi-step. 566 00:25:36,050 --> 00:25:39,400 Nessuno dei quali è particolarmente complesso, ma ogni volta che cambia il file, 567 00:25:39,400 --> 00:25:43,450 abbiamo bisogno di cambiare la risultante zero e uno, e barra puntino ciao. 568 00:25:43,450 --> 00:25:43,950 Wow. 569 00:25:43,950 --> 00:25:46,450 Quindi questo è molto deludente che abbiamo appena stampato fuori questo. 570 00:25:46,450 --> 00:25:48,360 Facciamo le cose un poco più dinamico, ora. 571 00:25:48,360 --> 00:25:52,280 >> Beh, si scopre, che come Scratch, C supporta variabili. 572 00:25:52,280 --> 00:25:54,790 E si scopre se si vuole avere una variabile che memorizza, 573 00:25:54,790 --> 00:25:57,300 non un numero come noi tipicamente fatto con Scratch, 574 00:25:57,300 --> 00:26:01,300 ma come una parola, o un frase o un nome, si 575 00:26:01,300 --> 00:26:04,837 può specificare una variabile essere di tipo stringa. 576 00:26:04,837 --> 00:26:06,670 Quindi vedremo più questi in un momento, 577 00:26:06,670 --> 00:26:09,090 ma si scopre che C, e un sacco di lingue come esso, 578 00:26:09,090 --> 00:26:11,240 hanno molto specifici tipi di variabili. 579 00:26:11,240 --> 00:26:13,810 Non è proprio come l'algebra, dove si ottiene una x, un yez 580 00:26:13,810 --> 00:26:16,940 e questi sono solo sempre numeri, in un linguaggio di programmazione 581 00:26:16,940 --> 00:26:20,030 è possibile memorizzare i numeri, è possibile memorizzare singoli caratteri, 582 00:26:20,030 --> 00:26:24,619 è possibile memorizzare intere parole, si potrebbe memorizzare immagini intere, file audio interi, 583 00:26:24,619 --> 00:26:25,160 e simili. 584 00:26:25,160 --> 00:26:28,362 Quindi abbiamo bisogno di specificare che cosa il tipo di variabile è nostro. 585 00:26:28,362 --> 00:26:31,570 E per convenzione ho intenzione di chiamare il mio variabile s solo perché è succinta, 586 00:26:31,570 --> 00:26:33,510 e s sta per stringa. 587 00:26:33,510 --> 00:26:36,400 >> E poi ho intenzione di archiviare all'interno di questa variabile, 588 00:26:36,400 --> 00:26:39,570 proprio come con Scratch quando uso il blocco insieme, 589 00:26:39,570 --> 00:26:41,950 Ho intenzione di utilizzare il operatore di assegnamento in C, 590 00:26:41,950 --> 00:26:45,290 che abbastanza bene è la parità segno, ma il segno di uguale fa questo. 591 00:26:45,290 --> 00:26:53,220 Si muove qualcosa da destra in sinistra dell'espressione. 592 00:26:53,220 --> 00:26:57,170 Quindi quello che ho fatto, per essere chiari nella linea a cinque, è che ho dichiarato una variabile. 593 00:26:57,170 --> 00:27:01,284 Ho detto il computer, dammi memoria per una variabile, lo chiamano s, 594 00:27:01,284 --> 00:27:03,950 e sapere in anticipo che sto andando da mettere una stringa in esso. 595 00:27:03,950 --> 00:27:05,950 E una stringa è solo un sequenza di caratteri. 596 00:27:05,950 --> 00:27:09,190 Si tratta di una parola o una frase o un paragrafo, ma è una sequenza di caratteri. 597 00:27:09,190 --> 00:27:10,610 Non e 'numeri. 598 00:27:10,610 --> 00:27:13,800 Che cosa sono io stringa intenzione di essere mettendo in quella variabile? 599 00:27:13,800 --> 00:27:16,185 Beh, a quanto pare citare unquote, "Hannah". 600 00:27:16,185 --> 00:27:17,810 Ora notate il modello che sta emergendo. 601 00:27:17,810 --> 00:27:19,260 C'è un'espressione mano sinistra. 602 00:27:19,260 --> 00:27:21,810 C'è una espressione mano destra, separate dal segno uguale. 603 00:27:21,810 --> 00:27:24,390 E basta prendere una supposizione, se sconosciuto comunque, 604 00:27:24,390 --> 00:27:27,430 con ciò che il punto e virgola sta facendo. 605 00:27:27,430 --> 00:27:28,865 Che cosa sta facendo presumibilmente per noi? 606 00:27:28,865 --> 00:27:29,365 Sì? 607 00:27:29,365 --> 00:27:29,840 >> PUBBLICO: [incomprensibile] 608 00:27:29,840 --> 00:27:29,980 >> DAVID J. MALAN: Sì. 609 00:27:29,980 --> 00:27:31,170 E 'solo che chiude la linea. 610 00:27:31,170 --> 00:27:31,669 Destra? 611 00:27:31,669 --> 00:27:34,260 I computer vogliono essere senza mezzi termini ha detto, letteralmente, cosa fare. 612 00:27:34,260 --> 00:27:36,343 Come il burro di arachidi e Esempio gelatina di sandwich, 613 00:27:36,343 --> 00:27:39,360 se non si specifica cosa si intende esattamente, 614 00:27:39,360 --> 00:27:42,190 potrebbe essere lasciato al giudizio o errori. 615 00:27:42,190 --> 00:27:44,890 Il punto e virgola significa, questo è tutto per questo comando. 616 00:27:44,890 --> 00:27:48,310 E 'essere super preciso, ed è una cosa molto facile lasciare fuori. 617 00:27:48,310 --> 00:27:52,240 Così ora il programma non sembra comportarsi in modo diverso fino a quando ho 618 00:27:52,240 --> 00:27:53,500 renderlo più dinamico. 619 00:27:53,500 --> 00:27:57,107 Quindi, piuttosto che duro potrebbe mia nome, mi permetta di mettere un valore segnaposto. 620 00:27:57,107 --> 00:28:00,190 E si scopre che, e so che questo dall'aver letto la documentazione, 621 00:28:00,190 --> 00:28:04,080 e la funzione utilizzata per anni, che printf è stato progettato per essere dinamico. 622 00:28:04,080 --> 00:28:07,510 Non è necessario conoscere in anticipo quali parole si desidera mettere in esso. 623 00:28:07,510 --> 00:28:11,290 È invece possibile avere un segnaposto, come cento s, che 624 00:28:11,290 --> 00:28:15,500 sta per dire la del computer, ha messo una stringa qui. 625 00:28:15,500 --> 00:28:17,740 >> Quale stringa vogliamo mettere lì? 626 00:28:17,740 --> 00:28:22,430 Will scopre che tra queste parentesi, che ricordano, delimitano 627 00:28:22,430 --> 00:28:28,020 l'input per una funzione, se avete virgole lista delle cose separate qui, 628 00:28:28,020 --> 00:28:31,790 in realtà passiamo in più ingressi a una funzione. 629 00:28:31,790 --> 00:28:33,901 Quindi, solo un po 'd'Scratch blocchi, non si potrebbe 630 00:28:33,901 --> 00:28:36,150 hanno giocato con loro per i vostri progetti ancora o non del tutto, 631 00:28:36,150 --> 00:28:38,250 alcuni blocchi Scratch hanno due ingressi. 632 00:28:38,250 --> 00:28:41,220 Due scatole bianche che puoi digitare numeri o parole in. 633 00:28:41,220 --> 00:28:45,210 Quindi, per non avere funzioni come C printf che può assumere due ingressi. 634 00:28:45,210 --> 00:28:48,050 E di nuovo, questo virgola li sta separando. 635 00:28:48,050 --> 00:28:51,070 Quindi, in inglese, di nuovo anche se non hai mai programmato prima, 636 00:28:51,070 --> 00:28:55,320 da tale logica printf è una funzione, prende due ingressi, uno dei quali 637 00:28:55,320 --> 00:28:58,810 è un segnaposto, che cosa sperate printf sta andando a che fare con questo ingresso? 638 00:28:58,810 --> 00:29:01,470 639 00:29:01,470 --> 00:29:03,220 Sta andando a dire ciao Hannah, si spera. 640 00:29:03,220 --> 00:29:05,274 Quindi, per fare questo abbiamo bisogno di salvarlo. 641 00:29:05,274 --> 00:29:06,190 Ho intenzione di ridurre. 642 00:29:06,190 --> 00:29:10,701 Ho intenzione di tornare qui e dire, fanno ciao entrare. 643 00:29:10,701 --> 00:29:11,200 Oh. 644 00:29:11,200 --> 00:29:14,830 Qualcosa non va, e in realtà questo è abbastanza schiacciante. 645 00:29:14,830 --> 00:29:18,400 Ho sei righe di codice e come 12 linee di errori. 646 00:29:18,400 --> 00:29:22,120 Quindi, guardare avanti a questo. 647 00:29:22,120 --> 00:29:24,260 Allora, cosa sta succedendo qui? 648 00:29:24,260 --> 00:29:27,370 Quindi la migliore regola empirica qui, soprattutto quando si è agli inizi, 649 00:29:27,370 --> 00:29:29,370 non farci distrarre da la roba in basso. 650 00:29:29,370 --> 00:29:31,220 In realtà, ho deliberatamente basta scorrere up 651 00:29:31,220 --> 00:29:33,930 perché molto spesso, un computer è Non tutto ciò luminosa di un dispositivo. 652 00:29:33,930 --> 00:29:35,054 Sta andando a confondersi. 653 00:29:35,054 --> 00:29:37,220 Se vede una cosa che non capisce, 654 00:29:37,220 --> 00:29:40,030 potrebbe confondere altri righe di codice come non corrette, 655 00:29:40,030 --> 00:29:41,649 anche se sono perfettamente bene. 656 00:29:41,649 --> 00:29:43,940 Così si vuole sempre lavorare dall'alto verso il basso attraverso gli errori. 657 00:29:43,940 --> 00:29:47,850 E devo ammettere che questo è Super arcano al momento. 658 00:29:47,850 --> 00:29:50,830 >> Errore, l'uso di non dichiarato stringa di identificazione. 659 00:29:50,830 --> 00:29:52,130 Ti voglio dire standard? 660 00:29:52,130 --> 00:29:53,720 No, volevo dire stringa. 661 00:29:53,720 --> 00:29:55,830 Ed è che punta a, forse è un errore di battitura. 662 00:29:55,830 --> 00:30:00,570 Un po 'come, controllo ortografico in un modo molto geek, ma la ragione qui, 663 00:30:00,570 --> 00:30:02,840 e saprete questo solo con la pratica, è 664 00:30:02,840 --> 00:30:06,390 che si scopre che corda non esiste in C. Infatti, C 665 00:30:06,390 --> 00:30:08,820 è un linguaggio particolarmente vecchio, ed è molto basso livello, 666 00:30:08,820 --> 00:30:11,361 e non fa un sacco di funzioni che si potrebbe avere cresciuti 667 00:30:11,361 --> 00:30:14,620 con se avete, infatti, programmata in Java, come alcuni di voi hanno, 668 00:30:14,620 --> 00:30:16,980 ma si può insegnare cose nuove. 669 00:30:16,980 --> 00:30:20,900 E in effetti, abbiamo fatto questo CS50, anche se alla fine del semestre, 670 00:30:20,900 --> 00:30:23,512 tutte queste ruote di formazione sarà stato tolto, 671 00:30:23,512 --> 00:30:25,220 ciò che facciamo in questi prime due settimane 672 00:30:25,220 --> 00:30:29,830 inizialmente è che abbiamo anche di includere CS50 punto h. 673 00:30:29,830 --> 00:30:31,230 Il che è un file di intestazione. 674 00:30:31,230 --> 00:30:32,440 Più su che in futuro. 675 00:30:32,440 --> 00:30:36,430 >> Si tratta di un file che contiene le funzioni che abbiamo scritto per voi. 676 00:30:36,430 --> 00:30:39,180 E tra queste funzioni è funzioni per l'input 677 00:30:39,180 --> 00:30:43,520 da parte dell'utente, come le stringhe, e numeri e numeri reali, e altro ancora. 678 00:30:43,520 --> 00:30:45,550 Ma ha anche un paio di scorciatoie. 679 00:30:45,550 --> 00:30:48,200 Si definisce un booleano come un tipo di dati. 680 00:30:48,200 --> 00:30:50,340 C non ha vero o falso. 681 00:30:50,340 --> 00:30:53,880 Ma siamo in grado di dare l'idea di vero o falso per mezzo di questa libreria. 682 00:30:53,880 --> 00:30:57,670 E inoltre, non hanno una stringa costruita nel finché non includiamo questa linea. 683 00:30:57,670 --> 00:31:01,090 Quindi, questa riga di codice dice il compilatore, ehi, Clang, guarda 684 00:31:01,090 --> 00:31:03,570 in questo file per un intero mucchio di codice che CS50 685 00:31:03,570 --> 00:31:06,330 ha scritto in modo che chiunque utilizzi questo file 686 00:31:06,330 --> 00:31:09,330 può dare per scontato il caratteristiche che hanno aggiunto. 687 00:31:09,330 --> 00:31:11,220 >> Così ora lasciami andare avanti e cancellare lo schermo, 688 00:31:11,220 --> 00:31:14,178 e se curioso sto solo dicendo di controllo l ogni volta per cancellare lo schermo, 689 00:31:14,178 --> 00:31:15,500 oppure digitare chiaro. 690 00:31:15,500 --> 00:31:19,220 Sto solo andando ad andare avanti ora e tipo fanno ciao, e tutto va bene. 691 00:31:19,220 --> 00:31:22,550 Ancora un'uscita arcana, ma non è un messaggio errato. 692 00:31:22,550 --> 00:31:28,300 Ora, se faccio puntino tagliare ciao, e come a parte, barra punto è sconosciuto ai più. 693 00:31:28,300 --> 00:31:30,430 Significa solo, mezzi punti la directory corrente. 694 00:31:30,430 --> 00:31:33,120 Quindi, se hai mai usato DOS o Linux, o Unix 695 00:31:33,120 --> 00:31:35,410 si potrebbe avere fatto qualcosa come cd dot dot, dove 696 00:31:35,410 --> 00:31:39,220 dot dot significa andare indietro nel tempo, o tornare indietro, o più in alto 697 00:31:39,220 --> 00:31:40,370 nella vostra directory. 698 00:31:40,370 --> 00:31:43,090 Dot significa basta guardare a la directory corrente. 699 00:31:43,090 --> 00:31:45,670 Voglio ciao, che è proprio qui. 700 00:31:45,670 --> 00:31:47,750 E infatti, ora si dice ciao Hannah. 701 00:31:47,750 --> 00:31:51,120 E se cambio di nuovo a Maria, ricompilare 702 00:31:51,120 --> 00:31:55,650 renderebbe ciao, barra puntino ciao, il programma continua a cambiare. 703 00:31:55,650 --> 00:31:58,060 >> Ma questo è ancora un programma piuttosto stupido. 704 00:31:58,060 --> 00:32:00,972 Se voglio spedire questo programma, o dare a un amico, 705 00:32:00,972 --> 00:32:03,430 o dare a Maria o Hannah se è per questo, va bene. 706 00:32:03,430 --> 00:32:07,300 Posso personalizzarlo per entrambi, ma non è mai sta per essere dinamico. 707 00:32:07,300 --> 00:32:10,870 Non possono cambiare una volta che è compilato giù in quelle zero e uno. 708 00:32:10,870 --> 00:32:12,350 Quindi quello che abbiamo fatto qualcosa di più intelligente? 709 00:32:12,350 --> 00:32:17,100 Che cosa succede se, invece di hard-codifica nel programma il nome di questa persona, 710 00:32:17,100 --> 00:32:20,890 cosa succede se abbiamo appena otteniamo la stringa su richiesta? 711 00:32:20,890 --> 00:32:22,430 >> Quindi, in altre parole, mi permetta di fare questo. 712 00:32:22,430 --> 00:32:24,030 Io vado a ricompilare questo programma. 713 00:32:24,030 --> 00:32:25,710 E lasciatemi lo zoom in in fondo ora. 714 00:32:25,710 --> 00:32:29,920 Fai ciao ciao dot barra. 715 00:32:29,920 --> 00:32:31,710 Ora non succede niente. 716 00:32:31,710 --> 00:32:35,860 Possiamo ottenere una rapida volontario per far succedere qualcosa? 717 00:32:35,860 --> 00:32:36,360 Vieni su. 718 00:32:36,360 --> 00:32:37,020 Come ti chiami? 719 00:32:37,020 --> 00:32:37,445 >> PANCHO: Pancho. 720 00:32:37,445 --> 00:32:38,361 >> DAVID J. MALAN: Pacho? 721 00:32:38,361 --> 00:32:39,609 Vieni su. 722 00:32:39,609 --> 00:32:42,150 Una volta arrivati ​​qui, questo è sarà molto deludente, 723 00:32:42,150 --> 00:32:44,060 ma è più interessante di me digitarlo. 724 00:32:44,060 --> 00:32:49,007 Se si vuole andare avanti e digitare il nome, ho fatto questo programma per te. 725 00:32:49,007 --> 00:32:49,840 Basta digitare il proprio nome. 726 00:32:49,840 --> 00:32:52,380 727 00:32:52,380 --> 00:32:53,900 Invio. 728 00:32:53,900 --> 00:32:54,489 Meraviglioso. 729 00:32:54,489 --> 00:32:55,780 Va bene, vi ringrazio molto. 730 00:32:55,780 --> 00:32:56,708 >> PANCHO: Grazie mille. 731 00:32:56,708 --> 00:32:57,636 >> DAVID J. MALAN: OK. 732 00:32:57,636 --> 00:32:59,028 >> [Applausi] 733 00:32:59,028 --> 00:33:00,884 734 00:33:00,884 --> 00:33:01,840 >> E 'stato molto gentile. 735 00:33:01,840 --> 00:33:03,145 Ecco qui. 736 00:33:03,145 --> 00:33:03,770 Che cosa abbiamo fatto? 737 00:33:03,770 --> 00:33:05,930 Così finalmente, almeno, fatto questo programma dinamico. 738 00:33:05,930 --> 00:33:08,400 Ora è ancora certo dal disegno deludente, 739 00:33:08,400 --> 00:33:11,480 ma finalmente abbiamo la capacità ora di scrivere codice in anticipo, molto 740 00:33:11,480 --> 00:33:13,770 come di printf autori, e poi dinamicamente 741 00:33:13,770 --> 00:33:17,550 ADAPT basato sull'ingresso siamo consegnato, sia dal programmatore, 742 00:33:17,550 --> 00:33:20,610 o l'uomo che in realtà interagendo con il programma. 743 00:33:20,610 --> 00:33:22,990 Quindi cerchiamo di realtà ora provare per fare un paio di altri costrutti 744 00:33:22,990 --> 00:33:26,625 e vedere se non possiamo fare i programmi in modo più sofisticato. 745 00:33:26,625 --> 00:33:29,250 Quindi cerchiamo di andare avanti e invece di scrivendo questo uno da zero, 746 00:33:29,250 --> 00:33:31,540 Ho intenzione di andare in oggi codice sorgente, e tutto questo 747 00:33:31,540 --> 00:33:34,290 è disponibile sul corso del sito web, ed è possibile trascinare e rilasciare 748 00:33:34,290 --> 00:33:36,590 nel vostro ambiente Venerdì venire una volta problema 749 00:33:36,590 --> 00:33:38,506 1 set ti dà la istruzioni, o si potrebbe 750 00:33:38,506 --> 00:33:41,200 farlo da riga di comando come bene, ma più a venire a p set 1. 751 00:33:41,200 --> 00:33:44,940 >> Vediamo cosa c'è in questo programma qui chiamato, vipera puntino c. 752 00:33:44,940 --> 00:33:47,970 Ora ho già commentato essa, ma cosa c'è di nuovo? 753 00:33:47,970 --> 00:33:51,230 A prima vista, quale linea di codice è assolutamente nuovo? 754 00:33:51,230 --> 00:33:53,930 755 00:33:53,930 --> 00:33:56,780 Probabilmente non fondamentalmente sconosciuto ora. 756 00:33:56,780 --> 00:33:58,417 >> PUBBLICO: [incomprensibile] 757 00:33:58,417 --> 00:34:00,250 DAVID J. MALAN: Sì, così int x è uguale a ottenere n. 758 00:34:00,250 --> 00:34:03,760 Non abbiamo mai visto nulla di tutto questo prima, ma è probabilmente int 759 00:34:03,760 --> 00:34:08,179 il simbolo per il tipo di variabile, [? da?] un numero intero. 760 00:34:08,179 --> 00:34:09,040 Così int per intero. 761 00:34:09,040 --> 00:34:11,420 E 'solo di essere più succinto. x è solo arbitrario. 762 00:34:11,420 --> 00:34:13,920 x ed y, z sono ancora abbastanza ragionevole per i numeri, 763 00:34:13,920 --> 00:34:16,790 ma generalmente useremo parole una volta i nostri programmi diventano più complessi. 764 00:34:16,790 --> 00:34:18,940 Ottenere int, naturalmente, molto simile stringa di ottenere, 765 00:34:18,940 --> 00:34:21,629 è destinata probabilmente ad ottenere un int da parte dell'utente, 766 00:34:21,629 --> 00:34:23,670 e poi andremo a fare la stessa cosa con a. 767 00:34:23,670 --> 00:34:27,610 E a quanto pare, anche se questo ultima riga, 24, appare più complessa, 768 00:34:27,610 --> 00:34:32,679 sta andando a dire la somma di questo e questo è quest'altra cosa. 769 00:34:32,679 --> 00:34:35,840 >> E notate per cento i probabilmente denota che cosa? 770 00:34:35,840 --> 00:34:38,190 Che ruolo per cento io evidentemente servono? 771 00:34:38,190 --> 00:34:40,739 772 00:34:40,739 --> 00:34:41,719 E 'solo segnaposti. 773 00:34:41,719 --> 00:34:42,219 Destra? 774 00:34:42,219 --> 00:34:45,149 Percentuale s era per le stringhe, cento i è per intero. 775 00:34:45,149 --> 00:34:47,690 Ci sara 'cento f per valore in virgola mobile, che 776 00:34:47,690 --> 00:34:49,273 è solo un numero con una virgola decimale. 777 00:34:49,273 --> 00:34:50,590 In altre parole, un numero reale. 778 00:34:50,590 --> 00:34:55,270 Quindi cerchiamo di realtà compilare questo programmare veloce reale e facciamo in vipera. 779 00:34:55,270 --> 00:34:57,962 Ops. 780 00:34:57,962 --> 00:34:58,670 Buona occasione. 781 00:34:58,670 --> 00:35:02,970 Così notare qui, per tutto questo tempo il mio utente il nome di questo account è jharvard. 782 00:35:02,970 --> 00:35:06,620 Sono in CS50 IDE, alias IDE50. 783 00:35:06,620 --> 00:35:11,030 E adesso in blu qui, è una menzione, ma dall'ambiente, di dove sono. 784 00:35:11,030 --> 00:35:16,050 E infatti, se lo zoom fino alla cima qui, si noti che ho un IDE50 785 00:35:16,050 --> 00:35:19,490 e vedo questa parola, se è sorta di girare la testa di lato, spazio di lavoro. 786 00:35:19,490 --> 00:35:23,890 In poche parole, il fatto che Sto vedendo tilde lavoro barra 787 00:35:23,890 --> 00:35:26,910 significa che in questo testo ambiente dei comandi base, 788 00:35:26,910 --> 00:35:32,300 Io sono nel testo equivalente questa grafica cartella qui. 789 00:35:32,300 --> 00:35:35,730 Così, quando faccio barra puntino vipera, è dire di no regola 790 00:35:35,730 --> 00:35:37,372 di fare bersaglio fermata vipera. 791 00:35:37,372 --> 00:35:39,830 Non so che cosa significa, ma è un male per qualche motivo. 792 00:35:39,830 --> 00:35:43,310 Nessun file o directory con questo nome è ancora più chiaro. 793 00:35:43,310 --> 00:35:45,670 Dove è allora? 794 00:35:45,670 --> 00:35:47,820 In base a dove ho cliccato per aprire il file in precedenza. 795 00:35:47,820 --> 00:35:49,442 Dove potrebbe essere? 796 00:35:49,442 --> 00:35:52,050 >> E 'probabilmente in origine uno w, per Mercoledì, 797 00:35:52,050 --> 00:35:53,960 e posso vedere, anzi, se apro che fino. 798 00:35:53,960 --> 00:35:57,220 C'è sommatore dot C, ma in questo ambiente basato su testo, 799 00:35:57,220 --> 00:35:59,380 ancora una volta, devo essere super esplicito. 800 00:35:59,380 --> 00:36:03,950 Se voglio cambiare directory in fonte di un Mercoledì, ho bisogno di scrivere, 801 00:36:03,950 --> 00:36:07,210 cd fonte spazio uno Mercoledì entrare e ora 802 00:36:07,210 --> 00:36:09,810 le mie rapide modifiche dammi un segnale visivo che 803 00:36:09,810 --> 00:36:12,330 Sono, infatti, altrove nel mio ambiente, 804 00:36:12,330 --> 00:36:15,710 ma ora posso fare fare vipera, sembra funzionare, 805 00:36:15,710 --> 00:36:18,190 dot taglio su vipera, dammi un numero intero. 806 00:36:18,190 --> 00:36:19,080 Uno. 807 00:36:19,080 --> 00:36:20,070 Due. 808 00:36:20,070 --> 00:36:21,630 La somma di uno e due è tre. 809 00:36:21,630 --> 00:36:24,140 Ma se non collaboro, vediamo cosa prendere int fa. 810 00:36:24,140 --> 00:36:25,200 Dammi un intero. 811 00:36:25,200 --> 00:36:26,590 No. 812 00:36:26,590 --> 00:36:27,350 Riprova. 813 00:36:27,350 --> 00:36:29,060 OK. 814 00:36:29,060 --> 00:36:30,520 Belle. 815 00:36:30,520 --> 00:36:32,130 50. 816 00:36:32,130 --> 00:36:32,680 50. 817 00:36:32,680 --> 00:36:33,010 Tutto ok. 818 00:36:33,010 --> 00:36:34,055 Così finalmente collabora. 819 00:36:34,055 --> 00:36:36,430 E questo è parte del funzionalità che queste funzioni 820 00:36:36,430 --> 00:36:37,760 può aver costruito per voi. 821 00:36:37,760 --> 00:36:43,330 >> Così all'interno all'attuazione di ottenere int, cosa programmazione 822 00:36:43,330 --> 00:36:47,990 costruire dalla settimana scorsa è probabilmente in ci costringono a questo comportamento di tentativi, 823 00:36:47,990 --> 00:36:49,962 riprovare, riprovare? 824 00:36:49,962 --> 00:36:51,670 Sì, c'è probabilmente una sorta di loop. 825 00:36:51,670 --> 00:36:54,160 Sta andando a guardare sintatticamente diverso da blocchi di Scratch, 826 00:36:54,160 --> 00:36:55,880 ma questo è davvero cosa c'è all'interno del file. 827 00:36:55,880 --> 00:36:58,505 E in poche settimane ce la faremo effettivamente guardare in biblioteca CS50 828 00:36:58,505 --> 00:37:02,000 da cosa c'è dentro, ma c'è un ciclo che impone esattamente questo. 829 00:37:02,000 --> 00:37:04,840 >> Giochiamo un po 'sciocco gioco qui con questo file. 830 00:37:04,840 --> 00:37:06,550 Condizione zero virgola c. 831 00:37:06,550 --> 00:37:08,960 Stiamo solo andando a generale iniziare a contare da zero. 832 00:37:08,960 --> 00:37:11,220 E continuo scorrere oltre alcune delle cose in alto. 833 00:37:11,220 --> 00:37:15,390 In blu qui, delimitata con tutto di queste stelle e le barre, 834 00:37:15,390 --> 00:37:17,310 quelli di voi che programmare prima, che cos'è? 835 00:37:17,310 --> 00:37:18,690 Perché continuiamo a saltare su di esso? 836 00:37:18,690 --> 00:37:19,110 Che cosa? 837 00:37:19,110 --> 00:37:19,490 >> PUBBLICO: E 'un commento. 838 00:37:19,490 --> 00:37:19,800 >> DAVID J. MALAN: Sì. 839 00:37:19,800 --> 00:37:20,633 E 'solo un commento. 840 00:37:20,633 --> 00:37:24,160 Questo è un commento per l'uomo leggere, che nel nostro caso, 841 00:37:24,160 --> 00:37:27,120 ci dice che cosa il nome del file è, chi lo ha scritto, e che cosa fa, 842 00:37:27,120 --> 00:37:28,610 in modo che non avete per leggere il codice 843 00:37:28,610 --> 00:37:30,110 di sapere che cosa questo file è tutto. 844 00:37:30,110 --> 00:37:33,110 E 'solo una descrizione, ma funzionalmente è irrilevante. 845 00:37:33,110 --> 00:37:35,930 E posso anche eliminarlo dal il mio file e non ha alcun impatto. 846 00:37:35,930 --> 00:37:38,740 Le linee sono questi succosi primi due qui, ora. 847 00:37:38,740 --> 00:37:41,405 int void main è l'equivalente della nostra bandiera verde quando cliccato, 848 00:37:41,405 --> 00:37:44,030 così stiamo andando a lasciare che si tratti per oggi, e ci torneremo, 849 00:37:44,030 --> 00:37:46,940 infine, per quanto int e nulle sono, ma ora, 850 00:37:46,940 --> 00:37:49,500 Noto quello che ho fatto anche in questo caso, è anche possibile, 851 00:37:49,500 --> 00:37:51,736 se si dispone di un in linea commento, se avete 852 00:37:51,736 --> 00:37:54,670 un pensiero che si desidera condividere su una particolare linea di codice, 853 00:37:54,670 --> 00:37:58,910 convenzione in C è quello di fare barra slash, e poi un paio di parole succinte, 854 00:37:58,910 --> 00:38:01,500 Non una frase completa, in genere non un paragrafo, 855 00:38:01,500 --> 00:38:05,310 che spiega solo a voi, o il vostro TF, o altri lettori o colleghi, 856 00:38:05,310 --> 00:38:06,990 ciò che il codice sta facendo. 857 00:38:06,990 --> 00:38:10,150 Quindi, piuttosto che dover guardare a questo e dedurre da linee 858 00:38:10,150 --> 00:38:12,550 nove e 10, ciò è questo modo, in linea di otto 859 00:38:12,550 --> 00:38:14,945 Devo semplicemente dare un commento a chiedere all'utente per un intero, 860 00:38:14,945 --> 00:38:17,820 allora non devo pensare troppo su quali linee nove e 10 sono. 861 00:38:17,820 --> 00:38:19,720 So solo che questo è ciò che collettivamente che stanno facendo. 862 00:38:19,720 --> 00:38:20,460 >> Come? 863 00:38:20,460 --> 00:38:22,060 Bene, ecco la richiesta. 864 00:38:22,060 --> 00:38:23,610 Ecco il ricevere lo int. 865 00:38:23,610 --> 00:38:25,984 E sulla base della precedente comportamento, sembra che get int 866 00:38:25,984 --> 00:38:29,080 è abbastanza intelligente per fare in modo che coopera l'umano e dà 867 00:38:29,080 --> 00:38:30,090 un numero intero. 868 00:38:30,090 --> 00:38:32,270 Ma ora vediamo questo. 869 00:38:32,270 --> 00:38:33,740 E questo ricorda Scratch. 870 00:38:33,740 --> 00:38:36,140 Sto sostenendo che sono analizzando input dell'utente, 871 00:38:36,140 --> 00:38:39,050 ma un po 'impreciso. 872 00:38:39,050 --> 00:38:43,200 E questo apparentemente in C è come esprimiamo un altro caso, un ramo, 873 00:38:43,200 --> 00:38:46,320 un bivio, ma io dire un po 'impreciso. 874 00:38:46,320 --> 00:38:50,470 Qual è l'errore in questo programma? 875 00:38:50,470 --> 00:38:51,610 Chi più indietro? 876 00:38:51,610 --> 00:38:52,223 Già. 877 00:38:52,223 --> 00:38:53,150 >> PUBBLICO: [incomprensibile] zero. 878 00:38:53,150 --> 00:38:54,025 >> DAVID J. MALAN: Sì. 879 00:38:54,025 --> 00:38:57,630 Quindi, se digito pari a zero, prendiamo in considerazione esattamente questo caso caso, o ad angolo, 880 00:38:57,630 --> 00:38:58,450 se vuoi. 881 00:38:58,450 --> 00:39:02,790 Quindi, se digito zero, il che del blocchi sta per prendere a quanto pare? 882 00:39:02,790 --> 00:39:04,660 Il caso o altro? 883 00:39:04,660 --> 00:39:07,340 L'altro, e sta andando a dire, hai scelto un numero negativo. 884 00:39:07,340 --> 00:39:10,476 E infatti, lo zero non si suppone essere positivo o negativo, 885 00:39:10,476 --> 00:39:11,850 e in modo che sarebbe erroneamente. 886 00:39:11,850 --> 00:39:12,930 Sarebbe un errore. 887 00:39:12,930 --> 00:39:14,580 Quindi, come possiamo risolvere questo problema? 888 00:39:14,580 --> 00:39:16,360 Chi non ha mai programmato prima? 889 00:39:16,360 --> 00:39:16,570 Vuoi-- 890 00:39:16,570 --> 00:39:17,480 >> PUBBLICO: [incomprensibile] 891 00:39:17,480 --> 00:39:17,990 >> DAVID J. MALAN: Ritiro? 892 00:39:17,990 --> 00:39:18,570 >> PUBBLICO: [incomprensibile] 893 00:39:18,570 --> 00:39:18,930 >> DAVID J. MALAN: Oh, hai? 894 00:39:18,930 --> 00:39:20,350 Chi non ha mai programmato prima. 895 00:39:20,350 --> 00:39:21,750 Vuoi provare a questo, con la maglietta rossa? 896 00:39:21,750 --> 00:39:22,600 Vieni su. 897 00:39:22,600 --> 00:39:25,320 Oh sì, andiamo su, se non ti dispiace. 898 00:39:25,320 --> 00:39:27,586 In modo da non aver programmato prima, come ti chiami? 899 00:39:27,586 --> 00:39:28,210 LAUREN: Lauren. 900 00:39:28,210 --> 00:39:29,626 DAVID J. MALAN: Lauren, va bene. 901 00:39:29,626 --> 00:39:31,150 Quindi risolvere questo bug per noi. 902 00:39:31,150 --> 00:39:35,070 Tu non hai visto C, presumibilmente, e probabilmente nessun altro linguaggio. 903 00:39:35,070 --> 00:39:38,380 Quindi risolvere questo programma per noi. 904 00:39:38,380 --> 00:39:39,100 Piacere di conoscerti ya. 905 00:39:39,100 --> 00:39:39,615 Nessuna pressione. 906 00:39:39,615 --> 00:39:40,156 LAUREN: Sì. 907 00:39:40,156 --> 00:39:43,350 908 00:39:43,350 --> 00:39:46,270 >> DAVID J. MALAN: Ma ancora una volta, se questo gioco d'azzardo va secondo i piani, 909 00:39:46,270 --> 00:39:48,350 l'asporto qui sarà essere, solo ancora una volta, per iniziare 910 00:39:48,350 --> 00:39:51,080 a notare i modelli e dedurre dalla sintassi esistente 911 00:39:51,080 --> 00:39:55,420 in quale altro modo si potrebbe esprimere voi stessi, senza giochi di parole, al fine 912 00:39:55,420 --> 00:39:58,410 per catturare qualche scenario aggiuntivo. 913 00:39:58,410 --> 00:39:59,603 Quindi stiamo dicendo else if. 914 00:39:59,603 --> 00:40:04,040 915 00:40:04,040 --> 00:40:05,230 printf, buono. 916 00:40:05,230 --> 00:40:09,120 E notare con CS50 IDE e IDE frankly-- 917 00:40:09,120 --> 00:40:11,110 sta per Integrated Sviluppo dell'ambiente. 918 00:40:11,110 --> 00:40:14,110 E 'solo un modo elegante per dire un programma che aiuta a programma. 919 00:40:14,110 --> 00:40:16,779 Fa cose user friendly come quando si digita una parentesi, 920 00:40:16,779 --> 00:40:18,320 ti dà automaticamente l'altro. 921 00:40:18,320 --> 00:40:20,760 La presunzione è che sei infine intenzione di voler digitare tale, 922 00:40:20,760 --> 00:40:22,400 e lo fa anche con le virgolette. 923 00:40:22,400 --> 00:40:24,190 >> Così mi piace la linea 23. 924 00:40:24,190 --> 00:40:26,400 99% della strada. 925 00:40:26,400 --> 00:40:29,920 Qualcuno vuole carillon con una punta? 926 00:40:29,920 --> 00:40:31,420 Ho sentito e virgola da parte del pubblico. 927 00:40:31,420 --> 00:40:32,080 Bene. 928 00:40:32,080 --> 00:40:33,260 Così che completa quella. 929 00:40:33,260 --> 00:40:37,930 E ora, ho solo un po ' costernazione con la linea 21. 930 00:40:37,930 --> 00:40:41,370 Come vogliamo esprimere questo? 931 00:40:41,370 --> 00:40:43,370 Quale domanda vogliamo di chiedere, cosa ne pensi? 932 00:40:43,370 --> 00:40:46,870 933 00:40:46,870 --> 00:40:50,330 Così abbiamo chiesto in precedenza la domanda, se n è maggiore di zero, farlo. 934 00:40:50,330 --> 00:40:51,870 Altrimenti, farlo. 935 00:40:51,870 --> 00:40:54,317 Quindi abbiamo bisogno di scegliere un domanda da fare qui. 936 00:40:54,317 --> 00:40:55,192 PUBBLICO: [incomprensibile] 937 00:40:55,192 --> 00:40:56,530 DAVID J. MALAN: Good. 938 00:40:56,530 --> 00:40:58,290 Quindi, se n è uguale a zero. 939 00:40:58,290 --> 00:41:01,140 940 00:41:01,140 --> 00:41:02,100 Eccellente. 941 00:41:02,100 --> 00:41:03,080 Quindi cerchiamo di pausa qui. 942 00:41:03,080 --> 00:41:04,850 Grazie mille per sfidare questo. 943 00:41:04,850 --> 00:41:10,890 Lasciate che vi dia un po 'di meritato palla antistress, forse lì. 944 00:41:10,890 --> 00:41:11,900 Così ci siamo quasi. 945 00:41:11,900 --> 00:41:14,790 Infatti, Lauren, se non mente, permettetemi di fare un modificate qui, 946 00:41:14,790 --> 00:41:17,850 solo per essere coerente anche con quello che abbiamo visto in Scratch, cosa 947 00:41:17,850 --> 00:41:21,080 voglio fare con le linee 21 e 24, sulla base solo di nuovo 948 00:41:21,080 --> 00:41:23,290 su come abbiamo fatto in Scratch, forse? 949 00:41:23,290 --> 00:41:24,230 >> PUBBLICO: spostare in su. 950 00:41:24,230 --> 00:41:25,605 >> DAVID J. MALAN: Sì, spostarlo verso l'alto. 951 00:41:25,605 --> 00:41:30,260 Quindi la condizione altro, il terzo, o quarta, o quinta, o ramo finale, 952 00:41:30,260 --> 00:41:34,100 dovrebbe infatti venire dopo, e questo è solo per convenzione, 953 00:41:34,100 --> 00:41:36,047 solo perché, se vuoi. 954 00:41:36,047 --> 00:41:37,380 Così ho bisogno di fare questo tweak. 955 00:41:37,380 --> 00:41:39,660 E ho bisogno di mettere la mia parentesi graffa di nuovo qui. 956 00:41:39,660 --> 00:41:42,700 E ora, questo programma verrà compilato. 957 00:41:42,700 --> 00:41:46,140 Siamo così vicini, ma c'è un bug molto, molto sottile. 958 00:41:46,140 --> 00:41:47,200 Vediamo cosa succede. 959 00:41:47,200 --> 00:41:49,660 >> In primo luogo, mi permetta di andare avanti e zoom out. 960 00:41:49,660 --> 00:41:53,405 Ho intenzione di andare avanti e digitare rendere condizione di zero. 961 00:41:53,405 --> 00:41:55,070 Oh, ho mentito. 962 00:41:55,070 --> 00:41:58,760 Ora il compilatore è in realtà piuttosto intelligente. 963 00:41:58,760 --> 00:42:00,950 E io non capisco è messaggio di errore. 964 00:42:00,950 --> 00:42:04,310 Usando il risultato di una cessione come condizione senza parentesi, 965 00:42:04,310 --> 00:42:05,740 è apparentemente male. 966 00:42:05,740 --> 00:42:07,100 Ma che cosa vuol dire? 967 00:42:07,100 --> 00:42:10,860 >> Bene ancora una volta, alla ricerca di modelli nel codice che abbiamo visto prima, 968 00:42:10,860 --> 00:42:16,640 ciò che è la linea 17 in realtà facendo, anche se Lauren destinato leggermente 969 00:42:16,640 --> 00:42:18,790 altrimenti? 970 00:42:18,790 --> 00:42:19,290 Già. 971 00:42:19,290 --> 00:42:21,565 >> PUBBLICO: [incomprensibile] 972 00:42:21,565 --> 00:42:22,440 DAVID J. MALAN: Sì. 973 00:42:22,440 --> 00:42:26,610 Quindi ricorda il segno di uguale, a quanto pare come abbiamo usato prima, non è uguale. 974 00:42:26,610 --> 00:42:29,240 Il suo incarico, da destra a sinistra. 975 00:42:29,240 --> 00:42:33,810 Quindi la linea 17 al momento è una condizione, ed è 976 00:42:33,810 --> 00:42:37,890 l'esecuzione di codice all'interno delle parentesi, ma quando questo codice viene eseguito, 977 00:42:37,890 --> 00:42:42,140 quello che sta accadendo al valore di zero? 978 00:42:42,140 --> 00:42:45,250 Che cosa sta accadendo al valore di n? 979 00:42:45,250 --> 00:42:46,810 Diventare zero. 980 00:42:46,810 --> 00:42:50,520 Quindi, se n è sempre pari a zero, e ancora una volta, come per la scorsa settimana, 981 00:42:50,520 --> 00:42:54,690 generalmente diciamo che lo zero è falso e uno è vero, 982 00:42:54,690 --> 00:42:57,410 o sì è uno e non è zero. 983 00:42:57,410 --> 00:42:59,590 Così vero e falso, uno e 0. 984 00:42:59,590 --> 00:43:06,090 Se n come di linea 17 è stata dato il valore 0, è pari a zero vero? 985 00:43:06,090 --> 00:43:06,590 No. 986 00:43:06,590 --> 00:43:08,280 Per definizione, zero è falsa. 987 00:43:08,280 --> 00:43:10,860 Questa è la convenzione che siamo andando ad aggrapparsi a andare avanti. 988 00:43:10,860 --> 00:43:17,320 Così sarà linee 18, 19, e 20 mai applicare ora, logicamente? 989 00:43:17,320 --> 00:43:18,320 Non possono. 990 00:43:18,320 --> 00:43:21,640 Così abbiamo chiesto la domanda ma non abbastanza precisamente, 991 00:43:21,640 --> 00:43:25,620 e non si sa questo meno avete visto, la soluzione in C 992 00:43:25,620 --> 00:43:29,610 è quando si vuole esprimere uguaglianza, si dice pari pari. 993 00:43:29,610 --> 00:43:33,140 Così segno di uguale era già esaurita mediante cessione, da destra a sinistra. 994 00:43:33,140 --> 00:43:35,110 Uguale uguale mezzi uguale. 995 00:43:35,110 --> 00:43:37,950 E se si vuole veramente la tua mente da piegare, in JavaScript e PHP, 996 00:43:37,950 --> 00:43:40,490 c'è uguale uguale uguale, che significare qualcos'altro, 997 00:43:40,490 --> 00:43:41,990 ma ci arriveremo in breve tempo. 998 00:43:41,990 --> 00:43:45,760 >> Quindi questa è una semplice correzione, ma si rende conto super facile da fare questo errore, 999 00:43:45,760 --> 00:43:48,700 e poi ci domandiamo e lotta per minuti, se non un'ora, 1000 00:43:48,700 --> 00:43:51,490 perché è il mio codice non esecuzione come intendo? 1001 00:43:51,490 --> 00:43:54,140 È perché non hai detto è esattamente quello che voleva dire. 1002 00:43:54,140 --> 00:43:56,450 Così che era quasi perfetto, ed è stato fantastico 1003 00:43:56,450 --> 00:44:00,760 che ci siamo imbattuti in questi due piccoli le cose perché ora se li fissiamo, 1004 00:44:00,760 --> 00:44:06,240 e lo faccio fare condizione zero dot taglio su Condition Zero, 1005 00:44:06,240 --> 00:44:07,490 Mi piacerebbe un numero intero per favore. 1006 00:44:07,490 --> 00:44:08,090 Vediamo. 1007 00:44:08,090 --> 00:44:09,160 No. 1008 00:44:09,160 --> 00:44:10,740 E 'intenzione di costringermi a farlo. 1009 00:44:10,740 --> 00:44:11,990 Così 42. 1010 00:44:11,990 --> 00:44:13,590 Ho scelto un numero positivo. 1011 00:44:13,590 --> 00:44:16,470 Così ora come faccio a dimostrare questo programma corretto? 1012 00:44:16,470 --> 00:44:19,990 Se sei un matematico, non è possibile davvero dimostrare questo per tentativi ed errori, 1013 00:44:19,990 --> 00:44:20,490 destra? 1014 00:44:20,490 --> 00:44:23,180 Non si può solo una prova per esempio, ma almeno 1015 00:44:23,180 --> 00:44:25,494 come programmatore non siamo andando a cercare di dimostrare, per ora 1016 00:44:25,494 --> 00:44:27,660 che questo è in realtà corretto, ma dovrei probabilmente 1017 00:44:27,660 --> 00:44:29,470 testare alcuni casi rappresentativi. 1018 00:44:29,470 --> 00:44:31,070 >> Ho provato 42. 1019 00:44:31,070 --> 00:44:33,030 Ho potuto testare 43. 1020 00:44:33,030 --> 00:44:34,910 Ho potuto testare 44. 1021 00:44:34,910 --> 00:44:35,640 Prova 45. 1022 00:44:35,640 --> 00:44:36,140 Destra? 1023 00:44:36,140 --> 00:44:37,860 Ma potrei fare questo un sacco di tempo. 1024 00:44:37,860 --> 00:44:39,925 Che cosa sarebbe un po 'di più casi interessanti da provare? 1025 00:44:39,925 --> 00:44:41,050 PUBBLICO: [incomprensibile] zero. 1026 00:44:41,050 --> 00:44:41,740 DAVID J. MALAN: Così zero. 1027 00:44:41,740 --> 00:44:42,297 Certo. 1028 00:44:42,297 --> 00:44:44,880 E buona, abbiamo in questo momento, grazie al nuovo codice di Lauren. 1029 00:44:44,880 --> 00:44:46,213 Che cosa è un altro buon caso provare? 1030 00:44:46,213 --> 00:44:47,320 PUBBLICO: uno negativo. 1031 00:44:47,320 --> 00:44:50,070 >> DAVID J. MALAN: uno negativo, e forse qualcosa di un po 'più grande, 1032 00:44:50,070 --> 00:44:52,617 così forse negativo 42, ma in generale, quando 1033 00:44:52,617 --> 00:44:54,450 testare i programmi andare avanti, sei 1034 00:44:54,450 --> 00:44:56,325 andando a voler pensare a te stesso, come quello 1035 00:44:56,325 --> 00:44:58,050 sono i casi fondamentali differenti. 1036 00:44:58,050 --> 00:45:01,720 E oserei dire un caso negativo, un caso positivo, e un caso a zero 1037 00:45:01,720 --> 00:45:03,365 praticamente arrotonda questi fuori. 1038 00:45:03,365 --> 00:45:04,990 Diamo un'occhiata a una variante di questo però. 1039 00:45:04,990 --> 00:45:06,930 Condizioni uno. 1040 00:45:06,930 --> 00:45:11,224 Questa è una soluzione corretta qui, in modo che vedrete due e on-line, 1041 00:45:11,224 --> 00:45:13,390 se si cammina attraverso la procedure dettagliate, sarà generalmente 1042 00:45:13,390 --> 00:45:18,090 incrementare questi graduale fino a che ottenere esattamente il giusto approccio. 1043 00:45:18,090 --> 00:45:20,070 E se volessimo chiedere due domande in una volta? 1044 00:45:20,070 --> 00:45:22,200 >> Permettetemi di aprire questo invece. 1045 00:45:22,200 --> 00:45:26,740 Non-switch, per ragioni vedremo un'altra volta. 1046 00:45:26,740 --> 00:45:29,610 Cosa c'è di nuovo sintatticamente qui? 1047 00:45:29,610 --> 00:45:32,760 Attualmente sto giocando una partita in cui il computer sta dicendo 1048 00:45:32,760 --> 00:45:35,550 me, mi danno un numero intero tra uno e 10, 1049 00:45:35,550 --> 00:45:37,180 e poi io sto giudicando l'input dell'utente. 1050 00:45:37,180 --> 00:45:39,180 In inglese, sulla base il codice che vedi qui 1051 00:45:39,180 --> 00:45:41,530 in blu, che cosa sta facendo questo programma? 1052 00:45:41,530 --> 00:45:44,256 1053 00:45:44,256 --> 00:45:46,380 PUBBLICO: [incomprensibile] raccolto un grande o piccolo numero. 1054 00:45:46,380 --> 00:45:46,484 DAVID J. MALAN: Sì. 1055 00:45:46,484 --> 00:45:49,450 E 'solo giudicare se Ho scelto un grande, o medio, 1056 00:45:49,450 --> 00:45:53,900 o piccolo numero basa su un definizione arbitraria di piccole, medie, 1057 00:45:53,900 --> 00:45:58,510 e grande qui, ma preavviso la sintassi che c'è di nuovo è questo. 1058 00:45:58,510 --> 00:46:02,340 Non ci è inferiore o uguale a int firmare, o maggiore o uguale a firmare, 1059 00:46:02,340 --> 00:46:05,430 dove uno è sopra l'altra, che si può esprimere in come Microsoft Word. 1060 00:46:05,430 --> 00:46:08,180 Quindi, in un linguaggio di programmazione in genere basta fare due personaggi, 1061 00:46:08,180 --> 00:46:09,450 uno dopo l'altro. 1062 00:46:09,450 --> 00:46:12,695 E che cosa fa questo probabilmente rappresentare, commerciale e commerciale. 1063 00:46:12,695 --> 00:46:13,570 PUBBLICO: [incomprensibile] 1064 00:46:13,570 --> 00:46:13,680 DAVID J. MALAN: Sì. 1065 00:46:13,680 --> 00:46:16,910 Significa solo e perché risulta che gli autori di C 1066 00:46:16,910 --> 00:46:19,120 usato un singolo commerciale, che si potrebbe pensare 1067 00:46:19,120 --> 00:46:22,430 sarebbe perfetto per l'idea di e, è già esaurito, 1068 00:46:22,430 --> 00:46:27,300 commerciale così commerciale in realtà cattura il caso vogliamo davvero. 1069 00:46:27,300 --> 00:46:30,610 >> Quindi cerchiamo di ora incappare in due cose. 1070 00:46:30,610 --> 00:46:32,640 Lasciami andare avanti e di aprire uno. 1071 00:46:32,640 --> 00:46:36,590 Qualcosa che è un po 'preoccupante. 1072 00:46:36,590 --> 00:46:37,970 Imprecisione dot c. 1073 00:46:37,970 --> 00:46:40,260 Permettetemi di presentarvi due cose qui. 1074 00:46:40,260 --> 00:46:44,720 Uno, avviso che possiamo fare la matematica, come proprio come prima, quando 1075 00:46:44,720 --> 00:46:47,797 abbiamo fatto più di due numeri, xe y. 1076 00:46:47,797 --> 00:46:49,380 Che cosa è questo programma apparentemente facendo? 1077 00:46:49,380 --> 00:46:52,140 Non ho ancora commentato che, e io ho introdotto per cento f, 1078 00:46:52,140 --> 00:46:55,720 ma ho subito detto prima f per cento significa in virgola mobile 1079 00:46:55,720 --> 00:46:56,970 valore, che è il numero reale. 1080 00:46:56,970 --> 00:46:59,520 Qualcosa con un decimale punto, che non è un numero intero. 1081 00:46:59,520 --> 00:47:02,270 Cosa pensi di questo programma è cercando di mostrarmi sullo schermo? 1082 00:47:02,270 --> 00:47:05,060 1083 00:47:05,060 --> 00:47:06,050 Sì? 1084 00:47:06,050 --> 00:47:07,550 PUBBLICO: Il risultato di uno su 10. 1085 00:47:07,550 --> 00:47:07,780 DAVID J. MALAN: Sì. 1086 00:47:07,780 --> 00:47:09,680 Qual è il risultato di uno diviso per 10. 1087 00:47:09,680 --> 00:47:12,721 Già, perché tutti voi avete probabilmente cresciuto sapendo che un over 10 1088 00:47:12,721 --> 00:47:14,502 è ciò? 1089 00:47:14,502 --> 00:47:16,220 Sì, è solo 1/10 o 0.1. 1090 00:47:16,220 --> 00:47:16,720 Destra? 1091 00:47:16,720 --> 00:47:19,010 Quindi vediamo cosa questo realmente è. 1092 00:47:19,010 --> 00:47:21,010 Così mi permetta di andare avanti e salvare questo. 1093 00:47:21,010 --> 00:47:21,970 Lasciami andare qui. 1094 00:47:21,970 --> 00:47:26,360 Fai imprecisione dot barra imprecisioni, e nota, anche, 1095 00:47:26,360 --> 00:47:29,380 in un ambiente Linux, non è necessario deve digitare fuori imprecisione e prendere 1096 00:47:29,380 --> 00:47:30,010 per tutto il giorno. 1097 00:47:30,010 --> 00:47:32,910 In genere, se si ha colpito Tab, è si concluderà il vostro pensiero per voi, 1098 00:47:32,910 --> 00:47:36,660 basata sulle parole che sono disponibile nella directory corrente. 1099 00:47:36,660 --> 00:47:37,160 OK. 1100 00:47:37,160 --> 00:47:37,970 Quindi avevi ragione. 1101 00:47:37,970 --> 00:47:41,239 Uno diviso 10 è, infatti, 0.1. 1102 00:47:41,239 --> 00:47:42,280 Ma io sono un po 'curioso. 1103 00:47:42,280 --> 00:47:44,196 E si scopre printf supporta alcune caratteristiche 1104 00:47:44,196 --> 00:47:48,700 per cui è possibile specificare più di il numero predefinito di punti decimali. 1105 00:47:48,700 --> 00:47:52,140 Quindi, se voglio vedere 10 decimale punti posso fare per cento, 1106 00:47:52,140 --> 00:47:55,510 per il simbolo segnaposto, dot 10 per, dammi 10 punti decimali, 1107 00:47:55,510 --> 00:47:58,140 e poi ancora in virgola mobile valore e, per inciso, 1108 00:47:58,140 --> 00:48:01,550 che cosa è questo backslash n a quanto pare continua a usare? 1109 00:48:01,550 --> 00:48:03,450 Si scopre che si tratta di un simbolo per una nuova linea. 1110 00:48:03,450 --> 00:48:05,970 E 'il modo molto esplicito di dire al computer, 1111 00:48:05,970 --> 00:48:08,759 spostare il cursore al prossimo riga dopo il gioco è fatto. 1112 00:48:08,759 --> 00:48:10,800 E vedremo cosa succede quando noi non lo facciamo. 1113 00:48:10,800 --> 00:48:12,430 >> Permettetemi di ricompilare fare imprecisioni. 1114 00:48:12,430 --> 00:48:15,320 1115 00:48:15,320 --> 00:48:18,356 Ora dot tagliare imprecisioni. 1116 00:48:18,356 --> 00:48:18,930 OK. 1117 00:48:18,930 --> 00:48:19,780 Ancora a destra. 1118 00:48:19,780 --> 00:48:21,512 Uno diviso per 10. 1119 00:48:21,512 --> 00:48:23,220 Ora sto ottenendo un po 'curioso, però. 1120 00:48:23,220 --> 00:48:27,599 Che cosa se guardo 20 decimale sottolinea, ricompilare, eseguire di nuovo, 1121 00:48:27,599 --> 00:48:29,390 e come parte per velocità, è anche possibile utilizzare 1122 00:48:29,390 --> 00:48:31,800 il tuo frecce su e giù per scorrere la vostra storia, 1123 00:48:31,800 --> 00:48:35,476 in modo da non dover continuare ridigitare questi comandi, immettere. 1124 00:48:35,476 --> 00:48:36,910 Huh. 1125 00:48:36,910 --> 00:48:39,220 Non ho imparato che nella scuola elementare. 1126 00:48:39,220 --> 00:48:43,260 Va bene, così mi permetta vedere come 29 posti fuori. 1127 00:48:43,260 --> 00:48:44,300 Forse è solo un colpo di fortuna. 1128 00:48:44,300 --> 00:48:46,907 Forse il mio computer si comporta strano. 1129 00:48:46,907 --> 00:48:47,990 Questa non è una cosa, giusto? 1130 00:48:47,990 --> 00:48:50,300 Sta facendo qualcosa deterministico. 1131 00:48:50,300 --> 00:48:53,410 Quindi, fare imprecisioni. 1132 00:48:53,410 --> 00:48:54,890 OK, che è incasinato. 1133 00:48:54,890 --> 00:48:57,620 Allora, cosa sta succedendo? 1134 00:48:57,620 --> 00:49:00,160 >> Quindi, a quanto pare il tuo insegnante ha mentito 1135 00:49:00,160 --> 00:49:03,900 a tutti voi di questo tempo per ragioni che vedremo fra poco. 1136 00:49:03,900 --> 00:49:05,569 Ma finiamo con un altro programma. 1137 00:49:05,569 --> 00:49:07,860 Questo è un po 'i programmi qualcuno ha scritto qualche anno fa, 1138 00:49:07,860 --> 00:49:08,990 ed è in realtà parte di un concorso. 1139 00:49:08,990 --> 00:49:11,198 Nessuno in realtà scrive codice in questo modo, e se lo fai, 1140 00:49:11,198 --> 00:49:12,880 questo è stilisticamente un problema. 1141 00:49:12,880 --> 00:49:14,660 Ma le persone fanno per vantarsi. 1142 00:49:14,660 --> 00:49:17,260 Per scrivere il più confuso guardando programma che 1143 00:49:17,260 --> 00:49:19,110 fa comunque qualcosa di interessante. 1144 00:49:19,110 --> 00:49:23,930 E la nota ho pensato di lasciare il Oggi, prima di Colton noi gioca fuori qui, 1145 00:49:23,930 --> 00:49:27,840 è quello di eseguire questo programma, che, anche in usando solo 1146 00:49:27,840 --> 00:49:31,450 C in questo basato sul testo ambiente, noi questo dà. 1147 00:49:31,450 --> 00:49:32,264 Dannazione. 1148 00:49:32,264 --> 00:49:34,930 >> [Risata] 1149 00:49:34,930 --> 00:49:36,800 >> Stand-by. 1150 00:49:36,800 --> 00:49:39,340 [Incomprensibile] c precipitare l m. 1151 00:49:39,340 --> 00:49:42,885 Stai andando a vedere la magica incantesimo che vedremo fra poco. 1152 00:49:42,885 --> 00:49:45,780 [Incomprensibile] Va bene. 1153 00:49:45,780 --> 00:49:51,592 E ora si può anche fare cose come questa. 1154 00:49:51,592 --> 00:49:52,340 Questo è tutto. 1155 00:49:52,340 --> 00:49:56,410 Per CS50 noi, si vedrà il Venerdì. 1156 00:49:56,410 --> 00:49:58,910 >> [RIPRODUZIONE DI BRANI MUSICALI] 1157 00:49:58,910 --> 00:52:38,390 1158 00:52:38,390 --> 00:52:41,440 >> [Applausi] 1159 00:52:41,440 --> 00:52:42,812