1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [მუსიკის დაკვრა] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> დევიდ ჯ Malan: ყველა უფლება, ეს არის CS50. 5 00:00:16,240 --> 00:00:18,010 და ეს არის კვირაში ერთი. 6 00:00:18,010 --> 00:00:22,050 ასე რომ გავიხსენოთ, რომ ბოლო დროს კვირაში ნულოვანი, ჩვენ ორიენტირებულია კომპიუტერული აზროვნება. 7 00:00:22,050 --> 00:00:25,440 ჩვენ transitioned საწყისი, რომ ნულიდან, გრაფიკული პროგრამირების 8 00:00:25,440 --> 00:00:27,360 ენის ჩვენი მეგობრები at MIT- ის მედია ლაბორატორია. 9 00:00:27,360 --> 00:00:31,730 >> და Scratch, ჩვენ არ შეისწავლონ იდეები მოსწონს ფუნქციები და პირობები, 10 00:00:31,730 --> 00:00:35,210 და მარყუჟების და ცვლადები, და კიდევ მოვლენები, და თემა, და სხვა. 11 00:00:35,210 --> 00:00:37,880 და დღეს ჩვენ ვაპირებთ გაგრძელდება გამოყენებით იმ იდეებს, 12 00:00:37,880 --> 00:00:40,630 და მართლაც ხდება მათ თავისთავად, მაგრამ თარგმნა მათ 13 00:00:40,630 --> 00:00:44,220 სხვა ენა ცნობილია, როგორც C. ახლა, C არის უფრო ტრადიციული ენაზე. 14 00:00:44,220 --> 00:00:46,020 ეს ქვედა დონეზე ენის, თუ გნებავთ. 15 00:00:46,020 --> 00:00:47,300 >> ეს არის წმინდა ტექსტური. 16 00:00:47,300 --> 00:00:49,910 ასე რომ, ერთი შეხედვით, ეს ყველა აპირებს გამოიყურება საკმაოდ cryptic 17 00:00:49,910 --> 00:00:51,430 თუ თქვენ არასდროს დაპროგრამებულია ადრე. 18 00:00:51,430 --> 00:00:53,530 ჩვენ ვაპირებთ, რომ აქვს ნახევრად colons და ფრჩხილებში, 19 00:00:53,530 --> 00:00:55,150 და Curly braces, და სხვა. 20 00:00:55,150 --> 00:00:57,240 მაგრამ გააცნობიეროს, რომ მაშინაც კი, მიუხედავად იმისა, რომ სინტაქსი 21 00:00:57,240 --> 00:01:00,600 შესახებ გამოიყურებოდეს ცოტა უცნობ ყველაზე მეტად თქვენ, ვხედავ წარსულში რომ. 22 00:01:00,600 --> 00:01:03,220 და ცდილობენ, რომ იდეები რომ, მართლაც, ნაცნობი, 23 00:01:03,220 --> 00:01:06,750 იმიტომ, რომ აქ კვირაში ერთი, რა ჩვენ დავიწყოთ უნდა გავაკეთოთ, არის შედარება, 24 00:01:06,750 --> 00:01:08,980 თავდაპირველად, Scratch წინააღმდეგ C. 25 00:01:08,980 --> 00:01:12,350 >> ასე, მაგალითად, გავიხსენოთ, რომ, როდესაც ჩვენ განხორციელებული პირველი ჩვენი პროგრამების 26 00:01:12,350 --> 00:01:16,220 ბოლო დროს, ჩვენ გვქონდა ბლოკი, რომელიც ჩანდა პატარა რაღაც ამას, როდესაც 27 00:01:16,220 --> 00:01:19,990 მწვანე დროშა დააწკაპებთ, და მაშინ ჩვენ გვქონდა ერთი ან მეტი თავსატეხი ცალი ქვემოთ, 28 00:01:19,990 --> 00:01:22,150 ამ შემთხვევაში, ვთქვათ, hello მსოფლიოში. 29 00:01:22,150 --> 00:01:24,870 ასე რომ, მართლაც, Scratch, როდესაც მე დააჭირეთ რომ მწვანე დროშა 30 00:01:24,870 --> 00:01:27,390 აწარმოებს ჩემი პროგრამა, ასე რომ, ვთქვათ, ეს არის 31 00:01:27,390 --> 00:01:29,520 ბლოკები, რომ შესრულებული, ან აწარმოებს. 32 00:01:29,520 --> 00:01:32,230 და, კონკრეტულად, Scratch განაცხადა, hello, world. 33 00:01:32,230 --> 00:01:35,377 >> ახლა, მე ვერ მითითებული სხვადასხვა სიტყვა აქ. 34 00:01:35,377 --> 00:01:37,960 მაგრამ ჩვენ ვხედავთ, რომ, მართლაც, ბევრი ამ blocks-- და მართლაც, 35 00:01:37,960 --> 00:01:41,880 in C მრავალი ფუნქციები შეიძლება იყოს parametrized ან ადრინდელს 36 00:01:41,880 --> 00:01:43,150 გავაკეთოთ სხვადასხვა რამ. 37 00:01:43,150 --> 00:01:45,520 ფაქტობრივად, C, თუ ჩვენ აკონვერტირებთ, ახლა, 38 00:01:45,520 --> 00:01:47,567 ამ Scratch პროგრამა ამ სხვა ენაზე 39 00:01:47,567 --> 00:01:49,650 ჩვენ ვაპირებთ, რომ დაწერა პატარა რაღაც მსგავსი. 40 00:01:49,650 --> 00:01:52,540 >> უნდა აღინიშნოს, რომ არსებობს გარკვეული უცნობ სინტაქსი არ სავარაუდოდ, int, 41 00:01:52,540 --> 00:01:54,380 და ფრჩხილებს და ბათილად. 42 00:01:54,380 --> 00:01:57,740 მაგრამ printf-- მიუხედავად იმისა, რომ თქვენ ამას ვფიქრობ, რომ ეს იყოს მხოლოდ ბეჭდვა. 43 00:01:57,740 --> 00:02:00,120 მაგრამ ბეჭდვის ნიშნავს ბეჭდვითი დაფორმატდა, როგორც ჩვენ მალე. 44 00:02:00,120 --> 00:02:02,140 ეს ფაქტიურად ბეჭდვა ეკრანზე რასაც 45 00:02:02,140 --> 00:02:05,990 არის შიგნით იმ ფრჩხილებში, რომელიც რა თქმა უნდა, ამ შემთხვევაში, hello მსოფლიოში. 46 00:02:05,990 --> 00:02:09,290 >> მაგრამ თქვენ შეამჩნევთ სხვა სინტაქსი, ორმაგი შეთავაზებები, 47 00:02:09,290 --> 00:02:11,890 რომ ფრჩხილებში ბოლოს, ნახევრად მსხვილი ნაწლავის და მოსწონს. 48 00:02:11,890 --> 00:02:15,027 ასე რომ, ცოტა ოვერჰედის, ასე ვთქვათ, როგორც კოგნიტიური 49 00:02:15,027 --> 00:02:17,860 და სინტაქსურად, რომ ჩვენ ვაპირებთ უნდა გვახსოვდეს, რომ ხანგრძლივი. 50 00:02:17,860 --> 00:02:20,720 მაგრამ გვესმის, რომ პრაქტიკაში, ეს დაიწყებს გადმოხტა თქვენ. 51 00:02:20,720 --> 00:02:24,920 >> ფაქტობრივად, მოდით ფოკუსირება, რომ ერთი ფუნქცია კონკრეტულად ამ შემთხვევაში, 52 00:02:24,920 --> 00:02:26,290 მიესალმები მსოფლიოში. 53 00:02:26,290 --> 00:02:27,560 ასე რომ ვთქვათ, არის ფუნქცია. 54 00:02:27,560 --> 00:02:31,320 Hello world მისი პარამეტრი, ან არგუმენტი, მისი დაკონფიგურირება. 55 00:02:31,320 --> 00:02:34,320 >> და ეკვივალენტურობის C მხოლოდ იქნება ეს ერთი ხაზი აქ, 56 00:02:34,320 --> 00:02:38,710 სადაც printf უდრის, ვთქვათ, ორმაგი ციტირებული სტრიქონი, hello 57 00:02:38,710 --> 00:02:41,470 მსოფლიოს უდრის, რა თქმა უნდა, რა არის თეთრი ყუთი იქ. 58 00:02:41,470 --> 00:02:45,680 და წარმატებული ო, თუმცა ცოტა უცნაური და არ არსებობს Scratch, 59 00:02:45,680 --> 00:02:49,380 უბრალოდ აპირებს აქვს ეფექტი ჩვენ გამოგიგზავნით ხედავთ კომპიუტერი, ისევე როგორც ჩემი Mac ან PC, 60 00:02:49,380 --> 00:02:51,660 მხოლოდ მოძრავი კურსორი მომდევნო ხაზი. 61 00:02:51,660 --> 00:02:53,970 ეს იგივეა, hitting შეიყვანეთ თქვენს კლავიატურაზე. 62 00:02:53,970 --> 00:02:55,580 >> ასე რომ, ჩვენ ვხედავთ, რომ კიდევ დიდი ხნის განმავლობაში. 63 00:02:55,580 --> 00:02:58,640 მაგრამ პირველი, მოდით შევხედოთ ამ სხვა, მაგალითად, იმ შემთხვევაში, მარყუჟების. 64 00:02:58,640 --> 00:03:02,830 ჩვენ გვქონდა ამ სამუდამოდ მარყუჟის ბოლო დროს, რომელიც იყო სერია თავსატეხი ცალი 65 00:03:02,830 --> 00:03:05,490 რომ რაღაც გააკეთა ფაქტიურად forever-- ამ შემთხვევაში, 66 00:03:05,490 --> 00:03:08,360 , Hello World, Hello World, მშვენიერია, hello მსოფლიოში. 67 00:03:08,360 --> 00:03:10,350 ასე რომ, ეს უსასრულო ციკლი დიზაინი. 68 00:03:10,350 --> 00:03:14,580 >> In C, თუ ჩვენ გვინდა, რომ შეასრულოს ეს იგივე იდეა, შესაძლოა, უბრალოდ, ამის გაკეთება. 69 00:03:14,580 --> 00:03:19,570 მიუხედავად იმისა, რომ მართალია, printf მიესალმები world-- ახლა ხოლო, უბრალოდ სემანტიკურად, სახის 70 00:03:19,570 --> 00:03:23,090 წარმოსახავს აკეთებს რაღაც ისევ და ისევ და ისევ, 71 00:03:23,090 --> 00:03:23,980 და რამდენ ხანს? 72 00:03:23,980 --> 00:03:27,990 ისე, ჭეშმარიტი შეგახსენებთ, რომ ნამდვილი მხოლოდ ან ერთი. 73 00:03:27,990 --> 00:03:30,660 >> და ჭეშმარიტი, რა თქმა უნდა, ყოველთვის ასეა. 74 00:03:30,660 --> 00:03:33,060 ასე რომ, ეს არის ერთგვარი უაზრო განცხადება უბრალოდ ვთქვა, მართალია. 75 00:03:33,060 --> 00:03:36,890 მაგრამ მართლაც, ეს არის მიზანმიმართული, იმიტომ, რომ თუ ნამდვილი მხოლოდ ყოველთვის ასეა, 76 00:03:36,890 --> 00:03:40,850 მეტი, ხოლო ჭეშმარიტი მხოლოდ გულისხმობს, თუ ცოტა ირიბად, 77 00:03:40,850 --> 00:03:44,070 რომ შემდეგ ხაზი კოდი შორის იმ curly აფრთხილებს 78 00:03:44,070 --> 00:03:48,320 უნდა უბრალოდ შეასრულოს ისევ და ისევ, და ისევ, და არასოდეს რეალურად შეწყვიტოს. 79 00:03:48,320 --> 00:03:50,230 >> მაგრამ თუ თქვენ გსურთ თქვენი loop შეჩერება, როგორც ჩვენ 80 00:03:50,230 --> 00:03:54,500 ბოლო დროს, რაღაც ეს, ვიმეორებ, შემდეგ 50-ჯერ 81 00:03:54,500 --> 00:03:57,700 in C, ჩვენ შეგვიძლია გავაკეთოთ იგივე, რაც ე.წ. მარყუჟის სიტყვით 82 00:03:57,700 --> 00:03:59,330 არ მიმდინარეობს, ხოლო, მაგრამ. 83 00:03:59,330 --> 00:04:03,290 და მაშინ ჩვენ გვაქვს რამდენიმე ახალი სინტაქსი აქ, ერთად int i უდრის 0, i ნაკლებია, ვიდრე 50, 84 00:04:03,290 --> 00:04:03,880 i ++. 85 00:04:03,880 --> 00:04:05,430 და ჩვენ დავბრუნდებით რომ. 86 00:04:05,430 --> 00:04:09,660 მაგრამ ეს არ არის უბრალოდ, თუ ჩვენ გვინდა თარგმნა კომპლექტი Scratch ბლოკები 87 00:04:09,660 --> 00:04:13,079 კომპლექტი C ხაზი კოდი. 88 00:04:13,079 --> 00:04:14,450 >> იმავდროულად, განიხილოს ცვლადები. 89 00:04:14,450 --> 00:04:16,540 და, ფაქტობრივად, ჩვენ უბრალოდ ვნახეთ ერთ მომენტში წინ. 90 00:04:16,540 --> 00:04:21,220 და იმ შემთხვევაში, Scratch, თუ ჩვენ უნდოდა განაცხადოს ცვლადში i 91 00:04:21,220 --> 00:04:24,590 მე რომ რიცხვი, უბრალოდ ნომერი, და ჩვენ გვინდა, რომ მითითებული, რომ ეს გარკვეული მნიშვნელობა, 92 00:04:24,590 --> 00:04:28,410 ჩვენ ვიყენებთ ამ ფორთოხლის ბლოკირება აქ მითითებული i 0. 93 00:04:28,410 --> 00:04:30,800 >> და ვნახავთ დღეს და მიღმა, ისევე, როგორც გასულ კვირას, 94 00:04:30,800 --> 00:04:33,850 პროგრამისტების თითქმის ყოველთვის დაიწყება დათვლის ნულიდან, ნამდვილად 95 00:04:33,850 --> 00:04:34,950 კონვენციას. 96 00:04:34,950 --> 00:04:37,250 არამედ იმიტომ, რომ გავიხსენოთ ჩვენი განხილვის ორობითი, 97 00:04:37,250 --> 00:04:39,990 ყველაზე პატარა ნომერი შეგიძლიათ წარმოადგენს ნებისმიერი რაოდენობის ბიტი 98 00:04:39,990 --> 00:04:41,640 მხოლოდ იქნება 0 თავად. 99 00:04:41,640 --> 00:04:45,190 ასე რომ, ჩვენ ზოგადად დაიწყოს ინიციალიზაციისას კი ჩვენი ცვლადები 0. 100 00:04:45,190 --> 00:04:47,710 >> და C გავაკეთოთ იგივე, ჩვენ ვაპირებთ, რომ int 101 00:04:47,710 --> 00:04:50,110 for რიცხვი, უბრალოდ კონვენციას. 102 00:04:50,110 --> 00:04:53,390 მე ვერ მოუწოდა ამ ცვლადის არაფერი მინდა, ისევე, როგორც Scratch. 103 00:04:53,390 --> 00:04:57,770 და მაშინ უდრის 0 უბრალოდ ასიგნებების ღირებულების 0 მარჯვენა ფლანგიდან 104 00:04:57,770 --> 00:05:01,319 და აყენებს მას ცვლადი, ან შენახვის კონტეინერი იქ, მარცხენა. 105 00:05:01,319 --> 00:05:04,360 და ნახევრად მსხვილი ნაწლავის როგორც ჩვენ see-- და ჩვენ ვნახეთ რამდენიმე ამ already-- 106 00:05:04,360 --> 00:05:06,530 მხოლოდ იმას ნიშნავს, ბოლომდე აზრის. 107 00:05:06,530 --> 00:05:09,430 გაგრძელება უნდა გავაკეთოთ რაღაც ხაზები, რომ დაიცვას. 108 00:05:09,430 --> 00:05:11,330 >> ახლა, რაც შეეხება ლოგიკური გამონათქვამები? 109 00:05:11,330 --> 00:05:14,320 შეგახსენებთ, რომ Scratch, ეს იყო გამონათქვამები 110 00:05:14,320 --> 00:05:16,740 რომ ან ნამდვილი ან false კითხვები, 111 00:05:16,740 --> 00:05:18,910 მართლაც, რომ ჭეშმარიტი ან მცდარი. 112 00:05:18,910 --> 00:05:21,960 ასე რომ, იმ შემთხვევაში, Scratch, ჩვენ შეგვიძლია ვთხოვთ მარტივი კითხვა, როგორც ეს, 113 00:05:21,960 --> 00:05:24,586 არის მე ნაკლები 50? 114 00:05:24,586 --> 00:05:25,710 ასე რომ, მე, კიდევ ერთხელ, არის მთელი რიცხვი. 115 00:05:25,710 --> 00:05:27,210 იქნებ ჩვენ გამოყენებით, in Scratch პროგრამა 116 00:05:27,210 --> 00:05:29,310 შენარჩუნება სიმღერა ქულა ან რამე მაგდაგვარს. 117 00:05:29,310 --> 00:05:33,810 ასე რომ, ეს სინტაქსი აქ Scratch მხოლოდ იმას ნიშნავს, არის მე 50-ზე ნაკლები? 118 00:05:33,810 --> 00:05:37,330 ისე, საბედნიეროდ, რაღაც მარტივი C. და თარგმნა, 119 00:05:37,330 --> 00:05:41,780 ჩვენ, უბრალოდ, ვთქვათ, მე ნაკლებად 50-ზე, გამოიყენოთ ნაცნობი გასაღები 120 00:05:41,780 --> 00:05:42,850 თქვენს კლავიატურაზე. 121 00:05:42,850 --> 00:05:45,141 >> ამასობაში, თუ თქვენ სურდა ამბობენ, რომ რაღაც უფრო ზოგადი, 122 00:05:45,141 --> 00:05:49,890 , ასევე, არის x ნაკლებია ვიდრე Y, სადაც თითოეული x და y თავად არიან ცვლადები? 123 00:05:49,890 --> 00:05:52,280 ჩვენ შეგვიძლია გავაკეთოთ იგივე in C, ასე რომ სანამ ჩვენ 124 00:05:52,280 --> 00:05:53,942 ის ამ ცვლადების უკვე. 125 00:05:53,942 --> 00:05:55,650 ჩვენ დავინახავთ, თუ როგორ უნდა გავაკეთოთ, რომ დიდი ხნის განმავლობაში. 126 00:05:55,650 --> 00:05:58,590 ჩვენ, უბრალოდ, აცხადებენ x ნაკლები ვიდრე y. 127 00:05:58,590 --> 00:06:00,530 >> ასე, რომ თქვენ ვიწყებთ ვხედავ რაღაც მსგავსება. 128 00:06:00,530 --> 00:06:03,490 და ის ხალხი, ვინც გააკეთა Scratch, რა თქმა უნდა 129 00:06:03,490 --> 00:06:05,250 შთაგონებული ზოგიერთი ძირითადი იდეები. 130 00:06:05,250 --> 00:06:10,350 და დაინახავთ ამ სახის სინტაქსი ბევრ languages-- 131 00:06:10,350 --> 00:06:12,160 არა მხოლოდ ნულიდან, არ მხოლოდ C, მაგრამ Python, 132 00:06:12,160 --> 00:06:14,790 და JavaScript და სხვა ენებზე მაინც. 133 00:06:14,790 --> 00:06:18,270 >> განვიხილოთ კიდევ ერთი მშენებლობა C, ცნება მდგომარეობაში, 134 00:06:18,270 --> 00:06:20,370 თავისსავე პირობითად. 135 00:06:20,370 --> 00:06:22,720 თუ რაღაც მართალია, ამის გაკეთება. 136 00:06:22,720 --> 00:06:24,457 თუ რაღაც მართალია, ამის გაკეთება. 137 00:06:24,457 --> 00:06:27,040 ეს ერთგვარი პროგრამირების ეკვივალენტს გზის გასაყარი. 138 00:06:27,040 --> 00:06:29,730 იქნებ ეს ორი გზა ჩანგალი, სამი გზა ჩანგალი, ან მეტი. 139 00:06:29,730 --> 00:06:32,800 და Scratch, ჩვენ შეიძლება ჩანს რაღაც მსგავსი. 140 00:06:32,800 --> 00:06:34,010 >> ასე რომ, ეს ერთ-ერთი დიდი ერთი. 141 00:06:34,010 --> 00:06:36,750 მაგრამ ვნახოთ, ნათესავი სიმარტივის ლოგიკა. 142 00:06:36,750 --> 00:06:44,010 თუ x არის ნაკლები ვიდრე y, მაშინ ამბობენ x ნაკლებია ვიდრე y სხვაგან, თუ x მეტია y, 143 00:06:44,010 --> 00:06:46,230 მაშინ ამბობენ x მეტია y. 144 00:06:46,230 --> 00:06:48,300 და მაშინ, ლოგიკურად, თუ თქვენ ფიქრობთ, თავში Scratch 145 00:06:48,300 --> 00:06:52,610 ან უბრალოდ საკუთარი ადამიანის ინტუიცია, ასევე, თუ x არ აღემატება y და x 146 00:06:52,610 --> 00:06:57,000 არ არის ნაკლები ვიდრე y, მაშინ, რა თქმა უნდა, x იქნება თანაბარი წ. 147 00:06:57,000 --> 00:06:59,690 ასე რომ, ამ შემთხვევაში, მობუდარი იმ Scratch ბლოკები, 148 00:06:59,690 --> 00:07:02,580 შეგვიძლია მივაღწიოთ სამ გზა გზის გასაყარი? 149 00:07:02,580 --> 00:07:04,980 >> ამასობაში, თუ ჩვენ გვინდა, რომ გავაკეთოთ, რომ C, იგი სავარაუდოდ 150 00:07:04,980 --> 00:07:08,420 გამოიყურება ცოტა simpler-- მინიმუმ ერთხელ თქვენ იცნობს სინტაქსი. 151 00:07:08,420 --> 00:07:12,050 თუ x ნაკლებია ვიდრე Y, printf x არის ნაკლები ვიდრე y. 152 00:07:12,050 --> 00:07:16,140 Else თუ x მეტია y, printf x მეტია y. 153 00:07:16,140 --> 00:07:21,210 სხვაგან printf x უდრის y-- და, ერთხელ, იმ წარმატებული დამთავრდა 154 00:07:21,210 --> 00:07:24,160 მათთვის, ახალი ხაზები, ასე რომ, თუ თქვენ რეალურად გაიქცა ამ სახის პროგრამა 155 00:07:24,160 --> 00:07:25,940 ეს იქნებოდა მხოლოდ გადაადგილება კურსორი საბოლოოდ 156 00:07:25,940 --> 00:07:28,100 შემდეგი ხაზი ეკრანზე. 157 00:07:28,100 --> 00:07:31,270 >> ახლა, იმავდროულად Scratch ჰქონდა სხვა უფრო დახვეწილი ფუნქციები, მხოლოდ 158 00:07:31,270 --> 00:07:34,320 ზოგიერთი რომელიც ჩვენ ვაპირებთ თავდაპირველად გადაადგილება მეტი სამყაროში C. 159 00:07:34,320 --> 00:07:37,010 ერთ-ერთი მათგანი იყო მოუწოდა სია ნულიდან. 160 00:07:37,010 --> 00:07:39,100 და ეს იყო სპეციალური ტიპის ცვლადი, 161 00:07:39,100 --> 00:07:42,840 საშუალებას გაძლევთ შეინახოთ სხვადასხვა რამ მას უკან, უკან, უკან, უკან. 162 00:07:42,840 --> 00:07:45,540 >> In C, მას არ აქვს სიები, თავისთავად, მაგრამ რაღაც 163 00:07:45,540 --> 00:07:48,090 რომ უფრო ზოგადად მოუწოდა მასივები, მიუხედავად იმისა, რომ ჩვენ 164 00:07:48,090 --> 00:07:50,590 დავბრუნდებით შემდეგ ამ სემესტრში ეძებს რაღაც 165 00:07:50,590 --> 00:07:52,780 მოუწოდა ჩამონათვალი, ან მართლაც უკავშირდება სიაში. 166 00:07:52,780 --> 00:07:55,510 მაგრამ ახლა, უახლოესი ექვივალენტი C ჩვენთვის 167 00:07:55,510 --> 00:07:57,345 იქნება რაღაც მოუწოდა მასივი. 168 00:07:57,345 --> 00:07:59,740 ხოლო მასივი უბრალოდ სპეციალური ტიპის ცვლადი 169 00:07:59,740 --> 00:08:03,160 რომელიც საშუალებას გაძლევთ ჩაწეროთ მონაცემები უკან, უკან, უკან, უკან. 170 00:08:03,160 --> 00:08:05,840 >> და, მართლაც, Scratch, თუ გვინდოდა, რათა შეამოწმონ 171 00:08:05,840 --> 00:08:09,030 პირველ ელემენტს მასივი ან list-- და მე ვაპირებ მოვუწოდო მას, 172 00:08:09,030 --> 00:08:13,600 კონვენციის, argv, არგუმენტი ვექტორი, მაგრამ უფრო, რომ ხანგრძლივი. 173 00:08:13,600 --> 00:08:17,090 თუ მინდა კიდევ პირველ ელემენტს of argv, მსოფლიოში Scratch 174 00:08:17,090 --> 00:08:20,930 თქვენ რეალურად გააკეთებს, როგორც წესი, დაიწყება დათვლის 1. 175 00:08:20,930 --> 00:08:22,850 >> ასე რომ, მე შეიძლება მიიღოს ნივთი 1 argv. 176 00:08:22,850 --> 00:08:26,310 ეს არის ის, თუ რამდენად MIT ხორციელდება ცნება სიები. 177 00:08:26,310 --> 00:08:29,860 მაგრამ C, მე ვაპირებ უფრო მარტივად, უბრალოდ ამბობენ, argv, 178 00:08:29,860 --> 00:08:32,758 რაც კიდევ ერთხელ არის სახელი ჩემი list-- ან უნდა იყოს მკაფიო, მასივი. 179 00:08:32,758 --> 00:08:34,549 და თუ მე მინდა, რომ პირველი ელემენტები, მე ვაპირებ 180 00:08:34,549 --> 00:08:37,890 გამოიყენოს კვადრატულ ფრჩხილებში, რომელიც თქვენ არ შეიძლება ხშირად გამოყენებული ქვეშ კლავიატურაზე. 181 00:08:37,890 --> 00:08:40,150 >> მაგრამ 0 უბრალოდ ნიშნავს, ჩემთვის პირველი. 182 00:08:40,150 --> 00:08:42,160 ასე რომ ხანდახან და როგორც დრო გადის, ჩვენ ვაპირებთ 183 00:08:42,160 --> 00:08:44,570 უნდა დაიწყოს, რომ ამ გაორების შორის Scratch და C, 184 00:08:44,570 --> 00:08:46,070 რომლის დროსაც Scratch იყენებს მას. 185 00:08:46,070 --> 00:08:47,670 ჩვენ in C გამოიყენოთ 0 აქ. 186 00:08:47,670 --> 00:08:49,420 მაგრამ თქვენ სწრაფად ვხედავთ ერთხელ გესმით 187 00:08:49,420 --> 00:08:52,920 საფუძვლების თითოეულ ენაზე, რომელიც ეს რამ დაიწყება მიიღოს ყველა სხვა 188 00:08:52,920 --> 00:08:56,860 ნაცნობი პრაქტიკა და პრაქტიკა. 189 00:08:56,860 --> 00:08:59,700 >> ასე რომ, მოდით რეალურად შევხედოთ ახლა პროგრამა. 190 00:08:59,700 --> 00:09:04,031 აქ უნდა იყოს პირველი ჩვენი C კოდის სრული პროგრამების. 191 00:09:04,031 --> 00:09:06,280 და პროგრამა, ჩვენ ვაპირებთ შესთავაზოს განსახილველად 192 00:09:06,280 --> 00:09:09,340 არის ერთი, რომ ექვივალენტი რომ ადრე Scratch ცალი. 193 00:09:09,340 --> 00:09:13,210 >> ასე რომ, აქ, ჩვენ გვაქვს რა არის სავარაუდოდ უმარტივესი C პროგრამის 194 00:09:13,210 --> 00:09:15,410 თქვენ შეგიძლიათ დაწეროთ, რომ რეალურად აკეთებს რაღაც. 195 00:09:15,410 --> 00:09:18,250 ახლა, ჩვენ შევხედოთ წარსულში, ახლა, უკვე მოიცავს, 196 00:09:18,250 --> 00:09:21,190 სტანდარტული io.h და ამ კუთხის ფრჩხილებში და int, და ბათილად, 197 00:09:21,190 --> 00:09:22,840 და Curly braces, და ასე შემდეგ. 198 00:09:22,840 --> 00:09:25,390 >> და მოდით უბრალოდ ფოკუსირება რა, მინიმუმ ინტუიციურად, 199 00:09:25,390 --> 00:09:26,860 შეიძლება გადმოხტა თქვენ უკვე. 200 00:09:26,860 --> 00:09:30,300 ფაქტობრივად, მთავარი, მე არ აუცილებლად ვიცი, რა არის ეს, 201 00:09:30,300 --> 00:09:34,580 მაგრამ ჰგავს Scratch ჰქონდა, რომ როდესაც მწვანე დროშა დააწკაპებთ თავსატეხი ცალი, 202 00:09:34,580 --> 00:09:39,070 ასე აკეთებს C, როგორც პროგრამირების ენა აქვს ძირითადი ნაჭერი კოდი, რომელიც 203 00:09:39,070 --> 00:09:43,380 იღებს შესრულებული იყოს. და, მართლაც, ეს ფაქტიურად აპირებს ეწოდოს მთავარი. 204 00:09:43,380 --> 00:09:44,720 >> ასე რომ, მთავარი არის ფუნქცია. 205 00:09:44,720 --> 00:09:48,720 და ეს არის სპეციალური ფუნქცია, რომელიც არსებობს C რომ, როდესაც თქვენ აწარმოებს პროგრამა, 206 00:09:48,720 --> 00:09:52,720 ეს არის მთავარი, რომელიც იღებს მართავენ იყოს. მსოფლიოში Scratch, 207 00:09:52,720 --> 00:09:56,970 ეს იყო, როგორც წესი, როდესაც მწვანე დროშა აირჩიეთ, რომ მივიღე აწარმოებს იყოს. 208 00:09:56,970 --> 00:10:01,130 >> ამავდროულად, ჩვენ ვნახეთ ადრე, printf და ბეჭდური დაფორმატებას, რომ 209 00:10:01,130 --> 00:10:05,620 იქნება ფუნქცია, რომელიც გააჩნია C, ერთად მთელი bunch of სხვები, 210 00:10:05,620 --> 00:10:10,140 რომ ნების დრო და დრო ერთხელ, რათა ზუსტად 211 00:10:10,140 --> 00:10:12,450 როგორც მისი სახელი ვარაუდობს, ბეჭდვა რაღაც. 212 00:10:12,450 --> 00:10:13,500 რა გვინდა ბეჭდვა? 213 00:10:13,500 --> 00:10:15,770 ისე, ჩვენ ვხედავთ, რომ მიერ თან ერთვის გმირები 214 00:10:15,770 --> 00:10:18,680 როგორიცაა these-- Hello World, წარმატებული ო ორმაგ ბრჭყალებში, 215 00:10:18,680 --> 00:10:23,040 ჩვენ შეგვიძლია ვუთხრათ printf ზუსტად რა უნდა ბეჭდვა ეკრანზე. 216 00:10:23,040 --> 00:10:26,430 >> მაგრამ იმისათვის, რომ ამის გაკეთება რომ, ჩვენ, სამწუხაროდ, 217 00:10:26,430 --> 00:10:30,010 უნდა მიიღოს ის, რაც არის უკვე cryptic ჩვენს ადამიანებში, 218 00:10:30,010 --> 00:10:34,510 მაგრამ მაინც ეს გარკვეულწილად readable-- მკვეთრი მოიცავს, სტანდარტული io.h, int, 219 00:10:34,510 --> 00:10:39,340 მთავარი, ბათილად, printf, ყველა ჯადოსნური მართლწერის ჩვენ უბრალოდ დაინახა ეკრანზე. 220 00:10:39,340 --> 00:10:42,470 მაგრამ ჩვენ რეალურად უნდა წასვლა უფრო arcane მაინც. 221 00:10:42,470 --> 00:10:47,140 ჩვენ ჯერ უნდა თარგმნოს კოდი რომ ჩვენ წერენ შევიდა მანქანა კოდი. 222 00:10:47,140 --> 00:10:51,370 და გავიხსენოთ, რომ გასულ კვირას მანქანები, მინიმუმ ვინც ვიცით, აქ, 223 00:10:51,370 --> 00:10:54,450 ბოლოს დღეს, მხოლოდ მესმის, zeros და პირობა. 224 00:10:54,450 --> 00:10:58,100 >> და ღმერთი ჩემი, თუ ჩვენ გვქონდა დაწერა ეს zeros და პირობა, რომ რეალურად პროგრამა, 225 00:10:58,100 --> 00:11:01,260 ეს იქნებოდა ძალიან, ძალიან სწრაფად მიიღოს fun გარეთ არაფერი. 226 00:11:01,260 --> 00:11:05,150 მაგრამ აღმოჩნდება, ერთ გასულ კვირას, რომ ამ ნიმუშების zeros და პირობა 227 00:11:05,150 --> 00:11:06,400 მხოლოდ განსაკუთრებული მნიშვნელობა აქვს. 228 00:11:06,400 --> 00:11:08,500 გარკვეულ კონტექსტში, ისინი შეიძლება ნიშნავს ნომრები. 229 00:11:08,500 --> 00:11:11,840 >> ზოგიერთ კონტექსტში, ისინი იმას ნიშნავს, წერილები, ან ფერები, ან ნებისმიერი რაოდენობის 230 00:11:11,840 --> 00:11:14,710 სხვა აბსტრაქციები არ საფუძველზე. 231 00:11:14,710 --> 00:11:18,450 მაგრამ ისევე, როგორც თქვენი კომპიუტერი პროცესორი, ცენტრალური გენერაციის ერთეულის, 232 00:11:18,450 --> 00:11:20,390 და ტვინი შიგნით თქვენი კომპიუტერი. 233 00:11:20,390 --> 00:11:22,240 ეს, როგორც წესი Intel შიგნით, იმიტომ, რომ ის 234 00:11:22,240 --> 00:11:24,900 ერთ-ერთი უმსხვილესი კომპანიები რომელიც იღებს CPUs კომპიუტერები. 235 00:11:24,900 --> 00:11:28,910 >> ისე, Intel პროცესორები და სხვები უბრალოდ გადავწყვიტეთ წინასწარ 236 00:11:28,910 --> 00:11:33,970 რომ გარკვეული ნიმუშების zeros და პირობა ნიშნავს კონკრეტული რამ. 237 00:11:33,970 --> 00:11:37,040 გარკვეული ნიმუშების zeros და პირობა იქნება ეს ბეჭდვა ამ ეკრანზე, 238 00:11:37,040 --> 00:11:39,710 ან დაამატოთ ეს ორი ნომერი, ან სხვაობა ამ ორ რიცხვს, 239 00:11:39,710 --> 00:11:43,310 ან გადაადგილება ამ ნაჭერი მონაცემები ჩემი კომპიუტერის მეხსიერების მეტი აქ, 240 00:11:43,310 --> 00:11:47,870 ან ნებისმიერი რაოდენობის სხვა ძალიან დაბალი დონე, მაგრამ საბოლოო ჯამში, სასარგებლო, ოპერაციებში. 241 00:11:47,870 --> 00:11:53,022 მაგრამ, საბედნიეროდ, ჩვენ ადამიანები არ აპირებს უნდა იცოდეს, ამ დონის დეტალურად. 242 00:11:53,022 --> 00:11:56,230 მართლაც, ისევე, როგორც ბოლო დროს, სადაც ჩვენ ამოღებული ისევ და ისევ და ისევ, 243 00:11:56,230 --> 00:11:58,930 შენობა ძალიან დაბალი დონე primitives მოსწონს zeros და პირობა 244 00:11:58,930 --> 00:12:01,160 უმაღლესი დონის ცნებები ნომრები, და წერილები, 245 00:12:01,160 --> 00:12:04,330 და ფერები, და სხვა, ასე რომ, შეგვიძლია, როგორც პროგრამისტები 246 00:12:04,330 --> 00:12:07,080 დავდგეთ მხრებზე სხვები, ვინც არ მოვა ჩვენს წინაშე 247 00:12:07,080 --> 00:12:11,260 და პროგრამული უზრუნველყოფა, რომ სხვა ადამიანი არ წერია, სანამ us-- 248 00:12:11,260 --> 00:12:14,340 კერძოდ პროგრამების მოუწოდა compilers. 249 00:12:14,340 --> 00:12:17,770 >> C არის ენა, რომელიც როგორც წესი, შედგენილი, 250 00:12:17,770 --> 00:12:22,130 რაც იმას ნიშნავს, მოაქცია კოდის მანქანა კოდი. 251 00:12:22,130 --> 00:12:25,230 კერძოდ, ეს რას ნიშნავს ის არის, რომ თუ თქვენ მოხვდით თქვენი წყარო 252 00:12:25,230 --> 00:12:29,530 კოდი, რომ თქვენ თავს წერენ, როგორც ჩვენ მალე იქნება რაღაც მომენტში ეკრანზე, 253 00:12:29,530 --> 00:12:33,140 და გსურთ დააკონვერტიროთ ის საბოლოო ჯამში, მანქანა კოდი 254 00:12:33,140 --> 00:12:37,100 იმ zeros და პირობა, რომ მხოლოდ თქვენი Mac ან თქვენი კომპიუტერის 255 00:12:37,100 --> 00:12:41,230 understands-- თქვენ მოხვდით პირველი შესანახი რომ კოდის როგორც 256 00:12:41,230 --> 00:12:46,340 შეყვანის სპეციალური პროგრამა მოუწოდა შემდგენელი, 257 00:12:46,340 --> 00:12:48,974 გამოშვება, რომელიც ჩვენ ვნახოთ მანქანა კოდი. 258 00:12:48,974 --> 00:12:51,890 და, მართლაც, ბოლო დროს ჩვენ ვისაუბრეთ შესახებ, მართლაც, ბოლოს დღეს, 259 00:12:51,890 --> 00:12:52,610 პრობლემის გადაჭრა. 260 00:12:52,610 --> 00:12:53,360 თქვენ მოხვდით საშუალებებით. 261 00:12:53,360 --> 00:12:54,318 და თქვენ მოხვდით შედეგები. 262 00:12:54,318 --> 00:12:56,560 და თქვენ მოხვდით გარკვეული სახის ალგორითმი შუა. 263 00:12:56,560 --> 00:12:59,830 >> ალგორითმები შეიძლება რა თქმა უნდა განხორციელებული პროგრამული უზრუნველყოფა, 264 00:12:59,830 --> 00:13:02,900 როგორც ვნახეთ pseudocode გასულ კვირას და, როგორც ვნახავთ, ფაქტობრივი კოდი 265 00:13:02,900 --> 00:13:03,490 ამ კვირას. 266 00:13:03,490 --> 00:13:06,430 ასე რომ, შემდგენელი ნამდვილად კომპლექტი ალგორითმები შიგნით 267 00:13:06,430 --> 00:13:10,060 ის, რომ, თუ როგორ უნდა გარდაქმნას სპეციალური სიტყვა, 268 00:13:10,060 --> 00:13:12,180 როგორიცაა ძირითადი და printf, და სხვები, რომ ჩვენ უბრალოდ 269 00:13:12,180 --> 00:13:17,620 დაინახა შევიდა ნიმუშების zeros და პირობა, რომ Intel შიგნით და სხვა პროცესორები 270 00:13:17,620 --> 00:13:20,020 რეალურად ესმის. 271 00:13:20,020 --> 00:13:22,460 ასე რომ, როგორ გავაკეთოთ ეს? 272 00:13:22,460 --> 00:13:24,470 სად მივიღებთ შემდგენელი? 273 00:13:24,470 --> 00:13:26,400 >> ყველაზე ჩვენგანი აქ აქვს Mac ან PC. 274 00:13:26,400 --> 00:13:29,152 და თქვენ გაშვებული Mac OS, ან Windows, ან Linux, ან Solaris, 275 00:13:29,152 --> 00:13:30,860 ან ნებისმიერი რაოდენობის სხვა ოპერატიული სისტემა. 276 00:13:30,860 --> 00:13:32,568 და, მართლაც, ჩვენ შეგვიძლია გარეთ გადატანა ვებგვერდი 277 00:13:32,568 --> 00:13:35,710 და ჩამოტვირთვა შემდგენელი თქვენი Mac ან PC 278 00:13:35,710 --> 00:13:37,360 თქვენი კონკრეტული ოპერაციული სისტემა. 279 00:13:37,360 --> 00:13:39,617 მაგრამ ჩვენ ყველა უნდა სხვადასხვა გვერდებზე, ასე ვთქვათ. 280 00:13:39,617 --> 00:13:41,450 გვსურს აქვს ოდნავ სხვადასხვა კონფიგურაციით. 281 00:13:41,450 --> 00:13:43,210 და რამ არ იმუშავებს ყველა იგივე. 282 00:13:43,210 --> 00:13:45,280 და, მართლაც, ამ დღეებში ბევრი ჩვენგანი არ იყენებენ 283 00:13:45,280 --> 00:13:47,516 პროგრამა, რომელიც გადის მხოლოდ ჩვენს ლაპტოპები. 284 00:13:47,516 --> 00:13:49,390 სამაგიეროდ, ჩვენ ვიყენებთ რაღაც როგორც ბრაუზერი, რომელიც 285 00:13:49,390 --> 00:13:52,930 საშუალებას გვაძლევს, რათა შეამოწმონ ვებ დაფუძნებული განაცხადების ღრუბელი. 286 00:13:52,930 --> 00:13:55,630 და შემდეგ ამ სემესტრში, ჩვენ ყველაფერს გავაკეთებთ, ზუსტად რომ. 287 00:13:55,630 --> 00:13:59,660 ჩვენ წერენ განაცხადების ან პროგრამული უზრუნველყოფის გამოყენებით code-- არა C, 288 00:13:59,660 --> 00:14:02,860 მაგრამ სხვა ენებზე, როგორიცაა Python და JavaScript-- რომ აწარმოებს მოცული. 289 00:14:02,860 --> 00:14:05,860 >> და გავაკეთოთ, რომ, ჩვენ თვითონ დროს სემესტრის 290 00:14:05,860 --> 00:14:11,890 რეალურად გამოვიყენოთ Cloud დაფუძნებული გარემოს ცნობილია, როგორც CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 ეს არის ვებ დაფუძნებული პროგრამირების გარემოს, ან ინტეგრირებული განვითარება 292 00:14:16,030 --> 00:14:20,610 გარემოს, IDE, რომ აგებული ციხის ზოგიერთი ღია პროგრამული მოუწოდა Cloud 9. 293 00:14:20,610 --> 00:14:22,966 და ჩვენ გარკვეული პედაგოგიური simplifications მას 294 00:14:22,966 --> 00:14:25,840 ისე, რომ დასამალი გარკვეული თვისებები პირველი კვირის განმავლობაში, რომ ჩვენ არ გვჭირდება, 295 00:14:25,840 --> 00:14:27,770 მას შემდეგ, რაც თქვენ შეგიძლიათ გამოავლენს მათ და არა უმეტეს 296 00:14:27,770 --> 00:14:29,400 არაფერი გსურთ გარემოში. 297 00:14:29,400 --> 00:14:32,470 >> და ეს საშუალებას გვაძლევს, ძალიან, წინასწარ დააყენოთ გარკვეული პროგრამული უზრუნველყოფა. 298 00:14:32,470 --> 00:14:35,330 რამ, როგორიცაა ე.წ. CS50 ბიბლიოთეკა, რომელიც ჩვენ მალე 299 00:14:35,330 --> 00:14:39,210 გვაძლევს in C რამდენიმე დამატებითი ფუნქციები. 300 00:14:39,210 --> 00:14:44,392 ასე რომ, თუ მიდიხარ, საბოლოო ჯამში, CS50.io, თქვენ უნდა აიძულა შესვლა, 301 00:14:44,392 --> 00:14:46,350 და ერთხელ თქვენ და შექმნას ანგარიში უფასოდ, 302 00:14:46,350 --> 00:14:52,150 თქვენ შეძლებთ წვდომისათვის გარემოში, რომელიც გამოიყურება საკმაოდ მოსწონს ეს. 303 00:14:52,150 --> 00:14:53,760 >> ახლა, ეს არის ნაგულისხმები რეჟიმში. 304 00:14:53,760 --> 00:14:55,650 ყველაფერი ლამაზი და ნათელი ეკრანზე. 305 00:14:55,650 --> 00:14:57,941 ბევრ ჩვენგანს აქვს ჩვევა მომუშავე CS50 ცალი, რომელიც არის 306 00:14:57,941 --> 00:14:59,150 საკმაოდ გვიან ღამემდე. 307 00:14:59,150 --> 00:15:02,400 ასე რომ, ზოგიერთი შეიძლება ურჩევნია გადაქცევას ღამის რეჟიმი, ასე ვთქვათ. 308 00:15:02,400 --> 00:15:05,550 >> მაგრამ, საბოლოო ჯამში, თუ რას აპირებს ვხედავ ფარგლებში CS50 IDE 309 00:15:05,550 --> 00:15:08,340 არის სამი განსხვავებული areas-- ფართობი მარცხენა, სადაც 310 00:15:08,340 --> 00:15:12,604 თქვენი ფაილი ვაპირებთ იყოს ღრუბელი, ფართობი ზედა მარჯვენა 311 00:15:12,604 --> 00:15:14,270 სადაც თქვენი კოდი იქნება შეუძლებელია. 312 00:15:14,270 --> 00:15:16,650 თქვენ გექნებათ გახსნა ინდივიდუალური ჩანართების ნებისმიერი პროგრამა 313 00:15:16,650 --> 00:15:19,670 რომ წერთ ამ სემესტრში შიგნით რომ ზედა მარჯვენა კუთხეში. 314 00:15:19,670 --> 00:15:23,070 და მაშინ ყველაზე arcanely, და ჯერ ძლიერი, 315 00:15:23,070 --> 00:15:26,610 იქნება ამ რამ ქვედა ცნობილია, როგორც ტერმინალის ფანჯარაში. 316 00:15:26,610 --> 00:15:29,450 >> ეს არის ძველი სკოლა სარდლობის ხაზის ინტერფეისი, 317 00:15:29,450 --> 00:15:32,240 და CLI, რომელიც საშუალებას თქვენ შეასრულოს ბრძანებები 318 00:15:32,240 --> 00:15:35,260 იმ კომპიუტერში ამ შემთხვევაში, კომპიუტერი cloud-- 319 00:15:35,260 --> 00:15:39,090 გავაკეთოთ რამ, როგორიცაა კომპილაციის თქვენი კოდი კოდის მანქანა კოდი, 320 00:15:39,090 --> 00:15:43,600 აწარმოებს თქვენი პროგრამების, ან, რათა დაიწყოს თქვენი სერვერზე, ან თქვენი მონაცემთა ბაზა, 321 00:15:43,600 --> 00:15:47,454 და ნებისმიერი რაოდენობის სხვა ტექნიკა რომ ჩვენ დავიწყებთ გამოიყენოს ადრე ხანგრძლივი. 322 00:15:47,454 --> 00:15:49,370 მაგრამ იქ, ჩვენ აპირებს რეალურად 323 00:15:49,370 --> 00:15:51,240 წასვლა ონლაინ და დაუკარით. 324 00:15:51,240 --> 00:15:54,399 და გავაკეთოთ, რომ, მოდით პირველი დაიწყოს მოუქნელმა მთავარი, 325 00:15:54,399 --> 00:15:55,940 და წერა ძირითადი ნაწილი პროგრამა. 326 00:15:55,940 --> 00:15:59,170 და მოდით, რომ ფუნქცია printf, რომელიც ჩვენ გამოყენებული ადრე, 327 00:15:59,170 --> 00:16:01,050 უბრალოდ ვთქვა რაღაც. 328 00:16:01,050 --> 00:16:04,910 >> ასე რომ აქ ვარ უკვე შიგნით CS50 IDE. 329 00:16:04,910 --> 00:16:05,930 მე შესული სისტემაში წინასწარ. 330 00:16:05,930 --> 00:16:07,360 და მე სრული ნაჩვენები ფანჯარა. 331 00:16:07,360 --> 00:16:09,670 ასე რომ, საბოლოო ჯამში, თქვენ ძალიან მოდის პრობლემები 332 00:16:09,670 --> 00:16:12,960 მოჰყვება ანალოგიური ნაბიჯები, რომ უზრუნველყოფს ონლაინ დოკუმენტაცია. 333 00:16:12,960 --> 00:16:16,360 ასე რომ თქვენ არ უნდა ფიქრი შთამნთქმელი ყველა პატარა ტექნიკური ნაბიჯი 334 00:16:16,360 --> 00:16:17,730 რომ გავაკეთო დღეს აქ. 335 00:16:17,730 --> 00:16:19,222 >> მაგრამ თქვენ მიიღებთ ეკრანზე მოსწონს ეს. 336 00:16:19,222 --> 00:16:20,430 მე არ უნდა იყოს ღამის რეჟიმში. 337 00:16:20,430 --> 00:16:22,944 და თქვენ შეგიძლიათ brighten ყველაფერი up გამორთვა ღამის რეჟიმში. 338 00:16:22,944 --> 00:16:24,860 და ბოლოს დღეს, თქვენ აპირებს ვხედავ 339 00:16:24,860 --> 00:16:30,090 ამ სამი ძირითადი areas-- ფაილი ბრაუზერის მარცხენა კოდი ჩანართების ზევით, 340 00:16:30,090 --> 00:16:32,430 და ტერმინალის ფანჯარაში ბოლოში. 341 00:16:32,430 --> 00:16:34,890 >> ნება მომეცით წავიდეთ წინ და წერა ჩემი პირველი პროგრამა. 342 00:16:34,890 --> 00:16:42,300 მე ვაპირებ წინასწარ გადადით ფაილი, შენახვა და გადარჩენა ჩემი ფაილი hello.c. 343 00:16:42,300 --> 00:16:46,850 მართლაც, კონვენცია, ნებისმიერი პროგრამის წერენ, რომ წერია, C ენის 344 00:16:46,850 --> 00:16:49,739 უნდა დაასახელა რაღაც dot გ, კონვენციას. 345 00:16:49,739 --> 00:16:53,030 ამიტომ, მე ვაპირებ დაარქვით hello.c, რადგან მე უბრალოდ მინდა მიესალმები მსოფლიოში. 346 00:16:53,030 --> 00:16:54,820 ახლა მე ვაპირებ, რომ გაადიდოთ და დააჭირეთ Save. 347 00:16:54,820 --> 00:16:58,180 და ყველა მაქვს ახლა აქ არის tab სადაც მე შემიძლია წერა კოდი. 348 00:16:58,180 --> 00:16:59,490 >> ეს არ აპირებს შეადგინოს. 349 00:16:59,490 --> 00:17:00,300 ეს არაფერს ნიშნავს. 350 00:17:00,300 --> 00:17:02,750 ასე რომ, მაშინაც კი, თუ მე მოაქცია ეს zeros და პირობა, 351 00:17:02,750 --> 00:17:05,390 პროცესორის აპირებს არ ვიცი, რა ხდება გარშემო. 352 00:17:05,390 --> 00:17:14,170 მაგრამ თუ ვწერ ხაზები რომ ემთხვევა ერთად C ის conventions-- C ყოფნა, 353 00:17:14,170 --> 00:17:20,150 ერთხელ, ეს language-- სინტაქსის მოსწონს ამ, printf მიესალმები world-- და მე 354 00:17:20,150 --> 00:17:22,210 მიღებული კომფორტულად ამით დროთა განმავლობაში. 355 00:17:22,210 --> 00:17:24,510 ასე რომ, მე არ ვფიქრობ, რომ გააკეთა ნებისმიერი typographical შეცდომები. 356 00:17:24,510 --> 00:17:27,910 >> მაგრამ, ყოველთვის, პირველივე დრო თქვენ ამის გაკეთება, თქვენ. 357 00:17:27,910 --> 00:17:31,090 და რა ვარ შესახებ უნდა გააკეთოს შეიძლება ძალიან ასევე არ იმუშავებს თქვენთვის პირველად. 358 00:17:31,090 --> 00:17:33,610 და რომ შესანიშნავად OK, რადგან ახლა თქვენ 359 00:17:33,610 --> 00:17:37,662 შეიძლება მხოლოდ ვხედავ უამრავი სიახლე, მაგრამ დროთა განმავლობაში კიდევ თქვენ იცნობს 360 00:17:37,662 --> 00:17:39,870 ამ გარემოს და ამ ენაზე, და სხვები, 361 00:17:39,870 --> 00:17:42,370 თქვენ დაიწყება ვხედავთ რამ, რომ ან სწორი ან არასწორი. 362 00:17:42,370 --> 00:17:44,369 >> და ეს არის ის, რაც სწავლების პრაქტიკის და რა თქმა უნდა, 363 00:17:44,369 --> 00:17:48,780 თანაშემწეები იმდენად კარგი, დროთა განმავლობაში, არის spotting შეცდომები და შეცდომები თქვენს კოდი. 364 00:17:48,780 --> 00:17:52,110 მაგრამ მე აცხადებენ, რომ არსებობს შეცდომები ამ კოდი. 365 00:17:52,110 --> 00:17:53,990 ასე რომ, ახლა მე მინდა აწარმოებს ამ პროგრამის. 366 00:17:53,990 --> 00:17:57,440 >> ახლა ჩემს Mac ან PC, მე ჩვევა ორმაგი დაწკაპვით ხატები 367 00:17:57,440 --> 00:17:59,350 როცა მინდა აწარმოებს რამდენიმე პროგრამა. 368 00:17:59,350 --> 00:18:01,080 მაგრამ ეს არ არის მოდელი აქ. 369 00:18:01,080 --> 00:18:04,570 ამ გარემოში, რომელიც არის CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 ჩვენ ვიყენებთ ოპერაციული სისტემა სახელწოდებით Linux. 371 00:18:07,192 --> 00:18:09,900 Linux არის თქვენში სხვა ოპერაციული სისტემა, საყოველთაოდ ცნობილია, 372 00:18:09,900 --> 00:18:10,850 როგორც Unix. 373 00:18:10,850 --> 00:18:16,340 და Linux განსაკუთრებით ცნობილია რომელსაც სარდლობის ხაზი გარემოს, CLI. 374 00:18:16,340 --> 00:18:20,070 ახლა, ჩვენ გამოყენებით კონკრეტული გემოს Linux ეწოდება Ubuntu. 375 00:18:20,070 --> 00:18:22,770 და Ubuntu არის უბრალოდ გარკვეული მობილური Linux. 376 00:18:22,770 --> 00:18:27,900 >> მაგრამ ეს Linux ის ამ დღეებში გააკეთებს რეალურად მოდის გრაფიკული მომხმარებლის ინტერფეისი. 377 00:18:27,900 --> 00:18:30,360 და ერთი ჩვენ არ უნდა გამოყენებით აქ არის ვებ დაფუძნებული. 378 00:18:30,360 --> 00:18:32,735 ასე რომ, ეს შეიძლება გამოიყურებოდეს კი ცოტა განსხვავებული რაღაც 379 00:18:32,735 --> 00:18:35,310 თქვენ თავს ალბათ ჩანს, ან აწარმოებს წარსულში. 380 00:18:35,310 --> 00:18:37,910 >> ამიტომ, მე ვაპირებ წავიდეთ წინ ახლა და ამის შემდეგ. 381 00:18:37,910 --> 00:18:40,950 მე გადაარჩინა ეს ფაილი hello.c. 382 00:18:40,950 --> 00:18:47,350 მე ვაპირებ წავიდეთ წინ და ტიპი clanghello.c ასე Clang 383 00:18:47,350 --> 00:18:49,850 for C ენა არის შემდგენელი. 384 00:18:49,850 --> 00:18:51,952 ეს წინასწარ დაყენებული CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 და თქვენ შეგიძლიათ სრულიად ჩამოტვირთოთ და დააყენოთ ეს თქვენი Mac ან PC. 386 00:18:54,910 --> 00:18:57,910 >> მაგრამ, ერთხელ, თქვენ არ გაქვთ ყველა წინასწარ კონფიგურაციის კეთდება თქვენთვის. 387 00:18:57,910 --> 00:19:00,940 ასე რომ, ახლა, მე მხოლოდ აპირებს clanghello.c. 388 00:19:00,940 --> 00:19:03,240 და ახლა შეამჩნია ეს სინტაქსი აქ საბოლოოდ 389 00:19:03,240 --> 00:19:06,930 გააცნობიეროს, იმას ნიშნავს, რომ მე ვარ საქაღალდე ან დირექტორია მოუწოდა სამუშაო გარემოს. 390 00:19:06,930 --> 00:19:11,030 ამ დოლარის ნიშანი არის მხოლოდ კონვენციის რაც იმას ნიშნავს, ჩაწერეთ თქვენი ბრძანებები აქ. 391 00:19:11,030 --> 00:19:14,560 >> ეს არის ის, რაც ე.წ. სწრაფი, უბრალოდ მიერ კონვენციის დოლარის ნიშანი. 392 00:19:14,560 --> 00:19:19,130 და თუ მე წავიდეთ წინ არის და დააჭირეთ შეიყვანეთ, არაფერი ჩანს, რომ არ მოხდა. 393 00:19:19,130 --> 00:19:20,930 მაგრამ ეს რეალურად კარგია. 394 00:19:20,930 --> 00:19:23,650 ნაკლებია, რაც ხდება თქვენს ეკრანზე, უფრო სავარაუდოა, 395 00:19:23,650 --> 00:19:26,710 თქვენი კოდი უნდა იყოს სწორი, მინიმუმ syntactically. 396 00:19:26,710 --> 00:19:29,120 >> ასე რომ, თუ მინდა აწარმოებს ამ პროგრამა, რა გავაკეთო? 397 00:19:29,120 --> 00:19:33,770 ასევე, ირკვევა, რომ რა სახელი კონვენციის 398 00:19:33,770 --> 00:19:38,854 პროგრამები, როდესაც თქვენ არ დააკონკრეტა სახელი თქვენი პროგრამა უბრალოდ a.out. 399 00:19:38,854 --> 00:19:41,270 და ეს სინტაქსი ძალიან, თქვენ გაეცნოს ადრე ხანგრძლივი. 400 00:19:41,270 --> 00:19:47,500 >> Dot ხაზი მხოლოდ იმას ნიშნავს, hey, CS50 IDE, გაუშვით პროგრამა მოუწოდა a.out 401 00:19:47,500 --> 00:19:49,400 რომ შიგნით ჩემი ამჟამინდელი დირექტორია. 402 00:19:49,400 --> 00:19:51,520 რომ dot ნიშნავს მიმდინარე დირექტორია. 403 00:19:51,520 --> 00:19:55,040 და ჩვენ დავინახავთ, რა სხვა მსგავსი sequences სიმბოლო ნიშნავს, რომ ხანგრძლივი. 404 00:19:55,040 --> 00:19:58,430 >> ასე რომ, აქ ჩვენ მივდივართ, შეიყვანეთ hello მსოფლიოში. 405 00:19:58,430 --> 00:20:00,080 და თქვენ შეამჩნევთ, რომ ის, რაც მოხდა? 406 00:20:00,080 --> 00:20:01,580 არა მხოლოდ ის ბეჭდვა hello მსოფლიოში. 407 00:20:01,580 --> 00:20:05,990 იგი ასევე გადავიდა კურსორი მომდევნო ხაზი. 408 00:20:05,990 --> 00:20:07,160 >> და რატომ იყო ეს? 409 00:20:07,160 --> 00:20:12,400 რა იყო კოდი, რომელიც ჩვენ წერდა ადრე რომ დარწმუნდა, რომ კურსორი გვინდა 410 00:20:12,400 --> 00:20:14,882 წასვლა მომდევნო ხაზი? 411 00:20:14,882 --> 00:20:16,840 სასაცილო რამ შესახებ კომპიუტერი არის ეს მხოლოდ აპირებს 412 00:20:16,840 --> 00:20:18,570 უნდა გავაკეთოთ ფაქტიურად რა გითხრათ, ეს უნდა გააკეთოს. 413 00:20:18,570 --> 00:20:26,050 >> ასე რომ, თუ თქვენ გითხრათ, რომ printf hello, მძიმე, სივრცე, სამყარო, ახლო გაცემა, 414 00:20:26,050 --> 00:20:29,090 ეს ფაქტიურად მხოლოდ აპირებს ბეჭდვა იმ სიმბოლოს. 415 00:20:29,090 --> 00:20:31,980 მაგრამ მე მქონდა ამ სპეციალური ხასიათი ბოლოს, გავიხსენოთ, წარმატებული ო. 416 00:20:31,980 --> 00:20:34,230 და ის, რაც უზრუნველყოფილი რომ ხასიათი წავიდა 417 00:20:34,230 --> 00:20:36,570 შემდეგი ხაზი ეკრანზე. 418 00:20:36,570 --> 00:20:38,097 >> ფაქტობრივად, ნება მომეცით წავიდეთ და ამის გაკეთება. 419 00:20:38,097 --> 00:20:39,430 ნება მომეცით წავიდეთ წინ და წაშლა. 420 00:20:39,430 --> 00:20:41,180 ახლა შეამჩნია, რომ დაბრუნება ჩემი ეკრანზე არსებობს 421 00:20:41,180 --> 00:20:42,890 პატარა წითელი სინათლე ჩანართი მითითებით, 422 00:20:42,890 --> 00:20:45,047 hey, თქვენ არ გადაარჩინა თქვენი ფაილი. 423 00:20:45,047 --> 00:20:47,880 ამიტომ, მე ვაპირებ წავიდეთ წინ კონტროლის S ან ბრძანების S, ფაილის შენახვა. 424 00:20:47,880 --> 00:20:51,130 ახლა ეს goes-- წავიდა ერთი წუთით მწვანე. 425 00:20:51,130 --> 00:20:53,760 და ახლა ის დაბრუნდა მხოლოდ ახლო ხატი. 426 00:20:53,760 --> 00:21:01,860 >> თუ მე ახლა აწარმოებს clanghello.c ერთხელ, შეიყვანეთ dot ხაზი, a.out, შეიყვანეთ 427 00:21:01,860 --> 00:21:04,110 დაინახავთ, რომ ის ჯერ კიდევ მუშაობდა. 428 00:21:04,110 --> 00:21:06,020 მაგრამ ეს, ალბათ, ცოტა buggy. 429 00:21:06,020 --> 00:21:08,714 ახლა, ჩემი prompt-- სამუშაო გარემოს, და მაშინ, რომ დოლარის ნიშანი, 430 00:21:08,714 --> 00:21:10,880 და მაშინ ჩემი ფაქტობრივი prompt-- ყველა იგივე ხაზი. 431 00:21:10,880 --> 00:21:14,540 ასე რომ, ეს, რა თქმა უნდა ესთეტიკური bug, მაშინაც კი, თუ ეს არ არის ნამდვილად ლოგიკური შეცდომა. 432 00:21:14,540 --> 00:21:16,250 >> ასე რომ, მე ვაპირებ გაუქმება რაც მე უბრალოდ გააკეთეს. 433 00:21:16,250 --> 00:21:18,560 მე ვაპირებ გამეორება a.out. 434 00:21:18,560 --> 00:21:22,710 შეამჩნია მე დასძინა, რომ newline ხასიათი უკან. 435 00:21:22,710 --> 00:21:24,280 მე შენახული ფაილი. 436 00:21:24,280 --> 00:21:31,630 >> ამიტომ, მე ვაპირებ გამეორება a.out, and-- dammit, შეცდომაა, შეცდომის, რაც იმას ნიშნავს შეცდომა. 437 00:21:31,630 --> 00:21:35,020 ასე რომ შეცდომა ის არის, რომ მიუხედავად იმისა, რომ მე დასძინა წარმატებული ო იქ, 438 00:21:35,020 --> 00:21:41,180 ხელახლა გადაარჩინა, ხელახლა გაიქცა პროგრამა, ქცევის იგივე იყო. 439 00:21:41,180 --> 00:21:42,640 რატომ უნდა იყოს? 440 00:21:42,640 --> 00:21:43,910 >> მე დაკარგული ნაბიჯი, არა? 441 00:21:43,910 --> 00:21:47,620 ეს გასაღები ნაბიჯი ადრე იყო, რომ თქვენ გაქვთ რომელთა მიზანია როდესაც თქვენ შეცვლით თქვენი კოდის, 442 00:21:47,620 --> 00:21:49,610 გამოდის, ასევე აწარმოებს ის მეშვეობით შემდგენელი 443 00:21:49,610 --> 00:21:51,102 ერთხელ, ასე რომ თქვენ ახალი მანქანა კოდი. 444 00:21:51,102 --> 00:21:52,810 და მანქანა კოდი, zeros და პირობა, 445 00:21:52,810 --> 00:21:56,260 ვაპირებთ, რომ თითქმის იდენტურია, მაგრამ სრულყოფილად არ ჩანს, რადგან ჩვენ გვჭირდება, 446 00:21:56,260 --> 00:21:57,510 რა თქმა უნდა, ახალი ხაზი. 447 00:21:57,510 --> 00:22:02,640 >> ასე დაფიქსირება ამ, მე ვაპირებ, რომ უნდა გამეორება clanghello.c, შესვლის, dot 448 00:22:02,640 --> 00:22:03,800 ხაზი, a.out. 449 00:22:03,800 --> 00:22:08,402 და ახლა, hello მსოფლიოში დაბრუნდა სადაც მე ველოდი, რომ იყოს. 450 00:22:08,402 --> 00:22:09,610 ასე რომ, ეს არის ყველა კარგი და კეთილი. 451 00:22:09,610 --> 00:22:13,150 მაგრამ a.out არის საკმაოდ სულელური სახელი პროგრამა, მიუხედავად იმისა, რომ ეს მოხდება, 452 00:22:13,150 --> 00:22:16,530 ისტორიული მიზეზების გამო, რომ იყოს, რაც იმას ნიშნავს ასამბლეის შედეგები. 453 00:22:16,530 --> 00:22:20,780 >> მაგრამ ნება მომეცით წავიდეთ წინ აქ და ამის გაკეთება განსხვავებულად. 454 00:22:20,780 --> 00:22:24,760 მინდა, რომ ჩემი Hello world პროგრამა რეალურად ეწოდოს hello. 455 00:22:24,760 --> 00:22:28,320 ასე რომ, თუ ეს იყო ხატი ჩემს desktop, ეს არ იქნება a.out. 456 00:22:28,320 --> 00:22:29,730 ეს იქნებოდა მოუწოდა hello. 457 00:22:29,730 --> 00:22:33,660 >> ასე რომ ამის გაკეთება, გამოდის რომ Clang, როგორც ბევრი პროგრამები, 458 00:22:33,660 --> 00:22:37,980 მხარს უჭერს ბრძანება ხაზი არგუმენტები, ან დროშები, ან კონცენტრატორები, 459 00:22:37,980 --> 00:22:39,600 რომელიც უბრალოდ გავლენა მოახდინოს მისი ქცევა. 460 00:22:39,600 --> 00:22:45,160 კერძოდ, Clang მხარს უჭერს dash o დროშა, რომელიც შემდეგ იღებს მეორე სიტყვა. 461 00:22:45,160 --> 00:22:48,190 ამ შემთხვევაში, მე თვითნებურად, მაგრამ გონივრულად, ეძახით hello. 462 00:22:48,190 --> 00:22:50,710 მაგრამ მე ხომ მას არაფერი მინდა, გარდა a.out, რაც 463 00:22:50,710 --> 00:22:52,390 იქნება საკმაოდ გარდა წერტილი. 464 00:22:52,390 --> 00:22:55,640 >> და შემდეგ უბრალოდ მიუთითოთ სახელი ფაილი მე მინდა, რომ შეადგინოს. 465 00:22:55,640 --> 00:22:59,190 ასე რომ, ახლა მიუხედავად იმისა, რომ დასაწყისში ბრძანების მე მაინც Clang, 466 00:22:59,190 --> 00:23:01,410 ბოლოს ბრძანება მე ჯერ კიდევ აქვს filename, 467 00:23:01,410 --> 00:23:05,520 მე ახლა ამ ბრძანების არგუმენტები, დროშებით, რომ ამბობენ, 468 00:23:05,520 --> 00:23:11,180 oh, სხვათა შორის, გამომავალი-o, ფაილი მოუწოდა hello, არ ნაგულისხმები a.out. 469 00:23:11,180 --> 00:23:13,810 >> ასე რომ, თუ მე მოხვდა შეიტანეთ ახლა, არაფერი როგორც ჩანს, არ მოხდა. 470 00:23:13,810 --> 00:23:17,900 და, მაინც, ახლა შემიძლია dot slash hello. 471 00:23:17,900 --> 00:23:19,089 ასე რომ, ეს არის იგივე პროგრამა. 472 00:23:19,089 --> 00:23:21,380 Zeros და პირობა იდენტური დასასრულს დღეში. 473 00:23:21,380 --> 00:23:24,210 >> მაგრამ ისინი ორ სხვადასხვა ფაილები a.out, 474 00:23:24,210 --> 00:23:26,490 რომელიც არის პირველი ვერსია და მხოლოდ სულელურად დაასახელა, 475 00:23:26,490 --> 00:23:30,250 და ახლა hello, რომელიც ბევრად უფრო უფრო მყარი სახელი პროგრამა. 476 00:23:30,250 --> 00:23:33,195 მაგრამ, პატიოსნად, მე არასოდეს ვაპირებ გახსოვთ ეს კიდევ ერთხელ, 477 00:23:33,195 --> 00:23:34,070 და ისევ და ისევ. 478 00:23:34,070 --> 00:23:36,411 და, ფაქტობრივად, როგორც ჩვენ წერენ უფრო რთული პროგრამების, 479 00:23:36,411 --> 00:23:38,160 ბრძანებები, თქვენ აპირებს უნდა დაწეროს 480 00:23:38,160 --> 00:23:40,920 ვაპირებთ, რომ კიდევ უფრო უფრო რთული მაინც. 481 00:23:40,920 --> 00:23:41,940 >> და ასე რომ არ ინერვიულოთ. 482 00:23:41,940 --> 00:23:46,220 გამოდის, რომ ადამიანების წინაშე ჩვენთვის არ მიხვდა, რომ ძალიან 483 00:23:46,220 --> 00:23:47,530 მქონდა ეს ზუსტად იგივე პრობლემა. 484 00:23:47,530 --> 00:23:50,900 ისინი ძალიან არ სარგებლობენ, რომელსაც ჩაწერეთ საკმაოდ ხანგრძლივი, arcane ბრძანებები, 485 00:23:50,900 --> 00:23:52,200 რომ აღარაფერი ვთქვათ გვახსოვს. 486 00:23:52,200 --> 00:23:56,070 ასე რომ, ადამიანებს ჩვენს წინაშე არ გააკეთა სხვა პროგრამები, რომელიც გაუადვილებს 487 00:23:56,070 --> 00:23:57,670 კომპილაციის თქვენი პროგრამული უზრუნველყოფა. 488 00:23:57,670 --> 00:24:01,609 >> და, მართლაც, ერთ-ერთი ასეთი პროგრამა ეწოდება გააკეთოს. 489 00:24:01,609 --> 00:24:03,150 ამიტომ, მე ვაპირებ წავიდეთ წინ და ამის გაკეთება. 490 00:24:03,150 --> 00:24:05,691 მე ვაპირებ გაუქმება ყველაფერი მე უბრალოდ გააკეთეს შემდეგ გზა. 491 00:24:05,691 --> 00:24:07,690 ნება მომეცით აკრიფოთ LS. 492 00:24:07,690 --> 00:24:10,980 და თქვენ შეამჩნევთ, სამი რამ a.out და ვარსკვლავი, hello 493 00:24:10,980 --> 00:24:12,810 და ვარსკვლავი და hello.c. 494 00:24:12,810 --> 00:24:14,730 იმედია, ეს უნდა იყოს ცოტა ინტუიციური, 495 00:24:14,730 --> 00:24:18,220 იმდენად, რამდენადაც ადრე არ იყო არაფერი ამ გარემოს. 496 00:24:18,220 --> 00:24:21,240 არაფერი იყო, რომ მე მქონდა ის სანამ ჩვენ დავიწყეთ კლასში. 497 00:24:21,240 --> 00:24:22,840 >> მე და ის hello.c. 498 00:24:22,840 --> 00:24:24,544 მე შედგენილი ეს, და მას a.out. 499 00:24:24,544 --> 00:24:27,460 და მერე შედგენილი ეს ერთხელ ოდნავ განსხვავებულად და მას hello. 500 00:24:27,460 --> 00:24:32,830 ასე რომ, მე სამი ფაილი ამ დირექტორია, ამ საქაღალდეში მოუწოდა სამუშაო გარემოს. 501 00:24:32,830 --> 00:24:35,005 ახლა, მე ვხედავ, რომ ისევე, თუ დააშორებს რეალურად. 502 00:24:35,005 --> 00:24:37,530 >> თუ მე დააშორებს აქ და შევხედოთ, რომ ზედა მარჯვენა 503 00:24:37,530 --> 00:24:39,940 კუთხეში, როგორც დაჰპირდა მარცხენა მხარეს თქვენს ეკრანზე 504 00:24:39,940 --> 00:24:42,990 ყოველთვის აპირებს აჩვენებს, თუ რა არის თქვენი ანგარიში, თუ რა არის 505 00:24:42,990 --> 00:24:44,790 შიგნით CS50 IDE. 506 00:24:44,790 --> 00:24:46,680 და არსებობს სამი ფაილი არსებობს. 507 00:24:46,680 --> 00:24:49,070 >> ამიტომ, მე მინდა, რომ თავი დაეღწია a.out და hello. 508 00:24:49,070 --> 00:24:51,275 და როგორც თქვენ შეიძლება წარმოიდგინეთ, ინტუიციურად, თუ 509 00:24:51,275 --> 00:24:53,400 შეიძლება დასალაგებლად კონტროლის click ან დააწკაპუნეთ ამ. 510 00:24:53,400 --> 00:24:54,590 და ამ პატარა მენიუ pops up. 511 00:24:54,590 --> 00:24:57,170 შეგიძლიათ ჩამოტვირთოთ ფაილი, გაუშვით მას, წინასწარ ის, ამოცნობა, გადარქმევა, 512 00:24:57,170 --> 00:24:57,700 და რა არა. 513 00:24:57,700 --> 00:25:00,260 >> და მე ვერ ვშლით, და, რომ ის წავიდეს. 514 00:25:00,260 --> 00:25:05,260 მაგრამ მოდით გავაკეთოთ რამ ბრძანება ხაზი ახლა, ისე, რომ კიდევ კომფორტული 515 00:25:05,260 --> 00:25:07,010 ეს და ამის შემდეგ. 516 00:25:07,010 --> 00:25:12,345 მე ვაპირებ წავიდეთ წინ და ამოიღონ a.out აკრეფით ფაქტიურად rma.out. 517 00:25:12,345 --> 00:25:14,890 გამოდის, ბრძანება მოხსნის ან წაშლის რაღაც, 518 00:25:14,890 --> 00:25:16,280 არ ამოიღონ ან წაშლა. 519 00:25:16,280 --> 00:25:21,260 >> ეს უფრო მოკლედ RM, უბრალოდ გადარჩენა თქვენ რამდენიმე keystrokes, და დააჭიროთ. 520 00:25:21,260 --> 00:25:24,707 ახლა ჩვენ ვაპირებთ, გარკვეულწილად cryptically ამოიღონ რეგულარული ფაილი a.out. 521 00:25:24,707 --> 00:25:27,040 მე ნამდვილად არ ვიცი, რა არარეგულარული ფაილი იქნება ამჟამად. 522 00:25:27,040 --> 00:25:28,660 მაგრამ მე მინდა ამოიღონ იგი. 523 00:25:28,660 --> 00:25:30,150 >> ამიტომ, მე ვაპირებ აკრიფოთ Y ამისთვის კი. 524 00:25:30,150 --> 00:25:31,940 ან მე ვერ აკრიფოთ ის, და დააჭიროთ. 525 00:25:31,940 --> 00:25:33,440 და კიდევ ერთხელ, არაფერი ჩანს, რომ მოხდეს. 526 00:25:33,440 --> 00:25:35,840 მაგრამ ეს არის, ზოგადად, კარგია. 527 00:25:35,840 --> 00:25:40,490 >> თუ მე აკრიფოთ LS ამ დროს, რა უნდა ნახოთ? 528 00:25:40,490 --> 00:25:44,930 იმედია, მხოლოდ მიესალმები და hello.c. 529 00:25:44,930 --> 00:25:47,286 ახლა, როგორც განზე, თქვენ შეამჩნია ეს ვარსკვლავი, ვარსკვლავი, 530 00:25:47,286 --> 00:25:48,660 ეს არის ის, ბოლოს ჩემი პროგრამები. 531 00:25:48,660 --> 00:25:50,201 და ისინი ასევე აჩვენებს up მწვანე. 532 00:25:50,201 --> 00:25:53,970 ეს არის მხოლოდ CS50 IDE გზა of cluing თქვენ ფაქტზე 533 00:25:53,970 --> 00:25:55,280 რომ ეს არ არის კოდის. 534 00:25:55,280 --> 00:25:58,880 ეს არის შემსრულებელი, რომელიც runnable პროგრამა, რომელიც შეგიძლიათ რეალურად აწარმოებს 535 00:25:58,880 --> 00:26:01,020 ამით dot ხაზი, და შემდეგ ეს სახელი. 536 00:26:01,020 --> 00:26:05,860 >> ახლა, ნება მომეცით წავიდეთ წინ და ამოიღონ ამ, rm hello, შეიტანეთ, ამოიღონ რეგულარული 537 00:26:05,860 --> 00:26:08,010 წარადგინოს hello, დიახ. 538 00:26:08,010 --> 00:26:11,180 და ახლა თუ მე აკრიფოთ LS, ჩვენ უკან hello.c. 539 00:26:11,180 --> 00:26:13,917 შეეცადეთ არ წაშალოთ თქვენი ფაქტობრივი კოდის. 540 00:26:13,917 --> 00:26:16,250 მიუხედავად იმისა, რომ არსებობს თვისებები ჩაშენებული CS50 IDE, სადაც 541 00:26:16,250 --> 00:26:19,870 თქვენ შეგიძლიათ გაიაროს თქვენი ცვლილებათა ისტორია და გადახვევა დროს თუ შემთხვევით 542 00:26:19,870 --> 00:26:23,660 წაშლა რაღაც, ნუ მავიწყდება პოსტი ამ მოთხოვნა დიახ ან არა, 543 00:26:23,660 --> 00:26:25,381 ის, რაც თქვენ რეალურად გსურთ. 544 00:26:25,381 --> 00:26:27,380 და თუ წასვლა მდე დაბრუნება მარცხენა კუთხეში აქ, 545 00:26:27,380 --> 00:26:30,696 ყველა რომ რჩება hello.c. 546 00:26:30,696 --> 00:26:32,570 ასე რომ, მტევნების სხვა ბრძანებები, რომ თქვენ 547 00:26:32,570 --> 00:26:37,550 შეუძლია შეასრულოს მსოფლიოში Linux, რომელთაგან ერთი არის, კიდევ ერთხელ, მწარმოებელი. 548 00:26:37,550 --> 00:26:40,180 ჩვენ ვაპირებთ, რომ ჩემი პროგრამა ახლა ასეთია. 549 00:26:40,180 --> 00:26:43,270 >> ნაცვლად იმისა, რომ clang, ნაცვლად აკეთებს clang-o, 550 00:26:43,270 --> 00:26:45,860 მე ვაპირებ უბრალოდ ფაქტიურად ტიპის, მიიღოს hello. 551 00:26:45,860 --> 00:26:49,630 და ახლა შეამჩნია, მე ვარ არ აკრეფით მიიღოს hello.c. 552 00:26:49,630 --> 00:26:50,910 მე აკრეფით მიიღოს hello. 553 00:26:50,910 --> 00:26:54,840 >> ეს პროგრამა ჩადება, რომ გააჩნია CS50 IDE, და მეტი 554 00:26:54,840 --> 00:26:57,090 ზოგადად Linux, არის პროგრამა, რომელიც 555 00:26:57,090 --> 00:26:59,120 ვაპირებ, რომ პროგრამა სახელწოდებით Hello. 556 00:26:59,120 --> 00:27:03,680 და ის აპირებს, უნდა ვივარაუდოთ, კონვენციის, იმ შემთხვევაში, თუ ეს პროგრამა შეიძლება გაკეთდეს, 557 00:27:03,680 --> 00:27:09,030 ის აპირებს, რათა მოხდეს წყაროდან კოდი ფაილი დამთავრებული dot გ, hello.c. 558 00:27:09,030 --> 00:27:12,210 >> ასე რომ, თუ მე მოხვდა შეიტანეთ ახლა შეამჩნია, რომ ბრძანება, რომელიც იღებს შესრულებული 559 00:27:12,210 --> 00:27:14,340 რეალურად კი აღარ ადრე, ვიდრე ადრე. 560 00:27:14,340 --> 00:27:16,670 და ეს იმიტომ, რომ ჩვენ preconfigured CS50 IDE აქვს 561 00:27:16,670 --> 00:27:19,878 რამდენიმე დამატებითი ფუნქციები აგებული, რომ ჩვენ არ გვჭირდება არ არის, თუმცა მალე. 562 00:27:19,878 --> 00:27:23,470 მაგრამ მთავარი რამ უნდა გააცნობიეროს ახლა მე მაქვს გაუმარჯოს პროგრამა. 563 00:27:23,470 --> 00:27:27,080 >> თუ მე აკრიფოთ LS ერთხელ, მე მიესალმები პროგრამა. 564 00:27:27,080 --> 00:27:32,070 და შემიძლია გაუშვით dot slash a.out, არა, 565 00:27:32,070 --> 00:27:35,590 იმის გამო, რომ მთელი წერტილი ამ სწავლება იყო dot slash hello. 566 00:27:35,590 --> 00:27:38,089 და ახლა მე მაქვს ჩემი Hello world პროგრამა. 567 00:27:38,089 --> 00:27:39,880 ასე რომ, წინ მიდის, ჩვენ თითქმის ყოველთვის მხოლოდ 568 00:27:39,880 --> 00:27:42,088 აპირებს კომპილაციის ჩვენი პროგრამების გამოყენებით ბრძანება გააკეთოს. 569 00:27:42,088 --> 00:27:45,300 და მაშინ ჩვენ ვაპირებთ აწარმოებს მათ მიერ dot ხაზი და პროგრამის სახელი. 570 00:27:45,300 --> 00:27:49,610 მაგრამ გააცნობიეროს ის, რაც აკეთებს თქვენ, ეს არის თავად არ არის შემდგენელი. 571 00:27:49,610 --> 00:27:53,310 ეს არის მხოლოდ ფონდის პროგრამა რომ იცის, თუ როგორ უნდა გამოიწვიოს შემდგენელი 572 00:27:53,310 --> 00:27:56,470 აწარმოებს ისე, რომ თქვენ თავს შეგიძლიათ გამოიყენოთ იგი. 573 00:27:56,470 --> 00:28:00,220 >> სხვა რა ბრძანებები არსებობს Linux, და თავის მხრივ CS50 IDE? 574 00:28:00,220 --> 00:28:03,107 ჩვენ მალე დავინახავთ, რომ იქ CD ბრძანება, შეცვლა დირექტორია. 575 00:28:03,107 --> 00:28:05,190 ეს გაძლევთ ფარგლებში თქვენი ბრძანების ინტერფეისი 576 00:28:05,190 --> 00:28:07,610 წინსვლა, და უკან, და ქმნის სხვადასხვა ფოლდერები 577 00:28:07,610 --> 00:28:08,860 გარეშე გამოყენებით თქვენი მაუსი. 578 00:28:08,860 --> 00:28:12,470 >> LS ჩვენ ვნახეთ, რომელიც დგას სია ფაილი მიმდინარე დირექტორია. 579 00:28:12,470 --> 00:28:14,650 ჩადება Dir, შეგიძლიათ სავარაუდოდ, დაიწყება დასკვნის 580 00:28:14,650 --> 00:28:18,150 რას ნიშნავს ეს, ახლა მიიღოს დირექტორია, თუ გვინდა, რომ შევქმნათ საქაღალდე. 581 00:28:18,150 --> 00:28:21,270 RM for remove, RM Dir for ამოიღონ დირექტორიაში და ეს, 582 00:28:21,270 --> 00:28:24,160 ერთხელ, არის ბრძანების ეკვივალენტები, რაც თქვენ 583 00:28:24,160 --> 00:28:26,945 შეიძლება გავაკეთოთ CS50 IDE თქვენი მაუსი. 584 00:28:26,945 --> 00:28:28,820 მაგრამ თქვენ მალე პოულობენ რომ ზოგჯერ უბრალოდ 585 00:28:28,820 --> 00:28:30,610 ბევრი უფრო სწრაფად უნდა გააკეთოს რამ კლავიატურის, 586 00:28:30,610 --> 00:28:33,690 და საბოლოო ჯამში უფრო ძლიერი. 587 00:28:33,690 --> 00:28:36,440 >> მაგრამ ძნელია იმის მტკიცება, რომ არაფერი ჩვენ უკვე აკეთებს ჯერჯერობით 588 00:28:36,440 --> 00:28:39,990 არის ყველა, რომ ძლიერი, როდესაც ყველა ჩვენ ვამბობდით, არის, hello მსოფლიოში. 589 00:28:39,990 --> 00:28:43,740 და, ფაქტობრივად, მე hardcoded სიტყვა hello მსოფლიოში ჩემი პროგრამა. 590 00:28:43,740 --> 00:28:45,530 არ არსებობს დინამიკას ამჟამად. 591 00:28:45,530 --> 00:28:49,320 Scratch იყო ბრძანებით მასშტაბები უფრო საინტერესო გასულ კვირას. 592 00:28:49,320 --> 00:28:51,220 >> და მოდით იქ. 593 00:28:51,220 --> 00:28:55,310 ავიღოთ ნაბიჯი, რომ გზა ზოგიერთი ფუნქციები. 594 00:28:55,310 --> 00:28:59,470 ასე რომ, არა მარტო C მოდის printf, და bunches სხვა ფუნქციები 595 00:28:59,470 --> 00:29:01,850 ზოგიერთი რომელიც ჩვენ დავინახავთ დროთა განმავლობაში, ეს არ 596 00:29:01,850 --> 00:29:05,760 რათა ის არის, რომ ადვილი უფლება კარიბჭე in მიღების მომხმარებლის შეყვანის. 597 00:29:05,760 --> 00:29:08,140 >> ფაქტობრივად, ერთ-ერთი სუსტი მხარეები ენებზე, როგორიცაა C, 598 00:29:08,140 --> 00:29:10,140 და კიდევ Java და ჯერ სხვები, არის ის, რომ არ 599 00:29:10,140 --> 00:29:15,860 გაუადვილეთ მხოლოდ რამ, როგორიცაა რიცხვებით მომხმარებლებს, ან სიმები, სიტყვა, 600 00:29:15,860 --> 00:29:19,970 და ფრაზები, რომ აღარაფერი ვთქვათ რამ, როგორიცაა მცურავი წერტილი ღირებულებები, ან რეალური ციფრები 601 00:29:19,970 --> 00:29:23,240 ათობითი ქულა, და მართლაც ხანგრძლივი ნომრები, როგორც ჩვენ მალე. 602 00:29:23,240 --> 00:29:27,000 ასე რომ, ეს სია ფუნქციები აქ, ამ ისევე როგორც სხვა Scratch თავსატეხი ცალი 603 00:29:27,000 --> 00:29:31,090 რომ ჩვენ წინასწარ დაყენებული CS50 IDE, ჩვენ ვიყენებთ რამდენიმე კვირის განმავლობაში 604 00:29:31,090 --> 00:29:34,010 როგორც სასწავლო დისკები ჯიშები, და საბოლოოდ მათ off, და გამოიყურება 605 00:29:34,010 --> 00:29:37,210 ქვეშ Hood, ალბათ, იმ როგორ ეს ყველაფერი ხორციელდება. 606 00:29:37,210 --> 00:29:40,460 >> მაგრამ ამის გაკეთება, მოდით რეალურად დაწეროს პროგრამა. 607 00:29:40,460 --> 00:29:41,770 ნება მომეცით წავიდეთ წინ არის. 608 00:29:41,770 --> 00:29:44,750 და მე ვაპირებ, რომ შევქმნათ ახალი ფაილი დაჭერით ამ პატარა plus, 609 00:29:44,750 --> 00:29:45,970 და დაჭერით ახალი ფაილი. 610 00:29:45,970 --> 00:29:49,250 >> მე ვაპირებ გადარჩენა ეს შემდეგი ერთი, ასე ვთქვათ, string.c, 611 00:29:49,250 --> 00:29:50,750 იმიტომ, რომ მე მინდა, რომ ითამაშოს strings. 612 00:29:50,750 --> 00:29:53,990 და სიმებიანი C მხოლოდ თანმიმდევრობა გმირები. 613 00:29:53,990 --> 00:29:56,090 ასე რომ, ახლა მოდით წავიდეთ წინ და ამის შემდეგ. 614 00:29:56,090 --> 00:30:01,204 >> მოიცავს სტანდარტული IO.h-- და გამოდის, სტანდარტული IO, 615 00:30:01,204 --> 00:30:03,360 IO მხოლოდ იმას ნიშნავს, შემავალი და გამომავალი. 616 00:30:03,360 --> 00:30:05,920 გამოდის, რომ ეს ხაზი აქ არის ის, რაც 617 00:30:05,920 --> 00:30:08,140 არის მეზობელი მოგვცემს გამოვიყენოთ printf. 618 00:30:08,140 --> 00:30:10,410 Printf, რა თქმა უნდა, აწარმოებს გამომავალი. 619 00:30:10,410 --> 00:30:15,000 ასე რომ, იმისათვის, რომ გამოიყენოთ printf, გამოდის out, თქვენ უნდა ჰქონდეს ეს ხაზი კოდი 620 00:30:15,000 --> 00:30:16,040 ზედა თქვენი ფაილი. 621 00:30:16,040 --> 00:30:18,456 >> და ჩვენ დავბრუნდებით, თუ რა რომ ნამდვილად ნიშნავს, რომ ხანგრძლივი. 622 00:30:18,456 --> 00:30:20,400 გამოდის, რომ ამ ნებისმიერი C პროგრამის ვწერ, 623 00:30:20,400 --> 00:30:23,640 მაქვს დაიწყოს იგი კოდი, რომელიც ასე გამოიყურება. 624 00:30:23,640 --> 00:30:26,860 და თქვენ შეამჩნევთ CS50 IDE და სხვა ინტეგრირებული განვითარება 625 00:30:26,860 --> 00:30:30,050 გარემოში, როგორც ეს, ვაპირებთ, რომ ცდილობენ, როგორც საუკეთესო 626 00:30:30,050 --> 00:30:31,780 მათ შეუძლიათ დასრულდება თქვენი აზრის. 627 00:30:31,780 --> 00:30:35,930 ფაქტობრივად, ერთი წუთით წინ თუ მე გაუქმება რაც მე უბრალოდ გააკეთეს, მე დააჭიროთ. 628 00:30:35,930 --> 00:30:39,160 >> მე მაშინ მოხვდა ღია curly გაუწიოს, დააჭიროთ ერთხელ. 629 00:30:39,160 --> 00:30:40,430 და ეს დასრულდა ჩემი აზრის. 630 00:30:40,430 --> 00:30:45,140 ეს მომცა ახალი ხაზი, დაზუსტებისათვის არანაკლებ ლამაზი სტილისტური მიზეზები ჩვენ დავინახავთ. 631 00:30:45,140 --> 00:30:48,559 და მერე ავტომატურად მომცა რომ curly გაუწიოს დასრულდება ჩემი აზრის. 632 00:30:48,559 --> 00:30:50,600 ახლა, ეს ყოველთვის არ გამოიცანით რა გსურთ ამის გაკეთება. 633 00:30:50,600 --> 00:30:53,620 მაგრამ დიდი ნაწილი, ეს იმას გადარჩენა თქვენ რამდენიმე keystrokes. 634 00:30:53,620 --> 00:30:59,560 ასე რომ, ერთი წუთით წინ, ჩვენ გაიქცა ამ პროგრამის hello, world, და შემდეგ შედგენილი ეს, 635 00:30:59,560 --> 00:31:00,460 და შემდეგ გაიქცა იგი. 636 00:31:00,460 --> 00:31:01,867 მაგრამ არ არსებობს დინამიკას აქ. 637 00:31:01,867 --> 00:31:03,700 რა, თუ გვინდოდა რამე განსხვავებული? 638 00:31:03,700 --> 00:31:07,630 ისე, რა, მინდოდა რეალურად მიიღოს სიმებიანი საწყისი მომხმარებელი? 639 00:31:07,630 --> 00:31:11,250 მე ვაპირებ გამოყენება თავსატეხი ცალი მოუწოდა ზუსტად that-- მიიღოს სიმებიანი. 640 00:31:11,250 --> 00:31:15,860 >> თურმე C, რომ როდესაც თქვენ არ მინდა უზრუნველყოს შეყვანის თავსატეხი ცალი, 641 00:31:15,860 --> 00:31:19,360 ან უფრო სწორად ფუნქცია, თქვენ ფაქტიურად ღია ფრჩხილებში, 642 00:31:19,360 --> 00:31:20,430 ახლო ფრჩხილებში. 643 00:31:20,430 --> 00:31:25,540 ასე რომ, ეს, თითქოს არ არის თეთრი ყუთი შეიტანოთ შევიდა. 644 00:31:25,540 --> 00:31:27,720 აცხადებენ, რომ ბლოკი ადრე მქონდა პატარა თეთრი ყუთი. 645 00:31:27,720 --> 00:31:29,660 ჩვენ არ გვაქვს, რომ თეთრი ყუთი ახლა. 646 00:31:29,660 --> 00:31:33,310 >> მაგრამ როდესაც მე მოვუწოდებთ მიიღოს სიმებიანი, მე გსურთ დააყენა შედეგი სადღაც. 647 00:31:33,310 --> 00:31:37,680 ასე რომ, ძალიან საერთო პარადიგმის C არის მოვუწოდებთ ფუნქცია, როგორიცაა მიიღოს სიმებიანი აქ, 648 00:31:37,680 --> 00:31:41,070 და შემდეგ შესანახად მისი დაბრუნების ღირებულება. 649 00:31:41,070 --> 00:31:44,450 ეს არის შედეგი მისი ძალისხმევა რაღაც. 650 00:31:44,450 --> 00:31:47,630 >> და რა არის მშენებლობა პროგრამირებაში, 651 00:31:47,630 --> 00:31:53,450 თუ არა Scratch და ახლა C, რომ ჩვენ შეგიძლიათ გამოიყენოთ რეალურად შესანახად რაღაც? 652 00:31:53,450 --> 00:31:55,990 მას ცვლადი, უფლება? 653 00:31:55,990 --> 00:32:00,320 და Scratch, ჩვენ ნამდვილად არ მაინტერესებს, რა ხდებოდა ცვლადები. 654 00:32:00,320 --> 00:32:02,170 >> მაგრამ ამ შემთხვევაში, ჩვენ რეალურად. 655 00:32:02,170 --> 00:32:03,719 მე ვაპირებ ვთქვა სიმებიანი. 656 00:32:03,719 --> 00:32:05,510 და მაშინ მე ვერ მოვუწოდებ ეს არაფერი მინდა. 657 00:32:05,510 --> 00:32:08,340 მე ვაპირებ, რომ მას სახელი, იღებს მიიღოს სიმებიანი. 658 00:32:08,340 --> 00:32:10,250 >> ახლა კი, თუ თქვენ ცოტა ახალი ამ, 659 00:32:10,250 --> 00:32:11,984 შეამჩნია, რომ მე აკლია ზოგიერთი დეტალი. 660 00:32:11,984 --> 00:32:13,150 მე დავიწყება ნახევრად მსხვილი ნაწლავის. 661 00:32:13,150 --> 00:32:14,400 მე უნდა დაასრულოს ამ აზრის. 662 00:32:14,400 --> 00:32:17,480 ამიტომ, მე ვაპირებ, რომ გადავიდეს ჩემი კურსორი, და მოხვდა ნახევრად მსხვილი ნაწლავის არსებობს. 663 00:32:17,480 --> 00:32:19,130 და რა არ მე უბრალოდ გაკეთდეს? 664 00:32:19,130 --> 00:32:21,440 ამ ხაზი კოდი, ნომერი 5 მომენტში, 665 00:32:21,440 --> 00:32:23,799 მე დარეკვით მიიღოს სიმებიანი არ საშუალებებით. 666 00:32:23,799 --> 00:32:26,090 ასე რომ არ არსებობს პატარა თეთრი ყუთი, როგორიცაა შენახვა ბლოკი აქვს. 667 00:32:26,090 --> 00:32:28,590 >> მე უბრალოდ ვამბობ, hey, კომპიუტერული, ჩემთვის სიმებიანი. 668 00:32:28,590 --> 00:32:31,390 თანაბარი ნიშანი არ არის ნამდვილად თანაბარი ნიშანი, თავისთავად. 669 00:32:31,390 --> 00:32:33,790 ეს დავალება ოპერატორი, რაც იმას ნიშნავს, 670 00:32:33,790 --> 00:32:37,860 hey, კომპიუტერი, გადაადგილება ღირებულება მარჯვენა მეტი მარცხნივ. 671 00:32:37,860 --> 00:32:40,480 და მარცხენა, მაქვს შემდეგ. 672 00:32:40,480 --> 00:32:43,580 >> Hey, კომპიუტერი, მომეცი სიმებიანი თანმიმდევრობა გმირები. 673 00:32:43,580 --> 00:32:45,637 და მოვუწოდებთ, რომ სიმებიანი სახელი. 674 00:32:45,637 --> 00:32:47,220 და მე კი არ აქვს, რომ მას სახელი. 675 00:32:47,220 --> 00:32:49,970 >> მე ვერ ვუწოდებ, პირობითად, რაღაც S, 676 00:32:49,970 --> 00:32:52,900 ჰგავს ჩვენ გამოყენებული ი მოვუწოდებთ ცვლადი i. 677 00:32:52,900 --> 00:32:54,829 მაგრამ ახლა მე უნდა გავაკეთოთ რაღაც ეს. 678 00:32:54,829 --> 00:32:57,370 ეს იქნება საკმაოდ სულელური ცდილობენ შედგენის ეს კოდი, გაშვებული 679 00:32:57,370 --> 00:32:59,410 ეს პროგრამა, მიუხედავად იმისა, რომ მე მიღების სიმებიანი, 680 00:32:59,410 --> 00:33:01,580 იმიტომ, რომ ეს ჯერ კიდევ მხოლოდ აპირებს მიესალმები მსოფლიოში. 681 00:33:01,580 --> 00:33:06,140 >> მაგრამ რა, თუ მე არ მინდა, რომ შეიცვალოს ეს. 682 00:33:06,140 --> 00:33:07,940 რატომ არ გავაკეთო ეს? 683 00:33:07,940 --> 00:33:11,632 პროცენტს s, მძიმით s. 684 00:33:11,632 --> 00:33:13,090 ეს არის პატარა cryptic მაინც. 685 00:33:13,090 --> 00:33:15,560 >> ნება მომეცით, ჩემი ცვლადები უფრო ნათელი. 686 00:33:15,560 --> 00:33:17,510 მიადევნე თვალი ასახელებს ამ ცვლადის სახელი. 687 00:33:17,510 --> 00:33:20,230 მოდით ვნახოთ, თუ ჩვენ ვერ გაღიზიანება გარდა რა ხდება აქ. 688 00:33:20,230 --> 00:33:22,770 >> ასე რომ, ხაზი ხუთ, მე მიღების სიმებიანი. 689 00:33:22,770 --> 00:33:25,620 და მე შენახვის, რომ ტექსტი, რასაც მომხმარებელს ჯერ აკრეფილი 690 00:33:25,620 --> 00:33:28,430 ერთი მისი კლავიატურის, ცვლადში სახელი. 691 00:33:28,430 --> 00:33:30,590 და აღმოჩნდება, რომ printf არ მხოლოდ 692 00:33:30,590 --> 00:33:34,220 ერთი არგუმენტი ორმაგი შეთავაზება, ერთი შემავალი ორმაგ ბრჭყალებში. 693 00:33:34,220 --> 00:33:39,100 >> მას შეუძლია მიიღოს ორი ან სამი ან მეტი, ასეთი რომ მეორე, ან მესამე, ან მეოთხე, 694 00:33:39,100 --> 00:33:42,320 ყველა სახელები ცვლადები, ან კონკრეტულად აფასებს, 695 00:33:42,320 --> 00:33:48,610 რომ გსურთ შეაერთედ შევიდა, დინამიურად, რომ სიმებიანი შეთავაზებები. 696 00:33:48,610 --> 00:33:52,110 სხვა სიტყვებით, თუ რა არასწორი იქნებოდა ეს? 697 00:33:52,110 --> 00:33:57,920 თუ ვთქვი მიესალმები სახელი, წარმატებული n, გადაარჩინა ჩემი ფაილი, შედგენილი ჩემი კოდი, 698 00:33:57,920 --> 00:34:01,660 და გაიქცა ეს, რა მოხდებოდა? 699 00:34:01,660 --> 00:34:05,139 >> ის უბრალოდ აპირებს ვთქვა, hello ასახელებს, ფაქტიურად N-A-M-E, 700 00:34:05,139 --> 00:34:07,900 რომელიც არის ერთგვარი სულელური, რადგან ეს არ განსხვავდება მსოფლიოში. 701 00:34:07,900 --> 00:34:10,400 ასე რომ, არაფერი შეთავაზებები არის რა ფაქტიურად იღებს დაბეჭდილი. 702 00:34:10,400 --> 00:34:12,520 ასე რომ, თუ მინდა, რომ ეს placeholder იქ, 703 00:34:12,520 --> 00:34:14,422 მე რეალურად უნდა გამოვიყენოთ ზოგიერთი სპეციალური სინტაქსი. 704 00:34:14,422 --> 00:34:17,380 და აღმოჩნდება, თუ წაიკითხა დოკუმენტაცია printf ფუნქცია 705 00:34:17,380 --> 00:34:21,320 ის გეტყვით, რომ თუ თქვენ იყენებთ პროცენტს s, 706 00:34:21,320 --> 00:34:23,920 შეგიძლიათ ჩაანაცვლებს მნიშვნელობა ასეთია. 707 00:34:23,920 --> 00:34:27,190 >> მას შემდეგ, რაც მძიმე მას შემდეგ, რაც ორმაგი ციტირებით, თქვენ უბრალოდ 708 00:34:27,190 --> 00:34:29,179 წერენ სახელი ცვლადი, რომ გსურთ 709 00:34:29,179 --> 00:34:33,790 შეაერთედ შევიდა, რომ ფორმატი კოდი, ან ფორმატი specifier, 710 00:34:33,790 --> 00:34:35,469 პროცენტი s სიმები. 711 00:34:35,469 --> 00:34:39,190 და ახლა თუ მე გადაარჩინა ჩემი ფაილი, მე დაბრუნდეს ქვემოთ ჩემი ტერმინალის. 712 00:34:39,190 --> 00:34:42,870 და მე აკრიფოთ ჩადება სიმებიანი, რადგან, კიდევ ერთხელ, სახელი ამ 713 00:34:42,870 --> 00:34:45,510 ფაილი, რომელიც მე ავირჩიე, სანამ არის string.c. 714 00:34:45,510 --> 00:34:48,510 >> ამიტომ, მე ვაპირებ ვთქვა ჩადება String, შევა. 715 00:34:48,510 --> 00:34:51,550 Oh ჩემი სიკეთე, შევხედოთ ყველა შეცდომები, ჩვენ უკვე გავაკეთეთ. 716 00:34:51,550 --> 00:34:55,540 და ეს is-- რა არის ეს ნამდვილად მოსწონს ექვსი, შვიდი ხაზი პროგრამა? 717 00:34:55,540 --> 00:34:57,790 ასე რომ, ეს არის, სადაც ეს შეიძლება ძალიან სწრაფად აბსოლუტური. 718 00:34:57,790 --> 00:35:00,890 >> ამ ტერმინალის ფანჯარაში ახლა მხოლოდ regurgitated 719 00:35:00,890 --> 00:35:03,230 დიდი რაოდენობით შეცდომა შეტყობინებები. 720 00:35:03,230 --> 00:35:07,560 რა თქმა უნდა, მე არ მაქვს მეტი შეცდომა შეტყობინებები ვიდრე მე მაქვს ხაზი კოდი. 721 00:35:07,560 --> 00:35:08,680 ასე რომ, რა ხდება? 722 00:35:08,680 --> 00:35:10,920 >> ასევე, საუკეთესო სტრატეგია უნდა გავაკეთოთ ნებისმიერ დროს თქვენ 723 00:35:10,920 --> 00:35:13,710 არ ექმნებათ აბსოლუტური სია შეცდომები, როგორც, რომ, 724 00:35:13,710 --> 00:35:16,690 არის გადახვევა უკან, ვეძებოთ ბრძანება თქვენ უბრალოდ გაიქცა, რომელიც ჩემს შემთხვევაში 725 00:35:16,690 --> 00:35:18,020 არის მიიღოს სიმებიანი. 726 00:35:18,020 --> 00:35:21,630 შეხედეთ, რა გააკეთოს გააკეთა და ეს არის ის, რომ ხანგრძლივი Clang ბრძანება, არ არის დიდი გარიგება არსებობს. 727 00:35:21,630 --> 00:35:22,950 >> მაგრამ წითელი არის ცუდი. 728 00:35:22,950 --> 00:35:24,750 Green ცდილობს იყოს ნაზი და სასარგებლო. 729 00:35:24,750 --> 00:35:26,140 მაგრამ მაინც ცუდი, ამ შემთხვევაში. 730 00:35:26,140 --> 00:35:27,510 მაგრამ სად არის ამაში ცუდი? 731 00:35:27,510 --> 00:35:31,450 >> String.c, ხაზი ხუთ, ხასიათი ხუთ. 732 00:35:31,450 --> 00:35:32,930 ასე რომ, ეს მხოლოდ საერთო კონვენციას. 733 00:35:32,930 --> 00:35:36,060 რაღაც colon რაღაც იმას ნიშნავს, ხაზის ნომერი და ხასიათი ნომერი. 734 00:35:36,060 --> 00:35:41,080 შეცდომა, გამოყენების გამოუცხადებელ იდენტიფიკატორი string. 735 00:35:41,080 --> 00:35:42,900 ხომ არ ნიშნავს, სტანდარტული? 736 00:35:42,900 --> 00:35:45,530 >> ასე რომ, სამწუხაროდ, Clang ცდილობს იყოს სასარგებლო. 737 00:35:45,530 --> 00:35:46,850 მაგრამ ეს არასწორია, ამ შემთხვევაში. 738 00:35:46,850 --> 00:35:49,350 არა, Clang, მე არ ნიშნავს, სტანდარტული IO. 739 00:35:49,350 --> 00:35:51,070 მე კი იმას ნიშნავდა, რომ ხაზი, დიახ. 740 00:35:51,070 --> 00:35:53,420 >> მაგრამ ხაზი ხუთ არის ერთი აქ. 741 00:35:53,420 --> 00:35:57,040 და Clang არ მესმის, S-T-R-I-N-G. 742 00:35:57,040 --> 00:36:01,490 ეს გამოუცხადებელ იდენტიფიკატორი, სიტყვა, ეს უბრალოდ არასოდეს მინახავს ადრე. 743 00:36:01,490 --> 00:36:05,730 და ეს იმიტომ, C, ენა ჩვენ წერილობით კოდი ახლავე, 744 00:36:05,730 --> 00:36:08,070 ამჯამად არ აქვს ცვლადები ეწოდება strings. 745 00:36:08,070 --> 00:36:11,380 >> ეს არ არის, ცხადია, მხარდაჭერა რაღაც მოუწოდა სიმებიანი. 746 00:36:11,380 --> 00:36:16,750 ეს არის CS50 ნაჭერი jargon, მაგრამ ძალიან პირობითი. 747 00:36:16,750 --> 00:36:18,600 მაგრამ შემიძლია დაფიქსირება ამ ასეთია. 748 00:36:18,600 --> 00:36:22,090 >> თუ დავამატო ერთი ხაზი კოდი ზევით ეს პროგრამა, 749 00:36:22,090 --> 00:36:27,890 მოიცავს CS50.h, რომელიც კიდევ ერთი ფაილი სადღაც შიგნით CS50 IDE, სადღაც 750 00:36:27,890 --> 00:36:30,820 მყარ დისკზე, ასე ვთქვათ, უბუნტუს ოპერაციული სისტემა 751 00:36:30,820 --> 00:36:33,590 რომ მე გაშვებული, რომელიც არის ფაილი, რომელიც არის 752 00:36:33,590 --> 00:36:38,740 აპირებს ასწავლიან ოპერაციული სისტემა, თუ რა სიმებიანი, უბრალოდ 753 00:36:38,740 --> 00:36:41,930 როგორც სტანდარტული io.h არის ფაილი ოპერაციული სისტემა, რომელიც 754 00:36:41,930 --> 00:36:44,430 აპირებს ასწავლიან იმას, რაც printf არის. 755 00:36:44,430 --> 00:36:46,810 >> მართლაც, ჩვენ არ მიღებული ძალიან ჰგავს გაგზავნა 756 00:36:46,810 --> 00:36:50,600 თუ IO აღიარა სტანდარტული Io.h და ცდილობდა გამოეყენებინა printf. 757 00:36:50,600 --> 00:36:53,632 ამიტომ, მე ვაპირებ წავიდეთ წინ და მხოლოდ აღებას L გარკვევა ჩემი ეკრანზე. 758 00:36:53,632 --> 00:36:56,340 ან შეგიძლიათ აკრიფოთ ნათელია და ეს უბრალოდ გარკვევა ტერმინალის ფანჯარაში. 759 00:36:56,340 --> 00:36:58,020 მაგრამ თქვენ მაინც გადახვევა უკან დრო. 760 00:36:58,020 --> 00:37:01,100 >> და მე ვაპირებ გამეორება ჩადება String. 761 00:37:01,100 --> 00:37:03,660 გადაკვეთა ჩემი თითები ამ დროს, შეიტანეთ. 762 00:37:03,660 --> 00:37:05,380 ღმერთო ჩემო, ის მუშაობდა. 763 00:37:05,380 --> 00:37:09,280 ეს გვიჩვენებს, ჩემთვის დიდი cryptic ბრძანება რომ არის ის, რაც გამომუშავებული გავლით Clang, 764 00:37:09,280 --> 00:37:10,460 მაგრამ არა შეცდომა შეტყობინებები. 765 00:37:10,460 --> 00:37:12,460 ასე რომ გააცნობიეროს, მიუხედავად იმისა, რომ თქვენ შეიძლება მიიღოთ სრულიად 766 00:37:12,460 --> 00:37:14,480 overwhelmed ერთად ნომერი შეცდომის შეტყობინებები, 767 00:37:14,480 --> 00:37:17,540 უბრალოდ, შეიძლება იყოს ეს შემაშფოთებელი კასკადური ძალაში, სადაც Clang არ ესმის 768 00:37:17,540 --> 00:37:19,620 ერთი რამ, რაც იმას ნიშნავს, რომ მაშინ, არ ესმის შემდეგი სიტყვა, 769 00:37:19,620 --> 00:37:20,560 ან მომდევნო ხაზი. 770 00:37:20,560 --> 00:37:22,850 ასე რომ, ეს უბრალოდ ახრჩობს თქვენი კოდი. 771 00:37:22,850 --> 00:37:24,440 მაგრამ სარემონტო შეიძლება იყოს მარტივი. 772 00:37:24,440 --> 00:37:27,822 ასე რომ, ყოველთვის ყურადღებას გაამახვილებს ძალიან პირველი ხაზი გამომავალი. 773 00:37:27,822 --> 00:37:29,530 და თუ არ მესმის, რომ ეს, უბრალოდ გამოიყურება 774 00:37:29,530 --> 00:37:32,480 სიტყვა, რომელიც შეიძლება იყოს წარმოშობა და ხაზის ნომერი, 775 00:37:32,480 --> 00:37:34,650 და ხასიათი, სადაც რომ შეცდომა შეიძლება იყოს. 776 00:37:34,650 --> 00:37:40,328 >> ახლა ნება მომეცით წავიდეთ წინ და ტიპის dot ხაზი, სიმებიანი, შევა. 777 00:37:40,328 --> 00:37:44,340 Hm, ეს არ ამბობდა მიესალმები არაფერი. 778 00:37:44,340 --> 00:37:46,210 რატომ? 779 00:37:46,210 --> 00:37:48,170 ასევე, გავიხსენოთ, სადაც ის გაშვებული? 780 00:37:48,170 --> 00:37:53,730 >> ეს, ალბათ, მოხდა იმ დროს, მარყუჟის, თუ გნებავთ, on line ექვსი, 781 00:37:53,730 --> 00:37:56,950 იმიტომ, რომ სიმებიანი დიზაინი, დაწერილი CS50 პერსონალი, 782 00:37:56,950 --> 00:38:00,350 ფაქტიურად იმას ნიშნავდა, რომ უბრალოდ იჯდეს იქ ელოდება, და ელოდება, 783 00:38:00,350 --> 00:38:01,850 და ელოდება სიმებიანი. 784 00:38:01,850 --> 00:38:03,792 ყველა ვგულისხმობთ სიმებიანი ადამიანის შეყვანა. 785 00:38:03,792 --> 00:38:04,500 ასე, რომ თქვენ იცით, რა? 786 00:38:04,500 --> 00:38:05,166 ნება მომეცით წავიდეთ წინ. 787 00:38:05,166 --> 00:38:08,704 და მხოლოდ ახირება, ნება მომეცით აკრიფოთ ჩემი სახელი, დავითი, შევა. 788 00:38:08,704 --> 00:38:10,120 ახლა მე მაქვს უფრო დინამიური პროგრამა. 789 00:38:10,120 --> 00:38:11,240 მისი თქმით, მიესალმები დავით. 790 00:38:11,240 --> 00:38:16,280 >> თუ მე წავიდეთ წინ და აწარმოებს ეს კიდევ ერთხელ, ნება მომეცით ცდილობენ ამბობენ Zamila სახელი, შევა. 791 00:38:16,280 --> 00:38:17,940 და ახლა ჩვენ გვაქვს დინამიური პროგრამა. 792 00:38:17,940 --> 00:38:19,380 მე არ რთული კოდირებული მსოფლიოში. 793 00:38:19,380 --> 00:38:21,760 მე არ რთული კოდირებული სახელი ან David, ან Zamila. 794 00:38:21,760 --> 00:38:25,350 >> ახლა ის ბევრად უფრო პროგრამები ჩვენ ვიცით, სადაც, თუ იგი შეიტანენ, 795 00:38:25,350 --> 00:38:27,870 იგი აწარმოებს ოდნავ განსხვავებული გამომავალი. 796 00:38:27,870 --> 00:38:31,020 ახლა, ეს არ არის საუკეთესო მომხმარებლის, გამოცდილება, ან UX. 797 00:38:31,020 --> 00:38:33,000 პროგრამის გაშვება. 798 00:38:33,000 --> 00:38:35,830 >> მე არ ვიცი რა მე უნდა უნდა გავაკეთოთ, თუ მე რეალურად შევხედოთ 799 00:38:35,830 --> 00:38:37,290 ან გახსოვთ კოდის. 800 00:38:37,290 --> 00:38:39,640 მოდით მომხმარებელი განიცდიან ცოტა უკეთესი 801 00:38:39,640 --> 00:38:41,240 მარტივი რამ. 802 00:38:41,240 --> 00:38:44,782 ნება მომეცით დაბრუნდეს ამ პროგრამა, და უბრალოდ ვთქვა, printf. 803 00:38:44,782 --> 00:38:48,870 >> და ნება მომეცით წავიდეთ წინ და აცხადებენ, სახელი, მსხვილი ნაწლავის, და სივრცეში, და შემდეგ ნახევრად მსხვილი ნაწლავის. 804 00:38:48,870 --> 00:38:51,170 და მხოლოდ ჩათვლით, არ საწინააღმდეგოდ n. 805 00:38:51,170 --> 00:38:52,980 და ეს არის მიზანმიმართული, იმიტომ, რომ მე არ მინდა 806 00:38:52,980 --> 00:38:54,590 სწრაფი გადაადგილება, რათა მომდევნო ხაზი. 807 00:38:54,590 --> 00:38:58,800 >> მინდა, ნაცვლად, ამისათვის მიიღოს სიმებიანი გადააკომპილეთ ჩემი კოდი შევიდა ახალი მანქანა 808 00:38:58,800 --> 00:39:00,980 კოდი dot ხაზი string. 809 00:39:00,980 --> 00:39:02,460 Ah, ეს არის ბევრად გალამაზებაში. 810 00:39:02,460 --> 00:39:05,780 ახლა ნამდვილად ვიცი, რა კომპიუტერი სურს ჩემგან, მისცეს მას სახელი. 811 00:39:05,780 --> 00:39:10,020 >> ასე რომ, მე ვაპირებ წავიდეთ წინ და ტიპის in Rob, შევა, და hello, Rob. 812 00:39:10,020 --> 00:39:13,640 ასე რომ, გააცნობიეროს, ეს ჯერ კიდევ, ბოლოს დღეს, მხოლოდ ცხრა ხაზის პროგრამის. 813 00:39:13,640 --> 00:39:15,090 მაგრამ ჩვენ აღებული ეს ბავშვი ნაბიჯები. 814 00:39:15,090 --> 00:39:18,380 >> ჩვენ ვწერდით, რომ ერთი ხაზი, რომელიც ჩვენ ნაცნობი იყო, printf, hello მსოფლიოში. 815 00:39:18,380 --> 00:39:19,980 მაშინ ჩვენ undid ცოტა რომ. 816 00:39:19,980 --> 00:39:21,560 და ჩვენ, ფაქტობრივად გამოიყენება მიიღოს სიმებიანი. 817 00:39:21,560 --> 00:39:23,362 და ჩვენ არ გაიზიარა, რომ ღირებულების ცვლადი. 818 00:39:23,362 --> 00:39:26,070 და მერე წავედით წინ და გაუმჯობესდა ეს კიდევ უფრო მესამე ხაზი. 819 00:39:26,070 --> 00:39:29,220 ეს განმეორებადი პროცესი წერა პროგრამული ნამდვილად გასაღები. 820 00:39:29,220 --> 00:39:33,420 In CS50, და ცხოვრების კულტურას, თქვენ უნდა საერთოდ არ დასხდნენ, 821 00:39:33,420 --> 00:39:36,800 პროგრამა არ აქვს გონება, და ცდილობენ წერა მთელი Damn რამ ერთდროულად. 822 00:39:36,800 --> 00:39:40,810 >> ეს იქნება, აუცილებლად, გამოიწვიოს გზა მეტი შეცდომები ვიდრე ჩვენ თვითონ ვნახეთ, აქ. 823 00:39:40,810 --> 00:39:44,070 მე, ამ დღეს, მუდმივად სხვა სულელური შეცდომები, 824 00:39:44,070 --> 00:39:47,480 რომლებიც, ფაქტობრივად, უფრო შეცდომები რომლებიც რთული გაერკვნენ. 825 00:39:47,480 --> 00:39:52,095 მაგრამ თქვენ უფრო შეცდომები უფრო ხაზი კოდი წერთ ერთდროულად. 826 00:39:52,095 --> 00:39:54,220 ასე რომ, ეს პრაქტიკა, დაწერა ცოტა კოდი 827 00:39:54,220 --> 00:39:57,930 რომ თქვენ კომფორტულად, კომპილაციის ის, რომ აწარმოებს, შეამოწმოთ ის უფრო ზოგადად, 828 00:39:57,930 --> 00:40:01,370 მაშინ გადატანა on-- ასე რომ ისევე როგორც ჩვენ ინახება layering და layering გასულ კვირას, 829 00:40:01,370 --> 00:40:04,190 მშენებლობის რაღაც ძალიან მარტივი უფრო რთული, 830 00:40:04,190 --> 00:40:05,200 იგივე აქ. 831 00:40:05,200 --> 00:40:08,500 არ დასხდნენ, და ცდილობენ დაეწერა მთელი პრობლემა. 832 00:40:08,500 --> 00:40:10,780 პრაქტიკულად ეს ბავშვი ნაბიჯები. 833 00:40:10,780 --> 00:40:15,100 >> ახლა, strings არ არის ყველა რომ სასარგებლო უთხრა თავს. 834 00:40:15,100 --> 00:40:18,210 ჩვენ გვინდა რეალურად, იდეალურად, როგორიც უნდა რაღაც ჩვენი ინსტრუმენტარიუმის. 835 00:40:18,210 --> 00:40:20,990 მოდით რეალურად ზუსტად რომ. 836 00:40:20,990 --> 00:40:24,900 >> ნება მომეცით წავიდეთ წინ ახლა და whip up ოდნავ განსხვავებული პროგრამა. 837 00:40:24,900 --> 00:40:28,320 და ჩვენ მოვუწოდებთ ამ int.c, for რიცხვი. 838 00:40:28,320 --> 00:40:30,870 მე ვაპირებ, ასევე, მოიცავს CS550.h. 839 00:40:30,870 --> 00:40:33,060 მე ვაპირებ მოიცავს სტანდარტული IO. 840 00:40:33,060 --> 00:40:36,630 და რომ იქნება საკმაოდ გავრცელებული ამ პირველი რამდენიმე დღის განმავლობაში კლასში. 841 00:40:36,630 --> 00:40:39,050 >> და მე ვაპირებ, რომ მზად თავს ერთად მთავარი ფუნქცია. 842 00:40:39,050 --> 00:40:43,370 და ახლა ნაცვლად მიღების სიმებიანი, მოდით წავიდეთ წინ და მიიღოს int. 843 00:40:43,370 --> 00:40:49,285 მოდით დავარქვათ i, და მას მისაღებად int, მჭიდრო parens, ნახევრად მსხვილი ნაწლავის. 844 00:40:49,285 --> 00:40:51,410 და ახლა მოდით რაღაც ეს, printf. 845 00:40:51,410 --> 00:40:56,190 >> მოდით, ვთქვათ, რაღაც hello, წარმატებული ო, მძიმე i. 846 00:40:56,190 --> 00:41:00,010 ასე რომ, მე საკმაოდ ბევრი ლიმიტირებით რა გავაკეთე მხოლოდ ერთი წუთით წინ. 847 00:41:00,010 --> 00:41:01,660 მაქვს placeholder აქ. 848 00:41:01,660 --> 00:41:05,150 მე არ მძიმით მე აქ, იმიტომ, რომ მინდა შეაერთედ i შევიდა, რომ placeholder. 849 00:41:05,150 --> 00:41:07,250 >> მოდით წავიდეთ წინ და ცდილობენ შედგენა ეს პროგრამა. 850 00:41:07,250 --> 00:41:10,060 ფაილი ეწოდება int.c. 851 00:41:10,060 --> 00:41:12,920 ამიტომ, მე ვაპირებ ვთქვა, რომ int, შევა. 852 00:41:12,920 --> 00:41:16,420 ღმერთო ჩემო, მაგრამ არ არის დიდი გარიგება, არა? 853 00:41:16,420 --> 00:41:17,230 აქ არის შეცდომა. 854 00:41:17,230 --> 00:41:19,810 >> არსებობს სინტაქსური შეცდომა აქ ისეთი, რომ პროგრამა არ შეუძლია 855 00:41:19,810 --> 00:41:25,460 იყოს შედგენილი შიგნით int.c, ხაზი შვიდი, ხასიათი 27 შეცდომა ფორმატი 856 00:41:25,460 --> 00:41:28,400 განსაზღვრავს ტიპის char ვარსკვლავი, რასაც არ არის. 857 00:41:28,400 --> 00:41:30,020 მაგრამ არგუმენტი ტიპის int. 858 00:41:30,020 --> 00:41:33,110 >> ასე რომ, აქ, ძალიან, ჩვენ არ ვაპირებთ, რომელთა მიზანია მიუხედავად იმისა, რომ დღეს არის ბევრი მასალა, 859 00:41:33,110 --> 00:41:35,710 ჩვენ ვაპირებთ, რომ overwhelm თქვენ აბსოლუტურად ყველა თვისება C, 860 00:41:35,710 --> 00:41:38,070 და პროგრამირების უფრო ზოგადად, მხოლოდ ამ პირველი რამდენიმე კვირის განმავლობაში. 861 00:41:38,070 --> 00:41:40,400 ასე რომ, ხშირად იქნება jargon რომლითაც თქვენ არ იცნობს. 862 00:41:40,400 --> 00:41:43,350 და, ფაქტობრივად, char ვარსკვლავი არის რაღაც ჩვენ ვაპირებთ, რომ დაბრუნდება 863 00:41:43,350 --> 00:41:44,830 ერთი კვირის ან ორი დროს. 864 00:41:44,830 --> 00:41:47,530 >> მაგრამ ახლა, ვნახოთ, თუ ჩვენ შეგვიძლია გარჩევის სიტყვა, რომ იცნობს. 865 00:41:47,530 --> 00:41:50,750 Formats-- ასე გავიგეთ, ფორმატი specifier, ფორმატი კოდი ადრე. 866 00:41:50,750 --> 00:41:51,840 ეს არის ნაცნობი. 867 00:41:51,840 --> 00:41:53,840 Type-- მაგრამ არგუმენტი ტიპის int. 868 00:41:53,840 --> 00:41:55,980 დაელოდეთ ერთი წუთით, მე int. 869 00:41:55,980 --> 00:41:59,230 >> იქნებ პროცენტი რეალურად აქვს განსაზღვრული მნიშვნელობა. 870 00:41:59,230 --> 00:42:00,230 და, მართლაც, ეს ასეა. 871 00:42:00,230 --> 00:42:03,101 რიცხვი, თუ გსურთ printf ჩაანაცვლებს,, 872 00:42:03,101 --> 00:42:05,350 თქვენ რეალურად უნდა გამოვიყენოთ სხვადასხვა ფორმატში specifier. 873 00:42:05,350 --> 00:42:06,890 და თქვენ არ ვიცი, ამ თუ ვინმე განუცხადა, 874 00:42:06,890 --> 00:42:07,973 და თქვენ კეთდება ეს ადრე. 875 00:42:07,973 --> 00:42:10,490 მაგრამ პროცენტს i არის ის, რაც შეიძლება ხშირად გამოყენებული 876 00:42:10,490 --> 00:42:12,240 in printf for ჩართვის რიცხვი. 877 00:42:12,240 --> 00:42:14,920 თქვენ ასევე შეგიძლიათ გამოიყენოთ პროცენტი დ ამისთვის ათობითი რიცხვი. 878 00:42:14,920 --> 00:42:16,490 მაგრამ მე ლამაზი და მარტივი აქ. 879 00:42:16,490 --> 00:42:17,590 ასე რომ, ჩვენ წავიდეთ ერთად, რომ. 880 00:42:17,590 --> 00:42:21,160 >> ახლა ნება მომეცით წავიდეთ წინ და გამეორება მიიღოს int, შეიტანეთ. 881 00:42:21,160 --> 00:42:23,328 ეს არის კარგი, არ შეცდომები. 882 00:42:23,328 --> 00:42:27,260 Dot ხაზი გაკეთება int OK, ცუდი მომხმარებლის, გამოცდილება, იმიტომ, რომ მე არ უთხრა თავს 883 00:42:27,260 --> 00:42:27,760 რა უნდა ვქნა. 884 00:42:27,760 --> 00:42:28,426 მაგრამ ეს ჯარიმა. 885 00:42:28,426 --> 00:42:29,480 მე დაჭერა სწრაფად. 886 00:42:29,480 --> 00:42:36,260 >> ახლა კი ნება მომეცით წავიდეთ წინ და აკრიფოთ დავით, OK, Zamila, რობ. 887 00:42:36,260 --> 00:42:37,820 OK, ასე რომ, ეს კარგია. 888 00:42:37,820 --> 00:42:41,710 ამ დროს, მე გამოყენებით ფუნქცია, თავსატეხი ცალი, ე.წ. მისაღებად int. 889 00:42:41,710 --> 00:42:44,230 და თურმე out-- და ჩვენ იხილეთ, ამ მოგვიანებით term-- 890 00:42:44,230 --> 00:42:47,730 CS50 პერსონალი განხორციელებული სიმებიანი ისე, 891 00:42:47,730 --> 00:42:50,350 რომ ეს მხოლოდ ფიზიკურად სიმებიანი თქვენთვის. 892 00:42:50,350 --> 00:42:54,340 >> იგი ახორციელებს კიდევ int in ისე, რომ იგი მხოლოდ 893 00:42:54,340 --> 00:42:55,590 მიიღოს რიცხვი თქვენთვის. 894 00:42:55,590 --> 00:42:57,830 და თუ, ადამიანური, არ თანამშრომლობენ, ეს 895 00:42:57,830 --> 00:43:00,590 ფაქტიურად აპირებს ამბობენ გაიმეორეთ, გაიმეორეთ, გაიმეორეთ, 896 00:43:00,590 --> 00:43:05,200 ფაქტიურად სხდომაზე ლამაზად, სანამ თქვენ დაავალდებულებს რაღაც ჯადოსნური ნომერი, 897 00:43:05,200 --> 00:43:07,670 როგორიცაა 50, და მიესალმები 50. 898 00:43:07,670 --> 00:43:11,440 >> თუ ჩვენ აწარმოებს ეს კიდევ ერთხელ და ტიპის 42, hello 42. 899 00:43:11,440 --> 00:43:15,750 ასე რომ, კიდევ int ფუნქცია შიგნით რომ თავსატეხი ცალი 900 00:43:15,750 --> 00:43:19,050 საკმარისია ლოგიკა, საკმარისი აზრის, გაერკვნენ, რა არის სიტყვა? 901 00:43:19,050 --> 00:43:20,330 და რა არის ნომერი? 902 00:43:20,330 --> 00:43:23,165 მხოლოდ მიღების, საბოლოო ჯამში, ნომრები. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> გამოდის, რომ ეს არ არის, რომ გამომხატველი. 905 00:43:30,230 --> 00:43:30,910 ჯერჯერობით. 906 00:43:30,910 --> 00:43:33,690 ასე რომ, yay, ბოლო დროს ჩვენ წავიდა საკმაოდ სწრაფად 907 00:43:33,690 --> 00:43:38,320 შევიდა განხორციელების თამაშები, და ანიმაცია, და მხატვრული ნაწარმოებების Scratch. 908 00:43:38,320 --> 00:43:42,260 და აქ, ჩვენ რომ შინაარსი ერთად hello მსოფლიოში, და hello 50. 909 00:43:42,260 --> 00:43:43,696 >> ეს არ არის ყველა, რომ ინსპირირებით. 910 00:43:43,696 --> 00:43:46,070 და, მართლაც, ამ პირველი რამდენიმე მაგალითები გარკვეული დრო დასჭირდება 911 00:43:46,070 --> 00:43:47,510 გაეზარდათ შფოთვა. 912 00:43:47,510 --> 00:43:49,854 მაგრამ ჩვენ ასე უფრო მეტი კონტროლის ახლა, ფაქტობრივად. 913 00:43:49,854 --> 00:43:51,770 და ჩვენ ვაპირებთ, რომ ძალიან სწრაფად დაიწყოს layering 914 00:43:51,770 --> 00:43:53,870 თავზე ამ ძირითადი primitives. 915 00:43:53,870 --> 00:43:56,370 >> მაგრამ პირველი, მოდით გავიგოთ, რა შეზღუდვები. 916 00:43:56,370 --> 00:43:58,620 ფაქტობრივად, ერთი რამ ნაკაწრი არ აქვს ადვილად 917 00:43:58,620 --> 00:44:00,990 მოდით გავაკეთოთ არის ნამდვილად ქვეშ Hood, 918 00:44:00,990 --> 00:44:03,740 და გაგება, თუ რა კომპიუტერი, რა შეუძლია გააკეთოს, 919 00:44:03,740 --> 00:44:05,250 და რა შეზღუდვები. 920 00:44:05,250 --> 00:44:08,580 და, მართლაც, რომ ნაკლებობა გაგება, პოტენციურად, გრძელვადიანი 921 00:44:08,580 --> 00:44:12,520 შეიძლება გამოიწვიოს ჩვენი mistakes-- წერა შეცდომები, წერილობით არასაიმედო პროგრამა, რომელიც 922 00:44:12,520 --> 00:44:13,880 იღებს კალენდარი რამდენიმე გზა. 923 00:44:13,880 --> 00:44:17,130 >> ასე რომ, მოდით, გარკვეული ნაბიჯები გაგება ამ ცოტა უკეთესი 924 00:44:17,130 --> 00:44:19,710 გზა, ვთქვათ, შემდეგი მაგალითი. 925 00:44:19,710 --> 00:44:23,550 მე ვაპირებ წავიდეთ წინ და განახორციელოს რეალური სწრაფი პროგრამა სახელწოდებით Adder. 926 00:44:23,550 --> 00:44:25,134 მსგავსად, მოდით დაამატოთ ზოგიერთი ნომრები ერთად. 927 00:44:25,134 --> 00:44:27,800 და მე ვაპირებ, რომ კოდი ზოგიერთ კუთხეში აქ, და უბრალოდ დააკოპირეთ და ჩასვით 928 00:44:27,800 --> 00:44:30,270 სადაც მე ვიყავი ადრე, უბრალოდ ასე რომ ჩვენ შეგვიძლია აპირებს ადრე. 929 00:44:30,270 --> 00:44:33,090 ასე რომ, ახლა მე მაქვს ძირითადი წამოწყება პროგრამა მოუწოდა Adder. 930 00:44:33,090 --> 00:44:34,670 >> და მოდით წავიდეთ წინ და ამის გაკეთება. 931 00:44:34,670 --> 00:44:38,680 მე ვაპირებ წავიდეთ წინ და ვთქვათ, intx იღებს მიიღოს int. 932 00:44:38,680 --> 00:44:39,430 და იცით რა? 933 00:44:39,430 --> 00:44:40,990 მოდით, უკეთესი მომხმარებლის, გამოცდილება. 934 00:44:40,990 --> 00:44:45,740 >> ასე რომ, მოდით უბრალოდ, ვამბობთ x არის და ეფექტურად შეეკითხება მომხმარებელს მოგვცეს x. 935 00:44:45,740 --> 00:44:50,600 და მაშინ ნება მომეცით წავიდეთ წინ და აცხადებენ, printf როგორ შესახებ y არის, ამ დროს ელოდება 936 00:44:50,600 --> 00:44:53,140 ორი ღირებულებების შესახებ. 937 00:44:53,140 --> 00:44:59,759 და მაშინ მოდით უბრალოდ წავიდეთ წინ და ვთქვათ, printf, თანხა x და y არის. 938 00:44:59,759 --> 00:45:01,300 და ახლა მე არ მინდა ამის გაკეთება პროცენტს s. 939 00:45:01,300 --> 00:45:09,080 მე მინდა, რომ პროცენტს i, წარმატებული ო, შემდეგ დანამატის თანხა ღირებულება. 940 00:45:09,080 --> 00:45:10,620 >> ასე რომ, როგორ შეიძლება მე ამით? 941 00:45:10,620 --> 00:45:11,270 იცი რაა? 942 00:45:11,270 --> 00:45:12,840 მე ვიცი, თუ როგორ გამოიყენოთ ცვლადები. 943 00:45:12,840 --> 00:45:15,140 ნება მომეცით, უბრალოდ აცხადებენ, ახალი, int z. 944 00:45:15,140 --> 00:45:16,770 >> და მე ვაპირებ მიიღოს ვხვდები აქ. 945 00:45:16,770 --> 00:45:21,470 თუ არსებობს თანაბარი ნიშნები ამ ენის, იქნებ მე შემიძლია უბრალოდ x + y, 946 00:45:21,470 --> 00:45:23,660 სანამ მე დავასრულებ ჩემს ეგონა, ნახევრად ნაწლავის? 947 00:45:23,660 --> 00:45:28,170 ახლა შემიძლია დაბრუნდეს ქვემოთ აქ, დანამატის z, დასრულდება ამ აზრის ნახევრად მსხვილი ნაწლავის. 948 00:45:28,170 --> 00:45:33,160 და ვნახოთ ახლა, თუ ეს sequences of ხაზები x არის int. 949 00:45:33,160 --> 00:45:34,770 Y არის int. 950 00:45:34,770 --> 00:45:37,980 >> სანიშნეს x და y, შესანახად ღირებულების z-- ასე რომ, კიდევ ერთხელ, მახსოვს თანაბარი ნიშანი 951 00:45:37,980 --> 00:45:38,560 არ არის თანაბარი. 952 00:45:38,560 --> 00:45:41,100 ეს დავალება მარჯვნიდან მარცხნივ. 953 00:45:41,100 --> 00:45:45,180 და მოდით ამობეჭდოთ, რომ თანხა x და y არ არის ფაქტიურად z, 954 00:45:45,180 --> 00:45:46,830 მაგრამ რა არის შიგნით z. 955 00:45:46,830 --> 00:45:50,090 მოდით Adder - ლამაზი, არ შეცდომები ამ დროს. 956 00:45:50,090 --> 00:45:53,030 Dot ხაზი Adder, მიუთითოთ, x იქნება 1. 957 00:45:53,030 --> 00:45:55,380 >> Y იქნება 2. 958 00:45:55,380 --> 00:45:58,964 და თანხა x და y არის 3. 959 00:45:58,964 --> 00:46:00,130 ასე რომ, ყველა კარგი და კეთილი. 960 00:46:00,130 --> 00:46:03,260 >> ასე, რომ თქვენ წარმოიდგინეთ, რომ მათემატიკის უნდა იმუშაოს პროგრამა მოსწონს ეს. 961 00:46:03,260 --> 00:46:04,040 მაგრამ იცით, რა? 962 00:46:04,040 --> 00:46:06,904 ეს არის ცვლადი, ხაზი 12, თუნდაც საჭირო? 963 00:46:06,904 --> 00:46:09,820 თქვენ არ უნდა მიიღონ ჩვევა მხოლოდ შენახვის რამ ცვლადები 964 00:46:09,820 --> 00:46:10,980 მხოლოდ იმიტომ, რომ თქვენ შეგიძლიათ. 965 00:46:10,980 --> 00:46:13,550 და, ფაქტობრივად, ეს ზოგადად განიხილება ცუდი დიზაინი 966 00:46:13,550 --> 00:46:18,100 თუ თქვენ შექმნით ცვლადი, მოუწოდა z ამ შემთხვევაში, შენახვის რაღაც, 967 00:46:18,100 --> 00:46:21,390 და შემდეგ დაუყოვნებლივ გამოყენებით, მაგრამ აღარასოდეს. 968 00:46:21,390 --> 00:46:24,700 რატომ მისცეს რაღაც სახელი როგორიცაა z თუ თქვენ ფაქტიურად 969 00:46:24,700 --> 00:46:26,770 აპირებს გამოიყენოს, რომ ის მხოლოდ ერთხელ, და ასე 970 00:46:26,770 --> 00:46:29,380 პროქსიმალური სადაც ის ეს, პირველ რიგში, 971 00:46:29,380 --> 00:46:31,052 ასე ახლოს თვალსაზრისით ხაზი კოდი? 972 00:46:31,052 --> 00:46:31,760 ასე, რომ თქვენ იცით, რა? 973 00:46:31,760 --> 00:46:34,480 გამოდის, რომ C საკმაოდ მოქნილი. 974 00:46:34,480 --> 00:46:36,586 თუ მე მართლა მინდა დანამატი ღირებულებების აქ, 975 00:46:36,586 --> 00:46:38,210 მე არ უნდა განაცხადოს ახალი ცვლადი. 976 00:46:38,210 --> 00:46:41,680 მე ვერ უბრალოდ plug-in x + y, რადგან C ესმის 977 00:46:41,680 --> 00:46:43,390 არითმეტიკა, და მათემატიკური ოპერატორები. 978 00:46:43,390 --> 00:46:47,140 >> ასე რომ, შემიძლია უბრალოდ ვთქვა, ამის გაკეთება მათემატიკის, x + y, რაც იმ ღირებულებები, 979 00:46:47,140 --> 00:46:50,780 დანამატის შედეგად მთელი შევიდა, რომ სიმებიანი. 980 00:46:50,780 --> 00:46:53,730 ასე რომ, ეს შეიძლება იყოს, თუმცა მხოლოდ ერთი ხაზი მოკლე, 981 00:46:53,730 --> 00:46:58,480 უკეთესი დიზაინი, უკეთესი პროგრამა, იმიტომ, რომ იქ ნაკლები კოდი, ამიტომ 982 00:46:58,480 --> 00:46:59,921 ნაკლებად ჩემთვის გასაგებია. 983 00:46:59,921 --> 00:47:01,920 და ეს ასევე მხოლოდ სუფთა, იმდენად, რამდენადაც ჩვენ არ ვართ 984 00:47:01,920 --> 00:47:04,620 ახალი სიტყვა, ახალი სიმბოლოები, როგორიცაა z, 985 00:47:04,620 --> 00:47:07,510 მიუხედავად იმისა, რომ ნამდვილად არ ემსახურება დიდი მიზანი. 986 00:47:07,510 --> 00:47:12,890 >> სამწუხაროდ, მათემატიკის არ არის ყველა რომ საიმედო ზოგჯერ. 987 00:47:12,890 --> 00:47:15,270 მოდით წავიდეთ წინ და ამის გაკეთება. 988 00:47:15,270 --> 00:47:18,200 მე ვაპირებ წავიდეთ წინ ახლა და ამის შემდეგ. 989 00:47:18,200 --> 00:47:27,650 >> მოდით გავაკეთოთ printf, პროცენტი i, პლუს პროცენტი i, უნდა იყოს პროცენტს i, წარმატებული ო. 990 00:47:27,650 --> 00:47:32,240 და მე ვაპირებ უნდა გააკეთოს ამ xyx + y. 991 00:47:32,240 --> 00:47:34,821 ასე რომ მე უბრალოდ გადავწერო ეს ოდნავ განსხვავებულად აქ. 992 00:47:34,821 --> 00:47:36,320 ნება მომეცით უბრალოდ სწრაფი საღი აზრის ქვითარი. 993 00:47:36,320 --> 00:47:37,986 ერთხელ, მოდით არ მიიღონ წინ საკუთარ თავს. 994 00:47:37,986 --> 00:47:41,420 ჩადება გველგესლა, dot slash გველგესლა. 995 00:47:41,420 --> 00:47:44,950 x 1, y 2, 1 + 2 = 3. 996 00:47:44,950 --> 00:47:45,870 ასე რომ, კარგი. 997 00:47:45,870 --> 00:47:49,060 მაგრამ მოდით გაართულებს ეს ახლა ცოტა, და შექმნათ ახალი ფაილი. 998 00:47:49,060 --> 00:47:53,350 >> მე ვაპირებ მოვუწოდო ამ ერთი, ამბობენ, ints, მრავლობითი მთელი რიცხვები. 999 00:47:53,350 --> 00:47:55,980 დავიწყებ, სადაც მე მომენტში წინ. 1000 00:47:55,980 --> 00:47:57,770 მაგრამ ახლა მოდით გავაკეთოთ რამდენიმე სხვა ხაზები. 1001 00:47:57,770 --> 00:48:03,430 ნება მომეცით წავიდეთ წინ და ამის შემდეგ, printf, პროცენტი i, მინუს პროცენტს i, 1002 00:48:03,430 --> 00:48:08,959 არის პროცენტს i, მძიმე x, მძიმე yx y. 1003 00:48:08,959 --> 00:48:10,750 ასე რომ, მე ვაკეთებ ოდნავ სხვადასხვა მათემატიკის არსებობს. 1004 00:48:10,750 --> 00:48:11,624 მოდით გავაკეთოთ კიდევ ერთი. 1005 00:48:11,624 --> 00:48:16,610 ასე პროცენტს i ჯერ პროცენტი მე პროცენტს i, წარმატებული ო. 1006 00:48:16,610 --> 00:48:21,430 მოდით plug-in x და y და x ჯერ y. 1007 00:48:21,430 --> 00:48:24,530 ჩვენ ვიყენებთ ვარსკვლავი on თქვენს კომპიუტერში ჯერ. 1008 00:48:24,530 --> 00:48:26,390 >> თქვენ არ გამოიყენონ x. x არის ცვლადის სახელი აქ. 1009 00:48:26,390 --> 00:48:28,270 თქვენ იყენებთ ვარსკვლავი გამრავლება. 1010 00:48:28,270 --> 00:48:29,020 მოდით გავაკეთოთ კიდევ ერთი. 1011 00:48:29,020 --> 00:48:34,580 Printf პროცენტს I, იყოფა by პროცენტს i, არის პროცენტს i, 1012 00:48:34,580 --> 00:48:40,460 წარმატებული ო. xy იყოფა y-- ასე რომ თქვენ გამოიყენოთ წინ ხაზი in C 1013 00:48:40,460 --> 00:48:41,502 უნდა გავაკეთოთ განყოფილება. 1014 00:48:41,502 --> 00:48:42,460 და მოდით ერთი სხვა. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 დარჩენილი პროცენტს i, იყოფა by პროცენტს i, არის პროცენტს i. 1017 00:48:55,240 --> 00:48:59,550 xy-- და ახლა დარჩენილი არის ის, რაც დარჩა. 1018 00:48:59,550 --> 00:49:02,980 როდესაც თქვენ ცდილობენ გამყოფი მნიშვნელი შევიდა მრიცხველი, 1019 00:49:02,980 --> 00:49:05,570 რამდენი დარჩა გამო, რომ თქვენ ვერ ყოფს გარეთ? 1020 00:49:05,570 --> 00:49:07,910 >> ასე ნამდვილად არ არის, აუცილებლად, სიმბოლო 1021 00:49:07,910 --> 00:49:09,470 ჩვენ გამოიყენება კლასის სკოლის ამ. 1022 00:49:09,470 --> 00:49:13,830 მაგრამ არსებობს C. თქვენ შეგიძლიათ ამბობენ x modulo y, სადაც 1023 00:49:13,830 --> 00:49:18,000 ეს პროცენტი ნიშანი ამ კონტექსტში confusingly როცა თქვენ შიგნით 1024 00:49:18,000 --> 00:49:20,170 ორმაგი შეთავაზება, შიგნით printf, პროცენტი 1025 00:49:20,170 --> 00:49:21,830 გამოიყენება როგორც ფორმატი specifier. 1026 00:49:21,830 --> 00:49:25,420 >> როდესაც თქვენ იყენებთ პროცენტი გარეთ რომ მათემატიკური გამოხატვის, 1027 00:49:25,420 --> 00:49:29,910 ეს modulo ოპერატორი მოდულის არითმეტიკა ჩვენი მიზნებისთვის 1028 00:49:29,910 --> 00:49:33,650 აქ, მხოლოდ იმას ნიშნავს, რა არის დარჩენილი x გაყოფილი y? 1029 00:49:33,650 --> 00:49:36,130 ასე რომ, x გაყოფილი y არის x slash y. 1030 00:49:36,130 --> 00:49:38,220 რა არის დარჩენილი x გაყოფილი y? 1031 00:49:38,220 --> 00:49:41,780 ეს არის x mod y, როგორც პროგრამისტი ვიტყოდი. 1032 00:49:41,780 --> 00:49:48,300 >> ასე რომ, თუ მე არ შეცდომები აქ, ნება მომეცით წავიდეთ წინ და მიიღოს ints, მრავლობითი, ლამაზი, 1033 00:49:48,300 --> 00:49:50,010 და dot slash ints. 1034 00:49:50,010 --> 00:49:55,270 და მოდით წავიდეთ წინ და ნუ, ვთქვათ, 1, 10. 1035 00:49:55,270 --> 00:49:58,390 ყველა უფლება, 1 plus 10 11, შემოწმება. 1036 00:49:58,390 --> 00:50:01,240 1-10 არის უარყოფითი 9 შემოწმება. 1037 00:50:01,240 --> 00:50:03,420 >> 1-ჯერ 10 არის 10, შემოწმება. 1038 00:50:03,420 --> 00:50:07,090 1 იყოფა 10 is-- OK, ჩვენ გამოტოვოთ, რომ ერთი. 1039 00:50:07,090 --> 00:50:09,480 დარჩენილი 1 იყოფა 10 1. 1040 00:50:09,480 --> 00:50:10,680 ეს არის სწორი. 1041 00:50:10,680 --> 00:50:12,630 მაგრამ იქ ხარვეზების აქ. 1042 00:50:12,630 --> 00:50:15,390 >> ასე რომ, ერთი მე ჩემი გადასცემს, არ არის სწორი. 1043 00:50:15,390 --> 00:50:16,670 ვგულისხმობ, ეს არის ახლოს 0. 1044 00:50:16,670 --> 00:50:20,670 1 იყოფა 10, თქვენ იცით, თუ ჩვენ ჭრის ზოგიერთ კუთხეში, რა თქმა უნდა, ეს არის ნულოვანი. 1045 00:50:20,670 --> 00:50:28,050 მაგრამ ეს უნდა იყოს ნამდვილად 1/10, 0.1, ან 0.10, 0,1000, ან სხვ. 1046 00:50:28,050 --> 00:50:30,600 >> ეს ნამდვილად არ იქნება ნულოვანი. 1047 00:50:30,600 --> 00:50:35,990 ისე, გამოდის, რომ კომპიუტერი ამით ფაქტიურად რა ვუთხარით მას ამის გაკეთება. 1048 00:50:35,990 --> 00:50:39,460 ჩვენ ყველაფერს ვაკეთებთ მათემატიკის, როგორც x გაყოფილი y. 1049 00:50:39,460 --> 00:50:44,680 და ორივე x და y, თითო ხაზები კოდი ადრე, რიცხვებით. 1050 00:50:44,680 --> 00:50:50,440 >> გარდა ამისა, ხაზი 15, ჩვენ ვართ ვეუბნებოდი printf, hey, printf დანამატი 1051 00:50:50,440 --> 00:50:54,230 რიცხვი, plug-in რიცხვი, plug-in რიცხვი კონკრეტულად 1052 00:50:54,230 --> 00:50:57,580 x, და შემდეგ y, და x გაყოფილი y. x და y ints. 1053 00:50:57,580 --> 00:50:59,060 ჩვენ კარგად იქ. 1054 00:50:59,060 --> 00:51:01,250 >> მაგრამ რა არის x x? 1055 00:51:01,250 --> 00:51:06,790 x გაყოფილი y უნდა იყოს, მათემატიკურად, 1/10, ან 0.1, 1056 00:51:06,790 --> 00:51:11,600 რომელიც არის რეალური ნომერი, რეალური რაოდენობა რომელსაც პოტენციურად ათობითი წერტილი. 1057 00:51:11,600 --> 00:51:13,230 ეს არ არის მთელი რიცხვი. 1058 00:51:13,230 --> 00:51:18,290 >> მაგრამ რა არის უახლოესი მთელი 1/10, ან 0.1? 1059 00:51:18,290 --> 00:51:21,114 ჰო, ეს სახის არის ნულოვანი. 1060 00:51:21,114 --> 00:51:22,030 0.1 მოსწონს ეს ბევრი. 1061 00:51:22,030 --> 00:51:22,890 და 1 ეს ბევრად. 1062 00:51:22,890 --> 00:51:25,870 ასე 1/10 უფრო ახლოსაა 0, ვიდრე ერთი. 1063 00:51:25,870 --> 00:51:30,800 >> ასე რომ, რა C აკეთებს us-- სახის იმიტომ, რომ ჩვენ განუცხადა, ეს მიზანია: 1064 00:51:30,800 --> 00:51:32,600 არის truncating რომ რიცხვი. 1065 00:51:32,600 --> 00:51:40,540 ეს აღების ღირებულება, რაც კიდევ ერთხელ არის უნდა იყოს რაღაც 0,1000, 1066 00:51:40,540 --> 00:51:41,800 0 და სხვ. 1067 00:51:41,800 --> 00:51:45,320 და ეს truncating ყველაფერი შემდეგ ათობითი წერტილი 1068 00:51:45,320 --> 00:51:47,510 ასე რომ, ყველა ამ პერსონალი, იმიტომ, რომ ეს არ 1069 00:51:47,510 --> 00:51:51,910 შეესაბამება ცნება მთელი რიცხვი, რომელიც არის მხოლოდ ნომერი, როგორც უარყოფითი 1, 0, 1, 1070 00:51:51,910 --> 00:51:55,830 და ქვემოთ, ის აგდებს მოშორებით ყველაფერი შემდეგ ათობითი წერტილი იმიტომ, რომ თქვენ 1071 00:51:55,830 --> 00:51:59,020 ვერ ჯდება ათობითი წერტილი რიცხვი განმარტება. 1072 00:51:59,020 --> 00:52:01,290 >> ასე რომ, პასუხი აქ არის ნულოვანი. 1073 00:52:01,290 --> 00:52:02,600 ასე რომ, როგორ მოვაგვაროთ ეს პრობლემა? 1074 00:52:02,600 --> 00:52:04,400 ჩვენ გვჭირდება სხვა გამოსავალი ყველა ერთად. 1075 00:52:04,400 --> 00:52:06,880 და ჩვენ შეგვიძლია ამის გაკეთება, ასეთია. 1076 00:52:06,880 --> 00:52:12,820 >> ნება მომეცით წავიდეთ წინ და შექმნას ახალი ფაილი, ამ ერთი მოუწოდა floats.c. 1077 00:52:12,820 --> 00:52:16,500 და გადარჩენა მას აქ იგივე დირექტორიაში, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 და ნება მომეცით წავიდეთ წინ და კოპირება ზოგიერთი რომ კოდი ადრე. 1080 00:52:23,260 --> 00:52:27,690 >> მაგრამ ნაცვლად მიღების int, მოდით გავაკეთოთ ეს. 1081 00:52:27,690 --> 00:52:31,037 მომეცი მცურავი წერტილი ღირებულება მოუწოდა x. სადაც მცურავი წერტილი 1082 00:52:31,037 --> 00:52:33,370 მნიშვნელობა უბრალოდ სიტყვასიტყვით რაღაც მცურავი წერტილი. 1083 00:52:33,370 --> 00:52:34,410 მას შეუძლია გადაადგილება მარცხნივ, მარჯვნივ. 1084 00:52:34,410 --> 00:52:35,530 ეს არის რეალური რაოდენობა. 1085 00:52:35,530 --> 00:52:38,050 >> და მინდა გითხრათ, არ კიდევ int, მაგრამ კიდევ float, 1086 00:52:38,050 --> 00:52:41,420 რომელიც ასევე იყო ერთი მენიუ პარამეტრების C250 ბიბლიოთეკა. 1087 00:52:41,420 --> 00:52:43,220 მოდით შეცვალოს y float. 1088 00:52:43,220 --> 00:52:45,000 ასე რომ, ეს ხდება მიიღოს float. 1089 00:52:45,000 --> 00:52:47,620 >> და ახლა, ჩვენ არ გვინდა, რომ დანამატის ints. 1090 00:52:47,620 --> 00:52:53,130 გამოდის, რომ ჩვენ უნდა გამოვიყენოთ პროცენტი ვ float, პროცენტი ვ float, 1091 00:52:53,130 --> 00:52:54,560 და ახლა შეინახეთ. 1092 00:52:54,560 --> 00:53:01,220 და ახლა, თითების გადმოკვეთა, რათა მოძრავი, ლამაზი, dot slash მოძრავი. 1093 00:53:01,220 --> 00:53:04,280 x იქნება ერთი 1. y იქნება 10 ერთხელ. 1094 00:53:04,280 --> 00:53:08,240 >> და, ლამაზი, OK ჩემი ამისა არის სწორი. 1095 00:53:08,240 --> 00:53:10,240 მე იმედი უფრო, მაგრამ დამავიწყდა დაწერა. 1096 00:53:10,240 --> 00:53:13,250 მოდით წავიდეთ და დაფიქსირება ამ ლოგიკური შეცდომა. 1097 00:53:13,250 --> 00:53:16,280 >> მოდით წავიდეთ წინ და დაიბრუნოს შემდეგ. 1098 00:53:16,280 --> 00:53:18,080 ჩვენ უბრალოდ პატარა ასლი და პასტა. 1099 00:53:18,080 --> 00:53:20,080 და მე ვაპირებ ვთქვა მინუსი. 1100 00:53:20,080 --> 00:53:21,890 >> და მე ვაპირებ ვთქვა ჯერ. 1101 00:53:21,890 --> 00:53:24,060 და მე ვაპირებ ვთქვა დაყოფილი. 1102 00:53:24,060 --> 00:53:28,240 და მე არ ვაპირებ ამის modulo, რომელიც არ არის როგორც გერმანე აქ, 1103 00:53:28,240 --> 00:53:33,690 გაყოფილი f, და ჯერ plus-- OK, მოდით ეს კიდევ ერთხელ გავაკეთოთ. 1104 00:53:33,690 --> 00:53:44,210 >> მიიღოს მოძრავი, dot slash მოძრავი, და 1, 10, and-- ლამაზი, არ, OK. 1105 00:53:44,210 --> 00:53:45,250 ასე რომ, მე იდიოტი. 1106 00:53:45,250 --> 00:53:47,000 ასე რომ, ეს არის ძალიან გავრცელებული კომპიუტერულ მეცნიერებათა 1107 00:53:47,000 --> 00:53:49,780 რათა სულელური შეცდომები მოსწონს ეს. 1108 00:53:49,780 --> 00:53:53,100 >> პედაგოგიური მიზნებისათვის, ის, რაც მე ნამდვილად მინდოდა ამის გაკეთება 1109 00:53:53,100 --> 00:53:57,410 იყო შეცვალოს მეცნიერების აქ პლუს, მინუს, რომ ჯერ, 1110 00:53:57,410 --> 00:54:01,140 და დაყოფის, როგორც თქვენ იმედია შენიშნა ამ exercise. 1111 00:54:01,140 --> 00:54:04,700 ახლა მოდით ხელახლა შედგენა ამ პროგრამა, dot slash მოძრავი. 1112 00:54:04,700 --> 00:54:07,950 >> და მესამედ, მოდით თუ იგი აკმაყოფილებს ჩემი მოლოდინი. 1113 00:54:07,950 --> 00:54:21,480 1, 10, შევა, დიახ, ბატონო, 1.000, იყოფა 10.000, არის 0,100000. 1114 00:54:21,480 --> 00:54:24,952 და აღმოჩნდება, რომ ჩვენ შეგვიძლია კონტროლი, რამდენი ნომრები შემდეგ იმ ათობითი რაოდენობა. 1115 00:54:24,952 --> 00:54:25,660 ჩვენ რეალურად. 1116 00:54:25,660 --> 00:54:26,790 ჩვენ დავბრუნდებით რომ. 1117 00:54:26,790 --> 00:54:28,440 >> მაგრამ ახლა, ფაქტობრივად, მათემატიკის არის სწორი. 1118 00:54:28,440 --> 00:54:30,090 ასე რომ, კიდევ ერთხელ, რა takeaway აქ? 1119 00:54:30,090 --> 00:54:33,050 გამოდის, რომ C, არსებობს არა მხოლოდ strings-- და, ფაქტობრივად, 1120 00:54:33,050 --> 00:54:36,120 არ არსებობს ნამდვილად, იმიტომ, რომ ჩვენ დაამატოთ იმ CS50 ბიბლიოთეკა. 1121 00:54:36,120 --> 00:54:37,710 მაგრამ არ არსებობს, უბრალოდ ints. 1122 00:54:37,710 --> 00:54:38,990 >> ასევე არსებობს მოძრავი. 1123 00:54:38,990 --> 00:54:42,810 და აღმოჩნდება, რამოდენიმე სხვა მონაცემები სახის ძალიან, რომ ჩვენ ვიყენებთ ადრე ხანგრძლივი. 1124 00:54:42,810 --> 00:54:46,270 თურმე, თუ გსურთ ერთი ხასიათი, არ სიმებიანი გმირები, 1125 00:54:46,270 --> 00:54:47,610 თქვენ შეგიძლიათ გამოიყენოთ მხოლოდ char. 1126 00:54:47,610 --> 00:54:52,350 >> გამოდის, რომ თუ გსურთ bool, ლოგიკური მნიშვნელობა, ჭეშმარიტი ან მცდარი მხოლოდ, 1127 00:54:52,350 --> 00:54:56,840 მადლობა CS50 ბიბლიოთეკა, ჩვენ დაემატა C, bool მონაცემები ტიპის, ასევე. 1128 00:54:56,840 --> 00:54:59,180 მაგრამ ასევე წარმოადგინოს ბევრი სხვა ენებზეც. 1129 00:54:59,180 --> 00:55:04,130 და აღმოჩნდება, რომ ზოგჯერ უნდა უფრო დიდი ციფრები, შემდეგ მოდის ძირითადად 1130 00:55:04,130 --> 00:55:05,210 ერთად ints და მოძრავი. 1131 00:55:05,210 --> 00:55:10,590 >> და, ფაქტობრივად, ორმაგი არის ნომერი რომელიც იყენებს არა 32 ბიტი, მაგრამ 64 ბიტი. 1132 00:55:10,590 --> 00:55:14,990 და ხანგრძლივი ხანგრძლივი არის ნომერი, რომელიც იყენებს არა 32, ბიტი, მაგრამ 64 ბიტი, 1133 00:55:14,990 --> 00:55:19,190 შესაბამისად, მცურავი წერტილი ღირებულებები და რიცხვებით, შესაბამისად. 1134 00:55:19,190 --> 00:55:22,780 მოდით რეალურად ახლა ეს მოქმედებაში. 1135 00:55:22,780 --> 00:55:26,150 >> მე ვაპირებ წავიდეთ წინ აქ და whip up ერთი პროგრამა. 1136 00:55:26,150 --> 00:55:32,020 აქ, მე ვაპირებ წავიდეთ წინ და არ მოიცავს cs50.h. 1137 00:55:32,020 --> 00:55:34,910 და ნება მომეცით წავიდეთ, მოიცავს სტანდარტული io.h. 1138 00:55:34,910 --> 00:55:37,320 >> და თქვენ შეამჩნევთ რაიმე ხმაურიანი ხდება აქ. 1139 00:55:37,320 --> 00:55:40,592 ეს არ არის ფერადი კოდირების რამ ისევე, როგორც ეს ადრე. 1140 00:55:40,592 --> 00:55:43,550 და აღმოჩნდება, ეს იმიტომ, რომ არ მიეცა, რაც ფაილის სახელი. 1141 00:55:43,550 --> 00:55:47,270 >> მე ვაპირებ მოვუწოდო ამ ერთი sizeof.c და ჰიტ შენახვა. 1142 00:55:47,270 --> 00:55:51,039 და შეამჩნია, რა ხდება, ჩემი ძალიან თეთრი კოდი წინააღმდეგ, რომ შავი ფონზე. 1143 00:55:51,039 --> 00:55:52,830 ახლა, მაინც არსებობს ზოგიერთი purple არსებობს. 1144 00:55:52,830 --> 00:55:54,490 და ეს არის სინტაქსის მონიშნულია. 1145 00:55:54,490 --> 00:55:57,700 >> ეს იმიტომ, რომ, უბრალოდ, მე განუცხადა IDE რა ტიპის ფაილი 1146 00:55:57,700 --> 00:56:01,060 ეს არის ვაძლევთ მას სახელი და კონკრეტულად ფაილის გაფართოება. 1147 00:56:01,060 --> 00:56:03,620 ახლა, მოდით, წავიდეთ წინ და ამის გაკეთება. 1148 00:56:03,620 --> 00:56:08,910 მე ვაპირებ წავიდეთ წინ და ძალიან უბრალოდ ამობეჭდოთ ასეთია bool 1149 00:56:08,910 --> 00:56:11,080 არის პროცენტს LU. 1150 00:56:11,080 --> 00:56:12,950 >> ჩვენ დავბრუნდებით რომ რაღაც მომენტში. 1151 00:56:12,950 --> 00:56:15,840 და შემდეგ მე ვაპირებ ბეჭდვითი ზომის bool. 1152 00:56:15,840 --> 00:56:18,170 და ახლა, უბრალოდ გადარჩენა თავს გარკვეული დრო, მე 1153 00:56:18,170 --> 00:56:20,280 ვაპირებ მთელი bunch ამ ერთდროულად. 1154 00:56:20,280 --> 00:56:24,620 და, კონკრეტულად, მე ვაპირებ შეცვალოს ეს char და char. 1155 00:56:24,620 --> 00:56:27,760 ეს ერთი, მე ვაპირებ, რომ შეიცვალოს ორმაგი და ორმაგი. 1156 00:56:27,760 --> 00:56:31,440 >> ეს ერთი, მე ვაპირებ, რომ შეიცვალოს რომ float და float. 1157 00:56:31,440 --> 00:56:35,670 ეს ერთი, მე ვაპირებ შეცვლის int და int. 1158 00:56:35,670 --> 00:56:38,660 და ეს ერთი, მე ვაპირებ შეცვლის ხანგრძლივი ხანგრძლივი. 1159 00:56:38,660 --> 00:56:40,840 და ეს ჯერ კიდევ გრძელდება დიდი ხნის განმავლობაში, ხანგრძლივი ხანგრძლივი. 1160 00:56:40,840 --> 00:56:44,572 >> და შემდეგ, ბოლოს, მივეცი თავს ერთი ძალიან ბევრი, string. 1161 00:56:44,572 --> 00:56:47,030 გამოდის, რომ C, იქ სპეციალური ოპერატორი მოუწოდა 1162 00:56:47,030 --> 00:56:50,260 ზომა ფაქტიურად არის აპირებს, როდესაც აწარმოებს, 1163 00:56:50,260 --> 00:56:52,099 გვეუბნებიან ზომა თითოეულ ამ ცვლადის. 1164 00:56:52,099 --> 00:56:53,890 და ეს არის გზა, ახლა, ჩვენ შეგვიძლია დაკავშირება დაბრუნება 1165 00:56:53,890 --> 00:56:57,140 გასულ კვირას დისკუსია მონაცემები და წარმომადგენლობა. 1166 00:56:57,140 --> 00:57:00,330 >> ნება მომეცით წავიდეთ წინ და შეადგინონ ზომა dot slash ზომა. 1167 00:57:00,330 --> 00:57:01,210 და ვნახოთ. 1168 00:57:01,210 --> 00:57:05,210 გამოდის, რომ C, კონკრეტულად CS50 IDE, 1169 00:57:05,210 --> 00:57:08,170 კერძოდ, ოპერაციული სისტემა Ubuntu, 1170 00:57:08,170 --> 00:57:11,100 რომელიც არის 64 ბიტიანი ოპერაციული სისტემა, ამ შემთხვევაში, 1171 00:57:11,100 --> 00:57:14,189 bool, აპირებს გამოიყენოთ ერთი byte სივრცეში. 1172 00:57:14,189 --> 00:57:16,480 ეს არის ის, თუ როგორ ზომა იზომება, არ ბიტი, მაგრამ bytes. 1173 00:57:16,480 --> 00:57:18,690 და გავიხსენოთ, რომ ერთი ბაიტი არის რვა ბიტი. 1174 00:57:18,690 --> 00:57:22,030 ასე რომ, bool, მიუხედავად იმისა, რომ ტექნიკურად მხოლოდ გჭირდებათ 0 ან 1, 1175 00:57:22,030 --> 00:57:24,092 ეს არის პატარა არარაციონალური როგორ ჩვენ განახორციელეს. 1176 00:57:24,092 --> 00:57:26,800 სინამდვილეში ის აპირებს გამოიყენოს მთელი byte-- ასე რომ ყველა zeros, რომლებიც, შესაძლოა, 1177 00:57:26,800 --> 00:57:31,050 ყველა პირობა, ან რამე მაგდაგვარს, ან მხოლოდ ერთი 1 შორის რვა ბიტი. 1178 00:57:31,050 --> 00:57:34,962 >> Char, იმავდროულად, გამოიყენება ხასიათი როგორც ASCII ხასიათის პოსტი გასულ კვირას, 1179 00:57:34,962 --> 00:57:36,170 იქნება ერთი ხასიათი. 1180 00:57:36,170 --> 00:57:42,340 და რომ synchs ერთად ჩვენი ცნება ის, რომ არაუმეტეს 256 ბიტი, უფრო სწორად, 1181 00:57:42,340 --> 00:57:45,360 synchs up ერთად იგი არ უმეტეს 8 ბიტი, რაც 1182 00:57:45,360 --> 00:57:47,450 გვაძლევს, როგორც ბევრი როგორც 256 ღირებულებებს. 1183 00:57:47,450 --> 00:57:49,680 ორმაგი აპირებს 8 ბაიტი ან 64 ბიტი. 1184 00:57:49,680 --> 00:57:50,510 >> Float არის 4. 1185 00:57:50,510 --> 00:57:51,690 Int არის 4. 1186 00:57:51,690 --> 00:57:52,980 ხანგრძლივი 8. 1187 00:57:52,980 --> 00:57:54,716 და სიმებიანი 8. 1188 00:57:54,716 --> 00:57:55,840 მაგრამ არ ინერვიულოთ შესახებ. 1189 00:57:55,840 --> 00:57:57,340 ჩვენ ვაპირებთ, რომ კანი უკან რომ ფენის. 1190 00:57:57,340 --> 00:57:59,940 გამოდის, strings შეუძლია უმეტეს 8 ბაიტი. 1191 00:57:59,940 --> 00:58:02,310 >> და, მართლაც, ჩვენ წერილობითი strings უკვე, Hello World, 1192 00:58:02,310 --> 00:58:03,700 უმეტეს 8 ბაიტი. 1193 00:58:03,700 --> 00:58:06,270 მაგრამ ჩვენ დავბრუნდებით რომ რაღაც მომენტში. 1194 00:58:06,270 --> 00:58:09,690 მაგრამ წართმევას აქ შემდეგ. 1195 00:58:09,690 --> 00:58:15,320 >> ნებისმიერი კომპიუტერული მხოლოდ სასრულ თანხის მეხსიერება და სივრცეში. 1196 00:58:15,320 --> 00:58:17,860 თქვენ შეგიძლიათ მხოლოდ მაღაზიაში ამდენი ფაილი თქვენს Mac ან PC. 1197 00:58:17,860 --> 00:58:23,030 თქვენ შეგიძლიათ მხოლოდ მაღაზიაში ამდენი პროგრამების RAM გაშვებული ერთდროულად, აუცილებლად, კიდევ 1198 00:58:23,030 --> 00:58:26,360 ვირტუალური მეხსიერება, რადგან თქვენ გაქვთ სასრულ თანხის ოპერატიული. 1199 00:58:26,360 --> 00:58:28,990 >> და მხოლოდ სურათზე თუ თქვენ არასოდეს გახსნა ლეპტოპი 1200 00:58:28,990 --> 00:58:31,300 და უბრძანა დამატებითი მეხსიერება კომპიუტერი, თქვენ 1201 00:58:31,300 --> 00:58:33,670 შესაძლოა, არ ვიცი, რომ შიგნით თქვენი კომპიუტერი 1202 00:58:33,670 --> 00:58:36,590 არის რაღაც, რომელიც გამოიყურება ცოტა მოსწონს ეს. 1203 00:58:36,590 --> 00:58:40,540 ასე რომ ეს არის საერთო კომპანია დაასახელა მნიშვნელოვანია, რომ ხდის RAM კომპიუტერები. 1204 00:58:40,540 --> 00:58:43,620 და RAM სადაც პროგრამების ცხოვრობს, ხოლო ისინი გაშვებული. 1205 00:58:43,620 --> 00:58:46,630 >> ასე რომ, ყველა Mac ან PC, როდესაც თქვენ ორმაგად დაწკაპეთ პროგრამა, და ეს ხსნის, 1206 00:58:46,630 --> 00:58:48,921 და ეს ხსნის გარკვეული Word დოკუმენტის ან რამე მაგდაგვარს, 1207 00:58:48,921 --> 00:58:51,764 იგი ინახავს მას დროებით RAM, რადგან RAM არის სწრაფად 1208 00:58:51,764 --> 00:58:53,680 ვიდრე თქვენს მყარ დისკზე, ან თქვენი მყარი დისკის სახელმწიფო. 1209 00:58:53,680 --> 00:58:56,600 ასე რომ, ეს უბრალოდ, სადაც პროგრამების წასვლა ცხოვრება, როდესაც ისინი გაშვებული, 1210 00:58:56,600 --> 00:58:58,060 ან როდესაც ფაილი გამოიყენება. 1211 00:58:58,060 --> 00:59:00,890 >> ასე, რომ თქვენ რამ, რომ გამოიყურებოდეს მოსწონს ეს შიგნით თქვენი ნოუთბუქი, 1212 00:59:00,890 --> 00:59:03,320 ან ოდნავ უფრო დიდი რამ შიგნით თქვენი desktop. 1213 00:59:03,320 --> 00:59:07,440 მაგრამ გასაღები თქვენ მხოლოდ სასრული რაოდენობის ესე. 1214 00:59:07,440 --> 00:59:11,230 და იქ მხოლოდ სასრული რაოდენობით ტექნიკა იჯდა მაგიდასთან უფლება 1215 00:59:11,230 --> 00:59:11,730 აქ. 1216 00:59:11,730 --> 00:59:15,920 >> ასე რომ, რა თქმა უნდა, ჩვენ არ შეგვიძლია შესანახად უსასრულოდ გრძელი ნომრები. 1217 00:59:15,920 --> 00:59:19,030 და მაინც, თუ ვფიქრობ, უკან კლასის სკოლა, რამდენი ციფრები შეუძლია 1218 00:59:19,030 --> 00:59:21,400 თქვენ გაქვთ უფლება ერთი ათობითი წერტილი? 1219 00:59:21,400 --> 00:59:24,680 ამ საკითხთან დაკავშირებით, რამდენი ციფრები შეუძლია თქვენ უნდა მარცხნივ ათობითი წერტილი? 1220 00:59:24,680 --> 00:59:26,300 მართლაც, უსასრულოდ ბევრი. 1221 00:59:26,300 --> 00:59:30,840 >> ახლა, ჩვენ, ადამიანები შეიძლება მხოლოდ იცით როგორ უნდა შეხედულებებსა მილიონი, 1222 00:59:30,840 --> 00:59:34,990 და მილიარდი, ტრილიონი და კვადრილიონი და quintillion. 1223 00:59:34,990 --> 00:59:39,370 და მე უბიძგებს ლიმიტები ჩემი understanding-- ან my-- მე მესმის, 1224 00:59:39,370 --> 00:59:41,110 ნომრები, მაგრამ ჩემი გამოთქმა ნომრები. 1225 00:59:41,110 --> 00:59:44,720 მაგრამ მათ შეუძლიათ მიიღონ უსასრულოდ დიდი ერთად უსასრულოდ ბევრი ციფრები, რომ მარცხნივ 1226 00:59:44,720 --> 00:59:47,050 ან მარჯვნივ ათობითი წერტილი. 1227 00:59:47,050 --> 00:59:50,040 >> მაგრამ კომპიუტერი მხოლოდ სასრული რაოდენობით მეხსიერება, 1228 00:59:50,040 --> 00:59:53,510 სასრულ ტრანზისტორების რაოდენობა, რომელიც სასრული რაოდენობის ნათურები შიგნით. 1229 00:59:53,510 --> 00:59:57,350 რა ხდება, როდესაც ამოიწურა სივრცეში? 1230 00:59:57,350 --> 00:59:59,620 სხვა სიტყვებით, თუ ვფიქრობ, უკან გასულ კვირაში 1231 00:59:59,620 --> 01:00:03,160 როდესაც ჩვენ ვისაუბრეთ ნომრები თვლიან, რომ წარმოდგენილი ორობითი, 1232 01:00:03,160 --> 01:00:05,480 ვარაუდობენ, რომ ჩვენ მივიღეთ ამ 8-bit მნიშვნელობა აქ. 1233 01:00:05,480 --> 01:00:08,290 >> და ჩვენ გვაქვს შვიდი 1 და ერთი 0. 1234 01:00:08,290 --> 01:00:10,827 და ვფიქრობ, რომ ჩვენ გვინდა რომ დაამატოთ 1 ღირებულება. 1235 01:00:10,827 --> 01:00:12,410 ეს არის ძალიან დიდი რაოდენობის ახლავე. 1236 01:00:12,410 --> 01:00:16,610 >> ეს არის 254, თუ კარგად მახსოვს მათემატიკის გასულ კვირას უფლება. 1237 01:00:16,610 --> 01:00:19,480 მაგრამ რა, თუ შევცვალო რომ rightmost 0 1? 1238 01:00:19,480 --> 01:00:22,800 მთელი ნომერი, რა თქმა უნდა, ხდება რვა 1 ს. 1239 01:00:22,800 --> 01:00:24,050 ასე რომ, ჩვენ ჯერ კიდევ კარგი. 1240 01:00:24,050 --> 01:00:27,204 >> და ეს, ალბათ წარმოადგენს 255, თუმცა დამოკიდებულია კონტექსტში 1241 01:00:27,204 --> 01:00:29,120 ეს შეიძლება რეალურად წარმოადგენს უარყოფითი რიცხვი. 1242 01:00:29,120 --> 01:00:31,240 მაგრამ უფრო, რომ სხვა დროს. 1243 01:00:31,240 --> 01:00:34,220 ეს იგრძნობა ის შესახებ როგორც მაღალი, როგორც შემიძლია ითვლიან. 1244 01:00:34,220 --> 01:00:35,290 >> ახლა, ეს მხოლოდ 8 ბიტი. 1245 01:00:35,290 --> 01:00:38,170 და ჩემი Mac, რა თქმა უნდა, აქვს გზა მეტი 8 ბიტი მეხსიერების. 1246 01:00:38,170 --> 01:00:39,170 მაგრამ ეს არ აქვს სასრული. 1247 01:00:39,170 --> 01:00:43,230 ასე რომ, იგივე არგუმენტი ესადაგება, მაშინაც კი, თუ ჩვენ უფრო მეტი ამ პირობა ეკრანზე. 1248 01:00:43,230 --> 01:00:47,020 >> მაგრამ რა მოხდება, თუ თქვენ შენახვის ამ ნომერზე, 255, 1249 01:00:47,020 --> 01:00:49,290 და გსურთ ითვლიან 1 ოდნავ? 1250 01:00:49,290 --> 01:00:51,600 გსურთ წავიდეთ 255 256. 1251 01:00:51,600 --> 01:00:55,800 პრობლემა, რა თქმა უნდა, არის ის, რომ თუ დაიწყება დათვლის დროს ნულოვანი როგორც გასულ კვირას, 1252 01:00:55,800 --> 01:00:59,670 თქვენ ვერ ითვლიან როგორც მაღალი, როგორც 256, რომ აღარაფერი ვთქვათ 257, 1253 01:00:59,670 --> 01:01:02,584 რომ აღარაფერი ვთქვათ 258, m, რადგან რა ხდება, როდესაც თქვენ დაამატოთ 1? 1254 01:01:02,584 --> 01:01:05,000 თუ თქვენ ძველი grade სკოლა მიდგომა, დააყენა 1 აქ, 1255 01:01:05,000 --> 01:01:08,150 1 + 1 არის 2, მაგრამ ეს ნამდვილად ნულოვანი, თქვენ განახორციელოს 1, 1256 01:01:08,150 --> 01:01:09,695 განახორციელოს 1, განახორციელოს 1. 1257 01:01:09,695 --> 01:01:12,620 ეს ყველაფერი, ეს 1-ის, წასვლა ნულოვანი. 1258 01:01:12,620 --> 01:01:17,820 და თქვენ wind up, დიახ, როგორც ვინმე აღნიშნა, 1 მარცხენა მხარეს. 1259 01:01:17,820 --> 01:01:22,540 მაგრამ ყველაფერი შეგიძლიათ რეალურად ვხედავ და შეესაბამება მეხსიერება 1260 01:01:22,540 --> 01:01:27,960 მხოლოდ რვა 0, რაც უნდა ითქვას, რაღაც მომენტში, თუ თქვენ, კომპიუტერი, 1261 01:01:27,960 --> 01:01:32,490 სცადა იმედი მაღალი საკმარისი up, თქვენ აპირებს გადაიტანოთ გარშემო, როგორც ჩანს, 1262 01:01:32,490 --> 01:01:35,850 ნულოვანი, ან თუნდაც უარყოფითი ციფრები, რომლებიც კიდევ უფრო დაბალია, ვიდრე ნულოვანი. 1263 01:01:35,850 --> 01:01:37,260 >> და ჩვენ შეგვიძლია სახის ეს. 1264 01:01:37,260 --> 01:01:39,900 ნება მომეცით წავიდეთ წინ და დაწეროთ უძრავი სწრაფი პროგრამა აქ. 1265 01:01:39,900 --> 01:01:43,690 ნება მომეცით წავიდეთ წინ და დაწეროთ პროგრამას სახელწოდებით Overflow. 1266 01:01:43,690 --> 01:01:49,980 მოიცავს CS50.h, მოიცავს სტანდარტული IO.h-- oh, 1267 01:01:49,980 --> 01:01:51,730 მე ნამდვილად გამოტოვებული ჩემი სინტაქსის შეფერადება. 1268 01:01:51,730 --> 01:01:54,440 მოდით გადარჩენა, როგორც overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> და ახლა int ძირითადი void-- და სანამ ხანგრძლივი, ჩვენ 1270 01:01:57,084 --> 01:01:59,500 დაბრუნდება თუ რატომ ჩვენ შენარჩუნება წერილობით int ძირითადი ბათილად. 1271 01:01:59,500 --> 01:02:02,080 მაგრამ ახლა, მოდით გავაკეთოთ ის, აღების მას მიანიჭა. 1272 01:02:02,080 --> 01:02:06,200 მოდით მივცეთ თავს int, და ვრთავ, რომ 0. 1273 01:02:06,200 --> 01:02:11,716 >> მოდით მაშინ ამის გაკეთება int i მისაღებად ნულოვანი რეალურად, მოდით უსასრულო ციკლი 1274 01:02:11,716 --> 01:02:12,590 და ვნახოთ, რა მოხდება. 1275 01:02:12,590 --> 01:02:22,440 მიუხედავად იმისა, რომ მართალია, მაშინ მოდით ამობეჭდოთ n არის პროცენტს i, წარმატებული ო, plug-ო. 1276 01:02:22,440 --> 01:02:27,200 მაგრამ, ახლა, მოდით, ო იღებს n + 1. 1277 01:02:27,200 --> 01:02:29,660 >> სხვა სიტყვებით, ყოველ iteration ამ უსასრულო ციკლი, 1278 01:02:29,660 --> 01:02:32,550 ავიღოთ n ღირებულება, და დაამატეთ 1 და შემდეგ 1279 01:02:32,550 --> 01:02:34,350 შესანახად შედეგად უკან n მარცხენა. 1280 01:02:34,350 --> 01:02:37,150 და, ფაქტობრივად, ჩვენ ვნახეთ სინტაქსი ოდნავ როგორც ეს, მოკლედ. 1281 01:02:37,150 --> 01:02:39,730 მაგარი შეასრულა ნაცვლად წერის ეს ყველაფერი, 1282 01:02:39,730 --> 01:02:42,770 თქვენ შეგიძლიათ რეალურად აცხადებენ n პლუს უდრის 1. 1283 01:02:42,770 --> 01:02:47,480 >> და თუ თქვენ ნამდვილად გსურთ იყოს ლამაზი, შეიძლება ითქვას, n plus plus ნახევრად მსხვილი ნაწლავის. 1284 01:02:47,480 --> 01:02:50,130 მაგრამ ეს უკანასკნელი ორი მხოლოდ ის, რაც ჩვენ გვინდა მოვუწოდებთ სინტაქსური შაქარი 1285 01:02:50,130 --> 01:02:50,790 პირველად რამ. 1286 01:02:50,790 --> 01:02:53,456 >> პირველი ის არის, უფრო ზუსტად რომ ვთქვათ, მთლიანად ჯარიმა, სრულიად სწორი. 1287 01:02:53,456 --> 01:02:55,470 მაგრამ ეს უფრო მეტად არის გავრცელებული, მე ვიტყვი. 1288 01:02:55,470 --> 01:02:57,210 ასე რომ ჩვენ ყველაფერს გავაკეთებთ, ეს მხოლოდ ერთი წუთით. 1289 01:02:57,210 --> 01:03:01,685 >> მოდით ახლა overflow, რომელიც ჟღერს საკმაოდ ავის მომასწავებელი, dot slash overflow. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 ვნახოთ, n მიღების საკმაოდ დიდი. 1292 01:03:09,852 --> 01:03:11,310 მაგრამ მოდით ვიფიქროთ, თუ როგორ დიდი შეიძლება n მისაღებად? 1293 01:03:11,310 --> 01:03:12,870 >> n int. 1294 01:03:12,870 --> 01:03:16,400 ჩვენ ვნახეთ, ერთი წუთით წინ ზომა მაგალითად, რომ int არის ოთხი ბაიტი. 1295 01:03:16,400 --> 01:03:22,070 ჩვენ ვიცით, რომ გასულ კვირას, ოთხი ბაიტი არის 32 ბიტი, რადგან 8 ჯერ 4, რომ 32. 1296 01:03:22,070 --> 01:03:23,460 ეს იქნება 4 მილიარდი. 1297 01:03:23,460 --> 01:03:25,802 >> და ჩვენ მდე 800,000. 1298 01:03:25,802 --> 01:03:28,510 ეს აპირებს მიიღოს სამუდამოდ ითვლიან როგორც მაღალი, როგორც მე შეგიძლიათ. 1299 01:03:28,510 --> 01:03:30,635 ამიტომ, მე ვაპირებ წავიდეთ წინ, როგორც თქვენ, შესაძლოა ხანგრძლივი, 1300 01:03:30,635 --> 01:03:34,910 და მოხვდა კონტროლის, C გულწრფელად, კონტროლის C, ბევრი, სადაც კონტროლის C ზოგადად 1301 01:03:34,910 --> 01:03:36,034 საშუალებით გააუქმოს. 1302 01:03:36,034 --> 01:03:38,200 სამწუხაროა, რომ ამ გაშვებული ღრუბელი, 1303 01:03:38,200 --> 01:03:41,190 ზოგჯერ ღრუბელი იფურთხება out იმდენად პერსონალი, 1304 01:03:41,190 --> 01:03:44,180 იმდენად გამომავალი, ის აპირებს ცოტა ხნით ჩემი input 1305 01:03:44,180 --> 01:03:45,630 მისაღებად მოცული. 1306 01:03:45,630 --> 01:03:49,240 მიუხედავად იმისა, რომ მე მოხვდა კონტროლის C რამდენიმე წუთის წინ, 1307 01:03:49,240 --> 01:03:53,110 ეს არის ნამდვილად მხარეს ეფექტი უსასრულო ციკლი. 1308 01:03:53,110 --> 01:03:56,070 >> ასე რომ, ამ შემთხვევაში, ჩვენ წასვლას აპირებს, რომ იყოს. 1309 01:03:56,070 --> 01:03:59,050 და ჩვენ ვაპირებთ, რომ დაამატოთ სხვა ტერმინალის ფანჯარაში მეტი აქ 1310 01:03:59,050 --> 01:04:03,186 პლუს, რა თქმა უნდა, არ როგორც, რომ, მას შემდეგ, რაც ჯერ კიდევ ფიქრობს. 1311 01:04:03,186 --> 01:04:05,310 და მოდით წავიდეთ წინ და იყოს ცოტა უფრო გონივრულად. 1312 01:04:05,310 --> 01:04:07,768 >> მე ვაპირებ წავიდეთ წინ და ამის ეს მხოლოდ finitely ბევრჯერ. 1313 01:04:07,768 --> 01:04:10,047 მოდით გამოვიყენოთ ამისთვის მარყუჟის, რომელიც მე გააკეთა მინიშნება ადრე. 1314 01:04:10,047 --> 01:04:10,630 მოდი გავაკეთოთ ეს. 1315 01:04:10,630 --> 01:04:13,430 მომეცი კიდევ ერთი ცვლადი int i იღებს 0. 1316 01:04:13,430 --> 01:04:17,430 i ნაკლებია, ვიდრე, ვთქვათ, 64-i ++. 1317 01:04:17,430 --> 01:04:24,010 ახლა კი ნება მომეცით წავიდეთ წინ და ბეჭდვითი out n არის პროცენტს i, მძიმე n. 1318 01:04:24,010 --> 01:04:27,547 და მაშინ N-- ეს არის კიდევ აპირებს სამუდამოდ. 1319 01:04:27,547 --> 01:04:28,130 მოდი გავაკეთოთ ეს. 1320 01:04:28,130 --> 01:04:30,620 >> ო იღებს n ჯერ 2. 1321 01:04:30,620 --> 01:04:34,140 და ჩვენ შეიძლება იყოს ლამაზი და ამის გაკეთება ჯერ უტოლდება 2. 1322 01:04:34,140 --> 01:04:37,120 მაგრამ მოდით უბრალოდ, ვამბობთ n უდრის თავად, 2-ჯერ. 1323 01:04:37,120 --> 01:04:39,321 სხვა სიტყვებით, ამ ახალი ვერსია პროგრამის, 1324 01:04:39,321 --> 01:04:41,820 მე არ მინდა, რომ დაველოდოთ სამუდამოდ საწყისი როგორიცაა 800,000 4 მილიარდი. 1325 01:04:41,820 --> 01:04:43,070 მოდით უბრალოდ ეს დასრულდა. 1326 01:04:43,070 --> 01:04:44,920 >> მოდით რეალურად გაორმაგდება N ყოველ ჯერზე. 1327 01:04:44,920 --> 01:04:47,660 რაც იხსენებენ, გაორმაგება არის პირიქით, რომ, რა თქმა უნდა. 1328 01:04:47,660 --> 01:04:50,035 და მაშინ, როდესაც გასულ კვირას ჩვენ რაღაც ისევ და ისევ, 1329 01:04:50,035 --> 01:04:52,200 და კიდევ ერთხელ, სუპერ სწრაფი, გაორმაგება აუცილებლად 1330 01:04:52,200 --> 01:04:58,080 მიიღოს ჩვენთვის, 1-დან უდიდესი შესაძლო ღირებულება, რომელიც ჩვენ იმედი რომელზეც int. 1331 01:04:58,080 --> 01:04:59,750 >> მოდით გავაკეთოთ სწორედ ეს არის. 1332 01:04:59,750 --> 01:05:01,720 და ჩვენ დავბრუნდებით ამ ხნის განმავლობაში. 1333 01:05:01,720 --> 01:05:04,180 მაგრამ ეს, კიდევ ერთხელ, ისევე, როგორც განმეორებითი ბლოკი ნულიდან. 1334 01:05:04,180 --> 01:05:05,600 და თქვენ გამოიყენოს ადრე ხანგრძლივი. 1335 01:05:05,600 --> 01:05:10,170 >> ეს მხოლოდ იმას ნიშნავს ითვლიან ნულიდან მდე, მაგრამ არ უდრის, 64. 1336 01:05:10,170 --> 01:05:14,285 და თითოეულ iteration ამ loop, უბრალოდ შეინახოს დამატება i. 1337 01:05:14,285 --> 01:05:18,990 ასე რომ, მე ++ - და ამ ზოგადი მშენებლობა on line 7 არის უბრალოდ სუპერ გავრცელებული გზა 1338 01:05:18,990 --> 01:05:22,290 იმეორებს რამდენიმე ხაზი კოდი, გარკვეული რაოდენობის ჯერ. 1339 01:05:22,290 --> 01:05:23,362 რომელიც ხაზების კოდი? 1340 01:05:23,362 --> 01:05:25,570 ეს Curly braces, როგორც თქვენ შესაძლოა გამომდინარე ახლა, 1341 01:05:25,570 --> 01:05:26,780 ნიშნავს, ამის შემდეგ. 1342 01:05:26,780 --> 01:05:29,510 >> ეს არის მსგავსად Scratch, როდესაც მას აქვს ყვითელი ბლოკები 1343 01:05:29,510 --> 01:05:32,680 და სხვა ფერები, რომ სახის იკისროს ან მოვეფერო სხვა ბლოკები. 1344 01:05:32,680 --> 01:05:34,750 ეს არის ის რაც იმ curly braces აქ აკეთებენ. 1345 01:05:34,750 --> 01:05:40,200 ასე რომ, თუ მე მივიღე ჩემი სინტაქსი right-- თქვენ ხედავთ სტაფილოს სიმბოლო C საშუალება 1346 01:05:40,200 --> 01:05:42,706 რომ არის, რამდენჯერ ვიყავი ცდილობს ამ პრობლემის მოგვარებას. 1347 01:05:42,706 --> 01:05:45,330 ასე რომ, მოდით, თავი დაეღწია, რომ ერთი საერთოდ, და დახურეთ ეს ფანჯარა. 1348 01:05:45,330 --> 01:05:46,520 და ჩვენ ვიყენებთ ახალი. 1349 01:05:46,520 --> 01:05:51,980 ჩადება overflow, dot slash overflow, შეიყვანეთ ყველა უფლება, 1350 01:05:51,980 --> 01:05:53,090 ეს გამოიყურება ცუდი, პირველ რიგში. 1351 01:05:53,090 --> 01:05:56,200 მაგრამ მოდით გადახვევა უკან დრო, იმიტომ, რომ მე ამ 64-ჯერ. 1352 01:05:56,200 --> 01:05:58,700 >> და შენიშნავს, პირველად, n 1. 1353 01:05:58,700 --> 01:06:03,110 მეორედ, N 2, მაშინ 4, შემდეგ 8, შემდეგ 16. 1354 01:06:03,110 --> 01:06:09,450 და, როგორც ჩანს, რომ როგორც კი მე კიდევ 1 მილიარდი, 1355 01:06:09,450 --> 01:06:12,800 თუ მე გაორმაგდება ის კიდევ ერთხელ, რომ უნდა მომეცი 2 მლრდ. 1356 01:06:12,800 --> 01:06:14,980 მაგრამ აღმოჩნდება, რომ ეს უფლება cusp. 1357 01:06:14,980 --> 01:06:18,930 >> ასე რომ, ეს რეალურად გადმოედინება int ეხლა 1 მილიარდი 1358 01:06:18,930 --> 01:06:23,514 უხეშად უარყოფითი 2 მილიარდი, რადგან მთელი რიცხვი, 1359 01:06:23,514 --> 01:06:25,430 განსხვავებით ნომრები ჩვენ ჩავთვლიდით გასულ კვირას, 1360 01:06:25,430 --> 01:06:28,397 შეიძლება იყოს როგორც დადებითი და უარყოფითი რეალურად და კომპიუტერი. 1361 01:06:28,397 --> 01:06:30,730 ასე რომ, სულ მცირე, ერთ-ერთი იმ ბიტი ეფექტურად მოპარული. 1362 01:06:30,730 --> 01:06:34,190 ასე რომ, ჩვენ მართლაც მხოლოდ 31 ბიტი, ან 2 მილიარდი შესაძლო მნიშვნელობებია. 1363 01:06:34,190 --> 01:06:38,220 >> მაგრამ ახლა, takeaway საკმაოდ უბრალოდ, რაც ამ ნომრებზე 1364 01:06:38,220 --> 01:06:42,280 და რაც მათემატიკის, რაღაც ცუდი ხდება, საბოლოო ჯამში, 1365 01:06:42,280 --> 01:06:46,980 რადგან საბოლოო ჯამში თქვენ ცდილობთ permute ბიტი ერთი ძალიან ბევრჯერ. 1366 01:06:46,980 --> 01:06:51,060 და თქვენ ეფექტურად წასვლა ყველა 1 ს იქნებ ყველა 0 ს, ან იქნებ 1367 01:06:51,060 --> 01:06:54,260 უბრალოდ სხვა ნიმუში, რომ იგი აშკარად, დამოკიდებულია კონტექსტში, 1368 01:06:54,260 --> 01:06:56,342 შეიძლება განიმარტოს, როგორც უარყოფითი რიცხვი. 1369 01:06:56,342 --> 01:06:59,300 ასე რომ, როგორც ჩანს, ყველაზე მაღალი I შეგიძლიათ იმედი ამ კონკრეტულ პროგრამას 1370 01:06:59,300 --> 01:07:01,210 მხოლოდ 1 მილიარდი. 1371 01:07:01,210 --> 01:07:02,760 მაგრამ არსებობს ნაწილობრივი გამოსავალი აქ. 1372 01:07:02,760 --> 01:07:03,480 იცი რაა? 1373 01:07:03,480 --> 01:07:07,600 >> ნება მომეცით შეცვლის საწყისი int ხანგრძლივი ხანგრძლივი. 1374 01:07:07,600 --> 01:07:10,633 და ნება მომეცით წავიდეთ წინ აქ და ამბობენ, რომ მე ვაპირებ აქვს 1375 01:07:10,633 --> 01:07:12,290 რომ შეიცვალოს ეს ხელმოუწერელი ხანგრძლივი. 1376 01:07:12,290 --> 01:07:16,860 ან, ვნახოთ, არ მახსოვს, თავს. 1377 01:07:16,860 --> 01:07:19,920 >> მოდით, წავიდეთ წინ და overflow. 1378 01:07:19,920 --> 01:07:21,860 არა, ეს არ არის ის, LLD, მადლობა. 1379 01:07:21,860 --> 01:07:23,430 ასე რომ, ზოგჯერ Clang შეიძლება იყოს სასარგებლო. 1380 01:07:23,430 --> 01:07:27,550 მე არ მახსოვს, რა ფორმატში specifier იყო ხანგრძლივი ხანგრძლივი. 1381 01:07:27,550 --> 01:07:28,950 >> მაგრამ, მართლაც, Clang მითხრა. 1382 01:07:28,950 --> 01:07:31,570 Green არის ერთგვარი კარგი, კიდევ იმას ნიშნავს, თქვენ დაუშვა შეცდომა. 1383 01:07:31,570 --> 01:07:33,190 ეს გამოცნობა, რომ მე იმას ნიშნავდა, LLD. 1384 01:07:33,190 --> 01:07:38,750 >> ნება მომეცით მიიღოს ეს რჩევა, ხანგრძლივი ხანგრძლივი ათობითი ნომერი, გადარჩენა რომ. 1385 01:07:38,750 --> 01:07:43,190 და ნება მომეცით გამეორება ეს, dot slash overflow, შეიტანეთ. 1386 01:07:43,190 --> 01:07:45,020 და ახლა რა მაგარი არის ეს. 1387 01:07:45,020 --> 01:07:49,140 >> თუ მე გადახვევა უკან დრო, ჩვენ კვლავ დაიწყოს იმედი ამავე მივალ სოფელში 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 ცნობა, ჩვენ ყველა გზა მდე 1 მლრდ. 1390 01:07:54,860 --> 01:07:57,070 მაგრამ მაშინ ჩვენ უსაფრთხოდ მისაღებად 2 მლრდ. 1391 01:07:57,070 --> 01:08:01,300 >> მაშინ მივიღებთ, რომ 4 მილიარდი, შემდეგ 8 მილიარდი, 17 მილიარდი. 1392 01:08:01,300 --> 01:08:03,340 და ჩვენ წასვლა უმაღლესი და უმაღლესი და უმაღლესი. 1393 01:08:03,340 --> 01:08:05,740 საბოლოოდ, ეს, ძალიან, შესვენებებით. 1394 01:08:05,740 --> 01:08:09,350 >> საბოლოოდ, ხანგრძლივი ხანგრძლივი, რომელიც არის 64-bit ღირებულება, არ 1395 01:08:09,350 --> 01:08:13,660 32 ბიტიანი მნიშვნელობა, თუ ითვლიან ძალიან მაღალია, გადაიტანოთ გარშემო 0. 1396 01:08:13,660 --> 01:08:16,410 და ამ შემთხვევაში, ჩვენ არ უნდა დასრულდება up ერთად უარყოფითი რიცხვი. 1397 01:08:16,410 --> 01:08:17,550 >> ასე რომ, ეს არის პრობლემა. 1398 01:08:17,550 --> 01:08:20,439 და აღმოჩნდება, რომ ეს პრობლემა არ არის, რომ arcane. 1399 01:08:20,439 --> 01:08:23,060 მიუხედავად იმისა, რომ მე შეგნებულად გამოწვეული იგი ამ შეცდომებს, 1400 01:08:23,060 --> 01:08:26,149 გამოდის, ჩვენ ვხედავთ, რომ სახის ყველა ჩვენს გარშემო, ან თუნდაც რამდენიმე ჩვენგანი. 1401 01:08:26,149 --> 01:08:28,939 >> ასე რომ, Lego Star Wars, თუ თქვენ ოდესმე ითამაშა თამაში, 1402 01:08:28,939 --> 01:08:33,830 გამოდის, რომ თქვენ შეიძლება გარშემო არღვევს რამ up in LEGO მსოფლიოში, 1403 01:08:33,830 --> 01:08:36,640 და შეგროვება მონეტები, არსებითად. 1404 01:08:36,640 --> 01:08:39,200 და თუ თქვენ ოდესმე ითამაშა ეს თამაში ძალიან ბევრი დრო, 1405 01:08:39,200 --> 01:08:42,630 როგორც ეს უსახელო ინდივიდუალური აქ გავაკეთეთ, რაც საერთო რაოდენობის 1406 01:08:42,630 --> 01:08:46,700 მონეტები, რომ თქვენ შეგიძლიათ შეაგროვოთ ის არის, რომ როგორც ჩანს, 4 მილიარდი. 1407 01:08:46,700 --> 01:08:48,240 >> ახლა, ის რეალურად მომრგვალებული. 1408 01:08:48,240 --> 01:08:50,239 ასე რომ, LEGO ცდილობდა, შენარჩუნება რამ მოსახერხებელი. 1409 01:08:50,239 --> 01:08:53,779 ისინი არ გავაკეთებთ ზუსტად 2 32 ძალა, ერთ გასულ კვირას. 1410 01:08:53,779 --> 01:08:55,310 მაგრამ 4 მილიარდი მიზეზი. 1411 01:08:55,310 --> 01:08:58,979 როგორც ჩანს, ამ ინფორმაციის საფუძველზე, რომ LEGO, და კომპანია, რომელიც 1412 01:08:58,979 --> 01:09:02,624 ეს გააკეთა ფაქტობრივი პროგრამული უზრუნველყოფა, გადაწყვიტა რომ მაქსიმალური რაოდენობის მონეტები 1413 01:09:02,624 --> 01:09:04,540 მომხმარებელი შეიძლება დაგროვება არის, მართლაც, 4 მილიარდი, 1414 01:09:04,540 --> 01:09:12,069 რადგან ისინი აირჩია მათი კოდი გამოიყენოთ არა ხანგრძლივი ხანგრძლივი, როგორც ჩანს, 1415 01:09:12,069 --> 01:09:16,140 მაგრამ მხოლოდ რიცხვი, ხელმოუწერელი რიცხვი, მხოლოდ დადებითი რიცხვი, რომლის 1416 01:09:16,140 --> 01:09:18,089 max მნიშვნელობა უხეშად რომ. 1417 01:09:18,089 --> 01:09:19,380 ისე, აქ არის კიდევ ერთი სასაცილო ერთი. 1418 01:09:19,380 --> 01:09:23,500 ასე რომ, თამაში Civilization, რომელიც ზოგიერთ თქვენგანს შეიძლება იყოს ნაცნობი, ერთად 1419 01:09:23,500 --> 01:09:26,660 გამოდის, რომ წლის წინ იყო შეცდომა ამ თამაშში, რომლის დროსაც 1420 01:09:26,660 --> 01:09:28,750 თუ თქვენ როლი of Gandhi თამაში, 1421 01:09:28,750 --> 01:09:34,020 მის ნაცვლად იმისა, რომ ძალიან პაციფისტური, ნაცვლად იყო ძალიან, წარმოუდგენლად 1422 01:09:34,020 --> 01:09:36,399 აგრესიული, ზოგიერთ ვითარებაში. 1423 01:09:36,399 --> 01:09:40,529 კერძოდ, ისე, რომ ცივილიზაციის სამუშაოები, რომ თუ თქვენ, როგორც მოთამაშე, 1424 01:09:40,529 --> 01:09:44,680 მიიღოს დემოკრატიისა და თქვენი აგრესია ანგარიშით იღებს 1425 01:09:44,680 --> 01:09:48,130 decremented ორი, მინუს მინუსი, და შემდეგ მინუს მინუს. 1426 01:09:48,130 --> 01:09:50,569 >> აკლებთ 2 თქვენი ფაქტობრივი iterating. 1427 01:09:50,569 --> 01:09:56,650 სამწუხაროდ, თუ თქვენი iterating არის თავდაპირველად 1, და გამოვაკლოთ 2 ის 1428 01:09:56,650 --> 01:09:59,050 მიღების შემდეგ დემოკრატიის განდი აქ შეიძლება 1429 01:09:59,050 --> 01:10:02,200 არ კეთდება, იმიტომ, რომ ის იყო ძალიან passive-- 1 მასშტაბის აგრესია. 1430 01:10:02,200 --> 01:10:04,830 მაგრამ თუ იგი იღებს დემოკრატიის, მაშინ ის მიდის 1 -1. 1431 01:10:04,830 --> 01:10:11,470 >> სამწუხაროდ, ისინი გამოყენებით unsigned ნომრები, 1432 01:10:11,470 --> 01:10:15,400 რაც იმას ნიშნავს, ისინი მკურნალობას თუნდაც უარყოფითი ნომრები, თითქოს ისინი დადებითი. 1433 01:10:15,400 --> 01:10:19,780 და აღმოჩნდება, რომ დადებითი ეკვივალენტს უარყოფითი 1, 1434 01:10:19,780 --> 01:10:23,480 ტიპიური კომპიუტერულ პროგრამებს, 255. 1435 01:10:23,480 --> 01:10:27,250 ასე რომ, თუ Gandhi იღებს დემოკრატია, და აქედან გამომდინარე 1436 01:10:27,250 --> 01:10:32,470 მისი აგრესია ანგარიში შემცირდა, ეს, ფაქტობრივად, Rolls გარშემო 255 1437 01:10:32,470 --> 01:10:35,470 და ხდის მას ყველაზე აგრესიული ხასიათი თამაშში. 1438 01:10:35,470 --> 01:10:36,930 ასე რომ თქვენ შეგიძლიათ Google up ამ. 1439 01:10:36,930 --> 01:10:39,380 და ეს იყო, მართლაც, შემთხვევითი პროგრამირების bug, 1440 01:10:39,380 --> 01:10:43,010 მაგრამ, რომ შევიდა საკმაოდ მხარეთმცოდნეობის მას შემდეგ. 1441 01:10:43,010 --> 01:10:44,360 >> ეს არის ყველა მხიარული და მიმზიდველი. 1442 01:10:44,360 --> 01:10:47,760 უფრო საშიში არის, როდესაც ფაქტობრივი რეალურ სამყაროში მოწყობილობები, და არა თამაშები, 1443 01:10:47,760 --> 01:10:48,820 აქვს იგივე შეცდომები. 1444 01:10:48,820 --> 01:10:54,500 ფაქტობრივად, მხოლოდ ერთი წლის წინ სტატია გამოვიდა ამის შესახებ Boeing 787 Dreamliner. 1445 01:10:54,500 --> 01:10:56,850 >> და მუხლის პირველი ერთი შეხედვით ნათქვამია ცოტა arcane. 1446 01:10:56,850 --> 01:11:01,480 მაგრამ მისივე თქმით, ეს, პროგრამული უზრუნველყოფის დაუცველობის ბოინგის 1447 01:11:01,480 --> 01:11:04,790 ახალი 787 Dreamliner jet აქვს პოტენციალი გამოიწვიოს მფრინავი 1448 01:11:04,790 --> 01:11:07,220 დაკარგოს კონტროლი თვითმფრინავი, შესაძლოა 1449 01:11:07,220 --> 01:11:11,750 შუა რიცხვებში ფრენის, FAA ჩინოვნიკები გააფრთხილა ში ცოტა ხნის წინ. 1450 01:11:11,750 --> 01:11:14,520 ეს იყო განსაზღვრა რომ მოდელი 787 1451 01:11:14,520 --> 01:11:19,770 თვითმფრინავი, რომელიც უკვე იკვებება მუდმივად 248 დღის 1452 01:11:19,770 --> 01:11:24,880 შეიძლება დაკარგოს ყველა ცვლადი დენით, AC, ელექტრო გამო გენერატორი 1453 01:11:24,880 --> 01:11:28,892 კონტროლის ერთეული, GCUs, ერთდროულად შესვლის ვერ უსაფრთხო რეჟიმში. 1454 01:11:28,892 --> 01:11:29,850 ეს არის სახის დაკარგვის ჩემთვის. 1455 01:11:29,850 --> 01:11:35,390 მაგრამ memo განცხადებით, კარგი, ახლა მე მივიღე, რომ, მდგომარეობა გამოწვეული იყო პროგრამული უზრუნველყოფა 1456 01:11:35,390 --> 01:11:38,590 დავუპირისპირდეთ შიდა გენერატორი კონტროლი 1457 01:11:38,590 --> 01:11:44,860 ერთეული, რომელიც წალეკავს შემდეგ 248 დღის უწყვეტი დენის. 1458 01:11:44,860 --> 01:11:47,070 ჩვენ გაცემისას შეამჩნია თავიდან ასაცილებლად 1459 01:11:47,070 --> 01:11:49,300 ყველა AC ელექტრო ძალა, რომელიც შეიძლება გამოიწვიოს 1460 01:11:49,300 --> 01:11:50,980 დაკარგვა კონტროლის თვითმფრინავი. 1461 01:11:50,980 --> 01:11:55,380 >> ასე რომ, ფაქტიურად, არ არის გარკვეული რიცხვი, ან რომელიმე ექვივალენტს მონაცემები ტიპის, 1462 01:11:55,380 --> 01:11:57,960 გამოიყენება პროგრამული უზრუნველყოფა ფაქტობრივი თვითმფრინავი 1463 01:11:57,960 --> 01:12:00,756 რომ თუ თქვენ გაქვთ თქვენი თვითმფრინავი ხანგრძლივი საკმარისი, რომელიც, როგორც ჩანს, 1464 01:12:00,756 --> 01:12:03,880 შეიძლება იყოს იმ შემთხვევაში თუ თქვენ უბრალოდ გაშვებული მათ მუდმივად და არასოდეს unplugging 1465 01:12:03,880 --> 01:12:06,810 თქვენი თვითმფრინავი, როგორც ჩანს, ან რომ მისი ბატარეები იღუპება, 1466 01:12:06,810 --> 01:12:09,840 საბოლოოდ დათვლა მდე, და, და, და, და, და. 1467 01:12:09,840 --> 01:12:12,150 >> და, ბუნებით, სასრული რაოდენობით მეხსიერება 1468 01:12:12,150 --> 01:12:15,880 იქნება overflow, მოძრავი თავში ნულოვანი ან გარკვეული უარყოფითი ღირებულება, 1469 01:12:15,880 --> 01:12:19,920 გვერდითი ეფექტი, რომელიც არის საშინლად რეალური რეალობა 1470 01:12:19,920 --> 01:12:23,970 რომ თვითმფრინავი შეიძლება უნდა უნდა ქსელი, პრაქტიკულად, 1471 01:12:23,970 --> 01:12:27,290 ან შეიძლება დაეცემა, უარესი, როგორც ეს ფრიალებს. 1472 01:12:27,290 --> 01:12:29,230 ასე რომ, ამ სახის საკითხები დღესაც ჩვენთან ერთად, 1473 01:12:29,230 --> 01:12:33,130 even-- ეს იყო 2015-ე მუხლის, ყველა უფრო საშიში 1474 01:12:33,130 --> 01:12:36,100 როცა არ არის აუცილებელი მესმის, ვაფასებთ, ან მოსალოდნელია 1475 01:12:36,100 --> 01:12:38,640 იმ სახის შეცდომები. 1476 01:12:38,640 --> 01:12:42,030 >> გამოდის, რომ არსებობს ერთი ცუდი რამ მონაცემების წარმომადგენლობა. 1477 01:12:42,030 --> 01:12:47,080 გამოდის, რომ მაშინაც კი, მოძრავი სახის გაყალბდა, რადგან მოძრავი, ძალიან, 1478 01:12:47,080 --> 01:12:51,440 მე შევთავაზე 32 ბიტი, ან იქნებ 64 თუ თქვენ იყენებთ ორმაგი. 1479 01:12:51,440 --> 01:12:53,070 მაგრამ ეს ჯერ კიდევ სასრული. 1480 01:12:53,070 --> 01:12:57,070 >> და დაჭერა არის, რომ თუ შეგიძლია ბოლო უსასრულო რაოდენობის ნომრები 1481 01:12:57,070 --> 01:12:59,460 შემდეგ ათობითი წერტილი, არ არსებობს გზა 1482 01:12:59,460 --> 01:13:02,690 შეუძლიათ ყველა შესაძლო ციფრები, რომ გვასწავლიდნენ 1483 01:13:02,690 --> 01:13:04,990 კლასის სკოლის შეიძლება არსებობდეს მსოფლიოში. 1484 01:13:04,990 --> 01:13:08,870 კომპიუტერი, არსებითად, აქვს აირჩიეთ subset იმ ნომრები 1485 01:13:08,870 --> 01:13:10,200 წარმოადგენს ზუსტად. 1486 01:13:10,200 --> 01:13:12,450 >> ახლა, კომპიუტერი რაუნდი, შესაძლოა, ცოტა, 1487 01:13:12,450 --> 01:13:17,900 და შეიძლება საშუალებას გაძლევთ უხეშად მაღაზია ნებისმიერი რაოდენობის თქვენ შესაძლოა გსურთ. 1488 01:13:17,900 --> 01:13:20,940 მაგრამ უბრალოდ ინტუიციურად, თუ გვაქვს სასრული რაოდენობის ბიტი, 1489 01:13:20,940 --> 01:13:24,560 თქვენ შეგიძლიათ მხოლოდ permute მათ ამდენი სასრულ გზები. 1490 01:13:24,560 --> 01:13:26,570 ასე რომ, თქვენ არ შეიძლება გამოყენება სასრულ 1491 01:13:26,570 --> 01:13:29,880 of permutation ბიტი, ნიმუშების zeros და პირობა, 1492 01:13:29,880 --> 01:13:32,940 წარმოადგენს უსასრულო ნომერი ნომრები, 1493 01:13:32,940 --> 01:13:37,370 რომელიც ვარაუდობს, რომ კომპიუტერებს შეიძლება ძალიან კარგად იქნება გვატყუებს ზოგჯერ. 1494 01:13:37,370 --> 01:13:38,770 >> ფაქტობრივად, მოდით გავაკეთოთ ეს. 1495 01:13:38,770 --> 01:13:41,239 ნება მომეცით წავიდეთ ისევ CS50 IDE. 1496 01:13:41,239 --> 01:13:43,030 ნება მომეცით წავიდეთ წინ და შექმნა პატარა პროგრამა 1497 01:13:43,030 --> 01:13:47,940 მოუწოდა ორაზროვნება, აჩვენებს, რომ კომპიუტერები, მართლაც, ბუნდოვანი. 1498 01:13:47,940 --> 01:13:51,910 >> და ნება მომეცით წავიდეთ წინ და იწყება ზოგიერთი რომ კოდი ადრე, 1499 01:13:51,910 --> 01:13:53,830 და ახლა მხოლოდ ამის შემდეგ. 1500 01:13:53,830 --> 01:14:03,640 ნება მომეცით წავიდეთ წინ და ნუ printf, პროცენტი f, წარმატებული ო, 1 იყოფა 10. 1501 01:14:03,640 --> 01:14:07,430 სხვა სიტყვებით, მოდით ჩაყვინთვის უფრო ღრმა 1/10, როგორც 1 და იყოფა 10. 1502 01:14:07,430 --> 01:14:09,760 რა თქმა უნდა, კომპიუტერული შეუძლიათ 1/10. 1503 01:14:09,760 --> 01:14:13,620 >> მოდით, წავიდეთ წინ და ორაზროვნება. 1504 01:14:13,620 --> 01:14:14,390 მოდი ვნახოთ. 1505 01:14:14,390 --> 01:14:16,210 ფორმატი განსაზღვრავს ტიპის ორმაგი. 1506 01:14:16,210 --> 01:14:18,160 მაგრამ არგუმენტი ტიპის int. 1507 01:14:18,160 --> 01:14:19,040 რა ხდება? 1508 01:14:19,040 --> 01:14:21,970 >> ოჰ, საინტერესო, ასე რომ, ეს არის გაკვეთილი წლამდე. 1509 01:14:21,970 --> 01:14:26,050 მე ვამბობ, hey, კომპიუტერული შოუ მე float ერთად პროცენტი ვ. 1510 01:14:26,050 --> 01:14:28,200 მაგრამ მე რაც 2 ints. 1511 01:14:28,200 --> 01:14:31,120 გამოდის, რომ შემიძლია დაფიქსირება ეს არის ორი გზა. 1512 01:14:31,120 --> 01:14:38,430 >> მე მხოლოდ გახდეს ერთი შევიდა 1.0, და 10 შევიდა 10.0, რაც, რა თქმა უნდა, 1513 01:14:38,430 --> 01:14:42,390 აქვს ეფექტი კონვერტაცია მათ floats-- მაინც იმედია 1514 01:14:42,390 --> 01:14:43,180 იგივე რაოდენობა. 1515 01:14:43,180 --> 01:14:45,880 და აღმოჩნდება, რომ არსებობს რაღაც ჩვენ დავინახავთ, კიდევ დიდი ხნის განმავლობაში. 1516 01:14:45,880 --> 01:14:47,170 თქვენ შეიძლება მიცემული ნომრები. 1517 01:14:47,170 --> 01:14:49,880 >> თქვენ შეგიძლიათ გამოყენებით ამ ჩართული გამოხატვის, შეიძლება ითქვას, 1518 01:14:49,880 --> 01:14:52,560 hey, კომპიუტერი, ამ 10, რაც მე ვიცი არის int. 1519 01:14:52,560 --> 01:14:54,660 მაგრამ მკურნალობა, გთხოვთ, თითქოს ეს არის float. 1520 01:14:54,660 --> 01:14:56,680 მაგრამ ეს გრძნობს ზედმეტად რთული. 1521 01:14:56,680 --> 01:14:59,040 >> ჩვენი მიზნებისთვის, დღეს, მოდით უბრალოდ სიტყვასიტყვით 1522 01:14:59,040 --> 01:15:02,700 რათა მათ მცურავი პუნქტიანი ღირებულებები ერთად ათობითი წერტილი, მოსწონს ეს. 1523 01:15:02,700 --> 01:15:07,060 ნება მომეცით წავიდეთ წინ და გამეორება, მიიღოს ორაზროვნება, კარგი, dot slash 1524 01:15:07,060 --> 01:15:08,870 ორაზროვნება, შევა. 1525 01:15:08,870 --> 01:15:10,990 OK, ჩვენ ვეძებთ კარგი. 1526 01:15:10,990 --> 01:15:18,194 >> 1 იყოფა 10, ჩემი Mac აქ, მართლაც, 0,100000. 1527 01:15:18,194 --> 01:15:21,360 ახლა, მე ისწავლება grade სკოლაში უნდა იყოს უსასრულო რაოდენობის 0 ს. 1528 01:15:21,360 --> 01:15:23,151 ასე რომ, მოდით მაინც ცდილობენ იმისათვის, რომ ნახოთ ზოგიერთი ასეთი. 1529 01:15:23,151 --> 01:15:26,770 გამოდის, რომ printf არის პატარა fancier მაინც, ვიდრე ჩვენ უკვე გამოყენებით. 1530 01:15:26,770 --> 01:15:30,890 გამოდის, რომ თქვენ არ უნდა განსაზღვროს მხოლოდ პროცენტი ვ, ან უბრალოდ პროცენტს i. 1531 01:15:30,890 --> 01:15:33,830 თქვენ შეგიძლიათ რეალურად დააკონკრეტა გარკვეული კონტროლი ვარიანტი აქ. 1532 01:15:33,830 --> 01:15:36,470 >> კერძოდ, მე ვაპირებ ამბობენ, hey, printf, 1533 01:15:36,470 --> 01:15:39,660 რეალურად ნახოთ, მე 10 ათობითი რაოდენობა. 1534 01:15:39,660 --> 01:15:40,820 ასე გამოიყურება ცოტა უცნაური. 1535 01:15:40,820 --> 01:15:42,845 თქვენ კი ამბობთ პროცენტი, dot, რამდენი ნომრები 1536 01:15:42,845 --> 01:15:44,970 თუ გვინდა, რომ მას შემდეგ, რაც ათობითი წერტილი და შემდეგ f 1537 01:15:44,970 --> 01:15:48,340 ბინის, მხოლოდ იმიტომ, რომ რა დოკუმენტაცია ამბობს. 1538 01:15:48,340 --> 01:15:50,080 ნება მომეცით წავიდეთ წინ და გადარჩენა, რომ. 1539 01:15:50,080 --> 01:15:52,460 >> და შენიშნავს, ძალიან, მე მისაღებად დაიღალა retyping რამ. 1540 01:15:52,460 --> 01:15:55,900 ასე რომ მე უბრალოდ შექმნის და ქვემოთ arrow ჩემს გასაღებები აქ. 1541 01:15:55,900 --> 01:15:58,710 და თუ მე შენარჩუნება hitting up, თქვენ შეგიძლიათ ნახოთ ყველა ბრძანებები 1542 01:15:58,710 --> 01:16:01,090 რომელიც მე მივიღე, ან არასწორად გააკეთა. 1543 01:16:01,090 --> 01:16:04,630 >> და მე ვაპირებ წავიდეთ წინ არის და რეალურად არ გამოიყენოთ, რომ, როგორც ჩანს. 1544 01:16:04,630 --> 01:16:11,416 მიიღოს ორაზროვნება, dot slash imprecision-- ასე 1545 01:16:11,416 --> 01:16:13,290 რა ისწავლება კლასის სკოლის ამოწმებს. 1546 01:16:13,290 --> 01:16:19,010 მაშინაც კი, თუ მე ბეჭდვა ეს 10 ათობითი განათავსებს მას, მართლაც, არის 0,10000. 1547 01:16:19,010 --> 01:16:19,840 მაგრამ იცით, რა? 1548 01:16:19,840 --> 01:16:21,150 >> მოდით, ცოტა ხარბ. 1549 01:16:21,150 --> 01:16:23,990 ვთქვათ, როგორიცაა, ეჩვენებინა 55 მიუთითებს შემდეგ ათობითი. 1550 01:16:23,990 --> 01:16:26,160 მოდით ნამდვილად მიიღოს ამ პროგრამა გარეთ spin. 1551 01:16:26,160 --> 01:16:31,170 ნება მომეცით რიმეიკი იგი, რათა ორაზროვნება, dot ხაზი, ორაზროვნება. 1552 01:16:31,170 --> 01:16:32,390 >> და აქ ჩვენ მივდივართ. 1553 01:16:32,390 --> 01:16:34,420 თქვენი ბავშვობის ტყუილი იყო. 1554 01:16:34,420 --> 01:16:48,410 როგორც ჩანს, 1 იყოფა 10 მართლაც 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> რა ხდება? 1556 01:16:49,740 --> 01:16:53,360 ისე, თურმე, თუ სახის გამოიყურება შორს საკმარისი იმ ფუძემდებლური 1557 01:16:53,360 --> 01:16:55,950 წარმომადგენლობა ამ ნომერი, რეალურად 1558 01:16:55,950 --> 01:17:00,400 არ არის ზუსტად 1/10, ან 0.1 და უსასრულო რაოდენობის zeros. 1559 01:17:00,400 --> 01:17:01,630 ახლა, რატომ არის, რომ? 1560 01:17:01,630 --> 01:17:06,250 >> ისე, მიუხედავად იმისა, რომ ეს არის მარტივი ნომერი ჩვენს ადამიანებში, 1 იყოფა 10, 1561 01:17:06,250 --> 01:17:10,910 ეს არის კიდევ ერთი უსასრულოდ ბევრი ციფრები, რომ ჩვენ შეგვიძლია ვიფიქროთ up. 1562 01:17:10,910 --> 01:17:14,490 მაგრამ კომპიუტერი შეიძლება მხოლოდ წარმოადგენს finitely ბევრი ასე ნომრები. 1563 01:17:14,490 --> 01:17:18,710 ასე რომ, ფაქტობრივად, რა კომპიუტერული გვიჩვენებს მისი უახლოესი 1564 01:17:18,710 --> 01:17:22,940 დაახლოებას ნომერი ჩვენ გვინდა, რომ გვჯერა არის 1/10, 1565 01:17:22,940 --> 01:17:27,760 ან მართლაც 0,10000 უსასრულობა. 1566 01:17:27,760 --> 01:17:30,425 >> უფრო მეტიც, მიუხედავად იმისა, რომ ეს არის ახლოს, რადგან მას შეუძლია მიიღოს. 1567 01:17:30,425 --> 01:17:32,300 და, მართლაც, თუ გადავხედავთ ქვეშ Hood, 1568 01:17:32,300 --> 01:17:37,050 როგორც ჩვენ აქ ვართ ეძებს 55 ციფრისგან შემდეგ ათობითი, 1569 01:17:37,050 --> 01:17:39,990 ჩვენ რეალურად ვხედავთ, რომ რეალობა. 1570 01:17:39,990 --> 01:17:42,610 ახლა, როგორც განზე, თუ თქვენ ოდესმე მინახავს movie-- 1571 01:17:42,610 --> 01:17:45,780 ყველაზე მეტად თქვენ ალბათ haven't-- მაგრამ Superman 3 რამდენიმე წლის წინ, 1572 01:17:45,780 --> 01:17:49,500 Richard Pryor არსებითად სათავისოდ ეს სინამდვილეში მისი კომპანია მოიპაროს ბევრი 1573 01:17:49,500 --> 01:17:53,500 ფრაქციები და ფრაქციების pennies იმის გამო, რომ company-- როგორც მახსოვს, 1574 01:17:53,500 --> 01:17:57,210 ეს იყო while-- იყო არსებითად სროლა მოშორებით არაფერი რომ არ ჯდება 1575 01:17:57,210 --> 01:17:58,790 შევიდა ცნება ცენტი. 1576 01:17:58,790 --> 01:18:01,480 >> მაგრამ თუ თქვენ დაამატოთ მდე ყველა ამ პატარა, პატარა, პატარა ნომრები ერთხელ, 1577 01:18:01,480 --> 01:18:04,960 და ისევ და ისევ, შეგიძლიათ, როგორც მისი საქმე, რათა კარგი თანხა. 1578 01:18:04,960 --> 01:18:08,010 >> ეს იგივე იდეა იყო ამოღებული off მიერ ბოლოდროინდელი, მაგრამ მაინც ახლა უფროსი 1579 01:18:08,010 --> 01:18:10,500 ფილმი, სახელწოდებით საოფისე ფართი, სადაც ბიჭები, რომ ფილმი, 1580 01:18:10,500 --> 01:18:13,501 გააკეთა იგივე, ბრალია ეს მთლიანად დასრულდა, გზა ძალიან ბევრი 1581 01:18:13,501 --> 01:18:14,666 ფული საბანკო ანგარიშზე. 1582 01:18:14,666 --> 01:18:15,800 ეს ყველაფერი იყო ძალიან საეჭვო. 1583 01:18:15,800 --> 01:18:19,290 თუმცა, დღის ბოლოს, ორაზროვნება არის ყველა ჩვენს გარშემო. 1584 01:18:19,290 --> 01:18:22,240 >> და რომ, ძალიან, შეიძლება იყოს საშინლად შემთხვევაში. 1585 01:18:22,240 --> 01:18:25,590 გამოდის, რომ Superman 3 და საოფისე ფართი განზე, არსებობს 1586 01:18:25,590 --> 01:18:28,460 შეიძლება ძალიან რეალური მსოფლიოში ramifications 1587 01:18:28,460 --> 01:18:32,290 რეალობას ბუნდოვანი წარმომადგენლობა მონაცემები 1588 01:18:32,290 --> 01:18:34,770 რომ თუნდაც ჩვენ, ადამიანებს ამ დღეს არ არის აუცილებელი 1589 01:18:34,770 --> 01:18:38,230 მესმის, ისევე, როგორც ჩვენ უნდა, და მახსოვს, როგორც ხშირად, როგორც უნდა. 1590 01:18:38,230 --> 01:18:42,950 და, მართლაც, შემდეგ კლიპი ეხლა შევხედოთ რამდენიმე ძალიან რეალური სამყაროს 1591 01:18:42,950 --> 01:18:47,730 შედეგების რა მოხდება, თუ არ ვაფასებთ ორაზროვნება რომ 1592 01:18:47,730 --> 01:18:50,065 შეიძლება მოხდეს ნომრები წარმომადგენლობა. 1593 01:18:50,065 --> 01:18:51,300 >> [ვიდეო აღწარმოების] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers, ჩვენ ყველა მოდის მიიღოს ხშირად სამწუხარო პრობლემები რომ 1595 01:18:55,620 --> 01:19:00,310 წავიდეთ ერთად them-- შეცდომები, ვირუსების, და პროგრამული უზრუნველყოფის საკითხებზე, 1596 01:19:00,310 --> 01:19:03,130 მცირე ფასები გადაიხადონ ფონდის. 1597 01:19:03,130 --> 01:19:07,800 მაგრამ მაღალტექნოლოგიური და მაღალი სიჩქარით სამხედრო და სივრცეში პროგრამა პროგრამები, 1598 01:19:07,800 --> 01:19:12,800 პატარა პრობლემა შეუძლია განდიდდება შევიდა უბედურება. 1599 01:19:12,800 --> 01:19:18,900 >> 4 ივნისს, 1996, მეცნიერები მზად დაიწყოს უპილოტო Ariane 5 რაკეტა. 1600 01:19:18,900 --> 01:19:21,220 ეს იყო დატვირთული სამეცნიერო თანამგზავრების შექმნილია 1601 01:19:21,220 --> 01:19:24,600 ჩამოყალიბება, ზუსტად როგორ დედამიწის მაგნიტური ველი ურთიერთქმედებს 1602 01:19:24,600 --> 01:19:27,410 ერთად მზის ქარი. 1603 01:19:27,410 --> 01:19:30,800 სარაკეტო აშენდა ევროპის კოსმოსური სააგენტო, 1604 01:19:30,800 --> 01:19:34,370 და გააუქმა off მისი დაწესებულებაში სანაპიროზე საფრანგეთის გვიანა. 1605 01:19:34,370 --> 01:19:37,540 >> ზრდილობის დაახლოებით 37 წამი შევიდა ფრენის, ისინი პირველი 1606 01:19:37,540 --> 01:19:39,270 შენიშნა რაღაც ხდებოდა არასწორია. 1607 01:19:39,270 --> 01:19:42,250 საქშენები იყო swiveling in ისე, რომ მათ ნამდვილად არ უნდა. 1608 01:19:42,250 --> 01:19:46,580 დაახლოებით 40 წამი შევიდა ფრენის, ცხადია, მანქანა არ იყო. 1609 01:19:46,580 --> 01:19:48,850 >> და ეს მაშინ, როდესაც ისინი გააკეთა გადაწყვეტილება გაანადგუროს იგი. 1610 01:19:48,850 --> 01:19:52,780 სპექტრი უსაფრთხოების ოფიცერი, უზარმაზარი guts, დაპრესილი ღილაკს, 1611 01:19:52,780 --> 01:19:58,150 ააფეთქეს სარაკეტო, სანამ ეს მოხდებოდა გახდება საშიშროების საზოგადოებრივი უსაფრთხოების. 1612 01:19:58,150 --> 01:20:01,060 >> -ეს იყო maiden voyage საქართველოს Ariane 5. 1613 01:20:01,060 --> 01:20:03,960 და მისი განადგურება მიიღო განათავსეთ იმიტომ, რომ ნაკლი 1614 01:20:03,960 --> 01:20:05,822 ჩართული ამ სარაკეტო ის პროგრამული უზრუნველყოფა. 1615 01:20:05,822 --> 01:20:08,280 -The პრობლემა Ariane იყო რომ იყო ნომერი, რომელიც 1616 01:20:08,280 --> 01:20:10,600 საჭირო 64 bits, გამოხატონ. 1617 01:20:10,600 --> 01:20:13,590 და მათ სურდათ გარდაქმნას მას 16-bit ნომერი. 1618 01:20:13,590 --> 01:20:15,610 ისინი ფიქრობდნენ, რომ ნომერი, არასდროს ყოფილა 1619 01:20:15,610 --> 01:20:20,980 უნდა იყოს ძალიან დიდი, რომ უმრავლესობა ციფრები in 64-bit ნომერი იყო ნული. 1620 01:20:20,980 --> 01:20:22,440 ისინი არასწორია. 1621 01:20:22,440 --> 01:20:25,060 >> -The უუნარობა ერთ პროგრამული პროგრამა, მიიღოს 1622 01:20:25,060 --> 01:20:29,510 სახის ნომერი მიერ კიდევ ერთი ქართველი ერთი ძირი უკმარისობა. 1623 01:20:29,510 --> 01:20:34,350 პროგრამული უზრუნველყოფის დამუშავება გახდა ძალიან ძვირადღირებული ნაწილი ახალი ტექნოლოგიები. 1624 01:20:34,350 --> 01:20:38,140 საქართველოს Ariane სარაკეტო ძალიან წარმატებული, იმდენად, რამდენადაც პროგრამული უზრუნველყოფა 1625 01:20:38,140 --> 01:20:41,550 ის, რომ ეს იყო ასევე გამოიყენება Ariane 5. 1626 01:20:41,550 --> 01:20:47,940 >> -The ძირითადი პრობლემა იყო ის, რომ Ariane 5 იყო სწრაფად, დააჩქარა სწრაფად. 1627 01:20:47,940 --> 01:20:51,450 და პროგრამული უზრუნველყოფის არ ჰქონდა აღრიცხული, რომ. 1628 01:20:51,450 --> 01:20:55,060 >> -The განადგურების სარაკეტო იყო დიდი ფინანსური კატასტროფის 1629 01:20:55,060 --> 01:20:58,790 ყველა გამო წუთი პროგრამული შეცდომა. 1630 01:20:58,790 --> 01:21:01,210 მაგრამ ეს არ იყო პირველი დრო მონაცემები კონვერტაციის პრობლემები 1631 01:21:01,210 --> 01:21:04,820 ჰქონდა ხშირია თანამედროვე სარაკეტო ტექნიკა. 1632 01:21:04,820 --> 01:21:08,050 >> -in 1991 დაწყების პირველი ყურის ომი, 1633 01:21:08,050 --> 01:21:10,570 პატრიოტის სარაკეტო გამოცდილი მსგავსი 1634 01:21:10,570 --> 01:21:12,800 პუნქტების კონვერტაციის პრობლემა. 1635 01:21:12,800 --> 01:21:16,090 და შედეგად, 28 ადამიანი, 28 ამერიკელი ჯარისკაცი, 1636 01:21:16,090 --> 01:21:19,080 დაიღუპა და დაახლოებით 100 დაიჭრა, 1637 01:21:19,080 --> 01:21:22,780 როდესაც პატრიოტთა, რომელიც უნდა დაიცვას შემოსულ Scuds, 1638 01:21:22,780 --> 01:21:25,830 ვერ ცეცხლი სარაკეტო. 1639 01:21:25,830 --> 01:21:31,670 >> როცა ერაყში შეიჭრა ქუვეითში და ამერიკა დაიწყო უდაბნოს ქარიშხალი დასაწყისში 1991, 1640 01:21:31,670 --> 01:21:35,780 Patriot სარაკეტო ბატარეები განალაგეს დასაცავად საუდის არაბეთი და ისრაელი 1641 01:21:35,780 --> 01:21:39,230 ერაყის Scud სარაკეტო თავდასხმები. 1642 01:21:39,230 --> 01:21:43,810 პატრიოტის არის აშშ საშუალო დიაპაზონი ზედაპირზე ჰაერის სისტემის, წარმოებული 1643 01:21:43,810 --> 01:21:45,770 მიერ Raytheon კომპანია. 1644 01:21:45,770 --> 01:21:52,340 >> -The ზომის პატრიოტის interceptor თავისთავად შესახებ დაახლოებით 20 ფუტი სიგრძის. 1645 01:21:52,340 --> 01:21:55,230 და იგი იწონის დაახლოებით 2,000 ფუნტი. 1646 01:21:55,230 --> 01:21:59,320 და იგი ახორციელებს ქობინით დაახლოებით, მე ვფიქრობ, რომ დაახლოებით 150 ფუნტი. 1647 01:21:59,320 --> 01:22:03,930 და ქობინით თავისთავად მაღალი ასაფეთქებელი, რომელიც 1648 01:22:03,930 --> 01:22:07,330 აქვს ფრაგმენტები გარშემო. 1649 01:22:07,330 --> 01:22:11,680 გარსაცმის ქობინით განკუთვნილია იმოქმედოს, როგორც buckshot. 1650 01:22:11,680 --> 01:22:14,110 >> -The რაკეტები ხორციელდება ოთხი თითო კონტეინერი, 1651 01:22:14,110 --> 01:22:17,130 და ტრანსპორტირება by ნახევრად მისაბმელიანი. 1652 01:22:17,130 --> 01:22:24,930 >> -The პატრიოტის რაკეტსაწინააღმდეგო სისტემის მიდის უკან მინიმუმ 20 წელია. 1653 01:22:24,930 --> 01:22:28,420 თავდაპირველად შექმნილია როგორც საჰაერო თავდაცვის სარაკეტო 1654 01:22:28,420 --> 01:22:30,720 ჩამოაგდებენ მტრის თვითმფრინავები. 1655 01:22:30,720 --> 01:22:34,500 პირველ ყურის ომი, როდესაც ომი მოვიდა გასწვრივ, 1656 01:22:34,500 --> 01:22:39,745 არმიის სურდა გამოიყენოთ იგი ჩამოაგდებენ Scuds, არ თვითმფრინავები. 1657 01:22:39,745 --> 01:22:43,620 >> ერაყის სამხედრო-საჰაერო ძალები, ასე არ არის დიდი პრობლემა. 1658 01:22:43,620 --> 01:22:46,670 მაგრამ არმია აწუხებს Scuds. 1659 01:22:46,670 --> 01:22:50,170 ასე რომ, ისინი ცდილობდნენ განახლება პატრიოტთა. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting მტერი სარაკეტო მოგზაურობა at Mach 5 1661 01:22:52,800 --> 01:22:55,830 მიდიოდა იწვევს საკმარისი. 1662 01:22:55,830 --> 01:22:58,490 მაგრამ როდესაც პატრიოტთა იყო შევარდა მომსახურება, 1663 01:22:58,490 --> 01:23:02,860 არმია არ იცის ერაყის მოდიფიკაცია რომ გააკეთეს 1664 01:23:02,860 --> 01:23:05,930 Scuds თითქმის შეუძლებელია მოხვდა. 1665 01:23:05,930 --> 01:23:10,740 >> რა მოხდა არის Scuds, მოდიოდნენ იყო არასტაბილურია. 1666 01:23:10,740 --> 01:23:11,692 ისინი wobbling. 1667 01:23:11,692 --> 01:23:14,910 ამის მიზეზი იყო ერაყელები, რათა 1668 01:23:14,910 --> 01:23:18,280 რომ 600 კილომეტრის გარეთ 300 კილომეტრიანი 1669 01:23:18,280 --> 01:23:21,700 რაკეტა, აიღო წონა გარეთ წინ ქობინით. 1670 01:23:21,700 --> 01:23:23,390 ისინი გააკეთა ქობინით მსუბუქია. 1671 01:23:23,390 --> 01:23:27,330 >> ახლა პატრიოტთა არის ცდილობს მოვა at Scud. 1672 01:23:27,330 --> 01:23:30,230 და ყველაზე მეტად იმ დროს, აბსოლუტური უმრავლესობა იმ დროს, 1673 01:23:30,230 --> 01:23:32,940 ის უბრალოდ ფრენა მიერ Scud. 1674 01:23:32,940 --> 01:23:37,260 ერთხელ პატრიოტის სისტემის ოპერატორები მიხვდა პატრიოტის ხელიდან გაუშვა მისი სამიზნე, 1675 01:23:37,260 --> 01:23:41,690 მათ აფეთქდა პატრიოტთა ქობინით რათა თავიდან ავიცილოთ შესაძლო მსხვერპლი, თუ იგი 1676 01:23:41,690 --> 01:23:44,570 ეძლეოდა დაეცემა, რათა ადგილზე. 1677 01:23:44,570 --> 01:23:48,790 >> -ეს იყო, რაც ყველაზე ხალხი დაინახა, იმ დიდი fireballs ცაში, 1678 01:23:48,790 --> 01:23:54,550 და არასწორად როგორც საუბრების საქართველოს Scud ქობინი. 1679 01:23:54,550 --> 01:23:56,630 >> -Although იმ ღამეს ცა, პატრიოტთა აღმოჩნდა 1680 01:23:56,630 --> 01:24:00,370 წარმატებით განადგურება Scuds საათზე Dhahran, 1681 01:24:00,370 --> 01:24:03,360 არ შეიძლება იყოს შეცდომა მის შესრულება. 1682 01:24:03,360 --> 01:24:07,970 იქ, პატრიოტთა სარადარო სისტემის დაკარგა სიმღერა შემომავალი Scud, 1683 01:24:07,970 --> 01:24:10,721 და არასდროს დაიწყო გამო პროგრამული ხარვეზი. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 ეს იყო ისრაელის, რომლებიც პირველად აღმოაჩინეს რომ აღარ სისტემა იყო, 1686 01:24:18,940 --> 01:24:22,690 დიდი დრო განსხვავება გახდა, გამო საათის ჩართული 1687 01:24:22,690 --> 01:24:24,810 სისტემაში კომპიუტერში. 1688 01:24:24,810 --> 01:24:28,210 >> -About ორი კვირით ადრე ტრაგედიის Dhahran, 1689 01:24:28,210 --> 01:24:30,770 ისრაელის იტყობინება თავდაცვის დეპარტამენტის 1690 01:24:30,770 --> 01:24:32,590 რომ სისტემა დაკარგვის დროს. 1691 01:24:32,590 --> 01:24:35,360 შემდეგ დაახლოებით რვა საათის ან გაშვებული, მათ შენიშნეს, რომ სისტემა 1692 01:24:35,360 --> 01:24:37,720 ხდება შესამჩნევად ნაკლები სიზუსტით. 1693 01:24:37,720 --> 01:24:41,900 თავდაცვის დეპარტამენტის გამოეხმაურა ვეუბნებოდი ყველა პატრიოტის ბატარეები 1694 01:24:41,900 --> 01:24:44,950 რომ არ დატოვებს სისტემები დიდი ხნის განმავლობაში. 1695 01:24:44,950 --> 01:24:49,160 ისინი არ ამბობს, რა დიდი დრო was-- რვა საათის განმავლობაში, 10 საათი, 1000 საათი. 1696 01:24:49,160 --> 01:24:51,360 არავინ იცოდა. 1697 01:24:51,360 --> 01:24:53,380 >> -The პატრიოტის ბატარეის დისლოცირებული ზე ყაზარმებში 1698 01:24:53,380 --> 01:24:58,350 at Dhahran და მისი ყალბი შიდა საათის ყოფილა ზე მეტი 100 საათი 1699 01:24:58,350 --> 01:25:01,670 იმ ღამეს, 25 თებერვალს. 1700 01:25:01,670 --> 01:25:05,917 >> -ეს დააფიქსირა, დრო სიზუსტით შესახებ მეათე მეორე. 1701 01:25:05,917 --> 01:25:08,000 ახლა მეათე მეორე საინტერესო ნომერი, 1702 01:25:08,000 --> 01:25:11,920 იმიტომ, რომ ეს არ შეიძლება იყოს გამოხატული ბინარული ზუსტად, რომელიც 1703 01:25:11,920 --> 01:25:16,820 იმას ნიშნავს, რომ არ შეიძლება იყოს გამოხატული ზუსტად ნებისმიერ თანამედროვე ციფრული კომპიუტერი. 1704 01:25:16,820 --> 01:25:18,540 ეს დაუჯერებელია. 1705 01:25:18,540 --> 01:25:21,210 >> მაგრამ გამოიყენოს ეს როგორც მაგალითი. 1706 01:25:21,210 --> 01:25:23,540 ავიღოთ ნომერ მესამე. 1707 01:25:23,540 --> 01:25:27,350 ერთი მესამედი არ შეიძლება იყოს გამოთქმული ათობითი ზუსტად. 1708 01:25:27,350 --> 01:25:32,080 ერთი მესამე 0,333 გრძელდება უსასრულობამდე. 1709 01:25:32,080 --> 01:25:36,480 >> არ არსებობს გზა უნდა გააკეთოს, რომ აბსოლუტური სიზუსტით ათობითი. 1710 01:25:36,480 --> 01:25:39,560 სწორედ სახის პრობლემა რომ მოხდა პატრიოტია. 1711 01:25:39,560 --> 01:25:44,100 აღარ სისტემა გაიქცა, უარესი დრო შეცდომა გახდა. 1712 01:25:44,100 --> 01:25:48,890 >> მას შემდეგ რაც 100 საათი ოპერაცია, შეცდომა იყო მხოლოდ დაახლოებით ერთი მესამედი 1713 01:25:48,890 --> 01:25:50,600 მეორე. 1714 01:25:50,600 --> 01:25:54,210 მაგრამ თვალსაზრისით გათვლილი სარაკეტო მოგზაურობა at Mach 5, 1715 01:25:54,210 --> 01:25:58,710 ის შედეგად თვალთვალის შეცდომა მეტი 600 მეტრია. 1716 01:25:58,710 --> 01:26:02,120 ეს იქნება ფატალური შეცდომა ჯარისკაცი, თუ რა 1717 01:26:02,120 --> 01:26:08,940 მოხდა არის Scud დაწყებას იყო გამოვლინდა ადრეული გაფრთხილების თანამგზავრების 1718 01:26:08,940 --> 01:26:12,860 და მათ იცოდნენ, რომ Scud მოდის მათი საერთო მიმართულებით. 1719 01:26:12,860 --> 01:26:15,320 მათ არ იციან, სადაც იგი მოდიოდა. 1720 01:26:15,320 --> 01:26:18,250 >> -ეს იყო ახლა მდე სარადარო კომპონენტი პატრიოტის სისტემის 1721 01:26:18,250 --> 01:26:23,190 იცავდა Dhahran to იქნებიან და შენარჩუნება სიმღერა შემომავალი მტრის რაკეტა. 1722 01:26:23,190 --> 01:26:24,609 >> -The სარადარო იყო ძალიან ჭკვიანი. 1723 01:26:24,609 --> 01:26:26,650 ეს რეალურად აკონტროლოთ პოზიცია Scud, 1724 01:26:26,650 --> 01:26:30,350 და შემდეგ პროგნოზირება, სადაც ეს, ალბათ, იქნება შემდეგი დრო რადარის გაგზავნილი 1725 01:26:30,350 --> 01:26:31,420 პულსი გარეთ. 1726 01:26:31,420 --> 01:26:33,110 რომ ერქვა სპექტრი კარიბჭე. 1727 01:26:33,110 --> 01:26:37,660 >> მერე, ერთხელ პატრიოტის გადაწყვეტს საკმარისი დრო აქვს 1728 01:26:37,660 --> 01:26:42,450 გავიდა წასვლა უკან და შემოწმება მომდევნო ადგილმდებარეობა ამ აღმოჩენილი ობიექტი, 1729 01:26:42,450 --> 01:26:43,600 იგი მიდის უკან. 1730 01:26:43,600 --> 01:26:48,650 ასე რომ, როდესაც იგი დაბრუნდა არასწორი ადგილი, მაშინ ვერ ხედავს ობიექტი. 1731 01:26:48,650 --> 01:26:52,160 და იგი გადაწყვეტს, რომ არ არსებობს ობიექტი, ეს იყო ყალბი გამოვლენის 1732 01:26:52,160 --> 01:26:53,930 და წვეთების სიმღერა. 1733 01:26:53,930 --> 01:26:57,030 >> -The შემომავალი Scud გაქრა სარადარო ეკრანზე. 1734 01:26:57,030 --> 01:27:00,260 და წამის შემდეგ, ის გააკრიტიკა შევიდა ყაზარმებში. 1735 01:27:00,260 --> 01:27:06,150 Scud დაიღუპა 28 და იყო ბოლო ერთი გასროლა დროს პირველი ყურის ომი. 1736 01:27:06,150 --> 01:27:11,960 >> ტრაგიკულია, განახლებული პროგრამული უზრუნველყოფა მივიდა Dhahran მომდევნო დღეს. 1737 01:27:11,960 --> 01:27:14,930 პროგრამული ხარვეზი ჰქონდა დაფიქსირებული, დახურვის 1738 01:27:14,930 --> 01:27:19,806 ერთი თავი პრობლემური ისტორიის პატრიოტის სარაკეტო. 1739 01:27:19,806 --> 01:27:20,729 >> [ვიდეო აღწარმოების] 1740 01:27:20,729 --> 01:27:23,520 დევიდ ჯ Malan: ასე რომ, ეს არის ყველა ამბობენ, რომ ამ საკითხებზე overflow 1741 01:27:23,520 --> 01:27:25,860 და ორაზროვნება ყველანი ძალიან რეალური. 1742 01:27:25,860 --> 01:27:26,920 ასე რომ, რა გამოდის? 1743 01:27:26,920 --> 01:27:28,895 ჩვენ დავიწყეთ ლაპარაკი printf. 1744 01:27:28,895 --> 01:27:31,270 ისევ და ისევ, ეს ფუნქცია, რომელიც ბეჭდავს რაღაც ეკრანზე, 1745 01:27:31,270 --> 01:27:33,450 და ჩვენ გააცნო შემდეგ რამდენიმე სხვა ფუნქციები 1746 01:27:33,450 --> 01:27:34,945 საწყისი ე.წ. CS50 ბიბლიოთეკაში. 1747 01:27:34,945 --> 01:27:36,910 და ჩვენ გავაგრძელებთ ვხედავ ამ დროზე. 1748 01:27:36,910 --> 01:27:40,760 და ჩვენ, კერძოდ, გამოიყენება მიიღოს სიმებიანი, და მიიღეთ int, და ახლა, ასევე float, 1749 01:27:40,760 --> 01:27:44,410 და კიდევ სხვები მაინც ვხვდებით და გამოიყენოთ საკუთარ თავს დიდი ხნის განმავლობაში. 1750 01:27:44,410 --> 01:27:47,220 >> მაგრამ ხანდახან, გვაქვს ჩვენ უკვე ვნახეთ, საჭიროება 1751 01:27:47,220 --> 01:27:50,520 შესანახად, რაც იმ ფუნქციების მხრივ უკან? 1752 01:27:50,520 --> 01:27:52,920 ისინი გადასცემს us უკან სიმებიანი, ან int ან float. 1753 01:27:52,920 --> 01:27:56,070 ზოგჯერ ჩვენ უნდა დააყენოს, რომ სიმებიანი, ან int, ან float, სადღაც. 1754 01:27:56,070 --> 01:28:00,100 >> და შესანახად იმ რამ, გავიხსენოთ მხოლოდ როგორც Scratch, ჩვენ ცვლადები. 1755 01:28:00,100 --> 01:28:03,260 მაგრამ განსხვავებით Scratch, in C ჩვენ ნამდვილი სახის 1756 01:28:03,260 --> 01:28:05,530 ცვლადის მონაცემები სახის, ზოგადად 1757 01:28:05,530 --> 01:28:08,640 მათ შორის, სიმებიანი, int, float, და ეს სხვები მაინც. 1758 01:28:08,640 --> 01:28:12,321 >> ასე რომ, როდესაც ვაცხადებთ ცვლადები C, ჩვენ უნდა განაცხადოს ჩვენი მონაცემთა ტიპები. 1759 01:28:12,321 --> 01:28:14,820 ეს არ არის რაღაც ჩვენ უნდა გავაკეთოთ შემდეგ სემესტრში 1760 01:28:14,820 --> 01:28:16,810 როგორც ჩვენ გადასვლას სხვა ენებზე. 1761 01:28:16,810 --> 01:28:19,610 მაგრამ ახლა, ჩვენ გვჭირდება რომ აპრიორი წინასწარ, 1762 01:28:19,610 --> 01:28:24,370 ავუხსნათ კომპიუტერი, თუ რა ტიპის ცვლადი ჩვენ გვინდა, რომ მოგვცეს. 1763 01:28:24,370 --> 01:28:27,290 >> ახლა კი, ბეჭდვა იმ სახის მონაცემთა ტიპები, 1764 01:28:27,290 --> 01:28:29,570 ჩვენ უნდა ვუთხრათ printf რა ელის. 1765 01:28:29,570 --> 01:28:32,450 და ჩვენ ვნახეთ პროცენტი s სიმები, და პროცენტი i მთელი რიცხვები, 1766 01:28:32,450 --> 01:28:33,790 და რამდენიმე სხვა უკვე. 1767 01:28:33,790 --> 01:28:37,237 და ეს არის უბრალოდ მოთხოვნები ვიზუალური პრეზენტაცია 1768 01:28:37,237 --> 01:28:38,070 რომ ინფორმაციას. 1769 01:28:38,070 --> 01:28:42,080 >> და თითოეული ეს შეიძლება რეალურად იყოს parametrized და tweaked რამდენიმე გზა, 1770 01:28:42,080 --> 01:28:45,370 თუ გვინდა, რომ შემდგომი კონტროლი ტიპის გამომუშავება, რომ თქვენ. 1771 01:28:45,370 --> 01:28:49,604 და, ფაქტობრივად, გამოდის, რომ არა მხოლოდ არის წარმატებული ო ახალი ხაზი. 1772 01:28:49,604 --> 01:28:52,520 არსებობს რაღაც მოუწოდა წარმატებული r for ვაგონი დაბრუნების, რომელიც 1773 01:28:52,520 --> 01:28:54,360 უფრო akin რომ ძველი სკოლა საბეჭდი მანქანა, 1774 01:28:54,360 --> 01:28:57,690 და ასევე Windows გამოიყენება მრავალი წლის განმავლობაში. 1775 01:28:57,690 --> 01:28:59,690 >> არსებობს წარმატებული t for ჩანართი. 1776 01:28:59,690 --> 01:29:03,170 გამოდის, რომ, თუ გსურთ ორმაგი ციტირებით შიგნით მისაღებად, 1777 01:29:03,170 --> 01:29:05,000 გავიხსენოთ, რომ ჩვენ გამოყენებული ორმაგი გაცემა ორმაგი 1778 01:29:05,000 --> 01:29:07,900 პასუხის მარცხენა და მარჯვენა დამთავრდა ჩვენი სიმები დღემდე. 1779 01:29:07,900 --> 01:29:09,420 რომელიც, როგორც ჩანს აღრეული რამ. 1780 01:29:09,420 --> 01:29:12,503 >> თუ გსურთ, რომ ორმაგი ციტირებით შუა სიმებიანი და, მართლაც, 1781 01:29:12,503 --> 01:29:13,670 ეს გაუგებარია ვხედავ. 1782 01:29:13,670 --> 01:29:17,120 ასე რომ, თქვენ უნდა გაქცევა, ასე ვთქვათ, ორმაგი ციტირებით რაღაც 1783 01:29:17,120 --> 01:29:18,860 როგორიცაა, ფაქტიურად, წარმატებული ორმაგი გაცემა. 1784 01:29:18,860 --> 01:29:20,230 და იქ რამდენიმე სხვა მაინც. 1785 01:29:20,230 --> 01:29:24,540 ჩვენ დავინახავთ, უფრო იმ ფაქტობრივი გამოყენების დიდი ხნის განმავლობაში. 1786 01:29:24,540 --> 01:29:27,930 >> მოდით ახლა გადასვლას მონაცემები და წარმომადგენლობა, 1787 01:29:27,930 --> 01:29:30,820 და არითმეტიკული მოქმედებები, ყველა რომელიც მოგვცა რამდენიმე შენობა 1788 01:29:30,820 --> 01:29:32,070 ბლოკად, რომლითაც უნდა ითამაშოს. 1789 01:29:32,070 --> 01:29:34,481 მაგრამ ახლა მოდით რეალურად მისცეს us დანარჩენი ლექსიკა 1790 01:29:34,481 --> 01:29:36,230 რომ ჩვენ უკვე გვქონდა გასულ კვირას Scratch 1791 01:29:36,230 --> 01:29:39,350 აღების შევხედოთ ზოგიერთი სხვა აშენებს, C არა ყველა მათგანი. 1792 01:29:39,350 --> 01:29:41,680 მაგრამ იდეები ჩვენ შესახებ, რომ ნახოთ ნამდვილად 1793 01:29:41,680 --> 01:29:45,610 აღვნიშნო, რომ თარგმანის ერთი ენა, Scratch, სხვა, C. 1794 01:29:45,610 --> 01:29:48,470 >> და დროთა განმავლობაში, ჩვენ შეარჩიო სხვა ინსტრუმენტები ჩვენი ინსტრუმენტარიუმის, 1795 01:29:48,470 --> 01:29:49,820 ასე ვთქვათ, syntactically. 1796 01:29:49,820 --> 01:29:54,190 და, მართლაც, დაინახავთ, რომ იდეები ახლა საკმაოდ ნაცნობი გასულ კვირას. 1797 01:29:54,190 --> 01:29:55,200 ასე რომ, მოდით ეს. 1798 01:29:55,200 --> 01:29:58,870 >> მოდით წავიდეთ წინ და whip up პროგრამა რომ რეალურად იყენებს ზოგიერთი გამონათქვამები, 1799 01:29:58,870 --> 01:30:00,720 ლოგიკური გამოხატულებაა. 1800 01:30:00,720 --> 01:30:02,810 ნება მომეცით წავიდეთ წინ აქ და შექმნას ახალი ფაილი. 1801 01:30:02,810 --> 01:30:06,090 მე მოვუწოდებ ამ condition.c. 1802 01:30:06,090 --> 01:30:09,350 >> ნება მომეცით წავიდეთ წინ და მოიცავს CS50 ბიბლიოთეკა. 1803 01:30:09,350 --> 01:30:12,640 და ნება მომეცით წავიდეთ წინ და მოიცავს სტანდარტული io.h ჩვენი ფუნქციები, 1804 01:30:12,640 --> 01:30:14,690 და printf, და უფრო შესაბამისად. 1805 01:30:14,690 --> 01:30:18,900 ნება მომეცით მისცეს თავს, რომ შაბლონური of int ძირითადი ბათილად, რომლის განმარტებით, ჩვენ გამოგიგზავნით 1806 01:30:18,900 --> 01:30:20,360 დაბრუნდება მომავალში. 1807 01:30:20,360 --> 01:30:23,820 >> ახლა ნება მომეცით წავიდეთ წინ და მისცეს თავს int მეშვეობით მისაღებად int. 1808 01:30:23,820 --> 01:30:25,970 მაშინ ნება მომეცით წავიდეთ წინ და ამის გაკეთება. 1809 01:30:25,970 --> 01:30:30,150 მე მინდა ვთქვა, თუ არის less-- მოდით განასხვავოს დადებითი, უარყოფითი, 1810 01:30:30,150 --> 01:30:31,260 ან ნულოვანი ღირებულებები. 1811 01:30:31,260 --> 01:30:36,630 >> ასე რომ, თუ ნაკლებია, ვიდრე ნულოვანი, ნება მომეცით უბრალოდ ეს პროგრამა უბრალოდ ამბობენ, 1812 01:30:36,630 --> 01:30:42,370 უარყოფითი, წარმატებული ო, სხვა თუ არის ნულზე მეტი. 1813 01:30:42,370 --> 01:30:47,030 ახლა მე, რა თქმა უნდა, ვაპირებ ვთქვა printf დადებითი, წარმატებული ო. 1814 01:30:47,030 --> 01:30:50,690 და მერე სხვას if-- მე შეეძლო ამის გაკეთება. 1815 01:30:50,690 --> 01:30:53,410 >> მე ვერ გავაკეთებ, თუ მე უდრის 0. 1816 01:30:53,410 --> 01:30:55,840 მაგრამ მე მინდა იყოს მიღების მინიმუმ ერთი შეცდომა უკვე. 1817 01:30:55,840 --> 01:30:59,480 შეგახსენებთ, რომ თანაბარი ნიშანი არ არის თანასწორი, როგორც ჩვენ ადამიანები ვიცით. 1818 01:30:59,480 --> 01:31:01,010 >> მაგრამ ეს დავალება ოპერატორი. 1819 01:31:01,010 --> 01:31:05,640 და ჩვენ არ გვინდა, რომ 0 შესახებ უფლება და ამას i მარცხენა. 1820 01:31:05,640 --> 01:31:11,810 ასე რომ, რათა თავიდან ავიცილოთ ამ დაბნეულობა, ან ალბათ ბოროტად გამოყენების ტოლობის ნიშანი, 1821 01:31:11,810 --> 01:31:14,740 ადამიანები გადაწყვიტა რამდენიმე წლის წინ რომ მრავალი პროგრამირების ენებზე 1822 01:31:14,740 --> 01:31:18,000 როდესაც გსურთ შემოწმება თანასწორობის შორის მარცხენა და მარჯვენა, 1823 01:31:18,000 --> 01:31:19,635 თქვენ რეალურად გამოიყენოთ შეადგენს შეადგენს. 1824 01:31:19,635 --> 01:31:21,010 ასე რომ თქვენ მოხვდა ტოლობის ნიშანი ორჯერ. 1825 01:31:21,010 --> 01:31:25,600 როდესაც გსურთ დაავალოს მარჯვნიდან მარცხნივ, თქვენ იყენებთ ერთი თანაბარი ნიშანი. 1826 01:31:25,600 --> 01:31:29,360 ასე რომ, ჩვენ შეგვიძლია ამის გაკეთება სხვა თუ მე ტოლია ნულის ტოლია. 1827 01:31:29,360 --> 01:31:31,710 >> მე შეიძლება მერე და გახსნა ჩემი Curly braces, 1828 01:31:31,710 --> 01:31:36,087 და აცხადებენ, printf 0, წარმატებული ო, გაკეთდეს. 1829 01:31:36,087 --> 01:31:38,170 მაგრამ გახსოვდეთ, თუ როგორ შეიძლება ამ ჩანგლები საგზაო შეუძლია მუშაობა. 1830 01:31:38,170 --> 01:31:39,836 და, მართლაც, მხოლოდ ფიქრი ლოგიკა. 1831 01:31:39,836 --> 01:31:41,510 i არის ნომერი. 1832 01:31:41,510 --> 01:31:43,320 ის რიცხვი, კონკრეტულად. 1833 01:31:43,320 --> 01:31:48,600 და ეს ნიშნავს, რომ იქნება ნაკლები, ვიდრე 0, და უფრო მეტი ვიდრე 0 ან 0. 1834 01:31:48,600 --> 01:31:51,600 ასე რომ, არსებობს სახის ამ ნაგულისხმევი რა შემთხვევაში. 1835 01:31:51,600 --> 01:31:54,920 >> ასე რომ, ჩვენ შეიძლება, ისევე, როგორც Scratch ათავისუფლებენ სხვაგან, თუ 1836 01:31:54,920 --> 01:31:55,747 და უბრალოდ, ვამბობთ სხვა. 1837 01:31:55,747 --> 01:31:57,830 ლოგიკურად, თუ თქვენ პროგრამისტი ვიცი, რომ მხოლოდ 1838 01:31:57,830 --> 01:32:01,635 სამი თაიგულების, რომელშიც სცენარი შეიძლება fall-- პირველი, 1839 01:32:01,635 --> 01:32:03,510 მეორე, ან მესამე ამ შემთხვევაში არ 1840 01:32:03,510 --> 01:32:07,100 შეწუხება და დასძინა, დამატებითი სიზუსტით და დამატებითი ლოგიკა არსებობს. 1841 01:32:07,100 --> 01:32:09,690 უბრალოდ წავიდეთ წინ ერთად რა შემთხვევაში აქ სხვაგან. 1842 01:32:09,690 --> 01:32:11,950 >> ახლა, მოდით, წავიდეთ წინ შემდეგ გადარჩენა ეს, 1843 01:32:11,950 --> 01:32:15,760 პირობები dot ხაზი conditions-- არ არის დიდი ინტერფეისი, 1844 01:32:15,760 --> 01:32:18,914 იმიტომ, რომ მე არ რითაც შესახებ, როგორც ზემოთ აღინიშნა. 1845 01:32:18,914 --> 01:32:19,580 მაგრამ ეს ჯარიმა. 1846 01:32:19,580 --> 01:32:20,454 ჩვენ გავაგრძელებთ მარტივი. 1847 01:32:20,454 --> 01:32:21,890 მოდით ცდილობენ ნომერი 42. 1848 01:32:21,890 --> 01:32:23,240 და ეს არის დადებითი. 1849 01:32:23,240 --> 01:32:26,120 მოდით ცდილობენ ნომერი უარყოფითი 42, უარყოფითი. 1850 01:32:26,120 --> 01:32:28,244 >> მოდით ცდილობენ ღირებულების 0. 1851 01:32:28,244 --> 01:32:29,160 და, მართლაც, რომ მუშაობს. 1852 01:32:29,160 --> 01:32:33,900 ახლა, თქვენ ნახავთ პრობლემების წინაშე ხანგრძლივი, ტესტირება რამ სამჯერ, 1853 01:32:33,900 --> 01:32:34,980 ალბათ, არ არის საკმარისი. 1854 01:32:34,980 --> 01:32:37,438 თქვენ ალბათ გსურთ შეამოწმოთ გარკვეული დიდი ციფრები, ზოგიერთი პატარა 1855 01:32:37,438 --> 01:32:40,520 ნომრები, რამდენიმე კუთხეში შემთხვევებში, როგორც ჩვენ მოვალთ აღწერს მათ. 1856 01:32:40,520 --> 01:32:42,500 >> მაგრამ ახლა, ეს არის საკმაოდ მარტივი პროგრამა. 1857 01:32:42,500 --> 01:32:45,160 და მე დარწმუნებული ვარ, რომ, ლოგიკურად, რომ იგი იყოფა სამ შემთხვევაში. 1858 01:32:45,160 --> 01:32:49,360 და მართლაც, მიუხედავად იმისა, რომ ჩვენ უბრალოდ ორიენტირებულია პოტენციალი downsides 1859 01:32:49,360 --> 01:32:53,480 ორაზროვნება და overflow, in რეალობაში, სადაც ბევრი CS50 პრობლემები, 1860 01:32:53,480 --> 01:32:56,000 ჩვენ არ ვაპირებთ ფიქრი შესახებ, ყველა დროის, 1861 01:32:56,000 --> 01:32:59,050 იმ საკითხებზე overflow და ორაზროვნება, რადგან, ფაქტობრივად, C, 1862 01:32:59,050 --> 01:33:01,889 ეს, ფაქტობრივად, არ არის, რომ ადვილი, რათა თავიდან ავიცილოთ იმ რამ. 1863 01:33:01,889 --> 01:33:04,180 თუ გსურთ ითვლიან უფრო დიდი და უფრო დიდი და უფრო დიდი, 1864 01:33:04,180 --> 01:33:07,510 ირკვევა, არსებობს ტექნიკის შეგიძლიათ გამოიყენოთ, ხშირად ჩართვის რამ მოუწოდა 1865 01:33:07,510 --> 01:33:11,240 ბიბლიოთეკების, კოლექციების კოდი, რომელიც სხვა ადამიანი წერდა, რომელიც შეგიძლიათ გამოიყენოთ, 1866 01:33:11,240 --> 01:33:13,910 და სხვა ენებზე, როგორიცაა Java და სხვა, რეალურად 1867 01:33:13,910 --> 01:33:15,800 მას ბევრი ადვილი დათვლა კიდევ უფრო მაღალი. 1868 01:33:15,800 --> 01:33:19,810 ასე რომ, ეს ნამდვილად არის ზოგიერთი საფრთხეები ფუნქცია ენის გამოიყენოთ. 1869 01:33:19,810 --> 01:33:22,710 და მომავალ კვირაში, ჩვენ ვხედავ, რამდენად საშიშია C ნამდვილად 1870 01:33:22,710 --> 01:33:24,950 შეიძლება თუ არ სწორად გამოყენება. 1871 01:33:24,950 --> 01:33:27,610 მაგრამ არსებობს და Python და JavaScript, რომელიც 1872 01:33:27,610 --> 01:33:32,620 ჩვენ ფენის ზოგიერთ დამატებითი დაცვის, და აწარმოებს ნაკლები იმ რისკებს. 1873 01:33:32,620 --> 01:33:35,820 >> მოდით ცოტა მეტი საინტერესო ლოგიკა ჩვენი პროგრამა. 1874 01:33:35,820 --> 01:33:39,110 ნება მომეცით წავიდეთ წინ და შევქმნათ პროგრამის მოუწოდა ლოგიკური 1875 01:33:39,110 --> 01:33:43,804 მხოლოდ ასე შემიძლია თამაში ზოგიერთი ფაქტობრივი ლოგიკა, logical.c. 1876 01:33:43,804 --> 01:33:46,870 მე უბრალოდ დააკოპირეთ და ჩასვით ზოგიერთი კოდი ადრე ისე მივიღებ უკან 1877 01:33:46,870 --> 01:33:49,950 ამ ლამაზი ამოსავალი წერტილი. 1878 01:33:49,950 --> 01:33:53,980 >> მიადევნე თვალი ამჯერად ამის char C. ვარ ვაპირებ, რათა ეს სახელი C 1879 01:33:53,980 --> 01:33:58,510 მხოლოდ იმიტომ, რომ ჩვეულებრივი, მიიღოს ხასიათი შესახებ. 1880 01:33:58,510 --> 01:34:00,730 და მოდით პრეტენზია მოსწონს მე განხორციელების ნაწილი 1881 01:34:00,730 --> 01:34:04,130 რომ Rm პროგრამა, remove პროგრამა ადრე, რომ აიძულა შესახებ 1882 01:34:04,130 --> 01:34:05,400 ამოიღონ ფაილი. 1883 01:34:05,400 --> 01:34:06,750 როგორ შეიძლება ამის გაკეთება? 1884 01:34:06,750 --> 01:34:11,090 >> მე მინდა ვთქვა, თუ C ტოლია უდრის, ციტირებით unquote, 1885 01:34:11,090 --> 01:34:16,304 y, მაშინ მე ვაპირებ ვივარაუდოთ, რომ მომხმარებელმა აირჩია დიახ. 1886 01:34:16,304 --> 01:34:17,470 მე უბრალოდ აპირებს ბეჭდვა დიახ. 1887 01:34:17,470 --> 01:34:19,440 თუ ეს იყო რეალურად წერა მოცილება პროგრამა, 1888 01:34:19,440 --> 01:34:21,420 ჩვენ შეგვიძლია ამოიღონ ფაილი უფრო ხაზი კოდი. 1889 01:34:21,420 --> 01:34:22,461 მაგრამ ჩვენ გავაგრძელებთ მარტივი. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> სხვაგან, თუ გ უდრის უდრის N-- და ახლა აქ, მე ვაპირებ ვთქვა, 1892 01:34:31,250 --> 01:34:32,980 მომხმარებელს უნდა იმას ნიშნავდა, არ არსებობს. 1893 01:34:32,980 --> 01:34:34,360 და მერე სხვას, იცით, რა? 1894 01:34:34,360 --> 01:34:36,200 მე არ ვიცი, რა მომხმარებლის აპირებს აკრიფოთ. 1895 01:34:36,200 --> 01:34:38,533 ასე რომ მე უბრალოდ ვაპირებ ვთქვა, რომ რომ არის შეცდომა, რაც 1896 01:34:38,533 --> 01:34:40,070 იგი რეალურად აკრეფილი. 1897 01:34:40,070 --> 01:34:41,180 >> ასე რომ, რა ხდება აქ? 1898 01:34:41,180 --> 01:34:44,530 არსებობს ფუნდამენტური განსხვავება წინააღმდეგ, რასაც მე ვაკეთებ წარსულში. 1899 01:34:44,530 --> 01:34:49,300 ორმაგი შეთავაზებები, ორმაგი შეთავაზებები, double შეთავაზებები და, ჯერჯერობით, ერთჯერადი შეთავაზებები, 1900 01:34:49,300 --> 01:34:50,170 ერთჯერადი შეთავაზებები. 1901 01:34:50,170 --> 01:34:52,860 თურმე C, რომ როდესაც გსურთ დაწეროთ ტექსტი, 1902 01:34:52,860 --> 01:34:56,680 თქვენ გამოიყენოთ ორმაგი შეთავაზებები, ისევე, როგორც ჩვენ უკვე გამოყენებით ამ დროს printf. 1903 01:34:56,680 --> 01:35:02,030 >> მაგრამ თუ გვინდა, რომ გაუმკლავდეთ მხოლოდ ერთჯერადი ხასიათი, ე.წ. char, 1904 01:35:02,030 --> 01:35:03,780 მაშინ თქვენ ნამდვილად გამოიყენოს ერთჯერადი შეთავაზებები. 1905 01:35:03,780 --> 01:35:05,450 იმ თქვენ, რომლებიც უკვე დაპროგრამებულია ადრე, თქვენ შეიძლება არ აქვს 1906 01:35:05,450 --> 01:35:07,850 ჰქონდა ფიქრი განსხვავება გარკვეულ ენებზე. 1907 01:35:07,850 --> 01:35:09,450 In C, არ აქვს მნიშვნელობა. 1908 01:35:09,450 --> 01:35:12,560 ასე რომ, როდესაც მივიღებ char და მინდა შედარების რომ char გამოყენებით ტოლობის 1909 01:35:12,560 --> 01:35:18,350 უტოლდება ზოგიერთი წერილი, როგორც Y ან N, მე, მართლაც, უნდა ჰქონდეს ერთჯერადი შეთავაზებები. 1910 01:35:18,350 --> 01:35:19,770 >> ახლა, მოდით, წავიდეთ წინ და ამის გაკეთება. 1911 01:35:19,770 --> 01:35:26,180 მოდით წავიდეთ წინ და მიიღოს ლოგიკური dot slash ლოგიკური. 1912 01:35:26,180 --> 01:35:27,305 და ახლა მე მიმდინარეობს აიძულა. 1913 01:35:27,305 --> 01:35:30,638 ასე რომ, სავარაუდოდ, უკეთესი მომხმარებლის, გამოცდილება მაგრამ რეალურად, მეუბნებოდა, თუ რა უნდა გავაკეთოთ აქ. 1914 01:35:30,638 --> 01:35:33,030 მაგრამ მე ვაპირებ უბრალოდ ბრმად ვთქვათ y დიახ, OK, ლამაზი. 1915 01:35:33,030 --> 01:35:35,780 >> მოდით გაუშვით ერთხელ, ო, არა, კარგია. 1916 01:35:35,780 --> 01:35:39,610 დავუშვათ, ისევე როგორც გარკვეული ადამიანი ვიცი, ჩემი caps lock გასაღები არის ძალიან ხშირად. 1917 01:35:39,610 --> 01:35:43,740 ასე რომ დედაქალაქში Y, შევა, შეცდომა. 1918 01:35:43,740 --> 01:35:46,130 OK, ეს არ არის ზუსტად ის, რაც მე ელოდება. 1919 01:35:46,130 --> 01:35:48,170 მართლაც, კომპიუტერული აკეთებს ფაქტიურად რა 1920 01:35:48,170 --> 01:35:51,794 მე ვუთხარი, რომ გააკეთოს შემოწმება ამას y და ამას n. 1921 01:35:51,794 --> 01:35:53,960 ეს არ იგრძნონ კარგი მომხმარებლის, გამოცდილება, თუმცა. 1922 01:35:53,960 --> 01:35:59,010 მიადევნე თვალი ითხოვენ და მიიღოს ან ქვედა ან ზედა შემთხვევაში. 1923 01:35:59,010 --> 01:36:02,090 ასე რომ, თურმე, დაგვჭირდება ამბობენ, რომ რაღაც, როგორც Scratch, 1924 01:36:02,090 --> 01:36:08,150 როგორიცაა პირდაპირი თუ C ტოლია უდრის დედაქალაქის ერთ სიტყვებზე y. 1925 01:36:08,150 --> 01:36:11,400 გამოდის, C -ს ჯერ არ შეუყვანია ეს ლიტერატურული სიტყვით ან. 1926 01:36:11,400 --> 01:36:12,880 >> მაგრამ მას აქვს ორი ვერტიკალური ბარები. 1927 01:36:12,880 --> 01:36:15,463 თქვენ უნდა გამართავს Shift, როგორც წესი, თუ თქვენ იყენებთ ამერიკული კლავიატურის, 1928 01:36:15,463 --> 01:36:18,910 და მოხვდა ვერტიკალური ბარი გასაღები ზემოთ თქვენი დაბრუნების გასაღები. 1929 01:36:18,910 --> 01:36:22,410 მაგრამ ეს ვერტიკალური ბარი ვერტიკალური ბარი ნიშნავს ან. 1930 01:36:22,410 --> 01:36:26,220 >> თუ, პირიქით, ჩვენ გვინდოდა, ვთქვა და, როგორც Scratch, 1931 01:36:26,220 --> 01:36:28,180 ჩვენ შეგვიძლია ამის გაკეთება ampersand ampersand. 1932 01:36:28,180 --> 01:36:31,330 რომელიც არ აკეთებს ლოგიკური აზრი აქ, იმიტომ, რომ ადამიანს შეუძლია არ შეიძლება 1933 01:36:31,330 --> 01:36:37,110 აკრეფილი ორივე y და ამას y და კაპიტალის Y როგორც იგივე ხასიათი. 1934 01:36:37,110 --> 01:36:39,470 ასე რომ, თუ არის ის, რაც ჩვენ ვაპირებთ აქ. 1935 01:36:39,470 --> 01:36:46,280 >> ასე რომ, თუ ამ ორივე ადგილას, ან გ ტოლია ტოლია კაპიტალის N, ახლა გამეორება, 1936 01:36:46,280 --> 01:36:49,390 ლოგიკური, გამეორება ლოგიკური. 1937 01:36:49,390 --> 01:36:51,200 ახლა, შემიძლია აკრიფოთ y. 1938 01:36:51,200 --> 01:36:53,920 და შემიძლია კიდევ ერთხელ დედაქალაქში Y, ან კაპიტალის N. 1939 01:36:53,920 --> 01:36:56,630 და მე ვერ დაამატოთ დამატებითი კომბინაციები მაინც. 1940 01:36:56,630 --> 01:36:58,810 >> ასე რომ, ეს არის ლოგიკური პროგრამა იმდენად, რამდენადაც ახლა 1941 01:36:58,810 --> 01:37:01,940 მე შემოწმების ლოგიკურად ეს მნიშვნელობა და ღირებულება. 1942 01:37:01,940 --> 01:37:06,420 და მე არ უნდა, აუცილებლად, ამუშავება კიდევ ორი ​​ifs ან სხვაგან IFS. 1943 01:37:06,420 --> 01:37:09,960 მე შემიძლია რეალურად ზოგი დაკავშირებული ლოგიკა ერთად ამ გზით. 1944 01:37:09,960 --> 01:37:11,950 ასე რომ, ეს უკეთესი იქნება შემუშავებული, ვიდრე უბრალოდ 1945 01:37:11,950 --> 01:37:17,490 ამბობდა, თუ C უდრის ქვედა შემთხვევაში y, ბეჭდვა დიახ, სხვა თუ c შეადგენს კაპიტალის Y, 1946 01:37:17,490 --> 01:37:20,074 ბეჭდვა დიახ, სხვა თუ გ უდრის lower-- სხვა სიტყვებით, 1947 01:37:20,074 --> 01:37:21,990 თქვენ არ უნდა ჰქონდეს უფრო და უფრო მეტი ფილიალში. 1948 01:37:21,990 --> 01:37:28,840 თქვენ შეგიძლიათ დააკავშიროთ ზოგიერთი ექვივალენტი ფილიალები ლოგიკურად, რადგან ამ გზით. 1949 01:37:28,840 --> 01:37:34,150 >> მოდით შევხედოთ მხოლოდ ერთი საბოლოო ნივთიერება, ერთი საბოლოო მშენებლობა, 1950 01:37:34,150 --> 01:37:34,847 რომ C საშუალებას აძლევს. 1951 01:37:34,847 --> 01:37:36,930 და ჩვენ დავბრუნდებით მომავალში სხვები მაინც. 1952 01:37:36,930 --> 01:37:41,400 და მაშინ ჩვენ დავასკვნათ ეძებს დროს არ სისწორის code-- 1953 01:37:41,400 --> 01:37:46,070 მიღების კოდი work-- მაგრამ დიზაინი კოდი და მცენარეთა იმ თესლი დასაწყისში. 1954 01:37:46,070 --> 01:37:51,337 >> ნება მომეცით წავიდეთ წინ და გახსენით ახალი ფაილი აქ. 1955 01:37:51,337 --> 01:37:51,920 იცი რაა? 1956 01:37:51,920 --> 01:37:54,450 მე ვაპირებ ხელახლა განხორციელება რომ იმავე პროგრამით, 1957 01:37:54,450 --> 01:37:55,940 მაგრამ გამოყენებით სხვადასხვა შენება. 1958 01:37:55,940 --> 01:38:00,110 >> ნება მომეცით სწრაფად მისცეს თავს ხელმისაწვდომობა მოიცავს CS50.h 1959 01:38:00,110 --> 01:38:04,150 for CS50 ბიბლიოთეკა, სტანდარტული io.h printf. 1960 01:38:04,150 --> 01:38:06,510 მომეცი ჩემი int ძირითადი ბათილად. 1961 01:38:06,510 --> 01:38:09,310 და მერე აქ, ნება მომეცით წავიდეთ წინ და ამის გაკეთება. 1962 01:38:09,310 --> 01:38:12,010 >> Char c იღებს მიიღოს char, ისევე როგორც ადრე. 1963 01:38:12,010 --> 01:38:16,770 და მე ვაპირებ გამოიყენოთ ახალი შენება ახლა კი გადავიდეს, რა ხასიათი? 1964 01:38:16,770 --> 01:38:19,820 ასე რომ, switch არის სახის მოსწონს გადართვის მატარებელი სიმღერები. 1965 01:38:19,820 --> 01:38:22,070 და, მართლაც, ეს არის ერთგვარი თუ სხვაგან, თუ სხვაგან, თუ 1966 01:38:22,070 --> 01:38:23,980 მაგრამ წერილობითი გარკვეულწილად განსხვავებულად. 1967 01:38:23,980 --> 01:38:25,490 >> შეცვლა გამოიყურება. 1968 01:38:25,490 --> 01:38:29,060 თქვენ უნდა შეცვლა, და მერე რა ხასიათი და ნომერი გსურთ შევხედოთ, 1969 01:38:29,060 --> 01:38:32,000 მაშინ ზოგიერთი Curly braces მომწონს Scratch, უბრალოდ ამბობენ, ამისათვის პერსონალი. 1970 01:38:32,000 --> 01:38:33,480 და მაშინ თქვენ გაქვთ სხვადასხვა შემთხვევებში. 1971 01:38:33,480 --> 01:38:34,830 >> თქვენ არ გამოიყენონ, თუ სხვაგან. 1972 01:38:34,830 --> 01:38:37,050 თქვენ ფაქტიურად გამოიყენოს სიტყვა საქმე. 1973 01:38:37,050 --> 01:38:38,790 და ვიტყოდი, რაღაც მსგავსი. 1974 01:38:38,790 --> 01:38:43,820 >> ასე რომ, იმ შემთხვევაში, თუ ამას y, და იმ შემთხვევაში, თუ კაპიტალი Y, 1975 01:38:43,820 --> 01:38:47,350 წავიდეთ წინ და ამობეჭდოთ დიახ. 1976 01:38:47,350 --> 01:38:49,020 და შემდეგ შესვენება out შეცვლა. 1977 01:38:49,020 --> 01:38:49,580 ის არის. 1978 01:38:49,580 --> 01:38:50,880 ჩვენ გავაკეთეთ. 1979 01:38:50,880 --> 01:38:57,270 >> სხვაგან, თუ ასე ვთქვათ, ქვედა შემთხვევაში n, ან კაპიტალის N, 1980 01:38:57,270 --> 01:39:02,560 მაშინ წავიდეთ წინ და ბეჭდვითი out არსებობს და შემდეგ შესვენება. 1981 01:39:02,560 --> 01:39:08,022 Else-- და ამ სახის არის რა შემთხვევაში indeed-- printf შეცდომა 1982 01:39:08,022 --> 01:39:10,980 და მხოლოდ კარგი ღონისძიება, თუმცა ლოგიკურად ამ შესვენების არ არის საჭირო 1983 01:39:10,980 --> 01:39:12,896 იმიტომ, რომ ჩვენ ბოლოს შეცვლა მაინც, 1984 01:39:12,896 --> 01:39:14,520 მე ახლა არღვევს შეცვლა. 1985 01:39:14,520 --> 01:39:16,280 ასე რომ, ეს გამოიყურება ცოტა განსხვავებული. 1986 01:39:16,280 --> 01:39:18,272 >> მაგრამ, ლოგიკურად, ეს რეალურად არ ექვივალენტს. 1987 01:39:18,272 --> 01:39:19,980 და რატომ გამოვიყენოთ ერთი მეტი სხვა? 1988 01:39:19,980 --> 01:39:23,220 ზოგჯერ, უბრალოდ პირადი უპირატესობა, ზოგჯერ ესთეტიკას, 1989 01:39:23,220 --> 01:39:25,420 თუ მე ერთი შეხედვით ეს ახლა, რაღაც 1990 01:39:25,420 --> 01:39:27,510 უნდა ითქვას, რომ readability ეს კოდი. 1991 01:39:27,510 --> 01:39:30,690 ვგულისხმობ, არ ნიშნავს, რომ ამ კოდი არის ახალი, რომ ბევრი ჩვენგანი ოთახში. 1992 01:39:30,690 --> 01:39:33,515 >> მაგრამ ეს მხოლოდ სახის საკმაოდ. 1993 01:39:33,515 --> 01:39:37,760 ხედავთ ამას y, კაპიტალური Y, ქვედა შემთხვევაში n, დედაქალაქში N default, 1994 01:39:37,760 --> 01:39:40,150 ეს მხოლოდ სახის გადასვლა იმ თქვენ, ისე, 1995 01:39:40,150 --> 01:39:42,200 რომელიც, სავარაუდოდ, შესაძლოა წინა მაგალითად 1996 01:39:42,200 --> 01:39:45,780 ერთად ifs, და ვერტიკალური ბარები, და სხვაგან IFS, შესაძლოა, არ აქვს. 1997 01:39:45,780 --> 01:39:51,600 ასე რომ, ეს მართლაც საკითხია პირადი არჩევანი, ნამდვილად, ან readability, 1998 01:39:51,600 --> 01:39:52,360 კოდი. 1999 01:39:52,360 --> 01:39:58,230 >> მაგრამ იმ თვალსაზრისით, ფუნქციონალური, ნება მომეცით წავიდეთ წინ და შეცვლა, dot slash 2000 01:39:58,230 --> 01:40:05,830 შეცვლა და ახლა აკრიფოთ ამას y, დედაქალაქში Y, ამას n, კაპიტალური N, 2001 01:40:05,830 --> 01:40:09,250 დავით, გაიმეორეთ იმიტომ, რომ ის არა ერთი ხასიათი. 2002 01:40:09,250 --> 01:40:12,050 მოდით გავაკეთოთ x, შეცდომა, როგორც მოსალოდნელი იყო. 2003 01:40:12,050 --> 01:40:15,640 და, logically-- და ეს არის რაღაც მე მოგიწოდებთ in general-- კი 2004 01:40:15,640 --> 01:40:17,790 მიუხედავად იმისა, რომ ჩვენ მხოლოდ scratching ზედაპირზე ზოგიერთი ფუნქციები. 2005 01:40:17,790 --> 01:40:20,560 >> და ეს არ უნდა იყოს აშკარა, როდესაც თქვენ თავს დასხდნენ კლავიატურის, 2006 01:40:20,560 --> 01:40:21,370 როგორ მუშაობს? 2007 01:40:21,370 --> 01:40:22,240 რას გააკეთებს? 2008 01:40:22,240 --> 01:40:25,630 ლამაზი რამ, რომელსაც ნოუთბუქი, ან desktop, და ხელმისაწვდომობის 2009 01:40:25,630 --> 01:40:29,290 კომპიუტერი ერთად შემდგენელი, და კოდი რედაქტორი, როგორც ეს, 2010 01:40:29,290 --> 01:40:32,990 ეს შეგიძლიათ თითქმის ყოველთვის უპასუხოს ამ კითხვები საკუთარ თავს მხოლოდ ცდილობს. 2011 01:40:32,990 --> 01:40:36,570 >> მაგალითად, თუ რიტორიკული კითხვა ხელთ იყო, 2012 01:40:36,570 --> 01:40:39,540 რა მოხდება, თუ თქვენ დაგავიწყდებათ თქვენი შესვენების განცხადებები? 2013 01:40:39,540 --> 01:40:41,400 რომელიც რეალურად ძალიან გავრცელებული რამ უნდა გააკეთოს, 2014 01:40:41,400 --> 01:40:43,540 იმიტომ, რომ ეს არ გამოიყურება როგორც თქვენ ნამდვილად გვჭირდება. 2015 01:40:43,540 --> 01:40:46,790 ისინი ნამდვილად არ შეავსოთ თქვენი ეგონა მოსწონს ფრჩხილებში ან curly 2016 01:40:46,790 --> 01:40:47,714 გაუწიოს აკეთებს. 2017 01:40:47,714 --> 01:40:49,630 მოდით წავიდეთ წინ და recompile კოდი და ვნახოთ. 2018 01:40:49,630 --> 01:40:53,690 ასე რომ, შეცვლა, dot slash შეცვლა. 2019 01:40:53,690 --> 01:40:56,435 მოდით აკრიფოთ ქვედა შემთხვევაში y, ზედა შემთხვევაში, შეიტანეთ. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 ასე რომ, მე აკრეფილი y. 2022 01:41:00,700 --> 01:41:04,420 >> პროგრამა თქმით კი, არსებობს, შეცდომა, თითქოს ეს იყო იცვლება მისი გონება. 2023 01:41:04,420 --> 01:41:09,280 მაგრამ ეს სახის იყო, იმიტომ, რომ ის, რაც ხდება გადამრთველით არის პირველი შემთხვევა, რომ 2024 01:41:09,280 --> 01:41:13,899 მატჩი ნიშნავს, hey კომპიუტერი, შეასრულოს ყველა კოდი ქვეშ იგი. 2025 01:41:13,899 --> 01:41:16,690 და თუ არ ვთქვა შესვენების, ან არ ვამბობ, შესვენების და არ ვამბობ, შესვენების 2026 01:41:16,690 --> 01:41:19,540 კომპიუტერული აპირებს აფეთქება ყველა იმ ხაზები 2027 01:41:19,540 --> 01:41:22,779 და შეასრულოს ყველა მათგანი სანამ იგი იღებს, რომ curly გაუწიოს. 2028 01:41:22,779 --> 01:41:24,320 ასე რომ, მუხრუჭები, მართლაც, აუცილებელია. 2029 01:41:24,320 --> 01:41:27,120 მაგრამ takeaway აქ არის, როდესაც ეჭვი, ცდილობენ რაღაც. 2030 01:41:27,120 --> 01:41:29,510 იქნებ შეინახოთ თქვენი კოდი, პირველ რიგში, და გადარჩენა მას დამატებითი ფაილი 2031 01:41:29,510 --> 01:41:32,930 თუ თქვენ ნამდვილად აწუხებს ძვირფასი და რომელსაც ფეხზე 2032 01:41:32,930 --> 01:41:34,430 მუშაობა, რომ თქვენ იცით, მუშაობს. 2033 01:41:34,430 --> 01:41:35,410 >> მაგრამ ცდილობენ რამ. 2034 01:41:35,410 --> 01:41:38,074 და არ იქნება როგორც ეშინია, ალბათ, რა კომპიუტერი შეიძლება გავაკეთოთ, 2035 01:41:38,074 --> 01:41:39,490 ან, რომ თქვენ შეიძლება დაარღვიოს რაღაც. 2036 01:41:39,490 --> 01:41:42,790 თქვენ ყოველთვის შეგიძლიათ აღადგინოთ უკან ზოგიერთი ადრე ვერსია. 2037 01:41:42,790 --> 01:41:45,640 >> მოდით დასრულდება ეძებს დიზაინის კოდი. 2038 01:41:45,640 --> 01:41:49,020 ჩვენ გვაქვს ეს შესაძლებლობა ახლა დაწერა პირობები და ჩაწერის მარყუჟების, 2039 01:41:49,020 --> 01:41:50,850 და ცვლადები, და მოვუწოდებთ ფუნქციები. 2040 01:41:50,850 --> 01:41:54,590 ასე რომ, სიმართლე გითხრათ, ჩვენ სახის უკან სადაც ჩვენ ვიყავით, ერთი კვირის წინ, რომელზეც Scratch, 2041 01:41:54,590 --> 01:42:00,120 თუმცა ნაკლებად დამაჯერებელი ტექსტური გარემოს, ვიდრე Scratch საშუალებას აძლევს. 2042 01:42:00,120 --> 01:42:03,990 >> მაგრამ შეამჩნია, რამდენად სწრაფად ჩვენ შეიძინა რომ ლექსიკა, მაშინაც კი, თუ ის 2043 01:42:03,990 --> 01:42:07,570 აპირებს ცოტა ხნით ჩაიძიროს წელს, ასე რომ, ჩვენ შეგვიძლია ახლა გამოვიყენოთ ეს ლექსიკა 2044 01:42:07,570 --> 01:42:10,320 დაწერა უფრო საინტერესო პროგრამები. 2045 01:42:10,320 --> 01:42:12,940 და მოდით ბავშვის ნაბიჯი მიმართ, რომ ასეთია. 2046 01:42:12,940 --> 01:42:14,890 ნება მომეცით წავიდეთ წინ და შექმნა ახალი ფაილი აქ. 2047 01:42:14,890 --> 01:42:17,750 >> მე ვაპირებ მოვუწოდო ამ prototype.c და დანერგვა 2048 01:42:17,750 --> 01:42:20,954 პირველად, უნარი რათა საკუთარი ფუნქციები. 2049 01:42:20,954 --> 01:42:22,870 ზოგიერთი ალბათ გაკეთდეს ამ Scratch, 2050 01:42:22,870 --> 01:42:25,430 რომლის დროსაც თქვენ შეგიძლიათ შექმნათ თქვენი საკუთარი ბლოკები Scratch, 2051 01:42:25,430 --> 01:42:27,892 და შემდეგ გადაიტანეთ ისინი ადგილზე იქ, სადაც გსურთ in C. 2052 01:42:27,892 --> 01:42:30,100 და უმეტეს პროგრამირების ენებზე, შეგიძლიათ ზუსტად 2053 01:42:30,100 --> 01:42:33,580 that-- რათა საკუთარი ფუნქციები, თუ ისინი არ არსებობს. 2054 01:42:33,580 --> 01:42:38,660 >> ასე, მაგალითად, ნება მომეცით წავიდეთ წინ და მოიცავს CS50.h, და მოიცავს 2055 01:42:38,660 --> 01:42:43,110 სტანდარტული io.h, int ძირითადი ბათილად. 2056 01:42:43,110 --> 01:42:46,020 და ახლა ჩვენ გვაქვს ჩანაცვლების მზად ვართ წავიდეთ. 2057 01:42:46,020 --> 01:42:48,550 მე შენარჩუნება ბეჭდვა რამ როგორიცაა ხალხის სახელები დღეს. 2058 01:42:48,550 --> 01:42:51,910 და რომ გრძნობს მოსწონს არ იქნება ლამაზი თუ 2059 01:42:51,910 --> 01:42:53,936 იყო ფუნქცია მოუწოდა ბეჭდვითი სახელი? 2060 01:42:53,936 --> 01:42:55,060 მე არ უნდა გამოვიყენოთ printf. 2061 01:42:55,060 --> 01:42:56,976 მე არ უნდა გვახსოვდეს, ყველა ფორმატის კოდები. 2062 01:42:56,976 --> 01:43:00,050 რატომ არ, ან რატომ არ ვინმე ჩემს წინაშე, 2063 01:43:00,050 --> 01:43:02,980 შექმნა ფუნქცია მოუწოდა ბეჭდვითი სახელი, რომ გარკვეული სახელი, 2064 01:43:02,980 --> 01:43:03,980 უბრალოდ ბეჭდავს მას? 2065 01:43:03,980 --> 01:43:08,700 >> სხვა სიტყვებით, თუ ვიტყვი, hey, კომპიუტერი, მომეცი სიმებიანი 2066 01:43:08,700 --> 01:43:11,870 ეკითხება შესახებ ასეთი, მეშვეობით CS50 ის მიიღოს სიმებიანი ფუნქცია. 2067 01:43:11,870 --> 01:43:15,090 Hey, კომპიუტერი, დააყენა, რომ სიმებიანი ცვლადი მარცხენა მხარეს, 2068 01:43:15,090 --> 01:43:16,150 და მოვუწოდებთ მას s. 2069 01:43:16,150 --> 01:43:22,150 და მაშინ, hey კომპიუტერი, წავიდეთ წინ და ბეჭდვა, რომ პირის სახელი, გაკეთდეს. 2070 01:43:22,150 --> 01:43:26,240 >> ახლა, რომ კარგი იქნება, იმიტომ, რომ ეს პროგრამა, aptly დაასახელა, 2071 01:43:26,240 --> 01:43:29,170 მეუბნება რაც უნდა გააკეთოს გზით იმ ფუნქციის სახელები. 2072 01:43:29,170 --> 01:43:32,930 ნება მომეცით წავიდეთ და მიიღოს პროტოტიპი, შეიტანეთ. 2073 01:43:32,930 --> 01:43:34,930 და, სამწუხაროდ, ეს არ აპირებს დაფრინავენ. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, ხაზის 7, ხასიათი 5 შეცდომა, დაფარული დეკლარაცია 2075 01:43:39,430 --> 01:43:42,960 ფუნქცია ბეჭდვითი სახელი არასწორი C99, C99 2076 01:43:42,960 --> 01:43:45,130 რაც იმას ნიშნავს, მობილური C რომელიც გამოვიდა 1999 წელს. 2077 01:43:45,130 --> 01:43:45,730 სულ ეს არის. 2078 01:43:45,730 --> 01:43:48,780 >> ასე რომ, მე არ ვიცი, რა ყველა ეს იმას ნიშნავს, არ არის. 2079 01:43:48,780 --> 01:43:50,810 მაგრამ მე აღიაროს შეცდომა წითელი. 2080 01:43:50,810 --> 01:43:51,770 ეს არის საკმაოდ ნათელია. 2081 01:43:51,770 --> 01:43:53,769 >> და, როგორც ჩანს, რომ მწვანე ხასიათი აქ, 2082 01:43:53,769 --> 01:43:57,520 საკითხი არის ბეჭდვის სახელი, ღია paren s, close paren, ნახევრად მსხვილი ნაწლავის. 2083 01:43:57,520 --> 01:44:01,800 მაგრამ დაფარული დეკლარაცია ფუნქცია ჩვენ არ ვხედავთ მოკლედ ადრე. 2084 01:44:01,800 --> 01:44:04,880 ეს იმას ნიშნავს, უბრალოდ, რომ Clang არ ვიცი, რას ვგულისხმობ. 2085 01:44:04,880 --> 01:44:09,000 >> მე გამოიყენება ლექსიკონში სიტყვა, რომ ეს მინახავს ან უსწავლებიათ ადრე. 2086 01:44:09,000 --> 01:44:11,950 ასე რომ, მე უნდა ასწავლოს მას რა ამ ფუნქციის ნიშნავს. 2087 01:44:11,950 --> 01:44:13,590 ამიტომ, მე ვაპირებ წავიდეთ წინ და ამის გაკეთება. 2088 01:44:13,590 --> 01:44:17,970 >> მე ვაპირებ წავიდეთ წინ და განახორციელოს ჩემი საკუთარი ფუნქცია მოუწოდა Print სახელი. 2089 01:44:17,970 --> 01:44:24,720 და მე ვაპირებ ვთქვა, ასეთია, რომ ამას, printf, hello, პროცენტი 2090 01:44:24,720 --> 01:44:27,760 s, წარმატებული ო, სახელი, ნახევრად მსხვილი ნაწლავის. 2091 01:44:27,760 --> 01:44:29,250 ასე რომ, რა მე მხოლოდ ამის გაკეთება? 2092 01:44:29,250 --> 01:44:31,325 >> ასე რომ, თურმე, რომ განახორციელოს საკუთარი ფუნქცია, 2093 01:44:31,325 --> 01:44:33,845 ჩვენ სახის სესხება ზოგიერთი იგივე სტრუქტურა, როგორც მთავარი 2094 01:44:33,845 --> 01:44:35,720 რომ ვიყავით თავისთავად, და მე 2095 01:44:35,720 --> 01:44:37,730 ვიცი მხოლოდ კოპირება და pasting საკმაოდ ბევრი რა 2096 01:44:37,730 --> 01:44:39,170 მე უკვე წერდა წარსულში. 2097 01:44:39,170 --> 01:44:40,570 მაგრამ შეამჩნია ნიმუში აქ. 2098 01:44:40,570 --> 01:44:43,750 Int, მთავარი, ბათილად, ჩვენ აჯავრებენ გარდა სანამ ხანგრძლივი, რა, რომ ფაქტიურად ნიშნავს. 2099 01:44:43,750 --> 01:44:46,160 >> მაგრამ დღეს, მხოლოდ შეამჩნია პარალელიზმი. 2100 01:44:46,160 --> 01:44:48,210 Void, ბეჭდვითი სახელი, სიმებიანი სახელი, ასე რომ, 2101 01:44:48,210 --> 01:44:50,310 მეწამული სიტყვით, რომელიც ჩვენ ვაპირებთ, რომ დაიწყოს 2102 01:44:50,310 --> 01:44:54,067 მოუწოდებდა დაბრუნების ტიპის, სახელი ფუნქცია, და მაშინ შეყვანის. 2103 01:44:54,067 --> 01:44:56,400 ასე რომ, ფაქტობრივად, ჩვენ შეგვიძლია გამოიხადოს ამ სახის როგორც გასულ კვირას 2104 01:44:56,400 --> 01:44:59,030 როგორც, ეს არის სახელის ან ალგორითმი კოდი ჩვენ 2105 01:44:59,030 --> 01:45:00,761 აპირებს წერა ალგორითმი უდევს 2106 01:45:00,761 --> 01:45:02,010 კოდი ჩვენ ვაპირებთ დაწერა. 2107 01:45:02,010 --> 01:45:03,180 >> ეს არის მისი შეყვანის. 2108 01:45:03,180 --> 01:45:04,670 ეს არის მისი გამომუშავება. 2109 01:45:04,670 --> 01:45:08,730 ეს ფუნქცია, ბეჭდვითი სახელი, არის შექმნილია მიიღოს სიმებიანი მოუწოდა სახელი, 2110 01:45:08,730 --> 01:45:11,350 ან რასაც, როგორც შეყვანის და შემდეგ ბათილად. 2111 01:45:11,350 --> 01:45:13,904 ის არ დაბრუნდება არაფერი, როგორიცაა მიიღოს სიმებიანი ან int აკეთებს. 2112 01:45:13,904 --> 01:45:15,570 ასე რომ, ის აპირებს გადასცემს ჩემთვის რაღაც უკან. 2113 01:45:15,570 --> 01:45:17,960 უბრალოდ აპირებს გვერდითი ეფექტი, ასე ვთქვათ, 2114 01:45:17,960 --> 01:45:19,570 დაბეჭდვის პირის სახელი. 2115 01:45:19,570 --> 01:45:22,260 ასე რომ შეამჩნია, ხაზის 7, I შეგიძლიათ დარეკოთ ბეჭდვითი სახელი. 2116 01:45:22,260 --> 01:45:25,920 Line 10, მე შეიძლება განისაზღვროს ან განახორციელოს ბეჭდვითი სახელი. 2117 01:45:25,920 --> 01:45:28,450 მაგრამ, სამწუხაროდ, ეს არ არის საკმარისი. 2118 01:45:28,450 --> 01:45:31,230 >> ნება მომეცით წავიდეთ წინ და recompile ამ შემდეგ გადარჩენა. 2119 01:45:31,230 --> 01:45:33,910 Whoa, ახლა, მე გახადა უარესი, როგორც ჩანს. 2120 01:45:33,910 --> 01:45:37,027 ასე რომ, დაფარული დეკლარაცია ფუნქცია ბეჭდვითი სახელი არასწორია. 2121 01:45:37,027 --> 01:45:38,360 და კიდევ ერთხელ, იქ უფრო მეტი შეცდომები. 2122 01:45:38,360 --> 01:45:41,430 მაგრამ, როგორც მე გააფრთხილა ადრე, მაშინაც კი, თუ თქვენ გაქვთ overwhelmed ერთად, 2123 01:45:41,430 --> 01:45:44,850 და ცოტა სევდიანი, რომ ამდენი შეცდომები, ფოკუსირება მხოლოდ პირველი 2124 01:45:44,850 --> 01:45:47,500 თავდაპირველად, რადგან ეს შეიძლება მხოლოდ არ ჰქონდა კასკადური ეფექტი. 2125 01:45:47,500 --> 01:45:51,970 ასე რომ, C, ან Clang უფრო კონკრეტულად, ჯერ კიდევ არ აღიარებს ბეჭდვითი სახელი. 2126 01:45:51,970 --> 01:45:54,580 >> და ეს იმიტომ, Clang, დიზაინი, არის სახის მუნჯები. 2127 01:45:54,580 --> 01:45:56,280 ეს მხოლოდ იმას აკეთებს, რაც თქვენ ვუთხრა მას ამის გაკეთება. 2128 01:45:56,280 --> 01:46:00,950 და ეს მხოლოდ ასე იქცევა იმ მიზნით რომელშიც თქვენ ვუთხრა მას ამის გაკეთება. 2129 01:46:00,950 --> 01:46:05,270 >> ასე რომ, მე არ განისაზღვრება ძირითადი on line ოთხი, როგორც ჩვენ უკვე აკეთებს საკმაოდ ხშირად. 2130 01:46:05,270 --> 01:46:07,980 მე განისაზღვრება ბეჭდვითი სახელი on line 10. 2131 01:46:07,980 --> 01:46:11,793 მაგრამ ვცდილობ გამოყენება ბეჭდვითი სახელი on line შვიდი. 2132 01:46:11,793 --> 01:46:13,670 >> ეს ძალიან მალე, ჯერ არ არსებობს. 2133 01:46:13,670 --> 01:46:19,150 ასე რომ, მე შეიძლება იყოს ჭკვიანი, და მოსწონს, OK, მოდით უბრალოდ ითამაშოს გასწვრივ, 2134 01:46:19,150 --> 01:46:23,680 და გადაადგილება ბეჭდვითი სახელს აქ, და ხელახლა შედგენა. 2135 01:46:23,680 --> 01:46:24,550 ღმერთო ჩემო. 2136 01:46:24,550 --> 01:46:25,260 იგი მუშაობდა. 2137 01:46:25,260 --> 01:46:26,670 ეს იყო მარტივი, როგორც ეს. 2138 01:46:26,670 --> 01:46:28,120 >> მაგრამ ლოგიკა არის ზუსტად რომ. 2139 01:46:28,120 --> 01:46:30,870 თქვენ უნდა ასწავლოს Clang ის, რაც არის განსაზღვრის ფუნქცია პირველი. 2140 01:46:30,870 --> 01:46:31,920 ამის შემდეგ შეგიძლიათ გამოიყენოთ იგი. 2141 01:46:31,920 --> 01:46:33,940 მაგრამ, სიმართლე გითხრათ, ამ გრძნობს როგორიცაა მოლიპულ ფერდობზე. 2142 01:46:33,940 --> 01:46:35,773 >> ასე რომ, ყოველ ჯერზე მე აწარმოებს პრობლემას, მე მხოლოდ 2143 01:46:35,773 --> 01:46:39,450 აპირებს ხაზი გავუსვა და დააკოპირეთ კოდი მე დავწერე, დაჭრილი და ჩასვით აქ. 2144 01:46:39,450 --> 01:46:41,370 და, რა თქმა უნდა, ჩვენ შეგვიძლია contrive ზოგიერთი სცენარი 2145 01:46:41,370 --> 01:46:43,286 სადაც ერთი ფუნქცია შეიძლება უნდა მოვუწოდებთ სხვა. 2146 01:46:43,286 --> 01:46:46,030 და თქვენ უბრალოდ ვერ დააყენა ყველა ფუნქცია ზემოთ ყველა სხვა. 2147 01:46:46,030 --> 01:46:47,930 >> ასე რომ, ეს თურმე არსებობს უკეთესი. 2148 01:46:47,930 --> 01:46:50,100 შეგვიძლია დატოვეთ ეს იყოს. 2149 01:46:50,100 --> 01:46:53,677 და, სიმართლე გითხრათ, ეს ზოგადად კარგია, და მოსახერხებელი, და კარგი დიზაინი 2150 01:46:53,677 --> 01:46:56,760 იმისათვის, რომ მთავარი, პირველ რიგში, იმიტომ, რომ, კიდევ ერთხელ, მთავარი, ისევე, როგორც, როდესაც მწვანე დროშა დააწკაპებთ, 2151 01:46:56,760 --> 01:46:59,027 რომ არის ფუნქცია, რომელიც იღებს შესრულებული იყოს. 2152 01:46:59,027 --> 01:47:01,110 ასე, რომ თქვენ შეიძლება ასევე დააყენა მას ზედა ფაილი 2153 01:47:01,110 --> 01:47:03,560 ასე რომ, როდესაც თქვენ ან სხვა ადამიანის უყურებს ფაილი 2154 01:47:03,560 --> 01:47:06,360 თქვენ იცით, რა ხდება მხოლოდ კითხულობს მთავარ პირველი. 2155 01:47:06,360 --> 01:47:15,360 ასე რომ, თურმე, ჩვენ შეგვიძლია გითხრათ Clang აქტიურად, hey, Clang, on line ოთხი, 2156 01:47:15,360 --> 01:47:17,940 მე გპირდებით, რომ განახორციელოს ფუნქცია მოუწოდა Print 2157 01:47:17,940 --> 01:47:22,600 სახელი, რომელიც იღებს სიმებიანი მოუწოდა სახელი როგორც შეყვანის, და ბრუნდება არაფერი, ბათილად. 2158 01:47:22,600 --> 01:47:24,770 და მე გარშემო განხორციელების შემდეგ. 2159 01:47:24,770 --> 01:47:25,680 >> აქ მოდის მთავარი. 2160 01:47:25,680 --> 01:47:29,130 მთავარი ახლა on line 9 შეგიძლიათ გამოიყენოთ Print სახელი, რადგან Clang 2161 01:47:29,130 --> 01:47:32,600 არის ვაღიარებთ, რომ, საბოლოო ჯამში, ეს ექმნებათ განმარტება 2162 01:47:32,600 --> 01:47:34,880 განხორციელების Print სახელი. 2163 01:47:34,880 --> 01:47:37,390 ასე რომ, შემდეგ გადარჩენა ჩემი ფაილი, ნება მომეცით წავიდეთ წინ და მიიღოს პროტოტიპი, 2164 01:47:37,390 --> 01:47:38,498 კარგად გამოიყურება ამ დროს. 2165 01:47:38,498 --> 01:47:43,470 Dot ხაზი, პროტოტიპი, ნება მომეცით წავიდეთ წინ და ჩაწერეთ სახელი. 2166 01:47:43,470 --> 01:47:48,440 David, გამარჯობა დავით, Zamila, hello Zamila, და, მართლაც, ახლა ის მუშაობს. 2167 01:47:48,440 --> 01:47:52,200 >> ასე რომ, ნივთიერება, რომელიც აქ არის, რომ ჩვენ გააკეთა საბაჟო ფუნქცია, როგორიცაა საბაჟო 2168 01:47:52,200 --> 01:47:54,219 Scratch ბლოკი ჩვენ უწოდა. 2169 01:47:54,219 --> 01:47:57,010 მაგრამ განსხვავებით Scratch, სადაც შეგიძლიათ უბრალოდ შექმნათ და დაიწყოს მისი გამოყენება, 2170 01:47:57,010 --> 01:47:59,330 ახლა ჩვენ უნდა იყოს ცოტა მეტი pedantic, 2171 01:47:59,330 --> 01:48:03,410 და რეალურად მოამზადებენ Clang გამოყენება, ან ველოდებით მას. 2172 01:48:03,410 --> 01:48:09,140 ახლა, როგორც განზე, ამიტომ ყველა ეს დრო უნდა ჩვენ უკვე უბრალოდ ბრმად რწმენა, მათ შორის 2173 01:48:09,140 --> 01:48:12,170 CS50.h, და მათ შორის სტანდარტული io.h? 2174 01:48:12,170 --> 01:48:15,190 >> ისე, თურმე, მათ შორის რამდენიმე სხვა რამ, 2175 01:48:15,190 --> 01:48:18,550 ყველა, რომ იმ dot h ფაილი, რომელიც არ უნდა იყოს, ფაილი. 2176 01:48:18,550 --> 01:48:20,460 ისინი header ფაილი, ასე ვთქვათ. 2177 01:48:20,460 --> 01:48:23,270 ისინი ჯერ კიდევ დაწერილი C. მაგრამ ისინი სხვადასხვა ტიპის ფაილი. 2178 01:48:23,270 --> 01:48:28,690 >> ახლა, თქვენ საკმაოდ ბევრი ვივარაუდოთ, რომ ყველა, რომ არის შიგნით CS50.h 2179 01:48:28,690 --> 01:48:33,360 რამდენიმე ერთი სამგზავრო, როგორც ეს, არ ფუნქციები მოუწოდა Print სახელი, 2180 01:48:33,360 --> 01:48:36,840 მაგრამ სიმებიანი, ოჯახის Float და რამდენიმე სხვა. 2181 01:48:36,840 --> 01:48:41,510 და არსებობს მსგავსი პროტოტიპები, ერთი სამგზავრო, შიგნით სტანდარტული io.h 2182 01:48:41,510 --> 01:48:46,241 for printf, რომელიც ახლა ჩემი საკუთარი Print სახელი ფუნქცია. 2183 01:48:46,241 --> 01:48:49,490 ასე რომ, სხვა სიტყვებით, მთელი ამ ხნის ჩვენ უბრალოდ ბრმად კოპირება და pasting 2184 01:48:49,490 --> 01:48:51,780 მოიცავს ამ, მოიცავს რომ ის, რაც ხდება? 2185 01:48:51,780 --> 01:48:55,310 ეს არის მხოლოდ სახის clues to Clang, თუ რა ფუნქციები 2186 01:48:55,310 --> 01:49:00,170 არიან, მართლაც, განხორციელდა, მხოლოდ სხვაგან სხვადასხვა ფაილები 2187 01:49:00,170 --> 01:49:02,440 სხვაგან სისტემა. 2188 01:49:02,440 --> 01:49:05,160 >> ასე რომ, ჩვენ განხორციელებული ბეჭდვითი სახელი. 2189 01:49:05,160 --> 01:49:07,910 მას აქვს ეს გვერდითი ეფექტი ბეჭდვა რაღაც ეკრანზე. 2190 01:49:07,910 --> 01:49:10,170 მაგრამ ეს იმას არ რეალურად გადასცემს ჩემთვის რაღაც უკან. 2191 01:49:10,170 --> 01:49:12,200 როგორ წავიდეთ შესახებ ახორციელებს პროგრამას, რომელიც 2192 01:49:12,200 --> 01:49:14,510 ამჯამად გადასცემს ჩემთვის რაღაც უკან? 2193 01:49:14,510 --> 01:49:15,580 >> ისე, მოდით ცდილობენ. 2194 01:49:15,580 --> 01:49:21,360 ნება მომეცით წავიდეთ წინ და განახორციელოს ფაილი სახელად return.c 2195 01:49:21,360 --> 01:49:24,530 ასე რომ ჩვენ შეგვიძლია ვაჩვენოთ, თუ როგორ რაღაც როგორიცაა მიიღეთ სიმებიანი, ან int, 2196 01:49:24,530 --> 01:49:27,340 რეალურად დაბრუნების რაღაც თავში შესახებ. 2197 01:49:27,340 --> 01:49:29,840 მოდით წავიდეთ წინ და განსაზღვროს int ძირითადი ბათილად. 2198 01:49:29,840 --> 01:49:33,230 >> და კიდევ ერთხელ, მომავალში, ჩვენ ახსნას რა, რომ int და რომ ბათილად 2199 01:49:33,230 --> 01:49:34,090 რეალურად აკეთებს. 2200 01:49:34,090 --> 01:49:35,840 მაგრამ დღეს, ჩვენ მას მიანიჭა. 2201 01:49:35,840 --> 01:49:39,970 მე ვაპირებ წავიდეთ წინ და printf, კარგი მომხმარებლის, გამოცდილება, x არის. 2202 01:49:39,970 --> 01:49:44,360 და შემდეგ მე ვაპირებ დაველოდოთ შესახებ მომეცი x ერთად მისაღებად int. 2203 01:49:44,360 --> 01:49:48,459 >> და შემდეგ მე ვაპირებ წავიდეთ წინ და ამობეჭდოთ x მოედანზე. 2204 01:49:48,459 --> 01:49:50,500 ასე რომ, როდესაც თქვენ მხოლოდ კლავიატურის, ადამიანი ხშირად 2205 01:49:50,500 --> 01:49:52,600 გამოიყენოთ პატარა სტაფილოს სიმბოლო კლავიატურაზე 2206 01:49:52,600 --> 01:49:55,330 წარმოადგენს ძალა ან მაჩვენებლებით. 2207 01:49:55,330 --> 01:49:58,960 ასე რომ x კვადრატი იმყოფება i. 2208 01:49:58,960 --> 01:50:00,660 >> და ახლა მე ვაპირებ ამის გაკეთება. 2209 01:50:00,660 --> 01:50:03,940 მე შეიძლება მხოლოდ გავაკეთოთ რა არის x კვადრატში? x კვადრატი x * x. 2210 01:50:03,940 --> 01:50:06,690 >> და ჩვენ ეს რაღაც ხნის ​​წინ, უკვე დღეს. 2211 01:50:06,690 --> 01:50:08,730 ეს არ იგრძნონ ყველა რომ ბევრი მიმდინარეობს. 2212 01:50:08,730 --> 01:50:09,570 იცი რაა? 2213 01:50:09,570 --> 01:50:13,100 მოდით ბერკეტები ზოგიერთი რომ იდეა ბოლო დროს აბსტრაქცია. 2214 01:50:13,100 --> 01:50:16,080 >> თუ არ იქნება ლამაზი, თუ არსებობს ფუნქცია მოუწოდა 2215 01:50:16,080 --> 01:50:18,460 მოედანზე, ზუსტად რომ? 2216 01:50:18,460 --> 01:50:20,640 ეს მაინც, ბოლოს დღეს, იგივეს მათემატიკის. 2217 01:50:20,640 --> 01:50:22,410 მაგრამ მოდით აბსტრაქტული მოშორებით იდეა აღების 2218 01:50:22,410 --> 01:50:25,280 ერთი ნომერი მრავლდება კიდევ ერთი, და მხოლოდ მისთვის სახელი, 2219 01:50:25,280 --> 01:50:27,360 როგორც კვადრატული მნიშვნელობა. 2220 01:50:27,360 --> 01:50:29,560 >> და, სხვა სიტყვებით, C, მოდით შევქმნათ ფუნქცია 2221 01:50:29,560 --> 01:50:32,660 მოუწოდა მოედანზე, რომ ზუსტად რომ. 2222 01:50:32,660 --> 01:50:34,600 ეს იქნება მოუწოდა მოედანზე. 2223 01:50:34,600 --> 01:50:35,790 იგი აპირებს მიიღოს int. 2224 01:50:35,790 --> 01:50:37,820 და ჩვენ უბრალოდ ძალიან ეძახით n, by default. 2225 01:50:37,820 --> 01:50:39,403 >> მაგრამ ჩვენ შეგვიძლია ეძახით არაფერი გვინდა. 2226 01:50:39,403 --> 01:50:42,900 და ყველა, რომ ის აპირებს ამის გაკეთება, ფაქტიურად, არის დაბრუნება 2227 01:50:42,900 --> 01:50:45,810 შედეგი ო ჯერ n. 2228 01:50:45,810 --> 01:50:48,980 არამედ იმიტომ, რომ ეს არის დაბრუნების რაღაც, რაც 2229 01:50:48,980 --> 01:50:53,690 არის სიტყვით purple ჩვენ არასოდეს მინახავს ადრე, I, on line 11, 2230 01:50:53,690 --> 01:50:55,410 ვერ ვიტყვით ბათილად ამ დროს. 2231 01:50:55,410 --> 01:51:01,320 >> Void, რომ მაგალითად ჩვენ ვნახეთ საკმაოდ ბეჭდვითი სახელი, მხოლოდ იმას ნიშნავს, 2232 01:51:01,320 --> 01:51:02,190 გააკეთე რამე. 2233 01:51:02,190 --> 01:51:04,170 მაგრამ არ გადასცემს ჩემთვის რაღაც უკან. 2234 01:51:04,170 --> 01:51:06,790 ამ შემთხვევაში, მე არ მინდა დაბრუნებას N ჯერ N, 2235 01:51:06,790 --> 01:51:08,460 და რასაც არ არის, რომ ნომერი. 2236 01:51:08,460 --> 01:51:12,460 >> ასე რომ, მე ვერ ვიტყვი, hey, კომპიუტერი, მე დაბრუნებას არაფერი, ბათილად. 2237 01:51:12,460 --> 01:51:16,166 ეს დაბრუნებას აპირებს, ბუნებით, int. 2238 01:51:16,166 --> 01:51:17,790 და ისე, რომ ყველაფერი, რაც ხდება აქ. 2239 01:51:17,790 --> 01:51:20,070 >> შეყვანის მოედანზე იქნება int. 2240 01:51:20,070 --> 01:51:24,760 ასე რომ, ჩვენ შეგვიძლია გამოვიყენოთ, მას აქვს აქვს სახელი, N. იგი აპირებს გამომავალი 2241 01:51:24,760 --> 01:51:26,240 int, რომ არ უნდა სახელი. 2242 01:51:26,240 --> 01:51:29,590 ჩვენ შეგვიძლია დატოვოს ის ძირითადი, ან ვინც არის გამოყენებით ჩემთან უნდა გვახსოვდეს ეს მნიშვნელობა, თუ ჩვენ 2243 01:51:29,590 --> 01:51:31,120 გსურთ საკუთარი ცვლადი. 2244 01:51:31,120 --> 01:51:33,230 >> და, კიდევ ერთხელ, მხოლოდ ახალი სიტყვით აქ არის დაბრუნება. 2245 01:51:33,230 --> 01:51:34,480 და მე უბრალოდ აკეთებს რამდენიმე მათემატიკის. 2246 01:51:34,480 --> 01:51:41,825 თუ მართლა მინდოდა, რომ საჭირო არ არის, მე ვერ ვიტყვი, int პროდუქტი იღებს N ჯერ N. 2247 01:51:41,825 --> 01:51:44,170 >> და მაშინ მე ვერ ამბობენ, დაბრუნება პროდუქტი. 2248 01:51:44,170 --> 01:51:47,360 მაგრამ, ერთხელ, ჩემი აზრით ადრე ეს უბრალოდ არ არის, რომ კარგი design-- 2249 01:51:47,360 --> 01:51:50,060 , რატომ გააცნობს სახელი, სიმბოლო, როგორც პროდუქტი, 2250 01:51:50,060 --> 01:51:51,570 მხოლოდ დაუყოვნებლივ დაბრუნება? 2251 01:51:51,570 --> 01:51:53,670 ეს ცოტა სუფთა, ცოტა უფრო მჭიდრო, ასე რომ, 2252 01:51:53,670 --> 01:51:59,380 ვთქვათ, უბრალოდ ვთქვა დაბრუნებას n ჯერ n, თავი დაეღწია ამ ხაზი საერთოდ. 2253 01:51:59,380 --> 01:52:02,860 >> და ეს მხოლოდ ნაკლებად კოდი წავიკითხე, ნაკლები შანსი შეცდომები. 2254 01:52:02,860 --> 01:52:05,180 მოდით ვნახოთ, თუ ეს რეალურად მუშაობს. 2255 01:52:05,180 --> 01:52:09,380 ახლა, მე ვაპირებ წასვლა წინ და უკან დაბრუნება. 2256 01:52:09,380 --> 01:52:11,460 >> უი, დაფარული დეკლარაცია ფუნქცია. 2257 01:52:11,460 --> 01:52:14,080 მე ეს შეცდომა ადრე, არ არის დიდი გარიგება. 2258 01:52:14,080 --> 01:52:18,950 ნება მომეცით, უბრალოდ აკრიფოთ, ან ხაზი გავუსვა და ასლი, ზუსტად იგივე ფუნქცია პროტოტიპი, 2259 01:52:18,950 --> 01:52:21,342 ხელმოწერა, ფუნქცია აქ. 2260 01:52:21,342 --> 01:52:22,800 ან მე ვერ გადავა მთელი ფუნქცია. 2261 01:52:22,800 --> 01:52:23,841 >> მაგრამ ეს, ცოტა ზარმაცი. 2262 01:52:23,841 --> 01:52:24,870 ასე რომ, ჩვენ არ გაგვაჩნია. 2263 01:52:24,870 --> 01:52:27,960 ნება მომეცით, რათა სანაცვლოდ ერთხელ, dot ხაზი დაბრუნებას. 2264 01:52:27,960 --> 01:52:32,790 >> x არის 2. x კვადრატი არის 4. x 3. x კვადრატი არის 9. 2265 01:52:32,790 --> 01:52:35,300 და ფუნქცია, როგორც ჩანს, ახლა უნდა მუშაობა. 2266 01:52:35,300 --> 01:52:36,550 ასე რომ, რა არის განსხვავება აქ? 2267 01:52:36,550 --> 01:52:42,520 მაქვს ფუნქცია, ე.წ. მოედანზე, ამ შემთხვევაში, რომელიც მე დააყენა შეყვანა. 2268 01:52:42,520 --> 01:52:43,830 და არ დავიბრუნებ გამომუშავება. 2269 01:52:43,830 --> 01:52:46,210 და კიდევ, ადრე, თუ გავხსნა მეორე მაგალითი 2270 01:52:46,210 --> 01:52:51,640 ადრე, რომელიც ეწოდა prototype.c, 2271 01:52:51,640 --> 01:52:54,770 მე მქონდა ბეჭდვითი სახელი, რომელიც დაბრუნდა ბათილად, ასე ვთქვათ, 2272 01:52:54,770 --> 01:52:58,730 და იგი დაბრუნდა არაფერი, და უბრალოდ ჰქონდა გვერდითი ეფექტი. 2273 01:52:58,730 --> 01:53:00,230 >> ასე რომ, რა ხდება აქ? 2274 01:53:00,230 --> 01:53:03,520 განვიხილოთ ფუნქცია სიმებიანი მხოლოდ ერთი წუთით. 2275 01:53:03,520 --> 01:53:06,570 ჩვენ უკვე გამოყენებით ფუნქცია სიმებიანი შემდეგ გზა. 2276 01:53:06,570 --> 01:53:10,464 >> ჩვენ გვქონდა ფუნქცია მისაღებად სიმებიანი, როგორიცაა მოიცავს CS50.h, 2277 01:53:10,464 --> 01:53:16,624 მოიცავს სტანდარტული io.h, int, მთავარი, ბათილად. 2278 01:53:16,624 --> 01:53:18,790 და შემდეგ ყოველ ჯერზე მე მოუწოდა მიიღოს სიმებიანი დღემდე, 2279 01:53:18,790 --> 01:53:23,260 მე განაცხადა, რაღაც, string s იღებს მიიღოს სიმებიანი, რადგან მისაღებად სიმებიანი 2280 01:53:23,260 --> 01:53:27,880 მოდით მოვუწოდებთ ამ get.c-- მიიღოს სიმებიანი თავად დააბრუნებს სიმებიანი რომ მე მაშინ 2281 01:53:27,880 --> 01:53:32,050 გამოყენება, და აცხადებენ, მძიმით, პროცენტს s, წარმატებული ო, s. 2282 01:53:32,050 --> 01:53:35,660 >> ასე რომ, ეს არის იგივე, მაგალითად, მართლაც, რომ ჩვენ გვქონდა ადრე. 2283 01:53:35,660 --> 01:53:37,920 ასე რომ სიმებიანი ბრუნდება მნიშვნელობა. 2284 01:53:37,920 --> 01:53:41,260 მაგრამ ერთი წუთით წინ, ბეჭდვითი string არ დაბრუნდება მნიშვნელობა. 2285 01:53:41,260 --> 01:53:42,721 ეს უბრალოდ გვერდითი ეფექტი. 2286 01:53:42,721 --> 01:53:44,220 ასე რომ, ეს არის ფუნდამენტური განსხვავება. 2287 01:53:44,220 --> 01:53:46,710 ჩვენ ვნახეთ სხვადასხვა სახის ფუნქციებს ახლა, 2288 01:53:46,710 --> 01:53:49,490 რომელთა დაბრუნდა ღირებულებები, რომელთაგან ზოგიერთი არ. 2289 01:53:49,490 --> 01:53:51,890 ასე რომ, შესაძლოა, ეს ტექსტი, ან int, ან float. 2290 01:53:51,890 --> 01:53:53,480 ან იქნებ ეს მხოლოდ ბათილად. 2291 01:53:53,480 --> 01:53:55,710 >> და განსხვავება არის რომ ამ ფუნქციები, 2292 01:53:55,710 --> 01:53:59,940 მონაცემების მისაღებად და დაბრუნდება მნიშვნელობა, ფაქტობრივად, შემოტანა რაღაც უკან მაგიდასთან, 2293 01:53:59,940 --> 01:54:01,110 ასე ვთქვათ. 2294 01:54:01,110 --> 01:54:03,710 მოდით წავიდეთ წინ და შეხედეთ ერთი საბოლოო ნაკრები 2295 01:54:03,710 --> 01:54:09,129 მაგალითები, რომ აძლევს გრძნობა, ახლა, როგორ შეიძლება, მართლაც, აბსტრაქტული უკეთესი, 2296 01:54:09,129 --> 01:54:11,670 და უკეთესი და უკეთესი, ან მეტი, და სულ უფრო და უფრო, რათა 2297 01:54:11,670 --> 01:54:13,810 დაწერა, საბოლოო ჯამში, უკეთესი კოდი. 2298 01:54:13,810 --> 01:54:16,860 მოდით წავიდეთ წინ და სული of Scratch, ამის შემდეგ. 2299 01:54:16,860 --> 01:54:21,700 >> ნება მომეცით წავიდეთ წინ და მოიცავს CS50.h და სტანდარტული io.h. 2300 01:54:21,700 --> 01:54:24,010 ნება მომეცით წავიდეთ წინ და მისცეს თავს int, მთავარი, ბათილად. 2301 01:54:24,010 --> 01:54:27,380 და ნება მომეცით წავიდეთ წინ, დარეკეთ ამ cough.c. 2302 01:54:27,380 --> 01:54:35,510 >> და ნება მომეცით წავიდეთ წინ და მხოლოდ როგორც Scratch, ამობეჭდოთ ხველა / ნ. 2303 01:54:35,510 --> 01:54:37,170 და მე მინდა, რომ ამის გაკეთება სამჯერ. 2304 01:54:37,170 --> 01:54:39,670 ასე რომ, მე, რა თქმა უნდა, უბრალოდ აპირებს დააკოპირეთ და ჩასვით სამჯერ. 2305 01:54:39,670 --> 01:54:46,440 მე ახლა აპირებს, რათა ხველა dot slash ხველა. 2306 01:54:46,440 --> 01:54:50,120 მოდით, თავს ცოტა მეტი ოთახი აქ, შეიყვანეთ, ხველა, ხველა, ხველა. 2307 01:54:50,120 --> 01:54:53,970 >> იქ, ცხადია, უკვე შესაძლებლობა გაუმჯობესებას. 2308 01:54:53,970 --> 01:54:55,679 მე გადაწერა და გაკრული რამდენჯერმე დღეს. 2309 01:54:55,679 --> 01:54:58,261 მაგრამ ეს იყო მხოლოდ მე არ უნდა აკრიფოთ როგორც ბევრი სიმბოლოები. 2310 01:54:58,261 --> 01:55:00,250 მე მაინც შეცვალა იმ ხაზების კოდი არიან. 2311 01:55:00,250 --> 01:55:04,240 >> ამ სამი ხაზები იდენტურია, რომელიც გრძნობს ზარმაცი და მართლაც არის, 2312 01:55:04,240 --> 01:55:07,110 და ალბათ, არ არის სწორი მიდგომა. 2313 01:55:07,110 --> 01:55:11,029 ასე რომ, რა ნივთიერება შეიძლება გაუმჯობესდეს ეს კოდი? 2314 01:55:11,029 --> 01:55:12,570 ჩვენ არ უნდა დააკოპირეთ და ჩასვით კოდი. 2315 01:55:12,570 --> 01:55:15,070 >> და, მართლაც, ნებისმიერ დროს გრძნობთ თავის კოპირება და pasting, 2316 01:55:15,070 --> 01:55:17,700 და კი არ იცვლება კოდი, შანსი არსებობს უკეთესი გზა. 2317 01:55:17,700 --> 01:55:19,470 და, მართლაც, არ არსებობს. 2318 01:55:19,470 --> 01:55:22,510 ნება მომეცით წავიდეთ წინ და ნუ ამისთვის მარყუჟის, მიუხედავად იმისა, რომ სინტაქსი არ შეიძლება 2319 01:55:22,510 --> 01:55:24,570 მოდის, ბუნებრივია, არ არის. 2320 01:55:24,570 --> 01:55:29,494 >> ამისათვის სამჯერ, უბრალოდ ამით ასეთია 2321 01:55:29,494 --> 01:55:31,160 და მე არ უნდა იცოდეს, ეს პრაქტიკა. 2322 01:55:31,160 --> 01:55:32,810 მაგრამ ჩვენ გვაქვს მთელი რიგი მაგალითები ახლა. 2323 01:55:32,810 --> 01:55:34,950 და დაინახავთ ონლაინ მეტი ცნობას მაინც. 2324 01:55:34,950 --> 01:55:37,790 >> ეს არის სინტაქსი on line 6, რომელიც ჰგავს Scratch რომ იმეორებს 2325 01:55:37,790 --> 01:55:40,090 ბლოკი, ვიმეორებ, შემდეგ სამჯერ. 2326 01:55:40,090 --> 01:55:41,340 ეს არის პატარა ჯადოსნური ახლა. 2327 01:55:41,340 --> 01:55:43,050 მაგრამ ეს უფრო, და უფრო იცნობს. 2328 01:55:43,050 --> 01:55:45,050 >> და ის აპირებს გაიმეოროს ხაზის რვა სამჯერ, 2329 01:55:45,050 --> 01:55:52,390 ასე რომ, თუ მე ხელახლა შედგენა make ხველა, dot slash ხველა, ხველა, ხველა, ხველა. 2330 01:55:52,390 --> 01:55:54,030 ეს ჯერ კიდევ მუშაობს იგივე გზით. 2331 01:55:54,030 --> 01:55:55,550 ასე რომ, ყველა კარგი და კეთილი. 2332 01:55:55,550 --> 01:55:58,200 მაგრამ ეს არ არის ძალიან ამოღებული. 2333 01:55:58,200 --> 01:55:59,371 >> ეს შესანიშნავად სწორი. 2334 01:55:59,371 --> 01:56:01,370 მაგრამ ეს იგრძნობა არსებობს შეიძლება იყოს შესაძლებლობა, 2335 01:56:01,370 --> 01:56:03,750 როგორც მსოფლიოში Scratch, რომ სახის დაწყება 2336 01:56:03,750 --> 01:56:07,530 რომ დაამატოთ ზოგიერთი სემანტიკა აქ, ასე რომ მე არ მხოლოდ გარკვეული მარყუჟის, 2337 01:56:07,530 --> 01:56:09,867 და ფუნქცია, რომელიც ამბობს, ხველა, ან საერთოდ ხველა. 2338 01:56:09,867 --> 01:56:10,450 იცი რაა? 2339 01:56:10,450 --> 01:56:12,620 ნება მომეცით ცდილობენ იყოს პატარა ქულერი, ვიდრე, 2340 01:56:12,620 --> 01:56:16,090 და რეალურად დაწერეთ ფუნქცია, რომელიც აქვს გვერდითი მოვლენები, მას ხველა. 2341 01:56:16,090 --> 01:56:20,830 >> და სჭირდება შეყვანის და ბრუნდება არ ღირებულება როგორც გამომავალი. 2342 01:56:20,830 --> 01:56:22,680 მაგრამ თქვენ იცით, რას აკეთებს? 2343 01:56:22,680 --> 01:56:29,370 ეს აკეთებს ამას printf, ციტირებით unquote, ხველა. 2344 01:56:29,370 --> 01:56:32,380 >> და ახლა, აქ, მე ვაპირებ წავიდეთ წინ და int, 2345 01:56:32,380 --> 01:56:36,070 i იღებს ნულოვანი, მე არანაკლებ 3, i plus plus. 2346 01:56:36,070 --> 01:56:39,770 მე ვაპირებ ამის გაკეთება არ printf, რომელიც სავარაუდოდ დაბალი დონეზე განხორციელების 2347 01:56:39,770 --> 01:56:40,270 დეტალურად. 2348 01:56:40,270 --> 01:56:41,353 მე არ მაინტერესებს, როგორ ხველა. 2349 01:56:41,353 --> 01:56:43,240 მე უბრალოდ მინდა გამოიყენოთ ხველა ფუნქცია. 2350 01:56:43,240 --> 01:56:44,840 და მე უბრალოდ ვაპირებ მოვუწოდო ხველა. 2351 01:56:44,840 --> 01:56:46,204 >> ახლა, დიქოტომია. 2352 01:56:46,204 --> 01:56:49,370 როცა რეკავთ ფუნქცია, თუ არ მინდა ეს საშუალებებით, სრულიად ჯარიმა. 2353 01:56:49,370 --> 01:56:51,780 მხოლოდ ამის ღია paren ახლოს, paren, და თქვენ კეთდება. 2354 01:56:51,780 --> 01:56:56,271 >> როდესაც თქვენ განსაზღვრავს ფუნქცია, ან განაცხადოს ფუნქციის პროტოტიპი, 2355 01:56:56,271 --> 01:56:58,770 თუ იცით წინასწარ, რომ ეს არ აპირებს მიიღოს ნებისმიერი არგუმენტაცია, 2356 01:56:58,770 --> 01:57:01,170 ამბობენ, ბათილად იმ ფრჩხილებში არსებობს. 2357 01:57:01,170 --> 01:57:05,660 და, რაც გარკვეული, რომ თქვენ არ შემთხვევით არასწორად იყენებს მას. 2358 01:57:05,660 --> 01:57:07,020 ნება მომეცით წავიდეთ წინ და ხველა. 2359 01:57:07,020 --> 01:57:08,540 და, რა თქმა უნდა, მე შეცდომა დაუშვა. 2360 01:57:08,540 --> 01:57:10,410 >> Dammit, იქ რომ დაფარული დეკლარაცია. 2361 01:57:10,410 --> 01:57:11,325 მაგრამ ეს ჯარიმა. 2362 01:57:11,325 --> 01:57:12,590 ეს ადვილი სარემონტო. 2363 01:57:12,590 --> 01:57:18,240 მე უბრალოდ უნდა პროტოტიპი უმაღლესი ჩემი ფაილი, ვიდრე მე რეალურად გამოყენება. 2364 01:57:18,240 --> 01:57:20,070 >> ასე რომ, ახლა ნება მომეცით ხველა ერთხელ, ლამაზი. 2365 01:57:20,070 --> 01:57:20,790 ახლა, მუშაობს. 2366 01:57:20,790 --> 01:57:22,930 ჩადება ხველა, ხველა, ხველა, ხველა. 2367 01:57:22,930 --> 01:57:25,930 ასე, რომ თქვენ ალბათ ფიქრობთ, რომ ჩვენ ნამდვილად უბრალოდ მეტი საინჟინრო ეს პრობლემა. 2368 01:57:25,930 --> 01:57:26,763 და, მართლაც, ჩვენ ვართ. 2369 01:57:26,763 --> 01:57:28,870 ეს არ არის კარგი კანდიდატი პროგრამა 2370 01:57:28,870 --> 01:57:31,930 მომენტისათვის Refactoring და აკეთებს რა 2371 01:57:31,930 --> 01:57:35,645 მოუწოდა იერარქიული რღვევა, სადაც თქვენ მიიღოს რაღაც კოდი, და შემდეგ 2372 01:57:35,645 --> 01:57:38,790 თქვენ სახის ფაქტორი რამ, ისე, რომ ანიჭებს უფრო სემანტიკა მათ, 2373 01:57:38,790 --> 01:57:40,930 და reuse ეს, საბოლოო ჯამში, გრძელვადიან პერსპექტივაში. 2374 01:57:40,930 --> 01:57:43,490 მაგრამ ეს შენობა ბლოკი მიმართ უფრო დახვეწილი პროგრამები 2375 01:57:43,490 --> 01:57:45,600 რომ ჩვენ დაიწყება წერა ადრე ხანგრძლივი, რომ 2376 01:57:45,600 --> 01:57:50,090 საშუალებას გვაძლევს, ლექსიკა , რომლის დაწერა უკეთესი კოდი. 2377 01:57:50,090 --> 01:57:52,920 და, მართლაც, ვნახოთ, თუ ჩვენ ვერ განზოგადება ამ შემდგომი. 2378 01:57:52,920 --> 01:57:57,984 >> როგორც ჩანს, პატარა კოჭლი რომ მე, ძირითად, არ უნდა ფიქრი, ეს darn მარყუჟის, 2379 01:57:57,984 --> 01:57:59,400 და მოუწოდებს ხველა ისევ და ისევ. 2380 01:57:59,400 --> 01:58:03,050 რატომ არ შეიძლება მე უბრალოდ ვუთხრა ხველა, გთხოვთ ხველა სამჯერ? 2381 01:58:03,050 --> 01:58:08,170 სხვა სიტყვებით, რატომ არ შეიძლება, უბრალოდ მისცეს შეყვანის ხველა და ამის გაკეთება? 2382 01:58:08,170 --> 01:58:11,270 >> რატომ არ შეიძლება მე უბრალოდ ვამბობ, მთავარი ხველა სამჯერ. 2383 01:58:11,270 --> 01:58:13,150 და ახლა, ეს არის ერთგვარი ჯადოსნური. 2384 01:58:13,150 --> 01:58:14,540 ეს არის ძალიან განმეორებითი აქ. 2385 01:58:14,540 --> 01:58:15,940 და ეს, რა თქმა უნდა, ბავშვი ნაბიჯი. 2386 01:58:15,940 --> 01:58:19,250 >> მაგრამ მხოლოდ უნარი ვთქვა ხაზის რვა, ხველა სამჯერ, 2387 01:58:19,250 --> 01:58:20,730 ეს, უბრალოდ, ასე უფრო მეტი იკითხება. 2388 01:58:20,730 --> 01:58:24,210 და, ასევე, მე არ უნდა იცოდეს და მაინტერესებს, როგორ ხველა ხორციელდება. 2389 01:58:24,210 --> 01:58:26,460 და, მართლაც, მოგვიანებით ტერმინი და საბოლოო პროექტები, 2390 01:58:26,460 --> 01:58:29,150 თუ დაძლევის პროექტი კლასელი ან ორი თანაკლასელები, 2391 01:58:29,150 --> 01:58:32,370 თქვენ გააცნობიეროს, რომ თქვენ აპირებს უნდა, ან გსურთ, გაყოფა მუშაობა. 2392 01:58:32,370 --> 01:58:34,650 >> და თქვენ აპირებს მინდა გადასაწყვეტია წინასწარ, ვინც აპირებს რა, 2393 01:58:34,650 --> 01:58:35,483 და სადაც ცალი? 2394 01:58:35,483 --> 01:58:37,520 და არ იქნება ლამაზი თუ, მაგალითად, 2395 01:58:37,520 --> 01:58:40,100 მიიღოს ბრალდებით წერილობით მთავარი, რაც გაკეთდა. 2396 01:58:40,100 --> 01:58:43,470 და თქვენი roommate, ან თქვენი პარტნიორი უფრო ზოგადად, 2397 01:58:43,470 --> 01:58:45,230 ზრუნავს განხორციელების ხველა. 2398 01:58:45,230 --> 01:58:49,540 >> და ეს დაყოფა, ეს კედლები აბსტრაქცია, 2399 01:58:49,540 --> 01:58:52,310 ან ფენების აბსტრაქცია თუ თქვენ, რომლებიც სუპერ ძლიერი, 2400 01:58:52,310 --> 01:58:55,480 იმიტომ, რომ განსაკუთრებით დიდი, უფრო რთული პროგრამები და სისტემები, 2401 01:58:55,480 --> 01:59:00,070 ეს საშუალებას იძლევა მრავალი ხალხი აშენება ყველაფერი ერთად, და საბოლოო ჯამში, 2402 01:59:00,070 --> 01:59:02,680 სტიჩი მათი მუშაობა ერთად ამ გზით. 2403 01:59:02,680 --> 01:59:05,332 მაგრამ, რა თქმა უნდა, ჩვენ უნდა ახლა დაფიქსირება ხველა. 2404 01:59:05,332 --> 01:59:07,290 ჩვენ უნდა გითხრათ ხველა რომ, hey, იცით, რა? 2405 01:59:07,290 --> 01:59:11,230 თქვენ აპირებს უნდა მიიღოს შეყვანის ასე არ ბათილად, მაგრამ int და ახლა. 2406 01:59:11,230 --> 01:59:15,170 მოდით წავიდეთ წინ და ექსპლუატაციაში შევიდა ხველა int. i იღებს ნულოვანი. 2407 01:59:15,170 --> 01:59:16,890 >> i ნაკლებია, რამდენჯერ. 2408 01:59:16,890 --> 01:59:18,550 მე ვთქვი, სამი ადრე. 2409 01:59:18,550 --> 01:59:20,420 მაგრამ ეს არ არის ის, რაც მე მინდა. 2410 01:59:20,420 --> 01:59:25,520 მსურს ხველა უნდა განზოგადდეს მხარდაჭერა ნებისმიერი რაოდენობის iterations. 2411 01:59:25,520 --> 01:59:28,800 >> ასე რომ, მართლაც, ეს n მინდა, მიუხედავად შესახებ მეუბნება. 2412 01:59:28,800 --> 01:59:31,620 ახლა, შემიძლია წავიდეთ წინ და ვთქვათ ბეჭდვითი ხველა. 2413 01:59:31,620 --> 01:59:34,750 და არ აქვს მნიშვნელობა, თუ რა რაოდენობის მომხმარებელი გადის, 2414 01:59:34,750 --> 01:59:36,890 მე iterate, რომ ბევრჯერ. 2415 01:59:36,890 --> 01:59:39,160 >> ასე რომ, დღის ბოლოს, პროგრამა იდენტურია. 2416 01:59:39,160 --> 01:59:42,820 მაგრამ შეამჩნია, ყველა ამ პერსონალის შეიძლება იყოს სხვა ფაილი. 2417 01:59:42,820 --> 01:59:45,620 მართლაც, მე არ ვიცი, იმ როგორ მომენტში printf ხორციელდება. 2418 01:59:45,620 --> 01:59:47,980 >> მე არ ვიცი, იმ მომენტში, რამდენად მისაღებად სიმებიანი, ან int, ან float 2419 01:59:47,980 --> 01:59:48,646 ხორციელდება. 2420 01:59:48,646 --> 01:59:50,930 და მე არ მინდა, რომ ვხედავ მათ ჩემი ეკრანზე. 2421 01:59:50,930 --> 01:59:55,320 როგორც არის, მე დაწყებული ფოკუსირება ჩემი პროგრამა, არა იმ ფუნქციებს. 2422 01:59:55,320 --> 01:59:59,070 >> ასე რომ, მართლაც, როგორც კი თქვენ დაიწყოს ფაქტორინგი კოდი მოსწონს ეს out, 2423 01:59:59,070 --> 02:00:01,397 შეგვიძლია კი გადაადგილება ხველა ცალკე ფაილი? 2424 02:00:01,397 --> 02:00:02,730 ვინმეს შეეძლო განახორციელოს იგი. 2425 02:00:02,730 --> 02:00:06,810 თქვენ და თქვენი პროგრამის გახდეს ძალიან ლამაზი და ძალიან იკითხება, 2426 02:00:06,810 --> 02:00:10,830 სავარაუდოდ, მართლაც ოთხ ხაზის პროგრამის უფლება არსებობს. 2427 02:00:10,830 --> 02:00:13,510 >> მოდით წავიდეთ წინ არის და კიდევ ერთი ცვლილება. 2428 02:00:13,510 --> 02:00:16,180 გაითვალისწინეთ, რომ ჩემი პროტოტიპი უნდა შეიცვალოს up დაბრუნება. 2429 02:00:16,180 --> 02:00:18,390 ნება მომეცით, დაფიქსირება, რომ ასე მე არ დაიყვირა. 2430 02:00:18,390 --> 02:00:22,580 >> ჩადება ხველა, ნება მომეცით აწარმოებს ხველა ერთხელ მეტი, მაინც აკეთებს იგივე. 2431 02:00:22,580 --> 02:00:26,010 მაგრამ ახლა, შეამჩნია, რომ ჩვენ გვაქვს ნივთიერება ერთი საბოლოო ვერსია. 2432 02:00:26,010 --> 02:00:26,940 იცი რაა? 2433 02:00:26,940 --> 02:00:29,040 მე არ მინდა, რომ მხოლოდ ხველა, აუცილებლად. 2434 02:00:29,040 --> 02:00:30,802 მე მინდა, რომ რაღაც უფრო ზოგადად. 2435 02:00:30,802 --> 02:00:31,510 ასე, რომ თქვენ იცით, რა? 2436 02:00:31,510 --> 02:00:32,450 მე მინდა ამის გაკეთება. 2437 02:00:32,450 --> 02:00:37,140 მე მინდა, რომ, ჰგავს Scratch აკეთებს, ვთქვათ ბლოკი, მაგრამ არა მხოლოდ 2438 02:00:37,140 --> 02:00:38,680 ამბობენ, რომ რაღაც გარკვეული რაოდენობის ჯერ. 2439 02:00:38,680 --> 02:00:41,510 მე მინდა, რომ ვთქვა, ძალიან კონკრეტული სიმებიანი. 2440 02:00:41,510 --> 02:00:43,850 და, აქედან გამომდინარე, მე არ მინდა, რომ ის, უბრალოდ, ვამბობთ ხველა. 2441 02:00:43,850 --> 02:00:47,660 მე მინდა, ვთქვა რასაც string გავიდა. 2442 02:00:47,660 --> 02:00:49,960 >> ასე რომ შეამჩნია, მე გენერალიზებული ეს ისე, რომ ახლა 2443 02:00:49,960 --> 02:00:53,110 ვთქვათ იგრძნობა კარგი სახელი ამ, ისევე როგორც Scratch, 2444 02:00:53,110 --> 02:00:55,530 იღებს ორი არგუმენტები, განსხვავებით Scratch. 2445 02:00:55,530 --> 02:00:56,570 ერთი სიმებიანი. 2446 02:00:56,570 --> 02:00:57,300 ერთი არის int. 2447 02:00:57,300 --> 02:00:58,130 >> და მე ვერ გადართოთ მათ. 2448 02:00:58,130 --> 02:01:00,713 მე უბრალოდ სახის მოსწონს იდეა ამბობენ, რომ string პირველი და შემდეგ 2449 02:01:00,713 --> 02:01:01,940 , რამდენჯერ შემდეგ. 2450 02:01:01,940 --> 02:01:03,970 ბათილად ნიშნავს, რომ ჯერ კიდევ არ დაბრუნდება. 2451 02:01:03,970 --> 02:01:06,428 ეს არის მხოლოდ ვიზუალური მხარე ეფექტი, ისევე, როგორც [? Jordan,?] 2452 02:01:06,428 --> 02:01:08,240 სიტყვიერი გვერდითი ეფექტი ყვირილი. 2453 02:01:08,240 --> 02:01:12,630 ეს ჯერ კიდევ რაღაც n ჯერ, 0-მდე, მაგრამ არ უდრის n. 2454 02:01:12,630 --> 02:01:14,540 ეს იმას ნიშნავს, ო სულ ჯერ. 2455 02:01:14,540 --> 02:01:16,540 და შემდეგ უბრალოდ ამობეჭდოთ რასაც სტრიქონს. 2456 02:01:16,540 --> 02:01:19,060 ასე რომ, მე ნამდვილად გენერალიზებული ეს ხაზი კოდი. 2457 02:01:19,060 --> 02:01:22,460 ასე რომ, ახლა, როგორ უნდა განახორციელოს ხველა ფუნქცია? 2458 02:01:22,460 --> 02:01:25,520 >> მე შემიძლია ამის ბათილად ხველა. 2459 02:01:25,520 --> 02:01:28,501 და მე მაინც მიიღოს, თუ როგორ ბევრჯერ გსურთ ხველა. 2460 02:01:28,501 --> 02:01:29,250 მაგრამ იცით, რა? 2461 02:01:29,250 --> 02:01:31,240 მე ახლა punt ვთქვა. 2462 02:01:31,240 --> 02:01:36,540 >> მე მოვუწოდებ ვთქვა, სიტყვა ხველა, გადადის n. 2463 02:01:36,540 --> 02:01:40,410 და თუ მინდა ასევე განახორციელოს, უბრალოდ for fun, დაცემინების ფუნქცია, 2464 02:01:40,410 --> 02:01:42,290 შემიძლია sneeze გარკვეული რაოდენობის ჯერ. 2465 02:01:42,290 --> 02:01:47,300 და შემიძლია შენარჩუნება მეორეული გამოყენება ო, იმიტომ, შეამჩნია, რომ მ ამ კონტექსტში ან ფარგლებში 2466 02:01:47,300 --> 02:01:49,470 მხოლოდ არსებობს ფარგლებში ამ ფუნქციას. 2467 02:01:49,470 --> 02:01:52,767 >> და n ამ კონტექსტში მხოლოდ არსებობს ფარგლებში ამ ფუნქციას აქ. 2468 02:01:52,767 --> 02:01:54,600 ასე რომ, ჩვენ დავბრუნდებით ამ საკითხებზე ფარგლებს. 2469 02:01:54,600 --> 02:02:01,160 და აქ, მე ვაპირებ ვთქვა, Achoo და შემდეგ ო ჯერ, ნახევრად მსხვილი ნაწლავის. 2470 02:02:01,160 --> 02:02:04,340 >> და ახლა, უბრალოდ უნდა სესხება ამ ფუნქციის ხელმოწერების აქ. 2471 02:02:04,340 --> 02:02:06,290 ასე რომ, ხველა არის სწორი. 2472 02:02:06,290 --> 02:02:10,090 Void sneeze სწორია ახლა. 2473 02:02:10,090 --> 02:02:12,390 >> და მე კიდევ უბრალოდ უნდა ვთქვა. 2474 02:02:12,390 --> 02:02:18,990 ამიტომ, მე ვაპირებ ვთქვა, ვთქვათ string s, int n, ნახევრად მსხვილი ნაწლავის. 2475 02:02:18,990 --> 02:02:22,010 ასე რომ, მე ზედმეტად ტექნოლოგიით heck out ამ პროგრამის. 2476 02:02:22,010 --> 02:02:23,760 >> და ეს არ არის ნიშნავს იმას, რომ ეს არის 2477 02:02:23,760 --> 02:02:26,343 რა უნდა გავაკეთოთ, როდესაც წერა კი მარტივი პროგრამების. 2478 02:02:26,343 --> 02:02:29,280 რაღაც რომ აშკარად მართლაც მარტივი, მართლაც მოკლედ, 2479 02:02:29,280 --> 02:02:31,800 და ხელახლა განახორციელოს ეს გამოყენებით გზა ძალიან ბევრი კოდი. 2480 02:02:31,800 --> 02:02:34,560 მაგრამ თქვენ რეალურად ვხედავ, და დრო ვიხსენებთ ამ მაგალითები, 2481 02:02:34,560 --> 02:02:38,610 და ხვდები, რა, ეს არის ნაბიჯები ავიღეთ რეალურად განზოგადება, 2482 02:02:38,610 --> 02:02:40,797 ფაქტორი რაღაც, სანამ ბოლოს დღეს 2483 02:02:40,797 --> 02:02:42,380 ჩემი კოდი არის რეალურად საკმაოდ გონივრული. 2484 02:02:42,380 --> 02:02:45,960 იმიტომ, რომ თუ მინდა ხველა სამ ჯერ მაშინ sneeze სამჯერ, 2485 02:02:45,960 --> 02:02:50,420 მე უბრალოდ აპირებს გამეორება ამ, პროგრამის მიიღოს ხველა, და აწარმოებს ხველა. 2486 02:02:50,420 --> 02:02:53,620 და მაქვს სამი coughs და სამი sneezes. 2487 02:02:53,620 --> 02:02:55,990 >> ასე რომ, ეს არის ძირითადი პარადიგმა, თუ გნებავთ, 2488 02:02:55,990 --> 02:03:00,110 როგორ ჩვენ შეიძლება წავიდეთ შესახებ რეალურად განხორციელების პროგრამა. 2489 02:03:00,110 --> 02:03:03,220 მაგრამ მოდით უბრალოდ ვხედავ ახლა, რა არის ჩვენ უკვე აკეთებს ყველა ამ დროს, 2490 02:03:03,220 --> 02:03:06,940 და რასაც ზოგიერთი საბოლოო ცალი უკან ეს მარტივი ბრძანება. 2491 02:03:06,940 --> 02:03:09,620 ბოლოს დღეს, ჩვენ გვაქვს უკვე გამოყენებით Clang როგორც ჩვენი შემდგენელი. 2492 02:03:09,620 --> 02:03:11,494 ჩვენ უკვე წერილობით წყაროს კოდი, კონვერტაცია 2493 02:03:11,494 --> 02:03:12,820 გავლით Clang შევიდა მანქანა კოდი. 2494 02:03:12,820 --> 02:03:15,540 >> ჩვენ უკვე გამოყენებით ჩადება მხოლოდ ხელი შეუწყოს ჩვენი keystrokes ასე 2495 02:03:15,540 --> 02:03:20,740 რომ ჩვენ არ უნდა გვახსოვდეს, იმ მართლწერის of Clang თავად. 2496 02:03:20,740 --> 02:03:22,640 მაგრამ რა არის ჩადება რეალურად აკეთებს? 2497 02:03:22,640 --> 02:03:24,750 და, თავის მხრივ, რა არის Clang რეალურად აკეთებს? 2498 02:03:24,750 --> 02:03:28,790 >> გამოდის, თუმცა ჩვენ გავამარტივეთ დღევანდელი დისკუსიის განაცხადა, 2499 02:03:28,790 --> 02:03:33,090 შენ კოდის, გაივლის მას, როგორც შეყვანის შემდგენელი, რომელიც გაძლევთ 2500 02:03:33,090 --> 02:03:35,750 გამოშვება მანქანა კოდი, თურმე არსებობს 2501 02:03:35,750 --> 02:03:37,420 რამდენიმე სხვადასხვა ნაბიჯები შიგნით არსებობს. 2502 02:03:37,420 --> 02:03:41,940 და შედგენა ხდება, რომ ქოლგა ვადა მთელი bunch of ნაბიჯები. 2503 02:03:41,940 --> 02:03:43,970 მაგრამ მოდით უბრალოდ გაღიზიანება ეს მართლაც სწრაფად. 2504 02:03:43,970 --> 02:03:48,070 >> გამოდის, რომ ჩვენ ვაკეთებთ უფრო მეტი რამ ყოველ ჯერზე მე აწარმოებს პროგრამა, 2505 02:03:48,070 --> 02:03:50,990 და ყოველ ჯერზე მე შედგენა პროგრამა დღეს. 2506 02:03:50,990 --> 02:03:55,020 ასე გაგრძელების ეხება ამას არაფერი C პროგრამა, 2507 02:03:55,020 --> 02:03:58,720 როგორც ვნახავთ, ისევ და ისევ, რომელიც იწყება ამ hash სიმბოლო, 2508 02:03:58,720 --> 02:04:03,320 ან hashtag სიმბოლო აქ, იმას ნიშნავს, ეს preprocessor დირექტივა. 2509 02:04:03,320 --> 02:04:07,330 ეს ნიშნავს, რომ ამ შემთხვევაში, hey კომპიუტერული, რაღაც ეს ფაილი 2510 02:04:07,330 --> 02:04:09,430 სანამ რეალურად ადგენენ ჩემი საკუთარი კოდი. 2511 02:04:09,430 --> 02:04:15,220 >> ამ შემთხვევაში, hash მოიცავს არის, არსებითად, C ის გზა და განაცხადა, 2512 02:04:15,220 --> 02:04:19,325 hey კომპიუტერი, წასვლა შინაარსი of CS50.h და ჩასვით აქ. 2513 02:04:19,325 --> 02:04:22,170 Hey კომპიუტერი, წავიდეთ მიიღოს შინაარსი სტანდარტული io.h 2514 02:04:22,170 --> 02:04:24,690 იქ, სადაც, რომ არის მყარ დისკზე, ჩასვით აქ. 2515 02:04:24,690 --> 02:04:27,390 ასე რომ, ეს ყველაფერი არ მოხდება პირველი დროს preprocessing. 2516 02:04:27,390 --> 02:04:28,880 >> და Clang ყველა ამ ჩვენთვის. 2517 02:04:28,880 --> 02:04:30,510 და იგი იმდენად darn სწრაფი, თქვენ კი არ 2518 02:04:30,510 --> 02:04:32,000 იხილეთ ოთხი განსხვავებული რამ ხდება. 2519 02:04:32,000 --> 02:04:34,100 მაგრამ ეს არის პირველი ასეთი ნაბიჯი. 2520 02:04:34,100 --> 02:04:35,560 >> რა ხდება შემდეგი? 2521 02:04:35,560 --> 02:04:38,320 კარგად, შემდეგი ოფიციალური ნაბიჯი შედგენა. 2522 02:04:38,320 --> 02:04:40,385 და აღმოჩნდება, რომ შედგენა პროგრამა 2523 02:04:40,385 --> 02:04:44,060 ტექნიკურად ნიშნავს აპირებს კოდის, პერსონალის, რომ ჩვენ 2524 02:04:44,060 --> 02:04:47,890 უკვე წერდა, დღეს, რაღაც მოუწოდა ასამბლეის კოდი, რაღაც 2525 02:04:47,890 --> 02:04:49,260 რომელიც გამოიყურება ცოტა განსხვავებული. 2526 02:04:49,260 --> 02:04:51,050 >> და, ფაქტობრივად, ჩვენ ვხედავთ, რეალური სწრაფად. 2527 02:04:51,050 --> 02:04:53,890 ნება მომეცით რეალურად წასვლას ჩემი IDE. 2528 02:04:53,890 --> 02:04:58,050 ნება მომეცით წავიდეთ წინ და ღია hello.c, რომელიც არის პირველი პროგრამა, რომელიც ჩვენ 2529 02:04:58,050 --> 02:04:59,120 დღეს დაიწყო. 2530 02:04:59,120 --> 02:05:04,130 და ნება მომეცით წავიდეთ წინ და აწარმოებს Clang ცოტა განსხვავებულად, Clang-s, hello.c, 2531 02:05:04,130 --> 02:05:07,720 რომელიც რეალურად აპირებს მომეცი კიდევ ერთი ფაილი hello.s. 2532 02:05:07,720 --> 02:05:10,330 >> და ჩვენ, ალბათ, არასოდეს ისევ ვხედავ ამ სახის კოდი. 2533 02:05:10,330 --> 02:05:13,030 თუ თქვენ მიიღოს ქვედა დონეზე სისტემები კლასის მოსწონს CS61, 2534 02:05:13,030 --> 02:05:14,920 ნახავთ ბევრი სხვა ამ სახის კოდი. 2535 02:05:14,920 --> 02:05:17,020 მაგრამ ეს არის ასამბლეის ენაზე. 2536 02:05:17,020 --> 02:05:22,050 ეს არის X86 ასამბლეის ენაზე რომ CPU, რომელიც საფუძვლად უდევს 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE რეალურად ესმის. 2538 02:05:24,460 --> 02:05:27,060 >> და cryptic, რადგან არ გამოიყურება, ეს არის ის, 2539 02:05:27,060 --> 02:05:29,180 კომპიუტერი ესმის კარგად. 2540 02:05:29,180 --> 02:05:30,790 Sub q, ეს არის სხვაობა. 2541 02:05:30,790 --> 02:05:31,660 არსებობს მოძრაობები. 2542 02:05:31,660 --> 02:05:35,730 >> არსებობს მოუწოდებდა ფუნქციები აქ, x Oring, მოძრაობა, Add, პოპ, 2543 02:05:35,730 --> 02:05:36,430 დაბრუნება. 2544 02:05:36,430 --> 02:05:38,850 ასე რომ, ძალიან დაბალი დონე მითითებები 2545 02:05:38,850 --> 02:05:41,280 რომ CPUs გვესმის, რომ მე გააკეთა მინიშნება ადრე. 2546 02:05:41,280 --> 02:05:43,100 ეს არის ის, რაც Intel Inside. 2547 02:05:43,100 --> 02:05:45,030 >> არსებობს ნიმუშების zeros და პირობა, რომ 2548 02:05:45,030 --> 02:05:51,800 რუკაზე ამ arcanely ფორმულირებული, მაგრამ გარკვეულწილად კარგად დაასახელა, ინსტრუქციები, 2549 02:05:51,800 --> 02:05:52,780 ასე ვთქვათ. 2550 02:05:52,780 --> 02:05:54,780 ეს არის ის, რაც ხდება, როდესაც თქვენ კომპილაციის თქვენი კოდი. 2551 02:05:54,780 --> 02:05:58,560 თქვენ მიიღებთ ასამბლეის ენის გარეთ, რომელიც 2552 02:05:58,560 --> 02:06:04,680 ნიშნავს მესამე ნაბიჯი არის შეიკრიბება რომ ასამბლეის კოდი შევიდა, საბოლოო ჯამში, 2553 02:06:04,680 --> 02:06:09,080 მანქანა კოდი zeros და პირობა, არ ტექსტი, რომელიც ჩვენ ვნახეთ, ერთი წუთით წინ. 2554 02:06:09,080 --> 02:06:13,370 >> ასე რომ, წინასწარ დამუშავებას ამჯამად რომ იპოვოს და შეცვლის, და რამდენიმე სხვა რამ. 2555 02:06:13,370 --> 02:06:16,430 შედგენის იღებს თქვენი წყარო კოდი C, კოდის 2556 02:06:16,430 --> 02:06:18,980 რომ ჩვენ წერდა, რომ შეკრებისა კოდი, რომ ჩვენ უბრალოდ მოხვდა. 2557 02:06:18,980 --> 02:06:22,170 შეკრებაზე იღებს, რომ ასამბლეის კოდი zeroes და პირობა 2558 02:06:22,170 --> 02:06:24,680 რომ CPU ნამდვილად მესმის, ბოლოს დღის განმავლობაში. 2559 02:06:24,680 --> 02:06:27,630 და აკავშირებს არის ბოლო ნაბიჯი რომ ხდება us-- ერთხელ, 2560 02:06:27,630 --> 02:06:29,830 ასე სწრაფად, ჩვენ კი არა შეამჩნია, რომელიც ამბობს, 2561 02:06:29,830 --> 02:06:32,460 hey კომპიუტერი, მიიღოს ყველა zeros და პირობა, რომ 2562 02:06:32,460 --> 02:06:36,750 შედეგად შედგენა დავით კოდი, და მისი მთავარი ფუნქცია ამ შემთხვევაში. 2563 02:06:36,750 --> 02:06:39,160 >> და hey კომპიუტერი, წავიდეთ მისაღებად ყველა zeros და პირობა 2564 02:06:39,160 --> 02:06:42,180 რომ CS50 პერსონალის დაწერა შიგნით CS50 ბიბლიოთეკა. 2565 02:06:42,180 --> 02:06:43,440 შეურიეთ იმ დავითის. 2566 02:06:43,440 --> 02:06:46,648 და hey კომპიუტერი, წავიდეთ მისაღებად ყველა zeros და პირობა, რომ ვინმე წერდა წლის 2567 02:06:46,648 --> 02:06:47,470 წინ printf. 2568 02:06:47,470 --> 02:06:49,880 და დაამატოთ იმ შევიდა მთელი რამ, რომ ჩვენ 2569 02:06:49,880 --> 02:06:52,870 მივიღე ჩემი zeros და პირობა, CS50 პერსონალის zeros და პირობა, 2570 02:06:52,870 --> 02:06:55,370 რომ printf zeros და პირობა, და არაფერი ჩვენ გამოყენებით. 2571 02:06:55,370 --> 02:07:00,410 >> მათ ყველა მისაღებად კომბინირებული ერთად ერთ პროგრამა მოუწოდა, ამ შემთხვევაში, hello. 2572 02:07:00,410 --> 02:07:03,141 ასე რომ, ამიერიდან, ჩვენ უბრალოდ გამოიყენოს სიტყვა შედგენა. 2573 02:07:03,141 --> 02:07:06,390 და ჩვენ, თავისთავად, რომ როდესაც ჩვენ ვამბობთ, კომპილაციის თქვენი პროგრამა, ეს იმას ნიშნავს, 2574 02:07:06,390 --> 02:07:08,849 hey გააკეთოთ წინასწარ დამუშავებას, იკრიბებიან, და აკავშირებს. 2575 02:07:08,849 --> 02:07:11,890 მაგრამ რეალურად ზოგიერთი წვნიანი პერსონალი იქ ქვეშ hood. 2576 02:07:11,890 --> 02:07:13,723 და მით უმეტეს, თუ მიიღოთ საინტერესო გარკვეული დრო, 2577 02:07:13,723 --> 02:07:15,900 თქვენ შეგიძლიათ დაიწყოს გააღიზიანოს დაახლოებით ამ ქვედა დონეზე. 2578 02:07:15,900 --> 02:07:19,660 მაგრამ ახლა, გააცნობიეროს, რომ შორის takeaways დღეს 2579 02:07:19,660 --> 02:07:23,420 საკმაოდ უბრალოდ დაწყებული პროცესი, 2580 02:07:23,420 --> 02:07:26,700 მიღების კომფორტულად რაღაც მიესალმები მსოფლიოში. 2581 02:07:26,700 --> 02:07:29,575 მართლაც, რაც ჩვენ გავაკეთეთ დღეს რა თქმა უნდა არ ჩაიძიროს სუპერ სწრაფი. 2582 02:07:29,575 --> 02:07:31,491 და ეს იქნება გარკვეული დრო და პრაქტიკაში. 2583 02:07:31,491 --> 02:07:33,864 და შანსები, თქვენ დასალაგებლად მინდა მოხვდა თქვენს კლავიატურაზე 2584 02:07:33,864 --> 02:07:34,780 ან დაწეროთ ეკრანზე. 2585 02:07:34,780 --> 02:07:35,880 და ყველა რომ კარგადაა. 2586 02:07:35,880 --> 02:07:38,320 მიუხედავად იმისა, რომ, ალბათ, ცდილობენ არ ამის გაკეთება ბიბლიოთეკაში იმდენად. 2587 02:07:38,320 --> 02:07:40,820 >> და საბოლოო ჯამში, თქვენ შეძლებს, თუმცა, უნდა დაიწყოს 2588 02:07:40,820 --> 02:07:44,580 ხედავს ნიმუშების, როგორც კარგ კოდი რომ თქვენ წერილობითი და შეცდომები 2589 02:07:44,580 --> 02:07:45,370 რომ თქვენ გააკეთა. 2590 02:07:45,370 --> 02:07:48,965 და ჰგავს პროცესში ხდება TF ან CA ჰგავს, 2591 02:07:48,965 --> 02:07:51,590 თქვენ დაიწყოს უკეთ და უკეთ ხედავს იმ ნიმუშების, 2592 02:07:51,590 --> 02:07:53,774 და მხოლოდ საქმე თქვენი საკუთარი პრობლემების საბოლოოდ. 2593 02:07:53,774 --> 02:07:56,940 ამასობაში, იქნება უამრავი თითოეული ჩვენგანისთვის, რომ სარგებლის თქვენ მხარდაჭერა, და თქვენ 2594 02:07:56,940 --> 02:07:57,481 მეშვეობით. 2595 02:07:57,481 --> 02:07:59,450 და ჩაწერის ups ყველა პრობლემა, 2596 02:07:59,450 --> 02:08:01,366 თქვენ იხელმძღვანელებენ მეშვეობით ყველა ბრძანებები 2597 02:08:01,366 --> 02:08:05,330 რომ მე, რა თქმა უნდა ვიცი ბევრი პრაქტიკა ახლა, 2598 02:08:05,330 --> 02:08:07,380 თუმცა, შესაძლოა, არ მანევრის ზე ერთი თავი ახლა. 2599 02:08:07,380 --> 02:08:08,580 და რომ სრულიად ჯარიმა. 2600 02:08:08,580 --> 02:08:11,230 >> მაგრამ, საბოლოო ჯამში, თქვენ აპირებს დაიწყოს, რომ ნახოთ ნიმუშების აღმოცენდეს. 2601 02:08:11,230 --> 02:08:14,260 და კიდევ თქვენ წარსულში ყველა სულელური დეტალები, როგორიცაა ფრჩხილებში, 2602 02:08:14,260 --> 02:08:16,710 და Curly braces, და ნახევრად colons, და პერსონალის, სიმართლე გითხრათ, 2603 02:08:16,710 --> 02:08:19,360 რომ არ არის ინტელექტუალურად საინტერესოა. 2604 02:08:19,360 --> 02:08:22,690 და ეს არ არის ობიექტური რაიმე გაცნობითი კლასი. 2605 02:08:22,690 --> 02:08:24,410 ეს იდეები, რომ ვაპირებთ აქვს. 2606 02:08:24,410 --> 02:08:26,659 >> ეს მარყუჟების, და პირობები და ფუნქციები, 2607 02:08:26,659 --> 02:08:30,552 და უფრო ძლიერი აბსტრაქცია, და ფაქტორინგი კოდი, 2608 02:08:30,552 --> 02:08:33,510 და კარგი დიზაინი და კარგი სტილი, და საბოლოო ჯამში სისწორის 2609 02:08:33,510 --> 02:08:37,330 თქვენი კოდი, რომ საბოლოო ჯამში, აპირებს მნიშვნელობა ყველაზე. 2610 02:08:37,330 --> 02:08:40,925 ასე რომ, მომავალ კვირას, ჩვენ მიიღებს ამ იდეები, რომ ჩვენ პირველად ვნახე Scratch 2611 02:08:40,925 --> 02:08:42,800 და ახლა თარგმნა უნდა C. და ჩვენ დავიწყებთ 2612 02:08:42,800 --> 02:08:45,740 დანერგვა პირველი რა თქმა უნდა, რეალურ სამყაროში დომენები. 2613 02:08:45,740 --> 02:08:50,140 >> ჩვენ ფოკუსირება სამყაროს უსაფრთხოებას, და უფრო კონკრეტულად კრიპტოგრაფიის, 2614 02:08:50,140 --> 02:08:51,980 ხელოვნების scrambling ინფორმაციას. 2615 02:08:51,980 --> 02:08:54,000 და მათ შორის პირველი პრობლემები თქვენ თავს 2616 02:08:54,000 --> 02:08:56,840 მიიღებს დაწერა მიღმა სათამაშო ზოგიერთი სინტაქსი 2617 02:08:56,840 --> 02:08:59,880 და გადაჭრის ლოგიკური პრობლემა, რამაც ხანგრძლივი, 2618 02:08:59,880 --> 02:09:03,960 რეალურად scramble, ან დაშიფვრა, და საბოლოო ჯამში გაშიფვრა ინფორმაცია. 2619 02:09:03,960 --> 02:09:06,470 და ყველაფერი გავაკეთეთ დღეს, საკმაოდ დაბალი 2620 02:09:06,470 --> 02:09:09,190 დონეზე, უბრალოდ აპირებს დაუშვას ჩვენთვის მიიღოს და ერთი, 2621 02:09:09,190 --> 02:09:13,550 და კიდევ ერთი ნაბიჯი ზემოთ მიმართ წერა ყველაზე საინტერესო კოდი ამჟამად. 2622 02:09:13,550 --> 02:09:15,050 >> ასე უფრო, რომ მომავალ კვირას. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [ვიდეო აღწარმოების] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> რა შეგიძლიათ მითხრათ ბოლო დროს დაინახა მას? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 რა შემიძლია ვთქვა, მართლა? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 ვგულისხმობ, რომ ეს იყო, როგორც ნებისმიერი სხვა წინასწარი წარმოების რეპეტიცია, 2631 02:09:35,340 --> 02:09:40,510 გარდა იქ იყო რაღაც მან განაცხადა, ძალიან ბოლოს, რომ მოხდა ჩემთან ერთად. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -ეს იყო CS50. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -სწორედ დაჭრილი ყველას, დიდი სამუშაო რეპეტიცია. 2636 02:09:52,190 --> 02:09:53,070 >> -რომ სადილი? 2637 02:09:53,070 --> 02:09:54,986 >> -ჰო, მე და თქვენ დაიბრუნოს sandwich ცოტა. 2638 02:09:54,986 --> 02:09:58,380 ნება მომეცით debrief ერთად დავით მართლაც სწრაფად. 2639 02:09:58,380 --> 02:09:59,160 დავით? 2640 02:09:59,160 --> 02:10:01,260 დავით? 2641 02:10:01,260 --> 02:10:03,110 >> [END აღწარმოების]