1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] Nate HARDISON: როდესაც თქვენ მოხვდით მრავალჯერადი პროგრამების გაიხსნება 2 00:00:09,360 --> 00:00:11,250 კომპიუტერი, როგორც ჩანს, ყველაფერი 3 00:00:11,250 --> 00:00:12,880 გაშვებული ამავე დროს. 4 00:00:12,880 --> 00:00:15,350 მაგალითად, თქვენ შესაძლოა მომუშავე ბრაუზერში მოსწონს 5 00:00:15,350 --> 00:00:19,360 Firefox ან Internet Explorer, მუსიკის მოსმენის შესახებ iTunes, 6 00:00:19,360 --> 00:00:21,490 და წერა ესსეს ერთად Word. 7 00:00:21,490 --> 00:00:24,240 თუმცა, ქვეშ Hood, პროგრამების რეალურად 8 00:00:24,240 --> 00:00:25,830 აწარმოებს ერთ დროს. 9 00:00:25,830 --> 00:00:29,750 ეს სამუშაო ოპერაციული სისტემის, Windows, Mac OSX, ან 10 00:00:29,750 --> 00:00:33,070 Linux, მართოს თითოეული ცალკე პროცესების, როგორც 11 00:00:33,070 --> 00:00:35,900 პროგრამების ცნობილია, და გადაერთოთ მათ ისე, რომ როდესაც თქვენ 12 00:00:35,900 --> 00:00:38,610 გადასვლა შემოწმების თქვენი Facebook-ის გვერდზე მუშაობს თქვენი ესსე 13 00:00:38,610 --> 00:00:41,590 ერთხელ, სიტყვა არის ერთი, რომ კანდიდატად. 14 00:00:41,590 --> 00:00:44,890 >> ზოგჯერ, თუმცა, ჩვენ გვინდა პროგრამების თავად უნდა შეეძლოს 15 00:00:44,890 --> 00:00:47,440 გავაკეთოთ მრავალჯერადი რამ, როგორიცაა ამ, ძალიან. 16 00:00:47,440 --> 00:00:49,630 თუ თქვენ ჩემნაირი, ალბათ, არის რამოდენიმე 17 00:00:49,630 --> 00:00:52,730 სხვადასხვა ჩანართების გახსნა ბრაუზერში, ერთი ფოსტის, 18 00:00:52,730 --> 00:00:55,070 ერთი კალენდარი, და ასე შემდეგ. 19 00:00:55,070 --> 00:00:58,270 ჩვენ შეგვეძლო მკურნალობა ყოველი tab ცალკე პროგრამა ან პროცესის, 20 00:00:58,270 --> 00:01:01,300 როგორც Google Chrome აკეთებს, მაგრამ ბევრი პროგრამების გამოყენება 21 00:01:01,300 --> 00:01:04,430 მსუბუქი წონის ვერსია პროცესში მოუწოდა თემა. 22 00:01:04,430 --> 00:01:07,190 >> თემა არის კიდევ ერთი ერთეული გადამუშავების, კომპლექტი 23 00:01:07,190 --> 00:01:10,100 ინსტრუქციის ან კოდი, რომელიც შეიძლება "აწარმოებს", ციტირებით unquote, 24 00:01:10,100 --> 00:01:12,560 პარალელურად სხვა თემა. 25 00:01:12,560 --> 00:01:15,150 ეს არის ის, რაც შესაძლებელს ხდის თქვენ დაათვალიეროთ Facebook 26 00:01:15,150 --> 00:01:17,940 მოსმენისას ჩემთვის ფონზე ან აქვს ორი 27 00:01:17,940 --> 00:01:20,790 YouTube videos playing ამავე დროს. 28 00:01:20,790 --> 00:01:24,660 ასე რომ, ეს ზოგადად თემას, რომელიც ცნობილია როგორც concurrency, როგორც წესი, 29 00:01:24,660 --> 00:01:26,930 არ ამუშავება ასე ადრე კომპიუტერულ მეცნიერების კურსები 30 00:01:26,930 --> 00:01:29,790 რადგან ქვედა დონის დეტალები მოითხოვს განხილვას 31 00:01:29,790 --> 00:01:31,930 ოპერაციული სისტემების და მოსწონს. 32 00:01:31,930 --> 00:01:34,170 თუმცა, პროგრამირების ენა ვიყენებთ ზე 33 00:01:34,170 --> 00:01:38,000 დასაწყისში CS50, Scratch, უზრუნველყოფს ზოგიერთი nifty ინსტრუმენტი, რათა 34 00:01:38,000 --> 00:01:40,390 გაუადვილოს წერენ პროგრამებს მრავალი რამ 35 00:01:40,390 --> 00:01:42,390 მიმდინარეობს ერთდროულად. 36 00:01:42,390 --> 00:01:45,050 >> როდესაც თქვენ აშენება Scratch პროგრამების, თქვენ მუდმივად 37 00:01:45,050 --> 00:01:46,760 მუშაობის თემა. 38 00:01:46,760 --> 00:01:49,770 თითოეული Scratch სკრიპტი, რომელიც კოდი ბლოკი, რომელიც იწყება 39 00:01:49,770 --> 00:01:52,600 ერთი "როცა" თავსატეხი ცალი, შეიძლება ფიქრობდა 40 00:01:52,600 --> 00:01:54,380 როგორც ცალკე თემა. 41 00:01:54,380 --> 00:01:58,040 მოდით შევხედოთ მარტივ Scratch პროგრამა, თუ რამდენად ამ სამუშაოები. 42 00:01:58,040 --> 00:02:01,730 >> აქ გვაქვს თევზის ობიექტი, ან Sprite, ორი სკრიპტები 43 00:02:01,730 --> 00:02:05,000 რომ ორივე დაწყება როდესაც ჩვენ დააჭირეთ პატარა მწვანე დროშა ღილაკს. 44 00:02:05,000 --> 00:02:07,290 პირველი Script აკონტროლებს თევზის ს მოძრაობაში. 45 00:02:07,290 --> 00:02:09,850 როდესაც მწვანე დროშა დააწკაპებთ, თევზი იღებს განთავსებული 46 00:02:09,850 --> 00:02:12,450 მარცხენა მხარეს ეკრანზე, მოუწოდა ეტაპზე, 47 00:02:12,450 --> 00:02:14,090 წინაშე დგას მარჯვნივ. 48 00:02:14,090 --> 00:02:17,070 შემდეგ, ინსტრუქციათა რომ ყველაფერს აწარმოებს სამუდამოდ, სანამ ჩვენ 49 00:02:17,070 --> 00:02:20,270 შეწყვიტოს პროგრამა, თევზის glides მარჯვენა მხარეს, 50 00:02:20,270 --> 00:02:22,900 თურმე გარშემო, მიდის უკან მარცხენა მხარეს, და 51 00:02:22,900 --> 00:02:24,470 თურმე გარშემო კვლავ. 52 00:02:24,470 --> 00:02:27,410 მეორე Script აკონტროლებს თევზის მიერ აზროვნების პროცესში. 53 00:02:27,410 --> 00:02:29,290 თურმე ეს მშიერი თევზი. 54 00:02:29,290 --> 00:02:32,080 ასე რომ ლოდინის შემდეგ 3 წამში, თევზი იფიქრებს, 55 00:02:32,080 --> 00:02:34,420 "მე მშიერი," ამისთვის მეოთხე მეორე. 56 00:02:34,420 --> 00:02:36,440 ეს სკრიპტი ასევე ფლობს სამუდამოდ. 57 00:02:36,440 --> 00:02:38,940 და, როგორც ვხედავთ, საწყისი გაშვებული პროგრამის დაწკაპვით 58 00:02:38,940 --> 00:02:41,730 მწვანე დროშა, როგორც სკრიპტები გამოჩნდება შეასრულოს 59 00:02:41,730 --> 00:02:43,100 ერთდროულად. 60 00:02:43,100 --> 00:02:46,460 თევზი მოძრაობს და ფიქრობს, ამავე დროს. 61 00:02:46,460 --> 00:02:49,030 >> მას შემდეგ, რაც ცუდი თევზი გამოიყურება ასე მშიერი, მოდით დაამატოთ ზოგიერთ 62 00:02:49,030 --> 00:02:50,670 გაკოცე puffs ამისთვის ჭამა. 63 00:02:50,670 --> 00:02:53,060 იმედია, რომ ისინი არ დაიშალა წყალი. 64 00:02:53,060 --> 00:02:55,560 როდესაც ჩვენ დაამატეთ მეორე Sprite, ჩვენ ასევე შეძლებთ 65 00:02:55,560 --> 00:02:58,020 დაამატე სკრიპტები შესაბამისი რომ Sprite. 66 00:02:58,020 --> 00:02:59,580 და, აქედან გამომდინარე, იქ კიდევ ერთი კომპლექტი 67 00:02:59,580 --> 00:03:00,830 თემა რომ ყველაფერს აწარმოებს. 68 00:03:03,590 --> 00:03:06,270 მისცეს მომხმარებლის ჩვენი პროგრამის კონტროლის როდესაც 69 00:03:06,270 --> 00:03:09,340 მშიერი თევზი იღებს საკვები, ვთქვათ, რომ როდესაც ფართი 70 00:03:09,340 --> 00:03:11,840 ბარში მოხვდა, გაკოცე puffs გამოჩნდება ეტაპი 71 00:03:11,840 --> 00:03:13,300 თევზის ჭამა. 72 00:03:13,300 --> 00:03:15,760 სანამ მოხვდა ფართი ბარი, ჩვენ გვინდა, რომ შევინარჩუნოთ გაკოცე 73 00:03:15,760 --> 00:03:19,020 puffs იმალება ისე, რომ თევზი ვერ ხედავს მათ. 74 00:03:19,020 --> 00:03:21,140 ამისათვის ჩვენ გვჭირდება რამდენიმე სკრიპტები 75 00:03:21,140 --> 00:03:22,750 გაკოცე puffs Sprite. 76 00:03:22,750 --> 00:03:26,980 პირველი სკრიპტი, მწვანე დროშა, მხოლოდ დამალვა საკვები. 77 00:03:26,980 --> 00:03:29,530 განსხვავებით სხვა სკრიპტები ჩვენ წერილობით, ამ ერთი არ შეინარჩუნოს 78 00:03:29,530 --> 00:03:30,560 გაშვებული სამუდამოდ. 79 00:03:30,560 --> 00:03:33,250 ეს დაიწყება და დასრულდება ძალიან სწრაფად, უფლება, როდესაც ჩვენ დააჭირეთ 80 00:03:33,250 --> 00:03:35,000 მწვანე დროშა ღილაკს. 81 00:03:35,000 --> 00:03:37,180 >> შემდეგი Script გვაქვს დაელოდება სივრცეში ბარი იყოს 82 00:03:37,180 --> 00:03:39,590 დაპრესილი შესრულებამდე. 83 00:03:39,590 --> 00:03:42,770 ჩვენ შეგვიძლია ზარის ლოდინი მომხმარებლის შეყვანის "ელოდება" ან "მოსმენის" 84 00:03:42,770 --> 00:03:43,860 ამისთვის ღონისძიება. 85 00:03:43,860 --> 00:03:46,750 და კოდი, რომელიც ახორციელებს, როდესაც ღონისძიება მიღებული ან 86 00:03:46,750 --> 00:03:50,280 ისმის ეწოდება ღონისძიების გატარება კოდი. 87 00:03:50,280 --> 00:03:53,550 ჩვენი ფართი ბარი ღონისძიება დამმუშავებლის გამოჩნდება გაკოცე puffs შესახებ 88 00:03:53,550 --> 00:03:56,330 ეკრანზე ასე რომ თევზის ხსნილია მათ. 89 00:03:56,330 --> 00:03:58,880 ამ ეტაპზე, ყველაფერი ეძებს კარგი. 90 00:03:58,880 --> 00:04:00,990 >> შემდეგი რამ უნდა გავაკეთოთ არის ის, რომ გაერკვნენ, თუ როგორ უნდა 91 00:04:00,990 --> 00:04:03,570 თევზის გააცნობიეროს, რომ არსებობს საკვები ჭამა. 92 00:04:03,570 --> 00:04:06,030 მოდით დავამატოთ ახალი თემის თევზი, რომ მუდმივად 93 00:04:06,030 --> 00:04:08,790 ამოწმებს თუ არა ეს ეხება გაკოცე puffs. 94 00:04:08,790 --> 00:04:11,510 ჩვენ ამას ვაკეთებთ, ცალკე თემა, რადგან ამ გზით შეგვიძლია 95 00:04:11,510 --> 00:04:13,710 მუდმივად შევამოწმოთ საკვები. 96 00:04:13,710 --> 00:04:16,829 წინააღმდეგ შემთხვევაში, ჩვენ გვინდა მხოლოდ შეძლებენ პერიოდულად შეამოწმოთ საკვები 97 00:04:16,829 --> 00:04:21,180 შორის gliding, გარდამტეხი გარშემო, ელოდებიან, ან ფიქრობს. 98 00:04:21,180 --> 00:04:22,000 >> OK. 99 00:04:22,000 --> 00:04:23,785 ახლა მოდით აწარმოებს ჩვენი Scratch პროგრამა. 100 00:04:23,785 --> 00:04:26,921 როგორც მოსალოდნელი იყო, საკვები მაშინვე მალავს და 101 00:04:26,921 --> 00:04:28,920 მშიერი თევზის swims უკან და მეოთხე ისევე როგორც ადრე. 102 00:04:32,050 --> 00:04:35,060 როდესაც ჩვენ მოხვდა ფართი ბარი, გაკოცე puffs მოვიდეს აზრით, 103 00:04:35,060 --> 00:04:37,470 და მშიერი თევზი ამბობს whoo. 104 00:04:37,470 --> 00:04:39,340 მაგრამ დაველოდოთ, რომ უცნაურია. 105 00:04:39,340 --> 00:04:42,150 როგორ მოდის თევზი ს "მე მშიერი" აზრის interrupts 106 00:04:42,150 --> 00:04:43,580 სხვა პერსონალის? 107 00:04:43,580 --> 00:04:45,780 ეს იმიტომ რომ ჩვენ არ დაამკვიდროს რაიმე კოორდინაცია 108 00:04:45,780 --> 00:04:47,590 შორის სამი თევზის სკრიპტები. 109 00:04:47,590 --> 00:04:50,610 თითოეული გაშვებული საკუთარი თემა, oblivious თუ რა 110 00:04:50,610 --> 00:04:52,120 სხვები აკეთებენ. 111 00:04:52,120 --> 00:04:54,980 მოდით დაფიქსირება ამ სანამ ჩვენ გადასვლა. 112 00:04:54,980 --> 00:04:57,700 >> შორის კოორდინაციის თემა არის სახიფათო დავალება, რადგან ჩვენ 113 00:04:57,700 --> 00:05:00,940 არ გვაქვს გამოკვეთილ კონტროლი, როცა ყოველი ძაფი გადის ან 114 00:05:00,940 --> 00:05:02,190 ამჯამად არ აწარმოებს. 115 00:05:02,190 --> 00:05:04,710 გამოაგზავნოს გაგზავნა ერთი თემა სხვა, ჩვენ გვჭირდება 116 00:05:04,710 --> 00:05:08,300 გამოიყენოს ცვალებად, რომ ჩვენ შეგვიძლია მითითებული, ან ჩაწერის, ერთ თემა 117 00:05:08,300 --> 00:05:10,170 და წაიკითხონ სხვა. 118 00:05:10,170 --> 00:05:12,920 მოდით შევქმნათ ცვლადში foodFound რომ ჩვენ შეგვიძლია მითითებული 119 00:05:12,920 --> 00:05:15,530 ჭეშმარიტი, როდესაც თევზი ეშვება შევიდა გაკოცე puffs. 120 00:05:15,530 --> 00:05:17,540 ისე, რა თქმა უნდა, ჩვენ გვინდა დავრწმუნდეთ, რომ ჩვენ ვაყენებთ მას 121 00:05:17,540 --> 00:05:19,240 ყალბი თავდაპირველად. 122 00:05:19,240 --> 00:05:22,540 შემდეგ, თევზის მიერ აზროვნების ძაფი, ჩვენ შეამოწმეთ თუ 123 00:05:22,540 --> 00:05:25,400 თევზი იპოვა საკვები სანამ ჩვენებისას "მე მშიერი" 124 00:05:25,400 --> 00:05:26,770 ეგონა ბუშტი. 125 00:05:26,770 --> 00:05:29,670 >> ახლა, გაშვებული პროგრამა ერთხელ, ჩვენ ვხედავთ, რომ თევზი 126 00:05:29,670 --> 00:05:31,580 ვერ შეუშალა ერთად აზრები შიმშილით როდესაც 127 00:05:31,580 --> 00:05:33,820 გაკოცე puffs გარეთ. 128 00:05:33,820 --> 00:05:36,820 საბოლოო პრობლემა გვაქვს ის არის, რომ გაკოცე puffs არ მიდიან 129 00:05:36,820 --> 00:05:39,800 მოშორებით შემდეგ თევზი, ციტირებას unquote, "eats" მათ. 130 00:05:39,800 --> 00:05:42,305 მდებარეობა თევზის სკრიპტები, არ მარტივი გზა დამალვა გაკოცე 131 00:05:42,305 --> 00:05:44,710 puffs, ამიტომ ჩვენ უნდა გააგზავნოთ შეტყობინება გაკოცე puffs 132 00:05:44,710 --> 00:05:46,780 Sprite დასამალი თავად. 133 00:05:46,780 --> 00:05:49,550 ჩვენ შეგვეძლო ამის გაკეთება სხვა ცვლადი, რომ გაკოცე puffs 134 00:05:49,550 --> 00:05:52,680 Sprite ხელი მიუწვდება, ისევე როგორც თევზი Sprite. 135 00:05:52,680 --> 00:05:55,720 >> თუმცა, არსებობს სუფთა გზა ამის, ამ შემთხვევაში, 136 00:05:55,720 --> 00:05:57,840 რადგან ნაცვლად გაუგზავნა შეტყობინება სკრიფტი რომ 137 00:05:57,840 --> 00:06:00,570 სადღაც შუა შესრულებაში, ჩვენ შეგიძლიათ გააგზავნოთ 138 00:06:00,570 --> 00:06:03,710 შეტყობინება სკრიფტი რომ ელოდება უნდა დაიწყოს. 139 00:06:03,710 --> 00:06:07,360 ჩვენ ამას ვაკეთებთ მიერ მქონე თევზის ეთერში ღონისძიება, ერთი ჩვენ გამოგიგზავნით 140 00:06:07,360 --> 00:06:08,800 მოვუწოდებთ eaten. 141 00:06:08,800 --> 00:06:11,510 მაშინ, ჩვენ დაგიმზადებთ სცენარი გაკოცე puffs, რომელიც 142 00:06:11,510 --> 00:06:13,030 დაველოდოთ ამ მოვლენას. 143 00:06:13,030 --> 00:06:15,560 ეს არის მსგავსი სივრცეში ბარი ღონისძიება, გარდა იმისა, რომ ამ 144 00:06:15,560 --> 00:06:19,250 ახლა, მომხმარებლის არ ერთი პირდაპირ გამშვები მოვლენა. 145 00:06:19,250 --> 00:06:22,800 ახლა ყველა ჩვენ უნდა გავაკეთოთ არის ჩვენი foodFound ცვლადი უკან 146 00:06:22,800 --> 00:06:25,750 მცდარია, და ჩვენ შეგვიძლია ახლა მისცეს მშიერი თევზი რაც შეიძლება მეტი 147 00:06:25,750 --> 00:06:28,470 servings of გაკოცე puffs როგორც ეს სურს. 148 00:06:28,470 --> 00:06:30,040 >> ასე რომ არც ისე ცუდია, არა? 149 00:06:30,040 --> 00:06:33,400 In C, წერის მრავალნაკადური პროგრამების უფრო რთული, 150 00:06:33,400 --> 00:06:35,700 მაგრამ საფუძვლები არის იგივე. 151 00:06:35,700 --> 00:06:38,690 ყოველ შემთხვევაში, იმედი მაქვს, თქვენ გაქვთ დიდი დრო მშენებლობის გარკვეული fun 152 00:06:38,690 --> 00:06:41,030 კონკურენტმა პროგრამების Scratch. 153 00:06:41,030 --> 00:06:42,570 ჩემი სახელი არის Nate Hardison. 154 00:06:42,570 --> 00:06:45,260 ეს არის CS50.