1 00:00:00,000 --> 00:00:15,059 >> [MUSIK AFSPILLER] 2 00:00:15,059 --> 00:00:19,170 >> Dette er CS50-- Harvard Universitetets introduktion 3 00:00:19,170 --> 00:00:22,070 til den intellektuelle virksomheder af datalogi 4 00:00:22,070 --> 00:00:23,800 og kunsten at programmering. 5 00:00:23,800 --> 00:00:27,020 Og mit navn er David Malan og Jeg sad lige og tænkte i morges, 6 00:00:27,020 --> 00:00:33,120 det har været forbavsende 20 år i dag siden jeg sidst sad hvor du fyre gøre nu. 7 00:00:33,120 --> 00:00:33,840 >> Det var 1996. 8 00:00:33,840 --> 00:00:37,550 Jeg var en sophomore, og jeg tog CS50 for allerførste gang. 9 00:00:37,550 --> 00:00:40,890 Og jeg havde ikke engang fået op nerven at tage det selv freshman år, 10 00:00:40,890 --> 00:00:42,500 dels på grund af tiden. 11 00:00:42,500 --> 00:00:44,782 Datalogi til mig var slags kan lide, meh. 12 00:00:44,782 --> 00:00:46,990 Jeg var lidt af en nørd vokser op, men jeg har ikke rigtig 13 00:00:46,990 --> 00:00:49,180 har nogen intellektuel interesse i hvad syntes 14 00:00:49,180 --> 00:00:51,920 til bare at være en hel masse mennesker programmering hele tiden. 15 00:00:51,920 --> 00:00:53,904 >> Og jeg var bange for at være ærlig. 16 00:00:53,904 --> 00:00:56,820 Kurset og datalogi mere havde generelt og i nogen grad, 17 00:00:56,820 --> 00:01:01,230 stadig har dette ry af et felt til pas på, hvis blot fordi så mange af os 18 00:01:01,230 --> 00:01:04,410 er bekendt med det og usikker på det. 19 00:01:04,410 --> 00:01:08,480 Og det var virkelig ikke før jeg handlede denne klasse, sophomore fall-- 20 00:01:08,480 --> 00:01:10,880 og selv da, jeg kun tilmeldt fordi professor-- 21 00:01:10,880 --> 00:01:13,950 en af ​​mine første mentorer, Brian Kernighan nu på Princeton-- 22 00:01:13,950 --> 00:01:15,700 tilladt mig at tage klassen pass mislykkes. 23 00:01:15,700 --> 00:01:18,020 Og ja, det er derfor dag vi tillader og tilskynder 24 00:01:18,020 --> 00:01:20,030 studerende til at tage denne klasse sad / unsat. 25 00:01:20,030 --> 00:01:22,040 >> Og først derefter ved slutningen af ​​semestret 26 00:01:22,040 --> 00:01:24,870 gjorde jeg indser ligesom, wow, dette var ikke sådan et ukendt område. 27 00:01:24,870 --> 00:01:26,850 Dette var faktisk en meget bemyndigelse felt, 28 00:01:26,850 --> 00:01:28,970 og mere spændende, især senere, 29 00:01:28,970 --> 00:01:32,809 da jeg tog kurser i Dramatic Arts 101 og latin A 30 00:01:32,809 --> 00:01:34,600 og derefter til sidst grad skole arkæologi, 31 00:01:34,600 --> 00:01:37,860 jeg virkelig begynde at se skæringspunkter dette område, computer 32 00:01:37,860 --> 00:01:41,979 videnskab, med humaniora, naturvidenskab, kunst, medicin, 33 00:01:41,979 --> 00:01:42,520 og lignende. 34 00:01:42,520 --> 00:01:44,420 Og så det er, hvad der er lige så pæn om datalogi 35 00:01:44,420 --> 00:01:46,930 i sidste ende, som vi håber du vil see-- er dens anvendelighed 36 00:01:46,930 --> 00:01:50,280 til disse andre områder, og hvordan du kan tage nogle af nutidens og semesters 37 00:01:50,280 --> 00:01:53,070 ideer og praktiske færdigheder tilbage til dit eget domæne, 38 00:01:53,070 --> 00:01:58,200 og faktisk udforske dette kryds af de liberale kunst og videnskab. 39 00:01:58,200 --> 00:02:02,690 >> Så 73% af jer, hvis sidste år er nogen indikation, 40 00:02:02,690 --> 00:02:04,390 har aldrig taget en CS kursus før. 41 00:02:04,390 --> 00:02:06,389 Så hvis du ligesom mig, du er følelse en lille smule 42 00:02:06,389 --> 00:02:09,190 bange, eller helt ærligt du ikke virkelig sikker på, hvorfor du er selv her. 43 00:02:09,190 --> 00:02:11,510 Måske du bare fulgte nogle venner over til Sanders lige nu. 44 00:02:11,510 --> 00:02:12,490 Det er helt fint. 45 00:02:12,490 --> 00:02:15,059 Målet her er at tilslutte dig og berolige dig 46 00:02:15,059 --> 00:02:17,100 at hvis man ser på til venstre og til højre, 47 00:02:17,100 --> 00:02:21,480 du kommer til at se klassekammerater med så lidt eller så meget erfaring 48 00:02:21,480 --> 00:02:22,890 at du selv måtte have. 49 00:02:22,890 --> 00:02:25,280 Og ja, vi deler nogle statistikker senere i dag 50 00:02:25,280 --> 00:02:28,120 som til hvad demografi af klassen typisk ser ud. 51 00:02:28,120 --> 00:02:31,440 >> Og som tilføjet reassurance-- og dette vi kan betyde, siden jeg overtog kurset 52 00:02:31,440 --> 00:02:33,252 nogle år ago-- i kursets pensum 53 00:02:33,252 --> 00:02:35,460 er denne-- at der i sidste ende forhold i dette kursus 54 00:02:35,460 --> 00:02:38,040 er ikke så meget hvor du ender op i forhold til dine klassekammerater, 55 00:02:38,040 --> 00:02:43,110 men hvor man i uge 11, i slutningen af ​​den semester, ender i forhold til dig selv 56 00:02:43,110 --> 00:02:46,280 i uge 0, som er hvor vi er her i dag. 57 00:02:46,280 --> 00:02:48,704 Og det er det, jeg indså alle disse år siden. 58 00:02:48,704 --> 00:02:50,620 Og jeg kender en masse klasser siger dette, men det er 59 00:02:50,620 --> 00:02:52,450 især i datalogi. 60 00:02:52,450 --> 00:02:55,320 I slutningen af ​​dagen, dette felt er uvant som det var for mig 61 00:02:55,320 --> 00:02:58,590 og måske til dig, er virkelig bare om problemløsning. 62 00:02:58,590 --> 00:03:01,324 Og som sådan, har det denne anvendelighed til at få andre områder. 63 00:03:01,324 --> 00:03:03,490 Og i virkeligheden, hvis vi forsøgte at destillere, hvad det betyder, 64 00:03:03,490 --> 00:03:06,897 dette er problemløsning i sin essens, jeg daresay. 65 00:03:06,897 --> 00:03:09,480 Der er input-- så hvad det er, at du forsøger at løse. 66 00:03:09,480 --> 00:03:12,264 Der er udgang, der er forhåbentlig løsningen på dette problem. 67 00:03:12,264 --> 00:03:14,180 Og så, som vi ville sige i datalogi, 68 00:03:14,180 --> 00:03:17,310 der er denne sorte boks i midten, at du ikke nødvendigvis 69 00:03:17,310 --> 00:03:19,450 nødt til at bekymre sig om, hvordan det fungerer. 70 00:03:19,450 --> 00:03:22,230 Du selv i sidste ende måske gennemføre hvad der er indeni den kasse. 71 00:03:22,230 --> 00:03:25,194 Men til dagens formål og flere generelt i livet, alle interesserer dig 72 00:03:25,194 --> 00:03:26,610 er, at disse problemer bliver løst. 73 00:03:26,610 --> 00:03:29,340 >> Og hvad dette kursus er i sidste ende om, er at udforske 74 00:03:29,340 --> 00:03:31,700 skæringspunktet mellem disse indgange og udgange, 75 00:03:31,700 --> 00:03:34,410 og disse såkaldte algoritmer, som vi snart vil se, 76 00:03:34,410 --> 00:03:37,450 at gennemføre det, er nedenunder der, hætten. 77 00:03:37,450 --> 00:03:40,487 Men disse indgange og disse outputs-- hvad betyder det egentlig? 78 00:03:40,487 --> 00:03:43,570 Nå, i slutningen af ​​den dag, vi har brug for en måde at repræsentere information. 79 00:03:43,570 --> 00:03:46,660 Dette gælder især i en computer, der som fancy og komplekst som det 80 00:03:46,660 --> 00:03:48,160 kan synes, er en temmelig dum enhed. 81 00:03:48,160 --> 00:03:52,240 Det tager electricity-- om fra et kabel eller et batteri som input-- 82 00:03:52,240 --> 00:03:55,820 og så er det producerer nogle preprogramed svar på skærmen. 83 00:03:55,820 --> 00:03:57,970 >> Men hvordan kommer vi fra start til slut der? 84 00:03:57,970 --> 00:03:59,470 Nå, hvad er et problem, der skal løses? 85 00:03:59,470 --> 00:04:01,050 Nå, måske vi kunne, på starten af ​​enhver semester, 86 00:04:01,050 --> 00:04:02,841 forsøger at tage fremmøde i et rum som dette. 87 00:04:02,841 --> 00:04:04,750 Så jeg kan gøre som en, to, tre. 88 00:04:04,750 --> 00:04:07,060 Eller måske, hvis jeg gjorde det til slags holde styr 89 00:04:07,060 --> 00:04:10,560 af myself-- at holde styr på things-- Jeg kunne hurtigt løbe tør for fingre. 90 00:04:10,560 --> 00:04:14,650 Så jeg kan bare gøre hash marks-- én person to, tre, fire, fem, seks, 91 00:04:14,650 --> 00:04:15,431 syv, otte. 92 00:04:15,431 --> 00:04:17,930 Og alle har sikkert gjort dette, uanset om dine hænder 93 00:04:17,930 --> 00:04:19,680 eller på et stykke papir. 94 00:04:19,680 --> 00:04:22,140 Og det er faktisk bare noget, der hedder unary notation-- 95 00:04:22,140 --> 00:04:26,130 hvor, hvis du kun har et bogstav i din alfabet, en eller hash 96 00:04:26,130 --> 00:04:29,440 mærke i dette tilfælde, for hver indgang, du vil tælle, 97 00:04:29,440 --> 00:04:32,330 du nødt til at sætte ned en af ​​disse letters-- en af ​​disse mærker. 98 00:04:32,330 --> 00:04:32,510 >> Okay. 99 00:04:32,510 --> 00:04:34,790 Det er alt fint og godt og ikke alt, kompliceret. 100 00:04:34,790 --> 00:04:37,800 Men computere er ikke alle at meget mere kompliceret. 101 00:04:37,800 --> 00:04:40,770 Faktisk er de fleste af jer sikkert vide, selvom du ikke har virkelig 102 00:04:40,770 --> 00:04:44,080 overvejet, hvad det betyder, at computere kun forstår nuller 103 00:04:44,080 --> 00:04:45,870 og ones-- det såkaldte binære system. 104 00:04:45,870 --> 00:04:49,390 Vi mennesker, derimod, er så langt mere sofistikeret omfang 105 00:04:49,390 --> 00:04:51,770 som vi forstår nuller gennem niere. 106 00:04:51,770 --> 00:04:55,740 >> Men selv om binære er ved første blik, ikke alt det velkendte, 107 00:04:55,740 --> 00:05:00,330 det viser sig det er ligesom systemerne og idéer, som vi allerede kender. 108 00:05:00,330 --> 00:05:02,420 Så for eksempel, overveje dette. 109 00:05:02,420 --> 00:05:03,896 Dette er blot en sekvens af symboler. 110 00:05:03,896 --> 00:05:05,770 Og alle jer, når kigger på det, sandsynligvis 111 00:05:05,770 --> 00:05:09,380 tror 123-- intet virkelig interessant der. 112 00:05:09,380 --> 00:05:11,940 Men hvorfor er det dette nummer, 123? 113 00:05:11,940 --> 00:05:14,440 Disse er blot glyffer på den screen-- bare mønstre 114 00:05:14,440 --> 00:05:16,387 at nogen kunne have trukket eller skrevet. 115 00:05:16,387 --> 00:05:18,970 Men hvis du ligesom mig, du sikkert huske fra folkeskolen 116 00:05:18,970 --> 00:05:21,610 at der er en slags kolonner eller steder her. 117 00:05:21,610 --> 00:05:25,340 Der er den ene plads og ti sted og de hundrede sted. 118 00:05:25,340 --> 00:05:29,820 Og grunden til, at dette er 123 og ikke blot et mønster af tre symboler 119 00:05:29,820 --> 00:05:33,090 er fordi, selvfølgelig, hvis vi har en en i hundredvis sted, 120 00:05:33,090 --> 00:05:36,610 du gør det math på 100 gange én, og derefter to i ti sted. 121 00:05:36,610 --> 00:05:41,390 Så det er 10 gange 2, og derefter tre i den ene plads, og det er 1 gange 3. 122 00:05:41,390 --> 00:05:45,670 Og når du tilføjer alle de op, for kursus, får du 100 plus 20 plus 3. 123 00:05:45,670 --> 00:05:48,220 >> Så vi startede med blot et mønster af symbols-- en alphabet-- 124 00:05:48,220 --> 00:05:51,670 men derefter kortlagt vi defineret på det ved hjælp af disse kolonner. 125 00:05:51,670 --> 00:05:54,450 Tja, det viser sig, at computere er virkelig ikke 126 00:05:54,450 --> 00:05:56,300 så forskellig fra dig og mig. 127 00:05:56,300 --> 00:06:01,840 Men i stedet for at bruge kræfter på 10, så at speak-- 1, 10, 100, 1000, 128 00:06:01,840 --> 00:06:04,330 10.000 sted og så forth-- de rent faktisk 129 00:06:04,330 --> 00:06:08,930 bare bruge kræfter 2-- så en, 2, 4, og derefter 130 00:06:08,930 --> 00:06:12,810 hvis vi sætter flere cifre, 8, 16, 32, 64, 128, og så videre. 131 00:06:12,810 --> 00:06:16,050 Og så dette er, hvordan en computer ville repræsentere tallet 0, 132 00:06:16,050 --> 00:06:17,300 ligesom vi mennesker. 133 00:06:17,300 --> 00:06:21,660 >> 0, 0, 0-- og du kan sikkert gætte hvad mønster af nuller og ettaller, 134 00:06:21,660 --> 00:06:24,610 hvis en computer kan kun taler 0 eller 1-- hvad 135 00:06:24,610 --> 00:06:29,110 mønster vil repræsentere de numeriske vi mennesker kender som en? 136 00:06:29,110 --> 00:06:30,590 Yeah-- 0, 0, 1. 137 00:06:30,590 --> 00:06:31,090 Okay. 138 00:06:31,090 --> 00:06:35,900 Så 0, 0, 1, er, hvordan vi repræsenterer 1, så du kan være tilbøjelig derefter 139 00:06:35,900 --> 00:06:39,510 at repræsentere nummer 2, hvis du har de fire plads og de to sted 140 00:06:39,510 --> 00:06:48,290 som et sted, kan man sige, godt, hvis vi havde en 1 i ens sted, 141 00:06:48,290 --> 00:06:50,430 og nu ønsker vi at tælle op til to, måske du 142 00:06:50,430 --> 00:06:53,310 gøre dette og overlade dette til at være et nul. 143 00:06:53,310 --> 00:06:56,397 Men det er naturligvis ikke hvordan decimaltegnet systemet fungerer enten. 144 00:06:56,397 --> 00:06:58,230 Hvis du sætter et ciffer i begge disse kolonner, 145 00:06:58,230 --> 00:06:59,563 du har fået til at gøre det aritmetiske. 146 00:06:59,563 --> 00:07:01,930 Så hvad nummer gjorde jeg uheld bare repræsenterer? 147 00:07:01,930 --> 00:07:06,710 >> Så det er 3, fordi 2 gange 1 plus 1 gange 1 naturligvis giver os tre. 148 00:07:06,710 --> 00:07:08,340 Så det ville være to. 149 00:07:08,340 --> 00:07:12,730 Bit slags flips, så at sige, som 0 bliver en ene, meget gerne en 9 roller end 150 00:07:12,730 --> 00:07:14,840 og bliver en 0, når du bærer en. 151 00:07:14,840 --> 00:07:16,510 Dette så ville være tre selvfølgelig. 152 00:07:16,510 --> 00:07:20,170 Fire-- anden interessant ting sker, hvor dem rulle rundt 153 00:07:20,170 --> 00:07:21,750 og du bærer en, så at sige. 154 00:07:21,750 --> 00:07:23,320 Så dette naturligvis er 4. 155 00:07:23,320 --> 00:07:25,160 >> Men hvis du hurtigt frem nu, hvad er det største antal går 156 00:07:25,160 --> 00:07:26,660 at være, at en computer kan repræsentere? 157 00:07:26,660 --> 00:07:30,420 158 00:07:30,420 --> 00:07:32,380 Så det er bare syv i dette tilfælde, ikke? 159 00:07:32,380 --> 00:07:35,570 Fordi du har en en i de fire, en en i to, en en i en. 160 00:07:35,570 --> 00:07:36,900 Så det er 4 plus 2 plus 1. 161 00:07:36,900 --> 00:07:37,972 Så det giver dig syv. 162 00:07:37,972 --> 00:07:39,680 Og ja, ville det synes ved første øjekast 163 00:07:39,680 --> 00:07:43,750 at computere kan tælle ikke højere end dette. 164 00:07:43,750 --> 00:07:45,210 >> Men dette er naturligvis ikke sandt. 165 00:07:45,210 --> 00:07:48,243 Hvad gør vi mennesker gør, når vi ønsker at tælle højere end gerne 999? 166 00:07:48,243 --> 00:07:51,000 167 00:07:51,000 --> 00:07:53,900 Bare bære én og kun tilføje et fjerde ciffer til venstre. 168 00:07:53,900 --> 00:07:55,070 Og så ja vi kunne. 169 00:07:55,070 --> 00:07:57,900 Vi kunne have en otte s placere og en 16. plads, 170 00:07:57,900 --> 00:08:02,000 og en 32 plads, 64, 128-- og du kan bare holde foregår op til uendeligt. 171 00:08:02,000 --> 00:08:04,640 Så disse nuller og ones-- den såkaldte binære system-- 172 00:08:04,640 --> 00:08:10,290 er, hvad en datalog ville generelt kalde lidt eller binært ciffer. 173 00:08:10,290 --> 00:08:13,590 >> Men nu, hvordan gør vi får fra koncept eller den grafiske udformning af disse ting 174 00:08:13,590 --> 00:08:14,620 til en faktisk computer? 175 00:08:14,620 --> 00:08:17,170 Vi synes at springe et trin her. 176 00:08:17,170 --> 00:08:20,210 Nå, den eneste indgang i slutningen af dagen, til min laptop her 177 00:08:20,210 --> 00:08:22,060 er denne strøm af elektricitet. 178 00:08:22,060 --> 00:08:24,560 Selv om det har været en lang gang siden du tænkt over 179 00:08:24,560 --> 00:08:26,580 eller aldrig tænkt over hvordan elektricitet fungerer, 180 00:08:26,580 --> 00:08:30,909 der er elektroner flyder i eller ud, og det er min form for input. 181 00:08:30,909 --> 00:08:34,659 >> Så hvis det er alt, vi er komme som input her, 182 00:08:34,659 --> 00:08:36,830 hvad kan vi gøre med disse oplysninger? 183 00:08:36,830 --> 00:08:40,040 Nå, vi måske tænke på en nul som blot et fravær af elektricitet. 184 00:08:40,040 --> 00:08:42,540 Intet er flowinw, intet er bevæger sig, sker der ikke noget. 185 00:08:42,540 --> 00:08:44,690 Det er bare standard state-- nul. 186 00:08:44,690 --> 00:08:48,200 Men hvis der er elektricitet flyder, hvorfor gør vi ikke bare vilkårligt, men globalt 187 00:08:48,200 --> 00:08:50,250 konsekvent, kalder det en en. 188 00:08:50,250 --> 00:08:54,760 >> Så blot ved at have nogen magt, vi har en nul, ja magt, 189 00:08:54,760 --> 00:08:57,520 vi har en en-- ingen strøm, ja magt. 190 00:08:57,520 --> 00:09:01,520 Og på den måde, at bruge noget mere fysisk eller elektronisk 191 00:09:01,520 --> 00:09:05,340 vi begynder at gennemføre denne begrebet noget enten være en eller et nul. 192 00:09:05,340 --> 00:09:07,230 Faktisk kunne vi bare gøre det herovre. 193 00:09:07,230 --> 00:09:10,590 Så her, jeg har ikke tre, men otte pærer, som hver især 194 00:09:10,590 --> 00:09:11,810 har sin egen kontakt. 195 00:09:11,810 --> 00:09:15,760 >> Og så hvis jeg ønskede at repræsentere nummer syv her, 196 00:09:15,760 --> 00:09:18,510 Jeg kunne slå disse tre pærer. 197 00:09:18,510 --> 00:09:21,470 Og faktisk, indersiden af min computer er millioner, 198 00:09:21,470 --> 00:09:25,650 milliarder af ting, der er lige mindre end det, der kaldes transistorer, 199 00:09:25,650 --> 00:09:27,330 afbrydere, at du bare tænde og slukke. 200 00:09:27,330 --> 00:09:30,420 Så disse er big-- relativt big-- switche inde i mit laptop-- 201 00:09:30,420 --> 00:09:32,150 er mange, mange, mange, mange flere kontakter. 202 00:09:32,150 --> 00:09:35,160 Men alle de gør er præcis at-- slå noget på, drej noget fra. 203 00:09:35,160 --> 00:09:38,076 Og som sådan, kan en computer repræsentere, med de millioner eller milliarder 204 00:09:38,076 --> 00:09:40,480 af transistorer, partier og masser af nuller og ettaller. 205 00:09:40,480 --> 00:09:43,160 Og der er andre hardware stadig, at kan du gemme oplysninger langsigtet, 206 00:09:43,160 --> 00:09:45,243 så når du trækker plug, du ikke mister det. 207 00:09:45,243 --> 00:09:46,900 Men det er en historie til en anden dag. 208 00:09:46,900 --> 00:09:51,170 >> Så hvad kan vi gøre med disse bits? 209 00:09:51,170 --> 00:09:54,309 Kunne vi bare at tage presset ud af mig-- 210 00:09:54,309 --> 00:09:56,600 måske nogen ønsker at komme op her og tilbyde op en demo? 211 00:09:56,600 --> 00:09:57,516 Jeg så denne hånd først. 212 00:09:57,516 --> 00:09:58,709 Hvad hedder du? 213 00:09:58,709 --> 00:09:59,250 Maday: Maday. 214 00:09:59,250 --> 00:10:00,542 DAVID MALAN: Maday, kom op. 215 00:10:00,542 --> 00:10:01,250 Rart at møde dig. 216 00:10:01,250 --> 00:10:02,390 Maday: Rart at møde dig. 217 00:10:02,390 --> 00:10:02,930 >> DAVID MALAN: Kom denne måde. 218 00:10:02,930 --> 00:10:04,182 Jeg vil ikke have at læbe dig op. 219 00:10:04,182 --> 00:10:04,682 Okay. 220 00:10:04,682 --> 00:10:11,090 Så her har vi notice-- én, to-- vi vil redigere det out-- en, to, fire, 221 00:10:11,090 --> 00:10:13,350 otte, 16, 32, 64, 128. 222 00:10:13,350 --> 00:10:14,220 Dette er bevidst. 223 00:10:14,220 --> 00:10:17,370 Der er otte bits her-- binær digits-- nuller og ettaller. 224 00:10:17,370 --> 00:10:21,460 Og lidt er en nyttig enhed af measure-- ikke så nyttig en måleenhed 225 00:10:21,460 --> 00:10:21,999 på sig selv. 226 00:10:21,999 --> 00:10:24,290 Normalt du ønsker mindst otte af disse ting, alias 227 00:10:24,290 --> 00:10:24,790 en byte. 228 00:10:24,790 --> 00:10:26,230 Så vi har en byte af bits her. 229 00:10:26,230 --> 00:10:31,130 >> Så hvis vi ønskede at udfordre dig med, for eksempel, uddyber, i binær, 230 00:10:31,130 --> 00:10:33,230 denne værdi her-- 42. 231 00:10:33,230 --> 00:10:35,140 Ønsker du at tage et stik på det? 232 00:10:35,140 --> 00:10:36,034 >> Maday: [uhørligt]. 233 00:10:36,034 --> 00:10:38,700 DAVID MALAN: Ja, bare skubbe små hvide afbrydere foran. 234 00:10:38,700 --> 00:10:41,290 Og du ønsker at stave ud 42, og på højkant 235 00:10:41,290 --> 00:10:44,061 er denne CS50 stress bold, hvis du får dette. 236 00:10:44,061 --> 00:10:44,560 Okay. 237 00:10:44,560 --> 00:10:46,420 Så du har 32. 238 00:10:46,420 --> 00:10:48,430 Vi får brug for 42. 239 00:10:48,430 --> 00:10:51,410 Så det er en otte, så det er 40. 240 00:10:51,410 --> 00:10:54,160 Og excellent-- meget pænt gjort. 241 00:10:54,160 --> 00:10:55,186 Tak. 242 00:10:55,186 --> 00:10:58,790 >> [BIFALD] 243 00:10:58,790 --> 00:10:59,290 Okay. 244 00:10:59,290 --> 00:11:00,623 Så vi har en mere stress bold. 245 00:11:00,623 --> 00:11:03,595 Lad os gøre dette én gang mere, hvis vi kan. 246 00:11:03,595 --> 00:11:05,368 En anden frivillig? 247 00:11:05,368 --> 00:11:07,970 Gratis stress bold, gratis stress bold. 248 00:11:07,970 --> 00:11:08,470 OKAY. 249 00:11:08,470 --> 00:11:11,640 Herovre i midten, ønsker du at komme ned? 250 00:11:11,640 --> 00:11:14,100 Okay. 251 00:11:14,100 --> 00:11:15,552 Jeg ved. 252 00:11:15,552 --> 00:11:16,360 Sådan der. 253 00:11:16,360 --> 00:11:20,818 >> Så tallene her-- kom ned. 254 00:11:20,818 --> 00:11:21,567 Hvad er dit navn? 255 00:11:21,567 --> 00:11:21,984 >> DAVEY: Davey. 256 00:11:21,984 --> 00:11:22,820 >> DAVID MALAN: Davey. 257 00:11:22,820 --> 00:11:23,320 OKAY. 258 00:11:23,320 --> 00:11:24,810 Kom op, Davey. 259 00:11:24,810 --> 00:11:25,890 Rart at møde dig. 260 00:11:25,890 --> 00:11:28,639 Og hvad vi vil have dig spell-- hvis du kunne dvæle der 261 00:11:28,639 --> 00:11:32,810 for bare en moment-- er antallet 50. 262 00:11:32,810 --> 00:11:36,293 Men, men, men, men, men disse er klasse skole magneter for en grund. 263 00:11:36,293 --> 00:11:39,370 264 00:11:39,370 --> 00:11:43,327 Lige fik lidt hårdere, okay? 265 00:11:43,327 --> 00:11:44,160 Der er stadig otte. 266 00:11:44,160 --> 00:11:46,820 267 00:11:46,820 --> 00:11:47,320 Okay. 268 00:11:47,320 --> 00:11:48,486 Så hvad har vi på der? 269 00:11:48,486 --> 00:11:51,356 Vi har 32. 270 00:11:51,356 --> 00:11:54,344 Pæn. 271 00:11:54,344 --> 00:11:58,610 32 plus 16 giver os 48-- så tæt. 272 00:11:58,610 --> 00:12:00,390 Og vidunderligt. 273 00:12:00,390 --> 00:12:02,831 Tillykke til Davey så godt. 274 00:12:02,831 --> 00:12:05,720 >> [BIFALD] 275 00:12:05,720 --> 00:12:06,516 >> Okay. 276 00:12:06,516 --> 00:12:09,390 Så vi kan gøre dette hele dagen lang, og det får ikke så meget mere 277 00:12:09,390 --> 00:12:10,800 interessant og mere udfordrende. 278 00:12:10,800 --> 00:12:13,250 Men det er virkelig point-- er, hvor relativt simpel 279 00:12:13,250 --> 00:12:16,930 det er, ved slutningen af ​​dagen, hvad en computeren gør at lagre information, 280 00:12:16,930 --> 00:12:21,740 at lagre indgange og i sidste ende opbevare eller repræsentere disse udgange. 281 00:12:21,740 --> 00:12:23,750 Men tal alene er ikke alt det interessant. 282 00:12:23,750 --> 00:12:26,069 >> Så mennesker, for nogle år siden, besluttet, ved du hvad? 283 00:12:26,069 --> 00:12:27,860 Det ville være rart, hvis computere var ikke bare 284 00:12:27,860 --> 00:12:31,030 regnemaskiner til aritmetiske operationer, men faktisk kunne 285 00:12:31,030 --> 00:12:35,209 gøre ting som tekstbehandling, eller e-mail, eller mere moderne inkarnationer 286 00:12:35,209 --> 00:12:36,500 af disse former for teknologier. 287 00:12:36,500 --> 00:12:40,680 Og så verden besluttede vilkårligt, men universelt, 288 00:12:40,680 --> 00:12:44,380 at hvis du ønsker at gemme kapital bogstavet A i en computer, ved du hvad? 289 00:12:44,380 --> 00:12:47,730 Lad os bare alle er enige om at gemme nogle mønster af nuller og ones-- 290 00:12:47,730 --> 00:12:52,422 bits-- der i sidste ende repræsenterer decimaltallet 65. 291 00:12:52,422 --> 00:12:53,630 Vi vil bare alle enige om. 292 00:12:53,630 --> 00:12:56,620 >> 66 ville repræsentere B, 67 ville repræsentere C, 293 00:12:56,620 --> 00:13:00,210 og der er klaser af andre mønstre af nuller og ettaller, eller underliggende tal, 294 00:13:00,210 --> 00:13:02,224 der ville repræsentere andre bogstaver stille. 295 00:13:02,224 --> 00:13:04,390 Så hvis du slags mentalt absorbere dette for et øjeblik, 296 00:13:04,390 --> 00:13:10,900 Jeg bevidst sat A til I, hvor H en 72 og jeg er 73. 297 00:13:10,900 --> 00:13:15,830 Hvis en computer derefter, i forbindelse med et tekstbehandlingsprogram eller en e-mail, 298 00:13:15,830 --> 00:13:19,620 afsløret under hætten for at have disse mønstre af bits-- mønster 299 00:13:19,620 --> 00:13:22,500 af bits, der repræsenterer 72, derefter 73, derefter 33-- 300 00:13:22,500 --> 00:13:26,640 hvad kan dette stave i dette program? 301 00:13:26,640 --> 00:13:28,150 >> Så hej, og derefter noget. 302 00:13:28,150 --> 00:13:31,460 Vi ved ikke nødvendigvis kender, men faktisk 33-- ikke på diagrammet earlier-- 303 00:13:31,460 --> 00:13:33,170 var simpelthen et udråbstegn. 304 00:13:33,170 --> 00:13:38,870 Så 72 var H, 73 er ​​I, 33 sker at være et udråbstegn stadig. 305 00:13:38,870 --> 00:13:41,719 Men det er alt fint og godt, og faktisk i dag, i stedet for 306 00:13:41,719 --> 00:13:43,760 bare bruge syv eller otte bits, takket være noget 307 00:13:43,760 --> 00:13:46,530 kaldet Unicode i modsætning til ASCII tilbage i dag, 308 00:13:46,530 --> 00:13:50,010 vi faktisk kan repræsentere endnu mere interessante karakterer end blot 309 00:13:50,010 --> 00:13:52,980 disse originale engelske forudindtaget bogstaver. 310 00:13:52,980 --> 00:13:56,030 Men vi kan også repræsentere selv pænere ting som farver. 311 00:13:56,030 --> 00:13:59,750 >> Hvis du nogensinde har hørt akronymet RGB, rød, grøn, blå, at 312 00:13:59,750 --> 00:14:03,510 bare betyder, at en computer typisk bruger tre sæt bits-- 313 00:14:03,510 --> 00:14:06,760 nogle antal bit, repræsenterer et tal for hvor meget rød du ønsker, 314 00:14:06,760 --> 00:14:08,940 et andet sæt bits for hvor meget grøn, du ønsker, 315 00:14:08,940 --> 00:14:11,430 og et andet sæt tal for hvor meget blå, du ønsker. 316 00:14:11,430 --> 00:14:14,457 Så et stort antal betyder masser af rød, lille antal betyder ingen rød. 317 00:14:14,457 --> 00:14:16,290 Og så disse er slags af midterste værdier her. 318 00:14:16,290 --> 00:14:20,180 >> Så giv mig nogle røde, give mig nogle grøn, og give mig en lille smule af blå. 319 00:14:20,180 --> 00:14:24,260 Og hvis du blander disse tre nuancer farver sammen, i dette tilfælde, 320 00:14:24,260 --> 00:14:26,850 du får denne skumle skygge af gul eller brun. 321 00:14:26,850 --> 00:14:32,330 Men dette mønster af otte plus otte plus eight-- så 24 bits-- 322 00:14:32,330 --> 00:14:36,550 venstre til højre, er, hvordan en computer ville repræsentere den pågældende farve. 323 00:14:36,550 --> 00:14:38,090 Nu er det bare en prik på en skærm. 324 00:14:38,090 --> 00:14:42,230 Hvis man ser virkelig tæt på dit TV dit computer, vil du se prikker eller pixels. 325 00:14:42,230 --> 00:14:45,420 Og hvis du har en hel gitter af pixels, horisontalt og vertikalt, 326 00:14:45,420 --> 00:14:46,630 du har billeder. 327 00:14:46,630 --> 00:14:49,029 Og så hvis du tager et billede og derefter vask 328 00:14:49,029 --> 00:14:52,070 vise dig et andet billede, en anden billede, et andet billede, et andet billede, 329 00:14:52,070 --> 00:14:54,760 rigtig hurtigt, du selvfølgelig har film. 330 00:14:54,760 --> 00:14:56,109 >> Og så mærke til hvor vi startede. 331 00:14:56,109 --> 00:14:57,650 Vi startede med disse nuller og ettaller. 332 00:14:57,650 --> 00:15:00,570 Vi arbejdede derfra til decimal tal, hvordan vi repræsenterer dem. 333 00:15:00,570 --> 00:15:02,070 Nu har vi bogstaver i alfabetet. 334 00:15:02,070 --> 00:15:05,664 Men i andre sammenhænge vente, kan vi bruge et par mere bits og repræsenterer farver. 335 00:15:05,664 --> 00:15:07,830 Så snart du har den evne til at præsentere farver, 336 00:15:07,830 --> 00:15:11,200 du har evnen til at repræsentere billeder og animerede gifs 337 00:15:11,200 --> 00:15:13,780 og andre sådanne tegn på skærmen. 338 00:15:13,780 --> 00:15:17,160 Og når du har en hel masse billeder fører ved det menneskelige på en gang, 339 00:15:17,160 --> 00:15:21,480 det ligner levende billeder, og så får du videoer samt. 340 00:15:21,480 --> 00:15:23,460 >> Så bruge disse meget simple primitiver gør vi 341 00:15:23,460 --> 00:15:28,070 have måde at repræsentere sidste ende alle disse former for medier. 342 00:15:28,070 --> 00:15:30,450 Og vi har abstraheret igen og igen og igen, indtil vi 343 00:15:30,450 --> 00:15:33,467 komme fra det laveste niveau til dette højeste niveau. 344 00:15:33,467 --> 00:15:35,550 Så det giver os dette generel idé om abstraktion. 345 00:15:35,550 --> 00:15:36,990 Men vi begyndte her. 346 00:15:36,990 --> 00:15:38,790 >> Her nu, måske vi repræsentere i en computer 347 00:15:38,790 --> 00:15:41,920 vores indgange med nuller og ettaller, vores output i nuller og ettaller, 348 00:15:41,920 --> 00:15:43,640 men hvad der går inde i boksen? 349 00:15:43,640 --> 00:15:46,080 Det er, hvor computeren videnskab bliver interessant. 350 00:15:46,080 --> 00:15:49,770 Det er, hvor du rent faktisk bringe din eget sind til at bære at løse problemer. 351 00:15:49,770 --> 00:15:52,590 Vi kan nu fastsætte, for resten af ​​semestret, ja. 352 00:15:52,590 --> 00:15:53,870 Jeg ved, hvordan binære værker. 353 00:15:53,870 --> 00:15:57,942 Jeg husker, hvordan Ascii eller Unicode-- kortlægningen at letters-- værker. 354 00:15:57,942 --> 00:15:59,650 Og det helt sikkert står til grund, at vi 355 00:15:59,650 --> 00:16:03,470 kunne repræsentere rød og grøn og blå, og repræsenterer multimedia så godt. 356 00:16:03,470 --> 00:16:05,390 Men dette er den interessante ting. 357 00:16:05,390 --> 00:16:09,790 Dette er hvad der gør en person stand til at løse problemer. 358 00:16:09,790 --> 00:16:11,980 >> Og en sådan problem vi gerne gøre, ja, 359 00:16:11,980 --> 00:16:15,345 tager fremmøde, eller at gøre dette algoritmisk. 360 00:16:15,345 --> 00:16:16,470 Og igen, kan jeg gøre det. 361 00:16:16,470 --> 00:16:19,580 Jeg kan gøre en, to, tre, fire fem, seks, syv, otte ni. 362 00:16:19,580 --> 00:16:21,520 Og jeg kunne skrive det ned til at holde styr på den. 363 00:16:21,520 --> 00:16:23,769 Men det er bare sådan jeg ville repræsentere oplysningerne. 364 00:16:23,769 --> 00:16:27,550 Eller jeg kunne gøre dette faster-- to, fire, seks, otte, ti, 12, 14, 16, 18, 20, 365 00:16:27,550 --> 00:16:30,380 22-- det føles to gange så hurtigt, men det er stadig 366 00:16:30,380 --> 00:16:32,050 kommer til at tage en hel masse tid. 367 00:16:32,050 --> 00:16:35,990 >> Men det viser sig, hvis vi udnytte endnu anden resource-- og faktisk computere 368 00:16:35,990 --> 00:16:38,940 disse dage har flere CPU'er eller hjerner. 369 00:16:38,940 --> 00:16:41,970 Det viser sig computere kan gøre masser af ting på én gang, 370 00:16:41,970 --> 00:16:44,460 og faktisk vi, i dette rum, kan udgøre netop dette. 371 00:16:44,460 --> 00:16:47,130 >> Så det er lidt socialt akavet, men hvis du ville humor mig 372 00:16:47,130 --> 00:16:51,550 for kun en tre-trins proces, lad mig spørge alle i sted der bare 373 00:16:51,550 --> 00:16:54,640 at stå op et øjeblik. 374 00:16:54,640 --> 00:16:57,380 Stå op. 375 00:16:57,380 --> 00:17:01,580 Så tænk på dig selv, nummer en-- så alle i dette rum, 376 00:17:01,580 --> 00:17:05,010 undtagen de mennesker, der ikke gjorde oblige, tænker nummer et. 377 00:17:05,010 --> 00:17:06,510 Så det er dit nummer lige nu. 378 00:17:06,510 --> 00:17:09,399 Det er det første skridt, eller som en datalog eller en programmør 379 00:17:09,399 --> 00:17:11,827 vil typisk gøre, vi kommer at begynde at tælle ved nul. 380 00:17:11,827 --> 00:17:14,410 Hvis det mindste tal, vi kan repræsentere med disse pærer 381 00:17:14,410 --> 00:17:17,410 er nul, ved blot at lade dem alle off, kunne jeg lige så godt bare 382 00:17:17,410 --> 00:17:19,271 begynde at tælle fra nul er stedet for én. 383 00:17:19,271 --> 00:17:21,020 Og så det er hvad dataloger gør. 384 00:17:21,020 --> 00:17:23,750 Så trin nul, stå op og tænke på nummer et. 385 00:17:23,750 --> 00:17:26,339 Det næste skridt er denne-- par ud med nogen stående 386 00:17:26,339 --> 00:17:27,660 og tilføje dine tal sammen. 387 00:17:27,660 --> 00:17:30,660 388 00:17:30,660 --> 00:17:32,850 Vidunderlig. 389 00:17:32,850 --> 00:17:37,640 >> Så på dette tidspunkt, bogstaveligt alle deltager 390 00:17:37,640 --> 00:17:41,930 tænker på tallet 2, med undtagelse af for én ulige person, hvis vi har 391 00:17:41,930 --> 00:17:43,450 et ulige antal personer i lokalet. 392 00:17:43,450 --> 00:17:50,640 Og nu det tredje trin her kommer til at være denne-- en af ​​jer skal sidde ned. 393 00:17:50,640 --> 00:17:54,490 En af jer skal sidde ned, og hvis du stadig stående, 394 00:17:54,490 --> 00:17:56,590 gå tilbage til trin et. 395 00:17:56,590 --> 00:18:44,799 396 00:18:44,799 --> 00:18:45,790 Okay. 397 00:18:45,790 --> 00:19:00,760 398 00:19:00,760 --> 00:19:01,650 Okay. 399 00:19:01,650 --> 00:19:03,880 Så flere og flere mennesker bør sidde ned. 400 00:19:03,880 --> 00:19:08,280 Bemærk, at dette har fremkaldt en loop-- en slags cyklus. 401 00:19:08,280 --> 00:19:11,983 Nogle af jer skal være akavet fast, gå frem og tilbage mellem trin et 402 00:19:11,983 --> 00:19:14,180 og to, en og to, en og to. 403 00:19:14,180 --> 00:19:21,190 404 00:19:21,190 --> 00:19:21,810 Det er ok. 405 00:19:21,810 --> 00:19:22,630 Vores første fejl. 406 00:19:22,630 --> 00:19:24,740 Vi vil beskæftige sig med det. 407 00:19:24,740 --> 00:19:25,320 Okay. 408 00:19:25,320 --> 00:19:27,370 Lad mig prøve at anspore tingene sammen. 409 00:19:27,370 --> 00:19:31,454 >> I teorien er kun én person, der står som alle fortsætter med at parre off. 410 00:19:31,454 --> 00:19:33,870 Men lad mig fremskynde tingene med de mennesker stadig står. 411 00:19:33,870 --> 00:19:35,480 Hvilket nummer tænker du på? 412 00:19:35,480 --> 00:19:36,070 46. 413 00:19:36,070 --> 00:19:36,570 OKAY. 414 00:19:36,570 --> 00:19:37,820 Gå videre og sidde ned. 415 00:19:37,820 --> 00:19:39,190 Du fyre står endnu. 416 00:19:39,190 --> 00:19:42,130 Hvem er stadig stående? 417 00:19:42,130 --> 00:19:45,240 Hvilket nummer tænker du på? 418 00:19:45,240 --> 00:19:46,160 OKAY. 419 00:19:46,160 --> 00:19:47,900 >> Så vi vil komme tilbage til dig. 420 00:19:47,900 --> 00:19:49,630 I ryggen? 421 00:19:49,630 --> 00:19:50,790 Hvad er det? 422 00:19:50,790 --> 00:19:53,100 22. 423 00:19:53,100 --> 00:19:56,540 OK en anden op top-- ikke? 424 00:19:56,540 --> 00:19:57,720 34. 425 00:19:57,720 --> 00:19:58,300 OKAY. 426 00:19:58,300 --> 00:20:02,780 Over her på min right-- heroppe? 427 00:20:02,780 --> 00:20:06,820 132, meget flot. 428 00:20:06,820 --> 00:20:08,380 22? 429 00:20:08,380 --> 00:20:08,990 >> OKAY. 430 00:20:08,990 --> 00:20:10,031 Og hvem er stadig stående? 431 00:20:10,031 --> 00:20:11,000 Her ovre? 432 00:20:11,000 --> 00:20:14,520 46, meget flot. 433 00:20:14,520 --> 00:20:16,890 72. 434 00:20:16,890 --> 00:20:18,220 Jeg kan ikke gå i stå meget længere. 435 00:20:18,220 --> 00:20:20,520 Ja? 436 00:20:20,520 --> 00:20:22,490 30, nice. 437 00:20:22,490 --> 00:20:24,120 Her ovre? 438 00:20:24,120 --> 00:20:26,200 23? 439 00:20:26,200 --> 00:20:27,270 23. 440 00:20:27,270 --> 00:20:30,920 >> Og jeg tror, ​​det er alle undtagen jer, ingen pres. 441 00:20:30,920 --> 00:20:32,860 Oh vent. 442 00:20:32,860 --> 00:20:33,360 28? 443 00:20:33,360 --> 00:20:37,500 444 00:20:37,500 --> 00:20:38,281 Blot otte. 445 00:20:38,281 --> 00:20:38,780 OKAY. 446 00:20:38,780 --> 00:20:41,030 Blot otte. 447 00:20:41,030 --> 00:20:42,580 Her nede? 448 00:20:42,580 --> 00:20:44,570 30. 449 00:20:44,570 --> 00:20:47,344 23. 450 00:20:47,344 --> 00:20:47,843 24. 451 00:20:47,843 --> 00:20:50,810 452 00:20:50,810 --> 00:20:52,310 18. 453 00:20:52,310 --> 00:20:54,690 Dette er den værste implementering af denne algoritme nogensinde. 454 00:20:54,690 --> 00:20:55,190 OKAY. 455 00:20:55,190 --> 00:20:59,760 Så andre? 456 00:20:59,760 --> 00:21:00,421 Nogen andre? 457 00:21:00,421 --> 00:21:00,920 OKAY. 458 00:21:00,920 --> 00:21:03,300 En til. 459 00:21:03,300 --> 00:21:04,400 16? 460 00:21:04,400 --> 00:21:04,900 OKAY. 461 00:21:04,900 --> 00:21:05,510 16. 462 00:21:05,510 --> 00:21:06,010 Okay. 463 00:21:06,010 --> 00:21:09,070 Så hvis jeg ikke har savnet nogen i blænding her, når jeg ramte Enter, 464 00:21:09,070 --> 00:21:13,091 vi vil se, algoritmisk, det samlede antal personer i Sanders. 465 00:21:13,091 --> 00:21:16,340 Fordi igen, det er som om alle som du sad ned, passerede dit nummer off 466 00:21:16,340 --> 00:21:19,215 til en anden, til en anden, til en anden, så i teorien, 467 00:21:19,215 --> 00:21:22,304 i sidste ende, kun en akavet person, bør overlades stående. 468 00:21:22,304 --> 00:21:22,970 Men det er fint. 469 00:21:22,970 --> 00:21:24,290 Vi drønede tingene op manuelt. 470 00:21:24,290 --> 00:21:27,590 Det er især svært at se i dette særlige rum. 471 00:21:27,590 --> 00:21:34,200 >> Og det samlede antal personer Vi tror, ​​der er her er 546. 472 00:21:34,200 --> 00:21:37,330 Det samlede antal var jeg afleveret af undervisningen stipendiater, 473 00:21:37,330 --> 00:21:40,660 der gjorde det den gamle skole langsom måde, var 820. 474 00:21:40,660 --> 00:21:43,660 >> [LAUGHING] 475 00:21:43,660 --> 00:21:47,170 >> [BIFALD] 476 00:21:47,170 --> 00:21:48,670 >> Det er ok. 477 00:21:48,670 --> 00:21:50,740 Så sikkert da, der er disse fejl. 478 00:21:50,740 --> 00:21:51,460 Og det er fint. 479 00:21:51,460 --> 00:21:53,810 Og så tænker tilbage på dette første gang noget 480 00:21:53,810 --> 00:21:55,420 du skriver ikke nødvendigvis arbejde. 481 00:21:55,420 --> 00:21:57,620 Dette er sket for mig her. 482 00:21:57,620 --> 00:22:00,844 Men lad os nu overveje, hvordan vi kunne anvende denne samme idé til noget 483 00:22:00,844 --> 00:22:03,760 du måske har set før, som er denne gamle skole teknologi her-- 484 00:22:03,760 --> 00:22:05,130 en virkelig stor telefonbog. 485 00:22:05,130 --> 00:22:09,380 Og formoder, at denne telefonbog har 1.000 sider og 1.000 navne 486 00:22:09,380 --> 00:22:11,360 og numre alfabetisk inde i den. 487 00:22:11,360 --> 00:22:14,860 >> Nå, vi kunne slags anvende en lignende idé til denne meget fysiske problemer, 488 00:22:14,860 --> 00:22:16,270 bare bruge mig. 489 00:22:16,270 --> 00:22:18,810 Jeg lige slags snydt ved at udnytte alle jer 490 00:22:18,810 --> 00:22:23,240 med masser og masser af forskellige CPU'er eller hjerne udfører nogle algoritme. 491 00:22:23,240 --> 00:22:25,440 Men hvis det er bare lidt gamle mig, kan jeg stadig 492 00:22:25,440 --> 00:22:29,630 udnytte den samme essensen af ​​en idé opdele og erobre dette problem 493 00:22:29,630 --> 00:22:32,970 igen og igen, hvorved halvdelen af ​​jer, halvdelen af ​​jer, halvdelen af ​​jer, halvdelen af ​​jer, 494 00:22:32,970 --> 00:22:35,830 teoretisk holdes sidder ned, indtil vi var tilbage, teoretisk, 495 00:22:35,830 --> 00:22:36,990 med kun én person. 496 00:22:36,990 --> 00:22:39,810 >> Så i denne gamle skole teknologiforbedringer vi ikke 497 00:22:39,810 --> 00:22:43,030 brug for dette map-- dette gamle skole teknologi, 498 00:22:43,030 --> 00:22:47,300 vi måske begynde at lede efter en person gerne Mike Smith, en side ad gangen. 499 00:22:47,300 --> 00:22:49,410 Og jeg ser, at ingen, Mike er ikke her. 500 00:22:49,410 --> 00:22:51,110 Jeg er stadig i A sektionen. 501 00:22:51,110 --> 00:22:53,900 Til sidst finder jeg mig selv i afsnittet B. 502 00:22:53,900 --> 00:22:56,910 Og dette er en algorithm-- trin-for-trin instruktion. 503 00:22:56,910 --> 00:22:59,890 Start i begyndelsen og én side på et tidspunkt, kigge efter Mike Smith. 504 00:22:59,890 --> 00:23:03,410 Er det correct-- dette algoritme eller strategi? 505 00:23:03,410 --> 00:23:04,550 >> Ja, det er korrekt. 506 00:23:04,550 --> 00:23:06,840 Hvis Mike er her, i sidste ende Jeg vil komme til ham. 507 00:23:06,840 --> 00:23:08,139 Men det er ikke effektivt. 508 00:23:08,139 --> 00:23:09,180 Det er selvfølgelig meget langsom. 509 00:23:09,180 --> 00:23:11,340 Så jeg kan udnytte samme twosies nærmer. 510 00:23:11,340 --> 00:23:15,350 Jeg kan gøre slags to, fire, seks, otte, 10, 12. 511 00:23:15,350 --> 00:23:16,330 Det er dobbelt så hurtigt. 512 00:23:16,330 --> 00:23:18,290 Jeg har tænkt mig at komme til Mike hurtigere, hvis han er der. 513 00:23:18,290 --> 00:23:20,770 Er det korrekt? 514 00:23:20,770 --> 00:23:22,320 Ja, men jeg hørte en little-- nej. 515 00:23:22,320 --> 00:23:24,200 Nu hørte jeg et nej. 516 00:23:24,200 --> 00:23:24,700 Ja. 517 00:23:24,700 --> 00:23:26,190 Der er en fejl potentielt. 518 00:23:26,190 --> 00:23:29,374 Måske Mike bare et uheld får klemt inde mellem to sider, 519 00:23:29,374 --> 00:23:31,290 fordi jeg flyver gennem denne to ad gangen. 520 00:23:31,290 --> 00:23:33,580 Så i det mindste, vi har brug for nogle form for betinget fix. 521 00:23:33,580 --> 00:23:35,330 Jeg har brug for at sige, hey, hvis jeg ramte en person, hvis 522 00:23:35,330 --> 00:23:39,190 navn starter med et T i stedet for et S, Jeg bedre dobbelt tilbage mindst én side. 523 00:23:39,190 --> 00:23:40,767 Så buggy i starten, men fixable. 524 00:23:40,767 --> 00:23:43,850 Men ingen af ​​os kommer til at kigge efter Mike Smith gennem en 1000 side telefon 525 00:23:43,850 --> 00:23:45,290 bog en side ad gangen. 526 00:23:45,290 --> 00:23:48,486 Hvad er en normal person vil gøre? 527 00:23:48,486 --> 00:23:50,860 Du kommer til at gå til S ', Hvis du vidste, hvor S '. 528 00:23:50,860 --> 00:23:54,230 Du kan gå nogenlunde til midten eller lidt skæv mod slutningen. 529 00:23:54,230 --> 00:23:56,850 Og jeg ser ned her og Jeg er i M sektion. 530 00:23:56,850 --> 00:23:58,952 Men hvad ved du om dette problem nu, 531 00:23:58,952 --> 00:24:02,160 at vi ikke nødvendigvis ved, før med alle os bare tælle os selv 532 00:24:02,160 --> 00:24:03,030 ækvivalent? 533 00:24:03,030 --> 00:24:06,010 Nå, Mike vil helt klart at være i denne halvdel af bogen 534 00:24:06,010 --> 00:24:07,920 hvis han er her på alle, fordi det er ordnet. 535 00:24:07,920 --> 00:24:10,160 >> Og så kan du meget dramatically-- 536 00:24:10,160 --> 00:24:11,250 >> [Gisper] 537 00:24:11,250 --> 00:24:12,300 >> Jeg ved. 538 00:24:12,300 --> 00:24:16,940 >> [BIFALD] 539 00:24:16,940 --> 00:24:19,450 >> Det er faktisk rigtig let, hvis du gør det ned ad ryggen der. 540 00:24:19,450 --> 00:24:22,070 Men du kan derefter kaste halvdelen af ​​problemet væk. 541 00:24:22,070 --> 00:24:25,950 Nu, jeg tilbage med det samme problem-- finde Mike Smith i en telefon book-- 542 00:24:25,950 --> 00:24:29,610 men nu telefonbogen starter ved M og går til Z, men det er halvt så stor. 543 00:24:29,610 --> 00:24:30,890 >> Men dette er, hvad der er imponerende. 544 00:24:30,890 --> 00:24:34,170 Ligesom i teori, gutter, når du alle sad kun halvdelen ad gangen, 545 00:24:34,170 --> 00:24:37,150 problemet fik halvt så stor, halvt så stor, igen og igen. 546 00:24:37,150 --> 00:24:40,260 Så er dette problem blevet den samme problem, men halvt så store. 547 00:24:40,260 --> 00:24:42,670 Nu er det en 250 side problem. 548 00:24:42,670 --> 00:24:45,340 Så snart jeg indser, åh, jeg er i T-sektion uheld. 549 00:24:45,340 --> 00:24:46,590 Jeg har gået for vidt. 550 00:24:46,590 --> 00:24:48,500 Jeg kan kaste, at halvdelen af telefonbogen væk. 551 00:24:48,500 --> 00:24:50,410 Nu er jeg ned til en fjerdedel af problemet. 552 00:24:50,410 --> 00:24:53,910 >> Og du kan gentage, gentage, Gentag indtil, i teorien, er du 553 00:24:53,910 --> 00:24:55,460 efterladt med kun én side. 554 00:24:55,460 --> 00:24:59,010 Og hvis Mike er på denne side, Jeg kan nu løse dette problem. 555 00:24:59,010 --> 00:25:00,810 Men hvor hurtigt jeg løse det? 556 00:25:00,810 --> 00:25:05,420 I det første tilfælde, det tog mig ligesom måske 1.000 trin for at finde Mike Smith. 557 00:25:05,420 --> 00:25:09,260 Det kunne have taget mig-- Jeg tog telefonbogen 558 00:25:09,260 --> 00:25:11,440 og jeg begyndte at lede én side ad gangen, 559 00:25:11,440 --> 00:25:13,480 og Mike kunne være 1.000 sider senere. 560 00:25:13,480 --> 00:25:16,020 >> Anden fremgangsmåde måske tager mig 500 trin, 561 00:25:16,020 --> 00:25:17,960 fordi jeg flyver gennem to ad gangen. 562 00:25:17,960 --> 00:25:21,082 Og den tredje tilgang selv, Det er især stærke. 563 00:25:21,082 --> 00:25:23,790 Men lad os overveje, hvad vi rent faktisk gjorde med denne tredje tilgang. 564 00:25:23,790 --> 00:25:27,590 Jeg har, hvad jeg vil kalde bare disse udsagn her, en ad gangen. 565 00:25:27,590 --> 00:25:28,560 Pick up en telefonbog. 566 00:25:28,560 --> 00:25:30,130 Åbn til midten af ​​telefonbogen. 567 00:25:30,130 --> 00:25:31,419 Se på navne. 568 00:25:31,419 --> 00:25:33,960 Og så tingene bliver lidt mere intellektuelt interessant, 569 00:25:33,960 --> 00:25:35,170 hvis stadig enkel. 570 00:25:35,170 --> 00:25:38,350 Hvis Smith er blandt de navne på den aktuelle side, 571 00:25:38,350 --> 00:25:40,170 så gør noget betinget. 572 00:25:40,170 --> 00:25:41,840 Det er ligesom en gaffel i vejen. 573 00:25:41,840 --> 00:25:42,660 Ring Mike. 574 00:25:42,660 --> 00:25:44,930 Hvis Mike er blandt de navne, på den side, kaldet Mike. 575 00:25:44,930 --> 00:25:49,720 Men kun gøre linje fire, hvis linje træ, hvis du vil, er sandt. 576 00:25:49,720 --> 00:25:51,590 Svaret på dette spørgsmål er ja. 577 00:25:51,590 --> 00:25:55,520 >> Else hvis Smith er tidligere i book-- med andre ord, hvis jeg er i M sektion 578 00:25:55,520 --> 00:25:58,540 og jeg leder efter nogen til at venstre, så hvad jeg skal gøre 579 00:25:58,540 --> 00:26:00,300 er noget meget lignende. 580 00:26:00,300 --> 00:26:03,440 Så skulle jeg åbne til midten af den venstre halvdel af bogen. 581 00:26:03,440 --> 00:26:07,930 Så gå til venstre, og derefter gå tilbage til trin to. 582 00:26:07,930 --> 00:26:09,290 Kig på navne der. 583 00:26:09,290 --> 00:26:12,779 >> Så med andre ord, gøre det samme, men på et problem, der er blevet halveret. 584 00:26:12,779 --> 00:26:13,570 Du ved, hvad ellers? 585 00:26:13,570 --> 00:26:16,470 Hvis Smith er senere i bogen baseret på den side, jeg ser på, 586 00:26:16,470 --> 00:26:18,790 åben til midten af ​​den højre halvdel af bogen 587 00:26:18,790 --> 00:26:22,050 og derefter gå tilbage igen til trin to, else-- 588 00:26:22,050 --> 00:26:24,000 der er en fjerde mulighed her. 589 00:26:24,000 --> 00:26:28,830 Mike enten her eller til venstre eller til højre eller ikke. 590 00:26:28,830 --> 00:26:30,570 Og her er vi bedre overveje dette. 591 00:26:30,570 --> 00:26:33,360 Og i virkeligheden, hvis du nogensinde har haft computeren bare gå ned på dig, 592 00:26:33,360 --> 00:26:36,822 der er nogle gange, men ikke altid, den resultat af blot et humant programmør ikke 593 00:26:36,822 --> 00:26:39,280 indse, oh shoot, er der faktisk denne fjerde scenarie. 594 00:26:39,280 --> 00:26:41,650 Og hvis du ikke skrive kode til at håndtere dette scenario, 595 00:26:41,650 --> 00:26:43,220 nogle gange er du ikke kender hvad computeren kan gøre. 596 00:26:43,220 --> 00:26:44,770 Og faktisk et program kan gå ned. 597 00:26:44,770 --> 00:26:47,550 >> Men i dette tilfælde, tænkte jeg om det, og jeg sagde, ellers holde op, 598 00:26:47,550 --> 00:26:49,850 fordi det er den fjerde logisk muligt scenario. 599 00:26:49,850 --> 00:26:51,950 Lad os nu bare tilføje nogle ordforråd så vi 600 00:26:51,950 --> 00:26:55,320 kan begynde at kaste rundt vilkår, er ellers temmelig intuitiv. 601 00:26:55,320 --> 00:26:57,870 Alle de ting, jeg har bare fremhævet med gult her, 602 00:26:57,870 --> 00:27:00,140 Jeg bare til funktioner eller procedurer. 603 00:27:00,140 --> 00:27:01,590 De er bare slags handlinger. 604 00:27:01,590 --> 00:27:04,900 Så afhente, åben for, se på, ring, åben, åben, 605 00:27:04,900 --> 00:27:09,170 quit-- disse er blot handlinger, eller vi får kalde dem mere formelt, funktioner. 606 00:27:09,170 --> 00:27:11,410 >> I mellemtiden, nu i gul, Jeg har fremhævet ting 607 00:27:11,410 --> 00:27:14,084 at-- lad os bare begynde at kalde dem betingelser eller filialer. 608 00:27:14,084 --> 00:27:16,750 Disse er beslutningspunkter hvor du kan gå på denne måde, denne måde, 609 00:27:16,750 --> 00:27:18,100 eller en anden retning stadig. 610 00:27:18,100 --> 00:27:19,430 Så dem vil være betingelser. 611 00:27:19,430 --> 00:27:20,930 Og nu denne ene er lidt mere avanceret. 612 00:27:20,930 --> 00:27:24,600 Lad os kalde disse spørgsmål Boolske udtryk, 613 00:27:24,600 --> 00:27:26,530 efter en person med en sidste navn Bool. 614 00:27:26,530 --> 00:27:28,340 >> Og en boolesk udtryk er bare noget 615 00:27:28,340 --> 00:27:30,290 det er enten sandt eller falsk, ja eller nej. 616 00:27:30,290 --> 00:27:35,870 Så det er spørgsmålet, hvis svar du holder af, således at i en tilstand 617 00:27:35,870 --> 00:27:39,210 gøre en decision-- komme tilbage et svar, og derefter gå til venstre eller højre, eller noget 618 00:27:39,210 --> 00:27:40,450 helt andet. 619 00:27:40,450 --> 00:27:42,860 >> Og så endelig, disse linjer her-- gå tilbage 620 00:27:42,860 --> 00:27:44,737 til trin to, gå tilbage at træde to-- vi kunne 621 00:27:44,737 --> 00:27:46,320 gennemføre denne idé på forskellige måder. 622 00:27:46,320 --> 00:27:49,028 Og så dem af jer med erfaring med programmering kunne have gjort 623 00:27:49,028 --> 00:27:50,670 eller kan forestille sig at gøre dette anderledes. 624 00:27:50,670 --> 00:27:53,170 Men for nutidens formål, det er bare tanken om, at der betyder noget. 625 00:27:53,170 --> 00:27:55,400 Dette er inducerende hvad vi generelt kalder 626 00:27:55,400 --> 00:28:00,110 en loop-- en slags cyklus, fordi det gør mig gøre noget igen. 627 00:28:00,110 --> 00:28:03,340 >> Så nu, lad os lige overveje hvor god denne algoritme er. 628 00:28:03,340 --> 00:28:03,899 Det er korrekt. 629 00:28:03,899 --> 00:28:06,940 Hvis Mike i bogen, det er en af disse fire scenarios-- igen og igen 630 00:28:06,940 --> 00:28:08,023 og igen, vil vi finde ham. 631 00:28:08,023 --> 00:28:08,890 Men hvor god er den? 632 00:28:08,890 --> 00:28:10,150 Nå, har vi ikke at være for formel her. 633 00:28:10,150 --> 00:28:12,066 Men lad os bare plot noget, x og y, for at få 634 00:28:12,066 --> 00:28:14,470 en følelse af formen af ​​dette problem. 635 00:28:14,470 --> 00:28:17,160 >> På x-aksen er her størrelsen af ​​mit problem. 636 00:28:17,160 --> 00:28:20,256 Og de en y-aksen her vil være tid til at løse. 637 00:28:20,256 --> 00:28:21,630 Så måske er det antal sider. 638 00:28:21,630 --> 00:28:24,400 Måske er sekunder eller side turns-- hvad. 639 00:28:24,400 --> 00:28:27,290 Men du ønsker at tælle, er hvad dette billede vil repræsentere. 640 00:28:27,290 --> 00:28:30,630 Og det første algoritme, jeg har tænkt mig at beskrive som bare en lige linje. 641 00:28:30,630 --> 00:28:33,120 Hvis der er n sider i telefonbogen, så er det 642 00:28:33,120 --> 00:28:36,010 kan tage mig som mange som n trin for at finde Mike. 643 00:28:36,010 --> 00:28:38,930 Hvis Verizon eller teleselskabet tilføjer én side mere næste år, 644 00:28:38,930 --> 00:28:42,170 det kan tage mig endnu step-- en mere enhed af tid til at finde Mike. 645 00:28:42,170 --> 00:28:44,230 Så der er bare denne ene til en forhold. 646 00:28:44,230 --> 00:28:45,970 Det er en lige linje hældning. 647 00:28:45,970 --> 00:28:49,110 >> I mellemtiden, at anden algorithm-- hvis jeg 648 00:28:49,110 --> 00:28:51,570 han er to ad time-- to, fire, seks, otte eller double-- 649 00:28:51,570 --> 00:28:54,550 går gennem siderne to gange på et tidspunkt, to ad gangen, 650 00:28:54,550 --> 00:28:55,710 det er stadig lige linje. 651 00:28:55,710 --> 00:28:58,720 Der er nu en 01:59 ratio, men en anelse lavere. 652 00:28:58,720 --> 00:29:02,240 Så hvis der er så mange sider på kortet her i gul, 653 00:29:02,240 --> 00:29:04,800 der kunne tage mig dette mange trin eller sekunder, 654 00:29:04,800 --> 00:29:07,980 ellers det vil tage mig dobbelt så mange på den røde linje. 655 00:29:07,980 --> 00:29:10,190 >> Men den grønne linje er den virkelige takeaway. 656 00:29:10,190 --> 00:29:12,290 Dette er, hvad vi generelt kalde en logorithm-- log 657 00:29:12,290 --> 00:29:13,840 af n, hvor n er antallet af sider. 658 00:29:13,840 --> 00:29:16,450 Men det er formen, der betyder noget i dag, fordi vi ikke har 659 00:29:16,450 --> 00:29:17,950 til selv synes om plotte punkter. 660 00:29:17,950 --> 00:29:19,830 >> Tænk en ekstrem situation. 661 00:29:19,830 --> 00:29:23,070 Antag Verizon morgen fordobler antallet af sider i den telefonbog, 662 00:29:23,070 --> 00:29:24,900 fra 1.000 til 2.000. 663 00:29:24,900 --> 00:29:28,440 I den første algoritme, jeg kan spilde en ekstra 1.000 664 00:29:28,440 --> 00:29:32,080 trin efter Mike, bare fordi Verizon fordoblet størrelsen af ​​bogen. 665 00:29:32,080 --> 00:29:34,740 Den anden algorithm-- det måske tage mig en ekstra 500 trin. 666 00:29:34,740 --> 00:29:38,370 1.000 flere sider, jeg går to på en time-- 500 flere trin for at finde Mike. 667 00:29:38,370 --> 00:29:41,020 >> Men det tredje algoritme er slags magisk. 668 00:29:41,020 --> 00:29:44,270 Verizon fordobler antallet sider fra 1000 til 2000, 669 00:29:44,270 --> 00:29:47,730 men hvor mange flere skridt gør det tage mig at kigge efter Mike? 670 00:29:47,730 --> 00:29:51,220 Det er bare en, fordi jeg kan bare rive telefonbogen én mere tid 671 00:29:51,220 --> 00:29:55,280 fra en 2.000 side problem for et 1000 side problem, og voila. 672 00:29:55,280 --> 00:29:57,030 Jeg har taget en massiv bid af det. 673 00:29:57,030 --> 00:29:59,405 >> Og hvis du går virkelig ekstrem, antage, at telefonbogen 674 00:29:59,405 --> 00:30:03,600 Selskabet havde noget crazy ligesom en 4 milliarder side telefonbog. 675 00:30:03,600 --> 00:30:07,020 Nå, hvor mange trin kan det tage at finde Mike Smith i en 4 milliarder 676 00:30:07,020 --> 00:30:09,990 side telefonbog? 677 00:30:09,990 --> 00:30:16,450 Det er et stort tal, men kun 4 milliarder til 2 milliarder til at 1 milliarder til at 500 millioner, 678 00:30:16,450 --> 00:30:18,720 250 million-- stadig lyder som store tal, 679 00:30:18,720 --> 00:30:20,980 men jeg er meget hurtigt komme til mindre værdier. 680 00:30:20,980 --> 00:30:24,790 >> Og i virkeligheden, hvis jeg gør det math ret, jeg kan kun opdele 4 milliarder 681 00:30:24,790 --> 00:30:28,750 med omkring 32 gange før Jeg kommer ned til bare én. 682 00:30:28,750 --> 00:30:31,640 Så hvis det telefonbog var 4 milliard sider lang, nogen big deal. 683 00:30:31,640 --> 00:30:35,270 Inden for et par sekunder, måske 32 sekund, jeg kunne dele det på midten 684 00:30:35,270 --> 00:30:39,560 og til sidst finde Mike eller konkludere, at han ikke er der. 685 00:30:39,560 --> 00:30:42,219 Og det er essensen af ​​en algorithm-- en god algoritme. 686 00:30:42,219 --> 00:30:44,260 Og det er en af ​​de mål for en klasse som denne, 687 00:30:44,260 --> 00:30:47,350 forsøger at finde ud af, hvordan gør jeg løse problemet ikke blot korrekt, 688 00:30:47,350 --> 00:30:52,360 som jeg altid vidste, hvordan man gør det ene side, men korrekt og godt på en time--. 689 00:30:52,360 --> 00:30:55,034 Hvordan designer jeg godt løsninger på problemer? 690 00:30:55,034 --> 00:30:57,200 Så lad os tage et øjeblik her og give dig en fornemmelse nu 691 00:30:57,200 --> 00:31:00,260 af CS50 kurset itself-- introducere et par kursets medarbejdere. 692 00:31:00,260 --> 00:31:02,010 Lige før 02:00, vil vi tage en kort pause 693 00:31:02,010 --> 00:31:03,520 så de af jer der er shopping kan 694 00:31:03,520 --> 00:31:05,130 ænder ud og tage en se på nogle andre klasse 695 00:31:05,130 --> 00:31:06,580 og se resten af ​​dette online. 696 00:31:06,580 --> 00:31:09,250 Men for nu, lad mig præsentere CS50, klassen selv, 697 00:31:09,250 --> 00:31:11,330 og især hvad der er nyt. 698 00:31:11,330 --> 00:31:13,960 >> Så den sidste forår, vi brugt ganske lidt af time-- 699 00:31:13,960 --> 00:31:17,911 kursets personale og jeg-- tænkning om, hvad det er, vi ønsker CS50 at være, 700 00:31:17,911 --> 00:31:19,910 og går tilbage til første principper, så at sige, 701 00:31:19,910 --> 00:31:22,760 at overveje, hvad det er, vi ønsker dette kursus til at ligne og være 702 00:31:22,760 --> 00:31:23,740 lignende for sine elever. 703 00:31:23,740 --> 00:31:26,480 Og så kan du se i problemer sæt nul så godt, en invitation 704 00:31:26,480 --> 00:31:28,780 at tage et kig på det URL der opsummerer 705 00:31:28,780 --> 00:31:33,270 nogle af motiverne bag følgende karakteristika efteråret 2016. 706 00:31:33,270 --> 00:31:35,570 >> Så som du måske har forstået fra TL: DR handout, 707 00:31:35,570 --> 00:31:39,060 pensum i dag samt fra kursuskataloget, i år i CS50, 708 00:31:39,060 --> 00:31:42,540 du kun forventes at deltage today-- så arbejde godt done-- 709 00:31:42,540 --> 00:31:45,960 og den sidste forelæsning den 21. November. 710 00:31:45,960 --> 00:31:49,150 Og du er velkommen, men forventes ikke at deltage i disse foredrag i midten, 711 00:31:49,150 --> 00:31:51,180 fordi det, vi laver i år, er at skyde 712 00:31:51,180 --> 00:31:52,661 i realtid kursets materiale. 713 00:31:52,661 --> 00:31:54,660 Så alt vil forblive aktuelle og indarbejdet 714 00:31:54,660 --> 00:31:57,410 så godt vi can-- aktuelle begivenheder og samtaler, folk måske 715 00:31:57,410 --> 00:32:00,400 være at have i industrien i verden, men gør dette materiale 716 00:32:00,400 --> 00:32:03,892 rådighed, som et resultat, selv earlier-- komplet med fuld tekst udskrifter 717 00:32:03,892 --> 00:32:05,850 og søgning i og links til andre ressourcer. 718 00:32:05,850 --> 00:32:07,930 >> Og ja, vi har været hævder i nogen tid 719 00:32:07,930 --> 00:32:10,830 og vi nu tro det, at vi kan skabe, digitalt, 720 00:32:10,830 --> 00:32:15,170 en mere fordybende, en mere overbevisende pædagogiske erfaring, i modsætning 721 00:32:15,170 --> 00:32:19,110 at indsamle her nogle 23 gange personligt, høre en som mig 722 00:32:19,110 --> 00:32:22,925 blot taler om datalogi, i modsætning til at engagere sig mere aktivt. 723 00:32:22,925 --> 00:32:25,800 Så du kan se i kursets pensum en skitse af semestret her, 724 00:32:25,800 --> 00:32:27,840 sammen med, når foredrag vil blive filmet, som du er 725 00:32:27,840 --> 00:32:29,710 velkommen, men forventes ikke, og når de vil 726 00:32:29,710 --> 00:32:31,640 frigives på kursets hjemmeside. 727 00:32:31,640 --> 00:32:34,300 >> Og hvad vi vil gøre her på Onsdage starter næste uge, 728 00:32:34,300 --> 00:32:37,362 er meget mere intimt, med kun de folk, der ønsker at deltage, 729 00:32:37,362 --> 00:32:39,820 er en såkaldt gåtur gennem, hvor jeg og kursets hoveder 730 00:32:39,820 --> 00:32:41,730 vil faktisk gøre tingene lidt mere intim 731 00:32:41,730 --> 00:32:44,313 hernede i orkestret afsnit, har stadig nogle teknologi 732 00:32:44,313 --> 00:32:46,365 og gå gennem nuværende uges problem sæt, 733 00:32:46,365 --> 00:32:50,020 og tilbyder dig particularly-- hvis blandt de mindre comfortable-- desto mere 734 00:32:50,020 --> 00:32:52,790 vejledning, som du måske ønsker eller brug for ugens udfordring. 735 00:32:52,790 --> 00:32:55,820 Og på samme måde, for dem, der ikke kan deltage dem personligt, nogen big deal. 736 00:32:55,820 --> 00:32:58,486 Der vil tilsvarende blive ledet af en af ​​kursets ledende medarbejdere, 737 00:32:58,486 --> 00:33:02,650 Zamalya, samme mulighed indlejret i problemet sætter selv. 738 00:33:02,650 --> 00:33:04,960 >> Problem sætter i år vil blive frigivet om fredagen 739 00:33:04,960 --> 00:33:08,080 og ikke længere gøre syv dage senere, men 10 dage later-- bevidst 740 00:33:08,080 --> 00:33:10,910 overlappende med hvert problem indstillet, således at man bedre plads, 741 00:33:10,910 --> 00:33:13,050 Vi håber, ebbe og flod i de studerendes skemaer, 742 00:33:13,050 --> 00:33:16,550 især når midterms eller atletik eller akademikere eller extracurriculars 743 00:33:16,550 --> 00:33:18,465 tendens til at komme og gå især mid-semester. 744 00:33:18,465 --> 00:33:21,340 Det burde give dig lidt mere skøn med hensyn til, om du foran 745 00:33:21,340 --> 00:33:25,690 indlæse din uge med CS50 eller ryg belastning det på den følgende weekend i stedet. 746 00:33:25,690 --> 00:33:28,817 Så se til kursets pensum her for tidsplanen heraf. 747 00:33:28,817 --> 00:33:30,900 Og du vil opdage også blandt ændringerne i år, 748 00:33:30,900 --> 00:33:34,082 for dem mere fortrolige med programmering i fortiden, 749 00:33:34,082 --> 00:33:36,290 vi starter semestret som vi vil i dag i Scratch, 750 00:33:36,290 --> 00:33:39,730 fokus især på sproget kaldet C, og derefter overgangen ikke 751 00:33:39,730 --> 00:33:43,430 til PHP, men til et sprog kaldet Python mod slutningen af ​​semestret 752 00:33:43,430 --> 00:33:46,565 i forbindelse med web programmering, sammen med SQL og JavaScript, 753 00:33:46,565 --> 00:33:48,930 HTML, CSS, og endnu mere. 754 00:33:48,930 --> 00:33:51,790 >> Og som svar på en FAQ, det er faktisk tilfældet 755 00:33:51,790 --> 00:33:55,520 at CS er ikke så skræmmende som jeg engang troede, det var, men det er så meget arbejde 756 00:33:55,520 --> 00:33:57,280 som jeg havde hørt det kunne være. 757 00:33:57,280 --> 00:34:03,210 Men det er det sige at her er nogle statistik fra efteråret 2015 studerende, 758 00:34:03,210 --> 00:34:06,460 hvorved de vandrette blå linjer repræsenterer det gennemsnitlige antal timer 759 00:34:06,460 --> 00:34:06,960 rapporteret. 760 00:34:06,960 --> 00:34:10,570 Og du vil se et gennemsnit på seks til 10 til 12-- måske 16 761 00:34:10,570 --> 00:34:14,580 eller så og så videre, men med høj varians skal være klar. 762 00:34:14,580 --> 00:34:18,570 Og så indse, at der ikke kun er studerende mere komfortabel og mindre 763 00:34:18,570 --> 00:34:22,150 behageligt i løbet, men en tilsvarende støtte 764 00:34:22,150 --> 00:34:25,699 struktur til at få de studerende gennem semestret med succes. 765 00:34:25,699 --> 00:34:29,409 >> Ja, i svar på en FAQ, bør du tager CS50 som første år? 766 00:34:29,409 --> 00:34:30,139 Absolut. 767 00:34:30,139 --> 00:34:32,690 Og i virkeligheden, jeg fortryder ikke har fundet min vej 768 00:34:32,690 --> 00:34:35,170 eller fundet et nyt felt det første år samt. 769 00:34:35,170 --> 00:34:39,149 Og skulle du tage CS50 med andre kurser, sikkert som well-- 770 00:34:39,149 --> 00:34:41,940 og den generelle råd, vi måske give de studerende, at CS50 er nok 771 00:34:41,940 --> 00:34:44,929 ikke den slags klasse eller intro klasse at du bør tage med tre 772 00:34:44,929 --> 00:34:47,199 anden eller fire andre p-sæt klasser. 773 00:34:47,199 --> 00:34:50,583 Men hvis du tager to andre p-sæt klasser, noget andet, og CS50, 774 00:34:50,583 --> 00:34:51,499 absolut overskueligt. 775 00:34:51,499 --> 00:34:54,900 Jeg har haft mange studerende i tidligere gjort det ganske vellykket. 776 00:34:54,900 --> 00:34:57,490 >> Og for at få dig mod at afslutte linje med succes, 777 00:34:57,490 --> 00:35:00,260 har kurset have sections-- forskellige spor for studerende 778 00:35:00,260 --> 00:35:03,100 mindre behagelig, mere komfortabel, og midt imellem, 779 00:35:03,100 --> 00:35:04,850 hvorved i kursets første problem sæt, 780 00:35:04,850 --> 00:35:06,360 vil du blive bedt om at beskrive dig selv. 781 00:35:06,360 --> 00:35:09,151 Og hvis du er blandt de mindre behageligt, det er den slags ting 782 00:35:09,151 --> 00:35:10,420 at du bare hellere vide. 783 00:35:10,420 --> 00:35:13,010 Og ja, der har været den voksende demografisk i CS50 784 00:35:13,010 --> 00:35:14,090 for et par år. 785 00:35:14,090 --> 00:35:17,680 >> Som i sidste efterår for eksempel 58% af klassen 786 00:35:17,680 --> 00:35:20,560 beskrev sig selv som blandt dem mindre behagelig, 787 00:35:20,560 --> 00:35:23,210 med 9% blandt dem mere komfortabel, og derefter 788 00:35:23,210 --> 00:35:25,900 de andre studerende der i rød beskriver sig selv 789 00:35:25,900 --> 00:35:27,890 som et sted midt imellem. 790 00:35:27,890 --> 00:35:31,980 Og du vil se her emnerne samlet og tidsplan af sektioner, som alle 791 00:35:31,980 --> 00:35:34,820 udbydes i person, i real tid, med kursets 792 00:35:34,820 --> 00:35:38,320 fantastisk personale af undervisning stipendiater og selvfølgelig assistenter, hvoraf nogle 793 00:35:38,320 --> 00:35:39,660 du vil mødes på bare et øjeblik. 794 00:35:39,660 --> 00:35:42,993 >> Sektioner selv, som du vil se, vil være mandage og tirsdage og onsdage, 795 00:35:42,993 --> 00:35:45,910 således at du kan dykke i efter engagerende, hvis du 796 00:35:45,910 --> 00:35:48,110 vælger, i kursets foredrag tidligere i denne uge. 797 00:35:48,110 --> 00:35:51,420 Og så kontortid, som sikkert, med hvert år, 798 00:35:51,420 --> 00:35:54,110 har været ikke mindre af en udfordre for kurset. 799 00:35:54,110 --> 00:35:57,040 Og i år, vi planlægger ikke kun i embedet hours-- en 800 00:35:57,040 --> 00:36:00,300 på en muligheder for hjælp til studerende på onsdage torsdage 801 00:36:00,300 --> 00:36:03,790 og søndage, den sidste af dem, være om eftermiddagen ved design 802 00:36:03,790 --> 00:36:06,910 at reducere nogle af de stress, der uvægerligt opstår med sen nat 803 00:36:06,910 --> 00:36:10,180 p-settting med frist looming-- men kontortid vil også blive tilbudt 804 00:36:10,180 --> 00:36:14,920 på mandage og tirsdage og Onsdage og fredage og lørdage, 805 00:36:14,920 --> 00:36:17,080 takket være vores venner på HSA. 806 00:36:17,080 --> 00:36:20,330 >> CS50 har nu sin egen plads for studerende og CS50 personale, 807 00:36:20,330 --> 00:36:23,070 på toppen 67 Mount Auburn Street, lige der i Harvard Square. 808 00:36:23,070 --> 00:36:26,340 Visionen for det er, at CS50 s TF'er og CA'er hele ugen, 809 00:36:26,340 --> 00:36:29,052 temmelig meget i det meste dag, vil være der for støtte. 810 00:36:29,052 --> 00:36:30,760 Så hvis du har fået nogle spørgsmål på en p-sæt 811 00:36:30,760 --> 00:36:33,093 eller du føler lidt blokeret eller lidt forvirret, 812 00:36:33,093 --> 00:36:35,640 og dælen, du har fået en time eller en halv time mellem klasser, 813 00:36:35,640 --> 00:36:38,920 især i square-- kan du pop i og har dette spørgsmål besvaret 814 00:36:38,920 --> 00:36:41,720 af har denne forvirring clarified-- meget i ånden, 815 00:36:41,720 --> 00:36:45,490 du er fortrolig, i matematik afdelingens egen matematiske spørgsmål center, 816 00:36:45,490 --> 00:36:49,300 men temmelig meget døgnet per rundt [? Gcal?], At vi vil bogføre online. 817 00:36:49,300 --> 00:36:52,400 >> Undervisning er også tilgængelig for dem studerende, frit fra kursets 818 00:36:52,400 --> 00:36:54,750 eget personale, hvis du ønsker mere intim en på én, 819 00:36:54,750 --> 00:36:58,940 eller to eller tre klassekammerater kun, arbejder med en af ​​kursets medarbejdere. 820 00:36:58,940 --> 00:37:02,320 Og ja, disse her er bare nogle af kursets medarbejdere, 821 00:37:02,320 --> 00:37:04,120 et par af hvem du vil mødes i et øjeblik. 822 00:37:04,120 --> 00:37:07,440 Faktisk CS50 egen hoved undervisning fyr, 823 00:37:07,440 --> 00:37:09,790 og hoved kursus assistent, og gurus 824 00:37:09,790 --> 00:37:12,998 kunne komme videre op, tillade dem til at sige hej. 825 00:37:12,998 --> 00:37:22,498 >> [BIFALD] 826 00:37:22,498 --> 00:37:23,456 SPEAKER 1: [uhørligt]. 827 00:37:23,456 --> 00:37:51,842 828 00:37:51,842 --> 00:37:57,856 >> [BIFALD] 829 00:37:57,856 --> 00:37:58,814 SPEAKER 2: [uhørligt]. 830 00:37:58,814 --> 00:38:17,240 831 00:38:17,240 --> 00:38:27,238 >> [BIFALD] 832 00:38:27,238 --> 00:38:28,196 SPEAKER 3: [uhørligt]. 833 00:38:28,196 --> 00:38:58,951 834 00:38:58,951 --> 00:39:03,120 >> [BIFALD] 835 00:39:03,120 --> 00:39:06,740 >> DAVID MALAN: Og tillade os at bringe ombord to af CS50 mest 836 00:39:06,740 --> 00:39:09,730 ledende medarbejdere, Rob og Zamayla så godt. 837 00:39:09,730 --> 00:39:15,120 >> [BIFALD] 838 00:39:15,120 --> 00:39:17,226 >> Faktisk både Rob og Zamayla har været med os 839 00:39:17,226 --> 00:39:19,940 så længe, ​​at jeg var i stand at gå ind i CS50 arkiv 840 00:39:19,940 --> 00:39:22,470 og finde denne meget SD optagelser af dem, der deltager 841 00:39:22,470 --> 00:39:25,402 på scenen selv for nogle år siden. 842 00:39:25,402 --> 00:39:26,110 ROB: [uhørligt]. 843 00:39:26,110 --> 00:39:53,660 844 00:39:53,660 --> 00:39:59,247 >> [BIFALD] 845 00:39:59,247 --> 00:40:00,080 ZAMAYLA: [uhørligt] 846 00:40:00,080 --> 00:40:50,888 847 00:40:50,888 --> 00:40:52,467 >> [BIFALD] 848 00:40:52,467 --> 00:40:53,425 DAVID MALAN: Tak. 849 00:40:53,425 --> 00:40:56,160 850 00:40:56,160 --> 00:40:58,030 Så ud over disse teammedlemmer her, 851 00:40:58,030 --> 00:41:01,662 CS50 har et team af næsten 100 medarbejdere, som alle 852 00:41:01,662 --> 00:41:04,370 vil være til rådighed for sektioner og kontortid og så meget mere. 853 00:41:04,370 --> 00:41:06,920 Og som Rob siger også, det er den mest betydningsfulde eftersyn 854 00:41:06,920 --> 00:41:09,534 af CS50 i de 10 år, der Jeg har været i [uhørligt]. 855 00:41:09,534 --> 00:41:12,200 [Uhørligt] fokuseret specielt i tilvejebringelse af en støttestruktur, 856 00:41:12,200 --> 00:41:14,050 trimning væk en masse hovedparten, der har været 857 00:41:14,050 --> 00:41:16,870 akkumuleret i 10 år iterative udvikling 858 00:41:16,870 --> 00:41:18,120 på kursets problemet sæt. 859 00:41:18,120 --> 00:41:21,470 >> Så i år, ikke kun i klassen, men også i form af kurset problem 860 00:41:21,470 --> 00:41:24,800 sæt, bør du finde ting til være mere strømlinet, trimmer, meget 861 00:41:24,800 --> 00:41:26,700 mere overskueligt end i de forløbne år, som vi 862 00:41:26,700 --> 00:41:31,330 kaste noget af den bagage, der er udviklet af natur udviklende år 863 00:41:31,330 --> 00:41:32,970 efter år og iteration. 864 00:41:32,970 --> 00:41:35,110 Så den nye og forbedrede begynder i dag. 865 00:41:35,110 --> 00:41:37,860 >> Du vil møde nogle flere af kursus personale i [uhørligt] 866 00:41:37,860 --> 00:41:40,186 2:30, hvor vi tjener, som en tradition, kage. 867 00:41:40,186 --> 00:41:42,060 Der er lidt mere kage end det, men du vil 868 00:41:42,060 --> 00:41:44,690 Mød Erin og Tobias og andre stadig. 869 00:41:44,690 --> 00:41:46,470 Og lad mig give dig en tur før vi hører 870 00:41:46,470 --> 00:41:49,600 fra nogle af de andre ansatte i klassen af ​​hvad der venter så godt. 871 00:41:49,600 --> 00:41:52,730 Faktisk starter vi altid CS50 s semester denne kommende lørdag, 872 00:41:52,730 --> 00:41:54,330 med det, der hedder CS50 Puzzle Day. 873 00:41:54,330 --> 00:41:56,710 >> Det har intet at gøre med datalogi per se, 874 00:41:56,710 --> 00:41:58,669 men med ca. problem løse mere generelt. 875 00:41:58,669 --> 00:42:01,210 Og hvis du vælger at deltage, pr nogle af invitationer, 876 00:42:01,210 --> 00:42:03,460 du måske har set dør tabes eller på scenen her, 877 00:42:03,460 --> 00:42:05,830 det er en mulighed i teams af to eller tre eller fire, 878 00:42:05,830 --> 00:42:10,680 at deltage for gåder og pizza og præmier og more-- denne lørdag, 879 00:42:10,680 --> 00:42:12,560 stay tuned for mere. 880 00:42:12,560 --> 00:42:15,082 >> Du kan finde alt for, at alle Fredag ​​på Fire and Ice, 881 00:42:15,082 --> 00:42:16,790 gør CS50 bringe en hel masse elever 882 00:42:16,790 --> 00:42:19,100 til frokost, for at gøre en stor klasse føler sig mere intimt, 883 00:42:19,100 --> 00:42:21,820 og generelt samle alumner og venner fra industrien 884 00:42:21,820 --> 00:42:24,710 at tale om, hvad de har været op til siden afgangseksamen. 885 00:42:24,710 --> 00:42:27,820 Ligeledes i år, vil vi indvie den første nogensinde CS50 50 886 00:42:27,820 --> 00:42:31,390 kodning contest-- en mid-semester mulighed for at tillade alle 887 00:42:31,390 --> 00:42:35,430 på en opt-in grundlag, at have en udfordring for vid og sans over for klassekammerater, 888 00:42:35,430 --> 00:42:39,250 igen i hold af to eller tre eller fire, ved hjælp af kun at programmeringen 889 00:42:39,250 --> 00:42:41,920 kyndige, at du derefter har under bæltet efter blot seks eller syv 890 00:42:41,920 --> 00:42:44,710 uge af klassen, og de deltagende i denne form for konkurrence 891 00:42:44,710 --> 00:42:50,261 online-- hvis du ønsker at finpudse din egen færdigheder desto mere i denne udfordring. 892 00:42:50,261 --> 00:42:52,760 I slutningen af ​​semestret er den såkaldte CS50 Hackathon-- 893 00:42:52,760 --> 00:42:56,970 en mulighed, der begynder ved 7:00 PM slutter ved 7:00, og undervejs 894 00:42:56,970 --> 00:43:01,900 er 12 aften timer til at dykke ind kursets endelige project-- 895 00:43:01,900 --> 00:43:04,820 en mulighed for at designe og gennemføre de fleste noget af interesse 896 00:43:04,820 --> 00:43:06,980 til dig med din undervisning stipendiat vejledning. 897 00:43:06,980 --> 00:43:09,600 Omkring 9:00 gør vi typisk tjene pizza, 01:00, 898 00:43:09,600 --> 00:43:13,210 Philippes, og de få af os der er stadig vågen på 05:00, 899 00:43:13,210 --> 00:43:16,310 er shuttle bussed ned vejen til IHOP til morgenmad. 900 00:43:16,310 --> 00:43:19,340 >> Og så et par dage senere er den såkaldte CS50 fare-- 901 00:43:19,340 --> 00:43:23,450 en ende af semester udstilling i fejringen af, hvor langt så mange 902 00:43:23,450 --> 00:43:28,200 af CS50 studerende er kommet fra uge nul hele vejen til uge, 903 00:43:28,200 --> 00:43:32,610 og holde sig for øje, at 73% af dem, klassekammerater og dine år har 904 00:43:32,610 --> 00:43:34,840 aldrig taget en CS klasse før. 905 00:43:34,840 --> 00:43:39,226 Faktisk igen understreger så meget, her er nogle flere ansigter fra CS50 personale. 906 00:43:39,226 --> 00:43:40,184 SPEAKER 4: [uhørligt]. 907 00:43:40,184 --> 00:43:45,909 908 00:43:45,909 --> 00:43:46,867 SPEAKER 5: [uhørligt]. 909 00:43:46,867 --> 00:43:51,332 910 00:43:51,332 --> 00:43:52,290 SPEAKER 6: [uhørligt]. 911 00:43:52,290 --> 00:43:55,276 912 00:43:55,276 --> 00:43:56,234 SPEAKER 7: [uhørligt]. 913 00:43:56,234 --> 00:44:01,727 914 00:44:01,727 --> 00:44:02,643 SPEAKER 8: [uhørligt] 915 00:44:02,643 --> 00:44:10,066 916 00:44:10,066 --> 00:44:11,024 SPEAKER 9: [uhørligt]. 917 00:44:11,024 --> 00:44:14,475 918 00:44:14,475 --> 00:44:15,461 >> SPEAKER 4: [uhørligt]. 919 00:44:15,461 --> 00:44:16,461 >> SPEAKER 10: [uhørligt]. 920 00:44:16,461 --> 00:44:21,456 921 00:44:21,456 --> 00:44:23,438 SPEAKER 11: [uhørligt]. 922 00:44:23,438 --> 00:44:24,438 SPEAKER 12: [uhørligt]. 923 00:44:24,438 --> 00:44:30,438 924 00:44:30,438 --> 00:44:31,396 SPEAKER 13: [uhørligt] 925 00:44:31,396 --> 00:44:37,360 926 00:44:37,360 --> 00:44:40,342 >> SPEAKER 14: [uhørligt]. 927 00:44:40,342 --> 00:44:42,863 >> SPEAKER 13: [uhørligt]. 928 00:44:42,863 --> 00:44:43,821 SPEAKER 15: [uhørligt] 929 00:44:43,821 --> 00:44:48,785 930 00:44:48,785 --> 00:44:49,785 SPEAKER 16: [uhørligt]. 931 00:44:49,785 --> 00:44:53,761 932 00:44:53,761 --> 00:44:55,252 >> SPEAKER 11: [uhørligt] 933 00:44:55,252 --> 00:44:57,773 934 00:44:57,773 --> 00:44:58,731 SPEAKER 5: [uhørligt]. 935 00:44:58,731 --> 00:45:11,250 936 00:45:11,250 --> 00:45:15,130 DAVID MALAN: Nogle af holdet selv er shopping klasser. 937 00:45:15,130 --> 00:45:17,760 Men hvis de medlemmer af CS50 personale er her, 938 00:45:17,760 --> 00:45:19,230 kunne komme videre op for bare et øjeblik. 939 00:45:19,230 --> 00:45:23,450 CS50 er TF'er og CA og [? personale?] medlemmer her-- disse er blot nogle få 940 00:45:23,450 --> 00:45:28,880 af den faces-- en af ​​hvem du bare så, og et par other-- og et par andre 941 00:45:28,880 --> 00:45:30,020 stadig. 942 00:45:30,020 --> 00:45:33,242 Skal vi ikke gå videre og tillade jer en fem minutters pause. 943 00:45:33,242 --> 00:45:35,450 Hvis du skal ænder ud til shop klasser, det er fint. 944 00:45:35,450 --> 00:45:38,900 Og i fem minutter, vil vi genoptage, tage et kig på Scratch-- den første 945 00:45:38,900 --> 00:45:42,420 af vores programmeringssprog, mødes kursets personalet her nogle flere, 946 00:45:42,420 --> 00:45:45,020 og fokus i sidste ende på problemet sæt nul. 947 00:45:45,020 --> 00:45:46,710 Så vi vil være tilbage i fem minutter. 1 00:45:46,864 --> 00:45:47,370 >> Okay. 2 00:45:47,370 --> 00:45:48,590 Så vi er tilbage. 3 00:45:48,590 --> 00:45:51,330 Og i vores resterende tid i dag, målet 4 00:45:51,330 --> 00:45:54,320 er at skabe lige vilkår i form af nogle terminologi, 5 00:45:54,320 --> 00:45:55,297 i form af nogle ideer. 6 00:45:55,297 --> 00:45:57,380 Fordi ja, som pr nogle af hitlisterne tidligere, 7 00:45:57,380 --> 00:46:00,130 Der vil være en række niveauer af erfaring i klassen, 8 00:46:00,130 --> 00:46:03,210 nogle af hvis studerende har taget nogle programmering før, 9 00:46:03,210 --> 00:46:04,200 hvoraf nogle har ikke. 10 00:46:04,200 --> 00:46:07,430 Og så med denne første problem sæt og med denne første sprog 11 00:46:07,430 --> 00:46:10,830 har vi en mulighed for at starte at tage for givet efter i dag 12 00:46:10,830 --> 00:46:12,960 nogle fælles ordforråd og idé. 13 00:46:12,960 --> 00:46:15,590 >> Og vi vil gøre det ved hjælp af kursets første languages-- 14 00:46:15,590 --> 00:46:21,070 udover C og Python og JavaScript og SQL og HTML og CSS, 15 00:46:21,070 --> 00:46:24,450 vi vil fokusere oprindeligt og bare for problemet sæt nul 16 00:46:24,450 --> 00:46:28,160 på denne grafiske sprog, kaldet Scratch, udviklet af MIT'S Media Lab 17 00:46:28,160 --> 00:46:30,880 ned ad vejen, for at hjælpe studerende og børn især 18 00:46:30,880 --> 00:46:35,070 udtrykke sig algorithmically-- på en måde, mere i overensstemmelse med, hvad 19 00:46:35,070 --> 00:46:37,300 vi kunne kalde beregningsmæssige tænkning. 20 00:46:37,300 --> 00:46:40,985 >> Og det er en nyttig sprog, fordi meget hurtigt næste uge i uge en, 21 00:46:40,985 --> 00:46:44,360 vi overgangen til en mere traditionelle og mystiske sprog kaldet 22 00:46:44,360 --> 00:46:46,370 C, som er rent tekstmæssige. 23 00:46:46,370 --> 00:46:48,930 Du bruger kun tastaturet i For at skrive instruktioner 24 00:46:48,930 --> 00:46:50,230 som disse på skærmen. 25 00:46:50,230 --> 00:46:52,840 Men selv hvis du har aldrig set et programmeringssprog før, 26 00:46:52,840 --> 00:46:55,170 i bare et blik på dette, alle være det kryptiske, 27 00:46:55,170 --> 00:47:00,010 kan du sikkert gætte, at sandsynligvis udskriver Hello World. 28 00:47:00,010 --> 00:47:02,050 Men der er en masse syntaktisk overliggende der. 29 00:47:02,050 --> 00:47:05,770 Der er den underlige hash symbol eller hash tag op øverst. 30 00:47:05,770 --> 00:47:08,900 Der er de vinkelbeslag, nogle parenteser, krøllede parenteser, semi-colon-- 31 00:47:08,900 --> 00:47:11,880 der er bare så meget visuel syntaks, der kommer i vejen. 32 00:47:11,880 --> 00:47:13,940 Vi starter kurset med Scratch så for at få 33 00:47:13,940 --> 00:47:17,600 forbi alle de intellektuelt uinteressante distraktioner, 34 00:47:17,600 --> 00:47:20,290 og i stedet fokusere på ideerne. 35 00:47:20,290 --> 00:47:22,540 >> Faktisk kan det være før. 36 00:47:22,540 --> 00:47:24,830 Dette, for dette, skal uge være efter. 37 00:47:24,830 --> 00:47:26,760 Dette, i denne grafiske sprog Scratch, 38 00:47:26,760 --> 00:47:29,870 er, hvordan du vil gennemføre denne samme program-- et program, når det køres, 39 00:47:29,870 --> 00:47:31,340 simpelthen siger hej verden. 40 00:47:31,340 --> 00:47:34,740 Og hvad er rart om Scratch er at det er denne grafiske programmering 41 00:47:34,740 --> 00:47:38,780 miljø, der anvender puslespilsbrikker eller blokke, at kun sammenlåse sammen 42 00:47:38,780 --> 00:47:40,440 hvis det giver logisk mening at gøre det. 43 00:47:40,440 --> 00:47:43,810 Og med Scratch kan du udvikle animationer og interaktive spil 44 00:47:43,810 --> 00:47:47,270 og kunst, samt en række ting, som du kan forestille sig i dit eget sind, 45 00:47:47,270 --> 00:47:51,200 og gennemføre dem blot ved trække og slippe puslespilsbrikker. 46 00:47:51,200 --> 00:47:54,265 >> Og ja, vi har evnen at udtrykke nogle af de samme ideer 47 00:47:54,265 --> 00:47:56,890 at jeg lige har nævnt et øjeblik siden i forbindelse med Mike Smith 48 00:47:56,890 --> 00:48:00,670 og søger en telefon book-- ting lignende funktioner, bare handlinger, 49 00:48:00,670 --> 00:48:03,070 ting som løkker, der gør ting igen og igen, 50 00:48:03,070 --> 00:48:05,170 variabler, som er noget, vi vil indføre, 51 00:48:05,170 --> 00:48:08,086 men det er velkendt måske fra algebra-- blot en slags pladsholder 52 00:48:08,086 --> 00:48:10,840 at lagre en vis værdi, du måske brug later-- boolske udtryk, 53 00:48:10,840 --> 00:48:13,720 hvor dem nej eller sand falske spørgsmål fra før. 54 00:48:13,720 --> 00:48:17,117 Betingelser er de gafler i road-- disse filialer så at sige. 55 00:48:17,117 --> 00:48:19,700 Og så er der nogle mere avanceret funktioner, vi vil se selv i dag, 56 00:48:19,700 --> 00:48:22,850 kaldet arrays og tråde og begivenheder, at vi vil så vende i løbet af 57 00:48:22,850 --> 00:48:24,460 tid på forskellige sprog. 58 00:48:24,460 --> 00:48:26,790 Men Scratch giver os til at udforske alle disse. 59 00:48:26,790 --> 00:48:30,779 Så her i Scratch, denne lilla blok er, hvad en funktion er typisk 60 00:48:30,779 --> 00:48:31,570 vil se ud. 61 00:48:31,570 --> 00:48:35,620 Denne lilla brik, der har nogle ord som siger, som er den handling, 62 00:48:35,620 --> 00:48:38,490 og så kan det have en argument eller en parameter-- anden måde 63 00:48:38,490 --> 00:48:41,140 af slags tilpasning hvad denne blok gør 64 00:48:41,140 --> 00:48:45,182 så det er ikke på forhånd bestemt af MIT hvad denne lilla blok siger. 65 00:48:45,182 --> 00:48:47,390 Faktisk vil du se i en øjeblik, at jeg er i stand til at skrive 66 00:48:47,390 --> 00:48:49,931 de ord som hej verden, eller hej David, eller goddag Zamayla, 67 00:48:49,931 --> 00:48:53,750 eller hvad jeg vil, i det argument til at puslespillet piece-- den hvide boks 68 00:48:53,750 --> 00:48:54,251 der. 69 00:48:54,251 --> 00:48:57,166 I mellemtiden, hvis jeg vil have en løkke, vil vi se, at der er puslespilsbrikker, der 70 00:48:57,166 --> 00:48:58,640 se en lille orange som denne. 71 00:48:58,640 --> 00:49:01,690 Og deres form antyder slags, at der sker noget igen og igen 72 00:49:01,690 --> 00:49:02,680 i en cyklus. 73 00:49:02,680 --> 00:49:06,800 >> Så hvis jeg wrap en sige hej verden blok med et evigt blokere i Scratch, 74 00:49:06,800 --> 00:49:10,307 det bare at gå til med at sige hej verden for altid, helt bogstaveligt. 75 00:49:10,307 --> 00:49:12,390 I mellemtiden er der en anden type loop i Scratch 76 00:49:12,390 --> 00:49:14,348 at vi vil see-- en gentagelse block-- hvor, hvis du 77 00:49:14,348 --> 00:49:17,940 vide på forhånd, hvor mange gange du vil have løkken til at udføre 78 00:49:17,940 --> 00:49:21,850 et endeligt antal gange fact-- dig kan angive, at ved at skrive i en række 79 00:49:21,850 --> 00:49:25,380 eller endda tilslutte en variabel, ligesom x eller y, som vi vil se. 80 00:49:25,380 --> 00:49:27,690 >> Faktisk variabler som Jeg i denne sag, som 81 00:49:27,690 --> 00:49:30,109 er en fælles betegnelse for en heltalsvariabel, der 82 00:49:30,109 --> 00:49:31,900 bare gemmer en number-- et helt tal måtte være, 83 00:49:31,900 --> 00:49:35,470 at bruge denne appelsin blok her til sætte en variabel som jeg til nul. 84 00:49:35,470 --> 00:49:38,900 Her er et eksempel på grønne af en Boolsk udtryk i Scratch. 85 00:49:38,900 --> 00:49:43,700 Selvom dette ligner en matematik formel, matematiske uligheder som denne 86 00:49:43,700 --> 00:49:45,320 virkelig er booleske udtryk. 87 00:49:45,320 --> 00:49:46,570 Dette er enten sand eller falsk. 88 00:49:46,570 --> 00:49:48,300 Jeg er mindre end 50. 89 00:49:48,300 --> 00:49:51,815 Det er enten et ja eller nej svar eller sand eller falsk svar. 90 00:49:51,815 --> 00:49:53,940 Og vi vil generelt kalde disse boolske udtryk. 91 00:49:53,940 --> 00:49:55,148 Og det behøver ikke at være 50. 92 00:49:55,148 --> 00:49:57,970 Det kan være x mindre end y, større end y, lig med y-- 93 00:49:57,970 --> 00:50:00,020 hvilket som helst antal andre spørgsmål kan blive bedt om. 94 00:50:00,020 --> 00:50:03,250 >> Nu, ved første øjekast, kan det se ud pludselig ganske fed her, og det er. 95 00:50:03,250 --> 00:50:06,540 Men konceptet klogt, det er temmelig velkendt fra før. 96 00:50:06,540 --> 00:50:09,370 Hvis x er mindre end y, end sige så meget. 97 00:50:09,370 --> 00:50:12,230 Else hvis x er større end y, så siger så meget. 98 00:50:12,230 --> 00:50:14,260 Else sige x er lig med y. 99 00:50:14,260 --> 00:50:17,220 Så vi har et eksempel der af en tredje scenario-- 100 00:50:17,220 --> 00:50:20,600 den eneste tredje possibility-- x er enten større end, mindre end eller lig med. 101 00:50:20,600 --> 00:50:22,420 Så vi har en tre måde gaffel i vejen. 102 00:50:22,420 --> 00:50:26,290 >> Og mærke til, hvad er cool her-- Scratch, det synes, har kun én puslespil 103 00:50:26,290 --> 00:50:28,840 brik, i dette tilfælde, i hvis ellers blok. 104 00:50:28,840 --> 00:50:32,090 Og dog, der synes at antyde, du kan kun har en to måde gaffel i vejen. 105 00:50:32,090 --> 00:50:34,631 Du kan gå til venstre eller højre, men hvad med det tredje scenarie? 106 00:50:34,631 --> 00:50:35,760 Hvad hvis x er lig med y? 107 00:50:35,760 --> 00:50:36,500 Ikke noget særligt. 108 00:50:36,500 --> 00:50:39,640 Tag en puslespilsbrik, sætte en anden inde i den 109 00:50:39,640 --> 00:50:45,759 at skabe den semantiske ækvivalent om hvis, ellers hvis, else-- og nu du 110 00:50:45,759 --> 00:50:47,300 har din tre måde gaffel i vejen. 111 00:50:47,300 --> 00:50:49,091 Og som vi skal se, det Scratch puslespilsbrikker 112 00:50:49,091 --> 00:50:51,820 kan strækkes og vokse, så som at proppe flere ting i dem. 113 00:50:51,820 --> 00:50:54,420 Du behøver ikke at passe alt på sin standard størrelse. 114 00:50:54,420 --> 00:50:56,690 >> Det er noget vi får snart se kaldes et array. 115 00:50:56,690 --> 00:51:00,880 Det er ligesom en list-- en måde at lagring af flere stykker information 116 00:51:00,880 --> 00:51:02,886 i en variabel, ikke blot et tal. 117 00:51:02,886 --> 00:51:05,760 Disse vil vi se en repræsentant for noget, der hedder multi-threading. 118 00:51:05,760 --> 00:51:08,280 Faktisk alle dine Mac'er og pc'er i disse dage 119 00:51:08,280 --> 00:51:10,810 støtte multi-threading, hvilket betyder at du kan bogstaveligt 120 00:51:10,810 --> 00:51:12,390 gøre flere ting ad gangen. 121 00:51:12,390 --> 00:51:15,390 Du kan have Microsoft Word op i forgrunden, der arbejder på nogle essay. 122 00:51:15,390 --> 00:51:17,160 Du har måske en browser i baggrunden åbning 123 00:51:17,160 --> 00:51:18,720 G-mail eller Facebook eller lignende. 124 00:51:18,720 --> 00:51:22,730 Din computer kan gøre flere ting dag, fordi det er multi-threaded, 125 00:51:22,730 --> 00:51:26,390 og programmer, de er i på Især er også multi-gevind. 126 00:51:26,390 --> 00:51:28,970 >> Der er ting kaldet begivenheder som godt i verden af ​​Scratch, 127 00:51:28,970 --> 00:51:32,640 og så er der en måde også, at gøre vores egne brugerdefinerede puslespilsbrikker, hvis tingene 128 00:51:32,640 --> 00:51:34,810 faktisk ikke eksisterer på forhånd. 129 00:51:34,810 --> 00:51:38,260 Så lad os motivere dette som følger. 130 00:51:38,260 --> 00:51:40,580 For nogle år siden, da jeg først opdaget Scratch, 131 00:51:40,580 --> 00:51:43,530 da jeg var faktisk en grad studerende på MIT, vi 132 00:51:43,530 --> 00:51:45,640 selv fik til opgave at lave lektier. 133 00:51:45,640 --> 00:51:47,614 Og jeg implemented-- der, set i bakspejlet, 134 00:51:47,614 --> 00:51:50,780 var en meget dårlig beslutning, fordi det er den mest oprørende sang i verden 135 00:51:50,780 --> 00:51:53,321 at lytte til i otte timer mens du arbejder på din homework-- 136 00:51:53,321 --> 00:51:57,180 men noget jeg havde kaldt Oscar Time, der er måske en velkendt sang. 137 00:51:57,180 --> 00:51:59,820 >> CS50s ejer Jordan Hayashi, en af vores mere ledende medarbejdere, 138 00:51:59,820 --> 00:52:03,920 har opgraderet det for 2015 og nu 2016 da tilbage i dag, 139 00:52:03,920 --> 00:52:06,610 Jeg havde alt bare ind i Oscars papirkurven. 140 00:52:06,610 --> 00:52:09,320 Nu støtter vi genanvendelse og kompostering. 141 00:52:09,320 --> 00:52:12,050 >> Men at male billedet af, hvad vi kan gøre her 142 00:52:12,050 --> 00:52:14,130 og at motivere nogle af eksemplerne lavere niveau, 143 00:52:14,130 --> 00:52:16,400 kunne vi få en anden frivillige til netop kommet på op 144 00:52:16,400 --> 00:52:18,331 og spille min første hjemmeopgave nogensinde? 145 00:52:18,331 --> 00:52:18,830 Kom op. 146 00:52:18,830 --> 00:52:19,250 Hvad hedder du? 147 00:52:19,250 --> 00:52:20,030 >> HENRY: Henry. 148 00:52:20,030 --> 00:52:22,660 >> DAVID MALAN: Henry, kom op. 149 00:52:22,660 --> 00:52:24,190 Kom op. 150 00:52:24,190 --> 00:52:27,070 Gå enten måde, og du kan se i et øjeblik, 151 00:52:27,070 --> 00:52:29,870 Jeg har tænkt mig at gå videre og ramte grønt flag i øverste højre 152 00:52:29,870 --> 00:52:31,100 hjørnet, hvilket betyder gå. 153 00:52:31,100 --> 00:52:33,320 Ikonet lille stopskilt vil sige stop, 154 00:52:33,320 --> 00:52:35,490 og det er når du starter og stoppe programmet. 155 00:52:35,490 --> 00:52:36,450 Rart at møde dig. 156 00:52:36,450 --> 00:52:36,950 Okay. 157 00:52:36,950 --> 00:52:39,100 Så vi kommer til at se vejledningen på skærmen i et øjeblik. 158 00:52:39,100 --> 00:52:41,450 Og netop ved at spille dette spil for et par seconds-- tro mig, 159 00:52:41,450 --> 00:52:43,670 Vi vil ikke ønsker at spille hele vejen til den end-- du vil 160 00:52:43,670 --> 00:52:45,470 få en fornemmelse af, hvad programmet gør. 161 00:52:45,470 --> 00:52:49,170 Og mere end blot fokusere på Henry være god eller dårlig på dette spil, fokus 162 00:52:49,170 --> 00:52:52,600 og hvordan var det gennemført af mig oprindeligt og derefter ved Jordan. 163 00:52:52,600 --> 00:52:54,640 Med andre ord, hvor er de variabler? 164 00:52:54,640 --> 00:52:55,520 Hvor er loops? 165 00:52:55,520 --> 00:52:56,520 Hvor er de funktioner? 166 00:52:56,520 --> 00:53:00,700 Og vi vil se, om vi ikke kan se dem under emhætten. 167 00:53:00,700 --> 00:53:03,660 >> Bare klik og træk trash til den passende beholder. 168 00:53:03,660 --> 00:54:02,100 >> [MUSIK AFSPILLER] 169 00:54:02,100 --> 00:54:02,600 Okay. 170 00:54:02,600 --> 00:54:03,160 Det er rigtig godt. 171 00:54:03,160 --> 00:54:04,286 Hvorfor har vi ikke stoppe det der. 172 00:54:04,286 --> 00:54:04,786 Tak. 173 00:54:04,786 --> 00:54:05,830 Tillykke til Henry. 174 00:54:05,830 --> 00:54:07,002 Tak. 175 00:54:07,002 --> 00:54:10,690 >> [BIFALD] 176 00:54:10,690 --> 00:54:12,450 >> Forestil debugging programmet. 177 00:54:12,450 --> 00:54:15,880 Hvis der er et problem to minutter inde i song-- men så 178 00:54:15,880 --> 00:54:17,430 hvad der foregår her egentlig? 179 00:54:17,430 --> 00:54:20,900 Så kompliceret som det måske begynder at synes at komme over tid, 180 00:54:20,900 --> 00:54:22,910 faktisk mere og mere ting begyndte at falde, 181 00:54:22,910 --> 00:54:25,370 hvad der er interessant ved denne form for example-- 182 00:54:25,370 --> 00:54:27,270 og vi vil se et par others-- er, at hvis du 183 00:54:27,270 --> 00:54:30,416 kigge forbi kompleksitet eller sofistikerede af spillet, 184 00:54:30,416 --> 00:54:33,040 der er en meget enkel bygning blokke, der play-- som alle, 185 00:54:33,040 --> 00:54:35,840 hvis du destillere dem til dem, byggesten, er meget tilgængelige 186 00:54:35,840 --> 00:54:37,401 og implementerbar for sig selv. 187 00:54:37,401 --> 00:54:39,150 For eksempel er det været et stykke tid, men jeg er 188 00:54:39,150 --> 00:54:42,900 temmelig sikker på, hvad jeg oprindeligt gjorde, da gør dette spil for første gang 189 00:54:42,900 --> 00:54:44,787 var jeg helt ligesom forhalet. 190 00:54:44,787 --> 00:54:47,120 Jeg fokuserede ikke på alle på logik eller puslespilsbrikker, 191 00:54:47,120 --> 00:54:50,810 Jeg fokuserede på grafik og fund gaden post og papirkurven 192 00:54:50,810 --> 00:54:51,540 og alt dette. 193 00:54:51,540 --> 00:54:53,456 Men de var nødvendige ingredienser i første omgang. 194 00:54:53,456 --> 00:54:57,220 Og når jeg færdig procrastinating og udstikker rammerne overordnede, 195 00:54:57,220 --> 00:55:00,337 Jeg besluttede, lad mig lige gøre en stykke trash falde fra himlen. 196 00:55:00,337 --> 00:55:02,170 Og vi vil se Scratch understøtter ting kaldet 197 00:55:02,170 --> 00:55:06,386 sprites-- tegn, der kan har forskellige kostumer på, så de 198 00:55:06,386 --> 00:55:07,010 se anderledes ud. 199 00:55:07,010 --> 00:55:09,660 >> Og så sætter jeg en papirkurv kostume på en sådan sprite. 200 00:55:09,660 --> 00:55:12,007 Og jeg bare havde brug for det at falde fra himlen. 201 00:55:12,007 --> 00:55:14,590 Og så viser det sig, Scratch, ligesom de fleste programmeringssprog, 202 00:55:14,590 --> 00:55:18,099 understøtter tilfældige tal eller teknisk pseudokode tilfældige tal, 203 00:55:18,099 --> 00:55:20,390 således at ved at trække og droppe visse puslespilsbrikker, 204 00:55:20,390 --> 00:55:22,890 Jeg var i stand til at have papirkurven kommer fra venstre i første omgang. 205 00:55:22,890 --> 00:55:25,580 Og så næste gang det faldt, fra højre og derefter fra midten. 206 00:55:25,580 --> 00:55:28,060 Og hele spillet gjorde var bare har papirkurven falder ned fra himlen. 207 00:55:28,060 --> 00:55:29,770 Du kunne ikke pege på det, eller klik på det. 208 00:55:29,770 --> 00:55:31,103 Du kunne ikke åbne papirkurven. 209 00:55:31,103 --> 00:55:32,160 Du kunne ikke gøre noget. 210 00:55:32,160 --> 00:55:34,450 Men det var en baby skridt mod min ultimative vision. 211 00:55:34,450 --> 00:55:36,720 >> Og efter det, jeg faktisk gennemført en slags 212 00:55:36,720 --> 00:55:41,230 af sensing, så hvis du har klik og træk på det stykke af papirkurven 213 00:55:41,230 --> 00:55:44,350 over papirkurven, Oscars låg ville åbne og lukke. 214 00:55:44,350 --> 00:55:47,650 Intet ville ske til papirkurven, men mindst låget ville åbne og lukke. 215 00:55:47,650 --> 00:55:49,642 Så tjek, trin to af to. 216 00:55:49,642 --> 00:55:52,100 Og det er, hvad der kommer til at være nøgle i begge problem sæt nul 217 00:55:52,100 --> 00:55:55,970 og i programmeringen mere generelt er at tage disse meget bevidste baby skridt. 218 00:55:55,970 --> 00:55:59,390 Fordi ikke kun det tillader dig at føler ærligt opnået meget mere 219 00:55:59,390 --> 00:56:01,250 quickly-- det er den værste i verden 220 00:56:01,250 --> 00:56:06,149 at forsøge at gennemføre alle Oscar Time, derefter timer senere ramte den grønne flag, 221 00:56:06,149 --> 00:56:08,440 og intet fungerer som forventet fordi hvor vil du selv 222 00:56:08,440 --> 00:56:11,150 begynder at debug eller fejlfinding det program? 223 00:56:11,150 --> 00:56:12,470 Det er bare overvældende. 224 00:56:12,470 --> 00:56:16,792 >> Og så virkelig omfavne denne idé tage steps-- baby skridt igen 225 00:56:16,792 --> 00:56:19,000 og igen-- opbygge noget, der er, i sidste ende, 226 00:56:19,000 --> 00:56:23,672 virkelig imponerende og komplekse, men i første omgang, er ikke nær så meget så. 227 00:56:23,672 --> 00:56:24,630 Faktisk, lad os gøre det. 228 00:56:24,630 --> 00:56:28,989 Lad mig gå videre og-- Scratch selv findes på internettet på Scratch.MIT.edu, 229 00:56:28,989 --> 00:56:30,780 og du vil blive fortalt som meget igen i problemer 230 00:56:30,780 --> 00:56:34,200 sæt nul, specifikationen for som allerede er på CS50 hjemmeside. 231 00:56:34,200 --> 00:56:35,725 >> Men dette er hvad Skrab selv er. 232 00:56:35,725 --> 00:56:38,210 Og der er virkelig bare tre primære områder. 233 00:56:38,210 --> 00:56:40,980 Øverst til venstre er der er den såkaldte fase. 234 00:56:40,980 --> 00:56:41,810 Dette er Scratch. 235 00:56:41,810 --> 00:56:43,710 Standard kostume er en kat. 236 00:56:43,710 --> 00:56:46,950 Og dette er den rektangulære verden i som du kan move-- op, ned, venstre, 237 00:56:46,950 --> 00:56:48,130 højre og nogle andre ting. 238 00:56:48,130 --> 00:56:51,839 I midten her er vores kategorier eller vores paller af puslespilsbrikker, 239 00:56:51,839 --> 00:56:53,630 og forskellige farver betyde forskellige ting. 240 00:56:53,630 --> 00:56:56,520 Og hvis du stikke rundt, vil du se ting som loops og betingelser 241 00:56:56,520 --> 00:56:58,160 og variabler og andre ingredienser. 242 00:56:58,160 --> 00:57:00,060 >> Og så herovre er scripts område. 243 00:57:00,060 --> 00:57:03,020 Det er her, jeg kan trække og slippe disse puslespilsbrikker til at gøre ting. 244 00:57:03,020 --> 00:57:04,690 Så lad os gøre en sådan ting. 245 00:57:04,690 --> 00:57:06,630 Lad mig gå videre og-- og jeg ved, hvor det er. 246 00:57:06,630 --> 00:57:10,110 Så jeg har tænkt mig til straks at klikke på hvor jeg ved tingene er klar til at blive, 247 00:57:10,110 --> 00:57:13,140 men pege og klikke og rode rundt er uundgåelige. 248 00:57:13,140 --> 00:57:15,320 Så når grønt flag klikkede, hvad ønsker jeg at gøre? 249 00:57:15,320 --> 00:57:17,100 Jeg har tænkt mig at gøre dette. 250 00:57:17,100 --> 00:57:20,699 Jeg har tænkt mig at trække denne lilla puslespil stykke, sige hej i to sekunder, 251 00:57:20,699 --> 00:57:21,490 og lad mig zoome ind. 252 00:57:21,490 --> 00:57:23,865 >> Og jeg har tænkt mig at ændre dette at være, hvad jeg vil have det til være-- 253 00:57:23,865 --> 00:57:26,471 hej verden i to sekunder er fint. 254 00:57:26,471 --> 00:57:28,970 Nu, jeg har tænkt mig at klikke på grønt flag, eller hvis jeg virkelig ønsker, 255 00:57:28,970 --> 00:57:31,820 Jeg kan fuldt screene det og derefter vende tilbage. 256 00:57:31,820 --> 00:57:34,060 Det vil bare holde alt i ét vindue. 257 00:57:34,060 --> 00:57:36,141 Grøn flag-- hej verden. 258 00:57:36,141 --> 00:57:36,640 Okay. 259 00:57:36,640 --> 00:57:38,789 Ikke alt, interessant. 260 00:57:38,789 --> 00:57:40,080 Så lad mig gå videre og gøre dette. 261 00:57:40,080 --> 00:57:41,038 Lad mig prøve en anden. 262 00:57:41,038 --> 00:57:44,740 Når grønt flag clicked-- lad os gøre noget som en lyd. 263 00:57:44,740 --> 00:57:46,880 Og bemærke, at ud af boksen gratis, du får 264 00:57:46,880 --> 00:57:49,910 en kat lyd, som er standard sprite. 265 00:57:49,910 --> 00:57:52,380 Så nu lade mig gå videre og ramte den grønne flag nu. 266 00:57:52,380 --> 00:57:53,224 >> [Mjavende] 267 00:57:53,224 --> 00:57:54,490 >> Aw. 268 00:57:54,490 --> 00:57:55,370 Det er yndig. 269 00:57:55,370 --> 00:57:57,040 Jeg programmering. 270 00:57:57,040 --> 00:57:58,550 Så hvad har jeg gjort? 271 00:57:58,550 --> 00:58:00,430 Dette svarer til et program. 272 00:58:00,430 --> 00:58:01,600 Det er selvfølgelig super enkel. 273 00:58:01,600 --> 00:58:05,300 Det gjorde ikke virkelig tage så meget indsats og MIT gjorde det meste af arbejdet, 274 00:58:05,300 --> 00:58:07,890 men jeg har kaldt en funktion. 275 00:58:07,890 --> 00:58:08,940 Jeg har brugt en funktion. 276 00:58:08,940 --> 00:58:12,480 Jeg har lavet nogle foranstaltninger, ved hjælp af blot at en lilla brik. 277 00:58:12,480 --> 00:58:15,960 >> Tja, hvis jeg ønsker at gøre tre mijaver i træk? 278 00:58:15,960 --> 00:58:18,570 Lad mig gå videre og gøre to og tre. 279 00:58:18,570 --> 00:58:20,910 Og bemærke, at når du svæve i nærheden en puslespilsbrik, 280 00:58:20,910 --> 00:58:22,970 en lille hvid streg slags magnetisk, 281 00:58:22,970 --> 00:58:25,190 og det vil snap sammen, når du giver slip. 282 00:58:25,190 --> 00:58:26,600 Lad os se hvad der sker her. 283 00:58:26,600 --> 00:58:27,920 >> [Mjavende] 284 00:58:27,920 --> 00:58:32,390 285 00:58:32,390 --> 00:58:34,510 >> Der er en fejl. 286 00:58:34,510 --> 00:58:35,650 Jeg hører kun én meow. 287 00:58:35,650 --> 00:58:37,440 Hvorfor kan det være? 288 00:58:37,440 --> 00:58:39,001 Ja? 289 00:58:39,001 --> 00:58:39,500 Ja. 290 00:58:39,500 --> 00:58:41,650 Vi ved ikke rigtig høre det, men det er godt intuition. 291 00:58:41,650 --> 00:58:43,400 De er alle spiller på samme tid. 292 00:58:43,400 --> 00:58:44,000 Hvorfor? 293 00:58:44,000 --> 00:58:46,587 Nå, er computeren bare at gøre, hvad du fortæller det til at gøre. 294 00:58:46,587 --> 00:58:48,670 Så hvis du siger, spille lyd, afspille lyd, afspille lyd, 295 00:58:48,670 --> 00:58:52,887 men du behøver ikke fortælle det til at spille, indtil du er færdig, spille, indtil du er færdig, 296 00:58:52,887 --> 00:58:54,970 det kommer til at blæse igennem programmet virkelig hurtig 297 00:58:54,970 --> 00:58:56,830 og kun hvad du fortæller det til at gøre. 298 00:58:56,830 --> 00:58:59,040 >> Så jeg faktisk nødt til at fastsætte dette i et par måder. 299 00:58:59,040 --> 00:59:00,623 Jeg kunne bare gøre det, slippe af med dette. 300 00:59:00,623 --> 00:59:04,180 Lad mig prøve denne anden puslespil piece-- afspille lyd meow indtil gjort, 301 00:59:04,180 --> 00:59:07,072 og derefter trække tre af disse og klik på Afspil. 302 00:59:07,072 --> 00:59:09,430 >> [Mjavende] 303 00:59:09,430 --> 00:59:13,350 >> Det er egentlig ikke very-- tak du-- meget naturligt. 304 00:59:13,350 --> 00:59:16,590 Så hvorfor ikke jeg-- lad mig gå til kontrol her. 305 00:59:16,590 --> 00:59:17,090 Pæn. 306 00:59:17,090 --> 00:59:22,230 Vent et sekund, og nu lade mig gå tilbage på lyde og spille lyd indtil gjort, 307 00:59:22,230 --> 00:59:24,620 og lad mig få vente et sekund. 308 00:59:24,620 --> 00:59:28,692 Og så lad mig gå hen og få en mere lyd, og her går vi. 309 00:59:28,692 --> 00:59:31,350 >> [Mjavende] 310 00:59:31,350 --> 00:59:35,930 >> Lidt mere naturligt, men dette er ikke særlig effektiv. 311 00:59:35,930 --> 00:59:39,830 Ligesom jeg var at få keder sig, alle være det kort, klikke frem og tilbage 312 00:59:39,830 --> 00:59:42,724 og virkelig duplikere min work-- temmelig meget kopiere og indsætte. 313 00:59:42,724 --> 00:59:44,640 Ja, hvis jeg Styr klikkede eller højre klikket, 314 00:59:44,640 --> 00:59:46,500 Jeg kunne bare have kopieres og indsættes. 315 00:59:46,500 --> 00:59:49,870 Hvad ville være en bedre konstruere at bruge? 316 00:59:49,870 --> 00:59:51,090 Hvilken idé fra før? 317 00:59:51,090 --> 00:59:51,990 >> Ja, så en løkke. 318 00:59:51,990 --> 00:59:54,580 Og i virkeligheden, hvis vi jordet, vi kan finde præcis det. 319 00:59:54,580 --> 00:59:57,730 Lad mig gå til begivenheder eller snarere Control. 320 00:59:57,730 --> 00:59:59,650 Så repeat-- jeg ikke ønsker det skal være 10 gange. 321 00:59:59,650 --> 01:00:01,370 Det kommer til at få irriterende hurtigt. 322 01:00:01,370 --> 01:00:03,380 Men jeg vil gentage tre gange. 323 01:00:03,380 --> 01:00:06,355 Lad mig gå tilbage til at lyde og afspille lyden, indtil det er gjort. 324 01:00:06,355 --> 01:00:08,480 Lad mig gå tilbage til kontrol og bare vente et sekund. 325 01:00:08,480 --> 01:00:10,271 Og varsel, kan du synes, det passer ikke, 326 01:00:10,271 --> 01:00:13,520 men igen, hvis magnetisk du lader det snap på plads, vil det vokse til at udfylde. 327 01:00:13,520 --> 01:00:14,971 Hvordan er det at spille nu? 328 01:00:14,971 --> 01:00:18,500 >> [Mjavende] 329 01:00:18,500 --> 01:00:19,000 OKAY. 330 01:00:19,000 --> 01:00:19,660 Pæn. 331 01:00:19,660 --> 01:00:22,540 Og det er, hvad der ville blive kaldt et program, der er også korrekt. 332 01:00:22,540 --> 01:00:27,590 Det meowed tre gange temmelig naturligt, men det er bedre designet. 333 01:00:27,590 --> 01:00:29,580 Jeg bruger mindre redundans. 334 01:00:29,580 --> 01:00:30,970 Jeg har ikke kopiere og indsætte noget. 335 01:00:30,970 --> 01:00:32,470 Jeg har lige brugt en bedre idé. 336 01:00:32,470 --> 01:00:35,340 >> Nu, er det stadig ikke alt, interessant med Scratch ikke gør 337 01:00:35,340 --> 01:00:35,930 noget. 338 01:00:35,930 --> 01:00:37,388 Så lad os gøre noget andet i stedet. 339 01:00:37,388 --> 01:00:38,670 Lad os gøre noget for evigt. 340 01:00:38,670 --> 01:00:39,420 Og ved du hvad? 341 01:00:39,420 --> 01:00:40,470 Motion virker interessant. 342 01:00:40,470 --> 01:00:45,760 Lad os få ham til at flytte 10 trin og ramte spille nu. 343 01:00:45,760 --> 01:00:46,570 >> OKAY. 344 01:00:46,570 --> 01:00:49,300 Nå vi kan slags træk ham tilbage, og han er stadig 345 01:00:49,300 --> 01:00:51,250 kører fordi han gør dette for evigt. 346 01:00:51,250 --> 01:00:53,150 Så sløjfen gør hvad det siger at gøre, 347 01:00:53,150 --> 01:00:54,650 men det er ikke alt, interessant. 348 01:00:54,650 --> 01:00:55,310 Lad os gøre det. 349 01:00:55,310 --> 01:00:59,870 Lad mig tilføje en kontrol blok, og bruge en af disse betingelser for første gang. 350 01:00:59,870 --> 01:01:03,119 >> Så det kommer til at flytte 10 steps-- 10 prikker, 10 pixels på screen-- 351 01:01:03,119 --> 01:01:04,660 så det kommer til at stille dette spørgsmål. 352 01:01:04,660 --> 01:01:09,340 Hvis noget er sandt, så gør noget inde i denne blok. 353 01:01:09,340 --> 01:01:13,060 Så det viser sig sensing har en hel bundt af Boolesk expressions-- 354 01:01:13,060 --> 01:01:16,580 spørgsmål af ja nej eller sand falsk form-- lade mig gøre det. 355 01:01:16,580 --> 01:01:19,260 >> Hvis touching-- og så er der denne lille rullemenu. 356 01:01:19,260 --> 01:01:20,410 Jeg kan parametrisere det. 357 01:01:20,410 --> 01:01:23,010 Hvis røre edge-- lad os gøre sådan noget. 358 01:01:23,010 --> 01:01:27,310 Så hvis rører edge-- lad mig gå tilbage til bevægelse. 359 01:01:27,310 --> 01:01:32,281 Og hvorfor gør vi ikke bare vende 180 grader? 360 01:01:32,281 --> 01:01:32,780 Okay. 361 01:01:32,780 --> 01:01:35,070 Så evigt, flytte 10 trin. 362 01:01:35,070 --> 01:01:37,670 Hvis du rører kant, drej 180 grader. 363 01:01:37,670 --> 01:01:39,720 Og det er ikke enden af ​​programmet fordi du er i en evigt blokere, 364 01:01:39,720 --> 01:01:42,053 så det kommer til at gå igen og igen og igen og igen. 365 01:01:42,053 --> 01:01:43,980 Så lad os se hvad der sker. 366 01:01:43,980 --> 01:01:44,785 OKAY. 367 01:01:44,785 --> 01:01:48,270 Lidt buggy, men lidt cool. 368 01:01:48,270 --> 01:01:51,710 >> Og vi kan tilføje til dette nogle dumme ting der er ikke så intellektuelt 369 01:01:51,710 --> 01:01:52,270 interessant. 370 01:01:52,270 --> 01:01:57,210 Men hvis vi ramte denne lille mikrofon button-- ouch. 371 01:01:57,210 --> 01:01:58,480 Lad mig rydde det op. 372 01:01:58,480 --> 01:02:01,540 Lad mig styrke dette som de ville sige på TV. 373 01:02:01,540 --> 01:02:05,400 Rengør det op, Gem, og nu gå op til scripts. 374 01:02:05,400 --> 01:02:07,500 >> Og nu, lad mig gå til lyd. 375 01:02:07,500 --> 01:02:09,002 Lad mig give den et navn. 376 01:02:09,002 --> 01:02:12,440 Jeg ringer denne ouch. 377 01:02:12,440 --> 01:02:13,840 Og nu afspille lyd ouch. 378 01:02:13,840 --> 01:02:16,520 Bemærk det vises i lille rullemenu. 379 01:02:16,520 --> 01:02:17,612 Lad os se. 380 01:02:17,612 --> 01:02:20,444 >> [AV] 381 01:02:20,444 --> 01:02:24,377 >> [LAUGHING] 382 01:02:24,377 --> 01:02:25,835 Men vi kan ændre t hans på flue. 383 01:02:25,835 --> 01:02:28,106 Vi kan være dobbelt så irriterende. 384 01:02:28,106 --> 01:02:31,760 >> [AV] 385 01:02:31,760 --> 01:02:35,332 >> Eller hvis vi gør det gerne 1.000 trin ved en time-- 386 01:02:35,332 --> 01:02:39,900 387 01:02:39,900 --> 01:02:40,670 >> OKAY. 388 01:02:40,670 --> 01:02:42,295 Så vi kommer til at forlade, at man alene. 389 01:02:42,295 --> 01:02:45,290 Så igen, bygge blocks-- I gang med noget super enkel, 390 01:02:45,290 --> 01:02:47,930 og derefter tilsat jeg en funktion, tilføjet en funktion, tilføjet en funktion. 391 01:02:47,930 --> 01:02:50,721 Og jeg behøver ikke længere at bekymre sig om hvordan den første af disse funktioner 392 01:02:50,721 --> 01:02:53,690 blev gennemført som jeg fortsætter til lag ting på toppen. 393 01:02:53,690 --> 01:02:55,430 Så i virkeligheden, så lad mig gøre en anden her. 394 01:02:55,430 --> 01:03:00,580 Lad mig gå videre og åbne en fil, der Jeg bragte i forvejen, kaldet Sheep. 395 01:03:00,580 --> 01:03:03,970 >> Så det har en lidt anden tegn, der ligner dette. 396 01:03:03,970 --> 01:03:07,370 Og lad mig se om jeg ikke kan gøre noget ved anvendelse af en tæller 397 01:03:07,370 --> 01:03:09,310 i dette case-- en såkaldt variabel. 398 01:03:09,310 --> 01:03:15,540 Jeg har tænkt mig at gå videre og under Events-- lad mig få et grønt flag klikkede. 399 01:03:15,540 --> 01:03:19,030 Så lad mig gå til data, som jeg ved fra bare at spille rundt før, 400 01:03:19,030 --> 01:03:20,214 er hvor variabler. 401 01:03:20,214 --> 01:03:21,880 Og jeg har tænkt mig at gå videre og trække dette. 402 01:03:21,880 --> 01:03:25,144 >> Så en variabel kaldet tæller, og Jeg har tænkt mig at initialisere den til nul. 403 01:03:25,144 --> 01:03:27,560 Jeg kan kalde det anything-- x eller y eller z-- men i programmering, 404 01:03:27,560 --> 01:03:30,410 kalde noget i en semantisk nyttig måde, ligesom tæller, 405 01:03:30,410 --> 01:03:34,540 der beskriver, hvad det er, det er en meget nemmere at læse din kode senere. 406 01:03:34,540 --> 01:03:37,460 Lad mig gå videre og få et evigt blokere her. 407 01:03:37,460 --> 01:03:41,289 Og lad mig gå til udseende side og gøre en Say blok. 408 01:03:41,289 --> 01:03:44,330 Men hvad er cool om variabler er jeg behøver ikke at bare skrive noget 409 01:03:44,330 --> 01:03:47,850 ligesom goddag verden, som vi har allerede gjort, kan jeg i stedet gå til data 410 01:03:47,850 --> 01:03:50,690 og trække min variabel, og selv selvom formen ikke helt 411 01:03:50,690 --> 01:03:53,000 ligne det skal passe, det vil vokse til at udfylde. 412 01:03:53,000 --> 01:03:58,396 Og jeg vil bare sige tælleren for en second-- spoiler-- han vil tælle. 413 01:03:58,396 --> 01:04:00,380 Vi vil sige det i et sekund. 414 01:04:00,380 --> 01:04:02,840 Så jeg har tænkt mig at gå og have ham vente et sekund, 415 01:04:02,840 --> 01:04:04,650 så det tæller ikke op for hurtigt. 416 01:04:04,650 --> 01:04:08,430 Og så endelig ændre counter ved en-- med andre ord, 417 01:04:08,430 --> 01:04:13,520 inkrementere tælleren med én yderligere værdi og gøre dette for evigt. 418 01:04:13,520 --> 01:04:16,129 >> Så får også, som en programmør, tæller fra 0. 419 01:04:16,129 --> 01:04:20,350 420 01:04:20,350 --> 01:04:23,740 Og hvis vi venter længe nok, han vil gøre dette for evigt. 421 01:04:23,740 --> 01:04:27,740 Men det er ikke helt sandt, fordi i virkeligheden, så vi vil opdage i uge ét, 422 01:04:27,740 --> 01:04:31,871 heltal og computere mere generelt teknisk kun har en finite-- godt, 423 01:04:31,871 --> 01:04:33,829 snarere computere, når de repræsenterer heltal, 424 01:04:33,829 --> 01:04:35,670 har kun et begrænset antal bit. 425 01:04:35,670 --> 01:04:37,860 Disse pærer der kan kun tælle så højt 426 01:04:37,860 --> 01:04:39,239 før du er ude af pærer. 427 01:04:39,239 --> 01:04:41,590 Og en computer også, kun har så meget hukommelse, 428 01:04:41,590 --> 01:04:44,640 kun har så mange transistorer, så det kan kun tælle så højt. 429 01:04:44,640 --> 01:04:47,409 >> Så det viser sig, at får, Jeg tror, ​​kan tælle til 2 mia 430 01:04:47,409 --> 01:04:48,409 eller noget temmelig store. 431 01:04:48,409 --> 01:04:50,325 Så vi kommer ikke til vente på, at det sker. 432 01:04:50,325 --> 01:04:54,850 Men til sidst nogle fejl vil ske der kan have nogle meget virkelige verden 433 01:04:54,850 --> 01:04:55,970 forgreninger. 434 01:04:55,970 --> 01:04:58,861 Men ud over det får, at bare introducerer en variabel. 435 01:04:58,861 --> 01:05:01,110 Lad os gå videre og åbne op noget jeg lavede på forhånd 436 01:05:01,110 --> 01:05:07,430 her kaldet Pet den Cat-- Pet Cat herovre. 437 01:05:07,430 --> 01:05:10,420 Og bemærke her er det kun få blokke, men når grønt flag 438 01:05:10,420 --> 01:05:12,474 klikkede, evigt at gøre følgende. 439 01:05:12,474 --> 01:05:15,265 Hvis du rører musen pointer-- så markøren på skærmen, 440 01:05:15,265 --> 01:05:18,529 den arrow-- play lyd meow og derefter vente to sekunder. 441 01:05:18,529 --> 01:05:19,570 Og bare gøre det for evigt. 442 01:05:19,570 --> 01:05:22,619 Bare konstant vente at se, om pointer-- 443 01:05:22,619 --> 01:05:24,710 hvis katten rører markøren. 444 01:05:24,710 --> 01:05:26,060 >> Så jeg ramte play. 445 01:05:26,060 --> 01:05:26,920 Intet sker. 446 01:05:26,920 --> 01:05:28,980 Men da jeg flytter markøren over katten, 447 01:05:28,980 --> 01:05:31,960 >> [Mjavende] 448 01:05:31,960 --> 01:05:34,750 >> Og hvis jeg flytter det væk, ikke petting katten længere. 449 01:05:34,750 --> 01:05:38,090 Så nogle betingede logik indlejret i en løkke. 450 01:05:38,090 --> 01:05:43,070 Hvad med dette eksempel, bevidst kaldet Ikke Pet Cat? 451 01:05:43,070 --> 01:05:45,253 Hvad er det kommer til at gøre? 452 01:05:45,253 --> 01:05:47,880 >> [Mjavende] 453 01:05:47,880 --> 01:05:50,215 >> Hvorfor skal du ikke kæle katten? 454 01:05:50,215 --> 01:05:59,440 >> [Mjavende] 455 01:05:59,440 --> 01:06:00,699 >> OKAY. 456 01:06:00,699 --> 01:06:03,880 Så dette er et eksempel på en if andet. 457 01:06:03,880 --> 01:06:06,482 Det er en beslutning, punkt og fordi det sidder i løkken, 458 01:06:06,482 --> 01:06:07,690 de er begge få tjekket. 459 01:06:07,690 --> 01:06:08,280 Er det sandt? 460 01:06:08,280 --> 01:06:08,760 Er det sandt? 461 01:06:08,760 --> 01:06:09,250 Er det sandt? 462 01:06:09,250 --> 01:06:09,791 Er det sandt? 463 01:06:09,791 --> 01:06:11,880 Og til sidst, en af de vil anvende 464 01:06:11,880 --> 01:06:16,480 og så du høre enten meow eller brøl af løven i denne sag. 465 01:06:16,480 --> 01:06:21,400 >> Nå, lad os gøre en lidt mere fancy én at jeg gjorde på forhånd too-- tråde. 466 01:06:21,400 --> 01:06:25,210 Så en tråd er blot én ting, at en computer kan gøre. 467 01:06:25,210 --> 01:06:29,349 Så en multi-threaded program er et program der kan gøre flere ting på én gang. 468 01:06:29,349 --> 01:06:31,140 Og alle disse eksempler hidtil har haft 469 01:06:31,140 --> 01:06:35,980 bare en script, så at speak-- et program som dette op her. 470 01:06:35,980 --> 01:06:38,810 Men bemærke dette program har to sprites, to tegn. 471 01:06:38,810 --> 01:06:40,020 Den ene er en fugl. 472 01:06:40,020 --> 01:06:40,870 Den ene er en kat. 473 01:06:40,870 --> 01:06:45,080 >> Og mærke, når jeg klikker på disse ned venstre, de hver især har deres egne scripts 474 01:06:45,080 --> 01:06:47,120 eller programmer, der er forbundet med dem. 475 01:06:47,120 --> 01:06:49,420 Og begge af dem programmer, varsel, starten 476 01:06:49,420 --> 01:06:52,600 med når grønt flag clicked-- lad os se på den cat-- 477 01:06:52,600 --> 01:06:54,030 når grønne flag klikkes. 478 01:06:54,030 --> 01:06:58,220 Og så ja, da jeg ramte play nu, to ting kommer til at ske på én gang. 479 01:06:58,220 --> 01:07:01,750 Katten og fuglen er både vil fungere samtidig 480 01:07:01,750 --> 01:07:03,815 at skabe denne effekt. 481 01:07:03,815 --> 01:07:05,440 Og du kan forestille dig, hvad der sker. 482 01:07:05,440 --> 01:07:08,340 Der er en løkke og fuglen og katten er i en sløjfe. 483 01:07:08,340 --> 01:07:11,270 Fuglen er bare hoppende ligesom Jeg var før, da jeg sagde ouch. 484 01:07:11,270 --> 01:07:13,040 Men katten har klart en fordel. 485 01:07:13,040 --> 01:07:16,040 Der er en anden sensing blok der peger katten bevidst 486 01:07:16,040 --> 01:07:19,836 til fuglen i dette tilfælde her. 487 01:07:19,836 --> 01:07:22,960 Så vi kunne drille hinanden, ved at se gennem disse blokke, hvad der sker. 488 01:07:22,960 --> 01:07:25,460 Men den vigtigste ingrediens her er en. 489 01:07:25,460 --> 01:07:28,520 Fuglen, således at dette spil er ikke helt boring-- eller denne animation-- 490 01:07:28,520 --> 01:07:30,060 starter ved en tilfældig retning. 491 01:07:30,060 --> 01:07:32,890 Og computeren er picking et tal mellem 90 og 180 492 01:07:32,890 --> 01:07:36,110 væsentlige, så det er en lidt forskellige animation hver gang. 493 01:07:36,110 --> 01:07:39,480 >> Og så mærke til her, hvis det kat rører fuglen, så 494 01:07:39,480 --> 01:07:42,030 spille løven fire sound-- brøl. 495 01:07:42,030 --> 01:07:46,330 Men i mellemtiden i fuglens palet, vi har dette. 496 01:07:46,330 --> 01:07:49,229 Forever, hvis ikke røre katten, bare holde flytte tre trin. 497 01:07:49,229 --> 01:07:50,770 Og så her er en anden brik. 498 01:07:50,770 --> 01:07:52,030 Hvis du er på kanten, hoppe. 499 01:07:52,030 --> 01:07:54,840 Så fuglen er lige slags pasning sin egen virksomhed, 500 01:07:54,840 --> 01:07:57,330 bare flyver rundt og hoppende, og det er virkelig 501 01:07:57,330 --> 01:08:01,780 den kat, der havde den betingede logik at afgøre, om den havde fanget fuglen. 502 01:08:01,780 --> 01:08:02,280 Okay. 503 01:08:02,280 --> 01:08:08,800 Så lad os gøre en anden her, denne ene bliver kaldt Hej Hej Hej. 504 01:08:08,800 --> 01:08:15,100 Og denne ene her gør bare dette i et evigt loop. 505 01:08:15,100 --> 01:08:18,925 Men notice-- hvordan vi stopper dette meget irriterende program? 506 01:08:18,925 --> 01:08:21,600 507 01:08:21,600 --> 01:08:22,640 Hit på mellemrumstasten. 508 01:08:22,640 --> 01:08:27,990 For hvis jeg gør det, venstre program-- 509 01:08:27,990 --> 01:08:31,550 bemærke det er konstant listening-- er nøglen plads pressen. 510 01:08:31,550 --> 01:08:34,090 Hvis mellemrumstasten presset, og hvis ja, hvad gør det? 511 01:08:34,090 --> 01:08:35,980 Det gør en meget almindelig teknik. 512 01:08:35,980 --> 01:08:38,590 Det sætter en variabel svarende til en vis værdi. 513 01:08:38,590 --> 01:08:39,741 Men det skifter denne værdi. 514 01:08:39,741 --> 01:08:41,490 [? Så udseende?] baseret på shape-- I 515 01:08:41,490 --> 01:08:43,160 har en variabel, som jeg skrev på forhånd kaldet 516 01:08:43,160 --> 01:08:44,770 Slået fra, som bare siger ja eller nej. 517 01:08:44,770 --> 01:08:45,880 Er lyden slået fra eller ej? 518 01:08:45,880 --> 01:08:46,990 Sandt eller falsk? 519 01:08:46,990 --> 01:08:51,580 Og varsel, jeg siger denne-- hvis dæmpede er nul, og derefter skifte til en, 520 01:08:51,580 --> 01:08:53,840 ellers sæt mute den til nul. 521 01:08:53,840 --> 01:08:55,540 Så bare vende værdien fra nul til én. 522 01:08:55,540 --> 01:08:58,320 Jeg kunne have done-- ændre det fra to til tre og 01:57 523 01:08:58,320 --> 01:09:00,162 eller 4:56 eller fire til seks. 524 01:09:00,162 --> 01:09:01,870 Men det gør ikke noget hvilke tal jeg bruger, 525 01:09:01,870 --> 01:09:04,090 så længe jeg holder ændre det modsatte. 526 01:09:04,090 --> 01:09:07,290 >> Og de fleste enhver programmør ville bare vælge nul og en-- falsk og sandt, 527 01:09:07,290 --> 01:09:09,510 off og on-- at repræsentere dette. 528 01:09:09,510 --> 01:09:10,930 Og det kører stadig. 529 01:09:10,930 --> 01:09:12,190 Hvis jeg ramte mellemrumstasten igen 530 01:09:12,190 --> 01:09:13,590 >> [SEAL SOUNDS] 531 01:09:13,590 --> 01:09:15,440 >> Programmet kører stadig. 532 01:09:15,440 --> 01:09:18,400 Fordi der er dette andet script der siger, for evigt gøre følgende. 533 01:09:18,400 --> 01:09:21,390 534 01:09:21,390 --> 01:09:24,770 Hvis dæmpet variabel lig zero-- så hvis du ikke er slået 535 01:09:24,770 --> 01:09:29,609 er logic-- hvis det er falsk eller nej, så spiller lyden, 536 01:09:29,609 --> 01:09:30,650 fordi du ikke er slået. 537 01:09:30,650 --> 01:09:33,358 Du bør afspille lyden og derefter tror hi hi hi for to sekunder 538 01:09:33,358 --> 01:09:35,790 og derefter vente, og gøre det igen og igen og igen. 539 01:09:35,790 --> 01:09:40,760 >> Og så på den måde har vi en måde for folk at-- for programmer til at interagere. 540 01:09:40,760 --> 01:09:43,120 Og de behøver ikke at være som dateret som andre. 541 01:09:43,120 --> 01:09:46,280 Faktisk stikke around-- ingen ordspil intended-- 542 01:09:46,280 --> 01:09:49,250 nogen brugt en enorm mængde af tid på internettet gennemføre 543 01:09:49,250 --> 01:09:51,580 PokemonGo i Scratch. 544 01:09:51,580 --> 01:09:55,440 Det geolocates selv du i Cambridge eller Allston her. 545 01:09:55,440 --> 01:10:03,120 Så hvis du ønsker at se alt for, hvad folk kan gøre, er denne-- meget fancy menu. 546 01:10:03,120 --> 01:10:04,780 Klik på her. 547 01:10:04,780 --> 01:10:07,430 >> Det er mig med min piletasterne nu. 548 01:10:07,430 --> 01:10:09,446 Jeg har tænkt mig at gå efter dette. 549 01:10:09,446 --> 01:10:09,946 Klik. 550 01:10:09,946 --> 01:10:12,949 551 01:10:12,949 --> 01:10:14,240 Og nu klikke dig Pokeball. 552 01:10:14,240 --> 01:10:17,130 553 01:10:17,130 --> 01:10:20,260 Jeg mener, jeg tror, ​​du er formodes at klikke på Pokeball. 554 01:10:20,260 --> 01:10:20,760 Okay. 555 01:10:20,760 --> 01:10:22,680 Så jeg gjorde det. 556 01:10:22,680 --> 01:10:23,950 Jeg kan gå over her. 557 01:10:23,950 --> 01:10:27,790 Og denne person implementeret nogle flere Pokeballs end her-- tre Pokeballs. 558 01:10:27,790 --> 01:10:29,950 >> Vi vil sende et link til denne online, så du kan spille. 559 01:10:29,950 --> 01:10:32,364 Men varsel er der bare nogle grundlæggende byggesten. 560 01:10:32,364 --> 01:10:33,780 Det ser meget avanceret, og det er. 561 01:10:33,780 --> 01:10:35,905 Det er imponerende og mere end vi ville typisk 562 01:10:35,905 --> 01:10:37,740 forventer, i hvert fald for problem sæt nul. 563 01:10:37,740 --> 01:10:40,809 Jeg har ingen idé om, hvor lang tid denne person brugt online. 564 01:10:40,809 --> 01:10:41,850 Men det hele er bare en løkke. 565 01:10:41,850 --> 01:10:43,180 Der er en lyd afspilles. 566 01:10:43,180 --> 01:10:44,850 Der er en slags løkke lytte efter, om jeg er 567 01:10:44,850 --> 01:10:47,558 rammer på pil op eller ned pil eller venstre og højre, 568 01:10:47,558 --> 01:10:49,834 og derefter, hvis det er tilfældet, er det at flytte det nogle antallet af pixels. 569 01:10:49,834 --> 01:10:51,750 Og derefter, hvis jeg klikker på en anden sprite, der er 570 01:10:51,750 --> 01:10:53,390 en slags hvis betingelse der. 571 01:10:53,390 --> 01:10:54,806 Ja, det bliver for intens. 572 01:10:54,806 --> 01:10:56,100 Vi kommer til at stoppe. 573 01:10:56,100 --> 01:10:57,750 Det er alle disse grundlæggende byggesten. 574 01:10:57,750 --> 01:11:01,530 Der er ikke andre andre ingredienser end dem, vi har kigget på allerede. 575 01:11:01,530 --> 01:11:04,670 >> Og alligevel her, så lad mig gøre en sidste sæt af eksempler 576 01:11:04,670 --> 01:11:06,960 der tegner et billede for af hvad du kan gøre her. 577 01:11:06,960 --> 01:11:10,481 Her er en meget simpelt program, der bare gør denne-- hoste, hoste, hoste. 578 01:11:10,481 --> 01:11:12,480 Og kun baseret på hvad Vi har kigget på hidtil, 579 01:11:12,480 --> 01:11:14,570 hvor er det oplagte mulighed for forbedringer. 580 01:11:14,570 --> 01:11:15,570 Dette program er korrekt. 581 01:11:15,570 --> 01:11:17,980 Det hoster tre gange, hvilket er, hvad jeg hensigten. 582 01:11:17,980 --> 01:11:19,650 Men det er dårligt gennemført. 583 01:11:19,650 --> 01:11:20,600 Det er dårligt designet. 584 01:11:20,600 --> 01:11:22,000 Hvorfor? 585 01:11:22,000 --> 01:11:22,500 Ja. 586 01:11:22,500 --> 01:11:23,230 Det er ikke en løkke. 587 01:11:23,230 --> 01:11:24,610 Og det er ikke så meget at det ikke er en løkke, 588 01:11:24,610 --> 01:11:26,400 det er, at der er en masse redundans. 589 01:11:26,400 --> 01:11:28,830 Der er kopieret og indsat kode, så at sige. 590 01:11:28,830 --> 01:11:31,830 Og løsningen sandsynligvis er faktisk en løkke. 591 01:11:31,830 --> 01:11:34,350 Så lad mig gå videre og forbedre det. 592 01:11:34,350 --> 01:11:36,250 Og jeg har tænkt mig at trække disse over her. 593 01:11:36,250 --> 01:11:39,986 Lad mig gå videre og få en gentagelse blok, ændre dette til tre. 594 01:11:39,986 --> 01:11:41,860 Jeg har tænkt mig at smide nogle af disse blokke. 595 01:11:41,860 --> 01:11:43,150 >> Og du vil opdage det er temmelig intuitiv. 596 01:11:43,150 --> 01:11:45,691 Du trække og slippe, og tingene og forsvinder med tiden. 597 01:11:45,691 --> 01:11:49,170 Og jeg kan bare trække dette i her og nu har jeg en renere udgave stadig. 598 01:11:49,170 --> 01:11:50,730 Men ved du hvad? 599 01:11:50,730 --> 01:11:52,940 Der er denne mulighed nu for abstraction-- 600 01:11:52,940 --> 01:11:56,350 at begynde at definere nye ordforråd at MIT ikke forudse. 601 01:11:56,350 --> 01:11:59,110 Der er vente og gentag og for evigt, og hvis, 602 01:11:59,110 --> 01:12:02,590 men hvad hvis jeg ønsker at indføre ordet hoste som en blok? 603 01:12:02,590 --> 01:12:06,230 Hvad hvis jeg ønsker et puslespil brik hvis formål i livet er at hoste? 604 01:12:06,230 --> 01:12:10,720 >> Nå, lad os se på denne version her, som jeg gjorde som følger. 605 01:12:10,720 --> 01:12:13,579 Magisk, jeg har skabt denne brik her, 606 01:12:13,579 --> 01:12:14,870 som Scratch tillader dig at gøre. 607 01:12:14,870 --> 01:12:16,787 Og faktisk C og Python og JavaScript er 608 01:12:16,787 --> 01:12:18,370 vil tillade dig at gøre det så godt. 609 01:12:18,370 --> 01:12:21,830 Du kan oprette dine egne brugerdefinerede stykker, som du kalder det, du ønsker. 610 01:12:21,830 --> 01:12:24,890 I dette tilfælde, hoste føles som en rimelig definition. 611 01:12:24,890 --> 01:12:27,880 Og så med disse stykker ned Her kan du definere, hvad det betyder. 612 01:12:27,880 --> 01:12:30,290 >> Jeg slæbte og faldt fra denne palet her-- mere 613 01:12:30,290 --> 01:12:33,500 blocks-- denne store lilla blok, hvor jeg har skrevet i hoste 614 01:12:33,500 --> 01:12:35,290 som navnet på min nye brik. 615 01:12:35,290 --> 01:12:39,920 Og så jeg siger enhver tid en bruger kalder denne nye hoste puslespilsbrik, 616 01:12:39,920 --> 01:12:41,770 gøre indflydelse og en ventetid. 617 01:12:41,770 --> 01:12:46,160 Og så heroppe i min gentage blok, Jeg kan bare hoste tre gange. 618 01:12:46,160 --> 01:12:49,972 >> Og jeg vil hævde, især Hvis nu du skjule denne detalje. 619 01:12:49,972 --> 01:12:51,430 Hvem bekymrer sig, hvordan hoste implementeres? 620 01:12:51,430 --> 01:12:54,390 Alt jeg holder af som en programmør, som jeg kan hoste. 621 01:12:54,390 --> 01:12:56,280 Jeg er ligeglad hvordan siger implementeres. 622 01:12:56,280 --> 01:12:58,620 Jeg ligeglad bare, at den kat kan sige noget. 623 01:12:58,620 --> 01:13:02,720 Jeg kan abstrakt væk, at detaljer og kun fokusere på hvad der er på skærmen her. 624 01:13:02,720 --> 01:13:04,400 Men jeg kan tage et skridt videre. 625 01:13:04,400 --> 01:13:08,070 >> Bemærk, at her, jeg har gennemført sløjfen tre gange. 626 01:13:08,070 --> 01:13:11,560 Men hvad hvis man i stedet jeg gribe denne version? 627 01:13:11,560 --> 01:13:14,640 Og hvad hvis man i stedet i denne version her, 628 01:13:14,640 --> 01:13:18,730 Jeg bare ændre min brik til at tage et argument og input i sig selv? 629 01:13:18,730 --> 01:13:21,100 Og at input kan være et tal som tre. 630 01:13:21,100 --> 01:13:24,580 Så nu, hvis jeg skriver et program og jeg vil have katten til at hoste, 631 01:13:24,580 --> 01:13:28,270 Jeg kan faktisk fortælle puslespillet stykke, hvor mange gange at hoste, 632 01:13:28,270 --> 01:13:31,990 fordi der på bunden her, en amatør version af disse brugerdefinerede puslespilsbrikker 633 01:13:31,990 --> 01:13:34,500 lader mig præcisere, at hoste faktisk tager 634 01:13:34,500 --> 01:13:36,951 en input-- tager et argument som denne. 635 01:13:36,951 --> 01:13:37,700 Og ved du hvad? 636 01:13:37,700 --> 01:13:38,890 Måske jeg indser, vent et øjeblik. 637 01:13:38,890 --> 01:13:40,680 Hoste er same-- det er fundamentalt 638 01:13:40,680 --> 01:13:42,120 den samme idé som nysen. 639 01:13:42,120 --> 01:13:44,040 Det er bare en anden ord på skærmen. 640 01:13:44,040 --> 01:13:46,550 Jeg kan abstrakt væk yderligere og gennemføre 641 01:13:46,550 --> 01:13:48,750 denne endelige udgave af et hoste, som ved første øjekast 642 01:13:48,750 --> 01:13:50,660 er langt mere kompleks leder. 643 01:13:50,660 --> 01:13:52,140 Men mærke til, hvad jeg har gjort. 644 01:13:52,140 --> 01:13:55,930 Jeg har nu generalized-- genericized really-- denne puslespilsbrik 645 01:13:55,930 --> 01:13:59,900 at blive kaldt sige ord n ​​gange. 646 01:13:59,900 --> 01:14:04,410 >> Og nu har jeg to nye puslespilsbrikker hernede definere hoste n gange. 647 01:14:04,410 --> 01:14:06,790 Og hvad betyder det hoste funktionen gøre? 648 01:14:06,790 --> 01:14:08,420 Hvad betyder min brugerdefinerede puslespilsbrik gøre? 649 01:14:08,420 --> 01:14:11,996 Det opfordrer bare sige blok, passerer i det ord, jeg ønsker at sige, 650 01:14:11,996 --> 01:14:13,870 passerer i antallet gange jeg ønsker at sige. 651 01:14:13,870 --> 01:14:18,210 Fordi nu kan jeg implementere nyse ved blot at sige Achoo, 652 01:14:18,210 --> 01:14:20,320 i dette tilfælde nogle antal gange. 653 01:14:20,320 --> 01:14:22,360 >> Og så jeg lagdeling og lagdeling. 654 01:14:22,360 --> 01:14:25,690 Og igen, det centrale her er ikke hvordan jeg implementeret det, men det faktum, 655 01:14:25,690 --> 01:14:28,070 at hvis jeg bare bogstaveligt flytte disse ud af skærmen, 656 01:14:28,070 --> 01:14:31,280 se hvordan enkel, hvis ikke temmelig mit program ser ud nu. 657 01:14:31,280 --> 01:14:33,930 Fordi det gør, hvad det siger, jeg har abstraheret 658 01:14:33,930 --> 01:14:37,640 væk, hvad der er indeni, der sorte boks. Det sker for at være en lilla ramme, 659 01:14:37,640 --> 01:14:41,430 men jeg har blokeret væk hvad der er indeni fordi jeg er ligeglad, hvordan det fungerer. 660 01:14:41,430 --> 01:14:43,650 Jeg bare ligeglad nu, at det virker. 661 01:14:43,650 --> 01:14:46,375 >> Og ja, i problem sæt nul, det er præcis 662 01:14:46,375 --> 01:14:49,250 den slags lagdeling af idéer, du har mulighed for at udforske. 663 01:14:49,250 --> 01:14:53,510 Det er præcis af muligheden for at anvende problemløsning teknikker, 664 01:14:53,510 --> 01:14:55,550 til, hvad der er sandsynligvis en ukendt miljø. 665 01:14:55,550 --> 01:14:57,890 Og om du har ikke programmeret før eller programmeret før, 666 01:14:57,890 --> 01:14:59,500 du opdage, at der er lidt noget 667 01:14:59,500 --> 01:15:00,874 i dette miljø for alle. 668 01:15:00,874 --> 01:15:02,770 Og med problemet sæt en i en uges tid, 669 01:15:02,770 --> 01:15:06,630 vi vil skiftet til fokusering på et højere niveau sprog kaldet 670 01:15:06,630 --> 01:15:09,290 C-- eller snarere en lavere niveau sprog kaldet 671 01:15:09,290 --> 01:15:11,347 C-- der er endnu mere kraftfuld, selv om det er 672 01:15:11,347 --> 01:15:12,930 lidt mere kryptisk ved første øjekast. 673 01:15:12,930 --> 01:15:16,740 >> Og du vil indse per dag TL: DR, at dette problem sæt har en kortere 674 01:15:16,740 --> 01:15:19,880 vindue af tid end fremtidige dem, simpelthen fordi du skal finde det rimeligt 675 01:15:19,880 --> 01:15:20,420 tilgængelig. 676 01:15:20,420 --> 01:15:22,211 Og ikke at bekymre dig, hvis du tilføjer klassen sent. 677 01:15:22,211 --> 01:15:23,920 Vi vil tage fat, at inden længe. 678 01:15:23,920 --> 01:15:28,480 Og før vi udsætte til kage, lad os slut af med blot to minutters udseende 679 01:15:28,480 --> 01:15:30,500 på, hvad der venter dig her i CS50. 680 01:15:30,500 --> 01:15:40,950 681 01:15:40,950 --> 01:17:20,803 [MUSIK AFSPILLER] 682 01:17:20,803 --> 01:17:21,302 Okay. 683 01:17:21,302 --> 01:17:22,690 Det var det for CS50. 684 01:17:22,690 --> 01:17:23,650 Vi vil se dig snart. 685 01:17:23,650 --> 01:17:25,526 Kage er nu serveret. 686 01:17:25,526 --> 01:17:28,998 687 01:17:28,998 --> 01:18:14,267 [MUSIK AFSPILLER] 688 01:18:14,267 --> 01:18:16,350 SPEAKER 17: Har du hørt af et sabbatår, chef? 689 01:18:16,350 --> 01:18:29,490 690 01:18:29,490 --> 01:18:31,920 SPEAKER 18: Måske er der mere under kølerhjelmen. 691 01:18:31,920 --> 01:18:38,279