1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] Nate HARDISON: Kur keni programe të shumta të hapur në një 2 00:00:09,360 --> 00:00:11,250 kompjuter, kjo duket si çdo gjë e 3 00:00:11,250 --> 00:00:12,880 drejtimin në të njëjtën kohë. 4 00:00:12,880 --> 00:00:15,350 Për shembull, ju mund të punojnë në një shfletues web si 5 00:00:15,350 --> 00:00:19,360 Firefox ose Internet Explorer, duke dëgjuar muzikë në iTunes, 6 00:00:19,360 --> 00:00:21,490 dhe shkruar një ese me Word. 7 00:00:21,490 --> 00:00:24,240 Megjithatë, nën kapuç, programet të vërtetë 8 00:00:24,240 --> 00:00:25,830 drejtuar një në një kohë. 9 00:00:25,830 --> 00:00:29,750 Ajo është punë i sistemit operativ, Windows, Mac OSX, ose 10 00:00:29,750 --> 00:00:33,070 Linux, për të menaxhuar secili prej këtyre proceseve të veçanta, si 11 00:00:33,070 --> 00:00:35,900 Programet janë të njohura, dhe kaloni mes tyre në mënyrë që kur ju 12 00:00:35,900 --> 00:00:38,610 shkojnë nga Facebook kontrolluar faqen tuaj për të punuar në esenë tuaj 13 00:00:38,610 --> 00:00:41,590 përsëri, Fjala është ai që është running. 14 00:00:41,590 --> 00:00:44,890 >> Ndonjëherë, edhe pse, ne duam programe veten të jetë në gjendje 15 00:00:44,890 --> 00:00:47,440 për të bërë gjëra të shumta si kjo, too. 16 00:00:47,440 --> 00:00:49,630 Nëse ju jeni si unë, ju ndoshta keni një bandë e 17 00:00:49,630 --> 00:00:52,730 tabs të ndryshme të hapur në shfletuesin tuaj të internetit, një për e-mail, 18 00:00:52,730 --> 00:00:55,070 një me një kalendar, dhe kështu në. 19 00:00:55,070 --> 00:00:58,270 Ne mund të trajtojnë çdo skedë si një program të veçantë apo proces, 20 00:00:58,270 --> 00:01:01,300 si Google Chrome bën, por shumë programe të përdorni një 21 00:01:01,300 --> 00:01:04,430 lehta-peshë version i një procesi të quajtur një fije. 22 00:01:04,430 --> 00:01:07,190 >> Një fije është vetëm një tjetër njësi e përpunimit, një grup i 23 00:01:07,190 --> 00:01:10,100 udhëzime ose kod që mund të "drejtuar", mbyll thonjëzat quote, 24 00:01:10,100 --> 00:01:12,560 njëkohësisht me temat tjera. 25 00:01:12,560 --> 00:01:15,150 Kjo është ajo që e bën të mundur që ju të shfletoni Facebook 26 00:01:15,150 --> 00:01:17,940 ndërsa duke dëgjuar për mua në sfond, ose të ketë dy 27 00:01:17,940 --> 00:01:20,790 YouTube videos luajtur në të njëjtën kohë. 28 00:01:20,790 --> 00:01:24,660 Pra, kjo temë e përgjithshme, e njohur si konkurrencën, në mënyrë tipike 29 00:01:24,660 --> 00:01:26,930 nuk dalë kaq herët në kurset e shkencave kompjuterike 30 00:01:26,930 --> 00:01:29,790 sepse të ulët të nivelit detaje kërkojnë diskutimin e 31 00:01:29,790 --> 00:01:31,930 sistemeve operative dhe si. 32 00:01:31,930 --> 00:01:34,170 Mirëpo, gjuha e programimit ne përdorim në të 33 00:01:34,170 --> 00:01:38,000 fillimi i CS50, Scratch, ofron disa mjete të mrekullueshëm 34 00:01:38,000 --> 00:01:40,390 bëjë më të lehtë për të shkruar programet me gjëra të shumta 35 00:01:40,390 --> 00:01:42,390 ndodh në të njëjtën kohë. 36 00:01:42,390 --> 00:01:45,050 >> Kur ju të ndërtuar programe zeroja, ju jeni vazhdimisht 37 00:01:45,050 --> 00:01:46,760 punuar me temat. 38 00:01:46,760 --> 00:01:49,770 Çdo dorëshkrim Zeroja, e cila është një bllok kod që fillon me 39 00:01:49,770 --> 00:01:52,600 një nga "kur" copa mister, mund të mendohet 40 00:01:52,600 --> 00:01:54,380 si një fije të veçantë. 41 00:01:54,380 --> 00:01:58,040 Le të shikojmë në një program të thjeshtë për të zeroja parë se si kjo funksionon. 42 00:01:58,040 --> 00:02:01,730 >> Këtu, ne kemi marrë një objekt peshk, ose Sprite, me dy Scripts 43 00:02:01,730 --> 00:02:05,000 që të dy të fillojë kur ne të klikoni butonin e gjelbër pak flamur. 44 00:02:05,000 --> 00:02:07,290 Script pari kontrollon mocionin e peshkut. 45 00:02:07,290 --> 00:02:09,850 Kur flamuri gjelbër është klikuar, peshku merr vendosur 46 00:02:09,850 --> 00:02:12,450 në anën e majtë të ekranit, të quajtur fazë, 47 00:02:12,450 --> 00:02:14,090 përballet në të djathtë. 48 00:02:14,090 --> 00:02:17,070 Pastaj, në një sërë udhëzimeve që do të kandidojë përgjithmonë, deri ne 49 00:02:17,070 --> 00:02:20,270 të ndaluar programin, peshku glides në anën e djathtë, 50 00:02:20,270 --> 00:02:22,900 kthehet rreth, shkon prapa në anën e majtë, dhe 51 00:02:22,900 --> 00:02:24,470 kthehet rreth përsëri. 52 00:02:24,470 --> 00:02:27,410 Script dytë kontrollon procesin e peshkut menduar. 53 00:02:27,410 --> 00:02:29,290 Ajo rezulton se ky është një peshk i uritur. 54 00:02:29,290 --> 00:02:32,080 Pra, pas pritjes për 3 sekonda, peshku do të mendojnë, 55 00:02:32,080 --> 00:02:34,420 "Unë jam i uritur," për një sekondë të katërt. 56 00:02:34,420 --> 00:02:36,440 Ky skenar edhe shkon përgjithmonë. 57 00:02:36,440 --> 00:02:38,940 Dhe si ne e shohim, nga drejtimin e programit duke klikuar 58 00:02:38,940 --> 00:02:41,730 flamuri gjelbër, të dyja Scripts duket për të ekzekutuar 59 00:02:41,730 --> 00:02:43,100 në të njëjtën kohë. 60 00:02:43,100 --> 00:02:46,460 Peshku lëviz dhe mendon në të njëjtën kohë. 61 00:02:46,460 --> 00:02:49,030 >> Që peshku varfërve duket aq e uritur, le të shtoni në disa 62 00:02:49,030 --> 00:02:50,670 puffs Grin për atë për të ngrënë. 63 00:02:50,670 --> 00:02:53,060 Shpresojmë se ata nuk do të shpërbëhen në ujë. 64 00:02:53,060 --> 00:02:55,560 Kur ne të shtoni në një Sprite dytë, ne gjithashtu do të jetë në gjendje të 65 00:02:55,560 --> 00:02:58,020 shtoni në Scripts korrespondojnë me atë Sprite. 66 00:02:58,020 --> 00:02:59,580 Dhe, kështu, nuk do të jetë një tjetër grup i 67 00:02:59,580 --> 00:03:00,830 temat që do të kandidojë. 68 00:03:03,590 --> 00:03:06,270 Për të dhënë përdoruesit e programit mbi kontrollin tonë kur 69 00:03:06,270 --> 00:03:09,340 peshku i uritur merr ushqim, le të themi se kurdo Space 70 00:03:09,340 --> 00:03:11,840 Bar është goditur, puffs Grin shfaqet në skenë për 71 00:03:11,840 --> 00:03:13,300 peshk për të ngrënë. 72 00:03:13,300 --> 00:03:15,760 Para se të goditur Bar Hapësirë, ne do të duan të mbajnë dobët 73 00:03:15,760 --> 00:03:19,020 puffs fshehur në mënyrë që peshku nuk mund të shohin ato. 74 00:03:19,020 --> 00:03:21,140 Për ta bërë këtë, ne do të duhet një çift të Scripts per 75 00:03:21,140 --> 00:03:22,750 puffs Grin Sprite. 76 00:03:22,750 --> 00:03:26,980 Script parë, flamuri gjelbër, thjesht do të fshehin ushqimin. 77 00:03:26,980 --> 00:03:29,530 Ndryshe nga Scripts tjera kemi shkruar, kjo nuk do të mbajë 78 00:03:29,530 --> 00:03:30,560 running përgjithmonë. 79 00:03:30,560 --> 00:03:33,250 Ajo do të fillojë dhe të përfundojë shumë shpejt, right click, kur ne 80 00:03:33,250 --> 00:03:35,000 butonin e gjelbër flamuri. 81 00:03:35,000 --> 00:03:37,180 >> Script ardhshëm ne kemi do të presim për Bar Hapësirë ​​për të 82 00:03:37,180 --> 00:03:39,590 presion përpara ekzekutimit. 83 00:03:39,590 --> 00:03:42,770 Ne mund të telefononi duke pritur për të dhëna përdoruesi "pritjes" ose "dëgjuar" 84 00:03:42,770 --> 00:03:43,860 për një ngjarje. 85 00:03:43,860 --> 00:03:46,750 Dhe kodin që ekzekuton kur një ngjarje është marrë ose 86 00:03:46,750 --> 00:03:50,280 dëgjuar quhet trajtimin ngjarje Kodi. 87 00:03:50,280 --> 00:03:53,550 Bar ynë Hapësirë ​​ngjarje mbajtës do të tregojë puffs Grin në 88 00:03:53,550 --> 00:03:56,330 ekran në mënyrë që peshku mund të hani ato. 89 00:03:56,330 --> 00:03:58,880 Në këtë pikë, gjithçka është në kërkim të mira. 90 00:03:58,880 --> 00:04:00,990 >> Gjë tjetër që ne duhet të bëni është që të kuptoj se si për të marrë 91 00:04:00,990 --> 00:04:03,570 peshk të kuptojë se nuk ka ushqim për të ngrënë. 92 00:04:03,570 --> 00:04:06,030 Le të shtoni një tjetër fije të peshkut që vazhdimisht 93 00:04:06,030 --> 00:04:08,790 kontrollon nëse është apo nuk është prekur puffs Grin. 94 00:04:08,790 --> 00:04:11,510 Ne e bëjmë këtë në një fije të veçantë që këtë mënyrë ne mund 95 00:04:11,510 --> 00:04:13,710 kontrolluar vazhdimisht për ushqim. 96 00:04:13,710 --> 00:04:16,829 Përndryshe, ne do të jetë vetëm në gjendje për të kontrolluar në mënyrë periodike për ushqim 97 00:04:16,829 --> 00:04:21,180 në mes rrëshqitje, duke e kthyer rreth, duke pritur, ose të menduarit. 98 00:04:21,180 --> 00:04:22,000 >> OK. 99 00:04:22,000 --> 00:04:23,785 Tani le të drejtuar programin tonë para. 100 00:04:23,785 --> 00:04:26,921 Siç pritej, ushqim menjëherë fsheh dhe 101 00:04:26,921 --> 00:04:28,920 peshku uritur noton mbrapa dhe me radhë ashtu si më parë. 102 00:04:32,050 --> 00:04:35,060 Kur ne goditi space bar, të puffs Grin vijnë në pamje, 103 00:04:35,060 --> 00:04:37,470 dhe peshku uritur thotë Whoo. 104 00:04:37,470 --> 00:04:39,340 Por prisni, kjo është e pazakontë. 105 00:04:39,340 --> 00:04:42,150 Si të vijë i peshkut "Unë jam i uritur" ndërpret menduar 106 00:04:42,150 --> 00:04:43,580 sende të tjera? 107 00:04:43,580 --> 00:04:45,780 Kjo është për shkak se ne nuk kemi krijuar asnjë koordinim 108 00:04:45,780 --> 00:04:47,590 midis tre Scripts peshkut. 109 00:04:47,590 --> 00:04:50,610 Secili po kandidon në fije të vet, të pavëmendshëm ndaj çfarë 110 00:04:50,610 --> 00:04:52,120 të tjerët janë duke bërë. 111 00:04:52,120 --> 00:04:54,980 Le të rregullojmë këtë përpara se të lëvizë. 112 00:04:54,980 --> 00:04:57,700 >> Koordinimi mes temat është një detyrë e ndërlikuar që ne 113 00:04:57,700 --> 00:05:00,940 nuk kanë kontroll të qartë mbi kur secili thread shkon ose 114 00:05:00,940 --> 00:05:02,190 nuk të kandidojë. 115 00:05:02,190 --> 00:05:04,710 Për të dërguar një mesazh nga një fije në një tjetër, ne do të duhet 116 00:05:04,710 --> 00:05:08,300 për të përdorur një variabël që ne mund të vendosni, ose shkruani në një fije 117 00:05:08,300 --> 00:05:10,170 dhe lexuar në tjetrin. 118 00:05:10,170 --> 00:05:12,920 Le të krijojnë një foodFound ndryshueshme quajtur që ne mund të vendosni për të 119 00:05:12,920 --> 00:05:15,530 vërtetë kur peshku shkon në puffs djathë. 120 00:05:15,530 --> 00:05:17,540 Well, natyrisht, ne duam të sigurohemi që ne kemi vendosur atë në 121 00:05:17,540 --> 00:05:19,240 rreme fillimisht. 122 00:05:19,240 --> 00:05:22,540 Pastaj, në fije të peshkut të menduarit, ne do të kontrolloni për të parë nëse 123 00:05:22,540 --> 00:05:25,400 peshku ka gjetur ushqim para se të shfaqen "Unë jam i uritur" 124 00:05:25,400 --> 00:05:26,770 menduar flluskë. 125 00:05:26,770 --> 00:05:29,670 >> Tani, drejtimin e programit përsëri, ne shohim se peshku 126 00:05:29,670 --> 00:05:31,580 nuk merrni ndërprerë me mendimet e urisë, kur 127 00:05:31,580 --> 00:05:33,820 puffs Grin janë jashtë. 128 00:05:33,820 --> 00:05:36,820 Problemi i fundit që kemi është se puffs Grin nuk shkojnë 129 00:05:36,820 --> 00:05:39,800 larg pas peshkut, të japin kuotën e mbyll thonjëzat, "ha" ato. 130 00:05:39,800 --> 00:05:42,305 Nga Scripts peshkut, nuk ka asnjë mënyrë e lehtë për të fshehur të dobët 131 00:05:42,305 --> 00:05:44,710 puffs, kështu që ne duhet të dërgoni një mesazh në puffs djathë 132 00:05:44,710 --> 00:05:46,780 sprite për të fshehur vetveten. 133 00:05:46,780 --> 00:05:49,550 Ne mund të bëjmë këtë me një ndryshore tjetër se puffs Grin 134 00:05:49,550 --> 00:05:52,680 sprite ka qasje në, si dhe Sprite peshk. 135 00:05:52,680 --> 00:05:55,720 >> Megjithatë, ka një mënyrë të pastër për të bërë këtë në këtë rast, 136 00:05:55,720 --> 00:05:57,840 që në vend të dërguar një mesazh për një skenar që është 137 00:05:57,840 --> 00:06:00,570 diku në mes të ekzekutimit, ne mund të dërgoni 138 00:06:00,570 --> 00:06:03,710 Mesazhi për një skenar që është duke pritur për të filluar. 139 00:06:03,710 --> 00:06:07,360 Ne e bëjmë këtë duke pasur peshk transmetuar një ngjarje, një ne do të 140 00:06:07,360 --> 00:06:08,800 telefononi ngrënë. 141 00:06:08,800 --> 00:06:11,510 Pastaj, ne do të krijojë një skenar për puffs djathë që do të 142 00:06:11,510 --> 00:06:13,030 prisni për këtë ngjarje. 143 00:06:13,030 --> 00:06:15,560 Kjo është e ngjashme me ngjarjen bar hapësirë, përveç se kjo 144 00:06:15,560 --> 00:06:19,250 kohë, përdoruesit nuk është një mënyrë të drejtpërdrejtë duke shkaktuar ngjarjen. 145 00:06:19,250 --> 00:06:22,800 Tani të gjithë ne duhet të bëni është vendosur prapa foodFound tonë ndryshueshme 146 00:06:22,800 --> 00:06:25,750 të rreme, dhe ne tani mund të japë sa më shumë peshk i uritur 147 00:06:25,750 --> 00:06:28,470 servings e puffs djathë si ajo dëshiron. 148 00:06:28,470 --> 00:06:30,040 >> Pra, jo shumë e keqe, apo jo? 149 00:06:30,040 --> 00:06:33,400 Në C, duke shkruar multi-filetuara programeve është më e komplikuar, 150 00:06:33,400 --> 00:06:35,700 por bazat janë të njëjta. 151 00:06:35,700 --> 00:06:38,690 Gjithsesi, unë shpresoj se ju keni një kohë të madhe ndërtimin e disa fun 152 00:06:38,690 --> 00:06:41,030 programe në harmoni në para. 153 00:06:41,030 --> 00:06:42,570 Emri im është Nate Hardison. 154 00:06:42,570 --> 00:06:45,260 Kjo është CS50.