1 00:00:00,000 --> 00:00:02,418 >> [MUSIK SPELA] 2 00:00:02,418 --> 00:00:10,542 3 00:00:10,542 --> 00:00:12,000 ALLISON Buchholtz-AU: Hej alla. 4 00:00:12,000 --> 00:00:15,640 Välkommen till din första officiell CS50 avsnitt. 5 00:00:15,640 --> 00:00:19,507 Som du kan se detta är avsnitt CS50-liknande, bara 6 00:00:19,507 --> 00:00:20,840 att dra upp vår agenda för idag. 7 00:00:20,840 --> 00:00:23,990 Så, vem är jag, som jag är säker ni alla undrar. 8 00:00:23,990 --> 00:00:25,514 Jag är din TF. 9 00:00:25,514 --> 00:00:27,930 Jag är inte bara en slumpmässig elev vem personifierar din TF. 10 00:00:27,930 --> 00:00:31,190 >> Och jag kommer att gå igenom slags ha sektioner kommer att flöda, 11 00:00:31,190 --> 00:00:34,900 förväntningar vi har, resurser, så vidare och så vidare. 12 00:00:34,900 --> 00:00:39,190 Vi kommer att prata om arrayer, ASCII funktioner, kommandoradsargument, 13 00:00:39,190 --> 00:00:42,020 och det är inte här, men Jag kommer också att hjälpa 14 00:00:42,020 --> 00:00:45,054 du slags tänka igenom nästa pset för denna vecka. 15 00:00:45,054 --> 00:00:46,720 Som jag är säker på att ni alla uppskattar. 16 00:00:46,720 --> 00:00:48,190 17 00:00:48,190 --> 00:00:53,390 >> Så först question-- vem är jag, förutom din sprudlande TF här. 18 00:00:53,390 --> 00:00:55,390 Jag är Alison Buchholtz-Au. 19 00:00:55,390 --> 00:00:57,970 Detta är mitt andra år TFing CS50. 20 00:00:57,970 --> 00:01:00,570 Jag också TF CS51 under våren. 21 00:01:00,570 --> 00:01:03,930 Du kan se igen det om du väljer att ta den. 22 00:01:03,930 --> 00:01:07,370 Jag är också en PAF, så alla Freshmen-- och om du inte är en nybörjare, 23 00:01:07,370 --> 00:01:09,980 Detta är mitt tredje år som rådgivning karl. 24 00:01:09,980 --> 00:01:13,630 Jag är mycket väl insatt i ge dig råd om livet och kurser 25 00:01:13,630 --> 00:01:16,549 inom CS och inte inom CS. 26 00:01:16,549 --> 00:01:18,090 Jag är en datavetenskap Concentrator. 27 00:01:18,090 --> 00:01:20,800 Jag är en senior i Adams House, bästa hus. 28 00:01:20,800 --> 00:01:22,430 29 00:01:22,430 --> 00:01:26,050 Och innan jag bytte till CS mitt andra Spring, 30 00:01:26,050 --> 00:01:27,640 Jag var faktiskt en medicintekniker. 31 00:01:27,640 --> 00:01:29,020 Jag hade tänkt att gå till Med skolan. 32 00:01:29,020 --> 00:01:30,530 Jag skulle bli en traumakirurg. 33 00:01:30,530 --> 00:01:33,000 Och det har helt förändrats sedan jag tog CS50. 34 00:01:33,000 --> 00:01:34,250 35 00:01:34,250 --> 00:01:36,310 Jag tog naturligtvis min Sophomore Fall. 36 00:01:36,310 --> 00:01:38,920 Det var min första introduktion till CS någonsin. 37 00:01:38,920 --> 00:01:44,104 Jag var en av de 78% av er som hade noll erfarenhet kommer in, 38 00:01:44,104 --> 00:01:45,520 och det helt förändrat mitt liv. 39 00:01:45,520 --> 00:01:49,820 Och nu jobbar jag på Microsoft, och din vackra TF. 40 00:01:49,820 --> 00:01:53,500 Och CS50 är förmodligen en av de bästa upplevelserna 41 00:01:53,500 --> 00:01:56,210 som jag har haft här på Harvard-- både ta klassen 42 00:01:56,210 --> 00:01:59,040 och att kunna hjälpa lära eleverna som du. 43 00:01:59,040 --> 00:02:01,410 >> Så jag är verkligen glada att ni är alla här. 44 00:02:01,410 --> 00:02:04,270 Om du kom in sent, det finns godis, 45 00:02:04,270 --> 00:02:07,227 som du bör känna fri att komma greppa, eller skicka 46 00:02:07,227 --> 00:02:08,560 någon annan att ta tag i det för dig. 47 00:02:08,560 --> 00:02:09,399 det är OK. 48 00:02:09,399 --> 00:02:10,440 Jag vill inte äta det. 49 00:02:10,440 --> 00:02:13,350 Mitt rum har tillräckligt choklad, så y'all bör försöka avsluta det. 50 00:02:13,350 --> 00:02:16,730 Jag vet att det finns 100 stycken, men liksom, 04:00 på en måndag, 51 00:02:16,730 --> 00:02:19,000 Jag tror att alla kan använda lite socker. 52 00:02:19,000 --> 00:02:21,750 >> Så alla ni som är officiellt i mitt avsnitt 53 00:02:21,750 --> 00:02:24,700 borde ha fått ett e-postmeddelande från mig med mitt telefonnummer, 54 00:02:24,700 --> 00:02:29,920 email address-- gärna lägga mig på Gchat, gärna lägga mig på Facebook, 55 00:02:29,920 --> 00:02:33,360 och även för resten av er, Du kan maila mig här. 56 00:02:33,360 --> 00:02:34,450 Det finns två H s. 57 00:02:34,450 --> 00:02:37,090 Alla alltid gör som två L's eller två C: s. 58 00:02:37,090 --> 00:02:38,260 Två H-tal i efternamnet. 59 00:02:38,260 --> 00:02:41,800 Annars det kommer att studsa, och Jag kommer inte att få din e-post. 60 00:02:41,800 --> 00:02:46,400 >> Så tveka inte att maila mig, att kontakta mig när som helst. 61 00:02:46,400 --> 00:02:51,440 Jag får inte komma tillbaka till dig inom 24 minuter, 62 00:02:51,440 --> 00:02:53,760 men jag lovar att komma tillbaka till dig inom 24 timmar. 63 00:02:53,760 --> 00:02:54,900 64 00:02:54,900 --> 00:02:58,067 Om du kallar mig en halvtimme innan din pset beror, att du är något liknande, 65 00:02:58,067 --> 00:02:59,650 Jag har ingen aning om vad jag gör Allison. 66 00:02:59,650 --> 00:03:00,160 Hjälp mig. 67 00:03:00,160 --> 00:03:04,049 Jag kommer att lugna ner dig, men vid slutet av dagen, 68 00:03:04,049 --> 00:03:07,340 om du ringer mig en halvtimme innan din pset beror med någonting skrivet, 69 00:03:07,340 --> 00:03:11,570 Jag kommer att vara som, ja, kanske det är dags att använda den sena dagen. 70 00:03:11,570 --> 00:03:15,215 Så jag kommer att svara på alla dina förfrågningar på ett mycket lämpligt sätt. 71 00:03:15,215 --> 00:03:16,482 72 00:03:16,482 --> 00:03:18,190 Min telefon är oftast fäst vid mina händer. 73 00:03:18,190 --> 00:03:21,530 Jag svarar oftast mycket snabbare än 24 timmar, 74 00:03:21,530 --> 00:03:25,650 men jag kan bara garanti en 24 timmars reaktion. 75 00:03:25,650 --> 00:03:26,580 >> Okej. 76 00:03:26,580 --> 00:03:28,410 Så varför är vi här? 77 00:03:28,410 --> 00:03:32,160 Dessutom, om du har frågor på helst, låt mig veta. 78 00:03:32,160 --> 00:03:32,780 Jag pratar mycket. 79 00:03:32,780 --> 00:03:35,320 Jag pratar fort, men snälla tveka inte att avbryta mig. 80 00:03:35,320 --> 00:03:36,980 Det ger mig andrum också. 81 00:03:36,980 --> 00:03:38,159 82 00:03:38,159 --> 00:03:40,200 Så sektioner är en tid för oss att egentligen bara dyka 83 00:03:40,200 --> 00:03:44,270 in, få lite praktisk erfarenhet, till gå igenom frågor som vi nämnde 84 00:03:44,270 --> 00:03:49,760 i klassen eller läromedel som Vi rekommenderar att ni på nätet. 85 00:03:49,760 --> 00:03:52,980 Och vi ska faktiskt gå igenom vissa av dessa resurser i en bit. 86 00:03:52,980 --> 00:03:54,300 87 00:03:54,300 --> 00:03:57,400 >> Så några anteckningar om supportavdelning. 88 00:03:57,400 --> 00:04:00,250 CS50-- en av sakerna som gör det en av mina favorit klasser 89 00:04:00,250 --> 00:04:02,510 är känslan av att du är aldrig ensam. 90 00:04:02,510 --> 00:04:05,430 Vi har en personalstyrka på över 100 människor som är här för att hjälpa dig. 91 00:04:05,430 --> 00:04:08,080 Vi har kontorstid Måndag till torsdag. 92 00:04:08,080 --> 00:04:13,230 Så det finns så många människor som älskar klassen lika mycket som jag gör 93 00:04:13,230 --> 00:04:15,750 och vem är verkligen här för att de vill vara här. 94 00:04:15,750 --> 00:04:19,390 De flesta av oss är studenter, och detta är som en femte klass utöver 95 00:04:19,390 --> 00:04:20,390 till resten av vårt arbete. 96 00:04:20,390 --> 00:04:22,723 >> Och det är en hel del arbete, men Vi gör det för att vi älskar det, 97 00:04:22,723 --> 00:04:25,600 och vi älskar verkligen att lära dig och hjälpa till att dela vår spänning 98 00:04:25,600 --> 00:04:27,260 för detta ämne och denna klass. 99 00:04:27,260 --> 00:04:28,490 Så ta fördel. 100 00:04:28,490 --> 00:04:29,370 Kom och prata med oss. 101 00:04:29,370 --> 00:04:33,034 Jag blir ensam när mina elever inte prata med mig, så om du vill, 102 00:04:33,034 --> 00:04:33,950 kommer umgås med mig. 103 00:04:33,950 --> 00:04:35,200 Det kommer att vara stor. 104 00:04:35,200 --> 00:04:37,400 >> Så avsnitt är naturligtvis en av dina största saker. 105 00:04:37,400 --> 00:04:41,770 Vi ska gå igenom saker att du lärt dig i föreläsning, 106 00:04:41,770 --> 00:04:44,100 göra några korta exempel när vi har tid, 107 00:04:44,100 --> 00:04:46,187 och i allmänhet typen av få en uppfattning om saker 108 00:04:46,187 --> 00:04:48,270 du bör tänka om för din problembild. 109 00:04:48,270 --> 00:04:49,540 110 00:04:49,540 --> 00:04:53,591 Shorts-- hur många som faktiskt såg videon från scratch 111 00:04:53,591 --> 00:04:54,090 kort? 112 00:04:54,090 --> 00:04:55,460 113 00:04:55,460 --> 00:04:57,390 Någon känner igen mig? 114 00:04:57,390 --> 00:04:59,720 Så de är mycket bra. 115 00:04:59,720 --> 00:05:01,210 Du bör definitivt titta på dessa. 116 00:05:01,210 --> 00:05:02,880 Mycket arbete har lagts ned på dem. 117 00:05:02,880 --> 00:05:06,690 Och de är bara tänkt att vara bite-storlek bitar för dig att bara titta 118 00:05:06,690 --> 00:05:09,760 för tre eller fyra minuter och få en bättre förståelse av ett begrepp. 119 00:05:09,760 --> 00:05:11,147 120 00:05:11,147 --> 00:05:12,980 Gå throughs-- hur många människor har sett 121 00:05:12,980 --> 00:05:14,880 de genomgångar för tidigare? 122 00:05:14,880 --> 00:05:16,240 Zamyla är fantastiskt, eller hur? 123 00:05:16,240 --> 00:05:18,100 Precis, jag önskar att jag vore Zamyla ibland. 124 00:05:18,100 --> 00:05:19,650 125 00:05:19,650 --> 00:05:21,640 Så definitivt använda dina genomgångar. 126 00:05:21,640 --> 00:05:25,070 Hon kommer att dela upp det i liten, bite-storlek bitar. 127 00:05:25,070 --> 00:05:28,079 Och när du har dessa enorma specifikationer från dina problemsamlingar, 128 00:05:28,079 --> 00:05:30,870 det kommer att bli riktigt viktigt att kunna bara hitta någonstans 129 00:05:30,870 --> 00:05:32,600 att starta och arbeta långsamt genom den. 130 00:05:32,600 --> 00:05:33,610 131 00:05:33,610 --> 00:05:40,260 >> Okej, har vi också Study50, vilket är study50.harvard.edu, tror jag. 132 00:05:40,260 --> 00:05:42,270 Du kan bara Google studera, och det kommer att komma upp. 133 00:05:42,270 --> 00:05:45,750 Detta är en av de bästa resurser vi har. 134 00:05:45,750 --> 00:05:49,800 Det är Powerpoints med noter och öva problem för dig 135 00:05:49,800 --> 00:05:52,430 med lösningar som du kan faktiskt gå igenom. 136 00:05:52,430 --> 00:05:57,000 Så om du någonsin vill ha mer praktik, mer än vi gör i sektioner eller fler 137 00:05:57,000 --> 00:06:00,700 än dina problemsamlingar, detta verkligen en plats jag dig att gå. 138 00:06:00,700 --> 00:06:03,590 Den byggdes förra sommaren genom några av mina riktigt goda vänner. 139 00:06:03,590 --> 00:06:04,480 Och det är fantastiskt. 140 00:06:04,480 --> 00:06:05,540 141 00:06:05,540 --> 00:06:08,670 Faktum är att en hel del av bilderna att jag kommer att använda för avsnitt 142 00:06:08,670 --> 00:06:10,190 kommer från Study50. 143 00:06:10,190 --> 00:06:12,000 >> Så mycket av TF: er använda den. 144 00:06:12,000 --> 00:06:13,920 Och slutligen, som jag nämnda, kontorstid. 145 00:06:13,920 --> 00:06:15,836 Om du har problem med med läxor, du är 146 00:06:15,836 --> 00:06:18,270 har problem med en koncept, kom till kontorstid. 147 00:06:18,270 --> 00:06:20,190 Gå tidigt i veckan om du kan. 148 00:06:20,190 --> 00:06:23,130 Ut till quad, eftersom det är typ av långt. 149 00:06:23,130 --> 00:06:24,780 Ingen tycker om att gå ut där. 150 00:06:24,780 --> 00:06:27,090 Men det är till din fördel, för då är du 151 00:06:27,090 --> 00:06:29,580 kommer att ha alla dessa TF, [OHÖRBAR] omger dig. 152 00:06:29,580 --> 00:06:31,920 Och särskilt nu, bara ett tips, torsdagar 153 00:06:31,920 --> 00:06:35,310 är väldigt chill just nu i Mather eftersom dina psets 154 00:06:35,310 --> 00:06:36,577 beror på torsdagar. 155 00:06:36,577 --> 00:06:38,410 Och vetande vill använda dina sena dagar än. 156 00:06:38,410 --> 00:06:40,030 >> Så om du har problem med begreppen, 157 00:06:40,030 --> 00:06:41,780 det finns massor av TF: er som är där för att hjälpa dig. 158 00:06:41,780 --> 00:06:43,196 Så kom ut till Mather på torsdagen. 159 00:06:43,196 --> 00:06:45,280 Om du vill se mig, Jag kommer att vara där. 160 00:06:45,280 --> 00:06:48,870 Jag vanligtvis gör min egen hemläxa, eftersom ingen vill min hjälp. 161 00:06:48,870 --> 00:06:50,260 Så kom och se oss. 162 00:06:50,260 --> 00:06:51,460 163 00:06:51,460 --> 00:06:52,440 >> Träffa oss på halva vägen. 164 00:06:52,440 --> 00:06:55,400 Så hur många har deltagit föreläsning eller sett det på nätet? 165 00:06:55,400 --> 00:06:56,570 166 00:06:56,570 --> 00:06:59,140 Hur många människor gick till super avsnittet förra veckan? 167 00:06:59,140 --> 00:07:00,171 168 00:07:00,171 --> 00:07:00,670 Cool. 169 00:07:00,670 --> 00:07:02,190 Det är faktiskt en hel del. 170 00:07:02,190 --> 00:07:05,425 Hur många av er har läst din spec för denna vecka, för ditt pset? 171 00:07:05,425 --> 00:07:07,081 172 00:07:07,081 --> 00:07:08,461 Ooh, jag är stolt över er! 173 00:07:08,461 --> 00:07:09,335 Mer godis för y'all. 174 00:07:09,335 --> 00:07:11,070 175 00:07:11,070 --> 00:07:13,280 >> Bra, så vad vi menar "Möta oss halvvägs," är 176 00:07:13,280 --> 00:07:16,440 det avsnittet är egentligen bara kommer att bli super bra för dig 177 00:07:16,440 --> 00:07:19,810 om du kommer i att ha läst ditt specifikation för din pset. 178 00:07:19,810 --> 00:07:23,859 För när jag går igenom en översikt saker du bör hålla utkik efter, 179 00:07:23,859 --> 00:07:25,650 det kommer inte att göra så mycket meningsfullt om du 180 00:07:25,650 --> 00:07:28,358 vet inte vad ditt problem inställd kommer att be er att göra. 181 00:07:28,358 --> 00:07:29,020 182 00:07:29,020 --> 00:07:32,590 >> Om du inte kommer till avsnittet, uppenbarligen Jag kan inte vara så användbart för dig. 183 00:07:32,590 --> 00:07:36,600 Jag tänker inte ta det personligt om du behöver inte komma till min avdelning just nu, 184 00:07:36,600 --> 00:07:38,570 men definitivt du borde. 185 00:07:38,570 --> 00:07:40,090 Om du inte kan, titta på dem på nätet. 186 00:07:40,090 --> 00:07:41,230 187 00:07:41,230 --> 00:07:42,519 De är där av en anledning. 188 00:07:42,519 --> 00:07:43,560 Mine kommer att vara där. 189 00:07:43,560 --> 00:07:44,187 190 00:07:44,187 --> 00:07:47,270 Som du märker, vi spelas in, så det ska bli rätt för er. 191 00:07:47,270 --> 00:07:49,110 192 00:07:49,110 --> 00:07:51,570 Vad bra, kommer att lectures-- det är självklart 193 00:07:51,570 --> 00:07:53,790 där du får det start av ditt material här. 194 00:07:53,790 --> 00:07:57,430 Så jag kommer definitivt försöka och hjälpa dig så mycket jag kan, 195 00:07:57,430 --> 00:07:58,840 men jag kan bara träffa dig så här långt. 196 00:07:58,840 --> 00:08:01,220 Du måste slags möta oss halvvägs där. 197 00:08:01,220 --> 00:08:04,050 >> Grading-- så, alla ni som fick ett mail från mig, 198 00:08:04,050 --> 00:08:05,445 du är min officiella sektionen. 199 00:08:05,445 --> 00:08:06,470 200 00:08:06,470 --> 00:08:08,120 Jag kommer att klassificera dina psets. 201 00:08:08,120 --> 00:08:12,870 Och jag vill bara säga en sak som du verkligen bör vara uppmärksamma på 202 00:08:12,870 --> 00:08:13,820 är kommentarerna. 203 00:08:13,820 --> 00:08:17,390 Kommentarerna är ofta mer användbar än den faktiska poängen vi dig. 204 00:08:17,390 --> 00:08:19,890 Och kommentarerna är faktiskt där jag tillbringar mycket av min tid 205 00:08:19,890 --> 00:08:20,770 när jag är betygssättning. 206 00:08:20,770 --> 00:08:22,700 Så jag skulle uppskatta det om du läser dem. 207 00:08:22,700 --> 00:08:26,990 Och de är faktiskt hur du ska att lära sig mer om design och stil 208 00:08:26,990 --> 00:08:29,860 och saker som är en lite mindre snitt och torr. 209 00:08:29,860 --> 00:08:31,770 >> Så egentligen uppmärksamma dessa synpunkter. 210 00:08:31,770 --> 00:08:34,720 Om du har frågor om dem, eller frågor om din poäng, 211 00:08:34,720 --> 00:08:37,620 kom gärna och prata med mig antingen före avsnitt, 212 00:08:37,620 --> 00:08:41,039 Jag kommer förmodligen att umgås i lobbyn, eller efteråt. 213 00:08:41,039 --> 00:08:43,559 Om du vill schemalägga en-mot-en möten om hur 214 00:08:43,559 --> 00:08:46,100 du kan hjälpa till att förbättra senare problemsamlingar, så låt mig veta. 215 00:08:46,100 --> 00:08:47,520 216 00:08:47,520 --> 00:08:49,750 >> Och sedan bara ett par tips för er killar. 217 00:08:49,750 --> 00:08:53,110 Så en av de största saker Jag har alltid understryka att min avdelning 218 00:08:53,110 --> 00:08:57,700 När du lär dig hur koden är att skriva ut saker på papper först. 219 00:08:57,700 --> 00:09:01,080 Om du har en spelplan för där koden måste gå 220 00:09:01,080 --> 00:09:03,230 och vad den behöver för att gör och det är uppdelat 221 00:09:03,230 --> 00:09:06,000 i små bitar av pseudokod kod du har skrivit ut, 222 00:09:06,000 --> 00:09:09,780 du kommer att bli mindre sannolikt att göra syntaxfel 223 00:09:09,780 --> 00:09:12,355 eller skapa en if loop som har inte en annan. 224 00:09:12,355 --> 00:09:14,064 225 00:09:14,064 --> 00:09:15,980 Om du vet var du är kommer totalt sett, du är 226 00:09:15,980 --> 00:09:19,764 mindre benägna att göra dessa små misstag som ibland tar dig 227 00:09:19,764 --> 00:09:22,555 timmar att fixa, eftersom du är som, där jag saknar detta fäste? 228 00:09:22,555 --> 00:09:23,580 229 00:09:23,580 --> 00:09:27,420 >> Alltså, använd Style50. 230 00:09:27,420 --> 00:09:28,820 231 00:09:28,820 --> 00:09:31,590 Speciellt när du är gå till kontorstid, 232 00:09:31,590 --> 00:09:34,850 Om din kod är allt kopplas över till en sida, 233 00:09:34,850 --> 00:09:37,740 Det är naturligtvis politik att vi kan säga, fixa det 234 00:09:37,740 --> 00:09:41,990 så att det ser ut som Style50 säger det borde, och då hjälper vi dig. 235 00:09:41,990 --> 00:09:43,830 Så det kommer att göra ditt liv enklare. 236 00:09:43,830 --> 00:09:45,030 Det kommer att göra våra liv enklare. 237 00:09:45,030 --> 00:09:46,000 Alla är gladare. 238 00:09:46,000 --> 00:09:47,290 Alla får bättre betyg. 239 00:09:47,290 --> 00:09:48,760 Är inte det vad vi alla vill? 240 00:09:48,760 --> 00:09:50,420 241 00:09:50,420 --> 00:09:53,860 >> Så skriver ut saker på papper innan du någonsin röra din dator. 242 00:09:53,860 --> 00:09:57,540 Talk saker ut på en hög nivå, och se till att du vet vart du ska. 243 00:09:57,540 --> 00:09:59,940 Och om du är osäker, sitta ner med någon 244 00:09:59,940 --> 00:10:03,340 och gå dem genom steg för steg vad din kod är tänkt att göra. 245 00:10:03,340 --> 00:10:07,940 Och nio gånger av 10, kommer du att liksom, åh, jag glömde en if villkor 246 00:10:07,940 --> 00:10:12,420 eller jag har glömt ett semikolon här eller Jag uppdaterar denna variabel fel. 247 00:10:12,420 --> 00:10:15,740 Så de är mina tips för framgång. 248 00:10:15,740 --> 00:10:19,820 >> Så eftersom ungefär hälften av er ser som om du gått super avsnitt, 249 00:10:19,820 --> 00:10:24,080 Jag ska bara mycket kortfattat gå igenom öglor, 250 00:10:24,080 --> 00:10:26,650 som inte var på vår ursprungliga dagordning. 251 00:10:26,650 --> 00:10:28,190 Men de är verkligen viktigt. 252 00:10:28,190 --> 00:10:30,250 Och så ska jag typ av hastighet genom dessa 253 00:10:30,250 --> 00:10:32,860 innan vi får in våra faktiska avdelning. 254 00:10:32,860 --> 00:10:36,269 Innan jag gör det, är det någon questions-- logistiskt, 255 00:10:36,269 --> 00:10:38,060 personligen är det något annat du vill ha 256 00:10:38,060 --> 00:10:40,990 att veta om mig eller om avsnitt eller klass i allmänhet? 257 00:10:40,990 --> 00:10:43,195 258 00:10:43,195 --> 00:10:43,880 Alla bra? 259 00:10:43,880 --> 00:10:45,300 OK, cool. 260 00:10:45,300 --> 00:10:46,781 261 00:10:46,781 --> 00:10:47,280 Lovely. 262 00:10:47,280 --> 00:10:50,071 >> Så loops-- ni bör alla känner igen dessa bitar från grunden. 263 00:10:50,071 --> 00:10:51,310 264 00:10:51,310 --> 00:10:55,220 Så slingor är i princip bara ett sätt för oss att göra något 265 00:10:55,220 --> 00:10:58,900 några antal gånger, några upprepade åtgärder på grundval av vissa villkorade. 266 00:10:58,900 --> 00:11:00,140 267 00:11:00,140 --> 00:11:02,090 Så vi har tre olika typer. 268 00:11:02,090 --> 00:11:04,860 Vi har till slingan, medan, och gör-stund. 269 00:11:04,860 --> 00:11:06,430 270 00:11:06,430 --> 00:11:11,320 >> Så för loops-- vi bara har en mycket allmänna utformningen här av en for-loop. 271 00:11:11,320 --> 00:11:16,110 Och det är bra för när du vet hur många gånger något måste utföra. 272 00:11:16,110 --> 00:11:17,040 273 00:11:17,040 --> 00:11:18,790 När vi talar om andra loopar, du ska 274 00:11:18,790 --> 00:11:20,650 se varför det är en viktig skillnad. 275 00:11:20,650 --> 00:11:22,530 Men för slingor är för något set. 276 00:11:22,530 --> 00:11:24,590 Du vet att du kan antingen beräkna antalet 277 00:11:24,590 --> 00:11:29,230 eller om du vet hur många gånger du vill att detta upprepas i början. 278 00:11:29,230 --> 00:11:32,220 >> Så om du ser här, vi har bara en allmän sort 279 00:11:32,220 --> 00:11:34,480 av skelett ram för en for-loop här. 280 00:11:34,480 --> 00:11:38,080 Så för-initiering, det är här dina variabler initieras. 281 00:11:38,080 --> 00:11:41,915 Med Mario, jag är säker på att ni gjorde något som int jag lika med 0. 282 00:11:41,915 --> 00:11:42,920 283 00:11:42,920 --> 00:11:44,710 Det är där som skulle hända i blått. 284 00:11:44,710 --> 00:11:48,290 Du har ditt tillstånd, vilket är vad som kontrolleras varje gång. 285 00:11:48,290 --> 00:11:52,410 Om detta villkor är sant, då resten av koden körs. 286 00:11:52,410 --> 00:11:54,749 Sedan ska det köras igen-- och fråga. 287 00:11:54,749 --> 00:11:57,290 Och så har vi uppdatering, där du uppdaterar din variabel. 288 00:11:57,290 --> 00:12:01,410 Så, återigen, med som Mario, jag är säker på ni gjorde något som jag plus plus. 289 00:12:01,410 --> 00:12:04,640 Så varje gång slingan sprang, jag fick uppdateras så 290 00:12:04,640 --> 00:12:09,370 att när vi checkar den mot något villkor, var det förändras. 291 00:12:09,370 --> 00:12:12,570 >> För om du bara har en statisk variabel, 292 00:12:12,570 --> 00:12:15,567 om det utför första gången är det bara att köra oändligt. 293 00:12:15,567 --> 00:12:18,025 Så du måste se till att du uppdatera din variabel ordentligt. 294 00:12:18,025 --> 00:12:19,350 295 00:12:19,350 --> 00:12:23,890 Och vi har också bara en visuell representation där. 296 00:12:23,890 --> 00:12:24,930 Alla bra? 297 00:12:24,930 --> 00:12:25,630 För slingor. 298 00:12:25,630 --> 00:12:27,540 Borde ha sett dessa i ditt pset. 299 00:12:27,540 --> 00:12:28,840 Cool. 300 00:12:28,840 --> 00:12:31,870 >> Så här är bara en enkel exempel. 301 00:12:31,870 --> 00:12:32,860 Skriv ut detta är CS50! 302 00:12:32,860 --> 00:12:33,360 10 gånger. 303 00:12:33,360 --> 00:12:34,850 304 00:12:34,850 --> 00:12:37,906 Och så har vi vår initiering, som vi ser det, med int i 305 00:12:37,906 --> 00:12:41,280 är lika med 0, för i är mindre än 10, och jag plus plus. 306 00:12:41,280 --> 00:12:43,090 307 00:12:43,090 --> 00:12:44,540 Och det kommer att skrivas ut som 10 gånger. 308 00:12:44,540 --> 00:12:46,230 309 00:12:46,230 --> 00:12:56,781 >> Så medan loops-- medan slingorna är bra när du inte nödvändigtvis 310 00:12:56,781 --> 00:12:59,530 måste veta hur många gånger är det kommer att uppdatera i början. 311 00:12:59,530 --> 00:13:00,640 312 00:13:00,640 --> 00:13:02,580 Du har bara några tillstånd som är markerad. 313 00:13:02,580 --> 00:13:09,550 Och det kan bli något liknande while-- Låt oss ta ett exempel från din pset. 314 00:13:09,550 --> 00:13:12,540 Om Mario, du försöker mata in ett negativt tal. 315 00:13:12,540 --> 00:13:13,270 Rätt? 316 00:13:13,270 --> 00:13:15,460 Du skulle åter uppmana ditt användarnamn. 317 00:13:15,460 --> 00:13:20,890 Så du kan säga, ja, om användaren matar in något mindre än noll, åter prompt 318 00:13:20,890 --> 00:13:21,390 dem. 319 00:13:21,390 --> 00:13:23,890 Och jag är säker på att kan ha varit något som vissa av er 320 00:13:23,890 --> 00:13:24,660 används i koden. 321 00:13:24,660 --> 00:13:26,270 >> Så det är en enkel sak. 322 00:13:26,270 --> 00:13:28,490 Du har samtidigt, en del villkor som kontrolleras 323 00:13:28,490 --> 00:13:30,460 varje gång koden går att utföra. 324 00:13:30,460 --> 00:13:32,660 Om det utvärderas till true vi kör den. 325 00:13:32,660 --> 00:13:33,820 Annars gör vi inte. 326 00:13:33,820 --> 00:13:35,650 Och vad är egentligen important-- något jag 327 00:13:35,650 --> 00:13:38,155 tror att David pratade om i lecture-- är hängslen. 328 00:13:38,155 --> 00:13:40,760 329 00:13:40,760 --> 00:13:42,930 Oavsett är inom hängslen är vad som exekveras. 330 00:13:42,930 --> 00:13:45,850 Om du har glömt dem hängslen, det kommer bara 331 00:13:45,850 --> 00:13:48,800 vara linjen direkt efter while avrättades. 332 00:13:48,800 --> 00:13:51,040 >> Så om du har tre saker som är tänkta 333 00:13:51,040 --> 00:13:54,020 att hända när detta villkoret utvärderas till true, 334 00:13:54,020 --> 00:13:58,040 och du inte har dessa hängslen, bara det första som kommer att hända. 335 00:13:58,040 --> 00:14:01,510 Så var mycket medvetna om där du sätter dina hängslen. 336 00:14:01,510 --> 00:14:04,880 Om du håller dig med Style50, Detta kommer definitivt att hjälpa dig. 337 00:14:04,880 --> 00:14:06,220 338 00:14:06,220 --> 00:14:06,760 Cool. 339 00:14:06,760 --> 00:14:10,835 >> Så det här är en nedräkning från 10 till noll. 340 00:14:10,835 --> 00:14:12,380 341 00:14:12,380 --> 00:14:16,210 Och som ni ser här, vi initiera någon disk utanför den. 342 00:14:16,210 --> 00:14:19,250 En sak som är annorlunda är vi är inte initierar vår variabel 343 00:14:19,250 --> 00:14:20,300 inom vår while-slinga. 344 00:14:20,300 --> 00:14:22,150 Det har initierats utanför den. 345 00:14:22,150 --> 00:14:25,480 Vi är helt enkelt bara sätta tillstånd för vår tid. 346 00:14:25,480 --> 00:14:28,630 Så i detta fall är det samtidigt räkningen är större än noll. 347 00:14:28,630 --> 00:14:35,134 Och vi skriva ut vad vår räkna är, och sedan stega vi vår variabel. 348 00:14:35,134 --> 00:14:36,800 Och det är också en annan sak att lägga märke till. 349 00:14:36,800 --> 00:14:40,440 Vår uppdatering sker inte inom den första delen av while-slingan. 350 00:14:40,440 --> 00:14:44,255 Det kommer att hända inom hängslen, kroppen av din text. 351 00:14:44,255 --> 00:14:46,820 352 00:14:46,820 --> 00:14:51,860 >> Så gör-while loops-- do-while loopar är bra för validering användaren. 353 00:14:51,860 --> 00:14:54,820 Så en del av er kanske har använde också detta i din pset. 354 00:14:54,820 --> 00:14:59,960 Man kan säga, göra, som, uppmana användaren för inmatning. 355 00:14:59,960 --> 00:15:04,690 Och sedan när du, typ, ingång är mindre än ett visst antal. 356 00:15:04,690 --> 00:15:10,700 >> Så för en explicit fallet med Mario, det skulle göra printf anger ett heltal, 357 00:15:10,700 --> 00:15:13,820 och sedan några heltal lika getInt. 358 00:15:13,820 --> 00:15:17,060 Och då ska faktiskt exekvera den koden först. 359 00:15:17,060 --> 00:15:19,120 Du kommer faktiskt att ha någon form av heltal. 360 00:15:19,120 --> 00:15:23,380 Och då kan man säga, medan som heltal är mindre än noll. 361 00:15:23,380 --> 00:15:26,120 Så vad det kommer att göra är att det är kommer att utföra åtminstone en gång. 362 00:15:26,120 --> 00:15:27,536 Det kommer att kontrollera tillståndet. 363 00:15:27,536 --> 00:15:29,690 Om villkoret är sant, det ska köras igen. 364 00:15:29,690 --> 00:15:32,900 >> Så gör-while loopar är bra för validering användaren, 365 00:15:32,900 --> 00:15:36,770 eftersom du vet koden kommer att utföra åtminstone 366 00:15:36,770 --> 00:15:39,720 en gång, medan med medan loopar, du är inte 367 00:15:39,720 --> 00:15:41,630 garanteras att det är kommer att utföra en gång. 368 00:15:41,630 --> 00:15:45,330 Det kommer att kontrollera tillståndet först och sedan bestämmer sig för att köra den, 369 00:15:45,330 --> 00:15:48,350 medan en gör-tag kommer köra koden först 370 00:15:48,350 --> 00:15:51,110 och sedan kontrollera om du behöver upprepa det. 371 00:15:51,110 --> 00:15:52,985 Gör det skillnad vettigt för alla? 372 00:15:52,985 --> 00:15:53,680 373 00:15:53,680 --> 00:15:54,180 OK. 374 00:15:54,180 --> 00:15:55,651 375 00:15:55,651 --> 00:15:56,150 Cool. 376 00:15:56,150 --> 00:15:57,380 377 00:15:57,380 --> 00:15:59,800 >> Så i detta fall, är denna typ om vad jag pratade om, 378 00:15:59,800 --> 00:16:02,210 denna re-anvisningarna tills du få ett positivt tal. 379 00:16:02,210 --> 00:16:05,060 Så vi vet att printf "Ange ett positivt tal" 380 00:16:05,060 --> 00:16:08,720 och faktiskt ber om att ingång kommer att hända minst en gång. 381 00:16:08,720 --> 00:16:12,650 Om användaren är ond och håller anger ett negativt tal, som 382 00:16:12,650 --> 00:16:14,210 vet hur många gånger det ska köras. 383 00:16:14,210 --> 00:16:17,500 Men den här koden garanteras att utföra åtminstone en gång. 384 00:16:17,500 --> 00:16:20,040 Och det är därför det är bra för validering ingång. 385 00:16:20,040 --> 00:16:22,300 Och du kommer att använda den en hel del. 386 00:16:22,300 --> 00:16:23,870 387 00:16:23,870 --> 00:16:25,830 >> Okej, några frågor hittills? 388 00:16:25,830 --> 00:16:27,080 389 00:16:27,080 --> 00:16:28,030 Vi är alla bra? 390 00:16:28,030 --> 00:16:29,513 Pratar jag för fort? 391 00:16:29,513 --> 00:16:30,520 392 00:16:30,520 --> 00:16:31,130 Vi är bra? 393 00:16:31,130 --> 00:16:31,630 OK. 394 00:16:31,630 --> 00:16:32,960 395 00:16:32,960 --> 00:16:33,800 Toppen 396 00:16:33,800 --> 00:16:35,841 >> Så vi kommer att gå vidare och prata om matriser. 397 00:16:35,841 --> 00:16:36,660 398 00:16:36,660 --> 00:16:37,600 Cool. 399 00:16:37,600 --> 00:16:40,700 Så arrayer finns i princip bara datastrukturer 400 00:16:40,700 --> 00:16:43,260 som tillåter oss att lagra saker av samma typ. 401 00:16:43,260 --> 00:16:47,920 Så om du någonsin har en matris, är det antingen bara ha ints 402 00:16:47,920 --> 00:16:51,590 eller det bara kommer att ha flottörer eller det bara kommer att ha tecken. 403 00:16:51,590 --> 00:16:55,440 Du kommer inte att ha en int med en röding med en flottör med en dubbel. 404 00:16:55,440 --> 00:16:56,850 En sak. 405 00:16:56,850 --> 00:17:00,810 Arrayer är bara en storlek, eller de är bara en typ. 406 00:17:00,810 --> 00:17:05,679 >> Så här har vi en rad storlek tre med tre heltal i den. 407 00:17:05,679 --> 00:17:07,970 De kunde flytande men vi är kommer att säga att de är ints. 408 00:17:07,970 --> 00:17:09,310 409 00:17:09,310 --> 00:17:16,970 Så en sak att inse är att arrayer är en uppsättning storlek när du initierar 410 00:17:16,970 --> 00:17:22,285 dem, och de är inte easily-- eftersom ni alla är mindre bekväm, 411 00:17:22,285 --> 00:17:25,034 Du bör bara tänka på dem som att inte kunna sträcka sig i storlek. 412 00:17:25,034 --> 00:17:26,119 413 00:17:26,119 --> 00:17:28,740 Men stort du ställer ut arrayen i början, 414 00:17:28,740 --> 00:17:31,070 det är storleken det kommer att stanna, eftersom arrayer 415 00:17:31,070 --> 00:17:33,070 är kontinuerliga block av minne. 416 00:17:33,070 --> 00:17:34,007 417 00:17:34,007 --> 00:17:35,840 Och när ni får in lite mer 418 00:17:35,840 --> 00:17:40,820 hur minnet har faktiskt lagt ut på diskar och i högen och stack, 419 00:17:40,820 --> 00:17:42,220 Det ska göra lite mer meningsfullt. 420 00:17:42,220 --> 00:17:48,310 >> Men du kan bara tänka på liknande, det är bara en rad av utrymmen på din disk. 421 00:17:48,310 --> 00:17:52,540 Och du kan inte garantera att det finns kommer att vara fria utrymmet efter det. 422 00:17:52,540 --> 00:17:55,290 Du kan initiera en array tre och sedan kanske du 423 00:17:55,290 --> 00:17:59,190 initiera en annan uppsättning av fem senare, och det är rätt efter det. 424 00:17:59,190 --> 00:18:04,000 Så om du skulle gå förbi platsen tre i det första uppsättningen, 425 00:18:04,000 --> 00:18:06,370 du skulle skriva över något annat. 426 00:18:06,370 --> 00:18:10,390 Så arrayer är-- för er, precis tänka på dem som en fast storlek. 427 00:18:10,390 --> 00:18:12,700 428 00:18:12,700 --> 00:18:16,890 >> Så skapar du ett array-- du ska att behöva göra detta en hel del. 429 00:18:16,890 --> 00:18:18,240 430 00:18:18,240 --> 00:18:22,080 Så på samma sätt som vi har en allmänna strukturen för vår för loopar, 431 00:18:22,080 --> 00:18:24,910 Vi har en fin allmän struktur för vår array. 432 00:18:24,910 --> 00:18:28,430 Eftersom de är av en typ, hela element i en array är av en typ, 433 00:18:28,430 --> 00:18:30,950 du behöver för att initiera vad den typen är. 434 00:18:30,950 --> 00:18:33,804 >> Så, som ni ser här, vi har en trevlig liten typ fäste uppgifter. 435 00:18:33,804 --> 00:18:35,970 Så om vi ska skapa en int array, kommer det att vara int. 436 00:18:35,970 --> 00:18:38,830 Om vi ​​skapar en röding array, det blir röding. 437 00:18:38,830 --> 00:18:41,890 Om vi ​​skapar en sträng array, det ska vara sträng. 438 00:18:41,890 --> 00:18:45,140 Och sedan namnet på din array, vad du vill att det ska vara. 439 00:18:45,140 --> 00:18:51,750 Så kanske är det provresultat eller kanske det är studenter eller kanske det är godis. 440 00:18:51,750 --> 00:18:54,440 Oavsett vad du väljer att namnge din array, det är vad det ska vara. 441 00:18:54,440 --> 00:18:57,260 >> Och sedan i parentes, du ska har den storlek du vill ha. 442 00:18:57,260 --> 00:19:01,350 Så vi lagrar 10 studenter eller Vi lagrar 15 sorters godis? 443 00:19:01,350 --> 00:19:03,200 444 00:19:03,200 --> 00:19:03,920 Vad inte. 445 00:19:03,920 --> 00:19:06,830 Så i vårt exempel här, vi skapar en array 446 00:19:06,830 --> 00:19:10,100 storlek tre, som ni se här till höger. 447 00:19:10,100 --> 00:19:11,350 448 00:19:11,350 --> 00:19:15,990 Och när vi först initiera det, allt är inställd på noll. 449 00:19:15,990 --> 00:19:18,970 Så det är bara tänkt av som ett oskrivet blad. 450 00:19:18,970 --> 00:19:22,550 Vi har alla dessa utrymmen, vi har alla dessa rutor vi kunde sätta våra data i, 451 00:19:22,550 --> 00:19:25,530 men de är bara tomt för tillfället. 452 00:19:25,530 --> 00:19:28,700 >> Så om vi vill faktiskt tilldela dem dessa värden, 453 00:19:28,700 --> 00:19:33,050 Vi gör så rätt under här visar. 454 00:19:33,050 --> 00:19:39,170 Så du har vad namnet på din array är och vad index du vill. 455 00:19:39,170 --> 00:19:43,070 Så indexet hänvisar bara till, ut, vad slits vi tittar på. 456 00:19:43,070 --> 00:19:47,830 Och en viktig sak att lägga märke till är att arrayer är nollindexerade. 457 00:19:47,830 --> 00:19:53,160 Så om vi vill det första utrymmet i minnet av vår samling, det kommer att vara noll. 458 00:19:53,160 --> 00:19:54,740 Om vi ​​vill ha det andra, det ska vara en. 459 00:19:54,740 --> 00:19:56,198 Om vi ​​vill ha den tredje, det ska vara två. 460 00:19:56,198 --> 00:19:57,820 Så vidare och så vidare. 461 00:19:57,820 --> 00:20:02,130 >> Vilket också är anledningen till, konventionellt, När vi gör för loops-- jag är säker 462 00:20:02,130 --> 00:20:05,030 ni undrar, varför ska vi börja vid 0 mot 1? 463 00:20:05,030 --> 00:20:09,909 Och det beror på att när vi övergången till att använda arrayer, kartor det på rätt sätt. 464 00:20:09,909 --> 00:20:11,700 Så om du vill iterera i en array, det 465 00:20:11,700 --> 00:20:14,830 gör mycket mer meningsfullt att gör jag lika med 0, eftersom vi 466 00:20:14,830 --> 00:20:17,940 vet att kommer att motsvara till den första platsen i minnet. 467 00:20:17,940 --> 00:20:18,990 468 00:20:18,990 --> 00:20:19,990 Alla bra med det? 469 00:20:19,990 --> 00:20:21,060 470 00:20:21,060 --> 00:20:21,560 Cool. 471 00:20:21,560 --> 00:20:26,240 >> Och sedan på botten här är bara ett annat sätt att initiera en array. 472 00:20:26,240 --> 00:20:29,590 Du har fortfarande din datatyp och namnet, 473 00:20:29,590 --> 00:20:31,960 men i stället för att faktiskt sätta en storlek där, 474 00:20:31,960 --> 00:20:33,830 Du kan bara göra tomma fästen. 475 00:20:33,830 --> 00:20:36,350 Och sedan med dessa lockigt hängslen vid botten, 476 00:20:36,350 --> 00:20:40,270 Du kan bara mata in data som du vill separeras med kommatecken. 477 00:20:40,270 --> 00:20:43,070 Och det automatiskt säger, OK, jag ser 478 00:20:43,070 --> 00:20:47,300 att du har tre saker i dessa hängslen. 479 00:20:47,300 --> 00:20:51,410 Så jag vet att jag måste avsätta tre block av minne och sedan lagra dem. 480 00:20:51,410 --> 00:20:55,300 481 00:20:55,300 --> 00:21:01,670 >> Så den första versionen som du kan använda Om du frågar din användar att mata 482 00:21:01,670 --> 00:21:04,770 värden så att du kan iterera igenom arrayen 483 00:21:04,770 --> 00:21:07,660 och ask-- få lite int att mata dem. 484 00:21:07,660 --> 00:21:10,500 Om du vet värdena på förhand, det gör mycket mer känsla 485 00:21:10,500 --> 00:21:12,110 att använda den andra vägen. 486 00:21:12,110 --> 00:21:17,270 Men i de flesta fall kan du inte vet vad dessa värden kommer att bli. 487 00:21:17,270 --> 00:21:19,060 488 00:21:19,060 --> 00:21:19,560 Cool. 489 00:21:19,560 --> 00:21:20,393 Fler frågor? 490 00:21:20,393 --> 00:21:21,206 491 00:21:21,206 --> 00:21:21,705 Okej. 492 00:21:21,705 --> 00:21:25,960 493 00:21:25,960 --> 00:21:30,370 >> Så åtkomst elements-- så en av de bästa sakerna med arrayer 494 00:21:30,370 --> 00:21:33,310 är att de är slumpmässiga tillträde, vilket innebär att du 495 00:21:33,310 --> 00:21:36,010 behöver inte titta igenom varje block. 496 00:21:36,010 --> 00:21:38,150 Om du vet att du vill vad som finns i blocket två, 497 00:21:38,150 --> 00:21:40,820 Du kan bara säga, ge mig blocket två. 498 00:21:40,820 --> 00:21:44,160 Och det är därför dessa index är så viktiga, 499 00:21:44,160 --> 00:21:46,220 och det är hur vi faktiskt åt dem. 500 00:21:46,220 --> 00:21:50,660 Så i detta fall, som vi såg tidigare när vi tilldela värden, i den ena 501 00:21:50,660 --> 00:21:55,360 tidigare hade vi namn och index som vi ville komma åt, eller hur? 502 00:21:55,360 --> 00:21:59,370 Så på samma sätt, det är allt vi göra för att verkligen dra dessa data ut. 503 00:21:59,370 --> 00:22:02,940 Vi har namn och vi har det index som vi vill ha. 504 00:22:02,940 --> 00:22:06,710 >> Så i detta fall, för loop här nere på botten, någon 505 00:22:06,710 --> 00:22:09,060 vet vad den gör, vad det skulle skriva ut? 506 00:22:09,060 --> 00:22:13,771 507 00:22:13,771 --> 00:22:14,270 Mmhmm? 508 00:22:14,270 --> 00:22:17,790 509 00:22:17,790 --> 00:22:18,520 Exakt. 510 00:22:18,520 --> 00:22:20,130 Så ja, det är bara att iterera igenom. 511 00:22:20,130 --> 00:22:23,410 i är lika med zero-- vi kan gå igenom koden bara snabbt. 512 00:22:23,410 --> 00:22:26,680 i är lika med noll, i är mindre än tre på denna punkt, eller hur? 513 00:22:26,680 --> 00:22:27,780 Så det stämmer. 514 00:22:27,780 --> 00:22:33,370 Och vi säger, OK, skriv ut f vad är temperaturen i. 515 00:22:33,370 --> 00:22:37,990 i är noll just här när vi först iterera, så vi går till denna första plats, 516 00:22:37,990 --> 00:22:40,840 och vi säger, OK, är 65 nummer vi vill skriva ut. 517 00:22:40,840 --> 00:22:43,570 Så det kommer att skriva ut 65 och gör sedan en ny rad. 518 00:22:43,570 --> 00:22:46,550 Jag kommer att uppdatera, så det skrivs 87. 519 00:22:46,550 --> 00:22:48,780 Den uppdaterar igen, och det kommer att skriva ut 30. 520 00:22:48,780 --> 00:22:49,810 521 00:22:49,810 --> 00:22:50,630 Alla coolt? 522 00:22:50,630 --> 00:22:51,630 523 00:22:51,630 --> 00:22:52,130 Grymt. 524 00:22:52,130 --> 00:22:54,340 525 00:22:54,340 --> 00:22:54,840 >> Okej. 526 00:22:54,840 --> 00:22:57,710 Så här är typ av en jag sa hur 527 00:22:57,710 --> 00:23:00,020 du kan hålla reda på någons poäng och varför 528 00:23:00,020 --> 00:23:03,300 du skulle använda den första sätt initierade den 529 00:23:03,300 --> 00:23:04,890 i stället för det andra sättet. 530 00:23:04,890 --> 00:23:06,620 Och detta bara går igenom. 531 00:23:06,620 --> 00:23:08,945 Och märker att vi har en klasstorlek på 30. 532 00:23:08,945 --> 00:23:10,690 533 00:23:10,690 --> 00:23:15,770 Och vi initierar detta array med ints som är av storlek 30. 534 00:23:15,770 --> 00:23:18,070 Och då är vi iteration igenom och vi är 535 00:23:18,070 --> 00:23:20,910 ber användaren att mata in poängen för var och en av dessa 536 00:23:20,910 --> 00:23:23,700 och sedan koppla den till en särskild plats i minnet 537 00:23:23,700 --> 00:23:24,860 någonstans i denna matris. 538 00:23:24,860 --> 00:23:26,700 539 00:23:26,700 --> 00:23:27,890 Cool? 540 00:23:27,890 --> 00:23:29,650 Betyder det vettigt för alla? 541 00:23:29,650 --> 00:23:30,150 Mmhmm? 542 00:23:30,150 --> 00:23:32,910 543 00:23:32,910 --> 00:23:40,360 >> Så hashtag definiera klasstorlek 30 är ett direktiv preprocessor, 544 00:23:40,360 --> 00:23:43,780 vilket bara innebär att det gets-- den har att göra som sammanställningen processen. 545 00:23:43,780 --> 00:23:47,595 Du kan tänka på det som en global variabel. 546 00:23:47,595 --> 00:23:49,260 547 00:23:49,260 --> 00:23:53,030 Hur vi gör det är typically-- det gör att din kod 548 00:23:53,030 --> 00:23:54,770 För att vara mer lätt ändras. 549 00:23:54,770 --> 00:23:59,480 Så låt oss säga att vår klasstorlek plötsligt blir 30-15, 550 00:23:59,480 --> 00:24:03,930 om jag inte hade definierat det här sättet, skulle jag måste gå igenom min hela programmet 551 00:24:03,930 --> 00:24:07,420 och ändra alla förekomster av 30-15. 552 00:24:07,420 --> 00:24:11,590 Men med detta, får jag ändra en plats, och allt annat förändras. 553 00:24:11,590 --> 00:24:14,930 >> Om du någonsin vill göra en hash definiera i ett fall 554 00:24:14,930 --> 00:24:19,020 där du håller koll på vissa ange antal poäng för en klass 555 00:24:19,020 --> 00:24:23,250 eller om du använder ett nummer som kommer att användas, liksom, 556 00:24:23,250 --> 00:24:27,740 under en mycket lång program, är det bättre att definiera det i början 557 00:24:27,740 --> 00:24:34,440 så att om någonsin den ändras, får du att ändra en plats i stället för 100. 558 00:24:34,440 --> 00:24:34,940 Ja? 559 00:24:34,940 --> 00:24:39,830 >> STUDENT: Mellan göra det och bara förklara [OHÖRBAR] över upptill. 560 00:24:39,830 --> 00:24:42,470 >> ALLISON Buchholtz-AU: Så det har att göra med efficient-- 561 00:24:42,470 --> 00:24:45,460 det är typ av utanför vad vi kan täcka i detta avsnitt. 562 00:24:45,460 --> 00:24:49,236 Det har att göra mer med effektivitet och hur det faktiskt 563 00:24:49,236 --> 00:24:50,485 arbeta i sammanställningen processen. 564 00:24:50,485 --> 00:24:52,590 565 00:24:52,590 --> 00:24:55,006 Om du verkligen vill veta om det, jag är glad att skicka dig 566 00:24:55,006 --> 00:24:56,450 ett mail med resurser om det. 567 00:24:56,450 --> 00:24:57,810 568 00:24:57,810 --> 00:25:03,880 Hash definiera tenderar att vara föredragna för saker. 569 00:25:03,880 --> 00:25:06,380 Och som du koda mer, du typ av lära sig nyanserna 570 00:25:06,380 --> 00:25:09,135 om när du ska använda en global kontra hash definiera. 571 00:25:09,135 --> 00:25:11,010 Men för närvarande, du behöver verkligen inte 572 00:25:11,010 --> 00:25:13,290 bry dig om det är att det korta svaret. 573 00:25:13,290 --> 00:25:15,360 574 00:25:15,360 --> 00:25:16,360 Alla bra med det? 575 00:25:16,360 --> 00:25:18,151 Och även om du vill att använda en hash definiera, 576 00:25:18,151 --> 00:25:21,120 det är verkligen viktigt att notera att namnet ska skrivas med stora bokstäver. 577 00:25:21,120 --> 00:25:22,210 578 00:25:22,210 --> 00:25:24,674 Vi är inte bara göra Klasstorlek vara dramatisk. 579 00:25:24,674 --> 00:25:26,090 Det borde egentligen skrivas med stora bokstäver. 580 00:25:26,090 --> 00:25:27,880 581 00:25:27,880 --> 00:25:28,610 Cool. 582 00:25:28,610 --> 00:25:30,130 Något annat där? 583 00:25:30,130 --> 00:25:31,190 Vi är bra? 584 00:25:31,190 --> 00:25:32,220 Lovely. 585 00:25:32,220 --> 00:25:32,720 Välkommen. 586 00:25:32,720 --> 00:25:34,240 587 00:25:34,240 --> 00:25:38,495 >> OK, så jag vill att ni ska ta en titt på detta och se om du kan hitta felet. 588 00:25:38,495 --> 00:25:45,580 589 00:25:45,580 --> 00:25:46,507 Jag ska ge er en ledtråd. 590 00:25:46,507 --> 00:25:47,840 Det är någonstans i det för-slinga. 591 00:25:47,840 --> 00:25:53,070 592 00:25:53,070 --> 00:25:53,665 Mmhmm? 593 00:25:53,665 --> 00:25:55,704 >> STUDENT: Bör vara mindre än lika med 2. 594 00:25:55,704 --> 00:25:56,920 595 00:25:56,920 --> 00:26:01,094 >> ALLISON: Så det kan vara mindre än eller lika med 2, eller det kan vara mindre än 3. 596 00:26:01,094 --> 00:26:02,510 Och vad är motiveringen till det? 597 00:26:02,510 --> 00:26:05,135 >> STUDENTEN Den [OHÖRBAR], 0, 1, 2. 598 00:26:05,135 --> 00:26:06,080 >> ALLISON: Exakt. 599 00:26:06,080 --> 00:26:12,180 Så i en matris av storlek n, vi endast har indexen n minus ett. 600 00:26:12,180 --> 00:26:13,700 601 00:26:13,700 --> 00:26:14,200 Cool. 602 00:26:14,200 --> 00:26:15,091 603 00:26:15,091 --> 00:26:17,840 Och då kan vi få riktigt galen och få flerdimensionella arrayer. 604 00:26:17,840 --> 00:26:19,340 605 00:26:19,340 --> 00:26:23,960 Ett av problemen när jag tog den i min år krävs flerdimensionella arrayer, 606 00:26:23,960 --> 00:26:28,720 och jag tror att en av dem kan kräva det här året, så var bekväm. 607 00:26:28,720 --> 00:26:30,140 Wrap huvudet runt det nu. 608 00:26:30,140 --> 00:26:33,087 Det kommer att komma tillbaka för att hemsöka dig, men på ett coolt sätt. 609 00:26:33,087 --> 00:26:35,420 Så du kan egentligen bara tänka av flerdimensionella arrayer 610 00:26:35,420 --> 00:26:36,870 som arrayer av arrayer. 611 00:26:36,870 --> 00:26:38,060 612 00:26:38,060 --> 00:26:43,809 Så du kan sorts tänka på detta toppen ror som första bit av minnet. 613 00:26:43,809 --> 00:26:45,600 Och här är den andra bit av minnet, 614 00:26:45,600 --> 00:26:47,570 och den sista raden är den tredje bit av minnet. 615 00:26:47,570 --> 00:26:50,740 Och inom det, det finns en matris. 616 00:26:50,740 --> 00:26:53,250 Men naturligtvis är det lättare att skildra så här. 617 00:26:53,250 --> 00:26:55,610 >> Så du initierar det på samma sätt. 618 00:26:55,610 --> 00:26:57,290 619 00:26:57,290 --> 00:27:01,610 Detta är ett tecken Styrelsen för tre och tre. 620 00:27:01,610 --> 00:27:04,180 Så du har tre rader och tre kolumner. 621 00:27:04,180 --> 00:27:06,760 Vi företräder det här sättet. 622 00:27:06,760 --> 00:27:11,800 Och du vill komma åt det samma sätt kolumn för rad. 623 00:27:11,800 --> 00:27:14,840 Och så 1,1 som vi ser här. 624 00:27:14,840 --> 00:27:18,730 Vi utser en nolla, noll uppe. 625 00:27:18,730 --> 00:27:21,900 2,0 och 0,2. 626 00:27:21,900 --> 00:27:26,900 Så du vill bara komma åt them-- om någon någonsin gjort linjär algebra, 627 00:27:26,900 --> 00:27:31,580 på samma sätt som du komma åt ett element i en matrice, det är samma idé här. 628 00:27:31,580 --> 00:27:33,030 Så du kan relatera det tillbaka till matte. 629 00:27:33,030 --> 00:27:34,130 630 00:27:34,130 --> 00:27:36,380 Du behöver inte oroa sig alltför mycket om detta just nu. 631 00:27:36,380 --> 00:27:38,671 Det är bra att ha exponering, att veta att du kan göra det. 632 00:27:38,671 --> 00:27:42,700 Du kan skapa en del galen number-- du kan 633 00:27:42,700 --> 00:27:44,750 skapa galna arrayer är allt jag kommer att säga. 634 00:27:44,750 --> 00:27:45,250 [OHÖRBAR] 635 00:27:45,250 --> 00:27:46,585 636 00:27:46,585 --> 00:27:48,460 Det blir lite galen, men det är riktigt coolt. 637 00:27:48,460 --> 00:27:50,020 638 00:27:50,020 --> 00:27:50,670 Grymt. 639 00:27:50,670 --> 00:27:52,550 >> Och sedan, så vi har ett exempel här. 640 00:27:52,550 --> 00:27:54,165 Den beräknar en stränglängd. 641 00:27:54,165 --> 00:27:55,210 642 00:27:55,210 --> 00:27:59,670 Så hur många människor visste att de strängar som du använder 643 00:27:59,670 --> 00:28:01,265 är bara kedjor av tecken? 644 00:28:01,265 --> 00:28:03,670 645 00:28:03,670 --> 00:28:04,655 OK, ja. 646 00:28:04,655 --> 00:28:08,000 Så ni kanske tror att du inte har begagnade arrayer innan, men helst 647 00:28:08,000 --> 00:28:10,740 du använda getString i CSView bibliotek, du är 648 00:28:10,740 --> 00:28:14,690 egentligen bara ber om en array av tecken. 649 00:28:14,690 --> 00:28:17,450 Och vi tar hand om alla att i back-end för dig. 650 00:28:17,450 --> 00:28:20,184 Men du har använt arrayer sedan du startade. 651 00:28:20,184 --> 00:28:21,350 Du bara inte vet det än. 652 00:28:21,350 --> 00:28:22,420 653 00:28:22,420 --> 00:28:28,390 >> Och när du har en karaktär array eller en matris som är lagring av en sträng, 654 00:28:28,390 --> 00:28:32,050 det sista är alltid vad som är kallas en null terminator, som 655 00:28:32,050 --> 00:28:33,830 är det här. 656 00:28:33,830 --> 00:28:37,300 Och det är vid slutet av varje ord som du vill lagra. 657 00:28:37,300 --> 00:28:41,170 Så om vi vill ta reda på längden på en sträng, kan vi säga, 658 00:28:41,170 --> 00:28:45,320 ja, du vet, den Innehållet i detta block 659 00:28:45,320 --> 00:28:46,867 är inte lika med vår null terminator. 660 00:28:46,867 --> 00:28:49,450 Det betyder att det inte finns några karaktär där som vi faktiskt 661 00:28:49,450 --> 00:28:51,540 bryr sig om det är en del av ordet. 662 00:28:51,540 --> 00:28:52,665 Du ökar din längd. 663 00:28:52,665 --> 00:28:55,540 Och sedan när vi faktiskt får i slutet av ordet, kommer den att gälla 664 00:28:55,540 --> 00:28:58,790 och det ska tillbaka vår längd för oss. 665 00:28:58,790 --> 00:29:00,098 Mmhmm? 666 00:29:00,098 --> 00:29:02,906 >> STUDENT: Har utrymme räknas som noll terminator? 667 00:29:02,906 --> 00:29:04,780 ALLISON: Så en plats är inte ett null terminator. 668 00:29:04,780 --> 00:29:10,590 Så om du har multiple-- ett utrymme är faktiskt en specifik ASCII-värde. 669 00:29:10,590 --> 00:29:11,719 670 00:29:11,719 --> 00:29:13,552 STUDENT: Vad är utrops lika igen? 671 00:29:13,552 --> 00:29:17,080 ALLISON: Så, är detta vad du hänvisar till. 672 00:29:17,080 --> 00:29:21,220 Om du någonsin hör mig i kontorstid, Jag alltid kallar det, som, lika bang. 673 00:29:21,220 --> 00:29:23,520 Så bang är det inte. 674 00:29:23,520 --> 00:29:25,370 Så detta är inte lika. 675 00:29:25,370 --> 00:29:28,480 676 00:29:28,480 --> 00:29:32,290 Så om du försöker se om något är falskt, 677 00:29:32,290 --> 00:29:35,915 du vet alltid gör, bang helst variabeln är, och om det är falskt, 678 00:29:35,915 --> 00:29:38,540 det utvärderas till true och du kan göra coola saker med det. 679 00:29:38,540 --> 00:29:39,830 680 00:29:39,830 --> 00:29:40,675 Mer om det senare. 681 00:29:40,675 --> 00:29:42,090 682 00:29:42,090 --> 00:29:42,590 Cool. 683 00:29:42,590 --> 00:29:44,260 Allt bra där? 684 00:29:44,260 --> 00:29:44,760 Grymt. 685 00:29:44,760 --> 00:29:48,045 >> Så nu är det dina killar "tid till fungerar, eftersom jag har pratat. 686 00:29:48,045 --> 00:29:49,220 687 00:29:49,220 --> 00:29:53,200 Så jag vill att du bara skapa en array med heltalen ett, två och tre, 688 00:29:53,200 --> 00:29:54,660 och sedan låta trycka ut. 689 00:29:54,660 --> 00:29:58,050 Du behöver inte göra, typ, viktigaste, bla, bla, bla, vad som helst. 690 00:29:58,050 --> 00:30:00,840 Jag vill bara att du ska initiera arrayen och sedan skapa 691 00:30:00,840 --> 00:30:04,790 en for-loop för att skriva ut dem out-- eller en while-slinga, upp till dig. 692 00:30:04,790 --> 00:30:07,600 >> Jag ska bara ge er ett par minuter för att arbeta med det. 693 00:30:07,600 --> 00:30:09,320 Jag ska vila min röst. 694 00:30:09,320 --> 00:30:13,290 Om du har några frågor, jag är glad att komma runt och prata med er. 695 00:30:13,290 --> 00:30:15,290 Känn dig fri att prata med varandra. 696 00:30:15,290 --> 00:30:16,125 Få mer godis. 697 00:30:16,125 --> 00:30:17,181 698 00:30:17,181 --> 00:30:18,930 Faktum är att jag ska bara gå runt med godis. 699 00:30:18,930 --> 00:30:19,600 Hur är det? 700 00:30:19,600 --> 00:30:22,974 701 00:30:22,974 --> 00:30:23,938 >> Vill du ha något? 702 00:30:23,938 --> 00:30:34,703 703 00:30:34,703 --> 00:30:36,675 Någon annan i det här rummet vill ha godis? 704 00:30:36,675 --> 00:30:47,030 705 00:30:47,030 --> 00:30:49,206 Du kan också ta mer än en, grabbar. 706 00:30:49,206 --> 00:30:50,330 Ta en handfull om man vill. 707 00:30:50,330 --> 00:30:52,690 708 00:30:52,690 --> 00:30:53,190 Maj också. 709 00:30:53,190 --> 00:30:54,929 710 00:30:54,929 --> 00:30:55,720 Alla andra bra? 711 00:30:55,720 --> 00:30:57,561 712 00:30:57,561 --> 00:30:58,060 OK. 713 00:30:58,060 --> 00:31:02,750 714 00:31:02,750 --> 00:31:07,290 >> Dessutom kommer jag att skapa en anonym Google Form, 715 00:31:07,290 --> 00:31:09,830 och ni kan bara skicka återkoppling efter varje avsnitt 716 00:31:09,830 --> 00:31:14,115 om det är något du vill förbättra eller något du vill ha gjort. 717 00:31:14,115 --> 00:31:17,135 Om jag är lite för sprallig för dig, kan jag tona ner det. 718 00:31:17,135 --> 00:31:18,510 719 00:31:18,510 --> 00:31:20,885 Jag ska skapar det och skicka det ut till er alla efteråt. 720 00:31:20,885 --> 00:32:39,420 721 00:32:39,420 --> 00:32:40,020 >> Okej. 722 00:32:40,020 --> 00:32:41,050 Så låt oss börja i liten skala. 723 00:32:41,050 --> 00:32:42,740 Hur skulle vi initiera vår array? 724 00:32:42,740 --> 00:32:49,690 725 00:32:49,690 --> 00:32:51,670 Vad är det för typ av vår array? 726 00:32:51,670 --> 00:32:52,410 En int, eller hur? 727 00:32:52,410 --> 00:32:54,740 OK, så vad vill du att ringa din array? 728 00:32:54,740 --> 00:32:57,880 729 00:32:57,880 --> 00:32:59,230 Int array, cool. 730 00:32:59,230 --> 00:33:04,200 Okej, så vi har int int array lika, och vad har vi efter det? 731 00:33:04,200 --> 00:33:07,009 732 00:33:07,009 --> 00:33:08,259 STUDENTEN [OHÖRBAR] parentes. 733 00:33:08,259 --> 00:33:09,140 ALLISON: Hängslen. 734 00:33:09,140 --> 00:33:10,330 735 00:33:10,330 --> 00:33:11,775 Och sedan innanför hängslen? 736 00:33:11,775 --> 00:33:14,360 737 00:33:14,360 --> 00:33:16,830 Ett kommatecken två kommatecken tre. 738 00:33:16,830 --> 00:33:17,330 Cool. 739 00:33:17,330 --> 00:33:18,660 Så det är okej. 740 00:33:18,660 --> 00:33:21,480 Så nu har vi vår for-loop. 741 00:33:21,480 --> 00:33:24,180 Så i den första delen av vår för loop, vad har vi? 742 00:33:24,180 --> 00:33:25,796 743 00:33:25,796 --> 00:33:27,420 >> Elev: Jag är lika med 0? 744 00:33:27,420 --> 00:33:31,400 >> ALLISON: Så int jag lika med 0, och vad är vårt tillstånd? 745 00:33:31,400 --> 00:33:33,750 746 00:33:33,750 --> 00:33:36,120 Vad jag kommer att vara mindre än? 747 00:33:36,120 --> 00:33:39,510 Mindre än tre, och hur vi uppdaterar vi i? 748 00:33:39,510 --> 00:33:41,630 Jag plus plus, uppdatera den med ett. 749 00:33:41,630 --> 00:33:46,150 Och sen ska vi ha några printf av heltal, 750 00:33:46,150 --> 00:33:49,530 och vad är det sista del som faktiskt 751 00:33:49,530 --> 00:33:51,370 ska säga vad vi ska skriva ut? 752 00:33:51,370 --> 00:33:55,610 753 00:33:55,610 --> 00:33:59,120 Det skulle vara namnet på den array, vilket är int array, eller hur? 754 00:33:59,120 --> 00:34:01,090 Och vad är i fästena för int array? 755 00:34:01,090 --> 00:34:02,540 756 00:34:02,540 --> 00:34:03,640 i. 757 00:34:03,640 --> 00:34:06,550 [? Så jag?] Ringde min exempel, men det du gå. 758 00:34:06,550 --> 00:34:07,939 759 00:34:07,939 --> 00:34:08,480 Inte så illa. 760 00:34:08,480 --> 00:34:09,250 Alla bra? 761 00:34:09,250 --> 00:34:10,220 762 00:34:10,220 --> 00:34:10,719 Cool. 763 00:34:10,719 --> 00:34:12,949 764 00:34:12,949 --> 00:34:14,340 >> Så vi är klara med matriser. 765 00:34:14,340 --> 00:34:15,190 Grattis. 766 00:34:15,190 --> 00:34:18,274 Ni lyckades iterera genom alla the-- ja? 767 00:34:18,274 --> 00:34:19,705 >> STUDENTEN [OHÖRBAR] 768 00:34:19,705 --> 00:34:20,659 >> ALLISON: Ja. 769 00:34:20,659 --> 00:34:26,383 770 00:34:26,383 --> 00:34:27,798 >> STUDENT: Jag har en fråga. 771 00:34:27,798 --> 00:34:30,288 Ska man indrag hängslen? 772 00:34:30,288 --> 00:34:34,150 >> ALLISON: Så hängslen ska ligga med for-slingan, och sedan allt 773 00:34:34,150 --> 00:34:35,699 innanför hängslen ska vara indragen. 774 00:34:35,699 --> 00:34:37,824 >> STUDENT: OK, bör det för loop vara indragen? 775 00:34:37,824 --> 00:34:41,159 >> ALLISON: Den för slingan inte måste vara indragen vid denna punkt. 776 00:34:41,159 --> 00:34:46,750 Om du var i main, om vi faktiskt hade en huvuduppgift här, 777 00:34:46,750 --> 00:34:48,929 det skulle vara indragen från main. 778 00:34:48,929 --> 00:34:52,590 Men i detta fall, det är bra. 779 00:34:52,590 --> 00:34:53,354 Ja, fråga. 780 00:34:53,354 --> 00:34:55,687 >> STUDENT: Har du behöver ha konsolerna efter exempel? 781 00:34:55,687 --> 00:34:59,050 782 00:34:59,050 --> 00:35:01,260 >> ALLISON: Ja, om du är initiering det på det sättet. 783 00:35:01,260 --> 00:35:03,430 784 00:35:03,430 --> 00:35:06,860 Så kom ihåg, detta är den andra sätt för initialisering av en array där 785 00:35:06,860 --> 00:35:10,680 vi har hängslen och sedan våra faktiska uppgifter separerade med komma inom. 786 00:35:10,680 --> 00:35:14,700 787 00:35:14,700 --> 00:35:17,281 >> STUDENT: Jag trodde fanns fästen för det exemplet. 788 00:35:17,281 --> 00:35:19,010 >> ALLISON: Nej, de är tandställning. 789 00:35:19,010 --> 00:35:20,039 De är hängslen. 790 00:35:20,039 --> 00:35:22,330 Om du initierade den det andra sättet, det är hängslen. 791 00:35:22,330 --> 00:35:28,780 Om vi ​​skulle säga, int example-- om Vi ville bara en tom array för ints, 792 00:35:28,780 --> 00:35:32,270 det skulle vara int exempel konsoler tre. 793 00:35:32,270 --> 00:35:34,670 Konsolerna representerar storleken. 794 00:35:34,670 --> 00:35:36,720 När du har tandställning, det är de faktiska uppgifter 795 00:35:36,720 --> 00:35:39,244 du lägger in det på det här sättet. 796 00:35:39,244 --> 00:35:40,535 Vi kan bläddra tillbaka riktigt snabbt. 797 00:35:40,535 --> 00:35:42,370 798 00:35:42,370 --> 00:35:48,010 >> Så i den här, det är bara vår initial array, initiering. 799 00:35:48,010 --> 00:35:51,640 Och här är vi individuellt tilldela fläckar på dem, 800 00:35:51,640 --> 00:35:56,730 så detta representerar index för vår array, vilket är varför vi har konsoler. 801 00:35:56,730 --> 00:36:01,630 Men här, om du märker, vi har lämnat våra konsoler utan en storlek, 802 00:36:01,630 --> 00:36:05,969 och vi initiera den med faktiska data all-in-one med hängslen. 803 00:36:05,969 --> 00:36:08,260 STUDENT: Så varför har vi inte fästen i detta exempel? 804 00:36:08,260 --> 00:36:11,030 ALLISON: Så, i vilken del? 805 00:36:11,030 --> 00:36:14,645 STUDENT: Skulle inte vi säg, int exempel fästen 806 00:36:14,645 --> 00:36:19,710 lika med hängslen [OHÖRBAR] parentes till exempel. 807 00:36:19,710 --> 00:36:20,900 >> ALLISON: Åh, förlåt. 808 00:36:20,900 --> 00:36:21,560 Du har rätt. 809 00:36:21,560 --> 00:36:22,690 Vi har fästen där. 810 00:36:22,690 --> 00:36:23,486 Sorry guys, min dåliga. 811 00:36:23,486 --> 00:36:25,150 812 00:36:25,150 --> 00:36:27,560 Ja, ska du ha parentes efter exempel. 813 00:36:27,560 --> 00:36:28,850 Du har helt rätt. 814 00:36:28,850 --> 00:36:29,750 >> STUDENTEN [OHÖRBAR] att inte göra det. 815 00:36:29,750 --> 00:36:31,270 >> ALLISON: Nej, du måste ha parentes, eftersom det annars finns 816 00:36:31,270 --> 00:36:32,810 inte kommer att deklarera en array. 817 00:36:32,810 --> 00:36:33,685 STUDENTEN [OHÖRBAR]. 818 00:36:33,685 --> 00:36:34,200 Ledsen för det. 819 00:36:34,200 --> 00:36:36,200 >> ALLISON: Tyvärr behöver du parentes efter exempel. 820 00:36:36,200 --> 00:36:36,620 821 00:36:36,620 --> 00:36:37,120 Stavfel. 822 00:36:37,120 --> 00:36:40,650 823 00:36:40,650 --> 00:36:43,160 God fångst, guldstjärna till dig. 824 00:36:43,160 --> 00:36:47,730 Dessutom, om du ställer en fråga, om ni skulle bara berätta ditt namn, 825 00:36:47,730 --> 00:36:48,570 Jag skulle älska det. 826 00:36:48,570 --> 00:36:50,630 Jag skulle älska att kunna vet alla dina namn. 827 00:36:50,630 --> 00:36:53,187 Jag tänker inte kalla ringa dig, jag faktiskt 828 00:36:53,187 --> 00:36:54,520 vill bara vill veta ditt namn. 829 00:36:54,520 --> 00:36:57,530 Så snälla faktiskt berätta ditt namn. 830 00:36:57,530 --> 00:36:58,426 >> LEAH: Leah. 831 00:36:58,426 --> 00:36:59,340 >> ALLISON: Leah. 832 00:36:59,340 --> 00:37:03,960 OK, så functions-- jag vet i korthet De pratade om detta under föreläsningen. 833 00:37:03,960 --> 00:37:07,590 Så fungerar är liksom bara som dessa små bite-storlek saker 834 00:37:07,590 --> 00:37:11,525 där du passerar i insatsmaterial, något som magiska händer, och du får resultat. 835 00:37:11,525 --> 00:37:12,680 836 00:37:12,680 --> 00:37:13,180 Cool. 837 00:37:13,180 --> 00:37:15,013 Så du faktiskt använt en många av dessa redan. 838 00:37:15,013 --> 00:37:15,970 839 00:37:15,970 --> 00:37:18,840 Få int, få sträng, skriv ut f. 840 00:37:18,840 --> 00:37:21,790 Dessa är alla funktioner där du bara kalla dem, 841 00:37:21,790 --> 00:37:24,370 det finns massor av magiska saker pågår i bakgrunden 842 00:37:24,370 --> 00:37:27,390 att du inte nödvändigtvis ser, och du får ut vad du vill. 843 00:37:27,390 --> 00:37:30,280 Eller åtminstone få dig vad du hoppas att du vill. 844 00:37:30,280 --> 00:37:31,920 845 00:37:31,920 --> 00:37:35,620 >> Och i grund och botten den grad av funktioner, och en av de huvudteman CS, 846 00:37:35,620 --> 00:37:38,700 är att bryta din kod i hanterbara bitar. 847 00:37:38,700 --> 00:37:41,520 När du börjar skriva dessa riktigt långa program, 848 00:37:41,520 --> 00:37:44,970 eller i Scratch när du hade denna storslagna idé för ett spel, 849 00:37:44,970 --> 00:37:48,070 du behöver för att kunna bryta den ner till, liksom, OK, hur ska jag börja? 850 00:37:48,070 --> 00:37:50,470 Vilka är de små bitar som jag behöver? 851 00:37:50,470 --> 00:37:53,320 Åh, jag måste be användaren för något. 852 00:37:53,320 --> 00:37:54,830 Nu måste jag skriva ut något. 853 00:37:54,830 --> 00:37:56,590 Åh, jag måste beräkna detta värde. 854 00:37:56,590 --> 00:38:00,050 >> Och lära sig att bryta upp din kod och de stora problem som du 855 00:38:00,050 --> 00:38:02,740 har in i dessa små bitar och skapa funktioner 856 00:38:02,740 --> 00:38:05,330 är faktiskt ett av de stora hörnstenarna i CS. 857 00:38:05,330 --> 00:38:06,440 858 00:38:06,440 --> 00:38:11,740 Så du kan tänka dig en funktion på samma sätt som som en svart låda, en magisk svart låda, 859 00:38:11,740 --> 00:38:15,030 att du sätter saker i och du får lite utgång. 860 00:38:15,030 --> 00:38:16,290 861 00:38:16,290 --> 00:38:19,460 Och resten av programmet behöver inte nödvändigtvis vet 862 00:38:19,460 --> 00:38:21,150 vad som händer inom den svarta lådan. 863 00:38:21,150 --> 00:38:24,190 Allt som bryr sig om är vad går in och vad som kommer ut. 864 00:38:24,190 --> 00:38:26,230 865 00:38:26,230 --> 00:38:26,730 Cool. 866 00:38:26,730 --> 00:38:27,820 >> Så varför fungerar? 867 00:38:27,820 --> 00:38:33,240 Organization-- som sagt, när du är hantera mycket stora kod baser, 868 00:38:33,240 --> 00:38:37,357 hur du organiserar din kod kommer att vara mycket enklare om du använder funktionerna. 869 00:38:37,357 --> 00:38:39,190 Eftersom du kommer att kunna att vara, som, OK, detta 870 00:38:39,190 --> 00:38:41,849 är vad den här funktionen gör och Här är vad en annan gör. 871 00:38:41,849 --> 00:38:43,890 Och du kan lätt se hur de alla hänger ihop. 872 00:38:43,890 --> 00:38:45,590 873 00:38:45,590 --> 00:38:48,210 Så bryter upp den i allt dessa hanterbara underdelar. 874 00:38:48,210 --> 00:38:51,860 >> Så simplification-- Jag är säker på att ni allt såg detta, som sagt, med Scratch. 875 00:38:51,860 --> 00:38:53,230 876 00:38:53,230 --> 00:38:56,790 Du har denna stora idé, och du är som, hur fungerar allt detta arbete? 877 00:38:56,790 --> 00:38:59,710 Men om du närmar dig det bit för bit, säger du, OK, 878 00:38:59,710 --> 00:39:03,650 hur gör jag en sprite flyta över skärmen? 879 00:39:03,650 --> 00:39:04,805 Det är lite lättare. 880 00:39:04,805 --> 00:39:06,000 881 00:39:06,000 --> 00:39:09,590 Så bra användning av funktions fabrikat koden mycket lättare att läsa. 882 00:39:09,590 --> 00:39:13,800 Det gör det lättare att felsöka vilken som du får in din senare problemsamlingar, 883 00:39:13,800 --> 00:39:15,900 du kommer att verkligen vill kunna göra. 884 00:39:15,900 --> 00:39:17,900 Och de är också lättare att utforma och genomföra. 885 00:39:17,900 --> 00:39:21,100 Du kan koda upp en liten fungera relativt snabbt 886 00:39:21,100 --> 00:39:25,260 och se till att det fungerar kontra försöka att skapa denna hela långa programmet 887 00:39:25,260 --> 00:39:28,960 och sedan typ av gå igenom och se vad som fungerar och vad som inte. 888 00:39:28,960 --> 00:39:30,300 >> Och sedan återanvändbarhet. 889 00:39:30,300 --> 00:39:33,380 Så fungerar endast behöver som ska skrivas en gång, 890 00:39:33,380 --> 00:39:35,586 och sedan kan du använda dem så många gånger som möjligt. 891 00:39:35,586 --> 00:39:37,210 Så det är, liksom, miljövänlig i en mening. 892 00:39:37,210 --> 00:39:39,660 893 00:39:39,660 --> 00:39:42,070 Om du hade saker som print f, där man 894 00:39:42,070 --> 00:39:47,420 var tvungen att skriva ut det magiska som går bakom ut f varenda gång 895 00:39:47,420 --> 00:39:51,040 du ville skriva ut något, du skulle vara ganska trött på det 896 00:39:51,040 --> 00:39:51,650 vid slutet. 897 00:39:51,650 --> 00:39:52,660 898 00:39:52,660 --> 00:39:55,292 >> En av de saker som du kommer lära sig i senare CS klasser, 899 00:39:55,292 --> 00:39:57,000 eller en av de bästa råd jag får 900 00:39:57,000 --> 00:40:00,870 är, om du kopierar och klistrar in kod, bör det förmodligen vara en funktion. 901 00:40:00,870 --> 00:40:01,880 902 00:40:01,880 --> 00:40:06,007 Om du har exakt samma linjer alla i hela din kod, 903 00:40:06,007 --> 00:40:08,090 om du räknade ut dem, din kod skulle förmodligen 904 00:40:08,090 --> 00:40:11,860 vara, typ, fem gånger kortare och vara mycket mer lättläst. 905 00:40:11,860 --> 00:40:15,230 Och istället för att försöka felsöka alla dessa olika platser där saker 906 00:40:15,230 --> 00:40:18,021 kan gå fel, du har en funktion att du får felsöka. 907 00:40:18,021 --> 00:40:19,230 908 00:40:19,230 --> 00:40:21,890 Och jag lovar, en hel del av detta kan tyckas slags abstrakt nu, 909 00:40:21,890 --> 00:40:24,620 men när du kommer in senare och senare problem ställer, 910 00:40:24,620 --> 00:40:28,950 det ska göra mycket mer känsla och verkligen drivas hem. 911 00:40:28,950 --> 00:40:31,775 Finns det några frågor om funktioner hittills? 912 00:40:31,775 --> 00:40:32,650 Varför vi använder dem? 913 00:40:32,650 --> 00:40:34,775 Jag vet att vi har inte fått till Nitty Gritty än. 914 00:40:34,775 --> 00:40:40,610 Så definierar en function-- precis som arrayer, vi behöver någon form of-- här 915 00:40:40,610 --> 00:40:41,860 är bara den allmänna utgången. 916 00:40:41,860 --> 00:40:45,110 Så det här är en funktion som är bara att kub lite input. 917 00:40:45,110 --> 00:40:50,120 Och på nästa sida, faktiskt, vi har alla dessa awesome små saker här. 918 00:40:50,120 --> 00:40:52,420 Så kan alla läsa att, av nyfikenhet? 919 00:40:52,420 --> 00:40:55,050 Jag vet att lila och svart kan vara lite svårt. 920 00:40:55,050 --> 00:41:00,730 >> Men stora saker att veta-- så den första en här är vår returtyp. 921 00:41:00,730 --> 00:41:05,270 Så det här talar om utgången av denna funktion när, i detta fall, 922 00:41:05,270 --> 00:41:08,990 vi lägger i vissa nummer, vad vi är få är att antalet kubik. 923 00:41:08,990 --> 00:41:11,090 Så det borde vara en int i detta fall. 924 00:41:11,090 --> 00:41:14,055 Kanske skulle det vara en dubbel eller något annat senare, men i detta fall, 925 00:41:14,055 --> 00:41:14,555 det är en int. 926 00:41:14,555 --> 00:41:15,620 927 00:41:15,620 --> 00:41:19,440 >> Med c behöver du alltid en returtyp. 928 00:41:19,440 --> 00:41:20,267 Det blir en int. 929 00:41:20,267 --> 00:41:20,975 Det blir en flottör. 930 00:41:20,975 --> 00:41:22,180 Det blir en dubbel. 931 00:41:22,180 --> 00:41:25,370 Men du måste specificera vad Denna funktion kommer att återvända. 932 00:41:25,370 --> 00:41:26,480 933 00:41:26,480 --> 00:41:29,170 Annars kommer det att skrika på dig, och det kommer inte att kompilera. 934 00:41:29,170 --> 00:41:30,462 Du kommer att vara ledsen, och jag ska vara ledsen. 935 00:41:30,462 --> 00:41:31,420 Och det är inte bra. 936 00:41:31,420 --> 00:41:31,940 OK. 937 00:41:31,940 --> 00:41:34,290 >> Och så har vi vår funktionsnamn. 938 00:41:34,290 --> 00:41:38,440 Och som ni kan se här, med c finns det här mycket konsekvent paradigm. 939 00:41:38,440 --> 00:41:42,630 Vad är din typ, vad heter, och lite annan sak i slutet. 940 00:41:42,630 --> 00:41:45,550 Så vi har vår returtypen, vår funktionsnamn, och sedan 941 00:41:45,550 --> 00:41:49,320 vi har vår header med vår parameterlista. 942 00:41:49,320 --> 00:41:52,080 >> Så parameterlistan är, vad som är denna funktion kommer att ta in? 943 00:41:52,080 --> 00:41:56,360 En parameterlista är helt enkelt en synonym för, vad är våra ingångar? 944 00:41:56,360 --> 00:42:00,230 Och på samma sätt som vi måste definiera vår funktion 945 00:42:00,230 --> 00:42:03,210 och ge det en återgång typ, var och en av våra insatsvaror 946 00:42:03,210 --> 00:42:05,350 måste ha en typ associerad med den. 947 00:42:05,350 --> 00:42:08,850 Så vi vet vad vår funktion kan faktiskt jobba med. 948 00:42:08,850 --> 00:42:11,290 >> Så i detta fall, har vi några int input. 949 00:42:11,290 --> 00:42:14,660 Så återigen, det blir typ och vad du kallar det. 950 00:42:14,660 --> 00:42:16,500 951 00:42:16,500 --> 00:42:19,040 Och sedan, när du ser Här har vi vår kropp. 952 00:42:19,040 --> 00:42:23,600 Så vi har några int utgång, att är bara våra insatstider själv 953 00:42:23,600 --> 00:42:25,810 gånger själv, som bara kuber det. 954 00:42:25,810 --> 00:42:27,610 Och sedan återvänder vi denna produktion. 955 00:42:27,610 --> 00:42:32,140 >> Så som ni ser här har vi en int gånger en int gånger en int, 956 00:42:32,140 --> 00:42:35,420 så den returnerar en int, som har förklarats där. 957 00:42:35,420 --> 00:42:38,240 Så allt är sammanhängande. 958 00:42:38,240 --> 00:42:39,210 Allting är lycklig. 959 00:42:39,210 --> 00:42:40,250 Din funktion kommer att köras. 960 00:42:40,250 --> 00:42:41,192 961 00:42:41,192 --> 00:42:42,650 Och detta är bara den allmänna sak. 962 00:42:42,650 --> 00:42:46,750 Så alltid ha returtypen, namn, och din parameterlista. 963 00:42:46,750 --> 00:42:48,830 Varje sak i ditt parameterlistan, eller input, 964 00:42:48,830 --> 00:42:51,410 måste ha en typ associerad med den. 965 00:42:51,410 --> 00:42:54,210 Och då har du din kropp här med vad 966 00:42:54,210 --> 00:42:55,590 du vill göra med din input. 967 00:42:55,590 --> 00:42:57,390 968 00:42:57,390 --> 00:43:00,410 >> Och då är det uppenbart att du vill returnera något. 969 00:43:00,410 --> 00:43:02,630 Ibland fungerar kommer bara tillbaka. 970 00:43:02,630 --> 00:43:06,090 De egentligen inte tillbaka något för dig att använda. 971 00:43:06,090 --> 00:43:08,660 Men du måste gå tillbaka på något sätt. 972 00:43:08,660 --> 00:43:12,900 Och när du gör egna funktioner, 973 00:43:12,900 --> 00:43:15,430 Vi kan komma in i det lite djupare. 974 00:43:15,430 --> 00:43:18,880 Personligen, om du vill, det finns en hel del olika saker du kan göra där. 975 00:43:18,880 --> 00:43:21,350 976 00:43:21,350 --> 00:43:22,140 Alla bra? 977 00:43:22,140 --> 00:43:25,900 Något på denna lista som du vill ha mig att gå över, att du inte förstod? 978 00:43:25,900 --> 00:43:27,204 979 00:43:27,204 --> 00:43:28,120 Alla är bra där? 980 00:43:28,120 --> 00:43:29,071 981 00:43:29,071 --> 00:43:29,570 Cool. 982 00:43:29,570 --> 00:43:31,350 983 00:43:31,350 --> 00:43:32,120 Grymt. 984 00:43:32,120 --> 00:43:34,700 >> OK, så vi sätter allt detta tillsammans nu. 985 00:43:34,700 --> 00:43:35,720 986 00:43:35,720 --> 00:43:41,201 Så vi har några int kub-ingång, så Detta är ett komplett program här. 987 00:43:41,201 --> 00:43:42,950 Fram till nu, har jag sorts gett dig 988 00:43:42,950 --> 00:43:45,699 killar snuttar som kanske att gå i ett program. 989 00:43:45,699 --> 00:43:47,240 Vi har precis tittat på funktioner. 990 00:43:47,240 --> 00:43:48,448 Men här är ett helt program. 991 00:43:48,448 --> 00:43:49,400 992 00:43:49,400 --> 00:43:53,690 Så hur många av er minns Ordet prototyp från föreläsning? 993 00:43:53,690 --> 00:43:54,750 994 00:43:54,750 --> 00:43:55,300 Cool. 995 00:43:55,300 --> 00:43:55,890 Vi har en. 996 00:43:55,890 --> 00:43:57,160 997 00:43:57,160 --> 00:43:58,110 Vad heter du? 998 00:43:58,110 --> 00:43:58,850 >> STEPH: Steph. 999 00:43:58,850 --> 00:43:59,475 >> ALLISON: Steph? 1000 00:43:59,475 --> 00:44:01,030 OK, awesome. 1001 00:44:01,030 --> 00:44:03,310 Så, kommer du ihåg vad en prototyp är? 1002 00:44:03,310 --> 00:44:04,651 1003 00:44:04,651 --> 00:44:10,230 >> STUDENT: Du säger [OHÖRBAR] innan du faktiskt ta itu med det. 1004 00:44:10,230 --> 00:44:11,700 >> ALLISON: Minns du varför? 1005 00:44:11,700 --> 00:44:13,158 >> STUDENT: Nej. 1006 00:44:13,158 --> 00:44:14,620 >> ALLISON: OK. 1007 00:44:14,620 --> 00:44:16,090 Guldstjärna. 1008 00:44:16,090 --> 00:44:19,470 Så ja, en prototyp som vi har i förväg, därför att annars, 1009 00:44:19,470 --> 00:44:21,260 vår kompilator kommer att skrika på oss. 1010 00:44:21,260 --> 00:44:24,294 Det kommer att säga, OK, vad är denna kub funktion? 1011 00:44:24,294 --> 00:44:26,460 Precis, du bokstavligen har berättade ingenting om detta. 1012 00:44:26,460 --> 00:44:28,110 Det är som när du gå in i ett klassrum, 1013 00:44:28,110 --> 00:44:29,320 och någon är som, finns det en frågesport i dag. 1014 00:44:29,320 --> 00:44:31,380 Och du är som du aldrig berättade för mig om detta. 1015 00:44:31,380 --> 00:44:32,930 Jag är inte nöjd med oss. 1016 00:44:32,930 --> 00:44:34,300 1017 00:44:34,300 --> 00:44:37,020 Prototypen är i princip som din kursplan säga, titta. 1018 00:44:37,020 --> 00:44:37,900 Heads up. 1019 00:44:37,900 --> 00:44:39,570 Det kommer att bli en frågesport på denna dag. 1020 00:44:39,570 --> 00:44:41,420 Inte freak out när du kommer till den. 1021 00:44:41,420 --> 00:44:42,690 Du kommer att bli bra. 1022 00:44:42,690 --> 00:44:48,170 >> Så alla prototypen gör är att berätta viktigaste, jag kommer att använda denna funktion. 1023 00:44:48,170 --> 00:44:51,010 Jag lovar att jag definierar det senare. 1024 00:44:51,010 --> 00:44:52,260 Inte galen på mig. 1025 00:44:52,260 --> 00:44:54,750 Bara sammanställa och göra som jag säger till. 1026 00:44:54,750 --> 00:44:58,880 Så vi har en prototyp där bara för att göra vår kompilator lycklig. 1027 00:44:58,880 --> 00:45:04,360 Och det är i princip ett löfte om att du har definierat denna funktion senare 1028 00:45:04,360 --> 00:45:07,960 och att du inte bara ringa detta slumpmässiga sak som det 1029 00:45:07,960 --> 00:45:10,070 vet inte vad du är kommer att göra. 1030 00:45:10,070 --> 00:45:11,910 >> Så i detta fall, har vi stora här. 1031 00:45:11,910 --> 00:45:14,660 Vi initiera något heltal x. 1032 00:45:14,660 --> 00:45:15,620 Det är två. 1033 00:45:15,620 --> 00:45:17,510 Vi kommer att skriva ut vad x är. 1034 00:45:17,510 --> 00:45:18,800 Vi kommer att kub x. 1035 00:45:18,800 --> 00:45:21,520 Som ni ser, vi har vår funktionsdeklarationen 1036 00:45:21,520 --> 00:45:23,770 här nere att vi pratade om tidigare. 1037 00:45:23,770 --> 00:45:28,260 Det kommer kub x, och sedan, om vi minns, kuben funktionen faktiskt 1038 00:45:28,260 --> 00:45:31,340 returnerar ett heltal till oss, som lagras 1039 00:45:31,340 --> 00:45:35,860 ix igen så att vi kan skriva ut ut åtta eller kub x just nu. 1040 00:45:35,860 --> 00:45:37,170 1041 00:45:37,170 --> 00:45:38,920 Betyder det vettigt för alla? 1042 00:45:38,920 --> 00:45:40,360 Vi är bra? 1043 00:45:40,360 --> 00:45:41,160 Okej. 1044 00:45:41,160 --> 00:45:41,660 Grymt. 1045 00:45:41,660 --> 00:45:45,540 1046 00:45:45,540 --> 00:45:46,840 >> Okej. 1047 00:45:46,840 --> 00:45:50,879 Hur många av er kom ihåg detta så här 1048 00:45:50,879 --> 00:45:52,670 är i grunden bara din stapeln och din hög, 1049 00:45:52,670 --> 00:45:56,510 bara en visualisering av hur minnet lagras här. 1050 00:45:56,510 --> 00:45:58,200 1051 00:45:58,200 --> 00:46:01,400 Så vi vill bara göra Se till att du förstår 1052 00:46:01,400 --> 00:46:03,680 hur dessa representeras i minnet. 1053 00:46:03,680 --> 00:46:07,670 Om du ta klasser som CS61 och grejer senare, 1054 00:46:07,670 --> 00:46:10,570 du får lära dig så här långt mer på djupet, och det är riktigt coolt. 1055 00:46:10,570 --> 00:46:11,730 Jag rekommenderar den. 1056 00:46:11,730 --> 00:46:12,740 1057 00:46:12,740 --> 00:46:14,720 Men just nu, jag ska ge du den breda översikten 1058 00:46:14,720 --> 00:46:16,950 så du inte behöver vet Nitty Gritty. 1059 00:46:16,950 --> 00:46:20,820 >> Så toppen bara en textsegment som innehåller de faktiska nollor och ettor, 1060 00:46:20,820 --> 00:46:23,740 den binära för detta. 1061 00:46:23,740 --> 00:46:27,510 Och detta används för att lagra globala variabler om du har någon. 1062 00:46:27,510 --> 00:46:28,870 1063 00:46:28,870 --> 00:46:32,240 När du flyttar ner, vi har, som ni ser här, 1064 00:46:32,240 --> 00:46:34,670 initialiseras data oinitialiserad data och sedan högen. 1065 00:46:34,670 --> 00:46:35,800 1066 00:46:35,800 --> 00:46:38,584 >> Så vi vet inte riktigt prata om högen just nu. 1067 00:46:38,584 --> 00:46:39,500 Vi kommer till det senare. 1068 00:46:39,500 --> 00:46:40,762 1069 00:46:40,762 --> 00:46:42,970 För nu, jag ska bara våg mina händer och vara som, 1070 00:46:42,970 --> 00:46:44,553 du behöver inte veta om det här nu. 1071 00:46:44,553 --> 00:46:46,100 1072 00:46:46,100 --> 00:46:49,060 Men vi kommer att prata lite lite om stacken. 1073 00:46:49,060 --> 00:46:53,050 Så stack är where-- vi zooma in. 1074 00:46:53,050 --> 00:46:58,590 Detta är faktiskt hur programmet Vi tittade bara på förekommer i minnet. 1075 00:46:58,590 --> 00:47:01,630 >> Så vad som händer är, varje När vi kallar en funktion, 1076 00:47:01,630 --> 00:47:04,180 vi får vad som kallas en stapel ram, som är en av dessa. 1077 00:47:04,180 --> 00:47:05,870 Så viktiga parametrar. 1078 00:47:05,870 --> 00:47:07,944 Så de är de saker att vi passerar in main. 1079 00:47:07,944 --> 00:47:11,110 Så de är här på botten, eftersom det är det första vi kallar. 1080 00:47:11,110 --> 00:47:13,401 Och sedan får vi huvud s lokalbefolkningen, och när vi säger att, 1081 00:47:13,401 --> 00:47:15,970 vi menar de lokala variablerna som lagras i main. 1082 00:47:15,970 --> 00:47:19,950 1083 00:47:19,950 --> 00:47:23,620 Så lokalbefolkningen här skulle vara, typ, x är lika med två i detta fall. 1084 00:47:23,620 --> 00:47:26,350 Därför att det är lokaliserad till huvud. 1085 00:47:26,350 --> 00:47:29,745 Har alla minns omfattning, gå över det i föreläsning? 1086 00:47:29,745 --> 00:47:31,517 1087 00:47:31,517 --> 00:47:32,017 OK. 1088 00:47:32,017 --> 00:47:36,110 Så, bara de variabler som initieras inom main. 1089 00:47:36,110 --> 00:47:38,550 Så det är därför vi har huvud [? sång. ?] 1090 00:47:38,550 --> 00:47:40,390 >> Och sedan inom huvud, kallar vi kub. 1091 00:47:40,390 --> 00:47:41,000 Rätt? 1092 00:47:41,000 --> 00:47:44,510 Så vi får en annan ram med kub parametrar. 1093 00:47:44,510 --> 00:47:47,050 Så i detta fall, kubens parametrar är nu 1094 00:47:47,050 --> 00:47:50,800 x som vi passerade, de två som vi passerade. 1095 00:47:50,800 --> 00:47:55,320 Och sedan kubens lokalbefolkningen, som är där själva cubing händer. 1096 00:47:55,320 --> 00:47:56,450 Och sedan återvänder. 1097 00:47:56,450 --> 00:48:02,120 >> Så vad som händer är som kub faktiskt gör vad den ska göra, returneras. 1098 00:48:02,120 --> 00:48:07,020 När den återvänder, denna ram blad, och återvände ner till main. 1099 00:48:07,020 --> 00:48:09,160 Och sedan inom huvud, vi kan faktiskt skriva ut den. 1100 00:48:09,160 --> 00:48:10,840 1101 00:48:10,840 --> 00:48:14,500 Så när du återvänder något, när funktionen returnerar, 1102 00:48:14,500 --> 00:48:19,900 det är som att förmedla dessa värden till ramen under det och sedan lämnar. 1103 00:48:19,900 --> 00:48:22,200 Och saker måste utföra för. 1104 00:48:22,200 --> 00:48:25,550 >> Och när du kommer till större program, vi kan göra svalare och mer komplicerad 1105 00:48:25,550 --> 00:48:26,470 diagram. 1106 00:48:26,470 --> 00:48:29,070 Men för tillfället är det här bara en allmän översikt 1107 00:48:29,070 --> 00:48:31,110 så du har typ av en förståelse av vad 1108 00:48:31,110 --> 00:48:35,160 händer när du ringer en funktion och hur det faktiskt ser ut i minnet. 1109 00:48:35,160 --> 00:48:37,230 1110 00:48:37,230 --> 00:48:37,770 Cool? 1111 00:48:37,770 --> 00:48:38,353 Alla bra? 1112 00:48:38,353 --> 00:48:39,920 1113 00:48:39,920 --> 00:48:40,420 Grymt. 1114 00:48:40,420 --> 00:48:42,070 1115 00:48:42,070 --> 00:48:50,575 >> Så detta är ett som är försöker bara byta saker. 1116 00:48:50,575 --> 00:48:52,260 1117 00:48:52,260 --> 00:48:54,930 Som vi ser här, vi har vår funktion prototyp 1118 00:48:54,930 --> 00:48:56,900 så att vår kompilatorn inte skrika åt oss. 1119 00:48:56,900 --> 00:48:59,220 Vi har en del stora, och vi vill byta x och y. 1120 00:48:59,220 --> 00:49:00,320 1121 00:49:00,320 --> 00:49:04,129 De har inte gjort denna demo i föreläsning ännu, de har? 1122 00:49:04,129 --> 00:49:04,670 De har inte? 1123 00:49:04,670 --> 00:49:05,900 OK. 1124 00:49:05,900 --> 00:49:08,450 Så vi kommer att gå över detta mycket kort. 1125 00:49:08,450 --> 00:49:12,210 Du får in detta exempel mer på djupet, tror jag, den här veckan. 1126 00:49:12,210 --> 00:49:15,680 Och sedan nästa vecka kan vi verkligen dyka in i varför det inte fungerar. 1127 00:49:15,680 --> 00:49:18,810 >> Så vi har detta tomrum Funktionen här-- swap. 1128 00:49:18,810 --> 00:49:20,720 Så void betyder bara att ingenting returneras. 1129 00:49:20,720 --> 00:49:22,000 1130 00:49:22,000 --> 00:49:24,110 Och vi har swap int a och int f. 1131 00:49:24,110 --> 00:49:27,046 Och vi har några tillfälliga variabel som är en. 1132 00:49:27,046 --> 00:49:30,050 en blir tilldelad till b, och sedan b får tilldelas till temp 1133 00:49:30,050 --> 00:49:32,235 så att A och B: s värden stängs nu. 1134 00:49:32,235 --> 00:49:33,510 1135 00:49:33,510 --> 00:49:36,030 >> Men, plot twist, det fungerar inte. 1136 00:49:36,030 --> 00:49:37,390 1137 00:49:37,390 --> 00:49:42,380 Och en del av det faktiskt har att göra med det faktum att en 1138 00:49:42,380 --> 00:49:48,800 och b här, de som blir passerade i här, är faktiskt kopior av x och y. 1139 00:49:48,800 --> 00:49:53,220 Så när funktionen faktiskt återvänder, den växlar kopiorna, men inte 1140 00:49:53,220 --> 00:49:55,960 den verkliga x och y s. 1141 00:49:55,960 --> 00:50:02,370 Så ett sätt att tänka på det är that-- låtsas dessa är swap. 1142 00:50:02,370 --> 00:50:03,130 OK? 1143 00:50:03,130 --> 00:50:05,390 Så i huvudsak har vi x och y initieras. 1144 00:50:05,390 --> 00:50:06,530 1145 00:50:06,530 --> 00:50:10,760 Men när vi faktiskt gå upp dessa ramar med swap, 1146 00:50:10,760 --> 00:50:15,740 vi passerar värdena över till det, och de är initierad. 1147 00:50:15,740 --> 00:50:18,570 >> Och de alltid bara bor här. 1148 00:50:18,570 --> 00:50:19,796 Så a och b bor här. 1149 00:50:19,796 --> 00:50:20,670 Och de får bytte. 1150 00:50:20,670 --> 00:50:21,870 1151 00:50:21,870 --> 00:50:26,190 Men när vi kommer tillbaka, det gör vi inte göra något med a och b. en 1152 00:50:26,190 --> 00:50:28,980 b ledighet med vår funktion. 1153 00:50:28,980 --> 00:50:30,850 Och så x och y förbli densamma. 1154 00:50:30,850 --> 00:50:31,960 1155 00:50:31,960 --> 00:50:39,665 Du får mer in hur man rättar till det och hur vi faktiskt hantera det senare. 1156 00:50:39,665 --> 00:50:40,750 1157 00:50:40,750 --> 00:50:43,740 >> Men det är bara en sak att sorts tänka. 1158 00:50:43,740 --> 00:50:45,270 Använd den för framtiden. 1159 00:50:45,270 --> 00:50:48,050 Oroa dig inte om det inte gjorde all känsla i världen. 1160 00:50:48,050 --> 00:50:49,510 1161 00:50:49,510 --> 00:50:51,440 De är kopior är den största sak. 1162 00:50:51,440 --> 00:50:54,580 Om du ska ta något bort från det, du gick på kopior. 1163 00:50:54,580 --> 00:50:56,410 Så originalen förbli densamma. 1164 00:50:56,410 --> 00:50:58,170 1165 00:50:58,170 --> 00:50:58,770 Alla bra? 1166 00:50:58,770 --> 00:51:00,280 1167 00:51:00,280 --> 00:51:00,930 Cool. 1168 00:51:00,930 --> 00:51:02,295 >> Så kommandoradsargument. 1169 00:51:02,295 --> 00:51:03,520 1170 00:51:03,520 --> 00:51:07,630 Jag är säker på i början ni alla hade dessa stora, liksom, int main håligheter. 1171 00:51:07,630 --> 00:51:09,517 Och du är som, OK cool. 1172 00:51:09,517 --> 00:51:10,350 Jag bryr mig egentligen inte. 1173 00:51:10,350 --> 00:51:12,360 Detta är precis vad jag har att skriva. 1174 00:51:12,360 --> 00:51:16,349 Men i ditt nya program, särskilt i denna pset, 1175 00:51:16,349 --> 00:51:17,890 och varför är det krita på marken? 1176 00:51:17,890 --> 00:51:19,640 1177 00:51:19,640 --> 00:51:22,680 >> Med din nästa pset, du kommer att få se detta. 1178 00:51:22,680 --> 00:51:26,130 Int main, int arg c, sträng båge v, konsoler. 1179 00:51:26,130 --> 00:51:28,770 Så från det vi just lärt sig idag, vad 1180 00:51:28,770 --> 00:51:32,190 tror vi att andra parameter eller det andra elementet är här? 1181 00:51:32,190 --> 00:51:34,830 1182 00:51:34,830 --> 00:51:35,824 Det är en matris. 1183 00:51:35,824 --> 00:51:36,615 Vilken typ av array? 1184 00:51:36,615 --> 00:51:38,430 1185 00:51:38,430 --> 00:51:40,690 String array, ja. 1186 00:51:40,690 --> 00:51:41,980 Cool. 1187 00:51:41,980 --> 00:51:45,320 Så det är hur du ska att förklara dessa nu. 1188 00:51:45,320 --> 00:51:48,570 >> Kommer någon ihåg vad dessa står för? 1189 00:51:48,570 --> 00:51:52,551 1190 00:51:52,551 --> 00:51:53,050 Nej? 1191 00:51:53,050 --> 00:51:54,020 1192 00:51:54,020 --> 00:51:54,520 Hmm? 1193 00:51:54,520 --> 00:51:55,640 >> STUDENTEN arg c. 1194 00:51:55,640 --> 00:51:56,961 1195 00:51:56,961 --> 00:51:58,950 >> ALLISON: Så arg c håller en räknare. 1196 00:51:58,950 --> 00:51:59,450 Det är en int. 1197 00:51:59,450 --> 00:52:00,615 Det är ett nummer, eller hur? 1198 00:52:00,615 --> 00:52:02,240 Så vad tror du att antalet är för? 1199 00:52:02,240 --> 00:52:08,260 1200 00:52:08,260 --> 00:52:08,760 Yeah. 1201 00:52:08,760 --> 00:52:11,450 Så arg c är antalet strängar som utgör kommandoraden. 1202 00:52:11,450 --> 00:52:12,560 1203 00:52:12,560 --> 00:52:18,499 Så om vi skulle do-- faktiskt, det finns exempel efter detta, 1204 00:52:18,499 --> 00:52:19,790 så jag ska inte komma före mig själv. 1205 00:52:19,790 --> 00:52:21,299 1206 00:52:21,299 --> 00:52:23,840 Det är ett antal strängar som bara göra upp din kommandorad. 1207 00:52:23,840 --> 00:52:35,080 >> Så när du gör, gillar, dot slash Mario, det är en sträng som gör det. 1208 00:52:35,080 --> 00:52:38,520 I detta stycke kommer du faktiskt vara matning saker i kommandoraden, 1209 00:52:38,520 --> 00:52:41,750 som jag är säker på att ni som har läst spec sågen. 1210 00:52:41,750 --> 00:52:44,470 Så i dessa fall kanske du kommer har två eller tre argument. 1211 00:52:44,470 --> 00:52:45,652 1212 00:52:45,652 --> 00:52:48,360 Det kommer att bli en bra sak att använda. 1213 00:52:48,360 --> 00:52:51,500 >> Och sedan arg v, som sagt, är bara en sträng array. 1214 00:52:51,500 --> 00:52:57,000 Så att faktiskt lagrar vad du matar in i kommandoraden. 1215 00:52:57,000 --> 00:52:59,960 Så vi har dessa. 1216 00:52:59,960 --> 00:53:02,850 Du har någon prick snedstreck kopiera infil utfil. 1217 00:53:02,850 --> 00:53:06,670 Så, om arg c antalet strängar att vi passerar in kommandot 1218 00:53:06,670 --> 00:53:09,080 linje, vad är vår arg c i detta fall? 1219 00:53:09,080 --> 00:53:14,520 1220 00:53:14,520 --> 00:53:15,850 Tre. 1221 00:53:15,850 --> 00:53:16,690 Exakt. 1222 00:53:16,690 --> 00:53:20,086 >> Så vad är arg v noll? 1223 00:53:20,086 --> 00:53:21,710 Så vad är det första vi har lagrat? 1224 00:53:21,710 --> 00:53:24,640 1225 00:53:24,640 --> 00:53:26,290 Dot slash kopiera, exakt. 1226 00:53:26,290 --> 00:53:28,065 Och sedan den andra skulle vara infil. 1227 00:53:28,065 --> 00:53:29,290 1228 00:53:29,290 --> 00:53:30,930 Den tredje skulle vara utfil. 1229 00:53:30,930 --> 00:53:32,390 Så hur är arg v tre? 1230 00:53:32,390 --> 00:53:35,810 1231 00:53:35,810 --> 00:53:39,370 Det skulle vara noll, eftersom det är I slutet av vår samling, eller hur? 1232 00:53:39,370 --> 00:53:40,600 1233 00:53:40,600 --> 00:53:41,460 Cool. 1234 00:53:41,460 --> 00:53:44,500 >> Och sen hur är den sjätte en? 1235 00:53:44,500 --> 00:53:45,900 Det är lite av en kuggfråga. 1236 00:53:45,900 --> 00:53:46,400 Ish. 1237 00:53:46,400 --> 00:53:49,027 1238 00:53:49,027 --> 00:53:49,943 Vet vi vad det är? 1239 00:53:49,943 --> 00:53:50,960 1240 00:53:50,960 --> 00:53:51,690 Det är odefinierad. 1241 00:53:51,690 --> 00:53:53,170 Vi har ingen aning om vad det kunde vara. 1242 00:53:53,170 --> 00:53:57,000 Det är det som är rätt efter matrisen i minnet, 1243 00:53:57,000 --> 00:54:00,220 och vi har ingen aning om vad det är. 1244 00:54:00,220 --> 00:54:03,500 Och det är farligt att röra dem saker, eftersom för allt du vet, 1245 00:54:03,500 --> 00:54:07,080 det är en del av minnet som du bör inte komma åt eller null. 1246 00:54:07,080 --> 00:54:09,000 Och det kan göra galna saker. 1247 00:54:09,000 --> 00:54:11,690 Det kallas över indexering ditt bundna till din array. 1248 00:54:11,690 --> 00:54:14,785 Gå inte utanför gränserna för din array eller dåliga saker kan hända. 1249 00:54:14,785 --> 00:54:16,274 1250 00:54:16,274 --> 00:54:18,940 Du kommer tillbaka och liksom, lagar i fysik har förstörts 1251 00:54:18,940 --> 00:54:19,481 eller något. 1252 00:54:19,481 --> 00:54:21,021 1253 00:54:21,021 --> 00:54:21,520 Cool. 1254 00:54:21,520 --> 00:54:22,895 Betyder det vettigt för alla? 1255 00:54:22,895 --> 00:54:23,810 1256 00:54:23,810 --> 00:54:25,025 Inte så illa. 1257 00:54:25,025 --> 00:54:28,926 >> Så nu är alla favorit del, pset översyn. 1258 00:54:28,926 --> 00:54:29,426 Yay! 1259 00:54:29,426 --> 00:54:30,530 1260 00:54:30,530 --> 00:54:31,030 OK. 1261 00:54:31,030 --> 00:54:33,830 Så för er som har inte läst pset spec, 1262 00:54:33,830 --> 00:54:36,790 du gör några riktigt coola saker med kryptografi. 1263 00:54:36,790 --> 00:54:39,360 Du kommer att skapa en Ceasar Chiffer och en Vigenère Cipher. 1264 00:54:39,360 --> 00:54:42,000 1265 00:54:42,000 --> 00:54:45,480 Du bör definitivt läsa spec för att se hur dessa arbeten. 1266 00:54:45,480 --> 00:54:49,650 Och om du har några problem om vad det egentligen borde göra, 1267 00:54:49,650 --> 00:54:52,920 kom gärna prata med mig, maila mig eller text mig. 1268 00:54:52,920 --> 00:54:53,420 Jag är runt. 1269 00:54:53,420 --> 00:54:54,780 1270 00:54:54,780 --> 00:54:57,070 >> Så det finns tre huvud saker här som vi 1271 00:54:57,070 --> 00:55:00,440 vill prata about-- bara typ av en förlängning av föreläsning. 1272 00:55:00,440 --> 00:55:03,645 Saker som du kanske inte vet om, användbara tips och verktyg. 1273 00:55:03,645 --> 00:55:05,520 Så vi kommer att göra en snabb genomgång av ASCII, 1274 00:55:05,520 --> 00:55:10,420 eftersom det kommer att bli super viktigt för Vigenère s Cipher. 1275 00:55:10,420 --> 00:55:11,809 1276 00:55:11,809 --> 00:55:14,100 Vi kommer att omvandling av kommandolinjeingångar, vilket 1277 00:55:14,100 --> 00:55:17,160 kommer att vara till stor hjälp för Caesar Cipher. 1278 00:55:17,160 --> 00:55:18,133 Och sedan modulo. 1279 00:55:18,133 --> 00:55:20,220 1280 00:55:20,220 --> 00:55:21,210 Cool. 1281 00:55:21,210 --> 00:55:24,005 >> Så, ASCII kartor bokstäver till siffror. 1282 00:55:24,005 --> 00:55:25,270 1283 00:55:25,270 --> 00:55:26,365 Detta är en stor diagram. 1284 00:55:26,365 --> 00:55:28,115 Du bör ha detta bokmärkt någonstans. 1285 00:55:28,115 --> 00:55:29,310 1286 00:55:29,310 --> 00:55:33,250 Du kommer att ha det för ditt första halva tiden. 1287 00:55:33,250 --> 00:55:36,320 Jag är ganska säker på att alla har det diagram på deras mid-term sheet. 1288 00:55:36,320 --> 00:55:37,810 Så lär det. 1289 00:55:37,810 --> 00:55:38,410 Älskar det. 1290 00:55:38,410 --> 00:55:39,740 Håll det praktiskt. 1291 00:55:39,740 --> 00:55:41,210 Det kommer att vara användbart. 1292 00:55:41,210 --> 00:55:45,630 >> Och allt det är en kodning som mappar alfabetiska, numeriska, 1293 00:55:45,630 --> 00:55:47,740 och andra tecken på siffror för vår dator. 1294 00:55:47,740 --> 00:55:49,947 Eftersom naturligtvis, i det slut, allt vi lagrar 1295 00:55:49,947 --> 00:55:52,030 kommer att bli konverterade ner till ettor och nollor, 1296 00:55:52,030 --> 00:55:55,200 så vi behöver något sätt att representera text och tecken som vi alla 1297 00:55:55,200 --> 00:55:59,105 van att se som ett slags tal. 1298 00:55:59,105 --> 00:56:00,370 1299 00:56:00,370 --> 00:56:05,880 >> Så som vi ser här, vi har versaler A, vilket är rätt där. 1300 00:56:05,880 --> 00:56:06,555 Det är 65. 1301 00:56:06,555 --> 00:56:07,570 1302 00:56:07,570 --> 00:56:09,660 Och gemener A är 97. 1303 00:56:09,660 --> 00:56:13,170 Så du kan räkna out-- som jag sa tidigare, 1304 00:56:13,170 --> 00:56:16,532 om du hade matris med flera strängar, vad var och en av dem 1305 00:56:16,532 --> 00:56:17,490 har ett null terminator. 1306 00:56:17,490 --> 00:56:18,480 Det skulle vara ett utrymme. 1307 00:56:18,480 --> 00:56:22,581 Utrymme har sin egen special-- Jag har glömt var det är här. 1308 00:56:22,581 --> 00:56:23,080 Ah. 1309 00:56:23,080 --> 00:56:24,700 32 är utrymmet. 1310 00:56:24,700 --> 00:56:27,090 Så allt kartor till den. 1311 00:56:27,090 --> 00:56:28,680 1312 00:56:28,680 --> 00:56:29,740 >> Så vi har ASCII matte. 1313 00:56:29,740 --> 00:56:31,080 1314 00:56:31,080 --> 00:56:34,290 Pro tip-- i Vigenère s, du kan frestas 1315 00:56:34,290 --> 00:56:39,480 konvertera dina nummer till heltal, men det är faktiskt bättre praxis 1316 00:56:39,480 --> 00:56:43,860 att kunna använda karaktärer som denna 1317 00:56:43,860 --> 00:56:45,820 när du faktiskt manipulera dem. 1318 00:56:45,820 --> 00:56:48,950 Så om du vill använda siffror, kan du. 1319 00:56:48,950 --> 00:56:55,260 Men ett bättre sätt eller ett sätt som vi tenderar att vilja att ni killar att göra det, 1320 00:56:55,260 --> 00:56:57,830 är på detta sätt där du är faktiskt subtrahera tecken. 1321 00:56:57,830 --> 00:56:58,840 1322 00:56:58,840 --> 00:57:02,830 >> Så jag vill att ni till slags räkna ut dessa. 1323 00:57:02,830 --> 00:57:05,070 Varför inte prova alla andra? 1324 00:57:05,070 --> 00:57:07,580 1325 00:57:07,580 --> 00:57:09,830 Så gör det första en, den tredje och femte. 1326 00:57:09,830 --> 00:57:11,160 1327 00:57:11,160 --> 00:57:15,000 Eftersom jag vill vara säker på att vi talar om allt vi behöver prata om. 1328 00:57:15,000 --> 00:57:17,410 1329 00:57:17,410 --> 00:57:20,259 Jag kommer bara att säga, en av de viktiga saker att-- oh vänta, 1330 00:57:20,259 --> 00:57:21,550 ni har inte sett det här. 1331 00:57:21,550 --> 00:57:23,710 OK så gör de tre första. 1332 00:57:23,710 --> 00:57:24,430 Låt oss göra det. 1333 00:57:24,430 --> 00:57:25,971 Eftersom vi har att prata om modulo. 1334 00:57:25,971 --> 00:57:27,810 1335 00:57:27,810 --> 00:57:28,310 Jag vet. 1336 00:57:28,310 --> 00:57:28,851 Math är hård. 1337 00:57:28,851 --> 00:57:29,870 1338 00:57:29,870 --> 00:57:30,980 Du kan använda en miniräknare. 1339 00:57:30,980 --> 00:57:31,580 Det är OK. 1340 00:57:31,580 --> 00:57:37,464 1341 00:57:37,464 --> 00:57:40,380 Eller dra upp en ASCII tabellen eftersom du förmodligen kommer att vilja det. 1342 00:57:40,380 --> 00:58:03,660 1343 00:58:03,660 --> 00:58:04,820 >> Cool. 1344 00:58:04,820 --> 00:58:07,960 Så jag kommer att snabbt gå ni genom dessa. 1345 00:58:07,960 --> 00:58:11,120 Så folk har ASCII tabeller drog upp? 1346 00:58:11,120 --> 00:58:15,645 Vilken är vår numeriska nummer för gemener A? 1347 00:58:15,645 --> 00:58:16,270 STUDENTEN Seven. 1348 00:58:16,270 --> 00:58:19,420 1349 00:58:19,420 --> 00:58:24,550 >> ALLISON: Så gemener A är 97 och versaler A är 65 år. 1350 00:58:24,550 --> 00:58:26,390 Så 97 minus 65? 1351 00:58:26,390 --> 00:58:27,782 1352 00:58:27,782 --> 00:58:28,570 >> PUBLIK: 32? 1353 00:58:28,570 --> 00:58:33,260 1354 00:58:33,260 --> 00:58:35,630 >> ALLISON: 62, ja. 1355 00:58:35,630 --> 00:58:38,675 Så i detta fall, vad skulle skriva ut? 1356 00:58:38,675 --> 00:58:40,360 Den första? 1357 00:58:40,360 --> 00:58:43,830 Om vi ​​har procent d, vad skulle det tyda på? 1358 00:58:43,830 --> 00:58:45,980 1359 00:58:45,980 --> 00:58:46,730 STUDENT: Ett nummer. 1360 00:58:46,730 --> 00:58:48,604 ALLISON: Vi skriver ut ut ett faktiskt antal. 1361 00:58:48,604 --> 00:58:50,770 Så vi faktiskt kommer att skriva ut 32 här. 1362 00:58:50,770 --> 00:58:56,360 Och om detta var procent c, 32 skulle ge oss ett utrymme. 1363 00:58:56,360 --> 00:58:57,700 1364 00:58:57,700 --> 00:59:01,670 Så förstå att tecken kan skrivas 1365 00:59:01,670 --> 00:59:06,140 både som tal och som de faktiska tecken 1366 00:59:06,140 --> 00:59:11,080 är verkligen viktigt, och betala uppmärksamma de faktiska typer 1367 00:59:11,080 --> 00:59:12,040 att vi gör här. 1368 00:59:12,040 --> 00:59:14,520 1369 00:59:14,520 --> 00:59:15,020 Cool. 1370 00:59:15,020 --> 00:59:18,862 Så för varannan en av dessa, Vad ska vi skriva ut? 1371 00:59:18,862 --> 00:59:19,825 >> STUDENT: En karaktär. 1372 00:59:19,825 --> 00:59:20,830 >> ALLISON: Ett tecken. 1373 00:59:20,830 --> 00:59:21,330 Cool. 1374 00:59:21,330 --> 00:59:24,260 Så om ni vill veta, du kan arbeta dessa ut på egen hand. 1375 00:59:24,260 --> 00:59:25,900 Om du har problem, maila mig. 1376 00:59:25,900 --> 00:59:28,950 Men den andra kommer skriva ut ett gement b. 1377 00:59:28,950 --> 00:59:32,910 Den tredje kommer att skriva ut en versaler B. Den fjärde kommer att skriva 1378 00:59:32,910 --> 00:59:36,410 ut ett versalt C, och sista kommer att vara ett gement A. 1379 00:59:36,410 --> 00:59:42,530 Och den sista en-- vi faktiskt kommer att komma in i vad den galna procent 1380 00:59:42,530 --> 00:59:45,020 Tecknet innebär även i ett par bilder. 1381 00:59:45,020 --> 00:59:46,667 Så prova dem på egen hand. 1382 00:59:46,667 --> 00:59:48,500 Om du har problem, kom gärna och prata med mig. 1383 00:59:48,500 --> 00:59:49,655 1384 00:59:49,655 --> 00:59:53,290 Om du är normalt i Adams D hall, du kommer förmodligen hitta mig runt. 1385 00:59:53,290 --> 00:59:54,760 1386 00:59:54,760 --> 00:59:55,760 >> Så, atoi. 1387 00:59:55,760 --> 00:59:59,660 Hur många av er har sett detta funktion eller hört talas om det alls? 1388 00:59:59,660 --> 01:00:00,380 1389 01:00:00,380 --> 01:00:00,880 Någon? 1390 01:00:00,880 --> 01:00:02,100 1391 01:00:02,100 --> 01:00:02,600 Cool. 1392 01:00:02,600 --> 01:00:06,250 Så vad det egentligen står efter är ASCII till heltal. 1393 01:00:06,250 --> 01:00:13,150 Så vad du kan göra är, med Caesar, för de som läser spec, 1394 01:00:13,150 --> 01:00:16,460 du kommer att göra punkt snedstreck Caesar när du skriver ditt program, 1395 01:00:16,460 --> 01:00:18,690 och då du kommer att input några nummer som du 1396 01:00:18,690 --> 01:00:24,780 vill koda din hemliga budskap med. 1397 01:00:24,780 --> 01:00:30,700 >> Men, om vi kommer ihåg, alla våra ingångarna lagras som strängar. 1398 01:00:30,700 --> 01:00:31,390 Rätt? 1399 01:00:31,390 --> 01:00:35,160 Vi har en arg v array det är allt typ sträng. 1400 01:00:35,160 --> 01:00:37,870 Så om du bara försöker dra att en, skulle det 1401 01:00:37,870 --> 01:00:43,240 tror att det ena eller vad numret du använde är faktiskt ett tecken. 1402 01:00:43,240 --> 01:00:45,490 Så du kommer att få några galna resultat. 1403 01:00:45,490 --> 01:00:48,200 Så om du verkligen vill göra detta till ett heltal 1404 01:00:48,200 --> 01:00:52,060 som du kan använda för att manipulera ditt ord eller ditt budskap, 1405 01:00:52,060 --> 01:00:53,366 du kommer att vilja använda atoi. 1406 01:00:53,366 --> 01:00:56,320 atoi bara omvandlar din sträng till en int. 1407 01:00:56,320 --> 01:01:04,530 >> Så om vi har en sträng av 12, om vi kallar atoi den 12, eller vad den ingången är, 1408 01:01:04,530 --> 01:01:07,370 det faktiskt kommer att återvända till dig heltal. 1409 01:01:07,370 --> 01:01:10,610 Inte tecknet eller strängen 12. 1410 01:01:10,610 --> 01:01:14,230 Vilket, när du startar tillägga att i tal, 1411 01:01:14,230 --> 01:01:17,710 kommer att vara mycket olika, eftersom strängen 12 är 1412 01:01:17,710 --> 01:01:21,210 några galna tal i ASCII, men heltalet 12 1413 01:01:21,210 --> 01:01:23,390 är faktiskt 12, vilket är vad du vill. 1414 01:01:23,390 --> 01:01:25,630 Så du vill vara säker på att använda atoi. 1415 01:01:25,630 --> 01:01:29,203 >> Du kommer att ha den här i Caesar, eftersom du 1416 01:01:29,203 --> 01:01:32,520 behöver den int tillhandahålls av användaren på kommandoraden. 1417 01:01:32,520 --> 01:01:35,230 Men när de uttryckte det i kommandot linje, det lagras som en sträng 1418 01:01:35,230 --> 01:01:35,813 till att börja med. 1419 01:01:35,813 --> 01:01:36,950 1420 01:01:36,950 --> 01:01:38,210 Är det vettigt? 1421 01:01:38,210 --> 01:01:40,590 Du behöver inte nödvändigtvis behöver det här för Vigenère. 1422 01:01:40,590 --> 01:01:43,180 Med Vigenère, som jag sa tidigare, bör du försöka använda 1423 01:01:43,180 --> 01:01:46,600 ASCII matematik som ser mer ut som detta, där du faktiskt 1424 01:01:46,600 --> 01:01:49,320 med hjälp av de tecken som vi gett till dig. 1425 01:01:49,320 --> 01:01:50,970 1426 01:01:50,970 --> 01:01:51,470 Cool. 1427 01:01:51,470 --> 01:01:52,970 1428 01:01:52,970 --> 01:01:54,170 Alla bra där? 1429 01:01:54,170 --> 01:01:56,530 1430 01:01:56,530 --> 01:01:57,480 Grymt. 1431 01:01:57,480 --> 01:01:59,030 >> Så modulo. 1432 01:01:59,030 --> 01:02:01,950 Så vad händer om du gett detta enorma antal för Caesar? 1433 01:02:01,950 --> 01:02:03,720 1434 01:02:03,720 --> 01:02:07,970 Du har den här idén att om du är på Z och du är 1435 01:02:07,970 --> 01:02:11,020 ges ett nummer två, det betyder att du need-- 1436 01:02:11,020 --> 01:02:15,130 Z blir den andra brev efter sig själv, eller hur? 1437 01:02:15,130 --> 01:02:20,800 Så du måste på något sätt linda runt, och modulo är sättet att göra det. 1438 01:02:20,800 --> 01:02:23,310 Så allt det gör är att det ger dig resten 1439 01:02:23,310 --> 01:02:25,660 av divisionen av den första numret av den andra. 1440 01:02:25,660 --> 01:02:28,660 Och vi har några exempel på göra det lite mer konkret. 1441 01:02:28,660 --> 01:02:34,390 Men i grund och botten använder du modulo när du vill göra något linda runt. 1442 01:02:34,390 --> 01:02:36,950 >> Så om du bara vill ha den nummer ett till åtta, 1443 01:02:36,950 --> 01:02:39,670 Du kan använda modulo på någon annan nummer, och det kommer alltid 1444 01:02:39,670 --> 01:02:42,960 returnera ett tal från noll till åtta. 1445 01:02:42,960 --> 01:02:48,750 Så vissa examples-- om Vi har 55 modulo 10, 1446 01:02:48,750 --> 01:02:55,350 det bara ger dig resten av 55 delat med 10, vilket skulle vara 5. 1447 01:02:55,350 --> 01:02:56,440 1448 01:02:56,440 --> 01:03:02,470 Och sedan tre modulo fem, någon gissa vad det skulle vara? 1449 01:03:02,470 --> 01:03:03,800 1450 01:03:03,800 --> 01:03:04,300 Tre. 1451 01:03:04,300 --> 01:03:05,570 1452 01:03:05,570 --> 01:03:10,910 >> Så om du har ett mindre antal före modulo, kan det inte gå in jämnt. 1453 01:03:10,910 --> 01:03:11,520 Det är noll. 1454 01:03:11,520 --> 01:03:14,090 Så det bara returnerar antalet själv. 1455 01:03:14,090 --> 01:03:15,920 Så åtta modulo åtta skulle vara? 1456 01:03:15,920 --> 01:03:16,603 >> STUDENTEN Zero. 1457 01:03:16,603 --> 01:03:18,350 >> ALLISON: Zero. 1458 01:03:18,350 --> 01:03:20,160 Eftersom det går i jämnt. 1459 01:03:20,160 --> 01:03:22,095 16 modulo 15? 1460 01:03:22,095 --> 01:03:23,660 >> PUBLIK: One. 1461 01:03:23,660 --> 01:03:24,700 >> ALLISON: Cool. 1462 01:03:24,700 --> 01:03:29,280 Och då detta sista är bara visa du-- du kanske undrar, OK, 1463 01:03:29,280 --> 01:03:31,800 vad är ordningen på verksamheten här? 1464 01:03:31,800 --> 01:03:33,100 Gör delar vi först? 1465 01:03:33,100 --> 01:03:34,570 Har vi modulo först? 1466 01:03:34,570 --> 01:03:38,730 Så modulo håller samma prioritet som division eller multiplikation, 1467 01:03:38,730 --> 01:03:39,940 och dess vänstra associativ. 1468 01:03:39,940 --> 01:03:41,730 Så det är på samma sätt. 1469 01:03:41,730 --> 01:03:46,520 Du skulle alltid göra parenteser, sedan multiplikation, division, 1470 01:03:46,520 --> 01:03:49,570 och modulo i ordning från vänster till höger. 1471 01:03:49,570 --> 01:03:51,050 Så standardregler. 1472 01:03:51,050 --> 01:03:55,260 Bara lägga den i samma kategori som division och multiplikation. 1473 01:03:55,260 --> 01:03:59,040 >> Så i detta fall, skulle vi har 1 plus 2 ger oss 3. 1474 01:03:59,040 --> 01:04:02,210 Vi multiplicerar det med 2, så vi får 6. 1475 01:04:02,210 --> 01:04:05,050 Vi modulo det med 2, vilket ger oss? 1476 01:04:05,050 --> 01:04:06,042 >> STUDENTEN 0. 1477 01:04:06,042 --> 01:04:07,430 >> ALLISON: 0. 1478 01:04:07,430 --> 01:04:10,270 Och då kommer vi lägga till två, så vi få 2 i det senare fallet. 1479 01:04:10,270 --> 01:04:12,080 1480 01:04:12,080 --> 01:04:16,360 Så modulo-- du definitivt kommer att fundera på sätt att integrera 1481 01:04:16,360 --> 01:04:19,520 att när du inslag runt alfabetet. 1482 01:04:19,520 --> 01:04:24,210 Om du är på Z och du behöver flytta vidarebefordra tre platser för att komma till C, 1483 01:04:24,210 --> 01:04:26,230 Det är det hela konceptet av omslag runt. 1484 01:04:26,230 --> 01:04:28,790 Så jag kommer att lämna det till ni att räkna ut 1485 01:04:28,790 --> 01:04:31,940 exakt hur du ska använda den. 1486 01:04:31,940 --> 01:04:35,660 Men definitivt ett användbart verktyg för din pset denna vecka. 1487 01:04:35,660 --> 01:04:36,910 1488 01:04:36,910 --> 01:04:37,730 Jag gillar verkligen det här. 1489 01:04:37,730 --> 01:04:39,480 Detta är en av mina favorit psets. 1490 01:04:39,480 --> 01:04:41,230 Sedan efter att du gör det, om du har vänner, 1491 01:04:41,230 --> 01:04:44,146 du kan, vill, skicka varandra hemlighet meddelanden och se till att det fungerar. 1492 01:04:44,146 --> 01:04:45,695 Eftersom det kommer att dekryptera det eller vad som helst. 1493 01:04:45,695 --> 01:04:46,710 1494 01:04:46,710 --> 01:04:47,390 Massor av skoj. 1495 01:04:47,390 --> 01:04:48,840 1496 01:04:48,840 --> 01:04:51,220 >> Och det är i slutet av avsnitt. 1497 01:04:51,220 --> 01:04:52,430 1498 01:04:52,430 --> 01:04:54,040 Jag slutade tidigt. 1499 01:04:54,040 --> 01:04:57,540 Jag har fortfarande 15 minuter med ni, så om det finns något 1500 01:04:57,540 --> 01:05:02,180 som du vill gå över vidare, skulle jag gärna göra det. 1501 01:05:02,180 --> 01:05:04,340 Alla andra frågor om din pset för dig 1502 01:05:04,340 --> 01:05:06,355 som har startat eller läst spec. 1503 01:05:06,355 --> 01:05:07,870 1504 01:05:07,870 --> 01:05:12,060 Allt som vi har pratat om under den senaste timmen 1505 01:05:12,060 --> 01:05:16,880 och 15 minuter som du vill att jag till typ av uppkok, skulle jag vara glad att. 1506 01:05:16,880 --> 01:05:20,790 Eller vi kan kalla det avslutas, och du kan alla lämna och ta mer godis med dig 1507 01:05:20,790 --> 01:05:21,650 när du går. 1508 01:05:21,650 --> 01:05:23,719 1509 01:05:23,719 --> 01:05:26,260 Men om det finns några kvardröjande frågor, låt mig veta. 1510 01:05:26,260 --> 01:05:28,467 Du kan också komma upp och prata med mig efteråt. 1511 01:05:28,467 --> 01:05:29,425 Jag lovar att jag inte bita. 1512 01:05:29,425 --> 01:05:32,140 1513 01:05:32,140 --> 01:05:32,795 Något annat? 1514 01:05:32,795 --> 01:05:33,890 1515 01:05:33,890 --> 01:05:35,240 Alla är bra? 1516 01:05:35,240 --> 01:05:37,540 Allas känsla som de kan hantera detta pset? 1517 01:05:37,540 --> 01:05:38,820 1518 01:05:38,820 --> 01:05:42,405 Du kommer att vara fina killar. 1519 01:05:42,405 --> 01:05:43,905 Kontorstider är där av en anledning. 1520 01:05:43,905 --> 01:05:45,930 1521 01:05:45,930 --> 01:05:46,460 Cool. 1522 01:05:46,460 --> 01:05:47,020 Okej. 1523 01:05:47,020 --> 01:05:49,680 >> Tja, i så fall, tack alla så mycket för att ni kom. 1524 01:05:49,680 --> 01:05:50,940 Jag hoppas att vi ses nästa vecka. 1525 01:05:50,940 --> 01:05:52,120 Det kommer att finnas mer godis. 1526 01:05:52,120 --> 01:05:53,495 Det kan finnas andra coola saker. 1527 01:05:53,495 --> 01:05:55,010 1528 01:05:55,010 --> 01:05:59,090 Och jag ser fram emot att få att känna er alla i år. 1529 01:05:59,090 --> 01:06:00,320