1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] Nate Hardison: Ha van több program nyitja meg a 2 00:00:09,360 --> 00:00:11,250 számítógép, úgy tűnik, mintha minden 3 00:00:11,250 --> 00:00:12,880 fut egyszerre. 4 00:00:12,880 --> 00:00:15,350 Például, lehet, hogy dolgozik a böngészőben, mint a 5 00:00:15,350 --> 00:00:19,360 Firefox vagy az Internet Explorer, zenét hallgat az iTunes-on, 6 00:00:19,360 --> 00:00:21,490 és az írás egy esszét a Word. 7 00:00:21,490 --> 00:00:24,240 Azonban, a motorháztető alatt, a programok ténylegesen 8 00:00:24,240 --> 00:00:25,830 fut egyenként. 9 00:00:25,830 --> 00:00:29,750 Ez a feladat az operációs rendszer, a Windows, Mac OSX, vagy 10 00:00:29,750 --> 00:00:33,070 Linux, kezelésére mindegyik különálló folyamatok, a 11 00:00:33,070 --> 00:00:35,900 programok ismert, és váltani őket, hogy ha 12 00:00:35,900 --> 00:00:38,610 megy ellenőrizze a Facebook oldalt, hogy a munkát a dolgozat 13 00:00:38,610 --> 00:00:41,590 ismét Word az, aki fut. 14 00:00:41,590 --> 00:00:44,890 >> Néha azonban szeretnénk maguk a programok, hogy képesek 15 00:00:44,890 --> 00:00:47,440 csinálni több dolgot, mint ez is. 16 00:00:47,440 --> 00:00:49,630 Ha Ön, mint én, akkor valószínűleg van egy csomó 17 00:00:49,630 --> 00:00:52,730 különböző lapok megnyitása a webböngészőben, egy e-mail, 18 00:00:52,730 --> 00:00:55,070 az egyik egy naptár, és így tovább. 19 00:00:55,070 --> 00:00:58,270 Tudtuk kezelni az egyes lapokat, mint egy külön program vagy folyamat, 20 00:00:58,270 --> 00:01:01,300 mint a Google Chrome nem, de a sok program használ 21 00:01:01,300 --> 00:01:04,430 könnyebb súlyú változata a folyamatot nevezzük a menet. 22 00:01:04,430 --> 00:01:07,190 >> Egy szál is csak egy egysége feldolgozás, egy sor 23 00:01:07,190 --> 00:01:10,100 utasítások vagy kódot, amely "fuss", idézet idézőjel bezárva, 24 00:01:10,100 --> 00:01:12,560 egyidejűleg más szálak. 25 00:01:12,560 --> 00:01:15,150 Ez az, ami lehetővé teszi, böngészhet Facebook 26 00:01:15,150 --> 00:01:17,940 hallgatása közben rám a háttérben, vagy a két 27 00:01:17,940 --> 00:01:20,790 YouTube videók lejátszása egyszerre. 28 00:01:20,790 --> 00:01:24,660 Szóval, ez az általános témát, nevei konkurencia, jellemzően 29 00:01:24,660 --> 00:01:26,930 nem jön ki ilyen korán számítástechnika tanfolyamok 30 00:01:26,930 --> 00:01:29,790 mivel az alacsonyabb szintű részletei szükséges vitát 31 00:01:29,790 --> 00:01:31,930 operációs rendszerek és a hasonlók. 32 00:01:31,930 --> 00:01:34,170 Azonban a programozási nyelvet használjuk a 33 00:01:34,170 --> 00:01:38,000 elején CS50, Scratch rendelkezik néhány remek eszközöket 34 00:01:38,000 --> 00:01:40,390 könnyebben programokat írhassanak több dolgot 35 00:01:40,390 --> 00:01:42,390 folyik egyszerre. 36 00:01:42,390 --> 00:01:45,050 >> Ha építeni Scratch programokat, te állandóan 37 00:01:45,050 --> 00:01:46,760 dolgozó szálak. 38 00:01:46,760 --> 00:01:49,770 Minden Scratch script, ami egy kód blokk kezdődő 39 00:01:49,770 --> 00:01:52,600 egyik a "ha" a puzzle darabkái, lehet gondolt 40 00:01:52,600 --> 00:01:54,380 mint egy külön szál. 41 00:01:54,380 --> 00:01:58,040 Nézzünk egy egyszerű Scratch programot, hogy hogyan is működik ez. 42 00:01:58,040 --> 00:02:01,730 >> Itt van egy hal tárgy, vagy sprite, két szkriptek 43 00:02:01,730 --> 00:02:05,000 hogy mind a kezdő, amikor kattintson a kis zöld zászló gombra. 44 00:02:05,000 --> 00:02:07,290 Az első script vezérli a hal mozgás. 45 00:02:07,290 --> 00:02:09,850 Amikor a zöld zászló kattint, a hal kerül forgalomba 46 00:02:09,850 --> 00:02:12,450 A bal oldalon a képernyő, az úgynevezett a szakasz, 47 00:02:12,450 --> 00:02:14,090 jobbra néző. 48 00:02:14,090 --> 00:02:17,070 Aztán egy sor utasítást, hogy akkor fut örökké, amíg nem 49 00:02:17,070 --> 00:02:20,270 állítsa le a programot, a hal siklik a jobb oldalon, 50 00:02:20,270 --> 00:02:22,900 megfordul, visszamegy a bal oldalon, és a 51 00:02:22,900 --> 00:02:24,470 megfordul újra. 52 00:02:24,470 --> 00:02:27,410 A második script vezérli a hal gondolkodási folyamat. 53 00:02:27,410 --> 00:02:29,290 Kiderült, hogy ez egy éhes hal. 54 00:02:29,290 --> 00:02:32,080 Így várakozás után 3 másodpercig, a hal úgy gondolja, 55 00:02:32,080 --> 00:02:34,420 "Éhes vagyok", a negyedik kicsit. 56 00:02:34,420 --> 00:02:36,440 Ez a szkript is fut örökké. 57 00:02:36,440 --> 00:02:38,940 És mint látjuk, az a program futtatása kattintva 58 00:02:38,940 --> 00:02:41,730 zöld zászlót, mind parancsfájlokat úgy tűnik, hogy végre 59 00:02:41,730 --> 00:02:43,100 egyidejűleg. 60 00:02:43,100 --> 00:02:46,460 A hal mozog, és úgy gondolja egyszerre. 61 00:02:46,460 --> 00:02:49,030 >> Mivel a szegény halak úgy néz ki, éhes, adjunk néhány 62 00:02:49,030 --> 00:02:50,670 sajtos puffasztott mert enni. 63 00:02:50,670 --> 00:02:53,060 Remélhetőleg nem szétesik a vízben. 64 00:02:53,060 --> 00:02:55,560 Ha ehhez hozzátesszük a második sprite, akkor is képes 65 00:02:55,560 --> 00:02:58,020 Add hozzá a szkripteket, amely megfelel a sprite. 66 00:02:58,020 --> 00:02:59,580 , És így nem lesz egy másik beállítás 67 00:02:59,580 --> 00:03:00,830 szálak, hogy majd futni. 68 00:03:03,590 --> 00:03:06,270 Ahhoz, hogy a felhasználó a program felett, amikor a 69 00:03:06,270 --> 00:03:09,340 Éhes hal lesz étel, mondjuk, hogy amikor a világűr 70 00:03:09,340 --> 00:03:11,840 Bár a hit, sajtos puffasztott jelennek meg a színpadon a 71 00:03:11,840 --> 00:03:13,300 halat enni. 72 00:03:13,300 --> 00:03:15,760 Mielőtt megüt a Space Bar, akkor szeretnénk tartani a sajtos 73 00:03:15,760 --> 00:03:19,020 felfújja rejtett, hogy a halak nem látják őket. 74 00:03:19,020 --> 00:03:21,140 Ehhez szükségünk lesz egy pár szkriptek a 75 00:03:21,140 --> 00:03:22,750 sajtos felfújja sprite. 76 00:03:22,750 --> 00:03:26,980 Az első script, a zöld zászlót, majd csak elrejti az ételt. 77 00:03:26,980 --> 00:03:29,530 Ellentétben a többi szkripteket írtam, ez nem tartja 78 00:03:29,530 --> 00:03:30,560 futás örökre. 79 00:03:30,560 --> 00:03:33,250 Ez kezdési és befejezési nagyon gyorsan, igaza van, amikor azt gombra 80 00:03:33,250 --> 00:03:35,000 a zöld zászló gombot. 81 00:03:35,000 --> 00:03:37,180 >> A következő script amit már várni fog a Space Bar, hogy 82 00:03:37,180 --> 00:03:39,590 préselt végrehajtása előtt. 83 00:03:39,590 --> 00:03:42,770 Nevezhetjük felhasználói bemenetet vár "elérhető" vagy "hallgat" 84 00:03:42,770 --> 00:03:43,860 egy esemény. 85 00:03:43,860 --> 00:03:46,750 És a kód, amely végrehajtja, ha egy esemény érkezik, vagy 86 00:03:46,750 --> 00:03:50,280 hallott az úgynevezett eseménykezelés kódot. 87 00:03:50,280 --> 00:03:53,550 A Space Bar eseménykezelő megjelenik a sajtos felfújja a 88 00:03:53,550 --> 00:03:56,330 a képernyőn, így a halak megeszik őket. 89 00:03:56,330 --> 00:03:58,880 Ezen a ponton, minden néz jó. 90 00:03:58,880 --> 00:04:00,990 >> A következő dolog, amit meg kell tennie, hogy kitaláljuk, hogyan lehet 91 00:04:00,990 --> 00:04:03,570 a halak észre, hogy van mit ennie. 92 00:04:03,570 --> 00:04:06,030 Adjunk hozzá egy másik szál a halak, hogy folyamatosan 93 00:04:06,030 --> 00:04:08,790 ellenőrzés-e vagy sem ez érinti a sajtos felfújja. 94 00:04:08,790 --> 00:04:11,510 Tesszük ezt egy külön téma, mivel így tudunk 95 00:04:11,510 --> 00:04:13,710 folyamatosan ellenőrzi az élelmiszer. 96 00:04:13,710 --> 00:04:16,829 Egyébként mi lenne tudni csak rendszeresen ellenőrizze az élelmiszer 97 00:04:16,829 --> 00:04:21,180 között siklórepülés, megfordult, várakozás, vagy a gondolkodás. 98 00:04:21,180 --> 00:04:22,000 >> OK. 99 00:04:22,000 --> 00:04:23,785 Most fut a Scratch program. 100 00:04:23,785 --> 00:04:26,921 Ahogy az várható volt, az élelmiszer azonnal elrejti és a 101 00:04:26,921 --> 00:04:28,920 Éhes hal úszik oda-vissza ugyanúgy, mint azelőtt. 102 00:04:32,050 --> 00:04:35,060 Amikor elérjük a szóköz, a sajtos felfújja előtérbe kerül, 103 00:04:35,060 --> 00:04:37,470 és az éhes halak mondja whoo. 104 00:04:37,470 --> 00:04:39,340 De várjunk csak, ez furcsa. 105 00:04:39,340 --> 00:04:42,150 Hogy jön a hal "Éhes vagyok" gondolat félbeszakítja a 106 00:04:42,150 --> 00:04:43,580 többi cucc? 107 00:04:43,580 --> 00:04:45,780 Ez azért van, mert nem hoz létre koordinációs 108 00:04:45,780 --> 00:04:47,590 a három hal szkripteket. 109 00:04:47,590 --> 00:04:50,610 Minden fut a saját téma, feledékeny, amit a 110 00:04:50,610 --> 00:04:52,120 mások csinálnak. 111 00:04:52,120 --> 00:04:54,980 Nézzük rögzíti e mielőtt lépni. 112 00:04:54,980 --> 00:04:57,700 >> Közötti koordináció szálak egy trükkös feladat, hiszen 113 00:04:57,700 --> 00:05:00,940 nincs explicit felett, ha minden szál fut, vagy 114 00:05:00,940 --> 00:05:02,190 nem működik. 115 00:05:02,190 --> 00:05:04,710 Ha egy üzenetet az egyik szál a másikra, szükségünk lesz 116 00:05:04,710 --> 00:05:08,300 hogy egy változó, tudjuk meg, vagy írjon, egy szál 117 00:05:08,300 --> 00:05:10,170 és olvasd el a másik. 118 00:05:10,170 --> 00:05:12,920 Hozzunk létre egy változót nevű foodFound tudjuk állítani 119 00:05:12,920 --> 00:05:15,530 igaz, amikor a hal fut a sajtos felfújja. 120 00:05:15,530 --> 00:05:17,540 Hát persze, azt szeretnénk, hogy győződjön meg arról, hogy mi meg azt, hogy 121 00:05:17,540 --> 00:05:19,240 false kezdetben. 122 00:05:19,240 --> 00:05:22,540 Ezután a hal gondolkodás szál, akkor nézze meg, ha 123 00:05:22,540 --> 00:05:25,400 a halat talált étel megjelenése előtt az "éhes vagyok" 124 00:05:25,400 --> 00:05:26,770 gondolta buborék. 125 00:05:26,770 --> 00:05:29,670 >> Most fut újra a programot, azt látjuk, hogy a halak 126 00:05:29,670 --> 00:05:31,580 nem kap szakad meg gondolatait az éhség, amikor a 127 00:05:31,580 --> 00:05:33,820 sajtos puffasztott kívül esnek. 128 00:05:33,820 --> 00:05:36,820 A végső probléma van az, hogy a sajtos felfújja nem megy 129 00:05:36,820 --> 00:05:39,800 távol után a halat, idézem idézőjel bezárva, "megeszi" őket. 130 00:05:39,800 --> 00:05:42,305 A halak szkriptek, nincs egyszerű módja annak, hogy elrejtse a sajtos 131 00:05:42,305 --> 00:05:44,710 felfújja, ezért meg kell, hogy küldjön egy üzenetet a sajtos felfújja 132 00:05:44,710 --> 00:05:46,780 sprite elrejteni magát. 133 00:05:46,780 --> 00:05:49,550 Mi is ezt a másik változó, hogy a sajtos felfújja 134 00:05:49,550 --> 00:05:52,680 sprite hozzáfér a, valamint a halak sprite. 135 00:05:52,680 --> 00:05:55,720 >> Azonban van egy tisztább módon, hogy ezt a jelen esetben, 136 00:05:55,720 --> 00:05:57,840 mivel ahelyett, hogy egy üzenetet küld egy script, ami 137 00:05:57,840 --> 00:06:00,570 valahol a közepén a végrehajtó, akkor küldje el a 138 00:06:00,570 --> 00:06:03,710 üzenetet egy script, ami arra vár, hogy elindul. 139 00:06:03,710 --> 00:06:07,360 Tesszük ezt azáltal, hogy a halak sugárzott egy esemény, egy fogunk 140 00:06:07,360 --> 00:06:08,800 hívja evett. 141 00:06:08,800 --> 00:06:11,510 Ezután fogunk egy scriptet a sajtos felfújja, amely 142 00:06:11,510 --> 00:06:13,030 várni erre az eseményre. 143 00:06:13,030 --> 00:06:15,560 Ez hasonló a szóköz esemény, kivéve, hogy ez a 144 00:06:15,560 --> 00:06:19,250 időt, a felhasználó nem az egy közvetlenül kiváltó esemény. 145 00:06:19,250 --> 00:06:22,800 Most kell tennünk, hogy be van állítva a foodFound változót vissza 146 00:06:22,800 --> 00:06:25,750 A hamis, és most már adni az éhes halak annyi 147 00:06:25,750 --> 00:06:28,470 adag sajtos puffasztott ahogy akar. 148 00:06:28,470 --> 00:06:30,040 >> Szóval nem rossz, ugye? 149 00:06:30,040 --> 00:06:33,400 A C-ben, írásban többszálas programok bonyolultabb, 150 00:06:33,400 --> 00:06:35,700 de az alapok az ugyanaz. 151 00:06:35,700 --> 00:06:38,690 Különben is, remélem, hogy van egy nagy idő épület kis szórakozás 152 00:06:38,690 --> 00:06:41,030 párhuzamos programok Scratch. 153 00:06:41,030 --> 00:06:42,570 A nevem Nate Hardison. 154 00:06:42,570 --> 00:06:45,260 Ez CS50.