1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [მუსიკის დაკვრა] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 დევიდ ჯ Malan: ყველა უფლება. 5 00:00:12,660 --> 00:00:15,590 ეს არის CS50, და ეს არის დაწყების კვირაში ორი. 6 00:00:15,590 --> 00:00:19,120 ასე რომ, მოდით, დავიწყოთ დღეს შეცდომა. 7 00:00:19,120 --> 00:00:20,974 Bug, რა თქმა უნდა, შეცდომა პროგრამა, 8 00:00:20,974 --> 00:00:22,890 და თქვენ მიიღებთ ძალიან იცნობს ამ კონცეფცია 9 00:00:22,890 --> 00:00:26,050 თუ თქვენ არ პროგრამირდება ადრე. pset0 და ახლა pset1. 10 00:00:26,050 --> 00:00:29,280 მაგრამ მოდით განიხილავს რაიმე პატარა, მარტივი პირველი. 11 00:00:29,280 --> 00:00:32,189 ამ პროგრამის, რომ მე ესროლა ერთად წინასწარ, 12 00:00:32,189 --> 00:00:37,280 მე და აცხადებენ, რომ ეს უნდა ბეჭდვა 10 ვარსკვლავი ეკრანზე გამოყენებით printf, 13 00:00:37,280 --> 00:00:41,020 მაგრამ ეს, როგორც ჩანს, buggy რამდენიმე გზა. 14 00:00:41,020 --> 00:00:45,370 >> იმის გათვალისწინებით, რომ დაზუსტება, ეს უნდა ბეჭდვა 10 ვარსკვლავი, 15 00:00:45,370 --> 00:00:50,230 მაგრამ ეს არ ჩანს, თუ რა რომ თქვენ აცხადებენ, რომ შეცდომის? 16 00:00:50,230 --> 00:00:52,004 ჰო? 17 00:00:52,004 --> 00:00:54,420 ასე რომ, ეს off ერთი შეცდომა, და რას ნიშნავს რომ? 18 00:00:54,420 --> 00:01:00,991 19 00:01:00,991 --> 00:01:01,490 OK. 20 00:01:01,490 --> 00:01:09,820 21 00:01:09,820 --> 00:01:10,410 შესანიშნავი. 22 00:01:10,410 --> 00:01:13,930 ასე რომ, ჩვენ მითითებული დაიწყოს ღირებულება ნულს i, 23 00:01:13,930 --> 00:01:18,399 და ჩვენ მითითებული n ღირებულება 10, მაგრამ ჩვენ გამოიყენება ნაკლები ან ტოლია. 24 00:01:18,399 --> 00:01:21,190 და მიზეზი, რომ ეს არის ორი გმირები და არა მხოლოდ ერთი სიმბოლო, 25 00:01:21,190 --> 00:01:22,630 ისევე როგორც მათემატიკის წიგნი, არის, რომ თქვენ არ გაქვთ 26 00:01:22,630 --> 00:01:24,880 გზა გამოხატავს ერთი ხასიათი ექვივალენტი. 27 00:01:24,880 --> 00:01:28,450 >> ასე რომ, რაც იმას ნიშნავს, ნაკლები, მაგრამ თუ დაიწყება დათვლის დროს ნულოვანი, 28 00:01:28,450 --> 00:01:31,690 მაგრამ იმედი ყველა გზა მეშვეობით და შეადგენს 10, 29 00:01:31,690 --> 00:01:34,170 თქვენ, რა თქმა უნდა აპირებენ იმედი 11 რამ შეადგენს. 30 00:01:34,170 --> 00:01:35,900 და ასე რომ თქვენ აპირებს ბეჭდვა 11 ვარსკვლავი. 31 00:01:35,900 --> 00:01:37,990 რა შეიძლება იყოს სარემონტო, ამ? 32 00:01:37,990 --> 00:01:39,970 ჰო? 33 00:01:39,970 --> 00:01:43,980 >> ასე რომ, უბრალოდ შეცვალოს ნაკლები ან ტოლია უბრალოდ იყოს ნაკლები, 34 00:01:43,980 --> 00:01:46,250 და იქ, მე პრეტენზია, ალბათ, სხვა გამოსავალი, ძალიან. 35 00:01:46,250 --> 00:01:47,210 რა შეიძლება დანარჩენი თქვენ? 36 00:01:47,210 --> 00:01:48,590 ჰო? 37 00:01:48,590 --> 00:01:53,660 >> ასე რომ დავიწყოთ რითაც მას 1 და დატოვება ნაკლები ან ტოლია. 38 00:01:53,660 --> 00:01:56,187 და მე გულწრფელად აცხადებენ ის ფაქტი, რომ ტიპიური ადამიანის, 39 00:01:56,187 --> 00:01:57,770 ეს, ალბათ, უფრო მარტივია. 40 00:01:57,770 --> 00:02:00,280 დაიწყება დათვლის დროს 1 და იმედი მეშვეობით 10. 41 00:02:00,280 --> 00:02:01,690 არსებითად გავაკეთოთ, რას ნიშნავს. 42 00:02:01,690 --> 00:02:04,010 >> მაგრამ რეალობა არის პროგრამირების, როგორც ჩვენ ვნახეთ, 43 00:02:04,010 --> 00:02:07,598 კომპიუტერის მეცნიერები და პროგრამისტები საერთოდ არ დაიწყება დათვლის დროს ნულოვანი. 44 00:02:07,598 --> 00:02:09,389 და ისე, რომ ჯარიმა კიდევ თქვენ შეეგუება იგი. 45 00:02:09,389 --> 00:02:12,640 თქვენი მდგომარეობა ზოგადად იყოს რაღაც ნაკლები. 46 00:02:12,640 --> 00:02:14,910 ასე, უბრალოდ ლოგიკური შეცდომა, რომ ჩვენ შეგვიძლია ახლა 47 00:02:14,910 --> 00:02:17,990 დაფიქსირება და საბოლოოდ გადააკომპილეთ ამ და კიდევ მხოლოდ 10. 48 00:02:17,990 --> 00:02:19,610 >> ისევე როგორ ამ bug აქ? 49 00:02:19,610 --> 00:02:24,200 აქ, ერთხელ, მე ვამტკიცებ, რომ მე არ მაქვს მიზანი ბეჭდვა 10 stars-- 50 00:02:24,200 --> 00:02:28,140 თითო ხაზი ამ დროს, მაგრამ ეს არ. 51 00:02:28,140 --> 00:02:30,940 ადრე ჩვენ ვთავაზობთ რა სარემონტო არის, რას ნიშნავს ეს 52 00:02:30,940 --> 00:02:34,640 ბეჭდვა ვიზუალურად თუ მე კომპილაციის და აწარმოებს ამ პროგრამის ფიქრობთ? 53 00:02:34,640 --> 00:02:35,140 ჰო? 54 00:02:35,140 --> 00:02:38,360 55 00:02:38,360 --> 00:02:38,860 >> Star. 56 00:02:38,860 --> 00:02:41,690 ასე რომ ყველა ვარსკვლავს იგივე ხაზი არის ის, რაც მე გავიგე, 57 00:02:41,690 --> 00:02:43,391 და შემდეგ ახალი ხაზი ხასიათი. 58 00:02:43,391 --> 00:02:44,140 მოდით ვეცადოთ, რომ. 59 00:02:44,140 --> 00:02:48,710 ასე რომ buggy-1, შევა, და ვხედავ clang ბრძანება 60 00:02:48,710 --> 00:02:50,090 რომ ჩვენ ვისაუბრეთ ბოლო დროს. 61 00:02:50,090 --> 00:02:55,180 ./buggy-1, და მართლაც, რომ ყველა 10 ვარსკვლავი იგივე ხაზი, მიუხედავად იმისა, რომ აცხადებენ, 62 00:02:55,180 --> 00:02:58,690 ჩემი დაზუსტება მხოლოდ კომენტარი atop კოდი, რომელიც მე გაკეთებას აპირებს ერთ 63 00:02:58,690 --> 00:02:59,230 ონლაინ. 64 00:02:59,230 --> 00:03:00,580 მაგრამ ეს გამოიყურება უფლება. 65 00:03:00,580 --> 00:03:04,620 >> ახლა line 15 როგორც ჩანს მე ვარ ბეჭდვის ვარსკვლავი, და შემდეგ ხაზი 16 66 00:03:04,620 --> 00:03:06,620 ეს ჰგავს მე ბეჭდვა ახალი ხაზი ხასიათი, 67 00:03:06,620 --> 00:03:09,560 და ისინი ორივე indented ასე მე შიგნით მარყუჟის ნათლად. 68 00:03:09,560 --> 00:03:13,610 ასე რომ არ უნდა მე უნდა აკეთებს ვარსკვლავი, ახალი ხაზი, ვარსკვლავი, ახალი ხაზი, ვარსკვლავი, ახალი ხაზი? 69 00:03:13,610 --> 00:03:14,110 დიახ? 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> ჰო, განსხვავებით ენა მოსწონს Python, თუ თქვენ იცნობს, 72 00:03:21,240 --> 00:03:23,540 წანაცვლება არ მიუხედავად იმისა, რომ კომპიუტერი. 73 00:03:23,540 --> 00:03:25,280 ეს მხოლოდ მნიშვნელოვანია, რომ ადამიანის. 74 00:03:25,280 --> 00:03:29,860 ასე რომ, მაშინ აქ მე გამოიგონა ხაზები 15 და 16--, რომელიც გამოიყურება ლამაზი, 75 00:03:29,860 --> 00:03:31,330 მაგრამ კომპიუტერი არ აინტერესებს. 76 00:03:31,330 --> 00:03:34,640 კომპიუტერული ზრუნავს ფაქტობრივად, რომელსაც curly braces 77 00:03:34,640 --> 00:03:36,310 დაახლოებით ამ ხაზების კოდი. 78 00:03:36,310 --> 00:03:39,520 >> ისე, რომ ეს clear-- ისევე, როგორც Scratch--, რომ ეს ორი ხაზი კოდი 79 00:03:39,520 --> 00:03:40,450 უნდა იყოს შესრულებული. 80 00:03:40,450 --> 00:03:44,390 როგორც ერთი იმ ყვითელი Scratch თავსატეხი ცალი ისევ და ისევ და ისევ. 81 00:03:44,390 --> 00:03:50,920 >> ახლა თუ ხელახლა აწარმოებს ამ პროგრამა ./buggy-2-- Hm. 82 00:03:50,920 --> 00:03:51,770 მაქვს შეცდომა არის. 83 00:03:51,770 --> 00:03:54,212 რა მე უნდა დაგვავიწყდეს? 84 00:03:54,212 --> 00:03:55,420 ჰო, მე არ კომპილირება. 85 00:03:55,420 --> 00:03:56,740 ასე რომ buggy-2. 86 00:03:56,740 --> 00:03:59,840 ასეთი ფაილი რადგან მე არ რეალურად ადგენენ მეორე ვერსია. 87 00:03:59,840 --> 00:04:04,860 ასე რომ, ახლა საინტერესო გამოუცხადებელი ცვლადი არა 2. 88 00:04:04,860 --> 00:04:05,510 ვაკეთებთ 1. 89 00:04:05,510 --> 00:04:11,050 რათა buggy-1-- ./buggy-1-- და ახლა თითოეული მათგანი ერთსა და იმავე ხაზზე. 90 00:04:11,050 --> 00:04:13,880 >> ახლა არ არის გამონაკლისი ეს უნდა სარჩელი აფეთქდა 91 00:04:13,880 --> 00:04:15,520 რომ თქვენ უნდა ამ Curly braces. 92 00:04:15,520 --> 00:04:20,160 როდესაც სინამდვილეში ეს OK--, თუ თქვენ შენიშნა ნაწილში ან textbooks-- 93 00:04:20,160 --> 00:04:22,130 რომ გამომრჩეს Curly braces? 94 00:04:22,130 --> 00:04:22,630 ჰო? 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> ზუსტად. 97 00:04:26,870 --> 00:04:28,940 როდესაც არსებობს მხოლოდ ერთი ხაზი კოდი, რომ თქვენ 98 00:04:28,940 --> 00:04:32,830 მინდა, რომ იყოს დაკავშირებული loop, როგორც ჩვენი პირველი მაგალითი. 99 00:04:32,830 --> 00:04:36,380 ეს სავსებით ლეგიტიმური რომ გამომრჩეს Curly braces 100 00:04:36,380 --> 00:04:40,310 ისევე როგორც ერთგვარი ფონდის საწყისი შემდგენელი თქვენ. 101 00:04:40,310 --> 00:04:40,810 ჰო? 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 კარგი კითხვაა. 104 00:04:43,930 --> 00:04:45,500 რომ ეს ჩაითვალოს სტილი შეცდომა? 105 00:04:45,500 --> 00:04:49,340 ჩვენ გვინდა promote-- როგორც CS50 სტილის სახელმძღვანელო, URL, რომელიც 106 00:04:49,340 --> 00:04:51,926 არის pset1--, რომ ყოველთვის გამოყენება Curly braces. 107 00:04:51,926 --> 00:04:53,550 რა თქმა უნდა, თუ თქვენ ახალი პროგრამირების. 108 00:04:53,550 --> 00:04:56,800 რეალობა ის არის, რომ ჩვენ არა ვართ აპირებს აუკრძალოს თქვენ 109 00:04:56,800 --> 00:04:58,680 აკეთებს ეს კომფორტული. 110 00:04:58,680 --> 00:05:00,846 მაგრამ თუ თქვენ მხოლოდ მიღების შევიდა swing რამ, 111 00:05:00,846 --> 00:05:04,020 აბსოლუტურად უბრალოდ ვიყენებთ curly braces სანამ არ მიიღებთ HANG იგი. 112 00:05:04,020 --> 00:05:04,640 კარგი კითხვაა. 113 00:05:04,640 --> 00:05:05,320 >> ყველა უფლება. 114 00:05:05,320 --> 00:05:07,660 ასე რომ მაშინ იყო შეცდომა. 115 00:05:07,660 --> 00:05:09,190 მაინც რაღაც საკმაოდ მარტივია. 116 00:05:09,190 --> 00:05:11,260 მაგრამ თქვენ ალბათ ფიქრობთ, ეს საკმაოდ rudimentary, არა? 117 00:05:11,260 --> 00:05:13,635 ეს არის ერთგვარი პირველი კვირის ეძებს ენა 118 00:05:13,635 --> 00:05:14,890 როგორიცაა, თქვენი შეცდომები მასში. 119 00:05:14,890 --> 00:05:17,250 მაგრამ რეალობა ეს არის სინამდვილეში წარმომადგენელი 120 00:05:17,250 --> 00:05:20,310 ზოგიერთი საკმაოდ საშიში პრობლემები , რომელიც შეიძლება წარმოიშვას რეალურ სამყაროში. 121 00:05:20,310 --> 00:05:23,530 >> ასე რომ, ზოგიერთ თქვენგანს შეიძლება გავიხსენოთ თუ თქვენ დაიცვას ტექნიკური სიახლეები, 122 00:05:23,530 --> 00:05:25,740 ან იქნებ კიდევ დაიჭირეს ქარი ამ წლის თებერვალში 123 00:05:25,740 --> 00:05:29,434 ამ ბოლო ერთი წლის განმავლობაში, რომ Apple ჰქონდა გააკეთა ცოტა შეცდომა ორივე iOS, 124 00:05:29,434 --> 00:05:31,350 ოპერაციული სისტემა ტელეფონის, და ასევე 125 00:05:31,350 --> 00:05:34,220 Mac OS ოპერაციული სისტემა მათი კომპიუტერები და ლაპტოპები. 126 00:05:34,220 --> 00:05:36,480 და დაინახა ასეთი სათაურები ამ. 127 00:05:36,480 --> 00:05:41,120 და მას შემდეგ, Apple დაჰპირდნენ ამ bug, 128 00:05:41,120 --> 00:05:45,950 და ძალიან სწრაფად გააკეთა დაფიქსირება ის iOS, მაგრამ მაშინ საბოლოოდ დაფიქსირდა ის Mac OS 129 00:05:45,950 --> 00:05:46,810 ასევე. 130 00:05:46,810 --> 00:05:50,370 >> ახლა, არც ამ სათაურების მარტო ნამდვილად გამოვლენა, თუ რა ძირითადი პრობლემა იყო, 131 00:05:50,370 --> 00:05:55,640 მაგრამ ამ ხარვეზის საბოლოოდ შემცირდა ხარვეზის SSL, სოკეტების ფენის. 132 00:05:55,640 --> 00:05:57,390 და მოკლედ, ეს არის პროგრამული უზრუნველყოფა 133 00:05:57,390 --> 00:06:01,030 რომ ჩვენი ბრაუზერები და სხვა პროგრამული უზრუნველყოფა გამოიყენება, რა? 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> თუ ვთქვი, რომ SSL არის ჩართული, როდესაც თქვენ 136 00:06:06,860 --> 00:06:13,920 ეწვევა URL, რომელიც იწყება HTTPS, მერე რა შეიძლება SSL იყოს დაკავშირებული? 137 00:06:13,920 --> 00:06:14,580 შიფრაცია. 138 00:06:14,580 --> 00:06:16,470 ასე რომ, ჩვენ ვსაუბრობთ ამ დღეებში. 139 00:06:16,470 --> 00:06:18,750 შიფრაცია, ხელოვნების scrambling ინფორმაციას. 140 00:06:18,750 --> 00:06:22,200 >> მაგრამ ხანგრძლივი ამბავი მოკლედ, Apple შუალედში წინ დაუშვა შეცდომა 141 00:06:22,200 --> 00:06:25,970 მათი განხორციელების SSL, პროგრამული უზრუნველყოფა, რომელიც საბოლოოდ ახორციელებს 142 00:06:25,970 --> 00:06:30,120 მისამართები, როგორიცაა HTTPS ან მაქს კავშირები არსებობს ძალიან. 143 00:06:30,120 --> 00:06:32,850 შედეგად, რომელიც არის ის, რომ თქვენი კავშირები შესაძლოა 144 00:06:32,850 --> 00:06:33,920 მოიპოვა. 145 00:06:33,920 --> 00:06:37,130 და თქვენი კავშირები არ არის აუცილებელი, დაშიფრული 146 00:06:37,130 --> 00:06:40,350 თუ გვქონდა ცუდი ბიჭი შორის თქვენ და დანიშნულების ნახვა, რომლებიც 147 00:06:40,350 --> 00:06:42,170 იცოდა, თუ როგორ უნდა ისარგებლოს ამ. 148 00:06:42,170 --> 00:06:45,090 >> ახლა Apple საბოლოოდ გამოქვეყნდა დაფიქსირება ამ ბოლოს, 149 00:06:45,090 --> 00:06:46,920 და აღწერა მათი fix იყო ეს. 150 00:06:46,920 --> 00:06:49,878 უსაფრთხო ტრანსპორტი ვერ შეამოწმოს ნამდვილობა დაკავშირებით. 151 00:06:49,878 --> 00:06:52,920 საკითხი მიმართა მიერ აღდგენის დაკარგული დადასტურება ნაბიჯები. 152 00:06:52,920 --> 00:06:57,250 >> ასე რომ, ეს არის ძალიან მხრივ wavy ახსნა უბრალოდ ვამბობ, რომ ჩვენ ბრალია. 153 00:06:57,250 --> 00:07:00,920 არსებობს ფაქტიურად ერთი ხაზი კოდი, რომ იყო buggy 154 00:07:00,920 --> 00:07:05,130 მათი განხორციელების SSL და თუ თქვენ წავიდეთ ონლაინ და ძიება ამ 155 00:07:05,130 --> 00:07:07,210 თქვენ შეგიძლიათ რეალურად ორიგინალური წყარო კოდი. 156 00:07:07,210 --> 00:07:11,960 მაგალითად, ეს არის ეკრანზე გადაღებული მხოლოდ ნაწილი საკმაოდ დიდი ფაილი, 157 00:07:11,960 --> 00:07:15,965 მაგრამ ეს ფუნქცია აშკარად მოუწოდა SSL გადამოწმების ნიშანი სერვერზე გასაღები გაცვლა. 158 00:07:15,965 --> 00:07:17,840 და ეს ხდება რამოდენიმე არგუმენტები და საშუალებებით. 159 00:07:17,840 --> 00:07:20,298 და ჩვენ არ ვაპირებთ ფოკუსირება ძალიან ბევრი minutia არსებობს, 160 00:07:20,298 --> 00:07:24,390 მაგრამ თუ თქვენ ფოკუსირება კოდი შიგნით რომ უმაღლეს ფუნქცია მოდით 161 00:07:24,390 --> 00:07:25,590 მიუახლოვდით რომ. 162 00:07:25,590 --> 00:07:28,140 თქვენ ალბათ უკვე ეჭვი რა შეცდომა შეიძლება 163 00:07:28,140 --> 00:07:31,230 იქნება მაშინაც კი, თუ თქვენ არ ვიცი საბოლოო ჯამში, რაც თქვენ ეძებთ. 164 00:07:31,230 --> 00:07:35,924 არსებობს სახის ანომალია აქ, რა? 165 00:07:35,924 --> 00:07:38,940 >> ჰო, მე ნამდვილად არ მინდა სახე ორი goto ვერ. 166 00:07:38,940 --> 00:07:42,060 გულწრფელად ვამბობ, მე არ ვიცი, რა goto ვერ საშუალება, მაგრამ აქვთ ორი მათგანი 167 00:07:42,060 --> 00:07:42,810 უკან დაბრუნება. 168 00:07:42,810 --> 00:07:45,290 რომ მხოლოდ სახის rubs me ინტელექტუალურად არასწორი გზა, 169 00:07:45,290 --> 00:07:48,910 და მართლაც, თუ ჩვენ მიუახლოვდით მხოლოდ იმ ხაზები, ეს არის C. 170 00:07:48,910 --> 00:07:52,220 >> ასე, რომ ბევრი Apple კოდექსი თავისთავად დაწერილი C, 171 00:07:52,220 --> 00:07:55,780 როგორც ჩანს, მართლაც equivalent-- 172 00:07:55,780 --> 00:07:59,060 არ არის, რომ ლამაზია წანაცვლება ვერსია, მაგრამ თუ აღიარებთ თუ არა, 173 00:07:59,060 --> 00:08:02,560 რომ არ არსებობს curly braces, რა Apple ნამდვილად დაწერა კოდი, რომელიც გამოიყურება 174 00:08:02,560 --> 00:08:03,540 მოსწონს ეს. 175 00:08:03,540 --> 00:08:07,080 ასე რომ, მე zoomed out და მე ფიქსირებული წანაცვლება იმ გაგებით, 176 00:08:07,080 --> 00:08:10,690 იმ შემთხვევაში, თუ არ არსებობს curly აფრთხილებს, რომ მეორე goto ვერ, რომ არის ყვითელი 177 00:08:10,690 --> 00:08:12,500 აპირებს შეასრულოს არა აქვს მნიშვნელობა რა. 178 00:08:12,500 --> 00:08:15,540 ის არ ასოცირდება თუ მდგომარეობა ზემოთ. 179 00:08:15,540 --> 00:08:19,590 >> ისე კი, კიდევ ერთხელ, თუ თქვენ არ საკმაოდ მესმის რა ამ, შესაძლოა, 180 00:08:19,590 --> 00:08:23,230 ვაკეთებთ, ვიცით, რომ თითოეული ამ conditions-- თითოეულ ამ ხაზები 181 00:08:23,230 --> 00:08:26,180 არის ძალიან მნიშვნელოვანი ნაბიჯი, in გადამოწმების პროცესს 182 00:08:26,180 --> 00:08:28,350 თუ თქვენი მონაცემები, ფაქტობრივად, დაშიფრული. 183 00:08:28,350 --> 00:08:31,710 ასე რომ, skipping ერთი ასეთი ნაბიჯები, არ საუკეთესო იდეა. 184 00:08:31,710 --> 00:08:34,840 >> არამედ იმიტომ, რომ ჩვენ გვაქვს ეს მეორე goto ვერ ​​ყვითელი, 185 00:08:34,840 --> 00:08:36,840 და რადგან, როდესაც ჩვენ სახის ესთეტიურად 186 00:08:36,840 --> 00:08:40,480 გადატანა მარცხენა, სადაც იგი ლოგიკურად არის იმ მომენტში, რა 187 00:08:40,480 --> 00:08:43,230 ნიშნავს ეს ხაზი კოდი ქვემოთ რომ მეორე goto 188 00:08:43,230 --> 00:08:46,480 ვერ ვფიქრობ? 189 00:08:46,480 --> 00:08:48,860 ის ყოველთვის იქნება გამოტოვებენ. 190 00:08:48,860 --> 00:08:52,100 ასე gotos ზოგადად მიუღებელი იყო მიზეზების გამო, ჩვენ ნამდვილად არ წასვლას, 191 00:08:52,100 --> 00:08:54,940 და მართლაც CS50, ჩვენ, როგორც წესი, არ ასწავლოს ამ განცხადებას goto, 192 00:08:54,940 --> 00:08:58,130 მაგრამ შეგიძლიათ წარმოიდგინოთ, goto ვერ აზრი წასვლა ხტომა 193 00:08:58,130 --> 00:08:59,600 ზოგიერთი სხვა ნაწილი კოდი. 194 00:08:59,600 --> 00:09:03,120 >> სხვა სიტყვებით ნახტომი მეტი ამ ბოლო ხაზის საერთოდ, 195 00:09:03,120 --> 00:09:07,420 და ა.შ. შედეგად ეს სულელური მარტივი შეცდომა, რომ მხოლოდ 196 00:09:07,420 --> 00:09:10,330 შედეგი ალბათ ადამიანი, გადაწერა და pasting ერთი ძალიან 197 00:09:10,330 --> 00:09:14,150 ბევრჯერ იყო, რომ მთელი უსაფრთხოების iOS და Mac OS 198 00:09:14,150 --> 00:09:18,240 იყო დაუცველი თვალთვალი ცუდი ბიჭები საკმაოდ გარკვეული დრო. 199 00:09:18,240 --> 00:09:19,940 სანამ Apple საბოლოოდ დაფიქსირდა ამ. 200 00:09:19,940 --> 00:09:23,100 >> ახლა, თუ ზოგიერთი თქვენ რეალურად გაშვებული ძველი ვერსიები iOS და Mac OS, 201 00:09:23,100 --> 00:09:27,250 შეგიძლიათ წასვლა gotofail.com რომელიც არის ნახვა, რომ ვინმე შეიქმნა 202 00:09:27,250 --> 00:09:29,190 არსებითად განსაზღვრავს პროგრამულად 203 00:09:29,190 --> 00:09:30,980 თუ თქვენს კომპიუტერში ჯერ კიდევ დაუცველი. 204 00:09:30,980 --> 00:09:33,600 და გულწრფელად, თუ ეს, ეს ალბათ კარგი იდეა 205 00:09:33,600 --> 00:09:36,870 განახლება თქვენი ტელეფონი ან თქვენი Mac ამ ეტაპზე. 206 00:09:36,870 --> 00:09:40,120 მაგრამ, მხოლოდ პატივისცემის რამდენად მადლიერება ამ ქვედა დონის 207 00:09:40,120 --> 00:09:42,400 დეტალები და სამართლიანად მარტივი იდეები ნამდვილად 208 00:09:42,400 --> 00:09:44,590 გარდაქმნა გადაწყვეტილებები და პრობლემები, რომელიც 209 00:09:44,590 --> 00:09:47,320 affected-- ამ შემთხვევაში მილიონობით ადამიანი. 210 00:09:47,320 --> 00:09:49,107 >> ახლა სიტყვა ადმინისტრაციას. 211 00:09:49,107 --> 00:09:50,690 სექციაში დაიწყება მომავალი კვირა. 212 00:09:50,690 --> 00:09:53,360 თქვენ მიიღებთ ელ მიერ weekend შესახებ განყოფილებიანი, რომელსაც წერტილი 213 00:09:53,360 --> 00:09:55,290 resectioning პროცესი დაიწყება, თუ თქვენ 214 00:09:55,290 --> 00:09:56,998 მიხვდა, თქვენ ახლა აქვს ზოგიერთი ახალი კონფლიქტები. 215 00:09:56,998 --> 00:10:00,180 ასე რომ, ეს ხდება ყოველ წელს, და ჩვენ განთავსდება იმ დღეებში. 216 00:10:00,180 --> 00:10:02,430 >> საოფისე hours-- შენარჩუნება თვალის გრაფიკი აქ. 217 00:10:02,430 --> 00:10:05,100 ცვლის ცოტა ამ კვირაში, განსაკუთრებით დაწყების დრო 218 00:10:05,100 --> 00:10:08,180 და ადგილმდებარეობა, ასე რომ კონსულტაციები რომ ადრე სასაქონლო საათებში 219 00:10:08,180 --> 00:10:09,520 ნებისმიერი მომდევნო ოთხი ღამე. 220 00:10:09,520 --> 00:10:12,680 და ახლა სიტყვა შეფასებით, კერძოდ, როგორც თქვენ ჩაყვინთვის შევიდა პრობლემა 221 00:10:12,680 --> 00:10:14,350 ადგენს ერთი და მის ფარგლებს გარეთ. 222 00:10:14,350 --> 00:10:17,070 >> ასე რომ, per დაზუსტება, ეს ზოგადად 223 00:10:17,070 --> 00:10:20,360 ცულები ერთად, რომელიც ჩვენ შეაფასოს თქვენი სამუშაო. 224 00:10:20,360 --> 00:10:23,170 სფერო ეხება რა რამდენად თქვენი კოდი იარაღები 225 00:10:23,170 --> 00:10:25,690 თვისებები საჭირო ჩვენი დაზუსტება. 226 00:10:25,690 --> 00:10:28,290 სხვა სიტყვებით, თუ რამდენად ცალი კომპლექტი გააკეთა თქვენ bite off. 227 00:10:28,290 --> 00:10:30,440 ის, რომ თქვენ მესამედი, ამის ნახევარი, 100% იგი. 228 00:10:30,440 --> 00:10:33,000 მაშინაც კი, თუ ეს არ არის სწორი, რამდენად არ ცდილობენ? 229 00:10:33,000 --> 00:10:35,290 ასე რომ იღებს დონე ძალისხმევა და ოდენობით 230 00:10:35,290 --> 00:10:38,260 რომელიც თქვენ ცოტა off პრობლემა კომპლექტი პრობლემები. 231 00:10:38,260 --> 00:10:40,690 >> Correctness-- ამ ერთი, რამდენად არის თქვენი კოდი 232 00:10:40,690 --> 00:10:43,150 შეესაბამება ჩვენი სპეციფიკაციები და უფასო შეცდომები. 233 00:10:43,150 --> 00:10:44,770 ასე რომ არ მუშაობს სწორად? 234 00:10:44,770 --> 00:10:48,700 თუ ვაძლევთ მას გარკვეული შეყვანის, იგი მოგვცეს გამომავალი რომ უნდა ველოდოთ? 235 00:10:48,700 --> 00:10:52,570 Design-- ახლა ეს არის პირველი განსაკუთრებით ხარისხობრივი პირობა, 236 00:10:52,570 --> 00:10:56,180 ან პირობა, რომ საჭიროებს ადამიანის გადაწყვეტილება. 237 00:10:56,180 --> 00:10:59,690 და მართლაც, სწორედ ამიტომ ჩვენ გვყავს პერსონალი ამდენი სწავლების პრაქტიკის და რა თქმა უნდა, 238 00:10:59,690 --> 00:11:00,350 თანაშემწეები. 239 00:11:00,350 --> 00:11:03,480 რამდენად თქვენი კოდი წერილობითი კარგად? 240 00:11:03,480 --> 00:11:05,810 >> და ისევ, ეს არის ძალიან თვისებრივი შეფასება 241 00:11:05,810 --> 00:11:09,100 რომელიც თქვენთან ერთად bi-directionally კვირის მოდის. 242 00:11:09,100 --> 00:11:12,060 ასე რომ, როდესაც თქვენ არ მხოლოდ რიცხვითი ქულა, არამედ 243 00:11:12,060 --> 00:11:16,682 წერილობითი ქულა, ანუ აკრეფილი კავშირი, ან წერილობითი კავშირი ინგლისური სიტყვა. 244 00:11:16,682 --> 00:11:19,640 ის, რაც ჩვენ ვიყენებთ მართოს მიმართ რეალურად წერა უკეთესი კოდი. 245 00:11:19,640 --> 00:11:23,320 და ლექცია და მე, ჩვენ შევეცდებით უნდა აღვნიშნო, აღმოჩნდა, როგორც ხშირად, როგორც ჩვენ can-- 246 00:11:23,320 --> 00:11:26,420 რას აკეთებს პროგრამა არა მარტო სწორი და ფუნქციურად კარგი, 247 00:11:26,420 --> 00:11:28,200 არამედ კარგად შემუშავებული. 248 00:11:28,200 --> 00:11:31,850 ყველაზე ეფექტური შეიძლება იყოს, ან მაშინაც კი, ყველაზე ლამაზი ეს შეიძლება იყოს. 249 00:11:31,850 --> 00:11:33,100 >> რომელსაც მივყავართ სტილი. 250 00:11:33,100 --> 00:11:36,876 სტილი საბოლოოდ არის ესთეტიკური გადაწყვეტილება. 251 00:11:36,876 --> 00:11:38,750 არ აირჩიოთ კარგი სახელები თქვენი ცვლადები? 252 00:11:38,750 --> 00:11:40,330 არ თქვენ indented თქვენი კოდი სწორად? 253 00:11:40,330 --> 00:11:44,010 გამოიყურება კარგი, და, შესაბამისად, არის ადვილი სხვა ადამიანის 254 00:11:44,010 --> 00:11:46,550 წავიკითხე თქვენი შესაბამისი მისი სისწორე. 255 00:11:46,550 --> 00:11:50,300 >> ახლა ზოგადად პოსტი სილაბუსი, ჩვენ ანგარიშით, ეს ყველაფერი ხუთბალიან შკალაზე. 256 00:11:50,300 --> 00:11:53,640 და ნება მომეცით hammer საწყისი წერტილი რომ სამი არის მართლაც კარგი იყო. 257 00:11:53,640 --> 00:11:55,550 ძალიან სწრაფად გააკეთოს ეგ დაიწყოს აკეთებს არითმეტიკული. 258 00:11:55,550 --> 00:11:58,133 როდესაც ისინი სამი ხუთ სისწორე ზოგიერთი pset 259 00:11:58,133 --> 00:12:02,040 და მიაჩნიათ რა, მე ვაპირებ 60% რომელიც არსებითად D ან E. 260 00:12:02,040 --> 00:12:03,980 >> ეს არ არის გზა ჩვენ ვფიქრობ, ამ ნომრებზე. 261 00:12:03,980 --> 00:12:06,880 სამი კარგია, და რა ვარაუდობს დასაწყისში 262 00:12:06,880 --> 00:12:09,820 ტერმინი არის, რომ თუ თქვენ მიღების რამოდენიმე three's-- შესაძლოა რამდენიმე 263 00:12:09,820 --> 00:12:12,540 ბაზრობები, რამდენიმე fours-- ან რამდენიმე twos, რამდენიმე fours-- 264 00:12:12,540 --> 00:12:13,748 რომ კარგი ადგილი უნდა დაიწყოს. 265 00:12:13,748 --> 00:12:16,320 ასე რომ, სანამ ჩვენ ვხედავთ აღმასვლაა დროთა განმავლობაში, 266 00:12:16,320 --> 00:12:18,540 თქვენ განსაკუთრებით კარგი ადგილი. 267 00:12:18,540 --> 00:12:20,752 >> ფორმულა ჩვენ ვიყენებთ წონა რამ არის არსებითად 268 00:12:20,752 --> 00:12:22,710 ეს პოსტი სილაბუსი, რაც მხოლოდ იმას ნიშნავს, რომ ჩვენ 269 00:12:22,710 --> 00:12:24,750 უფრო მეტი წონა სისწორე. 270 00:12:24,750 --> 00:12:27,930 იმიტომ რომ ძალიან ხშირად სისწორის რომელიც იღებს საუკეთესო დრო. 271 00:12:27,930 --> 00:12:28,760 მერწმუნეთ, ახლა. 272 00:12:28,760 --> 00:12:31,190 თქვენ find-- მინიმუმ ერთ pset--, რომ თქვენ 273 00:12:31,190 --> 00:12:36,790 დახარჯავს 90% თქვენი დრო მუშაობს 10% პრობლემა. 274 00:12:36,790 --> 00:12:39,320 >> და ყველაფერი სახის სამუშაოები გარდა ერთი ან ორი შეცდომები, 275 00:12:39,320 --> 00:12:41,570 და ეს ის შეცდომები, შენარჩუნება თქვენ გვიან ღამით. 276 00:12:41,570 --> 00:12:43,380 ეს არის პირობა, რომ სახის გაქცევა თქვენ. 277 00:12:43,380 --> 00:12:45,560 მაგრამ შემდეგ საძილე მას, ან დამსწრე ოფისში საათი 278 00:12:45,560 --> 00:12:48,844 ან სვამს კითხვებს შემოსული, როდესაც თქვენ, რომ 100% გოლი, 279 00:12:48,844 --> 00:12:50,760 და სწორედ ამიტომ წონა სისწორის საუკეთესო. 280 00:12:50,760 --> 00:12:54,102 დიზაინი ცოტა ნაკლები, და სტილი ცოტა ნაკლებია. 281 00:12:54,102 --> 00:12:56,060 მაგრამ შენარჩუნება mind-- სტილი ალბათ იოლი 282 00:12:56,060 --> 00:12:58,890 ეს იმისათვის, რომ bite off თითო სტილის სახელმძღვანელო. 283 00:12:58,890 --> 00:13:01,580 >> და ახლა, უფრო სერიოზული შენიშვნა აკადემიური პატიოსნება. 284 00:13:01,580 --> 00:13:05,000 CS50 აქვს სამწუხარო განსხვავება უმსხვილესი პროდიუსერი Ad Board 285 00:13:05,000 --> 00:13:07,330 შემთხვევები თითქმის ყოველ წელს ისტორიულად. 286 00:13:07,330 --> 00:13:11,012 ეს იმიტომ არა, სტუდენტები მოტყუებას CS50 რაიმე უფრო ვიდრე რომელიმე სხვა კლასი, 287 00:13:11,012 --> 00:13:13,720 არამედ იმიტომ, რომ ბუნების მუშაობა, ის ფაქტი, რომ ეს ელექტრონული, 288 00:13:13,720 --> 00:13:16,636 ის ფაქტი, რომ ჩვენ ვეძებთ, და ის ფაქტი, რომ ჩვენ ვართ კომპიუტერი მეცნიერები, 289 00:13:16,636 --> 00:13:20,570 შემიძლია ვთქვა, რომ ჩვენ, სამწუხაროდ, ძალიან კარგად გამოვლენის იგი. 290 00:13:20,570 --> 00:13:22,710 >> ასე რომ, რას ნიშნავს ეს რეალური თვალსაზრისით? 291 00:13:22,710 --> 00:13:24,820 ასე რომ, პოსტი სილაბუსი, რა თქმა უნდა, ფილოსოფია 292 00:13:24,820 --> 00:13:28,090 მართლაც, boil ქვემოთ იყოს გონივრული. 293 00:13:28,090 --> 00:13:31,684 არსებობს ამ ხაზს შორის აკეთებს ერთი ნამუშევარი საკუთარ 294 00:13:31,684 --> 00:13:34,100 და მიღების ცოტა გონივრული დახმარებით მეგობარს, 295 00:13:34,100 --> 00:13:38,020 და აშკარა აკეთებს, რომ მუშაობა თქვენი მეგობარს, ან გაგზავნის მას თქვენი კოდი 296 00:13:38,020 --> 00:13:41,080 ისე, რომ მას შეუძლია უბრალოდ მიიღოს ან სესხის out უფლება. 297 00:13:41,080 --> 00:13:43,580 და რომ კვეთს ხაზი ჩვენ შედგენილი კლასში. 298 00:13:43,580 --> 00:13:45,410 >> ვხედავ, სილაბუსი საბოლოო ჯამში ხაზები 299 00:13:45,410 --> 00:13:48,209 რომ ჩვენ მიაპყროს როგორც გონივრული და უაზრო ქცევა, 300 00:13:48,209 --> 00:13:50,000 მაგრამ ეს ნამდვილად არ boil ქვემოთ არსი 301 00:13:50,000 --> 00:13:53,980 თქვენი სამუშაო სჭირდება იყოს თქვენი ბოლომდე. 302 00:13:53,980 --> 00:13:56,230 ახლა რომ თქვა, არის ევრისტიკული. 303 00:13:56,230 --> 00:13:58,980 იმის გამო, რომ, როგორც თქვენ ალბათ imagine-- ოფისში საათი და ვიზუალური 304 00:13:58,980 --> 00:14:01,060 და ვიდეო ჩვენ ნაჩვენებია ამით far-- CS50 305 00:14:01,060 --> 00:14:04,530 მართლაც ნიშნავდა, რომ იყოს როგორც ერთობლივი და კოოპერატივის და როგორც სოციალური 306 00:14:04,530 --> 00:14:06,450 რაც შეიძლება. 307 00:14:06,450 --> 00:14:08,570 როგორც ერთობლივი, როგორც ეს არის მკაცრი. 308 00:14:08,570 --> 00:14:11,314 >> მაგრამ ეს განაცხადა, ევრისტიკული, როგორც თქვენ იხილეთ სილაბუსი, 309 00:14:11,314 --> 00:14:12,980 ის არის, რომ როდესაც თქვენ მქონე ზოგიერთი პრობლემა. 310 00:14:12,980 --> 00:14:16,470 თქვენ გაქვთ რამდენიმე bug თქვენს კოდი, რომ თქვენ არ შეგვიძლია, მიზანშეწონილია, რომ თქვენ 311 00:14:16,470 --> 00:14:18,039 რათა ნახოთ თქვენი კოდი ვინმეს. 312 00:14:18,039 --> 00:14:21,080 მეგობარი კი კლასში მეგობარს სხდომაზე შემდეგ თქვენ ოფისში საათის, 313 00:14:21,080 --> 00:14:22,680 ან თანამშრომლის. 314 00:14:22,680 --> 00:14:25,810 მაგრამ ისინი არ შეიძლება ნახოთ მათი კოდი, რომ თქვენ. 315 00:14:25,810 --> 00:14:27,710 >> სხვა სიტყვებით, პასუხი თქვენს question-- 316 00:14:27,710 --> 00:14:29,940 მე უნდა help-- არ oh, აქ არის ჩემი კოდი. 317 00:14:29,940 --> 00:14:32,440 შევხედოთ ამ და დავასკვნათ მისგან რას. 318 00:14:32,440 --> 00:14:34,580 ახლა, რა თქმა უნდა, არსებობს ისე ნათლად სათამაშო 319 00:14:34,580 --> 00:14:37,760 ეს სისტემა, რომლის დროსაც მე გაჩვენებთ ჩემი კოდი ადრე მქონე კითხვა. 320 00:14:37,760 --> 00:14:40,150 თქვენ მაჩვენოთ ჩემი თქვენი კოდი ადრე მქონე კითხვა. 321 00:14:40,150 --> 00:14:45,870 მაგრამ ვხედავ სილაბუსი ერთხელ finer დეტალები, სადაც ამ ხაზის. 322 00:14:45,870 --> 00:14:50,606 >> მხოლოდ ახლა ხატავს სურათზე და გაზიარება გამჭვირვალედ, რაც შეიძლება 323 00:14:50,606 --> 00:14:53,480 სადაც ჩვენ ვართ, უკანასკნელ წლებში, ეს არის ნომერი Ad Board შემთხვევაში 324 00:14:53,480 --> 00:14:56,260 რომ CS50 ზე მეტი ბოლო შვიდი წლის განმავლობაში. 325 00:14:56,260 --> 00:14:58,717 14 შემთხვევაში ამ უკანასკნელ შემოდგომაზე. 326 00:14:58,717 --> 00:15:01,300 თვალსაზრისით სტუდენტები ჩართული, ეს იყო 20 რაღაც უცნაური სტუდენტები 327 00:15:01,300 --> 00:15:02,490 გასულ შემოდგომაზე. 328 00:15:02,490 --> 00:15:05,670 იყო პიკი 33 სტუდენტები რამდენიმე წლის წინ. 329 00:15:05,670 --> 00:15:08,830 ბევრი მათგანი, სამწუხაროდ, აღარ აქ კამპუსში. 330 00:15:08,830 --> 00:15:13,100 >> სტუდენტები ჩართული როგორც პროცენტული კლასი ისტორიულად მერყეობდა 0% 331 00:15:13,100 --> 00:15:17,300 5.3%, რომელიც მხოლოდ იმის თქმა, ეს არის ყოველწლიურად გამოწვევა. 332 00:15:17,300 --> 00:15:20,390 და მიმართ, რომ საბოლოო ჯამში, რა ჩვენ გვინდა გადმოცემა, ერთი 333 00:15:20,390 --> 00:15:24,310 ჩვენ dd-- მხოლოდ FYI-- შევადარებთ სამართლიანობა იმ სტუდენტებს, რომლებმაც 334 00:15:24,310 --> 00:15:26,520 მიყვება ხაზი შესაბამისად. 335 00:15:26,520 --> 00:15:29,620 ჩვენ ამას ვაკეთებთ, შევადარებთ ყველა მიმდინარე წარდგინება წინააღმდეგ ყველა წარსული მისიები 336 00:15:29,620 --> 00:15:30,840 წარსულში მრავალი წლის განმავლობაში. 337 00:15:30,840 --> 00:15:33,620 >> ჩვენ ვიცით ძალიან, როგორ Google გარშემო და კოდი საცავებში 338 00:15:33,620 --> 00:15:36,360 ონლაინ სადისკუსიო ფორუმები ამჟამად, სამუშაო საიტები ონლაინ. 339 00:15:36,360 --> 00:15:41,580 თუ სტუდენტს შეუძლია იპოვოს ის, ჩვენ შეგვიძლია დაბეჯითებით ამას, როგორც ჩვენ, სამწუხაროდ, ამის გაკეთება. 340 00:15:41,580 --> 00:15:45,330 ასე რომ, რა დაინახავთ სილაბუსი თუმცა ეს სინანული სტატიაზე. 341 00:15:45,330 --> 00:15:47,500 მე, რა თქმა ვაფასებთ, და ჩვენ ყველა აქვს 342 00:15:47,500 --> 00:15:50,870 პერსონალი, რაც გაკეთდა, რა თქმა უნდა, როგორც , ან ეს თავად დროთა განმავლობაში, 343 00:15:50,870 --> 00:15:53,997 რა თქმა უნდა ვიცი, თუ რას ჰგავს, როდესაც ცხოვრებაში იღებს გზა, როდესაც თქვენ გაქვთ 344 00:15:53,997 --> 00:15:56,080 ზოგიერთი გვიან ღამით deadline-- არა მარტო ამ კლასში, 345 00:15:56,080 --> 00:15:58,660 მაგრამ another--, როდესაც თქვენ სრულიად ამოწურულია, ხაზი გაუსვა, 346 00:15:58,660 --> 00:16:00,659 აქვს მათდამი ნომერი სხვა რამ უნდა გააკეთოს. 347 00:16:00,659 --> 00:16:03,660 გააკეთე რაღაც მომენტში ცხოვრება, მართლაც ცუდი, ალბათ, გვიან 348 00:16:03,660 --> 00:16:04,620 ღამის გადაწყვეტილება. 349 00:16:04,620 --> 00:16:06,520 >> ასე რომ პოსტი სილაბუსი, არსებობს ამ სტატიაზე, 350 00:16:06,520 --> 00:16:10,629 ასეთი, რომ თუ 72 საათის განმავლობაში მიღების ზოგიერთი ცუდი გადაწყვეტილება, თქვენ ფლობდეს მდე 351 00:16:10,629 --> 00:16:12,670 და მივაწვდინოთ ჩემთვის და ერთი კურსის ხელმძღვანელები 352 00:16:12,670 --> 00:16:14,300 და გვექნება საუბარი. 353 00:16:14,300 --> 00:16:16,220 ჩვენ გაუმკლავდეს ყველაფერი იძულებით იმედები 354 00:16:16,220 --> 00:16:18,770 ეს ხდება უფრო სწავლების მომენტში ან ცხოვრების გაკვეთილი, 355 00:16:18,770 --> 00:16:22,120 და არა რაღაც განსაკუთრებით მკვეთრი ramifications 356 00:16:22,120 --> 00:16:24,570 როგორც თქვენ ალბათ ნახე ეს სქემები აქ. 357 00:16:24,570 --> 00:16:26,540 >> ასე რომ, ძალიან სერიოზული ტონი. 358 00:16:26,540 --> 00:16:29,960 მოდით შევჩერდეთ მხოლოდ რამდენიმე წამი შესვენება დაძაბულობა. 359 00:16:29,960 --> 00:16:34,442 >> [მუსიკის დაკვრა] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> დევიდ ჯ Malan: ყველა უფლება, ასე რომ, როგორ იყო, რომ segue? 362 00:17:20,250 --> 00:17:22,059 დღეს პირველადი თემები. 363 00:17:22,059 --> 00:17:23,859 რომელთაგან პირველი არის აბსტრაქცია. 364 00:17:23,859 --> 00:17:26,900 კიდევ ერთი, რაც უნდა იყოს წარმომადგენლობა მონაცემები, რომელიც გულწრფელად 365 00:17:26,900 --> 00:17:31,640 არის ძალიან მშრალი გზა ამბობდა როგორ შეგვიძლია წასვლა პრობლემა და აზროვნების 366 00:17:31,640 --> 00:17:33,250 პრობლემა? 367 00:17:33,250 --> 00:17:37,285 ასე რომ თქვენ ვნახეთ Scratch, და თქვენ ჩანს, ალბათ, უკვე pset1 დავუკავშირდეთ C 368 00:17:37,285 --> 00:17:39,930 რომ თქვენ არა მხოლოდ შეგიძლიათ გამოიყენოთ ფუნქციები, როგორიცაა printf, 369 00:17:39,930 --> 00:17:42,770 რომ სხვა ხალხი წლის წარსული დაწერა თქვენთვის. 370 00:17:42,770 --> 00:17:45,340 ასევე შეგიძლიათ დაწეროთ ფუნქციები. 371 00:17:45,340 --> 00:17:48,440 >> და მიუხედავად იმისა, რომ თქვენ შეიძლება არ აქვს გაკეთდეს ამ C და გულწრფელად in pset1 372 00:17:48,440 --> 00:17:51,866 თქვენ ნამდვილად არ უნდა დაწეროთ თქვენი საკუთარი ფუნქცია, რადგან problem-- 373 00:17:51,866 --> 00:17:53,990 ალბათ, daunting at პირველი glance-- დაინახავთ 374 00:17:53,990 --> 00:17:57,910 საბოლოოდ გადაიჭრება არ არის, რომ ბევრი ხაზები კოდი. 375 00:17:57,910 --> 00:18:01,140 მაგრამ რომ თქვა, იმ თვალსაზრისით, წერა თქვენი საკუთარი ფუნქცია, 376 00:18:01,140 --> 00:18:03,570 გააცნობიეროს, რომ C არ მისცეს თქვენ ამ შესაძლებლობებს. 377 00:18:03,570 --> 00:18:06,940 >> მე ვაპირებ წასვლა დღევანდელი კოდის, რომელიც ხელმისაწვდომია უკვე შემოსული, 378 00:18:06,940 --> 00:18:10,900 და მე ვაპირებ წავიდეთ წინ და გახსნა up პროგრამა მოუწოდა ფუნქცია 0.C, 379 00:18:10,900 --> 00:18:14,620 და ფუნქცია zero ჩვენ დავინახავთ, რამდენიმე რამ. 380 00:18:14,620 --> 00:18:19,160 პირველი ხაზები 18 გზით 23 არის ჩემი მთავარი ფუნქცია. 381 00:18:19,160 --> 00:18:22,414 და ახლა, რომ ჩვენ დაწყებული წაკითხული კოდი, რომელიც ჩვენ არ წერს on the fly, 382 00:18:22,414 --> 00:18:25,080 მაგრამ ნაცვლად მე დაწერილი წინასწარ ან, რომ თქვენ პრობლემა კომპლექტი 383 00:18:25,080 --> 00:18:27,910 შესაძლოა, მიიღოს მქონე დაწერილი წინასწარ. 384 00:18:27,910 --> 00:18:30,040 კარგი გზა, რათა დაიწყოს კითხულობს სხვისი კოდი 385 00:18:30,040 --> 00:18:31,400 გამოიყურება ძირითადი ფუნქცია. 386 00:18:31,400 --> 00:18:34,420 გაერკვნენ, სადაც რომ ჩანაწერი საქმე იმაშია, რომ გაშვებული პროგრამა, 387 00:18:34,420 --> 00:18:36,580 და შემდეგ ის ლოგიკურად იქიდან. 388 00:18:36,580 --> 00:18:40,190 >> ასე რომ, ეს პროგრამა აშკარად ბეჭდავს სახელი მოჰყვა მსხვილი ნაწლავის. 389 00:18:40,190 --> 00:18:42,490 ჩვენ მაშინ გამოიყენოს GetString CS50 ბიბლიოთეკა 390 00:18:42,490 --> 00:18:46,050 მიიღოს სიმებიანი, სიტყვა ან ფრაზა მომხმარებელს კლავიატურაზე. 391 00:18:46,050 --> 00:18:48,390 და მერე ეს რაც აქ PrintName. 392 00:18:48,390 --> 00:18:51,420 >> ახლა PrintName არ არის ფუნქცია, რომელიც გააჩნია C. 393 00:18:51,420 --> 00:18:52,970 ეს არ არის სტანდარტული io.h. 394 00:18:52,970 --> 00:18:55,570 ეს არ cs50.h. 395 00:18:55,570 --> 00:18:57,880 ეს საკმაოდ იგივე ფაილი. 396 00:18:57,880 --> 00:19:01,000 ყურადღება მიაქციეთ, თუ მე გადახვევა ქვემოთ bit-- ხაზები 25 to 27-- 397 00:19:01,000 --> 00:19:05,330 უბრალოდ საკმაოდ გზა კომენტირებისას თქვენი კოდი გამოყენებით ვარსკვლავი და დახრილ ხაზებს. 398 00:19:05,330 --> 00:19:07,320 ეს არის multi-line კომენტარი, და ეს მხოლოდ 399 00:19:07,320 --> 00:19:10,570 ჩემი აღწერილობა ლურჯი რა ეს ფუნქცია აქვს. 400 00:19:10,570 --> 00:19:14,530 >> იმის გამო, რომ ხაზები 28 გზით 31, მე დაწერილი სუპერ მარტივი ფუნქცია 401 00:19:14,530 --> 00:19:16,280 რომლის სახელიც PrintName. 402 00:19:16,280 --> 00:19:19,560 იგი იღებს, რამდენი არგუმენტები იტყვით? 403 00:19:19,560 --> 00:19:25,120 ასე რომ, ერთი არგუმენტი, რადგან იქ ერთი არგუმენტი ჩამოთვლილი შიგნით ფრჩხილებში. 404 00:19:25,120 --> 00:19:27,000 ტიპის, რომელიც სიმებიანი. 405 00:19:27,000 --> 00:19:30,240 რაც უნდა ითქვას, PrintName ჰგავს ეს შავი ყუთი 406 00:19:30,240 --> 00:19:32,910 ან ფუნქცია, რომელიც იღებს როგორც შეყვანის სიმებიანი. 407 00:19:32,910 --> 00:19:35,730 >> და სახელი, რომ String მოხერხებულად იქნება სახელი. 408 00:19:35,730 --> 00:19:37,840 არ S, არა N, მაგრამ სახელი. 409 00:19:37,840 --> 00:19:41,090 ასე რომ, რას PrintName გავაკეთოთ? 410 00:19:41,090 --> 00:19:42,210 ეს არის ლამაზი მარტივი. 411 00:19:42,210 --> 00:19:45,390 უბრალოდ, როგორც ერთი ხაზი კოდი printf, მაგრამ როგორც ჩანს ეს 412 00:19:45,390 --> 00:19:47,950 ბეჭდავს out "Hello", ასე და ასე. 413 00:19:47,950 --> 00:19:50,070 სადაც ასე და ასე მოდის არგუმენტი. 414 00:19:50,070 --> 00:19:52,300 >> ახლა ეს არ არის დიდი ინოვაცია აქ. 415 00:19:52,300 --> 00:19:56,710 მართლაც, მე მიღებული პროგრამა, რომელიც შეიძლება უკვე დაწერილი ერთი ხაზი კოდი 416 00:19:56,710 --> 00:20:00,190 აყენებს ამ აქ, და შეიცვალა მას რაღაც 417 00:20:00,190 --> 00:20:04,920 რომელიც მოიცავს დაახლოებით ექვსი ან შვიდი ან იმდენად ხაზების კოდი, ყველა გზა ქვემოთ აქ. 418 00:20:04,920 --> 00:20:08,190 >> მაგრამ პრაქტიკოსი პრინციპი ცნობილია, როგორც აბსტრაქცია. 419 00:20:08,190 --> 00:20:12,550 სახის encapsulating შიგნით ახალი ფუნქცია, რომელიც აქვს სახელი, და უკეთესი 420 00:20:12,550 --> 00:20:14,590 ჯერ კიდევ, რომ სახელი სიტყვასიტყვით ამბობს, თუ რას აკეთებს. 421 00:20:14,590 --> 00:20:16,880 ვგულისხმობ printf--, რომ არ განსაკუთრებით აღწერითი. 422 00:20:16,880 --> 00:20:18,932 თუ მინდა, რომ შევქმნათ თავსატეხი ცალი, ან თუ 423 00:20:18,932 --> 00:20:21,140 გვინდა, რომ შევქმნათ ფუნქცია ბეჭდავს რომ ვინმეს სახელი, 424 00:20:21,140 --> 00:20:23,230 სილამაზის ამით არის, რომ მე შეიძლება რეალურად 425 00:20:23,230 --> 00:20:27,170 მისცეს, რომ ფუნქციის სახელი , რომელიც ასახავს, ​​თუ რას აკეთებს. 426 00:20:27,170 --> 00:20:29,844 >> ახლა იგი იღებს შეყვანის რომ მე თვითნებურად მოუწოდა სახელი, 427 00:20:29,844 --> 00:20:32,760 მაგრამ ეს ძალიან შესანიშნავად აღწერითი ნაცვლად იმისა, რომ ცოტა მეტი 428 00:20:32,760 --> 00:20:36,140 generic როგორიცაა S. And ბათილად, ახლა, მხოლოდ იმას ნიშნავს, 429 00:20:36,140 --> 00:20:38,330 რომ ეს ფუნქცია არ ხელით უკან არაფერი. 430 00:20:38,330 --> 00:20:41,127 ეს იმას არ ნიშნავს, რომ GetString ფაქტიურად ხელები ჩემს უკან სიმებიანი 431 00:20:41,127 --> 00:20:43,960 ისე, როგორც ქაღალდი, თქვენი თანაკლასელები გასულ კვირას, 432 00:20:43,960 --> 00:20:45,990 არამედ, ეს უბრალოდ აქვს გვერდითი ეფექტი. 433 00:20:45,990 --> 00:20:48,080 იგი ბეჭდავს რაღაც ეკრანზე. 434 00:20:48,080 --> 00:20:53,880 >> ასე რომ, დღის ბოლომდე, თუ მე არ მიიღოს ფუნქცია 0, ./function-0, 435 00:20:53,880 --> 00:20:55,450 ჩვენ ვხედავთ, რომ იგი სთხოვს ჩემი სახელი. 436 00:20:55,450 --> 00:20:58,150 მე აკრიფოთ დავით, და ეს სახის ჩემი სახელი. 437 00:20:58,150 --> 00:21:01,080 თუ ამის გაკეთება კვლავ რობ ის აპირებს, რომ ვთქვათ "Hello, რობ". 438 00:21:01,080 --> 00:21:04,280 ასე რომ მარტივი იდეა, მაგრამ, ალბათ, განზოგადების ამ გონებრივად 439 00:21:04,280 --> 00:21:06,750 რომ როგორც თქვენი პროგრამების ცოტა უფრო რთული, 440 00:21:06,750 --> 00:21:10,290 და გსურთ დაწეროთ ბლოკი კოდი და შეატყობინეს, რომ code-- Invoke 441 00:21:10,290 --> 00:21:13,270 რომ code-- ზოგიერთი აღწერითი სახელი, როგორიცაა PrintName, 442 00:21:13,270 --> 00:21:15,600 C არ მივცემთ ჩვენს ამ შესაძლებლობებს. 443 00:21:15,600 --> 00:21:17,660 >> აქ არის კიდევ ერთი მარტივი მაგალითი. 444 00:21:17,660 --> 00:21:22,940 მაგალითად, თუ გახსნა ფაილის მოუწოდა return.c, 445 00:21:22,940 --> 00:21:24,270 შეამჩნია რა მე ვაკეთებ აქ. 446 00:21:24,270 --> 00:21:26,330 ყველაზე მეტად ეს მთავარი ფუნქცია printf. 447 00:21:26,330 --> 00:21:30,360 მე პირველად თვითნებურად ინიციალიზაცია ცვლადში x რომ ნომერი 2. 448 00:21:30,360 --> 00:21:34,110 მე მაშინ ამობეჭდოთ "x არის % I "გავლით ღირებულება x. 449 00:21:34,110 --> 00:21:35,500 ასე რომ, მე უბრალოდ ვამბობ, რა არის. 450 00:21:35,500 --> 00:21:37,208 >> ახლა მე უბრალოდ თამამად ამტკიცებენ, printf. 451 00:21:37,208 --> 00:21:42,050 მე cubing რომ ღირებულება x, და მე ამით მოუწოდებენ ფუნქცია 452 00:21:42,050 --> 00:21:45,590 მოუწოდა კუბი მიღება in x არგუმენტი, 453 00:21:45,590 --> 00:21:49,300 და შემდეგ გადარჩენა გამომავალი ცვლადი თავად x. 454 00:21:49,300 --> 00:21:51,340 ასე რომ, მე clobbering ღირებულება x. 455 00:21:51,340 --> 00:21:53,380 მე უმთავრესი ღირებულება x, რასაც 456 00:21:53,380 --> 00:21:56,510 შედეგი მოუწოდებს ამ კუბი ფუნქცია. 457 00:21:56,510 --> 00:21:59,530 და მერე უბრალოდ ამობეჭდოთ გარკვეული fluffy პერსონალის აქ ამბობს იმას, რაც გავაკეთე. 458 00:21:59,530 --> 00:22:01,600 >> მერე რა მაშინ არის cube? 459 00:22:01,600 --> 00:22:03,510 ყურადღება მიაქციეთ, რა ფუნდამენტურად განსხვავებული აქ. 460 00:22:03,510 --> 00:22:05,540 მე მოცემული ფუნქცია სახელი, როგორც ადრე. 461 00:22:05,540 --> 00:22:08,270 მე მითითებული სახელი არგუმენტი. 462 00:22:08,270 --> 00:22:11,650 ამ დროს იგი ე.წ. n ნაცვლად სახელი, მაგრამ მე ვერ ეძახით არაფერი მინდა. 463 00:22:11,650 --> 00:22:12,650 მაგრამ ეს არის სხვადასხვა. 464 00:22:12,650 --> 00:22:14,080 ეს რამ მარცხენა. 465 00:22:14,080 --> 00:22:16,290 ადრე ეს იყო ის, რაც სიტყვით? 466 00:22:16,290 --> 00:22:16,870 ბიჭები. 467 00:22:16,870 --> 00:22:18,580 ახლა აშკარად int. 468 00:22:18,580 --> 00:22:20,630 >> ასე რომ, რა ალბათ წართმევას? 469 00:22:20,630 --> 00:22:24,090 , ხოლო ბათილად ნიშნავს სახის დარჩენილი, რომ ეს იყო საქმე. 470 00:22:24,090 --> 00:22:25,970 PrintName დაბრუნდა არაფერი. 471 00:22:25,970 --> 00:22:27,942 ეს მოხდა რაღაც, მაგრამ ეს არ გადასცემს ჩემს უკან 472 00:22:27,942 --> 00:22:30,650 რაღაც რომ მე ვერ ჩაიცვი მარცხენა მხარეს თანაბარი ნიშანი 473 00:22:30,650 --> 00:22:32,460 ისევე, როგორც მე ვაკეთებ აქ on line 22. 474 00:22:32,460 --> 00:22:36,780 >> ასე რომ, თუ მე ვიტყვი, შევიდა on line 30, რა არის ეს, ალბათ, რაც გულისხმობს, 475 00:22:36,780 --> 00:22:38,610 იმაზე, თუ რა cube აკეთებს ჩემთვის? 476 00:22:38,610 --> 00:22:41,110 ჰო? 477 00:22:41,110 --> 00:22:42,310 ის დააბრუნებს რიცხვი. 478 00:22:42,310 --> 00:22:44,590 ასე რომ ხელები ჩემს უკან, რადგან მაგალითად, ქაღალდზე 479 00:22:44,590 --> 00:22:46,580 , რომელიც მას წერილობითი პასუხი. 480 00:22:46,580 --> 00:22:50,130 2 cubed, ან 3 cubed, ან 4 cubed-- რასაც მე მიიღო, 481 00:22:50,130 --> 00:22:51,540 და რა მე განახორციელოს ეს? 482 00:22:51,540 --> 00:22:54,810 ისევე, N ჯერ N ჯერ N აი როგორ შეიძლება კუბი ღირებულება. 483 00:22:54,810 --> 00:22:57,110 ასე რომ კიდევ ერთხელ, სუპერ მარტივი იდეა, მაგრამ საჩვენებელ 484 00:22:57,110 --> 00:23:00,100 ახლა როგორ შეგვიძლია ჩაწერის ფუნქცია რომ შეეძლოთ უკან დაბრუნება 485 00:23:00,100 --> 00:23:02,380 ღირებულებები, რომლებიც შეიძლება საინტერესო იყოს. 486 00:23:02,380 --> 00:23:05,740 >> მოდით შევხედოთ ერთი ბოლო მაგალითია აქ მოუწოდა ფუნქცია ერთი. 487 00:23:05,740 --> 00:23:08,530 ამ მაგალითში, იგი იწყებს მიიღოს უფრო მყარი. 488 00:23:08,530 --> 00:23:12,400 ასე რომ, ამ ფუნქციას ერთი, ეს პროგრამა ცნობა საბოლოოდ 489 00:23:12,400 --> 00:23:14,920 მოუწოდებს ფუნქცია მოუწოდა GetPositiveInt. 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt არ არის ფუნქცია CS50 ბიბლიოთეკა, 491 00:23:17,800 --> 00:23:20,400 მაგრამ ჩვენ გადავწყვიტეთ, რომ ჩვენ მინდა უნდა არსებობდეს. 492 00:23:20,400 --> 00:23:24,550 >> ასე რომ, თუ ჩვენ გადახვევა ქვემოთ შემდეგ ფაილი, შეამჩნევთ, თუ როგორ მივედი შესახებ ახორციელებს 493 00:23:24,550 --> 00:23:26,560 დადებითი int, და მე ამბობენ, რომ ეს უფრო მყარი 494 00:23:26,560 --> 00:23:28,992 იმიტომ, რომ ეს არის ღირსეული ნომერი ხაზების კოდი. 495 00:23:28,992 --> 00:23:30,700 ეს არ არის მხოლოდ სულელური პატარა სათამაშო პროგრამა. 496 00:23:30,700 --> 00:23:33,870 ის, ფაქტობრივად, მიიღო რაიმე შეცდომა შემოწმებისას და აკეთებს რაღაც უფრო სასარგებლო. 497 00:23:33,870 --> 00:23:38,470 >> ასე რომ, თუ თქვენ არ მინახავს walkthrough ვიდეო, რომ ჩვენ ჩართული pset1, 498 00:23:38,470 --> 00:23:42,350 ვიცით, რომ ამ ტიპის loop in C, იგივე სულისკვეთებით, 499 00:23:42,350 --> 00:23:44,270 რომ სახის რამ Scratch შეუძლია გააკეთოს. 500 00:23:44,270 --> 00:23:46,320 და ნუ ამბობს ამის გაკეთება. 501 00:23:46,320 --> 00:23:47,500 ბეჭდვა ამ. 502 00:23:47,500 --> 00:23:51,860 მაშინ წავიდეთ წინ და მიიღოს N-- კიდევ int და ჩაწეროთ იგი n, 503 00:23:51,860 --> 00:23:55,760 და აკეთეთ ეს კიდევ ერთხელ და ისევ და ერთხელ, იმდენად, რამდენადაც n ნაკლებია, ვიდრე ერთი. 504 00:23:55,760 --> 00:23:58,720 >> ასე რომ, ო იქნება არანაკლებ ერთი მხოლოდ იმ შემთხვევაში, თუ ადამიანის არ თანამშრომლობს. 505 00:23:58,720 --> 00:24:01,980 თუ იგი აკრეფის 0 ან -1 ან -50, 506 00:24:01,980 --> 00:24:04,790 ამ loop აპირებს შენარჩუნება შესრულებაში ისევ და ისევ. 507 00:24:04,790 --> 00:24:07,549 და საბოლოოდ შეამჩნია, I უბრალოდ დაბრუნების ღირებულება. 508 00:24:07,549 --> 00:24:09,590 ასე რომ, ახლა ჩვენ გვაქვს ფუნქცია რომ უკვე ლამაზი 509 00:24:09,590 --> 00:24:14,040 თუ CS50, რომ განახორციელებს CS50.h და CS50.c თქვენ, 510 00:24:14,040 --> 00:24:16,520 მაგრამ აქ ჩვენ ახლა განახორციელოს ამ თავს. 511 00:24:16,520 --> 00:24:19,230 >> მაგრამ ორი კომენტარები რამოდენიმე ძირითადი დეტალები. 512 00:24:19,230 --> 00:24:24,390 One-- რატომ ვაცხადებ int n, როგორ ფიქრობთ, on line 29 513 00:24:24,390 --> 00:24:27,139 ნაცვლად მხოლოდ აკეთებს ეს აქ, 514 00:24:27,139 --> 00:24:28,930 უფრო შეესაბამება რაც ჩვენ გავაკეთეთ გასულ კვირას? 515 00:24:28,930 --> 00:24:29,430 ჰო? 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 კარგი აზრის. 518 00:24:35,110 --> 00:24:37,080 ასე რომ, თუ ჩვენ დააყენოს ის აქ, ეს თითქოს ჩვენ 519 00:24:37,080 --> 00:24:39,110 შენარჩუნება გამოცხადების ეს ისევ და ისევ. 520 00:24:39,110 --> 00:24:42,000 რომ და თავისთავად არა პრობლემატური, თავისთავად, 521 00:24:42,000 --> 00:24:43,940 იმიტომ, რომ ჩვენ მხოლოდ უნდა ღირებულება, და შემდეგ 522 00:24:43,940 --> 00:24:45,330 ჩვენ ვაპირებთ, რომ მიიღოთ ახალი მაინც. 523 00:24:45,330 --> 00:24:45,940 მაგრამ კარგი აზრის. 524 00:24:45,940 --> 00:24:46,440 ჰო? 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> ახლოს. 527 00:24:53,330 --> 00:24:59,030 ასე რომ, იმიტომ, რომ მე განაცხადა N on ონლაინ 29 გარეთ მარყუჟის, 528 00:24:59,030 --> 00:25:01,390 ეს ხელმისაწვდომია მთელი მთელი ამ ფუნქციას. 529 00:25:01,390 --> 00:25:05,400 არა სხვა ფუნქციები, რადგან n კვლავ შიგნით ამ Curly 530 00:25:05,400 --> 00:25:06,470 braces აქ. 531 00:25:06,470 --> 00:25:07,940 So-- დარწმუნებული ვარ. 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> ზუსტად. 534 00:25:12,940 --> 00:25:14,356 ასე რომ, ეს კიდევ უფრო წერტილი. 535 00:25:14,356 --> 00:25:18,600 თუ ჩვენ ნაცვლად განაცხადა, n სწორედ აქ on line 32, 536 00:25:18,600 --> 00:25:22,340 ეს პრობლემატურია, რადგან ვხვდები სად სხვაგან მე უნდა მიუწვდომელი? 537 00:25:22,340 --> 00:25:25,620 On line 34, მარტივი წესი thumb არის 538 00:25:25,620 --> 00:25:30,060 რომ თქვენ შეგიძლიათ მხოლოდ გამოიყენოს ცვალებად შიგნით უახლესი Curly braces 539 00:25:30,060 --> 00:25:31,420 რომელშიც თქვენ გამოაცხადა. 540 00:25:31,420 --> 00:25:35,230 >> სამწუხაროდ, ხაზი 34 არის ერთი ხაზი ძალიან გვიან, 541 00:25:35,230 --> 00:25:38,560 იმიტომ, რომ მე უკვე დაიხურა Curly გაუწიოს on line 33 542 00:25:38,560 --> 00:25:41,220 რომელიც შეესაბამება Curly გაუწიოს on line 30. 543 00:25:41,220 --> 00:25:44,180 და ეს არის გზა რომ რომ ეს ცვლადი int არის scoped, 544 00:25:44,180 --> 00:25:46,970 ასე ვთქვათ, მხოლოდ შიგნით იმ Curly braces. 545 00:25:46,970 --> 00:25:48,910 ის უბრალოდ არ არსებობს გარეთ მათ. 546 00:25:48,910 --> 00:25:51,580 >> ასე რომ, რა თქმა უნდა, თუ ეს არასწორი, ნება მომეცით გადარჩენა კოდი 547 00:25:51,580 --> 00:25:53,530 როგორც is-- არასწორად დაწერილი. 548 00:25:53,530 --> 00:25:57,990 ნება მომეცით წავიდეთ წინ და მიიღოს ფუნქცია-1, და შეამჩნია შეცდომა. 549 00:25:57,990 --> 00:26:03,502 გამოყენება გამოუცხადებელ იდენტიფიკატორი n on line 35, რომელიც აქ არის. 550 00:26:03,502 --> 00:26:05,210 და თუ ჩვენ გადახვევა up შემდგომი, კიდევ ერთი. 551 00:26:05,210 --> 00:26:08,750 გამოყენება გამოუცხადებელ იდენტიფიკატორი n on line 34. 552 00:26:08,750 --> 00:26:11,200 >> ასე შემდგენელი, Clang, არის დაენახა, რომ ეს მხოლოდ 553 00:26:11,200 --> 00:26:13,720 არ არსებობს, მიუხედავად იმისა, ნათელია, რომ ეს არ არსებობს ვიზუალურად. 554 00:26:13,720 --> 00:26:16,090 ასე მარტივი სარემონტო აცხადებს იგი. 555 00:26:16,090 --> 00:26:18,790 >> ახლა ნება მომეცით გადახვევა ზედა ფაილი. 556 00:26:18,790 --> 00:26:21,080 რა jumps out at თქვენ, როგორც რომ ცოტა სხვადასხვა 557 00:26:21,080 --> 00:26:23,070 საწყისი პერსონალის ჩვენ შევხედეთ გასულ კვირას? 558 00:26:23,070 --> 00:26:26,990 არა მარტო მაქვს სახელი, არა მხოლოდ არ მაქვს მკვეთრი მოიცავს up ზედა, 559 00:26:26,990 --> 00:26:29,340 მე მაქვს რაღაც მე მოუწოდებს პროტოტიპი. 560 00:26:29,340 --> 00:26:36,100 ახლა რომ გამოიყურება საშინლად მსგავსი რა ჩვენ უბრალოდ დაინახა მომენტში წინ ხაზი 27. 561 00:26:36,100 --> 00:26:39,230 >> ასე რომ, მოდით ითქვას, განსხვავებული შეცდომა, რის გამოც მე ვაკეთებ ამ. 562 00:26:39,230 --> 00:26:42,050 ნება მომეცით წავიდეთ წინ და წაშლა ხაზი არსებობს. 563 00:26:42,050 --> 00:26:44,240 ასე რომ, ჩვენ ამის შესახებ არაფერი იციან პროტოტიპი. 564 00:26:44,240 --> 00:26:45,430 რიმეიკი ამ ფაილის. 565 00:26:45,430 --> 00:26:46,890 ფუნქციის ერთი. 566 00:26:46,890 --> 00:26:48,090 და ახლა, რა, ოთხი შეცდომები. 567 00:26:48,090 --> 00:26:50,220 მოდით გადახვევა up to პირველი. 568 00:26:50,220 --> 00:26:55,070 >> დაფარული დეკლარაცია ფუნქცია დადებითი int არასწორია წელს C99. 569 00:26:55,070 --> 00:26:57,780 C99 მხოლოდ იმას ნიშნავს, 1999 მობილური ენის 570 00:26:57,780 --> 00:26:59,710 C, რაც ჩვენ მართლაც გამოყენებით. 571 00:26:59,710 --> 00:27:01,050 ასე რომ, რას ნიშნავს ეს? 572 00:27:01,050 --> 00:27:05,250 ასევე, C და უფრო კონკრეტულად C compilers-- საკმაოდ dumb პროგრამები. 573 00:27:05,250 --> 00:27:07,420 იციან ის, რასაც თქვენ უთხრა მათ, და რომ 574 00:27:07,420 --> 00:27:08,960 რეალურად თემატური გასულ კვირას. 575 00:27:08,960 --> 00:27:12,910 >> პრობლემა ის არის, რომ თუ მე რეფორმების სახელი აქ, 576 00:27:12,910 --> 00:27:17,640 და მოვუწოდებ ფუნქცია მოუწოდა GetPositiveInt აქ ხაზი 20, 577 00:27:17,640 --> 00:27:22,520 რომ ფუნქცია ტექნიკურად არ არსებობს, სანამ შემდგენელი ხედავს ხაზი 27. 578 00:27:22,520 --> 00:27:25,450 სამწუხაროდ, შემდგენელი აკეთებს რამ ზედა, down, მარცხნივ, მარჯვნივ, 579 00:27:25,450 --> 00:27:29,580 ასე იმიტომ, რომ მას არ უნახავს განხორციელების GetPositiveInt, 580 00:27:29,580 --> 00:27:32,400 მაგრამ ის ხედავს თქვენ ცდილობთ გამოიყენოს იგი აქ, 581 00:27:32,400 --> 00:27:35,810 უბრალოდ აპირებს bail-- დაწეროთ თქვენ შეცდომა message-- ალბათ 582 00:27:35,810 --> 00:27:38,440 cryptic, და არა რეალურად კომპილაციის ფაილი. 583 00:27:38,440 --> 00:27:41,940 >> ასე რომ, ე.წ. პროტოტიპი up აქ არის მართლაც ზედმეტი. 584 00:27:41,940 --> 00:27:47,870 ფაქტიურად, მივედი ქვემოთ აქ და მე გადაწერილი და ჩავსვი ეს, და მე ამას აქ. 585 00:27:47,870 --> 00:27:51,020 ბათილად იქნება უფრო სწორი, ასე რომ ჩვენ სიტყვასიტყვით დააკოპირეთ და ჩასვით იგი ამ დროს. 586 00:27:51,020 --> 00:27:52,854 მე სიტყვასიტყვით გადაწერა და გაკრული იგი. 587 00:27:52,854 --> 00:27:54,270 მართლაც, ისევე როგორც, როგორიცაა პური crumb. 588 00:27:54,270 --> 00:27:56,260 >> პატარა ქალაქში შემდგენელი. 589 00:27:56,260 --> 00:27:58,860 მე არ ვიცი რა ეს იმას არ არის, მაგრამ მე პირობა დადო, რომ თქვენ 590 00:27:58,860 --> 00:28:00,260 ის, რომ იარსებებს საბოლოოდ. 591 00:28:00,260 --> 00:28:04,010 და ამიტომ ეს ხაზი in ონლაინ 16-- მთავრდება მძიმით. 592 00:28:04,010 --> 00:28:05,486 რომ გადაჭარბებული დიზაინი. 593 00:28:05,486 --> 00:28:05,986 დიახ? 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> თუ არ უკავშირებენ თქვენი ბიბლიოთეკა to the-- oh, კარგი კითხვა. 596 00:28:14,360 --> 00:28:17,350 Sharp შედის header ფაილი ჩანართებით. 597 00:28:17,350 --> 00:28:20,040 უნდა be-- უნდა თითქმის ყოველთვის იქნება ძალიან ზევით 598 00:28:20,040 --> 00:28:23,270 of ფაილის similar-- for ზუსტად იმავე მიზეზით, დიახ. 599 00:28:23,270 --> 00:28:26,430 იმის გამო, რომ სტანდარტი io.h ფაქტიურად ონლაინ 600 00:28:26,430 --> 00:28:30,560 მსგავსი, მაგრამ სიტყვა printf და მისი არგუმენტები და მისი დაბრუნების პირობა. 601 00:28:30,560 --> 00:28:33,310 და ასე აკეთებს მკვეთრი მოიცავს up აქ, რა თქვენ ფაქტიურად აკეთებს 602 00:28:33,310 --> 00:28:36,380 კოპირება და pasting შინაარსი სხვისი დაწერა up დაბრუნება. 603 00:28:36,380 --> 00:28:39,660 ამით cluing თქვენი კოდი უნდა ის ფაქტი, რომ იმ ფუნქციას, არ არსებობს. 604 00:28:39,660 --> 00:28:40,160 ჰო? 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> აბსოლუტურად. 607 00:28:48,260 --> 00:28:51,690 ასე რომ, ძალიან ჭკვიანი და სწორი გამოსავალი იქნება, იცით, რა? 608 00:28:51,690 --> 00:28:53,760 მე არ ვიცი, რა პროტოტიპი, მაგრამ მე ვიცი, 609 00:28:53,760 --> 00:28:56,390 თუ მე მესმის, რომ C არის მხოლოდ მუნჯები და გადააზრების ზემოდან. 610 00:28:56,390 --> 00:28:57,820 კარგად მოდით მივცეთ მას, რაც მას სურს. 611 00:28:57,820 --> 00:29:01,650 მოდით გაჭრა კოდი, ჩასვით up ზედა, და ახლა დააყენებს მთავარი ქვემოთ. 612 00:29:01,650 --> 00:29:03,470 ეს ძალიან მოაგვარებს. 613 00:29:03,470 --> 00:29:07,409 >> მაგრამ თქვენ შეიძლება ძალიან ადვილად ამუშავება სცენარი, რომელშიც უნდა მოვუწოდებთ B, 614 00:29:07,409 --> 00:29:10,075 და იქნებ B მოუწოდებს თავში ა ეს არის რაღაც მოუწოდა უკან, 615 00:29:10,075 --> 00:29:11,370 და ჩვენ დავბრუნდებით რომ. 616 00:29:11,370 --> 00:29:13,911 და შეიძლება იყოს ან არ იყოს კარგი რამ, მაგრამ თქვენ შეგიძლიათ ნამდვილად 617 00:29:13,911 --> 00:29:15,110 დაარღვიოს ეს გადაწყვეტა. 618 00:29:15,110 --> 00:29:17,690 >> და უფრო მეტიც, მე აცხადებენ, სტილისტურად, 619 00:29:17,690 --> 00:29:20,760 განსაკუთრებით მაშინ, როდესაც თქვენი პროგრამები გახდეს ეს ხანგრძლივი და ამ ხნის განმავლობაში, 620 00:29:20,760 --> 00:29:23,064 უბრალოდ სუპერ მოსახერხებელი იმისათვის, რომ მთავარ ზედა 621 00:29:23,064 --> 00:29:25,730 იმიტომ, რომ ეს არის, რაც ყველაზე პროგრამისტები აპირებს აინტერესებს. 622 00:29:25,730 --> 00:29:28,150 ასე რომ, ეს ცოტა სუფთა, სავარაუდოდ, ამის გზა 623 00:29:28,150 --> 00:29:30,380 მე თავდაპირველად ეს გააკეთა პროტოტიპი კი 624 00:29:30,380 --> 00:29:33,396 თუმცა ეს გამოიყურება პატარა ზედმეტი ერთი შეხედვით. 625 00:29:33,396 --> 00:29:33,895 ჰო? 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 უკაცრავად, ამბობენ, რომ ის louder? 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> თუ თქვენ გადახვიდეთ ადგილას განხორციელება და პროტოტიპი? 630 00:29:49,580 --> 00:29:51,270 ასე რომ, ეს კარგი კითხვაა. 631 00:29:51,270 --> 00:29:53,780 თუ თქვენ ხელახლა განაცხადოს ამ ქვემოთ აქ, ვნახოთ, რა მოხდება. 632 00:29:53,780 --> 00:29:55,530 ასე რომ, თუ მე ეს ქვემოთ აქ, რას ამბობდა. 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 ოჰ, უკაცრავად. 635 00:29:58,360 --> 00:29:58,859 Louder? 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 კიდევ უფრო ხმამაღლა ისმის. 638 00:30:04,011 --> 00:30:04,760 ოჰ, კარგი კითხვაა. 639 00:30:04,760 --> 00:30:05,860 რომ ეს ბათილად ცნობის ფუნქცია? 640 00:30:05,860 --> 00:30:08,901 მოგეხსენებათ, მას შემდეგ, რაც მთელი ამ წლების განმავლობაში, მე არასდროს არ დააყენა პროტოტიპი შემდეგ. 641 00:30:08,901 --> 00:30:13,810 ასე რომ, მოდით, რათა ფუნქცია 1 შემდეგ აკეთებს, რომ. 642 00:30:13,810 --> 00:30:15,279 >> [Muttering] 643 00:30:15,279 --> 00:30:16,320 დევიდ ჯ Malan: ოჰ, დაველოდოთ. 644 00:30:16,320 --> 00:30:17,944 ჩვენ ჯერ კიდევ გვაქვს იმისათვის, რომ ყველაფერი ზევით. 645 00:30:17,944 --> 00:30:21,400 ასე რომ, მოდით ეს აქ, თუ მე ვარ გაგება თქვენს კითხვას სწორად. 646 00:30:21,400 --> 00:30:24,700 მე აყენებს ყველაფერს, მათ შორის პროტოტიპი ზემოთ ძირითადი, 647 00:30:24,700 --> 00:30:28,180 მაგრამ მე აყენებს პროტოტიპი ქვემოთ განხორციელება. 648 00:30:28,180 --> 00:30:33,190 >> ასე რომ, თუ ერთი, მე მისაღებად უკან შეცდომა გამოუყენებელი ცვლადი n. 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 ოჰ, არსებობს. 651 00:30:37,860 --> 00:30:38,360 დიდი მადლობა. 652 00:30:38,360 --> 00:30:39,430 ვნახოთ, ჩვენ დავაღწიოთ ამ. 653 00:30:39,430 --> 00:30:41,304 რომ სხვადასხვა bug, მოდით იგნორირება, რომ. 654 00:30:41,304 --> 00:30:43,910 მოდით მართლაც სწრაფად რიმეიკი ამ. 655 00:30:43,910 --> 00:30:48,100 >> OK, ასე რომ მონაცემები არგუმენტი არ გამოიყენება სტრიქონში 656 00:30:48,100 --> 00:30:52,310 N-- oh, იმიტომ, რომ მე შეიცვალა ამ აქ. 657 00:30:52,310 --> 00:30:55,885 ყველა უფლება, ჩვენ ვიცით, რა პასუხი აპირებს, რომელთა მიზანია ყველა უფლება, აქ ჩვენ მივდივართ. 658 00:30:55,885 --> 00:31:00,560 Ah, მადლობა დადებითი. 659 00:31:00,560 --> 00:31:03,430 ყველა უფლება, მე დაფიქსირება ეს კოდი after-- იგნორირება ამ კონკრეტულ bug 660 00:31:03,430 --> 00:31:08,300 მას შემდეგ, რაც ამ was-- მუშაობს ის არის პასუხი. 661 00:31:08,300 --> 00:31:11,560 >> ასე რომ, ეს არ გადაწერა რა თქვენ გაკეთდეს. 662 00:31:11,560 --> 00:31:14,800 ეჭვი მაქვს, შემდგენელი დაწერილი ისე, 663 00:31:14,800 --> 00:31:18,420 ის, რომ იგნორირება თქვენი პროტოტიპი იმიტომ, რომ სხეულის, ასე ვთქვათ, 664 00:31:18,420 --> 00:31:20,922 ფუნქცია უკვე განხორციელდა უმაღლესი up. 665 00:31:20,922 --> 00:31:23,380 მე რეალურად კონსულტაციები სახელმძღვანელო შემდგენელი 666 00:31:23,380 --> 00:31:26,171 უნდა გვესმოდეს, თუ არსებობს რაიმე სხვა გავლენა, მაგრამ ერთი შეხედვით 667 00:31:26,171 --> 00:31:29,290 მხოლოდ ცდილობს და ექსპერიმენტებს, როგორც ჩანს, არ იმოქმედებს. 668 00:31:29,290 --> 00:31:30,730 კარგი კითხვაა. 669 00:31:30,730 --> 00:31:33,660 >> ასე რომ, მოდით გაყალბებას ელის ახლა, მოძრავი დაშორებით გვერდითი მოვლენები, რომელიც 670 00:31:33,660 --> 00:31:36,660 ფუნქციები, რომ რაღაც მოსწონს ვიზუალურად ეკრანზე printf, 671 00:31:36,660 --> 00:31:38,090 მაგრამ არ დაბრუნდებიან მნიშვნელობა. 672 00:31:38,090 --> 00:31:41,550 და ფუნქციები, აქვს დაბრუნების ღირებულებებს, როგორიცაა ჩვენ უბრალოდ დაინახა რამდენიმე. 673 00:31:41,550 --> 00:31:45,350 ჩვენ უკვე ვნახეთ, ამ ცნება ფარგლებს, და ჩვენ ვხედავთ, ეს ისევ და ისევ. 674 00:31:45,350 --> 00:31:47,210 მაგრამ ახლა, კიდევ ერთხელ, გამოყენების წესი ცერის 675 00:31:47,210 --> 00:31:51,410 რომ ცვლადი შეიძლება გამოყენებულ იქნეს მხოლოდ შიგნით ყველაზე ცოტა ხნის წინ გაიხსნა 676 00:31:51,410 --> 00:31:54,350 დახურული და curly braces, როგორც ჩვენ დაინახა, რომ კონკრეტული მაგალითი. 677 00:31:54,350 --> 00:31:56,910 >> და როგორც თქვენ აღნიშნა, არსებობს ability-- 678 00:31:56,910 --> 00:32:00,040 თქვენ შეიძლება გადაწყვიტოს ზოგიერთი პრობლემა გამოსული ცვლადი გლობალურად 679 00:32:00,040 --> 00:32:01,290 ძალიან ზევით ფაილი. 680 00:32:01,290 --> 00:32:03,630 მაგრამ თითქმის ყველა შემთხვევაში ჩვენ გვინდა frown საფუძველზე, რომ 681 00:32:03,630 --> 00:32:06,170 და მართლაც კი არ დადიან შევიდა, რომ გამოსავალი არის. 682 00:32:06,170 --> 00:32:09,890 ასე რომ, ახლა, takeaway არის, რომ ცვლადები ამ ცნება ფარგლებს. 683 00:32:09,890 --> 00:32:13,430 >> მაგრამ ახლა მოდით შევხედოთ სხვა მშრალი გზა, ფაქტობრივად, ეძებს 684 00:32:13,430 --> 00:32:15,810 რაღაც საკმაოდ საინტერესო განხორციელების დეტალები. 685 00:32:15,810 --> 00:32:17,810 როგორ შეიძლება წარმოადგენდეს ინფორმაცია. 686 00:32:17,810 --> 00:32:20,370 და ჩვენ უკვე შევხედე პირველ კვირას კლასის. 687 00:32:20,370 --> 00:32:23,320 ეძებს binaries და შევახსენებთ საკუთარ თავს, ათობითი. 688 00:32:23,320 --> 00:32:28,310 >> მაგრამ გავიხსენოთ, რომ გასულ კვირას, რომ C აქვს სხვადასხვა ტიპის მონაცემები და bunches მეტი, 689 00:32:28,310 --> 00:32:30,600 მაგრამ ყველაზე სასარგებლო პირობა ახლა შეიძლება იყოს ეს. 690 00:32:30,600 --> 00:32:36,030 Char, და ხასიათი, რაც ხდება, უნდა იყოს ერთი ბაიტი, რვა ბიტი შეადგენს. 691 00:32:36,030 --> 00:32:40,060 და რომ ამბობენ, რომ ზომა of char მხოლოდ ერთი ბაიტი. 692 00:32:40,060 --> 00:32:45,370 Byte არის რვა ბიტი, ეს ნიშნავს, რომ ჩვენ შეგვიძლია რამდენი გმირები. 693 00:32:45,370 --> 00:32:47,320 რამდენი ასო ან სიმბოლოები კლავიატურაზე 694 00:32:47,320 --> 00:32:49,210 თუ ჩვენ გვაქვს ერთი ბაიტი რვა ბიტი. 695 00:32:49,210 --> 00:32:51,546 ფიქრობთ თავში კვირაში ნულოვანი. 696 00:32:51,546 --> 00:32:53,420 თუ თქვენ გაქვთ რვა ბიტი, რამდენი სულ ღირებულებები 697 00:32:53,420 --> 00:32:55,503 შეგიძლიათ წარმოადგენენ ნიმუში zeros და პირობა? 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 One-- მეტია. 700 00:33:00,260 --> 00:33:03,490 ასე რომ 256 სულ თუ დაიწყება დათვლის ნულიდან. 701 00:33:03,490 --> 00:33:07,120 ასე რომ, თუ თქვენ გაქვთ რვა ბიტი ასე რომ, თუ ჩვენ გვქონდა ჩვენი ორობითი ნათურებით აქ კიდევ ერთხელ, 702 00:33:07,120 --> 00:33:12,180 ჩვენ შეიძლება იქცეს იმ ნათურებით on და off ნებისმიერი 256 უნიკალური ნიმუშები. 703 00:33:12,180 --> 00:33:13,640 >> ახლა ეს არის ცოტა პრობლემატური. 704 00:33:13,640 --> 00:33:16,857 არა იმდენად ინგლისური და რომანული ენები, მაგრამ, რა თქმა უნდა 705 00:33:16,857 --> 00:33:19,190 როდესაც თქვენ გააცნობს, რომელიც მაგალითად, აზიური ენები, რომელიც 706 00:33:19,190 --> 00:33:22,580 გაცილებით სიმბოლოები, ვიდრე მოსწონს 26 ასო ანბანი. 707 00:33:22,580 --> 00:33:24,390 ჩვენ რეალურად ალბათ საჭიროა მეტი byte. 708 00:33:24,390 --> 00:33:28,240 და საბედნიეროდ ბოლო წლებში საზოგადოების 709 00:33:28,240 --> 00:33:31,040 მიღებული სხვა სტანდარტებთან გამოყენება მეტი byte პოსტი პასუხისმგებელი. 710 00:33:31,040 --> 00:33:34,210 >> მაგრამ ახლა C, რა არის მხოლოდ ერთი ბაიტი რვა ბიტი. 711 00:33:34,210 --> 00:33:38,195 მთელი რიცხვი, იმავდროულად, არის ოთხი bytes, სხვაგვარად ცნობილია როგორც 32 ბიტი. 712 00:33:38,195 --> 00:33:41,320 რაც იმას ნიშნავს, რა არის უდიდესი შესაძლო ნომერი ჩვენ შეგვიძლია ერთად int 713 00:33:41,320 --> 00:33:41,820 როგორც ჩანს? 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 მილიარდი. 716 00:33:45,050 --> 00:33:46,760 ასე რომ, ეს ოთხი მილიარდი მისცეს ან მიიღოს. 717 00:33:46,760 --> 00:33:49,840 2 დან 32 ძალა, თუ ჩვენ ვივარაუდოთ, არ უარყოფითი რიცხვები 718 00:33:49,840 --> 00:33:52,530 და მხოლოდ გამოიყენოთ ყველა დადებითი ნომრები, ოთხი მილიარდი 719 00:33:52,530 --> 00:33:53,730 მისცეს ან მიიღოს შესაძლებლობები. 720 00:33:53,730 --> 00:33:57,890 Float, იმავდროულად, არის სხვადასხვა ტიპის მონაცემთა ტიპი C. ეს არის კიდევ მთელი რიგი, 721 00:33:57,890 --> 00:33:58,990 მაგრამ ეს რეალური რაოდენობა. 722 00:33:58,990 --> 00:34:00,660 რაღაც ათობითი წერტილი. 723 00:34:00,660 --> 00:34:03,000 და აღმოჩნდება, რომ C ასევე იყენებს ოთხი ბაიტი 724 00:34:03,000 --> 00:34:05,340 to წარმოადგენს მცურავი პუნქტიანი ღირებულებებს. 725 00:34:05,340 --> 00:34:09,420 >> სამწუხაროდ, რამდენი მცურავი წერტილი ღირებულებები არ არსებობს მსოფლიოში? 726 00:34:09,420 --> 00:34:11,582 რამდენი რეალური ციფრები არსებობს? 727 00:34:11,582 --> 00:34:13,540 არსებობს უსასრულო ნომერი, და ამ საკითხთან დაკავშირებით 728 00:34:13,540 --> 00:34:15,164 არსებობს უსასრულო რაოდენობა რიცხვებით. 729 00:34:15,164 --> 00:34:18,070 ასე რომ, ჩვენ უკვე სახის თხრა საკუთარ თავს ხვრელი აქ. 730 00:34:18,070 --> 00:34:21,780 რომლის დროსაც, როგორც ჩანს, computers-- at მინიმუმ პროგრამების დაწერილი C on them-- 731 00:34:21,780 --> 00:34:24,110 მხოლოდ ითვლიან როგორც მაღალი, როგორც ოთხი მილიარდი მისცეს ან მიიღოს, 732 00:34:24,110 --> 00:34:26,260 და მცურავი პუნქტიანი ღირებულებებს შეიძლება მხოლოდ, როგორც ჩანს, 733 00:34:26,260 --> 00:34:28,330 აქვს გარკვეული სასრულ თანხის სიზუსტით. 734 00:34:28,330 --> 00:34:30,810 მხოლოდ ამდენი ციფრები შემდეგ მათი ათობითი წერტილი. 735 00:34:30,810 --> 00:34:32,822 >> იმის გამო, რომ, რა თქმა უნდა, თუ თქვენ მხოლოდ 32 ბიტი, 736 00:34:32,822 --> 00:34:36,030 მე არ ვიცი, თუ როგორ ვაპირებთ წავიდეთ შესახებ წარმოადგენს რეალური ნომრები ალბათ 737 00:34:36,030 --> 00:34:37,409 სხვადასხვა ტიპის ნიმუშები. 738 00:34:37,409 --> 00:34:40,030 მაგრამ იქ აუცილებლად სასრული რიგი ისეთი ნიმუშები, 739 00:34:40,030 --> 00:34:41,830 აქ, ძალიან, ეს პრობლემატურია. 740 00:34:41,830 --> 00:34:43,710 >> ახლა ჩვენ შეგვიძლია თავიდან ავიცილოთ პრობლემა ოდნავ. 741 00:34:43,710 --> 00:34:45,710 თუ თქვენ არ გამოიყენოს float, თქვენ შეიძლება გამოიყენოთ ორმაგი 742 00:34:45,710 --> 00:34:50,230 C, რომელიც გაძლევთ რვა ბაიტი, რაც უფრო მეტი შესაძლო ნიმუში zeros 743 00:34:50,230 --> 00:34:50,730 და პირობა. 744 00:34:50,730 --> 00:34:55,199 მაგრამ მაინც სასრული, რომელიც აპირებს პრობლემატურია, თუ თქვენ ჩაწერის პროგრამული 745 00:34:55,199 --> 00:34:57,670 გრაფიკა და ლამაზი მათემატიკური ფორმულები. 746 00:34:57,670 --> 00:35:00,410 ასე რომ თქვენ შეიძლება რეალურად მინდა ითვლიან up უფრო დიდი ვიდრე. 747 00:35:00,410 --> 00:35:05,640 ხანგრძლივი ხანგრძლივი stupidly named-- ასევე რვა ბაიტს, ან 64 ბიტი, 748 00:35:05,640 --> 00:35:10,260 და ეს არის ორჯერ გრძელი int, და ეს დიდი ხნის მთელი მნიშვნელობა. 749 00:35:10,260 --> 00:35:15,655 >> გართობა ფაქტობრივად თუ int ოთხი ბაიტი, რამდენი ხანი არის ხანგრძლივი დო წესი? 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 ასევე ოთხი ბაიტი, მაგრამ ხანგრძლივი ხანგრძლივი რვა ბაიტი, 752 00:35:21,560 --> 00:35:23,050 და ეს არის ისტორიული მიზეზების გამო. 753 00:35:23,050 --> 00:35:26,450 >> მაგრამ takeaway ახლა უბრალოდ, მონაცემების 754 00:35:26,450 --> 00:35:29,625 წარმოდგენილი იყოს კომპიუტერი, რომ ის, ფიზიკური მოწყობილობა ელექტროენერგიის, 755 00:35:29,625 --> 00:35:32,190 ეს ზოგადად მართვის იმ zeros და პირობა 756 00:35:32,190 --> 00:35:34,320 სასრულ რაოდენობით სიზუსტით. 757 00:35:34,320 --> 00:35:35,620 ასე რომ რა პრობლემაა მერე? 758 00:35:35,620 --> 00:35:37,480 >> ასევე არსებობს პრობლემა, მთელი რიცხვი overflow. 759 00:35:37,480 --> 00:35:39,780 არა მხოლოდ C, არამედ კომპიუტერები ზოგადად. 760 00:35:39,780 --> 00:35:42,590 მაგალითად, თუ ამ არის byte ღირს bit-- 761 00:35:42,590 --> 00:35:45,120 ასე რომ, თუ ამ რვა bit-- ყველა რომელთაგან ერთი. 762 00:35:45,120 --> 00:35:47,300 რა რაოდენობის არის ეს წარმოადგენს თუ ჩვენ ვივარაუდოთ, 763 00:35:47,300 --> 00:35:50,730 ეს ყველაფერი პოზიტიური ღირებულებების ორობითი? 764 00:35:50,730 --> 00:35:54,410 >> 255, და ეს არ არის 256, რადგან ნულოვანი არის ყველაზე დაბალი ნომერი. 765 00:35:54,410 --> 00:35:56,760 ასე რომ 255 არის უმაღლესი ერთი, მაგრამ პრობლემა 766 00:35:56,760 --> 00:36:00,330 არის ვარაუდი, რომ მინდოდა ნამატი ეს ცვლადი, რომ 767 00:36:00,330 --> 00:36:04,030 გამოყენებით რვა ბიტი სულ თუ მინდა, რომ იყოს იგი. 768 00:36:04,030 --> 00:36:07,160 >> კარგად, როგორც კი დავამატო ერთი, რომ ყველა ეს პირობა, 769 00:36:07,160 --> 00:36:10,500 თქვენ შეიძლება ალბათ წარმოიდგინეთ visually-- მხოლოდ როგორიცაა ტარების ერთი გამოყენებით decimals-- 770 00:36:10,500 --> 00:36:12,300 რამე ხდება შემოვა მარცხენა. 771 00:36:12,300 --> 00:36:15,590 და მართლაც, თუ მე დაამატოთ ნომერი ერთი ეს, რა ხდება binary 772 00:36:15,590 --> 00:36:17,670 ის არის, რომ ეს overflows ნული. 773 00:36:17,670 --> 00:36:21,730 >> ასე რომ, თუ თქვენ მხოლოდ გამოიყენოს არ არის int, მაგრამ ერთი ბაიტი ითვლიან რიცხვებით 774 00:36:21,730 --> 00:36:27,170 პროგრამა, რომელსაც default-- როგორც კი თქვენ მიიღებთ 250, 251, 252, 253, 254, 775 00:36:27,170 --> 00:36:32,710 255-- 0 მას შემდეგ, რაც 255, რომელიც, ალბათ, არ არის, რაც 776 00:36:32,710 --> 00:36:34,790 მომხმარებელი ვაპირებთ ველოდოთ. 777 00:36:34,790 --> 00:36:39,620 >> ახლა იმავდროულად მცურავი წერტილი სამყაროში, თქვენ ასევე აქვს მსგავსი პრობლემა. 778 00:36:39,620 --> 00:36:42,670 არა იმდენად უდიდესი number-- მიუხედავად იმისა, რომ ჯერ კიდევ საკითხი. 779 00:36:42,670 --> 00:36:45,360 მაგრამ ოდენობით სიზუსტით რომ თქვენ შეგიძლიათ წარმოადგენენ. 780 00:36:45,360 --> 00:36:49,490 ასე რომ, მოდით შევხედოთ ამ მაგალითს აქ ასევე დღევანდელი წყარო code-- 781 00:36:49,490 --> 00:36:52,070 float-0.c. 782 00:36:52,070 --> 00:36:54,280 >> და შენიშნავს, რომ სუპერ მარტივი პროგრამა, რომელიც 783 00:36:54,280 --> 00:36:56,580 უნდა აშკარად ამობეჭდოთ რა ღირებულება? 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 რას ფსონს ამ აპირებს ბეჭდვა მიუხედავად იმისა, რომ ცოტა ახალი სინტაქსის 786 00:37:04,110 --> 00:37:05,540 აქ? 787 00:37:05,540 --> 00:37:06,700 ასე რომ, იმედია 0.1. 788 00:37:06,700 --> 00:37:10,000 ასე ექვივალენტი ერთი მეათედი იმიტომ, რომ მე ვაკეთებ 1 დაყოფილი 10. 789 00:37:10,000 --> 00:37:12,430 მე შენახვის პასუხი ცვლადში ვ. 790 00:37:12,430 --> 00:37:15,850 რომ ცვლადი ტიპის float, რომელიც არის სიტყვით უბრალოდ შემოთავაზებული არსებობდა. 791 00:37:15,850 --> 00:37:18,910 >> ჩვენ არ მინახავს ეს ადრე, მაგრამ ეს არის ერთგვარი გარღვევა გზა printf 792 00:37:18,910 --> 00:37:22,110 დააკონკრეტა რამდენი ციფრები თქვენ გვინდა, რომ მას შემდეგ, რაც ათობითი წერტილი. 793 00:37:22,110 --> 00:37:25,020 ასე რომ, ეს notation მხოლოდ იმას ნიშნავს, რომ აქ არის placeholder. 794 00:37:25,020 --> 00:37:27,900 ის ამისთვის მცურავი წერტილი ღირებულება, და მე, სხვათა შორის, 795 00:37:27,900 --> 00:37:31,389 გამოჩნდება ეს ათობითი წერტილი ერთი ნომერი შემდეგ ათობითი წერტილი. 796 00:37:31,389 --> 00:37:33,180 ასე რომ, ნომერი მნიშვნელოვანი ციფრები, 797 00:37:33,180 --> 00:37:34,650 ასე ვთქვათ, რომ დაგვჭირდება. 798 00:37:34,650 --> 00:37:40,450 >> ნება მომეცით, წავიდეთ წინ და ამის გაკეთება რათა float-0, ./float-0, 799 00:37:40,450 --> 00:37:46,660 და როგორც ჩანს, 1 დაყოფილი 10 0.0. 800 00:37:46,660 --> 00:37:47,760 ახლა რატომ არის ეს? 801 00:37:47,760 --> 00:37:51,380 >> ასევე კიდევ ერთხელ, კომპიუტერული ხდება მე ფაქტიურად, და მე არ გაუკეთებია 1 802 00:37:51,380 --> 00:37:56,680 და მე დაწერილი 10 და მიხვდები რა არის ვარაუდი, მონაცემები ტიპის ამ ორი 803 00:37:56,680 --> 00:37:58,440 ღირებულებები? 804 00:37:58,440 --> 00:38:00,970 Int, ტექნიკურად რაღაც ცოტა განსხვავებული. 805 00:38:00,970 --> 00:38:04,150 როგორც წესი, დიდი ხნის განმავლობაში, მაგრამ ეს საბოლოოდ განუყოფელი ღირებულება. 806 00:38:04,150 --> 00:38:06,030 არ მცურავი წერტილი ღირებულება. 807 00:38:06,030 --> 00:38:09,456 >> რაც უნდა ითქვას, რომ თუ ამ არის int და ეს არის int, 808 00:38:09,456 --> 00:38:11,830 პრობლემა ის არის, რომ კომპიუტერი არ აქვს უნარი 809 00:38:11,830 --> 00:38:13,680 კი შესანახად ათობითი წერტილი. 810 00:38:13,680 --> 00:38:16,430 ასე რომ, როდესაც თქვენ ამის გაკეთება 1 დაყოფილი 10 გამოყენებით რიცხვებით 811 00:38:16,430 --> 00:38:20,950 ორივე მრიცხველი და მნიშვნელი, პასუხი უნდა იყოს 0.1. 812 00:38:20,950 --> 00:38:24,930 მაგრამ ეგმ რადგან ეს ის რიცხვებით 813 00:38:24,930 --> 00:38:27,430 არ იცის, რა უნდა გააკეთოს, 0.1. 814 00:38:27,430 --> 00:38:30,010 >> ასე რომ, რა არის ეს ნათლად აკეთებს? 815 00:38:30,010 --> 00:38:33,120 უბრალოდ სროლა ის მოშორებით, და რა მე ხედავს საბოლოოდ 816 00:38:33,120 --> 00:38:38,830 არის 0.0 მხოლოდ იმიტომ, რომ ამტკიცებდა, რომ printf მაჩვენო ერთი ათობითი წერტილი. 817 00:38:38,830 --> 00:38:41,740 მაგრამ პრობლემა ის არის, რომ თუ დაყოფის რიცხვი მიერ მთელი რიცხვი, 818 00:38:41,740 --> 00:38:44,347 თქვენ get-- განსაზღვრების საქართველოს, C რიცხვი. 819 00:38:44,347 --> 00:38:46,680 და ის არ აპირებს ამის გაკეთებას რაღაც ლამაზი და მოხერხებული 820 00:38:46,680 --> 00:38:49,040 როგორიცაა მრგვალი მდე უახლოესი ერთი ან ქვემოთ. 821 00:38:49,040 --> 00:38:51,860 ის აპირებს truncate ყველაფერი შემდეგ ათობითი. 822 00:38:51,860 --> 00:38:54,030 >> ასე რომ, უბრალოდ ინტუიციურად, რა ალბათ fix? 823 00:38:54,030 --> 00:38:55,351 რა არის მარტივი გადავწყვიტოთ აქ? 824 00:38:55,351 --> 00:38:55,850 ჰო? 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 ზუსტად. 827 00:39:01,100 --> 00:39:04,200 რატომ არ გვაქვს უბრალოდ მკურნალობა ეს როგორც მცურავი პუნქტიანი ღირებულებების ეფექტურად 828 00:39:04,200 --> 00:39:05,860 გარდამტეხი მათ მოძრავი ან ორჯერ. 829 00:39:05,860 --> 00:39:10,500 და ახლა თუ არ მიიღოს მოძრავი-0, ან თუ მე კომპილაციის მოძრავი-1, 830 00:39:10,500 --> 00:39:12,570 რომელიც იდენტურია რა იყო მხოლოდ შემოთავაზებული. 831 00:39:12,570 --> 00:39:16,400 და ახლა მე მოძრავი-0, ახლა მე ჩემი 0.1. 832 00:39:16,400 --> 00:39:17,234 >> ახლა ეს არის საოცარი. 833 00:39:17,234 --> 00:39:19,441 მაგრამ ახლა მე ვაპირებ ამის გაკეთებას რაღაც ცოტა განსხვავებული. 834 00:39:19,441 --> 00:39:22,280 მაინტერესებს რა არის ნამდვილად ხდება ქვეშ hood, 835 00:39:22,280 --> 00:39:26,050 და მე ვაპირებ ბეჭდვა ეს იმისათვის, რომ 28 ათობითი ადგილებში. 836 00:39:26,050 --> 00:39:29,730 მინდა ვხედავ 0.1000-- infinite-- 837 00:39:29,730 --> 00:39:32,710 [INAUDIBLE] 27 zeros მას შემდეგ, რაც 0.1. 838 00:39:32,710 --> 00:39:34,740 >> ასევე ვნახოთ, თუ ეს ის, რაც მე მართლაც მიიღოს. 839 00:39:34,740 --> 00:39:39,430 მიიღოს მოძრავი-0 იგივე ფაილი. 840 00:39:39,430 --> 00:39:41,150 ./floats-0. 841 00:39:41,150 --> 00:39:44,380 მოდით მიუახლოვდით დრამატული პასუხი. 842 00:39:44,380 --> 00:39:49,980 ამ დროს, თქვენ უკვე ფიქრი 1 დაყოფილი 10 10%, ანუ 0.1. 843 00:39:49,980 --> 00:39:50,810 ეს არ არის. 844 00:39:50,810 --> 00:39:53,210 მინიმუმ რამდენადაც კომპიუტერის შეშფოთებულია. 845 00:39:53,210 --> 00:39:57,060 >> ახლა why-- OK, რომ სრული ტყუილი 1 დაყოფილი 10 0.1. 846 00:39:57,060 --> 00:39:59,710 მაგრამ why--, რომელიც არ არის takeaway დღეს. 847 00:39:59,710 --> 00:40:04,010 ასე რატომ კომპიუტერული ვფიქრობ, განსხვავებით ყველა ჩვენგანი ოთახი, 848 00:40:04,010 --> 00:40:06,870 რომ 1 დაყოფილი 10 რეალურად, რომ გიჟები ღირებულება? 849 00:40:06,870 --> 00:40:10,620 რა არის კომპიუტერში აკეთებს როგორც ჩანს? 850 00:40:10,620 --> 00:40:12,490 რა არის ეს? 851 00:40:12,490 --> 00:40:13,785 >> ეს არ არის overflow, თავისთავად. 852 00:40:13,785 --> 00:40:15,910 Overflow როგორც წესი, როდესაც თქვენ გადაიტანოთ გარშემო ღირებულება. 853 00:40:15,910 --> 00:40:18,970 ის ამ საკითხს ორაზროვნება მცურავი წერტილი ღირებულება 854 00:40:18,970 --> 00:40:22,220 სადაც თქვენ მხოლოდ 32 ან თუნდაც 64 ბიტიანი. 855 00:40:22,220 --> 00:40:25,230 მაგრამ თუ არსებობს უსასრულო უძრავი ნომრები 856 00:40:25,230 --> 00:40:27,940 ნომრები ათობითი ქულა და ნომრები thereafter-- აუცილებლად 857 00:40:27,940 --> 00:40:29,380 ვერ წარმოადგენს ყველა მათგანი. 858 00:40:29,380 --> 00:40:32,870 ასე რომ კომპიუტერის მისცა us უახლოესი მატჩი 859 00:40:32,870 --> 00:40:37,090 ღირებულება, შეიძლება წარმოადგენს გამოყენებით, რომელიც ბევრი ბიტი არც მე რეალურად მინდა, 860 00:40:37,090 --> 00:40:38,690 რომელიც არის 0.1. 861 00:40:38,690 --> 00:40:40,685 >> სამწუხაროდ, თუ დაიწყოს აკეთებს მათემატიკის, ან თქვენ 862 00:40:40,685 --> 00:40:44,360 დაიწყოს, მათ შორის ამ სახის მცურავი წერტილი ღირებულებების მნიშვნელოვანია, რომ პროგრამების 863 00:40:44,360 --> 00:40:46,770 ფინანსური უზრუნველყოფა, სამხედრო software-- არაფერს 864 00:40:46,770 --> 00:40:49,090 სადაც აღქმა ალბათ საკმაოდ მნიშვნელოვანია. 865 00:40:49,090 --> 00:40:51,520 და დაიწყება დასძინა ნომრები ასე, და დაწყების 866 00:40:51,520 --> 00:40:54,050 გაშვებული, პროგრამული უზრუნველყოფა მართლაც დიდი საშუალებებით 867 00:40:54,050 --> 00:40:56,890 ან უამრავი საათი და უამრავი დღის ან უამრავი წლის განმავლობაში, 868 00:40:56,890 --> 00:41:01,060 ამ პატარა შეცდომები აუცილებლად შეგიძლიათ დაამატოთ up დროთა განმავლობაში. 869 00:41:01,060 --> 00:41:04,252 >> ახლა, როგორც განზე, თუ თქვენ ოდესმე ჩანს Superman 3 ან საოფისე ფართი 870 00:41:04,252 --> 00:41:05,960 და თქვენ ალბათ გახსოვთ, როგორ, იმ ბიჭებს მოიპარეს 871 00:41:05,960 --> 00:41:08,668 ბევრი ფული მათი კომპიუტერი გამოყენებით მცურავი პუნქტიანი ღირებულებებს 872 00:41:08,668 --> 00:41:11,290 და დასძინა up პატარა დარჩენილი, იმედია, რომ ფილმი 873 00:41:11,290 --> 00:41:12,390 ახლა ხდის უფრო გრძნობა. 874 00:41:12,390 --> 00:41:14,930 ეს არის, რაც იყო, მიანიშნებენ, რომ ფილმის. 875 00:41:14,930 --> 00:41:16,710 ის ფაქტი, რომ ყველაზე კომპანიები არ გამოიყურება 876 00:41:16,710 --> 00:41:18,600 შემდეგ გარკვეული რაოდენობის საქართველოს ათობითი ადგილებში, 877 00:41:18,600 --> 00:41:20,009 მაგრამ იმ ფრაქციების ცენტი. 878 00:41:20,009 --> 00:41:22,550 ასე რომ თქვენ დაიწყოს დასძინა, მათ, თქვენ დაიწყოს, რათა ბევრი ფული 879 00:41:22,550 --> 00:41:23,424 თქვენს საბანკო ანგარიშზე. 880 00:41:23,424 --> 00:41:25,160 ასე რომ, ის საოფისე ფართი განმარტა. 881 00:41:25,160 --> 00:41:28,220 >> ახლა, სამწუხაროდ მიღმა საოფისე ფართი, არსებობს 882 00:41:28,220 --> 00:41:31,794 ზოგიერთი ლეგიტიმურად შემაშფოთებელი და მნიშვნელოვანი ზემოქმედება 883 00:41:31,794 --> 00:41:33,710 ამ სახის ძირითადი დიზაინის გადაწყვეტილებები, 884 00:41:33,710 --> 00:41:35,990 და მართლაც ერთ ერთი მიზეზი ჩვენ ვიყენებთ C რა თქმა უნდა, 885 00:41:35,990 --> 00:41:39,640 ასე, რომ თქვენ ნამდვილად გაქვთ ამ მიწაზე up გაგება, თუ როგორ კომპიუტერები მუშაობენ, 886 00:41:39,640 --> 00:41:42,440 როგორ პროგრამული და არა არაფერი მიანიჭა. 887 00:41:42,440 --> 00:41:45,820 >> და მართლაც, სამწუხაროდ, თუნდაც რომ ფუნდამენტური გაგება, 888 00:41:45,820 --> 00:41:47,370 ჩვენ ადამიანებს უშვებენ შეცდომებს. 889 00:41:47,370 --> 00:41:51,310 და რა ვიფიქრე მე მინდა წილი რვა წუთიანი ვიდეო აქ მიღებული 890 00:41:51,310 --> 00:41:56,980 საწყისი თანამედროვე Marvels ეპიზოდი, რომელიც საგანმანათლებლო შოუ, თუ როგორ მუშაობს 891 00:41:56,980 --> 00:42:00,370 რომ ხატავს ორი სურათით , როდესაც არასათანადო გამოყენება 892 00:42:00,370 --> 00:42:02,540 და გაგება მცურავი პუნქტიანი ღირებულებებს 893 00:42:02,540 --> 00:42:05,610 გამოიწვია ზოგიერთი მნიშვნელოვანი სამწუხარო შედეგებს. 894 00:42:05,610 --> 00:42:06,363 მოდით შევხედოთ. 895 00:42:06,363 --> 00:42:07,029 [ვიდეო აღწარმოების] 896 00:42:07,029 --> 00:42:11,290 დიახ, ახლა დაბრუნდნენ "საინჟინრო სტიქია "თანამედროვე Marvels. 897 00:42:11,290 --> 00:42:12,940 კომპიუტერები. 898 00:42:12,940 --> 00:42:15,580 ჩვენ ყველა მოდის მიიღოს ხშირად frustrating პრობლემა, რომელიც 899 00:42:15,580 --> 00:42:20,960 მიიღო them-- შეცდომები, ვირუსების და პროგრამული glitches-- მცირე ფასები 900 00:42:20,960 --> 00:42:23,100 გადაიხადოს მოხერხებულობისთვის. 901 00:42:23,100 --> 00:42:27,770 მაგრამ მაღალტექნოლოგიური და მაღალი სიჩქარით სამხედრო და სივრცეში პროგრამის განაცხადების, 902 00:42:27,770 --> 00:42:32,780 პატარა პრობლემა შეიძლება განდიდდეს შევიდა უბედურება. 903 00:42:32,780 --> 00:42:38,880 >> 4 ივნისს, 1996, მეცნიერები მზად დაიწყოს უპილოტო Ariane 5 რაკეტა. 904 00:42:38,880 --> 00:42:41,190 იგი ახორციელებს სამეცნიერო თანამგზავრების განკუთვნილია 905 00:42:41,190 --> 00:42:44,570 დამყარება ზუსტად როგორ დედამიწის მაგნიტური ველი ურთიერთქმედებს 906 00:42:44,570 --> 00:42:47,380 მზის ქარები. 907 00:42:47,380 --> 00:42:50,580 სარაკეტო აშენდა ევროპის კოსმოსური სააგენტო, 908 00:42:50,580 --> 00:42:54,400 და გააუქმა off მისი დაწესებულებაში სანაპიროზე ფრანგული გვიანა. 909 00:42:54,400 --> 00:42:57,520 >> -დაახლოებით 37 წამში შევიდა ფრენის, მათ პირველი 910 00:42:57,520 --> 00:42:59,070 შენიშნა რაღაც მიდის არასწორი. 911 00:42:59,070 --> 00:43:02,240 რომ რეაქტიული საქშენები იყო swiveling ისე, რომ ისინი ნამდვილად არ უნდა. 912 00:43:02,240 --> 00:43:06,550 დაახლოებით 40 წამში შევიდა ფრენის, ნათლად ავტომობილის უბედურება, 913 00:43:06,550 --> 00:43:08,820 და ეს მაშინ, როდესაც ისინი გააკეთა გადაწყვეტილება უნდა გაანადგუროს იგი. 914 00:43:08,820 --> 00:43:12,370 სპექტრი უსაფრთხოების ოფიცერი, დიდი guts, დაპრესილი ღილაკს 915 00:43:12,370 --> 00:43:18,030 და ააფეთქეს სარაკეტო სანამ გახდება საშიშროების საზოგადოებრივი უსაფრთხოების. 916 00:43:18,030 --> 00:43:21,010 >> ეს იყო ერთ maiden მოგზაურობა Ariane 5, 917 00:43:21,010 --> 00:43:23,920 და მისი განადგურების მოხდა განათავსეთ გამო ხარვეზი 918 00:43:23,920 --> 00:43:25,932 ჩართული სარაკეტო პროგრამული უზრუნველყოფა. 919 00:43:25,932 --> 00:43:27,640 -პრობლემა Ariane იყო, რომ 920 00:43:27,640 --> 00:43:30,500 იყო მთელი რიგი, რომელიც საჭირო 64 ბიტი გამოთქვას, 921 00:43:30,500 --> 00:43:33,560 და უნდოდათ რომ გადაიყვანო მას 16-bit ნომერი. 922 00:43:33,560 --> 00:43:36,820 ისინი ფიქრობდნენ, რომ ნომერი არასდროს არ უნდა იყოს ძალიან დიდი. 923 00:43:36,820 --> 00:43:40,940 რომ ყველაზე მეტად იმ ციფრისგან 64-bit ნომერი იყო zeros. 924 00:43:40,940 --> 00:43:42,450 ისინი არასწორია. 925 00:43:42,450 --> 00:43:45,000 >> -უუნარობა ერთ პროგრამული უზრუნველყოფის პროგრამა მიიღოს 926 00:43:45,000 --> 00:43:49,460 სახის მიერ გენერირებული სხვა იყო ფესვი უკმარისობა. 927 00:43:49,460 --> 00:43:54,260 პროგრამული უზრუნველყოფის დამუშავება გახდა ძალიან ძვირადღირებული ნაწილი ახალი ტექნოლოგიები. 928 00:43:54,260 --> 00:43:57,060 Ariane 4 სარაკეტო ჰქონდა ძალიან წარმატებული იყო. 929 00:43:57,060 --> 00:44:01,600 იმდენად, რამდენადაც პროგრამული უზრუნველყოფის შექმნა იგი ასევე გამოიყენება Ariane 5. 930 00:44:01,600 --> 00:44:04,790 >> -ძირითადი პრობლემა ის იყო, რომ Ariane 5. 931 00:44:04,790 --> 00:44:11,200 იყო faster-- დააჩქარა სწრაფად და პროგრამული უზრუნველყოფის არ ჰქონდა აღრიცხვა რომ. 932 00:44:11,200 --> 00:44:14,910 >> -განადგურების სარაკეტო იყო დიდი ფინანსური კატასტროფის. 933 00:44:14,910 --> 00:44:18,630 ყველა გამო წუთი პროგრამული შეცდომა. 934 00:44:18,630 --> 00:44:21,160 მაგრამ ეს არ იყო პირველი, მონაცემები კონვერტაციის პრობლემები 935 00:44:21,160 --> 00:44:24,770 ჰქონდა ხშირია თანამედროვე სარაკეტო ტექნიკა. 936 00:44:24,770 --> 00:44:28,020 >> თიბისი 1991 დაწყება პირველი ყურის ომი, 937 00:44:28,020 --> 00:44:30,540 პატრიოტის სარაკეტო გამოცდილი მსგავსი 938 00:44:30,540 --> 00:44:32,465 რიგი კონვერტაციის პრობლემა. 939 00:44:32,465 --> 00:44:36,760 და შედეგად 28 people-- 28 American soldiers-- დაიღუპა, 940 00:44:36,760 --> 00:44:39,010 და ასამდე დაიჭრა. 941 00:44:39,010 --> 00:44:42,830 როდესაც პატრიოტთა, რომელიც სავარაუდოდ რომ დაიცვას წინააღმდეგ შემომავალი Scuds, 942 00:44:42,830 --> 00:44:45,780 ვერ ცეცხლი სარაკეტო. 943 00:44:45,780 --> 00:44:51,610 >> როცა ერაყში შეიჭრა ქუვეითსა და ამერიკაში დაიწყო Desert Storm დასაწყისში 1991, 944 00:44:51,610 --> 00:44:55,720 პატრიოტის სარაკეტო ბატარეები იყო განლაგდნენ დასაცავად საუდის არაბეთი და ისრაელს 945 00:44:55,720 --> 00:44:59,180 ერაყის Scud სარაკეტო თავდასხმებს. 946 00:44:59,180 --> 00:45:03,080 პატრიოტის არის აშშ საშუალო დამიზნების ზედაპირზე-to-air სისტემა 947 00:45:03,080 --> 00:45:06,530 მიერ წარმოებული RAYTHEON კომპანია. 948 00:45:06,530 --> 00:45:09,500 >> ანუ ზომა პატრიოტის interceptor თავად 949 00:45:09,500 --> 00:45:14,705 ეს დაახლოებით დაახლოებით 20 ფუტი სიგრძის, და იგი იწონის დაახლოებით 2,000 ფუნტი. 950 00:45:14,705 --> 00:45:19,090 და იგი ახორციელებს ქობინით დაახლოებით, მე ვფიქრობ, რომ დაახლოებით 150 ფუნტი. 951 00:45:19,090 --> 00:45:23,880 და ქობინით თავისთავად მაღალი ასაფეთქებელი, რომელიც 952 00:45:23,880 --> 00:45:26,700 აქვს ფრაგმენტები გარშემო მას. 953 00:45:26,700 --> 00:45:31,630 ასე რომ, გარსაცმის warhead არის განკუთვნილია იმოქმედოს, როგორც buckshot. 954 00:45:31,630 --> 00:45:34,040 >> ანუ რაკეტები ხორციელდება ოთხი შეადგენს კონტეინერ, 955 00:45:34,040 --> 00:45:37,170 და ტრანსპორტირება ნახევრად trailer. 956 00:45:37,170 --> 00:45:44,880 >> ანუ პატრიოტის რაკეტსაწინააღმდეგო სისტემის მიდის უკან მაინც 20 წელია. 957 00:45:44,880 --> 00:45:48,380 თავდაპირველად დაპროექტებული როგორც საჰაერო თავდაცვის სარაკეტო 958 00:45:48,380 --> 00:45:50,810 ჩამოაგდებენ მტრის თვითმფრინავები. 959 00:45:50,810 --> 00:45:54,410 პირველი ყურის ომი როდესაც რომ ომი მოვიდა, 960 00:45:54,410 --> 00:45:59,650 არმიის სურდა გამოვიყენოთ რომ სროლა ქვემოთ Scuds, არ თვითმფრინავები. 961 00:45:59,650 --> 00:46:03,580 ერაყის საჰაერო ძალები ასე არ არის დიდი პრობლემა, 962 00:46:03,580 --> 00:46:06,590 მაგრამ არმიის აწუხებს Scuds. 963 00:46:06,590 --> 00:46:10,120 ასე რომ, ისინი ცდილობდნენ, განახლება პატრიოტია. 964 00:46:10,120 --> 00:46:12,740 >> -Intercepting მტერი სარაკეტო მოგზაურობა საათზე MACH 5 965 00:46:12,740 --> 00:46:15,670 მიდიოდა იწვევს საკმარისი. 966 00:46:15,670 --> 00:46:18,440 მაგრამ როდესაც პატრიოტთა იყო შევარდა სამსახურის, 967 00:46:18,440 --> 00:46:22,580 არმიის არ იყო საქმის კურსში ერაყის მოდიფიკაცია რომ 968 00:46:22,580 --> 00:46:25,880 გააკეთეს Scuds თითქმის შეუძლებელია ეს. 969 00:46:25,880 --> 00:46:30,690 >> რა მოხდა არის Scuds რომ იყო შემოდიოდნენ იყო არასტაბილური. 970 00:46:30,690 --> 00:46:32,000 ისინი wobbly. 971 00:46:32,000 --> 00:46:37,210 ამის მიზეზი იყო Iraqis-- იმისათვის, რომ მიიღოთ 600 კილომეტრის გარეთ 972 00:46:37,210 --> 00:46:41,680 300-კილომეტრიანი Range missile-- აიღო წონა გარეთ წინა ქობინით, 973 00:46:41,680 --> 00:46:43,340 და გააკეთა ქობინით მსუბუქია. 974 00:46:43,340 --> 00:46:48,490 ახლა პატრიოტთა ცდილობს მოდის at Scud, ყველაზე time-- 975 00:46:48,490 --> 00:46:52,880 უმრავლესობა time-- ეს იქნებოდა უბრალოდ ფრენა მიერ Scud. 976 00:46:52,880 --> 00:46:57,120 >> -Once პატრიოტის სისტემის ოპერატორები მიხვდა პატრიოტის გაშვებული მისი სამიზნე, 977 00:46:57,120 --> 00:47:01,630 ისინი აფეთქდა პატრიოტთა warhead რათა თავიდან ავიცილოთ შესაძლო მსხვერპლი, თუ იგი 978 00:47:01,630 --> 00:47:04,440 ეძლეოდა ჩავარდნას, რათა ადგილზე. 979 00:47:04,440 --> 00:47:08,700 >> ანუ იყო ის, რაც ხალხის უმრავლესობას დაინახა როგორც დიდი fireballs ცაში, 980 00:47:08,700 --> 00:47:14,180 და არასწორად როგორც საუბრების of Scud ქობინი. 981 00:47:14,180 --> 00:47:18,020 >> -Although In ღამის ცა, პატრიოტთა აღმოჩნდა წარმატებით გაანადგურეს 982 00:47:18,020 --> 00:47:23,280 Scuds საათზე Dhahran, იქ შეიძლება იყოს არ შეცდომის შესახებ მისი შესრულება. 983 00:47:23,280 --> 00:47:27,930 იქ პატრიოტთა სარადარო სისტემის დაკარგა კვალს შემომავალი Scud 984 00:47:27,930 --> 00:47:30,260 და არასოდეს დაიწყო გამო to პროგრამული უზრუნველყოფის ხარვეზი. 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> ეს იყო ისრაელის, რომელმაც პირველად აღმოაჩინა რომ აღარ სისტემა იყო, 987 00:47:38,880 --> 00:47:41,130 დიდი დრო შეუსაბამობა გახდა. 988 00:47:41,130 --> 00:47:44,770 გამო საათის ჩართული სისტემაში კომპიუტერში. 989 00:47:44,770 --> 00:47:48,190 >> -About ორი კვირით ადრე ტრაგედიას Dhahran, 990 00:47:48,190 --> 00:47:50,720 ისრაელის განუცხადა თავდაცვის დეპარტამენტი 991 00:47:50,720 --> 00:47:52,410 რომ სისტემის დაკარგვის დროს. 992 00:47:52,410 --> 00:47:54,410 შემდეგ დაახლოებით რვა საათის გაშვებული, მათ შენიშნეს, 993 00:47:54,410 --> 00:47:57,690 რომ სისტემის ხდება შესამჩნევად ნაკლები სიზუსტით. 994 00:47:57,690 --> 00:48:01,850 თავდაცვის დეპარტამენტის გამოეხმაურა ვეუბნებოდი ყველა პატრიოტის ბატარეები 995 00:48:01,850 --> 00:48:04,800 რომ არ დატოვებს სისტემები დიდი ხნის განმავლობაში. 996 00:48:04,800 --> 00:48:06,980 ისინი არ ამბობს, რა დიდი დრო იყო. 997 00:48:06,980 --> 00:48:09,140 8 საათი, 10 საათი, ათასი საათი. 998 00:48:09,140 --> 00:48:11,300 არავინ იცოდა. 999 00:48:11,300 --> 00:48:13,320 >> ანუ პეტრიოტებ განლაგებული დროს ყაზარმებში 1000 00:48:13,320 --> 00:48:18,310 at Dhahran და მისი ყალბი შიდა საათი იყო დაახლოებით 100 საათი 1001 00:48:18,310 --> 00:48:21,520 იმ ღამით, 25 თებერვალს. 1002 00:48:21,520 --> 00:48:25,792 >> ხომ tracked დრო და სიზუსტე დაახლოებით მეათედი მეორე. 1003 00:48:25,792 --> 00:48:27,950 ახლა მეათე მეორე საინტერესო ნომერი 1004 00:48:27,950 --> 00:48:31,850 იმიტომ, რომ ეს არ შეიძლება იყოს გამოხატული ორობითი ზუსტად, რაც 1005 00:48:31,850 --> 00:48:36,500 იმას ნიშნავს, რომ არ შეიძლება იყოს გამოხატული ზუსტად ნებისმიერ თანამედროვე ციფრული კომპიუტერი. 1006 00:48:36,500 --> 00:48:41,070 ძნელი დასაჯერებელია, მაგრამ გამოიყენოს ეს როგორც მაგალითად. 1007 00:48:41,070 --> 00:48:43,420 >> ავიღოთ ნომერ მესამე. 1008 00:48:43,420 --> 00:48:47,330 ერთი მესამედი ვერ იქნება გამოიხატოს ათობითი ზუსტად. 1009 00:48:47,330 --> 00:48:52,060 ერთი მესამედი არის 0,333 გრძელდება უსასრულობამდე. 1010 00:48:52,060 --> 00:48:56,420 არ არსებობს გზა უნდა გააკეთოს, რომ აბსოლუტური სიზუსტით წელს ათობითი. 1011 00:48:56,420 --> 00:48:59,530 სწორედ სახის პრობლემა რომ მოხდა პატრიოტია. 1012 00:48:59,530 --> 00:49:04,040 აღარ სისტემა გაიქცა, უარესი დრო შეცდომა გახდა. 1013 00:49:04,040 --> 00:49:08,840 >> მას შემდეგ რაც 100 სამუშაო საათები, შეცდომა იყო მხოლოდ დაახლოებით ერთი მესამედი 1014 00:49:08,840 --> 00:49:10,440 მეორე. 1015 00:49:10,440 --> 00:49:14,150 მაგრამ თვალსაზრისით სამიზნედ სარაკეტო მოგზაურობა საათზე MACH 5, 1016 00:49:14,150 --> 00:49:18,560 მას შედეგად თვალთვალის შეცდომა მეტი 600 მეტრია. 1017 00:49:18,560 --> 00:49:21,870 ეს იქნება ფატალური შეცდომა ამისთვის ჯარისკაცებთან Dhahran. 1018 00:49:21,870 --> 00:49:28,455 >> რა მოხდა Scud დაწყებას გამოვლინდა მიერ ადრეული გაფრთხილების თანამგზავრების, 1019 00:49:28,455 --> 00:49:32,710 და მათ იცოდნენ Scud მოდიოდა მათი ზოგადად მიმართულებით. 1020 00:49:32,710 --> 00:49:35,150 მათ არ იციან, სადაც იგი მოდიოდა. 1021 00:49:35,150 --> 00:49:38,210 ეს იყო ახლა მდე სარადარო კომპონენტი პატრიოტის სისტემის 1022 00:49:38,210 --> 00:49:43,150 დაცვითი Dhahran იქნებიან და შეინახოს სიმღერა შემომავალი მტრის რაკეტა. 1023 00:49:43,150 --> 00:49:44,561 >> ანუ რადარზე ძალიან ჭკვიანი. 1024 00:49:44,561 --> 00:49:46,560 ეს რეალურად აკონტროლოთ პოზიცია Scud 1025 00:49:46,560 --> 00:49:48,930 და შემდეგ პროგნოზირება, სადაც ეს ალბათ იქნება 1026 00:49:48,930 --> 00:49:51,380 მომავალი დრო სარადარო გაგზავნილი პულსი გარეთ. 1027 00:49:51,380 --> 00:49:53,040 რომ ერქვა Range კარიბჭე. 1028 00:49:53,040 --> 00:49:57,620 >> მაშინდელ ერთხელ პატრიოტის გადაწყვეტს საკმარისი დრო აქვს 1029 00:49:57,620 --> 00:50:02,400 გავიდა წასვლა უკან და შეამოწმოთ შემდეგი საიდან ამ გამოვლინდა ობიექტი 1030 00:50:02,400 --> 00:50:03,550 იგი მიდის უკან. 1031 00:50:03,550 --> 00:50:07,820 ასე რომ, როდესაც იგი დაბრუნდა არასწორი ადგილი, მაშინ ვერ ხედავს ობიექტი. 1032 00:50:07,820 --> 00:50:10,360 და ეს გადაწყვეტს, რომ არ იყო წინააღმდეგი. 1033 00:50:10,360 --> 00:50:13,630 რომ იყო ყალბი აღმოჩენისა და წვეთების სიმღერა. 1034 00:50:13,630 --> 00:50:16,970 >> ანუ შემომავალი Scud გაქრა სარადარო ეკრანზე, 1035 00:50:16,970 --> 00:50:20,200 და წამის შემდეგ, ის გააკრიტიკა შევიდა ყაზარმები. 1036 00:50:20,200 --> 00:50:22,570 Scud დაიღუპა 28. 1037 00:50:22,570 --> 00:50:26,110 ეს იყო ბოლო ერთი გასროლა პირველი ყურის ომი. 1038 00:50:26,110 --> 00:50:31,920 ტრაგიკულია, რომ განახლებული პროგრამული უზრუნველყოფის ჩამოვიდა გამთენიისას მომდევნო დღეს. 1039 00:50:31,920 --> 00:50:34,870 პროგრამული უზრუნველყოფის ხარვეზი უკვე დაფიქსირდა, იხურება 1040 00:50:34,870 --> 00:50:39,150 ერთი თავი პრობლემური ისტორიაში პატრიოტის სარაკეტო. 1041 00:50:39,150 --> 00:50:40,030 >> [END ვიდეო აღწარმოების] 1042 00:50:40,030 --> 00:50:41,488 >> დევიდ ჯ Malan: ეს არის ის, CS50. 1043 00:50:41,488 --> 00:50:42,820 ვნახავთ თქვენ ოთხშაბათს. 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [მუსიკის დაკვრა] 1046 00:50:50,370 --> 00:54:23,446