1 00:00:00,000 --> 00:00:02,270 [Powered by Google Translate] [კვირა 2 გაგრძელდა] 2 00:00:02,270 --> 00:00:04,220 [დევიდ ჯ Malan, ჰარვარდის უნივერსიტეტი] 3 00:00:04,220 --> 00:00:06,880 [ეს არის CS50. - CS50.TV] 4 00:00:06,880 --> 00:00:10,990 ყველა უფლება. ეს არის CS50, და ეს არის ბოლომდე კვირაში 2. 5 00:00:10,990 --> 00:00:14,410 თუ თქვენ მოველით, რომ იყოს მშიერი გარშემო ამ დროს ხვალ, 6 00:00:14,410 --> 00:00:18,620 ვიცი, რომ ჩვენ ვაპირებთ მოიწვიოს როგორც მცირე ჯგუფი ხვალ, ხუთშაბათს, 1:15 საათზე. 7 00:00:18,620 --> 00:00:21,360 არსებობს ამ URL აქ თუ გსურთ Rsvp. 8 00:00:21,360 --> 00:00:26,740 ფართი არის შეზღუდული, ასე რომ გთხოვთ აპატიებს თუ ფორმა შევსებული მიერ ახლა თქვენ შეავსოთ ამ გარეთ. 9 00:00:26,740 --> 00:00:29,300 კიდევ ერთი URL, თუმცა, რომ შეიძლება იყოს ინტერესთა ეს. 10 00:00:29,300 --> 00:00:32,369 რაღაც დაახლოებით თვეში, რა თქმა უნდა, იქნება ხელმისაწვდომი 11 00:00:32,369 --> 00:00:36,890 ყველა უფრო ფართოდ მეშვეობით EDX გავლით რომელიც FOLKS ინტერნეტში შეძლებს დაიცვას გასწვრივ, 12 00:00:36,890 --> 00:00:39,380 ჩაერთონ თქმა საკმაოდ აქტიურად, ფაქტობრივად. 13 00:00:39,380 --> 00:00:42,270 ისინი გექნებათ გამოყენებით CS50 ელექტრო და CS50 იმსჯელებს 14 00:00:42,270 --> 00:00:45,490 და ყველაზე მეტად სხვადასხვა პროგრამული ინსტრუმენტების, რომ ჩვენ უკვე იყენებს ამ სემესტრში. 15 00:00:45,490 --> 00:00:48,710 და ერთ ინიციატივების მინდა იღებს როგორც ექსპერიმენტი ამ წელიწადში 16 00:00:48,710 --> 00:00:51,930 , ვნახოთ, თუ რაოდენ ბევრის კონტენტი შეგვიძლია თარგმნოს 17 00:00:51,930 --> 00:00:53,960 სხვა ლაპარაკობენ და წერილობითი ენებზე. 18 00:00:53,960 --> 00:00:57,500 ასე რომ, თუ თქვენ შეიძლება ჰქონდეს ინტერესი ამ პროექტში მონაწილეობდა 19 00:00:57,500 --> 00:01:02,270 რომლითაც ჩვენ ვუზრუნველყოფთ English ტრანსკრიპცია და სუბტიტრები კურსის ლექციები 20 00:01:02,270 --> 00:01:05,450 და შორტები და სემინარები და სექციები და მოსწონს, 21 00:01:05,450 --> 00:01:08,200 თუ საუბარი თავისუფლად ან ჩაწერის თავისუფლად ზოგიერთი სხვა ენაზე 22 00:01:08,200 --> 00:01:12,290 ჩვენ გვიყვარს აწარმოონ თქვენ ამ პროექტში, რომლის დროსაც თქვენ იღებს ერთი ან მეტი ვიდეო, 23 00:01:12,290 --> 00:01:15,200 თარგმნა მათი ენა, იცნობენ. 24 00:01:15,200 --> 00:01:18,700 >> გადმოგცეთ გრძნობა ინტერფეისი, არსებობს ამ ვებ დაფუძნებული ინტერფეისი 25 00:01:18,700 --> 00:01:22,090 რომ ჩვენ უნდა გამოყენებით რომ შევქმნით არსებითად UI მოსწონს ეს. 26 00:01:22,090 --> 00:01:24,290 ეს იყო ჩემთვის სწავლების ზოგიერთი ჰელოუინი წინ, 27 00:01:24,290 --> 00:01:27,390 და მარჯვენა მხარეს იქ შავ შემდეგი ამ დროს შტამპები, 28 00:01:27,390 --> 00:01:31,210 თქვენ ნახავთ სხვადასხვა რამ, რომ გამოვიდა ჩემი პირით, რომ დღეს, 29 00:01:31,210 --> 00:01:34,850 და შემდეგ ქვემოთ ეს თქვენ გექნებათ გარდაქმნა ზოგიერთი სხვა ენაზე 30 00:01:34,850 --> 00:01:38,690 ზუსტად რა არის რუკების შორის, ამ შემთხვევაში, ინგლისური და, ვთქვათ, ესპანური. 31 00:01:38,690 --> 00:01:40,440 ასე რომ, რეალურად ძალიან მოსახერხებელი ინსტრუმენტი. 32 00:01:40,440 --> 00:01:43,370 შეგიძლიათ გადახვევა და სწრაფი წინსვლის ძალიან ადვილად ერთად კლავიშთა. 33 00:01:43,370 --> 00:01:47,490 ასე რომ, თუ გსურთ, მონაწილეობა მიიღოს ამ ექსპერიმენტი და აქვს თქვენი სიტყვა უნახავს და წაიკითხეთ 34 00:01:47,490 --> 00:01:51,850 მიერ პოტენციურად ათასობით FOLKS out არსებობს, გთხოვთ, ნუ მოგერიდებათ მონაწილეობას. 35 00:01:51,850 --> 00:01:54,350 ერთი სიტყვით kitten ორშაბათიდან. 36 00:01:54,350 --> 00:02:00,350 Lest ჩვენ გაგზავნილი ზედმეტად საშინელი გაგზავნა, არ ესმოდეს, რომ, როგორც ოფისში საათის ვარაუდობენ 37 00:02:00,350 --> 00:02:03,300 და როგორც სექციები ვარაუდობენ, დიზაინი რა თქმა უნდა, ძალიან ბევრი რამ 38 00:02:03,300 --> 00:02:07,360 არ სტუდენტები თანამშრომლობს და საუბარს მუშაობის გზით პრობლემის კომპლექტი 39 00:02:07,360 --> 00:02:11,260 და პრობლემები ერთად, და ნამდვილად ხაზის უბრალოდ მოდის ქვემოთ, 40 00:02:11,260 --> 00:02:16,010 ერთხელ, სამუშაო თქვენ საბოლოოდ წარუდგინოს უნდა იყოს თქვენი საკუთარი. 41 00:02:16,010 --> 00:02:18,860 და ა.შ. საკმაოდ პატიოსნად, ოფისში საათის ეს სრულიად ნორმალურია, 42 00:02:18,860 --> 00:02:22,240 ეს სრულიად უნდა მოსალოდნელია კი, უნდა chatting ზოგიერთ მეგობარს შემდეგი თქვენ. 43 00:02:22,240 --> 00:02:24,370 >> თუ იგი ბრძოლა ზოგიერთი თემის და თქვენ, როგორიცაა, 44 00:02:24,370 --> 00:02:27,940 "ოჰ, კარგად, მინდა გადმოგცეთ glimpse ზოგიერთი ხაზი კოდი, რომ დავწერე," რომ ჯარიმა, 45 00:02:27,940 --> 00:02:31,250 ეს მოხდება, და რომ ძალიან ბევრი რამ ხელს, ვფიქრობ, ერთად პროცესში სწავლისა. 46 00:02:31,250 --> 00:02:36,750 სად ხაზი იღებს გადმოკვეთა არის, როცა ხელმძღვანელი არის ერთგვარი tilted მეტი აქ ძალიან ბევრი წამი 47 00:02:36,750 --> 00:02:41,160 ან წუთი, რომ ნამდვილად არ იყო მხოლოდ ბლოკის მოხსნა შესაძლებლობა თქვენი მეგობარი, 48 00:02:41,160 --> 00:02:44,160 და, რა თქმა უნდა, როდესაც რამ მისაღებად გაცვალეს ელექტრონული ფოსტის მეშვეობით და Dropbox და მოსწონს, 49 00:02:44,160 --> 00:02:45,640 იქაც არის ხაზზე. 50 00:02:45,640 --> 00:02:48,620 ასე რომ ყველა საშუალებით კომფორტისთვის და გრძნობს წახალისება ესაუბროთ მეგობრები 51 00:02:48,620 --> 00:02:52,810 და თანაკლასელები შესახებ psets და უფრო და მხოლოდ გააცნობიეროს, რომ ის, რაც თქვენ საბოლოოდ წარუდგენს 52 00:02:52,810 --> 00:02:57,340 უნდა იყოს ნამდვილად პროდუქტი თქვენი შექმნა და არა ვინმე სხვა. 53 00:02:57,340 --> 00:03:00,490 და ა.შ. ერთი domain სპეციფიკური პრობლემებს pset2, 54 00:03:00,490 --> 00:03:04,740 რომელიც გამოვა გვიან ხვალ, არის ჩაყვინთვის შევიდა სამყაროში კრიპტოგრაფიის, 55 00:03:04,740 --> 00:03:08,970 რომელიც ხელოვნების encrypting ან scrambling ინფორმაციით, 56 00:03:08,970 --> 00:03:12,600 და ეს საბოლოო ჯამში ეხება სამყაროს უსაფრთხოებას. 57 00:03:12,600 --> 00:03:16,560 ახლა, უსაფრთხოების ყველაზე მეტად ჩვენს მოდის სახით საკმაოდ mundane მექანიზმები. 58 00:03:16,560 --> 00:03:19,050 ყველა ჩვენგანს აქვს სახელისა და პაროლის, 59 00:03:19,050 --> 00:03:23,450 და ყველას უნდა გვქონდეს ძალიან ცუდი სახელისა და პაროლის, სავარაუდოდ. 60 00:03:23,450 --> 00:03:28,240 >> თუ თქვენი პაროლი არის იგივე სხვადასხვა საიტებზე, რომ ალბათ არ საუკეთესო იდეა, 61 00:03:28,240 --> 00:03:30,070 როგორც ჩვენ განვიხილავთ მიმართ სემესტრის ბოლოს. 62 00:03:30,070 --> 00:03:34,720 თუ თქვენი პაროლი აწერია შენიშვნათა - არ ხუმრობა - თქვენი მონიტორი, 63 00:03:34,720 --> 00:03:38,350 რომ ძალიან არ არის აუცილებლად საუკეთესო დიზაინის, მაგრამ საკმაოდ ჩვეულებრივი მოვლენაა. 64 00:03:38,350 --> 00:03:42,470 და თუ თქვენ არ იყენებთ კრიპტოგრაფიის დაშიფვრა თქვენი პაროლები, 65 00:03:42,470 --> 00:03:44,210 ისინი განსაკუთრებით მგრძნობიარენი. 66 00:03:44,210 --> 00:03:47,270 ასე რომ, თუ თქვენ ფიქრობთ, თქვენ მიმდინარეობს სუპერ ჭკვიანი მიერ მქონე ფარული Word დოკუმენტის 67 00:03:47,270 --> 00:03:49,910 სადმე თქვენს ხისტ დისკზე, რომელსაც აქვს ყველა თქვენი პაროლები 68 00:03:49,910 --> 00:03:53,670 მაგრამ საქაღალდეში, რომ არავინ აპირებს გამოიყურებოდეს წელს, რომ ძალიან არ არის ძალიან უსაფრთხო მექანიზმი. 69 00:03:53,670 --> 00:03:56,990 და მერე რა pset2 გააცნობს არის ამ ხელოვნებას კრიპტოგრაფიის 70 00:03:56,990 --> 00:04:02,010 და scrambling ინფორმაცია ისე, რომ რამ, როგორიცაა პაროლები ყველა უფრო უსაფრთხო. 71 00:04:02,010 --> 00:04:05,790 კონტექსტში აქ არის, რომ არასაიმედო მონაცემები 72 00:04:05,790 --> 00:04:07,930 მოდის საშუალებას დაშიფვრა ეს და scramble ეს. 73 00:04:07,930 --> 00:04:11,470 და ამიტომ ეს, მაგალითად, არის მაგალითი დაშიფრული გაგზავნა. 74 00:04:11,470 --> 00:04:14,700 ეს რეალურად ამბობს რაღაც ინგლისურ, მაგრამ აშკარად არ მთლიანად აშკარაა. 75 00:04:14,700 --> 00:04:18,279 და ჩვენ მოდის სრული წრე დღეს აჯავრებენ გარდა რა ამ საიდუმლო გაგზავნა აქ არის. 76 00:04:18,279 --> 00:04:23,490 მაგრამ რეალურ ცხოვრებაში კომპიუტერების, რამ არც კი ჰგავს, შესაძლოა, მათ ინგლისურ ფრაზებს. 77 00:04:23,490 --> 00:04:28,430 მაგალითად, ეს არის ის, რაც თქვენ შეიძლება on სტანდარტული Linux ან Mac ან UNIX კომპიუტერი 78 00:04:28,430 --> 00:04:32,070 წელს ფაილი, რომელიც იყო ერთხელ მოუწოდა დაგავიწყდათ ფაილი. 79 00:04:32,070 --> 00:04:34,200 >> დღესდღეობით მისთვის გადავიდა სხვა ადგილებში. 80 00:04:34,200 --> 00:04:39,210 მაგრამ თუ გადავხედავთ სწორი ადგილი სისტემა, თქვენ ნახავთ არამხოლოდ თქვენი სახელი 81 00:04:39,210 --> 00:04:43,400 ან რომ სხვა ადამიანების სისტემა, მაგრამ თქვენ ნახავთ დაშიფრული ვერსია მათი პაროლი. 82 00:04:43,400 --> 00:04:47,980 მართლაც, სიტყვის საძვალე იქ ვარაუდობს, რომ შემდეგი პერსონალი არის დაშიფრული, 83 00:04:47,980 --> 00:04:52,680 და ამ სერიაში ერთი შეხედვით შემთხვევითი წერილები და პერსონაჟები და ნომრები და ა.შ. 84 00:04:52,680 --> 00:04:56,480 შეიძლება გაშიფრავთ მხოლოდ ზოგადად იცის ზოგიერთი საიდუმლო - 85 00:04:56,480 --> 00:04:58,840 საიდუმლო სიტყვა, ფარული ნომერი - 86 00:04:58,840 --> 00:05:03,160 და ა.შ. რა თქმა უნდა, ხელოვნების კრიპტოგრაფიის საბოლოოდ boils ქვემოთ ნდობის გარკვეული 87 00:05:03,160 --> 00:05:05,650 და იცის, რომ რაღაც სხვის არ. 88 00:05:05,650 --> 00:05:10,090 ამიტომ ჩვენ შეისწავლონ ეს ცოტა უფრო დეტალურად დღესაც და pset მოვა. 89 00:05:10,090 --> 00:05:12,200 და ახლა სიტყვა უღელტეხილზე / Fail. 90 00:05:12,200 --> 00:05:15,360 განსაკუთრებით ზოგიერთ თქვენგანს dived შევიდა pset1, ელექტრო მოწყობილობების, 91 00:05:15,360 --> 00:05:19,080 და ძალიან ახალი მსოფლიო თავს, გააცნობიეროს, რომ იმედგაცრუებები და დაბნეულობა 92 00:05:19,080 --> 00:05:21,700 და მხოლოდ ტექნიკური სირთულეების საკმაოდ უნდა მოსალოდნელია, 93 00:05:21,700 --> 00:05:24,180 განსაკუთრებით პირველი pset, სადაც უბრალოდ იმდენად ახალი, 94 00:05:24,180 --> 00:05:27,730 უბრალოდ გაცნობოდა ls და CD და ყველა ამ arcane ბრძანებები 95 00:05:27,730 --> 00:05:33,050 და ახალ გარემოსთან, და ეს ცალკე ფაქტობრივი მასალა და პროგრამირების თავად. 96 00:05:33,050 --> 00:05:36,940 ასე რომ მიხვდებიან, ძალიან, რომ არსებობს ნამდვილად საათებში, რომ არსებობს, როგორც მხარდაჭერა სტრუქტურა. 97 00:05:36,940 --> 00:05:38,880 >> სექცია იწყება ამ მოდის კვირა. 98 00:05:38,880 --> 00:05:42,960 მაგრამ რაც მთავარია, თუ თქვენ შეგრძნება მხოლოდ, რომ ეს არ არის მსოფლიოს თქვენთვის, 99 00:05:42,960 --> 00:05:44,710 გააცნობიეროს, რომ ის მართლაც ამჯამად მხოლოდ დრო სჭირდება. 100 00:05:44,710 --> 00:05:48,600 და იყო არა ეს შესაძლებლობა წლის წინ ჩემთვის აღების კლასის უღელტეხილზე / ვერ, 101 00:05:48,600 --> 00:05:50,990 პატიოსნად, მე არასოდეს იქნებოდა კიდევ დადგენილი ფეხით საკლასო ოთახში. 102 00:05:50,990 --> 00:05:53,690 თქვენ შეგიძლიათ შეცვალოთ ეს წლამდე, ვთქვათ, მეხუთე ორშაბათს კურსის, 103 00:05:53,690 --> 00:05:58,280 ასე რომ, თუ თქვენ ზღვარზე ახლა, გააცნობიეროს, რომ ვიდრე უფროსი შევიდა ზოგიერთი სხვა წყლებში საერთოდ, 104 00:05:58,280 --> 00:06:01,260 რა თქმა უნდა განიხილოს მხოლოდ იცვლება მიღება / ჩავარდება. 105 00:06:01,260 --> 00:06:04,570 ისევ და ისევ, იქ ნამდვილად არ ამ კულტურის აქ ჰარვარდის აღების რამ მიღება / ვერ 106 00:06:04,570 --> 00:06:08,670 რადგან ყველას ნამდვილად სურს მიაღწიოს ან overachieve, 107 00:06:08,670 --> 00:06:11,130 მაგრამ გულწრფელად ვამბობ, რომ ეს არის შესანიშნავი გზა ცდილობს რაღაც გარეთ 108 00:06:11,130 --> 00:06:16,720 რომ არ უნდა იყოს ნაცნობი თქვენ, და თქვენ დასრულდება up აკეთებს, უმეტეს შემთხვევაში, საკმაოდ ჯარიმა, 109 00:06:16,720 --> 00:06:18,210 ალბათ ბევრი თქვენი სიურპრიზი. 110 00:06:18,210 --> 00:06:20,980 და უფრო კონკრეტული ვადები, რას ვფიქრობ გაივლის / ვერ აკეთებს საერთოდ, 111 00:06:20,980 --> 00:06:22,940 განსაკუთრებით, როგორც თქვენ ალბათ გამოცდილი ერთად pset0, 112 00:06:22,940 --> 00:06:26,560 თუ თქვენც არ დაიშურებთ 10 საათი, 15 საათი, 25 საათი შევიდა ზოგიერთი pset 113 00:06:26,560 --> 00:06:29,920 და თქვენ მხოლოდ ამ banging თქვენი უფროსის წინააღმდეგ კედლის და ის მისაღებად სუპერ გვიან ღამით 114 00:06:29,920 --> 00:06:33,950 მაგრამ თქვენ გადაღებული pset 90% გზა და თქვენ უბრალოდ ვერ გაერკვნენ ერთი რამ, 115 00:06:33,950 --> 00:06:36,520 მიღება / ვერ იღებს ნამდვილად პირას გამორთვა კლასის მოსწონს, 116 00:06:36,520 --> 00:06:39,100 სადაც შეგიძლიათ სახის სიხარულით ამბობენ, "Okay, მე ვიცი, რომ ეს არ არის სრულყოფილი, 117 00:06:39,100 --> 00:06:42,350 მაგრამ ვმუშაობდი ჩემი ass off ამ, მე საკმაოდ კმაყოფილი სადაც იგი დასრულდა, " 118 00:06:42,350 --> 00:06:44,850 და რომ შეხვდება მოლოდინი უღელტეხილზე / ჩავარდება. 119 00:06:44,850 --> 00:06:47,540 ასე რომ შევინარჩუნოთ, რომ გონება. ყველა უფლება. 120 00:06:47,540 --> 00:06:50,520 >> ასე რომ იმ, ვინც არ იბრძვის გამოიყენოთ ჰარვარდის უნივერსიტეტი, Wi-Fi, 121 00:06:50,520 --> 00:06:54,780 ვიცი, რომ არსებობს CS50 SSID, Wi-Fi კავშირი, მცურავი გარშემო 122 00:06:54,780 --> 00:06:56,490 რომ თქვენ შეიძლება უკეთესი გისურვებთ ამისთვის. 123 00:06:56,490 --> 00:07:00,130 ეს პატარა ირონიული, რომ პაროლი, თუ გსურთ ცდილობენ დამაკავშირებელი ამ 124 00:07:00,130 --> 00:07:08,350 უკეთესი სიჩქარეზე - და გვაცნობოთ თუ უკეთესი არ - არის 12345, ყველა გზა მდე 8 125 00:07:08,350 --> 00:07:10,910 რადგან 8 არის უფრო უსაფრთხო, ვიდრე 5. 126 00:07:10,910 --> 00:07:16,910 ასე რომ, თუ თქვენ უნდა Wi-Fi დაგავიწყდათ, დაუკავშირდეთ CS50 wirelessly აქ, 12345678, 127 00:07:16,910 --> 00:07:20,380 და პოსტ on CS50 იმსჯელებს თუ გაგიჩნდებათ რაიმე წყვეტილი კავშირი საკითხები, 128 00:07:20,380 --> 00:07:25,420 და ჩვენ ნება ძალებს, უნდა იცოდეს, ამ სივრცეში. ყველა უფლება. 129 00:07:25,420 --> 00:07:32,230 ამიტომ სწრაფი teaser, განსაკუთრებით იმ თქვენ, რომლებიც გულშემატკივართა ბიჭები ან გოგონებს ყველაფერი Apple. 130 00:07:32,230 --> 00:07:37,460 რა გათხრილი მდე რამდენიმე წლის იყო ამ ფაილის აქ, iUnlock.c, 131 00:07:37,460 --> 00:07:39,930 მხოლოდ სახის უფრო კონკრეტული და უფრო რთული 132 00:07:39,930 --> 00:07:42,560 ზოგიერთი უფრო საბაზისო C პროგრამების ჩვენ წერილობით. 133 00:07:42,560 --> 00:07:46,910 ამიტომ გავხსენი ეს ფაილი, iUnlock.c. ეს შესაძლებელი ლექციები გვერდზე დღეს. 134 00:07:46,910 --> 00:07:49,810 On მარცხენა მხარეს ხედავთ გრძელი სიის ფუნქციები. 135 00:07:49,810 --> 00:07:53,230 ასე რომ თანამემამულე ვინ დაწერა ეს დაწერა up ბევრი ფუნქციები, მეტი, ვიდრე უბრალოდ ძირითადი. 136 00:07:53,230 --> 00:07:57,340 მან გამოიყენა მთელი bunch ბიბლიოთეკების აქ, და თუ ჩვენ დავიწყებთ სენსორული მეშვეობით, 137 00:07:57,340 --> 00:08:04,890 რა არის რეალურად არის პირველი, მე მჯერა, crack for ორიგინალური iPhone. 138 00:08:04,890 --> 00:08:09,830 >> როდესაც თქვენ სურდა jailbreak ორიგინალური iPhone, რაც იმას ნიშნავს, untether ის AT & T 139 00:08:09,830 --> 00:08:13,710 და ფაქტობრივად დააყენოთ სპეციალური პროგრამული მასზე და გავაკეთოთ რამ, რომ Apple არ სურს ხალხს უნდა გავაკეთოთ, 140 00:08:13,710 --> 00:08:18,480 ვიღაცამ აიღო დრო უნდა გაერკვნენ, თუ როგორ ზუსტად მათ შეეძლოთ გამოეყენებინათ პროგრამული ხარვეზები, 141 00:08:18,480 --> 00:08:22,690 შეცდომები, შეცდომები, წელს Apple პროგრამული უზრუნველყოფა, და ამით დაიბადა iUnlock.c-- 142 00:08:22,690 --> 00:08:26,760 რომ თუ თქვენ შედგენილი იგი თქვენს კომპიუტერში და დამონტაჟებული მას გადატანა iPhone 143 00:08:26,760 --> 00:08:29,430 რომელიც დაკავშირებულია თქვენს კომპიუტერში მეშვეობით, ვთქვათ, USB კაბელი, 144 00:08:29,430 --> 00:08:32,450 ეს გაძლევთ ადმინისტრაციულ ან root პრივილეგიებით თქვენს iPhone 145 00:08:32,450 --> 00:08:34,620 და მოდით თქვენ აკეთებთ საკმაოდ ბევრი რაც გაგიხარდებათ. 146 00:08:34,620 --> 00:08:36,400 და ასე რომ უკვე ამ მომხიბლავი კატა და მაუსი თამაში 147 00:08:36,400 --> 00:08:39,340 შორის Apple და დანარჩენ მსოფლიოსთან კერძოდ, როგორც მათ, როგორც ბევრი კომპანიები, 148 00:08:39,340 --> 00:08:43,350 ცდილობენ ჩაკეტვა მათი პერსონალის ქვემოთ ასე რომ თქვენ შეგიძლიათ მხოლოდ შუაში იყო, რაც მათ განზრახული. 149 00:08:43,350 --> 00:08:47,360 მაგრამ წყალობით ადამიანს მოსწონს ეს და გაგება დაბალი დონის დეტალები - 150 00:08:47,360 --> 00:08:50,830 და ამ შემთხვევაში C პროგრამირების - და ბევრი ნაცნობი აშენებს 151 00:08:50,830 --> 00:08:55,280 რომ დავიწყეთ თამაში, თქვენ შეგიძლიათ რეალურად ბერკეტები აპარატურა 152 00:08:55,280 --> 00:08:59,250 ისე ხედავთ fit და არ ემთხვეოდეს ზოგიერთი კორპორატიული პირი. 153 00:08:59,250 --> 00:09:01,600 ასე მაგალითად, მე არ ვიცი, რა ყველა ამ აკეთებს 154 00:09:01,600 --> 00:09:03,580 მაგრამ GetVersion ხმები საკმაოდ მარტივია, 155 00:09:03,580 --> 00:09:05,710 და როგორც ჩანს, ეს ფუნქცია, რომ ეს ადამიანი წერს. 156 00:09:05,710 --> 00:09:09,250 იგი იღებს გარკვეული რიცხვი, როგორც არგუმენტი, არ დააბრუნებს არაფერი, 157 00:09:09,250 --> 00:09:13,710 მაგრამ, როგორც ჩანს, მარყუჟის რეჟიმში ამისთვის loop აქ და თუ მდგომარეობა, თუ მდგომარეობა შესვენების 158 00:09:13,710 --> 00:09:16,770 და რაღაცნაირად დაკავშირებულია ვერსია ნომრები თუ ჩვენ გადახვევა down, 159 00:09:16,770 --> 00:09:19,650 მიუხედავად იმისა, რომ ბევრი ამ სიტყვებით ვაპირებთ იყოს ახალი. 160 00:09:19,650 --> 00:09:22,590 წინ კიდევ მთელი ბევრი ფუნქციები აქ ჩვენ მინახავს და შეიძლება არ ოდესმე ვხედავ 161 00:09:22,590 --> 00:09:24,350 მეტი კურსი სემესტრი. 162 00:09:24,350 --> 00:09:29,160 >> დასასრულს დღეს, იგი შემდეგნაირად იგივე წესების და ლოგიკა, რომ ჩვენ თამაშს დღემდე. 163 00:09:29,160 --> 00:09:34,340 ასე რომ, ეს არის ზედმეტად მოხუცი ბზარი თქვენი iPhone 3S ან 4S ან მალე 5S ამ დღეებში, 164 00:09:34,340 --> 00:09:38,830 მაგრამ ვიცით, რომ ეს ყველაფერი ძალიან გამომდინარეობს ამ მსოფლიოს, რომ ჩვენ dived შევიდა. 165 00:09:38,830 --> 00:09:42,280 მოდით შევხედოთ ცოტა უფრო მარტივი მაგალითი: 166 00:09:42,280 --> 00:09:46,260 ამ ერთი, უბრალოდ მისაღებად warmed რაიმე სინტაქსი და ასევე ზოგიერთი სხვა ტიპის მონაცემის 167 00:09:46,260 --> 00:09:48,910 რომ ჩვენ ვისაუბრეთ, მაგრამ არ ნამდვილად ჩანს C. 168 00:09:48,910 --> 00:09:53,670 ეს არის ფაილი სახელად positive1.c, და თითო კომენტარები ზედა, 169 00:09:53,670 --> 00:09:56,070 ამ მხოლოდ მოითხოვს, რომ მომხმარებლის უზრუნველყოს დადებითი რიცხვი. 170 00:09:56,070 --> 00:09:59,910 ასე რომ მაგალითი do-ხოლო loop, რომელიც ლამაზი მომხმარებლის ინტერაქტიული პროგრამების 171 00:09:59,910 --> 00:10:02,070 სადაც თქვენ უნდა ვუთხრა მომხმარებელს რაღაც, 172 00:10:02,070 --> 00:10:05,530 და თუ ისინი არ თანამშრომლობენ თქვენ დაწეროთ მათ ან უარყოს მათი შეყვანის. 173 00:10:05,530 --> 00:10:10,480 მაგალითია: მე აპირებს ხაზები 19 გზით 24 174 00:10:10,480 --> 00:10:14,620 ამიტომ სანამ მომხმარებლებს არ მომცა დადებითი რიცხვი. 175 00:10:14,620 --> 00:10:21,340 ეს დეტალი აქ on line 18, რატომ ვაცხადებ N ზემოთ ამ მთელი looping მშენებლობა 176 00:10:21,340 --> 00:10:26,870 როგორც ეწინააღმდეგებოდა უფლება მომდევნო ხაზი 22, სადაც მე რეალურად ზრუნვა მისაღებად N? Yeah. 177 00:10:26,870 --> 00:10:29,330 [სტუდენტი] Scope. >> ჰო, ისე ამ საკითხის ფარგლებს. 178 00:10:29,330 --> 00:10:31,770 და ერისკაცად წარმოგვიდგება მისი თვალსაზრისით, რას ფარგლებს ეხება? 179 00:10:34,880 --> 00:10:41,560 Yeah. >> [Inaudible სტუდენტი საპასუხოდ] >> იქნებ ცოტა louder? 180 00:10:41,560 --> 00:10:45,440 [სტუდენტი] სად შეგიძლიათ, რომ ცვლადი. >> Perfect. 181 00:10:45,440 --> 00:10:47,610 სად შეგიძლიათ კონკრეტული ცვლადი. 182 00:10:47,610 --> 00:10:50,990 და საერთოდ, უზენაესობის ცერის დღემდე არის, რომ ფარგლებს ზოგიერთი ცვლადის 183 00:10:50,990 --> 00:10:56,140 განისაზღვრება უახლესი Curly braces რომ თქვენ ვხედავთ. 184 00:10:56,140 --> 00:11:03,070 >> და ა.შ. ამ შემთხვევაში, თუ დაუშვა შეცდომა, გამოცხადების N on line 22, რომ ხაზი იმუშავებს. 185 00:11:03,070 --> 00:11:10,840 მინდა კიდევ int, და მე მისთვის შეიძლება შევიდა, რომ ცვლადი N სტრიქონში 22, 186 00:11:10,840 --> 00:11:17,060 მაგრამ ხაზი კოდი, რომ ახლა არ ვიცი რა მე ვსაუბრობ? >> [სტუდენტი] 25. 187 00:11:17,060 --> 00:11:23,840 [Malan] 25 და თურმე 24, რადგან ამ შემთხვევაში იგი მოდის გარეთ Curly braces. 188 00:11:23,840 --> 00:11:28,550 ასე რომ მხოლოდ ცოტა უსიამოვნოა, მაგრამ ძალიან ადვილად მოგვარდება უბრალოდ გამოცხადების ცვლადი 189 00:11:28,550 --> 00:11:30,700 გარეთ ფუნქცია თავად. 190 00:11:30,700 --> 00:11:32,760 ჩვენ დავინახავთ, დღესვე შეგიძლიათ ერთი ნაბიჯი შემდგომი 191 00:11:32,760 --> 00:11:34,940 და თქვენ შეიძლება კი ცოტა ზარმაცი. 192 00:11:34,940 --> 00:11:39,660 და ეს არ შეიძლება რეკომენდებული ზოგადად, მაგრამ თქვენ ვერ კი ეზარებათ 193 00:11:39,660 --> 00:11:44,150 და დააყენა ცვლადი გლობალურად, ასე ვთქვათ, არ შიგნით ფუნქცია, არ შიგნით მარყუჟის, 194 00:11:44,150 --> 00:11:49,800 მაგრამ ფაილი თვით, გარეთ ყველა ფუნქციების თქვენ წერილობითი, როგორც მე აქ ხაზი 15. 195 00:11:49,800 --> 00:11:55,220 ეს არის ზოგადად frowned საფუძველზე, არამედ გააცნობიეროს ეს არის გამოსავალი ხან სხვა პრობლემებს, 196 00:11:55,220 --> 00:11:56,910 როგორც ჩვენ საბოლოოდ ვხედავთ. 197 00:11:56,910 --> 00:11:59,500 ასე რომ, ახლა ჩვენ დავტოვებთ მას მოსწონს, მაგრამ მოდით ვნახოთ, შევძლებთ თუ გადაწერას ამ 198 00:11:59,500 --> 00:12:02,360 უბრალოდ უნდა დაიწყოს გამოხატავს საკუთარ თავს პატარა განსხვავებულად. 199 00:12:02,360 --> 00:12:05,550 ეს პროგრამა, უბრალოდ უნდა იყოს მკაფიო, არის positive1. 200 00:12:05,550 --> 00:12:11,980 ნება მომეცით წავიდეთ წინ აქ და ჩემი ტერმინალის ფანჯარაში მიიღოს positive1, შეიყვანეთ. 201 00:12:11,980 --> 00:12:15,080 ადგენს okay. მე ვაპირებ აწარმოებს positive1, დააჭიროთ. 202 00:12:15,080 --> 00:12:19,250 მე მოვითხოვ რომ თქვენ მაძლევს დადებითი მთელი რიცხვი. მე ვთქვა -1. რომ არ მუშაობდა. 203 00:12:19,250 --> 00:12:22,340 0, 99. რომელიც, როგორც ჩანს მუშაობა. 204 00:12:22,340 --> 00:12:25,310 იქნებ არ საუკეთესო მკაცრი გამოცდა, მაგრამ მაინც კარგია, საღი აზრის გამშვები 205 00:12:25,310 --> 00:12:27,100 რომ ჩვენ სწორ გზაზე. 206 00:12:27,100 --> 00:12:29,570 >> ახლა ნება მომეცით წავიდეთ წინ და გახსნა ვერსია 2 ამ, 207 00:12:29,570 --> 00:12:32,800 და რით განსხვავდება უკვე? 208 00:12:32,800 --> 00:12:39,030 იგი ახორციელებს იგივე, მაგრამ რა jumping, როგორც ნათლად სხვადასხვა ამ დროს? 209 00:12:40,790 --> 00:12:47,090 ეს bool მწვანე. ეს არის ასახული მწვანე, ამ სიტყვით ცნობილია როგორც bool, რომელიც მონაცემთა ტიპის. 210 00:12:47,090 --> 00:12:50,510 იგი არ მოდის აგებული ყველა ვერსიები C. 211 00:12:50,510 --> 00:12:52,650 თქვენ უნდა შეიცავდეს კონკრეტულ ბიბლიოთეკაში. 212 00:12:52,650 --> 00:12:56,460 ჩვენს შემთხვევაში, მე მოიცავდა CS50 ბიბლიოთეკაში ისე, რომ ჩვენ გვაქვს წვდომა bool. 213 00:12:56,460 --> 00:12:59,860 მაგრამ ხაზი 18, ჩვენ, როგორც ჩანს, აქვს ლოგიკური მნიშვნელობა მოუწოდა მადლობელი. 214 00:12:59,860 --> 00:13:02,190 მე შეეძლო უწოდა არაფერი, მაგრამ მე მას მადლობას 215 00:13:02,190 --> 00:13:04,750 მხოლოდ სახის გადმოცემა გარკვეული სემანტიკური მნიშვნელობა. 216 00:13:04,750 --> 00:13:07,700 ასე რომ თავდაპირველად on line 18, მე აშკარად არ მადლობელი 217 00:13:07,700 --> 00:13:12,230 რადგან ლოგიკური ღირებულება მადლობელი ინიციალიზდება მცდარია, შეესაბამება 18. 218 00:13:12,230 --> 00:13:16,500 და შემდეგ, როგორც ჩანს, რაც მე ვაკეთებ აქ ხაზები 21 გზით 23 219 00:13:16,500 --> 00:13:19,200 არის მე უბრალოდ სახის გადაწერილი ჩემი ლოგიკა. 220 00:13:19,200 --> 00:13:26,100 ასე რომ არ ფუნქციურად განსხვავებული, მაგრამ ხაზი 22 ახლა შევამოწმოთ თუ int მომხმარებლის უზრუნველყო 221 00:13:26,100 --> 00:13:31,360 მეტია 0, მაშინ მე უბრალოდ შეცვლის ღირებულება მადლობას უხდის ჭეშმარიტი. 222 00:13:31,360 --> 00:13:35,590 და რატომაა ასე? რადგან ხაზი 25, სავარაუდოდ მე ვაპირებ შეამოწმოს მდგომარეობა. 223 00:13:35,590 --> 00:13:39,760 გააკეთეთ მარყუჟი ხოლო მადლობელი სიცრუეა. 224 00:13:39,760 --> 00:13:42,960 ასე რომ მე შევთავაზე ამ როგორც ალტერნატივა ვერსია 1 225 00:13:42,960 --> 00:13:47,050 იმიტომ რომ ცოტათი მაინც უფრო ინტუიტიური შესაძლოა, ეს ცოტა უფრო საფუძვლიანი ინგლისურ ენაზე. 226 00:13:47,050 --> 00:13:51,980 ასე რომ შემდეგი ხოლო თქვენ არ მადლობელი ან ხოლო მადლობელი სიცრუეა. 227 00:13:51,980 --> 00:13:56,220 და ამ დროს ძალიან მე აშკარად არ მაინტერესებს უნდა გვახსოვდეს, რა მომხმარებლის აკრეფილი 228 00:13:56,220 --> 00:14:00,050 რადგან ცნობაში არ ცვლადი N, ისე რეალურად, პატარა თეთრი ტყუილი არსებობს. 229 00:14:00,050 --> 00:14:03,290 >> ფუნქციურად პროგრამის ოდნავ განსხვავებული ერთხელ მივიღებთ ბოლოში ეს 230 00:14:03,290 --> 00:14:04,960 რადგან მე არ დამახსოვრების რა N არის. 231 00:14:04,960 --> 00:14:09,120 მაგრამ მსურდა დემონსტრირება აქაც რომ მიუხედავად იმისა, რომ ჩვენ ვნახეთ GetInt 232 00:14:09,120 --> 00:14:13,780 და GetString გამოიყენება on მარჯვენა მხარეს ტოლობის ნიშანი დღემდე 233 00:14:13,780 --> 00:14:17,310 ისე, რომ ჩვენ გვახსოვს ღირებულება, ტექნიკურად, ეს არ არის მკაცრად აუცილებელია. 234 00:14:17,310 --> 00:14:20,290 თუ სხვადსხვა მიზეზის გამო უბრალოდ არ მაინტერესებს გადარჩენა ღირებულების, 235 00:14:20,290 --> 00:14:25,540 გსურთ შეამოწმოთ ღირებულება შეამჩნევთ, რომ ჩვენ შეგვიძლია უბრალოდ წერენ ეს GetInt, 236 00:14:25,540 --> 00:14:27,320 ღია PAREN, მჭიდრო PAREN. 237 00:14:27,320 --> 00:14:30,570 რომ ფუნქციის დაბრუნებას აპირებს ღირებულება, როგორც ჩვენ ვამბობდით. 238 00:14:30,570 --> 00:14:32,220 იგი აპირებს მოგცემთ უკან int. 239 00:14:32,220 --> 00:14:34,460 და ასე თუ ფსიქიკურად ვფიქრობ ამ ხდება, 240 00:14:34,460 --> 00:14:38,190 როცა აკრიფოთ 99, GetInt ბრუნდება ნომერი 99, 241 00:14:38,190 --> 00:14:41,840 და ასე კონცეპტუალურად, ეს თითქოს ჩემი კოდი იყო რეალურად ამ. 242 00:14:41,840 --> 00:14:45,950 ასე რომ, თუ 99 მართლაც მეტია 0, მაშინ მადლობელი სიმართლე ხდება, 243 00:14:45,950 --> 00:14:50,810 შემდეგ ხაზი 25 აცნობიერებს Ooh, ჩვენ გავაკეთეთ, რადგან მე ახლა მადლობელი, 244 00:14:50,810 --> 00:14:53,970 და სტრიქონში 26, ჩვენ უბრალოდ ამბობენ, "გმადლობთ დადებითი მთელი რიცხვი!" 245 00:14:53,970 --> 00:14:55,960 რასაც ეს იყო. 246 00:14:55,960 --> 00:14:59,140 ახლა მოდით უმნიშვნელო სინტაქსური შაქარი აქ, ასე ვთქვათ. 247 00:14:59,140 --> 00:15:04,670 მოდით ვნახოთ, თუ შევძლებთ გაწმენდა ამ ხაზის 25 ამ მესამე და საბოლოო ვარიანტი წელს positive3. 248 00:15:04,670 --> 00:15:13,600 >> გაითვალისწინეთ მხოლოდ განსხვავება არის არის რა ხაზი კოდი? >> [სტუდენტი] 25. >> [Malan] Yeah, 25. 249 00:15:13,600 --> 00:15:17,680 და ჩვენ ნამდვილად არ მინახავს ეს ხრიკი უბრალოდ არ არის, მაგრამ ჩვენ არ ვხედავთ ძახილის წერტილი ორშაბათს, 250 00:15:17,680 --> 00:15:21,070 რაც ნიშნავს, რა? >> [სტუდენტი] არ. >> არ ან უარყოფა. 251 00:15:21,070 --> 00:15:23,510 ასე რომ მიიღოს ლოგიკური მნიშვნელობა და Flip მისი ღირებულება. 252 00:15:23,510 --> 00:15:25,810 True ხდება ყალბი, ყალბი ხდება. 253 00:15:25,810 --> 00:15:30,420 ასე რომ, ეს, მინდა შესთავაზოს, არის კიდევ უფრო ინტუიციური გზა წერა კოდი 254 00:15:30,420 --> 00:15:33,430 იმიტომ, რომ მე ჯერ კიდევ ინიციალიზაცია მადლობას უხდის ცრუ, მე მაინც გავაკეთებ შემდეგ, 255 00:15:33,430 --> 00:15:36,010 მე მითითებული მადლობას უხდის ჭეშმარიტი, როცა დრო მოდის, 256 00:15:36,010 --> 00:15:40,880 მაგრამ ახლა შეგიძლიათ ნამდვილად უბრალოდ თარგმნოს ეს კოდი სიტყვიერი მარცხნიდან მარჯვნივ, 257 00:15:40,880 --> 00:15:45,630 ხოლო (! მადლობელი); რადგან bang ან ძახილის წერტილი ნიშნავს ცნება არ, 258 00:15:45,630 --> 00:15:47,580 ასე ხოლო არ მადლობელი. 259 00:15:47,580 --> 00:15:49,900 ასე რომ კიდევ ერთხელ, ჩვენ არ გააცნო ნებისმიერი ახალი კონცეფციების თავისთავად. 260 00:15:49,900 --> 00:15:53,730 ჩვენ ვისაუბრეთ Booleans უკან, როდესაც ჩვენ ითამაშა, რომელზეც Scratch, 261 00:15:53,730 --> 00:15:56,720 მაგრამ რეალიზება ახლა შეგვიძლია დავიწყო წერა ჩვენი კოდი ბევრ სხვადასხვა გზა. 262 00:15:56,720 --> 00:16:01,060 ამიტომ განსაკუთრებით pset1 თუ თქვენ სახის ცდილობს გაერკვნენ გზა დაწერა რამდენიმე პროგრამა, 263 00:16:01,060 --> 00:16:04,340 შანსი თქვენ გისურვებთ რადგან შეიძლება იყოს ნებისმიერი რაოდენობის გადაწყვეტილებები 264 00:16:04,340 --> 00:16:06,110 რომ თქვენ შეიძლება მოხდეს საფუძველზე. 265 00:16:06,110 --> 00:16:10,500 მაგალითად, ეს მხოლოდ 3 ამისთვის კი მარტივი პროგრამების. ყველა უფლება. 266 00:16:10,500 --> 00:16:14,200 და ახლა გავიხსენოთ ორშაბათს წამოვედით ამ აღვნიშნავთ დაბრუნების ღირებულებებს. 267 00:16:14,200 --> 00:16:18,450 ასე რომ ძალიან პირველად დაწერა პროგრამა, რომელიც ჯერ არ აქვს მხოლოდ ძირითადი; 268 00:16:18,450 --> 00:16:22,550 მას ასევე გააჩნია საკუთარი საბაჟო ფუნქცია რომ დავწერე აქ. 269 00:16:22,550 --> 00:16:26,810 ასე რომ ხაზის მეშვეობით 31 34 მე განხორციელებული კუბი ფუნქცია. 270 00:16:26,810 --> 00:16:30,240 ეს არ არის კომპლექსი. უბრალოდ * * ამ შემთხვევაში. 271 00:16:30,240 --> 00:16:34,750 მაგრამ რა მნიშვნელოვანია ამის შესახებ არის ის, რომ მე აღების შეყვანის სახით 272 00:16:34,750 --> 00:16:39,180 და მე დაბრუნების გამომავალი სახით * *. 273 00:16:39,180 --> 00:16:43,560 ახლა მაქვს უნარი, ჰგავს მე ერთად prinf მარტო, 274 00:16:43,560 --> 00:16:47,240 მოვუწოდებთ ამ ფუნქციის დარეკვით კუბი ფუნქცია. 275 00:16:47,240 --> 00:16:51,970 >> და კუბი ფუნქცია იღებს გარკვეულ შეყვანის და კუბი ფუნქცია დააბრუნებს ზოგიერთი გამომუშავება. 276 00:16:51,970 --> 00:16:56,960 პირიქით, printf უბრალოდ გააკეთა რაღაც. 277 00:16:56,960 --> 00:17:00,840 ეს არ დაუბრუნებია არაფერი რომ ჩვენ ზრუნავდა, თუმცა როგორც განზე ეს სულაც დაბრუნების ღირებულება; 278 00:17:00,840 --> 00:17:03,110 უბრალოდ ზოგადად იგნორირება მოვახდინოთ. 279 00:17:03,110 --> 00:17:06,510 Printf უბრალოდ გააკეთა რაღაც. მას ჰქონდა გვერდითი ეფექტი დაბეჭდვის რომ ეკრანზე. 280 00:17:06,510 --> 00:17:11,770 ამის საპირისპიროდ, ჩვენ გვყავს კუბი ფუნქცია, რომელიც რეალურად ბრუნდება რაღაც. 281 00:17:11,770 --> 00:17:15,520 ასე რომ იმ იცნობს, ეს არის საკმაოდ მარტივია იდეა. 282 00:17:15,520 --> 00:17:19,640 მაგრამ მათთვის ნაკლებად იცნობს ამ იდეას გადადის საშუალებებით და დავუბრუნდეთ შედეგები, 283 00:17:19,640 --> 00:17:21,950 მოდით ვეცადოთ უბრალოდ რაღაც სუპერ მარტივი. 284 00:17:21,950 --> 00:17:25,490 არის ვინმე კომფორტული ახლოვდება სცენაზე მოკლედ? 285 00:17:25,490 --> 00:17:28,040 თქვენ უნდა იყოს კომფორტულად კამერა თქვენ ასევე. ჰო? Okay. 286 00:17:28,040 --> 00:17:31,240 რა არის შენი სახელი? >> [სტუდენტი] კენ. >> კენ. ყველა უფლება. კენ, მოდის up. 287 00:17:31,240 --> 00:17:35,050 კენ იქნება ფუნქცია ჯიშები აქ. 288 00:17:35,050 --> 00:17:38,720 მოდით წავიდეთ წინ და ამის გაკეთება. მოდით კიდევ პატარა ლამაზი. 289 00:17:38,720 --> 00:17:42,260 კარგია თქვენთან შეხვედრა. კეთილი იყოს ცენტრი ეტაპზე. ყველა უფლება. 290 00:17:42,260 --> 00:17:46,640 მოდით მოხვდა ამ ღილაკს აქ. ყველა უფლება. 291 00:17:46,640 --> 00:17:49,820 ასე რომ აქ თქვენ გაქვთ თანამედროვე chalkboard, 292 00:17:49,820 --> 00:17:53,470 და რაც მე ვარ არის მთავარი ფუნქცია, მაგალითად, 293 00:17:53,470 --> 00:17:56,460 და მე არ მაქვს iPad ჩემი მხრივ. 294 00:17:56,460 --> 00:17:59,710 >> მე ნამდვილად არ ახსოვს, თუ როგორ უნდა - ისე, მე ვერ ვიტყვი, რომ. 295 00:17:59,710 --> 00:18:02,480 მე ნამდვილად არ აქვს კარგი ხელწერა, 296 00:18:02,480 --> 00:18:05,520 და ა.შ. ამიტომ მინდა ბეჭდვა რაღაც ეკრანზე ჩემთვის. 297 00:18:05,520 --> 00:18:12,040 მე ვარ მყოფი ძირითადი პროგრამა, და მე ვაპირებ გაქვთ ამბობენ, რომ ეს 298 00:18:12,040 --> 00:18:16,720 წერილობით ეს ჩემი ქათამი ნაკაწრი და შემდეგ ავლით თქვენ შეყვანის. 299 00:18:16,720 --> 00:18:20,400 ასე რომ სულელური თუმცა ეს exercise არის, ცნება ფუნქციები და მოუწოდებდა ფუნქცია 300 00:18:20,400 --> 00:18:22,400 და დაბრუნების ფუნქცია მართლაც boils ქვემოთ ეს. 301 00:18:22,400 --> 00:18:26,260 მე ვარ მთავარი, მე ახლახან წერილობითი printf, ციტირებით-unquote რაღაც ეკრანზე, 302 00:18:26,260 --> 00:18:29,110 მე ვარ გაშვებული ამ პროგრამის და როგორც კი printf იღებს მოუწოდა, 303 00:18:29,110 --> 00:18:32,880 იგი იღებს ერთ არგუმენტად ან ერთი პარამეტრი ხანდახან შორის ორმაგი შეთავაზებები. 304 00:18:32,880 --> 00:18:35,880 აქ არის ის, რომ არგუმენტი. მე გავლით მას კენ. 305 00:18:35,880 --> 00:18:39,020 იგი არის შავი ყუთი წერილობითი გარკვეული რაოდენობის წლის წინ 306 00:18:39,020 --> 00:18:41,510 რომ როგორც ჩანს მხოლოდ იცის როგორ ბეჭდვა რამ ეკრანზე. 307 00:18:41,510 --> 00:18:43,150 ასე შეასრულოს. 308 00:18:49,280 --> 00:18:51,280 ეს არ არის ცუდი. ძალიან კარგი. 309 00:18:51,280 --> 00:18:55,510 ახლა კენ კეთდება შესრულებაში. ამჯამად მან უნდა ჩააბაროს ჩემთან არაფერი უკან? 310 00:18:55,510 --> 00:18:57,470 არ არის, რომ ჩვენ ვნახეთ დღემდე. 311 00:18:57,470 --> 00:19:00,460 ერთხელ, printf ამჯამად რეალურად დაბრუნებას ნომერი, მაგრამ ჩვენ ვაპირებთ იგნორირება, რომ ახლა 312 00:19:00,460 --> 00:19:03,470 რადგან ჩვენ არ გამოიყენება იგი. ასე რომ ეს კენ. 313 00:19:03,470 --> 00:19:08,580 და ა.შ. ახლა მთავარ იღებს კონტროლის პროგრამა ერთხელ 314 00:19:08,580 --> 00:19:11,060 იმიტომ, რომ ხაზი კოდი, printf, კეთდება შესრულებაში. 315 00:19:11,060 --> 00:19:14,050 და ჩვენ მივდივართ ჩვენი გზით, შესრულებაში რასაც სხვა ხაზების არსებობს. 316 00:19:14,050 --> 00:19:17,320 ახლა მოდით ვცდილობთ ოდნავ განსხვავებული მაგალითი. 317 00:19:17,320 --> 00:19:24,940 ამჯერად აქ მოდით პირველ გარკვევა ეკრანზე, და ამ დროს ჩვენ ყველაფერს გავაკეთებთ cubing ფუნქცია, 318 00:19:24,940 --> 00:19:27,080 მაგრამ ამ დროს, მე მოველი გამონატანის მნიშვნელობა. 319 00:19:27,080 --> 00:19:29,180 >> მოდით წავიდეთ წინ და ამის გაკეთება. 320 00:19:29,180 --> 00:19:35,790 ახლა ხაზი კოდი, რომ ამბობს x იღებს Cube of x. 321 00:19:41,370 --> 00:19:46,370 ხაზი კოდი, გაწვევა, ასე გამოიყურება: x = კუბი (x); 322 00:19:46,370 --> 00:19:50,930 მაშ როგორ არის ამ იმუშავებს? მოდით წავიდეთ წინ და გაძლევთ თეთრი ეკრანზე ერთხელ. 323 00:19:50,930 --> 00:19:54,070 ვაპირებ დაწერეთ ახლა ღირებულების x, 324 00:19:54,070 --> 00:20:01,400 რომელიც ამ ეტაპზე დროში ხდება რომ იყოს, ვთქვათ, 2 შენარჩუნება ეს მარტივი. 325 00:20:01,400 --> 00:20:06,150 მე არ ჩაიწერება წლის ნაჭერი ქაღალდი ღირებულება 2, რომელიც არის ჩემი ღირებულების x. 326 00:20:06,150 --> 00:20:10,920 მე გადასცემს მას კენ. >> მე უბრალოდ წერენ პასუხი? >> ჰო, მოდით უბრალოდ წერენ პასუხი. 327 00:20:12,760 --> 00:20:18,940 Okay. და ახლა მას აქვს დაბრუნებას ჩემთვის რაღაც. Perfect. Nice segue. 328 00:20:18,940 --> 00:20:23,120 ახლა იგი ხელში ჩემთვის უკან ღირებულება 8 ამ შემთხვევაში, და რა შუაში იყო? 329 00:20:23,120 --> 00:20:28,250 სინამდვილეში - ვნახოთ, ამ უფლებას. რა ვარ მე გაკეთებას აპირებს იგი? 330 00:20:28,250 --> 00:20:33,440 ახლა მე ვაპირებ ამ ღირებულების და ფაქტობრივად ჩაწეროთ იგი იმ იგივე ბიტი მეხსიერებაში. 331 00:20:33,440 --> 00:20:35,170 მაგრამ შეამჩნევს ვარ სახის იბრძოდა აქ. 332 00:20:35,170 --> 00:20:38,210 მე პატარა დაბნეული რადგან სად მაქვს რეალურად წერენ ღირებულება x, 333 00:20:38,210 --> 00:20:43,150 რადგან ის, რაც მე უბრალოდ გაკეთდეს ფიზიკურად მხრივ კენ ნაჭერი ქაღალდი, რომ ჰქონდა ღირებულება 2, 334 00:20:43,150 --> 00:20:46,590 რაც x, და მართლაც, რომ ზუსტად რა მოხდა. 335 00:20:46,590 --> 00:20:50,210 გამოდის, რომ როცა რეკავთ ფუნქცია და თქვენ კორიდორი არგუმენტი 336 00:20:50,210 --> 00:20:53,290 მოსწონს hello, მსოფლიოს ან თქვენ კორიდორი არგუმენტი მოსწონს 2, 337 00:20:53,290 --> 00:20:57,110 ზოგადად, თქვენ გადადის ასლი, რომ არგუმენტი. 338 00:20:57,110 --> 00:21:00,730 და ა.შ. როგორც მე დაწერა ქვემოთ რიცხვი 2 აქ და გადასცეს იგი კენ, 339 00:21:00,730 --> 00:21:04,720 რომ უნდა ნიშნავს, რომ მე ჯერ კიდევ აქვს ასლი ღირებულება 2 სადღაც 340 00:21:04,720 --> 00:21:08,890 რადგან მართლაც, ახლა რომ მე მიღებული თავში ღირებულება 8, მე უნდა წავიდეთ უკან RAM 341 00:21:08,890 --> 00:21:12,130 და რეალურად დაწერეთ 8, სადაც მე ერთხელ ჰქონდა ნომერი 2. 342 00:21:12,130 --> 00:21:16,950 ასე რომ ვიზუალურად, გახსოვდეთ ეს ცნება გადადის, სიტყვასიტყვით, ასლი ღირებულება. 343 00:21:16,950 --> 00:21:20,780 >> კენ აკეთებს რამ, ხელები ჩემს უკან რაღაც - ამ შემთხვევაში ღირებულების მოსწონს 8 - 344 00:21:20,780 --> 00:21:24,980 და მერე რაიმე უნდა მოვიმოქმედოთ, რომ ღირს, თუ მინდა შეინახოს იგი გარშემო. 345 00:21:24,980 --> 00:21:29,650 ასე რომ ყველა ამ დავბრუნდებით უნდა იყოს ძალიან ნაცნობი ადრე ხანგრძლივი. 346 00:21:29,650 --> 00:21:34,920 დიდი მადლობა ამ დემო აქ, კენ. [ტაში] 347 00:21:34,920 --> 00:21:36,920 ძალიან კარგად გაკეთდეს. 348 00:21:36,920 --> 00:21:42,690 ვნახოთ, როგორ, რომ საბოლოოდ ეხება ზოგიერთი ფუნქცია მოუწოდებდა, რომ ჩვენ აქ აკეთებენ. 349 00:21:42,690 --> 00:21:47,910 ნება მომეცით წავიდეთ წინ და მიგვიყვანს თავში cubing მაგალითად აქ. 350 00:21:47,910 --> 00:21:53,300 გაითვალისწინეთ, რომ თუ ჩვენ გვინდა რეალურად დაიწყოს აღების ამ შემდგომი, 351 00:21:53,300 --> 00:21:57,570 ჩვენ ვაპირებთ უნდა მავიწყდება იმისა, რომ ხმების x რომ მიმდინარეობს გადავიდა აქ 352 00:21:57,570 --> 00:22:01,530 განსხვავდება რა მართლაც გადავიდა, რათა ფუნქცია. 353 00:22:01,530 --> 00:22:05,880 ასე რომ კიდევ ერთხელ, ამ უღელტეხილზე მიერ ასლი უნდა გახდეს საკმაოდ გერმანე რაღაც მომენტში. 354 00:22:05,880 --> 00:22:09,580 მოდით შევხედოთ რაღაც რომ არ საკმაოდ მუშაობა უფლება არავის გაუკეთებია. 355 00:22:09,580 --> 00:22:13,250 მე ვაპირებ წავიდეთ წინ და გახსნა მესამე buggy მაგალითად, რომელიც გაყალბდა ბუნებით, 356 00:22:13,250 --> 00:22:18,550 და ეს ე.წ. buggy3 და იგი ახორციელებს შევცვალე ფუნქცია. 357 00:22:18,550 --> 00:22:25,110 აქ მთავარი ფუნქცია, რომელიც X და Y თვითნებურად ინიციალიზაცია რომ 1 და 2, შესაბამისად. 358 00:22:25,110 --> 00:22:27,700 ჩვენ შეეძლო GetInt, მაგრამ ჩვენ უბრალოდ უნდა მარტივი სწავლება, 359 00:22:27,700 --> 00:22:30,170 ასე ძნელია კოდირებული როგორც 1 და 2. 360 00:22:30,170 --> 00:22:35,340 სტრიქონები 21 და 22, ჩვენ აშკარად ამობეჭდოთ x და y, 1 თითო ხაზზე. 361 00:22:35,340 --> 00:22:39,720 მაშინ on line 23, მე ამტკიცებენ მე შევცვალე ეს ფასეულობები, dot, dot, dot. 362 00:22:39,720 --> 00:22:44,170 მე აშკარად მოვუწოდებთ ფუნქცია ხაზი 24 წ swap რომ იღებს 2 არგუმენტები. 363 00:22:44,170 --> 00:22:48,300 ეს სრულიად legit ამისთვის ფუნქციები მიიღოს 2 არგუმენტები. ჩვენ ვხედავთ printf გავაკეთებთ უკვე. 364 00:22:48,300 --> 00:22:51,830 >> ასე რომ swap სავარაუდოდ იღებს x და y, და როგორც მისი სახელი ვარაუდობს, 365 00:22:51,830 --> 00:22:54,670 მინდა იმედი ვიქონიო, რომ აპირებს სვოპ ამ 2 ღირებულებებს. 366 00:22:54,670 --> 00:23:00,090 ასე რომ მერე აცხადებენ on line 25 "swapped!" მე და reprint x და y 367 00:23:00,090 --> 00:23:03,070 ქვეშ ვარაუდი, რომ ისინი მართლაც swapped. 368 00:23:03,070 --> 00:23:06,080 მაგრამ თუ მე რეალურად აწარმოებს ამ პროგრამის - ნება მომეცით გახსენით ტერმინალი ფანჯარა, 369 00:23:06,080 --> 00:23:09,860 ნება მომეცით მიიღოს buggy3 - როგორც სახელი ვარაუდობს, ამ არ აპირებს დასრულდება კარგად 370 00:23:09,860 --> 00:23:15,770 რადგან, როდესაც მე დააჭიროთ შეამჩნევთ, რომ X არის 1, Y არის 2, 371 00:23:15,770 --> 00:23:19,420 და ჯერ კიდევ ბოლომდე პროგრამა, ისინი მაინც, ფაქტობრივად, იგივე. 372 00:23:19,420 --> 00:23:22,960 ამიტომ ეფუძნება მიტინგი მხოლოდ ახლა კენ, რა რეალურად საქმე? 373 00:23:22,960 --> 00:23:28,710 მოდით ჩაყვინთვის შევიდა ამ swap ფუნქცია. ეს სუპერ მოკლე. ეს მხოლოდ რამდენიმე ხაზი კოდი ხანგრძლივი. 374 00:23:28,710 --> 00:23:34,520 მაგრამ რა არის ფუნდამენტური პრობლემა ეფუძნება მარტივი ამბავი განუცხადა up აქ კენ? 375 00:23:34,520 --> 00:23:36,670 რატომ swap გაფუჭებული? 376 00:23:36,670 --> 00:23:39,660 [სტუდენტი] თქვენ შენახვა, რათა ასლი, არ ცვლადი. 377 00:23:39,660 --> 00:23:43,980 სწორედ. ჩვენ შენახვის, რათა ასლი, არ ცვლადი თავად. 378 00:23:43,980 --> 00:23:47,170 სხვა სიტყვებით, swap სავარაუდოდ იღებს 2 არგუმენტები, int, 379 00:23:47,170 --> 00:23:49,370 და ეს თვითნებურად მოუწოდა და ბ, 380 00:23:49,370 --> 00:23:54,420 და აქ მე გადავიდა x და y, რომლებიც შესაბამისად 1 და 2 381 00:23:54,420 --> 00:23:58,770 მაგრამ მე არ სიტყვასიტყვით გადადის x, მე არ სიტყვასიტყვით გადადის Y, 382 00:23:58,770 --> 00:24:01,450 მე გავლით ასლი x და ასლი წ. 383 00:24:01,450 --> 00:24:04,510 თითქმის თითქოს თქვენ გადაწერა და pasted შევიდა swap 384 00:24:04,510 --> 00:24:07,810 ფასეულობები, გნებავთ რეალურად მანიპულირება. 385 00:24:07,810 --> 00:24:14,480 ასე რომ თუ ეს შემთხვევაა, როდესაც მე პროგრამის დაწყება შესრულებაში ხაზი 35 მაშინ 36, 386 00:24:14,480 --> 00:24:18,650 როცა მისაღებად ხაზი 37, ამ დროისთვის ამბავი, რა არის ღირებულება? 387 00:24:21,040 --> 00:24:25,050 ამ დროისთვის ამბავი, ხაზი 37, რა არის ღირებულება ამ ეტაპზე? >> [სტუდენტი] 1. 388 00:24:25,050 --> 00:24:29,280 [Malan] უნდა იყოს მხოლოდ 1, უფლება, რადგან x იყო ძალაში შევიდა, როგორც პირველი არგუმენტი, 389 00:24:29,280 --> 00:24:33,080 და ამ ფუნქციის მხოლოდ თვითნებურად მოუწოდებს მისი პირველი არგუმენტი. 390 00:24:33,080 --> 00:24:38,200 ანალოგიურად არის Y მეორე არგუმენტი, და ეს მხოლოდ თვითნებურად მოუწოდებდა მეორე არგუმენტი ბ. 391 00:24:38,200 --> 00:24:40,990 >> ეს dichotomy რეალურად საკმაოდ უბრალოდ განმარტა. დაფიქრდით. 392 00:24:40,990 --> 00:24:43,320 არც ერთი ჩვენგანი არ შეხვდა ადამიანი, რომელიც წერდა printf, 393 00:24:43,320 --> 00:24:50,770 ასე ნამდვილად, იგი არ აქვს როგორია ჩვენი ცვლადები 30 წლის შემდეგ ვაპირებთ ეწოდება. 394 00:24:50,770 --> 00:24:56,650 ასე უნდა იყოს განსხვავება რა რეკავთ ცვლადები წელს ფუნქციების თქვენ წერა 395 00:24:56,650 --> 00:25:02,080 და რა რეკავთ ცვლადები წელს ფუნქციების თქვენ მოუწოდებდა ან გამოყენებით. 396 00:25:02,080 --> 00:25:05,340 ასე რომ, სხვა სიტყვებით, მე არ წერია ჩემი ცვლადები როგორც x და y, 397 00:25:05,340 --> 00:25:08,890 მაგრამ თუ ვინმეს დაწერა swap ფუნქციის, იგი ნამდვილად არ ვიცი 398 00:25:08,890 --> 00:25:10,690 რა ჩემი ცვლადები ვაპირებთ ეწოდოს, 399 00:25:10,690 --> 00:25:13,830 ასე, რომ ეს არის რატომ უნდა ამ Duality ვინაობას. 400 00:25:13,830 --> 00:25:16,750 ტექნიკურად, მე ვერ გავაკეთებ ამას დამთხვევა, 401 00:25:16,750 --> 00:25:20,080 მაგრამ ისინი კვლავ ძალაში შევიდა, როგორც ასლები. 402 00:25:20,080 --> 00:25:23,650 ეს იქნებოდა მხოლოდ სუფთა დამთხვევა ესთეტიურად თუ ეს პირი რომელმაც დაწერა swap 403 00:25:23,650 --> 00:25:26,150 კაცებმა იგივე სახელები. 404 00:25:26,150 --> 00:25:32,370 ამრიგად, ამ ეტაპზე იმ ამბავს, ხაზი 37, 1, ბ, 2, და ახლა გაგრძელება სვოპ მათ. 405 00:25:32,370 --> 00:25:34,900 უპირველეს ყოვლისა, ნება მომეცით რეალურად ამის გაკეთება ბევრად უფრო მარტივად. 406 00:25:34,900 --> 00:25:36,690 მე არ ვიცი რა იმ 3 ხაზი კოდი აკეთებდნენ. 407 00:25:36,690 --> 00:25:41,210 ნება მომეცით უბრალოდ ამ: ბ =; = ბ; გაკეთდეს. 408 00:25:41,210 --> 00:25:44,690 რატომ არის ამ გატეხილი, ლოგიკურად? 409 00:25:46,490 --> 00:25:48,900 ეს სახის ინტუიციური რამ, არა? 410 00:25:48,900 --> 00:25:52,560 ასე ხდება B და B ხდება, 411 00:25:52,560 --> 00:25:57,730 მაგრამ პრობლემა ის არის, რომ როგორც კი ხაზი 37 ახორციელებს, რა ღირებულების და ბ? 412 00:25:57,730 --> 00:26:03,410 იგივე, 1, იმიტომ, რომ თქვენ არ clobbered, ასე ვთქვათ, თქვენ შეიცვალა B ერთნაირი. 413 00:26:03,410 --> 00:26:08,890 ასე რომ კიდევ ერთხელ ხაზი 37 აქვს შესრულებული, რომ დიდი, თქვენ ახლა უკვე 2 ასლები ნომერი 1 414 00:26:08,890 --> 00:26:13,350 შიგნით ამ ფუნქციას, ისე მაშინ, როდესაც თქვენ ამბობთ შეესაბამება 38 = B, 415 00:26:13,350 --> 00:26:17,640 თქვენ სახის ბრალია, რადგან თქვენ მხოლოდ მინიჭება 1 დან 1. 416 00:26:17,640 --> 00:26:20,580 თქვენ სახის დაკარგა ღირებულება თქვენ ზრუნავდა. 417 00:26:20,580 --> 00:26:23,220 ასე რომ, ორიგინალური ვერსია ამ შეამჩნევთ, რა გავაკეთე. 418 00:26:23,220 --> 00:26:26,850 მე ნაცვლად ჰქონდა მესამე ხაზი კოდი, რომ ჩანდა მოსწონს ეს. 419 00:26:26,850 --> 00:26:28,580 ვაცხადებ დროებით ცვლადი. 420 00:26:28,580 --> 00:26:32,170 >> TMP არის ძალიან გავრცელებული სახელი დროებითი ცვლადი, და ეს int 421 00:26:32,170 --> 00:26:34,580 რადგან მას ემთხვევა რა მინდა ასლი. 422 00:26:34,580 --> 00:26:39,770 მე შესანახად ასლი შიგნით tmp, ამიტომ კიდევ ერთხელ ხაზი 37 აქვს შესრულებული, 423 00:26:39,770 --> 00:26:45,860 ღირებულება არის - სწრაფი საღი აზრის გამშვები - 1, ღირებულება B არის 2, 424 00:26:45,860 --> 00:26:48,970 და ღირებულება tmp ასევე 1. 425 00:26:48,970 --> 00:26:52,060 ახლა მე შეასრულოს ხაზის 38. 426 00:26:52,060 --> 00:27:00,540 ერთხელ ხაზი 38 ახორციელებს, იღებს ღირებულების ბ. და ბ იყო 2, ასე რომ არის 2. 427 00:27:00,540 --> 00:27:05,210 ამრიგად, ამ ეტაპზე იმ ამბავს, არის 2, ბ არის 2 და tmp არის 1, 428 00:27:05,210 --> 00:27:11,060 ახლა ლოგიკურად, ჩვენ უბრალოდ plop tmp ღირებულების შევიდა B და ჩვენ გავაკეთეთ. 429 00:27:11,060 --> 00:27:12,800 ამიტომ ჩვენ მოგვარდება, რომ პრობლემა. 430 00:27:12,800 --> 00:27:17,720 სამწუხაროდ, როდესაც მე აწარმოებს ამ პროგრამის ამ ფორმით, ის ფაქტობრივად არ სვოპ ნებისმიერი ღირებულებებს. 431 00:27:17,720 --> 00:27:20,100 მაგრამ უნდა იყოს ნათელი, თუ რატომ? 432 00:27:23,660 --> 00:27:26,450 მე დაფიქსირდა ლოგიკური პრობლემა მხოლოდ მომენტში წინ, 433 00:27:26,450 --> 00:27:31,020 თუმცა ისევ და ისევ, თუ აწარმოებს ამ პროგრამის x და y უცვლელი რჩება 434 00:27:31,020 --> 00:27:33,310 ბოლოსთვის პროგრამის აღსრულება. 435 00:27:33,310 --> 00:27:37,220 [Inaudible სტუდენტი კომენტარი] >> ჩვენ არ დაბრუნდა არაფერი, ისე, რომ მართალია. 436 00:27:37,220 --> 00:27:39,670 მაგრამ თურმე არსებობს ცოტა პრობლემა აქ რადგან ჯერჯერობით 437 00:27:39,670 --> 00:27:44,170 ერთადერთი, რაც ჩვენ ვერ დაბრუნდა არის ერთი რამ, და ეს შეზღუდვა C. 438 00:27:44,170 --> 00:27:49,070 თქვენ შეგიძლიათ მხოლოდ დაბრუნებას ნამდვილად ერთ ღირებულება, რომლის დროსაც მე სახის დავრჩებოდით აქ 439 00:27:49,070 --> 00:27:53,310 რადგან მე ვერ დაბრუნდებიან ახალი ღირებულება x ან მე ვერ დაბრუნდებიან ახალი ღირებულება Y, 440 00:27:53,310 --> 00:27:55,190 მაგრამ მე მინდა ორივე უკან. 441 00:27:55,190 --> 00:27:58,650 ამიტომ დაბრუნების არ არის მარტივი გამოსავალი აქ. 442 00:27:58,650 --> 00:28:01,710 მაგრამ პრობლემა ფუნდამენტურად არის რატომ? რა გვაქვს რეალურად swapped? 443 00:28:01,710 --> 00:28:04,190 [სტუდენტი] და ბ. >> და ბ. 444 00:28:04,190 --> 00:28:08,230 მაგრამ და ბ are ასლები x და y, რაც იმას ნიშნავს, რომ ჩვენ უბრალოდ ყველაფერი ამ ნაწარმოებზე, 445 00:28:08,230 --> 00:28:11,650 ჩვენ მხოლოდ დახარჯული 3 წუთი ლაპარაკი swap ფუნქცია და ყველა 3 ამ ცვლადებს, 446 00:28:11,650 --> 00:28:15,420 და ეს დიდი, მშვენივრად სწორი იზოლაცია, 447 00:28:15,420 --> 00:28:20,740 მაგრამ და B-ს ფარგლებს მხოლოდ არის ამ ხაზების აქ. 448 00:28:20,740 --> 00:28:24,790 >> ასე რომ, ისევე, როგორც for loop, თუ განაცხადოს რიცხვი მე შიგნით ამისთვის მარყუჟის, 449 00:28:24,790 --> 00:28:28,760 ანალოგიურად, თუ თქვენ გამოცხადების და ბ შიგნით ფუნქციის რომ თქვენ წერილობითი, 450 00:28:28,760 --> 00:28:33,320 ისინი ძალაშია მხოლოდ შიგნით რომ ფუნქცია, რაც იმას ნიშნავს, როგორც კი swap კეთდება შესრულებაში 451 00:28:33,320 --> 00:28:38,470 და ჩვენ აქედან ხაზი 24 ხაზი 25, X და Y არ იქნა შეცვლილა. 452 00:28:38,470 --> 00:28:42,790 თქვენ უბრალოდ გადაყრილი მთელი ბევრი დრო შევცვალე ასლები ცვლადები. 453 00:28:42,790 --> 00:28:47,010 გამოდის, რომ გადაწყვეტილება ამ ფაქტობრივად არასამთავრობო აშკარა. 454 00:28:47,010 --> 00:28:50,670 ეს არ არის საკმარისი დაბრუნების ღირებულებები, რადგან ჩვენ მხოლოდ დაბრუნდნენ 1 ღირებულება, 455 00:28:50,670 --> 00:28:53,470 და მე ნამდვილად მინდა, რომ სვოპ ორივე x და y ამავე დროს, 456 00:28:53,470 --> 00:28:55,210 ამიტომ ჩვენ ვაპირებთ უნდა დაუბრუნდეს ამ. 457 00:28:55,210 --> 00:29:01,020 მაგრამ ახლა, გააცნობიეროს, რომ საკითხი ფუნდამენტურად გამომდინარე იმისა, რომ A და B არის ასლები 458 00:29:01,020 --> 00:29:03,630 და ისინი საკუთარ ფარგლებს. 459 00:29:03,630 --> 00:29:05,050 მოდით ცდილობენ მოგვარებას ამ რამდენიმე გზა. 460 00:29:05,050 --> 00:29:11,250 ნება მომეცით რეალურად გადახვევა უკან აქ და გახსენით, ვთქვათ, მეოთხე ვარიანტი ამ, buggy4. 461 00:29:11,250 --> 00:29:13,370 რაც შეეხება ამ საკითხთან დაკავშირებით? 462 00:29:13,370 --> 00:29:17,810 ეს არის მსგავსი, მაგრამ უფრო მარტივი პრობლემა შევხედოთ წინაშე ავიღებთ stab at გადაჭრის იგი. 463 00:29:17,810 --> 00:29:24,190 ეს პროგრამა ეწოდება წუთობრივი, და ეს აშკარად initializes x რიცხვი to 1 სტრიქონში 18. 464 00:29:24,190 --> 00:29:28,150 მე მაშინ აცხადებენ x არის 1, მე მაშინ აცხადებენ "დამატება ..." 465 00:29:28,150 --> 00:29:33,730 მე მაშინ მოვუწოდებთ წუთობრივი, მაგრამ მერე ხაზები 22 და 23, მე აცხადებენ მისთვის incremented, 466 00:29:33,730 --> 00:29:40,220 მე აცხადებენ x არის რაც არ არის - 2, სავარაუდოდ - მაგრამ ამ პროგრამის buggy. 467 00:29:40,220 --> 00:29:42,610 რა არის პრობლემა? 468 00:29:43,440 --> 00:29:50,160 Yeah. >> [Inaudible სტუდენტი საპასუხოდ] >> ზუსტად. 469 00:29:50,160 --> 00:29:52,490 ამიტომ x გამოცხადდა, ცხადია, on line 18. 470 00:29:52,490 --> 00:29:54,700 სწორედ შიგნით ძირითადი ს Curly braces. 471 00:29:54,700 --> 00:29:58,440 ასე რომ მარტივი პასუხი აქ არის ის, რომ მაშინ, როცა x არსებობს აქ, 472 00:29:58,440 --> 00:30:03,930 ის არ არსებობს შეესაბამება 32, ასე რომ ეს პროგრამა რეალურად არც კი შეადგინოს. 473 00:30:03,930 --> 00:30:07,940 შემდგენელი როდესაც ვცდილობ შედგენის ეს კოდი აპირებს დაწეროთ at me 474 00:30:07,940 --> 00:30:14,100 შესახებ რამდენიმე გამოუცხადებელ იდენტიფიკატორი ან რაღაც რომ ეფექტი. ფაქტობრივად, მოდით ვცდილობთ. 475 00:30:14,100 --> 00:30:18,470 ეს არის მიიღოს buggy4. არსებობს ეს. 476 00:30:18,470 --> 00:30:22,110 გამოყენება გამოუცხადებელ იდენტიფიკატორი "x" სტრიქონში 32. 477 00:30:22,110 --> 00:30:25,580 და ფაქტობრივად, მოდით უფრო ზუსტად რომ ვთქვათ, დღეს აქ, ასე, რომ ეს არის სასარგებლო 478 00:30:25,580 --> 00:30:27,580 ოფისში საათი და სახლში. 479 00:30:27,580 --> 00:30:29,300 >> გაითვალისწინეთ, რომ ეს პატარა cryptically წერილობითი. 480 00:30:29,300 --> 00:30:37,270 მაგრამ ის ფაქტი, რომ Clang აქვს yelled ჩვენზე და განაცხადა, რომ buggy4.c: 32:5, ფაქტობრივად სასარგებლო. 481 00:30:37,270 --> 00:30:42,050 ეს ნიშნავს, რომ შეცდომა on line 32 საათზე ხასიათი თანამდებობა 5. 482 00:30:42,050 --> 00:30:46,700 ამგვარად 1, 2, 3, 4, 5. სწორედ, ფაქტობრივად, სადაც პრობლემა არის. 483 00:30:46,700 --> 00:30:49,790 და ასევე, ძალიან, გვახსოვდეს ოფისში საათი და სახლში, მე იღბლიანი აქ. 484 00:30:49,790 --> 00:30:52,990 მაქვს ერთი შეცდომა. ეს იქნება შედარებით იოლი დაფიქსირება. 485 00:30:52,990 --> 00:30:55,990 მაგრამ თუ თქვენ გაქვთ მთელი ეკრანის სავსე უამრავი შეცდომის შეტყობინებები, 486 00:30:55,990 --> 00:31:00,330 ერთხელ გააცნობიეროს, რომ bottommost შეიძლება მხოლოდ იყოს სიმპტომატური of ზედოთ მდებარე ერთ. 487 00:31:00,330 --> 00:31:03,450 ამიტომ ყოველთვის აყვანას ქვემოთ თქვენი შეცდომები ზემოდან ქვემოთ 488 00:31:03,450 --> 00:31:05,820 რადგან შეიძლება მხოლოდ იყოს Daisy ჯაჭვის ეფექტი 489 00:31:05,820 --> 00:31:09,240 რომელიც მიგვითითებს გაქვთ გზა მეტი პრობლემა ვიდრე თქვენ რეალურად გავაკეთოთ. 490 00:31:09,240 --> 00:31:15,150 ასე როგორ უნდა დაფიქსირება ამ შემთხვევაში ჩემი მიზანია ნამატი x? >> [სტუდენტი] ჩადება x გლობალური. 491 00:31:15,150 --> 00:31:17,060 Okay, ასე რომ ჩვენ შეგვიძლია x გლობალური. 492 00:31:17,060 --> 00:31:20,480 ავიღოთ კომბინაცია, რომ მე გააფრთხილა შესახებ ადრე, მაგრამ heck, ჩვენ უბრალოდ უნდა გადავწყვიტოთ, 493 00:31:20,480 --> 00:31:25,730 მოდით უბრალოდ, ვამბობთ int x აქ. ხდის x გლობალური. 494 00:31:25,730 --> 00:31:31,800 ახლა მთავარ ხელი მიუწვდება და ნამატი ხელი მიუწვდება ის, 495 00:31:31,800 --> 00:31:34,110 და ნება მომეცით, წავიდეთ წინ და შეადგინონ ეს ახლა. 496 00:31:34,110 --> 00:31:37,630 ჩადება buggy4, შეიყვანეთ. როგორც ჩანს, კომპილაციის არის. 497 00:31:37,630 --> 00:31:41,230 მოდით აწარმოებს buggy4. და როგორც ჩანს, რეალურად იმუშავებს. 498 00:31:41,230 --> 00:31:45,150 ეს არის ერთი ასეთი რამ რომ გააკეთოს, როგორც მე ვიტყვი, არ როგორც მე, 499 00:31:45,150 --> 00:31:47,010 როგორც მე უბრალოდ გაკეთდეს აქ, რადგან ეს, ზოგადად, 500 00:31:47,010 --> 00:31:50,440 ჩვენი პროგრამების ვაპირებთ კიდევ უფრო მეტი საინტერესო და ბევრად აღემატება ამ, 501 00:31:50,440 --> 00:31:56,390 და თუ თქვენი გამოსავალი ცხოვრების პრობლემები მხოლოდ დააყენა ყველა ცვლადები ზედა თქვენი ფაილი, 502 00:31:56,390 --> 00:31:59,690 ძალიან სწრაფად არ პროგრამების მისაღებად horrifically რთული მართვა. 503 00:31:59,690 --> 00:32:02,190 იგი იღებს უფრო რთული მგონია ახალი ცვლადი სახელები, 504 00:32:02,190 --> 00:32:05,240 იგი იღებს უფრო რთული იმის გაგება, თუ რა ცვლადი აკეთებს რა, 505 00:32:05,240 --> 00:32:08,460 და ა.შ. ზოგადად, ეს არ არის კარგი გამოსავალი. 506 00:32:08,460 --> 00:32:10,030 ასე რომ მოდით ეს უკეთესი. 507 00:32:10,030 --> 00:32:12,160 ჩვენ არ გვინდა, რომ გამოიყენოთ გლობალური ცვლადი აქ. 508 00:32:12,160 --> 00:32:16,240 >> მე მინდა, რომ ნამატი x, ამიტომ მე ვერ აშკარად - 509 00:32:16,240 --> 00:32:18,670 დასასრულს დღეში, ეს არის სახის სულელური ამბავი იმიტომ, რომ ჩვენ უბრალოდ ამ - 510 00:32:18,670 --> 00:32:24,450 მაგრამ თუ არ იცოდა, რომ ოპერატორი ან მე არ მისცეს შეცვლის მთავარ თავად, 511 00:32:24,450 --> 00:32:30,730 როგორ სხვას შეიძლება მე განახორციელოს კენ მეტი აქ ამ დროს არ კუბი არამედ ნამატი? 512 00:32:31,380 --> 00:32:33,190 როგორ შევცვალო ეს საგანი აქ? Yeah. 513 00:32:33,190 --> 00:32:38,480 [სტუდენტი] კორიდორი x და შემდეგ დაბრუნდნენ [inaudible] >> Okay, კარგი. 514 00:32:38,480 --> 00:32:41,900 მაშ რატომ არ მე კორიდორი x და შემდეგ ვიდრე მისი დაბრუნება, 515 00:32:41,900 --> 00:32:44,870 რატომ არ მე უბრალოდ დააბრუნოს x + 1. 516 00:32:44,870 --> 00:32:47,710 რამდენიმე რამ უნდა შეცვალოს აქ. მე სწორ გზაზე. 517 00:32:47,710 --> 00:32:49,770 კიდევ რა უნდა tweak? ვინმე. Yeah. 518 00:32:49,770 --> 00:32:51,740 [Inaudible სტუდენტი საპასუხოდ] 519 00:32:51,740 --> 00:32:54,730 მე უნდა შეიცვალოს დაბრუნების გაცნობის ნამატი, რადგან ეს არ ბათილად. 520 00:32:54,730 --> 00:32:57,780 ძალადაკარგულად არაფერს ნიშნავს მიმდინარეობს დაბრუნდა, მაგრამ მკაფიოდ არის ეს, 521 00:32:57,780 --> 00:32:59,830 ასე რომ ეს უნდა შეიცვალოს, რათა - >> [სტუდენტი] int. 522 00:32:59,830 --> 00:33:02,740 int იყოს შეესაბამება რასაც მე რეალურად დაბრუნების. 523 00:33:02,740 --> 00:33:05,180 არის რაღაც ჯერ კიდევ buggy აქ. Yeah. 524 00:33:05,180 --> 00:33:08,400 [Inaudible სტუდენტი საპასუხოდ] >> [Malan] ასე უნდა იყოს x? 525 00:33:08,400 --> 00:33:12,080 [Inaudible სტუდენტი საპასუხოდ] >> [Malan] Ah, ამიტომ მე უნდა გაიაროს x. 526 00:33:12,080 --> 00:33:16,660 ასე რომ, მე უნდა გავაკეთოთ ეს აქ. >> [Inaudible სტუდენტი კომენტარი] 527 00:33:16,660 --> 00:33:20,050 [Malan] ასე პროტოტიპი, უნდა შეიცვალოს ეს ყველაფერი აქ. 528 00:33:20,050 --> 00:33:22,930 ასე რომ, ეს უნდა გახდეს int, ამ უნდა გახდეს - 529 00:33:22,930 --> 00:33:25,620 hmm, მე რეალურად bug ქვემოთ აქ. მოდით დაფიქსირება ამ ერთი პირველი. 530 00:33:25,620 --> 00:33:29,590 რა უნდა ამ რეალურად იყოს? ეს რაღაც უნდა იყოს int რაღაც. 531 00:33:29,590 --> 00:33:32,700 ეს შეიძლება იყოს X, მაგრამ გულწრფელად, თუ დაიწყება მოუწოდებენ ყველა თქვენი ცვლადები x, 532 00:33:32,700 --> 00:33:35,390 იგი აპირებს მიიღოს უფრო ნაკლებად ნათელია, რომელიც, რომელიც. 533 00:33:35,390 --> 00:33:39,560 >> მოდით უბრალოდ თვითნებურად აირჩიოს სხვადასხვა ნეიმინგი კონვენცია ჩემი დამხმარე ფუნქციები, 534 00:33:39,560 --> 00:33:41,940 ფუნქციების მე წერა. ჩვენ მოვუწოდებთ მას, ან ჩვენ შეგვიძლია ეძახით - 535 00:33:41,940 --> 00:33:45,010 მოდით ეძახით ხმების რომ ვიყოთ კიდევ უფრო ცხადი. 536 00:33:45,010 --> 00:33:47,560 ასეა, მაშინ მე უნდა დაბრუნდეს რაოდენობის მიუხედავად არის პლუს 1, 537 00:33:47,560 --> 00:33:50,740 და ახლა მე უნდა შეიცვალოს 1 სხვა რამ აქ და ერთი სხვა რამ აქ. 538 00:33:50,740 --> 00:33:54,350 რა უნდა შეიცვალოს on line 21 პირველი? >> [Inaudible სტუდენტი საპასუხოდ] 539 00:33:54,350 --> 00:33:57,610 [Malan] მე უნდა მივანიჭოთ მას x. მე არ შეუძლიათ უბრალოდ მოვუწოდებ ნამატი (x). 540 00:33:57,610 --> 00:34:01,960 მე უნდა გვახსოვდეს პასუხი შეცვლით ღირებულება x on მარცხენა მხარეს. 541 00:34:01,960 --> 00:34:04,680 და მიუხედავად იმისა, x არის მარცხენა და მარჯვენა, რომ მთლიანად ჯარიმა 542 00:34:04,680 --> 00:34:08,860 რადგან მარჯვენა მხარეს იღებს შესრულებული პირველი მაშინ იღებს plopped შევიდა მარცხენა რამ - 543 00:34:08,860 --> 00:34:10,600 x ამ შემთხვევაში. 544 00:34:10,600 --> 00:34:12,159 და მერე ბოლოს, ეს არის ადვილი სარემონტო არის. 545 00:34:12,159 --> 00:34:17,230 ეს უნდა უბრალოდ დაემთხვა რა ქვემოთ ქვემოთ int ნომერი. 546 00:34:17,230 --> 00:34:20,570 ასე რომ მთელი bunch of ცვლილებები მართლაც სულელური ფუნქცია 547 00:34:20,570 --> 00:34:24,420 მაგრამ წარმომადგენელი რამ, რომ ჩვენ სულ უფრო გსურთ. 548 00:34:24,420 --> 00:34:27,090 ასე რომ buggy4. მე ბრალია სადღაც. 549 00:34:27,090 --> 00:34:30,139 ოჰ, ღმერთი ჩემი. ხუთი შეცდომები 6-ხაზის პროგრამის. 550 00:34:30,139 --> 00:34:35,690 რა არის არასწორი on line 18, ხასიათი 5? 551 00:34:35,690 --> 00:34:39,610 ასე რომ მე უნდა განაცხადოს ამ, int. 552 00:34:39,610 --> 00:34:41,920 ვნახოთ. არსებობს მთელი bunch სხვა შეცდომები. 553 00:34:41,920 --> 00:34:47,010 ოჰ, ღმერთი ჩემი - 19, 18, 21 - მაგრამ ერთხელ, მოდით უბრალოდ გარკვევა ეკრანზე, კონტროლის L აქ, 554 00:34:47,010 --> 00:34:49,380 და გამეორება Clang. 555 00:34:49,380 --> 00:34:51,340 ასე 5 პრობლემების რეალურად მხოლოდ, რომ 1. 556 00:34:51,340 --> 00:34:57,520 ახლა მოდით აწარმოებს buggy4, შეიყვანეთ. Whew, x უკვე incremented სწორად. 557 00:34:57,520 --> 00:35:02,720 ყველა უფლება. ნებისმიერი კითხვები, თუ როგორ უნდა იყოს ციფრები? Yeah. 558 00:35:02,720 --> 00:35:09,870 [Inaudible სტუდენტი კითხვა] >> კარგი კითხვაა. 559 00:35:09,870 --> 00:35:14,220 როგორ არის ის, რომ მე შემიძლია უბრალოდ შეცვალეთ x ნომერზე და პროგრამა ვიცი მაშინვე? 560 00:35:14,220 --> 00:35:16,200 >> ისევ, ვფიქრობ, რომ ეს ამ აბსტრაქცია. 561 00:35:16,200 --> 00:35:21,600 ასე რომ, თუ მე ვარ ძირითადი და კენ არის წუთობრივი, გულწრფელად, არ მაინტერესებს რა კენ მოუწოდებს მისი iPad. 562 00:35:21,600 --> 00:35:26,570 არ მაინტერესებს, რა იგი მოუწოდებს არაფერი რომ უნდა გააკეთოს მისი განხორციელების ფუნქცია. 563 00:35:26,570 --> 00:35:33,340 ეს არის განხორციელება დეტალურად რომ მე, ძირითად, არ აინტერესებს. 564 00:35:33,340 --> 00:35:38,250 და ასე, უბრალოდ იცვლება ის თანმიმდევრულად შიგნით ფუნქცია - ნომერი აქ და ნომერი აქ - 565 00:35:38,250 --> 00:35:40,960 არის ყველა სჭირდება, თუ მე recompile. 566 00:35:40,960 --> 00:35:44,180 ეს ერთგვარი მინდა თუ ფიქრობთ ამის შესახებ ბევრი ჩვენგანი, იმ თქვენ ერთად მძღოლის ლიცენზიები 567 00:35:44,180 --> 00:35:46,770 ვინც არ ამოძრავებს, ან თუ თქვენ კი ბიძგი მანქანაში, 568 00:35:46,770 --> 00:35:50,950 ყველაზე მეტად ჩვენს წარმოდგენა არ როგორ მანქანა მუშაობს ქვეშ hood. 569 00:35:50,950 --> 00:35:54,970 და სიტყვასიტყვით, თუ თქვენ გახსენით hood, ყველაზე მეტად ჩვენს - თავს შედის - 570 00:35:54,970 --> 00:35:56,940 არ ვაპირებთ ნამდვილად ვიცი, რა ჩვენ შევხედავთ, 571 00:35:56,940 --> 00:35:59,220 სახის მოსწონს იგრძნობთ ერთად პერსონალის მოსწონს ეს ახლავე. 572 00:35:59,220 --> 00:36:01,480 მაგრამ ჩვენ ნამდვილად არ უნდა იზრუნოს, თუ როგორ მუშაობს მანქანა, 573 00:36:01,480 --> 00:36:05,970 ჩვენ არ უნდა იზრუნოს რა ყველა წნელები და pistons და კაბელები შიგნით მანქანა 574 00:36:05,970 --> 00:36:08,160 რეალურად აკეთებს. 575 00:36:08,160 --> 00:36:12,770 ასე რომ მსგავსი რამ, რაც თქვენ მოვუწოდებთ დგუში არ აქვს მნიშვნელობა აქ ამ შემთხვევაში. იმავე იდეას. 576 00:36:12,770 --> 00:36:25,300 Yeah. >> [Inaudible სტუდენტი კითხვა] 577 00:36:25,300 --> 00:36:29,180 თუ უფრო გამოყენების ცვლადი xa მომენტში წინ, 578 00:36:29,180 --> 00:36:32,150 თქვენ, პროგრამისტი, უნდა შეცვალოს ისინი ყველგან. 579 00:36:32,150 --> 00:36:36,600 ან შეგიძლიათ სიტყვასიტყვით გავაკეთოთ ფაილი, მენიუ, და შემდეგ მოძებნა, შეცვალეთ - რაღაც მსგავსი - 580 00:36:36,600 --> 00:36:39,170 მაგრამ თქვენ აპირებთ უნდა მოხდეს ყოველთვიურად ცვლილებების თავს. 581 00:36:39,170 --> 00:36:47,450 თქვენ უნდა იყოს თანმიმდევრული. >> [სტუდენტი] თუ არსებობს მრავალი ცვლადის [inaudible] 582 00:36:47,450 --> 00:36:53,100 კერძოდ იმისათვის, როგორიც აქ, თუ ეს იყო int მეორე ნომერი? >> [სტუდენტი] სწორი. 583 00:36:53,100 --> 00:36:56,590 [Malan] Yeah. დაალაგე მნიშვნელოვანია, როდესაც თქვენ მოუწოდებენ ფუნქცია. 584 00:36:56,590 --> 00:37:00,050 >> ასე რომ, თუ მე მირეკავდა ნამატი აქ რაღაც მძიმით რაღაც, 585 00:37:00,050 --> 00:37:01,680 არსებობს პირდაპირი რუკების. 586 00:37:01,680 --> 00:37:05,690 პირველი ცვლადი, რასაც ის მოუწოდა, კეთდება ასლი პირველი არგუმენტი მეტი აქ. 587 00:37:05,690 --> 00:37:07,760 უკაცრავად. ეს არ უნდა იყოს ფრჩხილებში. 588 00:37:07,760 --> 00:37:11,490 მეორე არგუმენტი ხაზები ერთად მეორე. ამიტომ იმისათვის, დიახ, თემა. ყველა უფლება. 589 00:37:11,490 --> 00:37:17,020 უკაცრავად. მე მივიღე დიდი გზა მისაღებად არსებობს. გაქვთ სხვა კითხვები? ყველა უფლება. 590 00:37:17,020 --> 00:37:20,610 ასე რომ ვნახოთ, შევძლებთ თუ არა ხატავს სურათს, რა რეალურად მიმდინარეობს აქ 591 00:37:20,610 --> 00:37:23,090 ქვევმოთ hood, ასე ვთქვათ. 592 00:37:23,090 --> 00:37:26,640 ეს არის მართკუთხედი, რომ შესაძლოა წარმოადგენდეს თქვენი კომპიუტერის მეხსიერებაში. 593 00:37:26,640 --> 00:37:30,970 მაშინაც კი, თუ თქვენ არ ვიცი როგორ მუშაობს მეხსიერების ან როგორ RAM სამუშაოები, 594 00:37:30,970 --> 00:37:33,940 მინიმუმ ვივარაუდოთ, რომ თქვენ გაქვთ bunches იგი ამ დღეებში. 595 00:37:33,940 --> 00:37:36,280 თქვენ მოხვდით მბ იგი, თქვენ მოხვდით გიგაბაიტი ეს, 596 00:37:36,280 --> 00:37:40,870 და ჩვენ ვიცით კვირაში 0, რომ ერთი ბაიტი არის მხოლოდ რა? >> [სტუდენტი] 8 ბიტი. 597 00:37:40,870 --> 00:37:42,950 8 ბიტი, არა? ასე რომ 8 zeroes და 1. 598 00:37:42,950 --> 00:37:45,880 ასე რომ, თუ თქვენი კომპიუტერი GIG of RAM, 2 gigs of RAM ამ დღეებში, 599 00:37:45,880 --> 00:37:55,030 თქვენ გაქვთ მილიარდი ან 2 მილიარდი ბაიტი მეხსიერების ან უხეშად 8 მილიარდ ან 16 მილიარდი ბიტი 600 00:37:55,030 --> 00:37:56,890 შიგნით თქვენი კომპიუტერი. 601 00:37:56,890 --> 00:38:00,590 განსხვავებით ცოტა Wooly Willy მაგალითად, ეს არ მაგნიტური ნაწილაკების ჩვეულებრივ უქმნით. 602 00:38:00,590 --> 00:38:04,450 სულ უფრო და უფრო - ში ლაპტოპები მინიმუმ - ის მყარი სახელმწიფო დისკები, SSDs, 603 00:38:04,450 --> 00:38:08,580 რომ უბრალოდ არ აქვთ მოძრავი ნაწილები. ეს ყველაფერი ელექტრონულ. ეს ყველაფერი ელექტროენერგიის დაფუძნებული. 604 00:38:08,580 --> 00:38:14,060 ამიტომ ვფიქრობ, ამ ოთკუთხედი როგორც მხოლოდ წარმოადგენენ 1 ან 2 გბ მეხსიერების რომ თქვენ გაქვთ. 605 00:38:14,060 --> 00:38:16,020 >> ასე რომ ბლოკი მეხსიერება. 606 00:38:16,020 --> 00:38:19,830 მსოფლიოში კომპიუტერული მეცნიერების სახის partitioned off 607 00:38:19,830 --> 00:38:22,950 მოცულობით მეხსიერების გავაკეთოთ სხვადასხვა რამ. 608 00:38:22,950 --> 00:38:27,190 მაგალითად, თუ ეს თქვენი კომპიუტერის RAM, როგორც მიერ შემოთავაზებული ოთხკუთხედი იქ, 609 00:38:27,190 --> 00:38:31,130 აღმოჩნდება, რომ კონვენციის, ზედა თქვენი RAM, ასე ვთქვათ, 610 00:38:31,130 --> 00:38:33,660 ზოგადად რასაც ტექსტი სეგმენტი. 611 00:38:33,660 --> 00:38:36,740 ეს ის 0S და 1s, რომ თქვენ არ შედგენილი. 612 00:38:36,740 --> 00:38:39,020 ასე რომ, როდესაც ჩვენ ჩანდა ქვეშ Hood რა a.out არის, 613 00:38:39,020 --> 00:38:41,980 ყველა ამ 0S და 1s, როდესაც თქვენ აწარმოებს პროგრამა, 614 00:38:41,980 --> 00:38:46,290 იმ 0S და 1s არიან დატვირთული თქვენს ხისტ დისკზე შევიდა რაღაც მოუწოდა RAM, 615 00:38:46,290 --> 00:38:49,320 და RAM ისინი დააყენა ზედა. 616 00:38:49,320 --> 00:38:52,770 ამავდროულად, თქვენ გაქვთ სხვა რამ: ინიციალიზაცია მონაცემები, uninitialize მონაცემები. 617 00:38:52,770 --> 00:38:57,510 იმ 2 swaths მეხსიერების ეხება გლობალური ცვლადები, რომელიც თქვენ არ ხშირად იყენებენ 618 00:38:57,510 --> 00:39:00,760 მაგრამ ზოგჯერ თუ ისინი დასრულდება up up there ისევე. 619 00:39:00,760 --> 00:39:04,260 მაშინ არსებობს რამდენიმე სხვა პერსონალი: გარემოს ცვლადები, რომელიც ჩვენ არ დახარჯოს დიდი დრო ჩართულია, 620 00:39:04,260 --> 00:39:06,860 მაგრამ მაშინ 2 მნიშვნელოვანი რამ, რომ დავბრუნდებით მთელი სემესტრის 621 00:39:06,860 --> 00:39:08,550 დასტის და ბევრი. 622 00:39:08,550 --> 00:39:12,210 ასე რომ ყველაზე თქვენი კომპიუტერის მეხსიერების დაცულია როდესაც გაშვებული პროგრამა 623 00:39:12,210 --> 00:39:15,370 რაღაც მოუწოდა დასტის და რაღაც მოუწოდა ბევრი. 624 00:39:15,370 --> 00:39:18,840 ჩვენ არ ვაპირებთ ვისაუბროთ ბევრი დღეს, მაგრამ ჩვენ ვსაუბრობთ Stack. 625 00:39:18,840 --> 00:39:24,600 დასტის ნიშნავს conjure up ვიზუალური of სასადილოს კვება ქაღალდის წელს Mather სახლი 626 00:39:24,600 --> 00:39:28,110 ან ნებისმიერ ადგილას მოხდეს იყოს სადაც სასადილოს პერსონალის გაწმენდა მათ ყოველდღე, 627 00:39:28,110 --> 00:39:30,180 ისინი დააწყობს მათ მდე სართულზე up, 628 00:39:30,180 --> 00:39:34,550 და ანალოგიურად, მეხსიერებაში, არსებობს ამ იდეას აყენებს რაღაც დასტის, 629 00:39:34,550 --> 00:39:36,860 აყენებს რაღაც დასტის, აყენებს რაღაც Stack. 630 00:39:36,860 --> 00:39:38,240 და რას ვგულისხმობთ ამ? 631 00:39:38,240 --> 00:39:41,860 >> მოდით მიუახლოვდით მხოლოდ ქვედა ნახევარში ამ სურათს, თქვენი კომპიუტერის RAM, 632 00:39:41,860 --> 00:39:44,330 შესთავაზოს შემდეგ. 633 00:39:44,330 --> 00:39:48,170 თურმე, როდესაც თქვენ აწარმოებს პროგრამა მოსწონს a.out ან მიესალმები - 634 00:39:48,170 --> 00:39:50,100 მიუხედავად პროგრამის არის ის, რომ თქვენ წერილობითი - 635 00:39:50,100 --> 00:39:54,020 ერთხელ, იმ 0S და 1s ჩატვირთვის თქვენი მყარი დისკის, რომელიც გრძელვადიანი შენახვა, 636 00:39:54,020 --> 00:39:57,230 რჩება იქ მაშინაც კი, როდესაც გაიყვანოს plug, ჩაიტვირთება RAM. 637 00:39:57,230 --> 00:40:00,610 RAM არის სწრაფად, ვიდრე მყარი დისკები - ის ნაკლებია მყარი დისკები - 638 00:40:00,610 --> 00:40:03,300 მაგრამ აქ პროგრამების ცხოვრობს, ხოლო თქვენ გაშვებული მათ. 639 00:40:03,300 --> 00:40:08,230 ასე, რომ თქვენ ორმაგად დაწკაპეთ პროგრამა Mac ან PC, ის დატვირთული მყარ დისკზე შევიდა RAM. 640 00:40:08,230 --> 00:40:11,520 როგორც კი ის ჩაიტვირთება RAM, 0S და 1s გადასვლა ზე გზა ზევით, 641 00:40:11,520 --> 00:40:16,610 ე.წ. ტექსტი სეგმენტი, მაგრამ შემდეგ, როგორც კი თქვენი პროგრამის რეალურად იწყება გაშვებული, 642 00:40:16,610 --> 00:40:21,360 ძირითადი ფუნქცია ეწოდება, და მთავარი, როგორც ჩვენ ვნახეთ, ხშირად აქვს ადგილობრივი ცვლადები, 643 00:40:21,360 --> 00:40:24,870 და მას აქვს ints და სიმებიანი და chars და მოსწონს. 644 00:40:24,870 --> 00:40:29,180 ასე რომ, თუ თქვენი პროგრამა, რომელიც თქვენს მიერ დაწერილი ან პროგრამა, რომელიც თქვენ ორმაგი დააწკაპებთ 645 00:40:29,180 --> 00:40:32,970 გამოყენებული ზოგიერთი ცვლადის შიგნით ძირითადი, 646 00:40:32,970 --> 00:40:37,240 ისინი დასრულდება up ბოლოში თქვენი დასტის მეხსიერების, ასე ვთქვათ. 647 00:40:37,240 --> 00:40:39,410 კერძოდ, რას ნიშნავს რეალურად? 648 00:40:39,410 --> 00:40:48,450 ეს მხოლოდ იმას ნიშნავს, რომ თუ ჩვენ ვაპირებთ ხმების bytes of RAM თქვენს კომპიუტერში, 649 00:40:48,450 --> 00:40:55,750 შეამჩნია, რომ ეს შეიძლება იყოს byte ნომერი 0, ეს შეიძლება იყოს byte ნომერი 1, 2, 3, 4, 5, 6, 650 00:40:55,750 --> 00:41:01,480 ყველა გზა მდე 2 მილიარდი იქნება ყველა გზა იქ ზედა. 651 00:41:01,480 --> 00:41:05,880 ასე რომ, სხვა სიტყვებით, როდესაც ვსაუბრობთ RAM ან მეხსიერების თვალსაზრისით ბაიტი, 652 00:41:05,880 --> 00:41:11,500 უბრალოდ იმას ნიშნავს, რომ ვიღაცამ გადაწყვიტა, რა რაოდენობის თითოეული იმ მოცულობით მეხსიერება. 653 00:41:11,500 --> 00:41:16,650 ასე რომ, როდესაც თქვენ გჭირდებათ 32 ბიტი for int ან გჭირდებათ 8 ბიტი ამისთვის char, 654 00:41:16,650 --> 00:41:18,840 სად ისინი დასრულდება up მეხსიერებაში? 655 00:41:18,840 --> 00:41:22,350 >> კონცეპტუალურად, ისინი უბრალოდ დასრულდება მდე ბოლოში ამ რამ მოუწოდა Stack. 656 00:41:22,350 --> 00:41:25,870 მაგრამ რა საინტერესოა ახლა, როდესაც მთავარ მოუწოდებს ფუნქცია - 657 00:41:25,870 --> 00:41:28,750 ვარაუდობენ ფუნქცია მოუწოდა foo, მხოლოდ თვითნებური სახელი - 658 00:41:28,750 --> 00:41:32,330 რა ხდება არის მთავარია ბოლოში ამ დასტის მეხსიერების; 659 00:41:32,330 --> 00:41:35,680 foo არის ისიც, ყველაზე მთავარი მეხსიერებაში. 660 00:41:35,680 --> 00:41:40,990 ასე რომ ნებისმიერი ლოკალური ცვლადები რომ foo არ დასრულდება მდე სახის კონცეპტუალურად ზემოთ იმ მთავარ. 661 00:41:40,990 --> 00:41:47,070 თუ foo მოუწოდებს სხვა ფუნქცია მოუწოდა ბარი, იმ ცვლადის დასრულდება მდე აქ. 662 00:41:47,070 --> 00:41:50,120 თუ ბარი მოუწოდებს რაღაც, აქ, აქ, აქ. 663 00:41:50,120 --> 00:41:53,830 რა საინტერესოა შესახებ გაშვებული პროგრამის არის ის, რომ, როგორც თქვენ მოვუწოდებთ ფუნქციები 664 00:41:53,830 --> 00:41:57,750 და როგორც ამ ფუნქციების მოვუწოდებთ ფუნქციები და როგორც ამ ფუნქციების მოვუწოდებთ ფუნქციები, 665 00:41:57,750 --> 00:42:01,470 თქვენ დაამყარონ ამ დასტის ფუნქციების მეხსიერებაში. 666 00:42:01,470 --> 00:42:06,890 და მხოლოდ ერთხელ ფუნქცია დააბრუნებს გაქვთ დაიწყოს მიღების, რომ მეხსიერების უკან. 667 00:42:06,890 --> 00:42:10,860 ასე რომ ერთი მარტივი გზა ამოიწურა მეხსიერება კომპიუტერული პროგრამა 668 00:42:10,860 --> 00:42:14,360 არის დაწერა ფუნქციებს, რომ არასდროს დაბრუნდება. 669 00:42:14,360 --> 00:42:18,900 ასე მაგალითად, მოდით დემონსტრირება იმდენი ერთად შეგნებულად buggy პროგრამა. 670 00:42:18,900 --> 00:42:22,230 ნება მომეცით წავიდეთ წინ და ნუ # მოიცავს , 671 00:42:22,230 --> 00:42:25,000 int ძირითადი (void), 672 00:42:25,000 --> 00:42:32,940 და მე ვაპირებ ამის გაკეთებას, ხოლო (2> 1), რაც ალბათ არ ოდესმე შეცვლის ჩვენზე, 673 00:42:32,940 --> 00:42:37,560 და ნება მომეცით წავიდეთ წინ არის და არ printf. 674 00:42:37,560 --> 00:42:40,700 სინამდვილეში, რომ იქნება ნაკლებ ვიზუალურად საინტერესო. მოდით ეს. 675 00:42:40,700 --> 00:42:50,240 იყიდება int i = 0; i> 0 - გადავდგათ ეს შეცდომა - i + +. 676 00:42:50,240 --> 00:42:52,720 და მოდით არ printf აქ. მოდით პრაქტიკაში რა იყო ქადაგებდა. 677 00:42:52,720 --> 00:43:00,190 მოდით მეთოდი აქ, ბათილად გუნდისა, და ჩვენ ვიტყვით, int i, 678 00:43:00,190 --> 00:43:06,830 და შემდეგ მე ვაპირებ ვთქვა printf - არა, მოდით ამ უფრო საინტერესო. 679 00:43:06,830 --> 00:43:15,790 მოდით რეალურად არ ბეჭდვა არაფერი ყოფილა. მოდით უბრალოდ ეს: გუნდისათვის (I). 680 00:43:15,790 --> 00:43:20,390 ყველა უფლება. ასე რომ, ეს buggy რადგან რატომ? 681 00:43:20,390 --> 00:43:23,380 მე მიღების ეს ყველაფერი, როგორც მე, რადგან პროგრამა ფაქტობრივად არ არაფერი საინტერესო. 682 00:43:23,380 --> 00:43:25,320 >> მაგრამ ეს არ არის მიზანი. 683 00:43:25,320 --> 00:43:29,630 მიზანია დაწერონ პროგრამა, რომლის მთავარი ფუნქცია აკეთებს იმას, სავარაუდოდ? 684 00:43:30,720 --> 00:43:32,860 ზარის თავად. და ფაქტობრივად, ჩვენ არ გვჭირდება loop. 685 00:43:32,860 --> 00:43:37,200 მოდით კიდევ გამარტივება ამ უბრალოდ ისე, რომ არ დაკარგოს დანახვაზე მართლაც ფუნდამენტური შეცდომა. 686 00:43:37,200 --> 00:43:39,640 მთავარი მოუწოდებს გუნდი მაინც მღერიან რამდენიმე გუნდი, 687 00:43:39,640 --> 00:43:41,440 მაშინ მე იმედი და მქონდა გუნდი ზარის გუნდი 688 00:43:41,440 --> 00:43:43,760 იმიტომ, რომ მე აიღო ვინმე აპირებს განახორციელოს ეს ალბათ, 689 00:43:43,760 --> 00:43:47,210 და ახლა ამ არ აპირებს კომპილაციის ამჟამად. მე უნდა რა? 690 00:43:47,210 --> 00:43:49,970 მჭირდება პროტოტიპი, მახსოვს. 691 00:43:49,970 --> 00:43:56,110 ასე რომ უნდა აქ ბათილად გუნდი (int i); 692 00:43:56,110 --> 00:43:59,210 ახლა თუ ქვევით აქ - ფაქტობრივად, მოდით გამოიყენოთ უფრო დიდი ფანჯარა. 693 00:43:59,210 --> 00:44:01,980 მოდით წავიდეთ წინ და მიიღოს გუნდისათვის. 694 00:44:01,980 --> 00:44:06,490 მოდით წავიდეთ წინ და მიიღოს გუნდისათვის. 695 00:44:06,490 --> 00:44:08,370 გამოყენება გამოუცხადებელ იდენტიფიკატორი მე. 696 00:44:08,370 --> 00:44:12,500 ოჰ, რომ იყო სულელური. ჩვენ არ გვჭირდება არგუმენტი. მოდით უბრალოდ ეს. 697 00:44:12,500 --> 00:44:16,370 ვუსურვებ ჩვენ დავიწყეთ ამ გზით. ეს იქნებოდა ბევრად უფრო ადვილი პროგრამა დაწერა. 698 00:44:16,370 --> 00:44:25,590 არსებობს. ახლა მოდით წავიდეთ მეტი ჩემს ტერმინალის ფანჯარა, გამეორება Clang, და აქ ჩვენ მივდივართ. 699 00:44:25,590 --> 00:44:28,460 ეს იყო მართლაც სწრაფი. 700 00:44:28,460 --> 00:44:31,150 რაც სინამდვილეში მხოლოდ მოხდა, თუმცა? 701 00:44:31,150 --> 00:44:33,730 ისე, ახლა მე დაამატოთ ბეჭდვის ხაზი ასე ვხედავთ. 702 00:44:33,730 --> 00:44:43,490 ნება მომეცით აღვნიშნო printf ("მე აქ") - არ ცვლადები. ჩვენ დავტოვებთ მას მოსწონს, რომ. 703 00:44:43,490 --> 00:44:47,480 ნება მომეცით გამეორება მიიღოს. ნება მომეცით გამეორება გუნდისათვის. 704 00:44:47,480 --> 00:44:57,380 და ... მოდის. შეინახეთ აპირებს. 705 00:44:57,380 --> 00:44:59,930 როგორც განზე, რატომ მას არ შეეჯახა ჯერ არ გაქვთ? 706 00:44:59,930 --> 00:45:02,080 სეგმენტაცია ბრალია მოხდა სუპერ სწრაფი ადრე. 707 00:45:02,080 --> 00:45:06,570 [Inaudible სტუდენტი საპასუხოდ] >> ზუსტად. ასე რომ დრო სჭირდება ბეჭდვა, არა? 708 00:45:06,570 --> 00:45:08,610 ეს უბრალოდ იღებს მეტი მუშაობა კომპიუტერის ნაწილი. 709 00:45:08,610 --> 00:45:10,620 და იქ ეს: სეგმენტაცია ბრალია. 710 00:45:10,620 --> 00:45:12,340 >> ასე რომ შეამჩნევს, თუ რამდენად სწრაფად პროგრამების გასაშვებად. 711 00:45:12,340 --> 00:45:14,130 თუ თქვენ არ დაბეჭდვის არაფერი, სუპერ სწრაფი. 712 00:45:14,130 --> 00:45:18,770 მაგრამ ჩვენ მაინც მოხდა ეს სეგმენტაცია ბრალია, რადგან, თუ რა ხდებოდა? 713 00:45:18,770 --> 00:45:21,210 თუ ფიქრობთ იმაზე, თუ როგორ თქვენი კომპიუტერის მეხსიერების ასახული, 714 00:45:21,210 --> 00:45:28,740 ეს მოხდება, რომ იყოს მთავარი, მაგრამ აქ მოდით უბრალოდ დაარქვით გუნდისა, და მოდით მოვუწოდებთ ამ გუნდისათვის. 715 00:45:28,740 --> 00:45:34,550 და ახლა, თუ ჩემი ესთეტიკის უფლება, ეს მხოლოდ თქმას გუნდი, გუნდი, გუნდი, 716 00:45:34,550 --> 00:45:40,550 გუნდი, გუნდი, გუნდი, გუნდი, რეკლამა nauseum და საბოლოოდ, რა მოხდება? 717 00:45:40,550 --> 00:45:45,630 თუ დიდი სურათი, სიტყვასიტყვით, ეს, რა რაღაც კონცეპტუალურად? 718 00:45:46,520 --> 00:45:48,630 დასტის overruns ბევრი. 719 00:45:48,630 --> 00:45:51,940 ან, უფრო უარესი, უბრალოდ overrun ყველაფერი, მათ შორის ტექსტი სეგმენტი, 720 00:45:51,940 --> 00:45:54,590 რაც 0S და 1s რომ წარმოაჩენს თქვენს პროგრამას. 721 00:45:54,590 --> 00:45:57,080 მოკლედ, ეს მხოლოდ სუპერ, სუპერ ცუდი. 722 00:45:57,080 --> 00:45:58,830 შენი პროგრამა spiraled კონტროლიდან. 723 00:45:58,830 --> 00:46:01,220 თქვენ იყენებთ გზა მეტი მეხსიერების ვიდრე თქვენ აპირებდით 724 00:46:01,220 --> 00:46:03,960 ყველა გამო სულელური შეცდომა ამ შემთხვევაში, 725 00:46:03,960 --> 00:46:08,040 ან ამ შემთხვევაში სრულიად შეგნებულად კეთდება ფუნქცია მოუწოდებდა თავად. 726 00:46:08,040 --> 00:46:09,500 ახლა, ეს არ არის ყველა ცუდი. 727 00:46:09,500 --> 00:46:13,800 ფუნქციები მოუწოდებდა თავად რეალურად აქვს დიდი ძალა, როდესაც თქვენ გამოიყენოს იგი სწორად. 728 00:46:13,800 --> 00:46:15,800 მე არ გამოიყენება მას სწორად აქ. 729 00:46:15,800 --> 00:46:19,780 ასე რომ, ეს არ არის ყველა ცუდია, მაგრამ ფაქტია, რომ მე არასოდეს რეალურად შეწყვიტოს მოუწოდებენ თავს 730 00:46:19,780 --> 00:46:23,520 არის ფუნდამენტური სისუსტე აქ ამ პროგრამას. 731 00:46:23,520 --> 00:46:26,400 ისე სად მივდივართ ყველა ამ? რა ხდება რეალურად? 732 00:46:26,400 --> 00:46:30,340 როდესაც მოვუწოდებ ნამატი ფუნქცია, როგორიცაა ვაკეთებდით იმ მაგალითები, 733 00:46:30,340 --> 00:46:33,420 მაქვს ღირებულება, როგორიცაა 1 რომ მე გაივლის სისტემაში 734 00:46:33,420 --> 00:46:37,570 მე კორიდორი ასლი ნომერი 1, ასე შემდეგ მოხდება. 735 00:46:37,570 --> 00:46:44,240 მოდით წასვლას ნამატი მაგალითად, ამ ბიჭს უფლება მეტი აქ. 736 00:46:44,240 --> 00:46:46,870 აქ რა ხდება რეალურად. 737 00:46:46,870 --> 00:46:53,400 როდესაც მოვუწოდებ ნამატი და მე კორიდორი x, pictorially, რა ხდება აქ არის ამ. 738 00:46:53,400 --> 00:46:59,520 >> თუ მაქვს ღირებულება 1 ინახება აქ და მე სინამდვილეში წუთობრივი, 739 00:46:59,520 --> 00:47:04,330 რომელიც ახლა მოუწოდა ქორო - iPad არის სროლა ჩემთვის off აქ. 740 00:47:04,330 --> 00:47:09,760 მოდით მოვუწოდებთ ამ წუთობრივი, და ჩვენ არ ვიცით, რა ამ შემდეგი ფუნქცია იქნება. 741 00:47:09,760 --> 00:47:14,840 ასე რომ, რა ხდება რეალურად არის აქ სადღაც მთავარ მაქვს ბლოკი მეხსიერება 742 00:47:14,840 --> 00:47:17,000 რომელიც შენახვის ნომერი 1. 743 00:47:17,000 --> 00:47:19,380 როდესაც მოვუწოდებ წუთობრივი, მე გამოყენებით მეორე ბლოკი მეხსიერება, 744 00:47:19,380 --> 00:47:21,230 მაგრამ ახლა მაქვს ასლი 1. 745 00:47:21,230 --> 00:47:26,660 როდესაც მე ნამატი, რომ ღირებულება, ეს ხდება 2, 746 00:47:26,660 --> 00:47:30,560 მაგრამ შემდეგ რა მოხდება, როგორც კი წუთობრივი ანაზღაურება? 747 00:47:30,560 --> 00:47:33,630 ეს მეხსიერების უბრალოდ იღებს გადასცა თავში ოპერაციული სისტემა, 748 00:47:33,630 --> 00:47:37,450 რაც იმას ნიშნავს, რომ ყველაფერი რაც თქვენ გავაკეთეთ არაფერია სასარგებლო. 749 00:47:37,450 --> 00:47:43,120 1 რომ თავდაპირველად შეიცავს ძირითად კვლავ რეალურად არსებობს. 750 00:47:43,120 --> 00:47:44,890 ისე სად მივდივართ ამ? 751 00:47:44,890 --> 00:47:49,770 თურმე ხსოვნისადმი გაქვთ ამ back-to-back თანმიმდევრობა bytes 752 00:47:49,770 --> 00:47:53,050 შეგიძლიათ განათავსოთ პერსონალის, და აღმოჩნდება, რომ ჩვენ უკვე დავინახეთ რაღაც 753 00:47:53,050 --> 00:47:55,390 რომელიც მოიცავს აყენებს რამ თავში დაბრუნება თავში დაბრუნება. 754 00:47:55,390 --> 00:47:59,860 რა არის სიმებიანი ეფუძნება კვირაში 1 და ახლა კვირაში 2? 755 00:48:00,020 --> 00:48:01,980 უბრალოდ კოლექცია სიმბოლო. 756 00:48:01,980 --> 00:48:04,310 გამოდის, ისევე როგორც თქვენ შეგიძლიათ განათავსოთ ნომრები მეხსიერება, 757 00:48:04,310 --> 00:48:06,990 ანალოგიურად შეგიძლიათ დააყენა გმირები მეხსიერებაში. 758 00:48:06,990 --> 00:48:10,530 და კიდევ ჩვენ ვიწყებთ აყენებს სიმბოლოების მეხსიერების თავში დაბრუნება თავში დაბრუნება, 759 00:48:10,530 --> 00:48:13,620 აღმოჩნდება, რომ გამოყენებით მარტივი რამ, როგორიცაა ამისთვის მარყუჟი ან ხოლო მარყუჟის, 760 00:48:13,620 --> 00:48:17,170 ჩვენ შეგვიძლია iterate მარცხნიდან მარჯვნივ მეტი სიმბოლოების სიმებიანი 761 00:48:17,170 --> 00:48:20,600 და დაიწყოს massaging მათთვის სხვადასხვა სიმბოლოების საერთოდ - 762 00:48:20,600 --> 00:48:23,370 შესაძლოა გახდეს ბ, ბ გახდებოდა გ - 763 00:48:23,370 --> 00:48:27,780 ასე რომ, საბოლოო ჯამში, შეიძლება ავიღოთ English სასჯელს, რომ რეალურად აზრი 764 00:48:27,780 --> 00:48:30,310 და დააკონვერტიროთ თითოეული იმ წერილების ერთ დროს 765 00:48:30,310 --> 00:48:34,400 გავლით ჩვენი კომპიუტერის მეხსიერების მარცხნიდან რეალურად დაშიფვრა. 766 00:48:34,400 --> 00:48:35,810 მოდით ჩვენი ხუთი წუთის შესვენების აქ, 767 00:48:35,810 --> 00:48:40,730 და როცა ჩვენ დავბრუნდებით, დავიწყებთ ამ პროცესს scrambling ინფორმაციას. 768 00:48:42,020 --> 00:48:43,520 >> ყველა უფლება. 769 00:48:43,520 --> 00:48:48,070 სანამ ჩვენ ჩაყვინთვის შევიდა გარკვეული შიფრის და ეს ყველაფერი მოუწოდა მასივები, 770 00:48:48,070 --> 00:48:51,470 ნება მომეცით პაუზის ნებისმიერი კითხვები, რადგან მე თავს ნამდვილად სახის muddled 771 00:48:51,470 --> 00:48:54,080 ზოგიერთი ასეთი თემები. მოდით დაფიქსირება ახლა შევძლებთ თუ არა. 772 00:48:54,080 --> 00:48:58,700 ჩვენ უბრალოდ ისაუბრა დაბრუნების ღირებულებები, ჩვენ ვისაუბრეთ არგუმენტები, 773 00:48:58,700 --> 00:49:03,250 და ჩვენ ვისაუბრეთ ამ ცნება, რომელიც ჩვენ დავბრუნდებით ამ კვირის მოსვლა, 774 00:49:03,250 --> 00:49:08,720 საქართველოს ათვალიერებენ მეხსიერების როგორც მთელი bunch ამ stacked ქაღალდის, ასე ვთქვათ, 775 00:49:08,720 --> 00:49:12,660 საგებიდან on up, ასეთი, რომ ყოველი უჯრა რომ იღებს ჩაიცვი დასტის 776 00:49:12,660 --> 00:49:16,530 წარმოადგენს ფუნქციას, რომელიც ამჟამად მიმდინარეობს მოუწოდა. 777 00:49:17,900 --> 00:49:20,260 ნებისმიერი კითხვები? 778 00:49:20,260 --> 00:49:22,640 ნება მომეცით შეკითხვა დაესვა აქ. 779 00:49:22,640 --> 00:49:27,890 ნება მომეცით გაამარტივებს ამ თავში, რაც იყო ადრე ჩვენი ზოგიერთი ადრე Q & A. 780 00:49:27,890 --> 00:49:35,570 ის ფაქტი, რომ ნამატი აქვს ღია ფრჩხილებში, int ნომერი, დახურული ფრჩხილებში - 781 00:49:35,570 --> 00:49:39,110 რას int ხმების წარმოადგენს? 782 00:49:39,110 --> 00:49:42,790 [სტუდენტი] არგუმენტი. >> არგუმენტი. Okay. მაგრამ რა არის არგუმენტი? 783 00:49:42,790 --> 00:49:46,370 [Inaudible სტუდენტი საპასუხოდ] >> რა არის რომ? >> [სტუდენტი] რაღაც, რომ თქვენ გაივლის სისტემაში 784 00:49:46,370 --> 00:49:49,940 Okay, ასე რომ რაღაც თქვენ გაივლით სისტემაში და ზოგადად, უბრალოდ დასტური. 785 00:49:49,940 --> 00:49:52,450 თუ წერდნენ ფუნქცია და რომ ფუნქცია მიზანი ცხოვრებაში 786 00:49:52,450 --> 00:49:55,770 არის რაღაც პატარა სხვადასხვა ყველა დროის გამოყენება, 787 00:49:55,770 --> 00:50:00,110 მაშინ ერთადერთი გზა, რომ მოხდეს მართლაც რომ ჩანს, უზრუნველყოს იგი შეყვანის 788 00:50:00,110 --> 00:50:03,510 ასე რომ შეგიძლიათ გააკეთოთ რაიმე განსხვავებული, რომ შეყვანის ყოველ ჯერზე. 789 00:50:03,510 --> 00:50:06,650 >> ასე, რომ თქვენ უნდა მიუთითოთ ორი რამ როდესაც ფუნქცია იღებს შეყვანის. 790 00:50:06,650 --> 00:50:09,590 თქვენ უნდა მიუთითოთ სახელი, რომ თქვენ მინდა რომ შეყვანის 791 00:50:09,590 --> 00:50:12,700 წმინდა საკუთარი მოხერხებულობის ასე რომ თქვენ შეგიძლიათ უწოდებს 792 00:50:12,700 --> 00:50:16,540 წელს ფუნქცია, რომ თქვენ თავის წერს, როგორც მე აქ ხაზი 32. 793 00:50:16,540 --> 00:50:20,800 მაგრამ თქვენ უნდა მიუთითოთ მისი ტიპის რადგან C არის პროგრამირების ენა 794 00:50:20,800 --> 00:50:25,940 რომ მხოლოდ მოითხოვს, რომ თუ გინდათ ცვლადი, თქვენ უნდა ვუთხრა კომპიუტერის რა მონაცემები ტიპის ეს, 795 00:50:25,940 --> 00:50:30,200 დიდი ნაწილი ისე, რომ იცის რამდენი ბიტი გამოყოფას რომ ცვლადი 796 00:50:30,200 --> 00:50:33,020 იმიტომ, რომ ეს შეიძლება იყოს 6 - უკაცრავად, ეს არ იქნება 6. 797 00:50:33,020 --> 00:50:37,080 ეს შეიძლება იყოს 16, ეს შეიძლება იყოს 8, ეს შეიძლება იყოს 32, თუნდაც 64, 798 00:50:37,080 --> 00:50:39,130 მაგრამ კომპიუტერში უნდა გაიგოს. 799 00:50:39,130 --> 00:50:43,180 ახლა, int წლის მარცხენა მხარეს წარმოადგენს რა, პირიქით? 800 00:50:46,350 --> 00:50:48,850 [Inaudible სტუდენტი საპასუხოდ] >> რა არის რომ? >> [სტუდენტი] გაცნობის ფუნქცია. 801 00:50:48,850 --> 00:50:53,610 გაცნობის ფუნქცია და, უფრო კონკრეტულად კი, გაცნობის მისი გამომუშავება. მარჯვენა. 802 00:50:53,610 --> 00:50:57,380 ასე რომ, მაშინ როდესაც რამ ფრჩხილებში წარმოადგენს მისი შეყვანის, ასეთის არსებობის შემთხვევაში, 803 00:50:57,380 --> 00:50:59,660 რამ მარცხენა წარმოადგენს მისი გამომუშავება. 804 00:50:59,660 --> 00:51:03,530 და ამ შემთხვევაში, ნამატი სავარაუდოდ ბრუნდება int, 805 00:51:03,530 --> 00:51:07,690 და ასე int არის დაბრუნების ტიპის ამ ფუნქციის. 806 00:51:07,690 --> 00:51:09,340 რას ნიშნავს დაბრუნებას? 807 00:51:09,340 --> 00:51:15,090 სიტყვასიტყვით, თქვენ იყენებთ სიტყვით დაბრუნების და მერე თუ რას დაბრუნების 808 00:51:15,090 --> 00:51:18,600 მარჯვნივ სიტყვით არის მთელი რიცხვი, 809 00:51:18,600 --> 00:51:21,660 მაშინ ეს მართლაც შეესაბამება იმას, რასაც ჩვენ დავპირდით. 810 00:51:21,660 --> 00:51:26,410 თქვენ ვერ რაღაც მსგავსი - hello, world - რადგან ეს სიმებიანი. 811 00:51:26,410 --> 00:51:28,860 >> ცხადია, ეს არ არის მთელი რიცხვი. 812 00:51:28,860 --> 00:51:33,140 ასე მოკლედ, ტვირთი მართლაც ჩვენზე, პროგრამისტი, უნდა იყოს კონკრეტული 813 00:51:33,140 --> 00:51:37,770 რაც ჩვენ დაბრუნების და შემდეგ ფაქტიურად წასვლა დაბრუნებაზე იგი. 814 00:51:37,770 --> 00:51:43,440 კონტექსტში აქ არის ის არის, რომ თქვენი კომპიუტერის მეხსიერების Gigabyte, 2 გბ - 815 00:51:43,440 --> 00:51:45,920 რასაც - იქნებ უფრო მეტიც, შეიძლება უფრო ნაკლებად, 816 00:51:45,920 --> 00:51:49,050 მაგრამ კომპიუტერი ამას განიხილავს არა როგორც განსხვავებული სექციები. 817 00:51:49,050 --> 00:51:51,200 რაღაც მიდის down იქ, რაღაც მიდის up there, 818 00:51:51,200 --> 00:51:54,290 სხვადასხვა პერსონალის მიდის შუა, და დღეს ჩვენ უბრალოდ დაიწყოს ვეუბნებოდი ამბავი, 819 00:51:54,290 --> 00:51:56,340 მაგრამ ჩვენ დავბრუნდებით ამ დროთა განმავლობაში. 820 00:51:56,340 --> 00:51:59,980 ახლა მხოლოდ ნაჭერი მეხსიერების ჩვენ ნამდვილად აინტერესებს არის ტექსტი სეგმენტი 821 00:51:59,980 --> 00:52:03,360 იმიტომ, რომ მხოლოდ წარმოადგენს 0S და 1s რომ Clang აქვს outputted. 822 00:52:03,360 --> 00:52:06,050 ასე რომ, როდესაც თქვენ აწარმოებს ბრძანებას კლავიატურის მოსწონს a.out 823 00:52:06,050 --> 00:52:09,110 ან თქვენ ორმაგად დაწკაპეთ ხატი on Mac OS ან Windows, 824 00:52:09,110 --> 00:52:11,880 თქვენი პროგრამა დატვირთულია საწყისი თქვენს ხისტ დისკზე შევიდა RAM 825 00:52:11,880 --> 00:52:16,330 და ეს plopped ზედა თქვენი კომპიუტერის RAM, ასე ვთქვათ. 826 00:52:16,330 --> 00:52:20,450 იმავდროულად, როგორც თქვენი პროგრამა იწყება გაშვებული და ძირითადი იღებს მოუწოდა 827 00:52:20,450 --> 00:52:23,640 პროგრამაში თქვენ წერდა ან პროგრამა Microsoft ან Apple წერდა, 828 00:52:23,640 --> 00:52:27,860 მისი ნებისმიერი ადგილობრივი ცვლადები დასრულდება მდე დაეცა იქ ბოლოში თქვენი კომპიუტერის მეხსიერებაში. 829 00:52:27,860 --> 00:52:33,230 მაგრამ თუ ძირითადი მოუწოდებს სხვა ფუნქცია, რომელიც თვითონ აქვს ცვლადები ან არგუმენტებზე, ისინი დასრულდება up ზემოთ. 830 00:52:33,230 --> 00:52:36,680 და თუ ეს ფუნქცია მოუწოდებს რაღაც, ისინი დასრულდება up ზემოთ ეს, უპირველეს იგი, ზემოთ ის. 831 00:52:36,680 --> 00:52:41,460 >> და მხოლოდ ერთხელ ფუნქციის კეთდება შესრულებაში ამჯამად Stack of ქაღალდის, ასე ვთქვათ, 832 00:52:41,460 --> 00:52:43,240 დაიწყოს მიიღოს ქვედა და ქვედა. 833 00:52:43,240 --> 00:52:48,250 და ეს არის ის, რაც შემდეგ, მოკლედ, განმარტავს, თუ რატომ როცა რეკავთ კუბი 834 00:52:48,250 --> 00:52:51,550 ან რეკავთ წუთობრივი, თქვენ გადადის ასლი ღირებულება. 835 00:52:51,550 --> 00:52:55,520 და რა ეს იმას ნიშნავს pictorially არის, რომ თქვენ ფაქტიურად წერა ნომერი 1 836 00:52:55,520 --> 00:53:00,460 სხვა ნაწილში მეხსიერება, იცვლება, რომ 1 დან 2 შემთხვევაში, რომლის წუთობრივი 837 00:53:00,460 --> 00:53:04,820 ან 8 წელს შემთხვევაში კუბი და შემდეგ სროლა რომ მეხსიერების მოშორებით 838 00:53:04,820 --> 00:53:09,140 როგორც კი ნამატი ან კუბი ფუნქცია დააბრუნებს. შეკითხვა. 839 00:53:09,140 --> 00:53:12,900 [სტუდენტი] სად არიან გლობალური ცვლადები ინახება? 840 00:53:12,900 --> 00:53:18,100 გლობალური ცვლადები ინახება რა გაკეთებული მოუწოდა ინიციალიზაცია მონაცემები ან uninitialized მონაცემები, 841 00:53:18,100 --> 00:53:21,920 განსხვავებით, თუ თქვენ გაქვთ გლობალური ცვლადი და მივანიჭოთ მას მაშინვე ღირებულება 842 00:53:21,920 --> 00:53:24,640 ერთად ტოლობის ნიშანი, იგი მთავრდება ზედა იქ, 843 00:53:24,640 --> 00:53:29,200 და თუ უბრალოდ, ვამბობთ int x; რომელზეც არ ღირებულება, იგი მთავრდება ოდნავ დაბალია RAM 844 00:53:29,200 --> 00:53:31,710 უბრალოდ კონვენციას. 845 00:53:31,710 --> 00:53:34,940 გაქვთ სხვა კითხვები? ყველა უფლება. 846 00:53:34,940 --> 00:53:37,340 ასე რომ ამ სურათს დავბრუნდებით, როგორც ჩვენ უფრო ძლიერი 847 00:53:37,340 --> 00:53:39,170 რა შეგვიძლია გავაკეთოთ ერთად კომპიუტერში, 848 00:53:39,170 --> 00:53:42,720 მაგრამ ახლა, მოდით აქვს მოკლე intro to კრიპტოგრაფიის, 849 00:53:42,720 --> 00:53:46,080 კონკრეტული ტიპის კრიპტოგრაფიის რომ არ გადაჭრის ყველა მსოფლიოს პრობლემების 850 00:53:46,080 --> 00:53:47,720 მაგრამ ამჯამად გადაჭრის ზოგიერთი მათგანი. 851 00:53:47,720 --> 00:53:51,700 ამ შემთხვევაში აქ, ჩვენ გვაქვს რაღაც მოუწოდა საიდუმლო-გასაღები კრიპტოგრაფიის. 852 00:53:51,700 --> 00:53:56,410 საიდუმლო-გასაღები კრიპტოგრაფიის, როგორც სახელი ვარაუდობს, გამომდინარეობს მისი უსაფრთხოების საწყისი საიდუმლო. 853 00:53:56,410 --> 00:54:00,690 >> მაგალითად, თუ თქვენ უკან Grade სკოლა და თქვენ გადიოდნენ პატარა საიდუმლო სიყვარულის წერილი 854 00:54:00,690 --> 00:54:04,850 to ბიჭი ან გოგონა თქვენ გამანადგურებელი შესახებ, თუ სურდა, რომ გაივლის შენიშვნა მეშვეობით აუდიტორია 855 00:54:04,850 --> 00:54:08,380 თქვენ ალბათ არ წერენ ასეთი შენიშვნა ინგლისურ ან რასაც თქვენს მშობლიურ ენას წარმოადგენს. 856 00:54:08,380 --> 00:54:13,340 უფრო მეტიც, თქვენ შეიძლება გაშიფრავს თუ თქვენ შეიძლება მხოლოდ გააგზავნოთ ტექსტური შეტყობინება ამ დღეებში. 857 00:54:13,340 --> 00:54:15,460 მაგრამ თქვენ შეიძლება რეალურად გაივლის მათ შენიშვნა მთელი კლასის. 858 00:54:15,460 --> 00:54:18,700 და ამის გაკეთება უსაფრთხოდ ისე, რომ თქვენი მეგობრები და მასწავლებელი 859 00:54:18,700 --> 00:54:22,650 არ ვიცი რა თქვენ წერის, თქვენ შეიძლება ამუშავება სამართლიანად მარტივი ალგორითმი, 860 00:54:22,650 --> 00:54:25,920 ახალგაზრდა იმისა, რომ თქვენ შეიძლება იყოს, უბრალოდ scramble სიტყვა. 861 00:54:25,920 --> 00:54:28,130 ასე რომ ნაცვლად წერა შეიძლება დაწეროს ბ, 862 00:54:28,130 --> 00:54:30,220 ნაცვლად B შეიძლება დაწეროს გ, 863 00:54:30,220 --> 00:54:32,140 ნაცვლად გ თქვენ შეიძლება დაწეროს დ და სხვ. 864 00:54:32,140 --> 00:54:34,360 ან თქვენ ვერ ამუშავება უფრო დახვეწილი თარგმანი 865 00:54:34,360 --> 00:54:36,720 წერილების სხვადასხვა წერილებს. 866 00:54:36,720 --> 00:54:39,740 მაგრამ დაჭერა არის ბიჭი ან გოგო, რომელსაც თქვენ გაგზავნის ამ შენიშვნა 867 00:54:39,740 --> 00:54:45,020 უნდა გაიგოს რაღაც, რაც, ბუნებრივია? >> [სტუდენტი] თუ რას აგზავნის. 868 00:54:45,020 --> 00:54:49,720 რა საიდუმლო არის, მსგავსი იმისა, რაც არის, რომ რუკების შორის და B და C-ს და d's. 869 00:54:49,720 --> 00:54:54,650 არის თუ არა მხოლოდ დასძინა 1 თითოეულ წერილებს გადასვლა, რათა ბ, ბ გ? 870 00:54:54,650 --> 00:54:56,670 იქნებ უფრო კომპლექსური, ვიდრე რომ? 871 00:54:56,670 --> 00:55:01,540 >> ასე, რომ თქვენ და თქვენი Crush უნდა ამ საიდუმლო ინფორმაციას, 872 00:55:01,540 --> 00:55:03,190 მაგრამ სახის catch-22 აქ. 873 00:55:03,190 --> 00:55:06,830 თუ ეს ძალიან პირველად თქვენ გაგზავნის ეს სიყვარული წერილი მეშვეობით კლასის, 874 00:55:06,830 --> 00:55:10,720 როგორ არის, რომ ბიჭი ან გოგო აპირებს ვიცით რა საიდუმლო კი არის? 875 00:55:10,720 --> 00:55:13,930 ასე რომ საიდუმლო-გასაღები Crypto არ გადაჭრის ყველა მსოფლიოს პრობლემები, 876 00:55:13,930 --> 00:55:16,320 და არსებობს რეალურად ურთიერთობისათვის აქ რომ ჩვენ დაბრუნდება მიმართ სემესტრის ბოლოს. 877 00:55:16,320 --> 00:55:25,110 ანალოგიურად არა უმეტეს us არ ვიცი ვინმეს რომ მუშაობს, მაგალითად, დილის Amazon.com, 878 00:55:25,110 --> 00:55:28,190 და ჯერ ბევრი ჩვენგანი ალბათ იყიდა პერსონალის at Amazon.com, 879 00:55:28,190 --> 00:55:31,990 და ჩვენ ისწავლება უნდა ვივარაუდოთ, რომ ამ ელექტრონული კომერციის ოპერაციების უსაფრთხო. 880 00:55:31,990 --> 00:55:36,470 URL ალბათ ამბობს https, არსებობს იქნებ სულელური პატარა ბოქლომს ხატი სადღაც, 881 00:55:36,470 --> 00:55:39,930 არსებობს გარკვეული სახის კრიპტოგრაფიის უზრუნველყოფის თქვენი საკრედიტო ბარათის ინფორმაცია 882 00:55:39,930 --> 00:55:42,160 თქვენს შორის და Amazon.com. 883 00:55:42,160 --> 00:55:45,430 და მაინც, თუ კრიპტოგრაფიის მოიცავს იცოდა ზოგიერთი საიდუმლო 884 00:55:45,430 --> 00:55:48,620 და ჯერ არ ვიცი, ვინმეს დროს Amazon და მე ნამდვილად არ მოწყობილი რაიმე სახის საიდუმლო 885 00:55:48,620 --> 00:55:52,710 ვინმესთან დროს Amazon, როგორ არის ჩემი კომპიუტერი ან ჩემი ბრაუზერი ამით? 886 00:55:52,710 --> 00:55:55,720 თურმე არსებობს სხვა სახის კრიპტოგრაფიის საერთოდ რომ ამ პრობლემის გადაწყვეტა. 887 00:55:55,720 --> 00:55:57,670 მაგრამ დღეს, ჩვენ ფოკუსირება მარტივი ერთი 888 00:55:57,670 --> 00:56:00,290 სადაც შეგიძლიათ მოწყობა წინასწარ იცოდეს ზოგიერთი საიდუმლო 889 00:56:00,290 --> 00:56:03,760 მოსწონს +1 ან რუკების შორის და B-ს. 890 00:56:03,760 --> 00:56:05,840 და პროცესი კრიპტოგრაფიის ზოგადად მოიცავს ამ. 891 00:56:05,840 --> 00:56:08,620 თქვენ გაქვთ ზოგიერთი ძირითადი ტექსტი, გამოსახული აქ მარცხენა 892 00:56:08,620 --> 00:56:12,930 თქვენ გაუშვით მეშვეობით გარკვეული ალგორითმის ან პროცედურა encrypting იგი - 893 00:56:12,930 --> 00:56:15,100 იქნებ ეს მხოლოდ ხდება ბ, ბ ხდება C - 894 00:56:15,100 --> 00:56:17,490 და მაშინ დასრულდება up ერთად ciphertext. 895 00:56:17,490 --> 00:56:20,380 იმავდროულად, ერთხელ თქვენი Crush იღებს ამ საიდუმლო შენიშვნა, 896 00:56:20,380 --> 00:56:24,200 მას უნდა შემდეგ გაშიფვრა იგი ზოგადად უკუქცევის რომ ალგორითმი 897 00:56:24,200 --> 00:56:27,190 რათა მიიღოთ უკან ძირითადი ტექსტი. 898 00:56:27,190 --> 00:56:28,960 არსებობს ფიზიკური incarnations ამ. 899 00:56:28,960 --> 00:56:31,680 >> მაგალითად, ეს პატარა საიდუმლო დეკოდერი ბეჭედი, 900 00:56:31,680 --> 00:56:35,110 და ეს არის ბეჭედი იმ გაგებით, რომ არსებობს ორი აკრიფეთ აქ. 901 00:56:35,110 --> 00:56:38,490 On გარეთ პერიფერია ამ რამ, არსებობს წერილების მეშვეობით Z, 902 00:56:38,490 --> 00:56:40,340 თუმცა ისინი შემთხვევითი იმისათვის, 903 00:56:40,340 --> 00:56:42,880 და ქვეყნის შიგნით, იქ რეალურად ზოგიერთი ნომრები 904 00:56:42,880 --> 00:56:46,620 ისეთი, რომ ამ რგოლის შეგიძლიათ სახის ჩართოთ გარეთ მაგრამ არა შიგნით 905 00:56:46,620 --> 00:56:49,140 რათა გამოდიან ნომრები წერილებს. 906 00:56:49,140 --> 00:56:53,020 მდებარეობა ფილმის მოუწოდა საშობაო ამბავი, დაინახავთ, რომ პატარა Ralphie 907 00:56:53,020 --> 00:56:58,000 იმდენად მოწადინებული გაერკვნენ, რა პატარა ობოლი Annie საიდუმლო გაგზავნა იყო მისთვის 908 00:56:58,000 --> 00:57:02,570 რომ იყო communicated, ვფიქრობ, სახით რიცხვითი შეტყობინებების მარცვლეულის ყუთი 909 00:57:02,570 --> 00:57:07,220 და გქონდათ დაგროვების ყველა პატარა ბარათები, რომ მოვიდა მარცვლეულის ყუთი, 910 00:57:07,220 --> 00:57:09,770 თქვენ იძულებული გახდა გვერდის მათ, გქონდათ დასაბრუნებლად საიდუმლო დეკოდერი ბეჭედი 911 00:57:09,770 --> 00:57:13,910 ასე რომ თქვენ შეგიძლიათ საბოლოოდ გაერკვნენ, რა არის რუკების შორის ასოები და რიცხვები 912 00:57:13,910 --> 00:57:15,550 ან ასოები და წერილები. 913 00:57:15,550 --> 00:57:19,520 როგორ წელს კომპიუტერულ შეგვიძლია წავიდეთ შესახებ განხორციელების ან წარმოადგენს რამ ასე? 914 00:57:19,520 --> 00:57:22,560 ჩვენ გვჭირდება გზა გამოხატავს საკუთარ თავს ცოტა მეტი მოქნილად 915 00:57:22,560 --> 00:57:25,080 ვიდრე ჩვენი ცვლადები ჯერჯერობით არ დაუშვეს. 916 00:57:25,080 --> 00:57:29,000 ჩვენ გვქონდა ints, ჩვენ გვქონდა სიმბოლო, ჩვენ გვქონდა მოძრავი და ორადგილიანი და რამდენიმე სხვები, 917 00:57:29,000 --> 00:57:34,200 მაგრამ იმ ინდივიდუალური ცალი მეხსიერების რომ ნამდვილად არ გვაძლევს გამოვხატოთ რამ 918 00:57:34,200 --> 00:57:36,440 მოსწონს სიტყვა და სასჯელი და ფრაზები. 919 00:57:36,440 --> 00:57:38,630 მართლაც, ჩვენ მოუწოდა ასეთი რამ სიმები, 920 00:57:38,630 --> 00:57:42,660 მაგრამ გპირდებით, რომ ეს მართლაც მხოლოდ გამარტივების წელს CS50 ბიბლიოთეკა 921 00:57:42,660 --> 00:57:45,540 რომ ჩვენ აპირებს კანი უკან. 922 00:57:45,540 --> 00:57:47,500 და მოდით ახლა გადავიდეთ გავაკეთოთ, რომ აქ. 923 00:57:47,500 --> 00:57:49,840 ნება მომეცით წავიდეთ წინ და გახსენით ფაილი - 924 00:57:49,840 --> 00:57:54,100 ყველა ამ ფაილებზე ხელმისაწვდომია, როგორც ყოველთვის, ონლაინ - წოდებული array.c 925 00:57:54,100 --> 00:57:58,960 გადაჭრის პრობლემას უკავშირდება სტრიქონები მაგრამ რომ ხატავს სურათს აქ 926 00:57:58,960 --> 00:58:01,520 თუ როგორ შეიძლება გამოვიყენოთ რაღაც მოუწოდა მასივი. 927 00:58:01,520 --> 00:58:04,050 >> Array არის მონაცემები ტიპის. 928 00:58:04,050 --> 00:58:10,730 ეს გაცნობის ცვლადი of ჯიშები რომ მრავლობითი პატარა მონაცემთა ტიპები შიგნით ეს 929 00:58:10,730 --> 00:58:12,680 თავში დაბრუნება თავში დაბრუნება. 930 00:58:12,680 --> 00:58:16,980 ასე მაგალითად, თუ გვინდოდა წერენ პატარა პროგრამა, რომელიც გაძლევთ თქვენს ვიქტორინა საშუალო 931 00:58:16,980 --> 00:58:19,780 ამისთვის, რა თქმა უნდა, როგორიცაა 50, რომელსაც აქვს 2 ვიქტორინებში, 932 00:58:19,780 --> 00:58:23,450 თქვენ შეიძლება ძალიან ადვილად წერენ ამ პროგრამის საფუძველზე კი ზოგიერთ გასულ კვირას მასალა 933 00:58:23,450 --> 00:58:28,830 გამოყენებით GetInt და რამოდენიმე ცვლადის: int quiz1, int quiz2. 934 00:58:28,830 --> 00:58:30,550 და ეს საკმაოდ მარტივია. 935 00:58:30,550 --> 00:58:33,500 ეს ალბათ 10, 20 ხაზების კოდი max განახორციელოს პროგრამა 936 00:58:33,500 --> 00:58:38,940 რომ სთხოვს მომხმარებლის 2 Quiz ქულით და შემდეგ computes მათი საშუალო 937 00:58:38,940 --> 00:58:42,020 დამატებით მათ ერთად, გამყოფი მიერ 2, ხოლო შემდეგ ბეჭდვის შედეგები. 938 00:58:42,020 --> 00:58:46,400 ჩვენ შეგვეძლო ალბათ, რომ საკმაოდ ადვილად არის გარკვეული რაოდენობის წუთი. 939 00:58:46,400 --> 00:58:49,450 მაგრამ პრობლემა ისაა, რომ ვივარაუდოთ, რომ 50 ჰქონდა 3 ტესტებში ან 4. 940 00:58:49,450 --> 00:58:52,830 დავუშვათ, რომ თქვენ სურდა გამოიყენოთ იგივე პროგრამის კლასი, რომელიც ჰქონდა ყოველკვირეული ვიქტორინებში. 941 00:58:52,830 --> 00:58:55,100 იფიქრეთ კლასის, რომელიც ყოველკვირეული ტესტებში. 942 00:58:55,100 --> 00:58:58,840 თუ არსებობს 16 ან იმდენად კვირით სემესტრში, ახლა თქვენ გაქვთ 16 ცვლადები: 943 00:58:58,840 --> 00:59:03,030 int quiz1, int quiz2, int quiz3, int quiz4. 944 00:59:03,030 --> 00:59:06,870 როგორც კი დაიწყება ვხედავთ ამ redundancy, ამ გადაწერა და pasting კოდის, 945 00:59:06,870 --> 00:59:09,810 ეს უნდა დაიწყოს, რათა გსურთ იყო უკეთესი გზა. 946 00:59:09,810 --> 00:59:13,610 და საბედნიეროდ, რადგან მასივები არსებობს. ასე რომ მოდით ეს. 947 00:59:13,610 --> 00:59:16,700 პირველი, მინდა წარმოგიდგინოთ ძალიან მარტივი რამ, რომ ჩვენ არ გამოიყენება ჯერჯერობით 948 00:59:16,700 --> 00:59:18,820 მაგრამ დაინახავთ მას ზოგჯერ კოდის. 949 00:59:18,820 --> 00:59:21,270 >> ეს არის რა ზოგადად მოუწოდა მუდმივი. 950 00:59:21,270 --> 00:59:24,410 ასე რომ მუდმივი იმ გაგებით, რომ ამ მნიშვნელობის არასოდეს ცვლის. 951 00:59:24,410 --> 00:59:26,450 ადამიანის კონვენციის როდესაც შექმნა მუდმივი 952 00:59:26,450 --> 00:59:30,420 ის, რომ მთელი ასოებით მხოლოდ ისე, რომ იგი ნამდვილად გამოირჩევა თქვენს კოდი, 953 00:59:30,420 --> 00:59:34,270 და სპეციალური სიტყვით რომ სარგებლობთ C არის # განსაზღვრავს. 954 00:59:34,270 --> 00:59:39,970 ამიტომ ვამბობთ # განსაზღვრავს, მაშინ სივრცე, მაშინ სიტყვა, რომელიც გსურთ გამოიყენოთ მუდმივი სახელი 955 00:59:39,970 --> 00:59:41,730 და მაშინ ღირებულების მუდმივი. 956 00:59:41,730 --> 00:59:44,710 გაითვალისწინეთ ეს განსხვავდება მინიჭების რაიმე ცვლადი. 957 00:59:44,710 --> 00:59:46,430 იქ არ არის ტოლობის ნიშანი, არ მძიმით. 958 00:59:46,430 --> 00:59:49,140 ეს არის რა საყოველთაოდ ცნობილია, როგორც preprocessor დირექტივა, 959 00:59:49,140 --> 00:59:50,840 მაგრამ უფრო, რომ სხვა დროს. 960 00:59:50,840 --> 00:59:56,350 ახლა ამ ქმნის unchanging ღირებულება მოუწოდა ტესტები 961 00:59:56,350 --> 00:59:58,290 რომლის ფაქტობრივი რიცხვითი მნიშვნელობა არის 2. 962 00:59:58,290 --> 01:00:02,180 ასე რომ სადმე ხედავთ ტესტები, ტესტები, ტესტები მთელ ამ ფაილის, 963 01:00:02,180 --> 01:00:04,230 ეს მხოლოდ ნომერი 2. 964 01:00:04,230 --> 01:00:06,550 თუ გავითვალისწინებთ მთავარ ახლა, ვნახოთ, თუ როგორ ეს სამუშაოები. 965 01:00:06,550 --> 01:00:09,770 პირველი ეს გამოიყურება პატარა cryptic, მაგრამ ყველა პერსონალის საწყისი კვირაში 1. 966 01:00:09,770 --> 01:00:12,210 დასვით მომხმარებლის for კლასის. როგორ გავაკეთოთ ეს? 967 01:00:12,210 --> 01:00:17,350 შეესაბამება 22 - ეს მართლაც წვნიანი ნაწილი - ვაცხადებ float 968 01:00:17,350 --> 01:00:23,240 მაგრამ არა მხოლოდ ერთი float. მე გამოცხადების, არამედ მასივი მცურავი პუნქტიანი ღირებულებებს. 969 01:00:23,240 --> 01:00:27,700 რომ ცვლადი აპირებს ეწოდოს კლასის, როგორც გულისხმობდა აქ, 970 01:00:27,700 --> 01:00:31,420 მაგრამ მხოლოდ ნაჭერი ახალი სინტაქსის მაშინ ეს კვადრატულ ფრჩხილებში. 971 01:00:31,420 --> 01:00:37,280 ის ფაქტი, რომ მე განაცხადა float კლასების და შემდეგ ღია bracket და შემდეგ ნომერი - 972 01:00:37,280 --> 01:00:40,980 შეამჩნია თუ ეს მუდმივი ეს მხოლოდ ისე, როგორც ეს - 973 01:00:40,980 --> 01:00:46,840 ეს იმას ნიშნავს, "Hey კომპიუტერი, მომეცი 2 მოძრავი და მოდით ერთობლივად მოვუწოდებთ მათ კლასის." 974 01:00:46,840 --> 01:00:51,780 >> ეს არის განსხვავებით ბევრად უფრო რუტინული პროცესი ასე: float grade1; 975 01:00:51,780 --> 01:00:54,580 ათწილადი grade2 და სხვ. 976 01:00:54,580 --> 01:00:58,310 ამიტომ მასივი საშუალებას გვაძლევს განვახორციელოთ ეს იდეა, მაგრამ უფრო ნაკლებად messily, 977 01:00:58,310 --> 01:01:04,560 ისე, რომ ჩვენ შეგვიძლია დავწეროთ 1 ხაზი კოდი ნაცვლად, ვთქვათ, 16 16 კვირიანი სემესტრის. 978 01:01:04,560 --> 01:01:09,060 მე არ მინდა, რომ მყარი კოდი 2 რადგან თუ ფიქრობთ ეს ახლა ლოგიკურად, 979 01:01:09,060 --> 01:01:12,560 ვარაუდობენ, მომავალ წელს CS50 ცვლილებების 3 ტესტებში ნაცვლად 980 01:01:12,560 --> 01:01:15,010 და მქონდა ნომერი 2 აქ, მქონდა ნომერი 2 აქ, 981 01:01:15,010 --> 01:01:17,210 მქონდა ნომერი 2 აქ, ნომერი 2 აქ. 982 01:01:17,210 --> 01:01:19,890 ეს ხდება ძალიან რუტინული და ძალიან ადვილი Screw up 983 01:01:19,890 --> 01:01:26,550 და შემთხვევით შეცვალოს 1 ღირებულების 3 და ელოდებიან რაიმე სხვა ღირებულება 2. 984 01:01:26,550 --> 01:01:30,660 ამიტომ მე ვაპირებ ნაცვლად აბსტრაქტული ამ მოშორებით და გამოიყენოს ეს მუდმივი რომ, 985 01:01:30,660 --> 01:01:32,520 როგორც მისი სახელი ვარაუდობს, არასდროს ცვლილებები. 986 01:01:32,520 --> 01:01:35,870 და ახლა არ აქვს მნიშვნელობა თუ არა გვაქვს სხვადასხვა ტესტებში წელს ან მომდევნო, 987 01:01:35,870 --> 01:01:39,380 მე უბრალოდ უნდა შეცვალოს იგი ერთ ადგილას აქ ზედა. 988 01:01:39,380 --> 01:01:41,230 ასე რომ ყველა კონსტანტა. 989 01:01:41,230 --> 01:01:47,100 ამასობაში, ახალი კონცეპტუალური ფუნქცია რომ მასივი. 990 01:01:47,100 --> 01:01:55,030 ასე რომ კვადრატულ ფრჩხილებში მომეცი ამ ბევრი მოძრავი და საშუალებას ჩემთვის ერთობლივად მოვუწოდებთ მათ კლასის აქ. 991 01:01:55,030 --> 01:01:56,720 ახლა ვნახოთ რა მე ვაპირებ ამის გაკეთებას. 992 01:01:56,720 --> 01:01:59,220 აქ ხაზი 24 არის დასაწყისიდან ამისთვის loop. 993 01:01:59,220 --> 01:02:03,380 >> ეს მართლაც არაფერი მიეცით. უბრალოდ გამოყენებით ტესტები ნაცვლად მყარი კოდირებული ნომერი. 994 01:02:03,380 --> 01:02:06,740 მაგრამ არაფერი ინტელექტუალურად სხვადასხვა იქ გასულ კვირას. 995 01:02:06,740 --> 01:02:11,650 ეს არის მხოლოდ printf, ასე printf ("Quiz #% d of% d:") 996 01:02:11,650 --> 01:02:16,670 რადგან მინდა ამობეჭდოთ მომეცი Quiz რაოდენობის 1 2 და შემდეგ 2 2. 997 01:02:16,670 --> 01:02:18,480 ასე რომ, ეს არის წმინდა წყლის ესთეტიკური რამ. 998 01:02:18,480 --> 01:02:21,000 მაგრამ საინტერესო ნაწილი ახლა არის ხაზზე 27. 999 01:02:21,000 --> 01:02:27,840 იმისათვის, რომ შეავსონ ერთი ორი placeholders ერთად მცურავი პუნქტიანი ღირებულება, 1000 01:02:27,840 --> 01:02:29,640 თქვენ კვლავ გამოიყენოთ კვადრატულ ფრჩხილებში. 1001 01:02:29,640 --> 01:02:35,170 ამ შემთხვევაში, მე გამოყენებით რადგან მე ამ loop დაიწყო მე equaling რა ღირებულება, სავარაუდოდ? 1002 01:02:35,170 --> 01:02:36,670 [სტუდენტი] 0. >> [Malan] 0. 1003 01:02:36,670 --> 01:02:40,990 ამიტომ პირველ iteration ამ მარყუჟის, ეს თითქოს მე დავწერე ეს კოდი, 1004 01:02:40,990 --> 01:02:46,310 მაგრამ მეორე iteration ამ მარყუჟის, ეს თითქოს მე დავწერე ეს ჩემი კოდი. 1005 01:02:46,310 --> 01:02:49,970 მაგრამ ის ფაქტი, რომ მე გამოყენებით ცვლადი არის სრულყოფილი, რადგან, როგორც სახელი ვარაუდობს, 1006 01:02:49,970 --> 01:02:52,600 ის განსხვავებული მისი ღირებულება ყოველ iteration, 1007 01:02:52,600 --> 01:02:55,900 ამიტომ მე შევსების ამ მასივი ერთ ადგილზე დროს. 1008 01:02:55,900 --> 01:02:57,380 რას მასივი გამოიყურებოდეს? 1009 01:02:57,380 --> 01:03:01,570 მიზეზი მე მიიპყრო სუპერ მარტივი მართკუთხედი ეკრანზე აქ ადრე იყო ამის გამო. 1010 01:03:01,570 --> 01:03:05,590 Array მხოლოდ ბლოკი მეხსიერება მოჰყვა კიდევ ერთი ბლოკი მეხსიერება 1011 01:03:05,590 --> 01:03:08,570 მოჰყვა კიდევ ერთი ბლოკი მეხსიერება და სხვ. 1012 01:03:08,570 --> 01:03:13,120 ასე რომ, თუ ჩემი array არის ზომა 2 ამ შემთხვევაში აქ, ყველა მე აკეთებს 1013 01:03:13,120 --> 01:03:20,200 აკრეფით ჩემი Quiz ქულით მინდა აქ - მე მივიღე 100 ამ ერთ და შემდეგ მე მივიღე 99 ამ ერთ - 1014 01:03:20,200 --> 01:03:24,970 მაშინ ეს მეხსიერების შეიძლება არც კი იყოს გამოყენებული, რადგან მე მხოლოდ სთხოვა კომპიუტერი 1015 01:03:24,970 --> 01:03:26,840 ამისთვის მასივი ზომა 2. 1016 01:03:26,840 --> 01:03:28,600 იმ მოედნებზე ჯერ კიდევ არსებობს, არა? 1017 01:03:28,600 --> 01:03:32,670 თქვენ ჯერ კიდევ აქვს 2 გიგაბაიტი ოპერატიული მეხსიერება შემთხვევაშიც კი, თუ თქვენ მხოლოდ ითხოვენ 2 მოძრავი. 1018 01:03:32,670 --> 01:03:36,840 ასე რომ იდეა უკან კოლექტორები არის, რომ კომპიუტერი მხოლოდ იღებს ბლოკი მეხსიერება 1019 01:03:36,840 --> 01:03:41,340 და შემდეგ გამოყოფს პატარა დარტყმები თავში დაბრუნება თავში დაბრუნება. 1020 01:03:41,340 --> 01:03:43,310 და ისე, რომ ყველა წყობა. 1021 01:03:43,310 --> 01:03:47,350 >> ეს მომიჯნავე ბლოკი მეხსიერების შიგნით, რომელიც შეგიძლიათ დააყენა რამ. 1022 01:03:47,350 --> 01:03:50,700 ეს მოხდება, მაშინ ნუ რამოდენიმე მოსაწყენი არითმეტიკული. 1023 01:03:50,700 --> 01:03:54,640 თუ მე გადახვევა ქვემოთ აქ, ეს არის სადაც მე მაშინ iterate მეტი მასივი. 1024 01:03:54,640 --> 01:03:58,020 მე ამუშავება summation ყველა ღირებულებების მასივი, 1025 01:03:58,020 --> 01:04:02,470 და შემდეგ გამოვიყენო მრგვალი ფუნქცია აქ მართლაც თანხა იყოფა ტესტები. 1026 01:04:02,470 --> 01:04:06,320 მაგრამ ნება მიბოძეთ ტალღის ჩემი ხელი, რომ როგორც სახის საკმარისი არითმეტიკული ახლა. 1027 01:04:06,320 --> 01:04:08,370 მაგრამ ყველა რომ აკეთებს ჩემთვის საბოლოოდ არის Computing საშუალო. 1028 01:04:08,370 --> 01:04:13,580 ამიტომ პირველ Quiz პლუს მეორე ვიქტორინა იყოფა 2 და შემდეგ ბეჭდვას ის, როგორც int. 1029 01:04:13,580 --> 01:04:17,280 მაგრამ მოდით ახლა გადასვლის სხვადასხვა მაგალითი უწოდა string1, 1030 01:04:17,280 --> 01:04:20,700 რომელიც ხატავს მსგავსი სურათს მაგრამ მისი გამოყენება სტრიქონები. 1031 01:04:20,700 --> 01:04:23,940 ნება მომეცით წავიდეთ წინ და გაამარტივებს ამ მხოლოდ მომენტში. 1032 01:04:23,940 --> 01:04:27,090 აპატიე წანაცვლება ახლა. 1033 01:04:27,090 --> 01:04:30,870 ცნობა, ხაზი 19 ამ მაგალითად, მივიღებ string საწყისი მომხმარებელს. 1034 01:04:30,870 --> 01:04:34,640 მაგრამ შეამჩნევს თუ რა მე შემდეგი აკეთებდა ხაზები 22 Onward. 1035 01:04:34,640 --> 01:04:41,250 მე რეალურად iterating საწყისი მე მდე - და ეს არის ახალი ხრიკი - strlen, string სიგრძე. 1036 01:04:41,250 --> 01:04:44,880 ეს არის ფუნქცია, რომელიც გააჩნია C, რომ თუ თქვენ გაიაროს ეს ტექსტი, 1037 01:04:44,880 --> 01:04:47,730 ეს გიჩვენებთ რამდენი გმირები არიან, რომ სიმებიანი. ეს იყო. 1038 01:04:47,730 --> 01:04:51,550 და ის ფაქტი, რომ strlen ნაცვლად სიმებიანი სიგრძე არის მხოლოდ იმიტომ, რომ ეს უფრო ლაკონური. 1039 01:04:51,550 --> 01:04:55,100 ოცდაათი წლის წინ, ხალხი მომეწონა დაწერა რამ როგორც succinctly, რაც შეიძლება, 1040 01:04:55,100 --> 01:04:57,630 ამიტომ ჩვენ ინახება, რომ კონვენციის აქ. 1041 01:04:57,630 --> 01:05:00,660 მე + + უბრალოდ ნიშნავს ნამატი მე თითოეულ iteration. 1042 01:05:00,660 --> 01:05:02,990 და ახლა შეამჩნია ეს, რომელიც მართლაც ძალიან საინტერესო. 1043 01:05:02,990 --> 01:05:09,180 სტრიქონში 24, მე ვიტყვი, "კომპიუტერი, მომეცი ხასიათი, 8 ბიტი, და ეძახით გ." 1044 01:05:09,180 --> 01:05:12,630 მაგრამ რა არის ეს მარჯვენა მხარეს ამბობდა? 1045 01:05:13,490 --> 01:05:16,530 ინგლისურ, რას წარმოადგენს? 1046 01:05:16,530 --> 01:05:18,730 [სტუდენტი] პირველი პერსონაჟი მასივი. 1047 01:05:18,730 --> 01:05:20,790 სწორედ. მომეცი პირველი პერსონაჟი მასივი. 1048 01:05:20,790 --> 01:05:24,090 ან, უფრო ზოგადად, მომეცი შ პერსონაჟი მასივი. 1049 01:05:24,090 --> 01:05:26,100 და გააცნობიეროს, მნიშვნელოვანია, რომ როგორც კომპიუტერი მეცნიერები, 1050 01:05:26,100 --> 01:05:27,890 ჩვენ რეალურად დათვლის საწყისი 0. 1051 01:05:27,890 --> 01:05:29,720 >> თქვენ არ შეხედულებისამებრ ახლა უნდა დაიწყოს ამით. 1052 01:05:29,720 --> 01:05:34,160 ახლა თქვენ უნდა მოიქცეს შესაბამისად კომპიუტერის მოლოდინი და დათვალეთ საწყისი 0 1053 01:05:34,160 --> 01:05:38,180 რადგან [0] იქნება პირველი პერსონაჟი სიმებიანი, 1054 01:05:38,180 --> 01:05:42,150 [1] იქნება მეორე, [2] იქნება მესამე და სხვ. 1055 01:05:42,150 --> 01:05:49,720 ასე რომ, ეს პროგრამა, თუ კომპილირება, ეს კიდევ ერთხელ string1, ასე რომ string1, 1056 01:05:49,720 --> 01:05:54,670 და ახლა მე აწარმოებს string1 ჩემი ტერმინალის ფანჯარაში. 1057 01:05:54,670 --> 01:05:58,330 ეს ელოდება შეყვანის, ისე მე ვაპირებ აკრიფოთ დავით, მიუთითოთ, 1058 01:05:58,330 --> 01:06:02,540 და ახლა იგი ბეჭდავს დავით ყველა სხვადასხვა ხაზების რადგან გაფრთხილების რა ვაკეთებ. 1059 01:06:02,540 --> 01:06:05,820 მე დაბეჭდვის ერთი ხასიათი დროს. 1060 01:06:05,820 --> 01:06:10,100 ჩვენ არ წასვლას დეტალურად დღეს ამ, მაგრამ მე წაიშალოს მომენტში წინ ამ გამშვები აქ. 1061 01:06:10,100 --> 01:06:15,480 თურმე, თუ მომხმარებელს misbehaving, შეჯიბრებითობის, ან უბრალოდ დაიბნა, 1062 01:06:15,480 --> 01:06:20,210 შეგიძლიათ პრაქტიკულად ვერ მისცემს სიმებიანი ზოგიერთი სიგრძე. 1063 01:06:20,210 --> 01:06:22,860 თუ თქვენ მოხვდა არასწორი გასაღები წლის კლავიატურის, თქვენ შეიძლება არ სიმებიანი ყველა, 1064 01:06:22,860 --> 01:06:26,950 ან თუ თქვენ მუქარის, თქვენ ალბათ ცდილობენ ჩასვით წელს Gigabyte-ის ღირებულების ესსე 1065 01:06:26,950 --> 01:06:29,290 შევსება ეს კონტექსტი და, თუ კომპიუტერში გადის out of მეხსიერება, 1066 01:06:29,290 --> 01:06:32,710 გამოდის, რომ ჩვენ ვაპირებთ დავუბრუნდეთ ამ მასივები მოუწოდა null. 1067 01:06:32,710 --> 01:06:35,580 ასე რომ, ახლა, უბრალოდ ვიცი, რომ არსებობს ამ მასივები მოუწოდა NULL 1068 01:06:35,580 --> 01:06:39,580 რომელიც საშუალებას მოგვცემს, რათა შეამოწმოთ, როდესაც ჩვენ მეხსიერება ღალატობს, სხვა საკითხებს შორის. 1069 01:06:39,580 --> 01:06:45,630 მაგრამ თუ მე გახსენით ახლა string2, შეამჩნია ერთი განსხვავება აქ. 1070 01:06:45,630 --> 01:06:48,210 გაითვალისწინეთ ერთი განსხვავება აქ string2. 1071 01:06:48,210 --> 01:06:51,340 With string2, ეს არის მარყუჟის ცოტა განსხვავებული. 1072 01:06:51,340 --> 01:06:55,010 >> ნება მომეცით წაშლა NULLs ასე, რომ ჩვენ შეგვიძლია საუბარი იმ სხვა დროს. 1073 01:06:55,010 --> 01:06:57,800 რა არის განსხვავებული შესახებ for loop ამ დროს? 1074 01:06:59,620 --> 01:07:01,670 შემიძლია დავუბრუნდეთ წინა მაგალითს. 1075 01:07:01,670 --> 01:07:08,580 ასე რომ 2 ვერსია, ეს ვერსია 1. 1, 2. 1076 01:07:08,580 --> 01:07:11,980 1, 2. 1077 01:07:13,520 --> 01:07:16,660 Strlen ზარის სადაც? 1078 01:07:16,660 --> 01:07:18,860 ეს პირველ ნაწილს შეეხება loop. 1079 01:07:18,860 --> 01:07:21,830 ნებისმიერი აზრები, თუ რატომ მე ამით? Yeah. 1080 01:07:21,830 --> 01:07:24,560 [სტუდენტი] ასე რომ თქვენ არ მოვუწოდებთ ფუნქცია თითოეული დრო. 1081 01:07:24,560 --> 01:07:26,440 [Malan] ასე რომ, ჩვენ არ მოვუწოდებთ ფუნქცია თითოეული დრო. სწორედ. 1082 01:07:26,440 --> 01:07:28,300 შეგახსენებთ, საწყისი ამისთვის მარყუჟების, რომ ისინი სუპერ მარტივი 1083 01:07:28,300 --> 01:07:31,770 ერთხელ თქვენ სახის გვესმოდეს, რომ ეს არის ინიციალიზაციისას, მდგომარეობა და განახლება. 1084 01:07:31,770 --> 01:07:34,750 პრობლემა ისაა, რომ მდგომარეობა ხდება ყოველ iteration of loop. 1085 01:07:34,750 --> 01:07:40,010 და ა.შ. ამ მაგალითში აქ, რა არის ცუდი ფაქტი, რომ ეს არის ჩემი მდგომარეობა? 1086 01:07:40,010 --> 01:07:41,830 [სტუდენტი] თქვენ მოუწოდებდა strlen. 1087 01:07:41,830 --> 01:07:44,340 [Malan] თქვენ მოუწოდებდა strlen ისევ და ისევ და ისევ. 1088 01:07:44,340 --> 01:07:47,410 მაგრამ ერთხელ მე აკრეფილი დავით, სიგრძით, რომ სტრიქონს 5, 1089 01:07:47,410 --> 01:07:49,650 და ეს არ შეიცვლება ყოველ iteration of loop 1090 01:07:49,650 --> 01:07:51,670 რადგან სიმებიანი კვლავ D--V-I-დ. 1091 01:07:51,670 --> 01:07:55,320 ასე რომ, ეს არის მინიშნება რა აპირებს გახდეს მნიშვნელოვანი იდეა 1092 01:07:55,320 --> 01:08:00,410 ცნობილია, როგორც დიზაინის გადაწყვეტილება, სადაც უბრალოდ არ მიიღოს კომპიუტერი ზედმეტი მუშაობა. 1093 01:08:00,410 --> 01:08:03,920 >> ისევე, როგორც Sneak ესკიზი pset2, pset2 in სტანდარტული გამოცემა 1094 01:08:03,920 --> 01:08:07,030 აპირებს დაუპირისპირდეს თქვენ რეალურად განახორციელოს გარკვეული რაოდენობის ciphers, 1095 01:08:07,030 --> 01:08:10,410 ზოგიერთი ხმების შიფრირების ალგორითმები, ასე რომ თქვენ შეგიძლიათ ორივე გაშიფრავს 1096 01:08:10,410 --> 01:08:13,840 და გაშიფვრა საიდუმლო შეტყობინებები ჰგავს ერთი Ralphie არსებობს გაშიფრული გამოჩნდება. 1097 01:08:13,840 --> 01:08:16,810 In Hacker გამოცემა pset2, ჩვენ ვაპირებთ წასვლა ცოტა შემდგომი. 1098 01:08:16,810 --> 01:08:19,649 ჩვენ ვაპირებთ გადასცემს თქვენ ფაილის ფაქტობრივი კომპიუტერულ სისტემაში 1099 01:08:19,649 --> 01:08:23,479 რომელიც შეიცავს მთელ bunch of სახელისა და ფაქტობრივი დაშიფრული პაროლები, 1100 01:08:23,479 --> 01:08:26,939 და გამოწვევა Hacker გამოცემა იქნება, რათა ბზარი იმ პაროლები 1101 01:08:26,939 --> 01:08:33,200 და გაერკვნენ, თუ რა კრიპტოგრაფიის ან რა საიდუმლო იყო გამოყენებული, რათა რეალურად გამოიმუშავებენ იმ პაროლები. 1102 01:08:33,200 --> 01:08:36,109 და ჩვენ ვაპირებთ ამ გამოყენებით ახალი ფუნქცია აქ C 1103 01:08:36,109 --> 01:08:40,630 რომ მე მივცემ თქვენ უბრალოდ დემო ცნობილია როგორც ბრძანება ხაზი არგუმენტები. 1104 01:08:40,630 --> 01:08:44,229 თურმე, როგორც ზოგიერთი თქვენთაგანი შეიძლება მინახავს ნაწილში ან სახელმძღვანელოებში, 1105 01:08:44,229 --> 01:08:48,260 მთავარი ყოველთვის არ უნდა იყოს ბათილად ფრჩხილებში. 1106 01:08:48,260 --> 01:08:52,430 თურმე მთავარი ასევე შეიძლება წერილობითი მოსწონს, ორი არგუმენტები, 1107 01:08:52,430 --> 01:08:56,870 argc და argv, სადაც argc არის ხმების სიტყვა 1108 01:08:56,870 --> 01:09:00,020 რომ თქვენ ტიპი შემდეგ პროგრამის სახელი თქვენს command line 1109 01:09:00,020 --> 01:09:03,420 და argv არის ფაქტობრივი სიტყვა. 1110 01:09:03,420 --> 01:09:07,540 და როგორც კვადრატულ ფრჩხილებში არსებობს ვივარაუდოთ, argv აშკარად მასივი. 1111 01:09:07,540 --> 01:09:12,210 ეს იქნება სიმებიანი შემდეგ სიმებიანი შემდეგ სიმებიანი მეხსიერებაში. 1112 01:09:12,210 --> 01:09:16,010 >> ასე რომ, რასაც ჩვენ ვაპირებთ გამოუვა დაწყებული pset 2 არის მსგავსი რამ. 1113 01:09:16,010 --> 01:09:21,350 თუ მე argv1, რომელიც მაგალითად ჩვენ დაბრუნებას ორშაბათს, და გაუშვით, 1114 01:09:21,350 --> 01:09:23,370 შეამჩნია, რომ არ ჩანს არაფერი გაუკეთებია. 1115 01:09:23,370 --> 01:09:25,490 უბრალოდ ბეჭდავს out საკუთარი სახელით. 1116 01:09:25,490 --> 01:09:31,479 მაგრამ თუ ვიტყვი Goodbye კლასის შეამჩნევთ, რომ ამ პროგრამის სავარაუდოდ iterates 1117 01:09:31,479 --> 01:09:35,479 აღემატება თითოეული სიტყვა, რომლებიც აკრეფილი ბრძანებათა ზოლზე. 1118 01:09:35,479 --> 01:09:41,630 და საშუალება, რომლითაც ჩვენ შესვლის უფლების მოსაპოვებლად სიტყვა, რომ მომხმარებელს უკვე აკრეფილი ბრძანებათა ზოლში 1119 01:09:41,630 --> 01:09:49,160 არის შეცვლით მთავარ დაწყებული ამ კვირის საწყისი int ძირითადი (void) to int ძირითადი (argc, argv) 1120 01:09:49,160 --> 01:09:52,050 და ამით იქნება დაბადებული ბრძანება ხაზი არგუმენტები. 1121 01:09:52,050 --> 01:09:57,100 და კიდევ თქვენ ნამდვილად დახვეწილი ამ, თქვენ გექნებათ დაწერა მართლაც trippy პროგრამები 1122 01:09:57,100 --> 01:09:59,610 როგორიცაა ამ ერთი აქ, რომელიც მაღლა იწევს და მის ფარგლებს გარეთ 1123 01:09:59,610 --> 01:10:03,940 ზოგიერთი ფუნქციონალური ჩვენ გავაკეთეთ დღემდე მაგრამ ყველა საკმაოდ ძლიერი. 1124 01:10:03,940 --> 01:10:08,950 >> ამიტომ, ჩვენ დავტოვებთ ამ ამ ეკრანზე, და ვნახავთ თქვენ ორშაბათს. 1125 01:10:17,570 --> 01:10:20,000 >> [CS50.TV]