1 00:00:07,830 --> 00:00:12,200 [Powered by Google Translate] DAVID MALAN: Questo è CS50, e questo è l'inizio della settimana 1. 2 00:00:12,200 --> 00:00:15,520 Che cosa abbiamo pensato di fare oggi è prendere uno sguardo indietro a 3 00:00:15,520 --> 00:00:18,290 qualcosa che molti di voi hanno probabilmente camminato passato per qualche 4 00:00:18,290 --> 00:00:20,570 tempo e potrebbe sembrare un po 'familiare. 5 00:00:20,570 --> 00:00:23,720 Questa cosa qui, questo, naturalmente, è in - 6 00:00:23,720 --> 00:00:24,155 PUBBLICO: Scienza. 7 00:00:24,155 --> 00:00:26,030 DAVID MALAN: Centro scientifico. 8 00:00:26,030 --> 00:00:28,940 Quindi, questo è in realtà uno dei primi computer 9 00:00:28,940 --> 00:00:30,220 eseguire dal 1940. 10 00:00:30,220 --> 00:00:33,790 E 'stato uno dei primi calcolatori elettromeccanici 11 00:00:33,790 --> 00:00:35,730 che era capace di particolarmente lungo, 12 00:00:35,730 --> 00:00:38,450 autogestite calcoli, e quello che effettivamente vedere in 13 00:00:38,450 --> 00:00:41,580 al centro la scienza è solo un piccolo pezzo di questa cosa. 14 00:00:41,580 --> 00:00:44,170 Che cosa abbiamo pensato di fare è dare uno sguardo indietro a un video 15 00:00:44,170 --> 00:00:46,670 che è stata fatta qualche tempo fa, l'introduzione di questa 16 00:00:46,670 --> 00:00:47,520 cosa al mondo. 17 00:00:47,520 --> 00:00:50,200 E vedrai dalla musica e voce che effettivamente quelle 18 00:00:50,200 --> 00:00:52,070 sono stati momenti molto felici. 19 00:00:54,885 --> 00:00:59,700 >> [RIPRODUZIONE VIDEO] 20 00:00:59,700 --> 00:01:02,490 -Un trionfo di abilità matematica e meccanica è questa 21 00:01:02,490 --> 00:01:06,340 grande nuovo calcolatore automatico presso la Harvard University. 22 00:01:06,340 --> 00:01:08,620 Intricati problemi di matematica, messo attraverso la 23 00:01:08,620 --> 00:01:12,420 macchina in forma codificata su nastro, vengono accuratamente risolti in un 24 00:01:12,420 --> 00:01:15,200 minima frazione del tempo richiesto per umana 25 00:01:15,200 --> 00:01:16,450 calcolo. 26 00:01:27,050 --> 00:01:30,600 Progettato per accelerare tutte le forme di matematica e scientifica 27 00:01:30,600 --> 00:01:34,610 la ricerca, il cervello meccanico gigante lavorerà per il Regno 28 00:01:34,610 --> 00:01:36,570 Marina degli Stati fino alla fine della guerra. 29 00:01:50,280 --> 00:01:52,980 >> DAVID MALAN: Quindi quello che forse non sapete è che era in 30 00:01:52,980 --> 00:01:56,310 questo dispositivo stesso un termine che tutti ora prendere più o meno 31 00:01:56,310 --> 00:01:59,300 per scontato è stato coniato, che di un bug. 32 00:01:59,300 --> 00:02:01,140 Così uno dei tecnici che lavorano in questo computer 33 00:02:01,140 --> 00:02:05,280 letteralmente trovato una piccola falena nella macchina che ha portato 34 00:02:05,280 --> 00:02:07,580 in alcuni calcoli errati. 35 00:02:07,580 --> 00:02:10,410 E come la storia racconta che falena è stato registrato in questo log 36 00:02:10,410 --> 00:02:14,180 rivista qui, di ritorno dal 9 settembre, nel 1940, qualcosa, 37 00:02:14,180 --> 00:02:16,550 e così è nato per il mondo il termine "bug". 38 00:02:16,550 --> 00:02:19,880 Quindi, d'ora in poi consideriamo i bug di essere qualsiasi tipo di errori in 39 00:02:19,880 --> 00:02:23,290 programmi, siano essi artificiali o, in questo caso, gli insetti. 40 00:02:23,290 --> 00:02:25,030 >> Così qualche annuncio, come si procede. 41 00:02:25,030 --> 00:02:29,160 Così CS50 ha una tradizione di offrire pranzi di sorta sulla 42 00:02:29,160 --> 00:02:31,600 la maggior parte venerdì, durante il semestre, dove prendiamo 30 a 43 00:02:31,600 --> 00:02:34,650 40 studenti al fuoco e ghiaccio in piazza per casual 44 00:02:34,650 --> 00:02:36,390 chiacchiere, parlare di informatica, 45 00:02:36,390 --> 00:02:37,420 parlare del futuro. 46 00:02:37,420 --> 00:02:40,000 Invitiamo ex-alunni e amici da settore a chiacchierare 47 00:02:40,000 --> 00:02:40,690 studenti. 48 00:02:40,690 --> 00:02:44,020 Davvero verso un fine di fare ciò che è una classe abbastanza grande 49 00:02:44,020 --> 00:02:46,740 tanto più intima, almeno una volta, mentre per 50 00:02:46,740 --> 00:02:47,710 sottoinsiemi di studenti. 51 00:02:47,710 --> 00:02:50,940 Quindi, se volete unirvi a noi questo Venerdì, ore 1:15, andare a 52 00:02:50,940 --> 00:02:53,340 CS50.net/lunch a RSVP. 53 00:02:53,340 --> 00:02:55,840 E lo faremo recurringly, non così preoccuparti se non sei 54 00:02:55,840 --> 00:02:57,930 tra i primi 30 o giù di lì questa settimana. 55 00:02:57,930 --> 00:02:59,070 >> Quindi note scriba. 56 00:02:59,070 --> 00:03:01,500 Una parola sulle risorse che ora cominciare ad essere disponibile 57 00:03:01,500 --> 00:03:03,040 agli studenti della classe. 58 00:03:03,040 --> 00:03:05,540 In modo che la testa non deve essere verso il basso durante le lezioni 59 00:03:05,540 --> 00:03:08,560 scarabocchiare giù tutto quello che dico e così via, cosa facciamo 60 00:03:08,560 --> 00:03:10,765 invece è di fornire da parte del personale docente un 61 00:03:10,765 --> 00:03:11,920 insieme canonico di note. 62 00:03:11,920 --> 00:03:14,850 Così abbiamo uno dei nostri compagni di insegnamento, Andrew Sellergren, 63 00:03:14,850 --> 00:03:17,830 che si siede ogni settimana, passa in rassegna i video, e poi 64 00:03:17,830 --> 00:03:19,730 scrive quello che noi pensiamo è abbastanza 65 00:03:19,730 --> 00:03:21,840 insieme autorevole di note. 66 00:03:21,840 --> 00:03:24,180 E appassionato di Andrew, anche, di mettere in note snarky 67 00:03:24,180 --> 00:03:24,820 il fondo. 68 00:03:24,820 --> 00:03:27,300 Così si spera godere di questi come un libro di riferimento per il 69 00:03:27,300 --> 00:03:30,230 divertimento, e anche, vieni quiz tempo, come la possibilità di rivedere 70 00:03:30,230 --> 00:03:31,830 quello che è successo in lezioni individuali. 71 00:03:31,830 --> 00:03:33,580 Così quelli sono collegati nella pagina lezioni. 72 00:03:33,580 --> 00:03:35,300 >> Problema set 0, nel frattempo, è fuori. 73 00:03:35,300 --> 00:03:37,470 E in termini di risorse disponibili a voi - 74 00:03:37,470 --> 00:03:38,020 la procedura dettagliata. 75 00:03:38,020 --> 00:03:39,730 Milo ha condotto la prima il Venerdì. 76 00:03:39,730 --> 00:03:41,470 E 'stato girato, messo online da Sabato. 77 00:03:41,470 --> 00:03:44,030 E così realizzare, se non sei veramente sai da dove iniziare, 78 00:03:44,030 --> 00:03:47,280 per questo o futuri p-set, sempre rivolgersi prima alla 79 00:03:47,280 --> 00:03:49,300 procedura dettagliata o il loro video. 80 00:03:49,300 --> 00:03:52,950 Sezionamento è in corso, a cs50.net/section è dove si 81 00:03:52,950 --> 00:03:54,540 dovrebbe presentare le vostre preferenze, se non l'hai 82 00:03:54,540 --> 00:03:55,880 già, da oggi. 83 00:03:55,880 --> 00:03:58,140 Poiché le sezioni inizierà il prossimo Domenica, Lunedi, 84 00:03:58,140 --> 00:03:58,760 e Martedì. 85 00:03:58,760 --> 00:04:02,470 Facciamo sezioni quei tre giorni, tutte le settimane del 86 00:04:02,470 --> 00:04:03,870 semestre per la maggior parte. 87 00:04:03,870 --> 00:04:06,600 E abbiamo anche introdurre, ancora una volta, tracce diverse. 88 00:04:06,600 --> 00:04:08,270 Quindi vi verrà chiesto in questo modulo di sezionamento, se si 89 00:04:08,270 --> 00:04:10,350 non lo hanno già visto, se siete tra quelli meno 90 00:04:10,350 --> 00:04:12,800 comodo, più confortevole, o una via di mezzo. 91 00:04:12,800 --> 00:04:14,960 E se sei una sorta di sulla recinzione, in genere da qualche parte in 92 00:04:14,960 --> 00:04:18,160 tra è ciò che la maggior parte degli studenti finiscono il controllo. 93 00:04:18,160 --> 00:04:19,579 Orario di ricevimento inizia stasera. 94 00:04:19,579 --> 00:04:23,020 >> Così Scratch è la chiave piuttosto bassa, anche se è del tutto naturale 95 00:04:23,020 --> 00:04:25,300 imbattersi in vari bug, o essere incerti su come 96 00:04:25,300 --> 00:04:26,550 implementare qualcosa. 97 00:04:26,550 --> 00:04:28,880 Così si rendono conto che inizieremo l'orario di ufficio questa settimana. 98 00:04:28,880 --> 00:04:30,500 Saranno a Annenberg Lunedi, Martedì, Mercoledì, 99 00:04:30,500 --> 00:04:34,300 Giovedi, 20:00-11:00 durante la pausa del cervello. 100 00:04:34,300 --> 00:04:38,160 Classmen superiore può entrare, e se avete mai avuto problemi a trovare 101 00:04:38,160 --> 00:04:40,720 in porta, perché essi saranno strisciando, solo parlare la tua strada 102 00:04:40,720 --> 00:04:42,560 e spiegare tu sei con CS50. 103 00:04:42,560 --> 00:04:45,230 Tipicamente 20 a 30 di noi su staff sarà lì per aiutare 104 00:04:45,230 --> 00:04:46,190 è uno contro uno. 105 00:04:46,190 --> 00:04:48,980 >> All'arrivo l'idea è questa: ti portare il vostro computer portatile, 106 00:04:48,980 --> 00:04:51,300 avrete il vostro caricabatterie, avremo cavi di alimentazione aggiuntivi, 107 00:04:51,300 --> 00:04:53,320 in particolare lungo la parete sud del Monte Sant'Anna dove 108 00:04:53,320 --> 00:04:55,080 c'è un sacco di prese elettriche. 109 00:04:55,080 --> 00:04:59,290 E il punto di ingresso principale per orari di Q & A è quello di andare a 110 00:04:59,290 --> 00:05:01,690 cs50.net/discuss e di inviare 111 00:05:01,690 --> 00:05:02,580 vostra domanda. 112 00:05:02,580 --> 00:05:05,600 E di etichettare con pset 0 o pset 1, qualunque sia la settimana 113 00:05:05,600 --> 00:05:06,810 potrebbe accadere di essere. 114 00:05:06,810 --> 00:05:09,240 E poi che faremo è di avere una tabella di compagni di insegnamento 115 00:05:09,240 --> 00:05:12,040 e assistenti del corso, in genere 8 o 10 o giù di lì di noi, 116 00:05:12,040 --> 00:05:14,430 sta attraversando, mantenendo un occhio vigile sulla scheda, e 117 00:05:14,430 --> 00:05:16,810 spiumatura fuori domande davvero il più rapidamente possibile, 118 00:05:16,810 --> 00:05:19,600 facendo riferimento a post correlati, se non avete trovato quelle 119 00:05:19,600 --> 00:05:22,220 voi stessi, riferimenti on-line, a seconda dei casi. 120 00:05:22,220 --> 00:05:24,280 E poi se ci sono problemi, in quanto non vi inevitabilmente 121 00:05:24,280 --> 00:05:27,190 sarà, o rende solo più senso a sedersi uno contro uno, 122 00:05:27,190 --> 00:05:28,660 lavorare con i problemi con qualcuno. 123 00:05:28,660 --> 00:05:30,810 >> O semplicemente entrare in orario d'ufficio davvero 124 00:05:30,810 --> 00:05:31,640 bisogno di quella mentalità. 125 00:05:31,640 --> 00:05:33,400 Se non si desidera passare attraverso il modulo elettronico, si 126 00:05:33,400 --> 00:05:34,410 molta voglia di incontrare qualcuno. 127 00:05:34,410 --> 00:05:37,240 Comunicare che a noi, e che cosa accadrà quando la tua 128 00:05:37,240 --> 00:05:40,620 questione è stato visto da un membro del personale, e noi 129 00:05:40,620 --> 00:05:43,660 determinare, yup, questo dovrebbe essere inviato a una delle 20 o 130 00:05:43,660 --> 00:05:47,800 30 membri del team qui a livello locale, potrete vedere in alto a sinistra di questa 131 00:05:47,800 --> 00:05:51,590 poco Inserisci il pulsante Coda inizia a lampeggiare sul cs50.net / 132 00:05:51,590 --> 00:05:52,165 discutere. 133 00:05:52,165 --> 00:05:55,260 E questo ti dice che ora sono stati invitati, in modo da 134 00:05:55,260 --> 00:05:56,880 di parlare, di entrare nella coda. 135 00:05:56,880 --> 00:05:59,090 E facendo clic su tale pulsante, il tuo nome apparirà sul 136 00:05:59,090 --> 00:06:02,660 un iPad che il greeter CS50, uno dei capi del corso, sarà 137 00:06:02,660 --> 00:06:05,250 essere tenuta vicino all'ingresso della Annenberg, che poi 138 00:06:05,250 --> 00:06:08,630 vedere come illustrato qui, gli studenti che hanno domande su 139 00:06:08,630 --> 00:06:11,630 sinistra, i membri del personale che sono presenti sulla destra. 140 00:06:11,630 --> 00:06:14,830 E con un click di destra e sinistra, il browser web sarà 141 00:06:14,830 --> 00:06:18,610 iniziano a lampeggiare non appena, per esempio, il professor McGonnagal 142 00:06:18,610 --> 00:06:21,460 è pronto a vederti a un tavolo particolare Annenberg. 143 00:06:21,460 --> 00:06:23,340 >> Così abbiamo fatto un po 'di questo ultimo anno. 144 00:06:23,340 --> 00:06:25,430 Abbiamo riavviato l'orario di ufficio e 145 00:06:25,430 --> 00:06:26,980 reimplementato molto del software. 146 00:06:26,980 --> 00:06:29,940 Così si rendono conto che questo sarà riscaldare questa settimana. 147 00:06:29,940 --> 00:06:32,970 Ma anche realizzare anche, negli anni passati, come forse avrete già sentito 148 00:06:32,970 --> 00:06:35,710 da amici, orari d'ufficio aveva infatti da 50 a 149 00:06:35,710 --> 00:06:37,040 150 studenti in una sola volta. 150 00:06:37,040 --> 00:06:39,300 Ed è non solo possibile per noi per gestire tale 151 00:06:39,300 --> 00:06:42,060 efficacemente, uno su uno, per tutta la sera. 152 00:06:42,060 --> 00:06:44,570 E così quello che abbiamo davvero intenzione di provare a fare quest'anno è 153 00:06:44,570 --> 00:06:46,590 capitalizzare il fatto che un sacco di domande sono 154 00:06:46,590 --> 00:06:49,050 frequenti e che spesso può essere meglio risponde 155 00:06:49,050 --> 00:06:50,030 in modo asincrono. 156 00:06:50,030 --> 00:06:52,140 Così si può ordinare di pensare attraverso la risposta del personale, 157 00:06:52,140 --> 00:06:54,360 e siamo in grado di pensare attraverso il codice, senza l'riscaldata 158 00:06:54,360 --> 00:06:57,050 pressione necessariamente lottare 159 00:06:57,050 --> 00:06:58,210 attraverso di esso affiancati. 160 00:06:58,210 --> 00:07:00,980 Così si stima che circa un terzo o la metà delle domande 161 00:07:00,980 --> 00:07:03,500 saranno spediti in persona, e cercheremo di cogliere fuori come 162 00:07:03,500 --> 00:07:05,530 molti come un mezzo o più elettronicamente, 163 00:07:05,530 --> 00:07:06,710 in orario d'ufficio. 164 00:07:06,710 --> 00:07:08,070 E continueremo ad utilizzare Discuti 165 00:07:08,070 --> 00:07:09,990 per tutta la settimana pure. 166 00:07:09,990 --> 00:07:12,680 >> E, infine, si rendono conto che questo corso può essere presa pass / fail. 167 00:07:12,680 --> 00:07:16,230 Quindi, se siete sulla recinzione o semplicemente pensare che sei veramente 168 00:07:16,230 --> 00:07:18,650 non so se questo è il mondo per voi, o questo è davvero 169 00:07:18,650 --> 00:07:21,310 del tutto estranei a voi, si rende conto che questo è un modo meraviglioso 170 00:07:21,310 --> 00:07:24,840 di guadagnare un po 'di confidenza con il quale entrare nel 171 00:07:24,840 --> 00:07:26,780 classe, come ho fatto io, francamente, anni fa. 172 00:07:26,780 --> 00:07:28,630 E poi hanno cinque settimane per ordinare di figura per 173 00:07:28,630 --> 00:07:30,850 voi stessi se si vuole rimanere pass / fail, passare a una lettera 174 00:07:30,850 --> 00:07:31,800 grade, o simili. 175 00:07:31,800 --> 00:07:34,050 E di solito ciò che pass / fail è, credo, per gli studenti è 176 00:07:34,050 --> 00:07:36,700 che, se si mette in quei 10 ore, 20 ore, qualunque essa 177 00:07:36,700 --> 00:07:38,830 può essere in alcuni problemi, e si sta sbattendo la testa 178 00:07:38,830 --> 00:07:39,690 contro la parete, 179 00:07:39,690 --> 00:07:41,750 e davvero non posso inseguire giù qualcosa, e voi 180 00:07:41,750 --> 00:07:44,230 sono tante altre cose che dovete fare, onestamente, quello che ho 181 00:07:44,230 --> 00:07:46,070 che pass / fail è, prende il bordo al largo di 182 00:07:46,070 --> 00:07:47,250 situazioni del genere. 183 00:07:47,250 --> 00:07:49,350 Dove hai preso la cosa il 90% del percorso. 184 00:07:49,350 --> 00:07:50,830 Sai, non è proprio perfetto. 185 00:07:50,830 --> 00:07:52,950 Ma hai un sacco fuori di esso, comunque. 186 00:07:52,950 --> 00:07:55,440 Quindi considero pass / fail come dare che 187 00:07:55,440 --> 00:07:57,590 modello mentale, forse. 188 00:07:57,590 --> 00:08:00,680 >> Va bene, la settimana scorsa quindi ci siamo tuffati in Scratch, e noi 189 00:08:00,680 --> 00:08:03,610 parlato di programmazione ad un livello abbastanza alto grafica. 190 00:08:03,610 --> 00:08:05,340 E oggi facciamo il passaggio a una lingua 191 00:08:05,340 --> 00:08:08,300 chiamata C, un linguaggio di programmazione più basso livello in cima 192 00:08:08,300 --> 00:08:11,260 che molte lingue moderne sono ora costruiti, tra cui alcuni 193 00:08:11,260 --> 00:08:13,010 di quelli che useremo verso la fine del periodo. 194 00:08:13,010 --> 00:08:15,530 E sintatticamente, il loro aspetto 195 00:08:15,530 --> 00:08:17,330 è tutto molto simile. 196 00:08:17,330 --> 00:08:19,080 Quindi cerchiamo di iniziare a fare questo passaggio qui. 197 00:08:19,080 --> 00:08:21,730 Quindi questo era un programma la settimana scorsa che è stata la più semplice delle 198 00:08:21,730 --> 00:08:22,910 ciao programmi mondiali. 199 00:08:22,910 --> 00:08:25,560 E 'semplicemente stampato al mondo schermo ciao, con un 200 00:08:25,560 --> 00:08:27,650 fumetto piccola che esce dal gatto. 201 00:08:27,650 --> 00:08:30,590 Beh, se cominciamo ora a tradurre questo in un altro 202 00:08:30,590 --> 00:08:33,419 linguaggio, si rende conto che le idee oggi e il Mercoledì 203 00:08:33,419 --> 00:08:36,450 sono identici, ma la sintassi inizia a cambiare. 204 00:08:36,450 --> 00:08:39,370 Quindi, considerando che la settimana scorsa abbiamo avuto, quando si fa clic su bandiera verde, per esempio 205 00:08:39,370 --> 00:08:40,340 ciao mondo. 206 00:08:40,340 --> 00:08:43,870 Oggi stiamo andando ad avere int, principale, vuoto, printf, 207 00:08:43,870 --> 00:08:46,350 ritorno, con qualche altra sintassi in là pure. 208 00:08:46,350 --> 00:08:49,200 Le parentesi graffe e parentesi, e citazioni, e quant'altro. 209 00:08:49,200 --> 00:08:54,520 Ma rendersi conto che il nucleo della idea qui è la stampa, 210 00:08:54,520 --> 00:08:58,470 e, infine, il fatto che la principale ora sarà 211 00:08:58,470 --> 00:09:00,770 sinonimo di partenza di un programma. 212 00:09:00,770 --> 00:09:04,250 Principale sta per essere dove la bandiera verde prende le cose fuori. 213 00:09:04,250 --> 00:09:06,390 >> Ora cerchiamo di prendere in giro a parte alcuni dei componenti qui 214 00:09:06,390 --> 00:09:08,650 prima di tuffarsi in alcuni esempi concreti. 215 00:09:08,650 --> 00:09:11,620 Quindi abbiamo chiamato questa settimana una affermazione, per cui è solo 216 00:09:11,620 --> 00:09:12,470 un'istruzione. 217 00:09:12,470 --> 00:09:15,660 Fate questo - in questo caso, dire ciao mondo. 218 00:09:15,660 --> 00:09:18,400 Bene in C, se guardiamo solo che la linea, questo è il modo in cui siamo 219 00:09:18,400 --> 00:09:20,920 sta per iniziare esprimere quel particolare pezzo di puzzle: 220 00:09:20,920 --> 00:09:24,780 printf ("ciao mondo");. 221 00:09:24,780 --> 00:09:27,330 E adesso faremo prendere in giro questi pezzi sempre più nel corso del tempo, 222 00:09:27,330 --> 00:09:29,330 ma si rendono conto che c'è un modello qui. 223 00:09:29,330 --> 00:09:31,870 Quindi uno, abbiamo questa cosa chiamata printf, che è 224 00:09:31,870 --> 00:09:34,310 sostanzialmente in linea con la parola Say. 225 00:09:34,310 --> 00:09:35,800 Questo è quello che sta per fare. 226 00:09:35,800 --> 00:09:37,870 Printf, e f qui significa "formattato". 227 00:09:37,870 --> 00:09:39,270 Quindi significa solo è possibile inserire 228 00:09:39,270 --> 00:09:41,600 vari dettagli estetici. 229 00:09:41,600 --> 00:09:43,770 Così unquote citazione è l'inizio di ciò che stiamo andando 230 00:09:43,770 --> 00:09:45,340 per chiamare una stringa. 231 00:09:45,340 --> 00:09:47,110 Una parola, una frase, una frase. 232 00:09:47,110 --> 00:09:50,220 Una stringa in un linguaggio di programmazione è una sequenza di zero 233 00:09:50,220 --> 00:09:51,330 o più caratteri. 234 00:09:51,330 --> 00:09:54,390 Così h-e-l-l-o, virgola, e così via è, 235 00:09:54,390 --> 00:09:56,290 citazione unquote, una stringa. 236 00:09:56,290 --> 00:09:58,710 E ora backslash n, un po 'sintatticamente strano, ma abbiamo 237 00:09:58,710 --> 00:10:01,780 già definito che la scorsa settimana nel senso che? 238 00:10:01,780 --> 00:10:02,630 E 'solo una nuova linea. 239 00:10:02,630 --> 00:10:05,000 E 'solo un modo di trasmettere al computer che si desidera che il 240 00:10:05,000 --> 00:10:07,700 equivalente di colpire Invio lì, ma non si 241 00:10:07,700 --> 00:10:10,460 vuole colpire realmente Inserisci e quindi rovinare tutto il 242 00:10:10,460 --> 00:10:12,130 formattazione del programma vero e proprio. 243 00:10:12,130 --> 00:10:15,500 Ora le parentesi racchiudono questa stringa, aperta parentesi e 244 00:10:15,500 --> 00:10:18,130 chiudere parentesi, e all'interno di questo è la nostra stringa. 245 00:10:18,130 --> 00:10:22,600 Perché questo è perché in C, e altri programmi 246 00:10:22,600 --> 00:10:27,510 lingue, cose come printf accettare argomenti, o prendere 247 00:10:27,510 --> 00:10:28,420 parametri. 248 00:10:28,420 --> 00:10:31,490 >> Quindi, pensare fin da ora di questo blocco Say viola come 249 00:10:31,490 --> 00:10:34,890 funzione, come metodo, come procedura. 250 00:10:34,890 --> 00:10:36,890 Si può davvero chiamare come si vuole, per ora, ma 251 00:10:36,890 --> 00:10:39,260 è una specie di un programma in miniatura che fa un solo 252 00:10:39,260 --> 00:10:41,480 cosa, in una singola linea, non meno. 253 00:10:41,480 --> 00:10:43,620 Così è printf anche ciò che stiamo per iniziare a chiamare un 254 00:10:43,620 --> 00:10:46,680 funzione, e le funzioni di fare qualcosa - in questo caso 255 00:10:46,680 --> 00:10:49,320 stampa una stringa formattata sullo schermo - 256 00:10:49,320 --> 00:10:53,220 ma funziona anche accettare argomenti o parametri. 257 00:10:53,220 --> 00:10:55,880 E con argomenti o parametri, grazie, si intende 258 00:10:55,880 --> 00:11:01,220 che il loro comportamento può essere influenzato da ciò che si passa in 259 00:11:01,220 --> 00:11:03,420 all'interno delle parentesi. 260 00:11:03,420 --> 00:11:06,460 Quindi, in questo caso, ha bisogno di essere detto printf cosa stampare, e noi 261 00:11:06,460 --> 00:11:09,520 basta passare, tra virgolette qui, la stringa che abbiamo 262 00:11:09,520 --> 00:11:11,270 in realtà desidera stampare. 263 00:11:11,270 --> 00:11:14,060 E il punto e virgola alla fine di questa linea è solo un 264 00:11:14,060 --> 00:11:18,020 fastidio storica cha alla fine della maggior parte delle linee di codice, 265 00:11:18,020 --> 00:11:21,170 si mette un punto e virgola per rendere super chiaro al computer 266 00:11:21,170 --> 00:11:23,020 che questa riga di codice termina qui. 267 00:11:23,020 --> 00:11:25,600 Ora, questo è un bene perché, come vedremo, come i programmi di ottenere di più 268 00:11:25,600 --> 00:11:29,030 complesso, il punto e virgola farà super-uomini chiari per noi, 269 00:11:29,030 --> 00:11:32,280 e anche il computer, in cui linee di codice di inizio e di fine. 270 00:11:32,280 --> 00:11:34,360 Rendetevi conto che alcune lingue non hanno alcun 271 00:11:34,360 --> 00:11:35,045 di questi stessi dettagli. 272 00:11:35,045 --> 00:11:37,870 E infatti, in JavaScript, non sempre bisogno di qualcosa 273 00:11:37,870 --> 00:11:38,670 come il punto e virgola. 274 00:11:38,670 --> 00:11:40,210 Ma più su quello a venire. 275 00:11:40,210 --> 00:11:41,170 >> Così loop. 276 00:11:41,170 --> 00:11:43,520 Abbiamo avuto una cosa del genere, molto intuitivo, ovvio, non 277 00:11:43,520 --> 00:11:44,860 qualcosa di nuovo e ancora e ancora. 278 00:11:44,860 --> 00:11:47,720 Come mettere i calzini, o dire ciao, in questo caso. 279 00:11:47,720 --> 00:11:51,090 Ebbene, a partire da oggi in C, potremmo esprimere questa Scratch 280 00:11:51,090 --> 00:11:54,970 bloccare come while (true) printf ("ciao mondo"). 281 00:11:54,970 --> 00:11:57,630 Quindi notare stiamo cominciando a costruire letteralmente il puzzle 282 00:11:57,630 --> 00:11:58,480 pezzo da prima. 283 00:11:58,480 --> 00:12:01,310 Abbiamo stesso blocco viola, ma è all'interno di questo 284 00:12:01,310 --> 00:12:04,880 tra parentesi sempre blocco, e il modo migliore per tradurre tale 285 00:12:04,880 --> 00:12:06,480 a C è il seguente. 286 00:12:06,480 --> 00:12:08,130 Non c'è parola chiave per sempre. 287 00:12:08,130 --> 00:12:10,940 Non si può semplicemente digitare f-o-r-e-v-e-r in C. 288 00:12:10,940 --> 00:12:13,440 Così l'analogo più vicino è mentre. 289 00:12:13,440 --> 00:12:17,050 >> Ora, mentre il (vero) sembra un po 'stupido, perché non il valore 290 00:12:17,050 --> 00:12:18,700 di un vero cambiamento mai? 291 00:12:18,700 --> 00:12:19,810 Presumibilmente non. 292 00:12:19,810 --> 00:12:22,770 E 'come dire, mentre uno, mentre, mentre vera. 293 00:12:22,770 --> 00:12:25,430 E 'la stessa cosa, vero è sempre il caso. 294 00:12:25,430 --> 00:12:29,860 Quindi, questo ciclo è in realtà indurre che tipo di ciclo? 295 00:12:29,860 --> 00:12:31,210 Solo un ciclo infinito, a destra. 296 00:12:31,210 --> 00:12:32,930 Un ciclo per sempre o come lo chiama la settimana scorsa, 297 00:12:32,930 --> 00:12:33,870 un loop infinito. 298 00:12:33,870 --> 00:12:35,250 Così a volte non va bene. 299 00:12:35,250 --> 00:12:37,060 A volte questo è un bug, a volte è per questo che si ottiene 300 00:12:37,060 --> 00:12:39,340 il pallone da spiaggia rotante o clessidra o simili. 301 00:12:39,340 --> 00:12:41,260 Ma in questo caso, abbiamo volutamente, per qualunque 302 00:12:41,260 --> 00:12:43,040 ragione, ha voluto stampare la stessa cosa 303 00:12:43,040 --> 00:12:43,970 e ancora e ancora. 304 00:12:43,970 --> 00:12:45,900 Oppure, nel caso di come un orologio, si vuole fare 305 00:12:45,900 --> 00:12:47,470 qualcosa di nuovo e ancora e ancora. 306 00:12:47,470 --> 00:12:49,070 Così cicli infiniti potrebbe avere un senso. 307 00:12:49,070 --> 00:12:53,560 Ed è così che in C si potrebbe tradurre sempre al codice. 308 00:12:53,560 --> 00:12:55,570 >> Così ora questo è un po 'più specifico. 309 00:12:55,570 --> 00:12:58,880 Avevamo ripetere 10 volte la seguente dichiarazione. 310 00:12:58,880 --> 00:13:02,490 Così, mentre (true) non funziona esattamente lì, perché è vero 311 00:13:02,490 --> 00:13:03,590 sempre vero. 312 00:13:03,590 --> 00:13:07,060 Quindi, se invece guardiamo la versione C, ora la sintassi ottiene un 313 00:13:07,060 --> 00:13:08,180 po 'più criptico. 314 00:13:08,180 --> 00:13:11,380 Ma per essere onesti una volta che si inizia a vedere questo, tutto diventa 315 00:13:11,380 --> 00:13:12,600 piuttosto familiare in fretta. 316 00:13:12,600 --> 00:13:14,370 Quindi questo è quello che è chiamato un ciclo for. 317 00:13:14,370 --> 00:13:17,210 Un ciclo for sta per dire al computer di fare qualcosa 318 00:13:17,210 --> 00:13:20,710 ancora e ancora e ancora finché 319 00:13:20,710 --> 00:13:21,850 queste cose sono vere. 320 00:13:21,850 --> 00:13:23,370 Ora, che cosa si intende con questo? 321 00:13:23,370 --> 00:13:25,470 Beh, ci sono tre parti di un ciclo for, e stiamo andando a 322 00:13:25,470 --> 00:13:28,240 tornare su questo in un contesto di effettiva 323 00:13:28,240 --> 00:13:29,100 esempi in un momento. 324 00:13:29,100 --> 00:13:31,650 Quindi non preoccupatevi se non del tutto affondare in tutto in una volta. 325 00:13:31,650 --> 00:13:35,400 Ma int i = 0 è, per farla breve, dicendo: dammi un 326 00:13:35,400 --> 00:13:38,290 variabile è di tipo intero, in modo da darmi un numero 327 00:13:38,290 --> 00:13:40,890 chiamato i, e inizializzarla a 0. 328 00:13:40,890 --> 00:13:43,460 Questo è il danno me come un x algebrico variabile e 329 00:13:43,460 --> 00:13:44,580 inizializzarlo a 0. 330 00:13:44,580 --> 00:13:46,250 Ma in questo caso abbiamo chiamato i. 331 00:13:46,250 --> 00:13:49,120 Poi nel mezzo, si dice i è inferiore a 10. 332 00:13:49,120 --> 00:13:52,150 Questo è dire al computer non le seguenti cose così a lungo 333 00:13:52,150 --> 00:13:53,770 i è inferiore a 10. 334 00:13:53,770 --> 00:13:55,370 E ovviamente inizia a meno di 10, perché 335 00:13:55,370 --> 00:13:56,550 si parte da 0. 336 00:13:56,550 --> 00:13:59,150 Poi, infine, si può forse immaginare quello che ho + + mezzi. 337 00:13:59,150 --> 00:14:02,140 E 'un po' di sintassi che significa solo incrementare i. 338 00:14:02,140 --> 00:14:05,270 Quindi aggiungere 1 a i, ancora e ancora e ancora. 339 00:14:05,270 --> 00:14:09,260 >> E così come vedremo questo ciclo, questa sintassi, invece, implementa 340 00:14:09,260 --> 00:14:12,160 esattamente la stessa cosa che, francamente, in Scratch era così 341 00:14:12,160 --> 00:14:13,250 molto più facile da esprimere. 342 00:14:13,250 --> 00:14:15,170 Ripetere 10, e il gioco è fatto. 343 00:14:15,170 --> 00:14:17,690 In C, e nella maggior parte dei linguaggi di programmazione, dobbiamo essere un 344 00:14:17,690 --> 00:14:20,190 po 'di più istruttivo per il computer e in realtà 345 00:14:20,190 --> 00:14:21,630 specificare qualcosa di simile. 346 00:14:21,630 --> 00:14:23,730 Ma torneremo a questa e altra sintassi. 347 00:14:23,730 --> 00:14:24,780 >> Che dire di variabili? 348 00:14:24,780 --> 00:14:26,940 In Scratch abbiamo avuto qualcosa di simile a questi blocchi arancioni, 349 00:14:26,940 --> 00:14:28,180 dove ho potuto dichiarare una variabile. 350 00:14:28,180 --> 00:14:30,000 Diamo arbitrariamente chiamare contatore. 351 00:14:30,000 --> 00:14:31,880 Diciamo la inizializzare a 0, e poi 352 00:14:31,880 --> 00:14:33,240 facciamo sempre fare qualcosa. 353 00:14:33,240 --> 00:14:35,760 In questo caso in Scratch sto dicendo il contatore, in modo che il 354 00:14:35,760 --> 00:14:38,230 gatto sta per avere una piccola bolla discorso che sta parlando 355 00:14:38,230 --> 00:14:40,010 il numero che è in questa variabile. 356 00:14:40,010 --> 00:14:42,460 E poi abbiamo il cambiamento contatore di 1. 357 00:14:42,460 --> 00:14:45,760 Quindi tutto questo è avvolto all'interno di un blocco Forever. 358 00:14:45,760 --> 00:14:48,960 Così abbiamo già ora i mattoni in C con 359 00:14:48,960 --> 00:14:50,040 che a tradurre questo. 360 00:14:50,040 --> 00:14:51,650 >> Un modo per poterlo fare è questo. 361 00:14:51,650 --> 00:14:53,890 Dammi un numero intero, la chiamano contatore. 362 00:14:53,890 --> 00:14:55,190 Inizializza a 0 363 00:14:55,190 --> 00:14:56,490 in prima linea lì. 364 00:14:56,490 --> 00:14:59,390 While (true), quindi sto rubando l'idea da un momento 365 00:14:59,390 --> 00:15:01,300 fa andare avanti e procedere nel modo seguente. 366 00:15:01,300 --> 00:15:04,880 Stampa il contatore e quindi incrementare il contatore, 367 00:15:04,880 --> 00:15:06,930 ancora, e ancora, e ancora. 368 00:15:06,930 --> 00:15:09,380 O ancora, + + significa semplicemente aggiungere 1 a qualcosa. 369 00:15:09,380 --> 00:15:11,030 Ma c'è un nuovo pezzo di sintassi qui. 370 00:15:11,030 --> 00:15:15,730 Cosa salta fuori da non tra i nostri esempi precedenti? 371 00:15:15,730 --> 00:15:17,190 Sì, questo d%. 372 00:15:17,190 --> 00:15:19,810 Così si può forse dedurre che cosa sta facendo, francamente, in base 373 00:15:19,810 --> 00:15:21,410 su ciò che il blocco Scratch sta facendo. 374 00:15:21,410 --> 00:15:24,510 Ma ancora una volta in C, dobbiamo solo essere un po 'più particolare 375 00:15:24,510 --> 00:15:25,990 quando si tratta di esprimere noi stessi. 376 00:15:25,990 --> 00:15:30,560 >> So printf ("% d \ n"). 377 00:15:30,560 --> 00:15:32,320 Beh, la maggior parte di che si può buttare via come familiare. 378 00:15:32,320 --> 00:15:34,910 Le citazioni significa solo che è una stringa, backslash n 379 00:15:34,910 --> 00:15:35,970 è solo una nuova linea. 380 00:15:35,970 --> 00:15:38,860 Quindi l'unica cosa nuova è qui d%. 381 00:15:38,860 --> 00:15:40,390 E tutto ciò che è è un segnaposto. 382 00:15:40,390 --> 00:15:43,510 % D sta per indicare un numero decimale. 383 00:15:43,510 --> 00:15:47,820 E computer% mezzi d, inserire un numero decimale qui. 384 00:15:47,820 --> 00:15:49,450 Beh, che numero vuoi mettere lì? 385 00:15:49,450 --> 00:15:52,400 Beh, come si può forse dedurre, dopo la virgola si dice 386 00:15:52,400 --> 00:15:55,480 contatore, questo è il nome di una variabile che abbiamo dichiarato o 387 00:15:55,480 --> 00:15:57,260 ha creato un paio di linee in precedenza. 388 00:15:57,260 --> 00:16:02,420 Quindi questo è solo modo C di collegare in una variabile in un 389 00:16:02,420 --> 00:16:04,480 stringa in modo dinamico. 390 00:16:04,480 --> 00:16:07,350 Perché al contrario, se avessi invece fatto qualcosa di simile 391 00:16:07,350 --> 00:16:12,470 questo, printf ("contatore"), che cosa sarebbe questo 392 00:16:12,470 --> 00:16:15,220 programma invece fare, presumibilmente? 393 00:16:15,220 --> 00:16:17,260 Sarà letteralmente stampare "contatore". 394 00:16:17,260 --> 00:16:18,750 Il che non è l'effetto che voglio. 395 00:16:18,750 --> 00:16:20,920 Ho bisogno di sostituire in qualche valore numerico. 396 00:16:20,920 --> 00:16:24,340 Così vedremo che le funzioni di allora, come printf, non possono assumere 397 00:16:24,340 --> 00:16:26,930 solo pochi singoli argomenti, come 398 00:16:26,930 --> 00:16:28,150 "Ciao mondo". 399 00:16:28,150 --> 00:16:32,050 Possono prendere unquote virgola citazione, e poi alcune variabili 400 00:16:32,050 --> 00:16:35,830 che avranno collegato in, come vedremo la stringa precedente 401 00:16:35,830 --> 00:16:38,280 tramite questi segnaposto segno%. 402 00:16:38,280 --> 00:16:39,660 >> Beh, che dire di espressioni booleane? 403 00:16:39,660 --> 00:16:42,200 Le espressioni booleane sono questi valori, vere o false. 404 00:16:42,200 --> 00:16:42,830 Sì o no. 405 00:16:42,830 --> 00:16:44,020 1 o 0. 406 00:16:44,020 --> 00:16:45,190 Acceso o spento. 407 00:16:45,190 --> 00:16:47,570 Quindi, in Scratch appaiono come questo, e notare che la 408 00:16:47,570 --> 00:16:50,170 bozzello qui è in realtà la congiunzione 409 00:16:50,170 --> 00:16:51,500 di due blocchi più piccoli. 410 00:16:51,500 --> 00:16:53,610 Così ho tipo di trascinare e rilasciare tre pezzi di puzzle 411 00:16:53,610 --> 00:16:56,450 insieme per fare quel pezzo di puzzle più lì in modo che io 412 00:16:56,450 --> 00:17:00,420 potrebbe trasmettere l'idea che voglio x essere meno di y e 413 00:17:00,420 --> 00:17:02,540 y sia inferiore a z. 414 00:17:02,540 --> 00:17:05,790 E così sono in grado di tradurre queste due linee separate come segue. 415 00:17:05,790 --> 00:17:08,650 Il piano può essere molto banalmente tradotto in C, 416 00:17:08,650 --> 00:17:10,069 solo con x 00:17:11,990 Forse con qualche parentesi per buona misura. 418 00:17:11,990 --> 00:17:15,520 E poi in C, non si scrive e per indicare la 419 00:17:15,520 --> 00:17:16,819 congiunzione di qualcosa. 420 00:17:16,819 --> 00:17:19,585 È invece scrivere &&. 421 00:17:19,585 --> 00:17:22,849 E come vedremo finalmente vedere, una singola e commerciale accade 422 00:17:22,849 --> 00:17:23,880 dire qualcosa di diverso. 423 00:17:23,880 --> 00:17:27,530 Così && indica solo l'idea di AND. 424 00:17:27,530 --> 00:17:30,040 >> Quindi, di nuovo, anche se questo inizia a guardare piuttosto complesso, 425 00:17:30,040 --> 00:17:32,560 uno degli scopi di introdurre Scratch, oltre 426 00:17:32,560 --> 00:17:34,810 solo che hanno una sorta di divertimento on-rampa dove si può fare 427 00:17:34,810 --> 00:17:36,590 qualcosa che è molto grafico e animato, e 428 00:17:36,590 --> 00:17:39,000 condivisibile e simili, è anche quello di trasmettere l'idea che 429 00:17:39,000 --> 00:17:42,010 tutte le idee iniziamo tuffarsi oggi e poi 430 00:17:42,010 --> 00:17:44,300 sono stati enunciati nell'art anche così semplice 431 00:17:44,300 --> 00:17:46,850 interfaccia fin dal primo giorno. 432 00:17:46,850 --> 00:17:47,790 Che dire di questo qui? 433 00:17:47,790 --> 00:17:48,860 >> Così condizioni. 434 00:17:48,860 --> 00:17:50,590 Quindi il blocco Scratch sulla sinistra ci sembra 435 00:17:50,590 --> 00:17:51,610 un po 'più complessa. 436 00:17:51,610 --> 00:17:52,650 Ma è solo un po 'di trascinamento e 437 00:17:52,650 --> 00:17:54,140 la caduta dei pezzi familiari. 438 00:17:54,140 --> 00:17:56,690 Se x è minore di y, diciamo così. 439 00:17:56,690 --> 00:17:59,900 Altrimenti se x è maggiore di y, diciamo così. 440 00:17:59,900 --> 00:18:02,460 Altrimenti, si può logicamente presumere che è dedotto che 441 00:18:02,460 --> 00:18:03,580 devono essere uguali. 442 00:18:03,580 --> 00:18:05,220 Quindi dire che sono uguali. 443 00:18:05,220 --> 00:18:07,690 Ora in C sulla destra, stessa cosa esatta. 444 00:18:07,690 --> 00:18:09,730 E notare che le parentesi graffe stanno per essere un 445 00:18:09,730 --> 00:18:12,190 caratteristica di C e di altre lingue che fanno questo genere 446 00:18:12,190 --> 00:18:13,210 di incapsulamento. 447 00:18:13,210 --> 00:18:15,470 Proprio come se il blocco è questa cosa gialla che una sorta di 448 00:18:15,470 --> 00:18:17,770 afferrando il blocco viola all'interno di esso. 449 00:18:17,770 --> 00:18:19,480 Allo stesso modo sono queste bretelle - 450 00:18:19,480 --> 00:18:20,870 queste parentesi graffe - 451 00:18:20,870 --> 00:18:24,710 lo scopo di evocare quella stessa idea di abbracciare uno o più 452 00:18:24,710 --> 00:18:27,680 righe di codice che sono rientrati al loro interno. 453 00:18:27,680 --> 00:18:31,270 Quindi sulla destra qui, se x minore di y, printf 454 00:18:31,270 --> 00:18:32,270 ("X è minore di y"). 455 00:18:32,270 --> 00:18:34,980 Altrimenti se x è maggiore di y, stampare lo stesso. 456 00:18:34,980 --> 00:18:38,360 Altrimenti stampa che sono uguali. 457 00:18:38,360 --> 00:18:41,750 >> Così, in breve, c'è una mappatura abbastanza diretto o traduzione 458 00:18:41,750 --> 00:18:44,720 della lingua che abbiamo visto finora, anche per un po 'di 459 00:18:44,720 --> 00:18:45,940 delle funzioni più sofisticate. 460 00:18:45,940 --> 00:18:48,680 Quindi non potrebbero utilizzare questo per il vostro progetto, o potrebbe non 461 00:18:48,680 --> 00:18:51,150 si utilizza questo per il vostro progetto di questa settimana. 462 00:18:51,150 --> 00:18:54,650 Ma abbiamo queste cose chiamati array in C. In Scratch, 463 00:18:54,650 --> 00:18:55,680 si chiamano liste. 464 00:18:55,680 --> 00:18:59,370 E abbiamo visto questi con la RPG Fruitcraft scorsa settimana. 465 00:18:59,370 --> 00:19:01,320 Il piccolo ragazzo blu che era in giro, raccogliendo 466 00:19:01,320 --> 00:19:03,010 ciliegie e arance e simili. 467 00:19:03,010 --> 00:19:05,110 Bene in Scratch, che è stato implementato con questo arancione 468 00:19:05,110 --> 00:19:09,000 blocco che contiene le parole, in questo caso, siamo letteralmente 469 00:19:09,000 --> 00:19:10,800 l'aggiunta di "arancione" ad un 470 00:19:10,800 --> 00:19:12,460 variabile chiamata inventario. 471 00:19:12,460 --> 00:19:14,910 Quindi, in C, questa sintassi sta per arrivare un po 'più criptico. 472 00:19:14,910 --> 00:19:17,250 E torneremo a questo la prossima settimana e fare di più 473 00:19:17,250 --> 00:19:21,060 cose interessanti nel mondo della crittografia con esso. 474 00:19:21,060 --> 00:19:23,990 Ma in fondo qui, queste due linee sostanzialmente 475 00:19:23,990 --> 00:19:27,550 si traducono in quello che stiamo facendo in un Scratch bloccare fino lì. 476 00:19:27,550 --> 00:19:30,120 Ma più su quello a venire. 477 00:19:30,120 --> 00:19:34,120 >> Così mettendo insieme, ecco un programma in C. Quindi cerchiamo di 478 00:19:34,120 --> 00:19:36,590 rapidamente prendere in giro a parte alcuni dei pezzi di sintassi qui, ma 479 00:19:36,590 --> 00:19:40,300 allora andiamo effettivamente iniziare a scrivere del codice, familiarizzare 480 00:19:40,300 --> 00:19:42,440 voi con alcuni degli strumenti che verranno utilizzati, e vedere se ci 481 00:19:42,440 --> 00:19:45,400 può partire da ora alcuni di questi elementi di base da 482 00:19:45,400 --> 00:19:49,150 la scorsa settimana, ora sintatticamente in C. Quindi in alto qui, questa 483 00:19:49,150 --> 00:19:51,380 è forse uno dei programmi più noioso si possa 484 00:19:51,380 --> 00:19:53,130 scrivere nella maggior parte qualsiasi linguaggio di programmazione. 485 00:19:53,130 --> 00:19:55,010 Ma è una specie di ha un significato speciale perché è la 486 00:19:55,010 --> 00:19:58,120 programma canonico che ogni informatico scrive quando 487 00:19:58,120 --> 00:19:59,620 insegnare a qualcuno un linguaggio di programmazione - 488 00:19:59,620 --> 00:20:01,230 un programma ciao mondo. 489 00:20:01,230 --> 00:20:05,120 >> Così in cima, vediamo questa nozione di # include 490 00:20:05,120 --> 00:20:08,180 e poi, tra parentesi angolari, stdio.h. 491 00:20:08,180 --> 00:20:10,580 Stiamo per tornare a questo, ma in realtà ciò che 492 00:20:10,580 --> 00:20:13,770 significa che c'è un file in questo mondo chiamato norma 493 00:20:13,770 --> 00:20:17,670 I / O, stdio punto h, e questo è solo un file di testo 494 00:20:17,670 --> 00:20:19,240 qualcuno ha scritto anni fa. 495 00:20:19,240 --> 00:20:22,550 E all'interno di questo file di testo sono un sacco di 496 00:20:22,550 --> 00:20:25,840 funzioni, o metodi o procedure, che qualcun altro 497 00:20:25,840 --> 00:20:28,970 ha scritto che noi siamo i beneficiari del perché 498 00:20:28,970 --> 00:20:31,420 È ora possibile utilizzare il codice di quella persona. 499 00:20:31,420 --> 00:20:33,070 Le funzioni di lui o lei ha scritto. 500 00:20:33,070 --> 00:20:36,320 In questo caso, printf non è qualcosa che ho scritto, è 501 00:20:36,320 --> 00:20:37,500 non qualcosa che ha scritto CS50. 502 00:20:37,500 --> 00:20:40,290 E 'qualcosa che qualcuno ha scritto anni fa e messo in una 503 00:20:40,290 --> 00:20:43,450 file chiamato stdio.h e poi, per inciso, mettere 504 00:20:43,450 --> 00:20:45,830 un'altra parte della funzione in un altro file. 505 00:20:45,830 --> 00:20:46,940 Ma ci arriveremo. 506 00:20:46,940 --> 00:20:50,070 >> Così # include è solo il nostro modo di dire, in 507 00:20:50,070 --> 00:20:53,110 C, dammi l'accesso alle funzioni che qualcun altro ha scritto. 508 00:20:53,110 --> 00:20:55,490 E in questo caso mi interessa perché voglio printf. 509 00:20:55,490 --> 00:20:57,530 Ora abbiamo int main (void). 510 00:20:57,530 --> 00:21:00,160 Quindi questa è una di queste cose, francamente, che il giorno 0, 511 00:21:00,160 --> 00:21:02,400 più o meno ho da un po 'fuori zona, perché è solo 512 00:21:02,400 --> 00:21:03,260 non interessante 513 00:21:03,260 --> 00:21:04,780 intellettualmente, alcune delle sintassi. 514 00:21:04,780 --> 00:21:07,940 Ma per ora sappiamo che le funzioni, altrimenti noto come 515 00:21:07,940 --> 00:21:11,660 procedure, o metodi, producono generalmente un certo valore. 516 00:21:11,660 --> 00:21:12,520 Fanno qualcosa. 517 00:21:12,520 --> 00:21:13,810 Sono venuti fuori con una risposta. 518 00:21:13,810 --> 00:21:15,020 Producono in uscita. 519 00:21:15,020 --> 00:21:18,780 Così int nei pressi della principale è solo il nostro modo di dire scorciatoia 520 00:21:18,780 --> 00:21:21,380 che questa funzione, questa procedura, è finalmente sta 521 00:21:21,380 --> 00:21:22,650 di restituirvi un numero. 522 00:21:22,650 --> 00:21:24,370 E perché questo è, torneremo a. 523 00:21:24,370 --> 00:21:27,810 Principale è proprio lo standard mondiale di default per l'impostazione predefinita 524 00:21:27,810 --> 00:21:30,990 funzione che si fara 'eseguita in un programma in C, quando 525 00:21:30,990 --> 00:21:31,860 lo si esegue. 526 00:21:31,860 --> 00:21:34,160 Void significa semplicemente che questa cosa, più importante, non si assume alcuna 527 00:21:34,160 --> 00:21:35,270 argomenti, in questo caso. 528 00:21:35,270 --> 00:21:36,400 Così sto essere super esplicito. 529 00:21:36,400 --> 00:21:38,160 Non ci sono le stringhe in là, non ci sono virgole. 530 00:21:38,160 --> 00:21:40,690 Void significa senza argomenti per principale. 531 00:21:40,690 --> 00:21:44,350 >> Ora, infine, per fortuna, le ultime due righe sono familiari. 532 00:21:44,350 --> 00:21:46,160 All'interno delle parentesi graffe abbiamo un printf 533 00:21:46,160 --> 00:21:47,620 e abbiamo un ritorno. 534 00:21:47,620 --> 00:21:50,450 E il ritorno è una specie di peccato che dobbiamo 535 00:21:50,450 --> 00:21:53,510 metterla lì, perché in questo caso non sta facendo tutto questo 536 00:21:53,510 --> 00:21:54,600 molto di interesse. 537 00:21:54,600 --> 00:21:58,790 Ma in un programma per computer, quando una funzione restituisce 0, 538 00:21:58,790 --> 00:22:00,610 questo significa che tutto va bene. 539 00:22:00,610 --> 00:22:01,820 Nulla è andato storto. 540 00:22:01,820 --> 00:22:06,170 Al contrario, se una funzione restituisce 1, 1 o negativo, o 541 00:22:06,170 --> 00:22:11,670 1337 negativo, o alcuni numeri casuali del genere, che 542 00:22:11,670 --> 00:22:14,020 generalmente significa che un errore di fatto si è verificato. 543 00:22:14,020 --> 00:22:16,150 Quindi, se siete sul vostro Mac o PC, se avete mai visto 544 00:22:16,150 --> 00:22:18,590 qualche messaggio fastidioso perché il computer è andato in crash o 545 00:22:18,590 --> 00:22:20,660 congelati, e c'è un messaggio di errore criptico, 546 00:22:20,660 --> 00:22:23,320 e poi un po 'di codice, come sistema di codice 547 00:22:23,320 --> 00:22:25,110 1,2,3,4, un numero, 548 00:22:25,110 --> 00:22:29,270 che è generalmente un dettaglio superfluo dire 549 00:22:29,270 --> 00:22:32,110 la maggior parte di noi esseri umani, ma questo è ciò che una qualche funzione o qualche 550 00:22:32,110 --> 00:22:34,890 programma ha effettivamente restituito, un valore diverso da zero. 551 00:22:34,890 --> 00:22:38,540 E il vantaggio di questo è che 0 significa tutto pure, e 552 00:22:38,540 --> 00:22:40,470 allora hai di fatto un numero infinito di cose che 553 00:22:40,470 --> 00:22:41,130 può andare storto. 554 00:22:41,130 --> 00:22:44,700 È per questo che hanno scelto 0 per bene e un valore diverso da zero per 555 00:22:44,700 --> 00:22:46,450 male, come vedremo fra poco. 556 00:22:46,450 --> 00:22:47,870 >> Quindi cerchiamo di andare avanti e scrivere questo. 557 00:22:47,870 --> 00:22:51,610 Quindi ricordare che l'altro giorno ho usato il mio Mac per aprire un 558 00:22:51,610 --> 00:22:53,970 finestra terminale, e poi ho aperto programma di testo, come 559 00:22:53,970 --> 00:22:55,900 TextEdit, e ho iniziato a scrivere del codice. 560 00:22:55,900 --> 00:22:56,580 Beh, va bene. 561 00:22:56,580 --> 00:22:58,636 Ma la tua esperienza sta per essere diverso su un Mac, o 562 00:22:58,636 --> 00:23:01,220 in un computer Solaris, un computer Linux, operativo che 563 00:23:01,220 --> 00:23:02,810 sistema che si stia utilizzando. 564 00:23:02,810 --> 00:23:04,970 E così, nel corso, quello che invece di utilizzare è qualcosa 565 00:23:04,970 --> 00:23:07,010 chiamato il CS50 Appliance. 566 00:23:07,010 --> 00:23:10,420 Così il CS50 Appliance è un pezzo di software scaricabile 567 00:23:10,420 --> 00:23:13,640 che consente di eseguire un sistema operativo chiamato Linux, 568 00:23:13,640 --> 00:23:16,810 in particolare Fedora Linux, sul proprio Mac o PC. 569 00:23:16,810 --> 00:23:20,810 E farlo scaricando qualcosa chiamato un hypervisor. 570 00:23:20,810 --> 00:23:23,100 Quindi, tutto questo sarà documentato nel set problema 1. 571 00:23:23,100 --> 00:23:25,240 E si viene guidati verso ciò che è necessario scaricare. 572 00:23:25,240 --> 00:23:27,510 Ma il risultato finale, se si dispone di un computer Mac o PC, è 573 00:23:27,510 --> 00:23:29,080 scaricare alcuni software libero. 574 00:23:29,080 --> 00:23:32,340 È quindi scaricare Appliance CS50, e vi dico che 575 00:23:32,340 --> 00:23:33,960 il software libero - l'hypervisor - 576 00:23:33,960 --> 00:23:38,080 per eseguire il Appliance CS50 in una finestra sul computer. 577 00:23:38,080 --> 00:23:39,490 E quello che succede è questo. 578 00:23:39,490 --> 00:23:43,660 >> Ora ho, notare qui, quello che sembra essere un desktop 579 00:23:43,660 --> 00:23:44,130 ambiente. 580 00:23:44,130 --> 00:23:46,150 E lasciatemi in realtà ridurre questa finestra singola. 581 00:23:46,150 --> 00:23:49,640 Quindi, questo è ora il mio Mac, con una piccola finestra, e all'interno 582 00:23:49,640 --> 00:23:51,300 di questa finestra sembra essere completamente 583 00:23:51,300 --> 00:23:52,380 sistema operativo diverso. 584 00:23:52,380 --> 00:23:55,250 In effetti c'è questo menu di avvio qui, che ricorda 585 00:23:55,250 --> 00:23:57,990 Windows, che ha un sacco di sottomenu, tra cui 586 00:23:57,990 --> 00:24:00,720 un link al manuale CS50, Dropbox, e simili. 587 00:24:00,720 --> 00:24:03,480 E ciò che questo ambiente è ora un ambiente standard 588 00:24:03,480 --> 00:24:06,280 che tutti noi ora possibile utilizzare, in modo che non importa che cosa il vostro 589 00:24:06,280 --> 00:24:08,960 computer è, ciò che è stato installato su di esso, quale versione 590 00:24:08,960 --> 00:24:11,430 di Mac OS o Windows è in esecuzione, tutti noi ora la 591 00:24:11,430 --> 00:24:12,800 stesso ambiente. 592 00:24:12,800 --> 00:24:15,850 E ora in questo ambiente si può iniziare a scrivere del codice. 593 00:24:15,850 --> 00:24:18,480 >> Quindi ho intenzione di andare avanti e aprire un programma chiamato gedit. 594 00:24:18,480 --> 00:24:21,500 Questo è paragonabile a Notepad.exe, o 595 00:24:21,500 --> 00:24:22,790 TextEdit su Mac. 596 00:24:22,790 --> 00:24:25,390 E questo è solo un super semplice programma di editing di testo 597 00:24:25,390 --> 00:24:27,500 che assomiglia a questo a prima vista. 598 00:24:27,500 --> 00:24:30,640 Ora, in cima, ho una tavolozza bianca, in fondo ho 599 00:24:30,640 --> 00:24:33,860 hanno questa finestra nera che dice jharvard apparecchio @. 600 00:24:33,860 --> 00:24:36,440 E questo perché l'account utente che abbiamo creato in precedenza 601 00:24:36,440 --> 00:24:38,430 per tutti si chiama John Harvard. 602 00:24:38,430 --> 00:24:41,490 Ha una cartella in cui tutti i suoi file stanno per andare, e 603 00:24:41,490 --> 00:24:43,500 qui è dove si può iniziare a scrivere del codice. 604 00:24:43,500 --> 00:24:45,810 Permettetemi quindi di andare avanti qui e ingrandire solo un po ', e io sono 605 00:24:45,810 --> 00:24:51,550 intenzione di fare # include, int main (), e 606 00:24:51,550 --> 00:24:57,470 poi ho intenzione di fare printf ("ciao mondo") 607 00:24:57,470 --> 00:24:59,490 , Restituisce 0. 608 00:24:59,490 --> 00:25:01,400 Ora, questo è tutto molto bianco e nero. 609 00:25:01,400 --> 00:25:03,830 >> Lasciatemi andare avanti e fare una cosa da insegnare gedit quello che sto 610 00:25:03,830 --> 00:25:04,510 effettivamente facendo. 611 00:25:04,510 --> 00:25:06,140 Lasciami andare a Salva con nome. 612 00:25:06,140 --> 00:25:08,560 Sto andando a scegliere sul lato sinistro qui jharvard. 613 00:25:08,560 --> 00:25:11,010 Quindi, di nuovo, anche se non hai mai usato Linux prima, francamente 614 00:25:11,010 --> 00:25:13,680 in questi giorni, tutti sono devolvendo in sostanza il 615 00:25:13,680 --> 00:25:14,590 stesso tipo di interfaccia - 616 00:25:14,590 --> 00:25:16,030 Mac OS, Windows e Linux. 617 00:25:16,030 --> 00:25:18,680 Così ho scelto cartella Inizio jharvard qui. 618 00:25:18,680 --> 00:25:21,120 E ho intenzione di salvare il file come hello.c. 619 00:25:21,120 --> 00:25:24,260 Così in cima, ho digitato hello.c, nominare un C 620 00:25:24,260 --> 00:25:26,520 programma con l'estensione. c è 621 00:25:26,520 --> 00:25:27,570 ciò che è pratica comune. 622 00:25:27,570 --> 00:25:28,650 E mi ha colpito Salva. 623 00:25:28,650 --> 00:25:32,510 E ora ciò che è bello è che ho effettivamente insegnato gedit, 624 00:25:32,510 --> 00:25:33,690 che questo è un programma C. 625 00:25:33,690 --> 00:25:36,470 Si noti che il mio testo in bianco e nero è ora codificati a colori, o 626 00:25:36,470 --> 00:25:39,330 sintassi evidenziata, che attira la mia attenzione solo al 627 00:25:39,330 --> 00:25:41,540 diverse parti semantiche del programma. 628 00:25:41,540 --> 00:25:44,260 In alto a sinistra c'è, come i miei programmi diventano più complessi, sono 629 00:25:44,260 --> 00:25:47,060 sta per avere un riassunto di tutte le cose che ho scritto. 630 00:25:47,060 --> 00:25:48,050 Così che è lassù. 631 00:25:48,050 --> 00:25:52,350 Quindi lasciate che ora lo zoom indietro e scendere a questa finestra di terminale. 632 00:25:52,350 --> 00:25:54,570 >> Quindi questo è forse nuovo per molte persone. 633 00:25:54,570 --> 00:25:57,260 Se non hai mai usato un ambiente a riga di comando, che non hai mai 634 00:25:57,260 --> 00:26:00,020 utilizzato DOS, o non hai mai usato Linux, o non hai mai aperto 635 00:26:00,020 --> 00:26:02,550 Mac OS finestra del terminale, ci sono un sacco di cose che si 636 00:26:02,550 --> 00:26:04,820 potrebbe fare con l'interfaccia grafica, come il puntamento, e facendo clic, e 637 00:26:04,820 --> 00:26:07,080 trascinando e lasciando cadere, e simili, ma in generale - 638 00:26:07,080 --> 00:26:09,360 certamente nel mondo dell'informatica - 639 00:26:09,360 --> 00:26:11,580 tramite riga di comando, in cui non si ha il mouse 640 00:26:11,580 --> 00:26:14,220 in generale, hai solo la tastiera, è in realtà molto 641 00:26:14,220 --> 00:26:17,260 più potente di interfaccia, una volta che abituarsi alla 642 00:26:17,260 --> 00:26:18,580 vari comandi. 643 00:26:18,580 --> 00:26:20,940 E si ordina di te stesso senza bisogno di puntare e fare clic su 644 00:26:20,940 --> 00:26:21,690 in tutto. 645 00:26:21,690 --> 00:26:23,890 Quindi, in gedit avremo sorta di avere il meglio di entrambi i mondi. 646 00:26:23,890 --> 00:26:25,600 Siamo in grado di trascinare e rilasciare il testo, possiamo vedere 647 00:26:25,600 --> 00:26:26,840 bello e codice colore. 648 00:26:26,840 --> 00:26:29,630 Ma quando arriva il momento di eseguire il nostro programma, faremo volte 649 00:26:29,630 --> 00:26:31,750 basta usare questa piccola finestra qui. 650 00:26:31,750 --> 00:26:33,460 >> Quindi ho intenzione di andare avanti e farlo. 651 00:26:33,460 --> 00:26:36,420 Nella finestra in basso in bianco e nero, ho intenzione di andare avanti 652 00:26:36,420 --> 00:26:37,890 e scrivere clang. 653 00:26:37,890 --> 00:26:40,130 E clang è il nome di un compilatore. 654 00:26:40,130 --> 00:26:43,310 Si tratta di un programma che converte il codice sorgente 655 00:26:43,310 --> 00:26:48,770 in, quindi, di codice oggetto. 656 00:26:48,770 --> 00:26:51,270 0 e 1, che abbiamo visto brevemente la settimana scorsa. 657 00:26:51,270 --> 00:26:53,700 Ricordiamo dalla settimana scorsa, abbiamo promesso che avremmo 658 00:26:53,700 --> 00:26:55,920 passare da una cosa del genere - abbiamo bisogno di essere 659 00:26:55,920 --> 00:26:57,010 qualcosa di simile - 660 00:26:57,010 --> 00:26:58,700 e questa non è certo una cosa che un essere umano sta andando 661 00:26:58,700 --> 00:26:59,690 fare manualmente. 662 00:26:59,690 --> 00:27:01,980 Così, invece abbiamo intenzione di utilizzare un programma, e che programma in 663 00:27:01,980 --> 00:27:03,430 questo caso si chiama Clang. 664 00:27:03,430 --> 00:27:06,020 E il nome del mio programma è hello.c. 665 00:27:06,020 --> 00:27:09,670 Quindi, al fine di compilare hello.c da codice sorgente in 666 00:27:09,670 --> 00:27:12,930 codice oggetto, o 0 e 1, dovrebbe essere sufficiente per fare proprio 667 00:27:12,930 --> 00:27:14,820 questo e premere Invio. 668 00:27:14,820 --> 00:27:16,850 >> Ok, sembra che nulla sia accaduto. 669 00:27:16,850 --> 00:27:20,450 Ma so adesso, o dalla settimana scorsa, che il nome di default 670 00:27:20,450 --> 00:27:24,920 un programma, scritto in C, è scioccamente chiamato a.out. 671 00:27:24,920 --> 00:27:26,610 La maggior parte dei nome poco interessante si potrebbe trovare. 672 00:27:26,610 --> 00:27:28,790 A è la prima lettera dell'alfabeto, non è ciò che è stato 673 00:27:28,790 --> 00:27:29,960 emesso, ma così sia. 674 00:27:29,960 --> 00:27:33,570 Questo è il mio programma, e ora punto slash, come vedremo, è 675 00:27:33,570 --> 00:27:36,170 in realtà solo una sorta di funzione di sicurezza, in quanto 676 00:27:36,170 --> 00:27:38,250 a.out è un programma che ho scritto. 677 00:27:38,250 --> 00:27:39,650 E non è venuto con il mio computer, è 678 00:27:39,650 --> 00:27:40,790 non in Programmi. 679 00:27:40,790 --> 00:27:42,910 Non è nella cartella Applicazioni di Mac OS. 680 00:27:42,910 --> 00:27:45,740 Ho bisogno di essere esplicito super con il computer, e dire 681 00:27:45,740 --> 00:27:49,030 questo programma, a.out, si trova nella cartella corrente, il 682 00:27:49,030 --> 00:27:50,260 directory corrente. 683 00:27:50,260 --> 00:27:53,160 E il modo in cui rappresentare questo in un ambiente come questo 684 00:27:53,160 --> 00:27:57,070 è punto rappresenta qualsiasi cartella nel quale ci si 685 00:27:57,070 --> 00:27:59,420 E così. / A.out significa solo correre 686 00:27:59,420 --> 00:28:00,530 nella cartella corrente. 687 00:28:00,530 --> 00:28:04,830 E ho eseguito questo con Enter, e voilà, il mio primo programma. 688 00:28:04,830 --> 00:28:05,990 >> Ora vorrei fare un passo indietro. 689 00:28:05,990 --> 00:28:08,280 Questa finestra è un po 'piccola, e rendersi conto che il fondo 690 00:28:08,280 --> 00:28:10,340 a sinistra dell'apparecchio qui è un'altra icona. 691 00:28:10,340 --> 00:28:12,660 Uno è Chrome, che dovrebbe essere abbastanza familiare, solo un web 692 00:28:12,660 --> 00:28:14,350 browser all'interno dell'apparecchio. 693 00:28:14,350 --> 00:28:16,340 E questa icona in bianco e nero è solo un 694 00:28:16,340 --> 00:28:17,720 finestra terminale più grande. 695 00:28:17,720 --> 00:28:19,830 Quindi, se diventa un po 'fastidioso per ordinare di avere solo 696 00:28:19,830 --> 00:28:22,270 questa fetta minuscola di una finestra con cui interagire 697 00:28:22,270 --> 00:28:24,370 con i programmi, possiamo invece farlo. 698 00:28:24,370 --> 00:28:26,640 E ora vorrei iniziare a digitare alcuni presto 699 00:28:26,640 --> 00:28:27,980 di essere i comandi noti. 700 00:28:27,980 --> 00:28:28,900 ls. 701 00:28:28,900 --> 00:28:31,410 Così ls è il comando per la quotazione. 702 00:28:31,410 --> 00:28:33,900 Quindi, in un Mac OS o Windows, è in genere doppio clic su un 703 00:28:33,900 --> 00:28:36,510 cartella e poi, voilà, si vedono tutti i vari file 704 00:28:36,510 --> 00:28:37,210 e cartelle. 705 00:28:37,210 --> 00:28:39,650 In un ambiente a riga di comando, in cui è possibile digitare solo 706 00:28:39,650 --> 00:28:42,390 comandi o testo, ls è l'equivalente. 707 00:28:42,390 --> 00:28:44,380 Allora fammi vedere cosa c'è in questa directory. 708 00:28:44,380 --> 00:28:46,540 >> Ora c'è un mucchio di roba qui che è sia un po ' 709 00:28:46,540 --> 00:28:48,190 familiare e un po 'sconosciuto. 710 00:28:48,190 --> 00:28:50,740 Ma si noti che, proprio come Windows e Mac OS, jharvard 711 00:28:50,740 --> 00:28:52,190 ha una cartella sul desktop. 712 00:28:52,190 --> 00:28:54,520 Così le icone che sono sul mio desktop accadere 713 00:28:54,520 --> 00:28:55,650 di essere in quella cartella. 714 00:28:55,650 --> 00:28:57,250 C'è una cartella di download, roba che 715 00:28:57,250 --> 00:28:58,890 Chrome potrebbe mettere lì. 716 00:28:58,890 --> 00:28:59,250 Dropbox. 717 00:28:59,250 --> 00:29:01,820 Quindi, l'apparecchio è dotato di supporto integrato per Dropbox 718 00:29:01,820 --> 00:29:04,500 in modo che nel corso del semestre, è possibile sincronizzare con il vostro Dropbox 719 00:29:04,500 --> 00:29:06,420 account in modo che tutti i programmi sono sottoposti a backup. 720 00:29:06,420 --> 00:29:08,050 Sono accessibili sul tuo computer. 721 00:29:08,050 --> 00:29:09,780 Se qualcosa va storto con l'apparecchio, è possibile 722 00:29:09,780 --> 00:29:11,340 molto facilmente recuperare da Dropbox. 723 00:29:11,340 --> 00:29:12,940 Quindi quella cartella è lì per questo. 724 00:29:12,940 --> 00:29:14,660 Ci sono due file che ho fatto - hello.c 725 00:29:14,660 --> 00:29:16,540 e a.out. 726 00:29:16,540 --> 00:29:18,530 E poi a destra ci sono delle altre cartelle che faremo 727 00:29:18,530 --> 00:29:20,710 arrivare verso la fine del semestre, con il web 728 00:29:20,710 --> 00:29:21,540 programmazione. 729 00:29:21,540 --> 00:29:26,160 Così, quando faccio. /, A.out, Enter, che sta dicendo andare 730 00:29:26,160 --> 00:29:29,460 nella directory in cui sono, nella directory corrente, ed eseguire il 731 00:29:29,460 --> 00:29:32,465 programma chiamato a.out proprio lì. 732 00:29:32,465 --> 00:29:35,810 >> Va bene, in modo che è bello e buono, ma non è tutto ciò che 733 00:29:35,810 --> 00:29:38,550 impellente di scrivere un programma chiamato aiuto a.out. 734 00:29:38,550 --> 00:29:40,790 Così possiamo effettivamente fare questo un po 'diverso. 735 00:29:40,790 --> 00:29:43,980 Quindi, invece di clang corsa, hello.c, aggiungiamo 736 00:29:43,980 --> 00:29:46,850 quello che si chiama un argomento della riga di comando. 737 00:29:46,850 --> 00:29:50,730 Quindi un argomento della riga di comando o un interruttore, in questo caso, è solo 738 00:29:50,730 --> 00:29:54,930 un'altra parola o frase che si digita al prompt dopo 739 00:29:54,930 --> 00:29:56,290 il programma che si desidera eseguire. 740 00:29:56,290 --> 00:29:59,970 Quindi, in questo caso, clang è il programma che voglio correre,-o 741 00:29:59,970 --> 00:30:03,480 di output un file significa che non è più chiamato a.out. 742 00:30:03,480 --> 00:30:07,510 Output un file chiamato ciao, e farlo compilando il 743 00:30:07,510 --> 00:30:10,200 ultima parola sulla linea, hello.c. 744 00:30:10,200 --> 00:30:13,200 Così, in breve, si tratta di un miglioramento molto marginale, per cui 745 00:30:13,200 --> 00:30:15,850 invece di avere questo file a.out stupidamente chiamato, 746 00:30:15,850 --> 00:30:21,430 Ora posso fare clang-o ciao, allora hello.c, e 747 00:30:21,430 --> 00:30:22,530 quindi premere Invio. 748 00:30:22,530 --> 00:30:25,510 Nulla sembra accadere, ma ancora una volta un po 'come con 0 - quando 749 00:30:25,510 --> 00:30:28,510 nulla sembra accadere che significa niente di male è accaduto - 750 00:30:28,510 --> 00:30:31,460 quindi cerchiamo di fare ls ora, Enter, e in effetti ora 751 00:30:31,460 --> 00:30:32,780 hanno un programma ciao. 752 00:30:32,780 --> 00:30:38,510 Quindi, se scrivo ciao ora, non comando trovato. 753 00:30:38,510 --> 00:30:39,440 OK,. /. 754 00:30:39,440 --> 00:30:40,220 Quindi, esattamente a destra. 755 00:30:40,220 --> 00:30:43,170 Quindi, perché questo programma che ho scritto, e non è venuto con 756 00:30:43,170 --> 00:30:45,810 il computer,. / ciao, Enter, significa 757 00:30:45,810 --> 00:30:47,350 Sono ora in esecuzione ciao. 758 00:30:47,350 --> 00:30:48,440 >> In modo che è lì. 759 00:30:48,440 --> 00:30:51,070 Ora quello che più volte si arriva a linea di comando più 760 00:30:51,070 --> 00:30:54,110 argomenti che ci permettono di fare di più, ma solo per quelli per 761 00:30:54,110 --> 00:30:57,760 che questo potrebbe essere vecchio cappello, mi permetta effettivamente andare in un 762 00:30:57,760 --> 00:31:01,910 Elenco qui e solo dare un teaser di quale altro modo si 763 00:31:01,910 --> 00:31:05,770 potrebbe andare sull'implementazione ciao mondo. 764 00:31:05,770 --> 00:31:10,730 Vorrei in questa sede, e ho intenzione di aprirlo. 765 00:31:10,730 --> 00:31:13,090 Quindi, in realtà, ho intenzione di spiegare quello che sto facendo, in modo da 766 00:31:13,090 --> 00:31:15,610 questo è utile. 767 00:31:15,610 --> 00:31:17,410 Fammi il backup. 768 00:31:17,410 --> 00:31:19,620 >> Così ho fatto questo da molto tempo. 769 00:31:19,620 --> 00:31:23,030 Così preavviso superiore a destra ci sono un paio di 770 00:31:23,030 --> 00:31:26,940 directory che vengono stranamente denominati source1m e source1w. 771 00:31:26,940 --> 00:31:28,830 Questo è solo sciocca convenzione usiamo. 772 00:31:28,830 --> 00:31:31,825 Fonte significa solo codice sorgente, 1 significa che si tratta di una settimana, e 773 00:31:31,825 --> 00:31:34,000 m significa che è Lunedi, e w significa che è Mercoledì. 774 00:31:34,000 --> 00:31:34,900 Quindi niente criptico lì. 775 00:31:34,900 --> 00:31:37,830 E 'solo notazione abbreviata. 776 00:31:37,830 --> 00:31:39,860 Queste cose blu sono cartelle, altrimenti noti come 777 00:31:39,860 --> 00:31:40,630 directory. 778 00:31:40,630 --> 00:31:43,870 Voglio andare in quella cartella ora, e su un normale computer 779 00:31:43,870 --> 00:31:45,710 Ho potuto solo fare doppio clic sull'icona di una cartella e 780 00:31:45,710 --> 00:31:46,810 ci sono tutti i miei file. 781 00:31:46,810 --> 00:31:49,270 Ma in un ambiente a riga di comando, non riesco a fare 782 00:31:49,270 --> 00:31:52,640 che, così, invece, devo cambiare directory manualmente. 783 00:31:52,640 --> 00:31:57,900 Quindi, se digito cd e poi source1m, Enter, si noti che 784 00:31:57,900 --> 00:32:01,180 mia richiesta, la cosa in bianco a sinistra, appena cambiato. 785 00:32:01,180 --> 00:32:03,690 E così in effetti, quando appena detto parentesi e poi i 786 00:32:03,690 --> 00:32:06,450 squiggle poco, il simbolo tilde, che proprio significava che ero 787 00:32:06,450 --> 00:32:08,800 nella home directory di John Harvard, i suoi Documenti, 788 00:32:08,800 --> 00:32:10,390 i suoi file personali. 789 00:32:10,390 --> 00:32:14,000 Ma ora in parentesi si dice ~ / source1m. 790 00:32:14,000 --> 00:32:17,090 Questo significa solo che sono in una cartella denominata source1m 791 00:32:17,090 --> 00:32:19,160 che è nella home directory di John Harvard. 792 00:32:19,160 --> 00:32:22,030 Quindi, se io ora voglio elencare i file in questa cartella, facile 793 00:32:22,030 --> 00:32:25,300 domanda, digitare solo ls. 794 00:32:25,300 --> 00:32:28,860 E ora vedo tutti i file che ho creato in precedenza per oggi 795 00:32:28,860 --> 00:32:31,020 conferenza, tutte, o la maggior parte dei quali, capita 796 00:32:31,020 --> 00:32:32,740 per terminare in. c. 797 00:32:32,740 --> 00:32:36,210 >> Permettetemi quindi di andare avanti ora ed eseguire gedit di un programma chiamato 798 00:32:36,210 --> 00:32:39,140 holloway.c, che è stato scritto da un hacker casuale 799 00:32:39,140 --> 00:32:42,920 su Internet, che sembra un po 'come questo. 800 00:32:42,920 --> 00:32:44,880 E non abbiamo intenzione di passare attraverso questo in qualsiasi 801 00:32:44,880 --> 00:32:48,530 dettaglio, ma per quelli più confortevole, in particolare, se 802 00:32:48,530 --> 00:32:50,935 si vuole prendere una supposizione su ciò che fa questo programma qui. 803 00:32:57,950 --> 00:32:59,990 State tranquilli, se sei più o meno confortevole, 804 00:32:59,990 --> 00:33:01,655 non siamo nemmeno arrivare a questo genere di cose entro la fine del 805 00:33:01,655 --> 00:33:02,160 questo semestre. 806 00:33:02,160 --> 00:33:05,390 Questo è ciò che è un esempio di un concorso offuscato C, che 807 00:33:05,390 --> 00:33:08,390 significa scrivere il programma più criptica, cercando possibilmente 808 00:33:08,390 --> 00:33:10,820 il possibile per superare altre persone in gamba, che sono allo stesso modo 809 00:33:10,820 --> 00:33:13,010 cercando di scrivere le cose e mostrare che si può scrivere 810 00:33:13,010 --> 00:33:14,280 le cose più criptici di te. 811 00:33:14,280 --> 00:33:17,290 Quindi questo non è un esempio di un programma ben scritto dal 812 00:33:17,290 --> 00:33:21,260 prospettiva di stile, questo è un esempio di un programma che 813 00:33:21,260 --> 00:33:22,860 vince un concorso, per le persone che cercano di 814 00:33:22,860 --> 00:33:24,090 essere vago e astratto. 815 00:33:24,090 --> 00:33:27,670 >> Quindi, se si corre questa cosa, lasciami andare nella mia finestra di terminale, 816 00:33:27,670 --> 00:33:28,110 per così dire. 817 00:33:28,110 --> 00:33:29,650 Quindi questo ambiente bianco e nero è chiamato 818 00:33:29,650 --> 00:33:31,160 finestra terminale genere. 819 00:33:31,160 --> 00:33:32,600 Lasciatemi andare avanti e compilarlo. 820 00:33:32,600 --> 00:33:34,440 Non ho intenzione di usare clang, perché questo programma è un 821 00:33:34,440 --> 00:33:36,340 po 'criptico e ha bisogno di un diverso 822 00:33:36,340 --> 00:33:38,190 compilatore, uno chiamato GCC. 823 00:33:38,190 --> 00:33:39,200 Ma fa la stessa cosa. 824 00:33:39,200 --> 00:33:41,130 Ci vuole il codice sorgente in codice oggetto. 825 00:33:41,130 --> 00:33:43,940 E ora se corro a.out, il programma si 826 00:33:43,940 --> 00:33:46,065 appena visto lo fa. 827 00:33:49,220 --> 00:33:51,170 In modo che collega che quest'anno ha vinto quel concorso. 828 00:33:51,170 --> 00:33:54,020 In ogni caso, non stiamo andando in quella direzione, di per sé. 829 00:33:54,020 --> 00:33:57,400 >> Quindi cerchiamo di realtà tenta di prendere in giro ora a parte quello che possiamo fare 830 00:33:57,400 --> 00:33:59,540 con questi elementi di base per rendere più 831 00:33:59,540 --> 00:34:00,590 programmi interessanti. 832 00:34:00,590 --> 00:34:02,800 Proprio per questo abbiamo scritto un programma, abbiamo eseguito un programma. 833 00:34:02,800 --> 00:34:05,780 Ora siamo in grado di semplificare la realtà e non hanno più da scrivere 834 00:34:05,780 --> 00:34:07,210 il clangore parola al prompt. 835 00:34:07,210 --> 00:34:10,710 Si scopre come i nostri programmi ottenere più criptico, possiamo, o 836 00:34:10,710 --> 00:34:14,699 più complesso piuttosto, in grado di eseguire questo comando. 837 00:34:14,699 --> 00:34:17,610 Quindi vorrei tornare alla mia home directory, per così dire, lasciatemi 838 00:34:17,610 --> 00:34:20,750 rimuovere - rm è il comando di rimozione - Sto andando a rimuovere 839 00:34:20,750 --> 00:34:23,060 il file chiamato a.out e ciao. 840 00:34:23,060 --> 00:34:25,489 E ora notare in un ambiente a riga di comando, molto simile a 841 00:34:25,489 --> 00:34:27,800 una GUI, si ottiene richiesto. Non è possibile fare clic su un pulsante anche se, ho 842 00:34:27,800 --> 00:34:31,040 devono digitare y per sì, y per sì. 843 00:34:31,040 --> 00:34:33,460 E ora se digito ls di nuovo, si noti che i verde 844 00:34:33,460 --> 00:34:35,469 programmi - a.out e ciao - 845 00:34:35,469 --> 00:34:35,734 se ne sono andati. 846 00:34:35,734 --> 00:34:37,340 Attenzione rm. 847 00:34:37,340 --> 00:34:39,739 Si può fare cose cattive, proprio come è possibile trascinando 848 00:34:39,739 --> 00:34:40,810 le cose per la tua spazzatura. 849 00:34:40,810 --> 00:34:43,989 >> Così ora andiamo avanti - e ho potuto fare questo - clang-o 850 00:34:43,989 --> 00:34:45,139 ciao, ciao - 851 00:34:45,139 --> 00:34:46,884 Sto già annoiato digitando quel comando. 852 00:34:46,884 --> 00:34:48,080 Anche se ho scritto un po 'in fretta. 853 00:34:48,080 --> 00:34:51,870 Così possiamo invece fare fare ciao. 854 00:34:51,870 --> 00:34:53,880 Quindi, fare non è un compilatore. 855 00:34:53,880 --> 00:34:57,720 E 'solo un amichevole programma che viene fornito con Linux, in questo 856 00:34:57,720 --> 00:34:59,070 caso - il sistema operativo - 857 00:34:59,070 --> 00:35:02,480 che consente di automatizzare il processo di compilazione di programmi. 858 00:35:02,480 --> 00:35:05,555 Così, invece di ricordare clang-o nome del file e 859 00:35:05,555 --> 00:35:08,190 poi così via, soprattutto una volta che le linee diventano più lunghi e 860 00:35:08,190 --> 00:35:10,110 più a lungo, posso solo scrivere fare. 861 00:35:10,110 --> 00:35:12,030 E questo sta per sputare fuori un sacco di roba che 862 00:35:12,030 --> 00:35:13,940 avremo finalmente vedere questo semestre. 863 00:35:13,940 --> 00:35:17,500 Ma notate ora se io digita ls, ciao è tornato nella mia directory. 864 00:35:17,500 --> 00:35:19,850 E in effetti posso eseguire con. / Ciao. 865 00:35:19,850 --> 00:35:23,330 Quindi, fare solo automatizza il processo di esecuzione ciò che è stato, 866 00:35:23,330 --> 00:35:26,910 in questo caso, una molto più lunga, comando più complesso. 867 00:35:26,910 --> 00:35:29,060 Quindi abbiamo intenzione di iniziare a utilizzare marca, solo perché è molto 868 00:35:29,060 --> 00:35:30,530 più facile da usare. 869 00:35:30,530 --> 00:35:32,770 >> Ma ora facciamo un programma più interessante 870 00:35:32,770 --> 00:35:34,650 che anche solo dire ciao. 871 00:35:34,650 --> 00:35:38,680 Così nei programmi che abbiamo scritto finora c'è principale. 872 00:35:38,680 --> 00:35:40,890 Questo è solo la cosa di default che prende tutto spento. 873 00:35:40,890 --> 00:35:43,340 Ma ci sono altre funzioni fuori anche lì, e 874 00:35:43,340 --> 00:35:45,890 stdio.h è la cosa che abbiamo visto nella parte superiore della nostra 875 00:35:45,890 --> 00:35:48,480 file prima, e questo è ciò che è noto come la libreria standard. 876 00:35:48,480 --> 00:35:51,300 All'interno della libreria standard è un insieme di funzioni 877 00:35:51,300 --> 00:35:53,850 che qualcun altro ha scritto, e possiamo iniziare a utilizzare questi 878 00:35:53,850 --> 00:35:55,050 funzioni per scrivere di più 879 00:35:55,050 --> 00:35:56,760 programmi interessanti noi stessi. 880 00:35:56,760 --> 00:35:58,370 >> Quindi lasciatemi tornare alla macchina. 881 00:35:58,370 --> 00:35:59,820 Ho intenzione di chiudere questa finestra di terminale. 882 00:35:59,820 --> 00:36:02,630 Ho intenzione di chiudere le cose che abbiamo scritto in precedenza, e basta andare 883 00:36:02,630 --> 00:36:07,350 in hello.c, e notare ora posso effettuare le seguenti operazioni. 884 00:36:07,350 --> 00:36:09,730 Ciao mondo non è poi così interessante, mi piacerebbe 885 00:36:09,730 --> 00:36:11,770 personalizzare il programma per me. 886 00:36:11,770 --> 00:36:13,440 Così, invece di dire mondo, ho intenzione di 887 00:36:13,440 --> 00:36:14,830 andare avanti e dire - 888 00:36:14,830 --> 00:36:16,880 Potrei scrivere David - ma questo è davvero una sorta di 889 00:36:16,880 --> 00:36:18,050 fondamentalmente la stessa. 890 00:36:18,050 --> 00:36:19,970 Ma cerchiamo di provare questa idea segnaposto. 891 00:36:19,970 --> 00:36:24,460 Ricordiamo che in C, piuttosto in printf, abbiamo avuto questi 892 00:36:24,460 --> 00:36:28,110 segnaposto, e ci sono più di un semplice d%. 893 00:36:28,110 --> 00:36:31,150 Così era% d, controllo di integrità veloce. 894 00:36:31,150 --> 00:36:32,310 Ok, numero decimale, questo è tutto. 895 00:36:32,310 --> 00:36:33,860 Cifre decimali, questo è tutto. 896 00:36:33,860 --> 00:36:37,755 Quindi c%, come avremo modo di incontrare, sta per essere un personaggio. 897 00:36:37,755 --> 00:36:40,530 Metti un personaggio qui, una lettera dalla A alla Z, 898 00:36:40,530 --> 00:36:41,600 punteggiatura o simbolo. 899 00:36:41,600 --> 00:36:45,590 Un singolo carattere,% f, qualcuno sa da altre lingue? 900 00:36:45,590 --> 00:36:47,020 Quindi un valore in virgola mobile. 901 00:36:47,020 --> 00:36:47,880 Un numero reale. 902 00:36:47,880 --> 00:36:51,550 Quindi non un numero decimale - questo è in realtà un numero reale con 903 00:36:51,550 --> 00:36:54,130 un punto decimale, e un certo numero di cifre a sinistra 904 00:36:54,130 --> 00:36:55,520 e destra. 905 00:36:55,520 --> 00:36:58,060 % S, stringa. 906 00:36:58,060 --> 00:36:59,530 Quello che andremo a vedere abbastanza spesso. 907 00:36:59,530 --> 00:37:02,140 Una stringa, ancora una volta, è solo una parola, una frase, una sequenza di 908 00:37:02,140 --> 00:37:03,330 singoli caratteri. 909 00:37:03,330 --> 00:37:06,730 E, infine, LLD? 910 00:37:06,730 --> 00:37:08,210 Quindi questo è più di un caso d'angolo. 911 00:37:08,210 --> 00:37:09,850 Lunga, lunga decimale. 912 00:37:09,850 --> 00:37:12,035 Quindi, se non vuole solo un numero che è questo grande, è 913 00:37:12,035 --> 00:37:14,160 desidera un numero più grande, si sta andando ad avere per specificare a 914 00:37:14,160 --> 00:37:16,400 il computer che è di una certa dimensione. 915 00:37:16,400 --> 00:37:17,610 >> Quindi cerchiamo di modificare questo un po '. 916 00:37:17,610 --> 00:37:20,610 Piuttosto che codificare in David, fammi un po ' 917 00:37:20,610 --> 00:37:22,460 dinamicamente dire% s. 918 00:37:22,460 --> 00:37:25,790 Così si può mettere% s qui, che è un segnaposto per una stringa. 919 00:37:25,790 --> 00:37:30,500 Allora fammi fare virgola e quindi il "David" qui. 920 00:37:30,500 --> 00:37:32,770 Ora, questo non è tutto ciò che intellettualmente interessante, 921 00:37:32,770 --> 00:37:35,060 perché tutto quello che ho fatto ora è davvero creare più lavoro per 922 00:37:35,060 --> 00:37:35,790 il computer. 923 00:37:35,790 --> 00:37:39,660 Invece di dire al computer di fare tutto in una volta, ora sono 924 00:37:39,660 --> 00:37:43,760 dire fare questo e inserire una stringa qui alla fine, virgola, 925 00:37:43,760 --> 00:37:44,950 è qui che stringa. 926 00:37:44,950 --> 00:37:47,220 Quindi questo non è un miglioramento migliore, ma è almeno 927 00:37:47,220 --> 00:37:49,010 un passo verso un programma più interessante. 928 00:37:49,010 --> 00:37:51,240 Perché ora, lasciami andare avanti e fare un po 'di questa finestra 929 00:37:51,240 --> 00:37:56,850 più grande, lasciami andare avanti e lanciate make ciao. 930 00:37:56,850 --> 00:38:01,340 E ora,. / A.out non funziona, perché? 931 00:38:03,880 --> 00:38:05,570 Va bene, ora si chiama ciao. 932 00:38:05,570 --> 00:38:09,400 Quindi, di nuovo fare, e anche con un clang-o, ribattezzato 933 00:38:09,400 --> 00:38:11,120 programma per essere qualcosa di più interessante. 934 00:38:11,120 --> 00:38:13,060 E voilà: ora dice ciao Davide. 935 00:38:13,060 --> 00:38:14,590 >> Va bene, ancora un programma stupido. 936 00:38:14,590 --> 00:38:18,070 Così ora andiamo in realtà tornare qui e introdurre il concetto 937 00:38:18,070 --> 00:38:18,810 di una variabile. 938 00:38:18,810 --> 00:38:21,600 Non sarebbe bello se potessi dichiarare una variabile 939 00:38:21,600 --> 00:38:23,150 il cui tipo è una stringa? 940 00:38:23,150 --> 00:38:26,720 E il valore della variabile viene di fatto da parte dell'utente 941 00:38:26,720 --> 00:38:27,810 se stesso. 942 00:38:27,810 --> 00:38:30,240 Così arbitrariamente, ho intenzione di chiamare il mio variabile s, che è 943 00:38:30,240 --> 00:38:32,410 solo una convenzione comune, quando si dispone di una variabile chiamata 944 00:38:32,410 --> 00:38:33,250 la stringa. 945 00:38:33,250 --> 00:38:35,670 Io vado a fare segno di uguale, e poi ho intenzione di chiamare un 946 00:38:35,670 --> 00:38:38,030 funzione chiamata GetString. 947 00:38:38,030 --> 00:38:40,830 Quindi GetString non è qualcosa che viene costruito in C. E ' 948 00:38:40,830 --> 00:38:43,330 una funzione che il personale CS50 ha scritto, in realtà solo per 949 00:38:43,330 --> 00:38:45,670 queste prime due settimane, per semplificare il processo di 950 00:38:45,670 --> 00:38:49,450 ottenere l'input dell'utente e guadagnando l'input dell'utente in forma 951 00:38:49,450 --> 00:38:51,960 di stringhe, o numeri, e così via. 952 00:38:51,960 --> 00:38:55,520 Così GetString è come printf, ma ovviamente invece di 953 00:38:55,520 --> 00:38:58,700 stampa sta andando a fare quello che dice il suo nome, ottenere una stringa. 954 00:38:58,700 --> 00:39:00,970 Ma per utilizzare GetString, stiamo andando ad avere per fare un cambiamento 955 00:39:00,970 --> 00:39:03,180 qui, al di là di questo. 956 00:39:03,180 --> 00:39:07,170 Quindi intuitivamente, questo programma, si spera, sta andando in qualche modo 957 00:39:07,170 --> 00:39:09,700 ottenere una stringa da parte dell'utente, e allora che cosa sta andando a fare 958 00:39:09,700 --> 00:39:11,460 con quella stringa, denominata s? 959 00:39:15,060 --> 00:39:16,470 E 'solo andando a stamparlo, giusto? 960 00:39:16,470 --> 00:39:18,870 Ancora non è un programma stimolante perché tutto sta andando 961 00:39:18,870 --> 00:39:22,160 da fare è collegare quel valore in cui% s 962 00:39:22,160 --> 00:39:23,750 dice che dovrebbe andare. 963 00:39:23,750 --> 00:39:25,290 >> Quindi cerchiamo di almeno vedere in azione. 964 00:39:25,290 --> 00:39:27,040 Vorrei salvare e eseguire lo zoom indietro. 965 00:39:27,040 --> 00:39:30,280 Ora, nella mia finestra di terminale qui, la piccola fetta di uno, 966 00:39:30,280 --> 00:39:32,760 vorrei ancora una volta fanno fare ciao. 967 00:39:32,760 --> 00:39:35,160 Ok, e ah, accidenti, ho avuto un sacco di errori. 968 00:39:35,160 --> 00:39:38,020 Vorrei scorrere verso l'alto, e vediamo il nostro primo - 969 00:39:38,020 --> 00:39:40,430 quindi cerchiamo di effettivamente fare questo in una finestra ancora più grande in modo da 970 00:39:40,430 --> 00:39:42,110 può vedere quanto male ho fatto un casino - 971 00:39:42,110 --> 00:39:44,460 in modo da rendere ciao. 972 00:39:44,460 --> 00:39:46,540 Ok, e 'un disastro, vero? 973 00:39:46,540 --> 00:39:48,740 Ho scritto tre righe di codice, e 974 00:39:48,740 --> 00:39:50,070 mi ha dato 12 errori. 975 00:39:50,070 --> 00:39:51,980 Allora, perché è questo? 976 00:39:51,980 --> 00:39:55,720 Quindi, per fortuna, spesso, quando si vedono molti, molti errori 977 00:39:55,720 --> 00:39:57,730 sputando in una sola volta, in realtà è solo perché hai 978 00:39:57,730 --> 00:39:59,760 confuso il computer qui. 979 00:39:59,760 --> 00:40:02,330 E rimane confuso nel momento in cui si mette qui. 980 00:40:02,330 --> 00:40:04,400 E così inizia proprio intervento, e incespicando, e 981 00:40:04,400 --> 00:40:07,310 sputando più roba spaventosa che effettivamente vale. 982 00:40:07,310 --> 00:40:10,120 Quindi, in generale, iniziano sempre con quella superiore. 983 00:40:10,120 --> 00:40:13,320 >> Quindi l'esempio più cima rossa, la 984 00:40:13,320 --> 00:40:14,740 messaggio di errore è questo. 985 00:40:14,740 --> 00:40:17,750 L'uso di stringa identificatore non dichiarato, ho 986 00:40:17,750 --> 00:40:19,160 dire standard? 987 00:40:19,160 --> 00:40:19,900 Non l'ho fatto. 988 00:40:19,900 --> 00:40:24,180 Volevo dire stringa, ma questo è perché, anche, la stringa parola 989 00:40:24,180 --> 00:40:26,020 che continuare ad usare verbalmente in realtà 990 00:40:26,020 --> 00:40:27,240 non esiste in C o. 991 00:40:27,240 --> 00:40:29,470 E 'qualcosa che verrà utilizzato solo per la prima settimana o due 992 00:40:29,470 --> 00:40:34,500 qui, ma esiste in un file chiamato cs50.h. 993 00:40:34,500 --> 00:40:37,110 Quindi per ora, sappiamo che c'è questa altra libreria che il 994 00:40:37,110 --> 00:40:39,330 staff ha scritto, così è stato scritto più di recente di 995 00:40:39,330 --> 00:40:40,510 stdio.h. 996 00:40:40,510 --> 00:40:45,020 Ma dentro di cs50.h è una definizione, sinonimo di 997 00:40:45,020 --> 00:40:48,310 genere, che crea questa stringa parola. 998 00:40:48,310 --> 00:40:50,890 >> Così ora lasciatemi tornare alla mia finestra di terminale. 999 00:40:50,890 --> 00:40:53,200 Ho intenzione di cancellare tutto questo casino da Ctrl-L. Non ci resta 1000 00:40:53,200 --> 00:40:55,700 pulire tutto pulito, e ho intenzione di andare avanti e fare 1001 00:40:55,700 --> 00:40:57,860 Ciao di nuovo, Invio. 1002 00:40:57,860 --> 00:40:59,440 Cosa è successo oggi? 1003 00:40:59,440 --> 00:41:01,150 Ora, tutti questi errori se ne andò. 1004 00:41:01,150 --> 00:41:02,230 Allora cosa ho fatto veramente? 1005 00:41:02,230 --> 00:41:05,920 Ho appena insegnato il computer che stringa esiste, ed è 1006 00:41:05,920 --> 00:41:07,890 in quel file chiamato cs50.h. 1007 00:41:07,890 --> 00:41:10,930 Quindi, smettere di lamentarsi, perché ora sapete dove trovare 1008 00:41:10,930 --> 00:41:13,220 dichiarazione di funzione per così dire. 1009 00:41:13,220 --> 00:41:15,200 Dove esiste nel mondo. 1010 00:41:15,200 --> 00:41:18,820 >> Così ora ho intenzione di andare avanti ed eseguire ciao. 1011 00:41:18,820 --> 00:41:22,300 Mi sembra di avere un ciclo infinito, non succede niente di. 1012 00:41:25,530 --> 00:41:26,870 Quindi ho bisogno di scrivere qualcosa, giusto. 1013 00:41:26,870 --> 00:41:29,650 La prima riga di codice nel mio programma è stato GetString. 1014 00:41:29,650 --> 00:41:31,750 Quindi è letteralmente in attesa di me per ottenere una stringa. 1015 00:41:31,750 --> 00:41:33,680 In questo senso sì, è un ciclo infinito. 1016 00:41:33,680 --> 00:41:36,520 Apparentemente in GetString è il comportamento di default che 1017 00:41:36,520 --> 00:41:37,510 ha scritto - il personale - 1018 00:41:37,510 --> 00:41:39,550 che dice solo aspettare e aspettare e aspettare e aspettare e aspettare, 1019 00:41:39,550 --> 00:41:42,550 finché l'utente non si dà una stringa digitando qualcosa trovi 1020 00:41:42,550 --> 00:41:46,000 Permettetemi quindi di andare avanti e digitare D-a-v - i-d, Invio. 1021 00:41:46,000 --> 00:41:47,420 E non è, ciao Davide. 1022 00:41:47,420 --> 00:41:50,430 >> Ora, questa non sembra come se fosse solo un atto? 1023 00:41:50,430 --> 00:41:52,810 Lasciatemi andare avanti e digitare Tommy. 1024 00:41:52,810 --> 00:41:54,740 Invio, va bene, sembra funzionare. 1025 00:41:54,740 --> 00:41:59,130 Opere per Rob, opere per Zamyla, lavora per - va bene. 1026 00:41:59,130 --> 00:42:01,000 Quindi è di andare a lavorare, molto probabilmente. 1027 00:42:01,000 --> 00:42:05,030 Così dovrebbe stampare tutto quello che realmente dare, 1028 00:42:05,030 --> 00:42:07,830 e possiamo essere un po 'difficile qui. 1029 00:42:07,830 --> 00:42:12,130 Vediamo se facciamo qualcosa di simile ciao. 1030 00:42:12,130 --> 00:42:18,000 Può andare qui, vediamo, copia, incolla. 1031 00:42:18,000 --> 00:42:19,950 Io non ho intenzione di essere in grado di incollare che molte volte qui. 1032 00:42:19,950 --> 00:42:24,410 Incolla, va bene, Maiusc + Ctrl + V. Così che cosa potrebbe 1033 00:42:24,410 --> 00:42:26,970 accadere che male qui? 1034 00:42:26,970 --> 00:42:27,770 >> Okay, allora, segmentation fault. 1035 00:42:27,770 --> 00:42:29,710 Così alcuni di voi con sfondi precedenti sapranno che 1036 00:42:29,710 --> 00:42:32,710 in generale, dando un sacco di input computer quando sono 1037 00:42:32,710 --> 00:42:36,140 probabilmente non è destinata a ricevere i nomi lunghi come questo - cattivi 1038 00:42:36,140 --> 00:42:36,740 le cose accadono. 1039 00:42:36,740 --> 00:42:39,230 In effetti, nel mondo del web, anche questo accade un po ', 1040 00:42:39,230 --> 00:42:41,000 per cui quando si progetta un sito web, quando si è 1041 00:42:41,000 --> 00:42:43,850 progettazione Facebook, è necessario prendere delle decisioni arbitrarie up 1042 00:42:43,850 --> 00:42:45,370 davanti, come per quanto tempo di qualcuno sarà 1043 00:42:45,370 --> 00:42:46,360 Facebook nome utente essere? 1044 00:42:46,360 --> 00:42:48,050 O quanto tempo nome di qualcuno essere? 1045 00:42:48,050 --> 00:42:50,110 Per quanto tempo il numero di telefono di qualcuno essere e simili. 1046 00:42:50,110 --> 00:42:53,580 E se i programmatori fare ipotesi cattivi, i programmi di rompere 1047 00:42:53,580 --> 00:42:56,640 perché provare a dare loro più potenza, più ingresso 1048 00:42:56,640 --> 00:42:58,330 piuttosto, di quello che hanno memoria. 1049 00:42:58,330 --> 00:43:01,860 Oppure RAM allocata per esso, e quindi se ora premete Invio, 1050 00:43:01,860 --> 00:43:04,640 che il programma di lavoro effettivamente prestate, perché eravamo in biblioteca 1051 00:43:04,640 --> 00:43:06,790 e in realtà abbiamo anticipato questo caso particolare. 1052 00:43:06,790 --> 00:43:10,900 Ma senza dubbio questo semestre, si scriverà almeno una 1053 00:43:10,900 --> 00:43:13,280 programma che dire queste parole. 1054 00:43:13,280 --> 00:43:16,520 Ricordate queste settimane da ora, forse due giorni da oggi. 1055 00:43:16,520 --> 00:43:18,760 Segmentation fault è una brutta cosa. 1056 00:43:18,760 --> 00:43:21,920 Si farà riferimento al fare qualcosa che il computer 1057 00:43:21,920 --> 00:43:23,310 non anticipare. 1058 00:43:23,310 --> 00:43:25,810 E in questo caso, è il programmatore, non si aspettava. 1059 00:43:25,810 --> 00:43:27,720 Molto simile a quello che questo mucchio di calze, ci sono stati vari 1060 00:43:27,720 --> 00:43:29,520 casi angolo avremmo potuto incontrato. 1061 00:43:29,520 --> 00:43:32,340 Allo stesso modo nei programmi se non si prevede di quanto tempo è 1062 00:43:32,340 --> 00:43:33,310 il nome di qualcuno sarà. 1063 00:43:33,310 --> 00:43:35,890 O se ho un utente malintenzionato, e il suo nome è 1064 00:43:35,890 --> 00:43:37,230 in realtà piuttosto breve, ma stanno solo cercando 1065 00:43:37,230 --> 00:43:37,960 a pasticciare con me? 1066 00:43:37,960 --> 00:43:40,490 Che cosa sarà il comportamento del mio programma? 1067 00:43:40,490 --> 00:43:43,930 Beh, in questo caso, qualcosa potrebbe effettivamente bloccarsi. 1068 00:43:43,930 --> 00:43:44,750 >> Allora, facciamo questo. 1069 00:43:44,750 --> 00:43:46,860 In 90 minuti, questo è un momento terribile lungo 1070 00:43:46,860 --> 00:43:47,780 di fare informatica. 1071 00:43:47,780 --> 00:43:49,550 Perché non prendere l'abitudine di prendere un cinque minuti 1072 00:43:49,550 --> 00:43:51,520 rompere qui, e quando torneremo, ci immergeremo in un po 'di 1073 00:43:51,520 --> 00:43:53,430 programmi più complessi e interessanti? 1074 00:43:53,430 --> 00:43:54,680 Cinque minuti. 1075 00:43:56,910 --> 00:43:58,160 >> Bene. 1076 00:44:01,138 --> 00:44:02,780 Così un breve commento. 1077 00:44:02,780 --> 00:44:05,590 Mi hanno detto che se questo era sullo schermo prima, che cosa 1078 00:44:05,590 --> 00:44:08,880 è uscito dalla mia bocca era cs50.net/rsvp. 1079 00:44:08,880 --> 00:44:11,670 Questo è corretto. cs50.net/lunch. 1080 00:44:11,670 --> 00:44:16,030 Così ora si può provare RSVPing per questo a / pranzo. 1081 00:44:16,030 --> 00:44:16,980 Ma facciamolo adesso. 1082 00:44:16,980 --> 00:44:20,150 Quindi questo è stato super veloce, super nuovo per un sacco di gente. 1083 00:44:20,150 --> 00:44:21,560 Vecchio cappello per alcune persone. 1084 00:44:21,560 --> 00:44:24,930 Quindi cerchiamo di tornare indietro per un momento, e vedere come siamo arrivati ​​a 1085 00:44:24,930 --> 00:44:29,350 questa uscita mondo ciao solo un momento fa. 1086 00:44:29,350 --> 00:44:31,780 >> Quindi, prima, c'è questo Appliance CS50. 1087 00:44:31,780 --> 00:44:34,270 Anche in questo caso, di un software, problema set 1 sta per dire 1088 00:44:34,270 --> 00:44:36,610 come scaricare esso, dove scaricarlo, cosa fare clic su 1089 00:44:36,610 --> 00:44:37,430 e così via. 1090 00:44:37,430 --> 00:44:39,670 E poi una volta che seguire queste istruzioni, sarete in grado 1091 00:44:39,670 --> 00:44:42,840 per massimizzare la finestra, e il vostro Mac o PC sarà un 1092 00:44:42,840 --> 00:44:43,910 po 'di qualcosa come questo. 1093 00:44:43,910 --> 00:44:47,170 Uno sfondo nero, una home directory in alto dove tutti 1094 00:44:47,170 --> 00:44:49,850 i file andare, un bidone della spazzatura in alto a sinistra, 1095 00:44:49,850 --> 00:44:51,130 un menu in basso. 1096 00:44:51,130 --> 00:44:54,010 Quindi, di nuovo, molto simile nello spirito a Mac OS o Windows, 1097 00:44:54,010 --> 00:44:56,040 anche se sembra essere Linux. 1098 00:44:56,040 --> 00:44:58,120 Che cosa abbiamo fatto dopo fatto? 1099 00:44:58,120 --> 00:44:59,580 Beh, abbiamo iniziato a scrivere i programmi. 1100 00:44:59,580 --> 00:45:02,260 E ricorderete dalla scorsa settimana, che tutto quello che serve per scrivere un 1101 00:45:02,260 --> 00:45:04,970 programma è un semplice editor di testo, 1102 00:45:04,970 --> 00:45:06,550 come il Blocco note o TextEdit. 1103 00:45:06,550 --> 00:45:08,360 Francamente, è anche possibile utilizzare Microsoft Word. 1104 00:45:08,360 --> 00:45:11,170 Ma le cose brutte alla fine accadrà, perché è molto 1105 00:45:11,170 --> 00:45:13,930 mano pesante soluzione per la scrittura di un programma, più esso sarà 1106 00:45:13,930 --> 00:45:15,400 salvarlo nel formato di file errato. 1107 00:45:15,400 --> 00:45:18,150 Ma è solo un editor di testo, un elaboratore di testi, è tutto ciò che è 1108 00:45:18,150 --> 00:45:19,390 bisogno di scrivere un programma. 1109 00:45:19,390 --> 00:45:23,420 >> Così nel Appliance CS50, possiamo farlo in un modo semplice. 1110 00:45:23,420 --> 00:45:25,580 Siamo in grado di sufficiente fare clic su questa icona in basso a sinistra. 1111 00:45:25,580 --> 00:45:28,790 E ancora, il problema di impostare 1 vi informerà di questo, e voilà - 1112 00:45:28,790 --> 00:45:31,210 si ottiene questa interfaccia in bianco e nero dove si può iniziare 1113 00:45:31,210 --> 00:45:32,160 la scrittura di codice. 1114 00:45:32,160 --> 00:45:34,960 Quindi cerchiamo di iniziare a scrivere un programma super semplice di nuovo. 1115 00:45:34,960 --> 00:45:38,890 Ho intenzione di salire su File, Salva, e ho intenzione di chiamare 1116 00:45:38,890 --> 00:45:42,870 questo, diciamo, hello2.c. 1117 00:45:42,870 --> 00:45:45,410 E io sto solo dicendo cliccando su jharvard, messo 1118 00:45:45,410 --> 00:45:46,750 nella sua home directory, non mi interessa 1119 00:45:46,750 --> 00:45:47,980 dove questo si va. 1120 00:45:47,980 --> 00:45:49,090 E quindi su Salva. 1121 00:45:49,090 --> 00:45:50,880 E ora posso iniziare a scrivere il mio programma. 1122 00:45:50,880 --> 00:45:53,560 E mi ricordo da prima che devo scrivere int 1123 00:45:53,560 --> 00:45:55,400 main (void). 1124 00:45:55,400 --> 00:45:57,000 Zoom in alto a sinistra. 1125 00:45:57,000 --> 00:46:02,670 E poi voglio dire printf, prendi due. 1126 00:46:02,670 --> 00:46:05,690 E ora una nuova riga, citazione chiudere, chiudere 1127 00:46:05,690 --> 00:46:07,820 parentesi, punto e virgola. 1128 00:46:07,820 --> 00:46:10,560 E poi vado qui alla mia finestra di terminale che è 1129 00:46:10,560 --> 00:46:12,840 incorporato in gedit, solo per comodità. 1130 00:46:12,840 --> 00:46:15,200 E ho intenzione di andare avanti e scrivere fanno ciao, ma non 1131 00:46:15,200 --> 00:46:17,500 ciao solo, hello2. 1132 00:46:17,500 --> 00:46:20,490 >> Quindi il mio file si chiama hello2.c. Il mio file quindi 1133 00:46:20,490 --> 00:46:23,510 dovrebbe essere chiamato hello2, in questo caso. 1134 00:46:23,510 --> 00:46:26,490 Dannazione, che cosa ho fatto di sbagliato? 1135 00:46:26,490 --> 00:46:29,490 Va bene, ho chiaramente omesso una linea, se vi ricordate che cosa 1136 00:46:29,490 --> 00:46:31,020 programmi precedenti simile. 1137 00:46:31,020 --> 00:46:32,480 Ma vediamo se non possiamo prendere in giro questa parte. 1138 00:46:32,480 --> 00:46:35,310 Purtroppo, la maggior parte delle persone che scrivono i programmi con cui 1139 00:46:35,310 --> 00:46:38,820 scriviamo programmi non semplificare le cose tanto bene. 1140 00:46:38,820 --> 00:46:41,520 Quindi dobbiamo tipo di sorvolare su ciò che non fanno abbastanza 1141 00:46:41,520 --> 00:46:44,050 sentire qui e vedere se siamo in grado di capire cosa c'è che non va. 1142 00:46:44,050 --> 00:46:46,700 La prima riga ci dice implicitamente dichiara C 1143 00:46:46,700 --> 00:46:49,310 libreria di funzioni printf con il tipo int. 1144 00:46:49,310 --> 00:46:51,210 OK, ho capito una parte di questo. 1145 00:46:51,210 --> 00:46:54,570 Ma sembra essere alludendo al fatto che ho usato printf 1146 00:46:54,570 --> 00:46:55,700 sbagliato, in qualche modo. 1147 00:46:55,700 --> 00:46:56,930 E che senso è sbagliato? 1148 00:46:56,930 --> 00:46:59,970 Solo che non ha insegnato il computer che si trova in un file 1149 00:46:59,970 --> 00:47:01,420 chiamato stdio.h. 1150 00:47:01,420 --> 00:47:04,120 Ora devo solo imparare a memoria solo ora che è printf 1151 00:47:04,120 --> 00:47:06,540 in stdio.h, e in effetti ci saranno altri 1152 00:47:06,540 --> 00:47:08,900 funzioni lo stesso file che dovremo abituarci. 1153 00:47:08,900 --> 00:47:12,490 >> Così ora lasciami andare avanti e premere Ctrl-L per cancellare proprio questo 1154 00:47:12,490 --> 00:47:16,050 di distanza, eseguire nuovamente fare hello2, e voilà. 1155 00:47:16,050 --> 00:47:19,490 E di nuovo questo comando, più complessa di quanto ti spiegheremo per 1156 00:47:19,490 --> 00:47:20,520 oggi fini. 1157 00:47:20,520 --> 00:47:23,570 Ma ha funzionato clang, clang e prende il codice sorgente e 1158 00:47:23,570 --> 00:47:24,870 sputa 0 e 1. 1159 00:47:24,870 --> 00:47:28,610 E quelli 0 e 1, in questo caso si chiamano cosa? 1160 00:47:28,610 --> 00:47:29,470 Ok, codice oggetto. 1161 00:47:29,470 --> 00:47:32,210 E il file che sono in è chiamato, quindi, 1162 00:47:32,210 --> 00:47:33,820 hello2, in questo caso. 1163 00:47:33,820 --> 00:47:37,040 Perché il mio file di testo era hello2.c, Invio. 1164 00:47:37,040 --> 00:47:39,820 E ora ho prendo due punto esclamativo, esclamativo 1165 00:47:39,820 --> 00:47:41,880 punto, punto esclamativo. 1166 00:47:41,880 --> 00:47:45,430 Va bene, quindi abbiamo ora la possibilità di ottenere le stringhe, 1167 00:47:45,430 --> 00:47:46,280 a quanto pare. 1168 00:47:46,280 --> 00:47:48,190 Beh, che altro possiamo ottenere da utenti? 1169 00:47:48,190 --> 00:47:51,010 >> Beh, in biblioteca CS50, c'è altre funzioni che 1170 00:47:51,010 --> 00:47:53,300 stanno per semplificarci la vita in questi primi giorni. 1171 00:47:53,300 --> 00:47:56,350 GetChar, GetDouble, getFloat, GetInt, 1172 00:47:56,350 --> 00:47:57,290 GetLongLong, GetString. 1173 00:47:57,290 --> 00:47:59,550 Bene, strappate il modo più semplice di questi primi. 1174 00:47:59,550 --> 00:48:01,430 GetString fa letteralmente che. 1175 00:48:01,430 --> 00:48:04,210 Si trova proprio lì, in attesa che l'utente digiti qualcosa in, 1176 00:48:04,210 --> 00:48:07,170 e appena scrivo qualcosa e premi Invio, si 1177 00:48:07,170 --> 00:48:08,860 fa qualcosa con quel valore. 1178 00:48:08,860 --> 00:48:11,700 Quindi cerchiamo di tornare a quella ad esempio di vedere esattamente ciò che 1179 00:48:11,700 --> 00:48:12,950 GetString stava facendo. 1180 00:48:12,950 --> 00:48:17,445 Lasciatemi andare avanti e si aprono in gedit, hello.c, e richiamare 1181 00:48:17,445 --> 00:48:20,590 tale diritto prima della pausa, questo è dove abbiamo lasciato. 1182 00:48:20,590 --> 00:48:23,240 >> Quindi cerchiamo di prendere in giro questo ora a parte in un po 'più dettagliato. 1183 00:48:23,240 --> 00:48:27,190 Così sulla linea 6, ci sono due cose 1184 00:48:27,190 --> 00:48:28,450 accadendo in questo momento. 1185 00:48:28,450 --> 00:48:32,630 Il segno di uguale è la separazione prima metà e la seconda metà. 1186 00:48:32,630 --> 00:48:34,670 Quindi, sul lato sinistro del segno di uguale, siamo 1187 00:48:34,670 --> 00:48:35,580 dicendo stringa s. 1188 00:48:35,580 --> 00:48:37,580 E poi, i termini appena povere, ciò che è stringa s 1189 00:48:37,580 --> 00:48:41,040 facendo, cosa ne pensi? 1190 00:48:41,040 --> 00:48:42,990 E 'la creazione di una cosa? 1191 00:48:42,990 --> 00:48:44,930 Quindi è la creazione di una stringa chiamata s. 1192 00:48:44,930 --> 00:48:46,370 Ora che cosa significa in realtà? 1193 00:48:46,370 --> 00:48:51,540 Beh, e 'riservare lo spazio per una stringa chiamata s. 1194 00:48:51,540 --> 00:48:52,490 Questo non è giusto. 1195 00:48:52,490 --> 00:48:53,120 Cosa sta facendo questo? 1196 00:48:53,120 --> 00:48:55,400 Computer Beh, come sapete, hanno hard disk, che è lì 1197 00:48:55,400 --> 00:48:56,300 i file sono memorizzati. 1198 00:48:56,300 --> 00:48:59,100 I computer hanno RAM, ed è lì che i programmi vengono caricati 1199 00:48:59,100 --> 00:49:00,240 mentre sono in esecuzione. 1200 00:49:00,240 --> 00:49:02,470 Così, quando si fa doppio clic su un'icona e Microsoft Word si apre 1201 00:49:02,470 --> 00:49:06,380 up, Microsoft Word è in esecuzione, per così dire, in RAM, che è 1202 00:49:06,380 --> 00:49:08,160 la parte elettronica del computer. 1203 00:49:08,160 --> 00:49:10,660 Non la fisica, parte meccanica che è la filatura, dove 1204 00:49:10,660 --> 00:49:12,640 dati sono generalmente memorizzati lungo termine. 1205 00:49:12,640 --> 00:49:15,810 Così stringa s è più o meno dire al computer mi danno 1206 00:49:15,810 --> 00:49:18,150 RAM sufficiente per adattarsi a una stringa. 1207 00:49:18,150 --> 00:49:20,450 Ora che un po 'di una semplificazione eccessiva, perché 1208 00:49:20,450 --> 00:49:22,300 quanto grande è la stringa sarà? 1209 00:49:22,300 --> 00:49:24,410 Beh, in realtà non lo sappiamo ancora, così nelle settimane a venire 1210 00:49:24,410 --> 00:49:27,290 ci troveremo a tirare indietro il livello che è una stringa e 1211 00:49:27,290 --> 00:49:28,510 vi diremo quello che realmente è. 1212 00:49:28,510 --> 00:49:31,050 String, per ora, è solo una semplificazione bella del nostro mondo. 1213 00:49:31,050 --> 00:49:35,700 Ma stringa s dichiara una stringa chiamata s, per ora. 1214 00:49:35,700 --> 00:49:36,520 Dichiara una stringa. 1215 00:49:36,520 --> 00:49:39,310 Si riserva un po 'di spazio nella RAM per la stringa che l'utente è 1216 00:49:39,310 --> 00:49:40,150 per digitare. 1217 00:49:40,150 --> 00:49:41,840 >> Ora diamo un'occhiata a destra del segno di uguale. 1218 00:49:41,840 --> 00:49:44,110 Così dice GetString (). 1219 00:49:44,110 --> 00:49:45,070 E un po 'di sanità mentale controllo. 1220 00:49:45,070 --> 00:49:47,940 Il fatto che non c'è niente all'interno delle parentesi 1221 00:49:47,940 --> 00:49:50,810 implica che dire GetString? 1222 00:49:50,810 --> 00:49:52,180 E 'non accetta argomenti. 1223 00:49:52,180 --> 00:49:55,290 Cioè, non si può influenzare il comportamento in alcun modo. 1224 00:49:55,290 --> 00:49:58,940 Ogni volta che lo si utilizza, si otterrà una stringa e basta. 1225 00:49:58,940 --> 00:50:02,210 Al contrario, printf, si spera il suo comportamento fa 1226 00:50:02,210 --> 00:50:03,010 cambiano ogni volta. 1227 00:50:03,010 --> 00:50:05,230 In caso contrario, si tratta di una funzione di stampa abbastanza inutile se 1228 00:50:05,230 --> 00:50:06,480 fa la stessa cosa. 1229 00:50:06,480 --> 00:50:07,970 Se la stampa viene sempre David o qualcosa del genere 1230 00:50:07,970 --> 00:50:09,500 arbitraria tutto il tempo. 1231 00:50:09,500 --> 00:50:11,540 Così fa printf senso di avere un argomento. 1232 00:50:11,540 --> 00:50:14,240 GetString non ha veramente bisogno di un argomento, perché volevo 1233 00:50:14,240 --> 00:50:16,700 per ottenere una stringa dall'utente ed è l'utente che sta succedendo 1234 00:50:16,700 --> 00:50:19,580 di fornire il dinamismo digitando in lettere diverse 1235 00:50:19,580 --> 00:50:20,850 ogni volta alla tastiera. 1236 00:50:20,850 --> 00:50:23,140 >> Così che cosa GetString finiscano? 1237 00:50:23,140 --> 00:50:25,080 Pensate a come questa piccola scatola nera. 1238 00:50:25,080 --> 00:50:29,340 E questa scatola nera non prende input, ma quando si bang 1239 00:50:29,340 --> 00:50:33,240 esso, sputa fuori una stringa che l'utente ha digitato trovi 1240 00:50:33,240 --> 00:50:36,660 E il fatto che ci sia un segno di uguale non significa prendere 1241 00:50:36,660 --> 00:50:39,890 ciò è sputare sulla destra e riporlo all'interno 1242 00:50:39,890 --> 00:50:41,390 ciò che è a sinistra. 1243 00:50:41,390 --> 00:50:43,470 Segno Così uguali, in realtà non vuol dire 1244 00:50:43,470 --> 00:50:46,490 uguaglianza, piuttosto tecnicamente significa assegnazione. 1245 00:50:46,490 --> 00:50:49,330 Prendere il valore a destra, e lo mise nel 1246 00:50:49,330 --> 00:50:51,050 variabile sulla sinistra. 1247 00:50:51,050 --> 00:50:52,820 Ecco, questo è tutto quello che sta succedendo lì. 1248 00:50:52,820 --> 00:50:55,640 >> Ora, in linea 7, che stiamo chiamando printf. 1249 00:50:55,640 --> 00:50:58,170 Così si spera printf sta diventando un po 'noioso, ormai. 1250 00:50:58,170 --> 00:50:59,530 Quindi, stampare una stringa formattata. 1251 00:50:59,530 --> 00:51:00,440 Che stringa? 1252 00:51:00,440 --> 00:51:05,460 Stampare, "h-e-l-l-o,% s 1253 00:51:05,460 --> 00:51:07,840 \ N ". 1254 00:51:07,840 --> 00:51:10,470 Va bene, che cosa voglio di plug-in per% s? 1255 00:51:10,470 --> 00:51:12,960 Letteralmente, ciò che è memorizzato in s. 1256 00:51:12,960 --> 00:51:15,570 Quindi, in questo caso, di controllo sanità mentale poco, il numero di argomenti non 1257 00:51:15,570 --> 00:51:16,820 printf prendere? 1258 00:51:19,860 --> 00:51:21,110 Ok, ho sentito uno. 1259 00:51:23,840 --> 00:51:26,330 Ho sentito uno nuovo. 1260 00:51:26,330 --> 00:51:27,730 Due, ho sentito due. 1261 00:51:27,730 --> 00:51:29,920 E per quanto riguarda tre? 1262 00:51:29,920 --> 00:51:30,450 Va bene, tre? 1263 00:51:30,450 --> 00:51:30,930 Eccellente. 1264 00:51:30,930 --> 00:51:33,170 Tre possibili risposte, solo uno di loro è corretta. 1265 00:51:33,170 --> 00:51:36,390 Quindi argomenti nuovo influenzare il comportamento di una funzione. 1266 00:51:36,390 --> 00:51:39,380 In passato, ha solo printf richiede un argomento. 1267 00:51:39,380 --> 00:51:42,260 "Ciao mondo" è stato un singolo argomento. 1268 00:51:42,260 --> 00:51:45,190 Tuttavia, ora, notare dove è presente comma. 1269 00:51:45,190 --> 00:51:49,600 Questo comma è al di fuori del preventivo / unquote, il che significa 1270 00:51:49,600 --> 00:51:52,170 hey printf, ecco che arriva un secondo argomento. 1271 00:51:52,170 --> 00:51:54,240 >> Così virgole maggior parte dei linguaggi di programmazione 1272 00:51:54,240 --> 00:51:57,300 separare più argomenti. 1273 00:51:57,300 --> 00:51:59,600 Quindi la risposta è qui non è sicuramente, perché 1274 00:51:59,600 --> 00:52:00,390 c'è questa virgola. 1275 00:52:00,390 --> 00:52:03,680 Così minimamente, printf è apparentemente prendendo due 1276 00:52:03,680 --> 00:52:04,940 argomenti questa volta. 1277 00:52:04,940 --> 00:52:07,050 Ma l'occasione per una domanda trabocchetto: ecco cosa 1278 00:52:07,050 --> 00:52:07,990 di questo comma? 1279 00:52:07,990 --> 00:52:11,260 Ciò implica che non c'è in realtà tre argomenti? 1280 00:52:11,260 --> 00:52:13,820 Questo, questo e questo. 1281 00:52:13,820 --> 00:52:18,820 Quindi no, perché la virgola si trova all'interno delle citazioni, che 1282 00:52:18,820 --> 00:52:20,890 significa che è in realtà solo una estetica della lingua inglese. 1283 00:52:20,890 --> 00:52:23,180 Non ha nulla a che fare con il numero di 1284 00:52:23,180 --> 00:52:24,890 argomenti in questo programma. 1285 00:52:24,890 --> 00:52:27,670 Quindi questo comma è al di fuori delle virgolette. 1286 00:52:27,670 --> 00:52:28,850 E poi restituire 0. 1287 00:52:28,850 --> 00:52:30,980 Per ora limitiamoci a prendere questo tipo di uno su fede 1288 00:52:30,980 --> 00:52:34,460 oggi, e solo sapere che quando le funzioni sono fatte in esecuzione 1289 00:52:34,460 --> 00:52:37,950 righe di codice, dovrebbero generalmente restituire un valore. 1290 00:52:37,950 --> 00:52:42,010 In questo caso, solo perché principale deve restituire un int, 1291 00:52:42,010 --> 00:52:44,320 questo è solo il modo in cui il linguaggio C funziona. 1292 00:52:44,320 --> 00:52:47,040 >> Quindi, perché niente è andato storto, si sente come il programma di questo 1293 00:52:47,040 --> 00:52:49,960 bene, ho solo difficile codificato in cambio 0. 1294 00:52:49,960 --> 00:52:52,980 Ma, al contrario, e ho intenzione di scrivere questo in pseudo codice 1295 00:52:52,980 --> 00:52:55,020 Ora, proprio come fece Giuseppe quando abbiamo fatto il calzino 1296 00:52:55,020 --> 00:52:56,220 esempio la settimana scorsa. 1297 00:52:56,220 --> 00:53:00,440 Se qualcosa è andato storto - non si tratta di codice vero e proprio - è andato 1298 00:53:00,440 --> 00:53:06,570 sbagliato, per poi tornare, diciamo, 1. 1299 00:53:06,570 --> 00:53:08,770 Else return 0. 1300 00:53:08,770 --> 00:53:10,070 Quindi questo è dove stiamo andando con questo. 1301 00:53:10,070 --> 00:53:12,090 Questo non è vero codice C, solo pseudocodice. 1302 00:53:12,090 --> 00:53:14,010 Ma questo è come si potrebbe tornare 1303 00:53:14,010 --> 00:53:15,580 diversi valori possibili. 1304 00:53:15,580 --> 00:53:19,520 Ma per ora sto solo intenzione di andare avanti e restituire 0. 1305 00:53:19,520 --> 00:53:24,410 Va bene, tutte le domande finora sulla sintassi, funzionalità, 1306 00:53:24,410 --> 00:53:25,000 o simili? 1307 00:53:25,000 --> 00:53:26,280 Sì, sul retro. 1308 00:53:26,280 --> 00:53:27,530 >> PUBBLICO: [incomprensibile] 1309 00:53:30,510 --> 00:53:32,210 DAVID MALAN: Si può parlare un po 'più forte? 1310 00:53:32,210 --> 00:53:34,325 Perché questo 0 ritorno del programma, e? 1311 00:53:34,325 --> 00:53:35,575 PUBBLICO: [incomprensibile] 1312 00:53:39,910 --> 00:53:43,450 DAVID MALAN: Oh, questo è perché ho avuto pigro, mi dispiace. 1313 00:53:43,450 --> 00:53:48,290 Nessuna buona risposta accademica, restituisce 0. 1314 00:53:48,290 --> 00:53:52,690 Sono in grado di salvare questo tipo, dicendo tecnicamente C, se principale 1315 00:53:52,690 --> 00:53:55,900 non ritornano esplicitamente un valore, 0 verrà restituito 1316 00:53:55,900 --> 00:53:57,730 automaticamente per voi. 1317 00:53:57,730 --> 00:54:00,290 Il che è vero, non sto solo coprire. 1318 00:54:00,290 --> 00:54:03,270 Ma, ho dovuto farlo in questo modo. 1319 00:54:03,270 --> 00:54:05,250 No asporto interessante di quello altro che il mio errore. 1320 00:54:05,250 --> 00:54:06,170 Si '? 1321 00:54:06,170 --> 00:54:08,470 >> PUBBLICO: Di solito quando si digita nel vuoto, che significa 1322 00:54:08,470 --> 00:54:10,770 non restituire qualcosa. 1323 00:54:10,770 --> 00:54:11,420 DAVID MALAN: Corretto. 1324 00:54:11,420 --> 00:54:15,800 Se invece, si specifica prima del nome di una funzione, per 1325 00:54:15,800 --> 00:54:18,590 esempio qui, nulla, allora la funzione 1326 00:54:18,590 --> 00:54:20,480 non restituisce nulla. 1327 00:54:20,480 --> 00:54:25,210 E quindi vorrei solo dire, di ritorno o niente del tutto, 1328 00:54:25,210 --> 00:54:26,730 e che sarebbe coerente. 1329 00:54:26,730 --> 00:54:27,750 E torneremo a questo. 1330 00:54:27,750 --> 00:54:31,030 E proprio per tua informazione, una delle catture con l'apprendimento 1331 00:54:31,030 --> 00:54:33,450 programmazione in un mondo che ha centinaia di libri e 1332 00:54:33,450 --> 00:54:36,180 centinaia di siti web là fuori è che sarà sempre 1333 00:54:36,180 --> 00:54:38,220 vedi la sintassi diversa in diversi libri 1334 00:54:38,220 --> 00:54:40,220 da persone diverse. 1335 00:54:40,220 --> 00:54:42,100 Realizzare faremo del nostro meglio nelle sezioni e conferenze per essere 1336 00:54:42,100 --> 00:54:42,960 coerente. 1337 00:54:42,960 --> 00:54:46,660 Ma a volte si vedrà la sintassi in conflitto. 1338 00:54:46,660 --> 00:54:48,540 Quindi, in caso di dubbio, basta chiedere. 1339 00:54:48,540 --> 00:54:51,100 E in generale, noi ci occuperemo in lezioni e sezioni a 1340 00:54:51,100 --> 00:54:53,710 quasi sempre presenti nel modo giusto. 1341 00:54:53,710 --> 00:54:56,070 E io dico quasi sempre, perché caso in questione. 1342 00:54:56,070 --> 00:54:56,860 Altre domande? 1343 00:54:56,860 --> 00:55:01,590 >> PUBBLICO: E '% s esistono al di fuori l'apparecchio? 1344 00:55:01,590 --> 00:55:03,710 DAVID MALAN: Does% s esistono al di fuori della macchina? 1345 00:55:03,710 --> 00:55:04,180 Sì. 1346 00:55:04,180 --> 00:55:07,760 Così% s ha a che fare con C. Il fatto che stiamo usando in 1347 00:55:07,760 --> 00:55:10,290 l'apparecchio ha sostanzialmente nulla a che fare con l' 1348 00:55:10,290 --> 00:55:12,080 caratteristiche del linguaggio che stiamo usando. 1349 00:55:12,080 --> 00:55:15,990 Infatti, la settimana scorsa quando abbiamo usato il mio Mac, ho scritto 1350 00:55:15,990 --> 00:55:17,160 Codice C sul mio Mac. 1351 00:55:17,160 --> 00:55:20,020 Avrei potuto utilizzare% s sul mio Mac, e si potrebbe utilizzare su 1352 00:55:20,020 --> 00:55:22,400 computer Windows se si installa un compilatore, come 1353 00:55:22,400 --> 00:55:24,070 Visual Studio di Microsoft. 1354 00:55:24,070 --> 00:55:24,990 Così% s. 1355 00:55:24,990 --> 00:55:27,860 Tutto quello che stiamo facendo all'interno di questa finestra oggi deve 1356 00:55:27,860 --> 00:55:31,140 che fare con niente C. E fondamentalmente a che fare con la 1357 00:55:31,140 --> 00:55:33,450 sistema operativo in questione. 1358 00:55:33,450 --> 00:55:35,900 Per contro, la finestra di terminale bianco e nero - quando 1359 00:55:35,900 --> 00:55:40,160 Sto scrivendo cose come ls e rm, e cd - 1360 00:55:40,160 --> 00:55:42,020 che ha a che fare con il sistema operativo e 1361 00:55:42,020 --> 00:55:43,562 navigazione intorno. 1362 00:55:43,562 --> 00:55:44,546 Gia '. 1363 00:55:44,546 --> 00:55:46,520 PUBBLICO: Volevo dire la biblioteca, il CS50 biblioteca. 1364 00:55:46,520 --> 00:55:49,960 DAVID MALAN: Okay, quindi se si intende la stringa di parole chiave, che 1365 00:55:49,960 --> 00:55:52,460 esiste solo nella libreria CS50, corretto. 1366 00:55:52,460 --> 00:55:55,350 Che non esiste in C stesso, e anzi in un paio 1367 00:55:55,350 --> 00:55:58,220 di settimane ci buttare via la libreria CS50 e iniziare 1368 00:55:58,220 --> 00:56:02,290 fare le cose da zero noi stessi, per così dire. 1369 00:56:02,290 --> 00:56:02,940 Altre domande? 1370 00:56:02,940 --> 00:56:04,577 Gia '. 1371 00:56:04,577 --> 00:56:05,827 >> PUBBLICO: [incomprensibile] 1372 00:56:09,470 --> 00:56:10,160 DAVID MALAN: Bella domanda. 1373 00:56:10,160 --> 00:56:11,720 È il caso dei comandi sensibile? 1374 00:56:11,720 --> 00:56:13,710 E lasciatemi fare una distinzione. 1375 00:56:13,710 --> 00:56:15,840 Così i comandi sono in genere le cose che andranno a scrivere al 1376 00:56:15,840 --> 00:56:17,940 inferiore della finestra, nella finestra del terminale. 1377 00:56:17,940 --> 00:56:21,770 Tutto qui sarebbe dichiarazioni o codice C. 1378 00:56:21,770 --> 00:56:24,490 Ma in entrambi i casi, la risposta è la stessa, sì. 1379 00:56:24,490 --> 00:56:27,800 Entrambi questi ambienti, il codice C in alto e la 1380 00:56:27,800 --> 00:56:29,910 operativo a riga di comando del sistema al 1381 00:56:29,910 --> 00:56:31,440 fondo, sono case sensitive. 1382 00:56:31,440 --> 00:56:33,830 Quindi è necessario capitalizzare GetString con la maiuscola, 1383 00:56:33,830 --> 00:56:37,050 capitale S. È necessario scrivere printf in tutto minuscolo. 1384 00:56:37,050 --> 00:56:39,520 È necessario digitare ls in tutto minuscolo. 1385 00:56:39,520 --> 00:56:43,260 Quindi, in quasi ogni situazione questo, caso semestre volontà, in 1386 00:56:43,260 --> 00:56:44,820 Infatti, la materia. 1387 00:56:44,820 --> 00:56:46,148 Sì. 1388 00:56:46,148 --> 00:56:47,398 >> PUBBLICO: [incomprensibile] 1389 00:56:54,770 --> 00:56:56,480 DAVID MALAN: Ah, così va bene, se avessimo un file 1390 00:56:56,480 --> 00:56:57,840 chiamato hello.d. 1391 00:56:57,840 --> 00:57:00,090 Così si scopre D è un linguaggio di programmazione. 1392 00:57:00,090 --> 00:57:02,790 E così, in alcuni casi, si potrebbe effettivamente scrivere un programma in 1393 00:57:02,790 --> 00:57:06,190 il file e lo hanno compilato in quel modo. 1394 00:57:06,190 --> 00:57:09,090 Possiamo, e in realtà, la risposta breve è, non lo so. 1395 00:57:09,090 --> 00:57:10,440 Quindi stiamo andando a fare questo. 1396 00:57:10,440 --> 00:57:13,040 Lasciatemi andare avanti e creare un nuovo file. 1397 00:57:13,040 --> 00:57:15,580 E la rotazione qui, onestamente, in generale, ogni volta che è alcun dubbio 1398 00:57:15,580 --> 00:57:18,130 questo semestre, e avete il vostro apparecchio o il computer 1399 00:57:18,130 --> 00:57:20,030 aprire, andare avanti e provare qualcosa. 1400 00:57:20,030 --> 00:57:23,740 Quindi ho intenzione di salvare un file chiamato hello.d. 1401 00:57:23,740 --> 00:57:25,010 Salva questo. 1402 00:57:25,010 --> 00:57:29,070 E ho intenzione di eseguire make ciao Invio. 1403 00:57:29,070 --> 00:57:31,660 Sembrava dedurre che c era più probabile 1404 00:57:31,660 --> 00:57:35,920 di d, in questo caso. 1405 00:57:35,920 --> 00:57:38,046 Altre domande. 1406 00:57:38,046 --> 00:57:40,456 Gia '. 1407 00:57:40,456 --> 00:57:41,706 >> PUBBLICO: [incomprensibile] 1408 00:57:48,170 --> 00:57:49,837 DAVID MALAN: Ok, diciamo che una volta di più. 1409 00:57:49,837 --> 00:57:51,087 PUBBLICO: [incomprensibile] 1410 00:58:04,250 --> 00:58:05,780 DAVID MALAN: Come si va sulla diagnosi o che 1411 00:58:05,780 --> 00:58:06,380 risoluzione dei problemi che? 1412 00:58:06,380 --> 00:58:08,800 Quindi molto probabilmente, perché sono diverse lingue, 1413 00:58:08,800 --> 00:58:10,280 molto probabilmente si otterrebbe un ambiente completamente 1414 00:58:10,280 --> 00:58:11,580 programma diverso emesso. 1415 00:58:11,580 --> 00:58:14,140 Si potrebbe ottenere messaggi di errore completamente differenti. 1416 00:58:14,140 --> 00:58:16,750 E anche solo in termini di design, sarebbe probabilmente un 1417 00:58:16,750 --> 00:58:19,140 progettazione decisione sbagliata di scrivere due diversi 1418 00:58:19,140 --> 00:58:21,510 lingue con i file con lo stesso nome, quasi a 1419 00:58:21,510 --> 00:58:23,000 la directory esattamente lo stesso, utilizzando un 1420 00:58:23,000 --> 00:58:24,550 strumento automatico come fare. 1421 00:58:24,550 --> 00:58:27,750 Quindi posso anche spingere indietro e dire: in 15 anni di fare questo, 1422 00:58:27,750 --> 00:58:29,190 mai fatto questo errore. 1423 00:58:29,190 --> 00:58:30,030 Potrebbe accadere. 1424 00:58:30,030 --> 00:58:31,190 Ma c'è solo diversi, credo, 1425 00:58:31,190 --> 00:58:33,180 difese logistiche in atto. 1426 00:58:33,180 --> 00:58:35,440 Inoltre i messaggi di errore che ne deriverebbero, che avrebbe 1427 00:58:35,440 --> 00:58:37,260 alla fine rivelano qual è il problema. 1428 00:58:37,260 --> 00:58:39,120 Ma un caso d'angolo possibile. 1429 00:58:39,120 --> 00:58:41,730 >> Va bene, quindi cerchiamo di introdurre solo un paio di altri 1430 00:58:41,730 --> 00:58:45,600 caratteristiche qui ora, in modo da poter iniziare a costruire in più 1431 00:58:45,600 --> 00:58:47,140 e più complesso programma. 1432 00:58:47,140 --> 00:58:49,000 Quindi prima di tutto, la matematica. 1433 00:58:49,000 --> 00:58:51,520 Quindi, esempi di matematica sono solo tipo di facile nella prima settimana. 1434 00:58:51,520 --> 00:58:53,560 Questo non significa che tutta la programmazione è circa 1435 00:58:53,560 --> 00:58:54,390 matematica. 1436 00:58:54,390 --> 00:58:57,890 Certo, la comprensione varie caratteristiche di 1437 00:58:57,890 --> 00:58:59,610 matematica, algebra, in particolare, è 1438 00:58:59,610 --> 00:59:00,330 piuttosto rilevante qui. 1439 00:59:00,330 --> 00:59:03,010 Nelle classi di livello superiore CS, algebra lineare, 1440 00:59:03,010 --> 00:59:03,920 calcolo, e simili. 1441 00:59:03,920 --> 00:59:06,500 Ma rendersi conto la maggior parte di quello che faremo in questo semestre non riduce 1442 00:59:06,500 --> 00:59:09,230 per la matematica, e non certo per l'aritmetica, di per sé, ma in realtà 1443 00:59:09,230 --> 00:59:11,570 a poco logica e al pensiero attento. 1444 00:59:11,570 --> 00:59:14,310 E così questo legame che l'informatica ha avuto per lungo tempo, 1445 00:59:14,310 --> 00:59:16,570 soprattutto a livello di scuola superiore, con la matematica, è un 1446 00:59:16,570 --> 00:59:17,370 po 'fuorviante. 1447 00:59:17,370 --> 00:59:20,090 Poiché la maggior parte dei programmi che si andranno a scrivere, in realtà, sono 1448 00:59:20,090 --> 00:59:23,290 sorta di livello superiore e di attenzione per risolvere i problemi che, 1449 00:59:23,290 --> 00:59:26,410 sicuro, potrebbe utilizzare alcuni addizione, sottrazione, e varie 1450 00:59:26,410 --> 00:59:28,650 formule matematiche o simili, 1451 00:59:28,650 --> 00:59:30,860 ma alla fine della giornata, si tratta di considerare e non 1452 00:59:30,860 --> 00:59:33,240 solo attuare quello che avrebbe potuto fare su come un TI 1453 00:59:33,240 --> 00:59:35,050 calcolatrice al liceo. 1454 00:59:35,050 --> 00:59:38,410 >> Quindi, con questo detto, andiamo ora fare qualcosa con questi 1455 00:59:38,410 --> 00:59:40,980 operatori matematici che esistono in modo che possiamo viaggio 1456 00:59:40,980 --> 00:59:43,950 su alcuni degli aspetti fondamentali di programmazione, o in 1457 00:59:43,950 --> 00:59:48,930 questo caso C. Così ci sono, come il CS50 biblioteca suggerito, 1458 00:59:48,930 --> 00:59:51,520 e oggi stiamo utilizzando solo GetString - e in un momento 1459 00:59:51,520 --> 00:59:52,940 forse una altra funzione - 1460 00:59:52,940 --> 00:59:55,380 ma ci sono diversi tipi di dati in un computer. 1461 00:59:55,380 --> 00:59:58,550 Alla fine della giornata, computer sa solo 0 e 1. 1462 00:59:58,550 --> 01:00:01,880 Ma ricordo che la settimana scorsa abbiamo parlato del sistema binario 1463 01:00:01,880 --> 01:00:05,000 nel rappresentare i numeri, come il numero 0 e 1, e 2, 1464 01:00:05,000 --> 01:00:07,480 tutta la strada su un massimo di 8, come nel video di Nate. 1465 01:00:07,480 --> 01:00:08,840 E poi possiamo contare molto più alto come noi 1466 01:00:08,840 --> 01:00:10,000 ha fatto sul palco qui. 1467 01:00:10,000 --> 01:00:15,660 Ma se si vuole rappresentare non solo numeri, ma le lettere, 1468 01:00:15,660 --> 01:00:18,240 noi, gli umani, devono venire con un po 'arbitraria 1469 01:00:18,240 --> 01:00:21,180 convenzioni, per cui se alla fine della giornata tutto il computer 1470 01:00:21,180 --> 01:00:24,260 ha la capacità di esprimere 0 e 1, e faremmo meglio 1471 01:00:24,260 --> 01:00:27,990 avviare standardizzazione modelli di 0 e 1 che rappresentano 1472 01:00:27,990 --> 01:00:28,800 cose diverse. 1473 01:00:28,800 --> 01:00:32,370 Un modello di 0 e 1 che rappresenta la lettera a. 1474 01:00:32,370 --> 01:00:34,840 Modelli di 0 e 1 che rappresentano la lettera z. 1475 01:00:34,840 --> 01:00:37,600 Modelli di 0 e 1 che rappresentano il colore blu, o 1476 01:00:37,600 --> 01:00:38,600 rosso, o simili. 1477 01:00:38,600 --> 01:00:42,360 Abbiamo bisogno di usare tutti questi 0 e 1 di esprimersi in 1478 01:00:42,360 --> 01:00:45,140 contesti diversi, in modi diversi che non sono 1479 01:00:45,140 --> 01:00:46,470 necessariamente numerico. 1480 01:00:46,470 --> 01:00:51,150 >> Quindi, in termini di rappresentanza, C ha diversi tipi di dati, 1481 01:00:51,150 --> 01:00:52,550 e abbiamo visto uno di questi finora. 1482 01:00:52,550 --> 01:00:54,940 Abbiamo visto int, e notare ciò che non è sullo schermo 1483 01:00:54,940 --> 01:00:56,140 in questo momento è una stringa. 1484 01:00:56,140 --> 01:00:58,550 Stringa non, infatti, esistono in C. Anche in questo caso, è un 1485 01:00:58,550 --> 01:01:00,610 semplificazione che stiamo presentando per la prima 1486 01:01:00,610 --> 01:01:01,570 paio di settimane. 1487 01:01:01,570 --> 01:01:03,770 Un carattere è un carattere individuale. 1488 01:01:03,770 --> 01:01:07,050 Un galleggiante è un numero reale, con un punto decimale e numeri a 1489 01:01:07,050 --> 01:01:09,066 la sinistra e la destra. 1490 01:01:09,066 --> 01:01:16,040 Un doppio è quello che, per quelli con sfondo indietro prima? 1491 01:01:16,040 --> 01:01:19,720 Quindi una doppia è il doppio qualcosa. 1492 01:01:19,720 --> 01:01:21,240 Aggiunge il doppio di molta precisione. 1493 01:01:21,240 --> 01:01:22,440 Che cosa significa questo? 1494 01:01:22,440 --> 01:01:26,090 Quindi, in ciascuno di questi casi, il mondo ha sorta di standardizzato 1495 01:01:26,090 --> 01:01:27,960 quanti bit sono utilizzati per rappresentare 1496 01:01:27,960 --> 01:01:29,160 ognuna di queste cose. 1497 01:01:29,160 --> 01:01:31,590 Quindi, se hai guardato il video ASCII Nate già per la parte 1498 01:01:31,590 --> 01:01:36,170 di pset 0, o fine di questa settimana si, probabilmente conoscerete 1499 01:01:36,170 --> 01:01:37,450 che ASCII - 1500 01:01:37,450 --> 01:01:38,610 rappresentazioni di carattere - 1501 01:01:38,610 --> 01:01:40,670 utilizzare quantità di bit? 1502 01:01:40,670 --> 01:01:43,410 E si potrebbe anche ricordare dalla nostra demo la settimana scorsa di come 1503 01:01:43,410 --> 01:01:45,500 molte persone erano sul palco. 1504 01:01:45,500 --> 01:01:46,840 Così 7 o 8, in genere. 1505 01:01:46,840 --> 01:01:49,230 Quindi in generale 8, e c'è qualcosa che si chiama, già prorogato 1506 01:01:49,230 --> 01:01:51,240 ASCII che usa tutti gli 8 bit, invece di 7. 1507 01:01:51,240 --> 01:01:54,710 Ma, in generale, si parla in potenze di 2, in questo caso, 8. 1508 01:01:54,710 --> 01:01:58,900 Quindi, un char in un linguaggio di programmazione di solito è 8 bit. 1509 01:01:58,900 --> 01:02:02,550 Quindi un int è in genere 32 bit. 1510 01:02:02,550 --> 01:02:04,810 Un galleggiante è generalmente 32 bit. 1511 01:02:04,810 --> 01:02:08,060 Un doppio è generalmente di 64 bit. 1512 01:02:08,060 --> 01:02:08,870 E che cosa vuol dire? 1513 01:02:08,870 --> 01:02:11,500 Significa che è possibile rappresentare numeri più grandi, o, nel caso 1514 01:02:11,500 --> 01:02:15,490 dei numeri reali, si può avere numeri molto di più dopo la 1515 01:02:15,490 --> 01:02:16,240 decimale. 1516 01:02:16,240 --> 01:02:18,980 Una precisione molto di più, in questo caso. 1517 01:02:18,980 --> 01:02:21,780 Ora un lungo lungo purtroppo nome. 1518 01:02:21,780 --> 01:02:24,340 Quindi c'è un int, che è di 32 bit. 1519 01:02:24,340 --> 01:02:29,800 C'è una lunga che è, nope, 32 bit. 1520 01:02:29,800 --> 01:02:32,610 E un lungo lungo, che è a 64 bit. 1521 01:02:32,610 --> 01:02:34,830 Tuttavia alcuni di questi sono sensibili al contesto, ma dipende 1522 01:02:34,830 --> 01:02:36,190 che tipo di computer che avete. 1523 01:02:36,190 --> 01:02:40,510 Quindi, in generale, ci specificare in un lavoro o in un quiz in cui 1524 01:02:40,510 --> 01:02:41,180 è importante in realtà. 1525 01:02:41,180 --> 01:02:43,080 Ma il punto è che c'è tutto di queste diverse 1526 01:02:43,080 --> 01:02:44,250 rappresentazioni qui. 1527 01:02:44,250 --> 01:02:45,950 >> Quindi cerchiamo di immergersi in realtà un programma. 1528 01:02:45,950 --> 01:02:48,300 Invece di scrivere questo uno da zero, lasciami andare avanti 1529 01:02:48,300 --> 01:02:50,940 e di aprire da codice sorgente di oggi - che è 1530 01:02:50,940 --> 01:02:54,980 in linea - se si vuole armeggiare intorno in linea, o ritorno 1531 01:02:54,980 --> 01:02:57,120 Mercoledì con l'apparecchio sul proprio computer, le istruzioni 1532 01:02:57,120 --> 01:02:59,160 per che collegherà sul sito del corso. 1533 01:02:59,160 --> 01:03:00,830 Ecco un programma super semplice. 1534 01:03:00,830 --> 01:03:02,520 Ma che ha un po 'di qualcosa nuovo in alto che 1535 01:03:02,520 --> 01:03:03,650 non abbiamo avuto prima. 1536 01:03:03,650 --> 01:03:05,800 Un sacco di linee blu di testo. 1537 01:03:05,800 --> 01:03:08,410 Così queste linee blu rappresentano commenti. 1538 01:03:08,410 --> 01:03:10,620 Quindi è molto utile in un programma per poter scrivere 1539 01:03:10,620 --> 01:03:13,160 alcuni commenti a te stesso, o ai colleghi, o amici, o 1540 01:03:13,160 --> 01:03:15,700 compagni di insegnamento, quella sorta di descrivere quello che sta succedendo in 1541 01:03:15,700 --> 01:03:18,500 questo file, ma non hanno nulla a che fare con il codice C stesso. 1542 01:03:18,500 --> 01:03:20,860 Niente a che vedere con il programma funzionale, è solo 1543 01:03:20,860 --> 01:03:21,760 estetica. 1544 01:03:21,760 --> 01:03:24,580 Quindi, il modo di fare questo in C è in genere si avvia il 1545 01:03:24,580 --> 01:03:29,860 commenti con / *, e si finisce con i tuoi commenti 1546 01:03:29,860 --> 01:03:31,270 * /. 1547 01:03:31,270 --> 01:03:34,140 E se sei davvero anale e, come per disegnare una sorta di immagini, 1548 01:03:34,140 --> 01:03:35,870 allora si sarebbe messo un bel po 'di stelle, che saresti un 1549 01:03:35,870 --> 01:03:36,970 piccola scatola in questo modo. 1550 01:03:36,970 --> 01:03:37,990 Ma niente di tutto ciò che conta. 1551 01:03:37,990 --> 01:03:40,230 L'unica cosa che conta è la prima 1552 01:03:40,230 --> 01:03:41,620 e l'ultimo. 1553 01:03:41,620 --> 01:03:43,820 Questo è ciò che si chiama un multi-riga di commento. 1554 01:03:43,820 --> 01:03:46,610 Ed è proprio convenzione umana di fare spesso le stelle e la scatola 1555 01:03:46,610 --> 01:03:48,420 le cose in questo modo se si hanno un sacco di tempo libero. 1556 01:03:48,420 --> 01:03:51,550 >> Così, dopo che hai scritto in alcuni commenti, in genere, vengono 1557 01:03:51,550 --> 01:03:53,160 il coraggio effettivi del programma. 1558 01:03:53,160 --> 01:03:55,630 Ecco la nostra familiarità # include. 1559 01:03:55,630 --> 01:04:00,410 E proprio veloce, è necessario o non è necessario? 1560 01:04:00,410 --> 01:04:02,860 PUBBLICO: Necessario. 1561 01:04:02,860 --> 01:04:04,390 DAVID MALAN: Quindi in realtà non è necessario. 1562 01:04:04,390 --> 01:04:07,070 Perché, però, non è necessario? 1563 01:04:07,070 --> 01:04:08,170 Quindi non c'è printf. 1564 01:04:08,170 --> 01:04:08,510 Infatti. 1565 01:04:08,510 --> 01:04:10,470 Tutto quello che stiamo facendo in questo programma è la matematica. 1566 01:04:10,470 --> 01:04:11,640 Quindi può effettivamente eliminare tale. 1567 01:04:11,640 --> 01:04:14,330 Quindi non è sempre necessario includere qualsiasi cosa, a 1568 01:04:14,330 --> 01:04:15,420 la parte superiore di un programma. 1569 01:04:15,420 --> 01:04:17,020 >> Quindi cerchiamo di semplificare un po '. 1570 01:04:17,020 --> 01:04:18,650 E ora notare ciò che fa questo programma. 1571 01:04:18,650 --> 01:04:19,920 Non molto di interesse. 1572 01:04:19,920 --> 01:04:21,410 int x = 1. 1573 01:04:21,410 --> 01:04:22,550 Beh, che cosa è questo facendo? 1574 01:04:22,550 --> 01:04:25,130 Beh, ripensare al modello mentale di prima. 1575 01:04:25,130 --> 01:04:27,500 Il lato sinistro di questa espressione fa cosa? 1576 01:04:31,440 --> 01:04:32,830 Creare spazio per un numero intero. 1577 01:04:32,830 --> 01:04:33,930 Così come lo spazio? 1578 01:04:33,930 --> 01:04:36,980 Beh, ci capita di sapere ora che è a 32 bit. 1579 01:04:36,980 --> 01:04:40,070 Precedentemente, una stringa era tecnicamente 32 bit, ma più 1580 01:04:40,070 --> 01:04:40,950 il che in futuro. 1581 01:04:40,950 --> 01:04:42,240 Ma un int è di 32 bit. 1582 01:04:42,240 --> 01:04:45,590 Quindi questa espressione a sinistra qui, int x dice solo hey 1583 01:04:45,590 --> 01:04:48,490 sistema operativo, dammi 32 bit di RAM - 1584 01:04:48,490 --> 01:04:50,450 altrimenti noto come 4 byte di RAM - 1585 01:04:50,450 --> 01:04:53,930 in modo che posso mettere un numero intero in quello spazio. 1586 01:04:53,930 --> 01:04:55,330 Cosa intero volevi mettere? 1587 01:04:55,330 --> 01:04:56,640 Beh, solo il numero 1. 1588 01:04:56,640 --> 01:04:59,530 int y ottiene 2, fa la stessa cosa, anche se il 1589 01:04:59,530 --> 01:05:02,160 numero è più grande, in termini di grandezza. 1590 01:05:02,160 --> 01:05:04,790 Lo stesso numero è ancora solo 32 bit. 1591 01:05:04,790 --> 01:05:06,520 E 'solo il modello di bit è diverso da 1592 01:05:06,520 --> 01:05:08,260 rappresentano 1 contro 2. 1593 01:05:08,260 --> 01:05:11,980 int z ora dice di darmi un altro 32 bit, lo chiamano z, e mettere il 1594 01:05:11,980 --> 01:05:14,210 somma di 1 e 2 in là. 1595 01:05:14,210 --> 01:05:18,050 Così che ora z è presumibilmente memorizzare il valore 3, 1596 01:05:18,050 --> 01:05:19,360 e quindi restituire 0. 1597 01:05:19,360 --> 01:05:23,020 >> Ora questo programma, lo fa qualcosa di interessante? 1598 01:05:23,020 --> 01:05:26,170 Quindi in realtà non fa niente di interessante, in ogni 1599 01:05:26,170 --> 01:05:28,450 senso, perché perché? Si sta facendo un po 'di matematica. 1600 01:05:28,450 --> 01:05:30,590 Ma non è di ritorno la risposta, giusta. 1601 01:05:30,590 --> 01:05:31,790 È restituendo 0. 1602 01:05:31,790 --> 01:05:33,440 Non è la stampa della risposta. 1603 01:05:33,440 --> 01:05:35,760 Quindi questo programma è fondamentalmente inutile, in quanto 1604 01:05:35,760 --> 01:05:36,350 attuale. 1605 01:05:36,350 --> 01:05:37,220 Si sta facendo un po 'di lavoro. 1606 01:05:37,220 --> 01:05:39,530 Sta andando a prendere un certo numero di secondi, o microsecondi, per 1607 01:05:39,530 --> 01:05:41,510 correre, ma non è in realtà facendo nulla 1608 01:05:41,510 --> 01:05:42,770 utile per l'uomo. 1609 01:05:42,770 --> 01:05:46,810 >> Quindi cerchiamo di realtà ora aprire math2, dove ora sono realtà 1610 01:05:46,810 --> 01:05:48,250 stampare il risultato. 1611 01:05:48,250 --> 01:05:51,260 Quindi, anche questo può essere dedotto dai nostri esempi precedenti. 1612 01:05:51,260 --> 01:05:54,320 Se voglio fare un po 'di matematica semplici, int x = 1, y 1613 01:05:54,320 --> 01:05:56,820 = 2. z è 1 più 2 ora. 1614 01:05:56,820 --> 01:05:59,240 Che cosa è questo andare a stampare, ovviamente? 1615 01:05:59,240 --> 01:06:00,120 Solo 3. 1616 01:06:00,120 --> 01:06:01,590 Così la sanità mentale rapido check. 1617 01:06:01,590 --> 01:06:03,830 Vorrei entrare in questa directory. 1618 01:06:03,830 --> 01:06:06,480 Così cd source1m. 1619 01:06:06,480 --> 01:06:09,370 Lasciatemi andare avanti e digitare make math2. 1620 01:06:09,370 --> 01:06:11,510 Nessun messaggio di errore è venuto fuori, per cui vorrei correre - 1621 01:06:11,510 --> 01:06:14,800 non a.out-lasciatemi correre math2. Invio. 1622 01:06:14,800 --> 01:06:16,750 E in effetti, stampato 3. 1623 01:06:16,750 --> 01:06:18,460 Bene, diamo un'occhiata a una variante di questo. 1624 01:06:18,460 --> 01:06:23,870 In math3.c, ora abbiamo questo esempio qui. 1625 01:06:23,870 --> 01:06:26,540 >> Quindi questo e 'piuttosto interessante. 1626 01:06:26,540 --> 01:06:32,000 Quindi, in questa qui, la risposta sta per arrivare 1 diviso per 10, 1627 01:06:32,000 --> 01:06:33,910 e notare che ho dichiarato come float. 1628 01:06:33,910 --> 01:06:35,200 Perché voglio che sia un galleggiante? 1629 01:06:35,200 --> 01:06:36,110 Beh, è ​​una frazione. 1630 01:06:36,110 --> 01:06:37,140 E 'intenzione di essere un numero reale. 1631 01:06:37,140 --> 01:06:40,970 Quindi sarà 0.1, si spera - 10%, in questo caso. 1632 01:06:40,970 --> 01:06:42,610 E che cosa ho poi desidera stampare? 1633 01:06:42,610 --> 01:06:43,440 Ebbene, questa risposta. 1634 01:06:43,440 --> 01:06:44,760 Bene, vediamo di prendere in giro questi a parte per primo. 1635 01:06:44,760 --> 01:06:47,020 Quindi, sulla sinistra, dichiarare una 1636 01:06:47,020 --> 01:06:49,410 galleggiante, lo chiamano rispondere. 1637 01:06:49,410 --> 01:06:52,280 Sul lato destro, si 1 diviso 10 e che mettere 1638 01:06:52,280 --> 01:06:54,370 rispondere all'interno della variabile. 1639 01:06:54,370 --> 01:06:56,410 Ora, questa linea sembra un po 'più criptico. 1640 01:06:56,410 --> 01:06:59,440 Ma notate alcune caratteristiche familiari. % Significa ecco che arriva un 1641 01:06:59,440 --> 01:07:00,490 segnaposto. 1642 01:07:00,490 --> 01:07:03,230 f qui significa un valore a virgola mobile, solo un vero e proprio 1643 01:07:03,230 --> 01:07:05,490 numero, qualcosa con un punto decimale. 1644 01:07:05,490 --> 01:07:07,330 0,2 cosa significa? 1645 01:07:07,330 --> 01:07:10,740 Qualcuno sa per esperienza precedente? 1646 01:07:10,740 --> 01:07:12,010 Due cifre decimali. 1647 01:07:12,010 --> 01:07:14,050 Quindi non abbiamo visto prima, ma è solo un modo di 1648 01:07:14,050 --> 01:07:16,360 esercitare un maggiore controllo sulla printf e 1649 01:07:16,360 --> 01:07:20,840 detto non mi dai 30 punti dopo la virgola, 1650 01:07:20,840 --> 01:07:22,490 invece mi danno solo 2. 1651 01:07:22,490 --> 01:07:23,960 >> E allora andiamo avanti ed eseguire questo. 1652 01:07:23,960 --> 01:07:30,160 Quindi, fare matematica 3, e ora lasciami correre matematica 3, Invio. 1653 01:07:30,160 --> 01:07:34,630 E questo non è giusto. 1654 01:07:34,630 --> 01:07:37,390 Sembra che abbiamo incontrato il nostro primo bug vero e proprio. 1655 01:07:37,390 --> 01:07:39,400 Beh, forse sto solo cercando non abbastanza vicino. 1656 01:07:39,400 --> 01:07:41,960 Quindi lasciami andare qui, e mi permetta di mettere 20 decimale 1657 01:07:41,960 --> 01:07:43,300 luoghi punto lì. 1658 01:07:43,300 --> 01:07:47,950 E fammi compilare questo, fare math3, correre. 1659 01:07:47,950 --> 01:07:50,960 Abbastanza sicuro 1 diviso per 10 non è 0. 1660 01:07:50,960 --> 01:07:54,270 Allora, cosa sta succedendo? 1661 01:07:54,270 --> 01:07:56,740 Bene bene, quindi in realtà non ha a che fare con questo. 1662 01:07:56,740 --> 01:07:57,600 Questo è un buon pensiero. 1663 01:07:57,600 --> 01:07:59,140 Questo è in realtà solo una coincidenza 1664 01:07:59,140 --> 01:08:00,220 che stiamo facendo questo. 1665 01:08:00,220 --> 01:08:02,010 Ma solo per dimostrare che questo non è vero, io 1666 01:08:02,010 --> 01:08:03,160 restituire qualcosa di casuale. 1667 01:08:03,160 --> 01:08:05,160 Non fare questo a casa, perché è semplicemente sbagliato. 1668 01:08:05,160 --> 01:08:08,000 Ma non fare math3, fammi correre. 1669 01:08:08,000 --> 01:08:10,690 Così ha nulla a che fare con quello che sto tornando, ha solo a che fare 1670 01:08:10,690 --> 01:08:11,940 con quello che sto stampando. 1671 01:08:11,940 --> 01:08:14,150 Ma l'ho sentito qui. 1672 01:08:14,150 --> 01:08:15,270 Cosa? 1673 01:08:15,270 --> 01:08:17,524 PUBBLICO: Quindi abbiamo bisogno di scrivere i numeri in 1674 01:08:17,524 --> 01:08:19,680 la divisione come - 1675 01:08:19,680 --> 01:08:20,319 >> DAVID MALAN: Ok buona. 1676 01:08:20,319 --> 01:08:22,810 Quindi abbiamo bisogno di scrivere i numeri che partecipano al 1677 01:08:22,810 --> 01:08:25,979 qui come divisione in virgola mobile stessi valori. 1678 01:08:25,979 --> 01:08:29,359 Quindi il problema è qui come prima: C, come con molte 1679 01:08:29,359 --> 01:08:31,819 lingue, ha diversi tipi di dati. 1680 01:08:31,819 --> 01:08:34,600 E quei tipi di dati, per esempio, sono questi qui. 1681 01:08:34,600 --> 01:08:37,430 E i tipi di dati in questione qui, quando si digita 1 e poi ho 1682 01:08:37,430 --> 01:08:40,870 tipo 10, sono probabilmente ciò che i tipi di dati? 1683 01:08:40,870 --> 01:08:42,170 Quindi è probabilmente un int, giusto? 1684 01:08:42,170 --> 01:08:44,149 Non è sicuramente un galleggiante perché non c'è decimale 1685 01:08:44,149 --> 01:08:45,460 punto o qualcosa di simile. 1686 01:08:45,460 --> 01:08:48,270 Quindi, veramente, ho un int diviso per un int. 1687 01:08:48,270 --> 01:08:52,160 >> Quindi la cosa interessante di matematica e un computer è che 1688 01:08:52,160 --> 01:08:54,840 se si sta facendo la divisione con numeri interi - 1689 01:08:54,840 --> 01:08:57,310 1 diviso 10, è sì 0,1. 1690 01:08:57,310 --> 01:09:01,420 Tuttavia, quando si sta dividendo un numero intero da un numero intero, il 1691 01:09:01,420 --> 01:09:06,859 risposta deve essere anche un numero intero solo perché, per ora. 1692 01:09:06,859 --> 01:09:08,630 E qual è l'implicazione, allora? 1693 01:09:08,630 --> 01:09:13,640 Ebbene, se la risposta è 1 diviso 10 uguale 0,1, ciò 1694 01:09:13,640 --> 01:09:15,680 il computer è intenzione di fare è non ho idea di come 1695 01:09:15,680 --> 01:09:19,270 rappresentano 0.1, perché questo è un valore a virgola mobile, non un 1696 01:09:19,270 --> 01:09:21,910 intero, sta andando a tagliare via tutto dopo la 1697 01:09:21,910 --> 01:09:27,470 punto decimale e per te mostrare il 0 all'inizio. 1698 01:09:27,470 --> 01:09:29,540 E il fatto che è la stampa a virgola mobile 1699 01:09:29,540 --> 01:09:31,200 valore, è solo una cosa estetica. 1700 01:09:31,200 --> 01:09:34,279 Questo perché sto forzando il computer per stampare questo come un 1701 01:09:34,279 --> 01:09:35,229 valore in virgola mobile. 1702 01:09:35,229 --> 01:09:37,720 E in effetti l'ho dichiarato come float, ma la matematica è 1703 01:09:37,720 --> 01:09:39,010 succedendo qui. 1704 01:09:39,010 --> 01:09:41,859 >> Quindi lasciatemi effettivamente risolvere questo problema in un modo abbastanza facile. 1705 01:09:41,859 --> 01:09:45,250 Perché non basta fare 10.0 e 1.0, anche se 1706 01:09:45,250 --> 01:09:47,609 tecnicamente avrei potuto farla franca solo facendo uno di quelli. 1707 01:09:47,609 --> 01:09:50,630 Ora lasciatemi andare avanti e fare math3. 1708 01:09:50,630 --> 01:09:56,350 Lasciatemi andare avanti e ora gestita math3, Invio. 1709 01:09:56,350 --> 01:09:57,500 E ora, oh ragazzo. 1710 01:09:57,500 --> 01:10:00,050 Ora abbiamo un nuovo problema del tutto. 1711 01:10:00,050 --> 01:10:05,600 Quindi meglio, a destra, siamo più vicini a 0,1, ma ciò che è chiaramente 1712 01:10:05,600 --> 01:10:06,240 sbagliato qui? 1713 01:10:06,240 --> 01:10:08,260 A meno che non ci è stato mentito per anni, giusto? 1714 01:10:08,260 --> 01:10:13,660 1 diviso per 10 è in realtà non è proprio 0.1, così che cosa è 1715 01:10:13,660 --> 01:10:14,700 davvero sta succedendo qui? 1716 01:10:14,700 --> 01:10:16,420 Ebbene si può tipo di ragione in questa logica. 1717 01:10:16,420 --> 01:10:19,200 Se un computer ha soltanto una quantità limitata di RAM per iniziare 1718 01:10:19,200 --> 01:10:23,530 con, e in effetti un solo computer utilizza 32 bit per un 1719 01:10:23,530 --> 01:10:26,200 valore in virgola mobile, è ovvio che con un 1720 01:10:26,200 --> 01:10:29,870 numero finito di bit, 32 in questo caso, sì, è possibile 1721 01:10:29,870 --> 01:10:31,050 rappresentano un sacco di roba. 1722 01:10:31,050 --> 01:10:33,220 In realtà è 4000000000 diversi valori possono essere 1723 01:10:33,220 --> 01:10:38,040 rappresentato con 32 bit, da 2 a 32, ma è ancora finita. 1724 01:10:38,040 --> 01:10:40,730 Quindi il problema è che c'è un numero infinito di reale 1725 01:10:40,730 --> 01:10:41,370 numeri, a destra. 1726 01:10:41,370 --> 01:10:43,560 Se mi dai un numero reale, posso sempre trovare uno 1727 01:10:43,560 --> 01:10:46,080 leggermente più grande, un po 'meno, semplicemente modificando il 1728 01:10:46,080 --> 01:10:47,970 numeri che sono dopo il punto decimale. 1729 01:10:47,970 --> 01:10:50,870 Quindi, se non si dispone di un numero infinito di bit, è 1730 01:10:50,870 --> 01:10:52,940 non può assolutamente rappresentare un infinito 1731 01:10:52,940 --> 01:10:54,800 numero di numeri reali. 1732 01:10:54,800 --> 01:10:58,090 >> Quindi c'è questa imprecisione inerente al computer, e 1733 01:10:58,090 --> 01:11:00,930 questo viene inciampò per tutto il tempo, anche nel più semplice dei 1734 01:11:00,930 --> 01:11:02,260 programmi come questo. 1735 01:11:02,260 --> 01:11:05,640 Ma anche in alcuni problemi del mondo reale e anche molto. 1736 01:11:05,640 --> 01:11:07,790 Infatti, prendiamo un momento per prendere solo uno sguardo 1737 01:11:07,790 --> 01:11:09,530 qualcosa che è realmente accaduto nella realtà. 1738 01:11:09,530 --> 01:11:11,620 Guarderemo solo il primo paio di minuti, e poi 1739 01:11:11,620 --> 01:11:13,270 postiamo online link. 1740 01:11:13,270 --> 01:11:16,700 Ma questa è la prova solo ciò che può andare storto, piuttosto 1741 01:11:16,700 --> 01:11:19,680 onestamente, in modo molto tragico quando queste cose non sono 1742 01:11:19,680 --> 01:11:23,870 apprezzato o solo noi esseri umani commettono errori quando si tratta di 1743 01:11:23,870 --> 01:11:26,792 questi tipi di dettagli di implementazione dei computer moderni. 1744 01:11:26,792 --> 01:11:27,284 >> [GIOCO VIDEO] 1745 01:11:27,284 --> 01:11:30,730 -Torniamo ora ai disastri di ingegneria su Modern Marvels. 1746 01:11:30,730 --> 01:11:32,200 Computer. 1747 01:11:32,200 --> 01:11:34,920 Abbiamo tutti giunti ad accettare i problemi, spesso frustranti 1748 01:11:34,920 --> 01:11:36,750 che vanno con loro. 1749 01:11:36,750 --> 01:11:40,690 Bugs, virus e problemi software sono piccoli prezzi per 1750 01:11:40,690 --> 01:11:42,550 pagare per la comodità. 1751 01:11:42,550 --> 01:11:45,170 Ma ad alta velocità militare tech e high e lo spazio 1752 01:11:45,170 --> 01:11:48,450 programmazione di applicazioni, il più piccolo problema può essere 1753 01:11:48,450 --> 01:11:52,220 ingrandita nel disastro. 1754 01:11:52,220 --> 01:11:56,780 Il 4 giugno 1996, gli scienziati pronti a lanciare un aereo telecomandato 1755 01:11:56,780 --> 01:11:58,430 Razzo Ariane 5. 1756 01:11:58,430 --> 01:12:00,750 Si portava satelliti scientifici di 1757 01:12:00,750 --> 01:12:03,580 stabilire con precisione come il campo magnetico terrestre 1758 01:12:03,580 --> 01:12:06,900 interagisce con il vento solare. 1759 01:12:06,900 --> 01:12:10,330 Il razzo è stato costruito per l'Agenzia spaziale europea e 1760 01:12:10,330 --> 01:12:13,450 si è staccato dal suo impianto, sulla costa della Guiana francese. 1761 01:12:13,450 --> 01:12:16,970 >> -A circa circa 37 secondi dall'inizio del volo, in primo luogo 1762 01:12:16,970 --> 01:12:19,700 notato qualcosa che non andava, che gli ugelli sono 1763 01:12:19,700 --> 01:12:21,590 orientabile in un modo che davvero non dovrebbero. 1764 01:12:21,590 --> 01:12:25,020 Circa 40 secondi dall'inizio del volo, chiaramente il veicolo 1765 01:12:25,020 --> 01:12:27,340 era in difficoltà, e che quando hanno preso la decisione di 1766 01:12:27,340 --> 01:12:28,136 distruggerla. 1767 01:12:28,136 --> 01:12:31,450 Un ufficiale di sicurezza gamma con coraggio enorme pressione del 1768 01:12:31,450 --> 01:12:34,160 pulsante, fatto saltare in aria il razzo prima che potesse diventare un 1769 01:12:34,160 --> 01:12:37,470 pericolo per la sicurezza pubblica. 1770 01:12:37,470 --> 01:12:40,750 >> -Questo è stato il viaggio inaugurale di Ariane 5, e la sua 1771 01:12:40,750 --> 01:12:43,990 distruzione ha avuto luogo a causa di un difetto incorporato nel 1772 01:12:43,990 --> 01:12:45,480 software razzo. 1773 01:12:45,480 --> 01:12:47,660 >> -Il problema del Ariane era che c'era un numero che 1774 01:12:47,660 --> 01:12:51,245 richiede 64 bit per esprimere e volevano convertirlo 1775 01:12:51,245 --> 01:12:53,010 un numero a 16 bit. 1776 01:12:53,010 --> 01:12:54,900 Si presume che il numero non è mai stato 1777 01:12:54,900 --> 01:12:56,280 Sarà molto grande, 1778 01:12:56,280 --> 01:12:59,920 che la maggior parte di queste cifre del numero a 64 bit erano 0s. 1779 01:12:59,920 --> 01:13:01,860 Ma si sbagliavano. 1780 01:13:01,860 --> 01:13:04,550 >> -L'incapacità di un programma software per accettare la 1781 01:13:04,550 --> 01:13:07,730 tipo di numero generato da un altro era alla radice di 1782 01:13:07,730 --> 01:13:08,930 il guasto. 1783 01:13:08,930 --> 01:13:11,490 Lo sviluppo del software era diventato una parte molto costosa 1784 01:13:11,490 --> 01:13:13,280 nuova tecnologia. 1785 01:13:13,280 --> 01:13:16,530 Il razzo Ariane 4 aveva avuto molto successo. 1786 01:13:16,530 --> 01:13:19,100 Così la maggior parte del software creato per esso è stato utilizzato anche 1787 01:13:19,100 --> 01:13:21,050 nel Ariane 5. 1788 01:13:21,050 --> 01:13:25,530 >> -Il problema di fondo era che l'Ariane 5 è stato più veloce, 1789 01:13:25,530 --> 01:13:27,280 accelerato velocemente. 1790 01:13:27,280 --> 01:13:30,590 E il software non ha rappresentato per questo. 1791 01:13:30,590 --> 01:13:33,060 >> -La distruzione del razzo è stato un enorme finanziaria 1792 01:13:33,060 --> 01:13:37,670 disastro, tutto a causa di un errore software minuto. 1793 01:13:37,670 --> 01:13:40,750 Ma non era la prima volta che i problemi di conversione dei dati ha 1794 01:13:40,750 --> 01:13:43,680 afflitto moderna tecnologia missilistica. 1795 01:13:43,680 --> 01:13:44,390 >> DAVID MALAN: Lasceremo a questo. 1796 01:13:44,390 --> 01:13:46,870 Ma questo è prova di quanto applicabile anche alcuni dei 1797 01:13:46,870 --> 01:13:48,750 questi dettagli di livello più basso che abbiamo cominciato a 1798 01:13:48,750 --> 01:13:50,040 esplorare oggi sono. 1799 01:13:50,040 --> 01:13:52,510 Quindi, anche come si ottiene un po 'distratto, forse da alcuni dei 1800 01:13:52,510 --> 01:13:55,240 la sintassi e arcaneness qui, si rende conto che nel corso del 1801 01:13:55,240 --> 01:13:57,690 termine saremo concentrati solo da come applicabile è quello di 1802 01:13:57,690 --> 01:13:59,530 mondi che vanno ben oltre CS. 1803 01:13:59,530 --> 01:14:00,780 Ci vediamo il Mercoledì.