1 00:00:00,000 --> 00:00:03,388 >> [მუსიკის დაკვრა] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD ყველა უფლება. 4 00:00:06,020 --> 00:00:07,680 მუშაობა ერთი ცვლადები არის საკმაოდ სახალისო. 5 00:00:07,680 --> 00:00:09,500 მაგრამ რა, თუ ჩვენ გვინდა მუშაობა ბევრი ცვლადები, 6 00:00:09,500 --> 00:00:12,760 მაგრამ ჩვენ არ გვინდა, რომ აქვს bunch of სხვადასხვა სახელები საფრენი გარშემო ჩვენი კოდი? 7 00:00:12,760 --> 00:00:15,980 ამ შემთხვევაში, კოლექტორები აპირებს მოდის ძალიან მოსახერხებელი. 8 00:00:15,980 --> 00:00:19,510 მასივები მართლაც ფუნდამენტური მონაცემები სტრუქტურა რაიმე პროგრამირების ენის 9 00:00:19,510 --> 00:00:20,260 რომ თქვენ გამოიყენოთ. 10 00:00:20,260 --> 00:00:24,450 და ისინი მართლაც, ნამდვილად სასარგებლოა, კერძოდ, როგორც ჩვენ ვხედავთ, CS 50. 11 00:00:24,450 --> 00:00:27,870 >> ჩვენ ვიყენებთ კოლექტორები გამართავს ღირებულებების იგივე მონაცემები ტიპის 12 00:00:27,870 --> 00:00:29,830 განთავსებულია მიმდებარე მეხსიერების ადგილას. 13 00:00:29,830 --> 00:00:32,430 სწორედ რომ ვთქვათ, ეს არის ისე, რომ ჩვენ შეუძლია ჯგუფი 14 00:00:32,430 --> 00:00:35,430 რამოდენიმე რიცხვებით ერთად მეხსიერების ან bunch of გმირები 15 00:00:35,430 --> 00:00:38,270 ან მოძრავი მეხსიერება ნამდვილად დახურვა ერთად და მუშაობა 16 00:00:38,270 --> 00:00:41,930 მათ გარეშე, რათა თითოეული ერთი საკუთარი უნიკალური სახელი, რომელსაც შეუძლია 17 00:00:41,930 --> 00:00:44,500 მიიღეთ cumbersome ცოტა ხნის შემდეგ. 18 00:00:44,500 --> 00:00:48,130 >> ახლა, ერთი გზა ანალოგიური კოლექტორები ვიფიქროთ თქვენი ადგილობრივი პოსტი 19 00:00:48,130 --> 00:00:49,000 საოფისე მეორე. 20 00:00:49,000 --> 00:00:51,820 ასე ნაბიჯი დაშორებით პროგრამირების და უბრალოდ თვალები დახუჭე 21 00:00:51,820 --> 00:00:54,120 და ვიზუალურად თქვენი გონება ადგილობრივ ფოსტაში. 22 00:00:54,120 --> 00:00:57,160 როგორც წესი, ყველაზე პოსტი ოფისები, არსებობს დიდი ბანკი 23 00:00:57,160 --> 00:01:00,490 ფოსტაში ყუთები კედელზე. 24 00:01:00,490 --> 00:01:03,510 >> მასივი გიგანტური ბლოკი მომიჯნავე მეხსიერება, 25 00:01:03,510 --> 00:01:06,120 ანალოგიურად, რომ ფოსტა საბანკო თქვენს ფოსტაში 26 00:01:06,120 --> 00:01:11,230 დიდი სივრცე კედლის ფოსტაში. 27 00:01:11,230 --> 00:01:15,750 მასივები უკვე დანაწევრებული პატარა, იდენტურად ზომის ბლოკებს სივრცეში, 28 00:01:15,750 --> 00:01:19,930 რომელთაგან თითოეული ეწოდება ელემენტს, ანალოგიურად, რომ კედელზე პოსტი 29 00:01:19,930 --> 00:01:23,840 ოფისი დანაწევრებული პატარა, იდენტურად ზომის ბლოკებს სივრცეში, 30 00:01:23,840 --> 00:01:27,560 რომელიც ჩვენ მოვუწოდებთ PO ყუთის. 31 00:01:27,560 --> 00:01:31,650 თითოეული ელემენტის მასივი შესანახად გარკვეული მონაცემები, 32 00:01:31,650 --> 00:01:37,540 ისევე როგორც თითოეული ყუთის შეუძლია გამართავს გარკვეული mail. 33 00:01:37,540 --> 00:01:41,540 >> რა შეიძლება იყოს შენახული თითოეული ელემენტის მასივი ცვლადები იგივე მონაცემები 34 00:01:41,540 --> 00:01:45,300 ტიპის, როგორიცაა int ან char, უბრალოდ როგორც თქვენი საფოსტო ყუთის, 35 00:01:45,300 --> 00:01:47,300 თქვენ შეგიძლიათ მხოლოდ ჯდება რამ მსგავსი ტიპის, 36 00:01:47,300 --> 00:01:50,430 როგორიცაა წერილები და მცირე პაკეტები. 37 00:01:50,430 --> 00:01:55,050 და ბოლოს, ჩვენ შეუძლია თითოეული ელემენტის მასივი პირდაპირ ინდექსი ნომერი, 38 00:01:55,050 --> 00:01:59,770 ისევე, როგორც ჩვენ შეუძლია ჩვენს ფოსტაში ყუთი იცის მისი ფოსტის ნომერი. 39 00:01:59,770 --> 00:02:02,750 იმედია, რომ ანალოგია გეხმარებათ მიიღოთ თქვენი უფროსი 40 00:02:02,750 --> 00:02:05,540 იდეის გარშემო მასივები მიერ analogizing, რომ რაღაც 41 00:02:05,540 --> 00:02:08,400 რომ თქვენ, ალბათ, უკვე იცნობს. 42 00:02:08,400 --> 00:02:13,182 >> In C, ელემენტები მასივი არიან ინდექსირებული დაწყებული 0, არა 1. 43 00:02:13,182 --> 00:02:14,390 და ეს ძალიან მნიშვნელოვანია. 44 00:02:14,390 --> 00:02:18,530 და სინამდვილეში, სწორედ ამიტომ ჩვენ, CS 50, და ამიტომ კომპიუტერის მეცნიერები ხშირად 45 00:02:18,530 --> 00:02:22,150 დაითვლის 0-დან, არის იმის გამო, რომ C მასივი 46 00:02:22,150 --> 00:02:24,660 ინდექსირებას, რომელიც ყოველთვის იწყება 0. 47 00:02:24,660 --> 00:02:28,730 ასე რომ, თუ მასივი შედგება N ელემენტები, პირველი ელემენტი, რომელიც მასივი 48 00:02:28,730 --> 00:02:32,960 მდებარეობს ინდექსი 0, და ბოლო ელემენტს მასივი 49 00:02:32,960 --> 00:02:36,610 მდებარეობს ინდექსი ო მინუს 1. 50 00:02:36,610 --> 00:02:43,160 ისევ და ისევ, თუ არსებობს n ელემენტები ჩვენს მასივი, ბოლო მაჩვენებელი N მინუს 1. 51 00:02:43,160 --> 00:02:46,820 >> ასე რომ, თუ ჩვენი მასივი 50 ელემენტები, პირველ ელემენტს მდებარეობს ინდექსი 0, 52 00:02:46,820 --> 00:02:51,060 და ბოლო ელემენტს მდებარეობს ინდექსი 49. 53 00:02:51,060 --> 00:02:53,940 სამწუხაროდ, ან საბედნიეროდ, დამოკიდებულია თქვენი პერსპექტივა, 54 00:02:53,940 --> 00:02:56,170 C არის ძალიან რბილი აქ. 55 00:02:56,170 --> 00:02:59,480 ეს არ შეგიშლით აპირებს ფარგლებს გარეთ თქვენი მასივი. 56 00:02:59,480 --> 00:03:03,080 თქვენ შეიძლება თქვათ მინუსის 3 ელემენტს მასივი 57 00:03:03,080 --> 00:03:07,400 ან 59 ელემენტს მასივი, თუ თქვენი მასივი მხოლოდ 50 ელემენტებს. 58 00:03:07,400 --> 00:03:11,060 ეს არ შეწყვეტენ თქვენი პროგრამის შედგენა, მაგრამ პერსპექტივაში დრო, 59 00:03:11,060 --> 00:03:14,350 თქვენ შეიძლება ექმნებათ საშინელი სეგმენტაცია ბრალია 60 00:03:14,350 --> 00:03:17,460 თუ დაიწყება მეხსიერება რომ არის გარეთ ფარგლებში, რაც 61 00:03:17,460 --> 00:03:19,260 თქვენ სთხოვა თქვენი პროგრამა მოგცემთ. 62 00:03:19,260 --> 00:03:21,250 ასე რომ, ფრთხილად. 63 00:03:21,250 --> 00:03:23,120 >> რას მასივი დეკლარაციის ჰგავს? 64 00:03:23,120 --> 00:03:26,940 როგორ შეგვიძლია კოდი მასივი არსებობა როგორც ჩვენ კოდექსში ნებისმიერი სხვა ცვლადი? 65 00:03:26,940 --> 00:03:31,250 არსებობს სამი ნაწილებით მასივი declaration-- ტიპის, სახელი, 66 00:03:31,250 --> 00:03:31,880 და ზომა. 67 00:03:31,880 --> 00:03:34,088 ეს არის ძალიან ჰგავს ცვლადის დეკლარაცია, რომელიც 68 00:03:34,088 --> 00:03:36,970 მხოლოდ ტიპის და სახელი, ზომა ელემენტს მიმდინარეობს 69 00:03:36,970 --> 00:03:39,860 სპეციალური შემთხვევაში მასივი, იმიტომ, რომ ჩვენ ვიღებთ რამოდენიმე მათგანი 70 00:03:39,860 --> 00:03:41,830 ამავე დროს. 71 00:03:41,830 --> 00:03:45,560 >> ასე რომ, ტიპის, თუ რა სახის ცვლადი თქვენ მინდა თითოეული ელემენტის მასივი იყოს. 72 00:03:45,560 --> 00:03:47,150 არ მინდა, რომ ის მასივი რიცხვებით? 73 00:03:47,150 --> 00:03:49,010 ამის შემდეგ, თქვენი მონაცემები ტიპის უნდა იყოს int. 74 00:03:49,010 --> 00:03:51,760 გსურთ, რომ იყოს მასივი ორადგილიანი და მოძრავი? 75 00:03:51,760 --> 00:03:54,545 მონაცემთა ტიპი უნდა იყოს ორმაგი ან float. 76 00:03:54,545 --> 00:03:56,420 სახელი არის ის, რაც თქვენ მინდა მოვუწოდო თქვენი მასივი. 77 00:03:56,420 --> 00:04:00,970 რა გინდათ ასახელებს ამ გიგანტური საბანკო რიცხვებით ან მოძრავი ან სიმბოლო 78 00:04:00,970 --> 00:04:03,250 ან ორჯერ, ან რასაც თქვენ? 79 00:04:03,250 --> 00:04:04,700 რა გინდათ ეძახით? 80 00:04:04,700 --> 00:04:06,110 საკმაოდ თვითმმართველობის განმარტებითი. 81 00:04:06,110 --> 00:04:08,610 >> და ბოლოს, ზომა, რომელიც მიდის შიგნით კვადრატულ ფრჩხილებში, 82 00:04:08,610 --> 00:04:12,180 რამდენი ელემენტები თქვენ ამას როგორც თქვენი მასივი შეიცავს. 83 00:04:12,180 --> 00:04:13,530 რამდენი რიცხვებით გინდათ? 84 00:04:13,530 --> 00:04:15,570 რამდენი მოძრავი გინდათ? 85 00:04:15,570 --> 00:04:19,070 >> ასე მაგალითად, int სტუდენტი შეფასება 40. 86 00:04:19,070 --> 00:04:26,020 ეს აცხადებს მასივი მოუწოდა სტუდენტური შეფასება, რომელიც შედგება 40 რიცხვებით. 87 00:04:26,020 --> 00:04:28,180 საკმაოდ თვითმმართველობის განმარტებითი, იმედი მაქვს. 88 00:04:28,180 --> 00:04:29,330 აი კიდევ ერთი მაგალითი. 89 00:04:29,330 --> 00:04:31,560 ორმაგი მენიუ ფასები 8. 90 00:04:31,560 --> 00:04:34,610 ეს ქმნის მასივი მოუწოდა მენიუ ფასებს, რომელიც შედგება 91 00:04:34,610 --> 00:04:38,300 ოთახი მეხსიერების რვა ორადგილიანი. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> თუ ფიქრობთ, რომ ყველა ელემენტს მასივი ტიპის მონაცემთა ტიპის, 94 00:04:45,750 --> 00:04:49,860 ასე მაგალითად, ერთ ელემენტს მასივი ტიპის int, იგივე გზა 95 00:04:49,860 --> 00:04:52,770 ვფიქრობ, რომ ნებისმიერი სხვა ცვლადი ტიპის int, 96 00:04:52,770 --> 00:04:56,440 ყველა ნაცნობი ოპერაციების, რომ ჩვენ განიხილეს ადრე ოპერაციების 97 00:04:56,440 --> 00:04:58,270 ვიდეო აზრი. 98 00:04:58,270 --> 00:05:01,620 ასე რომ, ჩვენ შეიძლება განაცხადოს მასივი booleans მოუწოდა Truthtable, 99 00:05:01,620 --> 00:05:05,590 რომელიც შედგება ოთახი 10 Booleans. 100 00:05:05,590 --> 00:05:09,650 >> და შემდეგ, ისევე, როგორც ჩვენ შეგვიძლია მხოლოდ მივანიჭოთ მნიშვნელობა ნებისმიერი სხვა ცვლადი ტიპის 101 00:05:09,650 --> 00:05:13,470 ლოგიკური, შეიძლება ითქვას, რაღაც ისევე როგორც Truthtable კვადრატული ფრჩხილი 102 00:05:13,470 --> 00:05:18,040 2, რომელიც არის როგორ ჩვენ მიუთითოს, რომელიც ელემენტს ჭეშმარიტების მაგიდაზე? 103 00:05:18,040 --> 00:05:20,350 მესამე ელემენტია სიმართლე მაგიდასთან, რადგან მახსოვს, 104 00:05:20,350 --> 00:05:21,800 ჩვენ იმედი 0-დან. 105 00:05:21,800 --> 00:05:25,690 ასე რომ, ის, თუ როგორ მიუთითოს მესამე ელემენტს სიმართლე მაგიდა. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 უდრის ყალბი, ისევე, როგორც ჩვენ შეიძლება declare-- 107 00:05:28,680 --> 00:05:33,560 ან ჩვენ შეგვიძლია მივანიჭოთ, არამედ ნებისმიერი ლოგიკური ტიპის ცვლადი, რომ ტყუილია. 108 00:05:33,560 --> 00:05:35,050 >> ჩვენ ასევე შეგიძლიათ ეს პირობები. 109 00:05:35,050 --> 00:05:39,000 თუ (truthtable 7 == ნამდვილი), რაც უნდა ვთქვა, 110 00:05:39,000 --> 00:05:42,370 იმ შემთხვევაში, თუ მერვე ელემენტს საქართველოს Truthtable არის ნამდვილი, 111 00:05:42,370 --> 00:05:46,760 იქნებ ჩვენ გვინდა ბეჭდვა გაგზავნა საქართველოს შესახებ, printf ("სიმართლე! n") ;. 112 00:05:46,760 --> 00:05:50,290 რომელიც იწვევს გვაძლევს ვთქვათ, Truthtable 10 უდრის მართალია, არა? 113 00:05:50,290 --> 00:05:53,590 ისე, მე არ შემიძლია, მაგრამ ეს საკმაოდ საშიშია, რადგან მახსოვს, 114 00:05:53,590 --> 00:05:56,260 ჩვენ გვაქვს მასივი 10 Booleans. 115 00:05:56,260 --> 00:06:02,340 ასე რომ, ყველაზე მაღალი მაჩვენებელი, რომ შემდგენელი მოგვცა 9. 116 00:06:02,340 --> 00:06:06,010 >> ეს პროგრამა შედგენა, მაგრამ თუ რაღაც მეხსიერება 117 00:06:06,010 --> 00:06:09,110 არსებობს, სადაც ჩვენ გვინდა ველით Truthtable 10 წასვლა, 118 00:06:09,110 --> 00:06:13,980 ჩვენ შეიძლება განიცდიან სეგმენტაცია ბრალია. ჩვენ შეიძლება მიიღოს away, მაგრამ ზოგადად, 119 00:06:13,980 --> 00:06:14,710 საკმაოდ საშიშია. 120 00:06:14,710 --> 00:06:19,759 ასე რომ, რასაც მე ვაკეთებ აქ არის სამართლებრივი C, მაგრამ არ არის აუცილებელი საუკეთესო ნაბიჯი. 121 00:06:19,759 --> 00:06:22,300 ახლა, როდესაც თქვენ გამოაცხადოს და ინიციალიზაცია მასივი ერთდროულად, 122 00:06:22,300 --> 00:06:23,960 არ არის რეალურად საკმაოდ სპეციალური სინტაქსი, რომ თქვენ 123 00:06:23,960 --> 00:06:26,250 შეგიძლიათ გამოიყენოთ შეავსოთ მასივი მისი ამოსავალი ღირებულებები. 124 00:06:26,250 --> 00:06:30,130 მას შეუძლია მიიღოს რთული განაცხადოს მასივი ზომა 100, 125 00:06:30,130 --> 00:06:33,430 და მერე უნდა ვთქვა, ელემენტს 0 უდრის; ელემენტის 1 უდრის; 126 00:06:33,430 --> 00:06:34,850 ელემენტი 2 შეადგენს, რომ. 127 00:06:34,850 --> 00:06:36,370 რა არის წერტილი, არა? 128 00:06:36,370 --> 00:06:39,470 >> თუ ეს პატარა მასივი, თქვენ შეიძლება რაიმე ამის მსგავსი. 129 00:06:39,470 --> 00:06:44,360 რედაქტირება truthtable 3 ტოლია ღია Curly გაუწიოს და შემდეგ მძიმე 130 00:06:44,360 --> 00:06:48,060 გამოყოფა სიის ელემენტების რომ გსურთ დააყენა მასივი. 131 00:06:48,060 --> 00:06:50,520 მაშინ დახურვა Curly გაუწიოს მძიმით. 132 00:06:50,520 --> 00:06:53,910 ეს ქმნის მასივი ზომა სამი მოუწოდა Truthtable, 133 00:06:53,910 --> 00:06:56,090 ელემენტებით ყალბი, მართალია, და ჭეშმარიტი. 134 00:06:56,090 --> 00:06:59,270 და ფაქტობრივად, instantiation სინტაქსი მაქვს აქ 135 00:06:59,270 --> 00:07:03,350 ზუსტად ისევე, როგორც აკეთებს ინდივიდუალური ელემენტს სინტაქსი ქვემოთ. 136 00:07:03,350 --> 00:07:09,380 ეს ორი გზა კოდირების გვინდა აწარმოოს ზუსტი იგივე მასივი. 137 00:07:09,380 --> 00:07:11,740 >> ანალოგიურად, ჩვენ შეგვიძლია iterate მთელ ელემენტები 138 00:07:11,740 --> 00:07:15,400 მასივი გამოყენებით loop, რომელიც, ფაქტობრივად, ეს არის ძალიან მკაცრად რეკომენდირებულია 139 00:07:15,400 --> 00:07:16,790 სახლში განხორციელება. 140 00:07:16,790 --> 00:07:20,720 როგორ შექმნათ მასივი 100 რიცხვებით, სადაც 141 00:07:20,720 --> 00:07:23,477 ყველა ელემენტს მასივი მისი ინდექსი? 142 00:07:23,477 --> 00:07:26,560 ასე მაგალითად, ჩვენ გვაქვს მასივი 100 რიცხვებით და პირველ ელემენტს, 143 00:07:26,560 --> 00:07:27,790 ჩვენ გვინდა, რომ 0. 144 00:07:27,790 --> 00:07:29,810 მეორე ელემენტს, ჩვენ გვინდა, რომ 1. 145 00:07:29,810 --> 00:07:33,319 მესამე ელემენტს, ჩვენ გვინდა იმისათვის, რომ 2; და ასე შემდეგ და ასე შემდეგ. 146 00:07:33,319 --> 00:07:35,360 ეს არის ძალიან კარგი სახლში exercise გაგვაჩნია. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> აქ, ეს არ გამოიყურება როგორც ძალიან ბევრი რამ შეიცვალა. 149 00:07:40,220 --> 00:07:44,170 მაგრამ შეამჩნია, რომ შორის კვადრატულ ფრჩხილებში, ამ დროს, 150 00:07:44,170 --> 00:07:45,830 მე რეალურად გამოტოვებული ნომერი. 151 00:07:45,830 --> 00:07:48,000 თუ თქვენ იყენებთ ამ სპეციალური instantiation 152 00:07:48,000 --> 00:07:50,380 სინტაქსი შექმნათ მასივი, თქვენ ნამდვილად არა 153 00:07:50,380 --> 00:07:53,491 უნდა მიუთითოს ზომა მასივი წინასწარ. 154 00:07:53,491 --> 00:07:55,740 შემდგენელი არის smart საკმარისი ვიცი, რომ თქვენ რეალურად 155 00:07:55,740 --> 00:07:58,980 გვინდა მასივი ზომა 3, იმიტომ, რომ თქვენ დააყენა სამი ელემენტები 156 00:07:58,980 --> 00:08:00,640 მარჯვნივ თანაბარი ნიშანი. 157 00:08:00,640 --> 00:08:04,140 თუ თქვენ დააყენა ოთხი, ეს იქნებოდა მოცემული სიმართლე მაგიდა ზომა ოთხი 158 00:08:04,140 --> 00:08:06,270 და ასე შემდეგ და ასე შემდეგ. 159 00:08:06,270 --> 00:08:09,380 >> მასივები არ შემოიფარგლება ერთი განზომილება, რომელიც არის საკმაოდ გრილი. 160 00:08:09,380 --> 00:08:12,000 თქვენ შეგიძლიათ რეალურად იმდენი მხარე specifiers, როგორც თქვენ გსურთ. 161 00:08:12,000 --> 00:08:16,470 ასე მაგალითად, თუ გვინდა, რომ შევქმნათ საბჭოს თამაში Battleship, რომელიც, 162 00:08:16,470 --> 00:08:20,910 თუ თქვენ ოდესმე ითამაშა, არის თამაში, რომელიც არის ითამაშა სამაგრები 10 10 ქსელის, 163 00:08:20,910 --> 00:08:22,450 შეგიძლიათ შექმნათ მასივი მოსწონს ეს. 164 00:08:22,450 --> 00:08:26,030 თქვენ შეიძლება ითქვას რედაქტირება საბრძოლო კვადრატული ფრჩხილი 10 165 00:08:26,030 --> 00:08:29,590 დახურული მოედანი bracket მოედანზე bracket 10 დახურულია კვადრატული ფრჩხილი. 166 00:08:29,590 --> 00:08:32,710 >> და შემდეგ, თქვენ შეგიძლიათ ინტერპრეტაცია თქვენი გონება, როგორც 10 167 00:08:32,710 --> 00:08:35,576 10 ქსელის საკნები. 168 00:08:35,576 --> 00:08:37,409 ახლა, ფაქტობრივად, მეხსიერება, ეს მართლაც მხოლოდ 169 00:08:37,409 --> 00:08:42,440 რჩება 100 ელემენტი, ერთ განზომილებიანი მასივი. 170 00:08:42,440 --> 00:08:46,070 ეს, ფაქტობრივად, მიდის თუ აქვს სამი განზომილება ან ოთხი ან ხუთი. 171 00:08:46,070 --> 00:08:49,420 ეს ნამდვილად არ გავამრავლოთ ყველა indices-- 172 00:08:49,420 --> 00:08:51,130 ან ყველა ზომა specifiers-- ერთად, 173 00:08:51,130 --> 00:08:53,480 და თქვენ უბრალოდ ერთი განზომილებიანი მასივი, რომ ზომა. 174 00:08:53,480 --> 00:08:57,090 >> მაგრამ იმ თვალსაზრისით, ორგანიზაცია და ვიზუალიზაცია და აღქმა, 175 00:08:57,090 --> 00:08:59,240 ეს შეიძლება იყოს ბევრი ადვილია მუშაობა ქსელის 176 00:08:59,240 --> 00:09:02,980 თუ ვმუშაობთ თამაში როგორიცაა Tic-TAC-toe და Battleship, 177 00:09:02,980 --> 00:09:05,179 ან რამე მაგდაგვარს. 178 00:09:05,179 --> 00:09:06,970 ეს არის დიდი აბსტრაქცია, ნაცვლად, რომელმაც 179 00:09:06,970 --> 00:09:09,340 ვიფიქროთ Tic-TAC-toe მონიშნე როგორც ხაზი ცხრა 180 00:09:09,340 --> 00:09:13,810 მოედნებზე ან Battleship ფორუმში როგორც ხაზი 100 მოედნებზე. 181 00:09:13,810 --> 00:09:16,010 10 10 ქსელის ან სამი სამი ქსელის ალბათ 182 00:09:16,010 --> 00:09:17,225 ბევრი უფრო ადვილად აღიქვამს. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> ახლა, მართლაც რაღაც მნიშვნელოვანი მასივები. 185 00:09:22,280 --> 00:09:25,950 ჩვენ შეგვიძლია მკურნალობა თითოეული ინდივიდუალური ელემენტს მასივი, როგორც ცვლადი. 186 00:09:25,950 --> 00:09:27,700 ჩვენ ვნახეთ, რომ ადრე როდესაც ჩვენ მინიჭების 187 00:09:27,700 --> 00:09:32,240 ღირებულების True გარკვეული Booleans და ტესტირების მათ პირობით. 188 00:09:32,240 --> 00:09:35,960 მაგრამ ჩვენ არ შეუძლია მთელი კოლექტორები საკუთარ თავს, როგორც ცვლადი. 189 00:09:35,960 --> 00:09:41,760 ჩვენ არ შეგვიძლია, მაგალითად, დაავალოს ერთ მასივი სხვა მასივი გამოყენებით დავალება 190 00:09:41,760 --> 00:09:42,930 ოპერატორი. 191 00:09:42,930 --> 00:09:44,640 ეს არ არის სამართლებრივი C. 192 00:09:44,640 --> 00:09:47,920 >> თუ გვინდა, რომ, მაგალითად, რა ჩვენ უნდა აკეთებდა, რომ მაგალითად 193 00:09:47,920 --> 00:09:50,200 იქნება კოპირება ერთი მასივი მეორეზე. 194 00:09:50,200 --> 00:09:53,810 თუ გვინდა, რომ გავაკეთოთ, რომ ჩვენ რეალურად უნდა გამოვიყენოთ loop კოპირება მეტი 195 00:09:53,810 --> 00:09:56,550 თითოეულ ინდივიდუალური ელემენტს ერთ დროს. 196 00:09:56,550 --> 00:09:58,700 მე ვიცი, რომ ცოტა დროს მოითხოვს. 197 00:09:58,700 --> 00:10:04,022 >> ასე მაგალითად, თუ ჩვენ გვქონდა ამ ორი ხაზი კოდი, რომ ეს მუშაობა? 198 00:10:04,022 --> 00:10:05,230 ისე, არა, ეს არ არის, უფლება? 199 00:10:05,230 --> 00:10:07,860 იმის გამო, რომ ჩვენ ვცდილობთ მივანიჭოთ საკვები ბარი. 200 00:10:07,860 --> 00:10:09,860 ეს არ იმუშავებს, იმიტომ, რომ ეს მასივი, 201 00:10:09,860 --> 00:10:13,130 და ჩვენ უბრალოდ აღწერილი რომ ეს არ არის სამართლებრივი C. 202 00:10:13,130 --> 00:10:15,580 >> სამაგიეროდ, თუ ჩვენ გვინდა, რომ კოპირება შინაარსი საკვები 203 00:10:15,580 --> 00:10:18,070 შევიდა ბარი, რაც ჩვენ ვცდილობთ, რომ აქ, 204 00:10:18,070 --> 00:10:19,970 ჩვენ უნდა სინტაქსი მოსწონს ეს. 205 00:10:19,970 --> 00:10:24,170 ჩვენ გვაქვს ამისთვის loop რომ მიდის საწყისი J უდრის 0-დან 5 206 00:10:24,170 --> 00:10:28,390 და ჩვენ ნამატი J ყოველ iteration მარყუჟის და მივანიჭოთ ელემენტები, როგორიცაა, რომ. 207 00:10:28,390 --> 00:10:33,360 ეს გამოიწვევს იმას, ბარი ასევე ერთ-ერთი, ორი, სამი, ოთხი, ხუთი, 208 00:10:33,360 --> 00:10:36,730 მაგრამ ჩვენ უნდა გავაკეთოთ ეს ძალიან ნელი ელემენტს მიერ ელემენტს გზა, 209 00:10:36,730 --> 00:10:40,009 ნაცვლად მხოლოდ გადაწერა მთელი მასივი. 210 00:10:40,009 --> 00:10:42,050 სხვა პროგრამირების ენებზე, უფრო თანამედროვე პირობა, 211 00:10:42,050 --> 00:10:45,610 თქვენ შეგიძლიათ, ფაქტობრივად, ამის გაკეთება მხოლოდ რომ მარტივი ტოლია სინტაქსი. 212 00:10:45,610 --> 00:10:49,620 მაგრამ C, სამწუხაროდ, ჩვენ არ არის ნებადართული უნდა გავაკეთოთ, რომ. 213 00:10:49,620 --> 00:10:52,026 >> ახლა, იქ ერთი სხვა რამ მინდა აღვნიშნო, 214 00:10:52,026 --> 00:10:54,650 მასივების, რომ შეიძლება ცოტა ცოტა სახიფათო პირველად 215 00:10:54,650 --> 00:10:55,990 მათთან მუშაობა. 216 00:10:55,990 --> 00:10:59,860 ჩვენ განვიხილეთ ვიდეო ცვლადი ფარგლებს, 217 00:10:59,860 --> 00:11:04,940 რომ ყველაზე ცვლადები C, როცა რეკავთ მათ ფუნქციებს, მათ მიერ მიღებულ ღირებულება. 218 00:11:04,940 --> 00:11:08,620 გახსოვთ, რას ნიშნავს გაივლის რაღაც მნიშვნელობა? 219 00:11:08,620 --> 00:11:12,570 ეს იმას ნიშნავს, თქვენ მიღების ასლი ცვლადი, რომელიც მიმდინარეობს გადავიდა. 220 00:11:12,570 --> 00:11:16,290 Callee ფუნქცია, ფუნქცია რომ მიმღები ცვლადი, 221 00:11:16,290 --> 00:11:17,730 არ მიიღოთ ცვლადი თავად. 222 00:11:17,730 --> 00:11:20,850 იგი იღებს თავისი ადგილობრივი ასლი მუშაობა. 223 00:11:20,850 --> 00:11:24,070 >> მასივები, რა თქმა უნდა, ამის გაკეთება არ იცავენ ამ წესს. 224 00:11:24,070 --> 00:11:27,600 პირიქით, რაც ჩვენ მოვუწოდებთ ამ არის ავლით მითითება. 225 00:11:27,600 --> 00:11:31,360 Callee რეალურად ამჯამად მიიღოს მასივი. 226 00:11:31,360 --> 00:11:34,207 ეს არ მიიღოს მისი ადგილობრივი ასლი. 227 00:11:34,207 --> 00:11:36,040 და თუ ფიქრობთ, ის, რომ ეს აზრი. 228 00:11:36,040 --> 00:11:39,750 თუ კოლექტორები ნამდვილად დიდი, იმდენად დიდი დრო და ძალისხმევა, 229 00:11:39,750 --> 00:11:44,470 რათა ასლი მასივი 100 ან 1000 ან 10,000 ელემენტები, 230 00:11:44,470 --> 00:11:48,290 ის, რომ არ ღირს ამისთვის ფუნქციონირებს მიიღოს ასლი, 231 00:11:48,290 --> 00:11:51,037 დაკავდით მუშაობა, და მაშინ უბრალოდ გაკეთდეს ასლი; 232 00:11:51,037 --> 00:11:53,120 ეს არ უნდა ეს ჩამოკიდებული გარშემო აღარ. 233 00:11:53,120 --> 00:11:54,710 >> იმის გამო, რომ კოლექტორები ზოგიერთი bulky და რთული, 234 00:11:54,710 --> 00:11:56,001 ჩვენ უბრალოდ გაივლის მათ მიერ მინიშნება. 235 00:11:56,001 --> 00:12:01,210 ჩვენ უბრალოდ ენდობა, რომ ფუნქცია უნდა, არ დაარღვიოს არაფერი. 236 00:12:01,210 --> 00:12:03,010 ასე რომ, ეს რეალურად მიიღოს მასივი. 237 00:12:03,010 --> 00:12:05,290 იგი არ მიიღებს საკუთარი ადგილობრივი ასლი. 238 00:12:05,290 --> 00:12:07,170 >> ასე რომ, რას ნიშნავს ეს, მაშინ, როდესაც Callee 239 00:12:07,170 --> 00:12:08,970 მანიპულირებს ელემენტების მასივი? 240 00:12:08,970 --> 00:12:10,780 რა ხდება? 241 00:12:10,780 --> 00:12:13,210 ახლა, ჩვენ სიპრიალის მეტი რატომ სწორედ ამ 242 00:12:13,210 --> 00:12:15,320 ხდება, რატომ კოლექტორები გავიდა მითითებით 243 00:12:15,320 --> 00:12:17,810 და ყველაფერი მიერ მიღებულ ღირებულება. 244 00:12:17,810 --> 00:12:20,470 მაგრამ მე გპირდებით, რომ ჩვენ დაბრუნდნენ და მოგაწვდით პასუხი 245 00:12:20,470 --> 00:12:23,750 ამ მოგვიანებით ვიდეო. 246 00:12:23,750 --> 00:12:28,110 >> აი კიდევ ერთი სავარჯიშო თქვენ სანამ ჩვენ გადაიტანოთ up რამ მასივები. 247 00:12:28,110 --> 00:12:31,400 მტევნის კოდი აქ, რომ არ არის განსაკუთრებით კარგი სტილი, 248 00:12:31,400 --> 00:12:33,400 უბრალოდ მე გავაკეთებ, რომ გაფრთხილება. 249 00:12:33,400 --> 00:12:36,660 არ არის კომენტარი აქ, რაც საკმაოდ ცუდი ფორმა. 250 00:12:36,660 --> 00:12:39,750 მაგრამ ეს მხოლოდ იმიტომ, რომ მე მინდოდა, რომ იყოს შეუძლია მოერგოს ყველაფერი ეკრანზე. 251 00:12:39,750 --> 00:12:44,360 >> ზედა, თქვენ ხედავთ, რომ მე მაქვს ორი ფუნქციის დეკლარაციების კომპლექტი მასივი 252 00:12:44,360 --> 00:12:45,820 და მითითებული int. 253 00:12:45,820 --> 00:12:49,680 Set მასივი აშკარად იღებს მასივი ოთხი რიცხვებით როგორც მისი შეყვანის. 254 00:12:49,680 --> 00:12:52,767 და მითითებული int აშკარად იღებს ერთი რიცხვი, როგორც მისი შეყვანა. 255 00:12:52,767 --> 00:12:54,350 მაგრამ ორივე არ აქვს გამომავალი. 256 00:12:54,350 --> 00:12:57,689 გამომავალი, დაბრუნების ტიპი, თითოეული ბათილია. 257 00:12:57,689 --> 00:12:59,480 მთავარი, ჩვენ გვაქვს რამდენიმე ხაზი კოდი. 258 00:12:59,480 --> 00:13:02,730 ჩვენ განაცხადოს რიცხვი ცვლადი მოუწოდა და მივანიჭოთ მას ღირებულება 10. 259 00:13:02,730 --> 00:13:07,080 ჩვენ ვაცხადებთ მასივი ოთხი მთელი რიცხვი მოუწოდა B და მივანიჭოთ ელემენტები 0, 1, 260 00:13:07,080 --> 00:13:08,730 2 და 3, შესაბამისად. 261 00:13:08,730 --> 00:13:12,190 მაშინ, ჩვენ გვაქვს ზარი მითითებული int და ზარის შექმნას მასივი. 262 00:13:12,190 --> 00:13:15,910 განმარტებები კომპლექტი მასივი და კომპლექტი int არის ქვემოთ, ბოლოში. 263 00:13:15,910 --> 00:13:17,640 >> ასე რომ, კიდევ ერთხელ, მე გკითხოთ კითხვაზე. 264 00:13:17,640 --> 00:13:20,770 რა ხდება დაბეჭდილი out აქ ბოლოს მთავარი? 265 00:13:20,770 --> 00:13:23,020 აქ არის ამონაწერი col. მე დაბეჭდვის ორი რიცხვებით. 266 00:13:23,020 --> 00:13:28,010 მე დაბეჭდვისას შინაარსი და შინაარსი B კვადრატული ფრჩხილი 0. 267 00:13:28,010 --> 00:13:29,880 პაუზის ვიდეო აქ და მიიღოს წუთი. 268 00:13:29,880 --> 00:13:35,482 შეგიძლიათ გაერკვნენ, რა არის ეს ფუნქცია ბეჭდვა ბოლოს? 269 00:13:35,482 --> 00:13:38,190 იმედია, თუ გახსოვთ, განსხვავება ავლით მნიშვნელობა 270 00:13:38,190 --> 00:13:41,680 და გავლის მიერ მინიშნება, ამ პრობლემა არ იყო ძალიან სახიფათო თქვენთვის. 271 00:13:41,680 --> 00:13:44,130 და პასუხი თქვენ, იპოვეს ეს. 272 00:13:44,130 --> 00:13:47,660 თუ თქვენ ნამდვილად არ ვიცი, როგორც რატომ, რომ იმ შემთხვევაში, მიიღოს მეორე, 273 00:13:47,660 --> 00:13:50,620 დაბრუნდეს, განიხილავს რა მე უბრალოდ განხილვის შესახებ ავლით კოლექტორები 274 00:13:50,620 --> 00:13:53,450 მინიშნება, წინააღმდეგ გავლის სხვა ცვლადები ღირებულება, 275 00:13:53,450 --> 00:13:56,680 და იმედია, რომ თქვენ, რათა ცოტა მეტი აზრი. 276 00:13:56,680 --> 00:13:59,760 >> მე Doug Lloyd, და ეს არის CS50. 277 00:13:59,760 --> 00:14:01,467