1 00:00:00,000 --> 00:00:02,742 >> [RIPRODUZIONE DI BRANI MUSICALI] 2 00:00:02,742 --> 00:00:05,030 3 00:00:05,030 --> 00:00:09,090 >> ANDI PENG: Questo è CS50, e benvenuto a seconda settimana di sezione. 4 00:00:09,090 --> 00:00:11,740 Questo è in realtà durante la settimana due dei nostri class-- realtà, 5 00:00:11,740 --> 00:00:14,550 la prima settimana abbiamo avuto sezione. 6 00:00:14,550 --> 00:00:18,897 Alzata di mano, quanti di voi tutto è venuto a sezione eccellente la scorsa settimana? 7 00:00:18,897 --> 00:00:19,480 Ok, va bene. 8 00:00:19,480 --> 00:00:20,020 Va bene. 9 00:00:20,020 --> 00:00:23,110 Quanti di voi visto eccellente sezione la scorsa settimana? 10 00:00:23,110 --> 00:00:23,610 OK. 11 00:00:23,610 --> 00:00:25,702 E voi ragazzi hanno fatto bene il problema impostare uno? 12 00:00:25,702 --> 00:00:28,660 Quindi ho intenzione di prenderlo che abbiamo un gruppo di ragazzi veramente intelligenti 13 00:00:28,660 --> 00:00:32,310 in questa classe e le cose andranno bene. 14 00:00:32,310 --> 00:00:33,180 OK. 15 00:00:33,180 --> 00:00:33,980 Così first-- 16 00:00:33,980 --> 00:00:37,900 17 00:00:37,900 --> 00:00:41,090 >> In primo luogo, stiamo solo andando a breve andare oltre l'agenda per oggi. 18 00:00:41,090 --> 00:00:42,700 Parleremo di logistica del corso. 19 00:00:42,700 --> 00:00:45,480 Molti di voi probabilmente domande riguardanti 20 00:00:45,480 --> 00:00:46,920 come le cose funzionare in questo corso. 21 00:00:46,920 --> 00:00:47,897 Ti rispondo. 22 00:00:47,897 --> 00:00:49,730 Stiamo andando a breve andare oltre loop in caso 23 00:00:49,730 --> 00:00:51,410 qualcuno di voi perdere sezione eccellente. 24 00:00:51,410 --> 00:00:53,240 Parleremo di mappatura ASCII. 25 00:00:53,240 --> 00:00:56,180 Parleremo di array, funzioni, argomenti della riga di comando. 26 00:00:56,180 --> 00:01:00,210 E infine, che cosa voi ragazzi probabilmente tutti molta voglia di essere qui per conoscere, 27 00:01:00,210 --> 00:01:01,270 è il vostro PSet2. 28 00:01:01,270 --> 00:01:04,209 Avremo alcuni trucchi belle e suggerimenti su come farlo. 29 00:01:04,209 --> 00:01:07,910 30 00:01:07,910 --> 00:01:08,690 >> OK. 31 00:01:08,690 --> 00:01:11,450 Inoltre, in secondo luogo, abbiamo un sacco di caramelle qui. 32 00:01:11,450 --> 00:01:13,583 Chi ama la caramella, solo venire qui. 33 00:01:13,583 --> 00:01:14,430 Prendete un po '. 34 00:01:14,430 --> 00:01:15,100 Ho un sacco. 35 00:01:15,100 --> 00:01:16,390 Abbiamo un sacco in ufficio. 36 00:01:16,390 --> 00:01:18,230 Non mi voglio a mangiare caramelle per tutto il giorno. 37 00:01:18,230 --> 00:01:20,300 Voi ragazzi dovreste mangiare tutte le caramelle, perché ho portato qui per voi ragazzi. 38 00:01:20,300 --> 00:01:20,990 Basta mangiare caramelle. 39 00:01:20,990 --> 00:01:24,080 Ci saranno caramelle ogni sezione. 40 00:01:24,080 --> 00:01:25,330 >> Quindi, prima, chi sono io? 41 00:01:25,330 --> 00:01:27,080 Il mio nome è Andi Peng. 42 00:01:27,080 --> 00:01:30,270 Io sono il capo di TA CS50 qui a Yale. 43 00:01:30,270 --> 00:01:32,540 E oltre a che, farò anche essere-- 44 00:01:32,540 --> 00:01:35,600 se qualcuno like-- vostra corsa amico, la vostra spalla su cui piangere. 45 00:01:35,600 --> 00:01:39,140 Se la sera prima a causa del vostro pset, non avete idea di cosa sta succedendo, 46 00:01:39,140 --> 00:01:40,080 hit me up. 47 00:01:40,080 --> 00:01:42,770 Ti commiserate insieme, eccetera. 48 00:01:42,770 --> 00:01:46,100 Sappi solo che io sono qui come risorsa per voi come la linea del fronte 49 00:01:46,100 --> 00:01:51,830 per aiutare i ragazzi a capire come per risolvere i problemi in CS50 e oltre. 50 00:01:51,830 --> 00:01:54,590 >> La mia email è andi.peng@yale.edu. 51 00:01:54,590 --> 00:01:58,390 Ti mando fuori un individuo e-mail con il mio numero di telefono in esso 52 00:01:58,390 --> 00:02:01,860 in modo che non tutti sulla Internet può vedere il mio numero di telefono. 53 00:02:01,860 --> 00:02:03,640 Non esitate a chiamarmi in qualsiasi momento. 54 00:02:03,640 --> 00:02:07,510 Scherzi a parte, il mio telefono è solitamente attaccato alla mia mano. 55 00:02:07,510 --> 00:02:10,240 Non posso rispondere entro un paio di minuti. 56 00:02:10,240 --> 00:02:11,984 Non posso rispondere entro un paio d'ore. 57 00:02:11,984 --> 00:02:14,400 Ma vi posso assicurare che, se mi e-mail, se mi chiami, 58 00:02:14,400 --> 00:02:17,404 testo me, risponderò entro 24 ore. 59 00:02:17,404 --> 00:02:19,820 Spesso, io rispondo prima che, perché capisco 60 00:02:19,820 --> 00:02:23,900 che tutti si ha qualche problema, e volete che i vostri risposte 61 00:02:23,900 --> 00:02:26,110 essere risolta molto rapidamente. 62 00:02:26,110 --> 00:02:28,945 >> Tuttavia, se si chiama me 30 minuti prima 63 00:02:28,945 --> 00:02:31,570 quel pezzo che è dovuto Giovedi notte-- essere come, Andi, aiutami, 64 00:02:31,570 --> 00:02:35,380 Non ho started-- posso dare che spalla su cui piangere. 65 00:02:35,380 --> 00:02:41,520 Ma potrebbe essere il momento di pensare a come non fare che la prossima volta. 66 00:02:41,520 --> 00:02:44,040 OK. 67 00:02:44,040 --> 00:02:44,944 Oops. 68 00:02:44,944 --> 00:02:45,850 Come faccio a tornare indietro? 69 00:02:45,850 --> 00:02:48,140 Ci siamo. 70 00:02:48,140 --> 00:02:52,310 >> Quindi, in questo corso, abbiamo un tonnellata di sostegno per tutti. 71 00:02:52,310 --> 00:02:54,640 Oltre a solo sezioni qui, che si 72 00:02:54,640 --> 00:02:57,000 ogni settimana arriva a spendere 90 meravigliose minuti con me, 73 00:02:57,000 --> 00:02:58,330 abbiamo anche l'orario di ufficio. 74 00:02:58,330 --> 00:03:01,021 Quanti di voi ragazzi hanno già stato per l'orario di ufficio per un aiuto? 75 00:03:01,021 --> 00:03:01,520 Grande. 76 00:03:01,520 --> 00:03:05,700 Questo è davvero bello vedere, perché noi avere uno staff di oltre 45 agenzie di viaggi e CA 77 00:03:05,700 --> 00:03:11,780 addestrati per questo corso che sono qui per aiutare voi con i vostri ragazzi pset. 78 00:03:11,780 --> 00:03:14,580 >> Lunedì stanno tenute nel TEAL aula in 17 Hill House qui 79 00:03:14,580 --> 00:03:15,350 a Yale. 80 00:03:15,350 --> 00:03:17,349 Martedì e giovedì, stanno tenuto in comuni. 81 00:03:17,349 --> 00:03:20,010 8:00-11:00 praticamente ogni giorno della settimana. 82 00:03:20,010 --> 00:03:21,620 Venite, venite fuori. 83 00:03:21,620 --> 00:03:24,030 Tutto il problema, non problem-- appena arrivato in, 84 00:03:24,030 --> 00:03:26,650 e poi vi aiuteremo fuori con questo. 85 00:03:26,650 --> 00:03:31,640 >> In secondo luogo, oltre a orario d'ufficio e le sezioni, abbiamo anche pantaloncini. 86 00:03:31,640 --> 00:03:35,930 Qualcuno ha mai visto un paio di pantaloncini o procedure dettagliate nei video 87 00:03:35,930 --> 00:03:36,750 sul sito web? 88 00:03:36,750 --> 00:03:37,250 OK. 89 00:03:37,250 --> 00:03:39,510 Quindi sono molto, molto utile. 90 00:03:39,510 --> 00:03:42,470 La nostra bella produzione di Harvard squadra laggiù in quella scuola 91 00:03:42,470 --> 00:03:47,910 a nord, che hanno girato e prodotto questi video walkthrough incredibili. 92 00:03:47,910 --> 00:03:52,290 >> Ti porteranno passo dopo passo attraverso come fare per risolvere un problema. 93 00:03:52,290 --> 00:03:56,340 Spesso, se siete confusi su un concetto semplice, un concetto singolare, 94 00:03:56,340 --> 00:03:59,780 dare un'occhiata, perché probabilmente abbiamo una breve su di esso da qualche parte sul nostro sito web. 95 00:03:59,780 --> 00:04:03,800 Ed è di solito una grande risorsa cercare quando si è prima 96 00:04:03,800 --> 00:04:06,510 perso su come gestire un problema. 97 00:04:06,510 --> 00:04:09,750 >> In terzo luogo, abbiamo anche study50 e reference50. 98 00:04:09,750 --> 00:04:15,650 Quindi studiare 50 sulla sito web è solo un link. 99 00:04:15,650 --> 00:04:21,500 E ', credo, study.cs50.net o qualcosa di simile. 100 00:04:21,500 --> 00:04:22,860 Basta google. 101 00:04:22,860 --> 00:04:24,229 Abbiamo un sacco di vetrini preparati. 102 00:04:24,229 --> 00:04:26,770 Abbiamo un sacco di pantaloncini e cose walkthroughs-- tutto compilato 103 00:04:26,770 --> 00:04:31,070 molto bello e pulito per voi ragazzi tutti per sfogliare, vedere qualsiasi concetto 104 00:04:31,070 --> 00:04:32,860 che siete confusi su. 105 00:04:32,860 --> 00:04:35,920 Sarebbe probabilmente coperto laggiù in study50. 106 00:04:35,920 --> 00:04:37,640 >> Reference50-- simile. 107 00:04:37,640 --> 00:04:41,510 Abbiamo un sacco di varie note prontamente disponibili per vostra disposizione. 108 00:04:41,510 --> 00:04:44,450 E, infine, abbiamo ciò che è chiamato CS50 Discutere, 109 00:04:44,450 --> 00:04:48,082 un forum in cui, se la sera prima si sta facendo i vostri problemi, diciamo, 110 00:04:48,082 --> 00:04:49,880 avete una domanda. 111 00:04:49,880 --> 00:04:52,340 Accedi al CS50 discutere. 112 00:04:52,340 --> 00:04:53,190 Poni la tua domanda. 113 00:04:53,190 --> 00:04:55,820 E poi uno dei hundreds-- forse, thousands-- di coetanei 114 00:04:55,820 --> 00:04:57,960 prendere questa classe on-line sarà il login. 115 00:04:57,960 --> 00:05:01,182 E forse qualcuno può ottenere la tua risposta prima di una lattina TA. 116 00:05:01,182 --> 00:05:03,390 E 'essenzialmente solo un forum on-line che tutti noi possiamo 117 00:05:03,390 --> 00:05:04,556 utilizzare per discutere i nostri problemi. 118 00:05:04,556 --> 00:05:06,483 Figo. 119 00:05:06,483 --> 00:05:10,660 120 00:05:10,660 --> 00:05:11,550 >> OK. 121 00:05:11,550 --> 00:05:13,220 Così problema imposta. 122 00:05:13,220 --> 00:05:17,840 Stiamo proprio nel denso di problema impostare due. 123 00:05:17,840 --> 00:05:20,570 Molti di noi hanno già lottato attraverso problema dell'insieme uno. 124 00:05:20,570 --> 00:05:24,460 Sappiamo già che forse in attesa per l'ultima notte per fare il vostro pset 125 00:05:24,460 --> 00:05:28,170 non è la cosa più intelligente da fare in CS50. 126 00:05:28,170 --> 00:05:32,380 >> Consigli e suggerimenti essenzialmente per successo vengono letti tutta la spec. 127 00:05:32,380 --> 00:05:36,270 Quanti di voi hanno già Leggere le specifiche per pset 2? 128 00:05:36,270 --> 00:05:36,770 OK. 129 00:05:36,770 --> 00:05:39,840 Questa è una quantità solido. 130 00:05:39,840 --> 00:05:43,210 So che voi ragazzi avete probabilmente riconosciuto ormai le specifiche sono davvero lunga. 131 00:05:43,210 --> 00:05:45,700 Sono molto, molto lungo. 132 00:05:45,700 --> 00:05:49,630 >> E 'davvero difficile da leggere ogni riga di quella parola con cura per parola. 133 00:05:49,630 --> 00:05:52,780 Si desidera scremare solo a dove si dice di fare qualcosa. 134 00:05:52,780 --> 00:05:54,459 Vi posso garantire, non farlo. 135 00:05:54,459 --> 00:05:56,750 Se lo fai, probabilmente siete andando a perdere in qualche luogo 136 00:05:56,750 --> 00:05:58,458 dove ti dice come avviare un problema 137 00:05:58,458 --> 00:06:01,140 o ci dice che cosa a nome il vostro problema o ti dice, 138 00:06:01,140 --> 00:06:03,720 questo è probabilmente il modo migliore per iniziare a fare il vostro problema. 139 00:06:03,720 --> 00:06:05,050 E allora ti perderai. 140 00:06:05,050 --> 00:06:08,219 >> Quando si tenta di leggere il tuo spec a metà, 141 00:06:08,219 --> 00:06:10,510 molto dell'importante informazioni inclusi in quanto non si è 142 00:06:10,510 --> 00:06:12,260 sarà in grado di realmente accesso. 143 00:06:12,260 --> 00:06:13,219 Quindi, leggere l'intera specifica. 144 00:06:13,219 --> 00:06:15,468 Provate a leggere l'intera specifica prima di arrivare al punto, 145 00:06:15,468 --> 00:06:17,360 perché poi, quando si parlare del pset, 146 00:06:17,360 --> 00:06:21,070 tutto ciò che possiamo avere un'idea di quello che sta succedendo. 147 00:06:21,070 --> 00:06:25,169 >> In secondo luogo, questo è un concetto che mi piace fare riferimento 148 00:06:25,169 --> 00:06:26,710 un sacco per tutto il semestre corso. 149 00:06:26,710 --> 00:06:30,070 Ma in sostanza, noi incontrare a metà strada, giusto? 150 00:06:30,070 --> 00:06:33,970 Me, come vostro AT e Jason come corso manager e SCAZ come tuo professore 151 00:06:33,970 --> 00:06:37,120 e David come il vostro professore e tutti le altre agenzie di belle in questo corso, 152 00:06:37,120 --> 00:06:39,830 assistenti in questo naturalmente-- faremo del nostro meglio 153 00:06:39,830 --> 00:06:42,965 per garantire che si sono fissati fino a riuscire in questo corso. 154 00:06:42,965 --> 00:06:43,840 Noi terremo sezione. 155 00:06:43,840 --> 00:06:44,870 Noi terremo le ore di ufficio. 156 00:06:44,870 --> 00:06:47,087 Risponderemo il vostro telefono chiamate, rispondere alle vostre e-mail, 157 00:06:47,087 --> 00:06:49,670 fare tutto il possibile per rendere che le domande trovano risposta. 158 00:06:49,670 --> 00:06:51,460 >> Tuttavia, ci aiuti troppo. 159 00:06:51,460 --> 00:06:52,450 Vieni a trovarci a metà strada. 160 00:06:52,450 --> 00:06:56,040 Se vieni a orario d'ufficio Non essendo andato alla sezione, non 161 00:06:56,040 --> 00:07:02,060 dopo aver visto le lezioni, non avendo idea di cosa sta succedendo, come, aiutami. 162 00:07:02,060 --> 00:07:04,350 Ho intenzione di essere come, beh, mi dispiace. 163 00:07:04,350 --> 00:07:06,410 Potrebbe essere il momento di prestare che spalla su cui piangere, 164 00:07:06,410 --> 00:07:08,959 perché io non sono sicuro cosa posso fare per aiutarti 165 00:07:08,959 --> 00:07:12,000 se non si tenta almeno di aiuto Fatevi un po 'all'inizio. 166 00:07:12,000 --> 00:07:12,910 Vieni a trovarci a metà strada. 167 00:07:12,910 --> 00:07:15,020 Sai, ti aspettiamo preparato a rispondere e ottenere 168 00:07:15,020 --> 00:07:16,353 pronto ad impegnarsi nel materiale. 169 00:07:16,353 --> 00:07:19,342 Rende le cose molto più più facile per tutti gli interessati. 170 00:07:19,342 --> 00:07:22,970 Sì, è praticamente. 171 00:07:22,970 --> 00:07:23,720 >> Grading. 172 00:07:23,720 --> 00:07:29,250 Così il programma, è piuttosto in profondità per quanto riguarda il modo in cui grado. 173 00:07:29,250 --> 00:07:32,440 Ma in sostanza, la ripartizione in questo è il 50% del vostro grado 174 00:07:32,440 --> 00:07:34,530 saranno i pset, che è bello, perché è 175 00:07:34,530 --> 00:07:37,400 dove si sta spendendo il vasto maggior parte del vostro tempo in corso. 176 00:07:37,400 --> 00:07:39,854 Quiz 40%, e la vostra progetto finale sarà del 10%. 177 00:07:39,854 --> 00:07:42,520 Ci saranno due quiz tutto il corso del semestre. 178 00:07:42,520 --> 00:07:47,050 Penso che i tempi e le date sono anche quotata al programma. 179 00:07:47,050 --> 00:07:49,210 >> Il modo in cui ci sarà essere classificazione tuoi pset 180 00:07:49,210 --> 00:07:53,930 è che abbiamo essenzialmente quattro valori che assegniamo ad ogni grado. 181 00:07:53,930 --> 00:07:57,250 Abbiamo un valore di portata, correttezza, il design e lo stile. 182 00:07:57,250 --> 00:08:01,530 Quindi, come vedete, questo è il nostro tipo di formula per il calcolo pset. 183 00:08:01,530 --> 00:08:03,640 Tre diamo il più peso alla correttezza, 184 00:08:03,640 --> 00:08:06,140 perché ovviamente il vostro allenatore dovrebbe essere il test per i casi 185 00:08:06,140 --> 00:08:08,480 che vogliamo che prova per. 186 00:08:08,480 --> 00:08:11,000 >> Voi tutti avete check50 a vostra disposizione. 187 00:08:11,000 --> 00:08:13,730 Si tratta di una funzione molto utile che voi ragazzi possono tutti 188 00:08:13,730 --> 00:08:17,560 caricare il tuo codice ai nostri server, dove noi lo controllerà per voi. 189 00:08:17,560 --> 00:08:20,800 E hai visto quelli volti frowny, smile. 190 00:08:20,800 --> 00:08:22,119 Sono molto, molto utile. 191 00:08:22,119 --> 00:08:23,910 Si prega di non essere il studente che come tentativi 192 00:08:23,910 --> 00:08:26,230 a hardcode in tutte le risposte. 193 00:08:26,230 --> 00:08:30,050 Ho sicuramente visto un pset dove qualcuno ha visto tutti i valori di check50 194 00:08:30,050 --> 00:08:33,429 e hanno appena duro codificate dentro-- se questo numero, stampare questo numero. 195 00:08:33,429 --> 00:08:35,080 Se quel numero, stampare quel numero. 196 00:08:35,080 --> 00:08:36,090 Non farlo. 197 00:08:36,090 --> 00:08:39,360 >> Anche se tecnicamente check50 è corretta, 198 00:08:39,360 --> 00:08:41,809 il vostro modo di risolvere il problema non è corretto. 199 00:08:41,809 --> 00:08:45,770 Quindi basta usare check50 parsimonia. 200 00:08:45,770 --> 00:08:48,497 Ma anche fare in modo che si capire come è funzionante, 201 00:08:48,497 --> 00:08:50,580 il programma funziona in aggiunta a check50, 202 00:08:50,580 --> 00:08:53,120 perché non possiamo verificare ogni possibile caso di check50. 203 00:08:53,120 --> 00:08:55,440 Saremo testando alcuni di loro. 204 00:08:55,440 --> 00:09:00,390 >> Il design è essenzialmente, come ben progettato è il codice? 205 00:09:00,390 --> 00:09:04,150 Se siete copia-incolla multipla linee di codice molte, molte volte. 206 00:09:04,150 --> 00:09:06,960 Forse non avete abbastanza il miglior design nel codice. 207 00:09:06,960 --> 00:09:09,470 Forse è il momento di aggiungere quel ciclo. 208 00:09:09,470 --> 00:09:12,090 In sostanza, qui è solo tutto di cercare di fare il vostro codice, 209 00:09:12,090 --> 00:09:17,010 cercando di scrivere il codice nel modo più efficiente possibile in modo che il programma viene eseguito 210 00:09:17,010 --> 00:09:19,630 il più rapidamente possibile. 211 00:09:19,630 --> 00:09:20,996 >> Infine, abbiamo stile. 212 00:09:20,996 --> 00:09:24,360 Quindi stile è una specie di arbitrario, termine soggettivo. 213 00:09:24,360 --> 00:09:27,470 So che abbiamo ufficialmente una guida di stile 50 per CS50, 214 00:09:27,470 --> 00:09:30,050 dove ti dice, oh, dovrebbe avere uno spazio qui. 215 00:09:30,050 --> 00:09:32,220 Si dovrebbe tipo di formato il codice in questo modo. 216 00:09:32,220 --> 00:09:34,070 Si dovrebbe chiamare le cose in questo modo. 217 00:09:34,070 --> 00:09:38,180 >> Io non mi interessa, di per sé, come si sceglie per lo stile del codice, 218 00:09:38,180 --> 00:09:39,840 basta che si rimanere coerenti. 219 00:09:39,840 --> 00:09:43,732 Ad esempio, se vi piace lasciare uno spazio dopo il tuo quattro 220 00:09:43,732 --> 00:09:45,690 prima della quattro loop, solo farlo ogni volta. 221 00:09:45,690 --> 00:09:46,523 Non tipo di farlo. 222 00:09:46,523 --> 00:09:47,730 Non farlo altre volte. 223 00:09:47,730 --> 00:09:51,046 Se ti piace tenere ricci bretelle spazio in un certo modo, 224 00:09:51,046 --> 00:09:52,170 basta sempre farlo in quel modo. 225 00:09:52,170 --> 00:09:54,628 Non genere di farlo da qualche parte qui da qualche parte e non c'è. 226 00:09:54,628 --> 00:09:57,010 Quando siamo classificazione, è veramente difficile 227 00:09:57,010 --> 00:09:59,420 se non ho idea di come si sta formattando il codice, 228 00:09:59,420 --> 00:10:02,064 le cose sono stravaganti e fuori luogo. 229 00:10:02,064 --> 00:10:04,980 Se hai appena tenerlo coerente, è molto più facile per me come il maggiore 230 00:10:04,980 --> 00:10:06,310 per essere in grado di leggere il codice. 231 00:10:06,310 --> 00:10:09,393 E 'molto più facile per voi come uno studente essere in grado di guardare attraverso il codice 232 00:10:09,393 --> 00:10:11,720 e vedere che cosa c'è di sbagliato con essa taglio su perché c'è problemi. 233 00:10:11,720 --> 00:10:15,740 Lo stile è una delle cose più facili voi potete fare per ottenere punteggio pieno. 234 00:10:15,740 --> 00:10:18,770 In sostanza, se si interessa, se si paga cinque minuti di attenzione 235 00:10:18,770 --> 00:10:22,760 al codice ogni settimana, si dovrebbe essere sempre punti di stile completi. 236 00:10:22,760 --> 00:10:26,020 >> Infine, abbiamo quello che si chiama il moltiplicatore di portata. 237 00:10:26,020 --> 00:10:28,890 Scope-- So che è un grande parola, particolarmente in questa classe. 238 00:10:28,890 --> 00:10:31,030 Ma la portata, tutto ciò che i mezzi è che si sta tentando 239 00:10:31,030 --> 00:10:33,670 i pset al meglio delle tue capacità. 240 00:10:33,670 --> 00:10:37,180 Se si attiva in tre dei vostri quattro problemi 241 00:10:37,180 --> 00:10:39,460 e non hanno nemmeno tentare l' ultimo, probabilmente siete 242 00:10:39,460 --> 00:10:41,630 andando a perdere alcuni punti sulla portata. 243 00:10:41,630 --> 00:10:44,560 >> Anche se si può lanciare il problema, fate del vostro meglio per camminare attraverso di essa. 244 00:10:44,560 --> 00:10:47,691 Anche se non funziona, trasformarlo in, perché mostra e dimostra 245 00:10:47,691 --> 00:10:50,190 a noi che si sta cercando, che si è tentato il problema set 246 00:10:50,190 --> 00:10:51,430 al meglio delle vostre capacità. 247 00:10:51,430 --> 00:10:53,800 E allora possiamo darvi punteggio pieno per portata. 248 00:10:53,800 --> 00:10:58,715 >> Scope è anche molto importante per quando parlare il più basso punteggio pset goccia. 249 00:10:58,715 --> 00:11:02,010 Così, nel corso della semestre, voi ragazzi hanno nove pset. 250 00:11:02,010 --> 00:11:05,340 E noi in realtà essere caduta il punteggio più basso tra quelli nove, 251 00:11:05,340 --> 00:11:07,670 ma solo se si dispone di punti di ambito completi. 252 00:11:07,670 --> 00:11:11,120 >> Quindi, se si gira in un pset incompleta, purtroppo, non possiamo abbandonare quella, 253 00:11:11,120 --> 00:11:13,540 perché il vostro campo di applicazione punti non sono stati completati. 254 00:11:13,540 --> 00:11:16,570 Quindi, anche se avete la settimana terribile dove si sta morendo e tu sei malato 255 00:11:16,570 --> 00:11:20,040 o il vostro cane muore, il vostro gatto muore, e il gioco è sovraccaricato con i compiti, 256 00:11:20,040 --> 00:11:21,074 solo tentare l'pset. 257 00:11:21,074 --> 00:11:22,490 Farlo al meglio delle vostre capacità. 258 00:11:22,490 --> 00:11:23,840 Se non funziona, non importa. 259 00:11:23,840 --> 00:11:24,506 Basta girare in. 260 00:11:24,506 --> 00:11:26,590 Almeno possiamo dare si punti per lo sforzo. 261 00:11:26,590 --> 00:11:28,510 >> A per sforzo in questa classe. 262 00:11:28,510 --> 00:11:30,170 Almeno basso punteggio goccia per lo sforzo. 263 00:11:30,170 --> 00:11:32,354 Oh si. 264 00:11:32,354 --> 00:11:33,270 Che è praticamente esso. 265 00:11:33,270 --> 00:11:36,521 Qualcuno ha domande così lontano da come noi di grado nella classe? 266 00:11:36,521 --> 00:11:37,187 O uno di questi? 267 00:11:37,187 --> 00:11:41,220 Ognuna di queste così far-- sezioni, orari d'ufficio? 268 00:11:41,220 --> 00:11:41,720 Cool. 269 00:11:41,720 --> 00:11:46,720 270 00:11:46,720 --> 00:11:47,800 OK. 271 00:11:47,800 --> 00:11:51,260 >> Quindi questo è un argomento che non uno ama davvero parlare. 272 00:11:51,260 --> 00:11:53,084 Non mi piace molto parlarne. 273 00:11:53,084 --> 00:11:55,250 Voi ragazzi non si vuole veramente sentirmi parlarne. 274 00:11:55,250 --> 00:11:57,690 Ma, purtroppo, siamo tutti deve parlarne. 275 00:11:57,690 --> 00:12:00,110 David trascorso 20 minuti a conferenza parlarne. 276 00:12:00,110 --> 00:12:02,580 E questo è il soggetto di onestà accademica. 277 00:12:02,580 --> 00:12:08,110 >> Così siamo tutti qui abbiamo scritto probabilmente un saggio a volte nella nostra carriera di Yale. 278 00:12:08,110 --> 00:12:11,800 Probabilmente abbiamo ottenuto un discorso in cui siamo stato detto di non plagiare il nostro saggio, 279 00:12:11,800 --> 00:12:13,940 perché quel lavoro non è la nostra. 280 00:12:13,940 --> 00:12:18,109 In informatica, abbiamo lo stesso tipo di concetto. 281 00:12:18,109 --> 00:12:20,150 Tutto il lavoro che si presenta, tutto il codice che si scrive 282 00:12:20,150 --> 00:12:21,900 dovrebbe essere il codice che avete scritto. 283 00:12:21,900 --> 00:12:24,280 Non dovrebbe essere il codice che avete copiato da qualche altra parte. 284 00:12:24,280 --> 00:12:26,777 Non dovrebbe essere il codice che si Googled e lasciò in 285 00:12:26,777 --> 00:12:28,360 e non so davvero se funziona. 286 00:12:28,360 --> 00:12:32,440 È sorta di avere un senso di quello che sta facendo, ma non proprio. 287 00:12:32,440 --> 00:12:36,562 In caso di dubbio, in sostanza, è solo essere ragionevole. 288 00:12:36,562 --> 00:12:38,520 Sul nostro programma, abbiamo un intero elenco di cose 289 00:12:38,520 --> 00:12:40,560 vediamo come ragionevole contro non è ragionevole. 290 00:12:40,560 --> 00:12:43,820 >> Ad esempio, ragionevole sei tu e il tuo amico 291 00:12:43,820 --> 00:12:47,360 discutere di ciò che il modo migliore per andare su logicamente risolvere un problema. 292 00:12:47,360 --> 00:12:48,910 Questo è abbastanza ragionevole. 293 00:12:48,910 --> 00:12:53,244 Ciò che non sarebbe ragionevole è se si ragazzi si sono riuniti, digitate lo stesso codice, 294 00:12:53,244 --> 00:12:54,410 e trasformato nello stesso codice. 295 00:12:54,410 --> 00:12:56,302 Questo non è ragionevole. 296 00:12:56,302 --> 00:12:57,510 Stessa cosa, una specie di saggio. 297 00:12:57,510 --> 00:12:59,290 Se si vuole discutere con il tuo amico, hey, 298 00:12:59,290 --> 00:13:00,220 questo è quello che voglio scrivere. 299 00:13:00,220 --> 00:13:02,500 Questi sono i passi che voglio prendere per scrivere su di esso, grande. 300 00:13:02,500 --> 00:13:03,208 È magnifico. 301 00:13:03,208 --> 00:13:04,790 Si prega di collaborare tra loro. 302 00:13:04,790 --> 00:13:06,540 Se voi ragazzi inizio scrivere la stessa cosa, 303 00:13:06,540 --> 00:13:10,020 girate nello stesso saggio, che è meno OK. 304 00:13:10,020 --> 00:13:13,200 Così, in caso di dubbio, basta non farlo. 305 00:13:13,200 --> 00:13:16,940 >> Qui, in CS50, abbiamo script che corrono per automatizzare per testare 306 00:13:16,940 --> 00:13:21,740 non solo la correttezza del codice, ma anche l'unicità del codice. 307 00:13:21,740 --> 00:13:25,920 Quindi, per favore non ci messo nella posizione di dover sottoporre il vostro caso a ExComm. 308 00:13:25,920 --> 00:13:31,110 Per favore basta per tutti, facciamo solo rendere questa esperienza meravigliosa. 309 00:13:31,110 --> 00:13:33,600 Tutti imparano meglio, siamo tutti più felici, 310 00:13:33,600 --> 00:13:37,926 e noi siamo tutti insieme fino a avere successo in questo corso. 311 00:13:37,926 --> 00:13:39,800 Qualcosa che è molto unico su questa classe 312 00:13:39,800 --> 00:13:42,660 che Penso che tutti dovrebbero davvero prestare attenzione è che abbiamo 313 00:13:42,660 --> 00:13:44,930 ciò che è chiamato il rammarico Clausola nel nostro programma. 314 00:13:44,930 --> 00:13:50,010 Quindi, in sostanza, entro 72 ore, se si ritiene di aver fatto qualcosa 315 00:13:50,010 --> 00:13:53,240 non sei davvero sicuro era del caso, si prega di venire da noi. 316 00:13:53,240 --> 00:13:57,220 Vi promettiamo che entro 72 ore tratteremo il caso noi stessi 317 00:13:57,220 --> 00:13:59,820 senza fare riferimento ad una più alta l'autorità nell'amministrazione. 318 00:13:59,820 --> 00:14:03,100 >> Quindi, se siete venuti da me e dire, Andi, ehi, mi dispiace davvero, 319 00:14:03,100 --> 00:14:07,620 ma penso che ci sia un paio di linee nel mio codice ieri sera che ho tipo di google, 320 00:14:07,620 --> 00:14:10,120 scesi di Pila Overflow, copia e incollato, 321 00:14:10,120 --> 00:14:13,680 e sono davvero, davvero dispiaciuto a tale proposito, fatemi sapere. 322 00:14:13,680 --> 00:14:16,900 Per favore, non solo lasciarlo marcire e auguro solo che prendo esso. 323 00:14:16,900 --> 00:14:17,784 Noi prenderlo. 324 00:14:17,784 --> 00:14:18,450 Basta venire a me. 325 00:14:18,450 --> 00:14:20,520 Fatemi sapere entro 72 ore. 326 00:14:20,520 --> 00:14:22,240 Troveremo una soluzione. 327 00:14:22,240 --> 00:14:26,679 E vi promettiamo che non ci riferiremo a autorità universitarie essenzialmente. 328 00:14:26,679 --> 00:14:29,220 Quindi è nel vostro interesse di essere solo onesto con tutti 329 00:14:29,220 --> 00:14:31,720 coinvolti nel corso. 330 00:14:31,720 --> 00:14:34,630 >> OK. 331 00:14:34,630 --> 00:14:35,240 OK. 332 00:14:35,240 --> 00:14:37,800 Così ora, in fretta prima Mi muovo su, qualcuno 333 00:14:37,800 --> 00:14:42,670 domande riguardanti logistica su come i corsi che stiamo andando a correre, 334 00:14:42,670 --> 00:14:45,982 come le sezioni sono in corso a correre, nulla di tutto ciò? 335 00:14:45,982 --> 00:14:46,711 OK. 336 00:14:46,711 --> 00:14:47,210 Già. 337 00:14:47,210 --> 00:14:48,126 >> PUBBLICO: [incomprensibile]? 338 00:14:48,126 --> 00:14:50,414 339 00:14:50,414 --> 00:14:51,080 ANDI PENG: Sì. 340 00:14:51,080 --> 00:14:54,850 Così quizzes-- quanti di voi sono nella sezione Lunedi / Mercoledì? 341 00:14:54,850 --> 00:14:56,700 Quanti di voi sono in il Martedì / Giovedi? 342 00:14:56,700 --> 00:14:58,550 OK, quindi è un solido spaccatura qui. 343 00:14:58,550 --> 00:15:00,900 Quindi il modo che si corre che a Yale è che noi 344 00:15:00,900 --> 00:15:04,040 stanno per avere due distinti quizzes-- uno per ogni section-- che 345 00:15:04,040 --> 00:15:06,160 saranno presi durante le lezioni. 346 00:15:06,160 --> 00:15:09,310 Penso che sia ottobre, fine di ottobre, qualcosa di simile, come prima settimana 347 00:15:09,310 --> 00:15:10,794 del quiz. 348 00:15:10,794 --> 00:15:11,960 Sì, così solo venire in classe. 349 00:15:11,960 --> 00:15:13,920 In quella Lunedi o Mercoledì, prenderete il quiz. 350 00:15:13,920 --> 00:15:16,336 In quel Martedì o Giovedi, ti prende un quiz diverso. 351 00:15:16,336 --> 00:15:18,570 Ma lo stesso materiale sarà coperto. 352 00:15:18,570 --> 00:15:19,160 Già. 353 00:15:19,160 --> 00:15:20,660 Bella domanda. 354 00:15:20,660 --> 00:15:21,160 Già. 355 00:15:21,160 --> 00:15:23,260 >> PUBBLICO: Dove siamo andare a controllare i nostri voti? 356 00:15:23,260 --> 00:15:23,926 >> ANDI PENG: Sì. 357 00:15:23,926 --> 00:15:28,420 Così mi spedirà una e-mail tutto ciò che ogni settimana 358 00:15:28,420 --> 00:15:31,460 quando i quiz sono graded-- o, mi dispiace, quando p-set sono classificati. 359 00:15:31,460 --> 00:15:34,120 Pset di solito sono rivolti a mezzogiorno o Venerdì. 360 00:15:34,120 --> 00:15:37,540 Quindi io prometto che lo farò cercare di ottenere di nuovo a voi 361 00:15:37,540 --> 00:15:40,000 dal mezzogiorno del Venerdì successivo. 362 00:15:40,000 --> 00:15:44,950 >> Ogni volta che un grado pset, io manderò una notifica sul libro grado 363 00:15:44,950 --> 00:15:47,070 che ti dice il tuo punteggio può essere consultato on-line. 364 00:15:47,070 --> 00:15:52,022 Così proprio questa settimana, dopo aver finire la classificazione pset della scorsa settimana, 365 00:15:52,022 --> 00:15:54,230 voi ragazzi ottenere una e-mail notifica che ti dice, 366 00:15:54,230 --> 00:15:55,870 hey questo è dove si andare a visualizzare i tuoi voti. 367 00:15:55,870 --> 00:15:57,680 E si può vedere ogni ripartizione dei tuoi voti. 368 00:15:57,680 --> 00:15:58,555 Potete vedere i commenti. 369 00:15:58,555 --> 00:16:00,360 Oh, cosa veloce anche. 370 00:16:00,360 --> 00:16:03,060 La sezione di commento alla grande libro è dove io probabilmente 371 00:16:03,060 --> 00:16:05,300 trascorrere la maggior parte del mio tempo di classificazione. 372 00:16:05,300 --> 00:16:07,094 Quindi, una cosa che è molto importante quando 373 00:16:07,094 --> 00:16:09,010 voi ragazzi sta visualizzando i tuoi voti sui vostri pset 374 00:16:09,010 --> 00:16:11,400 non è solo alla ricerca alla partitura fisica 375 00:16:11,400 --> 00:16:14,630 ma anche prendendo tempo per davvero leggere i miei commenti. 376 00:16:14,630 --> 00:16:17,820 >> Spesso che ti dà un feedback su come si sta risolvendo un problema. 377 00:16:17,820 --> 00:16:20,480 Se avete bisogno di fare qualcosa di un po 'meglio, 378 00:16:20,480 --> 00:16:24,080 critica costruttiva è di solito miglior dato in quelli sezione commenti. 379 00:16:24,080 --> 00:16:26,950 Quindi, per favore, per favore, io vado di trascorrere del tempo a scrivere commenti. 380 00:16:26,950 --> 00:16:30,440 Per favore, vorrei davvero apprezzare se voi ragazzi avrebbe letto quei commenti. 381 00:16:30,440 --> 00:16:31,170 OK. 382 00:16:31,170 --> 00:16:34,150 Cool. 383 00:16:34,150 --> 00:16:34,680 >> Tutto ok. 384 00:16:34,680 --> 00:16:40,680 Così ci accingiamo a iniziare a parlare e basta rivedere rapidamente 385 00:16:40,680 --> 00:16:45,040 parte del materiale da Settimana a zero solo così siamo 386 00:16:45,040 --> 00:16:48,760 sulla giusta pagina per inizio dei problemi di questa settimana. 387 00:16:48,760 --> 00:16:52,600 Così, il ciclo while è una dei tre tipi di cicli 388 00:16:52,600 --> 00:16:54,510 abbiamo discusso in precedenza in questa classe. 389 00:16:54,510 --> 00:16:57,060 >> Un ciclo while essenzialmente è scritto nella sintassi 390 00:16:57,060 --> 00:17:00,666 dove, mentre una certa condizione, fare questo più volte, giusto? 391 00:17:00,666 --> 00:17:02,040 Pensate in questo grafico qui. 392 00:17:02,040 --> 00:17:04,780 Hai intenzione di iniziare in un certo punto nel codice. 393 00:17:04,780 --> 00:17:09,030 Hai intenzione di entrare nella condizione del ciclo se: Non know-- x è minore di uno. 394 00:17:09,030 --> 00:17:11,677 >> Se questo è vero, si sta andando per eseguire il corpo del ciclo. 395 00:17:11,677 --> 00:17:14,010 E si sta andando a continuare a fare di nuovo, ancora, ancora, 396 00:17:14,010 --> 00:17:17,900 sopra e over-- ed è per questo che è un loop-- fino a quando la condizione diventa 397 00:17:17,900 --> 00:17:19,079 falso. 398 00:17:19,079 --> 00:17:22,140 Quindi, in questo modo, un ciclo while è uno dei modi più semplici 399 00:17:22,140 --> 00:17:25,619 di scrivere qualsiasi tipo di condizione che deve ripetere più e più volte. 400 00:17:25,619 --> 00:17:28,109 Basta stare attenti ogni volta che stai scrivendo qualsiasi tipo di ciclo 401 00:17:28,109 --> 00:17:32,140 che si dispone di una condizione di uscita come nonché un aggiornamento per qualunque 402 00:17:32,140 --> 00:17:36,714 è così che il ciclo non lo fa solo eseguire più e più volte all'infinito. 403 00:17:36,714 --> 00:17:38,630 In ogni caso, si sta andando a voler fare in modo 404 00:17:38,630 --> 00:17:42,670 che stai cambiando alcuni aspetti del il codice o alla fine del ciclo 405 00:17:42,670 --> 00:17:46,680 solo per assicurarsi che si dispone di un modo di progredire verso la condizione 406 00:17:46,680 --> 00:17:48,400 che si desidera incontrare a fine. 407 00:17:48,400 --> 00:17:50,239 Questo fa senso a tutti? 408 00:17:50,239 --> 00:17:52,530 Noi non vogliamo essere coinvolti in questa spirale dove 409 00:17:52,530 --> 00:17:55,710 andiamo in giro e intorno e non c'è modo per rompere il ciclo. 410 00:17:55,710 --> 00:17:58,844 E ogni ciclo essenzialmente ha un modo di fare questo. 411 00:17:58,844 --> 00:17:59,344 OK. 412 00:17:59,344 --> 00:18:03,030 413 00:18:03,030 --> 00:18:06,060 >> In secondo luogo, molti di voi nelle vostre pset Mario 414 00:18:06,060 --> 00:18:08,910 probabilmente dovuto impiegare questo tipo di ciclo. 415 00:18:08,910 --> 00:18:11,802 Si chiama un do while. 416 00:18:11,802 --> 00:18:14,510 Prima di tutto, qualcuno può dirmi ciò la differenza tra un fare 417 00:18:14,510 --> 00:18:16,586 while e un ciclo while è? 418 00:18:16,586 --> 00:18:17,086 Già. 419 00:18:17,086 --> 00:18:21,030 >> PUBBLICO: Il do while funziona a prima [incomprensibile]. 420 00:18:21,030 --> 00:18:22,120 >> ANDI PENG: Sì, esattamente. 421 00:18:22,120 --> 00:18:27,130 Così, un do while fa sempre ciò che è dentro la do, all'interno delle parentesi 422 00:18:27,130 --> 00:18:30,520 lì e fa quella condizione prima di controllare per the-- dispiace, 423 00:18:30,520 --> 00:18:32,940 fa quel codice prima controllando la condizione. 424 00:18:32,940 --> 00:18:37,200 E questo è particolarmente rilevante per noi qui in questa classe, perché il più delle volte 425 00:18:37,200 --> 00:18:41,450 stiamo andando a voler richiedere l'utente un certo tipo di input. 426 00:18:41,450 --> 00:18:43,520 E poi, a seconda l'ingresso ci danno, 427 00:18:43,520 --> 00:18:46,150 allora possiamo valutare, oh, fare abbiamo bisogno di spingerli di nuovo? 428 00:18:46,150 --> 00:18:49,930 >> Quindi in Mario, se l'utente vi ha dato un'altezza negativo, per esempio, 429 00:18:49,930 --> 00:18:52,990 si sta andando a prima richiesta e fare tutto ciò che è dentro. 430 00:18:52,990 --> 00:18:54,820 Poi si sta andando a controllare mentre. 431 00:18:54,820 --> 00:18:57,570 Sai, è negativo 1, è che un numero positivo? 432 00:18:57,570 --> 00:19:00,680 Se non lo è, ho intenzione di andare indietro e ripetere il fare e ripetere 433 00:19:00,680 --> 00:19:03,950 e ripetere e ripetere fino a quando non infine gli diamo un numero che ti piace, 434 00:19:03,950 --> 00:19:07,002 che tutti noi possiamo utilizzare nel nostro codice. 435 00:19:07,002 --> 00:19:09,210 E 'molto importante per essenzialmente qualsiasi input dell'utente. 436 00:19:09,210 --> 00:19:11,760 Vi posso garantire qualsiasi tempo in un pset dove 437 00:19:11,760 --> 00:19:15,070 vi chiediamo di ingresso qualsiasi tipo di codice, siamo 438 00:19:15,070 --> 00:19:17,540 probabilmente andando a darvi un banco di prova in cui siamo 439 00:19:17,540 --> 00:19:21,200 andando a darvi qualcosa di brutto che è andando a cercare di rompere il vostro codice. 440 00:19:21,200 --> 00:19:25,044 >> Se proviamo a chiedere di inserire un intero, si può solo dare una stringa 441 00:19:25,044 --> 00:19:26,460 e vedere come si dovrebbe gestire questo. 442 00:19:26,460 --> 00:19:30,610 Se vi chiediamo di assumere una età, possiamo dare un numero negativo 443 00:19:30,610 --> 00:19:32,340 per vedere come si dovrebbe gestire questo. 444 00:19:32,340 --> 00:19:37,260 Basta fare in modo che voi ragazzi stanno testando per i casi in cui non si ottiene la migliore 445 00:19:37,260 --> 00:19:38,590 ingresso, diciamo solo che. 446 00:19:38,590 --> 00:19:40,510 E un do while è spesso il migliore 447 00:19:40,510 --> 00:19:45,260 modo di progettare il codice in modo che soddisfa tale ambito. 448 00:19:45,260 --> 00:19:45,760 OK. 449 00:19:45,760 --> 00:19:48,930 450 00:19:48,930 --> 00:19:49,470 >> OK. 451 00:19:49,470 --> 00:19:53,270 Quindi questo è probabilmente il più ciclo complesso dei tre 452 00:19:53,270 --> 00:19:54,990 che abbiamo esaminato finora. 453 00:19:54,990 --> 00:19:56,689 E sembra molto spaventoso in un primo momento. 454 00:19:56,689 --> 00:19:59,730 Ma vi garantisco, una volta voi ragazzi ottenere il blocco di come utilizzare un ciclo for, 455 00:19:59,730 --> 00:20:03,320 è una delle cose più utili, la maggior parte degli strumenti utili nel vostro arsenale 456 00:20:03,320 --> 00:20:05,300 per andare avanti in questa classe. 457 00:20:05,300 --> 00:20:09,920 >> Così, per esempio, in Scratch, abbiamo avuto questo molto semplice blocco 458 00:20:09,920 --> 00:20:13,180 che appena detto ripetere questa determinata frasi certo numero di volte. 459 00:20:13,180 --> 00:20:16,260 Tra l'altro, SAJ-- questo è SCAZ Andi Jason. 460 00:20:16,260 --> 00:20:18,740 Abbiamo spesso firmare il nostro email SAJ. 461 00:20:18,740 --> 00:20:20,360 Se diciamo SAJ, non essere confuso. 462 00:20:20,360 --> 00:20:22,630 Questo è solo noi. 463 00:20:22,630 --> 00:20:28,600 >> Quindi, in Scratch, siamo stati in grado di avere un blocco che ha detto, mi piace ripetere SAJ! 464 00:20:28,600 --> 00:20:29,430 10 volte. 465 00:20:29,430 --> 00:20:30,130 Molto semplice. 466 00:20:30,130 --> 00:20:32,302 La logica dietro questo è un molto, molto semplice, giusto? 467 00:20:32,302 --> 00:20:35,260 Voglio andare in primo luogo attraverso la prima tempo e vedere che, per la seconda volta 468 00:20:35,260 --> 00:20:38,510 e vedere che, terza, ecc e così via, fino a colpire a 10. 469 00:20:38,510 --> 00:20:41,960 >> E il modo in cui rappresenterebbe che in il codice è solo attraverso un semplice ciclo for. 470 00:20:41,960 --> 00:20:45,440 Quindi per, si sta andando a dichiarare la variabile qui, in questo caso, 471 00:20:45,440 --> 00:20:46,349 con un int. 472 00:20:46,349 --> 00:20:47,390 Stiamo andando a chiamarlo i. 473 00:20:47,390 --> 00:20:49,500 Stiamo per inizializzare a 0. 474 00:20:49,500 --> 00:20:52,490 E l'edizione di arresto è andando essere i è inferiore a 10. 475 00:20:52,490 --> 00:20:54,622 E l'aggiornamento sarà i ++. 476 00:20:54,622 --> 00:20:57,750 >> E all'interno del ciclo, sta andando per eseguire fino a quando alla fine si 477 00:20:57,750 --> 00:21:01,490 colpisce la fine della condition-- in cui caso, sta andando a rompere il ciclo. 478 00:21:01,490 --> 00:21:04,600 Ci dovrebbe essere roba che si ragazzi hanno tutti i tipi di visto prima 479 00:21:04,600 --> 00:21:07,270 e ha dovuto fare per il vostro problema impostato uno. 480 00:21:07,270 --> 00:21:12,310 Qualcuno ha delle domande per quanto riguarda cicli for in questo momento? 481 00:21:12,310 --> 00:21:12,930 OK. 482 00:21:12,930 --> 00:21:13,430 Grande. 483 00:21:13,430 --> 00:21:17,520 484 00:21:17,520 --> 00:21:18,620 >> OK. 485 00:21:18,620 --> 00:21:22,270 Quindi, per quelli di voi che hanno leggere le specifiche pset per questa settimana 486 00:21:22,270 --> 00:21:27,690 Sappiamo che stiamo andando ad avere per assumere qualcosa chiamato ASCII e tabella ASCII. 487 00:21:27,690 --> 00:21:32,380 Davide in conferenza passò brevemente come i computer essentially-- tutto 488 00:21:32,380 --> 00:21:35,410 è codificato in un computer binario, a zero e uno. 489 00:21:35,410 --> 00:21:39,740 E il modo in cui computer sono in grado memorizzare valori diversi in aggiunta 490 00:21:39,740 --> 00:21:44,360 a zero e uno sono attraverso la mappatura quei numeri per rappresentare altre cifre 491 00:21:44,360 --> 00:21:47,220 o essenzialmente altri caratteri. 492 00:21:47,220 --> 00:21:49,810 >> Quindi, in questo caso, un ASCII table-- tutto ciò che fa 493 00:21:49,810 --> 00:21:53,600 è mappa personaggi, o caratteri, ai numeri. 494 00:21:53,600 --> 00:21:57,385 Quindi il file di codice sorgente in il tuo computer-- vede, 495 00:21:57,385 --> 00:22:00,010 ehi, un gruppo di zero e uno, zero e uno, zero e uno. 496 00:22:00,010 --> 00:22:02,350 Questo è ciò che memorizzato nella la memoria reale del vostro computer. 497 00:22:02,350 --> 00:22:04,750 >> Ma quando noi esseri umani vogliono comunicare con il computer, 498 00:22:04,750 --> 00:22:08,249 noi want-- diciamo, per esempio, se voglio la A maiuscola, 499 00:22:08,249 --> 00:22:10,540 Ho intenzione di bisogno di un certo modo di dire al computer, oh, 500 00:22:10,540 --> 00:22:16,300 quando digito maiuscola, voglio dire questa rappresentazione in binario. 501 00:22:16,300 --> 00:22:22,260 >> E così il nostro modo di fare che è ha generato cosa arbitraria chiamata tabella ASCII, 502 00:22:22,260 --> 00:22:25,020 dove noi, come esseri umani, come programmatori, qualche tempo fa, 503 00:22:25,020 --> 00:22:28,660 abbiamo arbitrariamente deciso che stavano per assegnarli numero 504 00:22:28,660 --> 00:22:30,960 I valori di questi personaggi. 505 00:22:30,960 --> 00:22:32,720 >> Così voi potete google questa linea. 506 00:22:32,720 --> 00:22:37,120 Penso che ci sia un collegamento ad esso nella vostra pset-- solo un tavolo mappa ASCII, ASCII 507 00:22:37,120 --> 00:22:37,720 tavola. 508 00:22:37,720 --> 00:22:40,722 Traduce solo binario numeri in caratteri. 509 00:22:40,722 --> 00:22:42,930 E sta andando essere molto utile per il set problema 510 00:22:42,930 --> 00:22:45,470 ogni volta che si desidera calcolare qualcosa o se si 511 00:22:45,470 --> 00:22:47,880 desidera visualizzare determinate caratteri o numeri interi 512 00:22:47,880 --> 00:22:50,327 o manipolare certi personaggi. 513 00:22:50,327 --> 00:22:52,160 Sta andando molto importante che tutti voi 514 00:22:52,160 --> 00:22:55,140 sapere come navigare una tabella ASCII. 515 00:22:55,140 --> 00:23:01,260 >> Così, per esempio, la maiuscola è rappresentato dal numero 65. 516 00:23:01,260 --> 00:23:04,207 E la minuscola è rappresentato da 97. 517 00:23:04,207 --> 00:23:07,040 Quindi è importante sapere che il differenza tra i due valori 518 00:23:07,040 --> 00:23:08,320 è 32. 519 00:23:08,320 --> 00:23:13,210 Spesso, se avete bisogno di convertire da uno all'altro, la differenza è 32. 520 00:23:13,210 --> 00:23:15,710 E non preoccupatevi se siete tipo confuso su questo all'inizio. 521 00:23:15,710 --> 00:23:20,230 Andremo su come faremmo impiegare questo codice vero e proprio. 522 00:23:20,230 --> 00:23:24,700 523 00:23:24,700 --> 00:23:26,380 >> OK. 524 00:23:26,380 --> 00:23:30,770 Quindi, per quelli di voi con i computer portatili fuori, sentitevi liberi di tirare su una tabella ASCII, 525 00:23:30,770 --> 00:23:36,030 perché questi probabilmente richiedono di ragazzi di riferimento 526 00:23:36,030 --> 00:23:38,100 ciò che i personaggi sono. 527 00:23:38,100 --> 00:23:38,640 OK. 528 00:23:38,640 --> 00:23:42,840 >> Quindi, sapendo che alcuni caratteri mappa a determinati numeri, 529 00:23:42,840 --> 00:23:47,240 se dovessi eseguire solo il primo linea che code-- printf una, 530 00:23:47,240 --> 00:23:50,900 minuscola, meno maiuscolo A. Qualcuno 531 00:23:50,900 --> 00:23:55,880 avere un'ipotesi su quello che sarebbe stampare dello schermo in questo momento? 532 00:23:55,880 --> 00:23:58,190 >> Quindi, prima di tutto, ciò fa minuscola rappresentano? 533 00:23:58,190 --> 00:24:00,990 Che numero è che codificata nella tabella ASCII. 534 00:24:00,990 --> 00:24:01,490 Scusate? 535 00:24:01,490 --> 00:24:02,630 >> PUBBLICO: 97? 536 00:24:02,630 --> 00:24:03,630 >> ANDI PENG: 97, grande. 537 00:24:03,630 --> 00:24:05,077 E che cosa è maiuscola? 538 00:24:05,077 --> 00:24:06,330 >> PUBBLICO: 65. 539 00:24:06,330 --> 00:24:08,255 >> ANDI PENG: Allora, qual è 97 meno 65? 540 00:24:08,255 --> 00:24:09,227 >> PUBBLICO: 32. 541 00:24:09,227 --> 00:24:09,810 ANDI PENG: OK. 542 00:24:09,810 --> 00:24:13,530 Allora, cosa ne pensate voi ragazzi sta per succede quando input che riga di codice 543 00:24:13,530 --> 00:24:14,670 nel mio computer? 544 00:24:14,670 --> 00:24:17,981 545 00:24:17,981 --> 00:24:19,896 >> PUBBLICO: [incomprensibile]. 546 00:24:19,896 --> 00:24:21,020 ANDI PENG: Siamo spiacenti, parlare. 547 00:24:21,020 --> 00:24:22,520 Nessun problema. 548 00:24:22,520 --> 00:24:25,750 Questo è molto sicuro ambiente, meno la fotocamera. 549 00:24:25,750 --> 00:24:27,550 Siamo tutti andando a-- nessuna preoccupazione. 550 00:24:27,550 --> 00:24:30,940 Appena siamo tutti andando a fingere come Siamo solo noi agghiacciante in questa stanza. 551 00:24:30,940 --> 00:24:31,480 Nessun problema. 552 00:24:31,480 --> 00:24:33,410 Nessuna domanda è troppo stupido. 553 00:24:33,410 --> 00:24:35,300 Nessuna risposta è una risposta stupida. 554 00:24:35,300 --> 00:24:38,260 Sono probabilmente andando a fare errori nel corso del mio insegnamento. 555 00:24:38,260 --> 00:24:40,740 Scherzi a parte, i ragazzi, appena spifferare fuori. 556 00:24:40,740 --> 00:24:43,092 Siate fiduciosi in voi stessi, lo sai? 557 00:24:43,092 --> 00:24:43,800 Allora, cosa è stato? 558 00:24:43,800 --> 00:24:47,990 Chi ha detto che l'ultima risposta? 559 00:24:47,990 --> 00:24:48,540 OK. 560 00:24:48,540 --> 00:24:50,380 Shout che bella e chiara. 561 00:24:50,380 --> 00:24:51,220 >> PUBBLICO: 32? 562 00:24:51,220 --> 00:24:51,850 >> ANDI PENG: 32. 563 00:24:51,850 --> 00:24:54,141 OK, corriamo questo codice e vedere se questo è ciò che accade. 564 00:24:54,141 --> 00:25:00,260 565 00:25:00,260 --> 00:25:00,760 OK. 566 00:25:00,760 --> 00:25:03,300 567 00:25:03,300 --> 00:25:06,360 Così come voi ragazzi può tipo di vedere, la tipica notazione ho 568 00:25:06,360 --> 00:25:12,250 impostare qui per come avremmo impiegare qualsiasi tipo di programma nel nostro computer. 569 00:25:12,250 --> 00:25:14,770 Noi abbiamo la nostra funzione principale all'interno della nostra funzione principale. 570 00:25:14,770 --> 00:25:17,265 Sto solo andando a copiare e incollare questa riga di codice. 571 00:25:17,265 --> 00:25:21,082 572 00:25:21,082 --> 00:25:23,540 Anche fare attenzione quando si ragazzi sono copiare e incollare il codice. 573 00:25:23,540 --> 00:25:28,750 A volte alcuni operatori Non incollare sopra correttamente. 574 00:25:28,750 --> 00:25:31,397 In tal caso, il minus segno era in realtà un trattino. 575 00:25:31,397 --> 00:25:32,980 E così il computer non raccoglierlo. 576 00:25:32,980 --> 00:25:35,870 Così ho dovuto tornare indietro e digitare nuovamente fisicamente che. 577 00:25:35,870 --> 00:25:37,846 Basta essere attenti quando voi ragazzi stanno facendo. 578 00:25:37,846 --> 00:25:41,178 579 00:25:41,178 --> 00:25:42,660 >> OK. 580 00:25:42,660 --> 00:25:43,980 Stiamo per eseguire questo qui. 581 00:25:43,980 --> 00:25:45,670 Quindi stiamo andando a cd nella nostra sezione2. 582 00:25:45,670 --> 00:25:50,470 583 00:25:50,470 --> 00:25:52,030 Ho chiamato questo programma asciimath. 584 00:25:52,030 --> 00:25:55,690 Quindi ricordate, quando si corre ogni programma, vogliamo compilare un primo momento 585 00:25:55,690 --> 00:25:57,150 eseguendolo attraverso il nostro fare. 586 00:25:57,150 --> 00:26:00,030 E poi vogliamo eseguire realmente il programma facendo dot-slash. 587 00:26:00,030 --> 00:26:01,280 Quindi stiamo andando a ./asciimath. 588 00:26:01,280 --> 00:26:05,780 589 00:26:05,780 --> 00:26:06,590 >> A destra, ci andiamo. 590 00:26:06,590 --> 00:26:07,410 E vediamo 32. 591 00:26:07,410 --> 00:26:07,930 Ben fatto. 592 00:26:07,930 --> 00:26:10,340 Ti meriti una caramella. 593 00:26:10,340 --> 00:26:11,160 Candy per voi. 594 00:26:11,160 --> 00:26:11,900 Scusate. 595 00:26:11,900 --> 00:26:13,100 Tutto ok. 596 00:26:13,100 --> 00:26:13,670 OK. 597 00:26:13,670 --> 00:26:18,070 Così possiamo tornare al nostro esempio qui. 598 00:26:18,070 --> 00:26:23,530 599 00:26:23,530 --> 00:26:24,345 Aah, no. 600 00:26:24,345 --> 00:26:29,147 601 00:26:29,147 --> 00:26:31,090 Aah. 602 00:26:31,090 --> 00:26:32,490 OK. 603 00:26:32,490 --> 00:26:34,610 Sto solo andando a tenerlo così. 604 00:26:34,610 --> 00:26:48,520 605 00:26:48,520 --> 00:26:51,240 OK. 606 00:26:51,240 --> 00:26:51,740 OK. 607 00:26:51,740 --> 00:26:55,340 Così come voi potete vedere, si può fare un sacco di cose molto interessanti, 608 00:26:55,340 --> 00:26:58,880 un sacco di cose molto cool, un sacco di cose molto complicate che coinvolgono 609 00:26:58,880 --> 00:27:02,720 Caratteri ASCII e numeri. 610 00:27:02,720 --> 00:27:05,890 Una volta che si arriva alla linea cinque, che è un sacco di seguire. 611 00:27:05,890 --> 00:27:07,640 Non abbiamo intenzione di andare attraverso la sezione. 612 00:27:07,640 --> 00:27:10,720 Sentitevi liberi di, se è possibile, ragionare su carta 613 00:27:10,720 --> 00:27:14,750 prima su ciò che dovrebbe accadere quando si introduce come una stringa di valori. 614 00:27:14,750 --> 00:27:19,720 Ad esempio, in tale ultima riga, abbiamo z-- che rappresenta un certo number-- 615 00:27:19,720 --> 00:27:24,740 a-- che rappresenta anche un alcuni number-- più 1 modulos 26 616 00:27:24,740 --> 00:27:26,750 più minuscola. 617 00:27:26,750 --> 00:27:29,220 >> Se voi ragazzi continuate a leggere attraverso questi, 618 00:27:29,220 --> 00:27:34,009 può vedere un modello venire in come stiamo manipolando il codice. 619 00:27:34,009 --> 00:27:36,050 Vivamente, consiglio vivamente dopo la sezione tutti voi 620 00:27:36,050 --> 00:27:38,160 ragazzi vanno avanti e l'ingresso quelli tutto nel vostro computer 621 00:27:38,160 --> 00:27:40,060 e vedere che tipo di numeri stanno venendo fuori 622 00:27:40,060 --> 00:27:43,090 e ragionando attraverso perché quelli sono succedendo, perché per i vostri pset 623 00:27:43,090 --> 00:27:45,060 sarà molto importante per voi capire 624 00:27:45,060 --> 00:27:47,132 perché certe cose stanno accadendo. 625 00:27:47,132 --> 00:27:48,590 Tutte queste slide sarà in linea. 626 00:27:48,590 --> 00:27:51,510 Quindi nessuna preoccupazione per il tentativo di fisicamente copiare appunti. 627 00:27:51,510 --> 00:27:52,510 On-line di tutto. 628 00:27:52,510 --> 00:27:54,050 Questa sezione si sarà online. 629 00:27:54,050 --> 00:27:57,500 Tutto il mio codice sorgente Sto correndo sarà online. 630 00:27:57,500 --> 00:27:58,180 Già. 631 00:27:58,180 --> 00:27:59,430 Hai avuto ancora una domanda? 632 00:27:59,430 --> 00:28:00,587 PUBBLICO: Che cosa è modulos? 633 00:28:00,587 --> 00:28:01,170 ANDI PENG: OK. 634 00:28:01,170 --> 00:28:05,620 Così modulo è un operatore che sta per essere molto importante per pset dei vostri ragazzi 635 00:28:05,620 --> 00:28:06,690 Qui. 636 00:28:06,690 --> 00:28:12,280 Quindi il modo che gli operatori in C e nel lavoro di programmazione 637 00:28:12,280 --> 00:28:16,360 è che hai quello che ha chiamato il simbolo di divisione e il simbolo modulo, 638 00:28:16,360 --> 00:28:18,350 che è proprio come il segno di percentuale. 639 00:28:18,350 --> 00:28:24,840 >> Quindi, in C, quando si esegue un intero diviso da un intero con una barra, 640 00:28:24,840 --> 00:28:27,720 C ha una tendenza a voler tagliare disattivare tutti i punti decimali, 641 00:28:27,720 --> 00:28:30,290 perché un intero vuole per convertire in un numero intero. 642 00:28:30,290 --> 00:28:33,550 Non sta andando a voler essere un doppio con un gruppo di decimali tutto dopo. 643 00:28:33,550 --> 00:28:39,322 >> Quindi, se faccio 3 diviso 2, sta andando per tagliare il 0,5 e solo dare 1. 644 00:28:39,322 --> 00:28:41,530 Ecco, questo è qualcosa di cui essere molto attenti quando si è 645 00:28:41,530 --> 00:28:45,294 fare qualsiasi tipo di matematica in programmazione, è che i numeri si ottiene 646 00:28:45,294 --> 00:28:47,210 Non possono essere i numeri che stavi pensando, 647 00:28:47,210 --> 00:28:50,190 ed è per questo arrotondamento nella tua ultima pset è così importante. 648 00:28:50,190 --> 00:28:51,980 >> Modulo ti dà il resto. 649 00:28:51,980 --> 00:28:56,200 Così, per esempio, se l'ho fatto 3 modulo 2-- così il 3 per cento segno 2-- 650 00:28:56,200 --> 00:28:58,020 darebbe il resto di quella. 651 00:28:58,020 --> 00:29:00,460 Quindi 3 diviso 2 è 1,5. 652 00:29:00,460 --> 00:29:01,410 E '1 resto di 1. 653 00:29:01,410 --> 00:29:04,600 Darebbe la 1, che è il resto di quella. 654 00:29:04,600 --> 00:29:07,361 >> Così, quando voi ragazzi sono in movimento attraverso la tabella ASCII, 655 00:29:07,361 --> 00:29:09,735 modulo finirà per essere qualcosa che è molto importante, 656 00:29:09,735 --> 00:29:11,240 e ne parleremo più avanti. 657 00:29:11,240 --> 00:29:17,750 658 00:29:17,750 --> 00:29:19,040 >> OK. 659 00:29:19,040 --> 00:29:27,300 Quindi, qualcosa che è abbastanza, abbastanza nuovo e abbastanza unico 660 00:29:27,300 --> 00:29:31,920 che abbiamo discusso questa settimana è il concetto di ciò è un array. 661 00:29:31,920 --> 00:29:34,370 Così matrice è il primo tipo di struttura dati 662 00:29:34,370 --> 00:29:36,320 che stiamo andando a incontrare in questa classe. 663 00:29:36,320 --> 00:29:40,010 Tutte le strutture dati sono è una sorta di arbitraria, 664 00:29:40,010 --> 00:29:43,370 letteralmente le cose come struttura che noi, come i programmatori abbiamo creato, 665 00:29:43,370 --> 00:29:47,890 che abbiamo messo nel nostro codice che può contenere altri pezzi di codice. 666 00:29:47,890 --> 00:29:51,090 >> Quindi, in questo senso, un array-- pensare ad esso come un archivio, 667 00:29:51,090 --> 00:29:53,470 dove se si apre diverso scaffali del vostro file CAB, 668 00:29:53,470 --> 00:29:55,630 è possibile accedere a diverse cose. 669 00:29:55,630 --> 00:29:58,630 In memoria, un array è solo facendo la stessa cosa sul computer. 670 00:29:58,630 --> 00:30:01,730 Si possono avere diverse ci blocks-- li chiamano indices-- di un array. 671 00:30:01,730 --> 00:30:04,210 E 'proprio come un blocco, uno scaffale della memoria 672 00:30:04,210 --> 00:30:07,580 che abbiamo creato all'interno della vostra computer che è possibile inserire 673 00:30:07,580 --> 00:30:10,270 certe cose in spazi diversi. 674 00:30:10,270 --> 00:30:18,000 >> Quindi, con una matrice, è avere sempre a specify-- 675 00:30:18,000 --> 00:30:22,360 è necessario specificare dichiarare un matrice nel seguente formato. 676 00:30:22,360 --> 00:30:24,290 Stai andando a prima specificare il tipo di dati 677 00:30:24,290 --> 00:30:25,831 che si desidera creare dell'array. 678 00:30:25,831 --> 00:30:28,870 Se voglio un array di interi, Ho intenzione di mettere int proprio lì. 679 00:30:28,870 --> 00:30:32,079 Se voglio un array di stringhe, Ho intenzione di mettere le stringhe lì, 680 00:30:32,079 --> 00:30:34,995 il nome della matrice, e quindi si sta andando ad avere le parentesi quadre. 681 00:30:34,995 --> 00:30:39,580 E dentro le parentesi quadre, sei andando ad avere la dimensione della matrice. 682 00:30:39,580 --> 00:30:42,900 >> Qualcosa che è veramente importante per tenere a mente durante la creazione di array è 683 00:30:42,900 --> 00:30:46,530 che, una volta che si crea un array, che la dimensione non può cambiare. 684 00:30:46,530 --> 00:30:50,180 Quindi, se si sa che in questo momento si dispone di un array di dimensione 10, 685 00:30:50,180 --> 00:30:54,550 lo sai che ho intenzione di avere 10 celle all'interno o 10 indici all'interno di questa matrice, 686 00:30:54,550 --> 00:30:56,830 e non è mai andata per espandere o ridurre 687 00:30:56,830 --> 00:30:59,850 non importa cosa, e che non c'è attualmente solo 10 blocchi di spazio 688 00:30:59,850 --> 00:31:04,490 allocata nella memoria capace di immagazzinare fino a 10 cose di quello che hai messo. 689 00:31:04,490 --> 00:31:08,790 >> Quindi, in questo modo, un tipo di dati array, la struttura di dati che è un array 690 00:31:08,790 --> 00:31:13,392 è molto diverso da alcuni altri ti essere che copre più avanti in questo corso. 691 00:31:13,392 --> 00:31:15,170 Già. 692 00:31:15,170 --> 00:31:20,080 Ad esempio, se si voleva creare un array di dimensione 3 che 693 00:31:20,080 --> 00:31:23,670 contenuti variabili di integer-- oh, scusate, di temperature-- 694 00:31:23,670 --> 00:31:25,640 e la temperatura, di Naturalmente, è un numero intero. 695 00:31:25,640 --> 00:31:28,710 >> Così avremmo creiamo int, che è il il tipo di dati di quello che vogliamo salvare. 696 00:31:28,710 --> 00:31:32,680 Stiamo andando a chiamare questo temperature per il bene della nomenclatura dei nomi 697 00:31:32,680 --> 00:31:34,200 qualcosa che tutti noi comprendiamo. 698 00:31:34,200 --> 00:31:35,900 E stiamo andando ad avere le parentesi quadre. 699 00:31:35,900 --> 00:31:37,200 E vogliamo tre numeri. 700 00:31:37,200 --> 00:31:39,000 Quindi stiamo andando a mettere tre all'interno di esso. 701 00:31:39,000 --> 00:31:41,041 >> Qualcosa che è davvero importante tenere a mente 702 00:31:41,041 --> 00:31:43,530 è che gli array sono pari a zero indicizzati. 703 00:31:43,530 --> 00:31:46,410 Tutto questo significa è che si iniziare con l'indice di 0, 704 00:31:46,410 --> 00:31:49,800 e si esegue attraverso il dimensione dell'array meno 1. 705 00:31:49,800 --> 00:31:52,730 Così, per esempio qui, avere un array di dimensione 3. 706 00:31:52,730 --> 00:31:54,680 Sta andando essere in grado per contenere tre valori. 707 00:31:54,680 --> 00:31:57,450 Ma i numeri che themselves-- numero, l'array, tale indice, 708 00:31:57,450 --> 00:32:00,271 la matrice, sono da 0 a 2. 709 00:32:00,271 --> 00:32:03,520 Quindi ragazzi, essere molto, molto attenti quando si sta andando attraverso i vostri problemi di set 710 00:32:03,520 --> 00:32:06,500 e creare qualsiasi tipo di matrice, perché un sacco di volte è 711 00:32:06,500 --> 00:32:08,490 davvero, davvero facile da dimenticare che. 712 00:32:08,490 --> 00:32:11,840 Io in realtà non ho l'indice di 3, che attualmente solo 713 00:32:11,840 --> 00:32:13,130 hanno l'indice 2. 714 00:32:13,130 --> 00:32:16,046 E se si cerca di accedere terzo indice, 715 00:32:16,046 --> 00:32:18,170 che sta per essere ciò che è chiamato il terminatore null. 716 00:32:18,170 --> 00:32:19,990 Non sta andando a realtà esistere nella matrice. 717 00:32:19,990 --> 00:32:21,781 E il computer è Non piacerà questo. 718 00:32:21,781 --> 00:32:24,570 Quindi fate attenzione quando stai accedendo cose solo 719 00:32:24,570 --> 00:32:28,070 per garantire che vi ricordate che gli array sono zero indicizzati. 720 00:32:28,070 --> 00:32:28,880 >> OK. 721 00:32:28,880 --> 00:32:34,030 Quindi il primo esempio è solo un modo di creare un array. 722 00:32:34,030 --> 00:32:36,790 Il secondo esempio che ho sotto è solo un modo separata 723 00:32:36,790 --> 00:32:40,210 di creare ciò è la stessa dei dati struttura che abbiamo appena immessi. 724 00:32:40,210 --> 00:32:44,347 Così, invece di correre fisicamente attraverso e messa in temperatura di 0 725 00:32:44,347 --> 00:32:47,180 è uguale a qualsiasi altra cosa, temperatura 1 è uguale a qualsiasi temperatura, 2 uguali 726 00:32:47,180 --> 00:32:50,950 qualunque cosa, potrei in realtà solo direttamente creare tutto in una sola riga 727 00:32:50,950 --> 00:32:53,010 in temperatura parentesi quadre pari. 728 00:32:53,010 --> 00:32:56,536 >> E avviso in questo caso, non è necessario per specificare quanto è grande l'array è, 729 00:32:56,536 --> 00:32:59,160 perché il computer sta per passare attraverso e vedere che non c'è 730 00:32:59,160 --> 00:33:01,570 tre elementi in quelle parentesi graffe. 731 00:33:01,570 --> 00:33:04,000 E sta andando a conoscere, OK, Ho bisogno di un array di dimensione 3. 732 00:33:04,000 --> 00:33:07,440 Tu non stai andando ad avere bisogno di immetterla modo seguente. 733 00:33:07,440 --> 00:33:10,170 >> E anche, sì, in questo modo. 734 00:33:10,170 --> 00:33:12,610 Qualcuno ha domande per quanto riguarda il modo in cui facciamo le matrici 735 00:33:12,610 --> 00:33:17,391 o come la struttura di un array funziona? 736 00:33:17,391 --> 00:33:17,890 Già. 737 00:33:17,890 --> 00:33:18,806 >> PUBBLICO: [incomprensibile]? 738 00:33:18,806 --> 00:33:21,649 739 00:33:21,649 --> 00:33:22,690 ANDI PENG: Sì, esattamente. 740 00:33:22,690 --> 00:33:26,150 Quindi, se si dovesse dichiarare e inizializzare un array il seguente metodo, 741 00:33:26,150 --> 00:33:28,477 che è il secondo modo, si può semplicemente lasciare quelli. 742 00:33:28,477 --> 00:33:30,310 E il computer sa automaticamente che 743 00:33:30,310 --> 00:33:33,950 ha bisogno di contare quanti elementi sono in quelle parentesi graffe, separate 744 00:33:33,950 --> 00:33:34,930 da virgole. 745 00:33:34,930 --> 00:33:37,517 >> Così qui vedono 65, 87, 30. 746 00:33:37,517 --> 00:33:39,600 Quindi il computer sa, oh, ci sono tre numeri interi. 747 00:33:39,600 --> 00:33:45,960 So che per creare un nome di matrice temperatura con tre elementi in esso. 748 00:33:45,960 --> 00:33:46,590 Bella domanda. 749 00:33:46,590 --> 00:33:47,090 Già. 750 00:33:47,090 --> 00:33:51,590 >> PUBBLICO: Non è possibile la creazione di un array con diversi tipi di dati 751 00:33:51,590 --> 00:33:53,021 che potrebbero essere inseriti in esso? 752 00:33:53,021 --> 00:33:56,746 Ad esempio, con numeri interi [incomprensibile]? 753 00:33:56,746 --> 00:33:59,120 ANDI PENG: Ai fini di questa classe, non è, in questo momento. 754 00:33:59,120 --> 00:34:03,070 Quando si crea un data strutturare come un array, 755 00:34:03,070 --> 00:34:04,990 stai dicendo la calcolatore, ehi, ho bisogno di te 756 00:34:04,990 --> 00:34:08,159 di destinare questo molto memoria nel mio hard disk, 757 00:34:08,159 --> 00:34:10,690 con ciascuna cella un certo numero di bit. 758 00:34:10,690 --> 00:34:13,429 >> Ricordate che abbiamo imparato a settimana zero, che dati diversi 759 00:34:13,429 --> 00:34:15,300 tipi hanno dimensioni diverse? 760 00:34:15,300 --> 00:34:17,630 Così, per esempio, una stringa è una quantità differente 761 00:34:17,630 --> 00:34:20,719 di spazio di un char, che è una diversa quantità di spazio 762 00:34:20,719 --> 00:34:21,830 da un numero intero. 763 00:34:21,830 --> 00:34:25,534 E così, se non si specifica e mescolare e abbinare che tipo di variabili 764 00:34:25,534 --> 00:34:27,659 avete, il computer di andando a essere molto confusa. 765 00:34:27,659 --> 00:34:29,950 E non sta andando a conoscere la quantità di memoria da darti. 766 00:34:29,950 --> 00:34:32,480 Così per scopi di destra ora, i computer possono solo 767 00:34:32,480 --> 00:34:36,120 riconoscere un tipo di un array. 768 00:34:36,120 --> 00:34:37,940 Bella domanda. 769 00:34:37,940 --> 00:34:38,440 OK. 770 00:34:38,440 --> 00:34:45,179 771 00:34:45,179 --> 00:34:47,120 >> Così, naturalmente, la seconda domanda che abbiamo 772 00:34:47,120 --> 00:34:50,760 è, bene, ora che abbiamo creato un array e abbiamo messo tutte queste cose 773 00:34:50,760 --> 00:34:54,190 nella matrice, come siamo sarà in grado di accedervi? 774 00:34:54,190 --> 00:34:59,710 Quindi la struttura tipica che abbiamo sempre accedere a un array è la nostra bella ciclo for. 775 00:34:59,710 --> 00:35:03,830 Prometto voi ragazzi che saremo vedendo un sacco di questo tizio qui. 776 00:35:03,830 --> 00:35:06,470 >> In sostanza, ogni volta che vuoi per inserire i valori in un array 777 00:35:06,470 --> 00:35:09,940 o se si vuole accedere ad essi, il modo migliore per farlo è un ciclo for, 778 00:35:09,940 --> 00:35:13,730 perché in un ciclo for, è Sai quante volte sei 779 00:35:13,730 --> 00:35:17,290 andando a voler correre attraverso l'array, perché avete una versione di stop, giusto? 780 00:35:17,290 --> 00:35:19,680 E ogni volta che si esegue attraverso, è possibile accedere 781 00:35:19,680 --> 00:35:21,310 un elemento diverso dell'array. 782 00:35:21,310 --> 00:35:26,920 >> E anche questo è un motivo per cui in genere iniziamo la nostra per i loop al valore 0, 783 00:35:26,920 --> 00:35:30,080 perché quando si accede array, è possibile accedere all'indice zero. 784 00:35:30,080 --> 00:35:32,070 E così parallela molto bene. 785 00:35:32,070 --> 00:35:35,295 Voi ragazzi possono avere voluto scrivere per int i è uguale a 1. 786 00:35:35,295 --> 00:35:37,330 i è minore o uguale a 3. 787 00:35:37,330 --> 00:35:39,890 >> Ma non avrebbe funzionato abbastanza come bene qui, perché hai solo 788 00:35:39,890 --> 00:35:42,010 disporre di elementi di 0, 1, e 2. 789 00:35:42,010 --> 00:35:45,815 E così, se si dovesse iniziare a il tuo i all'elemento 1, 2, e 3, 790 00:35:45,815 --> 00:35:48,440 si sta andando a finire in esecuzione fuori i limiti della propria matrice, 791 00:35:48,440 --> 00:35:50,440 e cose cattive stanno per accadere. 792 00:35:50,440 --> 00:35:54,480 >> Quindi spero che voi ragazzi vedere la segue del perché nelle classi precedenti 793 00:35:54,480 --> 00:35:58,560 Vi insegniamo ragazzi come gestire e formattare un ciclo for il modo in cui siamo stati. 794 00:35:58,560 --> 00:36:01,900 È perché, ora abbiamo la transizione in array, 795 00:36:01,900 --> 00:36:06,760 Si può capire perché i 0 presta sé molto bene per l'accesso. 796 00:36:06,760 --> 00:36:09,880 >> Così il nostro modo di fare che è che-- sono appena la stampa fuori qui per amore 797 00:36:09,880 --> 00:36:10,830 di stamparlo. 798 00:36:10,830 --> 00:36:13,750 Ma ho il mio segnaposto, virgola. 799 00:36:13,750 --> 00:36:15,645 E il che accede reale parte sta accadendo. 800 00:36:15,645 --> 00:36:17,520 Il nome della matrice è stato chiamato temperatura. 801 00:36:17,520 --> 00:36:21,570 Quindi è la temperatura e la i-esimo elemento dell'array. 802 00:36:21,570 --> 00:36:24,400 >> Così come il ciclo for attraversa, che sta per iniziare a 0. 803 00:36:24,400 --> 00:36:27,640 Sta andando a stampare il Indice 0 di questa matrice. 804 00:36:27,640 --> 00:36:29,599 Allora è andato in stampa il primo elemento. 805 00:36:29,599 --> 00:36:31,431 Allora è andato in stampa la seconda. 806 00:36:31,431 --> 00:36:32,880 E poi andremo a rompere. 807 00:36:32,880 --> 00:36:36,718 È tutto chiaro su come che sta succedendo? 808 00:36:36,718 --> 00:36:37,217 Grande. 809 00:36:37,217 --> 00:36:43,230 810 00:36:43,230 --> 00:36:44,100 >> Tutto ok. 811 00:36:44,100 --> 00:36:47,270 Quindi qui abbiamo un modo di dicendo, se non volevamo 812 00:36:47,270 --> 00:36:50,020 a hard-code mi dentro-- come programmatore. 813 00:36:50,020 --> 00:36:53,320 Non volevo realmente fisicamente mettere in ogni singolo elemento 814 00:36:53,320 --> 00:36:54,020 di questa matrice. 815 00:36:54,020 --> 00:36:56,500 Se volevo invece avere i valori di input dell'utente, 816 00:36:56,500 --> 00:36:58,100 qual è il modo migliore per farlo? 817 00:36:58,100 --> 00:37:00,920 >> Beh, qui ho creato questa bella funzione 818 00:37:00,920 --> 00:37:03,560 in cui posso dichiarare un array. 819 00:37:03,560 --> 00:37:06,210 Quindi cerchiamo di int scores-- basta dire che vogliamo fare 820 00:37:06,210 --> 00:37:10,660 una matrice che ha tenuto i voti di tutti i 18 degli studenti qui in questa sezione. 821 00:37:10,660 --> 00:37:12,670 Penso che abbiamo un po ' più di 18 ragazzi di oggi. 822 00:37:12,670 --> 00:37:16,460 Ma per l'amor di esempio, basti pensare che abbiamo avuto 18. 823 00:37:16,460 --> 00:37:21,580 Vorrei creare un nome di matrice con i punteggi tipo int, perché i punteggi, naturalmente, 824 00:37:21,580 --> 00:37:22,987 sono numeri. 825 00:37:22,987 --> 00:37:24,820 E ho intenzione di avere 18 tra parentesi quadre, 826 00:37:24,820 --> 00:37:29,900 perché questo è il numero di studenti che ho vogliono essere in grado di memorizzare decine di. 827 00:37:29,900 --> 00:37:32,206 >> E il modo in cui mi piacerebbe popolare la matrice è che mi piacerebbe 828 00:37:32,206 --> 00:37:35,572 eseguire attraverso un ciclo for, di Naturalmente, con 0 essere il mio indice 0. 829 00:37:35,572 --> 00:37:38,030 E poi con 18 è il mio l'arresto edizione, perché non c'è 830 00:37:38,030 --> 00:37:39,690 18 elementi dell'array. 831 00:37:39,690 --> 00:37:44,620 E poi ho intenzione di fare printf, Immettere mette in student-- bla bla bla. 832 00:37:44,620 --> 00:37:51,171 >> Qualcuno può dirmi perché qui sono stampa i più 1 e non io? 833 00:37:51,171 --> 00:37:52,920 E 'una specie di un trucco domanda, non proprio. 834 00:37:52,920 --> 00:37:56,020 In realtà non fisicamente influenzare il funzionamento del codice. 835 00:37:56,020 --> 00:37:56,520 Già. 836 00:37:56,520 --> 00:37:57,909 >> PUBBLICO: [incomprensibile] 0? 837 00:37:57,909 --> 00:37:58,950 ANDI PENG: Sì, esattamente. 838 00:37:58,950 --> 00:38:02,620 E 'un po' imbarazzante per dire, ehi, tu sei lo studente 0 in questa classe. 839 00:38:02,620 --> 00:38:03,780 E 'un po' strano. 840 00:38:03,780 --> 00:38:08,340 Quindi noi, come esseri umani, non mi piace a pensare a come i computer pensano. 841 00:38:08,340 --> 00:38:10,930 Quindi, anche se nel computer, è memorizzare valori 842 00:38:10,930 --> 00:38:13,310 nel 0-esimo indice, quando siamo esseri umani, non lo facciamo davvero 843 00:38:13,310 --> 00:38:15,520 desidera fare riferimento a noi stessi come zero. 844 00:38:15,520 --> 00:38:18,119 Così, quando ho appena stampo che, Ho intenzione di stampare e aggiungere 845 00:38:18,119 --> 00:38:19,410 1 solo per motivi di chiarezza. 846 00:38:19,410 --> 00:38:22,447 Così, quando stampo, ho intenzione di essere in grado di stampare gli studenti da 1 a 18. 847 00:38:22,447 --> 00:38:24,530 In realtà non incide l'esecuzione del codice 848 00:38:24,530 --> 00:38:27,110 in qualche modo, il mio modo di stampa. 849 00:38:27,110 --> 00:38:30,380 >> Ma attenzione quando si è in realtà l'accesso alla matrice. 850 00:38:30,380 --> 00:38:32,780 Quando vedi i punteggi i, noterà qui Sono davvero 851 00:38:32,780 --> 00:38:38,200 Accedendo l'indice 0 e non il 1 più 0-- o 1 più 1, 852 00:38:38,200 --> 00:38:45,530 in questo caso, l'indice così che in realtà è chiaro. 853 00:38:45,530 --> 00:38:48,870 Sono tutti i tipi di OK come questo è in esecuzione attraverso 854 00:38:48,870 --> 00:38:51,470 e con ogni indice sono mettere un valore nella matrice 855 00:38:51,470 --> 00:38:55,340 e la creazione di una matrice con 18 numeri che l'utente sta per input? 856 00:38:55,340 --> 00:38:58,780 857 00:38:58,780 --> 00:38:59,821 OK. 858 00:38:59,821 --> 00:39:00,321 Cool. 859 00:39:00,321 --> 00:39:05,380 860 00:39:05,380 --> 00:39:07,400 >> OK. 861 00:39:07,400 --> 00:39:12,220 Passiamo ora in qualcosa che è abbastanza rilevante per questo pezzo impostare pure. 862 00:39:12,220 --> 00:39:15,020 So che in conferenza, David-- mi dispiace, hai avuto una domanda? 863 00:39:15,020 --> 00:39:16,840 >> PUBBLICO: Potete ingrandirla? 864 00:39:16,840 --> 00:39:18,080 >> ANDI PENG: Sì, così ho provato. 865 00:39:18,080 --> 00:39:18,788 Ma io non lo so. 866 00:39:18,788 --> 00:39:21,437 Per qualche ragione, questo versione di PowerPoint 867 00:39:21,437 --> 00:39:23,270 è davvero non funziona bene con il display. 868 00:39:23,270 --> 00:39:25,260 Quindi stiamo solo andando per mantenere in questo modo. 869 00:39:25,260 --> 00:39:27,280 Tutti questi saranno caricati on-line. 870 00:39:27,280 --> 00:39:28,218 Scusate ragazzi. 871 00:39:28,218 --> 00:39:30,090 Già. 872 00:39:30,090 --> 00:39:30,980 OK. 873 00:39:30,980 --> 00:39:35,530 >> Così possiamo anche avere stringhe. 874 00:39:35,530 --> 00:39:39,320 Quindi, se voi ragazzi in realtà notice-- I so Rob è andato oltre questo in quella conferenza 875 00:39:39,320 --> 00:39:43,652 che egli did-- una stringa è in realtà solo un array di caratteri, 876 00:39:43,652 --> 00:39:44,860 se ci pensi, giusto? 877 00:39:44,860 --> 00:39:47,500 Una stringa è un nome o un frase o una parola, giusto? 878 00:39:47,500 --> 00:39:52,975 >> Se dovessi creare una stringa di nome Andi-- solo il mio nome, A-N-D-I. 879 00:39:52,975 --> 00:39:55,460 Pensi a che, come una sola variabile. 880 00:39:55,460 --> 00:39:58,630 Ma in realtà, è ripartito in appena un array di caratteri. 881 00:39:58,630 --> 00:40:01,910 Così che ha un carattere di un memorizzato in un valore di array. 882 00:40:01,910 --> 00:40:05,420 Ha un carattere di n memorizzato nel secondo indice e così via e così via. 883 00:40:05,420 --> 00:40:08,660 >> Quindi, in tale modo, in realtà avere questo tipo 884 00:40:08,660 --> 00:40:10,970 di struttura di cui in posto per le nostre corde. 885 00:40:10,970 --> 00:40:14,660 Così qui, se dovessi inserire il parola "mangiare" - così string parola uguale 886 00:40:14,660 --> 00:40:15,540 ottenere stringa. 887 00:40:15,540 --> 00:40:19,260 Se dovessi inserire la parola "mangiare", che è fisicamente il modo che il mio computer 888 00:40:19,260 --> 00:40:21,870 è immagazzinare tale stringa nella mia memoria. 889 00:40:21,870 --> 00:40:27,140 >> E se volessi correre attraverso quella e di stampa che fuori-- così per in i 890 00:40:27,140 --> 00:40:30,890 è uguale a zero, ricorda, in conferenza, abbiamo qualcosa coperto che si chiama strlen, 891 00:40:30,890 --> 00:40:32,990 o la lunghezza della stringa. 892 00:40:32,990 --> 00:40:36,520 Perché io non realmente sa quanto è grande l'array è 893 00:40:36,520 --> 00:40:38,210 di qualsiasi inputting-- dell'utente 894 00:40:38,210 --> 00:40:40,370 >> Per esempio, ho immesso la parola "mangiare," e so 895 00:40:40,370 --> 00:40:41,870 che è lungo tre personaggi, giusto? 896 00:40:41,870 --> 00:40:44,700 Così ho potuto mettere in una di tre là e tutto andrà bene. 897 00:40:44,700 --> 00:40:49,290 Ma se il vostro qualcosa input dell'utente che è un numero diverso di valori, 898 00:40:49,290 --> 00:40:52,760 si sta andando ad non essere in grado di veramente sai che quando si programma il codice. 899 00:40:52,760 --> 00:40:56,040 >> Quindi il modo che gestiamo casi di test così è che abbiamo qualcosa 900 00:40:56,040 --> 00:41:00,070 chiamata strlen, che è solo una funzione che ti dice da quanto tempo una stringa è. 901 00:41:00,070 --> 00:41:02,080 Così strlen di parola. 902 00:41:02,080 --> 00:41:03,470 La mia parola è mangiare. 903 00:41:03,470 --> 00:41:05,990 n è uguale a strlen di parola. 904 00:41:05,990 --> 00:41:08,930 Qualcuno può dirmi cosa che valore effettivamente è proprio lì? 905 00:41:08,930 --> 00:41:12,550 Che cosa significa n rappresenta destra ora, in questo esempio, se avessi mangiare? 906 00:41:12,550 --> 00:41:13,530 >> PUBBLICO: 3. 907 00:41:13,530 --> 00:41:14,520 >> ANDI PENG: 3, esattamente. 908 00:41:14,520 --> 00:41:18,820 Così abbiamo per int i è uguale a nullo, n è uguale a 3, essenzialmente. 909 00:41:18,820 --> 00:41:22,355 E mi è andare a correre fino a quando è meno di 3i ++. 910 00:41:22,355 --> 00:41:24,980 E si sta per andare in sostanza, attraverso e fare la stessa cosa. 911 00:41:24,980 --> 00:41:26,979 Sta andando a stampare ogni valore e darvi 912 00:41:26,979 --> 00:41:29,700 E-A-T. E 'solo che denota una diverso modo di scriverlo. 913 00:41:29,700 --> 00:41:31,170 Che sta per essere molto utile. 914 00:41:31,170 --> 00:41:31,670 Già. 915 00:41:31,670 --> 00:41:35,174 PUBBLICO: Che cosa è i benefici di mettere la n è uguale a termine strlen all'interno che 916 00:41:35,174 --> 00:41:36,894 per il ciclo [incomprensibile]? 917 00:41:36,894 --> 00:41:37,560 ANDI PENG: Sì. 918 00:41:37,560 --> 00:41:44,880 Quindi, se io fossi a-- dire, per esempio, se dovessi farlo e poi 919 00:41:44,880 --> 00:41:51,935 fare-- oop-- che, nel mio codice, sarebbe effettivamente facendo come la stessa cosa. 920 00:41:51,935 --> 00:41:55,060 Tuttavia, il modo in cui David ha spiegato esso durante la lezione, se qualcuno di voi ragazzi 921 00:41:55,060 --> 00:41:57,854 ricordare, è che, come gli esseri umani, come i programmatori, 922 00:41:57,854 --> 00:42:00,270 abbiamo davvero cercare di programmare il nostro codice in modo che il nostro computer ha 923 00:42:00,270 --> 00:42:04,070 a lavorare come minimo possibile, così che il nostro codice è molto efficiente. 924 00:42:04,070 --> 00:42:06,850 >> Quindi, se ho avuto quella lì, che cosa accadrebbe attraverso il mio ciclo for 925 00:42:06,850 --> 00:42:10,790 è che mi piacerebbe prima dichiaro un variabile denominata i sta per essere 0. 926 00:42:10,790 --> 00:42:13,350 Vado a controllare, oh, qual è il strlen di parola? 927 00:42:13,350 --> 00:42:15,000 Oh, il strlen è 3. 928 00:42:15,000 --> 00:42:16,191 Così è che meno di tre? 929 00:42:16,191 --> 00:42:16,690 Si, lo è. 930 00:42:16,690 --> 00:42:17,870 Io vado a correre. 931 00:42:17,870 --> 00:42:21,130 >> E poi la seconda volta indietro intorno il loop, ho intenzione di incrementare i. 932 00:42:21,130 --> 00:42:22,550 i è intenzione di essere uno. 933 00:42:22,550 --> 00:42:25,600 E mi sta andando a controllare, oh, ma qual è la strlen di parola? 934 00:42:25,600 --> 00:42:26,839 Oh, è tre. 935 00:42:26,839 --> 00:42:29,880 E fa che sembrano tipo di spreco, ogni volta che si esegue attraverso il ciclo, 936 00:42:29,880 --> 00:42:33,340 da controllare il funzionamento, anche se le strlen di parola 937 00:42:33,340 --> 00:42:35,490 mai realmente cambia? 938 00:42:35,490 --> 00:42:38,590 >> Quindi è il potere in più per un computer. 939 00:42:38,590 --> 00:42:42,180 Quando si comincia a parlare di cose che sono miliardi e miliardi 940 00:42:42,180 --> 00:42:44,431 e miliardi di posti lungo, immaginate il computer 941 00:42:44,431 --> 00:42:47,430 essere fisicamente e attraverso controllare tutti che ogni singola volta. 942 00:42:47,430 --> 00:42:53,170 Ecco perché, per fare solo per motivi di efficienza, 943 00:42:53,170 --> 00:42:57,620 tendiamo a fare solo questo, perché in questo modo siamo solo 944 00:42:57,620 --> 00:42:59,850 chiamando la funzione una volta all'inizio, 945 00:42:59,850 --> 00:43:01,766 e che ogni volta che passa attraverso sta andando 946 00:43:01,766 --> 00:43:03,789 per memorizzare il valore 3 là, che tu non 947 00:43:03,789 --> 00:43:05,330 deve controllare continuamente ogni volta. 948 00:43:05,330 --> 00:43:05,743 Già. 949 00:43:05,743 --> 00:43:06,409 >> PUBBLICO: Siamo spiacenti. 950 00:43:06,409 --> 00:43:09,070 Basta [incomprensibile]. 951 00:43:09,070 --> 00:43:13,985 Puoi fare int n uguale strlen e mettere che sopra la parte esterna del ciclo for 952 00:43:13,985 --> 00:43:15,364 anche? 953 00:43:15,364 --> 00:43:16,030 ANDI PENG: Sì. 954 00:43:16,030 --> 00:43:17,100 Si potrebbe fare questo, assolutamente. 955 00:43:17,100 --> 00:43:19,970 Il motivo per cui l'abbiamo qui è perché il modo per un ciclo opere 956 00:43:19,970 --> 00:43:23,500 è che si chiama variabile locale nel senso 957 00:43:23,500 --> 00:43:26,150 che tutto ciò che sei creando all'interno del ciclo for 958 00:43:26,150 --> 00:43:27,890 esiste solo all'interno del ciclo for. 959 00:43:27,890 --> 00:43:31,530 >> Quindi la variabile i unico esiste in tali staffe. 960 00:43:31,530 --> 00:43:35,260 Ed ecco le variabili di n anche esiste solo in quelle parentesi. 961 00:43:35,260 --> 00:43:39,350 Quindi, se si sceglie di usare strlen di parola più volte verso il basso al di sotto, 962 00:43:39,350 --> 00:43:42,230 assolutamente il modo migliore per farlo sarebbe quello di dichiarare la cima 963 00:43:42,230 --> 00:43:43,563 quindi non c'è bisogno di farlo una volta. 964 00:43:43,563 --> 00:43:45,420 Già. 965 00:43:45,420 --> 00:43:47,670 PUBBLICO: Perché hai un nuova riga dopo la percentuale 966 00:43:47,670 --> 00:43:51,300 vedere se si vuole mettere tutto le lettere accanto ad essa separate? 967 00:43:51,300 --> 00:43:54,140 >> ANDI PENG: Oh, volevo tutti stampare su ogni riga. 968 00:43:54,140 --> 00:43:54,890 Non ha importanza. 969 00:43:54,890 --> 00:43:55,890 Sì, si tratta di una formattazione. 970 00:43:55,890 --> 00:43:57,181 Questa è una buona domanda, però. 971 00:43:57,181 --> 00:43:59,360 Sì, se volevo stampare tutto su una sola riga, 972 00:43:59,360 --> 00:44:02,731 Non avrei il trattino. 973 00:44:02,731 --> 00:44:03,230 OK. 974 00:44:03,230 --> 00:44:06,880 Tutti bene? 975 00:44:06,880 --> 00:44:07,500 OK. 976 00:44:07,500 --> 00:44:08,000 Cool. 977 00:44:08,000 --> 00:44:12,080 978 00:44:12,080 --> 00:44:14,750 >> Quindi penso che ho parlato abbastanza. 979 00:44:14,750 --> 00:44:20,040 Il turno di voi ragazzi può attraversare il codice e dimmi cosa c'è di sbagliato qui. 980 00:44:20,040 --> 00:44:21,560 Dov'è l'errore? 981 00:44:21,560 --> 00:44:26,920 Quindi, come potete vedere, ho dichiarato un nuova matrice di tipo stringa denominato classe. 982 00:44:26,920 --> 00:44:30,220 E ho immesso Sam, Jess, e Kim in esso. 983 00:44:30,220 --> 00:44:33,400 E sto cercando di stampare tutti gli elementi dell'array. 984 00:44:33,400 --> 00:44:36,796 Qualcuno può dirmi perché questo sta per darmi problemi? 985 00:44:36,796 --> 00:44:39,320 Ti darò ragazzi 10 secondi per pensare a questo. 986 00:44:39,320 --> 00:44:55,490 987 00:44:55,490 --> 00:44:56,619 >> OK. 988 00:44:56,619 --> 00:44:57,118 Sì? 989 00:44:57,118 --> 00:45:01,972 >> AUDIENCE: È il centro sinistra pari a 3 o [incomprensibile]? 990 00:45:01,972 --> 00:45:02,680 ANDI PENG: Giusto. 991 00:45:02,680 --> 00:45:06,784 Quindi, quante volte è questo in realtà andando a correre attraverso questo ciclo? 992 00:45:06,784 --> 00:45:07,620 >> PUBBLICO: Quattro. 993 00:45:07,620 --> 00:45:08,070 >> ANDI PENG: Esattamente. 994 00:45:08,070 --> 00:45:09,445 Sta andando a attraverso quattro volte. 995 00:45:09,445 --> 00:45:12,250 Sta andando a correre attraverso a 0, 1, 2, e 3, 996 00:45:12,250 --> 00:45:15,200 perché il loro elemento è i è minore o uguale a 3. 997 00:45:15,200 --> 00:45:16,960 Non è intenzione di smettere quando è 2. 998 00:45:16,960 --> 00:45:18,800 Sta andando a mantenere andare fino a quando non colpisce 3. 999 00:45:18,800 --> 00:45:21,720 E come sappiamo, c'è solo tre elementi nella nostra gamma attuale. 1000 00:45:21,720 --> 00:45:27,260 >> Se cerchiamo di accedere alla quarta elemento o l'indice di 3, 1001 00:45:27,260 --> 00:45:30,357 si sta andando a colpire da qualche parte in memoria che non esiste. 1002 00:45:30,357 --> 00:45:31,690 Si chiama terminatore null. 1003 00:45:31,690 --> 00:45:32,856 Nulla sarà lì. 1004 00:45:32,856 --> 00:45:35,324 Il computer non sta andando di essere molto felice con te. 1005 00:45:35,324 --> 00:45:36,170 Già. 1006 00:45:36,170 --> 00:45:38,430 Qualcuno ha domande sul perché che stava accadendo? 1007 00:45:38,430 --> 00:45:39,679 Questo è uno spazio comune per evitare. 1008 00:45:39,679 --> 00:45:40,712 Già. 1009 00:45:40,712 --> 00:45:45,777 >> PUBBLICO: Non il primo scorrere anche avere una stringa di 2? 1010 00:45:45,777 --> 00:45:46,360 ANDI PENG: No. 1011 00:45:46,360 --> 00:45:49,610 Quindi, in sostanza, quando si sta facendo un array, 1012 00:45:49,610 --> 00:45:51,540 tale diritto staffa lì, che number-- tutto 1013 00:45:51,540 --> 00:45:53,480 esso sta dicendo voi è come molti elementi che ho. 1014 00:45:53,480 --> 00:45:55,840 Non è in realtà dicendo me gli indici di nulla. 1015 00:45:55,840 --> 00:45:58,760 Quindi, in questo caso, so che voglio a scrivere con tre posti, 1016 00:45:58,760 --> 00:46:02,690 con tre luoghi fisici a tengo quello che voglio tenere. 1017 00:46:02,690 --> 00:46:04,510 Ecco, questo è il motivo per cui il numero tre è lì. 1018 00:46:04,510 --> 00:46:06,560 Tuttavia, se volevo accedere realtà, 1019 00:46:06,560 --> 00:46:11,220 se volevo dire, printf numero staffa di classe, quindi 1020 00:46:11,220 --> 00:46:14,560 si sta andando a mettere effettivamente l'indice fisico lì. 1021 00:46:14,560 --> 00:46:16,330 Sì, buona domanda. 1022 00:46:16,330 --> 00:46:20,065 >> PUBBLICO: Così è la fisica indice dovrebbe essere [incomprensibile]? 1023 00:46:20,065 --> 00:46:20,940 ANDI PENG: Mi dispiace. 1024 00:46:20,940 --> 00:46:21,500 Si può parlare un po '? 1025 00:46:21,500 --> 00:46:24,208 >> PUBBLICO: Così è l'indice fisico [Incomprensibile] ogni casella? 1026 00:46:24,208 --> 00:46:25,260 [Incomprensibile]? 1027 00:46:25,260 --> 00:46:26,040 >> ANDI PENG: Sì. 1028 00:46:26,040 --> 00:46:28,970 Quindi ho intenzione di tornare a destra qui. 1029 00:46:28,970 --> 00:46:31,120 Pensate proprio qui. 1030 00:46:31,120 --> 00:46:32,820 Abbiamo una vasta gamma di dimensioni 3. 1031 00:46:32,820 --> 00:46:35,540 Ci sono tre posti, come, segnaposto fisiche in qui. 1032 00:46:35,540 --> 00:46:37,620 Ma sono chiamati 0, 1, e 2. 1033 00:46:37,620 --> 00:46:40,700 Quindi, se volessi accedervi, il modo in cui li accedo 1034 00:46:40,700 --> 00:46:43,480 è printf di ciò che volevo qui. 1035 00:46:43,480 --> 00:46:45,485 Si dovrebbe stampare il nome di essa, 1036 00:46:45,485 --> 00:46:47,610 perché poi il computer sa, oh, ho bisogno di guardare 1037 00:46:47,610 --> 00:46:51,391 in questo array per l'indice 0. 1038 00:46:51,391 --> 00:46:51,890 Già. 1039 00:46:51,890 --> 00:46:53,306 Ma le dimensioni di esso non cambia. 1040 00:46:53,306 --> 00:46:55,492 La dimensione è di 3, a prescindere di come li etichetta. 1041 00:46:55,492 --> 00:46:58,321 1042 00:46:58,321 --> 00:46:58,820 OK. 1043 00:46:58,820 --> 00:47:01,387 Tutti bene? 1044 00:47:01,387 --> 00:47:02,970 PUBBLICO: Così ogni volta che [incomprensibile]? 1045 00:47:02,970 --> 00:47:06,357 1046 00:47:06,357 --> 00:47:06,940 ANDI PENG: OK. 1047 00:47:06,940 --> 00:47:13,270 Quindi, in questo caso, non lo facciamo davvero entrare in questo momento in corso. 1048 00:47:13,270 --> 00:47:16,760 Ma sapere che un string-- come ho detto prima, una stringa è essenzialmente 1049 00:47:16,760 --> 00:47:18,440 un array di caratteri. 1050 00:47:18,440 --> 00:47:21,430 Quindi, se creo un array di corde, mi tipo di 1051 00:47:21,430 --> 00:47:24,430 hanno una serie di matrice di personaggi, giusto? 1052 00:47:24,430 --> 00:47:27,720 >> Quindi, in questo caso, perché avere una matrice di stringhe, 1053 00:47:27,720 --> 00:47:31,340 se si dovesse inserire un veramente lungo termine, che prende ancora in piedi un solo spazio, 1054 00:47:31,340 --> 00:47:33,230 perché questa è la stringa uno. 1055 00:47:33,230 --> 00:47:37,492 Ma se si dovesse pensare i personaggi di tale matrice, 1056 00:47:37,492 --> 00:47:40,450 poi che sta prendendo un sacco di più caratteri di qualsiasi delle altre parole 1057 00:47:40,450 --> 00:47:41,372 siamo. 1058 00:47:41,372 --> 00:47:42,830 Non è veramente importante per ora. 1059 00:47:42,830 --> 00:47:44,921 Ma questo è solo generale come sta funzionando. 1060 00:47:44,921 --> 00:47:49,750 1061 00:47:49,750 --> 00:47:50,560 >> OK. 1062 00:47:50,560 --> 00:47:55,840 Quindi, questo è qualcosa che farò fare un sacco nel corso del semestre. 1063 00:47:55,840 --> 00:47:57,500 Ho bisogno di riposare la mia voce. 1064 00:47:57,500 --> 00:47:59,530 Voi ragazzi dovete per stimolare voi stessi. 1065 00:47:59,530 --> 00:48:02,300 Molti di voi probabilmente dovuto dormire in questo momento. 1066 00:48:02,300 --> 00:48:05,960 Sto inserendo problemi casuali dove noi, come una classe o si 1067 00:48:05,960 --> 00:48:09,480 con un partner accanto a voi stanno andando per trascorrere un paio di minuti a discutere 1068 00:48:09,480 --> 00:48:14,980 su come dovremmo fare per risolvere o la creazione di un programma come questo. 1069 00:48:14,980 --> 00:48:17,100 >> Quindi in questo momento, vogliamo per creare un program-- 1070 00:48:17,100 --> 00:48:19,560 stiamo andando a chiamare upper.c-- che i convertiti 1071 00:48:19,560 --> 00:48:24,787 una parola minuscola ad una classe superiore maiuscolo string--, mi dispiace. 1072 00:48:24,787 --> 00:48:26,370 Parola nelle stringhe, mi dispiace, è sinonimo. 1073 00:48:26,370 --> 00:48:28,370 Ho intenzione di cambiarle per indicare la stessa cosa. 1074 00:48:28,370 --> 00:48:32,270 1075 00:48:32,270 --> 00:48:33,499 >> Già. 1076 00:48:33,499 --> 00:48:34,540 Prendete un paio di minuti. 1077 00:48:34,540 --> 00:48:37,130 Essa non deve essere scritto in qualsiasi lingua. 1078 00:48:37,130 --> 00:48:39,890 Proprio nel codice o pseudocodice logicamente come avremmo anche 1079 00:48:39,890 --> 00:48:42,083 andare a fare un tale problema. 1080 00:48:42,083 --> 00:48:42,583 Già. 1081 00:48:42,583 --> 00:48:49,881 1082 00:48:49,881 --> 00:48:52,780 >> [CONVERSAZIONE SIDE] 1083 00:48:52,780 --> 00:49:18,680 1084 00:49:18,680 --> 00:49:22,130 >> Ho anche notato che voi ragazzi can-- I tipi di vedo già il programma. 1085 00:49:22,130 --> 00:49:24,600 Credo che la mia mancanza di Modalità presentatore è un problema. 1086 00:49:24,600 --> 00:49:27,410 Ma va bene. 1087 00:49:27,410 --> 00:49:30,410 >> [CONVERSAZIONE SIDE] 1088 00:49:30,410 --> 00:50:03,589 1089 00:50:03,589 --> 00:50:04,380 Sì, per favore, ragazzi. 1090 00:50:04,380 --> 00:50:05,400 Vieni a caramelle. 1091 00:50:05,400 --> 00:50:06,372 Vieni a caramelle. 1092 00:50:06,372 --> 00:50:07,698 >> PUBBLICO: Sì! 1093 00:50:07,698 --> 00:50:09,958 >> [CONVERSAZIONE SIDE] 1094 00:50:09,958 --> 00:50:16,101 1095 00:50:16,101 --> 00:50:18,100 ANDI PENG: Inoltre, sì, Comincerò gettando caramelle 1096 00:50:18,100 --> 00:50:20,280 a persone che non rispondono a domande. 1097 00:50:20,280 --> 00:50:22,260 Così si dovrebbe tutte le domande di risposta. 1098 00:50:22,260 --> 00:50:24,895 O Suppongo che le persone che non rispondere alle domande. 1099 00:50:24,895 --> 00:50:26,070 Sì, viceversa. 1100 00:50:26,070 --> 00:50:28,570 >> [CONVERSAZIONE SIDE] 1101 00:50:28,570 --> 00:51:13,399 1102 00:51:13,399 --> 00:51:14,274 PUBBLICO: [incomprensibile] 1103 00:51:14,274 --> 00:51:17,300 1104 00:51:17,300 --> 00:51:18,340 >> ANDI PENG: Sì. 1105 00:51:18,340 --> 00:51:19,340 Già. 1106 00:51:19,340 --> 00:51:22,840 >> [CONVERSAZIONE SIDE] 1107 00:51:22,840 --> 00:51:40,700 1108 00:51:40,700 --> 00:51:41,590 >> D'accordo, ragazzi. 1109 00:51:41,590 --> 00:51:44,731 Prendiamo, come, più di 10 secondi. 1110 00:51:44,731 --> 00:51:48,210 >> [CONVERSAZIONE SIDE] 1111 00:51:48,210 --> 00:52:10,600 1112 00:52:10,600 --> 00:52:11,750 >> Ok, ragazzi. 1113 00:52:11,750 --> 00:52:14,920 Quindi, prima di iniziare a cercare di effettivamente scrivere fisicamente il codice, 1114 00:52:14,920 --> 00:52:20,650 una buona abitudine per sviluppare è che vogliamo primo tipo di ragione 1115 00:52:20,650 --> 00:52:22,737 logicamente fuori come vorremmo farlo. 1116 00:52:22,737 --> 00:52:24,570 Si vuole fare in modo, prima fisicamente 1117 00:52:24,570 --> 00:52:27,210 iniziare a provare a codificare a Mario, che si fanno 1118 00:52:27,210 --> 00:52:28,870 sicuri di avere il vostro pseudocodice. 1119 00:52:28,870 --> 00:52:31,235 Che si sta prendendo attraverso che cosa è necessario creare così 1120 00:52:31,235 --> 00:52:33,360 che, quando fisicamente scrivere il programma più tardi, 1121 00:52:33,360 --> 00:52:36,640 si è maggiormente in grado di rilevare gli errori nel codice e cose del genere. 1122 00:52:36,640 --> 00:52:40,460 >> Quindi stiamo andando cominciare solo per-- in inglese, in pseudocodice, 1123 00:52:40,460 --> 00:52:43,320 qualcuno vuole dare me una spiegazione generica 1124 00:52:43,320 --> 00:52:46,250 di come saremmo andati a fare questo? 1125 00:52:46,250 --> 00:52:48,102 Già. 1126 00:52:48,102 --> 00:52:49,664 >> PUBBLICO: [incomprensibile]. 1127 00:52:49,664 --> 00:52:50,830 ANDI PENG: Certo, non preoccuparti. 1128 00:52:50,830 --> 00:52:57,233 PUBBLICO: Si può chiedere di o chiedere qualcuno per ottenere stringa 1-- sì, corda, 1129 00:52:57,233 --> 00:52:58,160 e poi-- 1130 00:52:58,160 --> 00:52:59,826 >> ANDI PENG: Sì, quindi questo è un buon inizio. 1131 00:52:59,826 --> 00:53:01,972 Inizierò scrivendo, mi dispiace, come si parla. 1132 00:53:01,972 --> 00:53:02,471 Così-- 1133 00:53:02,471 --> 00:53:05,698 >> PUBBLICO: --il minuscolo i numeri sono più alti, giusto? 1134 00:53:05,698 --> 00:53:08,519 O le lettere minuscole avere numeri elevati? 1135 00:53:08,519 --> 00:53:09,310 ANDI PENG: Esattamente. 1136 00:53:09,310 --> 00:53:16,156 PUBBLICO: Allora sottraiamo 32 da qualunque [incomprensibile]. 1137 00:53:16,156 --> 00:53:28,600 1138 00:53:28,600 --> 00:53:29,870 >> ANDI PENG: Grande. 1139 00:53:29,870 --> 00:53:35,020 Così abbiamo sorta di avere un senso generale di come lavorare su questo problema. 1140 00:53:35,020 --> 00:53:40,060 Sapendo che abbiamo imparato tipo di il modo fisico che le stringhe 1141 00:53:40,060 --> 00:53:43,320 sono memorizzati nella memoria, ciò che si fa già 1142 00:53:43,320 --> 00:53:45,920 sa che si sta andando a probabilmente necessario scrivere nel codice 1143 00:53:45,920 --> 00:53:48,288 al fine di spostare attraverso la stringa? 1144 00:53:48,288 --> 00:53:49,259 >> Destinatari: per ciclo. 1145 00:53:49,259 --> 00:53:50,550 ANDI PENG: Un ciclo for, esattamente. 1146 00:53:50,550 --> 00:53:56,540 1147 00:53:56,540 --> 00:53:57,220 Grande. 1148 00:53:57,220 --> 00:54:00,539 Così abbiamo sorta di avere un generico pseudocodice scritto 1149 00:54:00,539 --> 00:54:02,330 quel tipo di sta dando note sul come si 1150 00:54:02,330 --> 00:54:03,900 sposterebbe di risolvere il problema. 1151 00:54:03,900 --> 00:54:06,150 Ora che avete questo, può fare riferimento per dopo 1152 00:54:06,150 --> 00:54:08,233 quando si sta cercando di in realtà scrivere il codice. 1153 00:54:08,233 --> 00:54:10,240 Così possiamo effettivamente andare qui. 1154 00:54:10,240 --> 00:54:25,130 E ho una funzione chiamata upper.c-- lì è-- di solo un modello vuoto 1155 00:54:25,130 --> 00:54:28,510 proprio ora che voi ragazzi stanno andando a aiutami a capire su come scrivere 1156 00:54:28,510 --> 00:54:30,430 questa linea di non code-- riga di codice. 1157 00:54:30,430 --> 00:54:32,890 Sarà più righe di codice. 1158 00:54:32,890 --> 00:54:35,710 >> Quando si avvia qualsiasi tipo di vuoto pset, qual è 1159 00:54:35,710 --> 00:54:37,418 la prima cosa che mi serve ricordarsi di fare? 1160 00:54:37,418 --> 00:54:39,290 >> PUBBLICO: [incomprensibile]. 1161 00:54:39,290 --> 00:54:41,000 >> ANDI PENG: Grande Yep. 1162 00:54:41,000 --> 00:54:41,500 Includi. 1163 00:54:41,500 --> 00:54:44,850 1164 00:54:44,850 --> 00:54:47,130 stdio.h. 1165 00:54:47,130 --> 00:54:49,640 Spesso questo è uno dei Gli errori più facile persone 1166 00:54:49,640 --> 00:54:51,598 farà quando sono la scrittura, è che faranno 1167 00:54:51,598 --> 00:54:54,180 dimenticare di includere un importante biblioteca di cui hanno bisogno. 1168 00:54:54,180 --> 00:54:57,689 Quindi, se è l'orario d'ufficio e tu sei come, Non so perché il mio codice non funziona. 1169 00:54:57,689 --> 00:54:59,230 Potete dirmi perché non funziona? 1170 00:54:59,230 --> 00:55:00,730 Stiamo per dire hai #include? 1171 00:55:00,730 --> 00:55:02,520 Dovresti #include esso. 1172 00:55:02,520 --> 00:55:03,270 OK. 1173 00:55:03,270 --> 00:55:07,230 >> Così abbiamo la I / O standard qui. 1174 00:55:07,230 --> 00:55:10,740 È che l'unica libreria stiamo andando ad avere bisogno qui? 1175 00:55:10,740 --> 00:55:12,681 Che altro abbiamo intenzione di fare? 1176 00:55:12,681 --> 00:55:13,180 Scusate. 1177 00:55:13,180 --> 00:55:14,562 Qualcuno ha appena urlare fuori? 1178 00:55:14,562 --> 00:55:15,666 >> PUBBLICO: [incomprensibile]. 1179 00:55:15,666 --> 00:55:16,666 ANDI PENG: ci si va. 1180 00:55:16,666 --> 00:55:20,320 1181 00:55:20,320 --> 00:55:21,440 OK. 1182 00:55:21,440 --> 00:55:26,070 E come posso fare per iniziare qualsiasi tipo di funzione, qualsiasi tipo di funzione principale 1183 00:55:26,070 --> 00:55:28,760 nell'ambito del nostro programma? 1184 00:55:28,760 --> 00:55:30,020 Int main. 1185 00:55:30,020 --> 00:55:34,531 1186 00:55:34,531 --> 00:55:35,030 OK. 1187 00:55:35,030 --> 00:55:35,970 Cosa mi metto qui dentro? 1188 00:55:35,970 --> 00:55:37,640 Qual è la prima cosa che vuoi fare? 1189 00:55:37,640 --> 00:55:39,910 Se vogliamo ottenere un stringa dall'utente, 1190 00:55:39,910 --> 00:55:43,870 quello che stiamo andando ad avere da fare su questo prima linea? 1191 00:55:43,870 --> 00:55:46,120 Siamo spiacenti, voi ragazzi solo sentire liberi di parlare e ad alta voce. 1192 00:55:46,120 --> 00:55:47,123 Basta gridare qualunque. 1193 00:55:47,123 --> 00:55:48,772 >> AUDIENCE: Chiedere all'utente? 1194 00:55:48,772 --> 00:55:49,980 ANDI PENG: come possiamo farlo? 1195 00:55:49,980 --> 00:55:51,873 Ask-- sto andando a digitare "chiedere all'utente"? 1196 00:55:51,873 --> 00:55:52,600 >> PUBBLICO: Printf. 1197 00:55:52,600 --> 00:55:54,341 >> ANDI PENG: OK. 1198 00:55:54,341 --> 00:55:54,840 Printf. 1199 00:55:54,840 --> 00:55:57,372 Cosa voglio di printf? 1200 00:55:57,372 --> 00:55:58,776 >> PUBBLICO: digitare qualcosa. 1201 00:55:58,776 --> 00:56:02,760 1202 00:56:02,760 --> 00:56:03,840 >> ANDI PENG: Così? 1203 00:56:03,840 --> 00:56:05,430 Ragazzi, finta come se fossi un computer. 1204 00:56:05,430 --> 00:56:08,475 Fisicamente mi dicono ogni passo che ho bisogno di digitare qui? 1205 00:56:08,475 --> 00:56:09,600 Sto facendo qualcosa di sbagliato? 1206 00:56:09,600 --> 00:56:10,743 Avrei dovuto digitato qualcosa? 1207 00:56:10,743 --> 00:56:11,690 >> PUBBLICO: Avete bisogno di virgolette. 1208 00:56:11,690 --> 00:56:12,380 >> ANDI PENG: ho bisogno di citazioni? 1209 00:56:12,380 --> 00:56:12,880 OK. 1210 00:56:12,880 --> 00:56:15,520 1211 00:56:15,520 --> 00:56:16,297 OK. 1212 00:56:16,297 --> 00:56:17,698 >> PUBBLICO: E poi la nuova linea. 1213 00:56:17,698 --> 00:56:21,434 1214 00:56:21,434 --> 00:56:22,465 Punto e virgola. 1215 00:56:22,465 --> 00:56:23,340 ANDI PENG: Punto e virgola? 1216 00:56:23,340 --> 00:56:24,060 OK. 1217 00:56:24,060 --> 00:56:24,560 Bene. 1218 00:56:24,560 --> 00:56:27,060 >> PUBBLICO: E forse specificare che si desidera in minuscolo? 1219 00:56:27,060 --> 00:56:30,120 1220 00:56:30,120 --> 00:56:31,415 >> ANDI PENG: Grande. 1221 00:56:31,415 --> 00:56:33,540 Voi ragazzi ridere di me dimenticando di mettere un punto e virgola. 1222 00:56:33,540 --> 00:56:36,350 Vi garantisco da qualche parte nel corso di questa classe, 1223 00:56:36,350 --> 00:56:38,260 si dimentica di mettere un punto e virgola, e 1224 00:56:38,260 --> 00:56:41,116 vi porterà tre ore per capire il motivo per cui il codice non funziona. 1225 00:56:41,116 --> 00:56:42,240 E 'successo a tutti noi. 1226 00:56:42,240 --> 00:56:43,950 Sarà probabilmente accadrà a voi. 1227 00:56:43,950 --> 00:56:46,352 Entra in una buona abitudine di utilizzare il punto e virgola. 1228 00:56:46,352 --> 00:56:46,852 OK. 1229 00:56:46,852 --> 00:56:49,010 >> PUBBLICO: Volete per fare il backslash? 1230 00:56:49,010 --> 00:56:50,398 >> ANDI PENG: Certo. 1231 00:56:50,398 --> 00:56:51,856 Vuoi fare il backslash? 1232 00:56:51,856 --> 00:56:53,020 >> PUBBLICO: Sì. 1233 00:56:53,020 --> 00:56:54,330 >> ANDI PENG: Grande. 1234 00:56:54,330 --> 00:56:54,830 OK. 1235 00:56:54,830 --> 00:56:57,872 Che cosa devo fare? 1236 00:56:57,872 --> 00:56:58,964 >> PUBBLICO: Get stringa. 1237 00:56:58,964 --> 00:56:59,880 ANDI PENG: Get stringa. 1238 00:56:59,880 --> 00:57:03,080 1239 00:57:03,080 --> 00:57:03,830 Quindi cosa devo scrivere? 1240 00:57:03,830 --> 00:57:04,233 Qualcuno? 1241 00:57:04,233 --> 00:57:05,040 >> PUBBLICO: String s. 1242 00:57:05,040 --> 00:57:05,873 >> ANDI PENG: String s. 1243 00:57:05,873 --> 00:57:07,251 PUBBLICO: GetString. 1244 00:57:07,251 --> 00:57:09,000 ANDI PENG: Qualcuno, mi puoi dire dove 1245 00:57:09,000 --> 00:57:12,000 questa funzione GetString è venuta da? 1246 00:57:12,000 --> 00:57:13,660 >> PUBBLICO: string.h. 1247 00:57:13,660 --> 00:57:15,256 >> ANDI PENG: string.h? 1248 00:57:15,256 --> 00:57:16,715 Pensi che sia da string.h? 1249 00:57:16,715 --> 00:57:17,830 >> PUBBLICO: [incomprensibile]. 1250 00:57:17,830 --> 00:57:18,830 >> ANDI PENG: ci si va. 1251 00:57:18,830 --> 00:57:21,280 E 'da CS50.h. 1252 00:57:21,280 --> 00:57:24,530 Se stai sempre confusi su dove una file di libreria è o un file di intestazione è, 1253 00:57:24,530 --> 00:57:28,450 google letteralmente string.h, e ti dirò 1254 00:57:28,450 --> 00:57:30,450 quali sono tutte le funzioni che sono in string.h. 1255 00:57:30,450 --> 00:57:31,340 OK. 1256 00:57:31,340 --> 00:57:35,210 >> Così ora che ho creato una stringa e ho richiedere all'utente di esso, 1257 00:57:35,210 --> 00:57:38,770 Ho memorizzato in una variabile di nome s, che cosa devo fare ora? 1258 00:57:38,770 --> 00:57:40,652 >> PUBBLICO: Verificare se è in minuscolo. 1259 00:57:40,652 --> 00:57:41,360 ANDI PENG: Siamo spiacenti? 1260 00:57:41,360 --> 00:57:42,545 PUBBLICO: Verificare se è in minuscolo. 1261 00:57:42,545 --> 00:57:44,045 ANDI PENG: Va bene, facciamo questo. 1262 00:57:44,045 --> 00:57:45,857 Come lo faccio? 1263 00:57:45,857 --> 00:57:47,940 In effetti, ai fini della classe in questo momento, 1264 00:57:47,940 --> 00:57:50,330 stiamo solo andando a supporre che tutto 1265 00:57:50,330 --> 00:57:52,620 che l'ingresso ci si trova già in minuscolo. 1266 00:57:52,620 --> 00:57:55,430 Se si voleva controllare, si farebbe basta aggiungere un'istruzione condizionale 1267 00:57:55,430 --> 00:57:59,640 che controllò, che attraversava ogni elemento unico array 1268 00:57:59,640 --> 00:58:02,540 e controllato se è tra certi valori. 1269 00:58:02,540 --> 00:58:05,627 Ho dimenticato come il numero dei valori di minuscolo sono. 1270 00:58:05,627 --> 00:58:07,210 Si può guardare in su sulla tabella ASCII. 1271 00:58:07,210 --> 00:58:08,800 Ma sì, è davvero un buon punto. 1272 00:58:08,800 --> 00:58:11,758 Ma in questo momento, stiamo solo andando a supporre che tutte le stringhe che di ingresso 1273 00:58:11,758 --> 00:58:13,130 sono in minuscolo. 1274 00:58:13,130 --> 00:58:13,870 OK. 1275 00:58:13,870 --> 00:58:18,069 >> Quindi, come potrei fare per questo problema dopo? 1276 00:58:18,069 --> 00:58:18,860 Destinatari: per ciclo. 1277 00:58:18,860 --> 00:58:19,340 ANDI PENG: ciclo For? 1278 00:58:19,340 --> 00:58:19,839 OK. 1279 00:58:19,839 --> 00:58:20,847 Dimmi cosa digitare. 1280 00:58:20,847 --> 00:58:25,230 >> Destinatari: per int i è uguale a 0. 1281 00:58:25,230 --> 00:58:27,230 >> ANDI PENG: OK. 1282 00:58:27,230 --> 00:58:36,350 >> PUBBLICO: Oh, in realtà, allora si fare una virgola e fare n è uguale strlen. 1283 00:58:36,350 --> 00:58:38,940 >> ANDI PENG: cosa così importante che penso che lei è notato qui 1284 00:58:38,940 --> 00:58:42,936 è che non abbiamo avuto a dire int n la seconda volta abbiamo fatto questo. 1285 00:58:42,936 --> 00:58:45,060 Basta sapere che in una per ciclo quando si sta dichiarando: 1286 00:58:45,060 --> 00:58:47,934 in realtà non è necessario il int di la seconda volta che si esegue una variabile. 1287 00:58:47,934 --> 00:58:51,202 Si può dire n strlen. 1288 00:58:51,202 --> 00:58:52,620 >> PUBBLICO: Di s. 1289 00:58:52,620 --> 00:58:53,510 >> ANDI PENG: s. 1290 00:58:53,510 --> 00:58:54,706 OK. 1291 00:58:54,706 --> 00:58:58,370 >> PUBBLICO: Poi un punto e virgola. 1292 00:58:58,370 --> 00:59:00,130 >> ANDI PENG: Certo. 1293 00:59:00,130 --> 00:59:04,050 >> PUBBLICO: E poi [incomprensibile] n. 1294 00:59:04,050 --> 00:59:07,480 1295 00:59:07,480 --> 00:59:09,460 Poi i ++. 1296 00:59:09,460 --> 00:59:11,780 >> ANDI PENG: Grande. 1297 00:59:11,780 --> 00:59:12,280 Tutto ok. 1298 00:59:12,280 --> 00:59:14,690 Cosa vogliamo dentro di questo ciclo for ora? 1299 00:59:14,690 --> 00:59:17,820 Ricordate, se stiamo andando a correre attraverso una stringa e gestito attraverso una serie, 1300 00:59:17,820 --> 00:59:19,287 vogliamo verificare le cose in esso. 1301 00:59:19,287 --> 00:59:20,370 Che cosa abbiamo intenzione di bisogno? 1302 00:59:20,370 --> 00:59:23,070 1303 00:59:23,070 --> 00:59:26,900 Questo è un po 'la parte difficile ora. 1304 00:59:26,900 --> 00:59:27,960 Qualcuno ha una congettura? 1305 00:59:27,960 --> 00:59:34,160 1306 00:59:34,160 --> 00:59:34,690 >> OK. 1307 00:59:34,690 --> 00:59:37,830 Quindi, prima, come possiamo anche accedere? 1308 00:59:37,830 --> 00:59:41,610 Come abbiamo anche primo controllo o accedere a un elemento dell'array? 1309 00:59:41,610 --> 00:59:42,920 Come lo facciamo? 1310 00:59:42,920 --> 00:59:47,120 Qual è la notazione che usiamo per fare questo? 1311 00:59:47,120 --> 00:59:50,920 Qual è il nome di questo array chiamato? 1312 00:59:50,920 --> 00:59:52,400 Si chiama s, giusto? 1313 00:59:52,400 --> 00:59:54,850 >> Ricorda, qualsiasi stringa è sempre una matrice. 1314 00:59:54,850 --> 00:59:58,210 Staffa in modo s i, giusto? 1315 00:59:58,210 --> 01:00:01,360 Perché questo è il valore corrente o valore di indice stiamo controllando. 1316 01:00:01,360 --> 01:00:05,156 E abbiamo intenzione di impostare la parità a-- vogliamo un valore minuscolo, giusto? 1317 01:00:05,156 --> 01:00:07,530 Vogliamo trasformare questa lower-- scusate, vogliamo un maiuscolo. 1318 01:00:07,530 --> 01:00:10,014 Vogliamo trasformare il minuscolo valore in un maiuscolo. 1319 01:00:10,014 --> 01:00:11,805 E così like-- mi dispiace, come ti chiami? 1320 01:00:11,805 --> 01:00:12,580 >> PUBBLICO: Heidi. 1321 01:00:12,580 --> 01:00:12,940 >> ANDI PENG: Siamo spiacenti? 1322 01:00:12,940 --> 01:00:13,280 >> PUBBLICO: Heidi. 1323 01:00:13,280 --> 01:00:13,988 >> ANDI PENG: Heidi. 1324 01:00:13,988 --> 01:00:15,850 Come ha detto Heidi inizialmente, probabilmente siamo 1325 01:00:15,850 --> 01:00:20,330 andando ad avere bisogno the-- siamo probabilmente andando a sottrarre 1326 01:00:20,330 --> 01:00:22,630 32 da qualunque charc che fa, giusto? 1327 01:00:22,630 --> 01:00:24,680 Perché su un ASCII tabella, la differenza 1328 01:00:24,680 --> 01:00:27,790 tra una lettera minuscola e una lettera maiuscola è 32. 1329 01:00:27,790 --> 01:00:31,290 Così, quando stiamo facendo questo, probabilmente siamo andando a voler sottrarre 32, giusto? 1330 01:00:31,290 --> 01:00:33,910 >> Quindi stiamo andando a fare s i. 1331 01:00:33,910 --> 01:00:37,590 1332 01:00:37,590 --> 01:00:41,200 Ha tutti a capire perché l'ho fatto? 1333 01:00:41,200 --> 01:00:45,760 Perché in questo momento, nel nostro array, stiamo controllando l'indice 0, giusto? 1334 01:00:45,760 --> 01:00:49,190 E nell'indice 0a del stringa, che è il primo carattere. 1335 01:00:49,190 --> 01:00:51,820 E che personaggio stiamo andando ad assumere è minuscolo. 1336 01:00:51,820 --> 01:00:55,980 Se vogliamo rendere maiuscolo, noi deve sottrarre 32 dal suo valore, 1337 01:00:55,980 --> 01:00:58,620 perché nel nostro ASCII tavolo, è così che abbiamo capito 1338 01:00:58,620 --> 01:01:01,600 al successivo corrispondente valore che lo rende maiuscolo. 1339 01:01:01,600 --> 01:01:03,714 Fa capire a tutti che? 1340 01:01:03,714 --> 01:01:04,213 Già. 1341 01:01:04,213 --> 01:01:06,530 >> PUBBLICO: Potresti anche non minuscola minus-- 1342 01:01:06,530 --> 01:01:08,080 >> ANDI PENG: Sì, così che è effettivamente molto buono. 1343 01:01:08,080 --> 01:01:10,455 Ho intenzione di tornare a quel domanda dopo lo facciamo. 1344 01:01:10,455 --> 01:01:11,060 Già. 1345 01:01:11,060 --> 01:01:13,940 E poi se voglio vedere che cosa sta succedendo, 1346 01:01:13,940 --> 01:01:16,180 Probabilmente ho intenzione di desidera stampare, giusto? 1347 01:01:16,180 --> 01:01:19,930 Qualcuno mi dica cosa Voglio stampare qui. 1348 01:01:19,930 --> 01:01:29,160 >> PUBBLICO: printf per cento c backslash [incomprensibile]. 1349 01:01:29,160 --> 01:01:33,570 Questo è il valore di [incomprensibile] s i. 1350 01:01:33,570 --> 01:01:34,614 >> ANDI PENG: s i, scusa? 1351 01:01:34,614 --> 01:01:35,530 PUBBLICO: [incomprensibile]. 1352 01:01:35,530 --> 01:01:38,550 1353 01:01:38,550 --> 01:01:39,550 ANDI PENG: Non lo so. 1354 01:01:39,550 --> 01:01:40,600 Cosa ne pensi? 1355 01:01:40,600 --> 01:01:44,016 >> PUBBLICO: Beh, io wouldn't-- Credo che non avrei bring-- 1356 01:01:44,016 --> 01:01:46,944 Vorrei prendere il dentro, perché [incomprensibile]. 1357 01:01:46,944 --> 01:01:49,726 1358 01:01:49,726 --> 01:01:51,392 ANDI PENG: Oh, l'avrebbe fatto? 1359 01:01:51,392 --> 01:01:53,867 PUBBLICO: Sì. 1360 01:01:53,867 --> 01:01:56,700 ANDI PENG: lasciamo perdere la strada è, e ti spiego perché più tardi. 1361 01:01:56,700 --> 01:01:58,533 Ricordate, anche quando si avere un posto da titolare, 1362 01:01:58,533 --> 01:02:00,701 si vuole mettere parentesi intorno ad esso. 1363 01:02:00,701 --> 01:02:01,200 Tutto ok. 1364 01:02:01,200 --> 01:02:04,810 Quindi questo dovrebbe essere una funzione solida qui. 1365 01:02:04,810 --> 01:02:06,370 Corriamo e vedere se si compila. 1366 01:02:06,370 --> 01:02:08,750 Fai superiore. 1367 01:02:08,750 --> 01:02:09,250 Uh Oh. 1368 01:02:09,250 --> 01:02:12,030 1369 01:02:12,030 --> 01:02:13,340 Che non guarda troppo buono. 1370 01:02:13,340 --> 01:02:14,507 Perché succede questo? 1371 01:02:14,507 --> 01:02:17,340 Come per qualsiasi errore, si vuole andare indietro e iniziare con il primo, 1372 01:02:17,340 --> 01:02:20,630 perché in genere le cause un errore un sacco di altri errori dopo. 1373 01:02:20,630 --> 01:02:26,700 Qui vediamo upper.c: 18: 25, che racconta me in questo programma chiamato upper.c, 1374 01:02:26,700 --> 01:02:33,800 sulla linea 18, l'errore dichiarando implicitamente libreria di funzioni strlen con tipo 1375 01:02:33,800 --> 01:02:36,330 blah unassigned--, non lo so cosa sta succedendo dopo. 1376 01:02:36,330 --> 01:02:39,990 >> Tutto ciò che mi sta dicendo in questo momento è che qualcosa sta succedendo la strlen. 1377 01:02:39,990 --> 01:02:43,520 E il computer è confusa, perché E 'come, non so che cosa strlen è? 1378 01:02:43,520 --> 01:02:45,520 Che cosa significa che, probabilmente, dirti che ti manca? 1379 01:02:45,520 --> 01:02:46,490 >> PUBBLICO: Ti stai perdendo [incomprensibile]. 1380 01:02:46,490 --> 01:02:47,630 >> ANDI PENG: Hai ragione. 1381 01:02:47,630 --> 01:02:49,510 Di preciso. 1382 01:02:49,510 --> 01:02:52,140 Quindi questo è dove è importante assicurarsi 1383 01:02:52,140 --> 01:02:56,970 che ogni funzione si utilizza nella vostra codice sta avendo l'intestazione corretta 1384 01:02:56,970 --> 01:02:59,660 file per la libreria, oppure si sta andando ad ottenere un sacco di errori 1385 01:02:59,660 --> 01:03:01,150 e il codice non sta andando per sapere cosa sta succedendo. 1386 01:03:01,150 --> 01:03:03,050 Quindi stiamo andando a includere string.h qui. 1387 01:03:03,050 --> 01:03:06,270 >> Ora, quando si cerca di compilare superiore. 1388 01:03:06,270 --> 01:03:08,410 Compilare correttamente. 1389 01:03:08,410 --> 01:03:09,960 Corriamo questo programma. 1390 01:03:09,960 --> 01:03:12,000 Quindi digitare qualcosa in minuscolo. 1391 01:03:12,000 --> 01:03:14,920 Che cosa voi ragazzi volete scrivere? 1392 01:03:14,920 --> 01:03:16,546 Shout fuori qualcosa. 1393 01:03:16,546 --> 01:03:17,920 Va bene, Charly appena entrato. 1394 01:03:17,920 --> 01:03:18,990 Ti scriviamo il nome di Charly. 1395 01:03:18,990 --> 01:03:21,670 1396 01:03:21,670 --> 01:03:22,840 >> Charly in minuscolo. 1397 01:03:22,840 --> 01:03:27,742 E si spera, si spera, questo è andando a gridare e sputare fuori 1398 01:03:27,742 --> 01:03:28,575 Charly in maiuscolo. 1399 01:03:28,575 --> 01:03:30,830 Sìì! 1400 01:03:30,830 --> 01:03:33,430 fa capire a tutti come Sono andato circa la risoluzione di questo? 1401 01:03:33,430 --> 01:03:36,190 Il modo in cui posso manipolare utilizzando numeri interi 1402 01:03:36,190 --> 01:03:39,410 per risolvere qualcosa che Voglio fare in stringhe, 1403 01:03:39,410 --> 01:03:44,390 perché i caratteri e interi possono essere fatto riferimento allo stesso modo, perché 1404 01:03:44,390 --> 01:03:45,540 della mappatura ASCII. 1405 01:03:45,540 --> 01:03:52,890 >> Quindi, per tornare al punto, se io voluto mettere qui invece di 32 1406 01:03:52,890 --> 01:03:58,959 A maiuscola meno minuscolo come un che, che funzionerebbe altrettanto bene, 1407 01:03:58,959 --> 01:04:01,750 perché questo è semplicemente il differenza tra questi due valori. 1408 01:04:01,750 --> 01:04:09,570 Se voglio fare questa charly again--. 1409 01:04:09,570 --> 01:04:10,320 Oh no. 1410 01:04:10,320 --> 01:04:11,820 Penso che siamo andati nella direzione sbagliata, sì? 1411 01:04:11,820 --> 01:04:13,260 >> PUBBLICO: [incomprensibile] minuscola. 1412 01:04:13,260 --> 01:04:14,260 >> ANDI PENG: ci si va. 1413 01:04:14,260 --> 01:04:22,380 1414 01:04:22,380 --> 01:04:22,880 Yep. 1415 01:04:22,880 --> 01:04:24,920 E fuori sputa charly. 1416 01:04:24,920 --> 01:04:28,020 Quindi fate attenzione quando si sta sottraendo i valori 1417 01:04:28,020 --> 01:04:30,400 da ricordare che uno è maggiore dell'altra. 1418 01:04:30,400 --> 01:04:35,220 Ad esempio, qui ho dimenticato che è in realtà un minuscolo 1419 01:04:35,220 --> 01:04:38,540 superiore maiuscolo A. Così, quando ho cercato di sottrarre nell'altro senso 1420 01:04:38,540 --> 01:04:40,600 intorno, ho ottenuto negativo 32. 1421 01:04:40,600 --> 01:04:42,800 E il mio computer era come, Non so di cosa si tratta. 1422 01:04:42,800 --> 01:04:45,810 E 'probabilità solo qualche casuale valore che non è molto buono. 1423 01:04:45,810 --> 01:04:48,760 E in modo da assicurarsi che si sta sottraendo la lunghezza corretta 1424 01:04:48,760 --> 01:04:52,831 per trovare il carattere desiderato. 1425 01:04:52,831 --> 01:04:53,330 OK. 1426 01:04:53,330 --> 01:04:58,550 C'è qualcuno confuso su come noi è andato di scrivere questa funzione? 1427 01:04:58,550 --> 01:04:59,180 OK. 1428 01:04:59,180 --> 01:05:04,830 Quindi in realtà, una funzione già esiste nella libreria chiamata ctype.h. 1429 01:05:04,830 --> 01:05:06,417 Chiamato ctype.h della biblioteca. 1430 01:05:06,417 --> 01:05:08,500 Questa funzione è in realtà già scritto per te. 1431 01:05:08,500 --> 01:05:10,820 Si chiama a superiore. 1432 01:05:10,820 --> 01:05:13,027 >> E così per fini questo pset, si sta andando 1433 01:05:13,027 --> 01:05:15,860 per scoprire che si vuole veramente usare molte delle funzioni contenute 1434 01:05:15,860 --> 01:05:17,390 all'interno della libreria ctype. 1435 01:05:17,390 --> 01:05:21,040 Per superiore, per abbassare, è superiore, è lower-- quelle sono tutte le funzioni 1436 01:05:21,040 --> 01:05:24,914 che si sarà in grado di utilizzare molto, molto rapidamente nel proprio codice che 1437 01:05:24,914 --> 01:05:26,080 fa esattamente quello che fa. 1438 01:05:26,080 --> 01:05:28,941 Abbiamo scritto come convertire una stringa in lettere maiuscole. 1439 01:05:28,941 --> 01:05:31,440 Ma questo è in realtà il codice che qualcun altro ha scritto 1440 01:05:31,440 --> 01:05:33,800 e che è possibile accedere tramite una funzione diversa. 1441 01:05:33,800 --> 01:05:34,300 Sì? 1442 01:05:34,300 --> 01:05:39,570 >> PUBBLICO: Quindi, basta copiare un di là e farlo per ogni singola lettera? 1443 01:05:39,570 --> 01:05:42,070 >> ANDI PENG: Sì, perché io non lo faccio preoccupano i valori di a. 1444 01:05:42,070 --> 01:05:44,540 Ho appena interessa che la differenza tra loro è 32, giusto? 1445 01:05:44,540 --> 01:05:48,210 La differenza tra minuscolo b e B maiuscola è anche 32. 1446 01:05:48,210 --> 01:05:50,860 E la differenza tra c e maiuscolo C è sempre 32. 1447 01:05:50,860 --> 01:05:53,235 >> Devo solo preoccuparsi del differenza tra i due, 1448 01:05:53,235 --> 01:05:56,666 perché tutte le lettere seguire lo stesso modello, giusto? 1449 01:05:56,666 --> 01:05:58,540 Se ho la differenza tra di essi, 1450 01:05:58,540 --> 01:06:01,050 So cosa la differenza tra tutti loro è. 1451 01:06:01,050 --> 01:06:01,740 Bella domanda. 1452 01:06:01,740 --> 01:06:04,090 Già. 1453 01:06:04,090 --> 01:06:06,660 Tutti bene? 1454 01:06:06,660 --> 01:06:09,080 OK. 1455 01:06:09,080 --> 01:06:09,580 Oop. 1456 01:06:09,580 --> 01:06:14,380 1457 01:06:14,380 --> 01:06:15,270 >> OK. 1458 01:06:15,270 --> 01:06:20,310 Così un altro concetto che è sta per essere molto utile, come si 1459 01:06:20,310 --> 01:06:22,570 continuare a sviluppare il codice è questa idea 1460 01:06:22,570 --> 01:06:25,430 di creare funzioni o astrazione. 1461 01:06:25,430 --> 01:06:28,479 Quindi in questo momento, tutti abbiamo preso algebra. 1462 01:06:28,479 --> 01:06:31,770 In algebra, vi hanno insegnato che non c'è questa cosa meravigliosa chiamata una funzione 1463 01:06:31,770 --> 01:06:35,300 la macchina, dove se si ingresso un tipo di numero, 1464 01:06:35,300 --> 01:06:38,720 corre attraverso questa meravigliosa funzione e salta fuori un output diverso, giusto? 1465 01:06:38,720 --> 01:06:42,220 Nel codice, la stessa cosa succede in qualsiasi tipo di funzione. 1466 01:06:42,220 --> 01:06:48,230 >> Così ho potuto fisicamente scrivere nel mio corpo del mio codice 1467 01:06:48,230 --> 01:06:52,357 una comunicazione generale che realmente fa qualunque sia il corpo del codice sta facendo. 1468 01:06:52,357 --> 01:06:54,940 Ma al di fuori di questo, posso anche scrivere molte funzioni differenti 1469 01:06:54,940 --> 01:06:56,320 che fanno molte cose diverse. 1470 01:06:56,320 --> 01:06:58,570 Ad esempio, abbiamo già iniziato a utilizzare alcuni di loro. 1471 01:06:58,570 --> 01:07:00,610 Printf-- che è un funzione che qualcun altro 1472 01:07:00,610 --> 01:07:02,870 ha già scritto che possiamo chiamare nel nostro codice. 1473 01:07:02,870 --> 01:07:05,410 Per upper-- in questo caso, upper-- è un'altra funzione 1474 01:07:05,410 --> 01:07:07,330 abbiamo scritto che può chiamare nel nostro codice. 1475 01:07:07,330 --> 01:07:09,520 E quindi credo che il motivo per cui fare abbiamo anche funzioni? 1476 01:07:09,520 --> 01:07:12,100 Perché non solo plop tutti nella stessa riga di codice? 1477 01:07:12,100 --> 01:07:13,730 Lo rende facile per tutti. 1478 01:07:13,730 --> 01:07:19,200 >> Beh, il ragionamento dietro che è, innanzitutto, organizzazione. 1479 01:07:19,200 --> 01:07:21,880 E 'davvero fastidioso andare tramite il codice di qualcuno 1480 01:07:21,880 --> 01:07:25,110 e una funzione come printf. 1481 01:07:25,110 --> 01:07:28,570 Se voi ragazzi in realtà sapeva cosa funzione printf comportato scrivere, 1482 01:07:28,570 --> 01:07:30,530 è, come, 1000 righe di codice. 1483 01:07:30,530 --> 01:07:32,357 >> Se ogni volta che volevo a printf qualcosa, 1484 01:07:32,357 --> 01:07:35,440 Ho dovuto scrivere 1.000 linee di codice, che sarebbe davvero fastidioso per leggere, 1485 01:07:35,440 --> 01:07:36,290 destra? 1486 01:07:36,290 --> 01:07:38,860 È per questo che abbiamo appena creato questa funzione astratta 1487 01:07:38,860 --> 01:07:41,670 che abbiamo già qualcuno altro ha scritto da qualche altra parte. 1488 01:07:41,670 --> 01:07:44,920 E ogni volta che abbiamo bisogno di usarlo in il nostro codice, non ci resta che dire printf. 1489 01:07:44,920 --> 01:07:48,070 E questo è in grado di utilizzare la funzione qualcun altro ha scritto nel nostro codice. 1490 01:07:48,070 --> 01:07:51,020 Rende più facile organizzativamente a leggere il codice. 1491 01:07:51,020 --> 01:07:53,460 >> In secondo luogo, è una semplificazione. 1492 01:07:53,460 --> 01:07:56,750 Semplifica le operazioni che abbiamo a prendere per risolvere il nostro problema. 1493 01:07:56,750 --> 01:07:59,300 Printf, funzioni come printf, funzioni come al superiore 1494 01:07:59,300 --> 01:08:03,560 sono tutte cose che ci permettono di semplificare il nostro codice in giù in modo che sia più facile. 1495 01:08:03,560 --> 01:08:05,830 E ultima cosa è la riusabilità. 1496 01:08:05,830 --> 01:08:08,710 >> Quindi il fatto che abbiamo una funzione chiamata printf 1497 01:08:08,710 --> 01:08:11,990 che possiamo chiamare molti diversi tempi e permette di essere riutilizzabile. 1498 01:08:11,990 --> 01:08:14,980 Se dovessi scrivere printf, Scrivo solo una volta. 1499 01:08:14,980 --> 01:08:16,439 Esiste solo in quella posizione. 1500 01:08:16,439 --> 01:08:19,890 Se avessi voluto farlo di nuovo, vorrei dovere copiare ed incollare tutto questo 1501 01:08:19,890 --> 01:08:21,760 nella mia seconda riga di codice. 1502 01:08:21,760 --> 01:08:24,880 Ecco perché se creiamo una funzione che esiste al di fuori del nostro principale, 1503 01:08:24,880 --> 01:08:26,880 noi possiamo solo invocare e riutilizzarlo quando 1504 01:08:26,880 --> 01:08:29,604 abbiamo bisogno in modo che sia molto più facile per noi come i programmi per scrivere. 1505 01:08:29,604 --> 01:08:32,220 1506 01:08:32,220 --> 01:08:35,549 >> Quindi il modo che avremmo effettivamente scrivere una funzione è molto simile, giusto? 1507 01:08:35,549 --> 01:08:37,590 Questo è il primo tipo di caso in cui ce la faremo 1508 01:08:37,590 --> 01:08:42,830 vedere una funzione di assumere uno stile diversa dalla nostra int void main. 1509 01:08:42,830 --> 01:08:46,779 In questo caso, se volevo scrivere una funzione chiamata q, giusto? 1510 01:08:46,779 --> 01:08:49,370 >> E il valore int qui è tutto me dicendo, 1511 01:08:49,370 --> 01:08:51,649 cosa voglio questo funzione per tornare da me? 1512 01:08:51,649 --> 01:08:54,484 Se voglio un intero cubo, Ho intenzione di voler ingresso. 1513 01:08:54,484 --> 01:08:55,525 Questi sono i parametri. 1514 01:08:55,525 --> 01:08:58,490 Io vado agli ingressi un valore di tipo int. 1515 01:08:58,490 --> 01:09:01,300 E ho intenzione di tornare un altro valore di tipo int. 1516 01:09:01,300 --> 01:09:03,050 E qui, come si può vedere, tutto quello che sto facendo 1517 01:09:03,050 --> 01:09:07,300 è cubatura qualunque il mio ingresso è come la mia uscita e il ritorno. 1518 01:09:07,300 --> 01:09:10,790 >> Quindi tutto questa funzione fa è prende una sorta di numero intero. 1519 01:09:10,790 --> 01:09:14,979 Si moltiplica per sé due volte in modo che in effetti cubi. 1520 01:09:14,979 --> 01:09:17,729 E poi ritorna qualunque essa uscita è. 1521 01:09:17,729 --> 01:09:20,540 Quindi, in questo caso, si tratta di due linee di codice che abbiamo dovuto scrivere più. 1522 01:09:20,540 --> 01:09:22,880 Ma se abbiamo voluto chiamare su questo più volte, 1523 01:09:22,880 --> 01:09:26,210 è molto più facile da digitare che uno Linea proprio qui che è in cubo di 1524 01:09:26,210 --> 01:09:28,830 devono passare attraverso più volte. 1525 01:09:28,830 --> 01:09:34,180 >> Quindi il modo che essenzialmente qualsiasi formattazione per qualsiasi tipo di funzione 1526 01:09:34,180 --> 01:09:36,420 sta per esistere è come qui. 1527 01:09:36,420 --> 01:09:38,659 Così abbiamo il nome della funzione. 1528 01:09:38,659 --> 01:09:39,950 In questo caso, si chiama cubo. 1529 01:09:39,950 --> 01:09:42,033 E noi chiamiamo lo cubo perché è facile da ricordare. 1530 01:09:42,033 --> 01:09:44,220 È possibile assegnare un nome e quadrato può effettivamente essere cubo. 1531 01:09:44,220 --> 01:09:45,500 Non importa. 1532 01:09:45,500 --> 01:09:48,020 Solo un nome che sei Assegnando la funzione. 1533 01:09:48,020 --> 01:09:51,660 >> Questo qui, int, è il tipo del parametro si ha bisogno. 1534 01:09:51,660 --> 01:09:54,149 Così che cosa questa funzione hanno bisogno per funzionare? 1535 01:09:54,149 --> 01:09:55,990 Ebbene, ha bisogno di un input. 1536 01:09:55,990 --> 01:09:56,704 Ho chiamato ingresso. 1537 01:09:56,704 --> 01:09:58,120 È possibile assegnare un nome come volete. 1538 01:09:58,120 --> 01:10:00,500 Ma ho bisogno di qualcosa di tipo int. 1539 01:10:00,500 --> 01:10:03,730 Sta andando a eseguiranno effettivamente tutto ciò che è dentro di qui, 1540 01:10:03,730 --> 01:10:04,990 il corpo della funzione. 1541 01:10:04,990 --> 01:10:07,847 E poi il tipo di ritorno proprio qui, questo int-- 1542 01:10:07,847 --> 01:10:09,680 tutto quello che mi sta dicendo è che questa funzione è 1543 01:10:09,680 --> 01:10:11,250 intenzione di tornare da me in int. 1544 01:10:11,250 --> 01:10:14,460 Così sta andando a prendere in un int, e sta andando a dare indietro un int. 1545 01:10:14,460 --> 01:10:17,750 Fa capire a tutti come il formattazione di questo tipo funziona? 1546 01:10:17,750 --> 01:10:18,250 Cool. 1547 01:10:18,250 --> 01:10:24,690 1548 01:10:24,690 --> 01:10:25,740 >> OK. 1549 01:10:25,740 --> 01:10:31,770 Quindi non essere preoccupato se questo sembra un po 'di diritto astratto ora. 1550 01:10:31,770 --> 01:10:33,450 Questo è qualcosa che parleremo. 1551 01:10:33,450 --> 01:10:36,310 Ci immergeremo nel più profondo più avanti nel corso. 1552 01:10:36,310 --> 01:10:41,170 Il modo che qualsiasi tipo di livello superiore l'astrazione di queste cose funzionano 1553 01:10:41,170 --> 01:10:43,530 è che, in memoria, in il computer, tutto 1554 01:10:43,530 --> 01:10:47,660 è memorizzato in questo tipo di stack, devo dire. 1555 01:10:47,660 --> 01:10:49,070 >> Così lassù in cima. 1556 01:10:49,070 --> 01:10:50,861 Non so se si ragazzi possono vedere che bene. 1557 01:10:50,861 --> 01:10:52,590 Cercherò per ingrandire. 1558 01:10:52,590 --> 01:10:55,111 Qui in alto, abbiamo avere il testo fisico 1559 01:10:55,111 --> 01:10:57,860 di ciò che il computer è interpreting-- tutti gli zeri e quelli che 1560 01:10:57,860 --> 01:10:59,540 esistono all'interno del nostro computer. 1561 01:10:59,540 --> 01:11:03,390 E poi abbiamo il inizializzato dati e dati non inizializzati, 1562 01:11:03,390 --> 01:11:05,340 ciò che noi chiamiamo le variabili globali. 1563 01:11:05,340 --> 01:11:08,200 Quindi variabili che esistono tutti i programmi 1564 01:11:08,200 --> 01:11:11,815 e tutta la vostra, essenzialmente, codice. 1565 01:11:11,815 --> 01:11:13,940 Nessun problema se voi ragazzi siete tipo di chiaro su questo. 1566 01:11:13,940 --> 01:11:16,060 Non ha molta importanza in questo momento. 1567 01:11:16,060 --> 01:11:18,680 >> E poi abbiamo ciò che è chiamato un mucchio in una pila. 1568 01:11:18,680 --> 01:11:21,140 Pensate a una pila letteralmente come proprio come una pila di cose, 1569 01:11:21,140 --> 01:11:23,098 una pila di diverso cose che sono spinti in cima 1570 01:11:23,098 --> 01:11:27,870 di ogni altro che memorizzano i vari variabili e sintassi all'interno del codice. 1571 01:11:27,870 --> 01:11:31,460 E poi qui in fondo, abbiamo le variabili d'ambiente 1572 01:11:31,460 --> 01:11:35,480 di ciò che si sta eseguendo all'interno solo la tua piccola linea di codice. 1573 01:11:35,480 --> 01:11:40,510 >> E stiamo solo andando per ingrandire in parte reale stack. 1574 01:11:40,510 --> 01:11:43,880 Così proprio qui, se dovessimo per ingrandire in solo su questa zona della pila, 1575 01:11:43,880 --> 01:11:45,140 questo è quello che sembra. 1576 01:11:45,140 --> 01:11:48,590 E questo è in realtà piuttosto importante quando si parla di ragazzi le funzioni, 1577 01:11:48,590 --> 01:11:52,330 perché nota che la memoria del computer 1578 01:11:52,330 --> 01:11:55,600 è memorizzare le variabili e le funzioni 1579 01:11:55,600 --> 01:11:58,790 ei parametri sia vostro la funzione e le variabili principali 1580 01:11:58,790 --> 01:12:00,190 in luoghi diversi. 1581 01:12:00,190 --> 01:12:03,390 >> Così adesso, è principale la funzione reale 1582 01:12:03,390 --> 01:12:04,780 che si sta eseguendo in un codice. 1583 01:12:04,780 --> 01:12:08,050 Hai suoi parametri memorizzati qui e le sue variabili locali memorizzati qui. 1584 01:12:08,050 --> 01:12:12,270 Variabile locale significa semplicemente qualsiasi variabile che esistono solo all'interno di tale funzione. 1585 01:12:12,270 --> 01:12:15,610 E su di esso, si dispone di questo funzione separata denominata cubo. 1586 01:12:15,610 --> 01:12:18,240 Avete che è parametri così come quei locali. 1587 01:12:18,240 --> 01:12:21,540 >> E la ragione è possibile vedi qui è che ciò che 1588 01:12:21,540 --> 01:12:25,030 succede quando cubo prende in un valore da una funzione principale 1589 01:12:25,030 --> 01:12:27,640 è che in realtà si sta copiando che oltre. 1590 01:12:27,640 --> 01:12:31,470 Quindi, se volessi cubo 2 e 8 di ritorno, che 2 1591 01:12:31,470 --> 01:12:33,730 è in realtà immesso come parametro ed è 1592 01:12:33,730 --> 01:12:37,690 copiati in modo che lo avete già esistente in due posti diversi in memoria. 1593 01:12:37,690 --> 01:12:40,520 E bisogna essere molto attenti on ricordare quale uno di quelli 1594 01:12:40,520 --> 01:12:42,520 si sta effettivamente manipolando. 1595 01:12:42,520 --> 01:12:47,170 E un esempio di ciò che è accaduto che sarebbe molto, molto male 1596 01:12:47,170 --> 01:12:48,050 esiste proprio qui. 1597 01:12:48,050 --> 01:12:50,760 1598 01:12:50,760 --> 01:12:58,650 >> Così proprio qui, ho avuto, in teoria, un programma proprio qui, una funzione principale 1599 01:12:58,650 --> 01:13:02,180 che sto dichiarando un int x è uguale a 1. 1600 01:13:02,180 --> 01:13:04,505 Sto dichiarando un altro int y è uguale a 2. 1601 01:13:04,505 --> 01:13:06,380 E poi Sono in esecuzione tramite questa funzione 1602 01:13:06,380 --> 01:13:09,647 chiamata di swap, dove presumo che è scambiando i due valori. 1603 01:13:09,647 --> 01:13:11,480 E poi ho intenzione di stamparli, giusto? 1604 01:13:11,480 --> 01:13:13,220 Questo è quello che voglio questo programma di fare. 1605 01:13:13,220 --> 01:13:15,180 >> Quindi cerchiamo di venire giù e dare un'occhiata. 1606 01:13:15,180 --> 01:13:18,200 Quindi, se ho effettivamente scritto un diverso la funzione, come potete vedere, 1607 01:13:18,200 --> 01:13:19,750 abbiamo la nostra funzione principale qui. 1608 01:13:19,750 --> 01:13:22,860 E poi abbiamo il nostro seconda funzione qui. 1609 01:13:22,860 --> 01:13:24,520 Void swap. 1610 01:13:24,520 --> 01:13:27,090 Vuoto significa solo che è non andare a restituire nulla. 1611 01:13:27,090 --> 01:13:28,930 Il nome della funzione è chiamato scambio, ed è 1612 01:13:28,930 --> 01:13:33,730 andando ad aspirazione due variabili, int a e int b, dalla funzione [incomprensibile]. 1613 01:13:33,730 --> 01:13:39,010 >> Quindi, in sostanza, qui, siamo passando xey in questa funzione. 1614 01:13:39,010 --> 01:13:40,760 E se dovessimo Creiamo questo-- quindi vogliamo 1615 01:13:40,760 --> 01:13:42,420 per creare un valore temporaneo, giusto? 1616 01:13:42,420 --> 01:13:43,930 Stiamo andando a assegnare tale ad una. 1617 01:13:43,930 --> 01:13:45,388 E poi una sta per ora uguali b. 1618 01:13:45,388 --> 01:13:47,660 E b sta per essere di nuovo dove il valore temperatura era, 1619 01:13:47,660 --> 01:13:51,070 che è una, perché quando si desidera scambiare le cose, 1620 01:13:51,070 --> 01:13:52,320 non si può semplicemente come loro scambiare. 1621 01:13:52,320 --> 01:13:54,360 >> Devi tenere uno fuori qui in modo che ricorda 1622 01:13:54,360 --> 01:13:56,485 cosa che è, perché una volta si scambiano uno, si dimentica 1623 01:13:56,485 --> 01:13:58,200 cosa che il valore originale era, giusto? 1624 01:13:58,200 --> 01:14:00,990 Quindi, in teoria, questo programma dovrebbe funzionare, giusto? 1625 01:14:00,990 --> 01:14:03,630 Se volevo scambiare il due, dovrebbero scambiare. 1626 01:14:03,630 --> 01:14:05,490 Quindi cerchiamo di eseguirlo e vedere se funziona. 1627 01:14:05,490 --> 01:14:11,130 1628 01:14:11,130 --> 01:14:16,940 >> Così come voi potete vedere, x era una volta uno e una volta era y 2. 1629 01:14:16,940 --> 01:14:21,475 E se stampo fuori, x è ancora 1 ey è 2. 1630 01:14:21,475 --> 01:14:25,970 Hmm, questo programma non sembra essere lavorare il modo in cui voglio farlo funzionare. 1631 01:14:25,970 --> 01:14:29,950 Qualcuno ha voglia di prendere un colpo a indovinare perché questo stava accadendo? 1632 01:14:29,950 --> 01:14:34,430 Ha a che fare con il modo che le cose sono diverse 1633 01:14:34,430 --> 01:14:38,172 conservati in luoghi diversi in memoria. 1634 01:14:38,172 --> 01:14:39,377 >> OK. 1635 01:14:39,377 --> 01:14:41,960 Così voi ragazzi non devono preoccuparsi troppo di questo adesso. 1636 01:14:41,960 --> 01:14:46,610 Ma sapere che il cubo di locali variabili erano a e b, 1637 01:14:46,610 --> 01:14:49,230 perché qui in nostra funzione, abbiamo dichiarato a e b 1638 01:14:49,230 --> 01:14:53,570 come le variabili che esistono all'interno del cubo, tale funzione. 1639 01:14:53,570 --> 01:14:59,490 Ma come si può vedere, i parametri sta prendendo in venivano immagazzinati qui. 1640 01:14:59,490 --> 01:15:01,370 Ma non eravamo in realtà tornando nulla. 1641 01:15:01,370 --> 01:15:03,120 Non siamo stati in realtà cambiando xe y. 1642 01:15:03,120 --> 01:15:04,440 Stavamo solo cambiando a e b. 1643 01:15:04,440 --> 01:15:08,340 >> Avevamo copiato xey in cosa chiamata e b. 1644 01:15:08,340 --> 01:15:11,092 Ma non abbiamo mai realmente manipolato xey stessi. 1645 01:15:11,092 --> 01:15:12,800 Sei ragazzi vedendo come che sta succedendo? 1646 01:15:12,800 --> 01:15:16,140 È che abbiamo semplicemente copiato esso sopra, ma non abbiamo in realtà mantenuto 1647 01:15:16,140 --> 01:15:18,030 traccia di dove si trovavano nella memoria. 1648 01:15:18,030 --> 01:15:20,127 >> E così ora il computer sta cercando, oh, ho 1649 01:15:20,127 --> 01:15:21,960 eseguire questa cosa attraverso questa bella funzionalità. 1650 01:15:21,960 --> 01:15:23,690 Ma xey sono ancora xe y. 1651 01:15:23,690 --> 01:15:26,240 Non è successo niente a loro a causa del fatto 1652 01:15:26,240 --> 01:15:28,340 che tali parametri e le variabili locali 1653 01:15:28,340 --> 01:15:30,150 sono memorizzati in un diverso inserire in memoria. 1654 01:15:30,150 --> 01:15:32,030 E questo è un livello superiore concetto che faremo 1655 01:15:32,030 --> 01:15:34,300 iniziare a vedere più avanti nel corso. 1656 01:15:34,300 --> 01:15:36,950 Ma è sufficiente sapere che questo è un problema che può accadere 1657 01:15:36,950 --> 01:15:41,400 e che faremo capire modi su come affrontare questo più avanti nel corso. 1658 01:15:41,400 --> 01:15:41,900 OK. 1659 01:15:41,900 --> 01:15:47,750 1660 01:15:47,750 --> 01:15:48,250 Tutto ok. 1661 01:15:48,250 --> 01:15:51,780 Così l'ultimo concetto siamo davvero andando a coprire 1662 01:15:51,780 --> 01:15:53,880 che sta per essere utile per il pset questa settimana 1663 01:15:53,880 --> 01:15:56,060 sono quelli che vengono chiamati argomenti della riga di comando. 1664 01:15:56,060 --> 01:16:00,820 Così Rob nella sua conferenza ha attraversato tipo di brevemente come funzionano. 1665 01:16:00,820 --> 01:16:02,770 In sostanza sapere che quando si scrive 1666 01:16:02,770 --> 01:16:06,280 come una funzione principale, quando funzioni scritto prima in passato, 1667 01:16:06,280 --> 01:16:07,804 abbiamo avuto int void main. 1668 01:16:07,804 --> 01:16:10,470 E il motivo per cui abbiamo avuto nulla lì era perché i nostri programmi non hanno fatto 1669 01:16:10,470 --> 01:16:12,520 bisogno di valori di input per l'esecuzione, giusto? 1670 01:16:12,520 --> 01:16:16,020 Quando ho eseguito Mario, non ho bisogno in realtà basta digitare in qualcosa 1671 01:16:16,020 --> 01:16:16,970 quando mi sono imbattuto Mario. 1672 01:16:16,970 --> 01:16:20,170 Potrei richiedere all'utente in seguito. 1673 01:16:20,170 --> 01:16:22,450 Ma non sarà sempre così. 1674 01:16:22,450 --> 01:16:24,980 >> Ad esempio, in questo problema settimana imposta, 1675 01:16:24,980 --> 01:16:28,365 si sta andando ad essere chiesto che, in Oltre a eseguire il programma, 1676 01:16:28,365 --> 01:16:30,990 si sta andando a voler ingresso certe cose in rettilineo, come si 1677 01:16:30,990 --> 01:16:32,050 eseguire il programma. 1678 01:16:32,050 --> 01:16:34,720 Così il nostro modo di fare che si chiama un argomento della riga di comando, che 1679 01:16:34,720 --> 01:16:37,280 è come un argomento è possibile inserire direttamente 1680 01:16:37,280 --> 01:16:39,260 come si sta cercando di eseguire il programma. 1681 01:16:39,260 --> 01:16:44,680 >> Così la notazione per questo, è piuttosto complesso bello, 1682 01:16:44,680 --> 01:16:47,320 ma in realtà non è che difficile. Così int main-- 1683 01:16:47,320 --> 01:16:48,910 questa è solo la funzione principale. 1684 01:16:48,910 --> 01:16:52,110 In argc virgola parentesi stringa argv. 1685 01:16:52,110 --> 01:16:56,040 Quindi tutto quello che sta dicendo è che questo int argc-- tutto quello che è che ti dice 1686 01:16:56,040 --> 01:17:00,560 è che questi sono il numero di argomenti il ​​computer deve aspettarsi. 1687 01:17:00,560 --> 01:17:03,130 >> Quindi, una cosa che è davvero importante tenere traccia di 1688 01:17:03,130 --> 01:17:07,080 è il nome fisico del programma conta come uno di questi argomenti. 1689 01:17:07,080 --> 01:17:11,080 Quindi, se volevo avere il mio programma eseguire più una riga di comando aggiuntiva 1690 01:17:11,080 --> 01:17:13,310 argomento, realtà sono andando ad avere due. 1691 01:17:13,310 --> 01:17:15,080 Argc in realtà sta per essere due. 1692 01:17:15,080 --> 01:17:18,010 E poi stringa argv bracket-- tutto ciò che sta facendo, 1693 01:17:18,010 --> 01:17:20,410 mi sta dando un array di stringhe che è 1694 01:17:20,410 --> 01:17:24,870 andando a mostrare solo quello che e memorizzare tutti questi argomenti della riga di comando sono. 1695 01:17:24,870 --> 01:17:34,090 >> Così, per esempio, se volevo avere questo programma, ./copy infile outfile, giusto? 1696 01:17:34,090 --> 01:17:37,330 Questo è solo un tipico comando di Linux. 1697 01:17:37,330 --> 01:17:38,830 Che in realtà è argc? 1698 01:17:38,830 --> 01:17:41,320 Quanti argomenti della riga di comando ci sono in realtà in tutto questo? 1699 01:17:41,320 --> 01:17:45,130 Tutto questo non fa altro che creare una copia di un infile del nome di un file 1700 01:17:45,130 --> 01:17:47,070 e lo copia in un altro file, giusto? 1701 01:17:47,070 --> 01:17:48,700 Questo è tutto ciò sta facendo. 1702 01:17:48,700 --> 01:17:53,080 Come potete vedere, lo sto facendo su una linea senza realmente bisogno il programma. 1703 01:17:53,080 --> 01:17:55,380 >> Qual è il nostro argc in questo caso? 1704 01:17:55,380 --> 01:17:58,968 Quanti argomenti abbiamo? 1705 01:17:58,968 --> 01:17:59,634 PUBBLICO: Three? 1706 01:17:59,634 --> 01:18:01,200 ANDI PENG: abbiamo tre, esattamente. 1707 01:18:01,200 --> 01:18:05,030 Quindi è molto intuitivo da basti pensare che è solo 1708 01:18:05,030 --> 01:18:06,290 il infile e la outfile. 1709 01:18:06,290 --> 01:18:10,190 Ma sapere che il nome fisico del programma che si sta eseguendo conta come uno. 1710 01:18:10,190 --> 01:18:13,220 Quindi, in questo caso, argc è in realtà tre. 1711 01:18:13,220 --> 01:18:15,860 Che ne dite, che cosa è argv 0? 1712 01:18:15,860 --> 01:18:18,180 Ricordate, tutti i argomenti della riga di comando 1713 01:18:18,180 --> 01:18:20,500 sono stati immagazzinati in un array di stringhe. 1714 01:18:20,500 --> 01:18:24,140 Quindi, se cerco di accedervi, cosa sarebbe argv staffa 0 darmi? 1715 01:18:24,140 --> 01:18:25,364 >> PUBBLICO: [incomprensibile]. 1716 01:18:25,364 --> 01:18:26,155 ANDI PENG: Esattamente. 1717 01:18:26,155 --> 01:18:28,550 Mi avrebbe dato il punto tagliare la copia, perché è 1718 01:18:28,550 --> 01:18:31,070 l'elemento 0, il primo elemento della mia matrice. 1719 01:18:31,070 --> 01:18:33,236 Che dire argv 1? 1720 01:18:33,236 --> 01:18:33,945 >> PUBBLICO: Infile. 1721 01:18:33,945 --> 01:18:35,070 ANDI PENG: Infile, esattamente. 1722 01:18:35,070 --> 01:18:36,272 Che dire di argv 2? 1723 01:18:36,272 --> 01:18:37,022 PUBBLICO: outfile. 1724 01:18:37,022 --> 01:18:38,190 ANDI PENG: outfile. 1725 01:18:38,190 --> 01:18:39,290 Questo è un po 'difficile ora. 1726 01:18:39,290 --> 01:18:42,630 Cosa ne pensate voi ragazzi argv 3 sta per essere dandomi 1727 01:18:42,630 --> 01:18:45,522 se ho cercato di stampare quello fuori? 1728 01:18:45,522 --> 01:18:48,260 >> PUBBLICO: [incomprensibile]? 1729 01:18:48,260 --> 01:18:50,164 >> ANDI PENG: Hai avuto una mano? 1730 01:18:50,164 --> 01:18:50,663 Già. 1731 01:18:50,663 --> 01:18:51,550 >> PUBBLICO: Un'alternativa. 1732 01:18:51,550 --> 01:18:52,341 >> ANDI PENG: Esattamente. 1733 01:18:52,341 --> 01:18:55,440 Quindi ricorda in conferenza che abbiamo avere alla fine di una gara qualcosa 1734 01:18:55,440 --> 01:18:56,640 chiamata terminatore null? 1735 01:18:56,640 --> 01:18:58,890 Arriveremo a questo anche più avanti nella classe. 1736 01:18:58,890 --> 01:19:02,472 Ma sapere che nella notazione, il modo in cui il computer 1737 01:19:02,472 --> 01:19:04,430 sa che è la fine dell'array è che 1738 01:19:04,430 --> 01:19:07,310 mette qualcosa chiamato un nullo terminatore o un trattino zero. 1739 01:19:07,310 --> 01:19:12,047 >> Quindi, se si tenta di accedere argv 3, si sta andando a colpire questo cruscotto 0. 1740 01:19:12,047 --> 01:19:13,630 Ciò è ancor più di una domanda trabocchetto. 1741 01:19:13,630 --> 01:19:17,020 Che dire argv 4? 1742 01:19:17,020 --> 01:19:20,920 Quindi questo è passato terminatore nullo, oltre i limiti della nostra matrice. 1743 01:19:20,920 --> 01:19:24,380 Cosa pensi sta per succede quando cerchiamo di farlo? 1744 01:19:24,380 --> 01:19:25,842 >> PUBBLICO: [incomprensibile]? 1745 01:19:25,842 --> 01:19:26,550 ANDI PENG: Siamo spiacenti? 1746 01:19:26,550 --> 01:19:28,025 Dire che un po 'più forte? 1747 01:19:28,025 --> 01:19:29,086 >> PUBBLICO: [incomprensibile]. 1748 01:19:29,086 --> 01:19:29,710 ANDI PENG: Sì. 1749 01:19:29,710 --> 01:19:32,420 Questo è il nome del zona che molto probabilmente ottenere. 1750 01:19:32,420 --> 01:19:36,610 Ma sapere che argv 4-- che si permette di accesso 1751 01:19:36,610 --> 01:19:38,610 posti nel vostro computer di memoria che si ha realmente 1752 01:19:38,610 --> 01:19:41,650 non dovrebbe essere toccante, perché Per ora si sa che cosa è argv. 1753 01:19:41,650 --> 01:19:46,220 Voi sapete che si tratta di un array di dimensione 3 che ha la copia puntino, infile e outfile. 1754 01:19:46,220 --> 01:19:50,200 >> Se si tenta di andare così lontano oltre quello che sei oltre il terminatore null, 1755 01:19:50,200 --> 01:19:53,050 il computer ha probabilmente qualcosa memorizzato in argv 4. 1756 01:19:53,050 --> 01:19:55,790 E davvero non dovrebbe essere consentito l'accesso in argv 4, 1757 01:19:55,790 --> 01:19:58,130 perché si ha un file cabinet e tu sei solo 1758 01:19:58,130 --> 01:19:59,790 consentito l'accesso a queste tre ripiani. 1759 01:19:59,790 --> 01:20:02,870 Ma se si tenta di raggiungere ben oltre il ripiano di dove è permesso, 1760 01:20:02,870 --> 01:20:04,930 si sta andando ad iniziare a fare scherzi con altre cose nella memoria del computer. 1761 01:20:04,930 --> 01:20:06,690 Che sta per essere molto, molto male. 1762 01:20:06,690 --> 01:20:07,440 Quindi è sufficiente sapere che. 1763 01:20:07,440 --> 01:20:10,370 Fate molta attenzione che si non solo iniziare a caso 1764 01:20:10,370 --> 01:20:14,772 accedere agli elementi in un array non erano in quello che si voleva creare. 1765 01:20:14,772 --> 01:20:17,114 Yep. 1766 01:20:17,114 --> 01:20:18,430 >> OK. 1767 01:20:18,430 --> 01:20:26,360 Quindi stiamo andando a fare un altro esempio terminale qui. 1768 01:20:26,360 --> 01:20:27,300 OK. 1769 01:20:27,300 --> 01:20:29,900 Così Rob rapidamente in conferenza l'altro giorno è andato 1770 01:20:29,900 --> 01:20:35,040 attraverso questo esempio, dove aveva int main int argc stringa argv 1771 01:20:35,040 --> 01:20:39,090 staffe, che mi sta dicendo che io sono andando ad avere argomenti della riga di comando. 1772 01:20:39,090 --> 01:20:41,860 >> Egli ha, se argc uguale uguale 2-- ricordo, 1773 01:20:41,860 --> 01:20:45,070 uguale uguali significa confronto. 1774 01:20:45,070 --> 01:20:47,980 Se è uguale a 2, allora sono andare in stampa ciao, 1775 01:20:47,980 --> 01:20:51,190 qualunque sia la prima elemento dell'array è. 1776 01:20:51,190 --> 01:20:54,100 Stampa Altrimenti, ciao mondo. 1777 01:20:54,100 --> 01:20:56,300 Che cosa è questa intenzione di accadere essenzialmente? 1778 01:20:56,300 --> 01:21:00,570 Qualcuno può solo spiegare in Inglese quello che questo programma sta facendo? 1779 01:21:00,570 --> 01:21:01,272 Già. 1780 01:21:01,272 --> 01:21:08,160 >> PUBBLICO: Se qualcuno digitato un comando e ha detto che il loro nome e cognome, 1781 01:21:08,160 --> 01:21:12,096 non sarà solo stampare il prima e dire ciao, 1782 01:21:12,096 --> 01:21:14,090 qualunque sia il tuo nome è. 1783 01:21:14,090 --> 01:21:15,410 >> ANDI PENG: OK, andiamo eseguirlo. 1784 01:21:15,410 --> 01:21:22,470 Così, per esempio, se dovessi fare questo file fare ciao ciao a-- 1785 01:21:22,470 --> 01:21:24,500 a-- cosa mi desidera introdurre? 1786 01:21:24,500 --> 01:21:25,900 >> PUBBLICO: Nome e cognome. 1787 01:21:25,900 --> 01:21:27,280 >> ANDI PENG: Nome e cognome? 1788 01:21:27,280 --> 01:21:28,180 Spazi? 1789 01:21:28,180 --> 01:21:29,690 >> PUBBLICO: Sì. 1790 01:21:29,690 --> 01:21:33,490 >> ANDI PENG: Qualcuno può dire me in questo momento, che cosa è argc? 1791 01:21:33,490 --> 01:21:35,630 Proprio lì? 1792 01:21:35,630 --> 01:21:36,290 Oops, scusa. 1793 01:21:36,290 --> 01:21:37,920 Lasciami andare indietro. 1794 01:21:37,920 --> 01:21:40,740 Quanti argomenti della riga di comando si are-- ragazzi non possono veramente vedere. 1795 01:21:40,740 --> 01:21:43,760 Ma cercherò per ingrandire. 1796 01:21:43,760 --> 01:21:44,290 Sto cercando. 1797 01:21:44,290 --> 01:21:45,414 Sì, ci sono tre, giusto? 1798 01:21:45,414 --> 01:21:48,750 E 'barra puntino ciao, è Andi, ed è Peng. 1799 01:21:48,750 --> 01:21:51,870 >> Allora, cosa ne pensate questo programma sta per essere stampare? 1800 01:21:51,870 --> 01:21:55,550 1801 01:21:55,550 --> 01:21:56,060 Oh. 1802 01:21:56,060 --> 01:21:57,120 Oh scusa. 1803 01:21:57,120 --> 01:21:57,810 Nome sbagliato. 1804 01:21:57,810 --> 01:22:03,630 1805 01:22:03,630 --> 01:22:06,130 E 'la stampa fuori, ciao mondo. 1806 01:22:06,130 --> 01:22:09,603 Qualcuno vuole spiegare perché quello che sta succedendo? 1807 01:22:09,603 --> 01:22:10,103 Sì? 1808 01:22:10,103 --> 01:22:11,019 >> PUBBLICO: [incomprensibile]. 1809 01:22:11,019 --> 01:22:14,439 1810 01:22:14,439 --> 01:22:15,230 ANDI PENG: Esattamente. 1811 01:22:15,230 --> 01:22:19,940 Così qui, sono condizionale è, se argc è uguale uguale a 2. 1812 01:22:19,940 --> 01:22:23,650 Così solo nel caso che ci sia due argomenti della riga di comando. 1813 01:22:23,650 --> 01:22:25,850 Poi ho intenzione di stampare, ciao, qualunque essa sia. 1814 01:22:25,850 --> 01:22:28,210 Ma il resto, ho intenzione di stampare solo, ciao mondo. 1815 01:22:28,210 --> 01:22:30,040 Così fa qualcuno vuole a farmi un esempio 1816 01:22:30,040 --> 01:22:35,050 di come sarebbe in grado di realtà farlo stampare il valore di argv 1? 1817 01:22:35,050 --> 01:22:38,600 >> Che cosa dovrei inserire qui? 1818 01:22:38,600 --> 01:22:39,840 Solo una cosa, giusto? 1819 01:22:39,840 --> 01:22:42,900 Perché il punto per ciao già conta come il primo argomento. 1820 01:22:42,900 --> 01:22:43,930 Ho solo un altro. 1821 01:22:43,930 --> 01:22:46,470 Quindi dot ciao se mi limito a fare Andi. 1822 01:22:46,470 --> 01:22:47,270 Ciao, Andi. 1823 01:22:47,270 --> 01:22:49,186 Non tutti a capire perché quello che sta succedendo? 1824 01:22:49,186 --> 01:22:49,602 Già. 1825 01:22:49,602 --> 01:22:52,500 >> Pubblico: Così lo spazio tra la comando line-- è [incomprensibile]? 1826 01:22:52,500 --> 01:22:56,247 1827 01:22:56,247 --> 01:22:56,830 ANDI PENG: No. 1828 01:22:56,830 --> 01:23:03,810 Così lo spazio in una linea di comando argomento, x, a dire il computer 1829 01:23:03,810 --> 01:23:06,820 che questo è l'inizio di una nuova stringa. 1830 01:23:06,820 --> 01:23:11,130 Così stringa argv qui-- essa negozi tutti i comandi argomenti della riga 1831 01:23:11,130 --> 01:23:13,110 nelle stringhe. 1832 01:23:13,110 --> 01:23:17,420 E così lo spazio nella riga di comando argument-- tutto ciò che non fa altro che dirvi, 1833 01:23:17,420 --> 01:23:21,030 questo è alla fine di una stringa ed è il momento di passare ad un altro. 1834 01:23:21,030 --> 01:23:21,990 >> Già. 1835 01:23:21,990 --> 01:23:23,530 Questo è abbastanza importante per il tuo pset, perché sei 1836 01:23:23,530 --> 01:23:24,613 andando a testare questi. 1837 01:23:24,613 --> 01:23:29,300 Così qualcuno ha tutte le domande su questo? 1838 01:23:29,300 --> 01:23:30,016 Ok bello. 1839 01:23:30,016 --> 01:23:30,515 Sì? 1840 01:23:30,515 --> 01:23:35,008 >> AUDIENCE: Quindi la ragione si farebbe mettere intero argomento calc invece 1841 01:23:35,008 --> 01:23:40,059 di [incomprensibile] sarebbe quando vuoi digitare informazioni aggiuntive 1842 01:23:40,059 --> 01:23:41,030 [Incomprensibile]? 1843 01:23:41,030 --> 01:23:42,090 >> ANDI PENG: Sì, esattamente. 1844 01:23:42,090 --> 01:23:45,370 Alcuni programmi richiedono di per immettere un argomento da riga di comando 1845 01:23:45,370 --> 01:23:47,732 che passa e che utilizza tale. 1846 01:23:47,732 --> 01:23:49,035 Già. 1847 01:23:49,035 --> 01:23:50,410 PUBBLICO: Che importa se [incomprensibile]? 1848 01:23:50,410 --> 01:23:55,440 1849 01:23:55,440 --> 01:23:58,870 >> ANDI PENG: Beh, che cosa devo cambiare poi nel mio programma? 1850 01:23:58,870 --> 01:23:59,870 >> PUBBLICO: Solo 3. 1851 01:23:59,870 --> 01:24:12,460 1852 01:24:12,460 --> 01:24:15,020 >> ANDI PENG: Perché è succede, cosa ne pensi? 1853 01:24:15,020 --> 01:24:18,940 >> AUDIENCE: Poiché il [incomprensibile]. 1854 01:24:18,940 --> 01:24:22,370 >> PUBBLICO: Dovreste cambiare a 2 [incomprensibile]. 1855 01:24:22,370 --> 01:24:23,484 >> PUBBLICO: 1 e 2. 1856 01:24:23,484 --> 01:24:24,650 ANDI PENG: 1 e 2, esattamente. 1857 01:24:24,650 --> 01:24:29,150 Quindi, in questo caso, si sarebbe probabilmente vogliono avere due printf statements-- 1858 01:24:29,150 --> 01:24:32,601 uno che ha stampato argv 1 e quello che ha stampato argv 2. 1859 01:24:32,601 --> 01:24:33,100 Qui. 1860 01:24:33,100 --> 01:24:34,516 Posso effettivamente fare molto velocemente. 1861 01:24:34,516 --> 01:24:46,720 1862 01:24:46,720 --> 01:24:47,320 Ci si va. 1863 01:24:47,320 --> 01:24:48,287 Oh. 1864 01:24:48,287 --> 01:24:49,370 Non è proprio quello che volevi. 1865 01:24:49,370 --> 01:24:52,590 Ma se voi ragazzi scherza con la formattazione, verrà fuori. 1866 01:24:52,590 --> 01:24:54,981 Già. 1867 01:24:54,981 --> 01:24:55,480 Cool. 1868 01:24:55,480 --> 01:24:57,670 So che siamo un po 'a corto di tempo. 1869 01:24:57,670 --> 01:25:02,469 Ma sto solo andando a spendere rapidamente un paio di minuti che passano attraverso helpful-- 1870 01:25:02,469 --> 01:25:03,760 PUBBLICO: Avete due minuti. 1871 01:25:03,760 --> 01:25:05,010 ANDI PENG: ho due minuti? 1872 01:25:05,010 --> 01:25:06,340 Grazie. 1873 01:25:06,340 --> 01:25:09,180 Alcuni consigli pset rapidi. 1874 01:25:09,180 --> 01:25:13,100 Quindi, per questo pset, mi raccomando, come ho detto, tutti a leggere le specifiche. 1875 01:25:13,100 --> 01:25:16,804 Sarete scrivendo tre uno programs-- chiamato initials.c, uno chiamato caesar.c, 1876 01:25:16,804 --> 01:25:17,720 uno chiamato vigenere.c. 1877 01:25:17,720 --> 01:25:20,465 1878 01:25:20,465 --> 01:25:22,340 Alcuni suggerimenti importanti che voi ragazzi vuole veramente 1879 01:25:22,340 --> 01:25:25,040 da tenere in mind-- così c'è questa funzione 1880 01:25:25,040 --> 01:25:27,770 chiamato atoi-- come mi piace dire, a trois. 1881 01:25:27,770 --> 01:25:29,520 Chiaro se questo è in realtà come lo si dice. 1882 01:25:29,520 --> 01:25:32,510 Ma tutto quello che sta facendo, sta inserendo. 1883 01:25:32,510 --> 01:25:34,320 Converte una stringa in un int. 1884 01:25:34,320 --> 01:25:37,490 Così un rappresenta ASCII per i numeri interi. 1885 01:25:37,490 --> 01:25:40,310 E 'solo la conversione di ASCII I valori di valori interi. 1886 01:25:40,310 --> 01:25:44,510 Quindi ricorda argv, la matrice che memorizza tutti i comandi della riga arguments-- 1887 01:25:44,510 --> 01:25:46,300 li memorizza tutto come stringhe. 1888 01:25:46,300 --> 01:25:50,010 E così, se si vuole essere in grado di hanno uno dei loro diventano un numero intero, 1889 01:25:50,010 --> 01:25:52,750 si sta andando ad avere per utilizzare questo valore qui. 1890 01:25:52,750 --> 01:25:56,690 >> Modulo, come abbiamo coperto prima in classe oggi, 1891 01:25:56,690 --> 01:25:59,550 permette di avere il resto di ciò che avete. 1892 01:25:59,550 --> 01:26:03,620 Quindi, se abbiamo davvero, davvero grandi numeri a Cesare, 1893 01:26:03,620 --> 01:26:06,117 quello che se abbiamo alla fine di una serie di Vigenère? 1894 01:26:06,117 --> 01:26:08,450 Come avete intenzione di essere in grado per ottenere che per avvolgere intorno? 1895 01:26:08,450 --> 01:26:11,330 Se mi ha colpito z e voglio per tornare a una, 1896 01:26:11,330 --> 01:26:13,650 come faccio a ottenere che per avvolgere? 1897 01:26:13,650 --> 01:26:15,960 Probabilmente si desidera utilizzare modulo da qualche parte. 1898 01:26:15,960 --> 01:26:19,190 >> In secondo luogo, navigare intorno la vostra biblioteca. ctype.h. 1899 01:26:19,190 --> 01:26:20,680 Questa è una nuova libreria che abbiamo. 1900 01:26:20,680 --> 01:26:25,270 Troverete un sacco di veramente, veramente utile isupper functions--, islower, 1901 01:26:25,270 --> 01:26:27,681 toupper, tolower, isalpha, eccetera. 1902 01:26:27,681 --> 01:26:30,680 Tutte le funzioni che saranno molto utili quando si sta cercando di capire, 1903 01:26:30,680 --> 01:26:33,780 è questo personaggio una lettera minuscola? 1904 01:26:33,780 --> 01:26:35,730 Come posso convertire questo stringa in un maiuscolo? 1905 01:26:35,730 --> 01:26:38,146 Tutte queste cose saranno molto, molto utile per il vostro pset. 1906 01:26:38,146 --> 01:26:42,720 1907 01:26:42,720 --> 01:26:45,500 OK. 1908 01:26:45,500 --> 01:26:49,644 >> Orario di ricevimento stasera sono 8:00 alle 11:00 in aula TEAL domani 1909 01:26:49,644 --> 01:26:51,310 nonché Mercoledì e Giovedi notte. 1910 01:26:51,310 --> 01:26:53,280 Orario di ricevimento sono comuni. 1911 01:26:53,280 --> 01:26:56,180 Altamente suggerire ragazzi tutto iniziare subito, 1912 01:26:56,180 --> 01:27:00,490 perché non vuole essere quella ragazzo che Giovedi notte ha problemi 1913 01:27:00,490 --> 01:27:03,870 presentando il pset ed è come, non so che cosa fare. 1914 01:27:03,870 --> 01:27:05,870 Ho iniziato, ho finito, ho presentato. 1915 01:27:05,870 --> 01:27:09,737 Cercate di dare voi stessi po 'di spazio, perché in verificano sempre problemi di codice. 1916 01:27:09,737 --> 01:27:11,570 Si vuole fare in modo che vi date 1917 01:27:11,570 --> 01:27:14,810 molto tempo per poter per completare le pset. 1918 01:27:14,810 --> 01:27:15,310 Cool. 1919 01:27:15,310 --> 01:27:16,720 Io appendere intorno qui. 1920 01:27:16,720 --> 01:27:18,226 >> PUBBLICO: è già presente on-line? 1921 01:27:18,226 --> 01:27:20,850 ANDI PENG: Non so se si tratta di linea già, ma sarà. 1922 01:27:20,850 --> 01:27:23,500 Io appendere intorno qui, se qualcuno ha già tutte le domande. 1923 01:27:23,500 --> 01:27:25,390 Grazie per essere venuti. 1924 01:27:25,390 --> 01:27:27,105