1 00:00:00,000 --> 00:00:03,290 >> [MUSIC SPILLE] 2 00:00:03,290 --> 00:00:04,989 3 00:00:04,989 --> 00:00:06,280 JASON Hirschhorn: OK, alle sammen. 4 00:00:06,280 --> 00:00:07,460 Velkommen til del. 5 00:00:07,460 --> 00:00:10,840 Dette er CS50, vår svært første super-delen. 6 00:00:10,840 --> 00:00:13,700 Som dere alle vet, neste uke faste seksjoner vil starte, 7 00:00:13,700 --> 00:00:15,580 men denne uken er vi alle sammen. 8 00:00:15,580 --> 00:00:17,730 >> Det er meg selv. 9 00:00:17,730 --> 00:00:18,840 Mitt navn er Jason. 10 00:00:18,840 --> 00:00:20,630 Jeg er lektor i informatikk. 11 00:00:20,630 --> 00:00:23,910 Vi har Andi, som er leder TA av CS50. 12 00:00:23,910 --> 00:00:27,630 Og Scaz, Professor Brian Scassellati, Han er professor i informatikk. 13 00:00:27,630 --> 00:00:30,970 >> Vi er CS50 hodene på Yale. 14 00:00:30,970 --> 00:00:34,992 Du kan alltid email oss heads@cs50.yale.edu. 15 00:00:34,992 --> 00:00:35,950 Vi vil være på forelesninger. 16 00:00:35,950 --> 00:00:37,547 Vi vil være på kontortid. 17 00:00:37,547 --> 00:00:40,130 Hvis det er stadig noe vi kan gjøre for deg, alt du trenger, 18 00:00:40,130 --> 00:00:42,610 gjerne nå ut til oss. 19 00:00:42,610 --> 00:00:44,140 >> Så hva skal vi gjøre i dag? 20 00:00:44,140 --> 00:00:47,790 Eller før da, hva er kommer opp denne uken? 21 00:00:47,790 --> 00:00:52,620 Så kontortid er mandag, tirsdag, Onsdag og torsdag 08:00 til 11:00. 22 00:00:52,620 --> 00:00:54,770 Det er en tidsplan på nettstedet. 23 00:00:54,770 --> 00:00:57,830 >> Seksjoner, som jeg nevnte, starter neste uke. 24 00:00:57,830 --> 00:01:01,390 Og du vil finne ut denne uken hva Planlegg ditt delen er, hvilken dag det er, 25 00:01:01,390 --> 00:01:03,350 og hvem som er din TA er. 26 00:01:03,350 --> 00:01:08,610 >> Problem Set 1 skyldes på torsdag på formiddagen, fredag ​​midt på dagen med en sen dag. 27 00:01:08,610 --> 00:01:10,817 Ja, du har ni sene dager. 28 00:01:10,817 --> 00:01:12,150 Og det er ni oppgavesett. 29 00:01:12,150 --> 00:01:14,320 Og kan bare bruke én sen dag per problem sett. 30 00:01:14,320 --> 00:01:17,930 Ja, i kraft, all problem sett forfaller fredag ​​midt på dagen. 31 00:01:17,930 --> 00:01:18,550 Det er alt. 32 00:01:18,550 --> 00:01:20,400 Alt som detaljene er på pensum. 33 00:01:20,400 --> 00:01:22,360 >> Hver fredag ​​har vi lunsjer. 34 00:01:22,360 --> 00:01:25,230 Vi ønsker å gjøre dette store Selvfølgelig føles litt mindre. 35 00:01:25,230 --> 00:01:26,580 Så du er velkommen til å RSVP. 36 00:01:26,580 --> 00:01:30,050 Gratis lunsj med stipendiat klassekamerater og ansatte. 37 00:01:30,050 --> 00:01:34,120 cs50.yale.edu/rsvp. 38 00:01:34,120 --> 00:01:36,940 >> Alle disse tingene som Jeg har på skjermen, 39 00:01:36,940 --> 00:01:43,330 og mer, kan du finne cs50.yale.edu eller cs50.harvard.edu, hvis du går til Harvard 40 00:01:43,330 --> 00:01:46,800 og ser på dette online. 41 00:01:46,800 --> 00:01:50,240 >> Også på disse nettstedene, er det er massevis av ressurser for deg. 42 00:01:50,240 --> 00:01:54,610 Hver forelesning ikke bare har video av foredraget, men også notater. 43 00:01:54,610 --> 00:01:58,184 Noen vil se forelese og ta notater for deg. 44 00:01:58,184 --> 00:02:00,100 Så du kan bare betale oppmerksomhet under forelesninger, 45 00:02:00,100 --> 00:02:03,970 eller du kan bruke sine notater / vår notater for å supplere dine egne notater. 46 00:02:03,970 --> 00:02:04,987 >> Det er lysbilder online. 47 00:02:04,987 --> 00:02:07,320 Kilden code-- alt David går over i foredraget 48 00:02:07,320 --> 00:02:09,979 eller Scaz går over foredrag, som kildekoden er tilgjengelig online 49 00:02:09,979 --> 00:02:11,750 så vel som som jeg nevnte videoer. 50 00:02:11,750 --> 00:02:14,257 >> Seksjoner, på samme måte, vil alle bli filmet. 51 00:02:14,257 --> 00:02:15,840 Alle disse slides vil være tilgjengelig. 52 00:02:15,840 --> 00:02:18,190 Alle som kode vil være tilgjengelig for deg. 53 00:02:18,190 --> 00:02:22,440 Det er shorts på nettstedet der CS50 medarbeidere tilbringe fem til ti 54 00:02:22,440 --> 00:02:24,130 minutter å gå gjennom emner for deg. 55 00:02:24,130 --> 00:02:26,750 Noen av de du allerede har påtruffet i oppgavesett. 56 00:02:26,750 --> 00:02:30,430 >> Kontortid, som jeg nevnte, mandager gjennom torsdager, 8:00 til 11:00. 57 00:02:30,430 --> 00:02:32,600 CS50 Study er en fantastisk ressurs. 58 00:02:32,600 --> 00:02:37,100 Det er praksis problemer, eksempel lysbilder, kjente feil 59 00:02:37,100 --> 00:02:40,920 at elevene liker å kjøre inn, for i hovedsak hvert emne vi 60 00:02:40,920 --> 00:02:42,650 vil dekke i dette kurset. 61 00:02:42,650 --> 00:02:46,350 >> Og til slutt, på dette lysbildet minst, Reference50 62 00:02:46,350 --> 00:02:49,690 som gir deg informasjon på alle C-funksjoner 63 00:02:49,690 --> 00:02:53,160 du noensinne kunne muligens håp å bruke og mange, mange flere. 64 00:02:53,160 --> 00:02:55,690 >> Igjen, som dot dot dot på bunnen av skjermen 65 00:02:55,690 --> 00:02:59,990 er å vise at det er enda mer ressurser på disse to nettstedene: 66 00:02:59,990 --> 00:03:04,270 cs50.yale.edu, cs50.harvard.edu. 67 00:03:04,270 --> 00:03:05,840 >> Så, hva er det vi gjør i dag? 68 00:03:05,840 --> 00:03:08,970 Vel, første jeg kommer til å gi du ser på ressursene. 69 00:03:08,970 --> 00:03:10,010 Allerede gjorde at en. 70 00:03:10,010 --> 00:03:11,590 Se på oss. 71 00:03:11,590 --> 00:03:16,430 >> Nå skal vi gå over datatyper og operatører i C. 72 00:03:16,430 --> 00:03:19,990 Deretter Andi vil komme opp her og gå over biblioteker i C, printf (), 73 00:03:19,990 --> 00:03:24,570 en funksjon som du allerede kjente eller vil raskt bli veldig 74 00:03:24,570 --> 00:03:25,530 kjent. 75 00:03:25,530 --> 00:03:27,810 Og du vil også gå over conditionals og loops. 76 00:03:27,810 --> 00:03:30,900 >> Og så til slutt, Scaz vil gå over CS50 ID. 77 00:03:30,900 --> 00:03:34,250 Hvis du ikke har due i allerede i oppgave Set 1, 78 00:03:34,250 --> 00:03:37,060 samt hvordan du bruker terminal og nyttige kommandoer 79 00:03:37,060 --> 00:03:42,280 og deretter gi deg noen demoer og praksis koding i CS50 ID. 80 00:03:42,280 --> 00:03:45,130 >> Før jeg hopper inn i dette Innholdet på denne siden, 81 00:03:45,130 --> 00:03:46,770 does noen har noen spørsmål så langt? 82 00:03:46,770 --> 00:03:53,190 83 00:03:53,190 --> 00:03:54,030 Flott. 84 00:03:54,030 --> 00:03:54,950 OK. 85 00:03:54,950 --> 00:03:55,810 Giring. 86 00:03:55,810 --> 00:03:58,760 >> [Giring] 87 00:03:58,760 --> 00:04:03,070 >> Det var meg skiftende tannhjul i en manuell bil. 88 00:04:03,070 --> 00:04:10,920 Så datatyper i C, du kan ikke bare ha en variabel x og la det være på linje 10, 89 00:04:10,920 --> 00:04:17,170 et heltall, kanskje tallet 1, på linje 20, et desimaltall 10,5, 90 00:04:17,170 --> 00:04:20,500 og deretter et par linjer senere en streng, jeg elsker CS50. 91 00:04:20,500 --> 00:04:25,052 >> I C, kan variablene bare være en ting, og en ting bare. 92 00:04:25,052 --> 00:04:26,510 Og så må du gi dem typer. 93 00:04:26,510 --> 00:04:28,780 Og på dette forumet, vi har en liste over typer. 94 00:04:28,780 --> 00:04:32,000 Det er tegn som stå for tegn. 95 00:04:32,000 --> 00:04:36,850 Så det er en bokstav A, B, C, D. Det kan også være en plass, 96 00:04:36,850 --> 00:04:40,290 eller som også kan være en ny linje karakter. 97 00:04:40,290 --> 00:04:45,030 >> Det er hele tall, som er like tall, hele numbers-- eller heltall 98 00:04:45,030 --> 00:04:47,130 rather-- men ingen desimaler. 99 00:04:47,130 --> 00:04:49,790 >> For desimaler, har vi flyttall. 100 00:04:49,790 --> 00:04:53,200 Flyttall er tall med desimaler. 101 00:04:53,200 --> 00:04:58,160 >> Så er det lengter, som er hovedsak lengre heltall. 102 00:04:58,160 --> 00:05:01,160 Du vil merke at en lang er 8 mens en int er 4. 103 00:05:01,160 --> 00:05:02,640 Jeg får til det i et sekund. 104 00:05:02,640 --> 00:05:07,390 Det er fordi lengter kan lagre enda flere tall enn en int kan lagre. 105 00:05:07,390 --> 00:05:10,100 Double er en lang dupp. 106 00:05:10,100 --> 00:05:12,460 >> Og til slutt, har vi streng, som er en type 107 00:05:12,460 --> 00:05:14,430 at du sannsynligvis har brukt før. 108 00:05:14,430 --> 00:05:21,100 Hvis du inkluderer hashtag # includeCS50.h i kildefilen, 109 00:05:21,100 --> 00:05:23,170 så kan du bruke en streng type. 110 00:05:23,170 --> 00:05:25,560 Det er faktisk ikke bygget inn C. 111 00:05:25,560 --> 00:05:27,760 >> Det finnes et par andre typer også. 112 00:05:27,760 --> 00:05:32,900 Men disse er de viktigste de med som du vil bruke og møte. 113 00:05:32,900 --> 00:05:36,210 C som, igjen jeg nevnte, hver variable-- det 114 00:05:36,210 --> 00:05:38,620 kan bare være en type og en type. 115 00:05:38,620 --> 00:05:42,890 Det er fordi C er en statisk skrevet språk, i motsetning 116 00:05:42,890 --> 00:05:45,780 dynamisk skrevet språk der hvis du oppretter en variabel 117 00:05:45,780 --> 00:05:50,081 du kan endre hva som er lagret i det som du går videre i programmet. 118 00:05:50,081 --> 00:05:52,580 Over her på høyre hånd side, jeg har de forskjellige størrelser 119 00:05:52,580 --> 00:05:57,440 av disse typer data i byte. 120 00:05:57,440 --> 00:05:59,710 Så en karakter er en byte. 121 00:05:59,710 --> 00:06:01,250 Det er 8 biter. 122 00:06:01,250 --> 00:06:05,530 Og det betyr fordi 8 bits det er åtte 0'er og 1'ere. 123 00:06:05,530 --> 00:06:08,280 Vi så de demoer i første uke med at binære pærer. 124 00:06:08,280 --> 00:06:15,680 >> Med 8 biter eller en byte, kan vi representere tall fra 0 til 255. 125 00:06:15,680 --> 00:06:16,180 Høyre. 126 00:06:16,180 --> 00:06:18,770 Hvis alle 8 bits er 0 som er 0. 127 00:06:18,770 --> 00:06:23,640 Hvis den første biten er 1, er at antallet en, og så videre, helt opp til 255. 128 00:06:23,640 --> 00:06:28,290 Og det er derfor for tegn du kan har i hovedsak opp til 255 av dem, 129 00:06:28,290 --> 00:06:31,210 men det er nok til å dekke alle tegnene må vi bruke. 130 00:06:31,210 --> 00:06:38,060 >> For heltall, kan du ha 0 og da har du 2 til 32 minus 1. 131 00:06:38,060 --> 00:06:40,340 De er hvor mange alternativer du har for heltall. 132 00:06:40,340 --> 00:06:44,780 >> For en lang, har du 0 til 2 til 64 minus en. 133 00:06:44,780 --> 00:06:48,860 Så du har mange, mange, flere alternativer for lengter. 134 00:06:48,860 --> 00:06:54,220 >> Strenger, er det et spørsmålstegn fordi det er en cliffhanger til senere. 135 00:06:54,220 --> 00:06:55,000 Yeah. 136 00:06:55,000 --> 00:06:56,350 Jeg kunne fortelle alle er på kanten av setet sitt, 137 00:06:56,350 --> 00:06:57,450 som hva er det spørsmålstegn? 138 00:06:57,450 --> 00:06:58,390 Det er en cliffhanger. 139 00:06:58,390 --> 00:07:02,340 Vi vil til slutt dekke størrelsen strenger og snakke mer om strenger. 140 00:07:02,340 --> 00:07:04,692 Fordi strengen er faktisk en av trening hjul 141 00:07:04,692 --> 00:07:06,400 vi satt på i denne kurs i begynnelsen 142 00:07:06,400 --> 00:07:09,700 og deretter ta av senere på, fordi strenger i C 143 00:07:09,700 --> 00:07:13,320 er faktisk pekere å karakter arrays. 144 00:07:13,320 --> 00:07:15,810 Men igjen, det er en Cliffhanger for senere. 145 00:07:15,810 --> 00:07:18,890 Før jeg går videre spørsmål, kommentarer, bekymringer om dette lysbildet? 146 00:07:18,890 --> 00:07:25,800 147 00:07:25,800 --> 00:07:26,630 >> OK. 148 00:07:26,630 --> 00:07:30,330 Jeg må være en fantastisk explainer. 149 00:07:30,330 --> 00:07:33,210 Også når du er programmerer, du kommer til å bruke disse aktørene. 150 00:07:33,210 --> 00:07:36,730 Virkelig enkle tegn som kan gjøre enkle operasjoner, som du antakelig 151 00:07:36,730 --> 00:07:38,340 allerede godt kjent. 152 00:07:38,340 --> 00:07:42,580 >> For eksempel, på høyre siden, ser vi legge til. 153 00:07:42,580 --> 00:07:44,640 For å legge til, du bare gjør et plusstegn. 154 00:07:44,640 --> 00:07:46,850 Og så må du kanskje to variabler x og y. 155 00:07:46,850 --> 00:07:48,810 Du kan gjøre x + y i koden. 156 00:07:48,810 --> 00:07:52,790 Kanskje du ønsker to-- si deg har nummeret 7 og 3, 157 00:07:52,790 --> 00:07:55,780 du ønsker å lagre som i en variabel kalt sum. 158 00:07:55,780 --> 00:08:03,010 Du kan gjøre int for typen, plass sum, navnet av variabelen, = 7 + 3; 159 00:08:03,010 --> 00:08:05,780 >> Hva ville den butikken i sum? 160 00:08:05,780 --> 00:08:07,190 Anyone? 161 00:08:07,190 --> 00:08:09,270 Hvis jeg hadde i sum = 7 + 3. 162 00:08:09,270 --> 00:08:10,437 Hva som ville være lagret i sum? 163 00:08:10,437 --> 00:08:11,520 Du kan bare rope det ut. 164 00:08:11,520 --> 00:08:12,120 PUBLIKUM: 10. 165 00:08:12,120 --> 00:08:12,995 >> JASON Hirschhorn: 10! 166 00:08:12,995 --> 00:08:14,870 Det er helt riktig. 167 00:08:14,870 --> 00:08:19,520 Hva om i sum = 7 - 3, Jeg bare bruke det dash tegn. 168 00:08:19,520 --> 00:08:20,871 Hva kommer til å bli lagret? 169 00:08:20,871 --> 00:08:21,370 PUBLIKUM: 4. 170 00:08:21,370 --> 00:08:22,203 JASON Hirschhorn: 4. 171 00:08:22,203 --> 00:08:25,770 Summen er trolig feil navn for det variable, men 4 vil bli lagret. 172 00:08:25,770 --> 00:08:31,890 >> Å formere seg i C, bruker lite Stjerners karakter, trenger du ikke bruke en x. 173 00:08:31,890 --> 00:08:35,990 Å dele, bruke en Forward Slash ikke divisjonen symbol. 174 00:08:35,990 --> 00:08:39,580 Og for å modulo, bruker Percent symbol. 175 00:08:39,580 --> 00:08:47,900 >> Så la oss si at jeg ønsker å se int z = 7% 3, vil det bli lagret i z? 176 00:08:47,900 --> 00:08:51,250 Så, det er i hovedsak spør hva gjør modulo gjøre? 177 00:08:51,250 --> 00:08:52,750 Vet noen hva modulo gjør? 178 00:08:52,750 --> 00:08:53,940 Yeah. 179 00:08:53,940 --> 00:08:54,870 y 4. 180 00:08:54,870 --> 00:08:56,120 SPEAKER 1: Det er resten. 181 00:08:56,120 --> 00:08:58,369 JASON Hirschhorn: Det er den resten når du deler. 182 00:08:58,369 --> 00:09:02,790 Så 7 delt på 3 er to resterende en. 183 00:09:02,790 --> 00:09:04,690 Slik at en vil bli lagret. 184 00:09:04,690 --> 00:09:06,970 >> Du gjorde subtraksjon, men det er hvordan det fungerer. 185 00:09:06,970 --> 00:09:09,140 Det er hva modulo operatør gjør. 186 00:09:09,140 --> 00:09:12,360 Det tar en rekke deler den av et annet nummer og returnerer til deg 187 00:09:12,360 --> 00:09:14,590 resten. 188 00:09:14,590 --> 00:09:19,770 Så igjen, 7% 3 gir deg en, fordi 7 delt på 3 er to resterende 1, 189 00:09:19,770 --> 00:09:21,650 og returnerer resten. 190 00:09:21,650 --> 00:09:24,470 >> Hva om la oss gå tilbake opp ett trinn til at divisjonen tegn. 191 00:09:24,470 --> 00:09:29,194 Hvis jeg gjorde 7 / delt på tre gjør Noen som vet hva som ville komme tilbake? 192 00:09:29,194 --> 00:09:30,090 >> SPEAKER 2: 2. 193 00:09:30,090 --> 00:09:32,240 >> JASON Hirschhorn: Hvorfor 2 og ikke 2,333? 194 00:09:32,240 --> 00:09:34,560 >> SPEAKER 2: Jeg tror det skjærer av etter hele tall. 195 00:09:34,560 --> 00:09:36,310 JASON Hirschhorn: So det er helt riktig. 196 00:09:36,310 --> 00:09:39,880 I C, hvis du gjør delingen av to heltall 7 delt på tre, 197 00:09:39,880 --> 00:09:43,430 det blir svaret som i dette tilfellet 2,3333 forever 198 00:09:43,430 --> 00:09:47,080 og den finner at desimaltegn og hakker alt av etter desimal 199 00:09:47,080 --> 00:09:49,240 og det bare returnerer du to. 200 00:09:49,240 --> 00:09:51,120 >> Så hvis jeg gjorde 8 delt på tre. 201 00:09:51,120 --> 00:09:54,010 Som faktisk, vi vet som å gå tilbake 2,666, 202 00:09:54,010 --> 00:09:57,050 men det hakker alt av på desimaltegnet, avkorter det hele, 203 00:09:57,050 --> 00:09:58,640 og bare tilbake til deg to. 204 00:09:58,640 --> 00:10:02,090 Så 6 dividert med 3, 7 delt med 3, 8 dividert med 3, 205 00:10:02,090 --> 00:10:04,840 er alle kommer til å vende tilbake til dere to. 206 00:10:04,840 --> 00:10:08,770 >> Er det noen som vet, eller har en gjetning, om hvordan jeg kunne faktisk få 207 00:10:08,770 --> 00:10:10,790 hele svaret hvis jeg vil at desimal? 208 00:10:10,790 --> 00:10:13,120 209 00:10:13,120 --> 00:10:13,620 Yeah. 210 00:10:13,620 --> 00:10:14,152 Gå fremover. 211 00:10:14,152 --> 00:10:15,110 SPEAKER 3: Bruk en dupp? 212 00:10:15,110 --> 00:10:16,942 JASON Hirschhorn: Hva mener du? 213 00:10:16,942 --> 00:10:19,786 SPEAKER 3: Fordi du sa float er for tall [uhørbart] 214 00:10:19,786 --> 00:10:22,900 215 00:10:22,900 --> 00:10:23,900 JASON Hirschhorn: Høyre. 216 00:10:23,900 --> 00:10:26,100 Så, det er helt riktig. 217 00:10:26,100 --> 00:10:28,440 7 er et heltall. 218 00:10:28,440 --> 00:10:31,690 Men hvis jeg ønsket å slå det inn i en flyttall, 219 00:10:31,690 --> 00:10:34,674 Jeg ville ha til å lagre det som 7,0 fordi datamaskinen 220 00:10:34,674 --> 00:10:37,090 er virkelig stupid-- vi så at med PB og J example-- 221 00:10:37,090 --> 00:10:38,930 det vil bare gjøre akkurat hva du forteller det. 222 00:10:38,930 --> 00:10:40,846 >> Så hvis du skriver 7, det tror det er et heltall. 223 00:10:40,846 --> 00:10:43,640 Hvis du skriver 7.0, selv om vi vet disse tingene er tilsvarende, 224 00:10:43,640 --> 00:10:45,550 den behandler som som en desimaltall. 225 00:10:45,550 --> 00:10:50,441 Så hvis du gjorde 7,0 delt av tre, eller delt på 3,0, 226 00:10:50,441 --> 00:10:52,440 det vil si, OK, nå vi har å gjøre med flyter. 227 00:10:52,440 --> 00:10:57,514 Jeg kommer tilbake til deg 2.333333 alltid. 228 00:10:57,514 --> 00:10:59,930 Men egentlig ikke for alltid, fordi som vi så også i foredraget 229 00:10:59,930 --> 00:11:03,350 disse flyttall er ikke akkurat presis. 230 00:11:03,350 --> 00:11:05,940 >> Så hvis du vil at desimal, eller en del av dette desimal, 231 00:11:05,940 --> 00:11:08,090 så må du use-- en av dem må være et desimaltall 232 00:11:08,090 --> 00:11:11,048 og datamaskinen må forstå at dette er en flytende punktet du er 233 00:11:11,048 --> 00:11:13,350 arbeider med, ikke er et heltall. 234 00:11:13,350 --> 00:11:16,760 Eventuelle spørsmål om dette bordet på høyre side, så langt? 235 00:11:16,760 --> 00:11:22,650 Eller venstre side, din venstre, venstre side. 236 00:11:22,650 --> 00:11:23,264 Yeah. 237 00:11:23,264 --> 00:11:23,972 SPEAKER 4: Høyre. 238 00:11:23,972 --> 00:11:26,216 For akkurat som en vanlig heltall, ville du 239 00:11:26,216 --> 00:11:30,230 write-- ville du måtte skrive flyte? 240 00:11:30,230 --> 00:11:31,920 >> JASON Hirschhorn: Yeah så. 241 00:11:31,920 --> 00:11:34,400 Vel, hvis du ønsker å opprette en variabel som er en dupp, 242 00:11:34,400 --> 00:11:37,020 du trenger å si float z er lik noe. 243 00:11:37,020 --> 00:11:37,640 >> SPEAKER 4: OK. 244 00:11:37,640 --> 00:11:41,950 >> JASON Hirschhorn: Men hvis jeg ønsket å gjøre 7 delt på 3 og få den desimal, 245 00:11:41,950 --> 00:11:48,540 Jeg ville gjøre float z = 7,0 / med 3,0; og som ville gi meg flyttall 246 00:11:48,540 --> 00:11:49,273 nummer. 247 00:11:49,273 --> 00:11:50,000 >> SPEAKER 4: OK. 248 00:11:50,000 --> 00:11:56,370 >> JASON Hirschhorn: Hvis jeg gjorde noe som int z = 7 / med 3, 249 00:11:56,370 --> 00:12:00,856 som ville gi meg et heltall, fordi de er alle heltall. 250 00:12:00,856 --> 00:12:01,730 Gir det mening? 251 00:12:01,730 --> 00:12:02,320 >> SPEAKER 4: Ja. 252 00:12:02,320 --> 00:12:02,950 >> JASON Hirschhorn: OK. 253 00:12:02,950 --> 00:12:03,450 Flott. 254 00:12:03,450 --> 00:12:06,030 Andre spørsmål om dette bordet? 255 00:12:06,030 --> 00:12:07,220 Virkelig? 256 00:12:07,220 --> 00:12:08,380 Jeg er så spent. 257 00:12:08,380 --> 00:12:09,120 OK. 258 00:12:09,120 --> 00:12:13,910 >> Så noen andre ting du vil bruke, ofte i forhold eller løkker, 259 00:12:13,910 --> 00:12:17,580 er disse typer operators-- disse typer boolske uttrykk. 260 00:12:17,580 --> 00:12:23,140 Og som vi har lært, er det du == bruke for å sjekke om to ting er like. 261 00:12:23,140 --> 00:12:28,170 >> Så her jeg sjekke om x == y, la oss igjen antar at x er 7, og y er 3. 262 00:12:28,170 --> 00:12:33,220 Så hvis jeg skrev 7 == 3, hva ville det tilbake til meg? 263 00:12:33,220 --> 00:12:34,220 Er det sant eller usant? 264 00:12:34,220 --> 00:12:35,275 >> PUBLIKUM: False. 265 00:12:35,275 --> 00:12:36,150 JASON Hirschhorn: OK. 266 00:12:36,150 --> 00:12:37,370 Jeg føler at alle kan få denne. 267 00:12:37,370 --> 00:12:39,054 Så alle sammen, hva ville det komme tilbake? 268 00:12:39,054 --> 00:12:39,720 PUBLIKUM: False. 269 00:12:39,720 --> 00:12:40,130 JASON Hirschhorn: False. 270 00:12:40,130 --> 00:12:40,850 Flott. 271 00:12:40,850 --> 00:12:41,930 7 ikke lik tre. 272 00:12:41,930 --> 00:12:44,530 Så 7 == 3 vil returnere false. 273 00:12:44,530 --> 00:12:50,746 Du har en ikke likhetstegn, så hvis jeg merket av 7! = 3, hva ville det komme tilbake? 274 00:12:50,746 --> 00:12:51,370 PUBLIKUM: Sann. 275 00:12:51,370 --> 00:12:52,650 JASON Hirschhorn: Sann. 276 00:12:52,650 --> 00:12:53,200 Utmerket. 277 00:12:53,200 --> 00:12:55,990 Noen var veldig ettertrykkelig i ryggen og setter pris på det. 278 00:12:55,990 --> 00:12:59,070 Da har du mindre enn operatør, mindre enn eller lik operatør, 279 00:12:59,070 --> 00:13:01,990 større enn operatør, større enn eller lik operatør. 280 00:13:01,990 --> 00:13:03,490 >> Så en mer sunn fornuft sjekk. 281 00:13:03,490 --> 00:13:05,660 Hvis jeg hadde 7 er større enn eller lik tre. 282 00:13:05,660 --> 00:13:06,966 Hva ville det komme tilbake? 283 00:13:06,966 --> 00:13:07,692 >> PUBLIKUM: Sann. 284 00:13:07,692 --> 00:13:08,650 JASON Hirschhorn: Sann. 285 00:13:08,650 --> 00:13:10,050 Ja. 286 00:13:10,050 --> 00:13:13,290 Det bakrommet, bakside av rommet, fantastisk. 287 00:13:13,290 --> 00:13:16,240 Du kan kombinere disse uttrykk hvis du vil, også, 288 00:13:16,240 --> 00:13:21,880 med en logisk OG, som er && Eller en logisk OR som er || 289 00:13:21,880 --> 00:13:22,800 ||. 290 00:13:22,800 --> 00:13:25,785 Og så nå kan du teste to ting together-- Er det morsomt? 291 00:13:25,785 --> 00:13:28,250 Hvorfor er det morsomt? 292 00:13:28,250 --> 00:13:35,200 >> Så hvis jeg ville, kan jeg si er 7 er større enn 3 og 2 er mindre enn 4? 293 00:13:35,200 --> 00:13:37,090 Vel, hvis 7 er større enn tre, det er sant. 294 00:13:37,090 --> 00:13:38,400 2 er mindre enn fire, det er sant. 295 00:13:38,400 --> 00:13:41,140 Så dette hele greia ville returnere true. 296 00:13:41,140 --> 00:13:45,130 >> Hvis jeg testet syv er større enn 3 og-- Jeg bare plukke tilfeldige tall her-- 297 00:13:45,130 --> 00:13:47,340 4 er mindre enn to, vel, det er falsk. 298 00:13:47,340 --> 00:13:49,610 Så sant og usant make falsk. 299 00:13:49,610 --> 00:13:54,520 Og du kan gå på og du kombinere så mange forhold sammen som du ønsker. 300 00:13:54,520 --> 00:14:00,000 >> Er det noen som har noen spørsmål, kommentarer, bekymringer så langt? 301 00:14:00,000 --> 00:14:03,862 Og jeg ser noen av dere å ta bilder av meg i skjermen, noe som jeg setter pris på. 302 00:14:03,862 --> 00:14:05,070 Forhåpentligvis er det ikke snapchat. 303 00:14:05,070 --> 00:14:06,417 Forhåpentligvis er det for notatene. 304 00:14:06,417 --> 00:14:08,500 Men alle disse kommer å være tilgjengelig på nettet. 305 00:14:08,500 --> 00:14:11,210 Så du trenger ikke å ta bilder av dette. 306 00:14:11,210 --> 00:14:15,150 Som jeg nevnte, alt vil være tilgjengelig på nettet for deg. 307 00:14:15,150 --> 00:14:15,650 OK. 308 00:14:15,650 --> 00:14:17,980 Jeg er i ferd med å få utenfor scenen, så gjør noen 309 00:14:17,980 --> 00:14:20,350 ønsker å si noe før det skjer? 310 00:14:20,350 --> 00:14:21,080 Spørsmål? 311 00:14:21,080 --> 00:14:21,680 >> [Interposing VOICES] 312 00:14:21,680 --> 00:14:22,250 >> JASON Hirschhorn: Oh, stopp. 313 00:14:22,250 --> 00:14:23,290 Dere er også fint. 314 00:14:23,290 --> 00:14:23,790 OK. 315 00:14:23,790 --> 00:14:26,520 Jeg kommer til å merke ut. 316 00:14:26,520 --> 00:14:27,240 La oss gå. 317 00:14:27,240 --> 00:14:29,570 >> ANDI PENG: Vi kommer til å gjøre en vanskelig mic endring nå. 318 00:14:29,570 --> 00:14:32,280 >> JASON Hirschhorn: Jeg er kommer til å ta dette av. 319 00:14:32,280 --> 00:14:33,946 ANDI PENG: Setter pris på støtten, folkens. 320 00:14:33,946 --> 00:14:42,250 321 00:14:42,250 --> 00:14:43,180 Kan du høre meg? 322 00:14:43,180 --> 00:14:43,930 Er det bra? 323 00:14:43,930 --> 00:14:44,760 Perfekt. 324 00:14:44,760 --> 00:14:45,630 Vakkert. 325 00:14:45,630 --> 00:14:47,490 La meg bare brette det i. 326 00:14:47,490 --> 00:14:49,100 OK. 327 00:14:49,100 --> 00:14:54,140 Så, jeg er i ferd med å gjøre som en gigantisk informasjon dumpe på dere akkurat nå. 328 00:14:54,140 --> 00:14:57,370 Og ingen bekymringer overhodet hvis du er ikke å følge hver lille linje med hva 329 00:14:57,370 --> 00:14:58,812 Jeg er i ferd med å vise deg. 330 00:14:58,812 --> 00:15:00,770 Som Jason sa, alt er helt online. 331 00:15:00,770 --> 00:15:03,780 Bare vi kommer til å prøve å introdusere alle til begrepene dekket 332 00:15:03,780 --> 00:15:05,270 i noen av disse lysbildene. 333 00:15:05,270 --> 00:15:06,582 Så bare følge med. 334 00:15:06,582 --> 00:15:09,540 Ingen grunn til bekymring dersom du ikke forstår alt; imidlertid, hvis til enhver 335 00:15:09,540 --> 00:15:12,820 du føler tapt, heve Derimot vil vi stoppe, ingen bekymringer. 336 00:15:12,820 --> 00:15:15,060 Cool. 337 00:15:15,060 --> 00:15:19,270 >> Så jeg tror noe på at David har allerede slags nevnt i forelesning 338 00:15:19,270 --> 00:15:23,240 og Jason har slags hentydet til i dag er det et bibliotek er. 339 00:15:23,240 --> 00:15:27,510 Så i programmering, har vi disse tingene kalt biblioteker. 340 00:15:27,510 --> 00:15:29,690 Der, i hovedsak, alt de er bare et sett 341 00:15:29,690 --> 00:15:32,610 av funksjoner, som er egentlig bare kode som er 342 00:15:32,610 --> 00:15:35,070 allerede blitt skrevet av noen andre som vi kan alle 343 00:15:35,070 --> 00:15:36,410 bruk innenfor våre programmer. 344 00:15:36,410 --> 00:15:38,790 >> Så hvordan gjør en normal bibliotek arbeid, ikke sant? 345 00:15:38,790 --> 00:15:40,030 Du kommer inn i biblioteket døren. 346 00:15:40,030 --> 00:15:41,890 Du har alle disse bøker du kan trekke ut 347 00:15:41,890 --> 00:15:44,590 og du kan få tilgang til informasjon innenfor disse bøkene. 348 00:15:44,590 --> 00:15:45,840 Samme i programmering. 349 00:15:45,840 --> 00:15:48,820 >> Du har et bibliotek som allerede har er skrevet av andre mennesker. 350 00:15:48,820 --> 00:15:51,530 Og måten du kan, som programmerer eller en student, 351 00:15:51,530 --> 00:15:55,780 kan få tilgang til det biblioteket er gjennom hashtag # include. 352 00:15:55,780 --> 00:15:59,720 >> For eksempel, i C vi har tre C-- mest 353 00:15:59,720 --> 00:16:03,420 brukte tre-C standard libraries-- input / output bibliotek, 354 00:16:03,420 --> 00:16:05,540 strengen bibliotek, og regnestykket bibliotek. 355 00:16:05,540 --> 00:16:07,610 >> Så i løpet av den første par problem setter, 356 00:16:07,610 --> 00:16:10,940 de vil være tre at du først og fremst bruker. 357 00:16:10,940 --> 00:16:14,610 Så som David allerede forklart i foredraget 358 00:16:14,610 --> 00:16:17,460 standard I / O-bibliotek, eller standard input / output bibliotek 359 00:16:17,460 --> 00:16:18,620 gjør akkurat det. 360 00:16:18,620 --> 00:16:23,530 Det gjør at du, i koden din, til innspill alt fra brukeren og utgang som 361 00:16:23,530 --> 00:16:25,960 til skjermen, i det vesentlige skriver den til skjermen. 362 00:16:25,960 --> 00:16:29,990 >> Og så helst at du bruker noen funksjoner, for eksempel funksjonen printf () hvilken 363 00:16:29,990 --> 00:16:33,319 vi kommer til å gå over neste lysbilde, sørg for å inkludere standard I / O 364 00:16:33,319 --> 00:16:36,360 bibliotek eller annet du ikke kommer til å kunne bruke printf () -funksjonen. 365 00:16:36,360 --> 00:16:39,110 Fordi du, som programmerer aldri faktisk skrev at funksjon, 366 00:16:39,110 --> 00:16:41,840 du bare bruker noen annens kode i din egen kode. 367 00:16:41,840 --> 00:16:43,620 >> Betyr det fornuftig alle? 368 00:16:43,620 --> 00:16:44,520 Cool. 369 00:16:44,520 --> 00:16:48,530 >> Og da er vi i hovedsak komme inn den string.h biblioteket og math.h 370 00:16:48,530 --> 00:16:52,970 bibliotek, .h bare betyr bibliotek, andre bibliotek som du etterhvert 371 00:16:52,970 --> 00:16:55,310 skal bruke i koden. 372 00:16:55,310 --> 00:16:57,620 >> Imidlertid, for formål av dette biblioteket, vi også 373 00:16:57,620 --> 00:17:01,170 have-- av dette class-- vi har også det som kalles CS50 biblioteket, 374 00:17:01,170 --> 00:17:05,270 cs50.h, hvor vi, for gjennomlesing din har skapt 375 00:17:05,270 --> 00:17:07,369 mange viktige og nyttige funksjoner. 376 00:17:07,369 --> 00:17:09,550 Slik at du som programmerer kan piggyback off 377 00:17:09,550 --> 00:17:14,470 hva vi allerede har skrevet slik at Denne funksjonen er tilgjengelig for deg 378 00:17:14,470 --> 00:17:15,599 for din bruk. 379 00:17:15,599 --> 00:17:18,359 >> Jeg skal dekke et par funksjonene som vanligvis brukes, 380 00:17:18,359 --> 00:17:20,839 men vet at disse er alle googleable online. 381 00:17:20,839 --> 00:17:24,904 Føl deg fri, dra opp CS50 biblioteket og da har du alle funksjonene der. 382 00:17:24,904 --> 00:17:25,828 Yeah. 383 00:17:25,828 --> 00:17:28,140 >> SPEAKER 5: Så hvis du ikke var hjelp av programvaren som 384 00:17:28,140 --> 00:17:29,916 er gitt til oss av klassen, gjør at 385 00:17:29,916 --> 00:17:32,698 mener vi må laste ned og finne denne overskriften filen oss selv og fortelle 386 00:17:32,698 --> 00:17:33,840 datamaskinen der det er? 387 00:17:33,840 --> 00:17:34,320 >> ANDI PENG: Great spørsmålet. 388 00:17:34,320 --> 00:17:34,820 Nøyaktig. 389 00:17:34,820 --> 00:17:38,194 Så det er som om du ikke er fysisk til stede ved et bibliotek, 390 00:17:38,194 --> 00:17:40,360 det er ingen måte for deg å faktisk gå og få tilgang til den. 391 00:17:40,360 --> 00:17:42,589 Så det samme med programmering i C, du 392 00:17:42,589 --> 00:17:45,880 må sørge for at du bruker vår apparatet fordi biblioteket er allerede 393 00:17:45,880 --> 00:17:47,270 er innarbeidet i den. 394 00:17:47,270 --> 00:17:50,020 Og så når du hashtag #include, bibliotekets der. 395 00:17:50,020 --> 00:17:50,520 Yeah. 396 00:17:50,520 --> 00:17:51,920 Godt spørsmål. 397 00:17:51,920 --> 00:17:53,461 Alle gode? 398 00:17:53,461 --> 00:17:53,960 Cool. 399 00:17:53,960 --> 00:17:56,371 400 00:17:56,371 --> 00:17:56,870 Greit. 401 00:17:56,870 --> 00:17:59,330 Så vi kommer til å treffe, hovedsak, hva er 402 00:17:59,330 --> 00:18:01,620 den første funksjon som vi som programmerere er 403 00:18:01,620 --> 00:18:03,900 skal bruke i vår kode. 404 00:18:03,900 --> 00:18:05,690 Dette kalles printf () -funksjonen. 405 00:18:05,690 --> 00:18:08,450 Så, printf () -funksjonen, som jeg har allerede sagt i det siste lysbildet, 406 00:18:08,450 --> 00:18:11,830 er inkludert i standard I / O, standard input / output, bibliotek. 407 00:18:11,830 --> 00:18:16,470 >> Så sørg for at uansett hva du using-- oh, la meg ta tak i laser pointer-- 408 00:18:16,470 --> 00:18:18,660 når du bruker printf () -funksjonen, 409 00:18:18,660 --> 00:18:21,790 du må inkludere standard I / O bibliotek eller annet, når du kompilere, 410 00:18:21,790 --> 00:18:23,760 du kommer til å få en feil fordi datamaskinen vil være like, 411 00:18:23,760 --> 00:18:26,140 Åh, jeg vet ikke hvor printf () er, du ikke fortelle meg hvor printf () 412 00:18:26,140 --> 00:18:26,830 er. 413 00:18:26,830 --> 00:18:30,150 Vel printf () er inkludert i standard I / O, så når du bruker printf (), 414 00:18:30,150 --> 00:18:32,960 sørg for å ha det linje ovenfor koden din. 415 00:18:32,960 --> 00:18:36,040 >> Så for eksempel printf () her er en funksjon. 416 00:18:36,040 --> 00:18:40,260 Alt det gjør er å skrive ut noe i parentes for brukeren. 417 00:18:40,260 --> 00:18:44,840 Vil noen liker å ta et stikk på hva denne linjen med kode rett 418 00:18:44,840 --> 00:18:46,420 her kommer til å skrive ut? 419 00:18:46,420 --> 00:18:48,730 Derfor er svaret på skjermen. 420 00:18:48,730 --> 00:18:50,480 Anyone? 421 00:18:50,480 --> 00:18:51,380 >> VERDI: Den nederste. 422 00:18:51,380 --> 00:18:53,510 >> ANDI PENG: Verdi, hvorfor ikke du gå videre og si hele setningen? 423 00:18:53,510 --> 00:18:55,718 >> VERDI: Hei, mitt navn Andi, og jeg er 20 år gammel. 424 00:18:55,718 --> 00:18:57,270 ANDI PENG: Ah, nydelig. 425 00:18:57,270 --> 00:19:00,240 Så i denne linjen vi kommer til å skrive ut, Hei, mitt navn er Andi, 426 00:19:00,240 --> 00:19:04,280 og jeg er 20 år gammel, noe som er faktisk et sant utsagn. 427 00:19:04,280 --> 00:19:05,090 >> Syntaks. 428 00:19:05,090 --> 00:19:08,830 Så par syntaktiske problemstillinger som dere vil være sikker på at du vet. 429 00:19:08,830 --> 00:19:09,360 Sitater. 430 00:19:09,360 --> 00:19:13,170 Anførselstegn fortelle datamaskin som alt inni 431 00:19:13,170 --> 00:19:14,850 kommer til å bli skrevet ut. 432 00:19:14,850 --> 00:19:16,620 >> Alt inni boksen bare være nøyaktig hvordan 433 00:19:16,620 --> 00:19:19,920 du skriver det, med unntak av vanligvis ved enden, 434 00:19:19,920 --> 00:19:23,610 vi kommer til å ønske å inkludere en hash-- oh sorry-- en dash n. 435 00:19:23,610 --> 00:19:24,640 Så en dash n. 436 00:19:24,640 --> 00:19:28,884 >> Er det noen som ønsker å ta en gjetning på hva som gjør vår kode? 437 00:19:28,884 --> 00:19:29,465 Yeah. 438 00:19:29,465 --> 00:19:30,840 SPEAKER 6: Setter den på en ny linje. 439 00:19:30,840 --> 00:19:31,650 ANDI PENG: Nettopp. 440 00:19:31,650 --> 00:19:34,660 Så alt dette gjør er tillate uansett hva som skjer 441 00:19:34,660 --> 00:19:37,520 etter dette, etter denne uttalelsen, som skal skrives ut til en ny linje. 442 00:19:37,520 --> 00:19:40,030 Slik at når du skriver din kode du ikke tilfeldig ha ting 443 00:19:40,030 --> 00:19:41,738 flytt til slutten at du ikke vil. 444 00:19:41,738 --> 00:19:43,700 At alt blir pent trykt én linje 445 00:19:43,700 --> 00:19:46,870 og så starter vi på neste linje. 446 00:19:46,870 --> 00:19:50,970 >> Er det noen som husker hva som semikolon gjør når vi er koding? 447 00:19:50,970 --> 00:19:54,580 448 00:19:54,580 --> 00:19:55,330 Yeah. 449 00:19:55,330 --> 00:19:55,740 >> SPEAKER 7: Uttalelse. 450 00:19:55,740 --> 00:19:56,010 >> ANDI PENG: Sorry? 451 00:19:56,010 --> 00:19:57,100 >> SPEAKER 7: Betyr det ende uttalelsen? 452 00:19:57,100 --> 00:19:57,766 >> ANDI PENG: Yeah. 453 00:19:57,766 --> 00:20:02,670 Så i C, eller programmering språk, semikolon 454 00:20:02,670 --> 00:20:04,640 betegner enden av en programmerings linje. 455 00:20:04,640 --> 00:20:09,240 Så for eksempel i engelsk bruker vi perioden å si, oh dette er slutten en setning. 456 00:20:09,240 --> 00:20:12,857 I programmering samme, har vi en semikolon for å betegne slutten av en linje. 457 00:20:12,857 --> 00:20:14,690 Ofte når du er begynner å programmere, 458 00:20:14,690 --> 00:20:17,150 vil du innse at du Husk å legge til et semikolon 459 00:20:17,150 --> 00:20:19,400 og deretter prøver å kjøre kode og det fungerer ikke. 460 00:20:19,400 --> 00:20:21,520 Og du er like, Ah, jeg gjør ikke vet ikke hvorfor, det skal jobbe. 461 00:20:21,520 --> 00:20:24,394 >> Sjansene er du sannsynligvis glemte en semikolon eller en brakett eller noe 462 00:20:24,394 --> 00:20:25,020 et sted. 463 00:20:25,020 --> 00:20:27,740 Så, det er viktig å huske. 464 00:20:27,740 --> 00:20:29,627 Cool. 465 00:20:29,627 --> 00:20:31,960 All right, håndsopprekning, hvordan mange mennesker her noensinne 466 00:20:31,960 --> 00:20:37,210 tatt AP Computer Science eller programmert i Java før, noensinne? 467 00:20:37,210 --> 00:20:37,710 OK. 468 00:20:37,710 --> 00:20:38,210 Lovely. 469 00:20:38,210 --> 00:20:41,340 Det vil ikke være aktuelt da, men i Java, du 470 00:20:41,340 --> 00:20:44,960 har noe som kalles System.out.println som ikke eksisterer i C. 471 00:20:44,960 --> 00:20:49,927 >> Så i C, når du ønsker å legge inn variabler 472 00:20:49,927 --> 00:20:51,760 inn alt du vil å skrive ut, er det 473 00:20:51,760 --> 00:20:54,620 en bestemt syntaks vi kommer til å bruke. 474 00:20:54,620 --> 00:20:56,520 Det kalles placeholding-- hovedsak 475 00:20:56,520 --> 00:21:01,180 vi legger plassholdere på plass av heltall eller den variable 476 00:21:01,180 --> 00:21:02,580 at vi ønsker å skrive ut. 477 00:21:02,580 --> 00:21:07,430 >> Så som dere kan se har vi inkludert et nytt bibliotek header fil her. 478 00:21:07,430 --> 00:21:09,130 Den CS50 biblioteket. 479 00:21:09,130 --> 00:21:13,160 Og finnes det CS50 bibliotek er en vanlig funksjon vi skal bruke 480 00:21:13,160 --> 00:21:15,610 i våre kurs kalt GetInt (). 481 00:21:15,610 --> 00:21:21,830 >> Er det noen som ønsker å ta en stikke på hva GetInt () kan muligens være å gjøre. 482 00:21:21,830 --> 00:21:22,830 >> PUBLIKUM: [uhørbart] 483 00:21:22,830 --> 00:21:23,550 >> ANDI PENG: Sorry. 484 00:21:23,550 --> 00:21:24,370 Kunne ikke høre deg. 485 00:21:24,370 --> 00:21:25,511 Maddie, noen. 486 00:21:25,511 --> 00:21:27,260 Maddie: Oh, ber det du for et heltall. 487 00:21:27,260 --> 00:21:28,051 ANDI PENG: Nettopp. 488 00:21:28,051 --> 00:21:30,670 Så denne funksjonen, en annen funksjon som allerede 489 00:21:30,670 --> 00:21:33,690 blitt skrevet av noen andre at vi kan påkalle nå. 490 00:21:33,690 --> 00:21:38,000 Alt er det er be deg, brukeren, å legge inn hva du vil så koden 491 00:21:38,000 --> 00:21:41,850 er i gang og den lagrer whatever-- i dette tilfellet er vi GetInt () - ing, 492 00:21:41,850 --> 00:21:44,060 så det betyr at vi er å skaffe et heltall. 493 00:21:44,060 --> 00:21:46,150 >> Og vi kommer til å lagre at i et annet heltall 494 00:21:46,150 --> 00:21:48,900 at vi nettopp har gjort kalt alder. 495 00:21:48,900 --> 00:21:51,500 Det fornuftig for alle? 496 00:21:51,500 --> 00:21:52,190 Cool. 497 00:21:52,190 --> 00:21:56,400 >> Så nå som vi har lagret dette heltall, at vi har bedt om fra brukeren, 498 00:21:56,400 --> 00:22:00,010 i denne variabelen, har vi opprettet av type int kalt alder, 499 00:22:00,010 --> 00:22:03,720 vi kan gå videre og sted at i vår printf () -funksjonen. 500 00:22:03,720 --> 00:22:08,970 Så syntaksen vanligvis for printf () er at uansett hvor i det faktiske fysiske 501 00:22:08,970 --> 00:22:14,410 linjen du ønsker å inkludere som heltall, du gjør som symbol rett der, 502 00:22:14,410 --> 00:22:17,800 prosent symbol, med den type variabel som du vil. 503 00:22:17,800 --> 00:22:20,090 >> Så i dette tilfellet over er et helt tall. 504 00:22:20,090 --> 00:22:25,030 Så du kommer til å omfatte % i fordi det er et heltall. 505 00:22:25,030 --> 00:22:26,860 Og så etter din uttalelse, du kommer 506 00:22:26,860 --> 00:22:30,370 å gjøre komma og navnet på variabelen. 507 00:22:30,370 --> 00:22:33,420 >> Så her, kommer vi til å skrive ut ut, Hello, my name is Andi, 508 00:22:33,420 --> 00:22:35,730 og jeg er tomme år gammel. 509 00:22:35,730 --> 00:22:38,890 Hashta-- eller sorry--, alder med hva jeg innspill. 510 00:22:38,890 --> 00:22:42,790 Så hvis jeg skulle innspill 20 for min GetInt () her, 511 00:22:42,790 --> 00:22:44,500 det ville skrive ut akkurat det samme. 512 00:22:44,500 --> 00:22:47,990 Men, hvis jeg ønsket å skrive noe annet, som kanskje 40 eller 45, 513 00:22:47,990 --> 00:22:50,800 så ville du se at reflektert følgelig i koden. 514 00:22:50,800 --> 00:22:52,886 >> Så dette er et eksempel på noe der 515 00:22:52,886 --> 00:22:55,260 det skrives ut og ser ut til å deg som om det er det samme, 516 00:22:55,260 --> 00:22:57,593 men under panseret datamaskinen er det faktisk 517 00:22:57,593 --> 00:22:59,560 svært forskjellige ting skjer. 518 00:22:59,560 --> 00:23:00,060 Cool. 519 00:23:00,060 --> 00:23:02,760 520 00:23:02,760 --> 00:23:03,260 Greit. 521 00:23:03,260 --> 00:23:06,940 Så hva om vi ønsker flere variabler? 522 00:23:06,940 --> 00:23:08,290 Ganske enkelt. 523 00:23:08,290 --> 00:23:09,150 Samme ting. 524 00:23:09,150 --> 00:23:11,930 Vi har også en ny funksjon her kalt GetString () 525 00:23:11,930 --> 00:23:15,380 også inkludert innenfor CS50 biblioteket at alt den gjør er å be brukeren 526 00:23:15,380 --> 00:23:18,120 for en streng, som er bare et sett med tegn, 527 00:23:18,120 --> 00:23:19,810 så ut som en setning eller som et navn. 528 00:23:19,810 --> 00:23:25,470 >> Så i dette tilfellet, ville vi ha to plassholdere% s for streng og% i 529 00:23:25,470 --> 00:23:26,750 for heltall. 530 00:23:26,750 --> 00:23:29,190 Og vi kommer til å følge at ved de to variablene 531 00:23:29,190 --> 00:23:32,670 vi vil ha med, i den rekkefølgen at de vises i setningen. 532 00:23:32,670 --> 00:23:35,471 Så for eksempel, er mitt navn blank, jeg vil ha et navn der, 533 00:23:35,471 --> 00:23:36,970 så jeg kommer til å ha navnet først. 534 00:23:36,970 --> 00:23:39,637 Og så etterpå, jeg vil ha alder, vil ha alders andre. 535 00:23:39,637 --> 00:23:42,720 Og så hvis jeg ønsket å legge inn, Hello, mitt navns Andi, og jeg er 20 år gammel. 536 00:23:42,720 --> 00:23:46,370 Hvis jeg matet Andi og 20, den eksakt samme ville skrive; 537 00:23:46,370 --> 00:23:51,134 Men nå har vi fikk to lagret variabler av navn samt int. 538 00:23:51,134 --> 00:23:51,634 Yeah. 539 00:23:51,634 --> 00:23:54,124 >> SPEAKER 8: Ville det være stand til å kjøre hvis du byttet 540 00:23:54,124 --> 00:23:55,620 navn og alder på slutten av det? 541 00:23:55,620 --> 00:23:55,840 >> ANDI PENG: Yeah. 542 00:23:55,840 --> 00:23:57,006 Det er virkelig godt spørsmål. 543 00:23:57,006 --> 00:23:59,520 Så lang historie kort, nei. 544 00:23:59,520 --> 00:24:03,070 Fordi navn og age-- hva type variabel er navnet? 545 00:24:03,070 --> 00:24:03,950 >> SPEAKER 8: String. 546 00:24:03,950 --> 00:24:05,440 >> ANDI PENG: Og hva type variabel er alder? 547 00:24:05,440 --> 00:24:06,231 >> SPEAKER 8: Integer. 548 00:24:06,231 --> 00:24:10,290 ANDI PENG: Så her har vi en plassholder for streng og heltall, ikke sant? 549 00:24:10,290 --> 00:24:13,350 Så hvis du skulle bytte disse, datamaskinen er ikke til å kjenne. 550 00:24:13,350 --> 00:24:16,250 Det kommer til å se etter en streng, og hvis du prøver å gi den en int, 551 00:24:16,250 --> 00:24:18,083 det kommer til å bli som vent jeg er forvirret, du 552 00:24:18,083 --> 00:24:21,100 fortalte meg at jeg burde være tildeling minne for en int. 553 00:24:21,100 --> 00:24:23,760 Og akkurat her, når det forventer et heltall 554 00:24:23,760 --> 00:24:25,640 og du gir den et navn og en streng i stedet, 555 00:24:25,640 --> 00:24:28,931 det er også kommer til å være veldig forvirrende, det vil ikke kjøre akkurat slik du trenger det. 556 00:24:28,931 --> 00:24:35,280 Så her, navngi og syntaks er meget viktig for å kjøre koden. 557 00:24:35,280 --> 00:24:37,991 Alle gode? 558 00:24:37,991 --> 00:24:38,490 Yeah. 559 00:24:38,490 --> 00:24:39,476 Maddie. 560 00:24:39,476 --> 00:24:44,620 >> Maddie: Her, jeg vet vi har sett på eksempler i klassen, der de ber 561 00:24:44,620 --> 00:24:46,950 hva er din alder, hva er ditt navn. 562 00:24:46,950 --> 00:24:50,250 Her vil det være det doesn't-- hvis vi skulle kjøre denne koden, 563 00:24:50,250 --> 00:24:51,750 det ville ikke be om det? 564 00:24:51,750 --> 00:24:54,740 Men du ville bare inngangs to tall og da ville den kjøre sånn? 565 00:24:54,740 --> 00:24:55,781 >> ANDI PENG: Ja, akkurat. 566 00:24:55,781 --> 00:24:58,250 Så hvis du ønsker at det skal display, vennligst skriv din alder, 567 00:24:58,250 --> 00:25:01,100 du kan bare legge til en printf () -funksjonen som sier: Fyll inn din alder, 568 00:25:01,100 --> 00:25:01,600 over den. 569 00:25:01,600 --> 00:25:02,711 Det er et godt spørsmål. 570 00:25:02,711 --> 00:25:03,210 Yeah. 571 00:25:03,210 --> 00:25:07,964 >> SPEAKER 9: Så ville allerede være inkludert i GetInt () [uhørbart]. 572 00:25:07,964 --> 00:25:09,380 ANDI PENG: Nei, det er faktisk ikke. 573 00:25:09,380 --> 00:25:11,809 Så alt dette gjør er bare spør en tom skjerm 574 00:25:11,809 --> 00:25:13,100 for brukeren å legge inn noe. 575 00:25:13,100 --> 00:25:17,420 Hvis du ønsker det, hvis du vil at det skal skrives ut ut noe som forteller brukeren som, 576 00:25:17,420 --> 00:25:21,110 vennligst gi meg din alder, så du måtte printf () som deg selv. 577 00:25:21,110 --> 00:25:23,789 Fordi alle bruker denne funksjon for forskjellige ting, 578 00:25:23,789 --> 00:25:26,080 du kan lagre alder, du kan lagre adresse, 579 00:25:26,080 --> 00:25:28,060 du kan lagre telefonnumre. 580 00:25:28,060 --> 00:25:31,190 Og så det er egentlig opp til gutta individuelle bruksområder 581 00:25:31,190 --> 00:25:34,390 for hva du vil den skal si. 582 00:25:34,390 --> 00:25:34,890 Yeah. 583 00:25:34,890 --> 00:25:38,236 >> SPEAKER 10: Så, bare for å avklare hvor gjør du inn navn og alder 584 00:25:38,236 --> 00:25:43,020 slik at det viser seg i stedet for% s? 585 00:25:43,020 --> 00:25:44,320 >> ANDI PENG: Som i bruker? 586 00:25:44,320 --> 00:25:47,165 >> SPEAKER 10: Ja, som hvordan gjør jeg gjøre it hvor skal jeg sette Andi, 587 00:25:47,165 --> 00:25:48,350 og hvor finner jeg sette 20? 588 00:25:48,350 --> 00:25:48,640 >> ANDI PENG: Yeah. 589 00:25:48,640 --> 00:25:50,250 Så hvis du skulle faktisk kjøre denne koden, 590 00:25:50,250 --> 00:25:52,875 Jeg er faktisk ikke kjører kode, dette er bare her akkurat nå. 591 00:25:52,875 --> 00:25:56,910 Hvis jeg skulle kjøre koden, ville jeg kompilere koden, må filen, 592 00:25:56,910 --> 00:26:00,760 kjøre koden, og da ville det bare være to plasser for meg å legge inn det. 593 00:26:00,760 --> 00:26:01,260 Yeah. 594 00:26:01,260 --> 00:26:03,843 Dere vil se når du spiller rundt med koden selv. 595 00:26:03,843 --> 00:26:05,760 596 00:26:05,760 --> 00:26:09,645 >> Greit vi kommer til å flytte inn i den neste delen av det 597 00:26:09,645 --> 00:26:11,610 vi skal dekke i dag. 598 00:26:11,610 --> 00:26:13,980 Vi kommer til å gå over hva betinget utsagn er. 599 00:26:13,980 --> 00:26:16,500 Så hvis dere husker og husker fra forelesning, 600 00:26:16,500 --> 00:26:19,210 betinget utsagn, alle de er er et sett 601 00:26:19,210 --> 00:26:24,010 av instruksjoner til datamaskinen i som hvis en bestemt betingelse er sann, 602 00:26:24,010 --> 00:26:27,470 du utføre koden innsiden av den tilstanden. 603 00:26:27,470 --> 00:26:30,101 >> Så i Scratch-- hovedsak det store temaet fra i dag 604 00:26:30,101 --> 00:26:32,850 er at dere har allerede alle sett logikken bak alt 605 00:26:32,850 --> 00:26:34,020 at vi dekker. 606 00:26:34,020 --> 00:26:36,190 Og alt vi gjør er sette noe 607 00:26:36,190 --> 00:26:39,090 som var veldig intuitiv i Scratch, og hardt koding det 608 00:26:39,090 --> 00:26:41,950 inn i syntaks vi skal bruke for den klassen som er C. 609 00:26:41,950 --> 00:26:47,550 Så logisk, all denne blokken var er det stykke kode der. 610 00:26:47,550 --> 00:26:49,995 Yeah. 611 00:26:49,995 --> 00:26:50,900 OK. 612 00:26:50,900 --> 00:26:55,290 >> Vi får også inn en if ... else uttalelse som er bare en ekstra lag 613 00:26:55,290 --> 00:26:59,120 av kompleksitet til hvis setningen hvor datamaskinen tar en titt på denne 614 00:26:59,120 --> 00:27:04,260 og ser, hvis denne betingelsen er sann, gjør hva er inni disse to parentes, 615 00:27:04,260 --> 00:27:08,470 else-- slik type som standard hvis det ikke oppfyller condition-- gjøre dette. 616 00:27:08,470 --> 00:27:10,120 Det er som et veiskille. 617 00:27:10,120 --> 00:27:14,400 Hvis det regner ute, satt jeg på en regnjakke, ellers noe 618 00:27:14,400 --> 00:27:16,330 annet jeg ikke satt på en regnjakke. 619 00:27:16,330 --> 00:27:18,400 >> Betyr det logikk fornuftig for alle? 620 00:27:18,400 --> 00:27:21,031 Cool. 621 00:27:21,031 --> 00:27:21,530 Greit. 622 00:27:21,530 --> 00:27:24,970 Så ut som en hard eksempel på dette at vi vil se i C 623 00:27:24,970 --> 00:27:28,890 er hvis jeg ønsket å lage en variabel kalt lekser timer. 624 00:27:28,890 --> 00:27:32,050 Og hvis lekser timer er mindre enn fem, sier jeg Livet er stor. 625 00:27:32,050 --> 00:27:33,070 Det er fantastisk. 626 00:27:33,070 --> 00:27:36,450 Men si Kampen er real-- som er det vi alle på dette mandag 627 00:27:36,450 --> 00:27:39,337 ettermiddag opp Science Hill er sannsynligvis gjør akkurat now-- 628 00:27:39,337 --> 00:27:40,170 PUBLIKUM: [Ler] 629 00:27:40,170 --> 00:27:42,510 ANDI PENG: De måten vi ville, takk for det. 630 00:27:42,510 --> 00:27:46,180 Måten vi ville hardcode dette i C er if-- la oss anta 631 00:27:46,180 --> 00:27:49,920 Vi har allerede en variabel av type int heter lekser timer her. 632 00:27:49,920 --> 00:27:53,870 Hvis lekser timer er mindre enn five printf (), Livet er stor. 633 00:27:53,870 --> 00:27:57,330 Husk å holde / n fordi du ønsker en ny linje etter. 634 00:27:57,330 --> 00:27:59,660 Else print, er kampen virkelig. 635 00:27:59,660 --> 00:28:03,720 >> Har alle forstår hvordan Jeg overført fra denne blokken 636 00:28:03,720 --> 00:28:07,610 inn i denne blokken av koden? 637 00:28:07,610 --> 00:28:08,110 Cool. 638 00:28:08,110 --> 00:28:11,030 639 00:28:11,030 --> 00:28:11,840 Greit. 640 00:28:11,840 --> 00:28:15,930 >> Så nå skal vi ta en titt på flere hvis uttalelser helt. 641 00:28:15,930 --> 00:28:18,140 Så la oss anta at Formålet med dette programmet 642 00:28:18,140 --> 00:28:20,870 var vi be brukeren for en karakter. 643 00:28:20,870 --> 00:28:24,450 Vi tekst ved å bruke GetInt () for en klasse, og de innspill en verdi, 644 00:28:24,450 --> 00:28:27,700 og du vil vise hva slags karakter de fikk. 645 00:28:27,700 --> 00:28:30,730 >> Så hvis jeg var å utforme et program, jeg betyr vanligvis i alle våre øyne, 646 00:28:30,730 --> 00:28:35,490 90-100 er en A, er en 80-90 B, og så videre og så videre. 647 00:28:35,490 --> 00:28:39,040 Hva er galt med dette stykke kode som det ikke er 648 00:28:39,040 --> 00:28:41,393 å gjøre det jeg vil den skal gjøre. 649 00:28:41,393 --> 00:28:41,892 Yeah. 650 00:28:41,892 --> 00:28:45,100 >> SPEAKER 11: De har lavere grenser, men de har ikke øvre grenser. 651 00:28:45,100 --> 00:28:46,280 >> ANDI PENG: Nettopp. 652 00:28:46,280 --> 00:28:47,950 Har alle høre hva hun sa? 653 00:28:47,950 --> 00:28:50,200 Det kommer til å bli over grenser, men ingen nedre grense. 654 00:28:50,200 --> 00:28:52,540 Beklager, omvendt, nedre grenser, ingen øvre grense. 655 00:28:52,540 --> 00:28:55,090 Så ønsker du å ta en stikke på si 656 00:28:55,090 --> 00:28:58,945 hva ville bli skrevet ut på denne skjermen hvis jeg skulle kjøre denne koden. 657 00:28:58,945 --> 00:28:59,820 SPEAKER 11: En feil? 658 00:28:59,820 --> 00:29:01,140 ANDI PENG: En feil? 659 00:29:01,140 --> 00:29:02,740 Stor gjetning, ikke helt riktig. 660 00:29:02,740 --> 00:29:05,465 Er det noen som har en annen stikk? 661 00:29:05,465 --> 00:29:06,640 Ja, Aaron. 662 00:29:06,640 --> 00:29:10,099 >> AARON: Hvis du putter i noe som er større enn 90, 663 00:29:10,099 --> 00:29:11,640 det ville vise alle karakterene du fikk. 664 00:29:11,640 --> 00:29:13,640 Det ville vise du fikk en A, du fikk en B, du fikk en C. 665 00:29:13,640 --> 00:29:13,870 >> ANDI PENG: Yeah. 666 00:29:13,870 --> 00:29:14,840 Det er helt riktig. 667 00:29:14,840 --> 00:29:17,820 Så, det ville være fantastisk. 668 00:29:17,820 --> 00:29:21,781 Men de er gjensidig eksklusiv, tror jeg. 669 00:29:21,781 --> 00:29:23,280 Hvis jeg skulle kjøre denne del av koden. 670 00:29:23,280 --> 00:29:26,200 Og så la oss bare si, jeg inputted karakteren av 95. 671 00:29:26,200 --> 00:29:30,360 Så 95 blir nå lagret i INT heter karakteren. 672 00:29:30,360 --> 00:29:33,610 >> Og slik at C er et språk som går opp fra topp til bunn, 673 00:29:33,610 --> 00:29:36,000 så det kommer til å alltid løpe opp og ned. 674 00:29:36,000 --> 00:29:39,420 Så det kommer til å komme hit, kan du lese om grad er større enn eller lik 90, 675 00:29:39,420 --> 00:29:42,850 printf () du fikk en A. Flott, jeg har en 95, som er større enn 90. 676 00:29:42,850 --> 00:29:44,866 Det kommer til å skrive ut, Jeg fikk en A. Det kommer 677 00:29:44,866 --> 00:29:48,850 å ta en titt på denne om, det kommer si, vel 95 er også større enn 80, 678 00:29:48,850 --> 00:29:52,970 det kommer til å skrive ut du også fikk en fikk en B utropstegn, og så videre og så 679 00:29:52,970 --> 00:29:53,690 videre. 680 00:29:53,690 --> 00:29:55,890 >> Så som vi alle kan se, dette er en vanlig feil 681 00:29:55,890 --> 00:30:00,760 som kan oppstå når vi er skrive kode for å se etter. 682 00:30:00,760 --> 00:30:05,430 Noen, noen spørsmål om hvorfor det skjedde? 683 00:30:05,430 --> 00:30:05,930 Flott. 684 00:30:05,930 --> 00:30:08,920 685 00:30:08,920 --> 00:30:09,440 OK. 686 00:30:09,440 --> 00:30:12,110 >> Så hvordan løser vi dette, er åpenbart det neste logiske spørsmålet. 687 00:30:12,110 --> 00:30:16,290 Vel, vi har disse vakre ting som kalles hvis annet hvis annet 688 00:30:16,290 --> 00:30:18,010 hvis annet uttalelser. 689 00:30:18,010 --> 00:30:22,230 Så du kan se, hvis du ønsket å endre det problemet, 690 00:30:22,230 --> 00:30:25,260 du ønsket å lage hver av de vilkår gjensidig utelukkende, 691 00:30:25,260 --> 00:30:26,860 du vil legge til et annet ... hvis setningen. 692 00:30:26,860 --> 00:30:30,068 >> Og disse av course-- tenke på dem som stiger, eller som sprosser på ladder-- 693 00:30:30,068 --> 00:30:34,050 du kan legge til så mange av disse som du ønsker for så mange forhold som du vil. 694 00:30:34,050 --> 00:30:36,790 Så her, hvis jeg matet klasse å være 95. 695 00:30:36,790 --> 00:30:39,479 Hvis grad er større enn 95, printf (), fikk jeg en A. store. 696 00:30:39,479 --> 00:30:42,020 Det kommer til å se et annet sted ... hvis og det kommer til å vite, Oh no, 697 00:30:42,020 --> 00:30:43,750 Jeg har allerede henrettet den første annet. 698 00:30:43,750 --> 00:30:47,020 Jeg know-- eller den første if-- jeg vet at Jeg trenger ikke å se på noen av disse 699 00:30:47,020 --> 00:30:48,920 fordi en av dem har allerede vært sant. 700 00:30:48,920 --> 00:30:50,410 Så det kommer til å kjøre fra toppen og ned. 701 00:30:50,410 --> 00:30:53,650 Så snart den første er sant, så det kommer til å hoppe over alle de andre 702 00:30:53,650 --> 00:30:54,675 av annet ... ifs. 703 00:30:54,675 --> 00:30:55,550 Gir det mening? 704 00:30:55,550 --> 00:30:57,841 Så, på denne måten har du ulike nivåer av kontroll 705 00:30:57,841 --> 00:31:01,090 og så snart en av dem er falske, i Resten er også, vil de ikke engang sjekke. 706 00:31:01,090 --> 00:31:03,577 707 00:31:03,577 --> 00:31:04,076 Cool. 708 00:31:04,076 --> 00:31:07,680 709 00:31:07,680 --> 00:31:08,180 Greit. 710 00:31:08,180 --> 00:31:11,180 >> Slik at dette er et eksempel på en annen slags betinget utsagn 711 00:31:11,180 --> 00:31:15,250 vi ser sjeldnere, men vi får se dem og bruke dem. 712 00:31:15,250 --> 00:31:18,120 Og de er ofte mer effektiv for visse tilfeller. 713 00:31:18,120 --> 00:31:20,020 Så vi har det som kalles en bryter uttalelse. 714 00:31:20,020 --> 00:31:25,140 Så før vi dekket det som er et annet uttalelse, en if ... else setningen. 715 00:31:25,140 --> 00:31:27,790 Her har vi det er heter switch uttalelser. 716 00:31:27,790 --> 00:31:31,100 >> Så da bruker vi bryter uttalelser er nøkkelen? 717 00:31:31,100 --> 00:31:34,090 Så i en bryter uttalelse, du vanligvis typisk faktisk du 718 00:31:34,090 --> 00:31:38,010 kan bare inngangs heltall for din variabel som du sjekker. 719 00:31:38,010 --> 00:31:42,390 Så hvis jeg ønsket å sjekke for å se Hvis en viss number-- f.eks 720 00:31:42,390 --> 00:31:43,720 en klasse, hvis jeg fikk en 90. 721 00:31:43,720 --> 00:31:48,190 Jeg vil at det skal se om det er en A, B eller C. jeg kunne ha en sak her. 722 00:31:48,190 --> 00:31:50,840 Imidlertid har det gjelder å være en annen konstant. 723 00:31:50,840 --> 00:31:53,170 >> Så i denne forstand, bryter uttalelse kan bare 724 00:31:53,170 --> 00:31:55,290 sjekk for likestilling av to tall. 725 00:31:55,290 --> 00:31:57,242 Det ser ikke etter noe annet. 726 00:31:57,242 --> 00:31:59,950 Så det er noe å være svært forsiktig når du bruker dette. 727 00:31:59,950 --> 00:32:04,810 Så her, hvis jeg ønsket å sjekke for å se Hvis min klasse på 90 er lik 90 eller 80 728 00:32:04,810 --> 00:32:08,500 eller 70 eller 60, og deretter skrive ut tilsvarende karakter, 729 00:32:08,500 --> 00:32:11,420 Jeg vil være i stand til å skrive at i en bryter uttalelse. 730 00:32:11,420 --> 00:32:15,120 >> Så det kommer til å komme hit, er check dette helt tall lik denne konstante? 731 00:32:15,120 --> 00:32:17,030 Hvis ikke, kommer det til å hoppe. 732 00:32:17,030 --> 00:32:19,880 Er det lik konstant to, og så videre og så videre, 733 00:32:19,880 --> 00:32:22,390 til du treffer standard, hvis ingen av dem er like. 734 00:32:22,390 --> 00:32:24,590 Så snart en av dem er satt til å være lik, 735 00:32:24,590 --> 00:32:27,040 det kommer til å gjøre dette kodelinje og pause. 736 00:32:27,040 --> 00:32:30,990 Hvilket betyr at det kommer til å treffe løpe, gå i stykker, og bare helt hoppe 737 00:32:30,990 --> 00:32:32,240 til bunnen av koden. 738 00:32:32,240 --> 00:32:37,550 Så i den forstand den typen funksjoner som en if else if else if statement. 739 00:32:37,550 --> 00:32:40,830 >> Så her er en konkret eksempel for dere. 740 00:32:40,830 --> 00:32:46,140 Så la oss anta at jeg ønsket å opprette en variabel kalt år stiftet. 741 00:32:46,140 --> 00:32:50,230 Og jeg ønsker å be brukeren om å taste året at skolen ble grunnlagt. 742 00:32:50,230 --> 00:32:53,300 Så jeg kan lage en bryter uttalelse her. 743 00:32:53,300 --> 00:32:56,650 Og la oss bare si, jeg innspill 1636. 744 00:32:56,650 --> 00:33:01,120 >> Denne koden her kommer til å se switch år grunnla noe som tilsvarer 1636. 745 00:33:01,120 --> 00:33:03,940 Det kommer til å se saken 1636, oh de er like, 746 00:33:03,940 --> 00:33:06,230 printf () Skulle du ikke være på at skolen oppe i nord? 747 00:33:06,230 --> 00:33:08,770 Fordi vi antar at de ikke gjør det gå her hvis de går til Harvard, 748 00:33:08,770 --> 00:33:10,380 pause og hoppe til slutten. 749 00:33:10,380 --> 00:33:14,090 >> Hvis jeg skulle skrive 1701, som Jeg antar at alle av oss ville input, 750 00:33:14,090 --> 00:33:17,500 det ville hoppe over denne saken, kommer ned til tilfelle to som er 1701, 751 00:33:17,500 --> 00:33:19,660 og print Velkommen til Yale! 752 00:33:19,660 --> 00:33:21,360 Break, hoppe til slutten. 753 00:33:21,360 --> 00:33:25,130 Else du sannsynligvis tar dette kurset online hvor case-- fantastisk velkomst 754 00:33:25,130 --> 00:33:29,020 å Yale-- det kommer til å gå til Standard print, Hello internett! 755 00:33:29,020 --> 00:33:29,870 Og bryte. 756 00:33:29,870 --> 00:33:30,466 Yeah. 757 00:33:30,466 --> 00:33:32,090 >> SPEAKER 12: Kan du bruke andre i stedet for standard der? 758 00:33:32,090 --> 00:33:34,550 >> ANDI PENG: Nei, fordi måte at hele denne funksjonen 759 00:33:34,550 --> 00:33:39,170 bryter er bygget, syntaksen du trenger å bruke er tilfelle tilfelle mislighold. 760 00:33:39,170 --> 00:33:42,400 Det er som om annet hvis, dette en det er tilfelle tilfelle mislighold. Yeah. 761 00:33:42,400 --> 00:33:45,650 SPEAKER 13: Du kanskje allerede sagt dette, men kan du ha mer enn to tilfellene? 762 00:33:45,650 --> 00:33:48,066 ANDI PENG: Ja, kunne du har så mange tilfeller som du ønsker. 763 00:33:48,066 --> 00:33:50,050 Tenk på det som bare liker uendelig legge på. 764 00:33:50,050 --> 00:33:52,396 >> SPEAKER 14: Hvis du byttet 1 701 med 1636, 765 00:33:52,396 --> 00:33:54,187 det gjør egentlig ikke gjøre en forskjell ikke sant? 766 00:33:54,187 --> 00:33:55,770 Det er bare kommer til å bli sjekket for det. 767 00:33:55,770 --> 00:33:56,900 >> ANDI PENG: Det er en veldig godt spørsmål. 768 00:33:56,900 --> 00:33:58,880 Og vi vil berøre dette senere, men bare 769 00:33:58,880 --> 00:34:01,160 vet at det er bryteren Erklæringen er infinitely-- det er 770 00:34:01,160 --> 00:34:03,536 mer effektiv enn den, og hvis else if fordi den opererer 771 00:34:03,536 --> 00:34:06,660 ved hjelp av en annen type funksjon som kan du, for å i hovedsak, å bare 772 00:34:06,660 --> 00:34:08,790 hoppe rett til Hvis du trenger å være på. 773 00:34:08,790 --> 00:34:10,547 Yeah. 774 00:34:10,547 --> 00:34:11,255 SPEAKER 14: Cool. 775 00:34:11,255 --> 00:34:11,754 Takk. 776 00:34:11,754 --> 00:34:12,526 ANDI PENG: Yeah 777 00:34:12,526 --> 00:34:16,687 >> SPEAKER 14: Og du kunne ikke do tilfeller lignende, og som er større enn. 778 00:34:16,687 --> 00:34:17,270 ANDI PENG: No. 779 00:34:17,270 --> 00:34:19,860 Så, det er hva som er begrensende om bryter uttalelse er at du har 780 00:34:19,860 --> 00:34:21,564 å ha konstanter bare, bare heltall. 781 00:34:21,564 --> 00:34:22,064 Yeah. 782 00:34:22,064 --> 00:34:25,179 783 00:34:25,179 --> 00:34:25,820 OK. 784 00:34:25,820 --> 00:34:28,659 >> Så dette er noe som du Gutta vil møte sjeldnere av, 785 00:34:28,659 --> 00:34:32,280 men jeg ville bare introdusere den i tilfelle. 786 00:34:32,280 --> 00:34:36,210 Vi har her hva som er kalles en trefoldig operatør. 787 00:34:36,210 --> 00:34:39,370 Der i hovedsak, er det akkurat som en hvis setningen samlet i én linje. 788 00:34:39,370 --> 00:34:42,630 Her vil jeg gå inn på neste linje, neste side, fordi det er lettere å se. 789 00:34:42,630 --> 00:34:44,860 >> Så vi har alle sett dette sant? 790 00:34:44,860 --> 00:34:46,110 Dette er ganske lett å følge. 791 00:34:46,110 --> 00:34:51,290 Hvis jeg ønsket å lage en variabel kalt streng heter s, dersom et visst antall 792 00:34:51,290 --> 00:34:54,770 Jeg gir den er mindre enn 100, jeg vil tildele lav til strengen 793 00:34:54,770 --> 00:34:57,240 annet jeg ønsker å tildele høy. 794 00:34:57,240 --> 00:35:01,370 >> Dette her gjør akkurat det samme de åtte linjer med kode gjør. 795 00:35:01,370 --> 00:35:03,600 Så her jeg ønsker å opprette en variabel streng. 796 00:35:03,600 --> 00:35:08,520 Og dette er tilstanden jeg er sjekker, om et tall er mindre enn 100, 797 00:35:08,520 --> 00:35:12,750 så du tilordne verdien av lav, ellers tildele verdien for høy. 798 00:35:12,750 --> 00:35:15,802 >> Disse slides vil være online, ingen bekymringer hvis dere ikke får dette ned. 799 00:35:15,802 --> 00:35:18,510 Dette er bare en enklere måte, en mer effektiv måte å skrive kode. 800 00:35:18,510 --> 00:35:21,290 801 00:35:21,290 --> 00:35:21,810 OK. 802 00:35:21,810 --> 00:35:25,190 >> Så nå skal vi angi hva, for folk flest 803 00:35:25,190 --> 00:35:28,660 er som en veldig, veldig forvirrende ting å tenke på først. 804 00:35:28,660 --> 00:35:30,226 Sløyfen delen. 805 00:35:30,226 --> 00:35:32,600 Så i dag skal vi snakke om tre typer sløyfer. 806 00:35:32,600 --> 00:35:34,890 Vi kommer til å starte med en stund loop, deretter snakke om en gjør mens loop, 807 00:35:34,890 --> 00:35:36,740 og deretter snakke om i sløyfer. 808 00:35:36,740 --> 00:35:40,010 >> Så egentlig, for de mer visuelle elever der ute, 809 00:35:40,010 --> 00:35:44,410 vi har, i hovedsak, et grafisk skildring av hva en stund loop gjør. 810 00:35:44,410 --> 00:35:48,290 Så i et programmerings, ville du begynne og gå inn i løkken på et visst punkt. 811 00:35:48,290 --> 00:35:49,470 Du sjekker en betingelse. 812 00:35:49,470 --> 00:35:52,165 Og hvis betingelsen er sann, du utføre koden inne. 813 00:35:52,165 --> 00:35:53,790 Og du kommer tilbake rundt og sjekke. 814 00:35:53,790 --> 00:35:57,190 Hvis det er fremdeles sant du holde kjører denne koden rundt og rundt i en sløyfe. 815 00:35:57,190 --> 00:36:00,970 >> Imidlertid er andre som betingelsen blir usann, 816 00:36:00,970 --> 00:36:02,739 du kommer til å bryte og avslutte loopen. 817 00:36:02,739 --> 00:36:05,030 Og dette er i hovedsak de syntaks som du kommer til å bruke. 818 00:36:05,030 --> 00:36:08,250 Mens en viss tilstand er sann gjøre dette, hvis det ikke er sant, 819 00:36:08,250 --> 00:36:12,920 du kommer til å hoppe til slutten og gå videre med programmet. 820 00:36:12,920 --> 00:36:13,690 OK. 821 00:36:13,690 --> 00:36:17,250 >> Er det noen som har et eksempel på hva som kan potensielt skje 822 00:36:17,250 --> 00:36:19,160 hvis jeg prøver å kjøre denne delen av koden? 823 00:36:19,160 --> 00:36:22,470 Forresten, SAJ-- det er Scaz, Andi, Jason-- vi vil logge av våre e-poster, 824 00:36:22,470 --> 00:36:24,830 Kjærlighet, SAJ. 825 00:36:24,830 --> 00:36:25,573 Det er oss. 826 00:36:25,573 --> 00:36:26,500 OK. 827 00:36:26,500 --> 00:36:29,829 >> Alle som har et eksempel, eller har en idé om hva dette ville skrive ut? 828 00:36:29,829 --> 00:36:30,870 Slag av en lurespørsmål. 829 00:36:30,870 --> 00:36:34,550 830 00:36:34,550 --> 00:36:39,380 Så her, husk tilstanden vi sjekker for er stund sant. 831 00:36:39,380 --> 00:36:42,840 Så selv om dette er sant, er det gikk i trykken, jeg elsker SAJ! 832 00:36:42,840 --> 00:36:48,460 Er det noe poeng der vi hadde endre dette til noe annet? 833 00:36:48,460 --> 00:36:49,050 Nei, ikke sant? 834 00:36:49,050 --> 00:36:51,470 >> Så her har vi støtt hva er trolig 835 00:36:51,470 --> 00:36:54,310 kommer til å bli avlyttet mye programmer, uendelig loop. 836 00:36:54,310 --> 00:36:56,268 Du vil finne at hvis du kjøre denne stykke kode, 837 00:36:56,268 --> 00:36:58,160 det er bare kommer til å fortsette utskrift, jeg elsker SAJ! 838 00:36:58,160 --> 00:37:00,701 Mens vi setter pris på støtten, vi ønsker ikke datamaskinene 839 00:37:00,701 --> 00:37:02,910 til å krasje fordi du holde utskrift Jeg elsker SAJ! 840 00:37:02,910 --> 00:37:05,320 >> Så vær så snill, vær så snill, unngå uendelig loop 841 00:37:05,320 --> 00:37:07,320 fordi det aldri kommer å vurdere å false 842 00:37:07,320 --> 00:37:08,780 og du aldri kommer å forlate sløyfen. 843 00:37:08,780 --> 00:37:10,530 Og du kommer til å bli sugd i evig. 844 00:37:10,530 --> 00:37:13,000 Cool. 845 00:37:13,000 --> 00:37:13,694 OK. 846 00:37:13,694 --> 00:37:15,610 Den andre typen løkke vi skal snakke om i dag 847 00:37:15,610 --> 00:37:17,580 er den gjøre mens loop, gjøre mens loop. 848 00:37:17,580 --> 00:37:20,580 Og det kalles en gjør mens loop fordi du har en do og en stund. 849 00:37:20,580 --> 00:37:24,390 Så dette er ganske lik en stund loop, men litt annerledes. 850 00:37:24,390 --> 00:37:27,620 Her kommer du til å gjøre hva er innsiden av denne 851 00:37:27,620 --> 00:37:29,747 mens en viss tilstand er sant. 852 00:37:29,747 --> 00:37:32,580 Så hvis jeg var C og datamaskinen jeg er kjører ned denne delen av koden, 853 00:37:32,580 --> 00:37:33,880 Jeg tar en titt på toppen. 854 00:37:33,880 --> 00:37:36,890 Jeg går til C, sier jeg gjøre dette. 855 00:37:36,890 --> 00:37:40,550 Og da jeg sjekke, mens dette er sant, må jeg gjenta det. 856 00:37:40,550 --> 00:37:42,750 Men selv om dette er usant, Da jeg gå videre 857 00:37:42,750 --> 00:37:44,700 og jeg aldri gå tilbake til at loopen igjen. 858 00:37:44,700 --> 00:37:48,360 >> Kan noen ta en stikke på hva forskjellen 859 00:37:48,360 --> 00:37:52,130 mellom denne sløyfen og den vi bare så på var praktisk talt. 860 00:37:52,130 --> 00:37:52,717 Yeah. 861 00:37:52,717 --> 00:37:55,050 SPEAKER 15: Tilstanden kommer etter i stedet for før? 862 00:37:55,050 --> 00:37:55,841 ANDI PENG: Nettopp. 863 00:37:55,841 --> 00:37:57,984 Så hun sa tilstanden kommer etter, ikke før. 864 00:37:57,984 --> 00:38:00,400 Til syvende og sist, forskjellen mellom dette og mens loop 865 00:38:00,400 --> 00:38:03,597 er at du bare kommer til å gjøre hva er inne i dette uavhengig av 866 00:38:03,597 --> 00:38:06,430 hvorvidt tilstanden din er sant, og deretter sjekke tilstanden. 867 00:38:06,430 --> 00:38:08,304 Så i dette tilfellet, er du always-- på denne måten 868 00:38:08,304 --> 00:38:11,240 du er alltid å sørge for hva som er inni går minst 869 00:38:11,240 --> 00:38:14,230 en gang før å sjekke for å se hvis du vil at den skal kjøres igjen. 870 00:38:14,230 --> 00:38:18,040 >> Og her er et eksempel om når vi vil bruke den. 871 00:38:18,040 --> 00:38:22,570 Så for eksempel, hvis jeg ønsket å ha en variabel av type int heter alder, 872 00:38:22,570 --> 00:38:25,640 og jeg ønsker å be brukeren for deres alder, 873 00:38:25,640 --> 00:38:27,910 Jeg kommer til å gjøre printf () Hva er alderen din? 874 00:38:27,910 --> 00:38:30,330 alder = GetInt (), hvilken er å spørre brukeren. 875 00:38:30,330 --> 00:38:32,140 >> Og noen mennesker vil være veldig irriterende. 876 00:38:32,140 --> 00:38:34,931 Og du ikke vil bugs i ditt program for noen å legge inn like, 877 00:38:34,931 --> 00:38:36,680 oh jeg er negativ 4 år gammel eller hva. 878 00:38:36,680 --> 00:38:39,900 I hvilket tilfelle hvis de gjøre det, evaluerer dette 879 00:38:39,900 --> 00:38:43,150 til sann, noe som betyr at jeg kommer til å må holde gå tilbake og gjøre dette. 880 00:38:43,150 --> 00:38:45,310 Så dette kommer til å holde re-spørre brukeren 881 00:38:45,310 --> 00:38:47,960 for å gi deg som en ekte alder nummer og det er 882 00:38:47,960 --> 00:38:51,930 kommer til å fortsette å gå tilbake og gjøre om det før de gir deg en ekte alder 883 00:38:51,930 --> 00:38:56,900 er større enn en, eller ikke er null. 884 00:38:56,900 --> 00:38:58,020 >> Så hint, hint. 885 00:38:58,020 --> 00:39:02,263 Dette vil være veldig, veldig nyttig for en av dine PSet problemer. 886 00:39:02,263 --> 00:39:04,155 Yeah. 887 00:39:04,155 --> 00:39:05,580 >> SPEAKER 16: Whoops, beklager. 888 00:39:05,580 --> 00:39:06,288 >> ANDI PENG: Jepp. 889 00:39:06,288 --> 00:39:09,424 >> SPEAKER 16: Er det ikke å være en drittsekk, men-- 890 00:39:09,424 --> 00:39:10,340 ANDI PENG: Ingen grunn til bekymring. 891 00:39:10,340 --> 00:39:11,990 SPEAKER 16: --are det forskjellige regler her, 892 00:39:11,990 --> 00:39:13,810 eller har du bare glemme å sette sitatet? 893 00:39:13,810 --> 00:39:14,250 >> ANDI PENG: Oh Yeah. 894 00:39:14,250 --> 00:39:15,530 Beklager, det er helt min dårlige. 895 00:39:15,530 --> 00:39:17,100 Det var definitivt ment å være et tilbud. 896 00:39:17,100 --> 00:39:17,690 God fangst. 897 00:39:17,690 --> 00:39:18,800 Det ville ikke ha kjørt. 898 00:39:18,800 --> 00:39:22,070 899 00:39:22,070 --> 00:39:22,830 OK. 900 00:39:22,830 --> 00:39:26,160 >> Så den siste typen løkken vil vi snakke om og, til slutt, på en måte den mest 901 00:39:26,160 --> 00:39:28,854 Komplekset er for loop. 902 00:39:28,854 --> 00:39:30,770 Ikke bekymre deg hvis du ikke gjør det vet hva det betyr. 903 00:39:30,770 --> 00:39:32,061 Det er ganske forvirrende i begynnelsen. 904 00:39:32,061 --> 00:39:33,640 Vi vil gå over et eksempel. 905 00:39:33,640 --> 00:39:37,040 >> Alt som skjer i en for loop er at du har tre uttalelser 906 00:39:37,040 --> 00:39:38,380 at du kommer til å inkludere. 907 00:39:38,380 --> 00:39:42,130 Så for en bestemt ting, er du kommer til å initialisere en variabel. 908 00:39:42,130 --> 00:39:45,280 Du kommer til å legge forholdene til som denne sløyfen vil fortsette å kjøre. 909 00:39:45,280 --> 00:39:47,790 Og deretter, ved slutten av loop, du kommer til å oppdatere den. 910 00:39:47,790 --> 00:39:50,248 Du kan oppdatere variable som du ønsker å holde styr på. 911 00:39:50,248 --> 00:39:52,530 Så vi vanligvis bruker for looper for når vi 912 00:39:52,530 --> 00:39:55,390 ønsker å kjøre en loop for en visst antall ganger 913 00:39:55,390 --> 00:39:58,900 og vi allerede vet, Oh jeg ønsker denne sløyfen å utføre som 10 ganger, 914 00:39:58,900 --> 00:40:03,060 så du do-- jeg skal gå over et eksempel på neste side. 915 00:40:03,060 --> 00:40:07,830 >> Så her for eksempel i Scratch, hvis du ville ha noe å gjenta 10 ganger, 916 00:40:07,830 --> 00:40:10,790 alt du hadde å si var, gjenta 10 ganger jeg elsker SAJ! 917 00:40:10,790 --> 00:40:15,260 som er en mer akseptabel show av støtte for oss 918 00:40:15,260 --> 00:40:17,120 snarere enn uendelig løkke. 919 00:40:17,120 --> 00:40:19,920 Her, hvor du ville overgang til C og skrive 920 00:40:19,920 --> 00:40:26,040 det er for int-- jeg kommer til å lage eller erklære en variabel av type int heter jeg. 921 00:40:26,040 --> 00:40:30,089 Jeg kommer til å initial den til 0, så i = 0; 922 00:40:30,089 --> 00:40:31,630 og dette kommer til å være min tilstand. 923 00:40:31,630 --> 00:40:33,860 Så i er mindre enn 10. 924 00:40:33,860 --> 00:40:36,096 Og så på end-- den siste setningen du er 925 00:40:36,096 --> 00:40:38,710 kommer til å ha er oppdateringen av hva skjer med variabelen i 926 00:40:38,710 --> 00:40:40,206 ved slutten av for loop. 927 00:40:40,206 --> 00:40:42,830 Så det er litt forvirrende, fordi forskjellige deler av denne linjen 928 00:40:42,830 --> 00:40:44,871 skjer på ulike typer av sløyfen. 929 00:40:44,871 --> 00:40:46,746 Men jeg skal gå over en pseudokode eksempel på det 930 00:40:46,746 --> 00:40:50,360 og kanskje forklare dette bare litt bedre. 931 00:40:50,360 --> 00:40:51,500 >> Så her. 932 00:40:51,500 --> 00:40:52,929 Det er løkken vi nettopp så. 933 00:40:52,929 --> 00:40:55,470 Hovedsak i pseudokode, hva som skjer i dette programmet, 934 00:40:55,470 --> 00:40:57,940 er første Jeg oppretter Jeg, klargjør den til 0. 935 00:40:57,940 --> 00:41:00,440 Jeg sjekker for å se om jeg er mindre enn 10, i hvilket tilfelle 936 00:41:00,440 --> 00:41:02,840 første gang det er fordi 0 er mindre enn 10. 937 00:41:02,840 --> 00:41:04,727 Således løkken kommer til å kjøre. 938 00:41:04,727 --> 00:41:06,310 Og så kommer jeg til å skrive ut denne linjen. 939 00:41:06,310 --> 00:41:11,240 Og deretter ved slutten av denne linje, rett her, kommer jeg til å gjøre tilvekst i, i ++, 940 00:41:11,240 --> 00:41:13,370 alt som betyr er inkrementering av den ved en. 941 00:41:13,370 --> 00:41:15,460 >> Så jeg er nå en. 942 00:41:15,460 --> 00:41:17,960 Fordi det var en gang 0, hvis jeg øke det er, det er nå en. 943 00:41:17,960 --> 00:41:19,610 Og så kommer jeg til å gå tilbake til begynnelsen av løkken 944 00:41:19,610 --> 00:41:20,730 og jeg sjekke tilstanden. 945 00:41:20,730 --> 00:41:22,080 Er tilstanden fortsatt sant? 946 00:41:22,080 --> 00:41:24,030 Ja, det er en fortsatt mindre enn 10. 947 00:41:24,030 --> 00:41:27,370 Så det kommer til å skrive ut dette på nytt, gå og deretter øke i, og sjekk 948 00:41:27,370 --> 00:41:29,180 betingelsen kontinuerlig, kontinuerlig, 949 00:41:29,180 --> 00:41:33,290 til du til slutt får til et punkt der jeg er 10. 950 00:41:33,290 --> 00:41:36,300 >> Du kommer til å skrive ut dette 10 ganger og så er jeg kommer til å tilsvare 10. 951 00:41:36,300 --> 00:41:37,800 Du kommer til å sjekke tilstanden. 952 00:41:37,800 --> 00:41:38,760 Er 10 mindre enn 10? 953 00:41:38,760 --> 00:41:40,370 Nei, det er falsk. 954 00:41:40,370 --> 00:41:43,020 Dermed er denne sløyfen ikke kommer å kjøre, det kommer til å bryte, 955 00:41:43,020 --> 00:41:45,040 og du kommer til å fortsette med koden din. 956 00:41:45,040 --> 00:41:47,550 >> Så som dere kan se, dette er et veldig godt eksempel 957 00:41:47,550 --> 00:41:53,110 av en løkke du kan programmere i at går for en viss mengde ganger. 958 00:41:53,110 --> 00:41:54,457 Hver og en klar? 959 00:41:54,457 --> 00:41:54,956 Yeah. 960 00:41:54,956 --> 00:41:59,060 >> SPEAKER 17: Hva med tilvekst eksponentielt, er det forskjellig koding? 961 00:41:59,060 --> 00:42:02,060 >> ANDI PENG: Du can-- vi vil gå over denne i neste lysbilde. 962 00:42:02,060 --> 00:42:03,350 Godt spørsmål. 963 00:42:03,350 --> 00:42:05,910 Er anyone-- før jeg flytter on-- noen i det hele tatt forvirret, 964 00:42:05,910 --> 00:42:07,640 fordi dette er en virkelig tøff konsept. 965 00:42:07,640 --> 00:42:09,510 Ingen grunn til bekymring, hvis you're-- OK. 966 00:42:09,510 --> 00:42:10,010 Cool. 967 00:42:10,010 --> 00:42:12,836 968 00:42:12,836 --> 00:42:13,490 >> Greit. 969 00:42:13,490 --> 00:42:14,610 Bare en generell lysbilde. 970 00:42:14,610 --> 00:42:18,020 Dette mens loop gjør den akkurat det samme for loop var. 971 00:42:18,020 --> 00:42:19,631 Det er bare skrevet annerledes. 972 00:42:19,631 --> 00:42:22,130 Dere kan lese lysbildene når det passer deg senere. 973 00:42:22,130 --> 00:42:24,880 Men bare vet at det er flere måter å skrive det samme 974 00:42:24,880 --> 00:42:28,300 å skje med forskjellige sløyfer. 975 00:42:28,300 --> 00:42:28,800 OK. 976 00:42:28,800 --> 00:42:32,380 >> Så nå får vi i spørsmålet om hva hvis vi har en løkke inne i en løkke. 977 00:42:32,380 --> 00:42:35,810 Vi får inn real Inception type ting her. 978 00:42:35,810 --> 00:42:40,640 Når du ønsker å gjøre ting flere ganger inne på andre ting 979 00:42:40,640 --> 00:42:44,129 som gjør ting flere ganger, du ønsker det som kalles en nestet for loop. 980 00:42:44,129 --> 00:42:47,420 For de av dere som først ser dette, og blir veldig forvirret, er alt vi gjør her 981 00:42:47,420 --> 00:42:50,580 er å ha en for løkke der vi har en variabel av omg. 982 00:42:50,580 --> 00:42:54,500 Men på innsiden av det, vi har også en annen for løkke av en variabel kalt kolonne. 983 00:42:54,500 --> 00:42:58,560 Og jeg anbefaler dere alle som er forvirret å først holde 984 00:42:58,560 --> 00:43:00,310 track-- trekke dette ut, trekke dette ut. 985 00:43:00,310 --> 00:43:03,000 Ikke prøv å bare grunn gjennom det, trekke det ut. 986 00:43:03,000 --> 00:43:06,630 >> I hodet ditt, på denne stykke papir, eller hva, skrive rad, 987 00:43:06,630 --> 00:43:08,614 holde oversikt over hva raden er lik. 988 00:43:08,614 --> 00:43:10,780 Skriv kolonne, holde orden av hvilke kolonnen er lik. 989 00:43:10,780 --> 00:43:13,490 Og holde oversikt over hva som er skrive ut med hver iterasjon. 990 00:43:13,490 --> 00:43:16,320 Hver iterasjon av denne sløyfen, hver gjentakelse av at større loop, 991 00:43:16,320 --> 00:43:17,820 bare holde følge logikken. 992 00:43:17,820 --> 00:43:20,190 Og jeg kan garantere deg, du vil elske det du ser, 993 00:43:20,190 --> 00:43:24,307 fordi det er også veldig Gjelder for oppgavesett. 994 00:43:24,307 --> 00:43:24,806 Cool. 995 00:43:24,806 --> 00:43:27,501 996 00:43:27,501 --> 00:43:28,000 Greit. 997 00:43:28,000 --> 00:43:30,723 Så det viktigste at dere er sannsynligvis alle 998 00:43:30,723 --> 00:43:32,400 tenker på akkurat nå, er dine oppgavesettet 1s, 999 00:43:32,400 --> 00:43:33,650 som skyldes torsdag / fredag. 1000 00:43:33,650 --> 00:43:36,890 1001 00:43:36,890 --> 00:43:39,710 >> I din water.c program, hint du kommer til å ha 1002 00:43:39,710 --> 00:43:41,590 å be brukeren for en inngang. 1003 00:43:41,590 --> 00:43:43,640 Innenfor mario.c program du kommer til å ha 1004 00:43:43,640 --> 00:43:46,431 å bruke en nestet for løkke, som er for en løkke inne i en for løkke, 1005 00:43:46,431 --> 00:43:50,247 å skrive ut en blokk med pyramide, i hovedsak som hva Mario har å hoppe gjennom. 1006 00:43:50,247 --> 00:43:53,330 Og så inni greedy-- eller kanskje Making Change, hvis noen av dere 1007 00:43:53,330 --> 00:43:55,740 har hørt om at-- du er nødt til å være veldig 1008 00:43:55,740 --> 00:43:58,160 forsiktig med første flytende punkt verdier. 1009 00:43:58,160 --> 00:44:01,860 Husk flytende desimaler og heltall er ikke det samme. 1010 00:44:01,860 --> 00:44:03,620 Hold styr på hvilken som er hvilken. 1011 00:44:03,620 --> 00:44:05,953 Og du kommer til å bruke betinget utsagn, så vel. 1012 00:44:05,953 --> 00:44:09,070 1013 00:44:09,070 --> 00:44:10,940 >> Greit, siste ting. 1014 00:44:10,940 --> 00:44:12,770 Jeg har fått et par minutter igjen. 1015 00:44:12,770 --> 00:44:13,460 Stil. 1016 00:44:13,460 --> 00:44:19,320 Så dette er noe som ikke gjør det faktisk bevirke effektivitet, 1017 00:44:19,320 --> 00:44:21,010 eller selve driften av koden din. 1018 00:44:21,010 --> 00:44:24,380 Men det effekter oss som dine klassinger, som leserne. 1019 00:44:24,380 --> 00:44:27,290 Det effekter selv, hvis du er prøver å finne et problem. 1020 00:44:27,290 --> 00:44:30,700 Det påvirker lesbarheten av koden din. 1021 00:44:30,700 --> 00:44:34,070 >> Så stil, som når du prøver å style et essay for engelsk, hvis du 1022 00:44:34,070 --> 00:44:36,070 ikke har avsnitt, du har alt slags 1023 00:44:36,070 --> 00:44:39,190 av mikset sammen på én linje, det gjør det veldig vanskelig for noen 1024 00:44:39,190 --> 00:44:42,620 å lese essayet, selv om poengene er logisk lyd. 1025 00:44:42,620 --> 00:44:44,390 Samme i programmering. 1026 00:44:44,390 --> 00:44:47,910 Du kan ha forferdelig obskur kode som Scaz vil dekke, 1027 00:44:47,910 --> 00:44:49,660 og det kan fortsatt kjøre og funksjon. 1028 00:44:49,660 --> 00:44:53,110 Men for oss som din vakre TAs, som vil være å lese og vurdere dine PSets, 1029 00:44:53,110 --> 00:44:54,460 det er ikke veldig hyggelig. 1030 00:44:54,460 --> 00:44:56,859 >> Så vær så snill, for moro skyld av oss og deg selv, 1031 00:44:56,859 --> 00:44:58,900 når du prøver å fikse et problem i koden din, 1032 00:44:58,900 --> 00:45:00,774 og du prøver å lese din egen kode, gjøre 1033 00:45:00,774 --> 00:45:03,910 at du følger noen konvensjoner at vi kommer til å gå over. 1034 00:45:03,910 --> 00:45:04,510 >> Så først. 1035 00:45:04,510 --> 00:45:07,070 Gi dine variabler meningsfulle navn. 1036 00:45:07,070 --> 00:45:11,450 Hvis du ønsker å lagre et heltall kalt alder, vennligst name it alder. 1037 00:45:11,450 --> 00:45:12,875 Ikke name it høyde. 1038 00:45:12,875 --> 00:45:14,750 Når du prøver å lagre en alder i høyde, 1039 00:45:14,750 --> 00:45:16,722 det gjør alt veldig forvirrende for oss. 1040 00:45:16,722 --> 00:45:17,930 Vi liker ikke å bli forvirret. 1041 00:45:17,930 --> 00:45:19,180 Du liker ikke å bli forvirret. 1042 00:45:19,180 --> 00:45:20,350 Ingen liker å bli forvirret. 1043 00:45:20,350 --> 00:45:23,100 Hvis du kommer til å skape noe, navnet noe meningsfullt. 1044 00:45:23,100 --> 00:45:26,440 >> Men i for loop, single tegn-variabler er vanligvis fint. 1045 00:45:26,440 --> 00:45:31,350 Og i for loop, hvis du ønsker bare jeg, og j, k, gjerne bare gjøre det. 1046 00:45:31,350 --> 00:45:32,670 >> Konsekvent initialisering. 1047 00:45:32,670 --> 00:45:33,770 Så hva betyr det? 1048 00:45:33,770 --> 00:45:37,600 Det betyr teknisk, teoretisk, du kan starte og lage 1049 00:45:37,600 --> 00:45:40,140 flere variabler på samme linje. 1050 00:45:40,140 --> 00:45:42,820 Så for eksempel, kan jeg lage et heltall kalles scaz_age, 1051 00:45:42,820 --> 00:45:47,110 og heltall kalles andi_age = 20, og et heltall kalles jason_age 1052 00:45:47,110 --> 00:45:48,090 på samme linje. 1053 00:45:48,090 --> 00:45:52,060 Og jeg kan også tildele eneste av dem og ikke de andre til verdier. 1054 00:45:52,060 --> 00:45:54,142 Vi ber deg vennligst ikke gjør det. 1055 00:45:54,142 --> 00:45:57,350 Fordi her har du i hovedsak opprettet tre variable, men bare en av dem 1056 00:45:57,350 --> 00:45:58,295 faktisk har en verdi. 1057 00:45:58,295 --> 00:46:00,170 Og så når vi er prøver å lese koden, 1058 00:46:00,170 --> 00:46:01,850 eller hvis du prøver å fikse et problem i koden din, 1059 00:46:01,850 --> 00:46:03,340 det er veldig forvirrende å følge. 1060 00:46:03,340 --> 00:46:09,300 Så bare for lesbarhet, for vår lesbarhet, ikke gjør det. 1061 00:46:09,300 --> 00:46:10,355 >> Konsistente klammeparentes. 1062 00:46:10,355 --> 00:46:12,980 Noen mennesker liker å sette sitt klammeparentes på forskjellige steder. 1063 00:46:12,980 --> 00:46:14,100 Det spiller egentlig ingen rolle. 1064 00:46:14,100 --> 00:46:17,900 Bare sørg for at du er konsekvent i egen kode på hvor du ønsker å sette dem. 1065 00:46:17,900 --> 00:46:18,950 >> Konsekvent avstand. 1066 00:46:18,950 --> 00:46:22,040 Hvis du putter en plass etter en for loop, alltid gjøre det. 1067 00:46:22,040 --> 00:46:24,930 Ikke bare liker slags gjøre det på noen steder, ikke gjør det i andre. 1068 00:46:24,930 --> 00:46:26,580 Bare vær konsekvent. 1069 00:46:26,580 --> 00:46:29,500 >> For det andre, hvis noen ønsker til å lese på CS50 Style Guide, 1070 00:46:29,500 --> 00:46:33,230 vi offisielt har en stilguide som forteller deg alle disse konvensjonene, 1071 00:46:33,230 --> 00:46:34,890 pluss mer. 1072 00:46:34,890 --> 00:46:35,530 Det er online. 1073 00:46:35,530 --> 00:46:38,670 Det er som cs50.net/style eller noe sånt. 1074 00:46:38,670 --> 00:46:40,180 Du kan google det. 1075 00:46:40,180 --> 00:46:41,399 >> Konsistens er nøkkelen. 1076 00:46:41,399 --> 00:46:43,190 Så ikke bekymre deg hva andre mennesker gjør, 1077 00:46:43,190 --> 00:46:46,180 bare sørg for at du er konsekvent i din egen kode. 1078 00:46:46,180 --> 00:46:50,570 Alle som har noen spørsmål om det? 1079 00:46:50,570 --> 00:46:51,070 Yeah. 1080 00:46:51,070 --> 00:46:53,370 >> SPEAKER 18: Så den riktige tingen å gjøre med initialisering er bare 1081 00:46:53,370 --> 00:46:56,130 har dem alle i et separat linje, er det det du sier? 1082 00:46:56,130 --> 00:46:58,850 >> ANDI PENG: Så jeg sjelden har dette skje. 1083 00:46:58,850 --> 00:47:02,230 Men hvis du ville, hvis du ønsket å være som sparer plass i koden, 1084 00:47:02,230 --> 00:47:04,000 eller hva, kan du gjøre dette. 1085 00:47:04,000 --> 00:47:07,800 Vi ber om at du bare ikke initial en ting og ikke de andre. 1086 00:47:07,800 --> 00:47:12,600 Så hvis du ønsker å gjøre int scaz_age, int andi_age, int jason_age, er det helt greit. 1087 00:47:12,600 --> 00:47:15,600 Bare ikke initial én og ikke de andre er tatt. 1088 00:47:15,600 --> 00:47:18,380 1089 00:47:18,380 --> 00:47:19,904 >> Spørsmål? 1090 00:47:19,904 --> 00:47:20,850 Greit. 1091 00:47:20,850 --> 00:47:24,610 Jeg kommer til å passere av mikrofon, og laserpeker, 1092 00:47:24,610 --> 00:47:28,862 og stafettpinnen til Scaz på dette punktet. 1093 00:47:28,862 --> 00:47:29,808 Dette er vanskelig. 1094 00:47:29,808 --> 00:47:32,650 1095 00:47:32,650 --> 00:47:33,200 Her er det. 1096 00:47:33,200 --> 00:47:34,408 >> BRIAN SCASSELLATI: Takk. 1097 00:47:34,408 --> 00:47:42,500 1098 00:47:42,500 --> 00:47:43,380 Hvordan er det for lyd? 1099 00:47:43,380 --> 00:47:46,420 1100 00:47:46,420 --> 00:47:47,900 Lyden er bra? . 1101 00:47:47,900 --> 00:47:49,220 Utmerket. 1102 00:47:49,220 --> 00:47:50,350 OK. 1103 00:47:50,350 --> 00:47:52,110 Så, hei alle sammen. 1104 00:47:52,110 --> 00:47:56,540 >> Jeg kommer til å prøve å jobbe gjennom et praktisk eksempel med deg. 1105 00:47:56,540 --> 00:48:00,850 Og vi kommer til å bruke CS50 s utviklingsmiljø, det som kalles 1106 00:48:00,850 --> 00:48:03,120 Integrated Development Environment. 1107 00:48:03,120 --> 00:48:05,145 Og du har sett denne demonstrert i forelesning. 1108 00:48:05,145 --> 00:48:07,520 Og i oppgave Set 1, er du kommer til å ha en mulighet 1109 00:48:07,520 --> 00:48:10,890 å bruke den, og leke seg med det, og bli vant til det, 1110 00:48:10,890 --> 00:48:13,640 fordi vi kommer til å bruke den gjennom resten av semesteret. 1111 00:48:13,640 --> 00:48:20,350 >> Så i denne IDE, har du det ser ut som en veldig tradisjonell fil nettleser 1112 00:48:20,350 --> 00:48:21,890 over på en side. 1113 00:48:21,890 --> 00:48:24,360 Du har fått en del opp top dit du skal 1114 00:48:24,360 --> 00:48:28,850 å se kildekoden, din Cfile, koden du skriver. 1115 00:48:28,850 --> 00:48:31,880 Og ned bunnen, vil du har et terminalvindu 1116 00:48:31,880 --> 00:48:36,330 som du skal bruke til både kompilere programmet 1117 00:48:36,330 --> 00:48:39,090 og til å kjøre eller utføre programmet. 1118 00:48:39,090 --> 00:48:40,100 OK. 1119 00:48:40,100 --> 00:48:46,560 >> Så bare for å gi oss en liten bit av fundament, i det terminalvinduet, 1120 00:48:46,560 --> 00:48:48,930 du kommer til å være ved hjelp av et sett med kommandoer 1121 00:48:48,930 --> 00:48:53,040 som er standard kommandoer hele de fleste av Unix eller Linux-systemer. 1122 00:48:53,040 --> 00:48:55,890 Og så hvis du noen gang har brukt noen form for Unix, Ubuntu, 1123 00:48:55,890 --> 00:48:59,140 eller noen av de andre smaker, disse kommer til å se kjent. 1124 00:48:59,140 --> 00:49:00,890 >> Hvis du ikke har, ikke bekymre deg. 1125 00:49:00,890 --> 00:49:02,830 Det er ingenting komplisert om dem. 1126 00:49:02,830 --> 00:49:05,330 De er bare å bruke en annen syntaks, en annen navngiving 1127 00:49:05,330 --> 00:49:07,630 konvensjonen enn du har sett før. 1128 00:49:07,630 --> 00:49:12,190 >> Så for å liste ut filene innenfor en bestemt katalog, 1129 00:49:12,190 --> 00:49:15,310 de kommer til å bruke en kommando som heter ls eller liste. 1130 00:49:15,310 --> 00:49:18,010 Hvis du vil se alt med alle detaljene, 1131 00:49:18,010 --> 00:49:21,535 du vil bruke en kommando linje argument med ls -l. 1132 00:49:21,535 --> 00:49:23,910 Og det skal vise deg alt i mer detalj, inkludert 1133 00:49:23,910 --> 00:49:26,270 tillatelser for en fil. 1134 00:49:26,270 --> 00:49:31,190 >> For å endre katalog, du kommer til å bruke cd-kommandoen. 1135 00:49:31,190 --> 00:49:35,180 Og du vil være i stand til å endre katalog både for å gå til hjemmekatalogen. 1136 00:49:35,180 --> 00:49:38,500 Det er bare cd helt av selv, cd med to- 1137 00:49:38,500 --> 00:49:42,930 prikker kommer du opp ett nivå til den forrige katalogen. 1138 00:49:42,930 --> 00:49:46,400 Og du kan også cd til en katalogen ved å skrive inn cd 1139 00:49:46,400 --> 00:49:48,500 og navnet på denne underkatalogen. 1140 00:49:48,500 --> 00:49:50,540 >> Du kan også opprette nye kataloger. 1141 00:49:50,540 --> 00:49:52,790 Og vi kommer til å gå gjennom dette i løpet av et minutt. 1142 00:49:52,790 --> 00:49:54,498 Men bare for å sette alt på skjermen. 1143 00:49:54,498 --> 00:49:56,310 Slik at du kan se dem. 1144 00:49:56,310 --> 00:50:00,420 >> Du vil også ha muligheten å manipulere filer direkte 1145 00:50:00,420 --> 00:50:02,100 fra kommandolinjen. 1146 00:50:02,100 --> 00:50:06,059 Du vil være i stand til å kopiere dem, for å flytte dem, eller for å fjerne dem, 1147 00:50:06,059 --> 00:50:07,600 det vil si, effektivt, for å slette dem. 1148 00:50:07,600 --> 00:50:10,310 1149 00:50:10,310 --> 00:50:15,350 >> Den CS50 IDE gir deg full kraften i kommandolinjeargumenter. 1150 00:50:15,350 --> 00:50:20,280 Og det betyr at du også kan gjøre svært farlige ting. 1151 00:50:20,280 --> 00:50:21,560 OK. 1152 00:50:21,560 --> 00:50:25,010 For eksempel kan du fjerne, eller som er slette, 1153 00:50:25,010 --> 00:50:28,750 en fil uten å spørre for en bekreftelse. 1154 00:50:28,750 --> 00:50:31,820 Og du kan også fjerne recursively-- det er 1155 00:50:31,820 --> 00:50:38,940 dash r flag-- en hel katalogen og alt innholdet. 1156 00:50:38,940 --> 00:50:39,660 OK. 1157 00:50:39,660 --> 00:50:42,940 De er oppført i rød fordi du bør tenke "Danger" hver gang 1158 00:50:42,940 --> 00:50:45,000 du ser disse tingene. 1159 00:50:45,000 --> 00:50:45,920 OK. 1160 00:50:45,920 --> 00:50:46,420 Greit. 1161 00:50:46,420 --> 00:50:50,090 1162 00:50:50,090 --> 00:50:53,430 >> Nå endelig, de tingene som er kommer til å være veldig verdifull for deg, 1163 00:50:53,430 --> 00:50:57,270 er det noen gode triks å vite når du navigerer 1164 00:50:57,270 --> 00:50:59,190 gjennom denne terminalvindu. 1165 00:50:59,190 --> 00:51:03,590 Først kan du tømme skjermen på helst ved bare å skrive i klartekst. 1166 00:51:03,590 --> 00:51:06,310 Og du kommer til å se meg gjøre det ganske ofte. 1167 00:51:06,310 --> 00:51:09,990 Du kan også bare vise teksten i en fil 1168 00:51:09,990 --> 00:51:13,992 ved å skrive mer, og deretter filnavnet. 1169 00:51:13,992 --> 00:51:17,200 Du vil da kunne bla tilbake og frem med at bare med space 1170 00:51:17,200 --> 00:51:19,010 og piltastene. 1171 00:51:19,010 --> 00:51:25,450 >> Hvis du har, slik vi gjorde i dag i foredraget et program som kjører kontinuerlig 1172 00:51:25,450 --> 00:51:29,190 i uendelig loop, du kan stoppe det programmet 1173 00:51:29,190 --> 00:51:35,160 fra å kjøre ved å skrive i kontroll, som er å holde nede Ctrl-C. 1174 00:51:35,160 --> 00:51:38,360 Og du kan ha å gjøre dette flere ganger. 1175 00:51:38,360 --> 00:51:40,620 Datamaskinen blir langt foran deg. 1176 00:51:40,620 --> 00:51:43,380 Og må du noen ganger gi den et par prøver 1177 00:51:43,380 --> 00:51:46,280 før det faktisk vil komme gjennom. 1178 00:51:46,280 --> 00:51:48,760 >> Du vil også kunne sortere gjennom kommandoer 1179 00:51:48,760 --> 00:51:54,230 at du bare skrev bruke opp-tasten, pil, og deretter pil ned. 1180 00:51:54,230 --> 00:51:57,560 Og hva er mest nyttig er stedet for å skrive ut lange filnavn, 1181 00:51:57,560 --> 00:52:02,209 vil du være i stand til å bruke Tab til Autofullfør noen instruksjoner. 1182 00:52:02,209 --> 00:52:04,750 Nå skal vi demonstrere alle disse i løpet av et sekund. 1183 00:52:04,750 --> 00:52:06,780 Så hvis du ikke husker dem, ikke bekymre deg. 1184 00:52:06,780 --> 00:52:10,780 Dette er ting som du vil plukke opp og bruke som vi går sammen. 1185 00:52:10,780 --> 00:52:11,470 OK. 1186 00:52:11,470 --> 00:52:18,830 >> Så i C-- motsetning til i Scratch-- C er et kompilert språk. 1187 00:52:18,830 --> 00:52:23,210 Det betyr at vi kommer til å ta en kilde file-- det er teksten som du skriver, 1188 00:52:23,210 --> 00:52:26,500 kommandoene som du skriver, jo printf () uttalelser, looper, 1189 00:52:26,500 --> 00:52:32,580 alt else-- og vi kommer å ta den filen og lever den av 1190 00:52:32,580 --> 00:52:34,670 til et program kalt kompilatoren. 1191 00:52:34,670 --> 00:52:39,850 >> Kompilatoren vil da ta at tekst som du har skrevet 1192 00:52:39,850 --> 00:52:43,270 og oversette det til binær instruksjoner 1193 00:52:43,270 --> 00:52:46,010 at datamaskinen er faktisk kommer bruk. 1194 00:52:46,010 --> 00:52:49,700 Det kalles objektet eller den kjørbare filen. 1195 00:52:49,700 --> 00:52:55,320 Hvis du ser på denne filen, du kommer å se koden som du har skrevet. 1196 00:52:55,320 --> 00:52:59,480 Hvis du ser på denne filen, du kommer å se en tilfeldig sekvens av tegn 1197 00:52:59,480 --> 00:53:01,680 som gir ingen mening overhodet. 1198 00:53:01,680 --> 00:53:03,250 Det er fordi dette er den binære. 1199 00:53:03,250 --> 00:53:05,560 Det er ikke ment for deg som skal lese. 1200 00:53:05,560 --> 00:53:08,690 >> Men helst du ønsker å kjøre noe, hva du skal 1201 00:53:08,690 --> 00:53:13,670 å kjøre dette objektet filen. 1202 00:53:13,670 --> 00:53:19,110 Så når vi jobber med disse filer, vil vi skrive en fil i C. 1203 00:53:19,110 --> 00:53:23,400 Vi vil deretter kompilere den, ved hjelp av en kommando som make som vil påberope 1204 00:53:23,400 --> 00:53:27,070 kompilatoren klang for C-språk. 1205 00:53:27,070 --> 00:53:31,530 Og som vil produsere en gjenstand fil, som en ut, eller i dette tilfellet, 1206 00:53:31,530 --> 00:53:36,580 navnet, filen min, som jeg har satt i. 1207 00:53:36,580 --> 00:53:37,780 Greit. 1208 00:53:37,780 --> 00:53:39,790 >> Så la oss faktisk prøve dette. 1209 00:53:39,790 --> 00:53:42,850 Så jeg kom opp med et eksempel av hva jeg ønsket å prøve. 1210 00:53:42,850 --> 00:53:47,380 Og en av de tingene som fascinerer meg er animasjon. 1211 00:53:47,380 --> 00:53:51,010 Så vi kommer til å prøve å gjøre en liten bit av animasjon 1212 00:53:51,010 --> 00:53:53,760 bruker bare ASCII-tegn. 1213 00:53:53,760 --> 00:53:56,470 Tegn vi kan skrive ut enkelt nå. 1214 00:53:56,470 --> 00:54:00,890 >> Så her er mitt beste forsøk på å skape for deg 1215 00:54:00,890 --> 00:54:07,005 animasjonen av en bunny kjører gjennom det høye gresset. 1216 00:54:07,005 --> 00:54:07,505 Der er han. 1217 00:54:07,505 --> 00:54:10,150 1218 00:54:10,150 --> 00:54:10,670 OK. 1219 00:54:10,670 --> 00:54:14,050 Så han ikke går ennå, men han er står der i det høye gresset. 1220 00:54:14,050 --> 00:54:17,810 >> Nå hvis jeg var en animatør, i den gamle skolen 1221 00:54:17,810 --> 00:54:20,860 versjon av animasjon, hva jeg ville gjøre det jeg ville produsere 1222 00:54:20,860 --> 00:54:23,640 et bilde av denne kaninen i gresset. 1223 00:54:23,640 --> 00:54:25,390 Og så ville jeg produsere annen picture-- 1224 00:54:25,390 --> 00:54:30,600 annet det de kalte cell-- at hadde kaninen bare litt flyttet. 1225 00:54:30,600 --> 00:54:34,870 Og deretter en tredje som hadde kaninen flyttet litt lenger. 1226 00:54:34,870 --> 00:54:40,610 >> Og jeg ville produsere en hel Sekvensen av disse cellene. 1227 00:54:40,610 --> 00:54:44,220 Noen der kaninen er over på venstre side. 1228 00:54:44,220 --> 00:54:47,050 Og så beveger seg sakte, en ved en mot midten. 1229 00:54:47,050 --> 00:54:51,120 Og deretter fra midten over til høyre. 1230 00:54:51,120 --> 00:54:55,760 Og hvis jeg var da, virkelig heldig, jeg kunne sette det sammen 1231 00:54:55,760 --> 00:54:57,970 og jeg kunne animere dem. 1232 00:54:57,970 --> 00:55:00,370 Og det er min kanin kjører gjennom gresset. 1233 00:55:00,370 --> 00:55:02,310 >> Det er min store PowerPoint trick for dagen. 1234 00:55:02,310 --> 00:55:02,809 OK. 1235 00:55:02,809 --> 00:55:04,760 Så dette er så bra som det blir. 1236 00:55:04,760 --> 00:55:05,260 OK. 1237 00:55:05,260 --> 00:55:08,455 Så, her en gang, her er vår kanin kjøre gjennom gresset. 1238 00:55:08,455 --> 00:55:09,217 >> SPEAKER 19: Igjen. 1239 00:55:09,217 --> 00:55:11,050 BRIAN SCASSELLATI: One mer tid, greit. 1240 00:55:11,050 --> 00:55:11,940 Det er din bunny. 1241 00:55:11,940 --> 00:55:12,940 OK. 1242 00:55:12,940 --> 00:55:15,470 >> Så i dag hva vi skal å gjøre er vi kommer 1243 00:55:15,470 --> 00:55:21,110 å forsøke å automatisere prosessen for fremstilling av disse cellene. 1244 00:55:21,110 --> 00:55:24,135 Vi vil ikke helt får til det punktet av å være i stand til å sette dem alle sammen. 1245 00:55:24,135 --> 00:55:28,900 Men, vi skal prøve å automatisere Fremgangsmåte for generering av denne sekvensen. 1246 00:55:28,900 --> 00:55:32,900 >> Og dette er mye av det animasjon i dag er like. 1247 00:55:32,900 --> 00:55:36,690 Det vil si, du trenger ikke gjøre ting nødvendigvis ved å trekke alt for hånd. 1248 00:55:36,690 --> 00:55:40,610 Vi bruker en datamaskin til å automatisere deler av denne prosessen. 1249 00:55:40,610 --> 00:55:41,110 OK. 1250 00:55:41,110 --> 00:55:47,720 >> Så la meg bytte over nå til vår CS50 IDE. 1251 00:55:47,720 --> 00:55:54,260 Og jeg har laget for us-- og la meg zoome inn her litt bit-- jeg har 1252 00:55:54,260 --> 00:55:58,420 opprettet for oss et utgangspunkt. 1253 00:55:58,420 --> 00:56:03,830 >> Hver gang vi be deg om å sitte ned og skrive et stykke kode, 1254 00:56:03,830 --> 00:56:09,250 hva vi egentlig spør deg om å gjøre er vi ber om å løse et problem. 1255 00:56:09,250 --> 00:56:11,810 Og måten at du bør tenke på å gjøre det 1256 00:56:11,810 --> 00:56:17,900 er ved å starte med noen enkel del av løsningen. 1257 00:56:17,900 --> 00:56:21,730 Og deretter bygge ut fra den delen. 1258 00:56:21,730 --> 00:56:23,400 Og det er det vi skal gjøre i dag. 1259 00:56:23,400 --> 00:56:27,570 >> Så heller enn å prøve alt på en gang til skrive hele haug med kode som er 1260 00:56:27,570 --> 00:56:30,770 kommer til å produsere de 10 animasjon celler, 1261 00:56:30,770 --> 00:56:35,506 vi kommer til å starte i stedet med ett stykke som fungerer. 1262 00:56:35,506 --> 00:56:37,380 Og så skal vi bygge en litt rundt som 1263 00:56:37,380 --> 00:56:39,740 og litt mer og litt mer. 1264 00:56:39,740 --> 00:56:42,550 >> Nå gode ting om løse problemer på denne måten 1265 00:56:42,550 --> 00:56:46,716 er at det vil tillate deg å starte alltid med noe som du vet 1266 00:56:46,716 --> 00:56:51,130 fungerer og innføre én gradvis endring. 1267 00:56:51,130 --> 00:56:54,090 Og det er en fin måte å lære å kode, 1268 00:56:54,090 --> 00:56:58,590 fordi hver gang du gjør en endring, ser du hvilken innvirkning det har. 1269 00:56:58,590 --> 00:56:59,540 OK. 1270 00:56:59,540 --> 00:57:01,450 >> Så her er vårt utgangspunkt. 1271 00:57:01,450 --> 00:57:01,950 OK. 1272 00:57:01,950 --> 00:57:08,030 Så i begynnelsen av filen min, Jeg har hash #included stdio.h. 1273 00:57:08,030 --> 00:57:12,560 Det er slik at jeg kan få printf () funksjonen skal virke. 1274 00:57:12,560 --> 00:57:15,240 >> Jeg så jeg har min hovedfunksjon. 1275 00:57:15,240 --> 00:57:18,760 Og dette ser fortsatt litt uforståelige eller ukjente for noen av dere. 1276 00:57:18,760 --> 00:57:20,010 Det er greit. 1277 00:57:20,010 --> 00:57:23,190 Alt den sier er at den viktigste funksjonen tar 1278 00:57:23,190 --> 00:57:27,830 ingen arguments-- void hjelp ingenting i C. Og det 1279 00:57:27,830 --> 00:57:29,940 avkastning ved konvensjonen et heltall. 1280 00:57:29,940 --> 00:57:33,290 Hoved alltid returnerer et heltall, vanligvis en kode si ting 1281 00:57:33,290 --> 00:57:35,071 gikk bra eller ikke gå bra. 1282 00:57:35,071 --> 00:57:35,570 OK. 1283 00:57:35,570 --> 00:57:39,110 Men hoved må ha det danner for oss akkurat nå. 1284 00:57:39,110 --> 00:57:42,080 >> Jeg har da satt i tre linjer med kode. 1285 00:57:42,080 --> 00:57:46,760 Og sammen med hver linje kode, har jeg satt en kommentar. 1286 00:57:46,760 --> 00:57:51,340 Nå er en av de tingene som vi vil insistere på at du gjør det, 1287 00:57:51,340 --> 00:57:55,320 og det er en så viktig programmering praksis, 1288 00:57:55,320 --> 00:57:57,800 er å alltid kommentere koden din. 1289 00:57:57,800 --> 00:58:02,550 Alltid skrive ned i en Norsk kommentar noe 1290 00:58:02,550 --> 00:58:06,740 som du tror kode er ment å gjøre. 1291 00:58:06,740 --> 00:58:11,360 På den måten senere når du kommer tilbake til den, kan du se på det, og du kan si, 1292 00:58:11,360 --> 00:58:13,800 oh, jeg husker hva jeg var prøver å gjøre med dette. 1293 00:58:13,800 --> 00:58:17,590 Eller når en TA setter seg ned med deg til prøve å hjelpe deg på kontortid, 1294 00:58:17,590 --> 00:58:20,890 de kan se på dette og gå, jeg se hva du prøver å gjøre, 1295 00:58:20,890 --> 00:58:25,630 men i stedet dette er hva som egentlig skjer. 1296 00:58:25,630 --> 00:58:26,130 OK. 1297 00:58:26,130 --> 00:58:30,300 >> Så jeg har tre deler til min kode, Jeg kommer til å først og fremst print 1298 00:58:30,300 --> 00:58:33,110 ut noen prikker i starten. 1299 00:58:33,110 --> 00:58:37,480 Jeg vil deretter skrive ut min ekstremt fancy bunny. 1300 00:58:37,480 --> 00:58:40,600 Og så noen litt prikker på slutten. 1301 00:58:40,600 --> 00:58:45,220 >> Og disse tre utskrifts uttalelser bør ser kjent ut for deg på dette punktet. 1302 00:58:45,220 --> 00:58:47,350 Alt som jeg gjør i hver av dem er at jeg er 1303 00:58:47,350 --> 00:58:49,780 skrive ut en sekvens av tegn. 1304 00:58:49,780 --> 00:58:51,370 Det er ingen variabler involvert. 1305 00:58:51,370 --> 00:58:54,320 Alt er bare flat. 1306 00:58:54,320 --> 00:58:55,270 OK. 1307 00:58:55,270 --> 00:59:07,340 >> Så hvis jeg går nå ned til min terminal-- la oss se om jeg kan få dette tilbake out-- 1308 00:59:07,340 --> 00:59:09,370 og jeg kommer til å skrive klart igjen. 1309 00:59:09,370 --> 00:59:12,507 >> SPEAKER 20: Har vi bruk dobbel skråstrek å kommentere? 1310 00:59:12,507 --> 00:59:14,340 BRIAN SCASSELLATI: Can bruke double-- ja. 1311 00:59:14,340 --> 00:59:16,920 Det finnes flere måter å legge inn kommentarer i C. One 1312 00:59:16,920 --> 00:59:19,440 måte er å bruke den doble skråstrek. 1313 00:59:19,440 --> 00:59:24,910 Den andre er å bruke en skråstrek og en stjerne og lukk med en stjerne og en skråstrek. 1314 00:59:24,910 --> 00:59:26,110 Greit. 1315 00:59:26,110 --> 00:59:28,950 >> Først av alt, kommer jeg til å starte navigeringen rundt her. 1316 00:59:28,950 --> 00:59:35,350 Så hvis jeg går til min hjemmekatalog, Jeg har endret kataloger der, 1317 00:59:35,350 --> 00:59:40,230 Jeg kommer til å se ut og se hva som er i denne katalogen, ls, liste ut. 1318 00:59:40,230 --> 00:59:43,230 Jeg kommer til å se at jeg har fikk to underkataloger. 1319 00:59:43,230 --> 00:59:47,910 La oss gjøre dette til en litt større her, slik at vi alle kan se det. 1320 00:59:47,910 --> 00:59:50,610 >> Jeg kan se at jeg har fikk to underkataloger. 1321 00:59:50,610 --> 00:59:53,510 Jeg kommer til å endre katalog å gå inn i arbeidsområdet. 1322 00:59:53,510 --> 00:59:58,380 Og jeg kommer til å bare skrive ut del av det, og så bare trykke Tab. 1323 00:59:58,380 --> 01:00:01,520 Og det vil fullføre resten for meg. 1324 01:00:01,520 --> 01:00:03,370 Fancy. 1325 01:00:03,370 --> 01:00:04,960 >> Jeg skal se og se i arbeidsområdet. 1326 01:00:04,960 --> 01:00:08,431 Og akkurat nå, jeg jobber på SuperSection 1327 01:00:08,431 --> 01:00:09,680 at vi lærer akkurat nå. 1328 01:00:09,680 --> 01:00:10,971 Så jeg skal gå inn i den katalogen. 1329 01:00:10,971 --> 01:00:14,770 1330 01:00:14,770 --> 01:00:15,970 Og til slutt, se og se. 1331 01:00:15,970 --> 01:00:18,480 Og jeg har fått denne filen bunny.c. 1332 01:00:18,480 --> 01:00:20,980 >> Greit så la meg klar igjen. 1333 01:00:20,980 --> 01:00:24,370 Og jeg kommer til å now-- igjen jeg er fortsatt bor i den katalogen 1334 01:00:24,370 --> 01:00:27,540 og det forteller meg at jeg er i at SuperSection katalogen. 1335 01:00:27,540 --> 01:00:30,690 Jeg kommer til å gå videre og gjøre mitt program bunny. 1336 01:00:30,690 --> 01:00:33,730 1337 01:00:33,730 --> 01:00:38,810 Og at kommandoen, må bunny, mens høres litt rart, 1338 01:00:38,810 --> 01:00:42,960 også påkaller klang kompilatoren. 1339 01:00:42,960 --> 01:00:46,470 >> Og det er produsert for meg en utgang som er 1340 01:00:46,470 --> 01:00:52,130 en kjørbar funny-- en kjørbar fil som heter bunny. 1341 01:00:52,130 --> 01:00:52,700 OK. 1342 01:00:52,700 --> 01:00:56,700 Jeg kan da, og dette høres enda verre, utføre bunny. 1343 01:00:56,700 --> 01:00:59,360 1344 01:00:59,360 --> 01:01:00,680 OK. 1345 01:01:00,680 --> 01:01:03,150 Og la oss se hva det gjør. 1346 01:01:03,150 --> 01:01:04,527 OK. 1347 01:01:04,527 --> 01:01:06,360 Det er en liten bit av hva jeg hadde ventet. 1348 01:01:06,360 --> 01:01:11,290 Jeg har min kanin bilde i det, men jeg slags ønsket det helt av seg selv. 1349 01:01:11,290 --> 01:01:13,186 Hva gikk jeg glipp av? 1350 01:01:13,186 --> 01:01:14,478 >> SPEAKER 21: Slash l eller slash n. 1351 01:01:14,478 --> 01:01:15,602 BRIAN SCASSELLATI: Slash n. 1352 01:01:15,602 --> 01:01:16,580 OK. 1353 01:01:16,580 --> 01:01:18,800 Så la oss gå tilbake her ute. 1354 01:01:18,800 --> 01:01:20,330 Og jeg får ut av det. 1355 01:01:20,330 --> 01:01:23,320 Og jeg skal gå tilbake til denne. 1356 01:01:23,320 --> 01:01:27,720 Og la oss ta en titt nå fra min viktigste funksjon her. 1357 01:01:27,720 --> 01:01:29,280 >> Så hva bør jeg gjøre? 1358 01:01:29,280 --> 01:01:30,465 Jeg ønsker å avslutte linjen. 1359 01:01:30,465 --> 01:01:34,020 1360 01:01:34,020 --> 01:01:35,800 Så jeg skal putte i en kommentar. 1361 01:01:35,800 --> 01:01:38,430 Jeg skal sette i en printf (). 1362 01:01:38,430 --> 01:01:41,350 Og hva må jeg sette inn? 1363 01:01:41,350 --> 01:01:41,890 / n. 1364 01:01:41,890 --> 01:01:43,480 OK. 1365 01:01:43,480 --> 01:01:46,040 Hva må jeg gjøre for å avslutte det med? 1366 01:01:46,040 --> 01:01:47,100 Semikolon. 1367 01:01:47,100 --> 01:01:48,730 Greit. 1368 01:01:48,730 --> 01:01:52,880 >> Nå er en av de virkelig viktige ting er å sørge for 1369 01:01:52,880 --> 01:01:56,720 hver gang du gjør en endring i koden din, at du lagrer det. 1370 01:01:56,720 --> 01:02:01,380 Hvis du ikke har lagret koden din, er du kommer til å legge merke til en liten stjerne der oppe. 1371 01:02:01,380 --> 01:02:03,420 Og at stjerne sier du har ikke lagret denne koden. 1372 01:02:03,420 --> 01:02:07,790 >> Hvis jeg kompilere det akkurat nå, er det ikke kommer til å reflektere noen av disse endringene, 1373 01:02:07,790 --> 01:02:11,680 fordi kompilatoren ser på filen det er på disken, og ikke filen som er 1374 01:02:11,680 --> 01:02:13,790 åpne i redigeringsprogrammet. 1375 01:02:13,790 --> 01:02:14,290 Greit. 1376 01:02:14,290 --> 01:02:20,830 >> Så la oss lagre det og så får vi gå rett på her nede, kommer ut igjen. 1377 01:02:20,830 --> 01:02:24,670 Kom ned til min terminal. 1378 01:02:24,670 --> 01:02:27,193 Og la oss rydde plass igjen. 1379 01:02:27,193 --> 01:02:30,690 1380 01:02:30,690 --> 01:02:35,760 >> Og vi kan gå videre og én mer tid gjøre vårt kaninen program. 1381 01:02:35,760 --> 01:02:40,180 Og utføre bunny. 1382 01:02:40,180 --> 01:02:42,500 Som ikke fungerte heller. 1383 01:02:42,500 --> 01:02:43,950 Feil strek. 1384 01:02:43,950 --> 01:02:52,280 Så hvis du ser på hva jeg har fått, satte jeg en / n der inne, men jeg hadde feil strek. 1385 01:02:52,280 --> 01:02:56,190 >> Alt for at din datamaskin gjør er veldig eksplisitt. 1386 01:02:56,190 --> 01:02:57,230 OK? 1387 01:02:57,230 --> 01:03:01,250 En liten feil i tegnsetting, og plutselig du ikke får det du ønsker. 1388 01:03:01,250 --> 01:03:01,750 Greit. 1389 01:03:01,750 --> 01:03:03,740 Så la oss zoome ut igjen. 1390 01:03:03,740 --> 01:03:04,410 Vi vil gå tilbake. 1391 01:03:04,410 --> 01:03:07,930 Vel gjør at svært rask reparasjon. 1392 01:03:07,930 --> 01:03:09,270 Vi vil sette riktig slash i. 1393 01:03:09,270 --> 01:03:10,570 Vi vil lagre det. 1394 01:03:10,570 --> 01:03:13,410 Vi kommer tilbake igjen. 1395 01:03:13,410 --> 01:03:16,730 >> For noen grunn, det er ikke å være lykkelig, men la oss gå videre 1396 01:03:16,730 --> 01:03:19,850 og vi vil gå tilbake til terminalen her. 1397 01:03:19,850 --> 01:03:22,940 Klare det opp. 1398 01:03:22,940 --> 01:03:24,880 Vi vil zoome inn. 1399 01:03:24,880 --> 01:03:28,410 Og enda en gang, vil vi gjøre bunny. 1400 01:03:28,410 --> 01:03:32,360 Og nå sikker nok, det fungerer. 1401 01:03:32,360 --> 01:03:33,240 Hurra. 1402 01:03:33,240 --> 01:03:34,300 OK. 1403 01:03:34,300 --> 01:03:39,580 >> Så la oss prøve å gjøre dette litt mer generelt. 1404 01:03:39,580 --> 01:03:46,750 La oss se om stedet for bare skrive ut én bestemt ramme, 1405 01:03:46,750 --> 01:03:49,610 la oss se om vi kan gjøre dette slik at vi kan få alle 10 1406 01:03:49,610 --> 01:03:52,960 av disse animerte rammer at vi ønsket å ha. 1407 01:03:52,960 --> 01:03:56,550 Så igjen, la oss ta dette et skritt av gangen. 1408 01:03:56,550 --> 01:03:59,900 >> La oss først generalisere det, ikke slik at jeg gjør alle rammer, 1409 01:03:59,900 --> 01:04:03,990 men så jeg gjøre noen ramme som jeg kanskje vil. 1410 01:04:03,990 --> 01:04:05,920 Så hva er forskjellen mellom rammene? 1411 01:04:05,920 --> 01:04:07,377 Er kaninen det samme? 1412 01:04:07,377 --> 01:04:07,960 PUBLIKUM: Ja. 1413 01:04:07,960 --> 01:04:08,390 BRIAN SCASSELLATI: Yeah. 1414 01:04:08,390 --> 01:04:09,370 Hva er forskjellen? 1415 01:04:09,370 --> 01:04:10,246 >> PUBLIKUM: Posisjon. 1416 01:04:10,246 --> 01:04:11,870 BRIAN SCASSELLATI: Sin posisjon, ikke sant? 1417 01:04:11,870 --> 01:04:15,590 Og hvordan gjør jeg styre sin posisjon? 1418 01:04:15,590 --> 01:04:17,340 Hvor mange prikker jeg er la ved begynnelsen 1419 01:04:17,340 --> 01:04:19,048 og hvor mange prikker jeg er å sette på slutten. 1420 01:04:19,048 --> 01:04:21,970 Så jeg hadde fem på begynner og fem på slutten. 1421 01:04:21,970 --> 01:04:28,320 >> La oss erstatte det fem med en for loop. 1422 01:04:28,320 --> 01:04:29,380 OK. 1423 01:04:29,380 --> 01:04:32,330 Og jeg kommer til å lage en for sløyfe nå som kommer til å si, 1424 01:04:32,330 --> 01:04:37,800 Jeg kommer til å skrive ut noen tall prikker i begynnelsen. 1425 01:04:37,800 --> 01:04:39,600 Jeg kommer til å bruke en variabel. 1426 01:04:39,600 --> 01:04:44,150 La oss si, om jeg så disk i min loop. 1427 01:04:44,150 --> 01:04:47,200 Og jeg kommer til å erklære det opp toppen. 1428 01:04:47,200 --> 01:04:49,360 >> Og deretter i for loop Jeg trenger å gjøre tre ting. 1429 01:04:49,360 --> 01:04:52,340 Det første jeg må gjøre er jeg trenger å initial jeg. 1430 01:04:52,340 --> 01:04:56,570 Hva bør jeg initial det å begynne å være? 1431 01:04:56,570 --> 01:04:57,160 0. 1432 01:04:57,160 --> 01:04:58,310 OK. 1433 01:04:58,310 --> 01:05:00,950 >> Da må jeg si, hva er oppsigelsen tilstanden? 1434 01:05:00,950 --> 01:05:03,020 Når bør jeg slutte? 1435 01:05:03,020 --> 01:05:05,983 Vel hvor mange prikker gjør du ønsker å skrive ut på denne? 1436 01:05:05,983 --> 01:05:06,921 >> PUBLIKUM: Five. 1437 01:05:06,921 --> 01:05:08,170 BRIAN SCASSELLATI: Fem igjen? 1438 01:05:08,170 --> 01:05:10,650 Hva med å la oss gjøre noe annerledes, vi gjorde fem. 1439 01:05:10,650 --> 01:05:12,584 La oss vise at det er annerledes. 1440 01:05:12,584 --> 01:05:13,250 SPEAKER 22: Two. 1441 01:05:13,250 --> 01:05:13,580 BRIAN SCASSELLATI: Two. 1442 01:05:13,580 --> 01:05:14,080 OK. 1443 01:05:14,080 --> 01:05:17,760 Så hvis jeg vil ha to prikker, hva bør jeg satt her? 1444 01:05:17,760 --> 01:05:19,140 >> PUBLIKUM: Tre. 1445 01:05:19,140 --> 01:05:20,530 >> BRIAN SCASSELLATI: Tre. 1446 01:05:20,530 --> 01:05:21,400 OK. 1447 01:05:21,400 --> 01:05:24,220 Hvor mange ganger er at kommer til å gå gjennom? 1448 01:05:24,220 --> 01:05:28,469 Det kommer til å gå gjennom tre ganger, 0, 1 og 2, Høyre? 1449 01:05:28,469 --> 01:05:30,010 Greit, la oss gå tilbake ned til to. 1450 01:05:30,010 --> 01:05:31,570 Nå skal vi få to prikker. 1451 01:05:31,570 --> 01:05:35,800 Og hva ønsker jeg å gjøre hver gang jeg går gjennom løkken? 1452 01:05:35,800 --> 01:05:38,657 Hva må endres hver gang jeg går gjennom? 1453 01:05:38,657 --> 01:05:39,850 >> SPEAKER 23: Legg en prikk. 1454 01:05:39,850 --> 01:05:41,020 >> BRIAN SCASSELLATI: Jeg må holde det gående. 1455 01:05:41,020 --> 01:05:41,978 Jeg kommer til å legge en prikk. 1456 01:05:41,978 --> 01:05:45,310 Jeg kommer til å skrive ut en prikk, hver gang gjennom sløyfen. 1457 01:05:45,310 --> 01:05:49,990 Men hvordan skal jeg holde styr på hvor mange ganger jeg har vært gjennom løkken? 1458 01:05:49,990 --> 01:05:53,260 Jeg bruker jeg, som variabel, som teller. 1459 01:05:53,260 --> 01:05:57,110 >> Så hver gang gjennom, jeg kommer å øke telleren med én. 1460 01:05:57,110 --> 01:06:00,670 Nå, det er det samme for meg som å si i = i + 1. 1461 01:06:00,670 --> 01:06:01,210 Det er greit. 1462 01:06:01,210 --> 01:06:04,653 Jeg kunne gjøre det at-- jeg liker stenografi, så jeg kommer til å si i ++. 1463 01:06:04,653 --> 01:06:07,190 1464 01:06:07,190 --> 01:06:08,370 OK. 1465 01:06:08,370 --> 01:06:10,680 >> La oss gjøre det samme her nede på bunnen. 1466 01:06:10,680 --> 01:06:11,846 Bare jeg slags gjorde at en. 1467 01:06:11,846 --> 01:06:13,990 Jeg kommer til å fortelle dere gjøre dette helt. 1468 01:06:13,990 --> 01:06:14,260 Greit. 1469 01:06:14,260 --> 01:06:15,426 >> Så hva skal jeg skrive her? 1470 01:06:15,426 --> 01:06:17,170 Her er min for loop. 1471 01:06:17,170 --> 01:06:23,162 Jeg kommer til å gjøre en printf () og jeg kommer å gjøre det slik at jeg bare skrive ut én prikk 1472 01:06:23,162 --> 01:06:25,740 på at bunnen. 1473 01:06:25,740 --> 01:06:27,740 >> Hva skal jeg skrive inne i dette for loop nå? 1474 01:06:27,740 --> 01:06:30,897 1475 01:06:30,897 --> 01:06:33,948 Vel, først av alt hva variabler bør jeg bruke? 1476 01:06:33,948 --> 01:06:35,430 >> SPEAKER 24: j. 1477 01:06:35,430 --> 01:06:36,880 >> BRIAN SCASSELLATI: Jeg kunne bruke j. 1478 01:06:36,880 --> 01:06:38,040 Kan jeg bruke den samme? 1479 01:06:38,040 --> 01:06:39,961 Kan jeg bruke jeg igjen? 1480 01:06:39,961 --> 01:06:40,460 Yeah. 1481 01:06:40,460 --> 01:06:45,531 Det er OK, fordi Is at jeg bruker opp her, 1482 01:06:45,531 --> 01:06:47,780 Jeg trenger ikke dem igjen når Jeg kommer ned til dette punktet. 1483 01:06:47,780 --> 01:06:52,240 1484 01:06:52,240 --> 01:06:53,790 >> Så hva bør jeg initial jeg til? 1485 01:06:53,790 --> 01:06:56,675 1486 01:06:56,675 --> 01:06:57,300 SPEAKER 25: 10. 1487 01:06:57,300 --> 01:06:58,567 BRIAN SCASSELLATI: 0. 1488 01:06:58,567 --> 01:06:59,400 Hva bør jeg sjekke? 1489 01:06:59,400 --> 01:07:02,960 Hvor mange prikker jeg trenger nå på slutten gjøre hvis jeg har to prikker på begynnelsen? 1490 01:07:02,960 --> 01:07:05,820 1491 01:07:05,820 --> 01:07:09,165 Jeg trenger åtte på slutten, så hva bør jeg sjekke, jeg mindre than-- 1492 01:07:09,165 --> 01:07:12,645 >> PUBLIKUM: Sju, åtte, ni. 1493 01:07:12,645 --> 01:07:14,020 BRIAN SCASSELLATI: Jeg hørte sju. 1494 01:07:14,020 --> 01:07:14,810 Jeg hørte åtte. 1495 01:07:14,810 --> 01:07:15,970 Og jeg hørte ni. 1496 01:07:15,970 --> 01:07:16,470 OK. 1497 01:07:16,470 --> 01:07:19,540 Så vi er alle i den rette ball-- Jason sier 10. 1498 01:07:19,540 --> 01:07:21,550 OK. 1499 01:07:21,550 --> 01:07:25,920 >> Hvis jeg trengte to prikker for den første, hvor mange gjør 1500 01:07:25,920 --> 01:07:30,170 I-- og jeg trenger åtte prikker for siste one-- Jeg satte en to opp ovenfor, 1501 01:07:30,170 --> 01:07:31,743 hva skal jeg sette ned nedenfor? 1502 01:07:31,743 --> 01:07:32,570 >> PUBLIKUM: Eight. 1503 01:07:32,570 --> 01:07:33,611 >> BRIAN SCASSELLATI: Eight. 1504 01:07:33,611 --> 01:07:35,695 Fordi det kommer til å telle null gjennom syv. 1505 01:07:35,695 --> 01:07:38,490 Og det er åtte ganger gjennom løkken. 1506 01:07:38,490 --> 01:07:38,990 OK. 1507 01:07:38,990 --> 01:07:41,774 Og hva må jeg gjøre på slutten? 1508 01:07:41,774 --> 01:07:42,670 >> PUBLIKUM: i ++. 1509 01:07:42,670 --> 01:07:44,400 >> BRIAN SCASSELLATI: i ++. 1510 01:07:44,400 --> 01:07:45,440 Greit. 1511 01:07:45,440 --> 01:07:48,260 Så det ser ganske bra der. 1512 01:07:48,260 --> 01:07:50,620 La oss prøve det og la oss se hva det gjør. 1513 01:07:50,620 --> 01:07:51,450 OK. 1514 01:07:51,450 --> 01:07:53,770 Så vi kommer til å lagre det. 1515 01:07:53,770 --> 01:07:54,940 Fin og lagres. 1516 01:07:54,940 --> 01:07:56,910 >> Vi vil zoome ut igjen. 1517 01:07:56,910 --> 01:07:58,220 Vi vil prøve her i terminalen. 1518 01:07:58,220 --> 01:08:01,440 1519 01:08:01,440 --> 01:08:02,970 Vi vil zoome inn. 1520 01:08:02,970 --> 01:08:05,416 Oops. 1521 01:08:05,416 --> 01:08:09,990 Vi vil, en gang til, gjøre vårt kaninen program. 1522 01:08:09,990 --> 01:08:14,460 Og gå videre og utføre bunny. 1523 01:08:14,460 --> 01:08:15,980 Og det er det. 1524 01:08:15,980 --> 01:08:17,710 >> Så det er vår bunny. 1525 01:08:17,710 --> 01:08:25,130 Der det har to prikker på begynnelsen og åtte prikker ut på slutten. 1526 01:08:25,130 --> 01:08:27,540 Everybody fortsatt med meg? 1527 01:08:27,540 --> 01:08:28,770 OK. 1528 01:08:28,770 --> 01:08:29,580 >> Så vi bygde den opp. 1529 01:08:29,580 --> 01:08:33,000 Vi bygget en bunny, en bestemt ramme. 1530 01:08:33,000 --> 01:08:36,229 Nå har vi vært i stand til å generalisere at for å bygge 1531 01:08:36,229 --> 01:08:38,390 flere, ulike typer rammer. 1532 01:08:38,390 --> 01:08:42,399 >> Nå la oss gå videre, og har det generere ikke bare ett bilde, 1533 01:08:42,399 --> 01:08:46,290 men la oss generere 10 rammer, der vi sakte 1534 01:08:46,290 --> 01:08:50,569 gjøre bunny flytte alle veien over jordet. 1535 01:08:50,569 --> 01:08:51,430 Greit. 1536 01:08:51,430 --> 01:08:53,660 >> La oss gå tilbake. 1537 01:08:53,660 --> 01:08:54,839 Og vi skal prøve nå. 1538 01:08:54,839 --> 01:09:00,680 1539 01:09:00,680 --> 01:09:02,830 Så hva gjør jeg virkelig trenger å endre her? 1540 01:09:02,830 --> 01:09:06,139 1541 01:09:06,139 --> 01:09:07,180 Hva trenger jeg å endre? 1542 01:09:07,180 --> 01:09:10,638 >> SPEAKER 26: Du må først endre antall prikker maksimal 1543 01:09:10,638 --> 01:09:11,626 i begynnelsen. 1544 01:09:11,626 --> 01:09:16,850 Fordi hvis vi gjør 10 prikker, det kommer til å må opp for å skalere. 1545 01:09:16,850 --> 01:09:17,850 BRIAN SCASSELLATI: Yeah. 1546 01:09:17,850 --> 01:09:23,760 Så akkurat nå har jeg det liksom fastkoblet å alltid gjøre to prikker i begynnelsen 1547 01:09:23,760 --> 01:09:27,890 og alltid gjøre åtte prikker på slutten. 1548 01:09:27,890 --> 01:09:30,660 >> Jeg ønsker å bygge en annen loop, ikke sant? 1549 01:09:30,660 --> 01:09:33,290 Fordi jeg ønsker ikke å bygge bare en kanin bilde, 1550 01:09:33,290 --> 01:09:37,140 Jeg ønsker å bygge 10 kaninen bilder. 1551 01:09:37,140 --> 01:09:41,500 Så jeg trenger å bygge en annen loop, og som jeg gå gjennom den loop, 1552 01:09:41,500 --> 01:09:44,660 Jeg ønsker å endre hvor mange prikker jeg ut i begynnelsen 1553 01:09:44,660 --> 01:09:50,529 og hvor mange prikker jeg ut på slutten, basert på hvilken syklus gjennom løkken 1554 01:09:50,529 --> 01:09:52,270 Jeg er med. 1555 01:09:52,270 --> 01:09:52,770 Greit. 1556 01:09:52,770 --> 01:09:54,430 >> Så la oss få en annen disk. 1557 01:09:54,430 --> 01:09:58,142 Noen har før sagt j, slik at vi vil gjøre et annet j. 1558 01:09:58,142 --> 01:10:00,100 Og nå skal vi bygge en annen for loop. 1559 01:10:00,100 --> 01:10:02,650 1560 01:10:02,650 --> 01:10:06,200 >> Hva går inne som loop? 1561 01:10:06,200 --> 01:10:09,060 Dette ting må gå inne i loop, ikke sant? 1562 01:10:09,060 --> 01:10:11,190 Har kaninen har å gå inn i loop? 1563 01:10:11,190 --> 01:10:13,390 Trenger jeg en kanin i hver av de 10 rammer? 1564 01:10:13,390 --> 01:10:14,099 >> PUBLIKUM: Uh-he. 1565 01:10:14,099 --> 01:10:15,098 BRIAN SCASSELLATI: Yeah. 1566 01:10:15,098 --> 01:10:17,250 Jeg vil ha en kanin i hver av de 10 rammer, ikke sant? 1567 01:10:17,250 --> 01:10:20,531 Hva med prikker på Til slutt, trenger jeg det? 1568 01:10:20,531 --> 01:10:21,030 OK. 1569 01:10:21,030 --> 01:10:22,550 >> Så jeg kommer til å rykke dem alle. 1570 01:10:22,550 --> 01:10:25,110 Jeg kommer til å markere alle dette, og jeg kommer til å treffe Tab. 1571 01:10:25,110 --> 01:10:28,590 Og det kommer til å skyve dem over litt, slik at det er lett for meg 1572 01:10:28,590 --> 01:10:32,010 å se hva som er i loopen. 1573 01:10:32,010 --> 01:10:33,710 Og så skal jeg avslutte det. 1574 01:10:33,710 --> 01:10:35,850 La oss si. 1575 01:10:35,850 --> 01:10:36,430 OK? 1576 01:10:36,430 --> 01:10:39,230 >> Nå, i denne sløyfen som Jeg er building-- Uff, 1577 01:10:39,230 --> 01:10:43,810 gjøre det slik at du kan see-- Jeg har min teller j. 1578 01:10:43,810 --> 01:10:45,630 Jeg startet den på 0. 1579 01:10:45,630 --> 01:10:47,829 Hvor mange ganger jeg vil gjøre å gå gjennom dette loop? 1580 01:10:47,829 --> 01:10:48,620 PUBLIKUM: 10 ganger. 1581 01:10:48,620 --> 01:10:49,786 BRIAN SCASSELLATI: 10 ganger. 1582 01:10:49,786 --> 01:10:51,402 Så hva nummeret skal jeg sette her? 1583 01:10:51,402 --> 01:10:52,880 >> PUBLIKUM: 9, 10. 1584 01:10:52,880 --> 01:10:55,600 >> BRIAN SCASSELLATI: 9, 10, noen må si 11, ikke sant? 1585 01:10:55,600 --> 01:10:58,190 1586 01:10:58,190 --> 01:11:01,585 Jeg ønsket to prikker før og sette i mindre enn to. 1587 01:11:01,585 --> 01:11:03,810 Jeg ønsket åtte prikker, Jeg satte i mindre enn åtte. 1588 01:11:03,810 --> 01:11:06,950 Nå ønsker jeg å gå gjennom 10 ganger, så jeg satte j mindre than-- 1589 01:11:06,950 --> 01:11:07,590 >> PUBLIKUM: 10. 1590 01:11:07,590 --> 01:11:08,610 >> BRIAN SCASSELLATI: 10. 1591 01:11:08,610 --> 01:11:10,150 Det vi går. 1592 01:11:10,150 --> 01:11:13,360 Og hva gjør jeg på slutten for å j? 1593 01:11:13,360 --> 01:11:15,310 ++, Øke den. 1594 01:11:15,310 --> 01:11:16,230 OK. 1595 01:11:16,230 --> 01:11:21,500 Nå, her er den vanskelige delen, hva er kommer til å skje akkurat nå gjør jeg dette? 1596 01:11:21,500 --> 01:11:24,537 Jeg kommer til å skrive ut 10 bilder? 1597 01:11:24,537 --> 01:11:26,370 SPEAKER 27: Jeg tror de vil alle være den samme. 1598 01:11:26,370 --> 01:11:28,453 BRIAN SCASSELLATI: De vil alle være det samme, ikke sant? 1599 01:11:28,453 --> 01:11:31,750 Fordi alle av dem er fortsatt å sette to punkter i begynnelsen. 1600 01:11:31,750 --> 01:11:34,162 Men jeg ønsker ikke dem alle til har to prikker begynnelsen. 1601 01:11:34,162 --> 01:11:35,870 Hvor mange prikker kan jeg vil i begynnelsen? 1602 01:11:35,870 --> 01:11:39,097 1603 01:11:39,097 --> 01:11:40,020 >> PUBLIKUM: Endre. 1604 01:11:40,020 --> 01:11:42,840 >> BRIAN SCASSELLATI: Jeg vil at det skal endre seg, ikke sant? 1605 01:11:42,840 --> 01:11:46,588 Så hva har jeg her som er i endring hver gang sløyfen går gjennom? 1606 01:11:46,588 --> 01:11:48,242 >> PUBLIKUM: Antall prikker, j. 1607 01:11:48,242 --> 01:11:49,950 BRIAN SCASSELLATI: j, antall prikker. 1608 01:11:49,950 --> 01:11:54,782 Så jeg kan endre dette for å være j. 1609 01:11:54,782 --> 01:11:59,190 Første gang gjennom sløyfe, hva som kommer til å bli? 1610 01:11:59,190 --> 01:12:01,700 Hva setter jeg j til først? 1611 01:12:01,700 --> 01:12:02,420 >> PUBLIKUM: 0. 1612 01:12:02,420 --> 01:12:05,700 >> BRIAN SCASSELLATI: Så hvor mange ganger kommer jeg til å gjøre dette? 1613 01:12:05,700 --> 01:12:06,750 0. 1614 01:12:06,750 --> 01:12:11,750 Den andre gangen gjennom løkken, er j kommer til å bli en fordi jeg øke det. 1615 01:12:11,750 --> 01:12:14,180 Hvor mange prikker jeg kommer til å skrive ut? 1616 01:12:14,180 --> 01:12:15,100 1. 1617 01:12:15,100 --> 01:12:19,904 Den tredje gangen gjennom løkken, hvor mange prikker jeg kommer til å skrive ut? 1618 01:12:19,904 --> 01:12:20,587 >> PUBLIKUM: Tre. 1619 01:12:20,587 --> 01:12:22,170 BRIAN SCASSELLATI: j kommer til å bli tre. 1620 01:12:22,170 --> 01:12:24,890 Hvor mange prikker jeg kommer til å skrive ut? 1621 01:12:24,890 --> 01:12:26,817 Oh, sorry, j kommer til å være to. 1622 01:12:26,817 --> 01:12:28,233 Hvor mange prikker jeg kommer til å skrive ut? 1623 01:12:28,233 --> 01:12:28,980 >> PUBLIKUM: 2. 1624 01:12:28,980 --> 01:12:29,855 >> BRIAN SCASSELLATI: 2. 1625 01:12:29,855 --> 01:12:32,460 OK, så jeg kommer til å holde økes at når vi går sammen. 1626 01:12:32,460 --> 01:12:33,460 Hva med der nede? 1627 01:12:33,460 --> 01:12:34,310 Hva går ned her? 1628 01:12:34,310 --> 01:12:38,080 Jeg vil ikke ha åtte alltid på slutten lenger? 1629 01:12:38,080 --> 01:12:39,269 >> SPEAKER 28: 10. 1630 01:12:39,269 --> 01:12:40,685 BRIAN SCASSELLATI: Jeg vil ha 10 prikker? 1631 01:12:40,685 --> 01:12:43,440 1632 01:12:43,440 --> 01:12:44,620 Jeg vil at det skal endre seg, også. 1633 01:12:44,620 --> 01:12:47,469 Så hvordan jeg vil at det skal forandre seg? 1634 01:12:47,469 --> 01:12:49,167 >> PUBLIKUM: [uhørlig]. 1635 01:12:49,167 --> 01:12:51,750 BRIAN SCASSELLATI: Vel, hvis jeg har fem punkter i begynnelsen, 1636 01:12:51,750 --> 01:12:53,293 hvor mange dot s får jeg på slutten? 1637 01:12:53,293 --> 01:12:54,020 >> PUBLIKUM: Five. 1638 01:12:54,020 --> 01:12:55,630 >> BRIAN SCASSELLATI: Hvis jeg har seks prikker i begynnelsen, 1639 01:12:55,630 --> 01:12:56,875 hvor mange får jeg på slutten? 1640 01:12:56,875 --> 01:12:57,500 PUBLIKUM: Four. 1641 01:12:57,500 --> 01:12:58,950 BRIAN SCASSELLATI: Hvis jeg fikk sju prikker i begynnelsen, 1642 01:12:58,950 --> 01:13:00,204 hvor mange får jeg på slutten? 1643 01:13:00,204 --> 01:13:00,870 PUBLIKUM: Tre. 1644 01:13:00,870 --> 01:13:03,161 BRIAN SCASSELLATI: Hvis jeg har fikk j prikker i begynnelsen, 1645 01:13:03,161 --> 01:13:04,790 hvor mange får jeg på slutten? 1646 01:13:04,790 --> 01:13:07,520 10-j. 1647 01:13:07,520 --> 01:13:08,650 OK. 1648 01:13:08,650 --> 01:13:10,390 Så la oss prøve det ut. 1649 01:13:10,390 --> 01:13:13,180 >> Så jeg kommer til å redde vår kaninen program. 1650 01:13:13,180 --> 01:13:16,270 Nok en gang vil vi zoome ut. 1651 01:13:16,270 --> 01:13:19,090 Vi vil gå ned til vår terminal. 1652 01:13:19,090 --> 01:13:20,180 Vi skal klare det. 1653 01:13:20,180 --> 01:13:23,410 Og zoome inn. 1654 01:13:23,410 --> 01:13:26,410 Vi vil gjøre vårt kaninen program, igjen. 1655 01:13:26,410 --> 01:13:27,690 Og vi vil kjøre den. 1656 01:13:27,690 --> 01:13:30,462 1657 01:13:30,462 --> 01:13:32,090 UH oh. 1658 01:13:32,090 --> 01:13:34,580 >> Hold ut, la oss zoome ut. 1659 01:13:34,580 --> 01:13:36,860 Fikk jeg 10 bilder? 1660 01:13:36,860 --> 01:13:38,970 Vel, hvor mange kaniner ser jeg der oppe? 1661 01:13:38,970 --> 01:13:43,330 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. 1662 01:13:43,330 --> 01:13:44,820 Jeg fikk 10 rammer. 1663 01:13:44,820 --> 01:13:46,375 Er de alle det samme? 1664 01:13:46,375 --> 01:13:47,000 PUBLIKUM: Yeah. 1665 01:13:47,000 --> 01:13:48,740 Nei. 1666 01:13:48,740 --> 01:13:50,000 >> BRIAN SCASSELLATI: No. 1667 01:13:50,000 --> 01:13:55,050 Det første, Bunny er langt til venstre. 1668 01:13:55,050 --> 01:13:57,541 Og over her, er den kaninen langt på 1669 01:13:57,541 --> 01:13:58,290 SPEAKER 29: Høyre. 1670 01:13:58,290 --> 01:14:00,502 BRIAN SCASSELLATI: Så, hva gjorde jeg glemmer å gjøre? 1671 01:14:00,502 --> 01:14:01,750 SPEAKER 30: Start en ny linje. 1672 01:14:01,750 --> 01:14:04,041 BRIAN SCASSELLATI: Jeg glemte for å starte en ny linje, igjen. 1673 01:14:04,041 --> 01:14:05,270 Samme feil jeg har gjort før. 1674 01:14:05,270 --> 01:14:07,120 Greit, la oss gå fikse det. 1675 01:14:07,120 --> 01:14:11,690 Nå, jeg har fortsatt inn koden i det å lage en ny linje. 1676 01:14:11,690 --> 01:14:13,899 Hvorfor fungerte det ikke? 1677 01:14:13,899 --> 01:14:15,440 SPEAKER 31: Det er ikke inne i loop. 1678 01:14:15,440 --> 01:14:17,710 BRIAN SCASSELLATI: Oh, det er ikke inne i loop. 1679 01:14:17,710 --> 01:14:18,520 Det er riktig. 1680 01:14:18,520 --> 01:14:20,150 Det sitter utenfor her. 1681 01:14:20,150 --> 01:14:23,470 1682 01:14:23,470 --> 01:14:29,050 Og for loop er alt det er innsiden som tekst. 1683 01:14:29,050 --> 01:14:35,500 >> Så jeg kommer til å flytte dette inne for loop. 1684 01:14:35,500 --> 01:14:39,410 Og jeg skal Tab foran det å viser at det er på rett sted. 1685 01:14:39,410 --> 01:14:42,020 Og nå, vil vi lagre den på nytt. 1686 01:14:42,020 --> 01:14:44,350 Vi skal zoome ut. 1687 01:14:44,350 --> 01:14:45,770 Vi skal bytte over til vår terminal. 1688 01:14:45,770 --> 01:14:48,330 1689 01:14:48,330 --> 01:14:50,360 Zoom inn. 1690 01:14:50,360 --> 01:14:54,050 Vi vil gjenskape vår kaninen program. 1691 01:14:54,050 --> 01:14:59,070 Og nå, nå har vi fått våre 10 rammer. 1692 01:14:59,070 --> 01:15:00,190 >> [Klapping] 1693 01:15:00,190 --> 01:15:02,120 >> BRIAN SCASSELLATI: OK. 1694 01:15:02,120 --> 01:15:04,080 So. 1695 01:15:04,080 --> 01:15:08,370 Her er vår nestet for løkker. 1696 01:15:08,370 --> 01:15:13,140 Vi var i stand til å generere i indre sløyfe hvor mange prikker jeg ønsket 1697 01:15:13,140 --> 01:15:15,320 å skrive ut i begynnelsen, på slutten. 1698 01:15:15,320 --> 01:15:21,570 Og den ytre sløyfe kontrollert hvor mange frames jeg var bygningen. 1699 01:15:21,570 --> 01:15:26,340 Vi startet med en liten kjernen av problemet, 1700 01:15:26,340 --> 01:15:30,320 og vi bygget ut fra det punktet. 1701 01:15:30,320 --> 01:15:30,820 Greit. 1702 01:15:30,820 --> 01:15:33,500 >> La oss gjøre et skritt. 1703 01:15:33,500 --> 01:15:35,040 Er du klar? 1704 01:15:35,040 --> 01:15:38,800 Det er én ting her hvor vi har faktisk slags fikk 1705 01:15:38,800 --> 01:15:42,180 mer kompleksitet enn vi trenger. 1706 01:15:42,180 --> 01:15:44,700 La oss ta en titt. 1707 01:15:44,700 --> 01:15:52,050 Så i vår kanin program, hvis jeg zoome ut her, 1708 01:15:52,050 --> 01:15:54,980 Jeg faktisk gjør noe av det samme om igjen og om igjen. 1709 01:15:54,980 --> 01:15:59,032 Hva gjør jeg det er liksom det samme gjentatt to ganger? 1710 01:15:59,032 --> 01:16:00,310 >> SPEAKER 32: Skriv ut prikkene. 1711 01:16:00,310 --> 01:16:03,526 >> BRIAN SCASSELLATI: Yeah Jeg skrive ut disse prikkene to ganger. 1712 01:16:03,526 --> 01:16:05,710 Egentlig burde jeg ha denne kommentaren her nede. 1713 01:16:05,710 --> 01:16:09,037 Jeg skriver ut noen prikker på begynner, rett opp her. 1714 01:16:09,037 --> 01:16:10,620 Og så skriver jeg ut noen prikker på slutten. 1715 01:16:10,620 --> 01:16:14,694 Og jeg gjør slags akkurat det samme. 1716 01:16:14,694 --> 01:16:17,110 Hva vi kommer til å starte arbeider på i de neste ukene 1717 01:16:17,110 --> 01:16:23,440 er å kunne ta disse blokkene av kode som vi bruker om og om igjen, 1718 01:16:23,440 --> 01:16:25,800 og gjennom en prosess kalt abstraksjon, 1719 01:16:25,800 --> 01:16:31,100 vi kommer til å trekke dem ut og skrive dem en gang, slik at vi kan deretter 1720 01:16:31,100 --> 01:16:35,130 bruke dem om og om igjen. 1721 01:16:35,130 --> 01:16:37,210 Så la oss prøve det. 1722 01:16:37,210 --> 01:16:38,220 Klar? 1723 01:16:38,220 --> 01:16:42,200 >> Vi kommer til å ta denne blokken med kode. 1724 01:16:42,200 --> 01:16:45,280 Og jeg kommer til å ta det ut av det. 1725 01:16:45,280 --> 01:16:50,530 Og jeg kommer til å define-- ned på bunnen, 1726 01:16:50,530 --> 01:16:53,130 Jeg kommer til å skrive en ny funksjon. 1727 01:16:53,130 --> 01:16:54,750 Det kommer ikke til å gå tilbake noe. 1728 01:16:54,750 --> 01:16:58,550 Og jeg kommer til å kalle det printDots. 1729 01:16:58,550 --> 01:17:01,530 >> Det kommer til å ta ett argument, et heltall som 1730 01:17:01,530 --> 01:17:04,920 sier howManyDots jeg skulle skrives ut. 1731 01:17:04,920 --> 01:17:09,310 1732 01:17:09,310 --> 01:17:17,720 Og nå i stedet for å skrive j prikker, vil jeg Skriv ut Tips howManyDots jeg skulle skrives ut. 1733 01:17:17,720 --> 01:17:21,581 >> Og det er ett lite problem her. 1734 01:17:21,581 --> 01:17:22,580 Noen som vet hva det er? 1735 01:17:22,580 --> 01:17:27,270 1736 01:17:27,270 --> 01:17:31,505 Hva må jeg gjøre som er oppført her inne som ikke er definert? 1737 01:17:31,505 --> 01:17:34,165 1738 01:17:34,165 --> 01:17:35,090 >> PUBLIKUM: [uhørbart] 1739 01:17:35,090 --> 01:17:37,465 >> BRIAN SCASSELLATI: Vel hvordan mange punkter er definert rett opp 1740 01:17:37,465 --> 01:17:40,584 her, men jeg bruker den variabelen jeg. 1741 01:17:40,584 --> 01:17:43,750 Så jeg kommer til å ta den variabelen jeg og jeg kommer til å definere den ned her 1742 01:17:43,750 --> 01:17:44,610 i stedet. 1743 01:17:44,610 --> 01:17:49,683 >> Så nå kommer det til å opphold oops, fikk de caps lock på somehow-- jeg er 1744 01:17:49,683 --> 01:17:52,060 kommer til å holde jeg ned her. 1745 01:17:52,060 --> 01:17:57,050 >> Så nå her er min lille funksjon eller sub-rutine, og det sier, 1746 01:17:57,050 --> 01:18:00,640 hvor mange prikker jeg kommer til å skrive ut? 1747 01:18:00,640 --> 01:18:05,300 Og det kommer til å gå gjennom denne løkken og skrive dem om og om igjen. 1748 01:18:05,300 --> 01:18:10,940 >> Da kan jeg endre programmet mitt her oppe. 1749 01:18:10,940 --> 01:18:12,540 Og hva gjorde jeg kaller den funksjonen? 1750 01:18:12,540 --> 01:18:13,960 printDots. 1751 01:18:13,960 --> 01:18:17,060 Så jeg vil kalle printDots. 1752 01:18:17,060 --> 01:18:21,530 Hvor mange prikker jeg ønsker å skrive ut gjøre første gang før kaninen? 1753 01:18:21,530 --> 01:18:22,030 PUBLIKUM: j. 1754 01:18:22,030 --> 01:18:23,230 BRIAN SCASSELLATI: j. 1755 01:18:23,230 --> 01:18:27,110 Hvor mange prikker jeg ønsker å skrive ut gjøre på slutten, etter at kaninen? 1756 01:18:27,110 --> 01:18:30,610 1757 01:18:30,610 --> 01:18:31,110 10-j. 1758 01:18:31,110 --> 01:18:35,020 1759 01:18:35,020 --> 01:18:38,010 >> Og det er en ting jeg mangler. 1760 01:18:38,010 --> 01:18:43,740 Som du så i forelesning i dag, vi kommer til å erklære printDots 1761 01:18:43,740 --> 01:18:52,430 opp ovenfor for å gi prototypen. 1762 01:18:52,430 --> 01:18:56,740 1763 01:18:56,740 --> 01:18:58,220 OK. 1764 01:18:58,220 --> 01:19:03,530 >> Så det jeg har gjort er at jeg har prøvd å isolere som gjenbrukt en del av koden 1765 01:19:03,530 --> 01:19:06,430 som jeg har gjort om og om igjen. 1766 01:19:06,430 --> 01:19:11,120 Og jeg har prøvd å dra den ut, slik at alt som er inneholdt i ett sted. 1767 01:19:11,120 --> 01:19:16,810 På den måten, hvis jeg har en feil et sted, Jeg bare må fikse det på ett sted. 1768 01:19:16,810 --> 01:19:17,310 Greit. 1769 01:19:17,310 --> 01:19:18,470 >> Så la oss lagre det. 1770 01:19:18,470 --> 01:19:20,950 Og la oss sørge for at det fungerer. 1771 01:19:20,950 --> 01:19:22,050 Så la oss gå ut. 1772 01:19:22,050 --> 01:19:25,200 Vi vil gå igjen til vår terminal. 1773 01:19:25,200 --> 01:19:27,960 Vi vil zoome inn. 1774 01:19:27,960 --> 01:19:31,010 Vi vil gjøre at kaninen prosessen. 1775 01:19:31,010 --> 01:19:32,380 >> Oh. 1776 01:19:32,380 --> 01:19:34,800 Og det har gitt meg en advarsel. 1777 01:19:34,800 --> 01:19:37,070 Hva er det å fortelle meg? 1778 01:19:37,070 --> 01:19:39,870 Vel i noen av disse ganger, du alltid vil 1779 01:19:39,870 --> 01:19:44,170 til å bla opp til den aller første error-- nå på dette, har jeg bare fått én. 1780 01:19:44,170 --> 01:19:52,700 >> Det forteller meg i bunny.c, på linje 8, kolonne 9, det er et problem. 1781 01:19:52,700 --> 01:19:58,650 Den sier, du har erklært dette variabel jeg og du ikke har brukt det. 1782 01:19:58,650 --> 01:20:02,230 >> Nå som normalt, er det ikke den verste feilen. 1783 01:20:02,230 --> 01:20:04,300 Det er et enkelt å fikse. 1784 01:20:04,300 --> 01:20:07,550 Og faktisk, kan vi gå tilbake igjen. 1785 01:20:07,550 --> 01:20:09,910 Vi kan gå tilbake til Bunny. 1786 01:20:09,910 --> 01:20:13,010 Og i dette tilfellet, alt vi trenger å gjøre er å kvitte seg med i, 1787 01:20:13,010 --> 01:20:16,630 fordi vi ikke bruker Jeg innenfor hoved lenger. 1788 01:20:16,630 --> 01:20:19,860 Vi bare bruker det innenfor vår sub-rutine. 1789 01:20:19,860 --> 01:20:22,777 >> Så la oss lagre det. 1790 01:20:22,777 --> 01:20:23,360 Vi vil gå tilbake. 1791 01:20:23,360 --> 01:20:26,760 1792 01:20:26,760 --> 01:20:28,630 Og zoome inn. 1793 01:20:28,630 --> 01:20:30,700 Vi vil enda en gang gjøre bunny. 1794 01:20:30,700 --> 01:20:33,810 1795 01:20:33,810 --> 01:20:36,530 Og det igjen er våre 10 rammer. 1796 01:20:36,530 --> 01:20:39,450 1797 01:20:39,450 --> 01:20:41,360 OK. 1798 01:20:41,360 --> 01:20:43,190 >> Hver gang du får en procedure-- Yeah. 1799 01:20:43,190 --> 01:20:44,690 SPEAKER 33: Jeg har a-- Jeg er forvirret. 1800 01:20:44,690 --> 01:20:45,892 Kan du gå tilbake til koden? 1801 01:20:45,892 --> 01:20:46,850 BRIAN SCASSELLATI: Jepp. 1802 01:20:46,850 --> 01:20:50,730 1803 01:20:50,730 --> 01:20:54,367 >> SPEAKER 33: Så, når du skrev prototypen, argumentet du 1804 01:20:54,367 --> 01:20:56,550 hadde det heter ble kalt howmany? 1805 01:20:56,550 --> 01:20:57,540 Men, below-- 1806 01:20:57,540 --> 01:20:57,640 >> BRIAN SCASSELLATI: Oh yeah. 1807 01:20:57,640 --> 01:20:59,140 >> SPEAKER 33: --called dem noe annerledes, jeg forstår ikke. 1808 01:20:59,140 --> 01:21:00,240 >> BRIAN SCASSELLATI: Hvorfor er de forskjellige. 1809 01:21:00,240 --> 01:21:01,780 Så det er et stort spørsmål. 1810 01:21:01,780 --> 01:21:08,250 Så spørsmålet var, opp her, skrev jeg howmany, 1811 01:21:08,250 --> 01:21:12,380 og ned nedenfor, skrev jeg howManyDots. 1812 01:21:12,380 --> 01:21:15,590 >> Årsaken er at opp i din prototype, det er faktisk ikke betaler oppmerksomhet 1813 01:21:15,590 --> 01:21:17,090 til de navnene som du setter inn. 1814 01:21:17,090 --> 01:21:20,530 Alt som virkelig bryr seg om er at det er et heltall. 1815 01:21:20,530 --> 01:21:23,080 Den ønsker å vite skjema av hva du putter i. 1816 01:21:23,080 --> 01:21:31,560 >> Nå stylistically-- oops-- hva jeg burde gjør, er jeg liker å gjøre disse kamp. 1817 01:21:31,560 --> 01:21:33,150 OK. 1818 01:21:33,150 --> 01:21:36,430 Fordi det vil være å holde det lettere for meg å huske. 1819 01:21:36,430 --> 01:21:38,390 Men det var min feil Yeah. 1820 01:21:38,390 --> 01:21:47,620 >> SPEAKER 34: Og så for prototype å jobbe, bare 1821 01:21:47,620 --> 01:21:50,510 skriver den linjen, skriving prototypen, 1822 01:21:50,510 --> 01:21:53,932 gjør at funksjonen som kommer rett nedenfor det å gå til slutten 1823 01:21:53,932 --> 01:21:55,140 og hente hva det betyr? 1824 01:21:55,140 --> 01:21:58,480 >> BRIAN SCASSELLATI: Hva det betyr er når kompilatoren går gjennom, 1825 01:21:58,480 --> 01:22:01,930 den går fra toppen av koden til bunnen. 1826 01:22:01,930 --> 01:22:05,430 Og hva denne prototypen er, er det er i utgangspunktet et løfte. 1827 01:22:05,430 --> 01:22:09,570 >> Det sier det kommer til å være en funksjon definert et sted. 1828 01:22:09,570 --> 01:22:11,880 Det kommer til å bli kalt printDots. 1829 01:22:11,880 --> 01:22:15,110 Og det kommer til å ta ett argument som kommer til å være et heltall 1830 01:22:15,110 --> 01:22:18,590 og det kommer til å gå tilbake ingenting, ugyldig type. 1831 01:22:18,590 --> 01:22:19,310 OK. 1832 01:22:19,310 --> 01:22:22,950 Jeg lover deg at det kommer til å bli definert et sted nedover veien. 1833 01:22:22,950 --> 01:22:25,590 Men når du ser det, som du går ned 1834 01:22:25,590 --> 01:22:28,710 gjennom resten av mitt Hovedfunksjonen, jeg vil 1835 01:22:28,710 --> 01:22:33,800 å behandle den som en funksjon som tar ett heltall innspill. 1836 01:22:33,800 --> 01:22:37,970 >> Og så når kompilatoren går ned gjennom dette, ser det ut til at løftet. 1837 01:22:37,970 --> 01:22:40,220 Og når det blir ned, holder går, fortsetter å gå, 1838 01:22:40,220 --> 01:22:43,060 den finner den første gang printDots er nevnt. 1839 01:22:43,060 --> 01:22:46,910 Og den sier, Oh, du gir meg denne j. j er et heltall. 1840 01:22:46,910 --> 01:22:49,570 >> Vel du lovet meg at ville være et heltall og det er rett. 1841 01:22:49,570 --> 01:22:51,370 Det er greit. 1842 01:22:51,370 --> 01:22:53,880 Og så til slutt, ned helt nederst, 1843 01:22:53,880 --> 01:22:58,340 før jeg kommer til slutten av min fil, jeg gjør bra på mitt løfte 1844 01:22:58,340 --> 01:22:59,896 og jeg definerer det. 1845 01:22:59,896 --> 01:23:01,868 OK? 1846 01:23:01,868 --> 01:23:06,320 >> SPEAKER 35: Så det saves-- den Programmet vil spare mellomrom 1847 01:23:06,320 --> 01:23:09,570 at det går tilbake og fyller på slutten? 1848 01:23:09,570 --> 01:23:12,140 >> BRIAN SCASSELLATI: Det er ikke om minnetildeling. 1849 01:23:12,140 --> 01:23:16,800 Det er faktisk bare om hva type er du forventer å se. 1850 01:23:16,800 --> 01:23:19,340 Skulle denne tingen har en argument, eller fem argumenter? 1851 01:23:19,340 --> 01:23:23,590 Bør ha det hele tall være gitt den, eller strenger? 1852 01:23:23,590 --> 01:23:25,780 Det er alt det ser å gjøre er å sjekke, 1853 01:23:25,780 --> 01:23:29,303 er du gi meg rett type argument. 1854 01:23:29,303 --> 01:23:31,560 OK? 1855 01:23:31,560 --> 01:23:32,300 Greit. 1856 01:23:32,300 --> 01:23:38,570 >> La meg gi dere en annen bit å se på. 1857 01:23:38,570 --> 01:23:44,850 ASCII kunst er ikke den store modellen av animasjon som den er i dag. 1858 01:23:44,850 --> 01:23:50,850 Men noen mennesker selvfølgelig ta ting og de presser det til sine ekstreme. 1859 01:23:50,850 --> 01:23:56,790 >> Dette er, som David demonstrerte i foredrag, et stykke kode 1860 01:23:56,790 --> 01:24:02,150 at du bør ikke under noen omstendigheter prøv å kopiere selv. 1861 01:24:02,150 --> 01:24:05,260 Fordi det er forferdelig stilistisk. 1862 01:24:05,260 --> 01:24:11,180 Faktisk er det konstruert for å være så vanskelig som mulig å lese. 1863 01:24:11,180 --> 01:24:11,680 OK. 1864 01:24:11,680 --> 01:24:16,210 >> Så, for å gjøre igjen, la oss zoome inn her. 1865 01:24:16,210 --> 01:24:20,120 Jeg kommer til å gå nå, endre katalog. 1866 01:24:20,120 --> 01:24:24,050 Jeg kommer til å gå opp ett nivå, tilbake til min arbeidsplass. 1867 01:24:24,050 --> 01:24:29,760 Jeg vil da endre katalogen til dette annen katalog som jeg har laget. 1868 01:24:29,760 --> 01:24:36,190 >> Og dette er den internasjonale Maskeres C Programming Contest. 1869 01:24:36,190 --> 01:24:40,650 Maskeres midler som vanskelig mulig å forstå. 1870 01:24:40,650 --> 01:24:44,150 Så vær så snill, ikke bli redd hvis du ser på dette og gå, jeg kan ikke lese det. 1871 01:24:44,150 --> 01:24:46,350 Det er poenget med det. 1872 01:24:46,350 --> 01:24:47,700 OK? 1873 01:24:47,700 --> 01:24:52,770 >> Men, har vi denne flott program som jeg er 1874 01:24:52,770 --> 01:24:57,180 skal se på ved bare å skrive mer. 1875 01:24:57,180 --> 01:25:01,890 Og la oss se om jeg kan zoome ut bare litt, slik at du kan se det 1876 01:25:01,890 --> 01:25:03,940 >> Og dette er programmet. 1877 01:25:03,940 --> 01:25:08,080 Den er oppkalt endo.c. 1878 01:25:08,080 --> 01:25:14,850 Og det ser ut som dette bøtte med form av bokstavene F-L-U-I-D i den. 1879 01:25:14,850 --> 01:25:16,440 >> Dette er faktisk et program. 1880 01:25:16,440 --> 01:25:20,260 Det er skrevet i de mest obskure måte at forfatterne kunne muligens 1881 01:25:20,260 --> 01:25:21,760 Skriv det. 1882 01:25:21,760 --> 01:25:29,210 Men det er en fantastisk liten brikke som genererer en modell av fluiddynamikk. 1883 01:25:29,210 --> 01:25:34,870 >> Og så vi kommer til å gi som modell en inngang som 1884 01:25:34,870 --> 01:25:42,520 ser ut som dette, av en staired satt av containere 1885 01:25:42,520 --> 01:25:45,820 med litt væske, noen væske, opp på toppen. 1886 01:25:45,820 --> 01:25:48,790 Og vi vil ha det simulere hva som skjer med den. 1887 01:25:48,790 --> 01:25:52,415 >> Så jeg vil kalle den funksjonen, endo. 1888 01:25:52,415 --> 01:25:59,000 Og jeg skal gi den som input filen som jeg har hatt. 1889 01:25:59,000 --> 01:26:02,830 Og det er vår resymé av ASCII kunst. 1890 01:26:02,830 --> 01:26:08,960 En full væske dynamisk simulator kjører på bare noen få linjer med kode. 1891 01:26:08,960 --> 01:26:13,750 >> Nå hva er faktisk veldig utrolig om dette lille programmet 1892 01:26:13,750 --> 01:26:17,280 er at jeg ønsker å stoppe det nå, så jeg kommer til å bruke det som kommando? 1893 01:26:17,280 --> 01:26:18,660 >> PUBLIKUM: Ctrl-C. 1894 01:26:18,660 --> 01:26:20,390 >> BRIAN SCASSELLATI: Ctrl-C. OK. 1895 01:26:20,390 --> 01:26:22,960 Så jeg kommer til å bruke Ctrl-C. C Det vil stoppe det. 1896 01:26:22,960 --> 01:26:25,330 Jeg skal klare igjen. 1897 01:26:25,330 --> 01:26:31,210 Og nå kommer jeg til å påberope program, kjøre programmet, 1898 01:26:31,210 --> 01:26:33,740 bruker seg selv som input. 1899 01:26:33,740 --> 01:26:36,760 1900 01:26:36,760 --> 01:26:42,700 >> Og vi får se væsken dynamisk simulering av det smelter. 1901 01:26:42,700 --> 01:26:43,830 OK. 1902 01:26:43,830 --> 01:26:48,180 Vennligst ikke la det programmet være ting som forvirrer deg. 1903 01:26:48,180 --> 01:26:52,220 Det er bare slik at vi kan ende på noe kult og interessant. 1904 01:26:52,220 --> 01:26:53,930 OK. 1905 01:26:53,930 --> 01:26:56,330 >> Lykke til med oppgavesett. 1906 01:26:56,330 --> 01:26:59,030 Vi skal være glad for å svare spørsmål etter klasse. 1907 01:26:59,030 --> 01:27:01,180 Takket mye, folkens. 1908 01:27:01,180 --> 01:27:02,793