1 00:00:00,000 --> 00:00:05,830 2 00:00:05,830 --> 00:00:08,650 >> JASON Hirschhorn: Velkommen til CS50 seksjon, alle sammen. 3 00:00:08,650 --> 00:00:11,430 Mitt navn er Jason Hirschhorn. 4 00:00:11,430 --> 00:00:15,850 Jeg er mye yours TFS, men mye av folk vil forhåpentligvis bli med oss 5 00:00:15,850 --> 00:00:20,420 online, utvidelse studenter eller studenter prøver å se gjennom delen hvis de 6 00:00:20,420 --> 00:00:22,830 tapte sine delen som uke eller bare fange opp hvis de ønsket 7 00:00:22,830 --> 00:00:24,510 å gjennomgå en del materiale. 8 00:00:24,510 --> 00:00:30,060 >> Så i henhold til pensum, som alle av dere har lest, riktig? 9 00:00:30,060 --> 00:00:31,390 Jeg ser mye av hodet nikker. 10 00:00:31,390 --> 00:00:34,220 Seksjoner gi deg muligheter å utforske kursets 11 00:00:34,220 --> 00:00:37,420 materiale i en mer intim miljø, samt dykke inn 12 00:00:37,420 --> 00:00:38,810 hands-on aktiviteter. 13 00:00:38,810 --> 00:00:41,230 >> Så det er i utgangspunktet det vi er kommer til å gjøre hver uke. 14 00:00:41,230 --> 00:00:45,090 Vi kommer til å gå gjennom hva vi har bestemt til å være den viktigste 15 00:00:45,090 --> 00:00:49,170 temaene i foredraget, og de trolig også mest nyttige og 16 00:00:49,170 --> 00:00:52,780 mest sannsynlig å komme opp på oppgavesett og i spørrekonkurranser, og i din koding 17 00:00:52,780 --> 00:00:53,970 liv utenfor CS50. 18 00:00:53,970 --> 00:00:57,260 Så vi kommer til å gå inn i disse emnene, diskutere dem, gå over dem, 19 00:00:57,260 --> 00:01:00,660 svare på eventuelle spørsmål dere har, og så vi kommer til å gjøre mye av 20 00:01:00,660 --> 00:01:02,250 praksis problemer i koding. 21 00:01:02,250 --> 00:01:04,239 >> Du alle brakt bærbare datamaskiner, som er fantastisk. 22 00:01:04,239 --> 00:01:05,710 Dette er en computer science klasse. 23 00:01:05,710 --> 00:01:10,070 Men mange av øvelsene vi gjør, du trenger ikke din bærbare datamaskiner for. 24 00:01:10,070 --> 00:01:11,720 Du kan gjøre dem på et ark. 25 00:01:11,720 --> 00:01:13,580 Det er hvordan du skal gjøre dem på spørrekonkurranser. 26 00:01:13,580 --> 00:01:16,450 Og ja, det er en fin måte å egentlig vet at du hvordan du gjør 27 00:01:16,450 --> 00:01:19,720 noe hvis du ikke har Sjekk 50 til er avhengige av, eller tjene til å stole på, forteller 28 00:01:19,720 --> 00:01:20,620 du har gjort noen feil. 29 00:01:20,620 --> 00:01:25,670 >> Så du er velkommen til å kode på Apparatet eller run.cs50.net, som er 30 00:01:25,670 --> 00:01:29,770 et annet verktøy som lar deg å kode på nettet, men jeg vil også anbefale, hvis 31 00:01:29,770 --> 00:01:32,280 du har ikke prøvd det, ved hjelp av et ark av papir og prøver disse praksis 32 00:01:32,280 --> 00:01:33,640 problemer på et ark. 33 00:01:33,640 --> 00:01:35,330 Fordi igjen, det er slutt hva du kommer til å være 34 00:01:35,330 --> 00:01:37,430 bedt om å gjøre på spørrekonkurranser. 35 00:01:37,430 --> 00:01:44,080 >> Så la oss starte med vår agenda for dag. 36 00:01:44,080 --> 00:01:47,710 Vi kommer til å gå over noen normer for vår del, så vi kommer til å dykke 37 00:01:47,710 --> 00:01:51,180 inn matriser, funksjoner og kommandolinje argumenter, som er hva dere 38 00:01:51,180 --> 00:01:56,200 har dekket denne siste uken i forelesningen og deretter mandag, og hva du skal dekke 39 00:01:56,200 --> 00:01:57,330 mer i morgen. 40 00:01:57,330 --> 00:01:59,060 Og så til slutt, vi skal å snakke om pset2. 41 00:01:59,060 --> 00:02:03,640 Hvis jeg kunne få en håndsopprekning hvis du har ikke sett på problemet set to 42 00:02:03,640 --> 00:02:04,890 spesifikasjonen. 43 00:02:04,890 --> 00:02:07,060 44 00:02:07,060 --> 00:02:08,120 Vi vil si alle. 45 00:02:08,120 --> 00:02:09,419 Fantastisk. 46 00:02:09,419 --> 00:02:12,070 >> Vi skal snakke om oppgavesett i en bit, men hvis du leser oppgavesettet 47 00:02:12,070 --> 00:02:14,340 spesifikasjonen, det er alt du trenger å gjøre. 48 00:02:14,340 --> 00:02:18,370 Hvis du leser det før du kommer til klasse og inndeling på tirsdag, vil du 49 00:02:18,370 --> 00:02:19,220 være en stor posisjon. 50 00:02:19,220 --> 00:02:21,680 Vi kan gå gjennom oppgavesettet, som er hva vi skal 51 00:02:21,680 --> 00:02:22,090 å gjøre på slutten. 52 00:02:22,090 --> 00:02:23,500 Vi kommer til å gå gjennom logikken, sørg 53 00:02:23,500 --> 00:02:24,710 alle er på samme side. 54 00:02:24,710 --> 00:02:28,650 >> Jeg vil at du skal være i stand til å forlate tirsdag følelsen veldig komfortabel med det du 55 00:02:28,650 --> 00:02:31,560 trenger å gjøre for denne ukens problem sett, og hvis du ikke gjør det, vil jeg gjerne 56 00:02:31,560 --> 00:02:33,050 bo etter og jobbe med deg. 57 00:02:33,050 --> 00:02:36,850 Men det er en ting som du må gjøre, men jeg tror ville være veldig smart, 58 00:02:36,850 --> 00:02:40,500 bare for å lese problemet sett spesifikasjon av klassen på tirsdag, 59 00:02:40,500 --> 00:02:42,640 som det høres ut som en Mange av dere gjorde. 60 00:02:42,640 --> 00:02:45,810 >> Jeg begynner med en agenda hver klasse slik at du vet hvor vi skal. 61 00:02:45,810 --> 00:02:49,520 Dette er også nyttig for folk å se online fordi hver seksjon 62 00:02:49,520 --> 00:02:53,540 er fargekodet, så hvis du ønsker å komme tilbake og bare se 10 minutter i stedet 63 00:02:53,540 --> 00:02:56,950 enn hele 90-minutters avsnitt, du kan bare gå til fargekodet seksjon 64 00:02:56,950 --> 00:02:57,890 og se på den delen. 65 00:02:57,890 --> 00:03:01,510 Så jeg har prøvd å bryte dem opp i fin moduler som vil tillate deg å - 66 00:03:01,510 --> 00:03:03,960 Hvis du ønsker å komme tilbake og gjennomgå, eller andre studenter som er bare 67 00:03:03,960 --> 00:03:05,350 ser på en del for å gjennomgå - 68 00:03:05,350 --> 00:03:08,130 for å finne den spesifikke tingen de ønsker å ta hensyn til 69 00:03:08,130 --> 00:03:10,480 og lære mer om. 70 00:03:10,480 --> 00:03:11,390 Søt. 71 00:03:11,390 --> 00:03:12,180 >> Normer. 72 00:03:12,180 --> 00:03:13,680 Jeg er en FOP leder på campus. 73 00:03:13,680 --> 00:03:14,900 Jeg vet ikke om noen gjorde FOP. 74 00:03:14,900 --> 00:03:16,280 Har noen gjøre FOP? 75 00:03:16,280 --> 00:03:17,100 Én person gjorde FOP. 76 00:03:17,100 --> 00:03:18,430 To personer gjorde FOP. 77 00:03:18,430 --> 00:03:19,250 Awesome. 78 00:03:19,250 --> 00:03:22,360 Så FOP er det første året Outdoor Orientering Program. 79 00:03:22,360 --> 00:03:27,240 Vi tar freshmen inn i skogen og gjøre de mest magiske opplevelser av 80 00:03:27,240 --> 00:03:28,830 deres liv, riktig? 81 00:03:28,830 --> 00:03:29,220 Yeah. 82 00:03:29,220 --> 00:03:30,080 Lyder om rett. 83 00:03:30,080 --> 00:03:36,360 >> Så jeg bare ønsket å starte vår aller første delen med å diskutere noen normer 84 00:03:36,360 --> 00:03:38,860 for klassen og vårt forhold fordi jeg tror 85 00:03:38,860 --> 00:03:40,010 de er veldig viktig. 86 00:03:40,010 --> 00:03:43,630 Først og fremst, så de av dere som er min del har mottatt og 87 00:03:43,630 --> 00:03:47,150 er blitt beskrevet i den e-post, jeg elsker dette. 88 00:03:47,150 --> 00:03:48,130 Dette er min favoritt del av året. 89 00:03:48,130 --> 00:03:49,100 Jeg har vært så spent. 90 00:03:49,100 --> 00:03:50,040 Jeg har vært her i flere timer i dag. 91 00:03:50,040 --> 00:03:54,560 Jeg har ikke forlatt denne bygningen enn å gå spise fordi jeg elsker CS50 delen, jeg 92 00:03:54,560 --> 00:03:58,620 elsker undervisning, jeg elsker å jobbe med dere. 93 00:03:58,620 --> 00:04:02,000 >> En av mine høyeste prioriteringer, hvis ikke min nummer én prioritet, ikke bare for 94 00:04:02,000 --> 00:04:05,130 denne klassen, men inkludert min andre klasser og extracurriculars, er å 95 00:04:05,130 --> 00:04:09,350 støtter dere, og hjelpe dere, og gjøre mitt beste for å sørge for at du 96 00:04:09,350 --> 00:04:13,780 dere har en flott, morsom, produktiv, engasjerende, spennende 97 00:04:13,780 --> 00:04:15,250 oppleve i denne klassen. 98 00:04:15,250 --> 00:04:16,190 Det er det jeg er forpliktet til. 99 00:04:16,190 --> 00:04:17,959 Det er derfor jeg elsker å gjøre dette. 100 00:04:17,959 --> 00:04:20,190 Det er min nummer én ting, støtte dere. 101 00:04:20,190 --> 00:04:25,110 Hvis du har spørsmål om foredrag, oppgavesettet, seksjon, 102 00:04:25,110 --> 00:04:28,830 livet, selv om du ønsker å snakke om liv, kan du gjerne nå ut. 103 00:04:28,830 --> 00:04:31,210 >> Du har min mobiltelefonnummer, du har min e-post 104 00:04:31,210 --> 00:04:32,910 adresse, du har min GChat. 105 00:04:32,910 --> 00:04:37,540 Du kan kontakte meg på noen eller alle de når, men sannsynligvis ikke vil få 106 00:04:37,540 --> 00:04:38,720 et svar når. 107 00:04:38,720 --> 00:04:41,020 Jeg prøver og komme tilbake i løpet av 24 timer. 108 00:04:41,020 --> 00:04:44,760 Ofte vil det være innenfor 20 minutter eller 24 minutter. 109 00:04:44,760 --> 00:04:46,110 Jeg skulle ha sagt at for å gjøre det parallelle. 110 00:04:46,110 --> 00:04:48,840 Men du vil få et svar ganske raskt. 111 00:04:48,840 --> 00:04:54,220 >> Hvis du tekst meg en time før oppgavesettet er grunn, vil jeg roe deg 112 00:04:54,220 --> 00:04:57,660 ned og gjøre dype pusteøvelser med deg, men hvis du ikke har startet, 113 00:04:57,660 --> 00:05:00,270 du sannsynligvis ikke kommer til å fullføre, og Jeg kan egentlig ikke hjelpe deg der ute 114 00:05:00,270 --> 00:05:01,710 selv om jeg skal prøve mitt beste. 115 00:05:01,710 --> 00:05:03,920 Så jeg vil gjøre alt Jeg kan å støtte deg. 116 00:05:03,920 --> 00:05:07,980 Ta gjerne nå ut om det er i avsnittet igjen, på Arbeidstid 117 00:05:07,980 --> 00:05:09,150 hvis du ser meg, eller utenfor. 118 00:05:09,150 --> 00:05:11,800 Jeg er glad for å sette opp en tid for å møte og arbeide gjennom problemer 119 00:05:11,800 --> 00:05:14,410 med eller gå over materialet. 120 00:05:14,410 --> 00:05:15,990 Så det er nummer én, support. 121 00:05:15,990 --> 00:05:17,940 Jeg vil gjøre alt jeg kan for å støtte deg. 122 00:05:17,940 --> 00:05:21,520 >> Nummer to, møte i midten. 123 00:05:21,520 --> 00:05:24,760 Så mye som jeg ønsker å være, er jeg ikke allmektig eller allmektig eller 124 00:05:24,760 --> 00:05:28,410 allvitende, så jeg vet ikke alt tid hvis det jeg gjør er å få 125 00:05:28,410 --> 00:05:33,410 over, hvis den måten jeg lærer på Temaet hjelper deg å lære det, eller hvis du 126 00:05:33,410 --> 00:05:36,120 er forvirret på et emne, men ikke rekk opp hånden eller be meg 127 00:05:36,120 --> 00:05:37,390 eller send meg en e-post. 128 00:05:37,390 --> 00:05:42,150 Eller selv om du, igjen, er forvirret om noe på oppgavesettet. 129 00:05:42,150 --> 00:05:44,240 Hvis du ikke når ut til meg, Jeg kan ikke vite det sikkert. 130 00:05:44,240 --> 00:05:46,950 Jeg skal gjøre mitt beste for å sjekke inn på dere, sørge for at alt er 131 00:05:46,950 --> 00:05:51,170 går bra, prøver å lære ting på en måte som vil bli bidrar til det meste av 132 00:05:51,170 --> 00:05:54,910 dine læringsstiler, men hvis det er noe jeg kan gjøre, gi meg beskjed. 133 00:05:54,910 --> 00:05:58,520 >> Langs disse linjene, hvis du vil ha litt hjelp med problemet sett, er jeg mer 134 00:05:58,520 --> 00:05:59,700 enn gjerne hjelpe deg med oppgavesettet. 135 00:05:59,700 --> 00:06:02,300 Vi kommer til å gjøre mye av som mot den andre 136 00:06:02,300 --> 00:06:03,460 halvparten av dette avsnittet. 137 00:06:03,460 --> 00:06:06,040 Men hvis du ikke har lest problemet setter tilbake, og har ikke sett på tur 138 00:06:06,040 --> 00:06:09,310 gjennom og har ikke sett de shorts og forventer meg å lære deg 139 00:06:09,310 --> 00:06:13,260 alt som har blitt filmet online eller at du kan finne på CS50 140 00:06:13,260 --> 00:06:16,720 Studien, det er ikke egentlig rimelig å meg eller til andre jevnaldrende. 141 00:06:16,720 --> 00:06:20,440 142 00:06:20,440 --> 00:06:25,730 >> Så vær så snill, jeg er mer enn gjerne hjelpe dere, men dere fikk møte meg i 143 00:06:25,730 --> 00:06:27,230 midten. 144 00:06:27,230 --> 00:06:30,100 Vi har tonnevis med ressurser for du tilgjengelig på CS50. 145 00:06:30,100 --> 00:06:31,230 Jeg nevnte noen av dem. 146 00:06:31,230 --> 00:06:32,960 Vennligst ta nytte av dem. 147 00:06:32,960 --> 00:06:35,140 Hvis du er forvirret, jeg er mer enn fornøyd for å hjelpe deg å forklare dem i 148 00:06:35,140 --> 00:06:39,290 en annen måte, men det er ikke rettferdig hvis studentene møter opp på kontortid, 149 00:06:39,290 --> 00:06:42,530 har ikke startet noe, og det er Torsdag kveld og de venter 150 00:06:42,530 --> 00:06:45,880 TF å gå dem gjennom hver enkelt ting for problemet satt på grunn 151 00:06:45,880 --> 00:06:47,140 til middag neste dag. 152 00:06:47,140 --> 00:06:48,300 Fornuftig? 153 00:06:48,300 --> 00:06:50,890 Igjen, kan du møte oss i midten. 154 00:06:50,890 --> 00:06:53,230 >> Og til slutt, høye forventninger. 155 00:06:53,230 --> 00:06:58,010 Jeg kommer til å være gradering alle som er i seksjonen min, eller scoring din 156 00:06:58,010 --> 00:06:59,020 oppgavesett. 157 00:06:59,020 --> 00:07:01,240 Du har ikke gått tilbake problem satt null eller en ennå. 158 00:07:01,240 --> 00:07:02,250 Vi beklager om det. 159 00:07:02,250 --> 00:07:04,970 Det tok oss en stund å endelig bosette seksjoner, og nå 160 00:07:04,970 --> 00:07:05,560 vi kan begynne gradering. 161 00:07:05,560 --> 00:07:09,560 >> Jeg skal få dem tilbake til deg så snart som mulig. 162 00:07:09,560 --> 00:07:11,890 De er noen av mine advisees der ute. 163 00:07:11,890 --> 00:07:14,150 Jeg skal få dem tilbake til deg så snart som mulig. 164 00:07:14,150 --> 00:07:18,046 Og for oppgavesettet to, vil vi være på planlegge, og vi vil begynne å få dem 165 00:07:18,046 --> 00:07:20,440 til deg ganske raskt etter du slår dem i. 166 00:07:20,440 --> 00:07:24,130 >> Når du får ditt problem satt tilbake, du vil få score, som du kjenner fra 167 00:07:24,130 --> 00:07:28,150 lesing av litteratur - korrekthet, design, omfang og stil score. 168 00:07:28,150 --> 00:07:29,760 Du vil også få kommentarer. 169 00:07:29,760 --> 00:07:32,160 Kommentarene er viktigere enn resultatet. 170 00:07:32,160 --> 00:07:33,780 Jeg tror det er trygt å si at. 171 00:07:33,780 --> 00:07:37,930 >> Poeng er bare et tall fra en til fem. 172 00:07:37,930 --> 00:07:38,930 Det er vanskelig å lese inn disse. 173 00:07:38,930 --> 00:07:40,720 Det er vanskelig å forbedre fra dem. 174 00:07:40,720 --> 00:07:44,460 Men kommentarene vil peke ut spesifikke ting du gjorde det bra eller områder 175 00:07:44,460 --> 00:07:48,360 du kan forbedre på og gi deg noen ideer for fremtiden eller alternativ 176 00:07:48,360 --> 00:07:49,160 måter å gjøre ting. 177 00:07:49,160 --> 00:07:52,270 >> Så vær så snill, vær så snill, kan du lese gjennom kommentarene. 178 00:07:52,270 --> 00:07:54,190 Jeg legger mye tid inn disse kommentarene. 179 00:07:54,190 --> 00:07:57,190 Vennligst les igjennom dem, og ikke bare bla ned til bunnen av 180 00:07:57,190 --> 00:08:01,890 PDF, se etter poengsummen din, eller gå på nettet og finne poengsummen din, og deretter ignorere 181 00:08:01,890 --> 00:08:02,800 kommentarene. 182 00:08:02,800 --> 00:08:03,910 Det er ikke hvordan du er kommer til å bli bedre. 183 00:08:03,910 --> 00:08:06,550 Det er ikke hvordan du kommer til å øke din score til slutt, bare 184 00:08:06,550 --> 00:08:07,340 ved å se på resultatet. 185 00:08:07,340 --> 00:08:08,760 Vennligst se på disse kommentarene. 186 00:08:08,760 --> 00:08:13,240 >> Og langs linjen av høye forventninger, igjen, som jeg sa, du 187 00:08:13,240 --> 00:08:14,260 kan scores fra én til fem. 188 00:08:14,260 --> 00:08:17,120 Toere, treere og firere er aller fleste score 189 00:08:17,120 --> 00:08:17,940 du kommer til å få. 190 00:08:17,940 --> 00:08:20,180 Ones og femmere er begge veldig sjeldne. 191 00:08:20,180 --> 00:08:21,720 Det er alltid ting vi kan gjøre bedre. 192 00:08:21,720 --> 00:08:23,490 Når jeg kode et program, er det alltid noe jeg 193 00:08:23,490 --> 00:08:24,800 kunne ha gjort bedre. 194 00:08:24,800 --> 00:08:28,740 >> Så heller enn å si at du får en fem hele tiden på alt og gjorde 195 00:08:28,740 --> 00:08:31,960 alt perfekt, jeg tror ikke noen av oss virkelig tror at vi - eller 196 00:08:31,960 --> 00:08:34,830 forhåpentligvis har vi ikke gjøre alt perfeksjonere hele tiden. 197 00:08:34,830 --> 00:08:37,010 Så ikke bli bekymret hvis du fikk ikke en fem. 198 00:08:37,010 --> 00:08:40,470 En fem ikke kartlegge ikke på en A, en fire ikke kartet ikke på en B, et tre gjør 199 00:08:40,470 --> 00:08:42,950 ikke kartet på en C. Det er ikke hvordan resultatet fungerer. 200 00:08:42,950 --> 00:08:48,140 >> Som David har sagt mange ganger, til semesters slutt alle av din score og 201 00:08:48,140 --> 00:08:53,390 innspill fra meg, din TF, kommer sammen og bestemme en endelig karakter for deg. 202 00:08:53,390 --> 00:08:56,760 Men igjen, det er ikke fem, A, fire, B, et cetera. 203 00:08:56,760 --> 00:09:01,150 Så jeg kommer til å ha høye forventninger for dere. 204 00:09:01,150 --> 00:09:03,670 Jeg kommer til å forvente god problem sett og jeg kommer til å gi 205 00:09:03,670 --> 00:09:05,010 deg tilbakemelding som sådan. 206 00:09:05,010 --> 00:09:07,430 Og det kommer ikke til å bety at du er kommer til å få en dårligere karakter. 207 00:09:07,430 --> 00:09:09,760 Du er gradert i form av din fremgang fra uke 208 00:09:09,760 --> 00:09:11,260 null til kursets slutt. 209 00:09:11,260 --> 00:09:17,190 >> Og endelig, når det gjelder høy forventningene i klassen, jeg elsker når 210 00:09:17,190 --> 00:09:18,460 mennesker deltar. 211 00:09:18,460 --> 00:09:23,180 Jeg forstår føler noen mennesker mer eller mindre komfortable deltar. 212 00:09:23,180 --> 00:09:26,050 Andre mennesker deltar ikke ved å heve sin hånd og 213 00:09:26,050 --> 00:09:27,320 snakker hele tiden. 214 00:09:27,320 --> 00:09:30,570 Men vi i denne klassen kommer til å være å gjøre en masse små problemer, mye 215 00:09:30,570 --> 00:09:33,770 av mini spørsmål, og deretter noen større koding problemer. 216 00:09:33,770 --> 00:09:36,760 Så definitivt jobbe disse øvelsene ut når vi gjør dem på datamaskinen eller på 217 00:09:36,760 --> 00:09:37,900 et papirark. 218 00:09:37,900 --> 00:09:40,933 >> Men jeg vil også gi deg litt tid før noen har noen gang å svare på noen 219 00:09:40,933 --> 00:09:42,220 av spørsmålene spør jeg. 220 00:09:42,220 --> 00:09:44,930 Så fordi jeg vil gi deg litt tid til å tenker på det, fordi vi kommer 221 00:09:44,930 --> 00:09:49,380 å gjøre ting på partnere noen ganger, Jeg vil forvente alle 222 00:09:49,380 --> 00:09:52,150 å være engasjert seg noe. 223 00:09:52,150 --> 00:09:56,030 Og i mangel av et bedre ord, det vil trolig være kaldt ringer, som 224 00:09:56,030 --> 00:09:59,045 er der alle vil ha en sjanse å tenke på svaret, og deretter 225 00:09:59,045 --> 00:10:01,150 Jeg skal ringe deg, og deretter vil du si svaret. 226 00:10:01,150 --> 00:10:05,200 >> Ikke bekymre deg eller bli redd om det. 227 00:10:05,200 --> 00:10:08,610 Jeg har gjort det i det siste og vi har funnet at det er mye mer vellykket, 228 00:10:08,610 --> 00:10:11,810 også lese pedagogisk forskning på det å avgjøre hvorvidt det var en 229 00:10:11,810 --> 00:10:12,640 god taktikk. 230 00:10:12,640 --> 00:10:15,790 Det er veldig nyttig, spesielt hvis du gi elevene tid til å tenke på 231 00:10:15,790 --> 00:10:20,070 svar og ikke gjør dem bare komme ut og si det rett utenfor balltre. 232 00:10:20,070 --> 00:10:22,620 Men hvis du ikke føler deg komfortabel svare, jeg er også ganske god på 233 00:10:22,620 --> 00:10:25,370 sensing det ut, og vi kommer ikke til å sette deg på stedet, spesielt på 234 00:10:25,370 --> 00:10:28,240 kameraet, selv om ingen av du er på kamera akkurat nå. 235 00:10:28,240 --> 00:10:32,250 >> Så de er de normer jeg har. 236 00:10:32,250 --> 00:10:34,670 En ting langs linjene av møte i midten. 237 00:10:34,670 --> 00:10:36,490 Jeg kommer til å gi dere mange tilbakemeldinger. 238 00:10:36,490 --> 00:10:38,310 Vennligst gi meg tilbakemeldinger også. 239 00:10:38,310 --> 00:10:46,190 Det er en nettside, sayat.me/cs50. 240 00:10:46,190 --> 00:10:48,380 Så det er en ærlig tilbakemelding. 241 00:10:48,380 --> 00:10:50,730 Hvis du ønsker å gi det under avsnittet, Jeg får en e-post når det skjer. 242 00:10:50,730 --> 00:10:53,820 Vi vil ta en pause i en bit, så jeg skal se gjennom tilbakemeldinger da. 243 00:10:53,820 --> 00:10:55,970 Hvis du noen gang har noen tilbakemeldinger, kan du gi den til meg der. 244 00:10:55,970 --> 00:11:01,380 >> Hvis du gir meg tilbakemelding på Q, som er fantastisk, men det er guiden 245 00:11:01,380 --> 00:11:02,570 som du gjør på slutten. 246 00:11:02,570 --> 00:11:05,690 Men det vil være ved semesterets slutt så Jeg vil ikke være i stand til å ta noe av det 247 00:11:05,690 --> 00:11:08,620 tilbakemeldinger og slå den inn i undervisningen dere bedre. 248 00:11:08,620 --> 00:11:11,020 Så vær så snill, hvis du har noen tilbakemeldinger, gi det til meg. 249 00:11:11,020 --> 00:11:12,010 Jeg elsker tilbakemeldinger. 250 00:11:12,010 --> 00:11:14,490 Tilbake til FOP, får vi tilbakemeldinger hele tiden. 251 00:11:14,490 --> 00:11:18,610 >> Du kan gi meg positive, gode ting, deltaer, ting jeg kan forbedre. 252 00:11:18,610 --> 00:11:20,600 Du kan kommentere antrekkene mine. 253 00:11:20,600 --> 00:11:24,170 Det vil ikke være like nyttig, men du er velkommen til å kommentere noen og 254 00:11:24,170 --> 00:11:24,570 alt. 255 00:11:24,570 --> 00:11:26,280 Vennligst, vennligst gi meg tilbakemelding. 256 00:11:26,280 --> 00:11:28,740 Jeg verdsetter det mye, og det betyr mye for meg. 257 00:11:28,740 --> 00:11:31,760 258 00:11:31,760 --> 00:11:33,280 >> En mer norm, moro. 259 00:11:33,280 --> 00:11:34,530 Vi kommer til å ha mye moro. 260 00:11:34,530 --> 00:11:36,930 Forhåpentligvis i dette kurset, vil du har mye moro. 261 00:11:36,930 --> 00:11:38,780 Vi vil ha godteri på seksjonen. 262 00:11:38,780 --> 00:11:40,040 Vi vil ha musikk. 263 00:11:40,040 --> 00:11:45,510 Vi vil forhåpentligvis bli kjent med en annen noe godt, så jeg vil ha 264 00:11:45,510 --> 00:11:47,690 dette skal være en morsom, engasjerende opplevelse. 265 00:11:47,690 --> 00:11:50,890 >> Jeg vet at noen av dere har sovnet inn i forelesningene du hadde tidligere i dag, 266 00:11:50,890 --> 00:11:53,750 så forhåpentligvis som ikke vil være tilfelle nå. 267 00:11:53,750 --> 00:11:55,960 Og hvis det er tilfelle nå, bare snorker ikke fordi det kan 268 00:11:55,960 --> 00:11:57,580 være fanget på kamera. 269 00:11:57,580 --> 00:11:58,770 Søt. 270 00:11:58,770 --> 00:12:04,020 Eventuelle spørsmål, kommentarer eller bekymringer før jeg går videre om noe vi har 271 00:12:04,020 --> 00:12:05,270 snakket om? 272 00:12:05,270 --> 00:12:08,620 273 00:12:08,620 --> 00:12:11,350 Stor. 274 00:12:11,350 --> 00:12:14,830 >> Så vi kommer til å gå i arrays første. 275 00:12:14,830 --> 00:12:17,140 Dette er hvordan du gjør en matrise. 276 00:12:17,140 --> 00:12:18,410 Vi har sett dette før. 277 00:12:18,410 --> 00:12:21,830 Har du en datatype, har du en navn, og da har du en størrelse. 278 00:12:21,830 --> 00:12:24,430 Akkurat her, lager jeg to arrays. 279 00:12:24,430 --> 00:12:30,360 Den første er en rekke tegn, og det har 26 mellomrom. 280 00:12:30,360 --> 00:12:33,790 Den andre er en rekke score, og den har tre 281 00:12:33,790 --> 00:12:35,390 plasser for tre heltall. 282 00:12:35,390 --> 00:12:35,827 Ja? 283 00:12:35,827 --> 00:12:38,200 >> STUDENT: Er alle disse lysbildene tilgjengelig sted for oss? 284 00:12:38,200 --> 00:12:38,850 >> JASON Hirschhorn: Great spørsmålet. 285 00:12:38,850 --> 00:12:40,650 Spørsmålet var, er alle disse glir tilgjengelig? 286 00:12:40,650 --> 00:12:40,920 Ja. 287 00:12:40,920 --> 00:12:43,420 Alle disse bilder vil finnes, og i fremtiden, vil jeg sende dem til 288 00:12:43,420 --> 00:12:44,640 deg før delen. 289 00:12:44,640 --> 00:12:47,340 Men i dag, fordi dette er den første uke, hadde vi en sen start. 290 00:12:47,340 --> 00:12:49,675 Så vanligvis, vil du få disse lysbildene, men de er tilgjengelige på nettet og 291 00:12:49,675 --> 00:12:52,420 Jeg skal sende dem til deg rett etter klassen. 292 00:12:52,420 --> 00:12:54,140 Eventuelle andre spørsmål? 293 00:12:54,140 --> 00:13:01,330 >> Så igjen, arrays er bokser, i mangel av et bedre ord, som holder flere 294 00:13:01,330 --> 00:13:06,420 elementer av en datatype, og de er ved siden av hverandre i minnet. 295 00:13:06,420 --> 00:13:11,370 Og så igjen, dette er hvordan du kan lage to typer matriser. 296 00:13:11,370 --> 00:13:15,090 >> Så etter at du har gjort ditt utvalg med som første linje - int score, brakett 297 00:13:15,090 --> 00:13:17,430 tre, tett brakett - du ønsker å starte den. 298 00:13:17,430 --> 00:13:19,050 Du ønsker å sette noen verdier der. 299 00:13:19,050 --> 00:13:24,660 Og dette er hvordan du setter noen verdier i der, bare å velge indice og 300 00:13:24,660 --> 00:13:25,670 skrive nummeret. 301 00:13:25,670 --> 00:13:27,130 La oss trekke dette i styret. 302 00:13:27,130 --> 00:13:28,270 Alle kan se? 303 00:13:28,270 --> 00:13:29,030 Alle kan se. 304 00:13:29,030 --> 00:13:30,790 Søt. 305 00:13:30,790 --> 00:13:36,550 >> Så det kommer til å bli min matrise kalles Scores. 306 00:13:36,550 --> 00:13:37,730 Som du kan se, er det størrelsen tre. 307 00:13:37,730 --> 00:13:39,210 Det er tre bokser der inne. 308 00:13:39,210 --> 00:13:43,120 Hver og en kan passe hva type datatype? 309 00:13:43,120 --> 00:13:43,790 >> STUDENT: Integer. 310 00:13:43,790 --> 00:13:45,250 >> JASON Hirschhorn: Et heltall i denne. 311 00:13:45,250 --> 00:13:48,790 Vi skrev int score, og det første ordet er datatypen som kommer til å 312 00:13:48,790 --> 00:13:50,910 gå i boksene i denne matrisen. 313 00:13:50,910 --> 00:13:52,160 Så jeg kan passe tre. 314 00:13:52,160 --> 00:13:54,880 315 00:13:54,880 --> 00:13:57,000 Hvorfor har jeg null opp der på brettet? 316 00:13:57,000 --> 00:13:59,240 Hvorfor står det poengsum null tilsvarer en? 317 00:13:59,240 --> 00:14:02,090 318 00:14:02,090 --> 00:14:03,180 Minner meg om navnet ditt. 319 00:14:03,180 --> 00:14:03,470 >> STUDENT: Kurt. 320 00:14:03,470 --> 00:14:04,070 >> JASON Hirschhorn: Kurt. 321 00:14:04,070 --> 00:14:04,480 >> STUDENT: Ja. 322 00:14:04,480 --> 00:14:04,920 >> JASON Hirschhorn: Hvorfor? 323 00:14:04,920 --> 00:14:07,230 >> STUDENT: Fordi første indeksen er null, begynner vi å telle på null. 324 00:14:07,230 --> 00:14:08,480 >> JASON Hirschhorn: Så vi starter telling på null. 325 00:14:08,480 --> 00:14:09,580 Det er helt riktig. 326 00:14:09,580 --> 00:14:12,340 Dette er forvirrende del og vilje tur deg opp, spesielt når du er 327 00:14:12,340 --> 00:14:14,900 prøver å reagere gjennom arrays, som vi vil gjøre i en bit. 328 00:14:14,900 --> 00:14:15,980 Vi begynner å telle på null. 329 00:14:15,980 --> 00:14:19,170 Så hvis jeg ønsker å referere til den første boks, er det ikke boksen en. 330 00:14:19,170 --> 00:14:22,290 Dessverre er det box null. 331 00:14:22,290 --> 00:14:26,460 Den andre er en boks, og i denne tilfelle, er den tredje boksen to. 332 00:14:26,460 --> 00:14:28,700 >> Hva om boksen tre? 333 00:14:28,700 --> 00:14:30,670 Hvor er boksen tre? 334 00:14:30,670 --> 00:14:34,750 Eller hvis jeg ønsker å gjøre score, brakett tre, tett brakett, hva er det? 335 00:14:34,750 --> 00:14:37,650 336 00:14:37,650 --> 00:14:39,760 Så du sa null tegn. 337 00:14:39,760 --> 00:14:41,600 Noen andre tanker? 338 00:14:41,600 --> 00:14:44,590 Hva er poeng brakett tre brakett? 339 00:14:44,590 --> 00:14:48,045 >> STUDENT: Det finnes ikke egentlig fordi du bare definert som scorer, 340 00:14:48,045 --> 00:14:49,370 brakett tre. 341 00:14:49,370 --> 00:14:51,400 >> JASON Hirschhorn: Så du sier det egentlig ikke eksisterer. 342 00:14:51,400 --> 00:14:54,230 I noen tilfeller, når vi har å gjøre med strenger, vanligvis vil vi sette en null 343 00:14:54,230 --> 00:14:54,790 karakter i enden. 344 00:14:54,790 --> 00:14:56,100 Vi får til det i et sekund. 345 00:14:56,100 --> 00:15:01,020 Men i dette tilfellet er det er ingen tredje boksen her. 346 00:15:01,020 --> 00:15:06,390 Så den siste boksen i alle utvalg er størrelsen minus en. 347 00:15:06,390 --> 00:15:11,310 Så hvis vi har en rekke størrelse n, den første boksen er på null, er den siste 348 00:15:11,310 --> 00:15:12,700 på n minus en. 349 00:15:12,700 --> 00:15:14,970 Og i dette tilfellet, betyr det ikke eksisterer. 350 00:15:14,970 --> 00:15:17,970 Det er noe her i minne, men det er ikke vår. 351 00:15:17,970 --> 00:15:18,460 Vi eier ikke det. 352 00:15:18,460 --> 00:15:19,570 Vi gjorde ikke be om det. 353 00:15:19,570 --> 00:15:22,606 Så hvis vi prøver å få tilgang til det, som vi vil gjøre i en bit, vi sannsynligvis kommer til å 354 00:15:22,606 --> 00:15:24,970 komme i trøbbel. 355 00:15:24,970 --> 00:15:29,180 >> I dette tilfellet, jeg initialisering min array med tre variabler. 356 00:15:29,180 --> 00:15:36,195 Vi setter en i boks null, en to i boksen ett, og et tre i boks to. 357 00:15:36,195 --> 00:15:39,280 Does noen har noen spørsmål om initialisering av en array? 358 00:15:39,280 --> 00:15:44,540 359 00:15:44,540 --> 00:15:46,970 >> Så vi gikk over denne akkurat nå. 360 00:15:46,970 --> 00:15:52,725 Score, tre brakett, tett brakett, som ikke eksisterer. 361 00:15:52,725 --> 00:15:58,130 Vi er null indeksert i informatikk, så vi begynner å telle på null. 362 00:15:58,130 --> 00:16:01,860 Den siste boksen er tilgjengelig for oss, er det den tredje boksen, men det heter boks 363 00:16:01,860 --> 00:16:03,110 nummer to. 364 00:16:03,110 --> 00:16:05,790 365 00:16:05,790 --> 00:16:09,710 >> Down under, er dette et alternativ måte å initialisere arrays. 366 00:16:09,710 --> 00:16:13,410 Så i stedet for å opprette tabellen på en linje, fylle den første boksen, og deretter 367 00:16:13,410 --> 00:16:17,070 den andre boksen, og deretter den tredje boksen, du kan gjøre alt på én linje. 368 00:16:17,070 --> 00:16:19,040 Så i den linjen, begge arrays. 369 00:16:19,040 --> 00:16:23,460 Dette skaper de samme matrise som hva vi laget her, men det 370 00:16:23,460 --> 00:16:24,710 bare gjør det på en linje. 371 00:16:24,710 --> 00:16:29,740 372 00:16:29,740 --> 00:16:31,360 >> Nå har vi laget vår array. 373 00:16:31,360 --> 00:16:34,100 Vanligvis når du oppretter en matrise, du ønsker å gjøre noe med det, enten 374 00:16:34,100 --> 00:16:38,430 som er fylle den eller få ting ut av det og skrive dem ut på skjermen. 375 00:16:38,430 --> 00:16:42,270 I dette tilfellet skal vi gjennom vår score array, som vi initialisert på 376 00:16:42,270 --> 00:16:44,740 den første linjen her oppe i grått. 377 00:16:44,740 --> 00:16:49,600 Og deretter på den andre linjen, begynner vi iterating gjennom utvalget. 378 00:16:49,600 --> 00:16:52,640 Does noen har noen spørsmål om strukturen til en løkke for? 379 00:16:52,640 --> 00:16:55,250 380 00:16:55,250 --> 00:16:56,400 >> Så dette er for loop. 381 00:16:56,400 --> 00:16:59,530 Vi har vår første tilstand, og deretter vår endelige tilstand, og da vi 382 00:16:59,530 --> 00:17:01,160 iterere, i, hver loop. 383 00:17:01,160 --> 00:17:05,579 Og i klammeparentes i denne for loop, hva skjer hvis jeg skulle kjøre 384 00:17:05,579 --> 00:17:06,290 dette programmet? 385 00:17:06,290 --> 00:17:10,410 Kan noen fortelle meg hva vi ville få? 386 00:17:10,410 --> 00:17:11,589 [? Matu? ?] 387 00:17:11,589 --> 00:17:13,819 >> Matu: Skriv ut alle poengene på hver linje. 388 00:17:13,819 --> 00:17:14,900 Det ville skrive ut hver poengsum på en egen linje. 389 00:17:14,900 --> 00:17:16,300 >> JASON Hirschhorn: Hva er egentlig ville det ut? 390 00:17:16,300 --> 00:17:19,790 >> STUDENT: Det ville skrive en, så to, deretter tre. 391 00:17:19,790 --> 00:17:20,235 >> JASON Hirschhorn: Nettopp. 392 00:17:20,235 --> 00:17:23,490 Det ville skrive en, så to, deretter tre, hver på egne linjer, fordi 393 00:17:23,490 --> 00:17:27,810 vi går gjennom utvalget, og du vil se at andre, printf 394 00:17:27,810 --> 00:17:29,275 uttalelse, skårer Í. 395 00:17:29,275 --> 00:17:32,880 Så på den første runden gjennom vårt for loop, er lik i null, noe som betyr at vi er 396 00:17:32,880 --> 00:17:34,640 få verdien på stillingen null - 397 00:17:34,640 --> 00:17:36,900 som, hvis vi går tilbake til vår diagrammet, er en - 398 00:17:36,900 --> 00:17:38,630 og utfylling - 399 00:17:38,630 --> 00:17:39,700 oh, sier det c. 400 00:17:39,700 --> 00:17:41,680 Det burde være% d. 401 00:17:41,680 --> 00:17:43,970 Jeg vil fikse det i litt når Jeg hånd det ut til dere. 402 00:17:43,970 --> 00:17:48,670 Men vi presentere et heltall slik at det bør være% d akkurat her, ikke% c. 403 00:17:48,670 --> 00:17:50,340 Hva er% c for? 404 00:17:50,340 --> 00:17:50,790 >> STUDENT: Character. 405 00:17:50,790 --> 00:17:52,680 >> JASON Hirschhorn: Character, akkurat. 406 00:17:52,680 --> 00:17:53,690 Hva er den andre? 407 00:17:53,690 --> 00:17:56,260 Hvis du ikke ønsker å gjøre% d for en heltall, hva annet kan du gjøre? 408 00:17:56,260 --> 00:17:57,000 >> STUDENT: jeg. 409 00:17:57,000 --> 00:17:59,180 >> JASON Hirschhorn:% i, akkurat. 410 00:17:59,180 --> 00:18:01,660 Så noen spørsmål om iterating gjennom array? 411 00:18:01,660 --> 00:18:05,500 412 00:18:05,500 --> 00:18:07,800 Så hva skjer hvis vi gjør dette? 413 00:18:07,800 --> 00:18:10,290 Istedenfor å gjøre er jeg mindre enn tre, vi i er mindre 414 00:18:10,290 --> 00:18:11,390 enn eller lik tre. 415 00:18:11,390 --> 00:18:13,420 Hva skjer når vi kjører denne koden? 416 00:18:13,420 --> 00:18:17,510 417 00:18:17,510 --> 00:18:18,940 Ja, Annie? 418 00:18:18,940 --> 00:18:22,030 >> STUDENT: De kommer til å skrive ut rare ting på den fjerde linjen. 419 00:18:22,030 --> 00:18:23,850 >> JASON Hirschhorn: Så du sier, er det kommer til å skrive ut rare ting på 420 00:18:23,850 --> 00:18:24,390 fjerde linjen? 421 00:18:24,390 --> 00:18:25,750 Does noen har et svar på spørsmålet hennes? 422 00:18:25,750 --> 00:18:28,940 423 00:18:28,940 --> 00:18:33,160 Så oddsen er at når vi får til - 424 00:18:33,160 --> 00:18:36,700 så på den fjerde runden gjennom vårt for loop, akkurat som du trodde, Annie, 425 00:18:36,700 --> 00:18:39,430 det vil være score tre brakett, som Vi har allerede funnet ut ikke 426 00:18:39,430 --> 00:18:41,990 eksisterer, og vi kommer til å prøve og få tilgang til det, skrive det ut 427 00:18:41,990 --> 00:18:43,350 ut, bruke det noen måte. 428 00:18:43,350 --> 00:18:46,060 Slik at maskinen vil trolig bli sint på oss. 429 00:18:46,060 --> 00:18:46,760 Du er helt riktig. 430 00:18:46,760 --> 00:18:48,830 >> Det kan avslutte programmet helt. 431 00:18:48,830 --> 00:18:52,222 Det kan skrive ut noe veldig rart. 432 00:18:52,222 --> 00:18:53,420 Du kan ikke si sikkert. 433 00:18:53,420 --> 00:18:56,210 Oddsen er det vil trolig bli sint på deg og bare slutte med en gang. 434 00:18:56,210 --> 00:19:00,100 >> Men dette er en vanlig feil du vil ha hvor du er like ved en på 435 00:19:00,100 --> 00:19:05,110 slutten, og dette er en feil som vil plage deg gjennom din koding. 436 00:19:05,110 --> 00:19:09,350 437 00:19:09,350 --> 00:19:14,150 En måte jeg liker å gjøre er bare på en whiteboard, gå gjennom hver iterasjon 438 00:19:14,150 --> 00:19:18,190 av sløyfen på hånden eller på papir for å se hva som skjer, og da 439 00:19:18,190 --> 00:19:20,440 generelt innse, oh vent, jeg skal ikke har gått til mindre enn eller 440 00:19:20,440 --> 00:19:20,870 lik tre. 441 00:19:20,870 --> 00:19:24,730 Jeg burde ha stoppet på to, som er hva skjer hvis tilstanden er mindre 442 00:19:24,730 --> 00:19:26,206 enn tre. 443 00:19:26,206 --> 00:19:29,120 Eventuelle spørsmål så langt? 444 00:19:29,120 --> 00:19:31,010 Søt. 445 00:19:31,010 --> 00:19:33,360 >> Slik at du har alle dine datamaskiner åpen. 446 00:19:33,360 --> 00:19:36,760 Vi kommer til å gi deg 02:58 minutter å skrive et program som 447 00:19:36,760 --> 00:19:40,460 oppretter en matrise med heltall en gjennom fem og deretter skrives ut hver 448 00:19:40,460 --> 00:19:41,720 heltall på en ny linje. 449 00:19:41,720 --> 00:19:44,330 450 00:19:44,330 --> 00:19:46,000 Og hvis du har noen spørsmål, rekk opp hånden. 451 00:19:46,000 --> 00:19:48,140 Jeg er glad for å komme med. 452 00:19:48,140 --> 00:19:50,630 Som jeg sa, la oss ta tre minutter å skrive dette. 453 00:19:50,630 --> 00:20:41,300 454 00:20:41,300 --> 00:20:45,110 Er alle OK hvis jeg går til en nytt og lukke dette? 455 00:20:45,110 --> 00:22:13,420 456 00:22:13,420 --> 00:22:15,520 >> Jeg beklager hvis du ikke har hatt en sjanse til slutt, men vi kommer til å gjøre det 457 00:22:15,520 --> 00:22:17,310 sammen akkurat nå. 458 00:22:17,310 --> 00:22:23,640 Så opp på skjermen, jeg har # include cs50.h, # include stdio.h. 459 00:22:23,640 --> 00:22:26,090 Kan noen fortelle meg hva disse to linjene gjøre? 460 00:22:26,090 --> 00:22:32,250 461 00:22:32,250 --> 00:22:33,155 Michael? 462 00:22:33,155 --> 00:22:40,030 >> STUDENT: De omfatter bibliotekene at CS50 gjort og at Steve har 463 00:22:40,030 --> 00:22:44,210 lagret for deg å bruke til gjør livet ditt enklere. 464 00:22:44,210 --> 00:22:46,820 >> JASON Hirschhorn: Så du sa de omfatter bibliotekene, en som CS50 465 00:22:46,820 --> 00:22:51,230 gjort, cs50.h, og en som er bare standard, leveres med 466 00:22:51,230 --> 00:22:53,510 C pakken, stdio.h. 467 00:22:53,510 --> 00:22:54,890 Hva mener du inkludere bibliotekene, skjønt? 468 00:22:54,890 --> 00:22:55,770 Kan du være litt mer spesifikk? 469 00:22:55,770 --> 00:23:01,180 >> STUDENT: Det gjør det slik at du kan bruke bestemte kodeord for å ha en 470 00:23:01,180 --> 00:23:05,710 fungere skje uten å måtte gå og gjøre funksjonen c selv. 471 00:23:05,710 --> 00:23:08,730 >> JASON Hirschhorn: Kan du gi meg et eksempel? 472 00:23:08,730 --> 00:23:11,160 >> STUDENT: Som printf er en du kan bruke. 473 00:23:11,160 --> 00:23:11,860 >> JASON Hirschhorn: Printf. 474 00:23:11,860 --> 00:23:14,680 Så du sa printf er en av dem funksjoner der heller enn å måtte 475 00:23:14,680 --> 00:23:19,840 skrive printf på egen hånd, er printf inkludert faktisk i stdio.h, slik at du 476 00:23:19,840 --> 00:23:22,010 kan bare bruke det og anta at det vil fungere. 477 00:23:22,010 --> 00:23:28,270 I stdio.h, hvis du åpnet opp denne filen, vil det omfatte hvordan printf 478 00:23:28,270 --> 00:23:31,620 arbeider, all koden for printf? 479 00:23:31,620 --> 00:23:33,105 Hvorfor er du rister på hodet? 480 00:23:33,105 --> 00:23:35,710 >> STUDENT: Fordi header-fil rett omfatter funksjonen erklæringen. 481 00:23:35,710 --> 00:23:36,400 >> JASON Hirschhorn: Helt riktig. 482 00:23:36,400 --> 00:23:39,680 Overskriften filen inneholder bare funksjonen erklæringen. 483 00:23:39,680 --> 00:23:42,950 Så i utgangspunktet, når du kompilerer dette, treffe Gjør Count, som vi vil gjøre i en 484 00:23:42,950 --> 00:23:48,070 sekund, vet den at hvis kompilatoren du bruker printf eksisterer printf. 485 00:23:48,070 --> 00:23:49,370 Det kommer til å bli definert sted. 486 00:23:49,370 --> 00:23:51,200 Det er ikke et problem for deg å bruke det. 487 00:23:51,200 --> 00:23:55,490 Og så senere, vil det inkludere enere og nuller som faktisk inneholder 488 00:23:55,490 --> 00:23:58,360 printf gjennomføring og flette dem med koden din. 489 00:23:58,360 --> 00:24:01,935 Hvordan kan du sørge for at det inkluderer enere og nuller for, si, få streng? 490 00:24:01,935 --> 00:24:05,670 491 00:24:05,670 --> 00:24:07,210 >> STUDENT: Få strengen er i cs50.h. 492 00:24:07,210 --> 00:24:07,830 >> JASON Hirschhorn: Høyre. 493 00:24:07,830 --> 00:24:11,110 Slik som sier få strengen finnes, funksjonen erklæringen. 494 00:24:11,110 --> 00:24:15,410 Men så enere og nuller, den binære fil som faktisk inneholder 495 00:24:15,410 --> 00:24:17,370 gjennomføring av get streng? 496 00:24:17,370 --> 00:24:19,310 Hvordan kan du sørge for at går med programmet ditt? 497 00:24:19,310 --> 00:24:23,220 >> STUDENT: Pass på linker i kommandolinjen argument. 498 00:24:23,220 --> 00:24:25,430 >> JASON Hirschhorn: Før linker i kommandolinjen argument. 499 00:24:25,430 --> 00:24:26,700 Hvordan gjør dere det? 500 00:24:26,700 --> 00:24:29,730 >> STUDENT: Det er den-l linje i klang 501 00:24:29,730 --> 00:24:30,480 >> JASON Hirschhorn: Helt riktig. 502 00:24:30,480 --> 00:24:32,900 Du sier-l CS50, ikke sant? 503 00:24:32,900 --> 00:24:34,940 Som inkluderer de enere og nuller. 504 00:24:34,940 --> 00:24:36,460 >> STUDENT: Men Gjør gjør det for deg, ikke sant? 505 00:24:36,460 --> 00:24:37,010 >> JASON Hirschhorn: Nettopp. 506 00:24:37,010 --> 00:24:40,390 Gjør gjør det for deg, men til slutt, du vil ikke ha Lag, eller 507 00:24:40,390 --> 00:24:43,220 du må lage en lage på egen hånd, så det er en 508 00:24:43,220 --> 00:24:43,940 god ting å huske. 509 00:24:43,940 --> 00:24:47,350 Hvis du skulle bruke en av disse andre bibliotek, ikke bare du har 510 00:24:47,350 --> 00:24:49,490 å skrive # include og deretter biblioteket. 511 00:24:49,490 --> 00:24:51,420 Du trenger også å knytte det i. 512 00:24:51,420 --> 00:24:54,480 Og disse to ting er annerledes. -L CS50 er annerledes 513 00:24:54,480 --> 00:24:59,260 enn # include cs50.h. 514 00:24:59,260 --> 00:25:02,870 >> Da har vi int viktigste void klammeparentes, og nå skal vi koden 515 00:25:02,870 --> 00:25:03,590 Innerste. 516 00:25:03,590 --> 00:25:07,090 Den første linjen jeg har her er en kommentar som sier, lage en matrise 517 00:25:07,090 --> 00:25:08,820 med ints én til fem. 518 00:25:08,820 --> 00:25:12,600 Hva er et godt ord for å beskrive hva jeg har akkurat nå på skjermen, akkurat 519 00:25:12,600 --> 00:25:14,170 kommentarer inne main? 520 00:25:14,170 --> 00:25:15,722 Hva kaller vi det? 521 00:25:15,722 --> 00:25:16,820 >> STUDENT: pseudokode. 522 00:25:16,820 --> 00:25:17,840 >> JASON Hirschhorn: pseudokode. 523 00:25:17,840 --> 00:25:18,420 Takk, Jeffrey. 524 00:25:18,420 --> 00:25:19,540 Det er helt riktig. 525 00:25:19,540 --> 00:25:20,005 Pseudokode. 526 00:25:20,005 --> 00:25:22,854 Har dere sett pseudokode før? 527 00:25:22,854 --> 00:25:28,340 Rekk opp hånden hvis du har brukt pseudokode før problemet satt en. 528 00:25:28,340 --> 00:25:29,400 Omtrent halvparten av dere. 529 00:25:29,400 --> 00:25:32,700 >> Jeg vil anbefale å bruke pseudokode å bryte ned problemer i 530 00:25:32,700 --> 00:25:35,210 mindre, mer lett å bite av stykker. 531 00:25:35,210 --> 00:25:38,630 Også, hvis du gjør pseudokode, du ha dine kommentarer allerede i stor grad 532 00:25:38,630 --> 00:25:40,760 innebygd, slik at du ikke trenger å gå tilbake og prøve å finne ut 533 00:25:40,760 --> 00:25:42,450 hva du gjorde. 534 00:25:42,450 --> 00:25:44,730 Så kan noen gi meg denne første linjen å lage en matrise med ints en 535 00:25:44,730 --> 00:25:45,980 gjennom fem? 536 00:25:45,980 --> 00:25:48,700 537 00:25:48,700 --> 00:25:49,130 Deg? 538 00:25:49,130 --> 00:25:53,350 >> STUDENT: Int og deretter kan du ringe uansett hvor mange, og så firkantet 539 00:25:53,350 --> 00:25:54,830 brakett fem. 540 00:25:54,830 --> 00:25:57,820 >> JASON Hirschhorn: Så int tall, hakeparentes fem. 541 00:25:57,820 --> 00:25:59,160 >> STUDENT: Er lik, og deretter klammeparentes. 542 00:25:59,160 --> 00:26:00,830 >> JASON Hirschhorn: lik, klammeparentes. 543 00:26:00,830 --> 00:26:01,830 >> STUDENT: En, to, tre, fire. 544 00:26:01,830 --> 00:26:05,566 >> JASON Hirschhorn: En, to, tre, fire, fem. 545 00:26:05,566 --> 00:26:07,390 >> STUDENT: Og så klammeparentes og deretter semikolon. 546 00:26:07,390 --> 00:26:09,240 >> JASON Hirschhorn: Og krøllete bukseseler og semikolon. 547 00:26:09,240 --> 00:26:10,330 Utmerket. 548 00:26:10,330 --> 00:26:12,210 Skrive ut hver int på en ny linje. 549 00:26:12,210 --> 00:26:17,140 Kan noen andre gi meg at koden, please? 550 00:26:17,140 --> 00:26:17,530 [? Matu? ?] 551 00:26:17,530 --> 00:26:18,560 Gå videre. 552 00:26:18,560 --> 00:26:20,440 >> STUDENT: For ( 553 00:26:20,440 --> 00:26:21,750 >> JASON Hirschhorn: For ( 554 00:26:21,750 --> 00:26:23,740 >> STUDENT: int i = 0 555 00:26:23,740 --> 00:26:26,070 >> JASON Hirschhorn: int i = 0 556 00:26:26,070 --> 00:26:28,190 >> STUDENT: Semicolon i mindre enn fem. 557 00:26:28,190 --> 00:26:31,680 >> JASON Hirschhorn: Semicolon, jeg mindre enn fem. 558 00:26:31,680 --> 00:26:33,600 >> STUDENT: Semicolon, i + +. 559 00:26:33,600 --> 00:26:35,140 >> JASON Hirschhorn: Semicolon, i + +. 560 00:26:35,140 --> 00:26:37,720 >> STUDENT: Lukkede parentes, deretter åpen brace. 561 00:26:37,720 --> 00:26:39,410 >> JASON Hirschhorn: Lukkede parentes og to bukseseler. 562 00:26:39,410 --> 00:26:40,510 Inne i bukseseler? 563 00:26:40,510 --> 00:26:47,640 >> STUDENT: Og så printf "% d / n" 564 00:26:47,640 --> 00:26:48,695 >> JASON Hirschhorn: Beklager, hold på. 565 00:26:48,695 --> 00:26:52,330 Printf "% d / n, lukket sitat. 566 00:26:52,330 --> 00:26:55,980 >> STUDENT: Og så lukket sitat, komma, telle, brakett jeg. 567 00:26:55,980 --> 00:26:58,350 >> JASON Hirschhorn: Komma, teller, brakett jeg. 568 00:26:58,350 --> 00:26:59,970 >> STUDENT: Beklager, tall brakett jeg. 569 00:26:59,970 --> 00:27:01,416 >> JASON Hirschhorn: Numbers, brakett jeg. 570 00:27:01,416 --> 00:27:03,200 >> STUDENT: Beklager. 571 00:27:03,200 --> 00:27:04,750 Og deretter lukket parentes, semikolon. 572 00:27:04,750 --> 00:27:07,156 >> JASON Hirschhorn: Stengt parenteser, semikolon. 573 00:27:07,156 --> 00:27:08,680 Jeg kommer til å spare det. 574 00:27:08,680 --> 00:27:12,670 Vi kommer til å lage teller. 575 00:27:12,670 --> 00:27:14,742 Og hvordan kjører jeg teller? 576 00:27:14,742 --> 00:27:16,470 >> STUDENT: Backslash. 577 00:27:16,470 --> 00:27:17,180 >> STUDENT: Dot skråstrek - 578 00:27:17,180 --> 00:27:18,050 >> JASON Hirschhorn:. / Teller, akkurat. 579 00:27:18,050 --> 00:27:19,380 Takk. . / Teller. 580 00:27:19,380 --> 00:27:21,060 En, to, tre, fire, fem på nye linjer. 581 00:27:21,060 --> 00:27:22,110 Ser ut som det fungerte. 582 00:27:22,110 --> 00:27:23,200 Ja, Noah? 583 00:27:23,200 --> 00:27:26,660 >> STUDENT: Du kan også gjøre mindre enn eller lik fire, som i er mindre enn 584 00:27:26,660 --> 00:27:27,630 eller lik fire? 585 00:27:27,630 --> 00:27:31,190 Er det noen fordel å gjøre mindre enn fem, eller bare en annen måte å 586 00:27:31,190 --> 00:27:31,610 skrive det? 587 00:27:31,610 --> 00:27:35,280 >> JASON Hirschhorn: Så spørsmålet er du kunne ha gjort i er mindre enn eller 588 00:27:35,280 --> 00:27:37,450 lik fire i stedet for i er mindre enn fem. 589 00:27:37,450 --> 00:27:38,935 Ville det ha fungert det samme? 590 00:27:38,935 --> 00:27:39,760 >> STUDENT: Det burde. 591 00:27:39,760 --> 00:27:39,860 >> JASON Hirschhorn: Ja. 592 00:27:39,860 --> 00:27:41,660 Det helt ville ha fungerer på samme. 593 00:27:41,660 --> 00:27:44,780 Stilistisk er det generelt mindre enn, og du vil se i et sekund når 594 00:27:44,780 --> 00:27:48,160 vi strenger, kan du bruke noe kalt strlen, som du har sett 595 00:27:48,160 --> 00:27:50,380 før, for å få lengden av strengen. 596 00:27:50,380 --> 00:27:54,090 Og du kan ikke gjøre mindre enn eller lik strlen. 597 00:27:54,090 --> 00:27:56,500 Du kan gjøre mindre enn eller tilsvare strlen minus én. 598 00:27:56,500 --> 00:27:59,260 Så det er bare bedre til gjør mindre enn strlen. 599 00:27:59,260 --> 00:28:00,240 Ja? 600 00:28:00,240 --> 00:28:03,270 >> STUDENT: Og i selve spørrekonkurranser, gjør vi må gi kommentarer til vår 601 00:28:03,270 --> 00:28:04,620 kode i tillegg? 602 00:28:04,620 --> 00:28:06,130 >> JASON Hirschhorn: Spørsmålet ble i spørrekonkurranser, gjør du 603 00:28:06,130 --> 00:28:07,760 nødt til å gi kommentarer? 604 00:28:07,760 --> 00:28:12,050 Så vi skal snakke mer om quizer når de kommer opp, men generelt, en god 605 00:28:12,050 --> 00:28:14,530 tommelfingerregel er når du er skrive kode, gi kommentarer. 606 00:28:14,530 --> 00:28:18,130 Hvis du får koden galt, men kommentere høyre, kan du få noen 607 00:28:18,130 --> 00:28:22,280 kreditt både fra meg hvis jeg var gradering du på et problem set eller på en quiz. 608 00:28:22,280 --> 00:28:24,660 Så kommentarer er alltid godt å gi. 609 00:28:24,660 --> 00:28:25,040 Søt. 610 00:28:25,040 --> 00:28:25,460 Telle. 611 00:28:25,460 --> 00:28:26,720 Utmerket jobb. 612 00:28:26,720 --> 00:28:28,570 La oss gå videre. 613 00:28:28,570 --> 00:28:29,920 >> Strings. 614 00:28:29,920 --> 00:28:30,630 Strings. 615 00:28:30,630 --> 00:28:31,730 Vi har sett dette før i forelesningen. 616 00:28:31,730 --> 00:28:33,390 Dette blåste meg når jeg først fant ut dette. 617 00:28:33,390 --> 00:28:37,240 Det sannsynligvis ikke blåse noens tankene her, men det er OK. 618 00:28:37,240 --> 00:28:41,260 >> Strings er matriser av tegn, og de ender med, som du sa tidligere, 619 00:28:41,260 --> 00:28:45,710 null terminator, som er dette / 0 karakter. 620 00:28:45,710 --> 00:28:47,740 Hvis vi skal trekke en streng på styret, vil vi trekke den over her. 621 00:28:47,740 --> 00:28:53,080 622 00:28:53,080 --> 00:28:56,420 Så hvor lenge er denne strengen? 623 00:28:56,420 --> 00:28:56,680 Unnskyld. 624 00:28:56,680 --> 00:28:57,660 Hvor lang er denne strengen? 625 00:28:57,660 --> 00:28:57,910 >> STUDENT: [uhørlig]. 626 00:28:57,910 --> 00:28:59,010 >> JASON Hirschhorn: Four? 627 00:28:59,010 --> 00:28:59,880 Hvorfor er det fire? 628 00:28:59,880 --> 00:29:02,240 >> STUDENT: Fordi den femte plass er for den null tegn. 629 00:29:02,240 --> 00:29:04,070 >> JASON Hirschhorn: Så den femte plass er for den null tegn. 630 00:29:04,070 --> 00:29:07,130 Så hvis jeg skulle kjøre strlen på dette, ville det gi meg fire. 631 00:29:07,130 --> 00:29:07,850 Korrigere. 632 00:29:07,850 --> 00:29:11,640 Og rekken, men hvis jeg skulle klargjøre denne matrisen, hvor mange plasser 633 00:29:11,640 --> 00:29:13,444 ville jeg be om? 634 00:29:13,444 --> 00:29:13,821 >> STUDENT: Five. 635 00:29:13,821 --> 00:29:14,200 >> JASON Hirschhorn: Five. 636 00:29:14,200 --> 00:29:17,650 Jeg måtte be om fem, men jeg kan bare sette fire tegn her 637 00:29:17,650 --> 00:29:19,750 fordi jeg trenger å sette det null terminator på enden. 638 00:29:19,750 --> 00:29:25,260 Så vi kommer til å skrive i "ohai" og sette null terminatoren i på slutten. 639 00:29:25,260 --> 00:29:31,820 640 00:29:31,820 --> 00:29:34,940 Vi vil si at dette er streng s tilsvarer dette. 641 00:29:34,940 --> 00:29:36,610 Hva er s brakett null? 642 00:29:36,610 --> 00:29:40,210 643 00:29:40,210 --> 00:29:41,550 s bracket null, Annie? 644 00:29:41,550 --> 00:29:41,950 >> STUDENT: O. 645 00:29:41,950 --> 00:29:45,400 >> JASON Hirschhorn: O, akkurat. s bracket en? 646 00:29:45,400 --> 00:29:48,200 s bracket fem? 647 00:29:48,200 --> 00:29:52,670 648 00:29:52,670 --> 00:29:53,955 s bracket fem? 649 00:29:53,955 --> 00:29:54,740 >> STUDENT: Finnes ikke. 650 00:29:54,740 --> 00:29:55,040 >> JASON Hirschhorn: Finnes ikke. 651 00:29:55,040 --> 00:29:57,050 Helt riktig. 652 00:29:57,050 --> 00:29:57,940 Cool. 653 00:29:57,940 --> 00:30:03,120 Eventuelle spørsmål om forståelse strenger som arrays av tegn? 654 00:30:03,120 --> 00:30:03,870 OK, da. 655 00:30:03,870 --> 00:30:05,440 One more program for dere. 656 00:30:05,440 --> 00:30:09,190 Skriv et program som ber brukeren for en streng skrives deretter ut hver 657 00:30:09,190 --> 00:30:11,880 tegnet på en ny linje. 658 00:30:11,880 --> 00:30:14,160 Så la oss ta tre minutter å skrive dette programmet, og så får vi kode det 659 00:30:14,160 --> 00:30:15,410 som en gruppe. 660 00:30:15,410 --> 00:31:04,730 661 00:31:04,730 --> 00:31:04,830 >> Unnskyld. 662 00:31:04,830 --> 00:31:06,470 Visste du trenger å se dette? 663 00:31:06,470 --> 00:31:07,410 >> STUDENT: Nei. 664 00:31:07,410 --> 00:31:08,660 >> JASON Hirschhorn: OK. 665 00:31:08,660 --> 00:31:36,390 666 00:31:36,390 --> 00:31:40,605 La oss ta ett minutt å kode dette, eller i det minste komme i gang med det. 667 00:31:40,605 --> 00:32:13,900 668 00:32:13,900 --> 00:32:17,020 >> Slik at du kan fortsette å jobbe, men jeg skal for å begynne å gå gjennom den. 669 00:32:17,020 --> 00:32:22,560 Så som før, jeg har på skjermen # Include cs50.h, # include stdio.h. 670 00:32:22,560 --> 00:32:24,020 int main ugyldig. 671 00:32:24,020 --> 00:32:28,880 Inne viktigste er klammeparentes, har jeg to kommentarer, pseudokode. 672 00:32:28,880 --> 00:32:30,980 Ett er å be om en streng fra brukeren. 673 00:32:30,980 --> 00:32:33,900 Den andre er å skrive ut hver tegnet på en ny linje. 674 00:32:33,900 --> 00:32:39,780 Så Anna, kan du gi meg spørre for en streng fra brukeren? 675 00:32:39,780 --> 00:32:41,970 >> STUDENT: Printf. 676 00:32:41,970 --> 00:32:42,720 >> JASON Hirschhorn: Printf? 677 00:32:42,720 --> 00:32:45,050 >> STUDENT: Ja. 678 00:32:45,050 --> 00:32:46,165 ( 679 00:32:46,165 --> 00:32:47,610 >> JASON Hirschhorn: ( 680 00:32:47,610 --> 00:32:49,300 >> STUDENT: "gi meg en streng. 681 00:32:49,300 --> 00:32:52,380 >> JASON Hirschhorn: "gi meg en str - oops - 682 00:32:52,380 --> 00:32:53,710 string. 683 00:32:53,710 --> 00:32:59,980 >> STUDENT: / n ") semikolon. 684 00:32:59,980 --> 00:33:02,300 >> JASON Hirschhorn: Avslutte strengen, lukkede parenteser, semikolon. 685 00:33:02,300 --> 00:33:03,550 >> STUDENT: Ja. 686 00:33:03,550 --> 00:33:09,080 Og så neste linje, string s = få streng. 687 00:33:09,080 --> 00:33:11,240 >> JASON Hirschhorn: String s = få streng. 688 00:33:11,240 --> 00:33:11,665 >> STUDENT: Ja. 689 00:33:11,665 --> 00:33:13,080 Og da () 690 00:33:13,080 --> 00:33:14,365 >> JASON Hirschhorn: () 691 00:33:14,365 --> 00:33:14,720 >> STUDENT: Semicolon. 692 00:33:14,720 --> 00:33:15,540 >> JASON Hirschhorn: Semicolon. 693 00:33:15,540 --> 00:33:16,890 Fantastisk. 694 00:33:16,890 --> 00:33:19,000 Så jeg kommer til å få en streng og Jeg kommer til å lagre det i det? 695 00:33:19,000 --> 00:33:21,830 Hva er variabel kalt som du opprettet? 696 00:33:21,830 --> 00:33:23,290 >> STUDENT: String s. 697 00:33:23,290 --> 00:33:24,580 >> JASON Hirschhorn: Den variable kalles s. 698 00:33:24,580 --> 00:33:25,700 Det er typen streng. 699 00:33:25,700 --> 00:33:27,200 Nettopp. 700 00:33:27,200 --> 00:33:30,080 Neste ting vi ønsker å er skrive ut hvert tegn på en ny linje. 701 00:33:30,080 --> 00:33:31,710 Som kan gi meg den koden? 702 00:33:31,710 --> 00:33:32,110 [Uhørlig]? 703 00:33:32,110 --> 00:33:33,000 Kan du gi den til meg? 704 00:33:33,000 --> 00:33:33,580 >> STUDENT: Sure. 705 00:33:33,580 --> 00:33:35,420 >> JASON Hirschhorn: La oss gjøre det. 706 00:33:35,420 --> 00:33:36,080 Og beklager. 707 00:33:36,080 --> 00:33:38,896 Jeg liker ikke å gjenta det du sier fordi du får det riktig, men jeg 708 00:33:38,896 --> 00:33:42,100 må gjenta det slik at når de transkribere dette, kan de få alle 709 00:33:42,100 --> 00:33:44,870 teksten ut på transkripsjoner. 710 00:33:44,870 --> 00:33:47,180 Så du kan bare fortsette å snakke. 711 00:33:47,180 --> 00:33:48,590 Dessverre har jeg å si det over deg. 712 00:33:48,590 --> 00:33:49,510 Jeg beklager, men - 713 00:33:49,510 --> 00:33:50,610 >> STUDENT: Det er greit. 714 00:33:50,610 --> 00:33:53,010 For int i = 0 715 00:33:53,010 --> 00:33:54,170 >> JASON Hirschhorn: For int i = 0 716 00:33:54,170 --> 00:33:56,740 >> STUDENT: jeg mindre enn - 717 00:33:56,740 --> 00:33:58,206 >> JASON Hirschhorn: Semicolon. 718 00:33:58,206 --> 00:34:00,650 >> STUDENT: Før dette, kan vi sette en variable slik at du får int navn lengde? 719 00:34:00,650 --> 00:34:01,870 >> JASON Hirschhorn: Å, gjør du ikke ønsker å sette semikolon? 720 00:34:01,870 --> 00:34:02,310 OK. 721 00:34:02,310 --> 00:34:05,120 Så hva ønsker du å gjøre etter null? 722 00:34:05,120 --> 00:34:09,340 >> STUDENT: Jeg ønsker å få hyssinglengde på s og 723 00:34:09,340 --> 00:34:10,410 satt som en variabel? 724 00:34:10,410 --> 00:34:11,760 >> JASON Hirschhorn: OK, så hvordan gjør jeg det? 725 00:34:11,760 --> 00:34:17,636 >> STUDENT: Så du gjør int lengde = 726 00:34:17,636 --> 00:34:20,010 >> JASON Hirschhorn: Int lengde = 727 00:34:20,010 --> 00:34:22,230 >> Student: S-T-R-L-E-N. 728 00:34:22,230 --> 00:34:24,260 >> Jason Hirschhorn: S-T-R-L-E-N - 729 00:34:24,260 --> 00:34:25,380 >> STUDENT: Av s. 730 00:34:25,380 --> 00:34:25,790 Parentes. 731 00:34:25,790 --> 00:34:27,920 >> JASON Hirschhorn: (s). 732 00:34:27,920 --> 00:34:33,040 >> STUDENT: Og så jeg tror du må sette et semikolon mellom de to ints. 733 00:34:33,040 --> 00:34:34,590 >> JASON Hirschhorn: En semikolon etter null? 734 00:34:34,590 --> 00:34:35,260 >> STUDENT: Yeah. 735 00:34:35,260 --> 00:34:40,670 Deretter sette et semikolon etter det, og du sier, jeg mindre enn lengden. 736 00:34:40,670 --> 00:34:43,250 jeg mindre enn lengde, som er den variable. 737 00:34:43,250 --> 00:34:44,590 >> STUDENT: Og så semikolon. 738 00:34:44,590 --> 00:34:45,790 >> JASON Hirschhorn: Semicolon. 739 00:34:45,790 --> 00:34:46,290 >> STUDENT: i + +. 740 00:34:46,290 --> 00:34:46,909 >> JASON Hirschhorn: i + +. 741 00:34:46,909 --> 00:34:47,530 Det er vår for loop. 742 00:34:47,530 --> 00:34:48,860 OK, inne i for loop. 743 00:34:48,860 --> 00:34:51,670 >> STUDENT: Og så gjør printf. 744 00:34:51,670 --> 00:34:53,340 >> JASON Hirschhorn: Printf. 745 00:34:53,340 --> 00:34:53,889 >> STUDENT: Braketter. 746 00:34:53,889 --> 00:34:55,130 >> JASON Hirschhorn: parenteser anførselstegn. 747 00:34:55,130 --> 00:34:59,930 >> STUDENT: Parenteser, sitater,% c / n. 748 00:34:59,930 --> 00:35:00,760 >> JASON Hirschhorn:% c, OK. 749 00:35:00,760 --> 00:35:01,670 >> STUDENT: / n. 750 00:35:01,670 --> 00:35:03,470 >> JASON Hirschhorn: / n. 751 00:35:03,470 --> 00:35:04,410 >> STUDENT: Lukkede anførselstegn. 752 00:35:04,410 --> 00:35:05,270 >> JASON Hirschhorn: Lukkede anførselstegn. 753 00:35:05,270 --> 00:35:05,810 >> STUDENT: Komma. 754 00:35:05,810 --> 00:35:06,860 >> JASON Hirschhorn: Komma. 755 00:35:06,860 --> 00:35:07,800 >> STUDENT: S. 756 00:35:07,800 --> 00:35:08,070 >> JASON Hirschhorn: S. 757 00:35:08,070 --> 00:35:08,690 >> STUDENT: Bracket jeg. 758 00:35:08,690 --> 00:35:10,230 >> JASON Hirschhorn: Bracket jeg. 759 00:35:10,230 --> 00:35:11,520 >> STUDENT: og deretter lukket parentes. 760 00:35:11,520 --> 00:35:12,540 >> JASON Hirschhorn: Lukkede parentes. 761 00:35:12,540 --> 00:35:13,660 >> STUDENT: Og så semikolon. 762 00:35:13,660 --> 00:35:13,770 >> JASON Hirschhorn: Semicolon. 763 00:35:13,770 --> 00:35:14,380 Fantastisk. 764 00:35:14,380 --> 00:35:16,890 Så la oss ta vare på denne. 765 00:35:16,890 --> 00:35:19,770 Gjør stave. 766 00:35:19,770 --> 00:35:20,040 Oh boy. 767 00:35:20,040 --> 00:35:22,275 Jeg har et par feil. 768 00:35:22,275 --> 00:35:33,120 Første feilen på linje 11, står det, forventet uttrykk, og det er å gi 769 00:35:33,120 --> 00:35:36,910 meg en feil at den andre int, det er feilen. 770 00:35:36,910 --> 00:35:38,430 Det er noen feil rundt der. 771 00:35:38,430 --> 00:35:41,060 Vet noen hva feilen det er? 772 00:35:41,060 --> 00:35:41,640 Kurt? 773 00:35:41,640 --> 00:35:44,108 >> STUDENT: Jeg tror det er ment å være et komma og ikke et semikolon. 774 00:35:44,108 --> 00:35:46,010 >> JASON Hirschhorn: OK, komma i stedet for et semikolon. 775 00:35:46,010 --> 00:35:47,340 Så er det alt vi trenger for å fikse? 776 00:35:47,340 --> 00:35:47,655 >> STUDENT: Nei. 777 00:35:47,655 --> 00:35:48,930 >> JASON Hirschhorn: Hva annet trenger vi å fikse? 778 00:35:48,930 --> 00:35:50,920 >> STUDENT: Vi må inkludere string.h. 779 00:35:50,920 --> 00:35:51,680 >> JASON Hirschhorn: Inkluder string.h. 780 00:35:51,680 --> 00:35:53,730 Hvor må jeg inkludere det? 781 00:35:53,730 --> 00:35:57,085 >> STUDENT: Samme sted du inkludert andre ting, ikke sant 782 00:35:57,085 --> 00:35:59,560 etter inkludere stdio.h. 783 00:35:59,560 --> 00:36:01,610 >> JASON Hirschhorn: La oss se om dette går først fordi generelt, jeg liker 784 00:36:01,610 --> 00:36:06,360 å fikse en ting først, og deretter kjøre det, og deretter se feilene vi får. 785 00:36:06,360 --> 00:36:11,620 Så vi kommer til å tømme terminalen med kontroll n, la oss gjør spell. 786 00:36:11,620 --> 00:36:15,190 787 00:36:15,190 --> 00:36:18,770 Så en annen feil på linje 11. 788 00:36:18,770 --> 00:36:20,540 Forventet semikolon. 789 00:36:20,540 --> 00:36:22,640 Og jeg fortsatt får feil på denne linjen. 790 00:36:22,640 --> 00:36:25,270 Så det har ikke gitt meg en feilmelding som sier det forstår ikke hva strlen er, 791 00:36:25,270 --> 00:36:28,980 men det gir meg feil på denne linje, så hva annet som er galt? 792 00:36:28,980 --> 00:36:29,690 Mark? 793 00:36:29,690 --> 00:36:30,940 Marcus. 794 00:36:30,940 --> 00:36:32,570 >> STUDENT: Har du å fjerne den andre int erklæringen? 795 00:36:32,570 --> 00:36:34,990 >> JASON Hirschhorn: Fjern den andre int. 796 00:36:34,990 --> 00:36:35,710 La oss prøve dette. 797 00:36:35,710 --> 00:36:37,600 Nå tømme terminalen. 798 00:36:37,600 --> 00:36:40,130 Gjør stave. 799 00:36:40,130 --> 00:36:40,490 Feil. 800 00:36:40,490 --> 00:36:42,890 Implisitt erklære bibliotek funksjon strlen. 801 00:36:42,890 --> 00:36:44,270 Så nå vi ser at feilen. 802 00:36:44,270 --> 00:36:45,760 Hva trenger vi å inkludere? 803 00:36:45,760 --> 00:36:46,660 >> STUDENT: String.h. 804 00:36:46,660 --> 00:36:51,880 >> JASON Hirschhorn: Inkluder string.h, Vi vil gjøre # include string.h på toppen 805 00:36:51,880 --> 00:36:52,920 av skjermen. 806 00:36:52,920 --> 00:36:55,450 La oss redde, må stave. 807 00:36:55,450 --> 00:36:56,970 Nå kompilert. 808 00:36:56,970 --> 00:37:01,970 Så igjen, de tingene vi trengte å husk linje 12 i vår for loop når 809 00:37:01,970 --> 00:37:08,010 vi sette den opp, int i = 0, lengde = strlen (e). 810 00:37:08,010 --> 00:37:09,350 >> Dette er en fantastisk strategi. 811 00:37:09,350 --> 00:37:12,590 Stilen på dette er stor, utformingen av dette er stor. 812 00:37:12,590 --> 00:37:15,620 Vi kan gå inn i disse grunner senere, men denne måten trenger du bare å ringe 813 00:37:15,620 --> 00:37:19,040 strlen gang i stedet for hver enkelt gang du kjører gjennom løkken. 814 00:37:19,040 --> 00:37:22,255 Men må du bruke et komma der og du trenger ikke int igjen. 815 00:37:22,255 --> 00:37:24,180 Hvis du erklære både de variablene sammen, du 816 00:37:24,180 --> 00:37:26,850 trenger ikke int igjen. 817 00:37:26,850 --> 00:37:29,820 Og så hvis du skal bruke strlen, som er et annet bibliotek 818 00:37:29,820 --> 00:37:33,560 fungerer ikke med i stdio.h eller cs50.h, gjør 819 00:37:33,560 --> 00:37:35,310 at du inkluderer string.h. 820 00:37:35,310 --> 00:37:35,900 Kurt? 821 00:37:35,900 --> 00:37:39,085 >> STUDENT: Så hvis du ikke trenger å si hva slags lengde er, gjør at 822 00:37:39,085 --> 00:37:40,290 mener det må være en int? 823 00:37:40,290 --> 00:37:41,930 Du kan ikke ha to forskjellige typer der ute? 824 00:37:41,930 --> 00:37:43,290 >> JASON Hirschhorn: Så du kunne ha to forskjellige typer. 825 00:37:43,290 --> 00:37:45,730 Lengde er en int her, though. 826 00:37:45,730 --> 00:37:48,590 Lengde er en int fordi det er komma og deretter det samme. 827 00:37:48,590 --> 00:37:50,460 >> STUDENT: Så det forutsetter at det kommer å være den samme som den første? 828 00:37:50,460 --> 00:37:52,423 >> JASON Hirschhorn: Nettopp. 829 00:37:52,423 --> 00:37:54,970 Vi kommer ikke til å gjøre dette nå, men du kan omfatte to variabler på 830 00:37:54,970 --> 00:37:57,080 samme linje ved hjelp av en datatype. 831 00:37:57,080 --> 00:38:01,415 Så int x, ville y skape to variabler. 832 00:38:01,415 --> 00:38:05,830 833 00:38:05,830 --> 00:38:10,770 Så int x, y, hvis vi gjør at, det gir meg en ubrukt variabel x og y fordi 834 00:38:10,770 --> 00:38:12,020 vi ikke bruke dem. 835 00:38:12,020 --> 00:38:17,950 836 00:38:17,950 --> 00:38:21,650 Så setter tomrom før er bare en fancy triks hvis du ikke bruker 837 00:38:21,650 --> 00:38:22,810 noe, for å bruke det. 838 00:38:22,810 --> 00:38:26,300 Men som du ser, jeg skaper x og y på samme linje med komma. 839 00:38:26,300 --> 00:38:28,450 Det er å skape to heltall akkurat der. 840 00:38:28,450 --> 00:38:31,560 Så ja, fullt mulig å lage to ting på samme linje 841 00:38:31,560 --> 00:38:33,720 atskilt med komma. 842 00:38:33,720 --> 00:38:35,470 La oss bli kvitt de, skjønt. 843 00:38:35,470 --> 00:38:36,370 >> Så det er spell. 844 00:38:36,370 --> 00:38:39,200 Takk til dere for koding det for oss. 845 00:38:39,200 --> 00:38:43,040 La oss gjøre det en gang til, kjøre den. 846 00:38:43,040 --> 00:38:44,580 Gi meg en streng. 847 00:38:44,580 --> 00:38:45,580 [Uhørlig], gjorde du det meste. 848 00:38:45,580 --> 00:38:47,910 Hva er streng? 849 00:38:47,910 --> 00:38:48,250 >> STUDENT: Hei. 850 00:38:48,250 --> 00:38:50,110 >> JASON Hirschhorn: Hei. 851 00:38:50,110 --> 00:38:52,810 H-E-L-L-O, hvert tegn på en linje. 852 00:38:52,810 --> 00:38:53,700 Ser flott ut. 853 00:38:53,700 --> 00:38:54,750 La oss kjøre det igjen. 854 00:38:54,750 --> 00:38:56,050 Alltid kommer til å sjekke for hjørne tilfeller. 855 00:38:56,050 --> 00:38:57,750 Hva er en god hjørne sak å sjekke? 856 00:38:57,750 --> 00:39:00,250 857 00:39:00,250 --> 00:39:00,890 >> STUDENT: En rekke? 858 00:39:00,890 --> 00:39:02,240 >> JASON Hirschhorn: Et tall. 859 00:39:02,240 --> 00:39:06,580 Så jeg skal sette i en, og den skriver ut en. 860 00:39:06,580 --> 00:39:08,970 Det er ikke ber om bokstaver, så det virker som tall arbeid. 861 00:39:08,970 --> 00:39:09,890 God hjørne sak å sjekke. 862 00:39:09,890 --> 00:39:11,740 Hva er en annen god hjørne Ved å sjekke? 863 00:39:11,740 --> 00:39:12,420 >> STUDENT: En tom streng. 864 00:39:12,420 --> 00:39:12,910 >> JASON Hirschhorn: Hm? 865 00:39:12,910 --> 00:39:13,880 >> STUDENT: Som en tom streng. 866 00:39:13,880 --> 00:39:14,400 >> JASON Hirschhorn: Tom streng. 867 00:39:14,400 --> 00:39:16,730 Så la oss ikke sette i noe. 868 00:39:16,730 --> 00:39:18,660 Og hva som blir skrevet ut? 869 00:39:18,660 --> 00:39:19,090 >> STUDENT: Ingenting. 870 00:39:19,090 --> 00:39:19,870 >> JASON Hirschhorn: Ingenting. 871 00:39:19,870 --> 00:39:20,555 Virker som det fungerer. 872 00:39:20,555 --> 00:39:23,790 Du kan prøve flere hjørne tilfeller, men generelt tall, er en annen data 873 00:39:23,790 --> 00:39:26,160 stor til å prøve, samt er ingenting. 874 00:39:26,160 --> 00:39:29,180 Ingenting, null, negativer er alltid store ting å prøve og ting du 875 00:39:29,180 --> 00:39:33,140 bør test, ting sikkert vi skal teste for og sjekke 50 vil teste for. 876 00:39:33,140 --> 00:39:34,720 Eventuelle spørsmål om spell.c? 877 00:39:34,720 --> 00:39:37,752 878 00:39:37,752 --> 00:39:39,310 >> OK, la oss dra tilbake. 879 00:39:39,310 --> 00:39:42,420 Jeg har en mer program for dere å skrive. 880 00:39:42,420 --> 00:39:44,700 Det kalles students.c. 881 00:39:44,700 --> 00:39:49,020 Dette er et program som ber brukeren om fem navn, deretter velger tilfeldig 882 00:39:49,020 --> 00:39:51,600 og skriver ut ett av navnene. 883 00:39:51,600 --> 00:39:54,840 Dette programmet er litt mer involvert enn de to siste vi skrev, 884 00:39:54,840 --> 00:39:58,080 så hvorfor ikke vi ta fem minutter å kode det individuelt, og så får vi 885 00:39:58,080 --> 00:40:00,130 kode det som en gruppe. 886 00:40:00,130 --> 00:40:03,795 >> Dette programmet også innebære noen ting du kanskje ikke har sett før, så hvis 887 00:40:03,795 --> 00:40:06,390 du har et spørsmål om, hvordan Jeg gjør det, rekk opp hånden. 888 00:40:06,390 --> 00:40:08,530 Jeg skal komme over og peke deg i riktig retning. 889 00:40:08,530 --> 00:40:10,820 Men vi gjør det også fordi dette vil være en god måte å introdusere noen 890 00:40:10,820 --> 00:40:12,070 emner som er vanskelig. 891 00:40:12,070 --> 00:44:14,600 892 00:44:14,600 --> 00:44:15,560 >> Så det fungerer, ikke sant? 893 00:44:15,560 --> 00:44:17,580 >> STUDENT: Yeah. 894 00:44:17,580 --> 00:44:19,180 >> JASON Hirschhorn: Når du slår på en problem sett, det er mange måter å gjøre 895 00:44:19,180 --> 00:44:20,790 den, men noen er mer elegant enn andre. 896 00:44:20,790 --> 00:44:29,000 897 00:44:29,000 --> 00:44:31,110 La oss dykke i. 898 00:44:31,110 --> 00:44:32,880 # Include cs50.h. 899 00:44:32,880 --> 00:44:34,250 # Include stdio.h. 900 00:44:34,250 --> 00:44:37,240 int main ugyldig, klammeparentes. 901 00:44:37,240 --> 00:44:39,430 Inne i klammeparentes, Jeg har to kommentarer. 902 00:44:39,430 --> 00:44:41,500 Den første er å spørre, det bruker for fem navn. 903 00:44:41,500 --> 00:44:46,580 Den andre er, tilfeldig velge og skrive ut ett av navnene. 904 00:44:46,580 --> 00:44:50,250 Så la oss gjøre den første, spør brukeren for fem navn. 905 00:44:50,250 --> 00:44:53,730 Hvem har bedt brukeren for fem navn og kan fortelle meg hvordan du gjør det? 906 00:44:53,730 --> 00:44:56,760 907 00:44:56,760 --> 00:44:58,570 Bare to mennesker gjorde den første delen. 908 00:44:58,570 --> 00:45:00,150 Tre personer gjorde den første delen. 909 00:45:00,150 --> 00:45:00,670 Fire, fem. 910 00:45:00,670 --> 00:45:03,140 Tom, hvordan gjør du det? 911 00:45:03,140 --> 00:45:09,940 >> STUDENT: Du ville erklære en streng og deretter navn, brakett fem. 912 00:45:09,940 --> 00:45:12,070 >> JASON Hirschhorn: String nevne brakett fem. 913 00:45:12,070 --> 00:45:15,350 Så hva er denne linjen gjør, string navn brakett fem? 914 00:45:15,350 --> 00:45:17,800 >> STUDENT: Du ville erklære en rekke strenger. 915 00:45:17,800 --> 00:45:19,000 >> JASON Hirschhorn: Dette er en rekke strenger. 916 00:45:19,000 --> 00:45:21,590 Hvor mange strenger kommer å passe inn her? 917 00:45:21,590 --> 00:45:22,010 >> STUDENT: Five. 918 00:45:22,010 --> 00:45:22,320 >> JASON Hirschhorn: Five. 919 00:45:22,320 --> 00:45:22,660 Utmerket. 920 00:45:22,660 --> 00:45:26,360 Vi kommer til å kalle det navn fordi vi kommer til å få flere seg. 921 00:45:26,360 --> 00:45:27,790 OK, neste? 922 00:45:27,790 --> 00:45:29,270 >> STUDENT: Og så har en for loop - 923 00:45:29,270 --> 00:45:30,060 >> JASON Hirschhorn: For loop. 924 00:45:30,060 --> 00:45:33,035 >> STUDENT: - for i = 0. 925 00:45:33,035 --> 00:45:37,040 >> JASON Hirschhorn: For (int i = 0. 926 00:45:37,040 --> 00:45:38,270 >> STUDENT: Semicolon. 927 00:45:38,270 --> 00:45:38,880 >> JASON Hirschhorn: Semicolon. 928 00:45:38,880 --> 00:45:39,790 >> STUDENT: jeg mindre enn fem. 929 00:45:39,790 --> 00:45:41,310 >> JASON Hirschhorn: jeg mindre enn fem. 930 00:45:41,310 --> 00:45:42,230 >> STUDENT: Semicolon. 931 00:45:42,230 --> 00:45:42,560 >> JASON Hirschhorn: Semicolon. 932 00:45:42,560 --> 00:45:43,380 >> STUDENT: i + +. 933 00:45:43,380 --> 00:45:46,050 >> JASON Hirschhorn: i + +. 934 00:45:46,050 --> 00:45:47,100 >> STUDENT: og deretter lukket parentes. 935 00:45:47,100 --> 00:45:48,600 >> JASON Hirschhorn: Stengt parentes, og deretter noen klammeparentes. 936 00:45:48,600 --> 00:45:50,050 Inne i klammeparentes? 937 00:45:50,050 --> 00:45:51,423 >> STUDENT: Og så printf. 938 00:45:51,423 --> 00:45:52,535 >> JASON Hirschhorn: Printf. 939 00:45:52,535 --> 00:45:56,200 >> STUDENT: Åpne parenteser, navn% d. 940 00:45:56,200 --> 00:45:57,090 >> JASON Hirschhorn: Beklager? 941 00:45:57,090 --> 00:45:57,660 >> STUDENT: Navn. 942 00:45:57,660 --> 00:45:58,200 >> JASON Hirschhorn: Navn. 943 00:45:58,200 --> 00:46:01,700 >> STUDENT: Og så plass, og deretter% d. 944 00:46:01,700 --> 00:46:02,950 >> JASON Hirschhorn: Navn, mellomrom,% d. 945 00:46:02,950 --> 00:46:05,630 946 00:46:05,630 --> 00:46:10,820 >> STUDENT: Og så / n, og deretter lukket. 947 00:46:10,820 --> 00:46:15,070 >> JASON Hirschhorn: So navn, plass, % D / n, lukkede parentes. 948 00:46:15,070 --> 00:46:17,730 >> STUDENT: Komma, i + en. 949 00:46:17,730 --> 00:46:19,390 Jeg beklager. 950 00:46:19,390 --> 00:46:21,040 Stengt sitat, og deretter komma, i +1. 951 00:46:21,040 --> 00:46:24,400 >> JASON Hirschhorn: Stengt sitat, komma, en jeg. 952 00:46:24,400 --> 00:46:25,850 >> STUDENT: Ja. 953 00:46:25,850 --> 00:46:27,650 Og så neste linje - 954 00:46:27,650 --> 00:46:29,400 >> JASON Hirschhorn: i + en. 955 00:46:29,400 --> 00:46:31,600 >> STUDENT: Ja. 956 00:46:31,600 --> 00:46:36,440 Og så den neste lysbilde er navnene brakett jeg. 957 00:46:36,440 --> 00:46:39,000 >> JASON Hirschhorn: Neste tråd er navnene brakett jeg. 958 00:46:39,000 --> 00:46:41,360 >> STUDENT: = få streng. 959 00:46:41,360 --> 00:46:43,460 >> JASON Hirschhorn: = Get - 960 00:46:43,460 --> 00:46:44,510 stor G-E-T - 961 00:46:44,510 --> 00:46:45,530 string. 962 00:46:45,530 --> 00:46:47,800 Oops, beklager. 963 00:46:47,800 --> 00:46:49,050 >> STUDENT: åpen, lukket parentes og deretter - 964 00:46:49,050 --> 00:46:50,940 >> JASON Hirschhorn: Åpen, lukket paren. 965 00:46:50,940 --> 00:46:51,030 >> STUDENT: Semicolon. 966 00:46:51,030 --> 00:46:52,500 >> JASON Hirschhorn: Semicolon. 967 00:46:52,500 --> 00:46:57,545 OK, så du initialisere rekke strenger, navn, og deretter gå gjennom en 968 00:46:57,545 --> 00:47:02,720 for loop, og fem ganger skrive ut noen spørsmål til brukeren og deretter lagre 969 00:47:02,720 --> 00:47:03,360 fem strenger. 970 00:47:03,360 --> 00:47:08,090 Er det noen som justeringer av dette? 971 00:47:08,090 --> 00:47:10,030 Tom, jeg tror alle enig med deg. 972 00:47:10,030 --> 00:47:10,880 Ser ganske bra. 973 00:47:10,880 --> 00:47:11,660 OK. 974 00:47:11,660 --> 00:47:14,830 Hvorfor gjorde du i ett, skjønt? 975 00:47:14,830 --> 00:47:18,000 >> STUDENT: Jeg mener, har ikke å være, men jeg ett, slik at det er 976 00:47:18,000 --> 00:47:19,700 Navnet ett for å nevne fem. 977 00:47:19,700 --> 00:47:21,930 Ellers ville det være navn null for å nevne fire. 978 00:47:21,930 --> 00:47:24,400 >> JASON Hirschhorn: Så du har jeg en fordi ellers ville det ha 979 00:47:24,400 --> 00:47:27,060 skrives ut fra null til fire fordi det er hvordan datamaskiner tenke, men mennesker 980 00:47:27,060 --> 00:47:28,530 egentlig ikke lese sånt. 981 00:47:28,530 --> 00:47:30,190 Det er en annen ting du vil støte på. 982 00:47:30,190 --> 00:47:33,210 Noen ganger når du skriver ut noe til brukeren, vil du ønsker å gjøre det til en 983 00:47:33,210 --> 00:47:35,733 litt penere, og gjør jeg en i dette tilfellet er en 984 00:47:35,733 --> 00:47:37,430 måte å gjøre det penere. 985 00:47:37,430 --> 00:47:41,380 >> Jeg ser også fem ganger, string navn er fem, er jeg mindre enn fem. 986 00:47:41,380 --> 00:47:42,430 Jeg vet hvor du fikk fem. 987 00:47:42,430 --> 00:47:44,890 Du fikk det fra meg fortelle du fem navn. 988 00:47:44,890 --> 00:47:49,000 Men hvis vi ønsket å gjøre koden en litt mer robust, en ting vi 989 00:47:49,000 --> 00:47:53,110 kunne gjøre er her ute, utenfor int, vi kunne gjøre noe som dette, 990 00:47:53,110 --> 00:47:57,070 # Define, og vi kunne gjøre NAVN fem. 991 00:47:57,070 --> 00:48:01,580 992 00:48:01,580 --> 00:48:05,390 >> Så i utgangspunktet, uansett hvor jeg skriver kapital N, hovedstaden A, hovedstaden M, stor E, 993 00:48:05,390 --> 00:48:08,890 stor S, at strengen, vil det erstatte at med fem i koden. 994 00:48:08,890 --> 00:48:11,530 995 00:48:11,530 --> 00:48:13,445 Eller la oss bare kalle det - vi vil bare kalle det NUMMER. 996 00:48:13,445 --> 00:48:17,190 Så jeg definere alle caps NUMBER å være 5. 997 00:48:17,190 --> 00:48:22,830 >> Så nå hvor jeg har nummer 5, jeg kan erstatte det med all caps NUMMER. 998 00:48:22,830 --> 00:48:26,880 Og nå, hvis jeg ønsker å endre antall av navn, er alt jeg trenger å gjøre 999 00:48:26,880 --> 00:48:31,350 dette en linje, linje fire, hvor jeg har # Define nummer fem, endre det til 10, 1000 00:48:31,350 --> 00:48:34,340 eller endre det til fire. 1001 00:48:34,340 --> 00:48:37,400 Når koden blir lengre, er du ikke kommer til å huske alle stedene du 1002 00:48:37,400 --> 00:48:41,630 sette hvor mange navn du ønsket, og i For at du ikke skal gå glipp av en, er dette 1003 00:48:41,630 --> 00:48:45,490 en god måte å gjøre det, for å finne noe opp toppen og så bare bruke det uttrykket 1004 00:48:45,490 --> 00:48:46,400 overalt i hele koden din. 1005 00:48:46,400 --> 00:48:46,780 Marcus? 1006 00:48:46,780 --> 00:48:49,780 >> STUDENT: Er det stilistisk foretrukne enn globalt definere en 1007 00:48:49,780 --> 00:48:51,270 konstant n? 1008 00:48:51,270 --> 00:48:53,760 >> JASON Hirschhorn: Så er det stilistisk foretrukket enn globalt 1009 00:48:53,760 --> 00:48:54,980 definere en konstant n? 1010 00:48:54,980 --> 00:48:59,036 Så du sier du kunne gjøre, int antall = 5? 1011 00:48:59,036 --> 00:49:01,300 >> STUDENT: Har de konsonanter i C eller nei? 1012 00:49:01,300 --> 00:49:02,720 >> JASON Hirschhorn: Eller const - i lik. 1013 00:49:02,720 --> 00:49:04,275 Så du sier bare en global variabel? 1014 00:49:04,275 --> 00:49:04,990 >> STUDENT: Yeah. 1015 00:49:04,990 --> 00:49:08,670 >> JASON Hirschhorn: Så stilistisk, det er ingen nødvendigvis en rett 1016 00:49:08,670 --> 00:49:12,050 svare, men begge disse er bedre enn bare å kaste disse tilfeldige 1017 00:49:12,050 --> 00:49:12,960 tallene i hele koden din. 1018 00:49:12,960 --> 00:49:14,650 Vi kaller dem magiske tall. 1019 00:49:14,650 --> 00:49:16,450 Når jeg ser på koden din, eller når noen står å lese gjennom den, de 1020 00:49:16,450 --> 00:49:18,790 ønsker ikke bare disse tilfeldige tall som ikke gir mening. 1021 00:49:18,790 --> 00:49:22,420 Selv antall 26, som generelt er antall bokstaver i alfabetet, 1022 00:49:22,420 --> 00:49:28,870 det er bedre å definere ALFABET opp toppen og lagre nummer 26 i denne strengen, 1023 00:49:28,870 --> 00:49:29,550 hvis det er fornuftig. 1024 00:49:29,550 --> 00:49:33,210 >> Eller på problemet satt en, i stedet for - igjen, snakket vi ikke om dette på 1025 00:49:33,210 --> 00:49:37,020 tiden, men i stedet for bare å kaste i en 25 overalt eller 10, kan du 1026 00:49:37,020 --> 00:49:41,860 lagre nummeret 25 som KVARTAL eller 10 som DIME, og som gjør det enklere for 1027 00:49:41,860 --> 00:49:44,140 den som står å lese gjennom koden til forstå hvorfor du valgte dette nummeret. 1028 00:49:44,140 --> 00:49:46,540 Og også for deg, hvis du noen gang ønsker å oppdatere koden, det gjør det litt 1029 00:49:46,540 --> 00:49:47,290 mer robust. 1030 00:49:47,290 --> 00:49:48,070 Yeah? 1031 00:49:48,070 --> 00:49:50,830 >> STUDENT: Er denne koden også kommer skal være tilgjengelig for oss etter? 1032 00:49:50,830 --> 00:49:52,453 >> JASON Hirschhorn: Alle disse kodene at vi har skrevet sammen er 1033 00:49:52,453 --> 00:49:54,620 kommer til å bli sendt til deg gutter og tilgjengelig. 1034 00:49:54,620 --> 00:49:55,740 Ja. 1035 00:49:55,740 --> 00:49:58,040 Så spør brukeren om fem navn. 1036 00:49:58,040 --> 00:50:00,280 Tilfeldig velge og skrive ut ett av navnene. 1037 00:50:00,280 --> 00:50:00,940 Hvem gjorde denne linjen? 1038 00:50:00,940 --> 00:50:02,230 Dette er den vanskeligste linjen her. 1039 00:50:02,230 --> 00:50:02,450 Beklager, Tom. 1040 00:50:02,450 --> 00:50:05,510 Du gjorde en veldig god jobb, men Dette er litt mer komplisert. 1041 00:50:05,510 --> 00:50:06,600 Marcus, gå videre. 1042 00:50:06,600 --> 00:50:10,180 >> STUDENT: Vel først, du kommer til må inkludere stdlib.h og time.h. 1043 00:50:10,180 --> 00:50:13,200 >> JASON Hirschhorn: Så du sier at toppen, omfatte to ytterligere biblioteker. 1044 00:50:13,200 --> 00:50:18,830 Du vil ha meg til å omfatte S-T-D-L-I-B dot H, Standard Library, og hva 1045 00:50:18,830 --> 00:50:19,760 den andre var? 1046 00:50:19,760 --> 00:50:21,010 >> STUDENT: Time.h. 1047 00:50:21,010 --> 00:50:25,130 1048 00:50:25,130 --> 00:50:27,840 >> JASON Hirschhorn: # include time.h. 1049 00:50:27,840 --> 00:50:29,470 Så disse er to flere biblioteker. 1050 00:50:29,470 --> 00:50:31,790 Jeg antar nå skal vi bruke funksjoner som ligger i disse 1051 00:50:31,790 --> 00:50:34,240 to, som er grunnen til at du trengte å inkludere dem? 1052 00:50:34,240 --> 00:50:36,980 >> STUDENT: Så da først er du kommer til å ønske å skrive srand. 1053 00:50:36,980 --> 00:50:38,770 >> JASON Hirschhorn: Srand. 1054 00:50:38,770 --> 00:50:42,070 >> STUDENT: (tid (0) 1055 00:50:42,070 --> 00:50:42,700 >> JASON Hirschhorn: Beklager. 1056 00:50:42,700 --> 00:50:45,580 Srand (tid ( 1057 00:50:45,580 --> 00:50:46,890 >> STUDENT: 0. 1058 00:50:46,890 --> 00:50:47,230 >> JASON Hirschhorn: 0. 1059 00:50:47,230 --> 00:50:49,990 >> STUDENT:)), semikolon. 1060 00:50:49,990 --> 00:50:51,320 >> JASON Hirschhorn: En annen lukket paren? 1061 00:50:51,320 --> 00:50:51,650 Semikolon. 1062 00:50:51,650 --> 00:50:53,610 Jeg skal bare erstatte din null med NULL. 1063 00:50:53,610 --> 00:50:55,980 Det vil gjøre om det samme, men generelt, vil du se NULL, som 1064 00:50:55,980 --> 00:50:57,720 vi skal snakke om dette linje i et sekund. 1065 00:50:57,720 --> 00:50:58,580 >> STUDENT: Stilistisk bedre? 1066 00:50:58,580 --> 00:51:02,240 >> JASON Hirschhorn: Vanligvis folk rett NULL, men samme. 1067 00:51:02,240 --> 00:51:05,010 >> STUDENT: Og så int navn. 1068 00:51:05,010 --> 00:51:06,490 >> JASON Hirschhorn: Int navn. 1069 00:51:06,490 --> 00:51:07,280 >> STUDENT: = 1070 00:51:07,280 --> 00:51:07,780 >> JASON Hirschhorn: = 1071 00:51:07,780 --> 00:51:08,580 >> STUDENT: Rand. 1072 00:51:08,580 --> 00:51:09,340 >> JASON Hirschhorn: Rand. 1073 00:51:09,340 --> 00:51:10,420 >> STUDENT: () 1074 00:51:10,420 --> 00:51:11,500 >> JASON Hirschhorn: () 1075 00:51:11,500 --> 00:51:12,850 >> STUDENT: Modulo nummer. 1076 00:51:12,850 --> 00:51:14,310 >> JASON Hirschhorn: Hva er modulo? 1077 00:51:14,310 --> 00:51:14,970 Tegnet? 1078 00:51:14,970 --> 00:51:16,000 Den prosentvise karakter? 1079 00:51:16,000 --> 00:51:17,790 >> STUDENT: Prosent karakter. 1080 00:51:17,790 --> 00:51:19,521 Modulo NUMMER at du har definert opp toppen. 1081 00:51:19,521 --> 00:51:22,030 >> JASON Hirschhorn: Modulo NUMMER. 1082 00:51:22,030 --> 00:51:24,052 >> STUDENT: Og så semikolon. 1083 00:51:24,052 --> 00:51:24,660 >> JASON Hirschhorn: Semicolon. 1084 00:51:24,660 --> 00:51:27,820 >> STUDENT: Og så ny linje, printf. 1085 00:51:27,820 --> 00:51:28,460 >> JASON Hirschhorn: Printf. 1086 00:51:28,460 --> 00:51:29,730 >> STUDENT: ( 1087 00:51:29,730 --> 00:51:30,620 >> JASON Hirschhorn: ( 1088 00:51:30,620 --> 00:51:31,650 >> STUDENT: " 1089 00:51:31,650 --> 00:51:32,630 >> JASON Hirschhorn: " 1090 00:51:32,630 --> 00:51:35,320 >> STUDENT:% s / n 1091 00:51:35,320 --> 00:51:37,220 >> JASON Hirschhorn:% s / n 1092 00:51:37,220 --> 00:51:38,420 >> STUDENT: " 1093 00:51:38,420 --> 00:51:40,640 >> JASON Hirschhorn:% s / n " 1094 00:51:40,640 --> 00:51:43,540 >> STUDENT: komma, mellomrom navn. 1095 00:51:43,540 --> 00:51:44,350 >> JASON Hirschhorn: Space - 1096 00:51:44,350 --> 00:51:46,300 >> STUDENT: Oh, antar jeg, hva vi kaller det her? 1097 00:51:46,300 --> 00:51:48,640 >> JASON Hirschhorn: Vi kalte det navn. 1098 00:51:48,640 --> 00:51:52,360 >> STUDENT: Open bracket, navn. 1099 00:51:52,360 --> 00:51:55,090 >> JASON Hirschhorn: Open bracket, navn. 1100 00:51:55,090 --> 00:51:55,850 >> STUDENT: Stengt brakett. 1101 00:51:55,850 --> 00:51:56,490 >> JASON Hirschhorn: Stengt brakett. 1102 00:51:56,490 --> 00:51:57,460 >> STUDENT:) 1103 00:51:57,460 --> 00:51:58,800 >> JASON Hirschhorn:) 1104 00:51:58,800 --> 00:51:59,440 >> STUDENT: Semicolon. 1105 00:51:59,440 --> 00:52:00,410 >> JASON Hirschhorn: Semicolon. 1106 00:52:00,410 --> 00:52:01,500 OK, la oss redde. 1107 00:52:01,500 --> 00:52:04,410 La oss gjøre denne koden. 1108 00:52:04,410 --> 00:52:06,365 Studenter. 1109 00:52:06,365 --> 00:52:07,100 La oss kjøre denne koden. 1110 00:52:07,100 --> 00:52:08,480 Studenter. 1111 00:52:08,480 --> 00:52:11,630 Ikke. / Student. . / Studenter. 1112 00:52:11,630 --> 00:52:12,870 Nevn en. 1113 00:52:12,870 --> 00:52:15,490 Vi sier David. 1114 00:52:15,490 --> 00:52:18,070 Navn to, RJ. 1115 00:52:18,070 --> 00:52:20,561 Navn tre, Rob. 1116 00:52:20,561 --> 00:52:22,490 Navn fire, Lucas. 1117 00:52:22,490 --> 00:52:26,060 Navn fem, Joseph. 1118 00:52:26,060 --> 00:52:28,850 Og så den skriver ut Joseph igjen. 1119 00:52:28,850 --> 00:52:31,730 >> Så la meg kjøre dette igjen. 1120 00:52:31,730 --> 00:52:32,460 La meg gjøre de samme navnene. 1121 00:52:32,460 --> 00:52:39,760 David, RJ, Rob, Lucas, Joseph. 1122 00:52:39,760 --> 00:52:41,070 Og det ga meg David denne gangen. 1123 00:52:41,070 --> 00:52:43,030 Så jeg gjorde det samme, men det ga meg en annen ting, og det er 1124 00:52:43,030 --> 00:52:45,410 fordi, selvfølgelig, ber vi for et tilfeldig navn. 1125 00:52:45,410 --> 00:52:50,950 Så jeg tror, ​​basert off av meg vandrende rundt i rommet, som folk flest 1126 00:52:50,950 --> 00:52:55,960 sannsynligvis fikk den første delen til høyre, sette opp denne matrisen og deretter får 1127 00:52:55,960 --> 00:52:56,430 alle navnene. 1128 00:52:56,430 --> 00:52:59,320 Jeg snakker om linjene 10 til 16 år. 1129 00:52:59,320 --> 00:53:02,150 Men linjene 18 til 21 er trolig noen ting du ikke har sett før, 1130 00:53:02,150 --> 00:53:03,750 så la oss gå gjennom disse. 1131 00:53:03,750 --> 00:53:10,390 >> Denne linjen, srand tid NULL er egentlig - 1132 00:53:10,390 --> 00:53:14,300 sorry, la oss hoppe ned en linje, rand (). 1133 00:53:14,300 --> 00:53:17,320 Det gir deg et tilfeldig tall, et tilfeldig heltall. 1134 00:53:17,320 --> 00:53:19,630 Og hvis du treffer mann rand, som mange av dere gjorde - 1135 00:53:19,630 --> 00:53:21,530 M-A-N plass R-A-N-D - 1136 00:53:21,530 --> 00:53:25,910 i terminalen som dette, M-A-N plass R-A-N-D, trykk på Enter. 1137 00:53:25,910 --> 00:53:30,490 Du ville komme opp i håndboken og ville være i stand til å lese at rand 1138 00:53:30,490 --> 00:53:34,260 kommandoen utganger num pseudo tilfeldige bytes etter såing av tilfeldige tall 1139 00:53:34,260 --> 00:53:35,510 generatoren gang. 1140 00:53:35,510 --> 00:53:38,450 1141 00:53:38,450 --> 00:53:39,700 >> Så det er en beskrivelse. 1142 00:53:39,700 --> 00:53:43,860 1143 00:53:43,860 --> 00:53:46,800 Det er hva rand gjør det, gir du et tilfeldig tall når 1144 00:53:46,800 --> 00:53:48,610 du kaller denne funksjonen. 1145 00:53:48,610 --> 00:53:53,140 Dessverre, det er egentlig ikke tilfeldig fordi hvis du bare ringe tilfeldige 1146 00:53:53,140 --> 00:53:55,970 uten å få det litt frø, noen utgangspunkt vil det alltid velge 1147 00:53:55,970 --> 00:53:59,100 den samme ene og den bruker en formel for å bestemme det neste. 1148 00:53:59,100 --> 00:54:01,730 Så hvis du ringer rand, vil det bare gi deg det samme. 1149 00:54:01,730 --> 00:54:02,610 Det vil være meget forutsigbar. 1150 00:54:02,610 --> 00:54:03,790 Det faktisk ikke være tilfeldig. 1151 00:54:03,790 --> 00:54:09,610 >> Så det vi må gjøre, per Marius ' instruksjoner til meg, var seedet rand 1152 00:54:09,610 --> 00:54:13,810 med noe annet, som er hva den srand funksjonen gjør. 1153 00:54:13,810 --> 00:54:18,055 Det frø rand med noe litt mer tilfeldig enn det samme, og 1154 00:54:18,055 --> 00:54:23,360 han seeding det med tiden NULL, som er, bare ved konvensjonen, gjeldende 1155 00:54:23,360 --> 00:54:24,650 tid i sekunder. 1156 00:54:24,650 --> 00:54:29,790 >> Så du antar at alle er ikke kommer til å kjøre kode på det nøyaktige 1157 00:54:29,790 --> 00:54:33,620 samme sekund, så det er et sikkert kort som tid NULL kommer til å være annerledes 1158 00:54:33,620 --> 00:54:35,250 hver gang denne koden kjøres. 1159 00:54:35,250 --> 00:54:39,020 Trygt satse på at Dermed srand vilje frø rand med noe annet hver 1160 00:54:39,020 --> 00:54:39,990 eneste gang. 1161 00:54:39,990 --> 00:54:44,110 Så ved konvensjonen, når vi ønsker en tilfeldige tall, skriver vi denne linjen, 1162 00:54:44,110 --> 00:54:50,540 srand tid NULL, for å gi oss en mye mer tilfeldig frø, og da vi kjører 1163 00:54:50,540 --> 00:54:52,080 rand, som gir oss et tilfeldig tall. 1164 00:54:52,080 --> 00:54:52,840 Yeah? 1165 00:54:52,840 --> 00:54:54,140 >> STUDENT: Kan du si hva du mener med frø? 1166 00:54:54,140 --> 00:54:55,630 >> JASON Hirschhorn: Seed som i - 1167 00:54:55,630 --> 00:54:58,730 så rand kommer til å velge et gitt antall og det kommer til å bruke noen 1168 00:54:58,730 --> 00:55:00,060 formel for å komme dit. 1169 00:55:00,060 --> 00:55:03,250 Så det kommer til å starte med noe og deretter gjøre det til noe basert 1170 00:55:03,250 --> 00:55:03,890 off av den formelen. 1171 00:55:03,890 --> 00:55:06,090 Hvis du alltid gi den samme, det alltid kommer til å slå den inn i 1172 00:55:06,090 --> 00:55:06,790 samme. 1173 00:55:06,790 --> 00:55:08,450 Slik at første du gi det er frøet. 1174 00:55:08,450 --> 00:55:10,880 Så du ønsker å gi den noe annerledes å begynne med, og så det 1175 00:55:10,880 --> 00:55:12,610 vil gjøre det til noe annet. 1176 00:55:12,610 --> 00:55:15,840 >> Og så til slutt, linje 20, dette% kalles 1177 00:55:15,840 --> 00:55:17,470 modulo, og det er forvirrende. 1178 00:55:17,470 --> 00:55:19,850 Det er noe som er litt annerledes her at du egentlig ikke 1179 00:55:19,850 --> 00:55:22,240 har i det virkelige liv matematikk. 1180 00:55:22,240 --> 00:55:27,430 Men egentlig, når du tar en gigantisk nummer og du deler i C, hva 1181 00:55:27,430 --> 00:55:29,482 skjer med resten? 1182 00:55:29,482 --> 00:55:30,510 >> STUDENT: Det blir avkortet. 1183 00:55:30,510 --> 00:55:31,220 >> JASON Hirschhorn: Det blir avkortet. 1184 00:55:31,220 --> 00:55:35,200 Så 20 delt på 3 er hva? 1185 00:55:35,200 --> 00:55:37,950 Hva returnere det til deg, 20 delt på tre. 1186 00:55:37,950 --> 00:55:39,260 Sorry, 10 delt på tre. 1187 00:55:39,260 --> 00:55:41,062 Hva returnerer det til deg? 1188 00:55:41,062 --> 00:55:41,540 >> STUDENT: [uhørlig]. 1189 00:55:41,540 --> 00:55:45,170 >> JASON Hirschhorn: 10 delt på tre like returnerer 3, ikke tre resterende en. 1190 00:55:45,170 --> 00:55:51,490 Så 10 hva modulo 3 avkastning er bare resten, en. 1191 00:55:51,490 --> 00:55:54,020 Så hvis du ønsket å vite hva 10 delt av 3 faktisk var, ville du 1192 00:55:54,020 --> 00:55:58,950 gjøre 10 delt på 3, vil du få tre, og da bør du gjøre 10 modulo 3, og 1193 00:55:58,950 --> 00:55:59,860 du vil få en en. 1194 00:55:59,860 --> 00:56:04,630 Så du vil innse at 10 delt ved 3 er 3, en rest. 1195 00:56:04,630 --> 00:56:07,990 >> Og i denne linjen, kunne rand være noen heltall, egentlig. 1196 00:56:07,990 --> 00:56:12,660 Så modulo sier, dele det med antall, som er i dette tilfelle fem. 1197 00:56:12,660 --> 00:56:16,420 Og hvis du noen gang dividere med et tall, heltall må alltid være mindre enn 1198 00:56:16,420 --> 00:56:17,590 dette nummeret. 1199 00:56:17,590 --> 00:56:22,200 Så hvis du dividere med et nummer 5, resten er alltid kommer til å være 1200 00:56:22,200 --> 00:56:23,396 null til fire. 1201 00:56:23,396 --> 00:56:25,520 Det er bare hvordan regnestykket funker. 1202 00:56:25,520 --> 00:56:29,700 >> Så et stort antall moduloed av en mindre nummer vil alltid returnere 1203 00:56:29,700 --> 00:56:33,530 resten og vil alltid returnere noen tall som er mindre enn antallet du 1204 00:56:33,530 --> 00:56:34,693 dividert med. 1205 00:56:34,693 --> 00:56:37,920 Does noen har noen spørsmål om modulo, fordi det vil komme i svært, 1206 00:56:37,920 --> 00:56:41,450 veldig praktisk, så jeg vil være sikker alle forstår det? 1207 00:56:41,450 --> 00:56:43,710 Cool. 1208 00:56:43,710 --> 00:56:46,000 Og vi så at dette programmet fungerte. 1209 00:56:46,000 --> 00:56:50,280 OK, flytte på. 1210 00:56:50,280 --> 00:56:52,970 >> Så neste, kommer vi til å gå inn funksjoner, og vi kommer til å gå 1211 00:56:52,970 --> 00:56:55,580 gjennom resten av denne ting ganske raskt fordi jeg ønsker å få til 1212 00:56:55,580 --> 00:56:57,150 kommandolinje argumenter. 1213 00:56:57,150 --> 00:57:00,330 Så funksjoner er i hovedsak, som du har sett, svarte bokser. 1214 00:57:00,330 --> 00:57:04,290 De tar ting i kalt parametre, de gjør noe for dem, enten 1215 00:57:04,290 --> 00:57:06,990 endre dem eller lage noen bivirkninger, og til slutt, de spytter 1216 00:57:06,990 --> 00:57:09,530 noe ut, som er returverdien. 1217 00:57:09,530 --> 00:57:12,495 Kan noen gi meg en grunn hvorfor vi ville bruke funksjoner? 1218 00:57:12,495 --> 00:57:15,870 1219 00:57:15,870 --> 00:57:16,360 Noen? 1220 00:57:16,360 --> 00:57:19,360 En grunn til at vi ville bruke funksjoner? 1221 00:57:19,360 --> 00:57:21,280 Anyone? 1222 00:57:21,280 --> 00:57:22,700 Jeg så to hender. 1223 00:57:22,700 --> 00:57:23,590 Hva er en god grunn? 1224 00:57:23,590 --> 00:57:24,930 Marcus? 1225 00:57:24,930 --> 00:57:27,730 >> STUDENT: Hvis du må ringe det samme mengde koder flere ganger. 1226 00:57:27,730 --> 00:57:29,150 >> JASON Hirschhorn: OK, hvis du trenger å kalle den samme mengde 1227 00:57:29,150 --> 00:57:30,040 kode flere ganger. 1228 00:57:30,040 --> 00:57:32,470 Jeff, gjorde du har en annen grunn? 1229 00:57:32,470 --> 00:57:34,230 >> STUDENT: Bare så det du kan kode mindre. 1230 00:57:34,230 --> 00:57:35,070 >> JASON Hirschhorn: Du kan kode mindre. 1231 00:57:35,070 --> 00:57:35,320 Høyre. 1232 00:57:35,320 --> 00:57:38,720 Hvis du ønsker å gjøre noe mye - 1233 00:57:38,720 --> 00:57:41,720 i forrige koden, kunne jeg ha skrevet får streng fem ganger, men en 1234 00:57:41,720 --> 00:57:44,620 for loop gjør det ser penere og du må skrive mindre kode. 1235 00:57:44,620 --> 00:57:45,760 Funksjoner er en lignende idé. 1236 00:57:45,760 --> 00:57:48,720 Hvis jeg ønsker å gjøre det samme mye, flytte den til en funksjon og kalle det 1237 00:57:48,720 --> 00:57:49,610 funksjon hver gang. 1238 00:57:49,610 --> 00:57:51,190 Som vil gjøre den tingen for deg. 1239 00:57:51,190 --> 00:57:53,740 Det er en god grunn å bruke funksjoner. 1240 00:57:53,740 --> 00:57:54,870 >> Så anatomi av en funksjon. 1241 00:57:54,870 --> 00:57:56,670 En funksjon vil generelt se slik ut. 1242 00:57:56,670 --> 00:57:59,280 Det begynner med retur-type da vil du få navnet. 1243 00:57:59,280 --> 00:58:02,935 Det vil ta argumentene, ellers kjent som parameter, og inne 1244 00:58:02,935 --> 00:58:05,290 de klammeparentes, vil du skrive koden din. 1245 00:58:05,290 --> 00:58:07,150 >> Vi har sett en funksjon mye. 1246 00:58:07,150 --> 00:58:09,160 Det er viktigste. 1247 00:58:09,160 --> 00:58:13,820 Her er hoved lagt over som anatomi jeg hadde tidligere. 1248 00:58:13,820 --> 00:58:15,525 Hva betegner int akkurat her? 1249 00:58:15,525 --> 00:58:18,534 1250 00:58:18,534 --> 00:58:19,450 Hva betyr int? 1251 00:58:19,450 --> 00:58:21,026 Når jeg skriver int main (void). 1252 00:58:21,026 --> 00:58:21,740 >> STUDENT: Return type? 1253 00:58:21,740 --> 00:58:22,350 >> JASON Hirschhorn: Beklager? 1254 00:58:22,350 --> 00:58:23,170 >> STUDENT: Avkastningen type. 1255 00:58:23,170 --> 00:58:24,820 >> JASON Hirschhorn: Int er returnere type, helt riktig. 1256 00:58:24,820 --> 00:58:25,870 Hoved returnerer en int. 1257 00:58:25,870 --> 00:58:28,678 Hva er det viktigste? 1258 00:58:28,678 --> 00:58:29,510 >> STUDENT: Funksjon navn. 1259 00:58:29,510 --> 00:58:30,800 >> JASON Hirschhorn: Main er Navnet på funksjonen. 1260 00:58:30,800 --> 00:58:31,510 Helt riktig. 1261 00:58:31,510 --> 00:58:31,840 Og ugyldig? 1262 00:58:31,840 --> 00:58:33,190 Hva er ugyldig i parentes? 1263 00:58:33,190 --> 00:58:36,650 1264 00:58:36,650 --> 00:58:42,030 >> STUDENT: Det tar ikke noen ekstern verdi. 1265 00:58:42,030 --> 00:58:42,930 >> JASON Hirschhorn: Så ugyldig - 1266 00:58:42,930 --> 00:58:43,240 høyre. 1267 00:58:43,240 --> 00:58:45,940 I parentes, legger vi parametere eller argumentene de 1268 00:58:45,940 --> 00:58:48,480 funksjonen tar, hva som går inni den svarte boksen. 1269 00:58:48,480 --> 00:58:50,760 Når du skriver ugyldige, du sier dette tar ingenting i. 1270 00:58:50,760 --> 00:58:53,802 Så int main ugyldig betyr viktigste er ikke ta noe i. 1271 00:58:53,802 --> 00:58:56,950 >> Inne i klammeparentes, har vi noen kode, og da ser vi på slutten 1272 00:58:56,950 --> 00:58:57,640 returnere null. 1273 00:58:57,640 --> 00:59:01,220 Hva betyr retur null? 1274 00:59:01,220 --> 00:59:02,470 Vel, vi snakket om retur type. 1275 00:59:02,470 --> 00:59:03,780 Hoved trenger å returnere en int. 1276 00:59:03,780 --> 00:59:04,960 Det er hva denne linjen gjør. 1277 00:59:04,960 --> 00:59:07,330 Den returnerer en int, null. 1278 00:59:07,330 --> 00:59:13,600 >> Selvfølgelig har vi ikke sett at mye fordi i programmering gjør vi med 1279 00:59:13,600 --> 00:59:16,070 maskinene vi gjør og kompilatorer vi bruker i dag, du 1280 00:59:16,070 --> 00:59:16,990 trenger ikke den linjen. 1281 00:59:16,990 --> 00:59:20,070 Viktigste er spesiell nok til at den vet når du kommer til slutten av main, bare 1282 00:59:20,070 --> 00:59:22,060 returnere null hvis alt gikk bra. 1283 00:59:22,060 --> 00:59:25,560 Faktisk, hvis noe ikke går bra, viktigste vil ofte tilbake en annen 1284 00:59:25,560 --> 00:59:28,500 antall betegner at noe gikk galt med programmet. 1285 00:59:28,500 --> 00:59:32,470 >> Så generelt når du ser koden, du ikke skriv retur null, men det er bra 1286 00:59:32,470 --> 00:59:34,770 å vite at det skjer bak scener fordi når du skriver 1287 00:59:34,770 --> 00:59:36,370 en annen type funksjon, du kommer til å trenge å 1288 00:59:36,370 --> 00:59:37,400 inkludere en retur linje. 1289 00:59:37,400 --> 00:59:39,710 Hvis du sier jeg skal returnere en int, må du 1290 00:59:39,710 --> 00:59:41,250 skrive tilbake noe. 1291 00:59:41,250 --> 00:59:45,160 Hvis du sier ugyldig opp her på begynnelsen, void main tomrom, for 1292 00:59:45,160 --> 00:59:48,670 eksempel, da er det ikke retur noe - void betyr ingenting - 1293 00:59:48,670 --> 00:59:50,320 slik at du ikke trenger det returledningen. 1294 00:59:50,320 --> 00:59:53,610 Men du noensinne skrive noe som ikke er ugyldig for retur type, må du 1295 00:59:53,610 --> 00:59:55,950 en linje som sier retur og du trenger å sette noe der 1296 00:59:55,950 --> 00:59:57,650 som matcher den typen. 1297 00:59:57,650 --> 00:59:58,900 Eventuelle spørsmål om det? 1298 00:59:58,900 --> 01:00:03,110 1299 01:00:03,110 --> 01:00:04,680 Søt. 1300 01:00:04,680 --> 01:00:05,930 >> Omfang. 1301 01:00:05,930 --> 01:00:07,360 Dette er noe vi har rørte på også. 1302 01:00:07,360 --> 01:00:10,720 Hver variabel, som vi vet, har en visst omfang, og det er i utgangspunktet 1303 01:00:10,720 --> 01:00:14,160 snakker om hvor variabelen kan eller ikke vil referere til. 1304 01:00:14,160 --> 01:00:16,310 Og jeg liker å si hva som skjer i klammeparentes forblir 1305 01:00:16,310 --> 01:00:18,000 inne i klammeparentes. 1306 01:00:18,000 --> 01:00:21,490 Så for eksempel, hvis vi ser på denne koden, vi definerer en global variabel 1307 01:00:21,490 --> 01:00:24,510 utenom viktigste, int a, her oppe på toppen. 1308 01:00:24,510 --> 01:00:27,380 Vi ringer en annen int en innerste. 1309 01:00:27,380 --> 01:00:29,760 Vi har noen flere klammeparentes, og vi kaller en annen int en. 1310 01:00:29,760 --> 01:00:31,690 >> Vi har tre en er i kode. 1311 01:00:31,690 --> 01:00:32,550 Dette er ikke det samme. 1312 01:00:32,550 --> 01:00:34,880 Jeg har laget tre forskjellige variabler. 1313 01:00:34,880 --> 01:00:39,370 Så inni disse indre krøllete tannregulering, sier jeg a = 4. 1314 01:00:39,370 --> 01:00:44,130 Som en er at det å snakke om, første, den andre, 1315 01:00:44,130 --> 01:00:47,045 eller den tredje en? 1316 01:00:47,045 --> 01:00:47,920 >> STUDENT: Den tredje. 1317 01:00:47,920 --> 01:00:49,320 >> JASON Hirschhorn: Den snakker om den tredje. 1318 01:00:49,320 --> 01:00:52,850 Alle disse en er faktisk kan være snakket om i denne spesielle 1319 01:00:52,850 --> 01:00:58,660 eksempel fordi deres omfang alt går inn i disse innerste klammeparentes. 1320 01:00:58,660 --> 01:01:02,360 Men når du kaller ting på samme navn, det er noe som heter å skjule. 1321 01:01:02,360 --> 01:01:09,670 Slik at du bare forholde seg til eller fikse eller bruke siste variabel, eller en 1322 01:01:09,670 --> 01:01:11,090 nærmest deg. 1323 01:01:11,090 --> 01:01:14,760 Så her inne, er dette tredje en nærmest til den linje, en 4 =, slik det 1324 01:01:14,760 --> 01:01:16,550 påvirker den tredje. 1325 01:01:16,550 --> 01:01:19,890 Og den siste linjen, a 2 =, hvori A er som snakker om, den første, andre, 1326 01:01:19,890 --> 01:01:20,805 eller tredje en? 1327 01:01:20,805 --> 01:01:22,530 >> STUDENT: Second. 1328 01:01:22,530 --> 01:01:24,430 >> JASON Hirschhorn: Den snakker om det andre en. 1329 01:01:24,430 --> 01:01:27,970 Selvfølgelig, den tredje en er nærmest det i koden, men den tredje en 1330 01:01:27,970 --> 01:01:30,200 eksisterer ikke utenfor de klammeparentes. 1331 01:01:30,200 --> 01:01:32,650 Når du kommer til det lukkede krøllete brace, det er som det er borte, 1332 01:01:32,650 --> 01:01:33,570 essensielt. 1333 01:01:33,570 --> 01:01:36,150 Så de to eneste du har igjen er de to første, og selvfølgelig, nå 1334 01:01:36,150 --> 01:01:37,960 det er nærmest den andre. 1335 01:01:37,960 --> 01:01:39,410 >> Så det er en god ting å huske om omfanget. 1336 01:01:39,410 --> 01:01:42,900 For eksempel, jeg er sikker på at du har støtt på dette i en gjøre mens loop. 1337 01:01:42,900 --> 01:01:46,680 Hvis du initialiserer variabelen inne do mens loop og deretter prøver å 1338 01:01:46,680 --> 01:01:50,360 tilgang til det utenfor, sannsynligvis du fikk noen advarsel lignende, dette 1339 01:01:50,360 --> 01:01:51,680 variabelen ikke eksisterer. 1340 01:01:51,680 --> 01:01:54,370 Det er på grunn av omfanget idé, at ting bare eksisterer 1341 01:01:54,370 --> 01:01:55,320 innenfor disse klammeparentes. 1342 01:01:55,320 --> 01:01:59,320 Klammeparentes er som en gigantisk klem som du gir til koden din, er en annen 1343 01:01:59,320 --> 01:02:01,380 måte å tenke på det. 1344 01:02:01,380 --> 01:02:05,280 >> Dette er altså en annen funksjon, noe for dere å kode, hellofunction.c. 1345 01:02:05,280 --> 01:02:08,240 Vi kommer til å hoppe over det for nå, men dette er noe jeg oppfordrer deg til å 1346 01:02:08,240 --> 01:02:09,740 øve på egen hånd. 1347 01:02:09,740 --> 01:02:12,510 Skriv et program der viktigste samtalene en annen funksjon som skriver ut en 1348 01:02:12,510 --> 01:02:13,750 hilsen til brukeren. 1349 01:02:13,750 --> 01:02:17,750 Det er essensielt å ta hello world og abstrahere at printf inn 1350 01:02:17,750 --> 01:02:18,680 en annen funksjon. 1351 01:02:18,680 --> 01:02:22,360 Men vi kommer ikke til å gjøre det akkurat nå fordi vi ikke har så mye tid 1352 01:02:22,360 --> 01:02:23,350 venstre som jeg hadde håpet. 1353 01:02:23,350 --> 01:02:26,250 >> Så funksjon erklæring. 1354 01:02:26,250 --> 01:02:28,080 Vi har sett dette før også. 1355 01:02:28,080 --> 01:02:31,180 Hvis du ønsker å skrive en annen funksjon, må du la datamaskinen kjenner og 1356 01:02:31,180 --> 01:02:32,600 main vet at den finnes. 1357 01:02:32,600 --> 01:02:37,140 Så det vi gjør er over viktigste, skriver vi avkastningen type, navnet, og 1358 01:02:37,140 --> 01:02:42,970 parametere, og deretter ned under viktigste, her nede, vi faktisk kopiere den linjen 1359 01:02:42,970 --> 01:02:45,080 og deretter skrive selve koden. 1360 01:02:45,080 --> 01:02:50,990 Så denne måten, hvis du kaller funksjonen i hoved øverst, vet at hoved 1361 01:02:50,990 --> 01:02:54,650 hei finnes, for eksempel, hvis jeg var å ringe hei, og så det ser ut til 1362 01:02:54,650 --> 01:02:56,710 gjennomføringen ned nedenfor. 1363 01:02:56,710 --> 01:02:59,680 Hva skjer hvis jeg ikke inkludere dette linje opp toppen, ugyldiggjøre hallo (void)? 1364 01:02:59,680 --> 01:03:03,820 1365 01:03:03,820 --> 01:03:06,560 >> Hvis jeg ikke tar med denne linjen og viktigste samtalene Hei, jeg er 1366 01:03:06,560 --> 01:03:07,640 kommer til å få en feil. 1367 01:03:07,640 --> 01:03:10,090 Jeg kommer til å få en feil fordi kompilatoren vet ikke 1368 01:03:10,090 --> 01:03:13,070 at denne tingen eksisterer. 1369 01:03:13,070 --> 01:03:16,680 Dette ligner på hvorfor vi ikke # include cs50.h. 1370 01:03:16,680 --> 01:03:21,390 Hva hovedsak cs50.h gjør setter få streng oppe. 1371 01:03:21,390 --> 01:03:23,120 Det er å sette få int opp der. 1372 01:03:23,120 --> 01:03:26,570 Det er å sette alle de funksjon prototyper opp før hoved slik at når 1373 01:03:26,570 --> 01:03:29,900 du kaller dem i main, vet main at disse tingene eksisterer. 1374 01:03:29,900 --> 01:03:31,630 Det er hva disse. H filene gjør. 1375 01:03:31,630 --> 01:03:33,850 Og så hvis du skal lage din egen funksjon, så må du sørge for at 1376 01:03:33,850 --> 01:03:36,690 du sette det prototype der oppe. 1377 01:03:36,690 --> 01:03:38,380 Eventuelle spørsmål om dette så langt? 1378 01:03:38,380 --> 01:03:41,630 1379 01:03:41,630 --> 01:03:42,490 >> Kommandolinje argumenter. 1380 01:03:42,490 --> 01:03:44,780 Dette er hva vi kommer til å fullføre på, og forhåpentligvis vil vi 1381 01:03:44,780 --> 01:03:46,180 presse inn litt PSett. 1382 01:03:46,180 --> 01:03:48,700 Jeg vet ikke om vi vil være i stand til å presse at på grunn av tid, men 1383 01:03:48,700 --> 01:03:51,560 med dere som er her, og hvis du Gutta ønsker å si etter en bit, vi 1384 01:03:51,560 --> 01:03:54,290 kan gå over den utenfor. 1385 01:03:54,290 --> 01:03:56,020 Men vi kommer til å avslutte med kommandolinjeargumentene 1386 01:03:56,020 --> 01:03:58,510 for de siste 15 minuttene. 1387 01:03:58,510 --> 01:03:59,930 Vi våken, Michael? 1388 01:03:59,930 --> 01:04:01,180 Du er våken? 1389 01:04:01,180 --> 01:04:01,660 Bra. 1390 01:04:01,660 --> 01:04:03,760 Jeg vet ikke om du sover med øynene lukket. 1391 01:04:03,760 --> 01:04:05,800 Det ville være vanskelig. 1392 01:04:05,800 --> 01:04:07,180 >> Kommandolinje argumenter. 1393 01:04:07,180 --> 01:04:10,430 De er en måte å sende informasjon inn i et program. 1394 01:04:10,430 --> 01:04:12,780 Til slutt vil vi møter andre. 1395 01:04:12,780 --> 01:04:15,600 Men egentlig, kommer vi til å stoppe skrive int main (void) hvis vi ønsker å 1396 01:04:15,600 --> 01:04:16,720 ta noen kommandolinje argumenter. 1397 01:04:16,720 --> 01:04:19,850 Vi kommer til å skrive denne saken kalt int main (int argc, 1398 01:04:19,850 --> 01:04:22,430 string argv, parentes. 1399 01:04:22,430 --> 01:04:23,710 Det er forvirrende. 1400 01:04:23,710 --> 01:04:26,070 Det er mye av bokstaver som ikke er i human engelsk, så vi kommer til å 1401 01:04:26,070 --> 01:04:27,680 pakke dem ut akkurat nå. 1402 01:04:27,680 --> 01:04:30,450 >> Argc står for argument teller - 1403 01:04:30,450 --> 01:04:32,600 og igjen, alle disse vil være tilgjengelig på nettet - 1404 01:04:32,600 --> 01:04:34,280 og det er antall argumenter. 1405 01:04:34,280 --> 01:04:37,940 Argv står for argument vektor, og de er argumentene selv. 1406 01:04:37,940 --> 01:04:38,830 Det er en rekke strenger. 1407 01:04:38,830 --> 01:04:40,880 Vi har faktisk sett en rekke av strenger før i dag. 1408 01:04:40,880 --> 01:04:44,390 Vi skapte en i det siste programmet vi kodet. 1409 01:04:44,390 --> 01:04:45,720 >> Så her er et eksempel. 1410 01:04:45,720 --> 01:04:50,230 Jeg skriver. / Ohai CS50 seksjon på min kommando linje. 1411 01:04:50,230 --> 01:04:54,090 Argc i dette tilfellet er lik 3. 1412 01:04:54,090 --> 01:05:01,170 Argv brakett 0 er ohai, argv brakett 1 er CS50, er argv bracket 2 delen. 1413 01:05:01,170 --> 01:05:05,160 Igjen er argc antall argumenter, og til å reise deg opp litt 1414 01:05:05,160 --> 01:05:08,710 bit, vi alltid regne navnet på funksjon som det første argumentet. 1415 01:05:08,710 --> 01:05:12,350 Så i dette tilfellet, er det tre argumenter, navnet på funksjonen 1416 01:05:12,350 --> 01:05:14,590 og deretter de to som jeg har skrevet i. 1417 01:05:14,590 --> 01:05:18,900 >> Deretter kommer vi til å redde dem argumenter selv i argv. 1418 01:05:18,900 --> 01:05:22,690 Og igjen, akkurat slik vi så før, gjorde vi dette i det siste programmet kodet vi. 1419 01:05:22,690 --> 01:05:27,110 Du kan bevege deg gjennom rekken av ARGV og få disse strengene. 1420 01:05:27,110 --> 01:05:28,830 Det er egentlig det vi gjorde på slutten av vår siste program. 1421 01:05:28,830 --> 01:05:33,190 Vi plukket et tilfeldig navn og deretter gikk til navn brakett uansett og skrives ut 1422 01:05:33,190 --> 01:05:34,580 ut strengen som ligger der. 1423 01:05:34,580 --> 01:05:39,870 1424 01:05:39,870 --> 01:05:43,670 >> På toppen av bare den ene matrise, fordi strenger selv er matriser, som 1425 01:05:43,670 --> 01:05:46,320 snakket om, kan du ha arrays av matriser, som er 1426 01:05:46,320 --> 01:05:48,530 egentlig hva argv er. 1427 01:05:48,530 --> 01:05:51,370 En måte du kan tenke på dette er rader og kolonner. 1428 01:05:51,370 --> 01:05:54,750 Jeg kan trekke det akkurat nå. 1429 01:05:54,750 --> 01:05:57,370 Så argv - 1430 01:05:57,370 --> 01:05:58,630 det er ikke å slette. 1431 01:05:58,630 --> 01:05:59,880 La oss trekke i henhold ohai. 1432 01:05:59,880 --> 01:06:09,320 1433 01:06:09,320 --> 01:06:12,490 >> Så hvis jeg skrev inn, ohai CS50 delen, Jeg kommer til å avkorte 1434 01:06:12,490 --> 01:06:14,520 seksjon for dette eksempelet. 1435 01:06:14,520 --> 01:06:29,026 Men i hovedsak, min multi-dimensjonale array, CS50 ohai, 1436 01:06:29,026 --> 01:06:32,200 vi kommer til å gjøre sekt. 1437 01:06:32,200 --> 01:06:34,610 Så her kan jeg få tilgang til - 1438 01:06:34,610 --> 01:06:40,930 1439 01:06:40,930 --> 01:06:45,710 hvis jeg bare gi argv ett nummer - 1440 01:06:45,710 --> 01:06:46,390 dette er feil. 1441 01:06:46,390 --> 01:06:49,020 Hva er galt i dette diagrammet? 1442 01:06:49,020 --> 01:06:49,690 >> STUDENT: Start på null. 1443 01:06:49,690 --> 01:06:50,350 >> JASON Hirschhorn: Det bør begynne med null. 1444 01:06:50,350 --> 01:06:52,940 Jeg bør nok også rotere det, men siden jeg allerede har trukket den på, jeg 1445 01:06:52,940 --> 01:06:54,120 kommer til å la den på det for nå. 1446 01:06:54,120 --> 01:06:55,160 Men den starter på null. 1447 01:06:55,160 --> 01:06:56,410 Det er riktig. 1448 01:06:56,410 --> 01:06:58,980 1449 01:06:58,980 --> 01:07:00,120 Jeg beklager hvis dette er liten. 1450 01:07:00,120 --> 01:07:01,370 Kan dere se type? 1451 01:07:01,370 --> 01:07:03,620 1452 01:07:03,620 --> 01:07:06,670 Så hvis jeg gjør argv 0, vil jeg få alle ohai. 1453 01:07:06,670 --> 01:07:08,555 Hvis jeg gjør argv en, vil jeg få alle CS50. 1454 01:07:08,555 --> 01:07:10,720 Hvis jeg gjør argv to, vil jeg få alle sekt. 1455 01:07:10,720 --> 01:07:13,370 >> Men nå som vi sa, strenger er matriser selv. 1456 01:07:13,370 --> 01:07:19,740 Så det jeg kan gjøre er at jeg kan behandle dette som en multi-dimensjonal array, og jeg 1457 01:07:19,740 --> 01:07:24,190 kan gjøre noe langs linjene av 0 argv, 0, som gir meg akkurat den 1458 01:07:24,190 --> 01:07:25,400 karakter 0. 1459 01:07:25,400 --> 01:07:28,760 ARGV 0, 1, som gir me nettopp timer. 1460 01:07:28,760 --> 01:07:33,960 1 argv, tre, noe som gir meg bare Dette 0 her nede i CS50. 1461 01:07:33,960 --> 01:07:37,690 >> Så fordi strengene selv er matriser, vi setter 1462 01:07:37,690 --> 01:07:38,540 det i en annen rekke. 1463 01:07:38,540 --> 01:07:42,850 Vi har nå utvalg av arrays, og vi kan indeksere inn i vår første matrise og 1464 01:07:42,850 --> 01:07:44,840 da indeksen inn vår andre rekke. 1465 01:07:44,840 --> 01:07:48,650 Og som du forventer, gjør vi det ved bare å sette de to - 1466 01:07:48,650 --> 01:07:51,760 vi gjør klammeparentesene bare rett ved siden av hverandre. 1467 01:07:51,760 --> 01:07:58,930 Så i dette eksempelet, er argv en CS50 og 1 argv, to, som vi sa, er bare fem. 1468 01:07:58,930 --> 01:08:02,120 Does noen har noen spørsmål om flerdimensjonale matriser? 1469 01:08:02,120 --> 01:08:05,090 1470 01:08:05,090 --> 01:08:06,380 Dere gjør awesome. 1471 01:08:06,380 --> 01:08:07,750 Søt. 1472 01:08:07,750 --> 01:08:11,980 >> Så vi har et annet program akkurat her, og dette er den siste tingen vi er 1473 01:08:11,980 --> 01:08:13,690 kommer til å gjøre akkurat nå. 1474 01:08:13,690 --> 01:08:18,160 Så jeg vil at du skal skrive et program som tar en brukers fulle navn, to og bare 1475 01:08:18,160 --> 01:08:21,649 to kommandolinje argumenter, og til slutt, skrive ut en hilsen til 1476 01:08:21,649 --> 01:08:24,180 bruker som inkluderer deres fornavn. 1477 01:08:24,180 --> 01:08:27,800 Så hvorfor ikke ta tre eller fire minutter å gjøre dette, og så får vi gå 1478 01:08:27,800 --> 01:08:29,870 over det som en gruppe, og så får vi bryte opp? 1479 01:08:29,870 --> 01:09:44,189 1480 01:09:44,189 --> 01:09:48,084 >> Og igjen, her, når vi sier ta en brukerens fulle navn per beskrivelsen 1481 01:09:48,084 --> 01:09:54,473 av dette problemet, bør det være kommando argumenter, ikke bruker får streng. 1482 01:09:54,473 --> 01:09:55,450 Ja, Marcus? 1483 01:09:55,450 --> 01:09:58,260 >> STUDENT: Så når du sier to kommando argumenter, er at i tillegg til 1484 01:09:58,260 --> 01:10:00,000 . det / løpe, eller - 1485 01:10:00,000 --> 01:10:02,980 >> JASON Hirschhorn: Godt spørsmål. 1486 01:10:02,980 --> 01:10:05,995 Do, inkludert. / Løp, tre kommandolinje argumenter. 1487 01:10:05,995 --> 01:10:08,550 1488 01:10:08,550 --> 01:10:11,320 Eller inkludert. / Personlig, i denne saken, fordi det er den 1489 01:10:11,320 --> 01:10:12,360 navnet på denne filen. 1490 01:10:12,360 --> 01:10:13,300 Så argc ville være tre. 1491 01:10:13,300 --> 01:10:19,480 Men jeg ønsker bare to argumenter gitt til programmet. 1492 01:10:19,480 --> 01:10:20,400 Jeg bør spesifisere det. 1493 01:10:20,400 --> 01:10:23,380 Jeg skal gjøre denne endringen før jeg legger disse og sende dem til dere. 1494 01:10:23,380 --> 01:10:32,747 1495 01:10:32,747 --> 01:10:34,740 >> STUDENT: Hva om du har et mellomnavn? 1496 01:10:34,740 --> 01:10:36,800 >> JASON Hirschhorn: Hvis du har en middels navn, er du ute av lykken. 1497 01:10:36,800 --> 01:10:38,050 Jeg beklager. 1498 01:10:38,050 --> 01:10:40,320 1499 01:10:40,320 --> 01:10:43,744 Eller hvis du bare gå av Shakira, du er også ute av lykken. 1500 01:10:43,744 --> 01:10:55,672 1501 01:10:55,672 --> 01:10:56,425 Yeah? 1502 01:10:56,425 --> 01:11:00,760 >> STUDENT: Så når folk ikke har cs50.h, definerer de argv 1503 01:11:00,760 --> 01:11:03,450 som røye stjerners argv? 1504 01:11:03,450 --> 01:11:05,160 Eller er det fortsatt kalles string argv? 1505 01:11:05,160 --> 01:11:07,430 >> JASON Hirschhorn: Ja. 1506 01:11:07,430 --> 01:11:10,480 Så strengen, igjen, maskere vi over hvilken akkurat som skjer der. 1507 01:11:10,480 --> 01:11:14,040 Det kommer til å bli pakket kanskje på onsdag, men snart. 1508 01:11:14,040 --> 01:11:16,380 Det er som trening hjul. 1509 01:11:16,380 --> 01:11:18,370 Fordi hovedsak er det det samme. 1510 01:11:18,370 --> 01:11:37,040 1511 01:11:37,040 --> 01:11:42,560 >> Så la oss ta et minutt til program dette, og så vil vi gå over 1512 01:11:42,560 --> 01:11:45,130 det som en gruppe, og deretter som jeg sa, bryte opp. 1513 01:11:45,130 --> 01:11:47,770 Og jeg tror de fremdeles ekstra godteri, så dere skal forhåpentligvis ta 1514 01:11:47,770 --> 01:11:49,790 det, eller kan du ta det. 1515 01:11:49,790 --> 01:12:20,380 1516 01:12:20,380 --> 01:12:22,560 >> Beklager hvis du fremdeles skrive, men jeg ønsker å dykke i og vi 1517 01:12:22,560 --> 01:12:24,010 kan fullføre den sammen. 1518 01:12:24,010 --> 01:12:30,470 Så jeg har skrevet i, # include cs50.h, # include stdio.h. 1519 01:12:30,470 --> 01:12:33,970 int main (void), klammeparentes, krøllete brace, inne tre linjer med 1520 01:12:33,970 --> 01:12:38,760 pseudokode, ta en brukers fulle navn, to og bare to kommandolinje 1521 01:12:38,760 --> 01:12:42,670 argumentene, skrive ut en hilsen til bruker som inkluderer deres fornavn. 1522 01:12:42,670 --> 01:12:45,810 >> Så den første, ta en bruker fullt navn. 1523 01:12:45,810 --> 01:12:47,290 Hvem kan hjelpe meg å ta en brukers fulle navn? 1524 01:12:47,290 --> 01:12:50,882 1525 01:12:50,882 --> 01:12:52,780 Hvordan gjør jeg det en del? 1526 01:12:52,780 --> 01:12:57,685 1527 01:12:57,685 --> 01:12:59,500 Har dere gjøre det første delen? 1528 01:12:59,500 --> 01:13:02,587 1529 01:13:02,587 --> 01:13:03,894 Ta en brukers fulle navn. 1530 01:13:03,894 --> 01:13:05,860 Vel, for at en kommandolinje argument, hva skal jeg skrive? 1531 01:13:05,860 --> 01:13:09,624 Hva bør jeg endre om min funksjon erklæring? 1532 01:13:09,624 --> 01:13:11,140 >> STUDENT: Du vil ikke ha det å være ugyldig lenger. 1533 01:13:11,140 --> 01:13:11,410 >> JASON Hirschhorn: Nettopp. 1534 01:13:11,410 --> 01:13:12,385 Jeg vil ikke at det skal være ugyldig. 1535 01:13:12,385 --> 01:13:13,630 Hva gjør jeg vil den skal være? 1536 01:13:13,630 --> 01:13:14,650 >> STUDENT: Int argc. 1537 01:13:14,650 --> 01:13:15,720 >> JASON Hirschhorn: Int argc. 1538 01:13:15,720 --> 01:13:17,430 >> STUDENT: String argv. 1539 01:13:17,430 --> 01:13:19,055 >> JASON Hirschhorn: String argv. 1540 01:13:19,055 --> 01:13:19,705 >> STUDENT: Bracket, brakett. 1541 01:13:19,705 --> 01:13:20,070 >> JASON Hirschhorn: Bracket, brakett. 1542 01:13:20,070 --> 01:13:21,780 Det er helt riktig, og det er faktisk hvordan jeg skal få 1543 01:13:21,780 --> 01:13:22,820 en bruker fullt navn. 1544 01:13:22,820 --> 01:13:24,070 De kommer til å sette den inn der. 1545 01:13:24,070 --> 01:13:27,720 1546 01:13:27,720 --> 01:13:28,780 Slik at man er ferdig. 1547 01:13:28,780 --> 01:13:30,780 Så nå vil jeg ha to og bare to kommandolinje argumenter. 1548 01:13:30,780 --> 01:13:35,065 Så Noah, hva er en måte jeg kan kontrollere antall kommando 1549 01:13:35,065 --> 01:13:36,315 argumenter jeg har? 1550 01:13:36,315 --> 01:13:39,676 1551 01:13:39,676 --> 01:13:40,725 >> STUDENT: Du gjør en hvis setningen. 1552 01:13:40,725 --> 01:13:42,270 >> JASON Hirschhorn: Hvis statement, akkurat. 1553 01:13:42,270 --> 01:13:44,830 Hva vil jeg som tilstanden? 1554 01:13:44,830 --> 01:13:48,370 >> STUDENT: Hvis argc større enn 3. 1555 01:13:48,370 --> 01:13:52,485 >> JASON Hirschhorn: Hvis argc er større enn 3. 1556 01:13:52,485 --> 01:13:58,430 Hvis argc større enn 3, hva gjør jeg? 1557 01:13:58,430 --> 01:13:59,400 >> STUDENT: Return ett. 1558 01:13:59,400 --> 01:14:01,856 >> JASON Hirschhorn: Gå tilbake ett. 1559 01:14:01,856 --> 01:14:04,050 Vil det sikre at jeg har to og bare to? 1560 01:14:04,050 --> 01:14:07,280 1561 01:14:07,280 --> 01:14:07,820 >> STUDENT: Nei. 1562 01:14:07,820 --> 01:14:13,110 Hvis argc er større enn 3 og mindre enn to. 1563 01:14:13,110 --> 01:14:17,770 >> JASON Hirschhorn: Hvis argc er større enn tre og argc er mindre enn to. 1564 01:14:17,770 --> 01:14:21,540 Hva er en måte jeg kan skrive dette i bare én linje, eller uten å bruke det 1565 01:14:21,540 --> 01:14:23,890 og boolsk operator? 1566 01:14:23,890 --> 01:14:25,942 >> STUDENT: Det er ikke lik to. 1567 01:14:25,942 --> 01:14:28,790 >> JASON Hirschhorn: Hvis argc er ikke lik to. 1568 01:14:28,790 --> 01:14:29,260 Nettopp. 1569 01:14:29,260 --> 01:14:34,890 Så hvis argc er ikke lik 2, som vil gi meg dette programmet, 1570 01:14:34,890 --> 01:14:37,250 personlig, når jeg kjører den, og som vil gi meg hvor mange 1571 01:14:37,250 --> 01:14:38,740 kommandolinje argumenter? 1572 01:14:38,740 --> 01:14:42,110 Hvor mange vil jeg se etter? 1573 01:14:42,110 --> 01:14:42,370 >> Unnskyld. 1574 01:14:42,370 --> 01:14:43,400 La meg omformulere det. 1575 01:14:43,400 --> 01:14:46,620 Hvis argc = 2, hvor mange ting brukeren skriver inn i linjen? 1576 01:14:46,620 --> 01:14:47,500 >> STUDENT: One. 1577 01:14:47,500 --> 01:14:49,120 >> JASON Hirschhorn: Bare en. 1578 01:14:49,120 --> 01:14:50,430 Så før, du hadde rett, Noah. 1579 01:14:50,430 --> 01:14:52,192 Hva trenger jeg egentlig trenger å sette det? 1580 01:14:52,192 --> 01:14:53,640 >> STUDENT: Det tilsvarer tre. 1581 01:14:53,640 --> 01:14:55,970 >> JASON Hirschhorn: argc ikke lik tre. 1582 01:14:55,970 --> 01:15:00,250 Jeg ønsker å utgjøre 3 fordi jeg ønsker personlig pluss de to andre. 1583 01:15:00,250 --> 01:15:02,560 Så hvis argc ikke lik 3, returnere en. 1584 01:15:02,560 --> 01:15:04,475 Hvorfor sa du tilbake en? 1585 01:15:04,475 --> 01:15:06,180 >> STUDENT: Fordi det betyr at det er galt. 1586 01:15:06,180 --> 01:15:08,420 >> JASON Hirschhorn: Det betyr at det er galt, og hva som kommer til å gjøre? 1587 01:15:08,420 --> 01:15:10,360 >> STUDENT: Re-be brukeren. 1588 01:15:10,360 --> 01:15:11,940 >> JASON Hirschhorn: Det kommer til å slutte programmet, slik det vil måtte løpe 1589 01:15:11,940 --> 01:15:14,520 igjen, men vi har ikke noe inn her for å be om dem igjen. 1590 01:15:14,520 --> 01:15:14,840 Jeg ba ikke om det. 1591 01:15:14,840 --> 01:15:15,990 Så det er helt riktig. 1592 01:15:15,990 --> 01:15:17,680 Returnere en bare avsluttes programmet. 1593 01:15:17,680 --> 01:15:18,520 Stor. 1594 01:15:18,520 --> 01:15:21,600 >> Og skrive ut en hilsen til brukeren som inkluderer deres fornavn. 1595 01:15:21,600 --> 01:15:24,010 Hvordan kan jeg gjøre det? 1596 01:15:24,010 --> 01:15:25,990 Anna? 1597 01:15:25,990 --> 01:15:26,580 >> STUDENT: Printf. 1598 01:15:26,580 --> 01:15:27,785 >> JASON Hirschhorn: Printf. 1599 01:15:27,785 --> 01:15:28,640 >> STUDENT: (" 1600 01:15:28,640 --> 01:15:30,460 >> JASON Hirschhorn: ( 1601 01:15:30,460 --> 01:15:31,600 >> STUDENT: "hallo 1602 01:15:31,600 --> 01:15:33,210 >> JASON Hirschhorn: "hallo 1603 01:15:33,210 --> 01:15:34,800 >> STUDENT:% s 1604 01:15:34,800 --> 01:15:37,230 >> JASON Hirschhorn:% s 1605 01:15:37,230 --> 01:15:38,840 >> STUDENT: / n 1606 01:15:38,840 --> 01:15:41,030 >> JASON Hirschhorn: / n 1607 01:15:41,030 --> 01:15:43,120 >> STUDENT: ", 1608 01:15:43,120 --> 01:15:45,130 >> JASON Hirschhorn: ", 1609 01:15:45,130 --> 01:15:46,620 >> STUDENT: ARGV 1610 01:15:46,620 --> 01:15:47,080 >> JASON Hirschhorn: Beklager? 1611 01:15:47,080 --> 01:15:47,750 >> STUDENT: ARGV 1612 01:15:47,750 --> 01:15:48,840 >> JASON Hirschhorn: ARGV 1613 01:15:48,840 --> 01:15:50,190 >> STUDENT: Square parentes ett. 1614 01:15:50,190 --> 01:15:51,230 >> JASON Hirschhorn: Hakeparenteser? 1615 01:15:51,230 --> 01:15:51,870 >> STUDENT: 1. 1616 01:15:51,870 --> 01:15:54,050 >> JASON Hirschhorn: 1. 1617 01:15:54,050 --> 01:15:55,850 >> STUDENT: And) semikolon. 1618 01:15:55,850 --> 01:15:58,290 >> JASON Hirschhorn:) semikolon. 1619 01:15:58,290 --> 01:16:00,250 La oss kjøre dette. 1620 01:16:00,250 --> 01:16:03,730 Lag personlige. 1621 01:16:03,730 --> 01:16:06,392 . / Personlig. 1622 01:16:06,392 --> 01:16:07,420 Det bare slutte. 1623 01:16:07,420 --> 01:16:10,390 Hvorfor måtte det slutte? 1624 01:16:10,390 --> 01:16:11,310 >> STUDENT: Du har ikke satt noen argumenter. 1625 01:16:11,310 --> 01:16:12,560 >> JASON Hirschhorn: Jeg gjorde ikke sette noen argumenter i. 1626 01:16:12,560 --> 01:16:16,360 1627 01:16:16,360 --> 01:16:16,920 Ser flott ut. 1628 01:16:16,920 --> 01:16:18,130 Dere spikret det. 1629 01:16:18,130 --> 01:16:22,420 Så igjen, du gikk inn argv og du sjekket i begynnelsen argc. 1630 01:16:22,420 --> 01:16:24,390 De er to viktige ting å huske. 1631 01:16:24,390 --> 01:16:29,250 Så i de to siste minuttene før vi forlate, vil vi ikke komme til PSett to, men 1632 01:16:29,250 --> 01:16:33,585 som jeg sa, hvis du ønsker å bo etter i 10 minutter, ville jeg han glad for å gå 1633 01:16:33,585 --> 01:16:35,710 over med dere den logiske for disse oppgavesett. 1634 01:16:35,710 --> 01:16:37,930 Vi hadde mye å dekke i dag så jeg fikk ikke komme til dem. 1635 01:16:37,930 --> 01:16:39,820 Vanligvis liker jeg å inkludere at det ved utgangen. 1636 01:16:39,820 --> 01:16:42,150 Så hvis du ønsker å holde seg i nærheten, værende i 10 minutter. 1637 01:16:42,150 --> 01:16:42,990 Vi vil gjøre det. 1638 01:16:42,990 --> 01:16:46,250 >> Så, som jeg nevnte i begynnelsen, PSett null og en, vil vi få det 1639 01:16:46,250 --> 01:16:48,040 tilbakemeldinger tilbake til deg som snart som mulig. 1640 01:16:48,040 --> 01:16:51,260 Målet er å få PSett ett tilbakemeldinger, kommentarfeltet delen, 1641 01:16:51,260 --> 01:16:52,850 før PSett to skyldes. 1642 01:16:52,850 --> 01:16:56,730 Så hvis du har gjort noen feil eller stilistisk, ting kan bli bedre, 1643 01:16:56,730 --> 01:17:01,330 vil du ha denne informasjonen slik at du vil ikke gjøre de samme tingene i PSett to. 1644 01:17:01,330 --> 01:17:06,140 Og så i fremtiden, vil du få all av PSett tilbakemeldinger og kommentarer 1645 01:17:06,140 --> 01:17:08,190 tilbake før neste skyldes. 1646 01:17:08,190 --> 01:17:12,695 >> Til slutt, hvis jeg kunne sette i en annen plugg for tilbakemeldinger. 1647 01:17:12,695 --> 01:17:13,935 Dette er ditt første avsnitt. 1648 01:17:13,935 --> 01:17:15,920 Det var min første delen undervise i år. 1649 01:17:15,920 --> 01:17:16,930 Gå dit. 1650 01:17:16,930 --> 01:17:19,800 Skriv ting, gode og dårlige, og jeg vil bruke den til å lage 1651 01:17:19,800 --> 01:17:21,320 § bedre neste gang. 1652 01:17:21,320 --> 01:17:24,870 Og sist, igjen, hvis du trenger noe, gi meg beskjed. 1653 01:17:24,870 --> 01:17:26,410 Jeg er mer enn glade for å hjelpe dere. 1654 01:17:26,410 --> 01:17:28,420 Hvis du bare vil ha godteri, jeg vil ha ekstra godteri. 1655 01:17:28,420 --> 01:17:29,800 Jeg er glad for å bringe den til deg. 1656 01:17:29,800 --> 01:17:31,190 >> Dette kommer til å bli en fantastisk kurs. 1657 01:17:31,190 --> 01:17:34,900 Dette er en av, om ikke min favoritt Selvfølgelig, jeg har tatt i hele mitt liv, 1658 01:17:34,900 --> 01:17:37,220 og jeg håper det vil være at flott for deg. 1659 01:17:37,220 --> 01:17:40,090 Så jeg ønsker å gjøre alt i min makt å gjøre det så kjempebra for deg. 1660 01:17:40,090 --> 01:17:46,590 Jeg kommer til å sende ut en epost om du er i min seksjon eller Noah, og 1661 01:17:46,590 --> 01:17:50,310 skal forsøke å planlegge med hver av dere en gang for å sjekke inn over 1662 01:17:50,310 --> 01:17:53,820 neste par ukene, så jeg kan få en følelse av hva din CS bakgrunnen er, 1663 01:17:53,820 --> 01:17:58,170 og det vil også hjelpe meg skreddersy disse seksjoner for å bedre passer dine behov. 1664 01:17:58,170 --> 01:17:59,740 Så det er det jeg har fått stilt opp. 1665 01:17:59,740 --> 01:18:02,260 Igjen, jeg ser deg utenfor Hvis du ønsker å være der. 1666 01:18:02,260 --> 01:18:03,700 Dette var uke to avsnitt. 1667 01:18:03,700 --> 01:18:04,950 Takk skal dere så mye. 1668 01:18:04,950 --> 01:18:09,067