[Powered by Google Translate] Nate HARDISON: როდესაც თქვენ მოხვდით მრავალჯერადი პროგრამების გაიხსნება კომპიუტერი, როგორც ჩანს, ყველაფერი გაშვებული ამავე დროს. მაგალითად, თქვენ შესაძლოა მომუშავე ბრაუზერში მოსწონს Firefox ან Internet Explorer, მუსიკის მოსმენის შესახებ iTunes, და წერა ესსეს ერთად Word. თუმცა, ქვეშ Hood, პროგრამების რეალურად აწარმოებს ერთ დროს. ეს სამუშაო ოპერაციული სისტემის, Windows, Mac OSX, ან Linux, მართოს თითოეული ცალკე პროცესების, როგორც პროგრამების ცნობილია, და გადაერთოთ მათ ისე, რომ როდესაც თქვენ გადასვლა შემოწმების თქვენი Facebook-ის გვერდზე მუშაობს თქვენი ესსე ერთხელ, სიტყვა არის ერთი, რომ კანდიდატად. ზოგჯერ, თუმცა, ჩვენ გვინდა პროგრამების თავად უნდა შეეძლოს გავაკეთოთ მრავალჯერადი რამ, როგორიცაა ამ, ძალიან. თუ თქვენ ჩემნაირი, ალბათ, არის რამოდენიმე სხვადასხვა ჩანართების გახსნა ბრაუზერში, ერთი ფოსტის, ერთი კალენდარი, და ასე შემდეგ. ჩვენ შეგვეძლო მკურნალობა ყოველი tab ცალკე პროგრამა ან პროცესის, როგორც Google Chrome აკეთებს, მაგრამ ბევრი პროგრამების გამოყენება მსუბუქი წონის ვერსია პროცესში მოუწოდა თემა. თემა არის კიდევ ერთი ერთეული გადამუშავების, კომპლექტი ინსტრუქციის ან კოდი, რომელიც შეიძლება "აწარმოებს", ციტირებით unquote, პარალელურად სხვა თემა. ეს არის ის, რაც შესაძლებელს ხდის თქვენ დაათვალიეროთ Facebook მოსმენისას ჩემთვის ფონზე ან აქვს ორი YouTube videos playing ამავე დროს. ასე რომ, ეს ზოგადად თემას, რომელიც ცნობილია როგორც concurrency, როგორც წესი, არ ამუშავება ასე ადრე კომპიუტერულ მეცნიერების კურსები რადგან ქვედა დონის დეტალები მოითხოვს განხილვას ოპერაციული სისტემების და მოსწონს. თუმცა, პროგრამირების ენა ვიყენებთ ზე დასაწყისში CS50, Scratch, უზრუნველყოფს ზოგიერთი nifty ინსტრუმენტი, რათა გაუადვილოს წერენ პროგრამებს მრავალი რამ მიმდინარეობს ერთდროულად. როდესაც თქვენ აშენება Scratch პროგრამების, თქვენ მუდმივად მუშაობის თემა. თითოეული Scratch სკრიპტი, რომელიც კოდი ბლოკი, რომელიც იწყება ერთი "როცა" თავსატეხი ცალი, შეიძლება ფიქრობდა როგორც ცალკე თემა. მოდით შევხედოთ მარტივ Scratch პროგრამა, თუ რამდენად ამ სამუშაოები. აქ გვაქვს თევზის ობიექტი, ან Sprite, ორი სკრიპტები რომ ორივე დაწყება როდესაც ჩვენ დააჭირეთ პატარა მწვანე დროშა ღილაკს. პირველი Script აკონტროლებს თევზის ს მოძრაობაში. როდესაც მწვანე დროშა დააწკაპებთ, თევზი იღებს განთავსებული მარცხენა მხარეს ეკრანზე, მოუწოდა ეტაპზე, წინაშე დგას მარჯვნივ. შემდეგ, ინსტრუქციათა რომ ყველაფერს აწარმოებს სამუდამოდ, სანამ ჩვენ შეწყვიტოს პროგრამა, თევზის glides მარჯვენა მხარეს, თურმე გარშემო, მიდის უკან მარცხენა მხარეს, და თურმე გარშემო კვლავ. მეორე Script აკონტროლებს თევზის მიერ აზროვნების პროცესში. თურმე ეს მშიერი თევზი. ასე რომ ლოდინის შემდეგ 3 წამში, თევზი იფიქრებს, "მე მშიერი," ამისთვის მეოთხე მეორე. ეს სკრიპტი ასევე ფლობს სამუდამოდ. და, როგორც ვხედავთ, საწყისი გაშვებული პროგრამის დაწკაპვით მწვანე დროშა, როგორც სკრიპტები გამოჩნდება შეასრულოს ერთდროულად. თევზი მოძრაობს და ფიქრობს, ამავე დროს. მას შემდეგ, რაც ცუდი თევზი გამოიყურება ასე მშიერი, მოდით დაამატოთ ზოგიერთ გაკოცე puffs ამისთვის ჭამა. იმედია, რომ ისინი არ დაიშალა წყალი. როდესაც ჩვენ დაამატეთ მეორე Sprite, ჩვენ ასევე შეძლებთ დაამატე სკრიპტები შესაბამისი რომ Sprite. და, აქედან გამომდინარე, იქ კიდევ ერთი კომპლექტი თემა რომ ყველაფერს აწარმოებს. მისცეს მომხმარებლის ჩვენი პროგრამის კონტროლის როდესაც მშიერი თევზი იღებს საკვები, ვთქვათ, რომ როდესაც ფართი ბარში მოხვდა, გაკოცე puffs გამოჩნდება ეტაპი თევზის ჭამა. სანამ მოხვდა ფართი ბარი, ჩვენ გვინდა, რომ შევინარჩუნოთ გაკოცე puffs იმალება ისე, რომ თევზი ვერ ხედავს მათ. ამისათვის ჩვენ გვჭირდება რამდენიმე სკრიპტები გაკოცე puffs Sprite. პირველი სკრიპტი, მწვანე დროშა, მხოლოდ დამალვა საკვები. განსხვავებით სხვა სკრიპტები ჩვენ წერილობით, ამ ერთი არ შეინარჩუნოს გაშვებული სამუდამოდ. ეს დაიწყება და დასრულდება ძალიან სწრაფად, უფლება, როდესაც ჩვენ დააჭირეთ მწვანე დროშა ღილაკს. შემდეგი Script გვაქვს დაელოდება სივრცეში ბარი იყოს დაპრესილი შესრულებამდე. ჩვენ შეგვიძლია ზარის ლოდინი მომხმარებლის შეყვანის "ელოდება" ან "მოსმენის" ამისთვის ღონისძიება. და კოდი, რომელიც ახორციელებს, როდესაც ღონისძიება მიღებული ან ისმის ეწოდება ღონისძიების გატარება კოდი. ჩვენი ფართი ბარი ღონისძიება დამმუშავებლის გამოჩნდება გაკოცე puffs შესახებ ეკრანზე ასე რომ თევზის ხსნილია მათ. ამ ეტაპზე, ყველაფერი ეძებს კარგი. შემდეგი რამ უნდა გავაკეთოთ არის ის, რომ გაერკვნენ, თუ როგორ უნდა თევზის გააცნობიეროს, რომ არსებობს საკვები ჭამა. მოდით დავამატოთ ახალი თემის თევზი, რომ მუდმივად ამოწმებს თუ არა ეს ეხება გაკოცე puffs. ჩვენ ამას ვაკეთებთ, ცალკე თემა, რადგან ამ გზით შეგვიძლია მუდმივად შევამოწმოთ საკვები. წინააღმდეგ შემთხვევაში, ჩვენ გვინდა მხოლოდ შეძლებენ პერიოდულად შეამოწმოთ საკვები შორის gliding, გარდამტეხი გარშემო, ელოდებიან, ან ფიქრობს. OK. ახლა მოდით აწარმოებს ჩვენი Scratch პროგრამა. როგორც მოსალოდნელი იყო, საკვები მაშინვე მალავს და მშიერი თევზის swims უკან და მეოთხე ისევე როგორც ადრე. როდესაც ჩვენ მოხვდა ფართი ბარი, გაკოცე puffs მოვიდეს აზრით, და მშიერი თევზი ამბობს whoo. მაგრამ დაველოდოთ, რომ უცნაურია. როგორ მოდის თევზი ს "მე მშიერი" აზრის interrupts სხვა პერსონალის? ეს იმიტომ რომ ჩვენ არ დაამკვიდროს რაიმე კოორდინაცია შორის სამი თევზის სკრიპტები. თითოეული გაშვებული საკუთარი თემა, oblivious თუ რა სხვები აკეთებენ. მოდით დაფიქსირება ამ სანამ ჩვენ გადასვლა. შორის კოორდინაციის თემა არის სახიფათო დავალება, რადგან ჩვენ არ გვაქვს გამოკვეთილ კონტროლი, როცა ყოველი ძაფი გადის ან ამჯამად არ აწარმოებს. გამოაგზავნოს გაგზავნა ერთი თემა სხვა, ჩვენ გვჭირდება გამოიყენოს ცვალებად, რომ ჩვენ შეგვიძლია მითითებული, ან ჩაწერის, ერთ თემა და წაიკითხონ სხვა. მოდით შევქმნათ ცვლადში foodFound რომ ჩვენ შეგვიძლია მითითებული ჭეშმარიტი, როდესაც თევზი ეშვება შევიდა გაკოცე puffs. ისე, რა თქმა უნდა, ჩვენ გვინდა დავრწმუნდეთ, რომ ჩვენ ვაყენებთ მას ყალბი თავდაპირველად. შემდეგ, თევზის მიერ აზროვნების ძაფი, ჩვენ შეამოწმეთ თუ თევზი იპოვა საკვები სანამ ჩვენებისას "მე მშიერი" ეგონა ბუშტი. ახლა, გაშვებული პროგრამა ერთხელ, ჩვენ ვხედავთ, რომ თევზი ვერ შეუშალა ერთად აზრები შიმშილით როდესაც გაკოცე puffs გარეთ. საბოლოო პრობლემა გვაქვს ის არის, რომ გაკოცე puffs არ მიდიან მოშორებით შემდეგ თევზი, ციტირებას unquote, "eats" მათ. მდებარეობა თევზის სკრიპტები, არ მარტივი გზა დამალვა გაკოცე puffs, ამიტომ ჩვენ უნდა გააგზავნოთ შეტყობინება გაკოცე puffs Sprite დასამალი თავად. ჩვენ შეგვეძლო ამის გაკეთება სხვა ცვლადი, რომ გაკოცე puffs Sprite ხელი მიუწვდება, ისევე როგორც თევზი Sprite. თუმცა, არსებობს სუფთა გზა ამის, ამ შემთხვევაში, რადგან ნაცვლად გაუგზავნა შეტყობინება სკრიფტი რომ სადღაც შუა შესრულებაში, ჩვენ შეგიძლიათ გააგზავნოთ შეტყობინება სკრიფტი რომ ელოდება უნდა დაიწყოს. ჩვენ ამას ვაკეთებთ მიერ მქონე თევზის ეთერში ღონისძიება, ერთი ჩვენ გამოგიგზავნით მოვუწოდებთ eaten. მაშინ, ჩვენ დაგიმზადებთ სცენარი გაკოცე puffs, რომელიც დაველოდოთ ამ მოვლენას. ეს არის მსგავსი სივრცეში ბარი ღონისძიება, გარდა იმისა, რომ ამ ახლა, მომხმარებლის არ ერთი პირდაპირ გამშვები მოვლენა. ახლა ყველა ჩვენ უნდა გავაკეთოთ არის ჩვენი foodFound ცვლადი უკან მცდარია, და ჩვენ შეგვიძლია ახლა მისცეს მშიერი თევზი რაც შეიძლება მეტი servings of გაკოცე puffs როგორც ეს სურს. ასე რომ არც ისე ცუდია, არა? In C, წერის მრავალნაკადური პროგრამების უფრო რთული, მაგრამ საფუძვლები არის იგივე. ყოველ შემთხვევაში, იმედი მაქვს, თქვენ გაქვთ დიდი დრო მშენებლობის გარკვეული fun კონკურენტმა პროგრამების Scratch. ჩემი სახელი არის Nate Hardison. ეს არის CS50.