1 00:00:00,000 --> 00:00:03,290 >> [MUSIK SPELA] 2 00:00:03,290 --> 00:00:04,989 3 00:00:04,989 --> 00:00:06,280 JASON Hirschhorn: OK, alla. 4 00:00:06,280 --> 00:00:07,460 Välkommen till avsnitt. 5 00:00:07,460 --> 00:00:10,840 Detta är CS50, vår första super sektion. 6 00:00:10,840 --> 00:00:13,700 Som ni alla vet, nästa vecka regelbundna sektioner kommer att starta, 7 00:00:13,700 --> 00:00:15,580 men den här veckan är vi alla tillsammans. 8 00:00:15,580 --> 00:00:17,730 >> Det är jag själv. 9 00:00:17,730 --> 00:00:18,840 Mitt namn är Jason. 10 00:00:18,840 --> 00:00:20,630 Jag är lektor i datavetenskap. 11 00:00:20,630 --> 00:00:23,910 Vi har Andi, som är chef TA CS50. 12 00:00:23,910 --> 00:00:27,630 Och SCAZ, professor Brian Scassellati, Han är professor i datavetenskap. 13 00:00:27,630 --> 00:00:30,970 >> Vi är CS50 huvuden vid Yale. 14 00:00:30,970 --> 00:00:34,992 Du kan alltid maila oss heads@cs50.yale.edu. 15 00:00:34,992 --> 00:00:35,950 Vi kommer att vara på föreläsningar. 16 00:00:35,950 --> 00:00:37,547 Vi kommer att vara på kontorstid. 17 00:00:37,547 --> 00:00:40,130 Om det någonsin något vi kan göra för dig, allt du behöver, 18 00:00:40,130 --> 00:00:42,610 gärna nå ut till oss. 19 00:00:42,610 --> 00:00:44,140 >> Så vad ska vi göra idag? 20 00:00:44,140 --> 00:00:47,790 Eller innan dess, vad är kommer upp den här veckan? 21 00:00:47,790 --> 00:00:52,620 Så kontorstid är måndag, tisdag, Onsdag och torsdag, från 8:00 till 11:00. 22 00:00:52,620 --> 00:00:54,770 Det finns ett schema på hemsidan. 23 00:00:54,770 --> 00:00:57,830 >> Sektioner, som jag nämnde, börjar nästa vecka. 24 00:00:57,830 --> 00:01:01,390 Och du hittar denna vecka vad tid din avsnitt är, vilken dag det är, 25 00:01:01,390 --> 00:01:03,350 och vem som är din TA är. 26 00:01:03,350 --> 00:01:08,610 >> Problem Set 1 beror på torsdag kl middagstid fredag ​​vid lunchtid med en sen dag. 27 00:01:08,610 --> 00:01:10,817 Ja, du har nio sena dagar. 28 00:01:10,817 --> 00:01:12,150 Och det finns nio problemsamlingar. 29 00:01:12,150 --> 00:01:14,320 Och kan bara använda ett sen dag per problem set. 30 00:01:14,320 --> 00:01:17,930 Ja, i själva verket alla problem uppsättningar beror fredag ​​kl. 31 00:01:17,930 --> 00:01:18,550 Det var allt. 32 00:01:18,550 --> 00:01:20,400 Allt som information finns på kursinnehåll. 33 00:01:20,400 --> 00:01:22,360 >> Varje fredag ​​har vi luncher. 34 00:01:22,360 --> 00:01:25,230 Vi gillar att göra denna stora Naturligtvis känns lite mindre. 35 00:01:25,230 --> 00:01:26,580 Så du är välkommen att RSVP. 36 00:01:26,580 --> 00:01:30,050 Gratis lunch med kolleger klasskamrater och personal. 37 00:01:30,050 --> 00:01:34,120 cs50.yale.edu/rsvp. 38 00:01:34,120 --> 00:01:36,940 >> Alla dessa saker som Jag har på skärmen, 39 00:01:36,940 --> 00:01:43,330 och mer kan du hitta cs50.yale.edu eller cs50.harvard.edu, om du går till Harvard 40 00:01:43,330 --> 00:01:46,800 och tittar på detta online. 41 00:01:46,800 --> 00:01:50,240 >> Även på dessa webbplatser, det finns massor av resurser för dig. 42 00:01:50,240 --> 00:01:54,610 Varje föreläsning har inte bara video av föreläsningen, men noterar också. 43 00:01:54,610 --> 00:01:58,184 Någon kommer att titta på föreläsa och göra anteckningar för dig. 44 00:01:58,184 --> 00:02:00,100 Så du kan bara betala uppmärksamhet under föreläsningar, 45 00:02:00,100 --> 00:02:03,970 eller så kan du använda sina anteckningar / vår noterar att komplettera dina egna anteckningar. 46 00:02:03,970 --> 00:02:04,987 >> Det finns bilder på nätet. 47 00:02:04,987 --> 00:02:07,320 Källan code-- allt David går över i föreläsning, 48 00:02:07,320 --> 00:02:09,979 eller SCAZ går över föreläsning, att källkoden finns tillgänglig på nätet 49 00:02:09,979 --> 00:02:11,750 liksom, som jag nämnde videor. 50 00:02:11,750 --> 00:02:14,257 >> Sektioner, likaså kommer alla att filmas. 51 00:02:14,257 --> 00:02:15,840 Alla dessa bilder kommer att finnas tillgängliga. 52 00:02:15,840 --> 00:02:18,190 Allt detta kod kommer vara tillgängliga för dig. 53 00:02:18,190 --> 00:02:22,440 Det finns shorts på den webbplats där CS50 anställda tillbringar fem till 10 54 00:02:22,440 --> 00:02:24,130 minuter går igenom teman för dig. 55 00:02:24,130 --> 00:02:26,750 Några av dem du redan har påträffas i problemsamlingar. 56 00:02:26,750 --> 00:02:30,430 >> Kontorstid, som jag nämnde, måndagar genom torsdagar, 8:00 till 11:00. 57 00:02:30,430 --> 00:02:32,600 CS50 Studien är en fantastisk resurs. 58 00:02:32,600 --> 00:02:37,100 Det finns övningsproblem, Provhållarna, kända buggar 59 00:02:37,100 --> 00:02:40,920 att eleverna gillar att springa i, för i huvudsak varje ämne vi 60 00:02:40,920 --> 00:02:42,650 kommer att täcka i denna kurs. 61 00:02:42,650 --> 00:02:46,350 >> Och slutligen, på den här bilden åtminstone, Reference50 62 00:02:46,350 --> 00:02:49,690 som ger dig information på alla de C-funktioner 63 00:02:49,690 --> 00:02:53,160 du någonsin kan hoppas att använda och många, många fler. 64 00:02:53,160 --> 00:02:55,690 >> Återigen, som dot dot dot på den nedre delen av skärmen 65 00:02:55,690 --> 00:02:59,990 är för att indikera att det finns tom mer resurser på dessa två webbplatser: 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å, vad gör vi i dag? 68 00:03:05,840 --> 00:03:08,970 Tja, först ska jag ge man tittar på resurserna. 69 00:03:08,970 --> 00:03:10,010 Redan gjorde det en. 70 00:03:10,010 --> 00:03:11,590 Titta på oss. 71 00:03:11,590 --> 00:03:16,430 >> Nu, vi kommer att gå över datatyper och operatörer i C. 72 00:03:16,430 --> 00:03:19,990 Då Andi kommer att komma upp hit och gå över bibliotek i C, Printf (), 73 00:03:19,990 --> 00:03:24,570 en funktion som du redan bekanta eller kommer snabbt bli mycket 74 00:03:24,570 --> 00:03:25,530 bekant. 75 00:03:25,530 --> 00:03:27,810 Och du kommer också att gå över villkors och loopar. 76 00:03:27,810 --> 00:03:30,900 >> Och sedan slutligen, SCAZ kommer att gå över CS50 ID. 77 00:03:30,900 --> 00:03:34,250 Om du inte har duva i redan i Problem Set 1, 78 00:03:34,250 --> 00:03:37,060 samt hur man använder terminal och användbara kommandon 79 00:03:37,060 --> 00:03:42,280 och sedan ge dig några demos och praxis kodning i CS50 ID. 80 00:03:42,280 --> 00:03:45,130 >> Innan jag hoppar in i denna Innehållet på denna sida, 81 00:03:45,130 --> 00:03:46,770 Är det någon som har några frågor så här långt? 82 00:03:46,770 --> 00:03:53,190 83 00:03:53,190 --> 00:03:54,030 Bra. 84 00:03:54,030 --> 00:03:54,950 OK. 85 00:03:54,950 --> 00:03:55,810 Växling. 86 00:03:55,810 --> 00:03:58,760 >> [Växling] 87 00:03:58,760 --> 00:04:03,070 >> Det var jag flytta kugghjul i en manuell bil. 88 00:04:03,070 --> 00:04:10,920 Så datatyper i C, du kan inte bara ha en variabel x och har det på linje 10, 89 00:04:10,920 --> 00:04:17,170 ett heltal, kanske antalet 1, på ledningen 20, ett decimaltal 10,5, 90 00:04:17,170 --> 00:04:20,500 och sedan ett par linjer senare en sträng, jag älskar CS50. 91 00:04:20,500 --> 00:04:25,052 >> I C, kan variabler bara vara en sak och endast en sak. 92 00:04:25,052 --> 00:04:26,510 Och så du måste ge dem typer. 93 00:04:26,510 --> 00:04:28,780 Och på detta forum, vi har en förteckning över sådana. 94 00:04:28,780 --> 00:04:32,000 Det finns tecken som står för tecken. 95 00:04:32,000 --> 00:04:36,850 Så det är en bokstav A, B, C, D. Det kan också vara en plats, 96 00:04:36,850 --> 00:04:40,290 eller som också kan vara en ny rad tecken. 97 00:04:40,290 --> 00:04:45,030 >> Det är heltal, som är lika siffror, hela numbers-- eller heltal 98 00:04:45,030 --> 00:04:47,130 rather-- men inga decimaler. 99 00:04:47,130 --> 00:04:49,790 >> För decimaler, vi har flyttal. 100 00:04:49,790 --> 00:04:53,200 Flyttal är tal med decimaler. 101 00:04:53,200 --> 00:04:58,160 >> Sedan finns det longs, vilka är väsentligen längre heltal. 102 00:04:58,160 --> 00:05:01,160 Du kommer att märka att en lång är 8 medan en int är 4. 103 00:05:01,160 --> 00:05:02,640 Jag kommer till det på en sekund. 104 00:05:02,640 --> 00:05:07,390 Det beror på longs kan lagra ännu fler heltal än en int kan lagra. 105 00:05:07,390 --> 00:05:10,100 Double är en lång float. 106 00:05:10,100 --> 00:05:12,460 >> Och slutligen, vi har sträng, som är en typ 107 00:05:12,460 --> 00:05:14,430 att du antagligen har använt tidigare. 108 00:05:14,430 --> 00:05:21,100 Om du inkluderar hashtag # includeCS50.h i källfilen, 109 00:05:21,100 --> 00:05:23,170 då kan du använda en sträng typ. 110 00:05:23,170 --> 00:05:25,560 Det är faktiskt inte inbyggd i C. 111 00:05:25,560 --> 00:05:27,760 >> Det finns ett par andra typer också. 112 00:05:27,760 --> 00:05:32,900 Men dessa är de viktigaste områdena med som du kommer att använda och möter. 113 00:05:32,900 --> 00:05:36,210 C som, återigen jag nämnde, varje variable-- det 114 00:05:36,210 --> 00:05:38,620 kan bara vara en typ och endast en typ. 115 00:05:38,620 --> 00:05:42,890 Det beror på C är en statiskt skrivit språk, i motsats 116 00:05:42,890 --> 00:05:45,780 dynamiskt typade språk där om du skapar en variabel 117 00:05:45,780 --> 00:05:50,081 Du kan ändra vad som lagras i det som du går på i ditt program. 118 00:05:50,081 --> 00:05:52,580 Över här på höger sida, jag har olika storlekar 119 00:05:52,580 --> 00:05:57,440 av dessa typer av data i bitgrupper. 120 00:05:57,440 --> 00:05:59,710 Så ett tecken är en byte. 121 00:05:59,710 --> 00:06:01,250 Det är 8 bitar. 122 00:06:01,250 --> 00:06:05,530 Och det betyder eftersom 8 bitar finns det åtta 0s och 1s. 123 00:06:05,530 --> 00:06:08,280 Vi såg dessa demonstrationer i den första vecka med att binära glödlampor. 124 00:06:08,280 --> 00:06:15,680 >> Med 8 bitar eller ett byte, vi kan representera siffror från 0 till 255. 125 00:06:15,680 --> 00:06:16,180 Höger. 126 00:06:16,180 --> 00:06:18,770 Om samtliga 8 bitar är 0 som är 0. 127 00:06:18,770 --> 00:06:23,640 Om den första biten är 1, är att antalet en, och så vidare, hela vägen upp till 255. 128 00:06:23,640 --> 00:06:28,290 Och det är därför för tecken som du kan har i huvudsak upp till 255 av dem, 129 00:06:28,290 --> 00:06:31,210 men det finns massor att täcka alla karaktärerna vi måste använda. 130 00:06:31,210 --> 00:06:38,060 >> För heltal, kan du 0 och så har du 2 till 32 minus 1. 131 00:06:38,060 --> 00:06:40,340 De är hur många alternativ du har för heltal. 132 00:06:40,340 --> 00:06:44,780 >> För en lång, har du 0 till 2 till 64 minus ett. 133 00:06:44,780 --> 00:06:48,860 Så du har många, många, fler alternativ för longs. 134 00:06:48,860 --> 00:06:54,220 >> Strings, det är ett frågetecken eftersom det är en cliffhanger till senare. 135 00:06:54,220 --> 00:06:55,000 Yeah. 136 00:06:55,000 --> 00:06:56,350 Jag skulle kunna berätta allas på kanten av sitt säte, 137 00:06:56,350 --> 00:06:57,450 precis vad är det frågetecken? 138 00:06:57,450 --> 00:06:58,390 Det är en cliffhanger. 139 00:06:58,390 --> 00:07:02,340 Vi kommer så småningom att omfatta storleken på strängar och prata mer om strängar. 140 00:07:02,340 --> 00:07:04,692 Eftersom strängen är faktiskt ett av stödhjulen 141 00:07:04,692 --> 00:07:06,400 Vi ska ta på detta kurs i början 142 00:07:06,400 --> 00:07:09,700 och sedan ta bort senare på grund strängar i C 143 00:07:09,700 --> 00:07:13,320 är faktiskt pekare karaktärers arrayer. 144 00:07:13,320 --> 00:07:15,810 Men återigen, det är en cliffhanger till senare. 145 00:07:15,810 --> 00:07:18,890 Innan jag går vidare frågor, kommentarer, rör om den här bilden? 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 Jag måste vara en fantastisk explainer. 149 00:07:30,330 --> 00:07:33,210 Även när du programmerar, du kommer att använda dessa operatörer. 150 00:07:33,210 --> 00:07:36,730 Riktigt enkla tecken som kan göra enkla operationer, som du förmodligen 151 00:07:36,730 --> 00:07:38,340 redan mycket bekant. 152 00:07:38,340 --> 00:07:42,580 >> Till exempel, på den högra sidan ser vi tillägga. 153 00:07:42,580 --> 00:07:44,640 För att lägga till, du bara gör ett plustecken. 154 00:07:44,640 --> 00:07:46,850 Och så du kan ha två variablerna x och y. 155 00:07:46,850 --> 00:07:48,810 Du kan göra x + y i koden. 156 00:07:48,810 --> 00:07:52,790 Kanske vill du att-- säga dig har nummer 7 och 3, 157 00:07:52,790 --> 00:07:55,780 du vill lagra den i en variabel som kallas summa. 158 00:07:55,780 --> 00:08:03,010 Du kan göra int för denna typ, utrymme summan, namnet på variabeln, = 7 + 3; 159 00:08:03,010 --> 00:08:05,780 >> Vad skulle det butik i summan? 160 00:08:05,780 --> 00:08:07,190 Någon? 161 00:08:07,190 --> 00:08:09,270 Om jag hade summan = 7 + 3. 162 00:08:09,270 --> 00:08:10,437 Vad skulle lagras i sum? 163 00:08:10,437 --> 00:08:11,520 Du kan bara skrika ut det. 164 00:08:11,520 --> 00:08:12,120 PUBLIK: 10. 165 00:08:12,120 --> 00:08:12,995 >> JASON Hirschhorn: 10! 166 00:08:12,995 --> 00:08:14,870 Det är precis rätt. 167 00:08:14,870 --> 00:08:19,520 Vad sägs om i sum = 7-3, Jag använder just det streck tecken. 168 00:08:19,520 --> 00:08:20,871 Vad kommer att förvaras? 169 00:08:20,871 --> 00:08:21,370 PUBLIK: 4. 170 00:08:21,370 --> 00:08:22,203 JASON Hirschhorn: 4. 171 00:08:22,203 --> 00:08:25,770 Summan är förmodligen fel namn för denna variabel, skulle men 4 lagras. 172 00:08:25,770 --> 00:08:31,890 >> Att föröka sig i C, använd den lilla Star karaktär, behöver du inte använda en x. 173 00:08:31,890 --> 00:08:35,990 Att dela, använda en Forward Slash inte uppdelningen symbolen. 174 00:08:35,990 --> 00:08:39,580 Och för att modulo använder Percent symbol. 175 00:08:39,580 --> 00:08:47,900 >> Så låt oss säga att jag vill se int z = 7% 3, vad skulle lagras i z? 176 00:08:47,900 --> 00:08:51,250 Så, det är i huvudsak frågar vad gör modulo göra? 177 00:08:51,250 --> 00:08:52,750 Är det någon som vet vad modulo gö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 TALARE 1: Det är resten. 181 00:08:56,120 --> 00:08:58,369 JASON Hirschhorn: Det är den resten när du delar. 182 00:08:58,369 --> 00:09:02,790 Så 7 delat med tre är två resterande 1. 183 00:09:02,790 --> 00:09:04,690 Så en skulle lagras. 184 00:09:04,690 --> 00:09:06,970 >> Du gjorde subtraktion, men det är så det fungerar. 185 00:09:06,970 --> 00:09:09,140 Det är vad modulooperatorn gör. 186 00:09:09,140 --> 00:09:12,360 Det tar ett antal delar det med ett annat nummer och återgår till dig 187 00:09:12,360 --> 00:09:14,590 påminnelsen. 188 00:09:14,590 --> 00:09:19,770 Så återigen, 7% 3 ger dig en, eftersom 7 delat med tre är två resterande 1, 189 00:09:19,770 --> 00:09:21,650 och returnerar resten. 190 00:09:21,650 --> 00:09:24,470 >> Vad sägs om låt oss gå tillbaka upp ett steg för att denna delning tecken. 191 00:09:24,470 --> 00:09:29,194 Om jag gjorde 7 / dividerat med 3 gör någon som vet vad det skulle återvända? 192 00:09:29,194 --> 00:09:30,090 >> TALARE 2: 2. 193 00:09:30,090 --> 00:09:32,240 >> JASON Hirschhorn: Varför 2 och inte 2.333? 194 00:09:32,240 --> 00:09:34,560 >> TALARE 2: Jag tror att det skär av efter heltal. 195 00:09:34,560 --> 00:09:36,310 JASON Hirschhorn: Så det är exakt rätt. 196 00:09:36,310 --> 00:09:39,880 I C, om du gör uppdelningen av två heltal 7 dividerat med 3, 197 00:09:39,880 --> 00:09:43,430 det blir det svar som i detta fall 2,3333 evigt 198 00:09:43,430 --> 00:09:47,080 och det finner att decimalkommat och hugger allting efter decimalkommat 199 00:09:47,080 --> 00:09:49,240 och det bara tar dig tillbaka 2. 200 00:09:49,240 --> 00:09:51,120 >> Så om jag gjorde åtta dividerat med 3. 201 00:09:51,120 --> 00:09:54,010 Som faktiskt, vi vet att återvända 2,666, 202 00:09:54,010 --> 00:09:57,050 men det hugger allting på decimaltecknet, stympar allt, 203 00:09:57,050 --> 00:09:58,640 och bara tillbaka till dig 2. 204 00:09:58,640 --> 00:10:02,090 Så 6 dividerat med 3, 7 uppdelad av 3, 8 delat med 3, 205 00:10:02,090 --> 00:10:04,840 alla kommer att återvända till dig 2. 206 00:10:04,840 --> 00:10:08,770 >> Är det någon som vet, eller har en gissning, hur jag faktiskt kunde få 207 00:10:08,770 --> 00:10:10,790 hela svaret om jag vill att decimal? 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 Varsegod. 211 00:10:14,152 --> 00:10:15,110 TALARE 3: Använd en flottör? 212 00:10:15,110 --> 00:10:16,942 JASON Hirschhorn: Vad menar du? 213 00:10:16,942 --> 00:10:19,786 TALARE 3: Eftersom du sa float är för nummer [OHÖRBAR] 214 00:10:19,786 --> 00:10:22,900 215 00:10:22,900 --> 00:10:23,900 JASON Hirschhorn: Rätt. 216 00:10:23,900 --> 00:10:26,100 Så, det är exakt rätt. 217 00:10:26,100 --> 00:10:28,440 7 är ett heltal. 218 00:10:28,440 --> 00:10:31,690 Men om jag ville göra det i ett flyttal, 219 00:10:31,690 --> 00:10:34,674 Jag skulle behöva lagra den som 7.0 eftersom datorn 220 00:10:34,674 --> 00:10:37,090 är verkligen stupid-- vi såg att med PB och J example-- 221 00:10:37,090 --> 00:10:38,930 Det kommer bara göra exakt vad du säger det. 222 00:10:38,930 --> 00:10:40,846 >> Så om du skriver 7, det tror att det är ett heltal. 223 00:10:40,846 --> 00:10:43,640 Om du skriver 7,0, trots att vi vet dessa saker är likvärdiga, 224 00:10:43,640 --> 00:10:45,550 det behandlar det som en flyttal. 225 00:10:45,550 --> 00:10:50,441 Så om du gjorde 7,0 uppdelad genom tre, eller delat med 3,0, 226 00:10:50,441 --> 00:10:52,440 det skulle säga, OK, nu vi har att göra med flöten. 227 00:10:52,440 --> 00:10:57,514 Jag återkommer till dig 2.333333 evigt. 228 00:10:57,514 --> 00:10:59,930 Men inte riktigt för evigt, eftersom som vi såg också i föreläsning, 229 00:10:59,930 --> 00:11:03,350 dessa flyttal är inte exakt exakta. 230 00:11:03,350 --> 00:11:05,940 >> Så om du vill ha det decimal, eller en del av detta decimal, 231 00:11:05,940 --> 00:11:08,090 då måste man use-- en av dem måste vara ett flyttal 232 00:11:08,090 --> 00:11:11,048 och datorn måste förstå att detta är ett flyttal du 233 00:11:11,048 --> 00:11:13,350 att göra med, inte är ett heltal. 234 00:11:13,350 --> 00:11:16,760 Eventuella frågor om tabellen på den högra sidan, så här långt? 235 00:11:16,760 --> 00:11:22,650 Eller vänster sida, din vänster, vänster sida. 236 00:11:22,650 --> 00:11:23,264 Yeah. 237 00:11:23,264 --> 00:11:23,972 TALARE 4: Rätt. 238 00:11:23,972 --> 00:11:26,216 För precis som en vanlig heltal, skulle du 239 00:11:26,216 --> 00:11:30,230 write-- skulle du behöva skriva flyta? 240 00:11:30,230 --> 00:11:31,920 >> JASON Hirschhorn: Ja så. 241 00:11:31,920 --> 00:11:34,400 Tja, om du vill skapa en variabel som är en flottör, 242 00:11:34,400 --> 00:11:37,020 du behöver säga float z är lika med något. 243 00:11:37,020 --> 00:11:37,640 >> TALARE 4: OK. 244 00:11:37,640 --> 00:11:41,950 >> JASON Hirschhorn: Men om jag ville gör 7 dividerat med 3 och få den decimal, 245 00:11:41,950 --> 00:11:48,540 Jag skulle göra float z = 7,0 / med 3,0; och som skulle ge mig flyttals 246 00:11:48,540 --> 00:11:49,273 nummer. 247 00:11:49,273 --> 00:11:50,000 >> TALARE 4: OK. 248 00:11:50,000 --> 00:11:56,370 >> JASON Hirschhorn: Om jag gjorde något som int z = 7 / med 3, 249 00:11:56,370 --> 00:12:00,856 som skulle ge mig ett heltal, eftersom de är alla heltal. 250 00:12:00,856 --> 00:12:01,730 Betyder det vettigt? 251 00:12:01,730 --> 00:12:02,320 >> TALARE 4: Ja. 252 00:12:02,320 --> 00:12:02,950 >> JASON Hirschhorn: OK. 253 00:12:02,950 --> 00:12:03,450 Bra. 254 00:12:03,450 --> 00:12:06,030 Alla andra frågor om tabellen? 255 00:12:06,030 --> 00:12:07,220 Verkligen? 256 00:12:07,220 --> 00:12:08,380 Jag är så upphetsad. 257 00:12:08,380 --> 00:12:09,120 OK. 258 00:12:09,120 --> 00:12:13,910 >> Så några andra saker du kommer att använda, ofta under förhållanden eller slingor, 259 00:12:13,910 --> 00:12:17,580 är dessa typer av operators-- dessa typer av booleska uttryck. 260 00:12:17,580 --> 00:12:23,140 Och som vi lärt oss, == är vad du använda för att kontrollera om två saker är lika. 261 00:12:23,140 --> 00:12:28,170 >> Så här jag kontrollera om x == y, låt oss återigen anta att x är 7 och y är 3. 262 00:12:28,170 --> 00:12:33,220 Så om jag skrev 7 == 3, vad skulle det tillbaka till mig? 263 00:12:33,220 --> 00:12:34,220 Är det sant eller falskt? 264 00:12:34,220 --> 00:12:35,275 >> PUBLIK: Falskt. 265 00:12:35,275 --> 00:12:36,150 JASON Hirschhorn: OK. 266 00:12:36,150 --> 00:12:37,370 Det känns som om alla kan få detta. 267 00:12:37,370 --> 00:12:39,054 Så alla, vad skulle det tillbaka? 268 00:12:39,054 --> 00:12:39,720 PUBLIK: Falskt. 269 00:12:39,720 --> 00:12:40,130 JASON Hirschhorn: Falskt. 270 00:12:40,130 --> 00:12:40,850 Bra. 271 00:12:40,850 --> 00:12:41,930 7 inte är lika 3. 272 00:12:41,930 --> 00:12:44,530 Så 7 == 3 skulle returnera false. 273 00:12:44,530 --> 00:12:50,746 Du har en inte likhetstecken, så om jag kontrolleras 7! = 3, vad skulle det tillbaka? 274 00:12:50,746 --> 00:12:51,370 PUBLIK: Sant. 275 00:12:51,370 --> 00:12:52,650 JASON Hirschhorn: Sant. 276 00:12:52,650 --> 00:12:53,200 Utmärkt. 277 00:12:53,200 --> 00:12:55,990 Någon var mycket eftertrycklig i ryggen och uppskattar det. 278 00:12:55,990 --> 00:12:59,070 Då har du mindre än operatör, mindre än eller lika med operatören, 279 00:12:59,070 --> 00:13:01,990 större än operatör, större än eller lika med operatören. 280 00:13:01,990 --> 00:13:03,490 >> Så ytterligare en sanity check. 281 00:13:03,490 --> 00:13:05,660 Om jag hade 7 är större än eller lika med 3. 282 00:13:05,660 --> 00:13:06,966 Vad skulle det tillbaka? 283 00:13:06,966 --> 00:13:07,692 >> PUBLIK: Sant. 284 00:13:07,692 --> 00:13:08,650 JASON Hirschhorn: Sant. 285 00:13:08,650 --> 00:13:10,050 Ja. 286 00:13:10,050 --> 00:13:13,290 Det bakre rummet, baksidan i rummet, fantastiska. 287 00:13:13,290 --> 00:13:16,240 Du kan kombinera dessa uttryck om du vill, liksom, 288 00:13:16,240 --> 00:13:21,880 med en logisk och som && Eller en logisk OR som är || 289 00:13:21,880 --> 00:13:22,800 ||. 290 00:13:22,800 --> 00:13:25,785 Och så nu kan du testa två saker together-- Är det roligt? 291 00:13:25,785 --> 00:13:28,250 Varför är det roligt? 292 00:13:28,250 --> 00:13:35,200 >> Så om jag ville, jag kan säga är 7 större än 3 OCH 2 är mindre än 4? 293 00:13:35,200 --> 00:13:37,090 Tja, om 7 är större än 3, det är sant. 294 00:13:37,090 --> 00:13:38,400 2 är mindre än 4, det är sant. 295 00:13:38,400 --> 00:13:41,140 Så det hela skulle återvända sant. 296 00:13:41,140 --> 00:13:45,130 >> Om jag testade 7 är större än 3 och-- Jag bara plocka slumptal här-- 297 00:13:45,130 --> 00:13:47,340 4 är mindre än 2, ja, det är falskt. 298 00:13:47,340 --> 00:13:49,610 Så sant och falskt falska. 299 00:13:49,610 --> 00:13:54,520 Och du kan gå på och du kombinerar som många villkor tillsammans som ni vill. 300 00:13:54,520 --> 00:14:00,000 >> Är det någon som har några frågor, kommentarer, oro hittills? 301 00:14:00,000 --> 00:14:03,862 Och jag ser några av er att ta bilder Av mig på skärmen, vilket jag uppskattar. 302 00:14:03,862 --> 00:14:05,070 Förhoppningsvis är det inte snapchat. 303 00:14:05,070 --> 00:14:06,417 Förhoppningsvis är det för dina anteckningar. 304 00:14:06,417 --> 00:14:08,500 Men alla dessa kommer att vara tillgänglig på nätet. 305 00:14:08,500 --> 00:14:11,210 Så du behöver inte ta bilder av detta. 306 00:14:11,210 --> 00:14:15,150 Som jag nämnde, allt kommer att finnas tillgängliga på nätet för dig. 307 00:14:15,150 --> 00:14:15,650 OK. 308 00:14:15,650 --> 00:14:17,980 Jag är på väg att få utanför scenen, så gör någon 309 00:14:17,980 --> 00:14:20,350 vill säga något innan det händer? 310 00:14:20,350 --> 00:14:21,080 Frågor? 311 00:14:21,080 --> 00:14:21,680 >> [Inplacering UTTRYCKER] 312 00:14:21,680 --> 00:14:22,250 >> JASON Hirschhorn: Sluta. 313 00:14:22,250 --> 00:14:23,290 Ni är också trevligt. 314 00:14:23,290 --> 00:14:23,790 OK. 315 00:14:23,790 --> 00:14:26,520 Jag kommer att märka ut. 316 00:14:26,520 --> 00:14:27,240 Nu går vi. 317 00:14:27,240 --> 00:14:29,570 >> ANDI PENG: Vi kommer att göra en besvärlig mic förändring nu. 318 00:14:29,570 --> 00:14:32,280 >> JASON Hirschhorn: Jag är kommer att ta det här. 319 00:14:32,280 --> 00:14:33,946 ANDI PENG: Uppskatta stöd, killar. 320 00:14:33,946 --> 00:14:42,250 321 00:14:42,250 --> 00:14:43,180 Hör du mig? 322 00:14:43,180 --> 00:14:43,930 Är det bra? 323 00:14:43,930 --> 00:14:44,760 Perfekt. 324 00:14:44,760 --> 00:14:45,630 Vackert. 325 00:14:45,630 --> 00:14:47,490 Låt mig bara stoppa det i. 326 00:14:47,490 --> 00:14:49,100 OK. 327 00:14:49,100 --> 00:14:54,140 Så, jag är på väg att göra som en jätte Information dumpa på er just nu. 328 00:14:54,140 --> 00:14:57,370 Och inga bekymmer alls om du är inte följa varje liten rad om vad 329 00:14:57,370 --> 00:14:58,812 Jag ska visa dig. 330 00:14:58,812 --> 00:15:00,770 Som Jason sagt, allt är helt online. 331 00:15:00,770 --> 00:15:03,780 Bara att vi ska försöka att införa alla att de begrepp som omfattas 332 00:15:03,780 --> 00:15:05,270 i några av dessa bilder. 333 00:15:05,270 --> 00:15:06,582 Så bara följa med. 334 00:15:06,582 --> 00:15:09,540 Inga bekymmer om du inte förstår allt; emellertid, om vid någon punkt 335 00:15:09,540 --> 00:15:12,820 du känner förlorade, höja din sidan, slutar vi, inga bekymmer. 336 00:15:12,820 --> 00:15:15,060 Häftigt. 337 00:15:15,060 --> 00:15:19,270 >> Så jag tror att något som David har redan slags nämns i föreläsning 338 00:15:19,270 --> 00:15:23,240 och Jason har typ av anspelat till dagens är vad ett bibliotek är. 339 00:15:23,240 --> 00:15:27,510 Så i programmering, vi har dessa saker som kallas bibliotek. 340 00:15:27,510 --> 00:15:29,690 Om huvudsak alla de är bara en uppsättning 341 00:15:29,690 --> 00:15:32,610 av funktioner, är att i huvudsak bara kod som är 342 00:15:32,610 --> 00:15:35,070 redan skrivits av någon annan som vi kan alla 343 00:15:35,070 --> 00:15:36,410 användning inom våra program. 344 00:15:36,410 --> 00:15:38,790 >> Så hur fungerar en normal biblioteksarbetet, eller hur? 345 00:15:38,790 --> 00:15:40,030 Du kommer in i biblioteket dörren. 346 00:15:40,030 --> 00:15:41,890 Du har alla dessa böcker som du kan dra ut 347 00:15:41,890 --> 00:15:44,590 och du kan få tillgång till information inom dessa böcker. 348 00:15:44,590 --> 00:15:45,840 Samma sak i programmering. 349 00:15:45,840 --> 00:15:48,820 >> Du har ett bibliotek som redan har skrivits av andra människor. 350 00:15:48,820 --> 00:15:51,530 Och det sätt som du kan, som programmerare eller en student, 351 00:15:51,530 --> 00:15:55,780 kan få tillgång till det biblioteket är genom hashtag #include. 352 00:15:55,780 --> 00:15:59,720 >> Till exempel i C vi har tre C-- mest 353 00:15:59,720 --> 00:16:03,420 vanligen används tre C-standard libraries-- input / output-bibliotek, 354 00:16:03,420 --> 00:16:05,540 strängen bibliotek, och matematik biblioteket. 355 00:16:05,540 --> 00:16:07,610 >> Så inom ditt första par problem sätter, 356 00:16:07,610 --> 00:16:10,940 de som kommer att vara den tre att du i första hand använder. 357 00:16:10,940 --> 00:16:14,610 Så David redan förklaras i föreläsning, 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 gör just detta. 360 00:16:18,620 --> 00:16:23,530 Det gör att du, i din kod, för att mata något från användaren och utgång som 361 00:16:23,530 --> 00:16:25,960 till skärmen, i huvudsak skriva ut det till skärmen. 362 00:16:25,960 --> 00:16:29,990 >> Och så varje gång du använder någon funktion, till exempelvis funktionen printf (), som 363 00:16:29,990 --> 00:16:33,319 vi kommer att gå igenom nästa bild, se till att inkludera standard I / O 364 00:16:33,319 --> 00:16:36,360 bibliotek eller annat du inte kommer att kunna använda printf () funktion. 365 00:16:36,360 --> 00:16:39,110 Eftersom du, som programmerare aldrig skrev denna funktion, 366 00:16:39,110 --> 00:16:41,840 du bara använder någon annans kod i din egen kod. 367 00:16:41,840 --> 00:16:43,620 >> Låter det vettigt alla? 368 00:16:43,620 --> 00:16:44,520 Häftigt. 369 00:16:44,520 --> 00:16:48,530 >> Och då får vi i huvudsak på den string.h biblioteket och math.h 370 00:16:48,530 --> 00:16:52,970 bibliotek, -h bara betyder bibliotek, andra bibliotek som du så småningom 371 00:16:52,970 --> 00:16:55,310 att använda i din kod. 372 00:16:55,310 --> 00:16:57,620 >> Emellertid för syften av detta bibliotek, vi också 373 00:16:57,620 --> 00:17:01,170 have-- av denna class-- Vi har även det som kallas CS50 biblioteket 374 00:17:01,170 --> 00:17:05,270 cs50.h, där vi, för din läsning har skapat 375 00:17:05,270 --> 00:17:07,369 många viktiga och användbara funktioner. 376 00:17:07,369 --> 00:17:09,550 Så att du som programmerare kan kombitrafik bort 377 00:17:09,550 --> 00:17:14,470 vad vi har redan skrivit så att den här funktionen är tillgänglig för dig 378 00:17:14,470 --> 00:17:15,599 för din användning. 379 00:17:15,599 --> 00:17:18,359 >> Jag kommer att täcka ett par de funktioner som vanligen används, 380 00:17:18,359 --> 00:17:20,839 men vet att det är alla googleable nätet. 381 00:17:20,839 --> 00:17:24,904 Känn dig fri, dra upp CS50 biblioteket och då har du alla funktioner där. 382 00:17:24,904 --> 00:17:25,828 Yeah. 383 00:17:25,828 --> 00:17:28,140 >> TALARE 5: Så om du inte var hjälp av programvaran som 384 00:17:28,140 --> 00:17:29,916 ges till oss av klassen, gör det 385 00:17:29,916 --> 00:17:32,698 menar vi skulle behöva ladda ner och hitta denna rubrik fil oss och berätta 386 00:17:32,698 --> 00:17:33,840 den dator där det är? 387 00:17:33,840 --> 00:17:34,320 >> ANDI PENG: Bra fråga. 388 00:17:34,320 --> 00:17:34,820 Exakt. 389 00:17:34,820 --> 00:17:38,194 Så det är som om du inte fysiskt närvarande på ett bibliotek, 390 00:17:38,194 --> 00:17:40,360 det finns inget sätt för dig att faktiskt gå och få tillgång till den. 391 00:17:40,360 --> 00:17:42,589 Så samma sak med programmering i C, du 392 00:17:42,589 --> 00:17:45,880 måste se till att du använder vår apparaten eftersom biblioteket är redan 393 00:17:45,880 --> 00:17:47,270 införlivats i den. 394 00:17:47,270 --> 00:17:50,020 Och sedan när du Hashtag #include, bibliotekets där. 395 00:17:50,020 --> 00:17:50,520 Yeah. 396 00:17:50,520 --> 00:17:51,920 Bra fråga. 397 00:17:51,920 --> 00:17:53,461 Alla bra? 398 00:17:53,461 --> 00:17:53,960 Häftigt. 399 00:17:53,960 --> 00:17:56,371 400 00:17:56,371 --> 00:17:56,870 Okej. 401 00:17:56,870 --> 00:17:59,330 Så vi kommer att slå, i huvudsak, vad är 402 00:17:59,330 --> 00:18:01,620 den första funktionen som vi som programmerare är 403 00:18:01,620 --> 00:18:03,900 kommer att använda i vår kod. 404 00:18:03,900 --> 00:18:05,690 Detta kallas printf () funktionen. 405 00:18:05,690 --> 00:18:08,450 Så, printf) funktion (som jag har redan sagt i den sista bilden, 406 00:18:08,450 --> 00:18:11,830 ingår i standard-I / O, standard input / output, bibliotek. 407 00:18:11,830 --> 00:18:16,470 >> Så se till att vad du än using-- åh, låt mig ta lasern pointer-- 408 00:18:16,470 --> 00:18:18,660 när du använder printf) funktion (, 409 00:18:18,660 --> 00:18:21,790 du måste inkludera standard I / O bibliotek eller annars, när du kompilerar, 410 00:18:21,790 --> 00:18:23,760 du kommer att få ett felmeddelande eftersom datorn kommer att se ut, 411 00:18:23,760 --> 00:18:26,140 åh jag vet inte var printf () är, du inte talar om för mig var printf () 412 00:18:26,140 --> 00:18:26,830 är. 413 00:18:26,830 --> 00:18:30,150 Väl printf () ingår i standard I / O, så när du använder printf (), 414 00:18:30,150 --> 00:18:32,960 se till att ha det raden ovanför din kod. 415 00:18:32,960 --> 00:18:36,040 >> Så till exempel, printf () här är en funktion. 416 00:18:36,040 --> 00:18:40,260 Allt det gör är skriva ut något inom parentes för användaren. 417 00:18:40,260 --> 00:18:44,840 Skulle någon vilja ta ett knivhugg på vad den här kodraden rätt 418 00:18:44,840 --> 00:18:46,420 här kommer att skriva ut? 419 00:18:46,420 --> 00:18:48,730 Därför är svaret på skärmen. 420 00:18:48,730 --> 00:18:50,480 Någon? 421 00:18:50,480 --> 00:18:51,380 >> VERDI: Botten. 422 00:18:51,380 --> 00:18:53,510 >> ANDI PENG: Verdi, varför inte du gå framåt och säga hela uttalandet? 423 00:18:53,510 --> 00:18:55,718 >> VERDI: Hej, mitt namn Andi, och jag är 20 år gammal. 424 00:18:55,718 --> 00:18:57,270 ANDI PENG: Ah, härlig. 425 00:18:57,270 --> 00:19:00,240 Så i denna linje vi kommer att skriva ut, Hej, mitt namn är Andi, 426 00:19:00,240 --> 00:19:04,280 och jag är 20 år gammal, som är i själva verket en sann berättelse. 427 00:19:04,280 --> 00:19:05,090 >> Syntax. 428 00:19:05,090 --> 00:19:08,830 Så par syntaktiska problem som ni vill vara säker på att du vet. 429 00:19:08,830 --> 00:19:09,360 Citat. 430 00:19:09,360 --> 00:19:13,170 Citationstecken berättar dator som allt inuti 431 00:19:13,170 --> 00:19:14,850 kommer att skrivas ut. 432 00:19:14,850 --> 00:19:16,620 >> Allt inuti burken bara vara exakt hur 433 00:19:16,620 --> 00:19:19,920 du skriver det, med undantag för vanligen i slutet, 434 00:19:19,920 --> 00:19:23,610 vi kommer att vilja inkludera en hash-- oh sorry-- ett streck n. 435 00:19:23,610 --> 00:19:24,640 Så ett streck n. 436 00:19:24,640 --> 00:19:28,884 >> Finns det någon som vill ta en gissning på vad som gör att vår kod? 437 00:19:28,884 --> 00:19:29,465 Yeah. 438 00:19:29,465 --> 00:19:30,840 HÖGTALARE 6: sätter den på en ny rad. 439 00:19:30,840 --> 00:19:31,650 ANDI PENG: Exakt. 440 00:19:31,650 --> 00:19:34,660 Så allt detta innebär är tillåta vad som än händer 441 00:19:34,660 --> 00:19:37,520 efter detta, efter detta uttalande, som ska skrivas ut till en ny rad. 442 00:19:37,520 --> 00:19:40,030 Så att när du skriver din kod du inte slumpmässigt har saker 443 00:19:40,030 --> 00:19:41,738 uppsatt till slutet att du inte vill ha. 444 00:19:41,738 --> 00:19:43,700 Att allt blir prydligt tryckt en rad 445 00:19:43,700 --> 00:19:46,870 och då kan vi börja på nästa rad. 446 00:19:46,870 --> 00:19:50,970 >> Kommer någon ihåg vad det semikolon gör när vi kodning? 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: policy. 450 00:19:55,740 --> 00:19:56,010 >> ANDI PENG: Förlåt? 451 00:19:56,010 --> 00:19:57,100 >> SPEAKER 7: Är det avsluta uttalande? 452 00:19:57,100 --> 00:19:57,766 >> ANDI PENG: Ja. 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 anger slutet på en programmerings linje. 455 00:20:04,640 --> 00:20:09,240 Så till exempel, på engelska vi använder perioden att säga, oh detta är slutet en mening. 456 00:20:09,240 --> 00:20:12,857 I programmering, samma sak, vi har en semikolon för att ange slutet av en rad. 457 00:20:12,857 --> 00:20:14,690 Ofta när du är börjar programmera, 458 00:20:14,690 --> 00:20:17,150 du inser att du glömmer att lägga till ett semikolon 459 00:20:17,150 --> 00:20:19,400 och sedan försöker köra din kod och det fungerar inte. 460 00:20:19,400 --> 00:20:21,520 Och du är som, Ah, det gör jag inte vet varför det borde arbeta. 461 00:20:21,520 --> 00:20:24,394 >> Chansen är glömde du förmodligen en semikolon eller en konsol eller något 462 00:20:24,394 --> 00:20:25,020 någonstans. 463 00:20:25,020 --> 00:20:27,740 Så, är det viktigt att komma ihåg. 464 00:20:27,740 --> 00:20:29,627 Häftigt. 465 00:20:29,627 --> 00:20:31,960 Okej, handuppräckning, hur många människor här har någonsin 466 00:20:31,960 --> 00:20:37,210 tagit AP datavetenskap eller programmeras i Java innan, någonsin? 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 kommer inte att vara tillämpliga då, men i Java, du 470 00:20:41,340 --> 00:20:44,960 har något som kallas System.out.println som inte existerar i C. 471 00:20:44,960 --> 00:20:49,927 >> Så i C, när du vill lägga till i variabler 472 00:20:49,927 --> 00:20:51,760 i vad du vill att skriva ut, det finns 473 00:20:51,760 --> 00:20:54,620 en specifik syntax vi ska använda. 474 00:20:54,620 --> 00:20:56,520 Det heter placeholding-- väsentligen 475 00:20:56,520 --> 00:21:01,180 vi lägger platshållare på plats av heltal eller variabeln 476 00:21:01,180 --> 00:21:02,580 att vi vill skriva ut. 477 00:21:02,580 --> 00:21:07,430 >> Så när ni ser har vi inkluderat ett nytt bibliotek header-fil här. 478 00:21:07,430 --> 00:21:09,130 Den CS50 bibliotek. 479 00:21:09,130 --> 00:21:13,160 Och innehöll inom den CS50 bibliotek är en vanlig funktion vi kommer att använda 480 00:21:13,160 --> 00:21:15,610 i vår kurs som heter getInt (). 481 00:21:15,610 --> 00:21:21,830 >> Är det någon som vill ta en stab på vad getInt () kan möjligen göra. 482 00:21:21,830 --> 00:21:22,830 >> PUBLIK: [OHÖRBAR] 483 00:21:22,830 --> 00:21:23,550 >> ANDI PENG: Förlåt. 484 00:21:23,550 --> 00:21:24,370 Det gick inte att höra dig. 485 00:21:24,370 --> 00:21:25,511 Maddie, vem som helst. 486 00:21:25,511 --> 00:21:27,260 Maddie: Åh, uppmanas du ett heltal. 487 00:21:27,260 --> 00:21:28,051 ANDI PENG: Exakt. 488 00:21:28,051 --> 00:21:30,670 Så denna funktion, en annan funktion som redan 489 00:21:30,670 --> 00:21:33,690 skrivits av någon annan att vi kan åkalla nu. 490 00:21:33,690 --> 00:21:38,000 Allt som är är att uppmana dig, användaren, ange vad du vill som koden 491 00:21:38,000 --> 00:21:41,850 är igång och det lagrar whatever-- i det här fallet är vi getInt () - ing, 492 00:21:41,850 --> 00:21:44,060 så det innebär att vi är erhålla ett heltal. 493 00:21:44,060 --> 00:21:46,150 >> Och vi kommer att lagra att i ett annat heltal 494 00:21:46,150 --> 00:21:48,900 att vi bara har gjort kallas ålder. 495 00:21:48,900 --> 00:21:51,500 Det vettigt för alla? 496 00:21:51,500 --> 00:21:52,190 Häftigt. 497 00:21:52,190 --> 00:21:56,400 >> Så nu när vi har lagrat detta heltal, att vi har föranlett från användaren, 498 00:21:56,400 --> 00:22:00,010 i denna variabel, vi har skapad av typen int kallas ålder, 499 00:22:00,010 --> 00:22:03,720 vi kan gå vidare och plats som i vår printf () funktionen. 500 00:22:03,720 --> 00:22:08,970 Så syntax vanligtvis printf () är att oavsett var i din faktiska fysiska 501 00:22:08,970 --> 00:22:14,410 linje du vill inkludera det heltal, du gör det symbol just där, 502 00:22:14,410 --> 00:22:17,800 procentsymbolen, med typ av variabel som du vill. 503 00:22:17,800 --> 00:22:20,090 >> Så i detta fall ålder är ett heltal. 504 00:22:20,090 --> 00:22:25,030 Så du kommer att inkludera % i eftersom det är ett heltal. 505 00:22:25,030 --> 00:22:26,860 Och sedan efter uttalande, du kommer 506 00:22:26,860 --> 00:22:30,370 att göra komma och namn på variabeln. 507 00:22:30,370 --> 00:22:33,420 >> Så här kommer vi att skriva ut ut, Hej, mitt namn är Andi, 508 00:22:33,420 --> 00:22:35,730 och jag är tomma år gammal. 509 00:22:35,730 --> 00:22:38,890 Hashta-- eller, sorry--, ålder med vad jag ingång. 510 00:22:38,890 --> 00:22:42,790 Så om jag skulle ingång 20 för min getInt () här, 511 00:22:42,790 --> 00:22:44,500 det skulle skriva ut exakt samma sak. 512 00:22:44,500 --> 00:22:47,990 Men, om jag ville ingångs något annat, som kanske 40 eller 45, 513 00:22:47,990 --> 00:22:50,800 då skulle du se att återspeglas följaktligen i koden. 514 00:22:50,800 --> 00:22:52,886 >> Så det här är ett exempel av något som 515 00:22:52,886 --> 00:22:55,260 det skriver ut och ser till dig som om det är samma sak, 516 00:22:55,260 --> 00:22:57,593 men under huven av datorn finns faktiskt 517 00:22:57,593 --> 00:22:59,560 mycket olika saker händer. 518 00:22:59,560 --> 00:23:00,060 Häftigt. 519 00:23:00,060 --> 00:23:02,760 520 00:23:02,760 --> 00:23:03,260 Okej. 521 00:23:03,260 --> 00:23:06,940 Så vad händer om vi vill ha flera variabler? 522 00:23:06,940 --> 00:23:08,290 Ganska lätt. 523 00:23:08,290 --> 00:23:09,150 Samma sak. 524 00:23:09,150 --> 00:23:11,930 Vi har också en ny funktion här kallad getString (), 525 00:23:11,930 --> 00:23:15,380 också ingår i CS50 biblioteket att allt det gör är att fråga användaren 526 00:23:15,380 --> 00:23:18,120 efter en sträng, som är bara en uppsättning tecken, 527 00:23:18,120 --> 00:23:19,810 så som en mening eller liknande namn. 528 00:23:19,810 --> 00:23:25,470 >> Så i detta fall skulle vi ha två platshållare% s för sträng och% i 529 00:23:25,470 --> 00:23:26,750 för heltal. 530 00:23:26,750 --> 00:23:29,190 Och vi kommer att följa att genom de två variablerna 531 00:23:29,190 --> 00:23:32,670 Vi vill inkludera i den ordning att de förekommer i meningen. 532 00:23:32,670 --> 00:23:35,471 Så till exempel, är mitt namn tom, jag vill ha ett namn där, 533 00:23:35,471 --> 00:23:36,970 så jag kommer att ha namnet först. 534 00:23:36,970 --> 00:23:39,637 Och sedan efteråt, jag vill ålder, vill ha ålders sekund. 535 00:23:39,637 --> 00:23:42,720 Och så om jag ville ingång, Hej, mitt namn är Andi, och jag är 20 år gammal. 536 00:23:42,720 --> 00:23:46,370 Om jag inmatade Andi och 20, den exakt samma sak skulle skriva ut; 537 00:23:46,370 --> 00:23:51,134 Men nu har vi två lagrade variabler namn samt int. 538 00:23:51,134 --> 00:23:51,634 Yeah. 539 00:23:51,634 --> 00:23:54,124 >> SPEAKER 8: Skulle det vara kunna köra om du bytt 540 00:23:54,124 --> 00:23:55,620 namn och ålder i slutet av det? 541 00:23:55,620 --> 00:23:55,840 >> ANDI PENG: Ja. 542 00:23:55,840 --> 00:23:57,006 Det är riktigt bra fråga. 543 00:23:57,006 --> 00:23:59,520 Så lång historia kort, nej. 544 00:23:59,520 --> 00:24:03,070 Eftersom namn och age-- vad typ av variabel är namn? 545 00:24:03,070 --> 00:24:03,950 >> SPEAKER 8: String. 546 00:24:03,950 --> 00:24:05,440 >> ANDI PENG: Och vad typ av variabel är ålder? 547 00:24:05,440 --> 00:24:06,231 >> HÖGTALARE 8: Heltal. 548 00:24:06,231 --> 00:24:10,290 ANDI PENG: Så här har vi en platshållare för stråk och heltal, eller hur? 549 00:24:10,290 --> 00:24:13,350 Så om du skulle byta dessa, datorn kommer inte att veta. 550 00:24:13,350 --> 00:24:16,250 Det kommer att söka efter en sträng, och om du försöker ge det en int, 551 00:24:16,250 --> 00:24:18,083 det kommer att bli vänta Jag är förvirrad, du 552 00:24:18,083 --> 00:24:21,100 sa att jag borde vara tilldela minne för en int. 553 00:24:21,100 --> 00:24:23,760 Och just här, när den förväntar ett heltal 554 00:24:23,760 --> 00:24:25,640 och du ge den ett namn och en sträng i stället, 555 00:24:25,640 --> 00:24:28,931 det kommer också att vara mycket förvirrande, det kommer inte att köra precis som du behöver det. 556 00:24:28,931 --> 00:24:35,280 Så här, namn och syntax är mycket viktigt för att köra kod. 557 00:24:35,280 --> 00:24:37,991 Alla bra? 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: Här vet jag att vi har tittat på exempel i klass, där de ber 561 00:24:44,620 --> 00:24:46,950 vad är din ålder, vad är ditt namn. 562 00:24:46,950 --> 00:24:50,250 Här skulle det vara det doesn't-- om vi skulle köra den här koden, 563 00:24:50,250 --> 00:24:51,750 Det skulle inte be om det? 564 00:24:51,750 --> 00:24:54,740 Men du skulle bara mata in två siffror och då skulle det köras så? 565 00:24:54,740 --> 00:24:55,781 >> ANDI PENG: Ja, exakt. 566 00:24:55,781 --> 00:24:58,250 Så om du ville för att det ska display, ange din ålder, 567 00:24:58,250 --> 00:25:01,100 du kan bara lägga en printf funktion () som säger, Ange din ålder, 568 00:25:01,100 --> 00:25:01,600 ovanför den. 569 00:25:01,600 --> 00:25:02,711 Det är en bra fråga. 570 00:25:02,711 --> 00:25:03,210 Yeah. 571 00:25:03,210 --> 00:25:07,964 >> TALARE 9: Så skulle redan vara ingår i getInt () [OHÖRBAR]. 572 00:25:07,964 --> 00:25:09,380 ANDI PENG: Nej, faktiskt är det inte. 573 00:25:09,380 --> 00:25:11,809 Så allt detta innebär är bara uppmanas en tom skärm 574 00:25:11,809 --> 00:25:13,100 till användaren att mata in något. 575 00:25:13,100 --> 00:25:17,420 Om du vill ha det, om du vill att det ska skrivas ut ut något som talar om för användaren som, 576 00:25:17,420 --> 00:25:21,110 Kan du ge mig din ålder, då du skulle behöva printf () att själv. 577 00:25:21,110 --> 00:25:23,789 Eftersom alla använder denna funktion för olika saker, 578 00:25:23,789 --> 00:25:26,080 du kan lagra ålder, du kan lagra adress, 579 00:25:26,080 --> 00:25:28,060 du kan lagra telefonnummer. 580 00:25:28,060 --> 00:25:31,190 Och så är det verkligen upp till dina killar individuella användningsområden 581 00:25:31,190 --> 00:25:34,390 för vad du vill att den ska säga. 582 00:25:34,390 --> 00:25:34,890 Yeah. 583 00:25:34,890 --> 00:25:38,236 >> TALARE 10: Så, bara för att klargöra, där gör du ange namn och ålder 584 00:25:38,236 --> 00:25:43,020 så att den dyker upp i stället för% s? 585 00:25:43,020 --> 00:25:44,320 >> ANDI PENG: Som i användarens? 586 00:25:44,320 --> 00:25:47,165 >> TALARE 10: Ja, precis hur gör jag gör det-- där lägger jag Andi, 587 00:25:47,165 --> 00:25:48,350 och där lägger jag 20? 588 00:25:48,350 --> 00:25:48,640 >> ANDI PENG: Ja. 589 00:25:48,640 --> 00:25:50,250 Så om du skulle faktiskt kör den här koden 590 00:25:50,250 --> 00:25:52,875 Jag faktiskt inte köra kod, detta är bara här just nu. 591 00:25:52,875 --> 00:25:56,910 Om jag skulle köra koden, skulle jag kompilera koden, göra filen, 592 00:25:56,910 --> 00:26:00,760 köra koden, och då skulle det bara vara två platser för mig att mata in den. 593 00:26:00,760 --> 00:26:01,260 Yeah. 594 00:26:01,260 --> 00:26:03,843 Ni kommer att se när du spelar runt med koden själv. 595 00:26:03,843 --> 00:26:05,760 596 00:26:05,760 --> 00:26:09,645 >> Okej vi kommer att flytta in i nästa sektion av vad 597 00:26:09,645 --> 00:26:11,610 vi kommer att täcka i dag. 598 00:26:11,610 --> 00:26:13,980 Vi kommer att gå igenom vad villkorssatser är. 599 00:26:13,980 --> 00:26:16,500 Så om ni minns och minns från föreläsning, 600 00:26:16,500 --> 00:26:19,210 villkorssatser, allt de är är en uppsättning 601 00:26:19,210 --> 00:26:24,010 instruktioner till datorn i som om ett visst villkor är sant, 602 00:26:24,010 --> 00:26:27,470 du köra koden insidan av detta villkor. 603 00:26:27,470 --> 00:26:30,101 >> Så i Scratch-- huvudsakligen den stora temat från och med idag 604 00:26:30,101 --> 00:26:32,850 är att ni har redan alla sett logiken bakom allt 605 00:26:32,850 --> 00:26:34,020 att vi bevakar. 606 00:26:34,020 --> 00:26:36,190 Och allt vi gör är översätta något 607 00:26:36,190 --> 00:26:39,090 som var mycket intuitivt i Scratch och hårt kodning det 608 00:26:39,090 --> 00:26:41,950 i syntaxen kommer vi att använda för den klass som är C. 609 00:26:41,950 --> 00:26:47,550 Så logiskt, var allt detta block är denna del av koden direkt. 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 också in en if ... annars uttalande som är bara en extra skikt 613 00:26:55,290 --> 00:26:59,120 komplexitet till if där datorn tar en titt på detta 614 00:26:59,120 --> 00:27:04,260 och ser, om detta villkor är sant, gör vad är inuti dessa två konsoler, 615 00:27:04,260 --> 00:27:08,470 else-- så ungefär som standard om det uppfyller inte Skick- göra detta. 616 00:27:08,470 --> 00:27:10,120 Det är som en gaffel i vägen. 617 00:27:10,120 --> 00:27:14,400 Om det regnar utanför, satte jag på en regnjacka, annars något 618 00:27:14,400 --> 00:27:16,330 annars jag inte sätta på en regnjacka. 619 00:27:16,330 --> 00:27:18,400 >> Betyder det logiken vettigt att alla? 620 00:27:18,400 --> 00:27:21,031 Häftigt. 621 00:27:21,031 --> 00:27:21,530 Okej. 622 00:27:21,530 --> 00:27:24,970 Så som en hård exempel på detta att vi skulle få se i C 623 00:27:24,970 --> 00:27:28,890 är om jag ville skapa en variabel som kallas inlämnings timmarna. 624 00:27:28,890 --> 00:27:32,050 Och om inlämnings timmar är mindre än fem, jag säger Liv är stort. 625 00:27:32,050 --> 00:27:33,070 Det är underbart. 626 00:27:33,070 --> 00:27:36,450 Men säger Kampen är real-- vilket är vad vi alla på denna måndag 627 00:27:36,450 --> 00:27:39,337 eftermiddag upp Science Hill är förmodligen gör just now-- 628 00:27:39,337 --> 00:27:40,170 PUBLIK: [skrattar] 629 00:27:40,170 --> 00:27:42,510 ANDI PENG: De sätt som vi skulle, tack för det. 630 00:27:42,510 --> 00:27:46,180 Det sätt som vi skulle hårdkoda detta i C är if-- låt oss anta 631 00:27:46,180 --> 00:27:49,920 Vi har redan en variabel av typen int kallade läxor timmar här. 632 00:27:49,920 --> 00:27:53,870 Om inlämnings timmar är mindre än fem printf (), är livet bra. 633 00:27:53,870 --> 00:27:57,330 Kom ihåg att hålla / n eftersom du vill ha en ny rad efter. 634 00:27:57,330 --> 00:27:59,660 Else tryck, är Kampen verkliga. 635 00:27:59,660 --> 00:28:03,720 >> Förstår alla hur Jag gått från detta block 636 00:28:03,720 --> 00:28:07,610 i detta block av kod? 637 00:28:07,610 --> 00:28:08,110 Häftigt. 638 00:28:08,110 --> 00:28:11,030 639 00:28:11,030 --> 00:28:11,840 Okej. 640 00:28:11,840 --> 00:28:15,930 >> Så nu ska vi ta en titt på flera If uttalanden sammanlagt. 641 00:28:15,930 --> 00:28:18,140 Så låt oss anta Syftet med detta program 642 00:28:18,140 --> 00:28:20,870 var vi uppmana användaren för en klass. 643 00:28:20,870 --> 00:28:24,450 Vi prompten med getInt () för en klass, och de mata in ett värde, 644 00:28:24,450 --> 00:28:27,700 och du vill visa vilken typ av klass som de fick. 645 00:28:27,700 --> 00:28:30,730 >> Så om jag skulle utforma ett program, jag innebär normalt i alla våra ögon, 646 00:28:30,730 --> 00:28:35,490 90-100 är en A, är 80-90 en B, och så vidare och så vidare. 647 00:28:35,490 --> 00:28:39,040 Vad är fel med detta kodsnutt att det inte är 648 00:28:39,040 --> 00:28:41,393 göra vad jag vill att det ska göra. 649 00:28:41,393 --> 00:28:41,892 Yeah. 650 00:28:41,892 --> 00:28:45,100 >> HÖGTALARE 11: de har lägre gränser, men de har inte övre gränser. 651 00:28:45,100 --> 00:28:46,280 >> ANDI PENG: Exakt. 652 00:28:46,280 --> 00:28:47,950 Har alla höra vad hon sa? 653 00:28:47,950 --> 00:28:50,200 Det kommer att vara övre gränser, men inte lägre gränser. 654 00:28:50,200 --> 00:28:52,540 Tyvärr, tvärtom, nedre gränser, inga övre gränser. 655 00:28:52,540 --> 00:28:55,090 Så vill du ta en stab på att säga 656 00:28:55,090 --> 00:28:58,945 vad skulle skrivas ut på detta skärm om jag skulle köra den här koden. 657 00:28:58,945 --> 00:28:59,820 TALARE 11: Ett fel? 658 00:28:59,820 --> 00:29:01,140 ANDI PENG: Ett fel? 659 00:29:01,140 --> 00:29:02,740 Stor gissning, inte helt rätt. 660 00:29:02,740 --> 00:29:05,465 Är det någon som har en annan stab? 661 00:29:05,465 --> 00:29:06,640 Ja, Aaron. 662 00:29:06,640 --> 00:29:10,099 >> AARON: Om du sätter in något som är större än 90, 663 00:29:10,099 --> 00:29:11,640 det skulle visa alla kvaliteter du fick. 664 00:29:11,640 --> 00:29:13,640 Det skulle visa att du har ett A, du fick en B, fick du ett C. 665 00:29:13,640 --> 00:29:13,870 >> ANDI PENG: Ja. 666 00:29:13,870 --> 00:29:14,840 Det är precis rätt. 667 00:29:14,840 --> 00:29:17,820 Så skulle det vara underbart. 668 00:29:17,820 --> 00:29:21,781 Men de är ömsesidigt exklusiv, tror jag. 669 00:29:21,781 --> 00:29:23,280 Om jag skulle köra denna del av koden. 670 00:29:23,280 --> 00:29:26,200 Och låt oss bara säga att jag inmatas betyget 95. 671 00:29:26,200 --> 00:29:30,360 Så 95 är nu lagrad i int kallas klass. 672 00:29:30,360 --> 00:29:33,610 >> Och så C är ett språk som går upp topp till botten, 673 00:29:33,610 --> 00:29:36,000 så det kommer att alltid köra upp och ned. 674 00:29:36,000 --> 00:29:39,420 Så det kommer att komma hit, läs om klass är större än eller lika med 90, 675 00:29:39,420 --> 00:29:42,850 printf () du fick ett A. Bra, jag har en 95, det är mer än 90. 676 00:29:42,850 --> 00:29:44,866 Det kommer att skrivas ut, Jag fick ett A. Det kommer 677 00:29:44,866 --> 00:29:48,850 att ta en titt på detta om det kommer säger väl 95 är också större än 80, 678 00:29:48,850 --> 00:29:52,970 det kommer att skriva ut du fick också en fått B utropstecken, och så vidare och så 679 00:29:52,970 --> 00:29:53,690 vidare. 680 00:29:53,690 --> 00:29:55,890 >> Så som vi alla kan se, detta är en vanlig bugg 681 00:29:55,890 --> 00:30:00,760 som kan uppstå när vi är skriva kod att hålla utkik efter. 682 00:30:00,760 --> 00:30:05,430 Vem som helst, frågor om varför detta hände? 683 00:30:05,430 --> 00:30:05,930 Bra. 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å hur ska vi fixa detta, är uppenbarligen logiska nästa fråga. 687 00:30:12,110 --> 00:30:16,290 Tja, har vi dessa vackra saker som kallas om annat om annat 688 00:30:16,290 --> 00:30:18,010 om else uttalanden. 689 00:30:18,010 --> 00:30:22,230 Så du kan se, om du ville att ändra på det problemet, 690 00:30:22,230 --> 00:30:25,260 du ville göra var och en av villkor ömsesidigt uteslutande, 691 00:30:25,260 --> 00:30:26,860 du vill lägga till en annan ... if-sats. 692 00:30:26,860 --> 00:30:30,068 >> Och dessa av course-- tänka på dem som lejdare eller liknande pinnar på ladder-- 693 00:30:30,068 --> 00:30:34,050 du kan lägga till så många av dessa som du vill ha så många villkor som du vill. 694 00:30:34,050 --> 00:30:36,790 Så här, om jag inmatade grad att vara 95. 695 00:30:36,790 --> 00:30:39,479 Om betyget är större än 95, printf (), fick jag en A. store. 696 00:30:39,479 --> 00:30:42,020 Det kommer att se ett annat ... om och det kommer att veta, Åh nej, 697 00:30:42,020 --> 00:30:43,750 Jag har redan verk först annat. 698 00:30:43,750 --> 00:30:47,020 Jag vet-- eller första if-- jag vet att Jag behöver inte titta på någon av dessa 699 00:30:47,020 --> 00:30:48,920 eftersom en av dem har redan varit sant. 700 00:30:48,920 --> 00:30:50,410 Så det kommer att löpa från toppen och nedåt. 701 00:30:50,410 --> 00:30:53,650 Så snart som den första en är sant, då det kommer att hoppa över alla de andra 702 00:30:53,650 --> 00:30:54,675 av de annars ... ifs. 703 00:30:54,675 --> 00:30:55,550 Betyder det vettigt? 704 00:30:55,550 --> 00:30:57,841 Så, på detta sätt du har olika nivåer av kontroll 705 00:30:57,841 --> 00:31:01,090 och så fort en av dem är falsk, den resten är också, kommer de inte ens kontrollera. 706 00:31:01,090 --> 00:31:03,577 707 00:31:03,577 --> 00:31:04,076 Häftigt. 708 00:31:04,076 --> 00:31:07,680 709 00:31:07,680 --> 00:31:08,180 Okej. 710 00:31:08,180 --> 00:31:11,180 >> Så detta är ett exempel på en annan typ av villkorad uttalande 711 00:31:11,180 --> 00:31:15,250 vi ser mindre ofta, men vi får se dem och använda dem. 712 00:31:15,250 --> 00:31:18,120 Och de är ofta mer effektiv för vissa fall. 713 00:31:18,120 --> 00:31:20,020 Så vi har vad som kallas en switch uttalande. 714 00:31:20,020 --> 00:31:25,140 Så innan vi omfattas vad är en annan uttalande, en om ... annat uttalande. 715 00:31:25,140 --> 00:31:27,790 Här har vi vad är kallas switch uttalanden. 716 00:31:27,790 --> 00:31:31,100 >> Så när vi använder switch uttalanden är nyckeln? 717 00:31:31,100 --> 00:31:34,090 Så i en switch uttalande, du vanligtvis typiskt faktiskt du 718 00:31:34,090 --> 00:31:38,010 kan bara mata in heltal för din variabel som du kollar. 719 00:31:38,010 --> 00:31:42,390 Så om jag ville kontrollera om en viss number-- t.ex. 720 00:31:42,390 --> 00:31:43,720 en klass, om jag fick en 90. 721 00:31:43,720 --> 00:31:48,190 Jag vill att det ska se om det är en A, B eller C. jag kunde ha ett fall här. 722 00:31:48,190 --> 00:31:50,840 Emellertid har fallet att vara en annan konstant. 723 00:31:50,840 --> 00:31:53,170 >> Så i denna mening, switch uttalande kan bara 724 00:31:53,170 --> 00:31:55,290 kontrollera för jämställdhet av två tal. 725 00:31:55,290 --> 00:31:57,242 Det kontrollerar inte för något annat. 726 00:31:57,242 --> 00:31:59,950 Så det är något att vara mycket försiktig med när du använder detta. 727 00:31:59,950 --> 00:32:04,810 Så här, om jag ville kontrollera om mitt betyg av 90 är lika med 90 eller 80 728 00:32:04,810 --> 00:32:08,500 eller 70 eller 60, och sedan skriva ut motsvarande grad, 729 00:32:08,500 --> 00:32:11,420 Jag skulle kunna skriva att i en switch uttalande. 730 00:32:11,420 --> 00:32:15,120 >> Så det kommer att komma hit, är check Detta heltal lika med denna konstanta? 731 00:32:15,120 --> 00:32:17,030 Om inte, kommer det att hoppa. 732 00:32:17,030 --> 00:32:19,880 Är det lika med konstant två, och så vidare och så vidare, 733 00:32:19,880 --> 00:32:22,390 tills du träffar standard om ingen av dem är lika. 734 00:32:22,390 --> 00:32:24,590 Så snart som en av dem sätts till att vara lika, 735 00:32:24,590 --> 00:32:27,040 det kommer att göra detta kodrad och paus. 736 00:32:27,040 --> 00:32:30,990 Vilket innebär att det kommer att drabba det köra, bryta, och bara helt hoppa 737 00:32:30,990 --> 00:32:32,240 till botten av koden. 738 00:32:32,240 --> 00:32:37,550 Så i den meningen den typ av funktioner som en om annat om annat if. 739 00:32:37,550 --> 00:32:40,830 >> Så här är ett konkret exempel för er. 740 00:32:40,830 --> 00:32:46,140 Så låt oss anta att jag ville skapa en variabel som heter år grundades. 741 00:32:46,140 --> 00:32:50,230 Och jag vill att uppmana användaren att mata in året som skolan grundades. 742 00:32:50,230 --> 00:32:53,300 Så jag kan skapa en switch uttalande här. 743 00:32:53,300 --> 00:32:56,650 Och låt oss bara säga, jag ingång 1636. 744 00:32:56,650 --> 00:33:01,120 >> Denna kod här kommer att se switch år grundades vilket motsvarar 1636. 745 00:33:01,120 --> 00:33:03,940 Det kommer att se fall 1636, åh de är lika, 746 00:33:03,940 --> 00:33:06,230 printf () Borde inte du vara vid den skolan uppe i norr? 747 00:33:06,230 --> 00:33:08,770 Eftersom vi antar de inte gå hit om de går till Harvard, 748 00:33:08,770 --> 00:33:10,380 bryta och hoppa till slutet. 749 00:33:10,380 --> 00:33:14,090 >> Om jag skulle ingång 1701, som Jag antar vi alla skulle ingång, 750 00:33:14,090 --> 00:33:17,500 det skulle hoppa över det här fallet, kommer ned till fall två, som är 1701, 751 00:33:17,500 --> 00:33:19,660 och skriva ut Välkommen till Yale! 752 00:33:19,660 --> 00:33:21,360 Break, hoppa till slutet. 753 00:33:21,360 --> 00:33:25,130 Annars har du förmodligen tar den här kursen nätet i vilket case-- häftigt välkomna 754 00:33:25,130 --> 00:33:29,020 att Yale-- det kommer att gå till standardutskrifts, Hej Internet! 755 00:33:29,020 --> 00:33:29,870 Och bryta. 756 00:33:29,870 --> 00:33:30,466 Yeah. 757 00:33:30,466 --> 00:33:32,090 >> TALARE 12: Kan man använda annat i stället för standard finns? 758 00:33:32,090 --> 00:33:34,550 >> ANDI Peng: Nej, eftersom den sätt att hela denna funktion 759 00:33:34,550 --> 00:33:39,170 switch byggs, syntaxen du behöver använda är fallet fallet standard. 760 00:33:39,170 --> 00:33:42,400 Det är som om annat om detta ett det fall fall standard. Yeah. 761 00:33:42,400 --> 00:33:45,650 TALARE 13: Du kanske redan sagt detta, men kan du ha mer än två fall? 762 00:33:45,650 --> 00:33:48,066 ANDI PENG: Ja, du kan har så många fall som du vill. 763 00:33:48,066 --> 00:33:50,050 Tänk på det som bara gillar oändligt tillsätta på. 764 00:33:50,050 --> 00:33:52,396 >> TALARE 14: Om du bytte 1701 med 1636, 765 00:33:52,396 --> 00:33:54,187 det inte verkligen göra en skillnad eller hur? 766 00:33:54,187 --> 00:33:55,770 Det kommer bara att kontrollera om det. 767 00:33:55,770 --> 00:33:56,900 >> ANDI PENG: Det är en riktigt bra fråga. 768 00:33:56,900 --> 00:33:58,880 Och vi kommer att beröra detta senare, men bara 769 00:33:58,880 --> 00:34:01,160 vet att det är växeln uttalande infinitely-- det är 770 00:34:01,160 --> 00:34:03,536 effektivare än det och om annars om att det fungerar 771 00:34:03,536 --> 00:34:06,660 med användning av en annan typ av funktion som kan du, att i huvudsak bara 772 00:34:06,660 --> 00:34:08,790 hoppa direkt till önskad Om du behöver vara på. 773 00:34:08,790 --> 00:34:10,547 Yeah. 774 00:34:10,547 --> 00:34:11,255 TALARE 14: Cool. 775 00:34:11,255 --> 00:34:11,754 Tack. 776 00:34:11,754 --> 00:34:12,526 ANDI PENG: Ja 777 00:34:12,526 --> 00:34:16,687 >> TALARE 14: Och du inte kunde gör fall liknande och större än. 778 00:34:16,687 --> 00:34:17,270 ANDI PENG: Nej 779 00:34:17,270 --> 00:34:19,860 Så, det är vad som begränsar om switch uttalande är att du har 780 00:34:19,860 --> 00:34:21,564 att ha konstanter endast endast heltal. 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å detta är något som du killar kommer att stöta på mindre ofta, 785 00:34:28,659 --> 00:34:32,280 men jag ville bara införa det i fallet. 786 00:34:32,280 --> 00:34:36,210 Vi har här vad som är kallas ett ternärt operatör. 787 00:34:36,210 --> 00:34:39,370 Där i allt väsentligt, det är precis som en if-sats kompileras till en rad. 788 00:34:39,370 --> 00:34:42,630 Här ska jag gå in på nästa rad, den nästa sida, eftersom det är lättare att se. 789 00:34:42,630 --> 00:34:44,860 >> Så vi har alla sett denna rättighet? 790 00:34:44,860 --> 00:34:46,110 Detta är ganska lätt att följa. 791 00:34:46,110 --> 00:34:51,290 Om jag ville göra en variabel som heter sträng som heter s, om ett visst antal 792 00:34:51,290 --> 00:34:54,770 Jag ger det är mindre än 100, jag vill tilldela låg på strängen, 793 00:34:54,770 --> 00:34:57,240 annat jag vill tilldela hög. 794 00:34:57,240 --> 00:35:01,370 >> Detta här gör exakt samma sak de åtta rader kod gör. 795 00:35:01,370 --> 00:35:03,600 Så här jag vill skapa en variabel sträng. 796 00:35:03,600 --> 00:35:08,520 Och detta är villkoret jag kontroll, om ett nummer är mindre än 100, 797 00:35:08,520 --> 00:35:12,750 då du tilldelar värdet av låga, annars tilldela värdet på hög. 798 00:35:12,750 --> 00:35:15,802 >> Dessa bilder kommer att vara online, inga bekymmer om ni inte får ner det. 799 00:35:15,802 --> 00:35:18,510 Detta är bara ett enklare sätt, en mer effektivt sätt att skriva kod. 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å nu ska vi ange vad för de flesta människor 803 00:35:25,190 --> 00:35:28,660 är som en mycket, mycket förvirrande sak att tänka på först. 804 00:35:28,660 --> 00:35:30,226 Slingsektionen. 805 00:35:30,226 --> 00:35:32,600 Så idag ska vi prata ungefär tre typer av slingor. 806 00:35:32,600 --> 00:35:34,890 Vi kommer att börja med ett tag loop, sedan tala om en gör while-slinga, 807 00:35:34,890 --> 00:35:36,740 och sedan tala om för loopar. 808 00:35:36,740 --> 00:35:40,010 >> Så i huvudsak, för de mer visuell inlärare ute, 809 00:35:40,010 --> 00:35:44,410 Vi har i huvudsak en grafisk skildring av vad en while-slinga gör. 810 00:35:44,410 --> 00:35:48,290 Så i en programmering, skulle du börjar och ange slingan vid en viss punkt. 811 00:35:48,290 --> 00:35:49,470 Du kontrollerar ett tillstånd. 812 00:35:49,470 --> 00:35:52,165 Och om villkoret är sant, du kör koden inuti. 813 00:35:52,165 --> 00:35:53,790 Och du kommer tillbaka runt och du kontrollera. 814 00:35:53,790 --> 00:35:57,190 Om det fortfarande är sant att du hålla kör denna kod runt och runt i en slinga. 815 00:35:57,190 --> 00:36:00,970 >> Men den andra att villkoret blir falskt, 816 00:36:00,970 --> 00:36:02,739 du kommer att bryta och avsluta slingan. 817 00:36:02,739 --> 00:36:05,030 Och detta är i huvudsak syntax du ska använda. 818 00:36:05,030 --> 00:36:08,250 Medan ett visst villkor är true gör detta, om det inte är sant, 819 00:36:08,250 --> 00:36:12,920 du kommer att hoppa till slutet och gå vidare med ditt program. 820 00:36:12,920 --> 00:36:13,690 OK. 821 00:36:13,690 --> 00:36:17,250 >> Har någon ett exempel på vad som kan potentiellt inträffa 822 00:36:17,250 --> 00:36:19,160 om jag försöker köra denna del av koden? 823 00:36:19,160 --> 00:36:22,470 Förresten, SAJ-- det är SCAZ, Andi, Jason-- vi avsluta vår e-post, 824 00:36:22,470 --> 00:36:24,830 Kärlek, SAJ. 825 00:36:24,830 --> 00:36:25,573 Det är oss. 826 00:36:25,573 --> 00:36:26,500 OK. 827 00:36:26,500 --> 00:36:29,829 >> Någon har ett exempel, eller har en idé om vad detta skulle skriva ut? 828 00:36:29,829 --> 00:36:30,870 Typ av en kuggfråga. 829 00:36:30,870 --> 00:36:34,550 830 00:36:34,550 --> 00:36:39,380 Så här, kom ihåg villkoret Vi kollar efter medan sant. 831 00:36:39,380 --> 00:36:42,840 Så medan detta är sant, är det tryckningen, jag älskar SAJ! 832 00:36:42,840 --> 00:36:48,460 Finns det någon plats där vi hade ändra detta till något annat? 833 00:36:48,460 --> 00:36:49,050 Nej, rätt? 834 00:36:49,050 --> 00:36:51,470 >> Så här har vi stött vad är nog 835 00:36:51,470 --> 00:36:54,310 kommer att buggning en massa dina program, det oändliga loop. 836 00:36:54,310 --> 00:36:56,268 Du kommer att upptäcka att om du köra denna del av koden, 837 00:36:56,268 --> 00:36:58,160 det är bara kommer att hålla tryckning, jag älskar SAJ! 838 00:36:58,160 --> 00:37:00,701 Medan vi uppskattar det stöd, Vi vill inte ha dina datorer 839 00:37:00,701 --> 00:37:02,910 att krascha eftersom du fortsätta att skriva ut Jag älskar SAJ! 840 00:37:02,910 --> 00:37:05,320 >> Så snälla, snälla, undvika den oändliga slingan 841 00:37:05,320 --> 00:37:07,320 eftersom det aldrig kommer att utvärdera till false 842 00:37:07,320 --> 00:37:08,780 och du kommer aldrig att lämna slingan. 843 00:37:08,780 --> 00:37:10,530 Och du kommer att sugas in för evigt. 844 00:37:10,530 --> 00:37:13,000 Häftigt. 845 00:37:13,000 --> 00:37:13,694 OK. 846 00:37:13,694 --> 00:37:15,610 Den andra typen av slingan vi pratar om i dag 847 00:37:15,610 --> 00:37:17,580 är do while-slingan, göra medan loop. 848 00:37:17,580 --> 00:37:20,580 Och det kallas en gör while-slinga eftersom du har en gör och ett tag. 849 00:37:20,580 --> 00:37:24,390 Så det här är ganska lik ett tag slinga, men lite annorlunda. 850 00:37:24,390 --> 00:37:27,620 Här, du kommer att göra oavsett insida av detta 851 00:37:27,620 --> 00:37:29,747 medan ett visst villkor är sant. 852 00:37:29,747 --> 00:37:32,580 Så om jag var C och datorn är jag kör ner denna del av koden, 853 00:37:32,580 --> 00:37:33,880 Jag tar en titt på toppen. 854 00:37:33,880 --> 00:37:36,890 Jag går till C, säger jag gör det här. 855 00:37:36,890 --> 00:37:40,550 Och då jag kontrollera, medan det är sant, jag måste upprepa det. 856 00:37:40,550 --> 00:37:42,750 Men medan detta är falskt, då jag gå vidare 857 00:37:42,750 --> 00:37:44,700 och jag aldrig gå tillbaka till den slingan igen. 858 00:37:44,700 --> 00:37:48,360 >> Kan vem som helst ta en stab på vad skillnaden 859 00:37:48,360 --> 00:37:52,130 mellan denna slinga och en vi bara såg på var praktiskt. 860 00:37:52,130 --> 00:37:52,717 Yeah. 861 00:37:52,717 --> 00:37:55,050 HÖGTALARE 15: Villkoret kommer efter i stället för före? 862 00:37:55,050 --> 00:37:55,841 ANDI PENG: Exakt. 863 00:37:55,841 --> 00:37:57,984 Så hon sade villkoret kommer efter, inte före. 864 00:37:57,984 --> 00:38:00,400 I slutändan, skillnaden mellan detta och while-loopen 865 00:38:00,400 --> 00:38:03,597 är att du bara ska göra vad är inuti denna oavsett 866 00:38:03,597 --> 00:38:06,430 om ditt tillstånd är eller inte sant, och sedan kontrollera skicket. 867 00:38:06,430 --> 00:38:08,304 Så i det här fallet, är du always-- på detta sätt, 868 00:38:08,304 --> 00:38:11,240 du alltid att se vad som finns inuti körs minst 869 00:38:11,240 --> 00:38:14,230 en gång innan du kontrollerar att se Om du vill att den ska köras igen. 870 00:38:14,230 --> 00:38:18,040 >> Och här är ett exempel om när vi skulle använda den. 871 00:38:18,040 --> 00:38:22,570 Så till exempel, om jag ville ha en variabel av typen int namnges ålder, 872 00:38:22,570 --> 00:38:25,640 och jag vill uppmana användaren för deras ålder, 873 00:38:25,640 --> 00:38:27,910 Jag kommer att göra printf () Hur gammal är du? 874 00:38:27,910 --> 00:38:30,330 ålder = getInt (), som är att användaren tillfrågas. 875 00:38:30,330 --> 00:38:32,140 >> Och en del människor kommer att bli riktigt irriterande. 876 00:38:32,140 --> 00:38:34,931 Och du inte vill buggar i din program för någon inmatning liknande, 877 00:38:34,931 --> 00:38:36,680 Åh jag är negativ 4 år eller vad som helst. 878 00:38:36,680 --> 00:38:39,900 I vilket fall, om de gör det, utvärderar detta 879 00:38:39,900 --> 00:38:43,150 till true, vilket betyder att jag kommer att måste hålla gå tillbaka och göra detta. 880 00:38:43,150 --> 00:38:45,310 Så detta kommer att hålla åter att användaren tillfrågas 881 00:38:45,310 --> 00:38:47,960 för att ge dig som en riktig Antalet och det är 882 00:38:47,960 --> 00:38:51,930 kommer att hålla gå tillbaka och göra om det tills de ger dig en riktig ålder 883 00:38:51,930 --> 00:38:56,900 större än ett, eller inte är noll. 884 00:38:56,900 --> 00:38:58,020 >> Så antyda, antyda. 885 00:38:58,020 --> 00:39:02,263 Detta kommer att vara mycket, mycket användbar för en av dina PSET problem. 886 00:39:02,263 --> 00:39:04,155 Yeah. 887 00:39:04,155 --> 00:39:05,580 >> TALARE 16: Whoops, sorry. 888 00:39:05,580 --> 00:39:06,288 >> ANDI PENG: Japp. 889 00:39:06,288 --> 00:39:09,424 >> TALARE 16: Finns det inte att vara ett svin, men-- 890 00:39:09,424 --> 00:39:10,340 ANDI PENG: Inga bekymmer. 891 00:39:10,340 --> 00:39:11,990 TALARE 16: --are det olika regler här, 892 00:39:11,990 --> 00:39:13,810 eller har du bara glömma att sätta citatet? 893 00:39:13,810 --> 00:39:14,250 >> ANDI PENG: Oh Yeah. 894 00:39:14,250 --> 00:39:15,530 Tyvärr, det är helt min dåliga. 895 00:39:15,530 --> 00:39:17,100 Det var definitivt tänkt att vara ett citat. 896 00:39:17,100 --> 00:39:17,690 God fångst. 897 00:39:17,690 --> 00:39:18,800 Det skulle inte ha kö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 sista typ av loop vi ska prata om och slutligen slaget av mest 901 00:39:26,160 --> 00:39:28,854 komplex är för loop. 902 00:39:28,854 --> 00:39:30,770 Oroa dig inte om du inte vet vad det betyder. 903 00:39:30,770 --> 00:39:32,061 Det är ganska förvirrande i början. 904 00:39:32,061 --> 00:39:33,640 Vi ska gå över ett exempel. 905 00:39:33,640 --> 00:39:37,040 >> Allt som händer i en for-loop är att du har tre uttalanden 906 00:39:37,040 --> 00:39:38,380 att du kommer att omfatta. 907 00:39:38,380 --> 00:39:42,130 Så för en viss sak, du är kommer att initiera en variabel. 908 00:39:42,130 --> 00:39:45,280 Du kommer att lägga till villkoret att som denna slinga kommer att hålla igång. 909 00:39:45,280 --> 00:39:47,790 Och sedan, vid slutet av den loop, du kommer att uppdatera den. 910 00:39:47,790 --> 00:39:50,248 Du kan uppdatera variabeln som du vill hålla reda på. 911 00:39:50,248 --> 00:39:52,530 Så vi brukar använda för slingor för när vi 912 00:39:52,530 --> 00:39:55,390 vill köra en slinga för en visst antal gånger 913 00:39:55,390 --> 00:39:58,900 och vi redan vet, Åh jag vill denna slinga att köra som 10 gånger, 914 00:39:58,900 --> 00:40:03,060 då du do-- jag ska gå över ett exempel på nästa sida. 915 00:40:03,060 --> 00:40:07,830 >> Så här till exempel, i Scratch, om du ville ha något att upprepa 10 gånger, 916 00:40:07,830 --> 00:40:10,790 allt du hade att säga var, upprepa 10 gånger jag älskar SAJ! 917 00:40:10,790 --> 00:40:15,260 vilket är en mer acceptabel show av stöd för oss 918 00:40:15,260 --> 00:40:17,120 snarare än den oändlig slinga. 919 00:40:17,120 --> 00:40:19,920 Här, hur du skulle övergång till C och skriva 920 00:40:19,920 --> 00:40:26,040 det vill säga för int-- jag kommer att skapa eller deklarera en variabel av typen int namnges i. 921 00:40:26,040 --> 00:40:30,089 Jag kommer att initiera den till 0, så i = 0; 922 00:40:30,089 --> 00:40:31,630 och detta kommer att bli mitt tillstånd. 923 00:40:31,630 --> 00:40:33,860 Så i är mindre än 10. 924 00:40:33,860 --> 00:40:36,096 Och sedan i end-- det sista uttalandet är du 925 00:40:36,096 --> 00:40:38,710 kommer att ha är en uppdatering av vad som händer med variabeln i 926 00:40:38,710 --> 00:40:40,206 I slutet av din för loop. 927 00:40:40,206 --> 00:40:42,830 Så det är ganska förvirrande, eftersom olika delar av denna linje 928 00:40:42,830 --> 00:40:44,871 händer vid olika typer av slingan. 929 00:40:44,871 --> 00:40:46,746 Men jag ska gå över en pseudo exempel på detta 930 00:40:46,746 --> 00:40:50,360 och kanske förklara detta bara lite bättre. 931 00:40:50,360 --> 00:40:51,500 >> Så här. 932 00:40:51,500 --> 00:40:52,929 Det är loopen vi bara såg. 933 00:40:52,929 --> 00:40:55,470 Väsentligen i pseudokod, vad som händer i det här programmet, 934 00:40:55,470 --> 00:40:57,940 först jag skapar i, initiera den till 0. 935 00:40:57,940 --> 00:41:00,440 Jag kontroll för att se om jag är mindre än 10, i vilket fall 936 00:41:00,440 --> 00:41:02,840 första gången är det eftersom 0 är mindre än 10. 937 00:41:02,840 --> 00:41:04,727 Slingan sålunda kommer att köra. 938 00:41:04,727 --> 00:41:06,310 Och sedan kommer jag att skriva denna linje. 939 00:41:06,310 --> 00:41:11,240 Och sedan i slutet av denna linje, rätt Här kommer jag att göra ökning i, i ++, 940 00:41:11,240 --> 00:41:13,370 allt det betyder är inkrementera den med ett. 941 00:41:13,370 --> 00:41:15,460 >> Så är jag nu en. 942 00:41:15,460 --> 00:41:17,960 Eftersom det var en gång 0, om jag öka det är, det är nu en. 943 00:41:17,960 --> 00:41:19,610 Och sedan kommer jag att gå tillbaka till början av slingan 944 00:41:19,610 --> 00:41:20,730 och jag kontrollera tillståndet. 945 00:41:20,730 --> 00:41:22,080 Är villkoret fortfarande sant? 946 00:41:22,080 --> 00:41:24,030 Ja, det är en fortfarande mindre än 10. 947 00:41:24,030 --> 00:41:27,370 Så det kommer att skriva ut igen, gå och sedan öka i och kontrollera 948 00:41:27,370 --> 00:41:29,180 tillståndet kontinuerligt, kontinuerligt 949 00:41:29,180 --> 00:41:33,290 tills du så småningom få till den punkt där jag är 10. 950 00:41:33,290 --> 00:41:36,300 >> Du kommer att skriva ut detta 10 gånger och sedan jag kommer att motsvara 10. 951 00:41:36,300 --> 00:41:37,800 Du kommer att kontrollera tillståndet. 952 00:41:37,800 --> 00:41:38,760 Är 10 mindre än 10? 953 00:41:38,760 --> 00:41:40,370 Nej, det är falskt. 954 00:41:40,370 --> 00:41:43,020 Således är denna slinga kommer inte att köra, kommer det att bryta, 955 00:41:43,020 --> 00:41:45,040 och du kommer att fortsätta med din kod. 956 00:41:45,040 --> 00:41:47,550 >> Så när ni kan se här är ett riktigt bra exempel 957 00:41:47,550 --> 00:41:53,110 av en slinga kan du programmera in att löper under en angiven mängd gånger. 958 00:41:53,110 --> 00:41:54,457 Var och en tydlig? 959 00:41:54,457 --> 00:41:54,956 Yeah. 960 00:41:54,956 --> 00:41:59,060 >> TALARE 17: Hur ökning exponentiellt, är det annorlunda kodning? 961 00:41:59,060 --> 00:42:02,060 >> ANDI PENG: Du can-- vi ska gå över detta i nästa bild. 962 00:42:02,060 --> 00:42:03,350 Bra fråga. 963 00:42:03,350 --> 00:42:05,910 Är anyone-- innan jag flyttar on-- någon alls förvirrad, 964 00:42:05,910 --> 00:42:07,640 eftersom detta är en riktigt tuff koncept. 965 00:42:07,640 --> 00:42:09,510 Inga bekymmer, om you're-- OK. 966 00:42:09,510 --> 00:42:10,010 Häftigt. 967 00:42:10,010 --> 00:42:12,836 968 00:42:12,836 --> 00:42:13,490 >> Okej. 969 00:42:13,490 --> 00:42:14,610 Bara en allmän bild. 970 00:42:14,610 --> 00:42:18,020 Detta medan slinga gör exakt samma sak för slingan var. 971 00:42:18,020 --> 00:42:19,631 Det är just skrivit annorlunda. 972 00:42:19,631 --> 00:42:22,130 Ni kan granska bilderna när det passar dig senare. 973 00:42:22,130 --> 00:42:24,880 Men bara vet att det finns flera sätt att skriva samma sak 974 00:42:24,880 --> 00:42:28,300 att hända med olika slingor. 975 00:42:28,300 --> 00:42:28,800 OK. 976 00:42:28,800 --> 00:42:32,380 >> Så nu får vi i frågan om vad om vi har en slinga i en slinga. 977 00:42:32,380 --> 00:42:35,810 Vi får in real Inception typ grejer här. 978 00:42:35,810 --> 00:42:40,640 När du vill göra saker flera tider inuti annat 979 00:42:40,640 --> 00:42:44,129 att göra saker flera gånger, du vill ha vad som kallas en kapslad for-loop. 980 00:42:44,129 --> 00:42:47,420 För er som först ser detta och blir väldigt förvirrad, är allt vi gör här 981 00:42:47,420 --> 00:42:50,580 är att ha en for-loop där vi har en variabel av rad. 982 00:42:50,580 --> 00:42:54,500 Men inne i det, vi har också en annan för slinga av en variabel som heter kolumn. 983 00:42:54,500 --> 00:42:58,560 Och jag föreslår starkt er alla som är förvirrade att först hålla 984 00:42:58,560 --> 00:43:00,310 track-- dra ut det här, dra ut det. 985 00:43:00,310 --> 00:43:03,000 Försök inte att bara orsak genom den, dra ut. 986 00:43:03,000 --> 00:43:06,630 >> I huvudet på denna del av papper, eller vad som helst, skriver rad, 987 00:43:06,630 --> 00:43:08,614 hålla reda på vad raden är lika med. 988 00:43:08,614 --> 00:43:10,780 Skriv kolonn, hålla koll av vilken kolumn är lika med. 989 00:43:10,780 --> 00:43:13,490 Och hålla reda på vad som är utskrift med varje iteration. 990 00:43:13,490 --> 00:43:16,320 Varje iteration av denna slinga, varje iteration av det större slingan, 991 00:43:16,320 --> 00:43:17,820 bara hålla efter logiken. 992 00:43:17,820 --> 00:43:20,190 Och jag garanterar dig, Du kommer att älska det du ser, 993 00:43:20,190 --> 00:43:24,307 eftersom det är också mycket gäller för din problemsamlingar. 994 00:43:24,307 --> 00:43:24,806 Häftigt. 995 00:43:24,806 --> 00:43:27,501 996 00:43:27,501 --> 00:43:28,000 Okej. 997 00:43:28,000 --> 00:43:30,723 Så det viktigaste att ni är förmodligen alla 998 00:43:30,723 --> 00:43:32,400 tänka på just nu, är dina Problem Set 1s, 999 00:43:32,400 --> 00:43:33,650 som beror 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, Tips Du kommer att ha 1002 00:43:39,710 --> 00:43:41,590 att fråga användaren om en insignal. 1003 00:43:41,590 --> 00:43:43,640 Inom din mario.c programmet du kommer att ha 1004 00:43:43,640 --> 00:43:46,431 att använda en kapslad för loop, som är en for-loop inne i en for-loop, 1005 00:43:46,431 --> 00:43:50,247 att skriva ut ett block av pyramid, huvudsakligen precis vad Mario måste gå igenom. 1006 00:43:50,247 --> 00:43:53,330 Och sedan i din greedy-- eller kanske Möjligheter till förändring, om någon av er 1007 00:43:53,330 --> 00:43:55,740 har någonsin hört talas om that-- du kommer att behöva vara mycket 1008 00:43:55,740 --> 00:43:58,160 försiktig med första flyttalsvärden. 1009 00:43:58,160 --> 00:44:01,860 Minns flytande decimaler och heltal är inte samma sak. 1010 00:44:01,860 --> 00:44:03,620 Håll reda på vilka en som är vilken. 1011 00:44:03,620 --> 00:44:05,953 Och du kommer att använda villkorssatser, liksom. 1012 00:44:05,953 --> 00:44:09,070 1013 00:44:09,070 --> 00:44:10,940 >> Okej, sista. 1014 00:44:10,940 --> 00:44:12,770 Jag har fått ett par minuter kvar. 1015 00:44:12,770 --> 00:44:13,460 Style. 1016 00:44:13,460 --> 00:44:19,320 Så detta är något som inte faktiskt påverka effektiviteten, 1017 00:44:19,320 --> 00:44:21,010 eller den faktiska driften av din kod. 1018 00:44:21,010 --> 00:44:24,380 Men påverkar det oss som dina väghyvlar, som dina läsare. 1019 00:44:24,380 --> 00:44:27,290 Det påverkar dig, om du är försöker hitta ett problem. 1020 00:44:27,290 --> 00:44:30,700 Det påverkar läsbarheten i din kod. 1021 00:44:30,700 --> 00:44:34,070 >> Så stil, som när du försöker styla en uppsats för engelska, om du 1022 00:44:34,070 --> 00:44:36,070 behövde stycken, du har allt slag 1023 00:44:36,070 --> 00:44:39,190 av virrvarr tillsammans på en rad, det gör det verkligen svårt för vem som helst 1024 00:44:39,190 --> 00:44:42,620 att läsa din uppsats, även om dina poäng är logiskt ljud. 1025 00:44:42,620 --> 00:44:44,390 Samma sak i programmering. 1026 00:44:44,390 --> 00:44:47,910 Du kan ha fruktansvärt obskyra kod som SCAZ kommer att omfatta, 1027 00:44:47,910 --> 00:44:49,660 och det kan fortfarande köra och funktion. 1028 00:44:49,660 --> 00:44:53,110 Men för oss, som din vackra terapiområden, som kommer att läsa och utvärdera dina PSets, 1029 00:44:53,110 --> 00:44:54,460 det är inte mycket trevligt. 1030 00:44:54,460 --> 00:44:56,859 >> Så snälla, till förmån av oss och dig själv, 1031 00:44:56,859 --> 00:44:58,900 när du försöker att åtgärda ett problem i din kod, 1032 00:44:58,900 --> 00:45:00,774 och du försöker läsa din egen kod, gör 1033 00:45:00,774 --> 00:45:03,910 att du följer vissa konventioner att vi kommer att gå över. 1034 00:45:03,910 --> 00:45:04,510 >> Så först. 1035 00:45:04,510 --> 00:45:07,070 Ge dina variabler meningsfulla namn. 1036 00:45:07,070 --> 00:45:11,450 Om du vill spara ett heltal kallas ålder, vänligen name it ålder. 1037 00:45:11,450 --> 00:45:12,875 Inte name it höjd. 1038 00:45:12,875 --> 00:45:14,750 När du försöker lagra en ålder i höjd, 1039 00:45:14,750 --> 00:45:16,722 det gör allt mycket förvirrande för oss. 1040 00:45:16,722 --> 00:45:17,930 Vi tycker inte att förväxla. 1041 00:45:17,930 --> 00:45:19,180 Du tycker inte att förväxla. 1042 00:45:19,180 --> 00:45:20,350 Ingen gillar att bli förvirrad. 1043 00:45:20,350 --> 00:45:23,100 Om du ska skapa något, name it något meningsfullt. 1044 00:45:23,100 --> 00:45:26,440 >> Men i för loop, singel tecken variabler är oftast bra. 1045 00:45:26,440 --> 00:45:31,350 Och för loop, om du vill bara att jag, och j, k, känn dig fri att bara göra det. 1046 00:45:31,350 --> 00:45:32,670 >> Konsekvent initiering. 1047 00:45:32,670 --> 00:45:33,770 Så vad betyder det? 1048 00:45:33,770 --> 00:45:37,600 Det innebär tekniskt sett, teoretiskt, Du kan initiera och skapa 1049 00:45:37,600 --> 00:45:40,140 flera variabler på samma linje. 1050 00:45:40,140 --> 00:45:42,820 Så till exempel, kan jag skapa ett heltal kallas scaz_age, 1051 00:45:42,820 --> 00:45:47,110 och heltal kallas andi_age = 20, och ett heltal kallas jason_age 1052 00:45:47,110 --> 00:45:48,090 på samma rad. 1053 00:45:48,090 --> 00:45:52,060 Och jag kan också tilldela endast en av dem och inte de andra till värden. 1054 00:45:52,060 --> 00:45:54,142 Vi ber er inte gör det. 1055 00:45:54,142 --> 00:45:57,350 För här har du i huvudsak skapat tre variabler, men bara en av dem 1056 00:45:57,350 --> 00:45:58,295 faktiskt har ett värde. 1057 00:45:58,295 --> 00:46:00,170 Och sedan när vi är försöker läsa din kod, 1058 00:46:00,170 --> 00:46:01,850 eller om du försöker att åtgärda ett problem i din kod, 1059 00:46:01,850 --> 00:46:03,340 det är mycket förvirrande att följa. 1060 00:46:03,340 --> 00:46:09,300 Så bara för läsbarhet, för vår läsbarhet, inte gör det. 1061 00:46:09,300 --> 00:46:10,355 >> Konsekvent klammerparenteserna. 1062 00:46:10,355 --> 00:46:12,980 Vissa människor gillar att sätta sina klamrar på olika platser. 1063 00:46:12,980 --> 00:46:14,100 Det spelar egentligen ingen roll. 1064 00:46:14,100 --> 00:46:17,900 Se bara till att du är konsekvent i ditt egen kod på var du vill placera dem. 1065 00:46:17,900 --> 00:46:18,950 >> Konsekvent avstånd. 1066 00:46:18,950 --> 00:46:22,040 Om du sätter ett mellanslag efter en for-loop, alltid göra det. 1067 00:46:22,040 --> 00:46:24,930 Inte precis som typ av gör det på vissa ställen, gör det inte i andra. 1068 00:46:24,930 --> 00:46:26,580 Bara vara konsekvent. 1069 00:46:26,580 --> 00:46:29,500 >> För det andra, om någon skulle vilja att granska CS50 Style Guide, 1070 00:46:29,500 --> 00:46:33,230 vi officiellt har en stilguide som berättar alla dessa konventioner, 1071 00:46:33,230 --> 00:46:34,890 plus mer. 1072 00:46:34,890 --> 00:46:35,530 Det är på nätet. 1073 00:46:35,530 --> 00:46:38,670 Det är som cs50.net/style eller något sådant. 1074 00:46:38,670 --> 00:46:40,180 Du kan google det. 1075 00:46:40,180 --> 00:46:41,399 >> Konsekvens är nyckeln. 1076 00:46:41,399 --> 00:46:43,190 Så oroa dig inte vad andra människor gör, 1077 00:46:43,190 --> 00:46:46,180 bara se till att du är konsekvent i din egen kod. 1078 00:46:46,180 --> 00:46:50,570 Någon som har några frågor om det? 1079 00:46:50,570 --> 00:46:51,070 Yeah. 1080 00:46:51,070 --> 00:46:53,370 >> TALARE 18: Så rätt sak att göra med initieringen är bara 1081 00:46:53,370 --> 00:46:56,130 har dem alla i en separat linjen, är det vad du säger? 1082 00:46:56,130 --> 00:46:58,850 >> ANDI PENG: Så jag sällan har detta hända. 1083 00:46:58,850 --> 00:47:02,230 Men om du ville, om du ville att vara som att spara utrymme i din kod, 1084 00:47:02,230 --> 00:47:04,000 eller vad som helst, kan du göra det här. 1085 00:47:04,000 --> 00:47:07,800 Vi ber att du bara inte initiera en sak och inte de andra. 1086 00:47:07,800 --> 00:47:12,600 Så om du vill göra int scaz_age, int andi_age, int jason_age, det är bra. 1087 00:47:12,600 --> 00:47:15,600 Bara inte initiera en och inte de andra är alla. 1088 00:47:15,600 --> 00:47:18,380 1089 00:47:18,380 --> 00:47:19,904 >> Frågor? 1090 00:47:19,904 --> 00:47:20,850 Okej. 1091 00:47:20,850 --> 00:47:24,610 Jag kommer att passera utanför mikrofon och laserpekaren, 1092 00:47:24,610 --> 00:47:28,862 och stafettpinnen till SCAZ på denna punkt. 1093 00:47:28,862 --> 00:47:29,808 Det här är pinsamt. 1094 00:47:29,808 --> 00:47:32,650 1095 00:47:32,650 --> 00:47:33,200 Här är det. 1096 00:47:33,200 --> 00:47:34,408 >> BRIAN Scassellati: Tack. 1097 00:47:34,408 --> 00:47:42,500 1098 00:47:42,500 --> 00:47:43,380 Hur är det för ljud? 1099 00:47:43,380 --> 00:47:46,420 1100 00:47:46,420 --> 00:47:47,900 Ljudet är bra? . 1101 00:47:47,900 --> 00:47:49,220 Utmärkt. 1102 00:47:49,220 --> 00:47:50,350 OK. 1103 00:47:50,350 --> 00:47:52,110 Så, hi everyone. 1104 00:47:52,110 --> 00:47:56,540 >> Jag ska försöka att arbeta igenom ett praktiskt exempel med dig. 1105 00:47:56,540 --> 00:48:00,850 Och vi kommer att använda CS50: s utvecklingsmiljö, vad som kallas 1106 00:48:00,850 --> 00:48:03,120 Integrated Development Environment. 1107 00:48:03,120 --> 00:48:05,145 Och du har sett denna demonstreras i föreläsning. 1108 00:48:05,145 --> 00:48:07,520 Och i Problem Set 1, du är kommer att ha en möjlighet 1109 00:48:07,520 --> 00:48:10,890 att använda den, och leka med det och vänja sig vid det, 1110 00:48:10,890 --> 00:48:13,640 eftersom vi kommer att använda det genom resten av terminen. 1111 00:48:13,640 --> 00:48:20,350 >> Så i detta IDE, har du vad som ser som en mycket traditionell filbläddrare 1112 00:48:20,350 --> 00:48:21,890 över på ena sidan. 1113 00:48:21,890 --> 00:48:24,360 Du har en del upp toppen där du ska 1114 00:48:24,360 --> 00:48:28,850 att se din källkod, din Cfile, den kod som du skriver. 1115 00:48:28,850 --> 00:48:31,880 Och ner botten, kommer du har ett terminalfönster 1116 00:48:31,880 --> 00:48:36,330 där du kan använda för att både kompilera ditt program 1117 00:48:36,330 --> 00:48:39,090 och att springa eller köra programmet. 1118 00:48:39,090 --> 00:48:40,100 OK. 1119 00:48:40,100 --> 00:48:46,560 >> Så bara för att ge oss en liten bit av Grunden i detta terminalfönster 1120 00:48:46,560 --> 00:48:48,930 du kommer att vara med hjälp av en uppsättning kommandon 1121 00:48:48,930 --> 00:48:53,040 som är standardkommandon i hela de flesta av Unix eller Linux-system. 1122 00:48:53,040 --> 00:48:55,890 Och så om du någonsin använt någon form av Unix, Ubuntu, 1123 00:48:55,890 --> 00:48:59,140 eller någon av de andra smaker, dessa kommer att se bekant. 1124 00:48:59,140 --> 00:49:00,890 >> Om du inte har, oroa dig inte. 1125 00:49:00,890 --> 00:49:02,830 Det finns inget komplicerat om dem. 1126 00:49:02,830 --> 00:49:05,330 De är bara med hjälp av en annan syntax, en annan namngivning 1127 00:49:05,330 --> 00:49:07,630 konvention än du har sett förut. 1128 00:49:07,630 --> 00:49:12,190 >> Så för att lista ut filerna inom en viss katalog, 1129 00:49:12,190 --> 00:49:15,310 de kommer att använda en kommando som heter ls eller lista. 1130 00:49:15,310 --> 00:49:18,010 Om du vill se allt med alla detaljer, 1131 00:49:18,010 --> 00:49:21,535 du kommer att använda ett kommando line argument med ls -l. 1132 00:49:21,535 --> 00:49:23,910 Och det kommer att visa dig allt mera i detalj, inklusive 1133 00:49:23,910 --> 00:49:26,270 behörigheterna för en fil. 1134 00:49:26,270 --> 00:49:31,190 >> För att ändra katalog, du kommer att använda kommandot cd. 1135 00:49:31,190 --> 00:49:35,180 Och du kommer att kunna byta katalog både att gå till din hemkatalog. 1136 00:49:35,180 --> 00:49:38,500 Det är bara cd allt av själv, cd med två 1137 00:49:38,500 --> 00:49:42,930 prickar kommer du tillbaka upp en nivå till föregående katalog. 1138 00:49:42,930 --> 00:49:46,400 Och du kan även cd till en katalogen genom att skriva i cd 1139 00:49:46,400 --> 00:49:48,500 och namnet på den katalogen. 1140 00:49:48,500 --> 00:49:50,540 >> Du kan också skapa nya kataloger. 1141 00:49:50,540 --> 00:49:52,790 Och vi kommer att gå genom detta på bara en minut. 1142 00:49:52,790 --> 00:49:54,498 Men bara för att sätta allt på skärmen. 1143 00:49:54,498 --> 00:49:56,310 Så att du kan se dem. 1144 00:49:56,310 --> 00:50:00,420 >> Du har även möjlighet att manipulera filer direkt 1145 00:50:00,420 --> 00:50:02,100 från kommandoraden. 1146 00:50:02,100 --> 00:50:06,059 Du kommer att kunna kopiera dem till flytta dem eller ta bort dem, 1147 00:50:06,059 --> 00:50:07,600 det vill säga, på ett effektivt sätt, för att ta bort dem. 1148 00:50:07,600 --> 00:50:10,310 1149 00:50:10,310 --> 00:50:15,350 >> Den CS50 IDE ger dig full makt kommandoradsargument. 1150 00:50:15,350 --> 00:50:20,280 Och det betyder att du kan också göra mycket farliga saker. 1151 00:50:20,280 --> 00:50:21,560 OK. 1152 00:50:21,560 --> 00:50:25,010 Till exempel kan du ta bort, eller det är radera, 1153 00:50:25,010 --> 00:50:28,750 en fil utan att fråga en bekräftelse. 1154 00:50:28,750 --> 00:50:31,820 Och du kan även ta bort recursively-- det är 1155 00:50:31,820 --> 00:50:38,940 strecket r flag-- en hel katalogen och alla dess innehåll. 1156 00:50:38,940 --> 00:50:39,660 OK. 1157 00:50:39,660 --> 00:50:42,940 De är listade i rött eftersom du bör tänka "Danger" varje gång 1158 00:50:42,940 --> 00:50:45,000 du ser dessa saker. 1159 00:50:45,000 --> 00:50:45,920 OK. 1160 00:50:45,920 --> 00:50:46,420 Okej. 1161 00:50:46,420 --> 00:50:50,090 1162 00:50:50,090 --> 00:50:53,430 >> Nu äntligen, det som är kommer att bli riktigt värdefull för dig, 1163 00:50:53,430 --> 00:50:57,270 finns det några bra knep att veta så du navigerar 1164 00:50:57,270 --> 00:50:59,190 genom denna terminalfönster. 1165 00:50:59,190 --> 00:51:03,590 Först, kan du rensa skärmen på helst genom att bara skriva i klartext. 1166 00:51:03,590 --> 00:51:06,310 Och du kommer att se mig göra det ganska ofta. 1167 00:51:06,310 --> 00:51:09,990 Du kan också bara visa texten till en fil 1168 00:51:09,990 --> 00:51:13,992 genom att skriva mer och sedan filnamnet. 1169 00:51:13,992 --> 00:51:17,200 Du kommer då att kunna bläddra tillbaka och vidare med det bara med mellanslagstangenten 1170 00:51:17,200 --> 00:51:19,010 och piltangenterna. 1171 00:51:19,010 --> 00:51:25,450 >> Om du har, som vi gjorde i dag i föreläsning, ett program som kontinuerligt körs 1172 00:51:25,450 --> 00:51:29,190 i oändlig loop, du kan stoppa programmet 1173 00:51:29,190 --> 00:51:35,160 från att köra genom att skriva kontroll, som håller ned Ctrl-C. 1174 00:51:35,160 --> 00:51:38,360 Och du kan ha att göra detta flera gånger. 1175 00:51:38,360 --> 00:51:40,620 Datorn får långt före dig. 1176 00:51:40,620 --> 00:51:43,380 Och du ibland behöver ge det ett par försök 1177 00:51:43,380 --> 00:51:46,280 innan det faktiskt kommer att gå igenom. 1178 00:51:46,280 --> 00:51:48,760 >> Du kommer också att kunna sortera igenom kommandona 1179 00:51:48,760 --> 00:51:54,230 att du bara skrivit med upp nyckeln, piltangent, och sedan nedåtpil. 1180 00:51:54,230 --> 00:51:57,560 Och vad är mest användbara är istället för att skriva ut långa filnamn, 1181 00:51:57,560 --> 00:52:02,209 du kommer att kunna använda Tab för att Komplettera automatiskt några instruktioner. 1182 00:52:02,209 --> 00:52:04,750 Nu ska vi visa alla de på bara en sekund. 1183 00:52:04,750 --> 00:52:06,780 Så om du inte kommer ihåg dem, oroa dig inte. 1184 00:52:06,780 --> 00:52:10,780 Detta är saker som du kommer plocka upp och använda när vi går längs. 1185 00:52:10,780 --> 00:52:11,470 OK. 1186 00:52:11,470 --> 00:52:18,830 >> Så i C-- skillnad i Scratch-- C är en kompilerad språk. 1187 00:52:18,830 --> 00:52:23,210 Det betyder att vi kommer att ta en källa file-- det är den text som du skriver, 1188 00:52:23,210 --> 00:52:26,500 de kommandon som du skriver, den printf () uttalanden, loopar, 1189 00:52:26,500 --> 00:52:32,580 allt else-- och vi kommer att ta filen och lämna bort 1190 00:52:32,580 --> 00:52:34,670 till ett program som kallas kompilator. 1191 00:52:34,670 --> 00:52:39,850 >> Kompilatorn tar då denna text som du har skrivit 1192 00:52:39,850 --> 00:52:43,270 och översätta det till de binära instruktioner 1193 00:52:43,270 --> 00:52:46,010 att datorn är faktiskt går användning. 1194 00:52:46,010 --> 00:52:49,700 Det kallas objektet eller körbar fil. 1195 00:52:49,700 --> 00:52:55,320 Om du tittar på den här filen, du kommer att se koden som du har skrivit. 1196 00:52:55,320 --> 00:52:59,480 Om du tittar på den här filen, du kommer att visa en slumpmässig sekvens av tecken 1197 00:52:59,480 --> 00:53:01,680 som gör ingen mening alls. 1198 00:53:01,680 --> 00:53:03,250 Det beror på att detta är den binära. 1199 00:53:03,250 --> 00:53:05,560 Det är inte menat för dig att läsa. 1200 00:53:05,560 --> 00:53:08,690 >> Men när du vill köra något, vad du ska 1201 00:53:08,690 --> 00:53:13,670 vara igång är det här objektet fil. 1202 00:53:13,670 --> 00:53:19,110 Så när vi arbetar med dessa filer, ska vi skriva en fil i C. 1203 00:53:19,110 --> 00:53:23,400 Vi ska sedan sammanställa det med hjälp av en kommando som make som kommer att åberopa 1204 00:53:23,400 --> 00:53:27,070 kompilatorn klang för C-språket. 1205 00:53:27,070 --> 00:53:31,530 Och som kommer att producera ett föremål fil, som en ut, eller i detta fall, 1206 00:53:31,530 --> 00:53:36,580 namn, min fil, som jag har lagt ned. 1207 00:53:36,580 --> 00:53:37,780 Okej. 1208 00:53:37,780 --> 00:53:39,790 >> Så låt oss verkligen försöka detta. 1209 00:53:39,790 --> 00:53:42,850 Så jag kom upp med ett exempel av vad jag ville prova. 1210 00:53:42,850 --> 00:53:47,380 Och en av de saker som fascinerar mig är animation. 1211 00:53:47,380 --> 00:53:51,010 Så vi ska försöka att göra lite animation 1212 00:53:51,010 --> 00:53:53,760 med bara ASCII-tecken. 1213 00:53:53,760 --> 00:53:56,470 Tecken vi kan skriva ut lätt nu. 1214 00:53:56,470 --> 00:54:00,890 >> Så här är min bästa försök att skapa för dig 1215 00:54:00,890 --> 00:54:07,005 animeringen av en kanin som löper genom det höga gräset. 1216 00:54:07,005 --> 00:54:07,505 Där är 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 är inte igång ännu, men han är stod där i det höga gräset. 1220 00:54:14,050 --> 00:54:17,810 >> Nu om jag var en animatör, i den gamla skolan 1221 00:54:17,810 --> 00:54:20,860 version av animation, vad jag skulle göra är att jag skulle producera 1222 00:54:20,860 --> 00:54:23,640 en bild av denna kanin i gräset. 1223 00:54:23,640 --> 00:54:25,390 Och då skulle jag producerar annan picture-- 1224 00:54:25,390 --> 00:54:30,600 annan vad de kallade cell-- att hade kaninen endast något flyttas. 1225 00:54:30,600 --> 00:54:34,870 Och sedan en tredje som hade kanin flyttade lite längre. 1226 00:54:34,870 --> 00:54:40,610 >> Och jag skulle producera en hel sekvensen av dessa celler. 1227 00:54:40,610 --> 00:54:44,220 Några där kaninen är över på den vänstra sidan. 1228 00:54:44,220 --> 00:54:47,050 Och sedan rör sig långsamt, en med ett mot mitten. 1229 00:54:47,050 --> 00:54:51,120 Och sedan från mitten över till höger. 1230 00:54:51,120 --> 00:54:55,760 Och om jag var då, egentligen lycklig, kunde jag sätta ihop 1231 00:54:55,760 --> 00:54:57,970 och jag kunde animera dem. 1232 00:54:57,970 --> 00:55:00,370 Och det finns min kanin löper genom gräset. 1233 00:55:00,370 --> 00:55:02,310 >> Det är min stora PowerPoint trick för dagen. 1234 00:55:02,310 --> 00:55:02,809 OK. 1235 00:55:02,809 --> 00:55:04,760 Så det här är 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å här en gång, här är vår kanin körs genom gräset. 1238 00:55:08,455 --> 00:55:09,217 >> TALARE 19: Igen. 1239 00:55:09,217 --> 00:55:11,050 BRIAN Scassellati: One mer tid, okej. 1240 00:55:11,050 --> 00:55:11,940 Det är din kanin. 1241 00:55:11,940 --> 00:55:12,940 OK. 1242 00:55:12,940 --> 00:55:15,470 >> Så idag vad vi ska göra är att vi kommer 1243 00:55:15,470 --> 00:55:21,110 för att försöka automatisera processen vid produktionen av dessa celler. 1244 00:55:21,110 --> 00:55:24,135 Vi kommer inte riktigt komma till den punkt av att kunna sätta dem alla tillsammans. 1245 00:55:24,135 --> 00:55:28,900 Men vi kommer att försöka att automatisera processen att generera denna sekvens. 1246 00:55:28,900 --> 00:55:32,900 >> Och det är mycket av det animation idag är. 1247 00:55:32,900 --> 00:55:36,690 Det vill säga, behöver du inte göra saker nödvändigtvis genom att dra allt för hand. 1248 00:55:36,690 --> 00:55:40,610 Vi använder en dator för att automatisera delar av denna process. 1249 00:55:40,610 --> 00:55:41,110 OK. 1250 00:55:41,110 --> 00:55:47,720 >> Så låt mig byta nu vår CS50 IDE. 1251 00:55:47,720 --> 00:55:54,260 Och jag har skapat för oss-- och låt jag zooma in här lite bit-- jag har 1252 00:55:54,260 --> 00:55:58,420 skapats för oss en utgångspunkt. 1253 00:55:58,420 --> 00:56:03,830 >> Varje gång som vi ber dig att sitta ner och skriva en bit kod, 1254 00:56:03,830 --> 00:56:09,250 vad vi verkligen ber dig att göra är vi ber att lösa ett problem. 1255 00:56:09,250 --> 00:56:11,810 Och det sätt som du bör tycker om att göra det 1256 00:56:11,810 --> 00:56:17,900 är genom att starta med några enkel del av denna lösning. 1257 00:56:17,900 --> 00:56:21,730 Och sedan bygga ut från den del. 1258 00:56:21,730 --> 00:56:23,400 Och det är vad vi ska göra idag. 1259 00:56:23,400 --> 00:56:27,570 >> Så snarare än att försöka allt på en gång till skriva hela gäng kod som är 1260 00:56:27,570 --> 00:56:30,770 kommer att producera de 10 animerings celler, 1261 00:56:30,770 --> 00:56:35,506 vi kommer att starta i stället med ett stycke som fungerar. 1262 00:56:35,506 --> 00:56:37,380 Och då kommer vi att bygga en lite runt det 1263 00:56:37,380 --> 00:56:39,740 och lite mer och lite mer. 1264 00:56:39,740 --> 00:56:42,550 >> Nu är bra lösa problem på detta sätt 1265 00:56:42,550 --> 00:56:46,716 är att det gör att du kan starta alltid med något som du vet 1266 00:56:46,716 --> 00:56:51,130 fungerar och införa en gradvis förändring. 1267 00:56:51,130 --> 00:56:54,090 Och det är ett bra sätt att lära sig att koda, 1268 00:56:54,090 --> 00:56:58,590 eftersom varje gång du gör en förändring, ser du vilken inverkan den har. 1269 00:56:58,590 --> 00:56:59,540 OK. 1270 00:56:59,540 --> 00:57:01,450 >> Så här är vår utgångspunkt. 1271 00:57:01,450 --> 00:57:01,950 OK. 1272 00:57:01,950 --> 00:57:08,030 Så i början av min fil, Jag har hash #included stdio.h. 1273 00:57:08,030 --> 00:57:12,560 Det är så att jag kan få printf () ska fungera. 1274 00:57:12,560 --> 00:57:15,240 >> Jag då jag har min huvudsakliga funktion. 1275 00:57:15,240 --> 00:57:18,760 Och detta fortfarande ser lite svårbegripliga eller obskyr till några av er. 1276 00:57:18,760 --> 00:57:20,010 Det är ok. 1277 00:57:20,010 --> 00:57:23,190 Allt den säger är att den viktigaste funktionen tar 1278 00:57:23,190 --> 00:57:27,830 ingen arguments-- void medel ingenting i C. Och det 1279 00:57:27,830 --> 00:57:29,940 avkastning genom konventionen ett heltal. 1280 00:57:29,940 --> 00:57:33,290 Huvud returnerar alltid ett heltal, oftast en kod säga saker 1281 00:57:33,290 --> 00:57:35,071 gick bra eller inte att gå bra. 1282 00:57:35,071 --> 00:57:35,570 OK. 1283 00:57:35,570 --> 00:57:39,110 Men huvud måste ha att utgöra för oss just nu. 1284 00:57:39,110 --> 00:57:42,080 >> Jag har sedan i tre rader kod. 1285 00:57:42,080 --> 00:57:46,760 Och tillsammans med varje rad kod, har jag lagt en kommentar. 1286 00:57:46,760 --> 00:57:51,340 Nu en av de saker som Vi kommer att insistera på att du gör, 1287 00:57:51,340 --> 00:57:55,320 och det är en så viktig praxis programmering, 1288 00:57:55,320 --> 00:57:57,800 är att alltid kommentera din kod. 1289 00:57:57,800 --> 00:58:02,550 Skriv alltid ner i en Engelska kommentar något 1290 00:58:02,550 --> 00:58:06,740 att du tror att kod är tänkt att göra. 1291 00:58:06,740 --> 00:58:11,360 På så sätt, senare när du kommer tillbaka till det kan du titta på det och du kan säga, 1292 00:58:11,360 --> 00:58:13,800 åh, jag minns vad jag var försöker göra med detta. 1293 00:58:13,800 --> 00:58:17,590 Eller när en TA sitter med dig försöka hjälpa dig på kontorstid, 1294 00:58:17,590 --> 00:58:20,890 De kan titta på detta och gå, jag se vad du försökte göra, 1295 00:58:20,890 --> 00:58:25,630 utan detta är vad som verkligen händer. 1296 00:58:25,630 --> 00:58:26,130 OK. 1297 00:58:26,130 --> 00:58:30,300 >> Så jag har tre delar till min kod, Jag tänker först och främst print 1298 00:58:30,300 --> 00:58:33,110 ut några punkter i början. 1299 00:58:33,110 --> 00:58:37,480 Jag ska sedan skriva ut min extremt snygga kanin. 1300 00:58:37,480 --> 00:58:40,600 Och sedan några bit av punkter i slutet. 1301 00:58:40,600 --> 00:58:45,220 >> Och dessa tre utskrifts uttalanden bör ser bekant för dig på denna punkt. 1302 00:58:45,220 --> 00:58:47,350 Allt som jag gör i vart och ett av dem är jag 1303 00:58:47,350 --> 00:58:49,780 utskrift av en sekvens av tecken. 1304 00:58:49,780 --> 00:58:51,370 Det finns inga inblandade variabler. 1305 00:58:51,370 --> 00:58:54,320 Allt är bara platt. 1306 00:58:54,320 --> 00:58:55,270 OK. 1307 00:58:55,270 --> 00:59:07,340 >> Så om jag går ner nu till min terminal-- låt oss se om jag kan få den tillbaka out-- 1308 00:59:07,340 --> 00:59:09,370 och jag kommer att skriva klart igen. 1309 00:59:09,370 --> 00:59:12,507 >> TALARE 20: Har vi använder Dubbla snedstreck kommentera? 1310 00:59:12,507 --> 00:59:14,340 BRIAN Scassellati: Kan Använd double-- ja. 1311 00:59:14,340 --> 00:59:16,920 Det finns flera sätt att lämna kommentarer i C. One 1312 00:59:16,920 --> 00:59:19,440 sätt är att använda den dubbla snedstreck. 1313 00:59:19,440 --> 00:59:24,910 Det andra är att använda ett snedstreck och en stjärna och sedan avsluta med en stjärna och ett snedstreck. 1314 00:59:24,910 --> 00:59:26,110 Okej. 1315 00:59:26,110 --> 00:59:28,950 >> Först av allt, jag ska börja navigera runt här. 1316 00:59:28,950 --> 00:59:35,350 Så om jag går till min hemkatalog Jag har ändrat kataloger där, 1317 00:59:35,350 --> 00:59:40,230 Jag kommer att titta och se vad som är i den katalogen, ls, lista ut. 1318 00:59:40,230 --> 00:59:43,230 Jag kommer att se att jag har fick två underkataloger. 1319 00:59:43,230 --> 00:59:47,910 Låt oss göra detta lite större här så att vi kan alla se det. 1320 00:59:47,910 --> 00:59:50,610 >> Jag kan se att jag har fick två underkataloger. 1321 00:59:50,610 --> 00:59:53,510 Jag ska byta katalog att gå in i arbetsutrymmet. 1322 00:59:53,510 --> 00:59:58,380 Och jag kommer att bara skriva ut en del av det, och sedan bara trycka Tab. 1323 00:59:58,380 --> 01:00:01,520 Och det kommer att fullfölja resten för mig. 1324 01:00:01,520 --> 01:00:03,370 Fancy. 1325 01:00:03,370 --> 01:00:04,960 >> Jag ska titta och se i arbetsytan. 1326 01:00:04,960 --> 01:00:08,431 Och just nu jobbar jag på SuperSection 1327 01:00:08,431 --> 01:00:09,680 att vi undervisar just nu. 1328 01:00:09,680 --> 01:00:10,971 Så jag ska gå in i den katalogen. 1329 01:00:10,971 --> 01:00:14,770 1330 01:00:14,770 --> 01:00:15,970 Och slutligen, titta och se. 1331 01:00:15,970 --> 01:00:18,480 Och jag har fått den filen bunny.c. 1332 01:00:18,480 --> 01:00:20,980 >> Okej så låt mig klart. 1333 01:00:20,980 --> 01:00:24,370 Och jag kommer att now-- igen jag fortfarande vistas i den katalogen 1334 01:00:24,370 --> 01:00:27,540 och det säger att jag är i att SuperSection katalogen. 1335 01:00:27,540 --> 01:00:30,690 Jag kommer att gå vidare och göra mitt program kanin. 1336 01:00:30,690 --> 01:00:33,730 1337 01:00:33,730 --> 01:00:38,810 Och det kommandot, gör kanin, samtidigt låter lite konstigt, 1338 01:00:38,810 --> 01:00:42,960 även åberopar klang kompilatorn. 1339 01:00:42,960 --> 01:00:46,470 >> Och det produceras för mig en utgång som är 1340 01:00:46,470 --> 01:00:52,130 en körbar funny-- en körbar fil som heter kanin. 1341 01:00:52,130 --> 01:00:52,700 OK. 1342 01:00:52,700 --> 01:00:56,700 Jag kan då, och detta låter ännu värre, kör kanin. 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 Och låt oss se vad det gör. 1346 01:01:03,150 --> 01:01:04,527 OK. 1347 01:01:04,527 --> 01:01:06,360 Det är en liten bit av vad jag hade förväntat mig. 1348 01:01:06,360 --> 01:01:11,290 Jag har min kanin bild i det, men jag typ av ville helt av sig själv. 1349 01:01:11,290 --> 01:01:13,186 Vad har jag missat? 1350 01:01:13,186 --> 01:01:14,478 >> TALARE 21: Slash l eller snedstreck 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å låt oss gå tillbaka hit. 1354 01:01:18,800 --> 01:01:20,330 Och jag ska komma ur det. 1355 01:01:20,330 --> 01:01:23,320 Och jag ska gå tillbaka till detta. 1356 01:01:23,320 --> 01:01:27,720 Och låt oss ta en titt nu från min huvuduppgift här. 1357 01:01:27,720 --> 01:01:29,280 >> Så vad skall jag göra? 1358 01:01:29,280 --> 01:01:30,465 Jag vill avsluta linjen. 1359 01:01:30,465 --> 01:01:34,020 1360 01:01:34,020 --> 01:01:35,800 Så jag ska sätta i en kommentar. 1361 01:01:35,800 --> 01:01:38,430 Jag ska sätta in en printf (). 1362 01:01:38,430 --> 01:01:41,350 Och vad jag har att sätta in? 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 Vad har jag att avsluta det med? 1366 01:01:46,040 --> 01:01:47,100 Semikolon. 1367 01:01:47,100 --> 01:01:48,730 Okej. 1368 01:01:48,730 --> 01:01:52,880 >> Nu, ett av de riktigt viktiga saker är att se 1369 01:01:52,880 --> 01:01:56,720 varje gång du gör en ändring i koden, att du sparar det. 1370 01:01:56,720 --> 01:02:01,380 Om du inte har sparat din kod, du är kommer att märka en liten stjärna uppe. 1371 01:02:01,380 --> 01:02:03,420 Och den stjärnan säger att du har inte sparat denna kod. 1372 01:02:03,420 --> 01:02:07,790 >> Om jag sammanställer det just nu, är det inte kommer att återspegla något av dessa förändringar, 1373 01:02:07,790 --> 01:02:11,680 eftersom kompilatorn tittar på filen som är på skivan, inte den fil som är 1374 01:02:11,680 --> 01:02:13,790 öppnas i din editor. 1375 01:02:13,790 --> 01:02:14,290 Okej. 1376 01:02:14,290 --> 01:02:20,830 >> Så låt oss spara den och sedan går vi ända fram hit, kom tillbaka ut. 1377 01:02:20,830 --> 01:02:24,670 Kom ner till min terminal. 1378 01:02:24,670 --> 01:02:27,193 Och låt oss rensa rymden igen. 1379 01:02:27,193 --> 01:02:30,690 1380 01:02:30,690 --> 01:02:35,760 >> Och vi kan gå vidare och ytterligare tid att göra vår kanin program. 1381 01:02:35,760 --> 01:02:40,180 Och kör kanin. 1382 01:02:40,180 --> 01:02:42,500 Det fungerade inte heller. 1383 01:02:42,500 --> 01:02:43,950 Fel snedstreck. 1384 01:02:43,950 --> 01:02:52,280 Så om man tittar på vad jag har, ställde jag en / n där, men jag hade fel snedstreck. 1385 01:02:52,280 --> 01:02:56,190 >> Allt som datorn gör är mycket tydlig. 1386 01:02:56,190 --> 01:02:57,230 OK? 1387 01:02:57,230 --> 01:03:01,250 En litet misstag av skiljetecken, och plötsligt du inte får vad du vill. 1388 01:03:01,250 --> 01:03:01,750 Okej. 1389 01:03:01,750 --> 01:03:03,740 Så låt oss zooma ut igen. 1390 01:03:03,740 --> 01:03:04,410 Vi ska gå tillbaka. 1391 01:03:04,410 --> 01:03:07,930 Väl göra det mycket snabb reparation. 1392 01:03:07,930 --> 01:03:09,270 Vi kommer att sätta rätt snedstreck i. 1393 01:03:09,270 --> 01:03:10,570 Vi sparar den. 1394 01:03:10,570 --> 01:03:13,410 Vi kommer in igen. 1395 01:03:13,410 --> 01:03:16,730 >> Av någon anledning är det inte vara lycklig, men låt oss gå vidare 1396 01:03:16,730 --> 01:03:19,850 och vi ska gå tillbaka till terminalen här. 1397 01:03:19,850 --> 01:03:22,940 Rensa upp. 1398 01:03:22,940 --> 01:03:24,880 Vi kommer att zooma in. 1399 01:03:24,880 --> 01:03:28,410 Och en gång, ska vi göra bunny. 1400 01:03:28,410 --> 01:03:32,360 Och nu mycket riktigt, det fungerar. 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å låt oss försöka göra detta lite mer generellt. 1404 01:03:39,580 --> 01:03:46,750 Låt oss se om istället för att bara utskrift en viss ram, 1405 01:03:46,750 --> 01:03:49,610 Låt oss se om vi kan göra det här så att vi kan få alla 10 1406 01:03:49,610 --> 01:03:52,960 av dessa animerade ramar att vi ville ha. 1407 01:03:52,960 --> 01:03:56,550 Så återigen, låt oss ta detta ett steg i taget. 1408 01:03:56,550 --> 01:03:59,900 >> Låt oss först generalisera det, inte så att jag gör alla ramar, 1409 01:03:59,900 --> 01:04:03,990 men så gör jag något ram som jag kanske vill. 1410 01:04:03,990 --> 01:04:05,920 Så vad är skillnaden mellan ramarna? 1411 01:04:05,920 --> 01:04:07,377 Är kaninen samma sak? 1412 01:04:07,377 --> 01:04:07,960 PUBLIK: Ja. 1413 01:04:07,960 --> 01:04:08,390 BRIAN Scassellati: Ja. 1414 01:04:08,390 --> 01:04:09,370 Vad är skillnaden? 1415 01:04:09,370 --> 01:04:10,246 >> PUBLIK: Position. 1416 01:04:10,246 --> 01:04:11,870 BRIAN Scassellati: Dess läge, rätt? 1417 01:04:11,870 --> 01:04:15,590 Och hur gör jag kontrollera dess position? 1418 01:04:15,590 --> 01:04:17,340 Hur många prickar jag sätta i början 1419 01:04:17,340 --> 01:04:19,048 och hur många prickar Jag är sätta på slutet. 1420 01:04:19,048 --> 01:04:21,970 Så jag hade fem på början och fem i slutet. 1421 01:04:21,970 --> 01:04:28,320 >> Låt oss ersätta 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 Och jag kommer att skapa en för loop nu som kommer att säga, 1424 01:04:32,330 --> 01:04:37,800 Jag kommer att skriva ut ett visst antal av prickar i början. 1425 01:04:37,800 --> 01:04:39,600 Jag kommer att använda en variabel. 1426 01:04:39,600 --> 01:04:44,150 Låt oss säga, hur jag som räknaren i mitt slinga. 1427 01:04:44,150 --> 01:04:47,200 Och jag kommer att förklara den där uppe. 1428 01:04:47,200 --> 01:04:49,360 >> Och sedan i for-slingan Jag måste göra tre saker. 1429 01:04:49,360 --> 01:04:52,340 Det första jag behöver göra är jag måste initiera i. 1430 01:04:52,340 --> 01:04:56,570 Vad ska jag initiera det börjar bli? 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 >> Då måste jag säga, vad är termine skick? 1434 01:05:00,950 --> 01:05:03,020 När ska jag sluta? 1435 01:05:03,020 --> 01:05:05,983 Nå hur många punkter gör du vill skriva ut på den här? 1436 01:05:05,983 --> 01:05:06,921 >> PUBLIK: Five. 1437 01:05:06,921 --> 01:05:08,170 BRIAN Scassellati: Fem igen? 1438 01:05:08,170 --> 01:05:10,650 Vad sägs om låt oss göra något annorlunda, gjorde vi fem. 1439 01:05:10,650 --> 01:05:12,584 Låt oss visa att det är annorlunda. 1440 01:05:12,584 --> 01:05:13,250 TALARE 22: Två. 1441 01:05:13,250 --> 01:05:13,580 BRIAN Scassellati: Två. 1442 01:05:13,580 --> 01:05:14,080 OK. 1443 01:05:14,080 --> 01:05:17,760 Så om jag vill ha två punkter, vad ska jag sätta här? 1444 01:05:17,760 --> 01:05:19,140 >> PUBLIK: 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 Hur många gånger är att kommer att gå igenom? 1448 01:05:24,220 --> 01:05:28,469 Det kommer att gå igenom tre gånger, 0, 1 och 2, eller hur? 1449 01:05:28,469 --> 01:05:30,010 Okej, låt oss gå tillbaka till två. 1450 01:05:30,010 --> 01:05:31,570 Nu får vi två punkter. 1451 01:05:31,570 --> 01:05:35,800 Och vad gör jag vill göra varje gång jag går genom öglan? 1452 01:05:35,800 --> 01:05:38,657 Vad måste förändras varje gång jag går igenom? 1453 01:05:38,657 --> 01:05:39,850 >> TALARE 23: Lägg till en prick. 1454 01:05:39,850 --> 01:05:41,020 >> BRIAN Scassellati: Jag måste fortsätta. 1455 01:05:41,020 --> 01:05:41,978 Jag kommer att lägga till en punkt. 1456 01:05:41,978 --> 01:05:45,310 Jag kommer att skriva en punkt, varje gång genom slingan. 1457 01:05:45,310 --> 01:05:49,990 Men hur ska jag hålla reda på hur många gånger jag har varit genom öglan? 1458 01:05:49,990 --> 01:05:53,260 Jag använder mig att variabel, den räknaren. 1459 01:05:53,260 --> 01:05:57,110 >> Så varje gång igenom, jag kommer att inkrementera räknaren med ett. 1460 01:05:57,110 --> 01:06:00,670 Nu är det samma för mig som säger i = i + 1. 1461 01:06:00,670 --> 01:06:01,210 Det är ok. 1462 01:06:01,210 --> 01:06:04,653 Jag kunde göra det that-- Jag gillar stenografi, så jag kommer att säga att jag ++. 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 >> Låt oss göra samma sak här nere på botten. 1466 01:06:10,680 --> 01:06:11,846 Bara jag slags gjorde det en. 1467 01:06:11,846 --> 01:06:13,990 Jag kommer att låta er gör detta ett helt. 1468 01:06:13,990 --> 01:06:14,260 Okej. 1469 01:06:14,260 --> 01:06:15,426 >> Så vad ska jag skriva här? 1470 01:06:15,426 --> 01:06:17,170 Här är min for-loop. 1471 01:06:17,170 --> 01:06:23,162 Jag kommer att göra en printf () och jag kommer att göra det så att jag bara skriva ut en prick 1472 01:06:23,162 --> 01:06:25,740 på denna botten. 1473 01:06:25,740 --> 01:06:27,740 >> Vad ska jag skriva inuti denna för loop nu? 1474 01:06:27,740 --> 01:06:30,897 1475 01:06:30,897 --> 01:06:33,948 Jo, först och främst vad variabler ska jag använda? 1476 01:06:33,948 --> 01:06:35,430 >> TALARE 24: j. 1477 01:06:35,430 --> 01:06:36,880 >> BRIAN Scassellati: Jag skulle kunna använda j. 1478 01:06:36,880 --> 01:06:38,040 Kan jag använda samma en? 1479 01:06:38,040 --> 01:06:39,961 Kan jag använda mig igen? 1480 01:06:39,961 --> 01:06:40,460 Yeah. 1481 01:06:40,460 --> 01:06:45,531 Det är OK, eftersom Is som jag använder här uppe, 1482 01:06:45,531 --> 01:06:47,780 Jag behöver inte dem igen när Jag komma ner till denna punkt. 1483 01:06:47,780 --> 01:06:52,240 1484 01:06:52,240 --> 01:06:53,790 >> Så vad ska jag initiera jag till? 1485 01:06:53,790 --> 01:06:56,675 1486 01:06:56,675 --> 01:06:57,300 HÖGTALARE 25: 10. 1487 01:06:57,300 --> 01:06:58,567 BRIAN Scassellati: 0. 1488 01:06:58,567 --> 01:06:59,400 Vad ska jag kontrollera? 1489 01:06:59,400 --> 01:07:02,960 Hur många punkter måste jag nu i slutet om jag har två punkter i början? 1490 01:07:02,960 --> 01:07:05,820 1491 01:07:05,820 --> 01:07:09,165 Jag behöver åtta i slutet, så vad ska jag kolla, jag mindre than-- 1492 01:07:09,165 --> 01:07:12,645 >> Publik: Sju, åtta, nio. 1493 01:07:12,645 --> 01:07:14,020 BRIAN Scassellati: Jag hörde sju. 1494 01:07:14,020 --> 01:07:14,810 Jag hörde åtta. 1495 01:07:14,810 --> 01:07:15,970 Och jag hörde nio. 1496 01:07:15,970 --> 01:07:16,470 OK. 1497 01:07:16,470 --> 01:07:19,540 Så vi är alla i höger ball-- Jason säger 10. 1498 01:07:19,540 --> 01:07:21,550 OK. 1499 01:07:21,550 --> 01:07:25,920 >> Om att jag behövde två punkter för den första en, hur många gör 1500 01:07:25,920 --> 01:07:30,170 Jag-- och jag behöver åtta punkter för sist en-- Jag satte en två upp ovan, 1501 01:07:30,170 --> 01:07:31,743 vad ska jag lägga ner nedan? 1502 01:07:31,743 --> 01:07:32,570 >> PUBLIK: Åtta. 1503 01:07:32,570 --> 01:07:33,611 >> BRIAN Scassellati: Åtta. 1504 01:07:33,611 --> 01:07:35,695 Eftersom det kommer att räkna noll till sju. 1505 01:07:35,695 --> 01:07:38,490 Och det är åtta gånger genom slingan. 1506 01:07:38,490 --> 01:07:38,990 OK. 1507 01:07:38,990 --> 01:07:41,774 Och vad ska jag göra i slutet? 1508 01:07:41,774 --> 01:07:42,670 >> PUBLIK: i ++. 1509 01:07:42,670 --> 01:07:44,400 >> BRIAN Scassellati: i ++. 1510 01:07:44,400 --> 01:07:45,440 Okej. 1511 01:07:45,440 --> 01:07:48,260 Så det är ser ganska bra där. 1512 01:07:48,260 --> 01:07:50,620 Låt oss prova det och låt oss se vad det gör. 1513 01:07:50,620 --> 01:07:51,450 OK. 1514 01:07:51,450 --> 01:07:53,770 Så vi kommer att spara den. 1515 01:07:53,770 --> 01:07:54,940 Trevligt och sparas. 1516 01:07:54,940 --> 01:07:56,910 >> Vi kommer att zooma ut. 1517 01:07:56,910 --> 01:07:58,220 Vi ska försöka här i terminalen. 1518 01:07:58,220 --> 01:08:01,440 1519 01:08:01,440 --> 01:08:02,970 Vi kommer att zooma in. 1520 01:08:02,970 --> 01:08:05,416 Oj. 1521 01:08:05,416 --> 01:08:09,990 Vi ska, en gång, göra vår kanin program. 1522 01:08:09,990 --> 01:08:14,460 Och gå vidare och utföra kaninen. 1523 01:08:14,460 --> 01:08:15,980 Och det är det. 1524 01:08:15,980 --> 01:08:17,710 >> Så det är vår kanin. 1525 01:08:17,710 --> 01:08:25,130 Om det har två punkter i början och åtta punkter ut i slutet. 1526 01:08:25,130 --> 01:08:27,540 Alla fortfarande med mig? 1527 01:08:27,540 --> 01:08:28,770 OK. 1528 01:08:28,770 --> 01:08:29,580 >> Så vi byggde upp. 1529 01:08:29,580 --> 01:08:33,000 Vi byggde en kanin, en viss bildruta. 1530 01:08:33,000 --> 01:08:36,229 Nu har vi kunnat generalisera att för att bygga 1531 01:08:36,229 --> 01:08:38,390 mer, olika typer av ramar. 1532 01:08:38,390 --> 01:08:42,399 >> Nu går vi vidare, och har det generera inte bara en ram, 1533 01:08:42,399 --> 01:08:46,290 men låt oss generera 10 ramar, där vi långsamt 1534 01:08:46,290 --> 01:08:50,569 gör kaninen gå all vägen över fältet. 1535 01:08:50,569 --> 01:08:51,430 Okej. 1536 01:08:51,430 --> 01:08:53,660 >> Låt oss gå tillbaka. 1537 01:08:53,660 --> 01:08:54,839 Och vi ska försöka nu. 1538 01:08:54,839 --> 01:09:00,680 1539 01:09:00,680 --> 01:09:02,830 Så vad gör jag verkligen behöver ändra här? 1540 01:09:02,830 --> 01:09:06,139 1541 01:09:06,139 --> 01:09:07,180 Vad behöver jag för att ändra? 1542 01:09:07,180 --> 01:09:10,638 >> TALARE 26: måste du först ändra antalet punkter maximum 1543 01:09:10,638 --> 01:09:11,626 i början. 1544 01:09:11,626 --> 01:09:16,850 För om vi gör 10 punkter, det kommer att behöva upp till skala. 1545 01:09:16,850 --> 01:09:17,850 BRIAN Scassellati: Ja. 1546 01:09:17,850 --> 01:09:23,760 Så just nu har jag det slags kabelanslutet att alltid göra två punkter i början 1547 01:09:23,760 --> 01:09:27,890 och alltid gör åtta punkter i slutet. 1548 01:09:27,890 --> 01:09:30,660 >> Jag vill bygga en annan slinga, eller hur? 1549 01:09:30,660 --> 01:09:33,290 Eftersom jag inte vill bygga bara en kanin bild, 1550 01:09:33,290 --> 01:09:37,140 Jag vill bygga 10 kanin bilder. 1551 01:09:37,140 --> 01:09:41,500 Så jag behöver för att bygga en annan slinga, och när jag går igenom denna slinga, 1552 01:09:41,500 --> 01:09:44,660 Jag vill ändra hur många prickar jag ut i början 1553 01:09:44,660 --> 01:09:50,529 och hur många punkter jag ut i slutet, baserat på vilken cykel genom öglan 1554 01:09:50,529 --> 01:09:52,270 Jag är i. 1555 01:09:52,270 --> 01:09:52,770 Okej. 1556 01:09:52,770 --> 01:09:54,430 >> Så låt oss få en annan disk. 1557 01:09:54,430 --> 01:09:58,142 Någon har före nämnda j, så vi kommer att göra en annan j. 1558 01:09:58,142 --> 01:10:00,100 Och nu ska vi bygga en annan för loop. 1559 01:10:00,100 --> 01:10:02,650 1560 01:10:02,650 --> 01:10:06,200 >> Vad går insidan som loop? 1561 01:10:06,200 --> 01:10:09,060 Det här måste gå innanför slingan, eller hur? 1562 01:10:09,060 --> 01:10:11,190 Har kaninen har att gå in slingan? 1563 01:10:11,190 --> 01:10:13,390 Behöver jag en kanin i vart och ett av dessa 10 ramar? 1564 01:10:13,390 --> 01:10:14,099 >> PUBLIK: Uh-huh. 1565 01:10:14,099 --> 01:10:15,098 BRIAN Scassellati: Ja. 1566 01:10:15,098 --> 01:10:17,250 Jag vill ha en kanin i varje av de 10 ramar, eller hur? 1567 01:10:17,250 --> 01:10:20,531 Vad sägs om prickarna på Till slut behöver jag det? 1568 01:10:20,531 --> 01:10:21,030 OK. 1569 01:10:21,030 --> 01:10:22,550 >> Så jag kommer att dra in dem alla. 1570 01:10:22,550 --> 01:10:25,110 Jag kommer att belysa alla detta, och jag kommer att slå Tab. 1571 01:10:25,110 --> 01:10:28,590 Och det kommer att driva dem över lite, så att det är lätt för mig 1572 01:10:28,590 --> 01:10:32,010 att se vad som finns i slingan. 1573 01:10:32,010 --> 01:10:33,710 Och sen ska jag avsluta det. 1574 01:10:33,710 --> 01:10:35,850 Låt oss säga. 1575 01:10:35,850 --> 01:10:36,430 OK? 1576 01:10:36,430 --> 01:10:39,230 >> Nu, i denna slinga som Jag är building-- hoppsan, 1577 01:10:39,230 --> 01:10:43,810 göra det så att du kan see-- Jag har min disk j. 1578 01:10:43,810 --> 01:10:45,630 Jag började på 0. 1579 01:10:45,630 --> 01:10:47,829 Hur många gånger vill jag att gå igenom denna loop? 1580 01:10:47,829 --> 01:10:48,620 Publik: 10 gånger. 1581 01:10:48,620 --> 01:10:49,786 BRIAN Scassellati: 10 gånger. 1582 01:10:49,786 --> 01:10:51,402 Så vilket nummer ska jag sätta här? 1583 01:10:51,402 --> 01:10:52,880 >> Publik: 9, 10. 1584 01:10:52,880 --> 01:10:55,600 >> BRIAN Scassellati: 9, 10, Någon måste säga 11, eller hur? 1585 01:10:55,600 --> 01:10:58,190 1586 01:10:58,190 --> 01:11:01,585 Jag ville ha två punkter före och satte i mindre än 2. 1587 01:11:01,585 --> 01:11:03,810 Jag ville ha åtta punkter, Jag satte jag mindre än 8. 1588 01:11:03,810 --> 01:11:06,950 Nu vill jag gå igenom 10 gånger, så jag satte j mindre than-- 1589 01:11:06,950 --> 01:11:07,590 >> PUBLIK: 10. 1590 01:11:07,590 --> 01:11:08,610 >> BRIAN Scassellati: 10. 1591 01:11:08,610 --> 01:11:10,150 Det går vi. 1592 01:11:10,150 --> 01:11:13,360 Och vad gör jag i slutet för att j? 1593 01:11:13,360 --> 01:11:15,310 ++, Inkrementera den. 1594 01:11:15,310 --> 01:11:16,230 OK. 1595 01:11:16,230 --> 01:11:21,500 Nu, här är den knepiga delen, vad är kommer att hända just nu om jag gör det? 1596 01:11:21,500 --> 01:11:24,537 Kommer jag att skriva ut 10 bildrutor? 1597 01:11:24,537 --> 01:11:26,370 TALARE 27: Jag tror de alla kommer att vara densamma. 1598 01:11:26,370 --> 01:11:28,453 BRIAN Scassellati: De kommer alla vara samma, eller hur? 1599 01:11:28,453 --> 01:11:31,750 Eftersom alla av dem pågår fortfarande att sätta två punkter i början. 1600 01:11:31,750 --> 01:11:34,162 Men jag vill inte att de alla till har två prickar början. 1601 01:11:34,162 --> 01:11:35,870 Hur många punkter gör jag vill i början? 1602 01:11:35,870 --> 01:11:39,097 1603 01:11:39,097 --> 01:11:40,020 >> PUBLIK: Ändra. 1604 01:11:40,020 --> 01:11:42,840 >> BRIAN Scassellati: Jag vill att det ska förändras, eller hur? 1605 01:11:42,840 --> 01:11:46,588 Så vad har jag här som är föränderliga varje gång slingan går igenom? 1606 01:11:46,588 --> 01:11:48,242 >> PUBLIK: Antal punkter, j. 1607 01:11:48,242 --> 01:11:49,950 BRIAN Scassellati: j, antalet punkter. 1608 01:11:49,950 --> 01:11:54,782 Så jag kan ändra detta är j. 1609 01:11:54,782 --> 01:11:59,190 Första gången genom loop, vad som kommer att bli? 1610 01:11:59,190 --> 01:12:01,700 Vad gör jag satt j till först? 1611 01:12:01,700 --> 01:12:02,420 >> PUBLIK: 0. 1612 01:12:02,420 --> 01:12:05,700 >> BRIAN Scassellati: Så hur många gånger jag kommer att göra detta? 1613 01:12:05,700 --> 01:12:06,750 0. 1614 01:12:06,750 --> 01:12:11,750 Den andra gången genom slingan, j: s kommer att bli en eftersom jag öka det. 1615 01:12:11,750 --> 01:12:14,180 Hur många prickar ska jag skriva ut? 1616 01:12:14,180 --> 01:12:15,100 1. 1617 01:12:15,100 --> 01:12:19,904 Tredje gången genom slingan, hur många prickar ska jag skriva ut? 1618 01:12:19,904 --> 01:12:20,587 >> PUBLIK: Tre. 1619 01:12:20,587 --> 01:12:22,170 BRIAN Scassellati: j kommer att bli tre. 1620 01:12:22,170 --> 01:12:24,890 Hur många prickar ska jag skriva ut? 1621 01:12:24,890 --> 01:12:26,817 Åh, förlåt, j kommer att bli två. 1622 01:12:26,817 --> 01:12:28,233 Hur många prickar ska jag skriva ut? 1623 01:12:28,233 --> 01:12:28,980 >> PUBLIK: 2. 1624 01:12:28,980 --> 01:12:29,855 >> BRIAN Scassellati: 2. 1625 01:12:29,855 --> 01:12:32,460 OK, så jag kommer att hålla uppräkning att när vi går längs. 1626 01:12:32,460 --> 01:12:33,460 Vad sägs om där nere? 1627 01:12:33,460 --> 01:12:34,310 Vad går här nere? 1628 01:12:34,310 --> 01:12:38,080 Jag vill inte ha 8 alltid i slutet längre? 1629 01:12:38,080 --> 01:12:39,269 >> HÖGTALARE 28: 10. 1630 01:12:39,269 --> 01:12:40,685 BRIAN Scassellati: Jag vill ha 10 punkter? 1631 01:12:40,685 --> 01:12:43,440 1632 01:12:43,440 --> 01:12:44,620 Jag vill att det ska ändra, alltför. 1633 01:12:44,620 --> 01:12:47,469 Så hur gör jag vill att det ska förändras? 1634 01:12:47,469 --> 01:12:49,167 >> PUBLIK: [OHÖRBAR]. 1635 01:12:49,167 --> 01:12:51,750 BRIAN Scassellati: Tja, om jag har fem punkter i början, 1636 01:12:51,750 --> 01:12:53,293 Hur många dot: s får jag i slutet? 1637 01:12:53,293 --> 01:12:54,020 >> PUBLIK: Five. 1638 01:12:54,020 --> 01:12:55,630 >> BRIAN Scassellati: Om jag har sex punkter i början, 1639 01:12:55,630 --> 01:12:56,875 Hur många får jag i slutet? 1640 01:12:56,875 --> 01:12:57,500 PUBLIK: Fyra. 1641 01:12:57,500 --> 01:12:58,950 BRIAN Scassellati: Om jag fick sju punkter i början, 1642 01:12:58,950 --> 01:13:00,204 Hur många får jag i slutet? 1643 01:13:00,204 --> 01:13:00,870 PUBLIK: Tre. 1644 01:13:00,870 --> 01:13:03,161 BRIAN Scassellati: Om jag har fick j prickar i början, 1645 01:13:03,161 --> 01:13:04,790 Hur många får jag i slutet? 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å låt oss prova det ut. 1649 01:13:10,390 --> 01:13:13,180 >> Så jag kommer att rädda vår kanin program. 1650 01:13:13,180 --> 01:13:16,270 Än en gång vi ska zooma ut. 1651 01:13:16,270 --> 01:13:19,090 Vi ska gå ner till vår terminal. 1652 01:13:19,090 --> 01:13:20,180 Vi kommer att klara det. 1653 01:13:20,180 --> 01:13:23,410 Och zooma in. 1654 01:13:23,410 --> 01:13:26,410 Vi ska göra vårt bunny program igen. 1655 01:13:26,410 --> 01:13:27,690 Och vi kommer att köra den. 1656 01:13:27,690 --> 01:13:30,462 1657 01:13:30,462 --> 01:13:32,090 Hoppsan. 1658 01:13:32,090 --> 01:13:34,580 >> Vänta, låt oss zooma ut. 1659 01:13:34,580 --> 01:13:36,860 Fick jag 10 bildrutor? 1660 01:13:36,860 --> 01:13:38,970 Bra, hur många kaniner ser jag där uppe? 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 Jag fick 10 bildrutor. 1663 01:13:44,820 --> 01:13:46,375 Är de alla samma? 1664 01:13:46,375 --> 01:13:47,000 PUBLIK: Ja. 1665 01:13:47,000 --> 01:13:48,740 Nej. 1666 01:13:48,740 --> 01:13:50,000 >> BRIAN Scassellati: Nej 1667 01:13:50,000 --> 01:13:55,050 Det första en, den kanin är långt till vänster. 1668 01:13:55,050 --> 01:13:57,541 Och här borta, är kaninen långt på 1669 01:13:57,541 --> 01:13:58,290 TALARE 29: Rätt. 1670 01:13:58,290 --> 01:14:00,502 BRIAN Scassellati: Så, vad gjorde jag glömmer att göra? 1671 01:14:00,502 --> 01:14:01,750 TALARE 30: Starta en ny rad. 1672 01:14:01,750 --> 01:14:04,041 BRIAN Scassellati: Jag glömde att starta en ny linje, igen. 1673 01:14:04,041 --> 01:14:05,270 Samma misstag som jag gjorde förut. 1674 01:14:05,270 --> 01:14:07,120 Okej, låt oss fixa det. 1675 01:14:07,120 --> 01:14:11,690 Nu, jag har fortfarande koden i där för att göra en ny rad. 1676 01:14:11,690 --> 01:14:13,899 Varför fungerade det inte? 1677 01:14:13,899 --> 01:14:15,440 TALARE 31: Det är inte inne i slingan. 1678 01:14:15,440 --> 01:14:17,710 BRIAN Scassellati: Åh, det är inte inuti slingan. 1679 01:14:17,710 --> 01:14:18,520 Det är rätt. 1680 01:14:18,520 --> 01:14:20,150 Det sitter här utanför. 1681 01:14:20,150 --> 01:14:23,470 1682 01:14:23,470 --> 01:14:29,050 Och för slingan är allt det är insidan som text. 1683 01:14:29,050 --> 01:14:35,500 >> Så jag kommer att flytta detta inne i loopen. 1684 01:14:35,500 --> 01:14:39,410 Och jag ska Tab framför det till visar att det är på rätt plats. 1685 01:14:39,410 --> 01:14:42,020 Och nu ska vi spara det igen. 1686 01:14:42,020 --> 01:14:44,350 Vi kommer att zooma ut. 1687 01:14:44,350 --> 01:14:45,770 Vi kommer att gå över till vår terminal. 1688 01:14:45,770 --> 01:14:48,330 1689 01:14:48,330 --> 01:14:50,360 Zooma in. 1690 01:14:50,360 --> 01:14:54,050 Vi kommer att göra om vårt bunny program. 1691 01:14:54,050 --> 01:14:59,070 Och nu, nu har vi fått våra 10 bildrutor. 1692 01:14:59,070 --> 01:15:00,190 >> [APPLÅDER] 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 Här är vår kapslade loopar. 1696 01:15:08,370 --> 01:15:13,140 Vi skulle kunna generera i inre slinga hur många punkter som jag ville 1697 01:15:13,140 --> 01:15:15,320 att skriva ut i början, i slutet. 1698 01:15:15,320 --> 01:15:21,570 Och den yttre slingan styrs hur många bilder jag byggde. 1699 01:15:21,570 --> 01:15:26,340 Vi började med en liten kärna av problemet, 1700 01:15:26,340 --> 01:15:30,320 och vi byggde ut från den punkten. 1701 01:15:30,320 --> 01:15:30,820 Okej. 1702 01:15:30,820 --> 01:15:33,500 >> Låt oss göra ett steg. 1703 01:15:33,500 --> 01:15:35,040 Är du redo? 1704 01:15:35,040 --> 01:15:38,800 Det finns en sak här där vi har faktiskt typ av fick 1705 01:15:38,800 --> 01:15:42,180 mer komplicerade än vi behöver. 1706 01:15:42,180 --> 01:15:44,700 Låt oss ta en titt. 1707 01:15:44,700 --> 01:15:52,050 Så i vårt kanin program, om jag zooma ut här, 1708 01:15:52,050 --> 01:15:54,980 Jag faktiskt göra en del av samma sak om och om igen. 1709 01:15:54,980 --> 01:15:59,032 Vad gör jag det är typ av samma sak upprepades två gånger? 1710 01:15:59,032 --> 01:16:00,310 >> TALARE 32: Skriv prickar. 1711 01:16:00,310 --> 01:16:03,526 >> BRIAN Scassellati: Ja Jag skriva ut dessa punkter två gånger. 1712 01:16:03,526 --> 01:16:05,710 Egentligen skulle jag ha den här kommentaren här nere. 1713 01:16:05,710 --> 01:16:09,037 Jag skriva ut vissa punkter på början, ända fram här. 1714 01:16:09,037 --> 01:16:10,620 Och då jag skriva ut vissa punkter i slutet. 1715 01:16:10,620 --> 01:16:14,694 Och jag gör typ av exakt samma sak. 1716 01:16:14,694 --> 01:16:17,110 Vad vi kommer att börja arbetar inom de närmaste veckorna 1717 01:16:17,110 --> 01:16:23,440 är att kunna ta dessa block av kod som vi använder om och om igen, 1718 01:16:23,440 --> 01:16:25,800 och genom en process kallas abstraktion, 1719 01:16:25,800 --> 01:16:31,100 vi kommer att dra ut dem och skriva dem en gång så att vi sedan kan 1720 01:16:31,100 --> 01:16:35,130 återanvända dem om och om igen. 1721 01:16:35,130 --> 01:16:37,210 Så låt oss prova det. 1722 01:16:37,210 --> 01:16:38,220 Är du redo? 1723 01:16:38,220 --> 01:16:42,200 >> Vi kommer att ta detta block av kod. 1724 01:16:42,200 --> 01:16:45,280 Och jag kommer att ta det därifrån. 1725 01:16:45,280 --> 01:16:50,530 Och jag kommer att define-- ned på botten, 1726 01:16:50,530 --> 01:16:53,130 Jag kommer att skriva en ny funktion. 1727 01:16:53,130 --> 01:16:54,750 Det kommer inte att återvända något. 1728 01:16:54,750 --> 01:16:58,550 Och jag kommer att kalla det printDots. 1729 01:16:58,550 --> 01:17:01,530 >> Det kommer att ta ett argument, ett heltal som 1730 01:17:01,530 --> 01:17:04,920 säger howManyDots Jag borde skriva ut. 1731 01:17:04,920 --> 01:17:09,310 1732 01:17:09,310 --> 01:17:17,720 Och nu i stället för att skriva ut j prickar, jag print berätta howManyDots jag ska skriva ut. 1733 01:17:17,720 --> 01:17:21,581 >> Och det finns ett litet problem här. 1734 01:17:21,581 --> 01:17:22,580 Någon som vet vad det är? 1735 01:17:22,580 --> 01:17:27,270 1736 01:17:27,270 --> 01:17:31,505 Vad har jag som är listade här som inte är definierat? 1737 01:17:31,505 --> 01:17:34,165 1738 01:17:34,165 --> 01:17:35,090 >> PUBLIK: [OHÖRBAR] 1739 01:17:35,090 --> 01:17:37,465 >> BRIAN Scassellati: Nå hur många prickar definieras rätt upp 1740 01:17:37,465 --> 01:17:40,584 här, men jag använder den variabeln i. 1741 01:17:40,584 --> 01:17:43,750 Så jag kommer att ta att variabeln i och jag kommer att definiera det i här 1742 01:17:43,750 --> 01:17:44,610 stället. 1743 01:17:44,610 --> 01:17:49,683 >> Så nu det kommer att stay-- oops, fick Caps Lock på somehow-- jag 1744 01:17:49,683 --> 01:17:52,060 kommer att hålla nere i här. 1745 01:17:52,060 --> 01:17:57,050 >> Så nu här är min lilla funktion eller sub-rutin, och det står, 1746 01:17:57,050 --> 01:18:00,640 hur många prickar ska jag skriva ut? 1747 01:18:00,640 --> 01:18:05,300 Och det kommer att gå igenom denna loop och skriva ut dem om och om igen. 1748 01:18:05,300 --> 01:18:10,940 >> Jag kan sedan ändra mitt program här. 1749 01:18:10,940 --> 01:18:12,540 Och vad jag kallar denna funktion? 1750 01:18:12,540 --> 01:18:13,960 printDots. 1751 01:18:13,960 --> 01:18:17,060 Så jag ringer printDots. 1752 01:18:17,060 --> 01:18:21,530 Hur många punkter jag vill skriva ut första gången före kaninen? 1753 01:18:21,530 --> 01:18:22,030 PUBLIK: j. 1754 01:18:22,030 --> 01:18:23,230 BRIAN Scassellati: j. 1755 01:18:23,230 --> 01:18:27,110 Hur många punkter jag vill skriva ut i slutet, efter 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 >> Och det finns en sak som jag saknar. 1760 01:18:38,010 --> 01:18:43,740 Som du såg i föreläsning idag, vi kommer att förklara printDots 1761 01:18:43,740 --> 01:18:52,430 upp ovan för att ge 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å vad jag har gjort är att jag har försökt att isolera det åter del av kod 1765 01:19:03,530 --> 01:19:06,430 att jag har gjort om och om igen. 1766 01:19:06,430 --> 01:19:11,120 Och jag har försökt att dra ut så att allt som finns i ett rum. 1767 01:19:11,120 --> 01:19:16,810 På så sätt, om jag har fel någonstans, Jag behöver bara fixa det på ett ställe. 1768 01:19:16,810 --> 01:19:17,310 Okej. 1769 01:19:17,310 --> 01:19:18,470 >> Så låt oss spara den. 1770 01:19:18,470 --> 01:19:20,950 Och låt oss se till att det fungerar. 1771 01:19:20,950 --> 01:19:22,050 Så låt oss gå ut. 1772 01:19:22,050 --> 01:19:25,200 Vi ska gå igen till vår terminal. 1773 01:19:25,200 --> 01:19:27,960 Vi kommer att zooma in. 1774 01:19:27,960 --> 01:19:31,010 Vi kommer att göra det bunny process. 1775 01:19:31,010 --> 01:19:32,380 >> Oh. 1776 01:19:32,380 --> 01:19:34,800 Och det har gett mig en varning. 1777 01:19:34,800 --> 01:19:37,070 Vad det säger mig? 1778 01:19:37,070 --> 01:19:39,870 Väl i någon av dessa gånger, du alltid vill 1779 01:19:39,870 --> 01:19:44,170 för att bläddra fram till den allra första error-- nu på den här, har jag bara fick ett. 1780 01:19:44,170 --> 01:19:52,700 >> Det säger mig i bunny.c, on line 8, kolumn 9, det finns ett problem. 1781 01:19:52,700 --> 01:19:58,650 Den säger, du har förklarat detta variabel i och du inte har använt det. 1782 01:19:58,650 --> 01:20:02,230 >> Nu normalt, det är inte det värsta felet. 1783 01:20:02,230 --> 01:20:04,300 Det är en lätt att åtgärda. 1784 01:20:04,300 --> 01:20:07,550 Och i själva verket kan vi gå igen. 1785 01:20:07,550 --> 01:20:09,910 Vi kan gå tillbaka till bunny. 1786 01:20:09,910 --> 01:20:13,010 Och i detta fall, alla vi behöver göra är att bli av med i, 1787 01:20:13,010 --> 01:20:16,630 eftersom vi inte använder Jag inom huvud längre. 1788 01:20:16,630 --> 01:20:19,860 Vi bara använda det inom vårt under rutin. 1789 01:20:19,860 --> 01:20:22,777 >> Så låt oss spara den. 1790 01:20:22,777 --> 01:20:23,360 Vi ska gå tillbaka. 1791 01:20:23,360 --> 01:20:26,760 1792 01:20:26,760 --> 01:20:28,630 Och zooma in. 1793 01:20:28,630 --> 01:20:30,700 Vi ska ännu en gång göra bunny. 1794 01:20:30,700 --> 01:20:33,810 1795 01:20:33,810 --> 01:20:36,530 Och det är återigen våra 10 bildrutor. 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 >> Varje gång du har gett en procedure-- Ja. 1799 01:20:43,190 --> 01:20:44,690 TALARE 33: Jag har en-- jag är förvirrad. 1800 01:20:44,690 --> 01:20:45,892 Kan du gå tillbaka till koden? 1801 01:20:45,892 --> 01:20:46,850 BRIAN Scassellati: Japp. 1802 01:20:46,850 --> 01:20:50,730 1803 01:20:50,730 --> 01:20:54,367 >> TALARE 33: Så när du skrev prototypen, argumentet du 1804 01:20:54,367 --> 01:20:56,550 hade namngav hette 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 >> HÖGTALARE 33: --called dem något annorlunda, jag förstår inte. 1808 01:20:59,140 --> 01:21:00,240 >> BRIAN Scassellati: Varför är de olika. 1809 01:21:00,240 --> 01:21:01,780 Så det är en stor fråga. 1810 01:21:01,780 --> 01:21:08,250 Så frågan var, upp Här skrev jag howmany, 1811 01:21:08,250 --> 01:21:12,380 och nere, skrev jag howManyDots. 1812 01:21:12,380 --> 01:21:15,590 >> Anledningen är att i din prototyp, det är faktiskt inte uppmärksam 1813 01:21:15,590 --> 01:21:17,090 till de namn som du sätter in. 1814 01:21:17,090 --> 01:21:20,530 Allt som verkligen bryr sig om är att det är ett heltal. 1815 01:21:20,530 --> 01:21:23,080 Det vill veta formuläret av vad du lägger in. 1816 01:21:23,080 --> 01:21:31,560 >> Nu stylistically-- oops-- vad jag borde gör, är jag vilja göra dessa match. 1817 01:21:31,560 --> 01:21:33,150 OK. 1818 01:21:33,150 --> 01:21:36,430 Eftersom det kommer att hålla det lättare för mig att komma ihåg. 1819 01:21:36,430 --> 01:21:38,390 Men det var mitt misstag Yeah. 1820 01:21:38,390 --> 01:21:47,620 >> HÖGTALARE 34: Och så för prototyp för att arbeta, bara 1821 01:21:47,620 --> 01:21:50,510 skriver den linjen, skriver prototypen, 1822 01:21:50,510 --> 01:21:53,932 gör denna funktion som kommer precis under det att gå till slutet 1823 01:21:53,932 --> 01:21:55,140 och hämta vad det betyder? 1824 01:21:55,140 --> 01:21:58,480 >> BRIAN Scassellati: Vad det innebär är när kompilatorn går igenom, 1825 01:21:58,480 --> 01:22:01,930 den går från toppen av koden till botten. 1826 01:22:01,930 --> 01:22:05,430 Och vad denna prototyp är, är det är i princip ett löfte. 1827 01:22:05,430 --> 01:22:09,570 >> Den säger, det kommer att bli en funktion som definieras någonstans. 1828 01:22:09,570 --> 01:22:11,880 Det kommer att bli kallade printDots. 1829 01:22:11,880 --> 01:22:15,110 Och det kommer att ta ett argument det kommer att vara ett heltal 1830 01:22:15,110 --> 01:22:18,590 och det kommer att återvända ingenting, void typ. 1831 01:22:18,590 --> 01:22:19,310 OK. 1832 01:22:19,310 --> 01:22:22,950 Jag lovar dig att det kommer att bli definieras någonstans på vägen. 1833 01:22:22,950 --> 01:22:25,590 Men varje gång du ser att när du går ner 1834 01:22:25,590 --> 01:22:28,710 genom resten av mitt huvudsakliga funktion, jag vill 1835 01:22:28,710 --> 01:22:33,800 du att behandla det som en funktion som tar ett heltal ingång. 1836 01:22:33,800 --> 01:22:37,970 >> Och så när kompilatorn går ner genom detta, ser det det löftet. 1837 01:22:37,970 --> 01:22:40,220 Och när det blir ner, håller kommer, fortsätter att gå, 1838 01:22:40,220 --> 01:22:43,060 den finner första gången printDots nämns. 1839 01:22:43,060 --> 01:22:46,910 Och den säger, Åh, du ger mig j. j är ett heltal. 1840 01:22:46,910 --> 01:22:49,570 >> Tja du lovade mig som skulle vara ett heltal och det är rätt. 1841 01:22:49,570 --> 01:22:51,370 Det är ok. 1842 01:22:51,370 --> 01:22:53,880 Och slutligen, ned längst ned, 1843 01:22:53,880 --> 01:22:58,340 innan jag kommer till slutet av min fil, jag gör bra på mitt löfte 1844 01:22:58,340 --> 01:22:59,896 och jag definierar det. 1845 01:22:59,896 --> 01:23:01,868 OK? 1846 01:23:01,868 --> 01:23:06,320 >> HÖGTALARE 35: Så saves-- det Programmet kommer att spara tomma utrymmen 1847 01:23:06,320 --> 01:23:09,570 att det går fram och fyller i slutet? 1848 01:23:09,570 --> 01:23:12,140 >> BRIAN Scassellati: Det är inte om minnesallokering. 1849 01:23:12,140 --> 01:23:16,800 Det är faktiskt bara om vad typ du förväntar sig att se. 1850 01:23:16,800 --> 01:23:19,340 Om denna sak har en argument, eller fem argument? 1851 01:23:19,340 --> 01:23:23,590 Bör ha det heltal vara ges till den eller strängar? 1852 01:23:23,590 --> 01:23:25,780 Det är allt det ser göra är att kontrollera, 1853 01:23:25,780 --> 01:23:29,303 du ger mig rätt sorts argument. 1854 01:23:29,303 --> 01:23:31,560 OK? 1855 01:23:31,560 --> 01:23:32,300 Okej. 1856 01:23:32,300 --> 01:23:38,570 >> Låt mig avsluta med en annan bit att titta på. 1857 01:23:38,570 --> 01:23:44,850 ASCII-konst är inte den stora modellen av animation som det är idag. 1858 01:23:44,850 --> 01:23:50,850 Men vissa människor naturligtvis ta saker och de driva det till sina ytterligheter. 1859 01:23:50,850 --> 01:23:56,790 >> Detta är, som David visade i föreläsning, en bit kod 1860 01:23:56,790 --> 01:24:02,150 att du bör under inga omständigheter Försök att duplicera er. 1861 01:24:02,150 --> 01:24:05,260 Eftersom det är fruktansvärt stilistiskt. 1862 01:24:05,260 --> 01:24:11,180 I själva verket är det utformad för att vara så svårt som möjligt att läsa. 1863 01:24:11,180 --> 01:24:11,680 OK. 1864 01:24:11,680 --> 01:24:16,210 >> Så, för att göra igen, låt oss zooma in här. 1865 01:24:16,210 --> 01:24:20,120 Jag kommer att gå nu, ändra katalog. 1866 01:24:20,120 --> 01:24:24,050 Jag kommer att gå upp en nivå, tillbaka till min arbetsyta. 1867 01:24:24,050 --> 01:24:29,760 Jag kommer då att ändra katalog till detta annan katalog som jag har skapat. 1868 01:24:29,760 --> 01:24:36,190 >> Och detta är International Förvrängd C Programming Contest. 1869 01:24:36,190 --> 01:24:40,650 Förvrängd medel som hårt som möjligt att förstå. 1870 01:24:40,650 --> 01:24:44,150 Så snälla, inte vara rädd om du ser på detta och gå, kan jag inte läsa det. 1871 01:24:44,150 --> 01:24:46,350 Det är poängen med det. 1872 01:24:46,350 --> 01:24:47,700 OK? 1873 01:24:47,700 --> 01:24:52,770 >> Men, har vi här underbart program som jag 1874 01:24:52,770 --> 01:24:57,180 kommer att titta på genom att bara skriva mer. 1875 01:24:57,180 --> 01:25:01,890 Och låt oss se om jag kan zooma ut bara lite, så att du kan se det 1876 01:25:01,890 --> 01:25:03,940 >> Och detta är programmet. 1877 01:25:03,940 --> 01:25:08,080 Den är uppkallad endo.c. 1878 01:25:08,080 --> 01:25:14,850 Och det ser ut så här hink med typ av bokstäverna F-L-U-I-D i den. 1879 01:25:14,850 --> 01:25:16,440 >> Detta är faktiskt ett program. 1880 01:25:16,440 --> 01:25:20,260 Den är skriven i de mest obskyra sätt att författarna kan tänkas 1881 01:25:20,260 --> 01:25:21,760 Skriv det. 1882 01:25:21,760 --> 01:25:29,210 Men det är en underbar liten bit som genererar en modell för fluiddynamik. 1883 01:25:29,210 --> 01:25:34,870 >> Och så ska vi ge denna modell en ingång som 1884 01:25:34,870 --> 01:25:42,520 ser ut så här, av en staired set av behållare 1885 01:25:42,520 --> 01:25:45,820 med en del vätska, några flytande, upp på toppen. 1886 01:25:45,820 --> 01:25:48,790 Och vi kommer att ha det simulera vad som händer med det. 1887 01:25:48,790 --> 01:25:52,415 >> Så jag ringer denna funktion, endo. 1888 01:25:52,415 --> 01:25:59,000 Och jag ska ge det som indatafil som jag har haft. 1889 01:25:59,000 --> 01:26:02,830 Och det är vår symbol för ASCII-konst. 1890 01:26:02,830 --> 01:26:08,960 En fullständig vätska dynamisk simulator kör på bara några rader kod. 1891 01:26:08,960 --> 01:26:13,750 >> Nu vad är faktiskt riktigt häpnadsväckande om denna lilla program 1892 01:26:13,750 --> 01:26:17,280 är att jag vill stoppa det nu, så jag kommer att använda det kommando? 1893 01:26:17,280 --> 01:26:18,660 >> PUBLIK: 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å jag kommer att använda Ctrl-C. C Det ska stoppa det. 1896 01:26:22,960 --> 01:26:25,330 Jag ska rensa igen. 1897 01:26:25,330 --> 01:26:31,210 Och nu ska jag åberopa program, köra programmet, 1898 01:26:31,210 --> 01:26:33,740 använder sig som indata. 1899 01:26:33,740 --> 01:26:36,760 1900 01:26:36,760 --> 01:26:42,700 >> Och vi får se vätske dynamiska simulering av den smälta. 1901 01:26:42,700 --> 01:26:43,830 OK. 1902 01:26:43,830 --> 01:26:48,180 Please do not let programmet vara det som förvirrar dig. 1903 01:26:48,180 --> 01:26:52,220 Det är bara så att vi kan hamna på något häftigt och intressant. 1904 01:26:52,220 --> 01:26:53,930 OK. 1905 01:26:53,930 --> 01:26:56,330 >> Lycka till med dina problem uppsättningar. 1906 01:26:56,330 --> 01:26:59,030 Vi ska vara glada att svara frågor efter klass. 1907 01:26:59,030 --> 01:27:01,180 Tack mycket, killar. 1908 01:27:01,180 --> 01:27:02,793