1 00:00:00,000 --> 00:00:12,410 >> [MUSIC PLAYING] 2 00:00:12,410 --> 00:00:12,830 >> DAVID MALAN: Va bene. 3 00:00:12,830 --> 00:00:13,370 Bentornato. 4 00:00:13,370 --> 00:00:16,510 Questo è CS50, e questo è Una settimana, Continua. 5 00:00:16,510 --> 00:00:20,050 Quindi, una delle ragioni per cui abbiamo che passa intorno a tecnologie come 6 00:00:20,050 --> 00:00:24,120 Google Glass è che essi sono dotati di qualcosa di noto come un API, un 7 00:00:24,120 --> 00:00:25,980 Application Programming Interface. 8 00:00:25,980 --> 00:00:28,830 E che cosa questo significa è che con il file giusto e con il giusto 9 00:00:28,830 --> 00:00:32,850 documentazione, si può effettivamente scrivere software per dispositivi anche come questi. 10 00:00:32,850 --> 00:00:36,200 >> E così quello che abbiamo in mente verso semestri finale è, se un progetto 11 00:00:36,200 --> 00:00:39,310 coinvolgendo, ad esempio, Google Glass potrebbe appello, vedremo cosa possiamo fare in 12 00:00:39,310 --> 00:00:42,220 termini di mettersi in contatto con voi un po 'di hardware loaner nonché la 13 00:00:42,220 --> 00:00:46,500 API pubblicamente accessibile in modo da poter effettivamente iniziare a creare software 14 00:00:46,500 --> 00:00:48,630 che gira su quella stessa Google Glass. 15 00:00:48,630 --> 00:00:51,710 >> Un altro dispositivo che abbiamo giocato con di ritardo che abbiamo pensato che potrebbe essere 16 00:00:51,710 --> 00:00:53,910 divertimento alla fine del semestre è questa piccola cosa qui. 17 00:00:53,910 --> 00:00:56,860 Si chiama Leap movimento, e quello che stai per vedere è tecnicamente un 18 00:00:56,860 --> 00:01:00,280 pubblicità per il dispositivo, ma non parlare di ciò che questo particolare 19 00:01:00,280 --> 00:01:01,240 dispositivo è in grado di. 20 00:01:01,240 --> 00:01:05,550 Ed è, anche, è dotato di una API via cui è possibile scrivere il software per 21 00:01:05,550 --> 00:01:10,545 controllare il proprio computer in un modo piuttosto come questo film di un minuto qui. 22 00:01:10,545 --> 00:01:12,070 >> [RIPRODUZIONE VIDEO] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [FINE RIPRODUZIONE VIDEO] 25 00:02:08,590 --> 00:02:11,190 >> Quindi, in questo momento, questo dispositivo sembra essere implementato come un po USB 26 00:02:11,190 --> 00:02:14,290 connettore che potete inserire nel vostro computer, ma non sarei sorpreso 27 00:02:14,290 --> 00:02:17,930 se non molto abbiamo questi tipi di tecnologie nel prossimo gruppo di PC 28 00:02:17,930 --> 00:02:20,510 e Mac in modo che si può, infatti, interagire con esso in 29 00:02:20,510 --> 00:02:21,650 una maniera simile. 30 00:02:21,650 --> 00:02:24,250 In realtà, quello che ho pensato che avrei fatto, anche, è Ho tirato su una piccola dimostrazione 31 00:02:24,250 --> 00:02:25,860 programma che viene fornito con il software. 32 00:02:25,860 --> 00:02:28,700 Così ho messo il piccolo sensore davanti al mio computer portatile. 33 00:02:28,700 --> 00:02:32,420 >> E come potete vedere, realizza già che la mia mano è lì 34 00:02:32,420 --> 00:02:33,400 controllarlo. 35 00:02:33,400 --> 00:02:37,900 E tutto fa questa applicazione è swimmingly piccole cose come questa. 36 00:02:37,900 --> 00:02:41,080 Ma si può vedere che, in effetti, Ho cinque dita lì. 37 00:02:41,080 --> 00:02:44,270 Se siamo in grado di arrivare a fare tutto 10, si può immaginare un piano pulito 38 00:02:44,270 --> 00:02:45,390 applicazione o simili. 39 00:02:45,390 --> 00:02:47,820 Quindi, se vuoi venire dopo le lezioni oggi e giocare con quello 40 00:02:47,820 --> 00:02:49,720 bene, sei il benvenuto a. 41 00:02:49,720 --> 00:02:52,930 Quindi, più su che verso la fine del semestre. 42 00:02:52,930 --> 00:02:54,420 >> Così un paio di amministrazione annunci. 43 00:02:54,420 --> 00:02:58,690 Uno, fanno parte di questo Venerdì a mezzogiorno a cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 Questo URL è in corso di homepage pure. 45 00:03:01,260 --> 00:03:04,010 Nel frattempo, però, supersections farà il suo debutto questa Domenica. 46 00:03:04,010 --> 00:03:07,800 Supersections sono una cosa di una volta, perché ci vuole del tempo per lavorare 47 00:03:07,800 --> 00:03:09,470 chi è in quale sezione e dove. 48 00:03:09,470 --> 00:03:12,280 >> Quindi il prossimo Domenica, ci sarà una sezione per quelli meno confortevole, 49 00:03:12,280 --> 00:03:14,040 una sezione per quelli più confortevole. 50 00:03:14,040 --> 00:03:16,110 E quelli di voi da qualche parte in fra i benvenuti per andare a 51 00:03:16,110 --> 00:03:17,850 uno o entrambi o nessuno dei due. 52 00:03:17,850 --> 00:03:19,150 Entrambi questi sarà filmato. 53 00:03:19,150 --> 00:03:22,740 Saranno in un auditorium più grande di una sezione normalmente sarebbe pollici 54 00:03:22,740 --> 00:03:26,110 Ma l'obiettivo è quello di dotare con qualche conforto con il problema impostato uno, 55 00:03:26,110 --> 00:03:29,910 con C, con l'apparecchio CS50, questo fine settimana, anche prima di scoprire la tua 56 00:03:29,910 --> 00:03:31,050 Assegnazione sezione formale. 57 00:03:31,050 --> 00:03:34,700 Così incontrerete il vostro TF e il vostro più piccolo gruppo di sectionmates in merito 58 00:03:34,700 --> 00:03:36,350 una settimana di tempo. 59 00:03:36,350 --> 00:03:38,200 >> Orario di ricevimento, nel frattempo, sono in corso. 60 00:03:38,200 --> 00:03:41,020 Fate approfittare di loro stasera o domani sera se si desidera. 61 00:03:41,020 --> 00:03:43,460 Problema set 0 è dovuto il Venerdì. 62 00:03:43,460 --> 00:03:46,680 Questo è un giorno di ritardo rispetto al regolarmente in programma Giovedi. 63 00:03:46,680 --> 00:03:50,410 Ma con il problema di set 1, vedrai che comprende alcuni warm-up 64 00:03:50,410 --> 00:03:52,770 esercizi con i quali lei stesso può estendere la vostra 65 00:03:52,770 --> 00:03:54,660 Giovedi scadenza al Venerdì. 66 00:03:54,660 --> 00:03:58,410 Insieme Problema 1, intanto, farà il suo debutto sul sito web del corso il prossimo 67 00:03:58,410 --> 00:04:02,000 Venerdì, se vuoi curl con come ho fatto una volta in ritardo 68 00:04:02,000 --> 00:04:04,370 Venerdì sera nella vostra camera. 69 00:04:04,370 --> 00:04:07,660 >> Così cs50.net/appliance è il luogo dove è possibile ottenere l'apparecchio CS50 70 00:04:07,660 --> 00:04:09,040 che abbiamo iniziato a usare il Lunedi. 71 00:04:09,040 --> 00:04:10,140 Useremo un po 'di più oggi. 72 00:04:10,140 --> 00:04:14,040 Ma vi assicuro che il problema impostato 1 Specifica il lettore attraverso la 73 00:04:14,040 --> 00:04:16,490 proprio i passi necessari per ottenere che installato e funzionante. 74 00:04:16,490 --> 00:04:22,120 Quindi non preoccuparti di farlo prima Pset 1 se si preferisce non. 75 00:04:22,120 --> 00:04:22,660 >> D'accordo. 76 00:04:22,660 --> 00:04:27,180 Così abbiamo cercato il Lunedi a codice sorgente, ma nel contesto di una nuova 77 00:04:27,180 --> 00:04:30,895 linguaggio di programmazione, cioè C. E C, a differenza di Scratch, non è grafica. 78 00:04:30,895 --> 00:04:32,270 Non è di pezzi di puzzle. 79 00:04:32,270 --> 00:04:34,450 E 'sintassi più simile all'inglese. 80 00:04:34,450 --> 00:04:37,140 E ci sono un paio di passaggi necessari in realtà la scrittura e l'esecuzione di un 81 00:04:37,140 --> 00:04:41,650 programma in C, perché oltre a fonte codice come questo, è necessario qualcosa 82 00:04:41,650 --> 00:04:42,890 detto compilatore. 83 00:04:42,890 --> 00:04:46,682 E in parole povere, che cosa fa un compilatore per noi? 84 00:04:46,682 --> 00:04:47,650 Già. 85 00:04:47,650 --> 00:04:51,040 >> STUDENTE: Si converte il codice che si scrive di 0 e 1. 86 00:04:51,040 --> 00:04:51,151 >> DAVID MALAN: Buono. 87 00:04:51,151 --> 00:04:53,580 Quindi converte il codice che scriviamo a 0 e 1. 88 00:04:53,580 --> 00:04:57,730 Si converte cosiddetto codice sorgente codice oggetto, il secondo dei quali sembra 89 00:04:57,730 --> 00:04:59,140 un po 'di qualcosa come questo. 90 00:04:59,140 --> 00:05:02,860 Ed è la CPU, il cervello all'interno di il computer, che a causa della 91 00:05:02,860 --> 00:05:06,280 persone che hanno creato quei computer, sapere quali quelle sequenze 92 00:05:06,280 --> 00:05:07,460 di media 0 e 1. 93 00:05:07,460 --> 00:05:08,640 >> Forse significa stampa. 94 00:05:08,640 --> 00:05:10,265 Forse significa aggiunta. 95 00:05:10,265 --> 00:05:11,610 Forse significa sottrazione. 96 00:05:11,610 --> 00:05:13,350 Forse significa visualizzare un grafico. 97 00:05:13,350 --> 00:05:16,870 Ci sono modelli di bit predefiniti che il mondo ha deciso di dire 98 00:05:16,870 --> 00:05:17,700 certe cose. 99 00:05:17,700 --> 00:05:20,760 Ma per la maggior parte a questo corso, lavoreremo a un livello superiore, e 100 00:05:20,760 --> 00:05:24,180 daremo per scontato che esistono cose come compilatori che possono 101 00:05:24,180 --> 00:05:27,670 rendere la nostra funzione di codice sorgente nel modo in cui noi intendiamo. 102 00:05:27,670 --> 00:05:31,660 >> Così il programma che abbiamo scritto prima settimana scorsa e poi cominciò a porta, in modo da 103 00:05:31,660 --> 00:05:33,920 parlare, di C lo scorso Lunedi, era questo. 104 00:05:33,920 --> 00:05:35,700 Quando si fa clic su bandiera verde, dire ciao. 105 00:05:35,700 --> 00:05:37,430 Questo era, naturalmente, scritto in Scratch. 106 00:05:37,430 --> 00:05:40,710 E ho affermato che l'equivalente programma in C sembrava un po ' 107 00:05:40,710 --> 00:05:41,520 qualcosa di simile a questo. 108 00:05:41,520 --> 00:05:45,050 >> Quindi quello che ho pensato che avremmo fatto in un primo momento è, cerchiamo di prendere in giro a parte quello che sembra, a prima 109 00:05:45,050 --> 00:05:48,790 sguardo, è vero, come abbastanza arcano sintassi, ma inizierete a notare 110 00:05:48,790 --> 00:05:50,160 modelli abbastanza rapidamente. 111 00:05:50,160 --> 00:05:53,770 Ciò che faremo anche oggi è fornire con un modello mentale per qualche 112 00:05:53,770 --> 00:05:57,280 canonica, alcuni costrutti standard di nella programmazione. 113 00:05:57,280 --> 00:06:00,420 E poi ci troveremo a mettere le mani sporco con alcuni esempi e. 114 00:06:00,420 --> 00:06:04,140 >> Quindi, per quelli di voi più comodo, rendersi conto che questa settimana e poi dopo 115 00:06:04,140 --> 00:06:05,940 settimana può benissimo essere un po 'di revisione. 116 00:06:05,940 --> 00:06:08,810 Ma soprattutto quando l'edizione di hacker del problema proposto 1 esce sul 117 00:06:08,810 --> 00:06:12,330 sito web del corso il Venerdì, io credo troverete che anche come si compila 118 00:06:12,330 --> 00:06:15,390 alcuni spazi vuoti oltre la prossima settimana o due, inizierete a ottenere sempre più 119 00:06:15,390 --> 00:06:18,410 sfidato e di incontro cose nuove e più recenti. 120 00:06:18,410 --> 00:06:21,310 >> Quindi cerchiamo di prendere in giro questo programma a parte poche righe alla volta. 121 00:06:21,310 --> 00:06:24,140 Nella parte superiore, noi abbiamo ciò che è tecnicamente chiamato 122 00:06:24,140 --> 00:06:25,950 direttiva del preprocessore. 123 00:06:25,950 --> 00:06:30,510 Questa è solo una riga di codice che dice per includere il contenuto di un file, 124 00:06:30,510 --> 00:06:35,080 chiamato Standard I / N, standard input - o, mi dispiace, I / O standard, standard di 125 00:06:35,080 --> 00:06:38,670 input / output,. h, all'interno del mio programma. 126 00:06:38,670 --> 00:06:41,670 >> Quindi, in altre parole, se ho scritto questo programma con un semplice editor di testo come 127 00:06:41,670 --> 00:06:45,260 gedit, l'equivalente più semplice di qualcosa di simile a Microsoft Word, che 128 00:06:45,260 --> 00:06:50,970 istruzione, # include stdio.h, è solo andare a dire al compilatore, afferrare la 129 00:06:50,970 --> 00:06:56,080 contenuto di tale altro file, stdio.h, e incollarli qui. 130 00:06:56,080 --> 00:06:57,090 >> Ora, perché me ne importa? 131 00:06:57,090 --> 00:07:01,850 Cosa abbiamo pretesa è all'interno di questo file chiamato stdio.h, che è memorizzato 132 00:07:01,850 --> 00:07:05,490 da qualche parte sul mio disco rigido, o in questo caso, da qualche parte in macchina CS50? 133 00:07:05,490 --> 00:07:06,635 Qualcun altro ha messo lì per me. 134 00:07:06,635 --> 00:07:09,910 Ma cosa c'è dentro? 135 00:07:09,910 --> 00:07:13,020 >> Sì, quindi è una dichiarazione di una funzione chiamata printf. 136 00:07:13,020 --> 00:07:17,400 Ricorda così la funzione printf che visualizza le parole e caratteri e 137 00:07:17,400 --> 00:07:20,160 numeri sullo schermo della mia gara. 138 00:07:20,160 --> 00:07:21,220 Ma non l'ho scritto io. 139 00:07:21,220 --> 00:07:22,230 CS50 non l'ha scritto. 140 00:07:22,230 --> 00:07:26,990 Anni fa qualcuno ha scritto, e che in sostanza ci ha dato la ricetta per esso 141 00:07:26,990 --> 00:07:29,110 in un file chiamato stdio.h. 142 00:07:29,110 --> 00:07:33,240 In modo che prima riga dà solo a me accedo di funzioni che qualcun altro 143 00:07:33,240 --> 00:07:36,500 ha scritto anni fa, tra quali sono printf. 144 00:07:36,500 --> 00:07:39,450 >> Ora, la prossima linea che sto per agitare la mia mano, almeno fino alla prossima settimana. 145 00:07:39,450 --> 00:07:43,620 Ma per ora, sapere che int main () è essenzialmente l'equivalente di questa 146 00:07:43,620 --> 00:07:46,310 giallo pezzo di puzzle in cui bandiera verde cliccato. 147 00:07:46,310 --> 00:07:49,510 Il mondo, anni fa, ha deciso che, se si sta scrivendo un programma in 148 00:07:49,510 --> 00:07:53,150 linguaggio chiamato C, si avvia il programma con una linea 149 00:07:53,150 --> 00:07:54,410 che sembra così. 150 00:07:54,410 --> 00:07:57,650 In quasi una settimana di tempo, farà senso ciò che int è, ciò che è vuoto. 151 00:07:57,650 --> 00:08:00,840 Ma per ora, pensate un po ' come questo pezzo di puzzle giallo. 152 00:08:00,840 --> 00:08:04,550 >> Ora prossimo, abbiamo una parentesi graffa seguito da un altro vicino parentesi graffa, 153 00:08:04,550 --> 00:08:05,240 per così dire. 154 00:08:05,240 --> 00:08:07,430 E vedremo questi in tutto programmi in C, nonché 155 00:08:07,430 --> 00:08:08,930 JavaScript e PHP. 156 00:08:08,930 --> 00:08:11,345 E questi solo incapsulano righe correlate di codice. 157 00:08:11,345 --> 00:08:14,600 La parentesi graffa aperta essenzialmente dice, ecco che arriva un po 'di codice. 158 00:08:14,600 --> 00:08:17,590 E la parentesi graffa di chiusura, che è inclinato nella direzione opposta, basta 159 00:08:17,590 --> 00:08:19,920 mezzi, questo è tutto per il codice rilevante. 160 00:08:19,920 --> 00:08:22,970 >> Così la linea succosa in questo primo programma è l'ultimo, printf, 161 00:08:22,970 --> 00:08:25,080 tra virgolette, ciao mondo. 162 00:08:25,080 --> 00:08:30,670 E ho chiamato la cosa tra citazioni che cosa l'ultima volta? 163 00:08:30,670 --> 00:08:31,285 Quindi è una stringa. 164 00:08:31,285 --> 00:08:35,309 E una stringa è solo il techie termine per una sequenza di 165 00:08:35,309 --> 00:08:37,169 personaggi, una parola, una frase. 166 00:08:37,169 --> 00:08:39,380 Anche una sola lettera potrebbe essere doppio citato. 167 00:08:39,380 --> 00:08:41,840 Ma si tratta di una sequenza di zero o più caratteri. 168 00:08:41,840 --> 00:08:43,650 >> Backslash-n, però, sembra un po 'strano. 169 00:08:43,650 --> 00:08:46,290 Ma significava semplicemente qualcosa semplice al computer. 170 00:08:46,290 --> 00:08:48,060 Che backslash-n? 171 00:08:48,060 --> 00:08:48,570 Nuova linea. 172 00:08:48,570 --> 00:08:52,490 Ecco, questo è proprio la sequenza speciale di personaggi che il mondo ha deciso 173 00:08:52,490 --> 00:08:56,880 significa mettere una interruzione di linea proprio lì, perché il compilatore effettivamente ottenere 174 00:08:56,880 --> 00:09:02,280 confuso, di solito, se si, molto comprensibilmente, ma in modo non corretto, proprio 175 00:09:02,280 --> 00:09:04,570 iniziare a colpire Invio per mettere nuove linee nel codice. 176 00:09:04,570 --> 00:09:07,150 Hai bisogno di essere un po 'più esplicita con backslash-n. 177 00:09:07,150 --> 00:09:10,540 >> E vedremo c'è qualche altro tale modelli per i caratteri speciali. 178 00:09:10,540 --> 00:09:14,340 Per esempio, se si voleva lasciare il vostro mente vagare per un caso d'angolo, 179 00:09:14,340 --> 00:09:18,080 Suppongo che ho voluto stampare un doppia citazione sullo schermo per 180 00:09:18,080 --> 00:09:21,840 qualsiasi motivo, che sembrerebbe essere un po 'problematico, giusto? 181 00:09:21,840 --> 00:09:24,990 Perché se ho messo una doppia citazione nel mezzo "ciao, mondo", per qualunque 182 00:09:24,990 --> 00:09:30,120 ragione, perché Ti sembra potenzialmente problematico? 183 00:09:30,120 --> 00:09:32,180 Si rompe la corda. 184 00:09:32,180 --> 00:09:34,700 >> Il compilatore è solo un programma. 185 00:09:34,700 --> 00:09:37,210 Un programma come un compilatore è solo andare a leggere il tuo codice in alto verso il basso, 186 00:09:37,210 --> 00:09:37,990 sinistra a destra. 187 00:09:37,990 --> 00:09:41,850 E se vede tre doppie virgolette invece di due, non sta andando a conoscere 188 00:09:41,850 --> 00:09:45,210 se vuoi dire che la cosa a sinistra dovrebbe essere la stringa o la cosa da 189 00:09:45,210 --> 00:09:46,570 il diritto, o il tutto. 190 00:09:46,570 --> 00:09:50,560 E 'ambiguo, e quindi ciò che un tipico compilatore dovrebbe fare è semplicemente fuori di testa, 191 00:09:50,560 --> 00:09:53,710 e darvi qualche messaggio di errore, e ti fanno affrontare il problema. 192 00:09:53,710 --> 00:09:58,120 >> Quindi, dato che la barra inversa-n significa una nuova linea, quale sarebbe il tuo istinto adesso 193 00:09:58,120 --> 00:10:02,610 iniziare ad essere se si voleva includere qualcosa di anomalo come una doppia 194 00:10:02,610 --> 00:10:06,210 citare all'interno di questo altrimenti citato stringa? 195 00:10:06,210 --> 00:10:07,640 Backslash-doppie virgolette. 196 00:10:07,640 --> 00:10:09,630 E quindi vedremo questa tipo di modello troppo. 197 00:10:09,630 --> 00:10:12,490 >> Se si vuole fare qualcosa di un po ' strano, troverete che il 198 00:10:12,490 --> 00:10:15,060 soluzioni spesso seguono uno schema, e la barra rovesciata 199 00:10:15,060 --> 00:10:17,150 denota una sequenza di escape. 200 00:10:17,150 --> 00:10:20,320 E significa semplicemente qualcosa di speciale che abbiamo bisogno di rappresentare in un 201 00:10:20,320 --> 00:10:21,060 modo diverso. 202 00:10:21,060 --> 00:10:23,830 Quanto a come si fa a rappresentare una barra rovesciata, beh, faremo 203 00:10:23,830 --> 00:10:24,550 tornare a quello. 204 00:10:24,550 --> 00:10:26,930 Ma la risposta, anche, è in realtà un po 'ovvio. 205 00:10:26,930 --> 00:10:31,080 >> Quindi cerchiamo di ora introdurre qualche altro costrutti di programmazione 206 00:10:31,080 --> 00:10:31,915 che si è visto in Scratch. 207 00:10:31,915 --> 00:10:34,790 Probabilmente hai preso per scontato già se hai già tuffò 208 00:10:34,790 --> 00:10:36,060 problema impostare 0. 209 00:10:36,060 --> 00:10:40,950 Ma veniamo ora introdurre la sintassi in C per queste altrimenti abbastanza intuitivo 210 00:10:40,950 --> 00:10:42,300 idee, almeno alcuni di loro. 211 00:10:42,300 --> 00:10:45,570 >> Quindi questa idea di una condizione o un ramo, mentre in precedenza si 212 00:10:45,570 --> 00:10:49,330 rappresentata con il codice che sembrava come questo a sinistra in Scratch - 213 00:10:49,330 --> 00:10:52,200 se x è minore di y, poi dire - 214 00:10:52,200 --> 00:10:56,760 invece ora in C - lasciatemi affinare in sul caso più semplice - 215 00:10:56,760 --> 00:11:01,235 stiamo semplicemente andando a dire, se, aprire parentesi, qualcosa è vero - un 216 00:11:01,235 --> 00:11:04,190 Espressione booleana sta per andare dove ho detto condizione - 217 00:11:04,190 --> 00:11:08,170 parentesi chiusa, quindi fare ciò che è all'interno di queste parentesi graffe. 218 00:11:08,170 --> 00:11:11,020 >> Quindi, anche qui, le parentesi graffe sono un po 'come Scratch 219 00:11:11,020 --> 00:11:12,460 Pezzi di un puzzle a forma di U. 220 00:11:12,460 --> 00:11:14,890 Fare ciò che è all'interno di queste parentesi graffe. 221 00:11:14,890 --> 00:11:16,790 In questo caso, slash slash. 222 00:11:16,790 --> 00:11:19,720 E notare questo è un attaccante Slash, non una barra rovesciata. 223 00:11:19,720 --> 00:11:21,440 Slash, slash, per coloro che hanno programmato 224 00:11:21,440 --> 00:11:23,370 prima, significa semplicemente - 225 00:11:23,370 --> 00:11:24,190 è solo un commento. 226 00:11:24,190 --> 00:11:26,630 Un commento non è una linea di codice, per sé. 227 00:11:26,630 --> 00:11:30,200 E 'una linea di inglese che, il umana, hanno scritto a voi stessi per 228 00:11:30,200 --> 00:11:33,540 forse si ricorderà di fare qualcosa, di spiegare a te stesso, a spiegare a 229 00:11:33,540 --> 00:11:35,260 qualcun altro, ciò che il codice sta facendo. 230 00:11:35,260 --> 00:11:37,050 E 'solo un commento descrittivo. 231 00:11:37,050 --> 00:11:40,880 >> Ora, naturalmente, siamo in grado di avere un doppio senso bivio solo facendo questo, un 232 00:11:40,880 --> 00:11:43,930 forcella a tre vie in mezzo alla strada facendo questo, e se si continua questo 233 00:11:43,930 --> 00:11:47,570 modello, si può avere a quattro vie, a cinque vie, forchette sei vie in mezzo alla strada, se 234 00:11:47,570 --> 00:11:50,150 è necessario gestire, in effetti, che molte condizioni. 235 00:11:50,150 --> 00:11:52,010 E poi notare il parallelismo qui - 236 00:11:52,010 --> 00:11:55,070 if (condizione), else if (condizione), e l'unico che è un po ' 237 00:11:55,070 --> 00:11:58,010 strano è l'ultimo, che è proprio questo il resto. 238 00:11:58,010 --> 00:12:01,170 Ma ancora una volta, questa è identica, concettualmente, a quello che abbiamo fatto 239 00:12:01,170 --> 00:12:04,690 già, anche se la sintassi volontà prendere un po 'per abituarsi. 240 00:12:04,690 --> 00:12:07,730 >> Ora, in questo esempio, vi sono qualche altra sintassi strana. 241 00:12:07,730 --> 00:12:11,220 Vediamo printf nuovo, parentesi aperta, e la parentesi chiusa. 242 00:12:11,220 --> 00:12:13,190 E dentro c'è una stringa tra virgolette. 243 00:12:13,190 --> 00:12:17,060 Le parentesi, nel contesto di printf, andare a sinistra 244 00:12:17,060 --> 00:12:18,160 e proprio di che cosa? 245 00:12:18,160 --> 00:12:22,190 Che cosa ci descriviamo che citava stringa come più in generale? 246 00:12:22,190 --> 00:12:23,320 >> Quindi si tratta di un argomento. 247 00:12:23,320 --> 00:12:26,620 Ogni volta che si dispone di una funzione, come printf, e quindi una parentesi aperta e una 248 00:12:26,620 --> 00:12:30,330 stretta paren e qualcosa dentro di esso, che si tratti di una stringa, o un 249 00:12:30,330 --> 00:12:34,420 numero intero, o qualsiasi altra cosa, la cosa in tra queste parentesi è chiamato 250 00:12:34,420 --> 00:12:35,110 un argomento. 251 00:12:35,110 --> 00:12:37,910 >> E un argomento influisce solo comportamento della funzione. 252 00:12:37,910 --> 00:12:39,990 In questo caso, è abbastanza chiaro come. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 E printf sta per stampare esattamente questo. 255 00:12:47,720 --> 00:12:51,590 Perché sicuramente, gli anni persona fa che ha implementato printf non aveva idea 256 00:12:51,590 --> 00:12:55,000 quello che noi successori umani sono stati intenzione di utilizzare printf per. 257 00:12:55,000 --> 00:12:58,610 Ecco perché esistono argomenti, a influenzare il comportamento dopo una funzione di 258 00:12:58,610 --> 00:12:59,450 stato scritto. 259 00:12:59,450 --> 00:13:00,780 >> Ora, l'espressione booleana. 260 00:13:00,780 --> 00:13:02,470 Abbiamo visto questi prima di Scratch. 261 00:13:02,470 --> 00:13:06,680 Si scopre in C si può anche "o" loro insieme, per così dire. 262 00:13:06,680 --> 00:13:10,930 Due barre verticali significa che questo blocco di codice, questo fare questo, sarà 263 00:13:10,930 --> 00:13:15,350 eseguire se la prima condizione è vera o la seconda condizione è vera. 264 00:13:15,350 --> 00:13:17,710 E anche se si potrebbe non aver fatto questo in Scratch, si potrebbe infatti 265 00:13:17,710 --> 00:13:20,580 fate questo in Scratch, ed è anche possibile esprimere se stessi in modo diverso - 266 00:13:20,580 --> 00:13:25,300 Se la prima e la seconda condizione condizioni sono vere, allora che cosa è 267 00:13:25,300 --> 00:13:27,160 all'interno delle parentesi graffe. 268 00:13:27,160 --> 00:13:31,210 >> E proprio come un a parte, la ragione è una doppia e commerciale e un doppio 269 00:13:31,210 --> 00:13:34,610 barra verticale, vedremo alla fine che una singola barra verticale e 270 00:13:34,610 --> 00:13:38,710 singola e commerciale effettivamente avere diverse significato in C. Quindi, per ora, 271 00:13:38,710 --> 00:13:41,840 che la duplicazione dei simboli è intenzionale. 272 00:13:41,840 --> 00:13:45,070 >> Quindi cerchiamo di introdurre, per breve tempo, questo altro po 'di sintassi. 273 00:13:45,070 --> 00:13:48,940 Questo non abbastanza riporto a Scratch, ma io sostengo che posso 274 00:13:48,940 --> 00:13:55,190 attuare la nozione di un altro caso, se altra cosa, se altra cosa, se else usando 275 00:13:55,190 --> 00:13:56,760 qualcosa chiamato un'istruzione switch. 276 00:13:56,760 --> 00:14:00,820 E l'unica ragione per questo esiste davvero è di dare solo voi, il programmatore, una 277 00:14:00,820 --> 00:14:05,470 leggermente diverso modo di risolvere alcuni problema, anche se logicamente 278 00:14:05,470 --> 00:14:07,340 non ti dà le nuove funzionalità. 279 00:14:07,340 --> 00:14:08,530 >> Con questo voglio dire questo. 280 00:14:08,530 --> 00:14:13,330 Quando si dice l'interruttore, e poi uno spazio, e poi una coppia di parentesi, all'interno 281 00:14:13,330 --> 00:14:14,570 di cui va l'espressione - 282 00:14:14,570 --> 00:14:18,010 e questo potrebbe essere un po 'non ovvio in un primo momento, ma questo non è un argomento, 283 00:14:18,010 --> 00:14:20,680 tecnicamente, perché interruttore non è una funzione. 284 00:14:20,680 --> 00:14:24,230 Quindi, per ora, solo dal presupposto che stiamo usando parentesi in luoghi diversi 285 00:14:24,230 --> 00:14:25,250 per motivi diversi. 286 00:14:25,250 --> 00:14:29,310 >> Quindi accendere l'espressione significa che posso mettere una variabile all'interno di quelle 287 00:14:29,310 --> 00:14:31,350 parentesi dove si dice espressione. 288 00:14:31,350 --> 00:14:33,090 E poi se quella variabile - 289 00:14:33,090 --> 00:14:35,400 supponiamo che si chiama x, e è solo un numero intero - 290 00:14:35,400 --> 00:14:38,900 Posso quindi enumerare nella mia presentazione ecco qualcosa di simile. 291 00:14:38,900 --> 00:14:41,690 Se x è la mia variabile, e io vogliono fare qualcosa se x 292 00:14:41,690 --> 00:14:43,480 uguale a 1, lo posso fare. 293 00:14:43,480 --> 00:14:46,660 >> Se io invece voglio fare qualcosa se x è 2, posso fare quello. 294 00:14:46,660 --> 00:14:50,390 Altrimenti, se voglio fare qualcosa di diverso del tutto, posso avere un caso di default in 295 00:14:50,390 --> 00:14:52,750 qual caso faccio quest'altra cosa. 296 00:14:52,750 --> 00:14:58,730 Quindi, in questo senso, è equivalente ad un se x è uguale uguale a 1, altrimenti se il resto, 297 00:14:58,730 --> 00:15:01,150 ma ho detto questo ora solo perché vedremo di nuovo. 298 00:15:01,150 --> 00:15:03,720 Ma per ora, è sufficiente sapere che esiste. 299 00:15:03,720 --> 00:15:04,220 >> D'accordo. 300 00:15:04,220 --> 00:15:07,660 Quindi questi ultimi due sono un po 'più complesso a prima vista, ma lo fanno 301 00:15:07,660 --> 00:15:09,385 qualcosa di abbastanza semplice. 302 00:15:09,385 --> 00:15:14,410 Un ciclo for in C è un pezzo di codice che appena fa qualcosa di nuovo e 303 00:15:14,410 --> 00:15:15,330 ancora e ancora. 304 00:15:15,330 --> 00:15:17,590 E l'unica cosa fastidiosa è che è che è un po 'criptico 305 00:15:17,590 --> 00:15:21,380 per esprimere voi stessi in questo ciclico modello, ma il mondo standardizzato su 306 00:15:21,380 --> 00:15:22,450 seguente modo. 307 00:15:22,450 --> 00:15:25,760 >> Quando si utilizza un ciclo for, hai una coppia di parentesi di nuovo. 308 00:15:25,760 --> 00:15:27,570 E notare i due punti e virgola in là. 309 00:15:27,570 --> 00:15:34,380 Quei due virgola tre distinti espressioni diverse all'interno del 310 00:15:34,380 --> 00:15:35,020 parentesi. 311 00:15:35,020 --> 00:15:37,170 Una è la cosiddetta inizializzazioni. 312 00:15:37,170 --> 00:15:38,830 Una è la cosiddetta condizione. 313 00:15:38,830 --> 00:15:40,210 E uno è il cosiddetto aggiornamenti. 314 00:15:40,210 --> 00:15:43,240 >> Guardò in astratto, questo è completamente non-ovvio, così diamo un'occhiata 315 00:15:43,240 --> 00:15:44,630 un esempio concreto. 316 00:15:44,630 --> 00:15:46,720 In Scratch abbiamo avuto un blocco di ripetizione. 317 00:15:46,720 --> 00:15:50,670 E questo blocco ha detto ripetere 10 volte, per esempio "Ciao, mondo". Permettetemi di rivendicare per 318 00:15:50,670 --> 00:15:53,810 ora, e ci torneremo a questo, e anche questo, otterrà più familiare al 319 00:15:53,810 --> 00:15:57,345 fra poco, l'equivalente C codice può essere detto di essere presente - 320 00:15:57,345 --> 00:16:02,320 un'istruzione for e uno spazio, una coppia di tra parentesi, si noti il ​​punto e virgola in 321 00:16:02,320 --> 00:16:05,730 ci, che separano tre distinti cose, l'inizializzazione, il 322 00:16:05,730 --> 00:16:07,320 condizione, e l'aggiornamento. 323 00:16:07,320 --> 00:16:08,840 >> E prendere a indovinare che cosa la prima è di fare. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 In parole povere ruvido, quello che è che fa per noi, forse? 326 00:16:15,120 --> 00:16:15,590 Quindi sì. 327 00:16:15,590 --> 00:16:19,630 Si dichiara una variabile denominata i, e sta dando quale valore? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Quindi è la creazione di una variabile chiamata i, memorizzare il valore 0 in esso. 330 00:16:24,280 --> 00:16:26,420 Questa è la cosiddetta inizializzazione. 331 00:16:26,420 --> 00:16:29,360 >> Bene, ora ho affermato prima che la cosa centrale, i 332 00:16:29,360 --> 00:16:31,760 <10, è la condizione. 333 00:16:31,760 --> 00:16:32,730 Così che cosa sta facendo? 334 00:16:32,730 --> 00:16:36,560 Beh, che il ciclo di fa, quando un programma viene eseguito con un ciclo for, è 335 00:16:36,560 --> 00:16:41,050 ogni volta che il computer viene eseguito tramite questo ciclo, dall'alto in basso, in alto a 336 00:16:41,050 --> 00:16:43,740 in basso, proprio come voi ragazzi ha fatto quando contando voi stessi e sedersi, 337 00:16:43,740 --> 00:16:47,090 ancora e ancora e ancora, il computer sta 338 00:16:47,090 --> 00:16:48,560 per verificare tale condizione. 339 00:16:48,560 --> 00:16:51,140 E se i è minore di 10, lo farà di nuovo. 340 00:16:51,140 --> 00:16:53,100 Se i è inferiore a 10, lo farà di nuovo. 341 00:16:53,100 --> 00:16:55,030 Se i è inferiore a dieci, lo farà di nuovo. 342 00:16:55,030 --> 00:16:57,330 In modo che sembra suggerire che Speriamo che sta cambiando. 343 00:16:57,330 --> 00:16:59,010 In caso contrario, avremmo un ciclo infinito. 344 00:16:59,010 --> 00:17:02,590 E infatti, io sta cambiando, perché la ultima cosa, dopo il punto e virgola non ci 345 00:17:02,590 --> 00:17:05,569 è la sintassi un po 'criptico di i + +. 346 00:17:05,569 --> 00:17:07,630 Ma quelli di voi che avete fatto questo prima, che significa solo 347 00:17:07,630 --> 00:17:08,609 molto semplicemente che cosa? 348 00:17:08,609 --> 00:17:09,730 >> STUDENTI: [interponendo VOCI]. 349 00:17:09,730 --> 00:17:10,740 >> DAVID MALAN: Aggiungi 1 a i. 350 00:17:10,740 --> 00:17:11,819 Incrementa i. 351 00:17:11,819 --> 00:17:13,910 Così abbiamo visto un puzzle Scratch pezzo per questo, in realtà. 352 00:17:13,910 --> 00:17:18,230 L'aspetto non era come i + +, ma che, proprio significa, molto semplicemente, incrementare il 353 00:17:18,230 --> 00:17:24,040 Apprezzo i di 1 ogni volta che si esegue questa operazione. 354 00:17:24,040 --> 00:17:26,910 Quindi, letteralmente, si inizia inizializzando i per 0. 355 00:17:26,910 --> 00:17:29,520 È quindi controllare la vostra condizione. 356 00:17:29,520 --> 00:17:31,070 È 0 a meno di 10? 357 00:17:31,070 --> 00:17:31,730 Sì. 358 00:17:31,730 --> 00:17:32,910 Andiamo attraverso il ciclo. 359 00:17:32,910 --> 00:17:35,150 >> La prossima cosa che io rivendico il computer di intenzione di fare è che sta andando 360 00:17:35,150 --> 00:17:35,910 per incrementare i. 361 00:17:35,910 --> 00:17:37,080 Così i è ora 1. 362 00:17:37,080 --> 00:17:37,940 Si verifica la condizione. 363 00:17:37,940 --> 00:17:39,290 È 1 meno di 10? 364 00:17:39,290 --> 00:17:39,930 Certo. 365 00:17:39,930 --> 00:17:41,030 Così lo fa di nuovo. 366 00:17:41,030 --> 00:17:43,580 Allora incrementa i + + a 2. 367 00:17:43,580 --> 00:17:44,610 È 2 a meno di 10? 368 00:17:44,610 --> 00:17:45,230 Sì. 369 00:17:45,230 --> 00:17:46,670 E ancora e ancora e ancora. 370 00:17:46,670 --> 00:17:50,070 E alla fine, a causa della plus-plussing, si arriva a i è uguale a 10. 371 00:17:50,070 --> 00:17:51,675 È di 10 meno di 10? 372 00:17:51,675 --> 00:17:52,990 Beh, ovviamente no. 373 00:17:52,990 --> 00:17:55,320 E questo è il punto in cui il ciclo si ferma solo. 374 00:17:55,320 --> 00:17:58,320 E se hai più il codice su schermo in basso, il computer 375 00:17:58,320 --> 00:18:01,620 procede per eseguire tale codice invece. 376 00:18:01,620 --> 00:18:05,380 >> Quindi, di nuovo, anche se questo sta per guardare e sentire un po 'strano a 377 00:18:05,380 --> 00:18:07,830 primo, sicuramente per quelli di voi che non hanno mai programmato prima, 378 00:18:07,830 --> 00:18:11,640 letteralmente riduce concettualmente a ciò che è altrimenti molto 379 00:18:11,640 --> 00:18:14,330 di puzzle semplice pezzo in Scratch. 380 00:18:14,330 --> 00:18:19,130 >> Va bene, ho promesso che non ci sarebbe essere altri analoghi in Scratch. 381 00:18:19,130 --> 00:18:20,060 C'è anche questo. 382 00:18:20,060 --> 00:18:21,700 E abbiamo visto questa brevemente ultima volta. 383 00:18:21,700 --> 00:18:23,530 Ma ricordate sempre il bloccare a zero? 384 00:18:23,530 --> 00:18:25,490 Lo fa solo qualcosa per sempre? 385 00:18:25,490 --> 00:18:27,470 Ho affermato che si potrebbe implementare questo in questo modo. 386 00:18:27,470 --> 00:18:29,740 E si può effettivamente realizzare questo in un sacco di modi diversi. 387 00:18:29,740 --> 00:18:34,260 >> Ma il ciclo while è solo un diverso modo in C di esprimere se stessi. 388 00:18:34,260 --> 00:18:37,080 Alla fine della giornata, non si può fare qualsiasi cosa con un ciclo while che si 389 00:18:37,080 --> 00:18:38,360 non è possibile con un ciclo for. 390 00:18:38,360 --> 00:18:41,430 Quindi sono alla fine del funzionalmente lo stesso giorno. 391 00:18:41,430 --> 00:18:43,840 Ma permette di esprimerti un po 'diverso in 392 00:18:43,840 --> 00:18:44,850 seguente modo. 393 00:18:44,850 --> 00:18:49,720 >> Con il ciclo while, è quello che c'è in parentesi che è controllato ancora e 394 00:18:49,720 --> 00:18:51,050 ancora e ancora. 395 00:18:51,050 --> 00:18:55,100 E non appena che l'espressione è falsa, poi il ciclo si interrompe l'esecuzione, 396 00:18:55,100 --> 00:18:57,890 e il computer procede a eseguire qualunque altro codice che 397 00:18:57,890 --> 00:18:59,230 avere nel vostro file. 398 00:18:59,230 --> 00:19:02,180 >> Ma ciò che è interessante è che ho digitato letteralmente vero. 399 00:19:02,180 --> 00:19:06,680 E vero è un tipo di valore booleano, un valore vero o falso. 400 00:19:06,680 --> 00:19:09,750 Quindi potrebbe mai diventare vero false se ho letteralmente 401 00:19:09,750 --> 00:19:11,970 hard-coded nel mio programma? 402 00:19:11,970 --> 00:19:12,470 Quindi no. 403 00:19:12,470 --> 00:19:13,730 E 'un po' strano che ho fatto questo. 404 00:19:13,730 --> 00:19:15,190 Ma vero è vero. 405 00:19:15,190 --> 00:19:16,320 Non c'è più-plussing. 406 00:19:16,320 --> 00:19:17,820 Non c'è uso di variabili qui. 407 00:19:17,820 --> 00:19:22,740 Quindi perché a livello di codice, mentre è vero, questo ciclo sta andando sempre di valutare 408 00:19:22,740 --> 00:19:24,090 ancora e ancora e ancora. 409 00:19:24,090 --> 00:19:27,660 >> Così come molte volte è il mondo ciao andare in stampa sullo schermo? 410 00:19:27,660 --> 00:19:28,170 Per sempre. 411 00:19:28,170 --> 00:19:31,980 Un numero infinito di volte fino batteria muore o qualche altra esterne 412 00:19:31,980 --> 00:19:32,730 evento si verifica. 413 00:19:32,730 --> 00:19:35,880 Quindi questo non è probabilmente il miglior programma scrivere, poiché se l'utente 414 00:19:35,880 --> 00:19:38,660 non può mai lasciare il tuo programma, è probabilmente non è quello desiderato. 415 00:19:38,660 --> 00:19:41,070 >> Ma a volte, i programmi dovrebbero hanno un ciclo infinito. 416 00:19:41,070 --> 00:19:44,050 Per esempio, se il computer ha un orologio su di esso, certamente sarebbe 417 00:19:44,050 --> 00:19:48,130 bello se il vostro orologio si fa a mantenere l'aggiornamento sé sempre, seppur una volta 418 00:19:48,130 --> 00:19:50,500 seconda o una volta al minuto o qualcosa di simile. 419 00:19:50,500 --> 00:19:53,690 Loop Così anche infiniti hanno il loro posto. 420 00:19:53,690 --> 00:19:54,360 >> D'accordo. 421 00:19:54,360 --> 00:19:55,190 Infine, questa. 422 00:19:55,190 --> 00:19:57,770 E questo è un po 'diverso funzionalmente, e torneremo a 423 00:19:57,770 --> 00:19:59,460 questo probabilmente in Pset 1. 424 00:19:59,460 --> 00:20:02,370 Ma c'è un altro tipo di ciclo chiamato un ciclo Do While. 425 00:20:02,370 --> 00:20:07,100 E l'unica differenza tra un fare mentre loop e, dicono, un ciclo while, 426 00:20:07,100 --> 00:20:11,120 è che la condizione è verificata non prima di eseguire il codice, ma dopo 427 00:20:11,120 --> 00:20:12,080 si esegue il codice. 428 00:20:12,080 --> 00:20:15,380 Così in alto per l'istante loop, mentre il fare, mentre 429 00:20:15,380 --> 00:20:16,560 controlla in fondo. 430 00:20:16,560 --> 00:20:21,370 >> E questo significa solo che il ciclo while tipicamente eseguire più volte 431 00:20:21,370 --> 00:20:24,630 o di un minor numero di volte che un ciclo while? 432 00:20:24,630 --> 00:20:30,810 Potenzialmente più volte, perché un fare ciclo while è chiaramente dicendo fare questo, 433 00:20:30,810 --> 00:20:34,600 solo dopo questo punto si controlla se la condizione interna del 434 00:20:34,600 --> 00:20:35,980 tra parentesi è vero. 435 00:20:35,980 --> 00:20:37,940 >> Quindi vedremo di nuovo probabilmente nel Ptaratura 1. 436 00:20:37,940 --> 00:20:41,150 Se mai voglia di fare qualcosa di a almeno una volta e poi magari un po 'di più 437 00:20:41,150 --> 00:20:43,350 volte, questo è un buon costrutto da utilizzare. 438 00:20:43,350 --> 00:20:46,970 Ma un ciclo while, invece, sarà controllare prima la sua condizione. 439 00:20:46,970 --> 00:20:50,660 E questo è tutto per il loop in C, DO mentre, mentre, e per i cicli. 440 00:20:50,660 --> 00:20:54,700 E ancora, mappano abbastanza bene indietro a zero, tranne questo non 441 00:20:54,700 --> 00:20:57,350 piuttosto hanno la stessa analogico in Scratch. 442 00:20:57,350 --> 00:20:58,880 >> Beh, che dire, ora, le variabili? 443 00:20:58,880 --> 00:21:02,600 Quindi questo è come ho dichiarato una variabile sintatticamente l'altro giorno. 444 00:21:02,600 --> 00:21:06,440 Ho avuto un int, che ho sostenuto è un numero intero. 445 00:21:06,440 --> 00:21:09,690 Ho poi avuto una variabile chiamata contatore, e poi una virgola. 446 00:21:09,690 --> 00:21:11,070 Così che cosa è questa linea di codice che fa? 447 00:21:11,070 --> 00:21:14,540 Questo è, molto semplicemente, che dichiara una variabile - 448 00:21:14,540 --> 00:21:17,940 che è, chiedendo al computer, dammi qualche ricordo, mi danno alcuni bit - in 449 00:21:17,940 --> 00:21:19,450 che posso conservare cosa? 450 00:21:19,450 --> 00:21:20,300 Un int. 451 00:21:20,300 --> 00:21:23,570 E il punto e virgola significa solo fine della linea di codice. 452 00:21:23,570 --> 00:21:25,500 >> Ora, la seconda linea è probabilmente abbastanza da indovinare. 453 00:21:25,500 --> 00:21:29,710 Che cosa è counter = 0; fare? 454 00:21:29,710 --> 00:21:31,690 E 'assegnazione da 0 a contrastare. 455 00:21:31,690 --> 00:21:33,470 E quindi questa è l'altra cosa che è un po 'fastidioso 456 00:21:33,470 --> 00:21:34,540 rispetto, ad esempio, l'algebra. 457 00:21:34,540 --> 00:21:39,110 Mentre in algebra, significa il segno di uguale pari, qui in C, la parità 458 00:21:39,110 --> 00:21:40,470 segno significa assegnazione. 459 00:21:40,470 --> 00:21:45,380 Quindi significa mettere ciò che è a destra in ciò che è a sinistra. 460 00:21:45,380 --> 00:21:49,030 E vedremo un altro simbolo, uguale pari, quando vogliamo testare effettivamente 461 00:21:49,030 --> 00:21:50,570 per la qualità, un po 'fastidioso. 462 00:21:50,570 --> 00:21:52,590 >> Ma questo è un po inefficiente. 463 00:21:52,590 --> 00:21:55,090 È un po 'fastidioso che ho per dichiarare una variabile e 464 00:21:55,090 --> 00:21:56,110 poi dargli un valore. 465 00:21:56,110 --> 00:21:59,380 Quindi C in realtà ci permette di semplificare questo e basta fare tutto in una volta. 466 00:21:59,380 --> 00:22:01,330 È possibile dichiarare la variabile sulla sinistra. 467 00:22:01,330 --> 00:22:04,590 Si può ancora fare l'assegnazione del destra mettendo quel segno uguale in 468 00:22:04,590 --> 00:22:05,030 mezzo. 469 00:22:05,030 --> 00:22:08,740 Così alla fine della giornata, questi due sono equivalente, ma questo, francamente, 470 00:22:08,740 --> 00:22:11,840 è probabilmente l'abitudine migliore per entrare in solo perché è un po 'meno 471 00:22:11,840 --> 00:22:15,040 codice, è un po 'più facile da leggere, ed è appena stringe 472 00:22:15,040 --> 00:22:17,470 il codice, per così dire. 473 00:22:17,470 --> 00:22:22,120 >> Tutte le domande finora sugli anelli, sulle variabili, sulle condizioni, sui 474 00:22:22,120 --> 00:22:27,001 Booleani, sia tecnicamente o concettuale? 475 00:22:27,001 --> 00:22:28,010 D'accordo. 476 00:22:28,010 --> 00:22:30,690 Così ora questo successivo ottiene un po 'più interessante. 477 00:22:30,690 --> 00:22:34,790 E questo è l'esempio che ho messo scorso tempo che appena mappa un esempio Scratch 478 00:22:34,790 --> 00:22:35,820 oltre a C. 479 00:22:35,820 --> 00:22:36,580 >> Così una funzione. 480 00:22:36,580 --> 00:22:38,110 In parole povere, che cosa è una funzione? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Avuto modo di essere più audace con la vostra risposta. 483 00:22:44,350 --> 00:22:45,020 Che cos'è una funzione? 484 00:22:45,020 --> 00:22:46,320 >> STUDENTE: Fa qualcosa. 485 00:22:46,320 --> 00:22:46,780 >> DAVID MALAN: Cosa e 'quello? 486 00:22:46,780 --> 00:22:48,000 >> STUDENTE: Fa qualcosa. 487 00:22:48,000 --> 00:22:48,710 >> DAVID MALAN: Fa qualcosa. 488 00:22:48,710 --> 00:22:49,000 OK. 489 00:22:49,000 --> 00:22:49,590 Inizieremo lì. 490 00:22:49,590 --> 00:22:51,270 Quindi una funzione fa qualcosa. 491 00:22:51,270 --> 00:22:55,160 Quindi è un pezzo di codice che è essenzialmente attuata altrove, che 492 00:22:55,160 --> 00:22:56,620 anzi fa qualcosa. 493 00:22:56,620 --> 00:23:00,180 Ora, la cosa interessante di una funzione è che può prendere in ingresso, 494 00:23:00,180 --> 00:23:02,710 e può produrre output. 495 00:23:02,710 --> 00:23:05,090 E diciamo effettivamente prendere uno sguardo a questo. 496 00:23:05,090 --> 00:23:09,030 >> Così l'uomo dietro la tenda è stato deliberato un momento fa. 497 00:23:09,030 --> 00:23:10,320 Qui abbiamo un tavolo. 498 00:23:10,320 --> 00:23:13,010 Ma supponiamo che questo in realtà rappresenta una grande scatola. 499 00:23:13,010 --> 00:23:14,940 Quindi questa è una cosiddetta scatola nera. 500 00:23:14,940 --> 00:23:19,800 E, in generale, nel disegno, in calcolatore scienza, scatole nere appena si riferiscono a 501 00:23:19,800 --> 00:23:22,510 parti di funzionalità che qualcuno ha implementato, e non fare 502 00:23:22,510 --> 00:23:26,140 necessariamente conosce o si cura come è attuato sotto la cappa. 503 00:23:26,140 --> 00:23:28,960 Hai appena interessa che questa scatola nera, che vedremo ora iniziare a chiamare un 504 00:23:28,960 --> 00:23:30,730 funzione, fa qualcosa. 505 00:23:30,730 --> 00:23:34,710 >> Così, per esempio, se questa scatola nera sul la fase qui rappresenta printf, un 506 00:23:34,710 --> 00:23:38,040 funzione, lo so da esempi precedenti printf che prende uno o più 507 00:23:38,040 --> 00:23:40,910 argomenti, e il primo di questi argomenti dovrebbero essere una stringa, come 508 00:23:40,910 --> 00:23:44,780 "Ciao, mondo". Beh, se io sono la persona scrivere il programma, e voglio 509 00:23:44,780 --> 00:23:50,460 utilizzare printf, io, per esempio, potrebbe prendere un pezzo di carta bianca qui e un 510 00:23:50,460 --> 00:23:55,060 pennarello nero e scrivere su di esso - 511 00:23:55,060 --> 00:23:56,580 Ho scritto male "mondo" - 512 00:23:56,580 --> 00:23:59,560 H-E-L-L-O. 513 00:23:59,560 --> 00:24:04,220 >> Quindi mi prendo il mio pennarello nero e io scrivere, così grande e leggibile come posso su 514 00:24:04,220 --> 00:24:07,260 questo pezzo di carta, "ciao, mondo", e ora io rivendico questa è la mia tesi. 515 00:24:07,260 --> 00:24:09,740 Questa è una stringa rappresentata con un pezzo di carta bianca. 516 00:24:09,740 --> 00:24:13,030 E il mio ingresso ora alla funzione printf sta per essere presente. 517 00:24:13,030 --> 00:24:18,250 Quindi vi invito printf, passando tale argomento come input ad esso. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> E ora, io non so come la persona che ha scriveva printf lo ha fatto anni fa, ma 520 00:24:26,740 --> 00:24:31,110 So dalla sua documentazione il suo scopo nella vita è quello di stampare quello che ho 521 00:24:31,110 --> 00:24:34,410 fornire ad essa come input. 522 00:24:34,410 --> 00:24:40,630 E così, anche se questa implementazione è a mia insaputa 523 00:24:40,630 --> 00:24:44,170 sotto la cappa, ora Vedo, oh, è fatto. 524 00:24:44,170 --> 00:24:45,740 Esso ha stampato qualcosa sullo schermo. 525 00:24:45,740 --> 00:24:49,070 E ora il controllo del programma, se ci erano più righe di codice, avrebbe 526 00:24:49,070 --> 00:24:51,070 ora sono tornati a me. 527 00:24:51,070 --> 00:24:52,290 E quindi il fatto che Colton - 528 00:24:52,290 --> 00:24:55,370 benedica il suo cuore, si nasconde qui sotto un tavolo di fronte a tutti voi - 529 00:24:55,370 --> 00:24:59,530 è intenzionale nel senso che io non lo so e non mi importa come printf è 530 00:24:59,530 --> 00:25:00,100 implementato. 531 00:25:00,100 --> 00:25:03,390 So solo che, ancora una volta, dalla sua documentazione, cosa fa e come mi 532 00:25:03,390 --> 00:25:05,040 dovrei usarlo. 533 00:25:05,040 --> 00:25:09,140 >> Ora, ricordare che printf potrebbe ottenere un po 'più sofisticato. 534 00:25:09,140 --> 00:25:12,220 Ancora una volta, stiamo solo parlando del equivalente del blocco di Say Scratch. 535 00:25:12,220 --> 00:25:14,230 Ma ho fatto anche l'ultima volta. 536 00:25:14,230 --> 00:25:17,270 Volevo fare il mio programma ciao un poco più dinamico e non solo difficile 537 00:25:17,270 --> 00:25:19,740 Codice di qualcosa come "mondo", e sicuramente non è difficile codice qualcosa 538 00:25:19,740 --> 00:25:22,520 arbitrario come D-A-V-I-D nel programma. 539 00:25:22,520 --> 00:25:27,510 Volevo chiedere all'utente per la sua nome, e poi fare qualcosa con 540 00:25:27,510 --> 00:25:29,720 questa stringa che essi forniscono. 541 00:25:29,720 --> 00:25:32,690 >> Quindi c'è qualcosa di un po 'diverso qui. printf, un momento fa, 542 00:25:32,690 --> 00:25:35,860 ha, infatti, fare qualcosa, ma non ha prodotto nulla per me. 543 00:25:35,860 --> 00:25:36,020 Giusto? 544 00:25:36,020 --> 00:25:38,910 Colton non mi consegnare nulla indietro, nessun pezzo di carta. 545 00:25:38,910 --> 00:25:40,320 C'era solo un effetto collaterale. 546 00:25:40,320 --> 00:25:44,510 Il mio fornitura "ciao, mondo" come un argomento portato Colton nel 547 00:25:44,510 --> 00:25:48,420 effetto collaterale di una parola, alcune parole, che appare sullo schermo. 548 00:25:48,420 --> 00:25:51,350 >> GetString, però, è un po ' diverso. getstring è anche un 549 00:25:51,350 --> 00:25:54,590 funzionare, ma restituisce qualche valore. 550 00:25:54,590 --> 00:25:56,370 Non solo hanno un effetto collaterale estetico. 551 00:25:56,370 --> 00:26:00,230 In realtà mi dà, la persona chiamata o usando la funzione, 552 00:26:00,230 --> 00:26:01,320 qualcosa di nuovo. 553 00:26:01,320 --> 00:26:05,740 Quindi, in questo caso, è getstring chiamato con GetString aperto 554 00:26:05,740 --> 00:26:07,510 parentesi, vicino parentesi. 555 00:26:07,510 --> 00:26:11,370 Non GetString, pertanto, prendere eventuali argomenti o di ingresso? 556 00:26:11,370 --> 00:26:12,340 No, non lo sembra. 557 00:26:12,340 --> 00:26:14,460 Il suo scopo nella vita è solo per ottenere una stringa. 558 00:26:14,460 --> 00:26:16,910 Non ha bisogno di più dettagli di quello. 559 00:26:16,910 --> 00:26:20,430 Quindi, mi permetta di andare avanti e far finta che, ancora una volta, questa scatola nera non è printf, 560 00:26:20,430 --> 00:26:25,160 ma GetString, e mi permetta, la persona scrivere questo programma, vedere o usare 561 00:26:25,160 --> 00:26:29,720 getString semplicemente scrivendo G-E-T-S-T-R-I-N-G, aperto paren, close 562 00:26:29,720 --> 00:26:32,170 parentesi, GetString. 563 00:26:32,170 --> 00:26:36,920 >> Ora, non ho idea di come il personale CS50 implementato GetString, ma so che 564 00:26:36,920 --> 00:26:41,240 se aspetto abbastanza a lungo, che farà la sua cosa sotto il cofano, magari usando 565 00:26:41,240 --> 00:26:44,940 alcune variabili, magari usando un po 'di condizioni, magari usando alcuni loop, 566 00:26:44,940 --> 00:26:48,170 magari usando alcune funzioni, magari usando - 567 00:26:48,170 --> 00:26:52,290 solo cercando di stallo - magari utilizzando alcune altre funzioni di programmazione. 568 00:26:52,290 --> 00:26:55,350 Ma se aspetto abbastanza a lungo - in realtà, nel computer, questo accade 569 00:26:55,350 --> 00:26:56,270 super veloce - 570 00:26:56,270 --> 00:26:59,910 se aspetto abbastanza a lungo, questa funzione GetString sta per ottenere una stringa 571 00:26:59,910 --> 00:27:04,060 da parte dell'utente, che è presumibilmente scrivendo fuori sulla loro tastiera, e 572 00:27:04,060 --> 00:27:08,090 poi, quando si è fatto sempre getstring quei caratteri da parte dell'utente 573 00:27:08,090 --> 00:27:14,080 e loro memorizzazione in una stringa, che funzione, GetString, sta per avere 574 00:27:14,080 --> 00:27:17,990 pronto per me un po 'di potenza di cui sono andando a recuperare attraverso la 575 00:27:17,990 --> 00:27:19,470 operatore di assegnazione. 576 00:27:19,470 --> 00:27:25,390 >> E se me ne vado, anzi, in uscita qui, Obosi ha generosamente 577 00:27:25,390 --> 00:27:29,900 partecipato, senza conoscere questo in avanzare, scrivendo il suo nome su questo 578 00:27:29,900 --> 00:27:33,100 variabile, che sta rappresentando una stringa. 579 00:27:33,100 --> 00:27:35,640 Ora, l'operatore di assegnazione significa, anche anche se questo potrebbe sentire un po ' 580 00:27:35,640 --> 00:27:38,790 ridondante, io in realtà ho bisogno di per fare una copia di questo. 581 00:27:38,790 --> 00:27:40,700 Perché sulla mano sinistra lato - whoops! - 582 00:27:40,700 --> 00:27:45,760 notare che io essenzialmente ho stringa nominare dal lato sinistro. 583 00:27:45,760 --> 00:27:48,280 Così ho anche intenzione di fare una copia di questo. 584 00:27:48,280 --> 00:27:50,990 E questo è un po 'una bugia, perché vedremo in una settimana o due di 585 00:27:50,990 --> 00:27:54,100 momento che le stringhe non sono in realtà quello che sembrano essere. 586 00:27:54,100 --> 00:27:56,700 >> Ma per ora, qui è il valore di ritorno. 587 00:27:56,700 --> 00:28:00,160 Qui è la mia copia di esso dopo utilizzando l'operatore di assegnazione. 588 00:28:00,160 --> 00:28:01,790 E ora, che cosa voglio fare dopo? 589 00:28:01,790 --> 00:28:04,080 Ora abbiamo la seconda di due righe di codice. 590 00:28:04,080 --> 00:28:05,640 Quindi ora voglio chiamare printf. 591 00:28:05,640 --> 00:28:08,500 Facciamo finta adesso che il nero scatola è tornato di nuovo ad essere 592 00:28:08,500 --> 00:28:10,210 printf e non GetString. 593 00:28:10,210 --> 00:28:12,200 >> Printf questa volta sta per prendere il numero di argomenti? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Quindi guarda, è come due. 596 00:28:16,770 --> 00:28:18,860 Ci sono due virgole in là, ma uno di quei virgole, e ' 597 00:28:18,860 --> 00:28:20,220 all'interno delle virgolette. 598 00:28:20,220 --> 00:28:23,190 Quindi, il primo argomento è letteralmente sta per essere presente. 599 00:28:23,190 --> 00:28:31,850 H-E-L-L-O, virgola, cento s, backslash-n. 600 00:28:31,850 --> 00:28:36,560 E ora sto fornendo non un argomento, ma due argomenti di printf. 601 00:28:36,560 --> 00:28:39,530 >> E cosa printf deve fare con questi due ingressi dopo che li passano 602 00:28:39,530 --> 00:28:42,050 come argomenti? 603 00:28:42,050 --> 00:28:45,360 Si suppone di prendere la seconda di loro, che ho chiamato il nome, in modo che il 604 00:28:45,360 --> 00:28:48,660 secondo pezzo di carta che ho scritto fuori un momento fa si chiama nome. 605 00:28:48,660 --> 00:28:53,550 E 'intenzione di spina del valore all'interno di tale variabile nel segnaposto, 606 00:28:53,550 --> 00:28:58,310 % S, in modo che, ancora una volta, in un attimo di tempo, vedremo un effetto collaterale di 607 00:28:58,310 --> 00:29:04,180 dopo aver chiamato printf, per cui ora ci vedere non "ciao, mondo", ma "ciao, 608 00:29:04,180 --> 00:29:04,710 Obosi. " 609 00:29:04,710 --> 00:29:08,730 >> Quindi un grande applauso a tutti e due i nostri volontari, solo uno dei quali conoscevano 610 00:29:08,730 --> 00:29:12,010 questo sarebbe successo. 611 00:29:12,010 --> 00:29:12,990 D'accordo. 612 00:29:12,990 --> 00:29:16,480 Così, forse, semplice come quello era, certamente, se avete già familiarità 613 00:29:16,480 --> 00:29:20,190 con i quali, si spera che non sarà mai dimenticare che la particolare visuale di come 614 00:29:20,190 --> 00:29:21,220 funzioni di lavoro. 615 00:29:21,220 --> 00:29:23,000 >> Quindi c'è più di una semplice GetString. 616 00:29:23,000 --> 00:29:26,020 All'interno della biblioteca CS50, c'è un intero gruppo di funzioni, tutte 617 00:29:26,020 --> 00:29:29,510 sono capitalizzati solo per chiarire che abbiamo scritto queste funzioni. 618 00:29:29,510 --> 00:29:33,610 Tipicamente, in C, quasi ogni altra funzione che verrà utilizzato è minuscolo. 619 00:29:33,610 --> 00:29:36,190 Ma abbiamo volutamente usiamo le lettere maiuscole solo per chiarire che questi 620 00:29:36,190 --> 00:29:39,880 sono ruote di formazione di sorta che faremo utilizzare solo per un paio di settimane che 621 00:29:39,880 --> 00:29:42,890 semplificare il processo di ottenere input dall'utente. 622 00:29:42,890 --> 00:29:46,740 >> La biblioteca CS50 non fa nulla che voi stessi non potrebbe fare da 623 00:29:46,740 --> 00:29:50,230 semplicemente utilizzando il codice C da un libro di testo oldschool. 624 00:29:50,230 --> 00:29:53,310 Ma, ancora una volta, li usiamo come formazione ruote del genere solo per un paio di 625 00:29:53,310 --> 00:29:57,250 settimane, in modo da poter eliminare il complessità che presto capito 626 00:29:57,250 --> 00:30:00,460 voi stessi di fare qualcosa come relativamente semplice da ottenere 627 00:30:00,460 --> 00:30:02,080 input da un utente. 628 00:30:02,080 --> 00:30:05,540 >> Così sapere che avrete accesso a GetChar, getDouble - 629 00:30:05,540 --> 00:30:06,050 raddoppiare. 630 00:30:06,050 --> 00:30:07,050 Come si chiama - e poi GetFloat. 631 00:30:07,050 --> 00:30:07,600 Che cosa è un float? 632 00:30:07,600 --> 00:30:09,382 Cominciamo lì. 633 00:30:09,382 --> 00:30:10,600 >> STUDENTE: [incomprensibile]. 634 00:30:10,600 --> 00:30:10,790 >> DAVID MALAN: Già. 635 00:30:10,790 --> 00:30:12,120 Si tratta di un numero con un punto decimale. 636 00:30:12,120 --> 00:30:15,930 Così mentre un int è un numero intero, che è solo un numero da 0 a 9, 637 00:30:15,930 --> 00:30:18,940 certo numero di ripetizioni della stessa, un galleggiante è qualcosa 638 00:30:18,940 --> 00:30:20,100 con un punto decimale. 639 00:30:20,100 --> 00:30:26,090 E un doppio, nel frattempo, è anche un numero con un punto decimale, ma più 640 00:30:26,090 --> 00:30:28,160 numeri dopo la virgola punto, potenzialmente. 641 00:30:28,160 --> 00:30:30,040 >> Così ci arriveremo di nuovo a questo non molto. 642 00:30:30,040 --> 00:30:34,560 Ma tipicamente, ciascuno di questi tipi di dati, ciascuno di questi tipi di variabili 643 00:30:34,560 --> 00:30:39,380 che una libreria come la nostra può tornare te, utilizzare un diverso numero di bit a 644 00:30:39,380 --> 00:30:40,290 memorizzare le informazioni. 645 00:30:40,290 --> 00:30:43,910 In genere, un Char, che significa semplicemente un carattere, utilizza 8 bit. 646 00:30:43,910 --> 00:30:47,490 E questo è effettivamente coerente con la nostra byte di volontari scorsa settimana che 647 00:30:47,490 --> 00:30:50,410 si avvicinò e rappresentato uno Carattere ASCII in un momento. 648 00:30:50,410 --> 00:30:51,850 Quindi un Char è di 8 bit. 649 00:30:51,850 --> 00:30:54,430 >> Un galleggiante sembra essere 32 bit, tipicamente. 650 00:30:54,430 --> 00:30:59,230 E un doppio, come si può immaginare, è in realtà i 64 bit, che è appena più, 651 00:30:59,230 --> 00:31:01,360 il che significa che si può avere più grande numeri o più precisione. 652 00:31:01,360 --> 00:31:03,000 Ma ancora una volta, più su che un'altra volta. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, nel frattempo, anche se stupidamente nome, è in realtà solo una 654 00:31:06,550 --> 00:31:10,770 numero intero che è due volte più grande, il doppio lunga, potenzialmente, come un normale 655 00:31:10,770 --> 00:31:12,940 numero intero, 64 bit invece di 32. 656 00:31:12,940 --> 00:31:14,560 E getString abbiamo usato. 657 00:31:14,560 --> 00:31:18,870 >> Ma si scopre, nella biblioteca CS50, che viene realizzato, come vedremo, in 658 00:31:18,870 --> 00:31:23,560 la forma dei due file, uno dei quali è chiamato cs50.h, ha due altri 659 00:31:23,560 --> 00:31:24,770 tipi di dati in essa. 660 00:31:24,770 --> 00:31:29,700 Booleani non esistono in C. Si può li simulare da solo utilizzando 0 e 1 661 00:31:29,700 --> 00:31:30,850 durante i vostri programmi. 662 00:31:30,850 --> 00:31:35,500 Ma siamo in biblioteca CS50 abbiamo creato i simboli "true" e "false" 663 00:31:35,500 --> 00:31:38,580 per rappresentare 1 e 0 in modo da non devono codificare qualcosa 664 00:31:38,580 --> 00:31:39,810 letteralmente come 1 e 0. 665 00:31:39,810 --> 00:31:40,980 Ma vedremo di nuovo quelle. 666 00:31:40,980 --> 00:31:42,330 >> String, troppo, non esiste. 667 00:31:42,330 --> 00:31:44,520 Ed è per questo che ho detto che è un po 'di una bugia bianca per ora. 668 00:31:44,520 --> 00:31:46,660 Ma faremo buccia indietro che strato non molto. 669 00:31:46,660 --> 00:31:49,540 Ma per ora, una stringa è un sequenza di caratteri. 670 00:31:49,540 --> 00:31:51,790 >> Nel frattempo, in C, è infatti avere diversi tipi di dati. 671 00:31:51,790 --> 00:31:53,200 AVVISO Questi sono minuscole. 672 00:31:53,200 --> 00:31:56,960 Quindi le funzioni che avete visto poco fa sono funzioni scritte da CS50 che 673 00:31:56,960 --> 00:32:02,310 tornerà a voi un valore che cade in una di queste categorie. 674 00:32:02,310 --> 00:32:06,730 >> Un cheat sheet paio solo di piantare il seme qui. printf non solo 675 00:32:06,730 --> 00:32:08,600 prendere% s come segnaposto. 676 00:32:08,600 --> 00:32:13,490 Prende% d per gli interi decimali, o% Vorrei lavorare pure. 677 00:32:13,490 --> 00:32:19,450 % F è flottante valori punto. % C è per un char, se si vuole collegare un solo 678 00:32:19,450 --> 00:32:23,510 carattere in una stringa preformattato come abbiamo fatto finora, è possibile utilizzare% c. 679 00:32:23,510 --> 00:32:28,490 >> E poi, un po 'fastidioso,% LLD è per un lungo, lungo intero decimale, 680 00:32:28,490 --> 00:32:31,050 il che significa che solo se hai bisogno di una realtà numero grande e si sta utilizzando qualcosa 681 00:32:31,050 --> 00:32:35,450 chiamato un lungo lungo, che verremo torna in un pset, è possibile utilizzare% LLD per 682 00:32:35,450 --> 00:32:40,700 raccontare printf, collegare una davvero grande integer qui attraverso la sua seconda o 683 00:32:40,700 --> 00:32:41,830 qualche altro argomento. 684 00:32:41,830 --> 00:32:45,700 >> E, infine, ho promesso che c'è qualche altra fuga 685 00:32:45,700 --> 00:32:47,670 sequenze che supporta printf. 686 00:32:47,670 --> 00:32:49,160 Abbiamo visto backslash-n. 687 00:32:49,160 --> 00:32:50,510 Backslash-r si può vedere. 688 00:32:50,510 --> 00:32:51,780 E 'una sorta di una cosa vecchia scuola. 689 00:32:51,780 --> 00:32:55,920 Se avete mai usato un vero e macchina da scrivere anni fa e hai tirato su la manovella 690 00:32:55,920 --> 00:32:59,810 che ruotava non solo la ruota per spostare la scaletta, ma ha anche spostato il 691 00:32:59,810 --> 00:33:03,730 cosa completamente tutta la strada verso sinistra, beh, backslash-r basta 692 00:33:03,730 --> 00:33:06,480 muove essenzialmente il cursore indietro l'inizio della linea 693 00:33:06,480 --> 00:33:07,830 senza spostarlo verso il basso. 694 00:33:07,830 --> 00:33:09,780 Ma ancora una volta, più su quello, forse, in futuro. 695 00:33:09,780 --> 00:33:13,670 >> Backslash-citazione, backslash-doppie virgolette, backslash-backslash è il 696 00:33:13,670 --> 00:33:16,600 soluzione al piccolo piccolo enigma Alludevo prima. 697 00:33:16,600 --> 00:33:18,920 E backslash-0 è in realtà molto interessante. 698 00:33:18,920 --> 00:33:21,470 Ma torniamo al che tra non molto. 699 00:33:21,470 --> 00:33:25,640 >> Quindi, mi permetta di andare in, ora, il CS50 apparecchio, e cerchiamo di fare in realtà un 700 00:33:25,640 --> 00:33:28,930 rapido riscaldamento con uno degli esempi abbiamo già e poi passare a 701 00:33:28,930 --> 00:33:31,160 qualcosa di un po 'più complesso. 702 00:33:31,160 --> 00:33:34,980 Quindi, se io apro il mio programma chiamato gedit - 703 00:33:34,980 --> 00:33:36,840 questo è il mio editor grafico. 704 00:33:36,840 --> 00:33:38,460 E posso farlo - 705 00:33:38,460 --> 00:33:39,820 Lasciatemi chiudere quella finestra lì - 706 00:33:39,820 --> 00:33:42,720 per mezzo di questa icona quaggiù, gedit, in basso a sinistra 707 00:33:42,720 --> 00:33:44,170 angolo accanto al menu. 708 00:33:44,170 --> 00:33:48,670 >> Ho intenzione di andare avanti e progredire, e salvare questo esempio in, diciamo, John 709 00:33:48,670 --> 00:33:49,660 Cartella di Harvard. 710 00:33:49,660 --> 00:33:52,690 Cartella di John Harvard è solo la sua casa directory in cui tutti i suoi file di vivere 711 00:33:52,690 --> 00:33:53,340 per impostazione predefinita. 712 00:33:53,340 --> 00:33:58,410 E ho intenzione di salvare questo come un file chiamato ciao-0.C. 713 00:33:58,410 --> 00:34:01,260 E io ho scelto questo nome proprio così allinea con il codice di esempio sul 714 00:34:01,260 --> 00:34:04,210 sito del corso e nel YouTube video online. 715 00:34:04,210 --> 00:34:06,320 >> Così ora ho intenzione di cominciare a scrivere il mio primo programma. 716 00:34:06,320 --> 00:34:08,469 Permettetemi di zoomare per leggibilità. 717 00:34:08,469 --> 00:34:12,760 E ho intenzione di andare avanti e dire: int void main, che è proprio così 718 00:34:12,760 --> 00:34:14,900 giallo pezzo di puzzle che avvia un programma. 719 00:34:14,900 --> 00:34:18,290 Ho preso l'abitudine di sopra del anni di apertura la mia parentesi graffa, quindi 720 00:34:18,290 --> 00:34:22,000 anche di chiuderlo e poi tornare a dove voglio mettere il mio codice, basta 721 00:34:22,000 --> 00:34:24,630 perché mi aiuta a mantenere tutto equilibrata, soprattutto perché il mio 722 00:34:24,630 --> 00:34:25,880 programma ottiene lungo. 723 00:34:25,880 --> 00:34:29,239 >> Ed ora, qui, ho intenzione di andare avanti e dire, printf, tra virgolette, 724 00:34:29,239 --> 00:34:34,330 ciao mondo, backslash-n, vicino citazione, parentesi chiusa, punto e virgola. 725 00:34:34,330 --> 00:34:38,100 Quindi sto solo ripetendo tutto quello che abbiamo state dando per scontato finora. 726 00:34:38,100 --> 00:34:39,270 Ora sto andando a diminuire. 727 00:34:39,270 --> 00:34:43,030 >> E questa finestra di terminale quaggiù, cosa ho il permesso di fare in questo nero 728 00:34:43,030 --> 00:34:44,389 e finestra bianca? 729 00:34:44,389 --> 00:34:46,977 Cosa posso usare per? 730 00:34:46,977 --> 00:34:49,770 Quindi questo è dove ho eseguito i comandi e dove posso compilare cose. 731 00:34:49,770 --> 00:34:50,620 E ho intenzione di mantenerlo semplice. 732 00:34:50,620 --> 00:34:52,780 Ho intenzione di utilizzare un programma di Fai chiamato, che non è 733 00:34:52,780 --> 00:34:54,020 tecnicamente un compilatore. 734 00:34:54,020 --> 00:34:56,360 Chiamato Clang del compilatore, ma torneremo a che in un 735 00:34:56,360 --> 00:34:57,190 settimana o due di tempo. 736 00:34:57,190 --> 00:35:03,410 >> Per ora, sto solo andando a digitare make ciao-0, ma quelli di voi che sono stati 737 00:35:03,410 --> 00:35:07,050 confronto nelle vostre menti ciò che ho appena digitato a quello che avrei scritto può 738 00:35:07,050 --> 00:35:10,180 So già che ho fatto qualcosa che non va qui. 739 00:35:10,180 --> 00:35:12,160 Ora, ci sono chiaramente alcuni errori. 740 00:35:12,160 --> 00:35:16,742 Prima ancora di guardare a ciò che sono, qualunque pensieri su ciò che ho fatto di sbagliato? 741 00:35:16,742 --> 00:35:18,590 >> STUDENTI: [interponendo VOCI]. 742 00:35:18,590 --> 00:35:18,840 >> DAVID MALAN: Già. 743 00:35:18,840 --> 00:35:20,640 Mi manca file di intestazione della libreria. 744 00:35:20,640 --> 00:35:24,240 Uno di questi file. H sono chiamati intestazione file, e collettivamente 745 00:35:24,240 --> 00:35:25,680 appartengono a cose chiamate librerie. 746 00:35:25,680 --> 00:35:28,030 Le biblioteche sono solo pezzi di codice che altre persone hanno scritto. 747 00:35:28,030 --> 00:35:32,140 Quindi la norma [? i] biblioteca? è un raccolta di file contenenti codice 748 00:35:32,140 --> 00:35:33,330 che altre persone hanno scritto. 749 00:35:33,330 --> 00:35:34,820 >> Così mi manca quello. 750 00:35:34,820 --> 00:35:36,520 Allora perché mi appare un errore? 751 00:35:36,520 --> 00:35:40,840 Bene, lasciate scorrere indietro fino a la mia finestra di terminale qui. 752 00:35:40,840 --> 00:35:44,310 E purtroppo, in C, come in molti linguaggi di programmazione, in particolare 753 00:35:44,310 --> 00:35:47,830 se è tutto nuovo per voi, l'errore messaggi sono precisi, ma sono anche 754 00:35:47,830 --> 00:35:48,620 piuttosto criptico. 755 00:35:48,620 --> 00:35:51,720 E l'errore qui, in rosso, è "Funzione di libreria dichiarando implicitamente 756 00:35:51,720 --> 00:35:57,660 printf con il tipo ", e poi scorre alla riga successiva, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "C'è solo molto travolgente rapidamente. 758 00:36:00,220 --> 00:36:04,420 >> Ma quello che si dovrebbe cominciare a fare, se, di nuovo, di nuovo da tutto questo, è solo per 759 00:36:04,420 --> 00:36:06,010 cominciare per cercare parole chiave. 760 00:36:06,010 --> 00:36:08,770 Chiaramente, potrei non capire la metà delle parole che sto vedendo ancora. 761 00:36:08,770 --> 00:36:10,140 Sarà, però, nel giro di una settimana. 762 00:36:10,140 --> 00:36:11,230 Ma vedo printf. 763 00:36:11,230 --> 00:36:14,310 E che dovrebbe iniziare, in breve tempo, a rinfrescare la memoria, tutto a posto, printf. 764 00:36:14,310 --> 00:36:15,210 Qualcosa non va con printf. 765 00:36:15,210 --> 00:36:16,580 Ho Spell sbagliato? 766 00:36:16,580 --> 00:36:18,130 No, non sembra che - oh. 767 00:36:18,130 --> 00:36:21,350 Non posso usare a meno che non insegno il compilatore che esiste. 768 00:36:21,350 --> 00:36:25,220 E così, ancora una volta, vai con il tuo istinto, anche se in realtà non capisci 769 00:36:25,220 --> 00:36:26,510 i messaggi di errore. 770 00:36:26,510 --> 00:36:30,240 >> E in effetti, la soluzione è quella appena includere nella parte superiore del file 771 00:36:30,240 --> 00:36:34,340 così, salvare di nuovo il mio file con Control-S o il menu File. 772 00:36:34,340 --> 00:36:36,730 E se io ora torno qui, Sto per cancellare questo. 773 00:36:36,730 --> 00:36:39,150 Control-L è solo un modo piacevole per cancellare lo schermo. 774 00:36:39,150 --> 00:36:44,870 E poi ho intenzione di scrivere "fare ciao 0 "Enter, e ora vedo ancora un 775 00:36:44,870 --> 00:36:47,710 sequenza di simboli criptici, ma torneremo a questo. 776 00:36:47,710 --> 00:36:49,230 Questo è quello che fanno è fare per voi. 777 00:36:49,230 --> 00:36:52,590 E 'l'automazione del processo di assunzione un comando abbastanza fastidioso che coinvolge 778 00:36:52,590 --> 00:36:54,050 Clang, il compilatore vero e proprio. 779 00:36:54,050 --> 00:36:57,460 Ma il fatto che ho ricevuto nessun errore significa che questa cosa dovrebbe funzionare. 780 00:36:57,460 --> 00:37:00,630 >> Così ora sto andando a fare - mi permetta di zoomare di nuovo - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 entrare, e anzi, vedo "Ciao, mondo". Quindi cerchiamo di migliorare la società 782 00:37:07,070 --> 00:37:12,105 questo sempre leggermente solo per replicare i passi che intendevamo. 783 00:37:12,105 --> 00:37:15,370 Ho intenzione di rinominare questo con Salva con nome per hello1.c. 784 00:37:15,370 --> 00:37:20,300 E ora ho intenzione di dichiarare una variabile chiamato nome, così il nome della stringa, 785 00:37:20,300 --> 00:37:23,420 e ho intenzione di mettere in essa il valore tra virgolette 786 00:37:23,420 --> 00:37:27,030 D-A-V-I-D close-quote virgola. 787 00:37:27,030 --> 00:37:31,150 E ora ho intenzione di sostituire il "mondo" con quale segnaposto per una stringa? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> E ora, come molti argomenti dovrebbe printf prendere questo tempo? 790 00:37:35,040 --> 00:37:35,700 Quindi due. 791 00:37:35,700 --> 00:37:37,090 Così vado al di fuori delle virgolette. 792 00:37:37,090 --> 00:37:39,330 Digito "nome", dopo una virgola. 793 00:37:39,330 --> 00:37:41,550 Ma ho fatto qualcosa che non va questa volta. 794 00:37:41,550 --> 00:37:43,940 Ma supponiamo che non ho fatto rendersi conto che ancora. 795 00:37:43,940 --> 00:37:44,910 Lasciami andare qui. 796 00:37:44,910 --> 00:37:48,850 >> E notate, troppo, sto diventando un po ' annoiato di digitare "make ciao 0" tutte le 797 00:37:48,850 --> 00:37:50,180 tempo, "make" e tutto questo. 798 00:37:50,180 --> 00:37:53,270 Così, si scopre, a Linus è possibile spesso colpito la freccia in alto sulla 799 00:37:53,270 --> 00:37:56,850 tastiera, e si può effettivamente scorrere attraverso tutti i comandi che ho 800 00:37:56,850 --> 00:37:58,830 eseguiti precedente a questo momento. 801 00:37:58,830 --> 00:38:02,040 Quindi, se lo faccio, Su, Su, c'è fare ciao 0. 802 00:38:02,040 --> 00:38:02,610 Non voglio questo. 803 00:38:02,610 --> 00:38:05,450 Voglio solo cambiare la situazione a ciao 1 questo momento, Enter. 804 00:38:05,450 --> 00:38:07,620 Alla fine, che verrà risparmiare un po 'di tempo. 805 00:38:07,620 --> 00:38:08,150 >> D'accordo. 806 00:38:08,150 --> 00:38:09,520 Purtroppo, non è un errore. 807 00:38:09,520 --> 00:38:10,980 Così mi permetta di scorrere verso l'alto. 808 00:38:10,980 --> 00:38:13,120 Questo sembra davvero macellato questo programma. 809 00:38:13,120 --> 00:38:16,530 Voglio dire, il mio dio, è due righe di codice, e le sue 10 righe di errori. 810 00:38:16,530 --> 00:38:18,800 Ma guardate la prima in alto. 811 00:38:18,800 --> 00:38:21,640 L'uso di stringa identificatore non dichiarato. 812 00:38:21,640 --> 00:38:23,270 Ti voglio dire standard di I N? 813 00:38:23,270 --> 00:38:23,930 No non l'ho fatto. 814 00:38:23,930 --> 00:38:24,940 Intendevo stringa. 815 00:38:24,940 --> 00:38:29,390 >> Ma dove è la variabile stringa tipo dichiarato, dd che diciamo? 816 00:38:29,390 --> 00:38:30,730 Quindi è nella CS50 biblioteca. 817 00:38:30,730 --> 00:38:33,740 Quindi non basta, in questi primi paio di settimane, giusto per usare 818 00:38:33,740 --> 00:38:34,860 quello C ci dà. 819 00:38:34,860 --> 00:38:38,120 Ho anche intenzione di andare qui, e io potrebbe mettere sopra o sotto, ma io 820 00:38:38,120 --> 00:38:40,340 basta tenere alfabetico per mantenere le cose ordinate. 821 00:38:40,340 --> 00:38:43,470 Ho intenzione di includere cs50.h, che è pre-installato per 822 00:38:43,470 --> 00:38:44,900 si sull'apparecchio CS50. 823 00:38:44,900 --> 00:38:47,640 Ed è open source, quindi, anche le persone su internet può utilizzare sul loro 824 00:38:47,640 --> 00:38:48,450 proprio computer. 825 00:38:48,450 --> 00:38:50,700 Ma si tratta con l'apparecchio CS50. 826 00:38:50,700 --> 00:38:55,320 >> Così ora lasciami andare indietro e ricompilare con questo fanno ciao 1. 827 00:38:55,320 --> 00:38:55,710 Dannazione. 828 00:38:55,710 --> 00:38:57,240 Ancora un altro errore. 829 00:38:57,240 --> 00:38:59,370 Permettetemi di scorrimento verso l'alto per il primo, però. 830 00:38:59,370 --> 00:39:00,630 Questo è un po 'complessa. 831 00:39:00,630 --> 00:39:03,830 Costante carattere multi-carattere. 832 00:39:03,830 --> 00:39:04,890 Questo non mi sta aiutando. 833 00:39:04,890 --> 00:39:08,220 Ma notate, Clang è almeno un po ' po 'decente, per cui con un po' 834 00:39:08,220 --> 00:39:11,890 verde simbolo caret, sta dicendo qui è dove ho fatto un casino. 835 00:39:11,890 --> 00:39:16,160 Perché si è rivolto, con quel piccolo freccia verde, per la sola quota prossima 836 00:39:16,160 --> 00:39:18,290 a mio nome? 837 00:39:18,290 --> 00:39:20,880 >> Quindi questa è una delle cose che hai appena abituarsi, soprattutto se si è stati 838 00:39:20,880 --> 00:39:23,980 programmazione in Python, o JavaScript, o di altre lingue in cui questo dettaglio 839 00:39:23,980 --> 00:39:24,560 non importa. 840 00:39:24,560 --> 00:39:25,740 In C, lo fa materia. 841 00:39:25,740 --> 00:39:29,520 Se si dichiara una stringa, che è una sequenza di 0 o più caratteri, 842 00:39:29,520 --> 00:39:32,280 effettivamente necessario utilizzare le virgolette doppie. 843 00:39:32,280 --> 00:39:36,670 Così ho davvero bisogno di cambiare questo ritorno per aprire citazione, chiudere citazione, con 844 00:39:36,670 --> 00:39:37,800 doppie virgolette. 845 00:39:37,800 --> 00:39:41,610 Le virgolette semplici hanno il loro posto, ma solo quando si utilizza individuale 846 00:39:41,610 --> 00:39:44,100 caratteri, ma più su che un'altra volta. 847 00:39:44,100 --> 00:39:46,550 Per ora, le virgolette doppie sono necessari. 848 00:39:46,550 --> 00:39:50,460 >> Così ora, lasciatemi tornare al mio terminale finestra, fare ciao 1. 849 00:39:50,460 --> 00:39:51,450 E chi è fiducioso? 850 00:39:51,450 --> 00:39:53,800 È questo programma ora sta andando per compilare correttamente? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 OK. 853 00:39:58,540 --> 00:39:59,780 Così tre di noi pensano questo. 854 00:39:59,780 --> 00:40:00,280 D'accordo. 855 00:40:00,280 --> 00:40:01,190 Invio. 856 00:40:01,190 --> 00:40:02,440 Ed effettivamente ha fatto. 857 00:40:02,440 --> 00:40:05,130 Quindi non c'è nessun errore questa volta, anche se questo programma è ottenuto un po ' 858 00:40:05,130 --> 00:40:05,840 più complesso. 859 00:40:05,840 --> 00:40:10,110 Se ora faccio dot barra ciao 1, Enter, è andare a dire "ciao, David." 860 00:40:10,110 --> 00:40:11,750 >> Ma facciamo la terza iterazione di questo, dove la 861 00:40:11,750 --> 00:40:13,380 programma è veramente dinamico. 862 00:40:13,380 --> 00:40:16,770 Lasciami andare avanti e cambiare il file nome, solo per coerenza con il 863 00:40:16,770 --> 00:40:20,410 file avrete a disposizione a voi in seguito on-line. 864 00:40:20,410 --> 00:40:21,620 Invio. 865 00:40:21,620 --> 00:40:25,510 E ora ho intenzione di andare in e non memorizzare "David" qui hard coded. 866 00:40:25,510 --> 00:40:28,826 Che cosa potevo fare per molto semplicemente migliorare questo programma? 867 00:40:28,826 --> 00:40:30,520 >> Potrei chiamare GetString. 868 00:40:30,520 --> 00:40:33,240 Potrebbe essere un po 'ciò che non è ovvio per accadere, quindi vado 869 00:40:33,240 --> 00:40:38,470 realmente per aggiungere un'altra linea, printf, e dire il nome, del colon, vicino citazione, appena 870 00:40:38,470 --> 00:40:40,790 per dare un prompt all'utente sullo schermo. 871 00:40:40,790 --> 00:40:42,980 E ora ho intenzione di andare qui, e sono intenzione di utilizzare il mio tasto di scelta rapida. 872 00:40:42,980 --> 00:40:47,680 Ho intenzione di andare su, su, e cambiare ciao ciao da 1 a 2, Invio. 873 00:40:47,680 --> 00:40:49,260 E per fortuna, sto facendo progressi. 874 00:40:49,260 --> 00:40:52,720 >> E ora ho intenzione di salire al punto barra ciao e 875 00:40:52,720 --> 00:40:54,690 cambiare la situazione a 2, Invio. 876 00:40:54,690 --> 00:40:55,650 E ora il mio programma - 877 00:40:55,650 --> 00:40:57,700 Io Zoom In - è sempre un po 'più carina. 878 00:40:57,700 --> 00:41:02,190 Nome sta per essere, diciamo Rob questo momento, Enter, ciao, Rob. 879 00:41:02,190 --> 00:41:03,260 Siamo in grado di farlo di nuovo. 880 00:41:03,260 --> 00:41:05,360 Nome, Lauren, Enter. 881 00:41:05,360 --> 00:41:07,820 Nome, Joseph, Enter. 882 00:41:07,820 --> 00:41:11,596 Nome, cerchiamo di essere difficile, Invio. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 Non è proprio un bug. 885 00:41:14,680 --> 00:41:16,090 Quindi è solo un po 'brutto. 886 00:41:16,090 --> 00:41:18,640 Quindi forse potremmo risolvere questo in futuro, non ora. 887 00:41:18,640 --> 00:41:20,840 >> Ma come ti istintivamente andare su di indirizzamento 888 00:41:20,840 --> 00:41:21,990 che sfida particolare? 889 00:41:21,990 --> 00:41:23,710 Sembra proprio stupido. 890 00:41:23,710 --> 00:41:27,320 Come si fa a evitare le cose guardando stupido? 891 00:41:27,320 --> 00:41:29,890 Così abbiamo potuto fare, OK, ho sentito un paio delle cose, una condizione e un ciclo. 892 00:41:29,890 --> 00:41:33,340 Potremmo usare, una, una condizione, per verificare qual è la lunghezza della stringa 893 00:41:33,340 --> 00:41:34,190 l'utente ci ha dato? 894 00:41:34,190 --> 00:41:37,100 E se è 0, è solo tra virgolette, semplicemente premere Invio, quindi 895 00:41:37,100 --> 00:41:38,930 forse dovrei urlare contro di loro e chiederà di nuovo. 896 00:41:38,930 --> 00:41:39,970 Ma come si fa a loro ancora il prompt? 897 00:41:39,970 --> 00:41:44,230 Beh, ho anche sentito loop, e ho potuto farlo ancora e ancora e ancora 898 00:41:44,230 --> 00:41:47,010 chiedendo all'utente la stessa cosa. 899 00:41:47,010 --> 00:41:48,880 >> Bene, vediamo di fare un altro esempio utilizzando un diverso 900 00:41:48,880 --> 00:41:50,620 funzione nella libreria CS50. 901 00:41:50,620 --> 00:41:52,330 Vorrei concludere questo file. 902 00:41:52,330 --> 00:41:53,510 Permettetemi di crearne uno nuovo. 903 00:41:53,510 --> 00:41:58,510 E io ti chiamo adder.c, solo perché è facile fare semplice aritmetica, 904 00:41:58,510 --> 00:42:00,890 anche se questo sarà completamente deludente con quello che si potrebbe fare 905 00:42:00,890 --> 00:42:02,250 con qualsiasi computer moderno. 906 00:42:02,250 --> 00:42:03,750 >> Ma mi permetta di andare avanti ora e - 907 00:42:03,750 --> 00:42:10,680 Ho imparato la lezione ultima volta - includere cs50.h, comprendono stdio.h, int 908 00:42:10,680 --> 00:42:14,170 void main, il quale, per ora, mi limiterò a prendiamo sulla fede cieca, ma si suppone che 909 00:42:14,170 --> 00:42:16,380 che capire che cosa questo significa che prima a lungo. 910 00:42:16,380 --> 00:42:21,030 E ho intenzione di dire qualcosa come "dammi un int." 911 00:42:21,030 --> 00:42:22,140 >> E ora, come faccio a ottenere un int? 912 00:42:22,140 --> 00:42:26,820 Voglio dichiarare in ultima analisi, una variabile chiamato x di tipo int e 913 00:42:26,820 --> 00:42:29,240 memorizzare in esso un intero da parte dell'utente. 914 00:42:29,240 --> 00:42:29,970 Così che era un boccone. 915 00:42:29,970 --> 00:42:35,680 Ma se qualcuno vuole proporre, come posso dichiarare un intero chiamato x? 916 00:42:35,680 --> 00:42:36,310 X int. 917 00:42:36,310 --> 00:42:37,430 >> Quindi è davvero così semplice. 918 00:42:37,430 --> 00:42:38,240 Dammi un int. 919 00:42:38,240 --> 00:42:39,070 Chiamalo x. 920 00:42:39,070 --> 00:42:40,580 Ora uso l'operatore di assegnazione. 921 00:42:40,580 --> 00:42:43,400 E come faccio Store dal lasciato un valore dell'utente? 922 00:42:43,400 --> 00:42:47,310 Non voglio chiamare GetString, ovviamente, ma piuttosto getint. 923 00:42:47,310 --> 00:42:49,060 Qualsiasi argomento? 924 00:42:49,060 --> 00:42:49,350 No. 925 00:42:49,350 --> 00:42:51,870 Quindi è aperta parentesi, vicino paren immediatamente, e poi una 926 00:42:51,870 --> 00:42:53,440 virgola termina la linea. 927 00:42:53,440 --> 00:42:54,930 >> Ora vorrei farlo di nuovo. 928 00:42:54,930 --> 00:42:57,070 Dammi un altro int. 929 00:42:57,070 --> 00:43:01,850 Questa volta farò int, cerchiamo di chiamano y, uguale getint. 930 00:43:01,850 --> 00:43:05,060 E ora fammi fare qualcosa di super-semplice come po 'di matematica. 931 00:43:05,060 --> 00:43:14,340 Così printf, la somma di% d è il segnaposto per un int. 932 00:43:14,340 --> 00:43:20,030 E% d, periodo, backslash-n. 933 00:43:20,030 --> 00:43:20,360 >> D'accordo. 934 00:43:20,360 --> 00:43:21,670 Quindi questo non è in realtà la matematica. 935 00:43:21,670 --> 00:43:25,500 Ma se io voglio dire la somma di questo valore più questo valore è uguale a questo 936 00:43:25,500 --> 00:43:29,320 altro valore, come molti argomenti in totale dovrei dare printf, 937 00:43:29,320 --> 00:43:30,520 in definitiva? 938 00:43:30,520 --> 00:43:31,420 Così quattro, giusto? 939 00:43:31,420 --> 00:43:33,790 Questa stringa e quindi i tre valori. 940 00:43:33,790 --> 00:43:37,560 Quindi x è il primo voglio essere collegato prima al% d. 941 00:43:37,560 --> 00:43:39,270 y sta per essere il prossimo. 942 00:43:39,270 --> 00:43:42,030 >> E ora mi sorta di voglia di dire z, z ma non esiste. 943 00:43:42,030 --> 00:43:43,190 Ma questo non è un grosso problema. 944 00:43:43,190 --> 00:43:45,440 Perché, cosa vorresti fare istintivamente, specialmente se si ha un 945 00:43:45,440 --> 00:43:47,820 calcolatrice grafica, che cosa tipo? 946 00:43:47,820 --> 00:43:48,760 Che ne dici di x + y? 947 00:43:48,760 --> 00:43:50,200 Quindi non è una variabile reale. 948 00:43:50,200 --> 00:43:51,820 E 'solo la somma di due altre variabili. 949 00:43:51,820 --> 00:43:53,170 E questo è perfettamente legittimo. 950 00:43:53,170 --> 00:43:56,630 C comprende certamente semplice l'aritmetica come questo. 951 00:43:56,630 --> 00:43:58,450 >> Punto e virgola, salvare. 952 00:43:58,450 --> 00:44:02,080 Ora lasciami andare qui e digitare make vipera, Invio. 953 00:44:02,080 --> 00:44:04,100 Nessun errore, quindi questo è il progresso troppo. 954 00:44:04,100 --> 00:44:04,890 Digitare vipera. 955 00:44:04,890 --> 00:44:07,100 E un altro tasto di scelta rapida, se si inizia ad annoiarsi 956 00:44:07,100 --> 00:44:08,760 con tutti i comandi - 957 00:44:08,760 --> 00:44:12,650 se si inizia a digitare un comando, come dot tagliare annuncio, e questo è dove il vostro 958 00:44:12,650 --> 00:44:16,020 noia calci, di solito si può colpire Tab per avere il computer di finire il 959 00:44:16,020 --> 00:44:20,510 resto della frase per voi se non è cosa ambigua dovrebbe venire dopo annuncio. 960 00:44:20,510 --> 00:44:23,950 >> Quindi, mi permetta di andare avanti ora e si fa clic su Invio. 961 00:44:23,950 --> 00:44:27,490 Dammi un int, 1, 2, e per fortuna, è 3. 962 00:44:27,490 --> 00:44:29,900 Ma, come sempre, il test dei programmi non dovrebbe ridurre al 963 00:44:29,900 --> 00:44:30,820 basta provare una volta. 964 00:44:30,820 --> 00:44:35,560 Fammi provare un caso d'angolo, come negativo 1, dammi 1, e che uno 965 00:44:35,560 --> 00:44:36,210 controlla pure. 966 00:44:36,210 --> 00:44:38,870 E probabilmente io voglio fare un po 'di più test rigorosi, ma sono abbastanza 967 00:44:38,870 --> 00:44:40,630 agio con cui questo è a. 968 00:44:40,630 --> 00:44:43,110 >> Bene, ora proviamo un altro programma che questa volta utilizza un 969 00:44:43,110 --> 00:44:44,620 po 'di altra sintassi. 970 00:44:44,620 --> 00:44:46,100 Mi permette di creare un nuovo file. 971 00:44:46,100 --> 00:44:51,050 Chiamerò questo conditions0.c di allineare con alcuni esempi di codice online. 972 00:44:51,050 --> 00:44:55,550 E mi permetta di andare avanti e farlo includere cs50.h, includere 973 00:44:55,550 --> 00:45:00,320 stdio.h, in void main - 974 00:45:00,320 --> 00:45:01,030 OK. 975 00:45:01,030 --> 00:45:01,850 Ecco fatto. 976 00:45:01,850 --> 00:45:03,010 Noi abbiamo il nostro testo standard standard. 977 00:45:03,010 --> 00:45:08,170 >> E questa volta ho intenzione di dire printf, "Mi piacerebbe un int, per favore," solo per 978 00:45:08,170 --> 00:45:10,030 fare la richiesta un po ' più amichevole. 979 00:45:10,030 --> 00:45:11,620 E ora voglio ottenere un int da parte dell'utente. 980 00:45:11,620 --> 00:45:15,010 Io vado a chiamare n questo momento, proprio perché n suona come numero. 981 00:45:15,010 --> 00:45:18,140 getint, e ora, che cosa fare Io voglio fare con esso? 982 00:45:18,140 --> 00:45:21,640 Beh, se n è - e io ingrandire - 983 00:45:21,640 --> 00:45:25,930 se n è maggiore di 0, che voglio per effettuare le seguenti - 984 00:45:25,930 --> 00:45:36,060 printf "Hai scelto un numero positivo." Altra cosa, ho intenzione di scrivere printf "Tu 985 00:45:36,060 --> 00:45:37,870 raccolto un negativo 986 00:45:37,870 --> 00:45:39,650 numero. «Va bene. 987 00:45:39,650 --> 00:45:44,410 Quindi questo programma, anche se l'ho fatto veloce, sembra giusto sintatticamente. 988 00:45:44,410 --> 00:45:45,010 Fammi provare questo. 989 00:45:45,010 --> 00:45:46,890 Fai la condizione 0. 990 00:45:46,890 --> 00:45:47,710 Sembra funzionare. 991 00:45:47,710 --> 00:45:49,230 Condizione 0, immettere. 992 00:45:49,230 --> 00:45:51,910 Diamogli un int di 50. 993 00:45:51,910 --> 00:45:53,160 Ho scelto un numero positivo. 994 00:45:53,160 --> 00:45:54,230 Proviamo di nuovo. 995 00:45:54,230 --> 00:45:54,930 Condizione 0. 996 00:45:54,930 --> 00:45:56,260 Negativo 50. 997 00:45:56,260 --> 00:45:57,290 Ho scelto un numero negativo. 998 00:45:57,290 --> 00:46:00,350 >> Ma ora, mi permetta di scegliere ciò che continueremo chiamando un caso d'angolo, che è più 999 00:46:00,350 --> 00:46:04,702 un caso interessante che si pensa potrebbe dare qualche problema, 0. 1000 00:46:04,702 --> 00:46:07,940 Ora, io sono abbastanza sicuro che questa è una delle quei casi limite in cui zero è 1001 00:46:07,940 --> 00:46:12,330 né positivo né negativo, quindi il mio programma, se in sintatticamente 1002 00:46:12,330 --> 00:46:15,440 correggere - si compila, si corre - non è logicamente corretta. 1003 00:46:15,440 --> 00:46:21,050 Quindi qual è la semplice correzione qui se voglio di rilevare, se voglio gestire n 1004 00:46:21,050 --> 00:46:23,840 uguale a 0 a parte? 1005 00:46:23,840 --> 00:46:32,980 >> Quindi, se n è uguale a 0, allora voglio dire qualcosa di simile a printf "Hai raccolto 0." 1006 00:46:32,980 --> 00:46:33,990 Fammi provare questo adesso. 1007 00:46:33,990 --> 00:46:38,320 Fammi tornare qui, deselezionare la mia finestra, e ricompilare. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Un errore di generare. 1010 00:46:39,770 --> 00:46:41,630 Ma io ti voglio controllare se n è uguale a 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Quindi, di nuovo, un'altra cosa stupida per abituarsi, segno di uguale è 1013 00:46:47,720 --> 00:46:48,910 l'operatore di assegnazione. 1014 00:46:48,910 --> 00:46:52,240 Quindi questo è effettivamente in tale errore, tecnicamente, anche se il compilatore 1015 00:46:52,240 --> 00:46:56,450 mi ha protetto da me stesso, avremmo tecnicamente essere la copia 0 in n, che 1016 00:46:56,450 --> 00:46:57,590 Non è quello che voglio. 1017 00:46:57,590 --> 00:47:00,950 Voglio verificare l'uguaglianza con uguale uguale. 1018 00:47:00,950 --> 00:47:03,390 E così che ora potrebbe essere il mio migliore soluzione. 1019 00:47:03,390 --> 00:47:07,810 >> Lasciatemi in realtà salvare nuovamente questo come, dico, condizioni 1, per essere nuovo e migliorato. 1020 00:47:07,810 --> 00:47:10,480 Così ora se io ricompilare questo, renderebbe le condizioni - 1021 00:47:10,480 --> 00:47:16,960 whoops - rendere condizioni 1 dot barra condizioni 1, Enter, "Mi piacerebbe un int, 1022 00:47:16,960 --> 00:47:18,760 ti prego. "Ho intenzione di andare avanti e digitare 50. 1023 00:47:18,760 --> 00:47:19,660 E 'ancora buona. 1024 00:47:19,660 --> 00:47:21,200 Negativo 50, ancora buono. 1025 00:47:21,200 --> 00:47:24,920 0, e, in effetti, rilevato che ho preso 0. 1026 00:47:24,920 --> 00:47:28,200 >> Quindi, che altro posso fare ora con questo? 1027 00:47:28,200 --> 00:47:32,280 Beh, possiamo certamente fare sempre cose complesse. 1028 00:47:32,280 --> 00:47:37,240 Ma quello che vorrei proporre è che finiamo su questa nota qui. 1029 00:47:37,240 --> 00:47:41,680 Se ci tiriamo su questo, vedrai, forse, un cartone animato preferito di tuo 1030 00:47:41,680 --> 00:47:43,326 fino ad oggi si potrebbe non hanno mai capito. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 E questo è per la qualità della risata si dovrebbe ottenere con battute CS. 1033 00:47:49,520 --> 00:47:51,060 Ecco, questo è giusto. 1034 00:47:51,060 --> 00:47:54,900 >> Ma più convincente, ho pensato che avrei ci danno un po 'di teaser per Lunedi. 1035 00:47:54,900 --> 00:47:56,430 Così abbiamo iniziato a utilizzare numeri interi. 1036 00:47:56,430 --> 00:47:57,510 Abbiamo fatto riferimento a carri allegorici. 1037 00:47:57,510 --> 00:48:00,120 Abbiamo anche fatto riferimento al doppio, che, ancora una volta, dare i numeri 1038 00:48:00,120 --> 00:48:01,390 dopo il punto decimale. 1039 00:48:01,390 --> 00:48:04,230 >> Ma si scopre che i carri allegorici e doppie, e, in realtà, i computer, 1040 00:48:04,230 --> 00:48:08,470 fondamentalmente, non può esprimere alcuni valori precisione. 1041 00:48:08,470 --> 00:48:12,840 Sappiamo da lezioni di matematica che si può avere un numero qualsiasi di numeri dopo la 1042 00:48:12,840 --> 00:48:13,510 punto decimale. 1043 00:48:13,510 --> 00:48:16,460 E si può anche mettere una barra verticale dire questi andare avanti per sempre. 1044 00:48:16,460 --> 00:48:18,810 >> Purtroppo, non si può davvero farlo in un computer. 1045 00:48:18,810 --> 00:48:20,400 E così i casi d'angolo presentano. 1046 00:48:20,400 --> 00:48:23,120 Per esempio, supponiamo che sei fare qualcosa finanziaria. 1047 00:48:23,120 --> 00:48:25,700 Stai facendo matematica con percentuali, e 1048 00:48:25,700 --> 00:48:27,030 con i dollari e centesimi. 1049 00:48:27,030 --> 00:48:29,230 E quei centesimi non linea necessariamente up. 1050 00:48:29,230 --> 00:48:34,120 Bene, si scopre che le frazioni di penny possono iniziare a sommare quando 1051 00:48:34,120 --> 00:48:37,250 modellato con un sistema di computer in modo tale che intelligente 1052 00:48:37,250 --> 00:48:39,100 gli esseri umani possono trarre vantaggio. 1053 00:48:39,100 --> 00:48:42,650 >> E quelli di voi che non hanno visto, mi piacerebbe di darvi un 30-secondo teaser 1054 00:48:42,650 --> 00:48:48,290 un film meraviglioso conosciuto come Office Space, che dipingere un quadro di un 1055 00:48:48,290 --> 00:48:51,205 problema dovremo affrontare prima cosa il Lunedi. 1056 00:48:51,205 --> 00:48:53,960 Se potessimo alzare il volume un po ', ti do 30 1057 00:48:53,960 --> 00:48:55,495 secondi di uffici. 1058 00:48:55,495 --> 00:48:55,770 >> [RIPRODUZIONE VIDEO] 1059 00:48:55,770 --> 00:48:59,000 >> -Voglio dire, voi, non sono state dimostrate e si arriva a mantenere il vostro posto di lavoro. 1060 00:48:59,000 --> 00:49:00,620 >> -In realtà, io sono stato promosso. 1061 00:49:00,620 --> 00:49:03,240 >> -Potrei programmare un virus che Preferirei strappare quel posto alla grande. 1062 00:49:03,240 --> 00:49:04,430 >> -Beh, come funziona? 1063 00:49:04,430 --> 00:49:06,782 >> -Ogni volta che c'è una transazione bancaria dove viene calcolato interesse, e là 1064 00:49:06,782 --> 00:49:10,160 sono migliaia al giorno, il computer termina con queste frazioni di centesimo. 1065 00:49:10,160 --> 00:49:12,030 >> -Ma io non ho intenzione di fare niente di illegale. 1066 00:49:12,030 --> 00:49:12,660 >> -Illegale? 1067 00:49:12,660 --> 00:49:15,075 Samir, questa è l'America. 1068 00:49:15,075 --> 00:49:16,570 >> -Dobbiamo giurare a Dio. 1069 00:49:16,570 --> 00:49:19,070 >> -Se nessuno conosce questa ma noi, va bene? 1070 00:49:19,070 --> 00:49:21,920 Nessun membro della famiglia, nessun fidanzate, nessuno. 1071 00:49:21,920 --> 00:49:22,700 >> -Certo. 1072 00:49:22,700 --> 00:49:23,320 >> -Concordo. 1073 00:49:23,320 --> 00:49:24,280 >> -Non preoccuparti, amico. 1074 00:49:24,280 --> 00:49:25,640 Non lo dirò a nessuno neanche. 1075 00:49:25,640 --> 00:49:26,504 >> [FINE RIPRODUZIONE VIDEO] 1076 00:49:26,504 --> 00:49:30,030 >> DAVID MALAN: Quindi questo è, allora, CS50, che era Office Space, e sarà tutto 1077 00:49:30,030 --> 00:49:31,465 senso il Lunedi. 1078 00:49:31,465 --> 00:49:33,940 Vediamo allora. 1079 00:49:33,940 --> 00:49:37,880 >> NARRATORE: Al prossimo CS50, Rob regola per essere fuori dal 1080 00:49:37,880 --> 00:49:39,130 Piano di pasto Harvard. 1081 00:49:39,130 --> 00:49:56,160