1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - პრობლემა Set 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - ჰარვარდის უნივერსიტეტი] 3 00:00:05,170 --> 00:00:07,490 [ეს არის CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 ყველა უფლება. Hello, ყველას, და მივესალმები რომ Walkthrough 2. 5 00:00:10,750 --> 00:00:14,330 პირველი, მე მინდა მივულოცო თქვენ დასრულების pset 1. 6 00:00:14,330 --> 00:00:18,140 მე ვიცი, რომ ეს შეიძლებოდა ყოფილიყო ცოტა მკაცრი ზოგიერთ თქვენგანს, 7 00:00:18,140 --> 00:00:20,460 შეიძლებოდა ყოფილიყო თქვენი პირველი კომპიუტერი პროგრამა, რომელიც თქვენ წერდა, 8 00:00:20,460 --> 00:00:24,500 მაგრამ გვახსოვდეს, რომ დასასრულს ამ, როდესაც თქვენ ვიხსენებთ ბოლოს სემესტრის 9 00:00:24,500 --> 00:00:29,820 თქვენ შეხედეთ pset 1 და თქვენ ამბობენ, "Hey, I შეეძლო, რომ 5 წუთი." 10 00:00:29,820 --> 00:00:35,700 ასე რომ იცნობთ და ენდობით, რომ ბოლომდე თქვენ აუცილებლად იპოვოს pset 1 საკმაოდ მარტივია. 11 00:00:35,700 --> 00:00:40,640 მაგრამ ახლა ეს უზარმაზარი კეთილმოწყობის და გილოცავთ მიღების გაკეთდეს. 12 00:00:40,640 --> 00:00:44,010 ახლა, ასევე სწრაფი შენიშვნა, სანამ შეღწევას ხორცი walkthrough. 13 00:00:44,010 --> 00:00:48,340 მინდა, რათა სწრაფი გაითვალისწინოთ, რომ მე ხანდახან არ ექნება საკმარისი დრო 14 00:00:48,340 --> 00:00:52,500 დროს walkthroughs გავლა თითოეულ გზას აკეთებს პრობლემის კომპლექტი 15 00:00:52,500 --> 00:00:56,140 და საკმაოდ უბრალოდ იქნებ ფოკუსირება 1 ან 2 სახის შესრულება, 16 00:00:56,140 --> 00:00:57,750 გზები, რომ თქვენ შეიძლება ამის გაკეთება. 17 00:00:57,750 --> 00:01:01,970 მაგრამ ეს არ არის იმის თქმა, რომ თქვენ ეკრძალება აკეთებს ამას სხვა გზა. 18 00:01:01,970 --> 00:01:05,980 ხშირია, როგორც კომპიუტერული მეცნიერების, მრავალი გზა კეთების რამ, 19 00:01:05,980 --> 00:01:12,190 და ასე ნამდვილად მოგერიდებათ გამოიყენოს სხვადასხვა ტიპის გადაწყვეტა, ვიდრე შეიძლება წარმოდგენილი. 20 00:01:12,190 --> 00:01:14,520 [Pset 2: Crypto - Zamyla Chan - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [Pset2 - 0. სექცია კითხვები - 1. Caesar - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 ყველა უფლება. ასე რომ პრობლემა მითითებული 2: Crypto არის fun ერთი. 23 00:01:20,650 --> 00:01:24,500 ისევ და ისევ, ყველა pset თქვენ იწყება მონაკვეთზე კითხვები 24 00:01:24,500 --> 00:01:29,600 რომ აპირებს ჩატარდება თქვენი სექციები თქვენი ენიჭება სწავლების თანამემამულე. 25 00:01:29,600 --> 00:01:31,670 ჩვენ არ ვაპირებთ გავლა ამ მეტი walkthrough, 26 00:01:31,670 --> 00:01:35,100 მაგრამ ისინი აუცილებლად დაგეხმარებათ დაასრულებს pset. 27 00:01:35,100 --> 00:01:38,100 ამიტომ პირველ ნაწილს პრობლემა კომპლექტი არის Caesar. 28 00:01:38,100 --> 00:01:43,470 და ასე Caesar ვინმე გაივლის თქვენ გასაღების მთელ რიცხვს, 29 00:01:43,470 --> 00:01:48,420 და თქვენ გაშიფრავს სიმებიანი ტექსტის, რომ მოგაწოდოთ 30 00:01:48,420 --> 00:01:50,670 და მისცეს მათ უკან დაშიფრული რამ. 31 00:01:50,670 --> 00:01:56,050 თუ ვინმე უყურებს საშობაო ამბავი, არსებობს მაგალითი, რომ არსებობს. 32 00:01:56,050 --> 00:01:59,090 მაშინ მეორე ნაწილი პრობლემა კომპლექტი არის Vigenere, 33 00:01:59,090 --> 00:02:01,790 რაც უფრო მოწინავე დაშიფვრის ტექნიკით. 34 00:02:01,790 --> 00:02:05,640 ასე რომ, ჩვენ ვაპირებთ encipher ნაჭერი ტექსტი, 35 00:02:05,640 --> 00:02:09,600 გარდა ნაცვლად მხოლოდ ერთი რიცხვი, ჩვენ რეალურად აპირებს encode ეს 36 00:02:09,600 --> 00:02:13,340 ერთად სიტყვით რომ მომხმარებელი მიიღებს მოგვაწოდოთ. 37 00:02:16,270 --> 00:02:22,090 Okay, ასე პირველი იარაღია ყუთისთვის დღეს რეალურად უნდა განახლებაზე ელექტრო მოწყობილობების. 38 00:02:22,090 --> 00:02:26,430 On ფორუმი ჩვენ ვხედავთ რამ, როგორიცაა, "რატომ არ ეს ნამუშევარი?" 39 00:02:26,430 --> 00:02:28,110 "რატომ არ წარმოადგენს 50 სამუშაო?" 40 00:02:28,110 --> 00:02:31,830 და ხშირად გამოსავალი არის რეალურად მხოლოდ განაახლოთ თქვენი მოწყობილობის. 41 00:02:31,830 --> 00:02:36,730 და ასე თუ მხოლოდ აწარმოებს ტერმინალში ფანჯარა თქვენს ელექტრო sudo yum-y - 42 00:02:36,730 --> 00:02:40,040 რომ დროშა ამბობდა დიახ, განაახლოს ყველაფერი - განახლება, 43 00:02:40,040 --> 00:02:42,280 მაშინ თქვენი მოწყობილობის განაახლებს თუ საჭირო იქნება. 44 00:02:42,280 --> 00:02:46,960 და იგი არ ავნებს თუ უკვე არიან უახლესი ვერსია ელექტრო მოწყობილობების. 45 00:02:46,960 --> 00:02:51,280 მაშინ ეს უბრალოდ ამბობენ არ არის ახალი განახლებები შესაძლებელი გავაგრძელოთ მუშაობა გასწვრივ. 46 00:02:51,280 --> 00:02:55,800 მაგრამ ეს არის კარგი შეასრულოს კი ყოველ ჯერზე, რომ თქვენ გახსნა ელექტრო მოწყობილობების 47 00:02:55,800 --> 00:02:57,140 რადგან ჩვენ ჯერ კიდევ ძალიან ბევრი რამ - 48 00:02:57,140 --> 00:03:00,320 ხანდახან თუ ჩვენ მოვიდეს bug - აფიქსირებს მას ელექტრო მოწყობილობების. 49 00:03:00,320 --> 00:03:03,180 ასე რომ დარწმუნდით რომ თქვენ გაქვთ უახლესი ვერსია ელექტრო მოწყობილობების 50 00:03:03,180 --> 00:03:07,710 და აწარმოებს, რომ განაახლოს არსებობს. 51 00:03:07,710 --> 00:03:14,360 ყველა უფლება. ასე რომ, რადგან ჩვენ საქმე გვაქვს წერილებს და შეცვლის, enciphering რამ, 52 00:03:14,360 --> 00:03:20,410 ჩვენ ვაპირებთ ნამდვილად სურს გახდეს საუკეთესო მეგობარი ჩვენს ASCII ჩარტში. 53 00:03:20,410 --> 00:03:24,350 უამრავი პირობა შემოსული, თუ თქვენთვის. შესაძლოა, საკუთარი. 54 00:03:24,350 --> 00:03:29,950 ძირითადად, ყველა წერილში და ყველა ნომერი და ყველა პერსონაჟი 55 00:03:29,950 --> 00:03:32,210 არსებობს მთელი რიგი მათთან ასოცირებული, 56 00:03:32,210 --> 00:03:38,670 ამიტომ კარგია, რომ ნახოთ მათი ASCII ღირებულებებს ერთად ფაქტობრივი წერილში. 57 00:03:38,670 --> 00:03:42,310 რომ აუცილებლად დაგეხმაროთ პრობლემა კომპლექტი. 58 00:03:42,310 --> 00:03:45,750 ერთი რამ, რომ ნამდვილად დამეხმარა ამ პრობლემის კომპლექტი იყო რეალურად ბეჭდვა ის, 59 00:03:45,750 --> 00:03:48,380 და როგორც მე გადის, მინდა რეალურად მიაპყროს მასზე, 60 00:03:48,380 --> 00:03:51,150 წერენ, "თუ ეს წასვლა იქ, მაშინ ..." 61 00:03:51,150 --> 00:03:55,270 სახის მიაპყროს მასზე და მარკ it up, გახდეს საუკეთესო მეგობრებს თქვენი ASCII მაგიდასთან. 62 00:03:57,240 --> 00:04:00,750 მაშინ ჩვენ გვაქვს რამდენიმე სხვა იარაღები ჩვენს ხელთ არსებული. 63 00:04:00,750 --> 00:04:03,750 ამჯერად ნაცვლად რეალურად რამაც მომხმარებლის ყველა მათი შეყვანის 64 00:04:03,750 --> 00:04:05,230 ჩვენ ვაპირებთ მოედანზე. 65 00:04:05,230 --> 00:04:06,880 ჩვენ ვაპირებთ შეეკითხება მათ გარკვეული შეყვანის, 66 00:04:06,880 --> 00:04:11,350 მაგრამ ჩვენ ასევე ვაპირებთ უბრალოდ გამოიყენოთ ბრძანება ხაზი არგუმენტები. 67 00:04:11,350 --> 00:04:15,600 ასე რომ, როდესაც მათ პროგრამა, ჩვეულებრივ ამბობთ. / Hello, მაგალითად, 68 00:04:15,600 --> 00:04:17,310 თუ თქვენი პროგრამა იყო hello.c. 69 00:04:17,310 --> 00:04:22,500 მაგრამ ამ დროს ნაცვლად მხოლოდ ვამბობთ, რომ, მათ შეუძლიათ დააყენა სიტყვა, არგუმენტების შემდეგ. 70 00:04:22,500 --> 00:04:27,210 ასე რომ, ჩვენ ვაპირებთ გამოვიყენოთ ჩვენს ხელთ მათ კორიდორი ჩვენთვის, როგორც მათი შეყვანის ისევე, 71 00:04:27,210 --> 00:04:31,720 ასე მოძრავი მიღმა მხოლოდ რითაც ამისთვის მთელი რიცხვი არამედ გამოყენებით command line არგუმენტები. 72 00:04:31,720 --> 00:04:36,590 და მაშინ საბოლოოდ დავრწმუნდებით წასვლას კოლექტორები და სიმები, რომელიც ჩვენ უნდა გამოყენებით ბევრი ისევე. 73 00:04:41,460 --> 00:04:44,810 აქ უბრალოდ მაგალითი 1 მინი ASCII ჩარტში. 74 00:04:44,810 --> 00:04:48,460 როგორც ვთქვი, ყველა წერილში შეესაბამება ნომერი, 75 00:04:48,460 --> 00:04:52,510 და ა.შ. გაეცანით რომ. იგი მოვა მოსახერხებელი. 76 00:04:52,510 --> 00:04:55,610 და მოგვიანებით, როცა ჩვენ ვიწყებთ აკეთებს ზოგიერთი ASCIIMath საქმე ნომრები - 77 00:04:55,610 --> 00:05:00,110 დასძინა, subtracting მათ - მაშინ აუცილებლად კარგი მიმართოს ამ ჩარტში. 78 00:05:02,860 --> 00:05:06,920 ასე რომ აქ მაგალითია კეისრის კოდი - რაღაც, რომ თქვენ შეიძლება არ ითამაშა, რომელზეც. 79 00:05:06,920 --> 00:05:11,190 უბრალოდ საჭე. არსებითად, არსებობს გარე ანბანი და შემდეგ არსებობს შიდა ანბანი. 80 00:05:11,190 --> 00:05:15,290 ასე რომ სწორედ აქ არის მაგალითი კეისრის კოდი, მაგრამ გასაღები 0. 81 00:05:15,290 --> 00:05:21,540 არსებითად, არის შეესაბამება, B არის შეესაბამება B, ყველა გზა მდე ზ 82 00:05:21,540 --> 00:05:26,590 მაგრამ შემდეგ ამბობენ გვინდოდა გასაღები 3, მაგალითად. 83 00:05:26,590 --> 00:05:33,280 მაშინ ჩვენ როტაცია შიდა წამყვანი ისე, რომ ახლა aligns ერთად D და ა.შ. 84 00:05:33,280 --> 00:05:35,250 და ა.შ. ეს არის არსებითად, რასაც ჩვენ ვაპირებთ გავაკეთოთ. 85 00:05:35,250 --> 00:05:38,340 ჩვენ არ გვაქვს საჭე, მაგრამ რაც ჩვენ ვაპირებთ გავაკეთოთ არის ჩვენი პროგრამა 86 00:05:38,340 --> 00:05:44,490 სახის გადაეტანა ანბანი ერთად us გარკვეული რაოდენობის ნომრები. 87 00:05:44,490 --> 00:05:48,650 ასე რომ, როგორც ვთქვი, ჩვენ ვაპირებთ იყოს საქმე command line არგუმენტები 88 00:05:48,650 --> 00:05:50,390 ასევე მიღების რიცხვი. 89 00:05:50,390 --> 00:05:55,050 ამიტომ გზა, რომელიც მომხმარებლის იმოძრავებს თქვენი Caesar პროგრამის მიერ დაყრდნობით. / Caesar 90 00:05:55,050 --> 00:05:58,090 და შემდეგ შევდივართ ხმების ამის შემდეგ. 91 00:05:58,090 --> 00:06:01,130 და ეს რიცხვი წარმოადგენს გასაღები, ცვლა, 92 00:06:01,130 --> 00:06:06,740 რამდენჯერ თქვენ უნდა მოძრავი შიდა წამყვანი თქვენი კეისრის კოდი. 93 00:06:06,740 --> 00:06:08,390 და ა.შ. ხედავთ აქ მაგალითად. 94 00:06:08,390 --> 00:06:14,550 თუ შევედით წერილები to L ჩვენს კეისრის კოდი, 95 00:06:14,550 --> 00:06:19,520 მაშინ შეყვანის D მეშვეობით O იმიტომ რომ ყოველ წერილში გადავიდა მეტი 3 ჯერ, 96 00:06:19,520 --> 00:06:22,080 ისევე, როგორც მაგალითი იმისა, საჭე რომ მე აჩვენა თქვენ. 97 00:06:22,080 --> 00:06:25,300 ასე რომ თუ თქვენ შევიდა, მაგალითად, ეს არის CS50! 98 00:06:25,300 --> 00:06:27,960 მაშინ ასევე გადავიდეს ყველა ის ასოები. 99 00:06:27,960 --> 00:06:31,040 და ეს მთავარია ორივე კეისარი და Vigenere 100 00:06:31,040 --> 00:06:34,890 ის არის, რომ ჩვენ ვაპირებთ გამოტოვოთ ვიდრე რომელიმე არასამთავრობო წერილებს. 101 00:06:34,890 --> 00:06:39,160 ასე რომ ნებისმიერი ფართები, გმირები და ა.შ., ციფრებს, ჩვენ ვაპირებთ შეინახოთ იგივე. 102 00:06:39,160 --> 00:06:42,920 ჩვენ მხოლოდ აპირებს გადაეტანა წერილებს ამ შემთხვევაში. 103 00:06:42,920 --> 00:06:45,870 ასე რომ, როგორც ხედავთ საჭე, ჩვენ მხოლოდ წერილებს ჩვენს ხელთ არსებული, 104 00:06:45,870 --> 00:06:50,150 ამიტომ ჩვენ მხოლოდ გვინდა გადაეტანა წერილები და გაშიფრავს წერილებს. 105 00:06:51,370 --> 00:06:56,720 ასე რომ პირველი რაც უნდა გააკეთოს, თქვენ ხედავთ, რომ გამოყენება Caesar პრობლემების მითითებული 2 106 00:06:56,720 --> 00:07:05,280 არის გასაშვებად კეისრის და მხოლოდ შემდეგ შეიყვანოთ ხმების როდესაც თქვენ აწარმოებს ის ტერმინალში. 107 00:07:05,280 --> 00:07:10,940 ამიტომ, რაც ჩვენ უნდა გავაკეთოთ არის ის, რომ როგორმე კიდევ რომ გასაღები და ვებგვერდზე. 108 00:07:10,940 --> 00:07:14,730 და ასე გვინდა რატომღაც დანახვა იქნება მეორე ბრძანება ხაზი არგუმენტი. 109 00:07:14,730 --> 00:07:20,950 პირველი იქნება. / კეისარი და შემდეგი ერთი იქნება გასაღები ნომერი. 110 00:07:22,190 --> 00:07:29,200 ასე რომ ადრე გვქონდა int ძირითადი (void) დაიწყოს ჩვენი C პროგრამებს. 111 00:07:29,200 --> 00:07:31,790 ჩვენ ვაპირებთ კანი უკან ფენა ცოტა 112 00:07:31,790 --> 00:07:34,720 და რეალურად ვხედავთ, რომ ნაცვლად გადადის ბათილად ჩვენი მთავარი ფუნქცია 113 00:07:34,720 --> 00:07:37,920 ჩვენ რეალურად საქმე 2 პარამეტრებს. 114 00:07:37,920 --> 00:07:44,070 ჩვენ გვყავს int დაასახელა argc და შემდეგ მასივი სიმები მოუწოდა argv. 115 00:07:44,070 --> 00:07:46,030 ამიტომ argc არის მთელი რიცხვი, 116 00:07:46,030 --> 00:07:49,640 და იგი წარმოადგენს რიგი არგუმენტები გაიარა თქვენს პროგრამას. 117 00:07:49,640 --> 00:07:53,590 და შემდეგ argv ფაქტიურად სიაში არგუმენტები გავიდა. 118 00:07:53,590 --> 00:08:00,820 ყველა არგუმენტებია სიმები, და ასე argv წარმოადგენს მასივი, სია, რა სიმები. 119 00:08:01,830 --> 00:08:03,990 ვისაუბროთ იმაზე კოლექტორები ცოტა. 120 00:08:03,990 --> 00:08:05,940 კოლექტორები ძირითადად ახალი მონაცემები სტრუქტურა. 121 00:08:05,940 --> 00:08:09,660 ჩვენ გვყავს ints, ჩვენ ორჯერ, ჩვენ გვაქვს სიმები, და ახლა გვაქვს მასივები. 122 00:08:09,660 --> 00:08:13,820 კოლექტორები არის მონაცემები სტრუქტურები, რომ შეიძლება გამართავს მრავალჯერადი ღირებულებების იგივე ტიპის, 123 00:08:13,820 --> 00:08:18,320 ამიტომ არსებითად, ჩამონათვალი რასაც ტიპის გსურთ. 124 00:08:18,320 --> 00:08:24,400 არსებითად, თუ უნდოდა სიაში რიცხვებით ყველა 1 ცვლადი, 125 00:08:24,400 --> 00:08:29,090 მაშინ იქნებოდა შექმნა ახალი ცვლადი რომ იყო ტიპის int მასივი. 126 00:08:29,090 --> 00:08:34,450 ასე რომ კოლექტორები არის ნულოვანი ინდექსირებულ, რაც იმას ნიშნავს, რომ პირველი ელემენტი array არის ინდექსი 0. 127 00:08:34,450 --> 00:08:41,799 თუ წყობა სიგრძის 4, როგორც ამ მაგალითში, მაშინ თქვენი ბოლო ელემენტს იქნებოდა საათზე ინდექსი 3, 128 00:08:41,799 --> 00:08:44,810 რომელიც 4 - 1. 129 00:08:45,940 --> 00:08:48,420 ასე, რომ შევქმნათ მასივი, თქვენ რაღაც მოსწონს ეს. 130 00:08:48,420 --> 00:08:51,440 Say თქვენ სურდა ორმაგი მასივი. 131 00:08:51,440 --> 00:08:56,520 ეს მიდის ნებისმიერი ტიპის მონაცემები ტიპის, თუმცა. 132 00:08:56,520 --> 00:09:00,210 ასე ვთქვათ, გნებავთ ორმაგი მასივი. Say გსურთ ეძახით საფოსტო ყუთი. 133 00:09:00,210 --> 00:09:04,760 ისევე, როგორც თქვენ, რომ ვრთავ ნებისმიერ სხვა ორმაგი, 134 00:09:04,760 --> 00:09:09,760 თქვენ ვიტყოდი ორმაგი და შემდეგ სახელი, მაგრამ ამ დროს ჩვენ დააყენა კვადრატულ ფრჩხილებში, 135 00:09:09,760 --> 00:09:13,570 და მაშინ ნომერი იქნება სიგრძით მასივი. 136 00:09:13,570 --> 00:09:16,840 შენიშვნა, რომ მასივით ჩვენ შეგვიძლია არ ოდესმე შეცვლის სიგრძე, 137 00:09:16,840 --> 00:09:21,230 ასე რომ თქვენ ყოველთვის უნდა განსაზღვროს და აირჩიოს რამდენი ყუთები, 138 00:09:21,230 --> 00:09:25,440 რამდენი ფასეულობების თქვენი მასივი აპირებს გამართავს. 139 00:09:25,440 --> 00:09:31,820 ასე შექმნას სხვადასხვა ღირებულებების თქვენს მასივი, თქვენ აპირებს გამოიყენოს ეს შემდეგი სინტაქსის, 140 00:09:31,820 --> 00:09:33,200 როგორც ხედავთ on the slide. 141 00:09:33,200 --> 00:09:37,620 თქვენ გაქვთ საფოსტო ყუთი ინდექსი 0 დაწესდება 1,2, 142 00:09:37,620 --> 00:09:42,180 საფოსტო ყუთი ინდექსი 1 კომპლექტი 2.4 და ა.შ. 143 00:09:42,180 --> 00:09:47,910 ახლა რომ ჩვენ მიმოიხილა კოლექტორები bit, მოდით დავუბრუნდეთ argc და argv. 144 00:09:47,910 --> 00:09:52,220 ჩვენ ვიცით, რომ argv არის მასივი სტრიქონები. 145 00:09:52,220 --> 00:09:55,080 ასე რომ, როდესაც მომხმარებლის შეჭრა - ამბობენ ისინი გაშვებული პროგრამა - 146 00:09:55,080 --> 00:09:58,740 ამბობენ. / მიესალმები დავით Malan, 147 00:09:58,740 --> 00:10:05,160 რა პროგრამა თქვენთვის უკვე რეალურად ამუშავება რა argc და argv არიან. 148 00:10:05,160 --> 00:10:07,620 ასე რომ თქვენ არ გჭირდებათ ფიქრი, რომ. 149 00:10:07,620 --> 00:10:14,370 Argc ამ ​​შემთხვევაში იქნება 3, რადგან ის ხედავს 3 განსხვავებული სიტყვა მაქს. 150 00:10:14,370 --> 00:10:18,850 და ასე შემდეგ array ამ შემთხვევაში, პირველი ინდექსის იქნებოდა. / Hello, 151 00:10:18,850 --> 00:10:21,770 შემდეგი ერთი დავით, შემდეგი ერთი Malan. 152 00:10:21,770 --> 00:10:25,640 ვინმეს ვხედავთ დაუყოვნებლივ რა შორის ურთიერთობა argv, 153 00:10:25,640 --> 00:10:28,990  array და argc არის? 154 00:10:32,820 --> 00:10:38,090 Yeah. ჩვენ შეღწევას, რომ მაგალითად args.c. 155 00:10:38,090 --> 00:10:42,880 მოდით ვნახოთ, თუ შევძლებთ ისარგებლოს შორის ურთიერთობა 2. 156 00:10:42,880 --> 00:10:46,550 აქ თქვენ შეიძლება, რომ ელექტრო მოწყობილობების ფაილთა 157 00:10:46,550 --> 00:10:49,450 გახსნას. გ ფაილები ხანდახან Emacs. 158 00:10:49,450 --> 00:10:54,660 მაგრამ ჩვენ გვინდა, რომ გაუმკლავდეთ gedit, ასე რომ თქვენ შეგიძლიათ გააკეთოთ შეგიძლიათ დააწკაპუნეთ თქვენი C ფაილი, 159 00:10:54,660 --> 00:11:04,580 გადადით Properties, გახსენი და შემდეგ აირჩიოს gedit, უცნობია, როგორც default, 160 00:11:04,580 --> 00:11:13,020 და ახლა თქვენი პროგრამა უნდა გახსნას gedit ნაცვლად Emacs. 161 00:11:14,710 --> 00:11:16,290 Perfect. 162 00:11:17,120 --> 00:11:25,520 ასე რომ აქ მაქვს პროგრამა, რომელიც მინდა ამობეჭდოთ თითოეული ბრძანება ხაზი არგუმენტი. 163 00:11:25,520 --> 00:11:32,050 ასე რომ რაც არ უნდა მომხმარებლის საშუალებებით, მინდა არსებითად დაბრუნება თავში მათ ახალი ხაზი. 164 00:11:32,050 --> 00:11:36,710 რა არის სტრუქტურა, რომელიც ჩვენ შეგვიძლია გამოვიყენოთ, რათა iterate მეტი რაღაც - 165 00:11:36,710 --> 00:11:40,380 რაღაც, რომ თქვენ ალბათ გამოიყენება თქვენი pset 1? 166 00:11:40,380 --> 00:11:45,840 თუ გსურთ გავლა მითითებული რაოდენობის რამ? >> [სტუდენტი] For loop. 167 00:11:45,840 --> 00:11:48,910 იყიდება loop. სწორედ. ასე რომ დავიწყოთ ამისთვის loop. 168 00:11:48,910 --> 00:11:56,900 ჩვენ გვყავს ამისთვის int i = 0. მოდით უბრალოდ იწყება სტანდარტული ინიციალიზაციისას ცვლადი. 169 00:11:56,900 --> 00:12:02,370 მე ვაპირებ დატოვების პირობა კომპლექტი და შემდეგ ვთქვა + +, აპირებს რამ არსებობს. 170 00:12:02,370 --> 00:12:04,090 ყველა უფლება. 171 00:12:04,090 --> 00:12:11,590 ასე ფიქრობდა თავში argv, თუ argv არის სიაში არგუმენტები წელს მიღებული პროგრამის 172 00:12:11,590 --> 00:12:15,380 და argc არის ხმების არგუმენტებს პროგრამა, 173 00:12:15,380 --> 00:12:21,280 მაშინ ეს იმას ნიშნავს, რომ argc არსებითად სიგრძეზე argv, უფლება, 174 00:12:21,280 --> 00:12:28,970 რადგან არსებობს იქნება როგორც ბევრი არგუმენტები როგორც ღირებულება argc. 175 00:12:28,970 --> 00:12:35,910 ასე რომ, თუ ჩვენ გვინდა iterate მეტი თითოეულ ელემენტს argv, 176 00:12:35,910 --> 00:12:43,290 ჩვენ ვაპირებთ, რომ გსურთ ყოველ ჯერზე შედიხართ ცვლადი წელს argv მოცემულ ინდექსი. 177 00:12:43,290 --> 00:12:49,060 რომელიც შეიძლება წარმოდგენილი ამ, არა? 178 00:12:49,060 --> 00:12:53,430 ეს ცვლადი აქ წარმოადგენს კონკრეტულ სიმებიანი ამ ინსტანციის 179 00:12:53,430 --> 00:12:57,030 იმიტომ რომ string მასივი - კერძოდ სიმებიანი რომ მოცემული ინდექსი. 180 00:12:57,030 --> 00:13:00,690 რაც ჩვენ გვსურს რომ, ამ შემთხვევაში ჩვენ გვინდა ბეჭდვა ის, ასე ვთქვათ printf. 181 00:13:00,690 --> 00:13:04,680 და ახლა argv არის ტექსტი, ასე რომ ჩვენ გვინდა, რომ დააყენა placeholder არსებობს. 182 00:13:04,680 --> 00:13:08,430 ჩვენ გვინდა ახალი ხაზი უბრალოდ, რათა ის გამოიყურება კარგი. 183 00:13:08,430 --> 00:13:12,530 ასე რომ აქ გვაქვს ამისთვის loop. ჩვენ არ გვაქვს მდგომარეობა ამჟამად. 184 00:13:12,530 --> 00:13:20,020 ასე რომ იწყება 0, ხოლო შემდეგ ყოველ ჯერზე ის აპირებს ბეჭდვა მოცემული სიმებიანი 185 00:13:20,020 --> 00:13:22,980 იმ კონკრეტულ ინდექსი მასივი. 186 00:13:22,980 --> 00:13:28,410 ასე რომ, როდესაც გვინდა, შეწყვიტოს დაბეჭდვისას ელემენტების მასივი? 187 00:13:28,410 --> 00:13:35,720 როდესაც ჩვენ დავამთავრე, არა? როდესაც ჩვენ მიაღწია ბოლოს მასივი. 188 00:13:35,720 --> 00:13:38,870 ამიტომ, ჩვენ არ გვსურს აღემატებოდეს წარსულში სიგრძეზე მასივი, 189 00:13:38,870 --> 00:13:43,700 და ჩვენ უკვე ვიცით, ჩვენ არ გვჭირდება რეალურად აქტიურად გაირკვეს, თუ რა სიგრძის argv არის 190 00:13:43,700 --> 00:13:47,520 რადგანაც ეს მოცემული ჩვენთვის, და რაც რომ? Argc. სწორედ. 191 00:13:47,520 --> 00:13:56,640 ასე რომ ჩვენ გვინდა, რომ ეს პროცესი argc რაოდენობის ჯერ. 192 00:13:56,640 --> 00:13:59,550 მე არ ვარ სწორი დირექტორია. 193 00:14:02,100 --> 00:14:03,490 ყველა უფლება. 194 00:14:03,490 --> 00:14:08,990 ახლა გადავდგათ args. არარის შეცდომები, რაც საკმაოდ დიდი. 195 00:14:08,990 --> 00:14:11,430 მოდით უბრალოდ აწარმოებს args. 196 00:14:11,430 --> 00:14:15,130 რა არის ეს დაბრუნებას აპირებს us? უბრალოდ აპირებს ბეჭდვა უკან. 197 00:14:15,130 --> 00:14:18,320 "თქვენ inputted args იქნება პროგრამაში, მე ვაპირებ მისთვის უკან თქვენ." 198 00:14:18,320 --> 00:14:23,170 ასე ვთქვათ ჩვენ გვინდა ვთქვათ args შემდეგ foo ბარი. 199 00:14:23,170 --> 00:14:26,570 ასე რომ მაშინ ბეჭდავს ის უკან ჩვენ. ყველა უფლება? 200 00:14:26,570 --> 00:14:30,790 ასე რომ არსებობს მაგალითი იმისა, თუ როგორ შეგიძლიათ გამოიყენოთ argc და argv 201 00:14:30,790 --> 00:14:33,460 იცის, რომ argc წარმოადგენს სიგრძეზე argv. 202 00:14:33,460 --> 00:14:42,750 დარწმუნდით, რომ თქვენ არ ოდესმე ერთად კოლექტორები ხელმისაწვდომობის ერთი მიღმა სიგრძეზე მასივი 203 00:14:42,750 --> 00:14:45,140 რადგან C აუცილებლად shout at თქვენ. 204 00:14:45,140 --> 00:14:47,560 თქვენ მიიღებთ რაღაც მოუწოდა სეგმენტაცია ბრალია, 205 00:14:47,560 --> 00:14:52,470 რომელიც არასოდეს არ არის გართობა, ძირითადად ამბობდა თქვენ ცდილობთ წვდომისათვის რაღაც 206 00:14:52,470 --> 00:14:55,000 რომ არ არსებობს, არ ეკუთვნის თქვენ. 207 00:14:55,000 --> 00:14:59,430 ასე რომ დარწმუნდით, და განსაკუთრებით ნულოვანი ინდექსირებას, ჩვენ არ გვინდა - 208 00:14:59,430 --> 00:15:02,390 ისევე როგორც მაგალითად, თუ გვაქვს მასივი სიგრძე 4, 209 00:15:02,390 --> 00:15:07,240 რომ მასივი ინდექსი 4 არ არსებობს, რადგან ჩვენ იწყება 0, საღამოს ნულოვანი ინდექსი. 210 00:15:07,240 --> 00:15:11,730 იგი გახდება მეორე ბუნება, ისევე, როგორც ამისთვის მარყუჟების როდესაც ჩვენ იწყება 0. 211 00:15:11,730 --> 00:15:13,610 ასე რომ მხოლოდ შეინარჩუნოს, რომ გონება. 212 00:15:13,610 --> 00:15:22,590 თქვენ არ მინდა ოდესმე შედიხართ მაჩვენებელი მასივი რომ მიღმა თქვენი მიუწვდომელ. 213 00:15:26,710 --> 00:15:32,560 ასე რომ, ჩვენ ვხედავთ, ახლა როგორ შეგვიძლია სახის ხელმისაწვდომობის 214 00:15:32,560 --> 00:15:35,930 ბრძანება ხაზი არგუმენტები, რომლებიც გაიარა სისტემაში 215 00:15:35,930 --> 00:15:41,330 მაგრამ როგორც ვნახეთ სიმებიანი, argv ფაქტიურად სიმებიანი მასივი. 216 00:15:41,330 --> 00:15:45,740 ასე რომ, რეალურად არ არის მთელი არ არის, მაგრამ კეისრის გვინდა გაუმკლავდეთ რიცხვებით. 217 00:15:45,740 --> 00:15:54,430 საბედნიეროდ, არსებობს ფუნქცია შექმნილი ჩვენთვის, რომ შეიძლება რეალურად კონვერტირება სიმებიანი რომ მთელი რიცხვი. 218 00:15:54,430 --> 00:15:58,710 ასევე აქ ჩვენ არ საქმე მომხმარებლის input, სადაც ჩვენ რითაც მათ 219 00:15:58,710 --> 00:16:03,740 ამისთვის შეყვანის აქ გასაღები, ამიტომ ჩვენ არ შეგვიძლია რეალურად reprompt და აცხადებენ, 220 00:16:03,740 --> 00:16:07,840 "ოჰ, მომეცი კიდევ ერთი რიცხვი, ვთქვათ, თუ ის მცდარია." 221 00:16:07,840 --> 00:16:10,540 მაგრამ ჩვენ მაინც უნდა შეამოწმოს კორექტული გამოყენება. 222 00:16:10,540 --> 00:16:13,520 In Caesar ისინი მხოლოდ კორიდორი 1 ნომერი, 223 00:16:13,520 --> 00:16:18,030 და ასე რომ მათ უხდებათ აწარმოებს. / Caesar და შემდეგ მათ აქვთ გადმოგცეთ ნომერი. 224 00:16:18,030 --> 00:16:23,660 ამიტომ argc უნდა იყოს გარკვეული რაოდენობა. 225 00:16:23,660 --> 00:16:29,060 რა რაოდენობის იქნებოდა, რომ იყოს, თუ ისინი უნდა გაიარონ თქვენ. / Caesar და შემდეგ გასაღები? 226 00:16:29,060 --> 00:16:32,920 რა არის argc? >> [სტუდენტი] 2. >> ორი. სწორედ. 227 00:16:32,920 --> 00:16:35,490 ასე, რომ თქვენ გვინდა დავრწმუნდეთ, რომ argc არის 2. 228 00:16:35,490 --> 00:16:39,620 წინააღმდეგ შემთხვევაში თქვენ ძირითადად უარს აცხადებენ პროგრამის გაშვება. 229 00:16:39,620 --> 00:16:43,040 მთავარ ეს ფუნქცია, რომელიც ამბობს, int, მთავარ 230 00:16:43,040 --> 00:16:47,360 ასეა, მაშინ ჩვენ ყოველთვის კარგი პრაქტიკის დაბრუნების 0 დასასრულს წარმატებული პროგრამა. 231 00:16:47,360 --> 00:16:50,840 ასე რომ, თუ, ვთქვათ, მათ მოგცემთ 3 ბრძანების ხაზი არგუმენტები ნაცვლად 2 232 00:16:50,840 --> 00:16:54,350 ან მოგაწვდით 1, მაგალითად, მაშინ, რა თქვენ გააკეთოთ თქვენ გვინდა შევამოწმოთ რომ 233 00:16:54,350 --> 00:16:59,900 და შემდეგ დაბრუნდნენ 1 ამბობდა, არა, მე ვერ გააგრძელებს ამ პროგრამის. 234 00:16:59,900 --> 00:17:03,190 [სტუდენტი] არსებობს არ შეიძლება იყოს სივრცის თქვენი ტექსტი. >> შეწყალებას me? 235 00:17:03,190 --> 00:17:06,780 [სტუდენტი] არსებობს არ შეიძლება იყოს სივრცის ტექსტი თქვენ ცდილობთ დაშიფვრა. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 თვალსაზრისით ტექსტი, რომ ჩვენ ვცდილობთ დაშიფვრა, რომ რეალურად მოდის მოგვიანებით 238 00:17:11,280 --> 00:17:13,970 როდესაც ვაძლევთ, რომ ტექსტში. 239 00:17:13,970 --> 00:17:18,260 ასე რომ ახლა ჩვენ უბრალოდ მიღების ბრძანება არგუმენტები რეალურ რაოდენობასთან, 240 00:17:18,260 --> 00:17:21,579 ფაქტობრივი Shift for Caesar კოდირებით. 241 00:17:21,579 --> 00:17:27,569 [სტუდენტი] რატომ გჭირდებათ 2 ნაცვლად მხოლოდ 1 argc? იქ აუცილებლად 1 ნომერი. 242 00:17:27,569 --> 00:17:32,200 მარჯვენა. მიზეზი, რის გამოც ჩვენ გვჭირდება 2 ამისთვის argc ნაცვლად 1 243 00:17:32,200 --> 00:17:36,260 არის, რადგან, როდესაც თქვენ აწარმოებს პროგრამის და ამბობენ. / Caesar ან. / Hello, 244 00:17:36,260 --> 00:17:38,280 რომ რეალურად ითვლის როგორც ბრძანების არგუმენტი. 245 00:17:38,280 --> 00:17:43,020 ასე რომ მაშინ ეს უკვე იღებს up 1 და ა.შ. მაშინ ჩვენ შესაყვანი 1 დამატებითი. 246 00:17:45,030 --> 00:17:49,440 ასე რომ თქვენ შესაყვანი რეალურად string in command line არგუმენტი. 247 00:17:49,440 --> 00:17:52,730 რა გსურთ, ამისთვის Caesar გვინდა გაუმკლავდეთ მთელ რიცხვს, 248 00:17:52,730 --> 00:17:57,180 ასე რომ თქვენ შეგიძლიათ გამოიყენოთ ეს atoi ფუნქცია. 249 00:17:57,180 --> 00:18:02,850 და ძირითადად, თქვენ გაივლით მას სიმებიანი და მერე დაბრუნდება თქვენი დაბრუნება მთელი რიცხვი 250 00:18:02,850 --> 00:18:06,070 თუ ეს შესაძლებელია, რათა რომ სიმებიანი შევიდა რიცხვი. 251 00:18:06,070 --> 00:18:10,960 ახლა გახსოვთ, როდესაც ჩვენ საქმე printf ან GetString, რამ, როგორიცაა, რომ 252 00:18:10,960 --> 00:18:13,390 ჩვენ მოიცავს ბიბლიოთეკების, რომლებიც კონკრეტული ჩვენთვის. 253 00:18:13,390 --> 00:18:19,450 ამიტომ დასაწყისში ჩვენ დავიწყებთ hash tag სტანდარტული I / O,. თ, რაღაც რომ. 254 00:18:19,450 --> 00:18:22,430 ისე, atoi არ შედის ერთი იმ ბიბლიოთეკების, 255 00:18:22,430 --> 00:18:26,600 ამიტომ, რაც ჩვენ უნდა გავაკეთოთ არის ჩვენ უნდა შეიცავდეს უფლება ბიბლიოთეკა, რომ. 256 00:18:26,600 --> 00:18:32,720 ასე რომ გავიხსენოთ თავში Walkthrough 1 სადაც მე განიხილეს სახელმძღვანელოს ფუნქციას. 257 00:18:32,720 --> 00:18:37,110 თქვენ ტიპი კაცი თქვენს ტერმინალი და მოყვება სახელით ფუნქციონირებს. 258 00:18:37,110 --> 00:18:39,720 და ისე, რომ გამოიტანს მთელ სიას მისი გამოყენება, 259 00:18:39,720 --> 00:18:42,890 არამედ იგი გამოიტანს, რომელიც ბიბლიოთეკაში რომ ეკუთვნის. 260 00:18:42,890 --> 00:18:47,000 ასე რომ დავტოვებთ, რომ თქვენ გამოიყენოთ სახელმძღვანელო ფუნქციის atoi 261 00:18:47,000 --> 00:18:53,360 და გაერკვნენ, რომელიც ბიბლიოთეკაში თქვენ უნდა შეიცავდეს რომ შეძლოთ atoi ფუნქცია. 262 00:18:54,450 --> 00:18:57,670 ამიტომ, ჩვენ მივიღეთ გასაღები და ახლა საქმე მიღების ძირითადი ტექსტი, 263 00:18:57,670 --> 00:19:01,820 და ისე, რომ რეალურად იქნება მომხმარებლის შეყვანის სადაც თქვენ ზოლზე. 264 00:19:01,820 --> 00:19:05,540 ჩვენ შეეხო GetInt და GetFloat და ა.შ. ამავე ვენების 265 00:19:05,540 --> 00:19:07,670 ჩვენ ვაპირებთ იყოს საქმე GetString. 266 00:19:07,670 --> 00:19:12,440 მაგრამ ამ შემთხვევაში ჩვენ არ გვჭირდება რაიმე do ხოლო ან ხოლო მარყუჟების, რათა შეამოწმოს. 267 00:19:12,440 --> 00:19:14,480 GetString აუცილებლად მოგვცემს სიმებიანი, 268 00:19:14,480 --> 00:19:17,630 და ჩვენ ვაპირებთ დაშიფვრა რასაც მომხმარებლის გვაძლევს. 269 00:19:17,630 --> 00:19:23,770 ასე, რომ თქვენ შეიძლება ვივარაუდოთ, რომ ყველა ეს მომხმარებლის inputted სიმები სწორია. 270 00:19:23,770 --> 00:19:24,670 დიდი. 271 00:19:24,670 --> 00:19:27,270 ასე რომ მაშინ კიდევ თქვენ მოხვდით გასაღები და ერთხელ თქვენ მოხვდით ტექსტი, 272 00:19:27,270 --> 00:19:31,660 ახლა რა არის დაუტოვებიათ თქვენ უნდა encipher plaintext. 273 00:19:31,660 --> 00:19:36,530 უბრალოდ სწრაფად დაფარავს მეტი lingo, plaintext არის ის, რაც მომხმარებლის გაძლევთ, 274 00:19:36,530 --> 00:19:41,030 და ciphertext არის ის, რაც თქვენ დაბრუნდება მათ. 275 00:19:42,450 --> 00:19:45,850 ასე რომ სიმები, რათა მათ შეძლონ გავლა ფაქტობრივად წერილი წერილი 276 00:19:45,850 --> 00:19:48,550 იმიტომ რომ ჩვენ გვაქვს გადაეტანა ყველა წერილი, 277 00:19:48,550 --> 00:19:51,390 ჩვენ გვესმის, რომ სიმები, თუ ჩვენ სახის კანი უკან ფენა, 278 00:19:51,390 --> 00:19:54,130 ჩვენ ვხედავთ, რომ ისინი უბრალოდ ნამდვილად სიაში სიმბოლო. 279 00:19:54,130 --> 00:19:55,930 ერთი უძღოდა სხვა. 280 00:19:55,930 --> 00:20:01,690 ასე რომ, ჩვენ შეიძლება მკურნალობა სიმები როგორც კოლექტორები რადგან ისინი კოლექტორები პერსონაჟების. 281 00:20:01,690 --> 00:20:05,640 ასე რომ ვთქვათ, თქვენ გაქვთ სიმებიანი დასახელებული ტექსტი, 282 00:20:05,640 --> 00:20:09,400 და შიგნით რომ ცვლადი ტექსტი ინახება ეს არის CS50. 283 00:20:09,400 --> 00:20:15,680 შემდეგ ტექსტის ინდექსი 0 იქნებოდა კაპიტალის T, ინდექსი 1 იქნებოდა თ და ა.შ. 284 00:20:17,530 --> 00:20:23,970 შემდეგ კი მასივები, წელს argc მაგალითად args.c, 285 00:20:23,970 --> 00:20:27,090 ჩვენ ვნახეთ, რომ მოგვიწია iterate მეტი მასივი 286 00:20:27,090 --> 00:20:32,440 და ასე მოგვიწია iterate საწყისი i = 0 წლამდე მე ნაკლებია, ვიდრე სიგრძე. 287 00:20:32,440 --> 00:20:35,560 ამიტომ ჩვენ გვჭირდება გარკვეული გზა მჭიდროდაა რა სიგრძე ჩვენი სტრიქონს 288 00:20:35,560 --> 00:20:37,090 თუ ჩვენ ვაპირებთ iterate მას. 289 00:20:37,090 --> 00:20:42,300 საბედნიეროდ კვლავ არსებობს ფუნქცია არსებობს ჩვენთვის, თუმცა მოგვიანებით in CS50 290 00:20:42,300 --> 00:20:45,860 თქვენ აუცილებლად უნდა შეეძლოს განახორციელოს და საკუთარი ფუნქცია 291 00:20:45,860 --> 00:20:48,260 რომელსაც შეუძლია გამოთვალოს სიგრძეზე სიმებიანი. 292 00:20:48,260 --> 00:20:52,120 მაგრამ ახლა ჩვენ ვაპირებთ გამოვიყენოთ სიმებიანი სიგრძე, ასე strlen. 293 00:20:52,120 --> 00:21:00,440 თქვენ კორიდორი სიმებიანი და შემდეგ იგი დაბრუნდება თქვენ int, რომელიც წარმოადგენს სიგრძე თქვენი სიმებიანი. 294 00:21:00,440 --> 00:21:05,840 მოდით შევხედოთ მაგალითს, თუ როგორ ჩვენ შესაძლოა iterate აღემატება თითოეული პერსონაჟი სიმებიანი 295 00:21:05,840 --> 00:21:08,470 და რაღაც რომ. 296 00:21:08,470 --> 00:21:13,250 რაც ჩვენ გვსურს რომ არის iterate აღემატება თითოეული ხასიათი სიმებიანი, 297 00:21:13,250 --> 00:21:19,150 და რაც ჩვენ გვსურს რომ არის ჩვენ ბეჭდვა უკან თითოეული ხასიათი 1 by 1 298 00:21:19,150 --> 00:21:22,060 გარდა დავუმატებთ რაღაცას შემდეგი მას. 299 00:21:22,060 --> 00:21:27,020 ასე რომ დავიწყოთ ამისთვის loop. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 ჩვენ ვაპირებთ დატოვონ ფართი მდგომარეობა. 301 00:21:32,700 --> 00:21:36,840 ჩვენ გვინდა iterate სანამ მივაღწევთ ბოლოს სიმებიანი, არა? 302 00:21:36,840 --> 00:21:41,340 ასეა, მაშინ რა ფუნქცია გვაძლევს სიგრძეზე სიმებიანი? 303 00:21:41,340 --> 00:21:43,160 [Inaudible სტუდენტი საპასუხოდ] 304 00:21:43,160 --> 00:21:46,420 სწორედ სიგრძეზე command line არგუმენტები. 305 00:21:46,420 --> 00:21:50,650 მაგრამ string გვინდა გამოვიყენოთ ფუნქცია გვაძლევს სიგრძეზე სიმებიანი. 306 00:21:50,650 --> 00:21:53,090 ასე რომ სიმებიანი სიგრძე. 307 00:21:53,090 --> 00:21:57,130 და ასე შემდეგ თქვენ უნდა გაიაროს in string მას. 308 00:21:57,130 --> 00:21:59,760 მან უნდა იცოდეს, თუ რა სიმებიანი სჭირდება გამოთვლა სიგრძეზე. 309 00:21:59,760 --> 00:22:03,160 ასეა, მაშინ ამ შემთხვევაში ჩვენ საქმე გვაქვს string s. 310 00:22:04,790 --> 00:22:05,860 დიდი. 311 00:22:05,860 --> 00:22:10,770 ასე შემდეგ, რაც ჩვენ გვსურს რომ, მოდით printf. 312 00:22:10,770 --> 00:22:14,850 ახლა ჩვენ გვინდა გაუმკლავდეთ სიმბოლო. ჩვენ გვინდა, რომ ამობეჭდოთ თითოეული ხასიათი. 313 00:22:14,850 --> 00:22:22,150 როდესაც გნებავთ ამობეჭდოთ float, თქვენ გამოიყენოთ placeholder მოსწონს% ვ. 314 00:22:22,150 --> 00:22:24,580 ერთად int გსურთ გამოიყენოთ% d. 315 00:22:24,580 --> 00:22:30,890 და ა.შ. ანალოგიურად, ერთად ხასიათი თქვენ იყენებთ% C ვთქვა მე ვაპირებ იყოს დაბეჭდვის ხასიათი 316 00:22:30,890 --> 00:22:34,570 რომ ინახება შიგნით ცვლადი. 317 00:22:34,570 --> 00:22:40,840 ამიტომ ამ და მოდით დაამატოთ პერიოდში და სივრცეში მას. 318 00:22:40,840 --> 00:22:45,430 რომელ ხასიათის ჩვენ გამოყენებით? 319 00:22:45,430 --> 00:22:49,780 ჩვენ ვაპირებთ იყოს გამოყენებით რასაც ხასიათი ჩვენ დროს საქართველოს სიმებიანი. 320 00:22:49,780 --> 00:22:52,890 ასე რომ მაშინ ჩვენ ვაპირებთ იყოს გამოყენებით რაღაც ერთად სიმებიანი, 321 00:22:52,890 --> 00:22:56,420 მაგრამ ჩვენ გვინდა ვიყოთ წვდომის გარკვეული ხასიათი არსებობს. 322 00:22:56,420 --> 00:23:02,740 ასე რომ, თუ სიმებიანი მხოლოდ მასივი, მაშინ როგორ უნდა თქვათ ელემენტების მასივი? 323 00:23:02,740 --> 00:23:06,480 ჩვენ გვყავს იმ კვადრატულ ფრჩხილებში, ხოლო შემდეგ ჩვენ ინდექსი არსებობს. 324 00:23:06,480 --> 00:23:11,820 ამიტომ კვადრატულ ფრჩხილებში. ჩვენი ინდექსი ამ შემთხვევაში შეგვიძლია მხოლოდ გამოიყენოს მე. სწორედ. 325 00:23:15,290 --> 00:23:22,370 ასე რომ აქ ჩვენ ვამბობთ, რომ ჩვენ უნდა დაბეჭდვის ხასიათი მოსდევს dot და სივრცე, 326 00:23:22,370 --> 00:23:30,870 და რომ ხასიათის იქნება შ წერილში ჩვენს string s. 327 00:23:32,920 --> 00:23:39,330 მე უბრალოდ აპირებს გადარჩენა რომ. Okay. 328 00:23:42,510 --> 00:23:46,840 ახლა მე ვაპირებ აწარმოებს სიმებიანი სიგრძე. 329 00:23:46,840 --> 00:23:53,440 ამიტომ ჩვენ გვქონდა სიმებიანი მოუწოდა OMG, და ახლა კი ხაზგასმით აღნიშნა, კიდევ უფრო. 330 00:23:53,440 --> 00:23:57,870 ანალოგიურად, ვთქვათ ჩვენ რეალურად გვინდა string საწყისი მომხმარებელს. 331 00:23:57,870 --> 00:23:59,580 როგორ შეიძლება გავაკეთოთ ეს? 332 00:23:59,580 --> 00:24:01,610 მანამდე, თუ როგორ მივიღეთ სამაგიეროდ int? 333 00:24:01,610 --> 00:24:08,040 ჩვენ ვთქვით GetInt, არა? მაგრამ ეს არ არის int, მოდით GetString. 334 00:24:11,780 --> 00:24:17,770 ჩვენ გადავდგათ სიმებიანი სიგრძე. აქ ჩვენ არ შევიდა კონკრეტულ ზოლზე. 335 00:24:17,770 --> 00:24:19,940 ასე რომ არ ვიცი. 336 00:24:19,940 --> 00:24:23,820 მე ვაპირებ რომ ჩემი სახელი აქ და ასე შემდეგ შემიძლია ერთი იმ რამ 337 00:24:23,820 --> 00:24:29,600 სადაც მე დაავალოს სიტყვა ყველა წერილი ან რამე მაგდაგვარს. ზემოთ. 338 00:24:29,600 --> 00:24:31,900 ასე რომ სიმებიანი სიგრძე. 339 00:24:33,000 --> 00:24:34,640 ასე რომ ჩვენ თავში Caesar. 340 00:24:34,640 --> 00:24:38,620 ჩვენ გვყავს რამდენიმე ინსტრუმენტის როგორ iterate მეტი ტექსტი, 341 00:24:38,620 --> 00:24:41,250 როგორ შედიხართ თითოეული ელემენტს. 342 00:24:41,250 --> 00:24:44,720 ახლა შეგვიძლია დავუბრუნდეთ პროგრამა. 343 00:24:44,720 --> 00:24:48,650 როგორც აღვნიშნე ადრე, წელს ASCII მაგიდასთან, თქვენი საუკეთესო მეგობარი, 344 00:24:48,650 --> 00:24:52,300 თქვენ ვაპირებთ ვხედავ ციფრები, რომლებიც ასოცირდება ყოველ წერილში. 345 00:24:52,300 --> 00:24:55,900 ასე ამბობენ ჩვენი plaintext არის მე თავბრუსხვევას? 346 00:24:55,900 --> 00:25:01,090 მაშინ თითოეული ეს გმირები აპირებს აქვს ნომერი და ASCII ასოცირებული მნიშვნელობა მას, 347 00:25:01,090 --> 00:25:04,710 კი აპოსტროფი, თუნდაც სივრცეში, თუნდაც ძახილის ნიშნის, 348 00:25:04,710 --> 00:25:06,600 ასე რომ თქვენ სურს, რომ გონება. 349 00:25:06,600 --> 00:25:12,360 ასე ვთქვათ, ჩვენი გასაღები, რომ მომხმარებლის შედის მათი ბრძანება ხაზი არგუმენტი 6. 350 00:25:12,360 --> 00:25:17,770 ეს იმას ნიშნავს, რომ პირველი წერილი, რომელიც მე, რომელიც წარმოდგენილია 73, 351 00:25:17,770 --> 00:25:25,610 გსურთ დაბრუნებას მათ რასაც წერილში წარმოდგენილია ASCII ღირებულების 73 + 6. 352 00:25:25,610 --> 00:25:29,020 ამ შემთხვევაში იქნებოდა 79. 353 00:25:30,840 --> 00:25:35,040 ახლა ჩვენ გვინდა წასვლა შემდეგი ხასიათი. 354 00:25:35,040 --> 00:25:40,960 ასე რომ მომდევნო ინდექსი 1 plaintext იქნებოდა აპოსტროფი. 355 00:25:40,960 --> 00:25:46,780 მაგრამ გვახსოვდეს, ჩვენ მხოლოდ გვინდა encipher წერილებს. 356 00:25:46,780 --> 00:25:50,040 ამიტომ, ჩვენ გვინდა დავრწმუნდეთ, რომ აპოსტროფი რეალურად რჩება იგივე, 357 00:25:50,040 --> 00:25:54,310 რომ ჩვენ არ შეიცვლება 39 დან რასაც 45 არის. 358 00:25:54,310 --> 00:25:57,150 ჩვენ გვინდა, რომ შევინარჩუნოთ ის, როგორც აპოსტროფი. 359 00:25:57,150 --> 00:26:00,780 ასე რომ ჩვენ გვინდა მახსოვს მხოლოდ encipher წერილების 360 00:26:00,780 --> 00:26:04,560 იმიტომ, რომ ჩვენ გვინდა ყველა სხვა სიმბოლიკის დარჩეს უცვლელი ჩვენი პროგრამა. 361 00:26:04,560 --> 00:26:07,130 სხვა საქმეა, რომ ჩვენ გვინდა არის შეინარჩუნოს კაპიტალიზაცია. 362 00:26:07,130 --> 00:26:10,250 ასე რომ, როდესაც თქვენ გაქვთ ზედა წერილი, უნდა დარჩნენ როგორც ზედა. 363 00:26:10,250 --> 00:26:12,830 Lowercases უნდა დარჩნენ როგორც ამას. 364 00:26:13,620 --> 00:26:19,480 ასე რომ ზოგიერთი სასარგებლო ფუნქციები შეძლებს გაუმკლავდეს მხოლოდ enciphering წერილების 365 00:26:19,480 --> 00:26:22,380 შენარჩუნებას და შენარჩუნების კაპიტალიზაცია რამ 366 00:26:22,380 --> 00:26:25,130 არის isalpha, isupper, islower ფუნქციები. 367 00:26:25,130 --> 00:26:29,270 და ა.შ. ეს ფუნქციები, რომ დაბრუნებას თქვენ ლოგიკური მნიშვნელობა. 368 00:26:29,270 --> 00:26:34,180 ძირითადად, ჭეშმარიტი ან მცდარი. ეს ზედა? ეს ალფანუმერული? 369 00:26:34,180 --> 00:26:37,180 არის თუ არა ეს წერილი, არსებითად. 370 00:26:37,180 --> 00:26:41,070 ასე რომ აქ არის 3 მაგალითები, როგორ გამოიყენოს რომ ფუნქცია. 371 00:26:41,070 --> 00:26:47,060 ძირითადად, თქვენ შეიძლება შეამოწმოთ თუ არა ღირებულების დაბრუნდა თქვენ მიერ რომ ფუნქცია მართალია ან ყალბი 372 00:26:47,060 --> 00:26:49,400 დაყრდნობით, რომ შეყვანის. 373 00:26:49,400 --> 00:26:54,880 ან არ encipher რაღაც ან cipher თუ დარწმუნდით, რომ ზედა და ა.შ. 374 00:26:54,880 --> 00:27:01,080 [სტუდენტი] შეგიძლიათ უბრალოდ ავუხსნათ იმ ცოტა მეტი და როგორ გამოვიყენოთ ისინი? >> ჰო, ნამდვილად. 375 00:27:01,080 --> 00:27:08,470 ასე რომ, თუ ჩვენ ვიხსენებთ, აქ გვაქვს დედაქალაქში მე, არა? 376 00:27:08,470 --> 00:27:14,550 ასე რომ, ჩვენ ვიცით, რომ მე ღებულობენ O რადგან მე + 6 არის ო 377 00:27:14,550 --> 00:27:18,740 მაგრამ ჩვენ გვინდა დავრწმუნდეთ, რომ O იქნება კაპიტალის ო 378 00:27:18,740 --> 00:27:22,940 ასე რომ, ძირითადად, რაც სახის შეიცვლება ჩვენი დასტური. 379 00:27:22,940 --> 00:27:26,870 ასე რომ თუ არა ეს ზედა თუ არა სახის შეცვლის გზა, რომ ჩვენ გაუმკლავდეთ მას. 380 00:27:26,870 --> 00:27:32,360 ასე რომ თუ ჩვენ ვიყენებთ isupper ფუნქციის კონკრეტულ ინდექსი, 381 00:27:32,360 --> 00:27:36,480 ასე isupper ("მე"), რომ ბრუნდება ჩვენთვის ჭეშმარიტი, ამიტომ ჩვენ ვიცით, რომ ეს ზედა. 382 00:27:36,480 --> 00:27:40,360 ასე რომ მაშინ დაყრდნობით, მოგვიანებით ჩვენ წასვლას ფორმულა 383 00:27:40,360 --> 00:27:42,750 რომ თქვენ გამოიყენებთ გადაეტანა რამ კეისარი 384 00:27:42,750 --> 00:27:46,560 ასეა, მაშინ ძირითადად, იქ იქნება ოდნავ განსხვავებული ფორმულა, თუ ის ზედა 385 00:27:46,560 --> 00:27:50,670 როგორც ეწინააღმდეგებოდა ამას. აზრი? 386 00:27:51,020 --> 00:27:52,760 Yeah. არარის შეშფოთება. 387 00:27:54,900 --> 00:27:58,990 ვესაუბრე bit შესახებ დასძინა 6 დან წერილში, რომელიც არ საკმაოდ აზრი 388 00:27:58,990 --> 00:28:05,500 გარდა, როდესაც ჩვენ სახის გვესმოდეს, რომ ამ სიმბოლოებს 389 00:28:05,500 --> 00:28:08,920 არიან სახის ურთიერთშემცვლელნი ერთად რიცხვებით. 390 00:28:08,920 --> 00:28:11,250 რას ვაკეთებთ ჩვენ სახის გამოყენების დაფარული გააპროტესტეს. 391 00:28:11,250 --> 00:28:18,100 ჩვენ წასვლას კასტინგის ცოტა მოგვიანებით, სადაც თქვენ მიიღოს ღირებულება და აქციოს იგი სხვადასხვა ტიპის 392 00:28:18,100 --> 00:28:20,440 ვიდრე ეს თავდაპირველად იყო. 393 00:28:20,440 --> 00:28:25,910 მაგრამ ამ pset ჩვენ შევძლებთ სახის interchangeably გამოიყენოთ სიმბოლოების 394 00:28:25,910 --> 00:28:30,880 და მათი შესაბამისი რიცხვი ღირებულებებს. 395 00:28:30,880 --> 00:28:35,140 ასე რომ, თუ თქვენ უბრალოდ encase ხასიათი მხოლოდ ერთჯერადი შეთავაზებები, 396 00:28:35,140 --> 00:28:40,390 მაშინ შევძლებთ ვიმუშაოთ ერთად მთელი რიცხვები, რომლებიც ეხება მას, როგორც მთელი რიცხვი. 397 00:28:40,390 --> 00:28:48,040 ამიტომ კაპიტალის C ეხება 67. მხედრულ F ეხება 102. 398 00:28:48,040 --> 00:28:51,480 ისევ და ისევ, თუ გვინდა ვიცოდეთ, ამ ღირებულებების, შევხედოთ თქვენი ASCII მაგიდასთან. 399 00:28:51,480 --> 00:28:56,160 მოდით წასვლას მაგალითები თქვენ შესაძლოა სხვაობა და დაამატოთ, 400 00:28:56,160 --> 00:29:03,130 როგორ შეიძლება რეალურად მართლაც მუშაობა ამ პერსონაჟების, გამოიყენონ მათ interchangeably. 401 00:29:03,870 --> 00:29:11,350 მე ვიტყვი, რომ ASCIIMath აპირებს გამოთვლა დამატებით ხასიათის მთელი რიცხვი 402 00:29:11,350 --> 00:29:17,590 და შემდეგ აჩვენებს resultant ხასიათი ასევე resultant ASCII ღირებულების. 403 00:29:17,590 --> 00:29:22,290 და ა.შ. აქ მე ვამბობ, - we'll გაუმკლავდეთ ამ ნაწილს მოგვიანებით - 404 00:29:22,290 --> 00:29:29,100 მაგრამ ძირითადად, მე ვამბობ, რომ მომხმარებელმა უნდა ვთქვა აწარმოებს ASCIIMath ერთად გასაღები, 405 00:29:29,100 --> 00:29:30,880 და მე ვამბობ, რომ გასაღები იქნება ნომერი 406 00:29:30,880 --> 00:29:34,600 რომელთანაც ჩვენ ვაპირებთ დაამატოთ ეს ხასიათი. 407 00:29:34,600 --> 00:29:38,560 ასე რომ აქ რომ რადგან მე მოთხოვნით გასაღები, 408 00:29:38,560 --> 00:29:40,590 რადგან მე მოითხოვს ისინი მაძლევს 1 რამ, 409 00:29:40,590 --> 00:29:45,600 მე მხოლოდ მინდა, რომ მიიღოს. / Asciimath და გასაღები. 410 00:29:45,600 --> 00:29:49,330 ამიტომ მე ვაპირებ მოითხოვოს, რომ argc უდრის 2. 411 00:29:49,330 --> 00:29:54,360 თუ ეს არა, მაშინ მე ვაპირებ დაბრუნებას 1 და პროგრამა გაითიშება. 412 00:29:55,070 --> 00:29:58,540 ამიტომ მე ვამბობ, გასაღები არ აპირებს იყოს პირველი ბრძანება ხაზი არგუმენტი, 413 00:29:58,540 --> 00:30:05,080 ეს იქნება მეორე, და როგორც ხედავთ აქ, 414 00:30:05,080 --> 00:30:11,790 მე ვაპირებ, რომ ჩართოთ შევიდა რიცხვი. 415 00:30:15,740 --> 00:30:19,230 მაშინ მე ვაპირებ მითითებული ხასიათის იყოს r. 416 00:30:19,230 --> 00:30:23,970 გაითვალისწინეთ, რომ ტიპის ცვლადი Chr ფაქტიურად მთელი რიცხვი. 417 00:30:23,970 --> 00:30:30,480 ისე, რომ მე ვარ ისარგებლებენ r როგორც მთელი რიცხვი არის encasing იგი ამ ერთჯერადი შეთავაზებები. 418 00:30:33,850 --> 00:30:40,560 ასე რომ თავში ჩვენი printf განცხადება, სადაც ჩვენ გვაქვს placeholder for ხასიათი 419 00:30:40,560 --> 00:30:43,590 და შემდეგ placeholder for რიცხვი, 420 00:30:43,590 --> 00:30:49,450 ხასიათი წარმოდგენილია Chr, და მთელი რიცხვი არის გასაღები. 421 00:30:49,450 --> 00:30:54,320 და ასე შემდეგ ჩვენ ვაპირებთ შედეგად დაამატოთ 2 ერთად. 422 00:30:54,320 --> 00:30:58,420 ამიტომ, ჩვენ ვაპირებთ დაამატოთ R + რასაც გასაღები არის, 423 00:30:58,420 --> 00:31:03,520 და მაშინ ჩვენ ვაპირებთ ბეჭდვა შედეგად რომ. 424 00:31:06,210 --> 00:31:14,220 მოდით მიიღოს asciimath. ეს დღემდე, მოდით უბრალოდ აწარმოებს asciimath. 425 00:31:14,220 --> 00:31:18,290 ოჰ, მაგრამ ვხედავ, ის არაფერს აკეთებს, რადგან ჩვენ არ რეალურად მისცეს მას გასაღები. 426 00:31:18,290 --> 00:31:23,850 ასე რომ, როდესაც ის უბრალოდ დაბრუნდა 1, ჩვენი მთავარი ფუნქცია, უბრალოდ დაბრუნდა us. 427 00:31:23,850 --> 00:31:29,250 ასე რომ მაშინ მოდით კორიდორი გასაღები. ვიღაცამ მომეცი ნომერი. >> [სტუდენტი] 4. 428 00:31:29,250 --> 00:31:30,920 4. Okay. 429 00:31:30,920 --> 00:31:39,280 ამიტომ R გაიზარდა 4 აპირებს მოგვცეს V, რაც შეესაბამება ASCII ღირებულება 118. 430 00:31:39,280 --> 00:31:43,880 ასე რომ მაშინ სახის აზრი, რომ - 431 00:31:43,880 --> 00:31:51,250 სინამდვილეში, შემიძლია გთხოვოთ, როგორ ფიქრობთ ASCII ღირებულების r არის თუ R + 4 არის 118? 432 00:31:53,070 --> 00:31:55,470 მაშინ ჰო, r არის 114. 433 00:31:55,470 --> 00:32:03,010 ასე რომ, თუ გადავხედავთ წლის ASCII მაგიდასთან შემდეგ, დარწმუნებული საკმარისი, თქვენ ნახავთ, რომ r წარმოდგენილია 114. 434 00:32:03,010 --> 00:32:08,610 ახლა, რომ ჩვენ ვიცით, რომ ჩვენ შეგვიძლია დაამატოთ რიცხვებით უნდა გმირები, ეს როგორც ჩანს საკმაოდ მარტივია. 435 00:32:08,610 --> 00:32:12,740 ჩვენ უბრალოდ აპირებს iterate მეტი სიმებიანი მოსწონს ვნახეთ მაგალითად ადრე. 436 00:32:12,740 --> 00:32:17,170 ჩვენ შეამოწმოთ, თუ ის წერილი. 437 00:32:17,170 --> 00:32:20,420 თუ ეს, მაშინ ჩვენ გადაეტანა იგი ნებისმიერი გასაღები არის. 438 00:32:20,420 --> 00:32:23,650 Pretty მარტივი, როდესაც თქვენ მიიღებთ like this, 439 00:32:23,650 --> 00:32:32,140 ხედავთ, რომ Z, წარმოდგენილი 122, მაშინ მისცემს თქვენ სხვადასხვა ხასიათის. 440 00:32:32,140 --> 00:32:37,770 ჩვენ ნამდვილად გინდათ დარჩენა ფარგლებში ჩვენი ანბანი, არა? 441 00:32:37,770 --> 00:32:43,180 ამიტომ, ჩვენ უნდა გაერკვნენ რამდენიმე გზა სახის შესაფუთი გარშემო. 442 00:32:43,180 --> 00:32:47,190 როდესაც თქვენ მივაღწიოთ Zed და გსურთ იზრდება გარკვეული რაოდენობა, 443 00:32:47,190 --> 00:32:51,230 თქვენ არ გსურთ შეხვიდეთ მიღმა ASCII ანბანი მონაკვეთზე; 444 00:32:51,230 --> 00:32:54,140 გსურთ გადაიტანოთ უკან ყველა გზა ა 445 00:32:54,140 --> 00:32:58,550 მაგრამ გახსოვდეთ, თქვენ კვლავ შენარჩუნების შემთხვევაში. 446 00:32:58,550 --> 00:33:00,980 ასე იცის, რომ წერილებს ვერ გახდება სიმბოლიკა 447 00:33:00,980 --> 00:33:05,290 ისევე, როგორც სიმბოლიკა არ ვაპირებთ შეცვლაა ისევე. 448 00:33:05,290 --> 00:33:08,170 უკანასკნელ pset თქვენ აუცილებლად არ უნდა, 449 00:33:08,170 --> 00:33:14,310 მაგრამ ალტერნატივა არ განახორციელოს თქვენი ხარბ pset გამოყენებით modulus ფუნქცია. 450 00:33:14,310 --> 00:33:17,230 მაგრამ ახლა ჩვენ რეალურად აპირებს უნდა გამოვიყენოთ modulus, 451 00:33:17,230 --> 00:33:19,900 მოდით უბრალოდ ამ ცოტა. 452 00:33:19,900 --> 00:33:26,920 არსებითად, როდესაც თქვენ x modulo Y, რომ გაძლევთ დარჩენილი x დაყოფილი წ. 453 00:33:26,920 --> 00:33:30,930 აქ არის რამოდენიმე მაგალითები აქ. ჩვენ გვყავს 27% 15. 454 00:33:30,930 --> 00:33:36,200 ძირითადად, როცა სხვაობა 15 დან 27 როგორც მრავალჯერ შესაძლებელია მიღების გარეშე უარყოფითი 455 00:33:36,200 --> 00:33:39,060 მაშინ თქვენ მიიღებთ 12 დარჩენილი. 456 00:33:39,060 --> 00:33:44,650 ასე რომ სახის მსგავსად მათემატიკის კონტექსტში, მაგრამ როგორ შეგვიძლია რეალურად გამოიყენოს ეს? 457 00:33:44,650 --> 00:33:47,100 ეს იქნება სასარგებლო ჩვენი wrapover. 458 00:33:47,100 --> 00:33:55,420 ამისათვის მოდით უბრალოდ, ვამბობთ მე გთხოვეთ ყველა გაყავით შევიდა 3 ჯგუფად. 459 00:33:55,420 --> 00:33:58,010 ზოგჯერ ხაზვის ჯგუფებში და რამე მაგდაგვარს. 460 00:33:58,010 --> 00:34:01,320 ამბობენ მე ვუთხარი, "Okay, მინდა ყველას დაიყოს 3." 461 00:34:01,320 --> 00:34:04,240 როგორ შეიძლება თქვენ ეს? 462 00:34:04,240 --> 00:34:06,810 [Inaudible სტუდენტი საპასუხოდ] ჰო, ზუსტად. გრაფი off. Okay. 463 00:34:06,810 --> 00:34:10,260 მოდით რეალურად გაგვაჩნია. გსურთ დაიწყოს? 464 00:34:10,260 --> 00:34:13,810 [სტუდენტი დათვლის off] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 მაგრამ გვახსოვდეს, ... >> [სტუდენტი] ოჰ, უკაცრავად. 466 00:34:16,620 --> 00:34:18,730 სწორედ კარგი წერტილი. 467 00:34:18,730 --> 00:34:24,130 თქვენ თქვით, 4, მაგრამ ჩვენ რეალურად მინდა ვთქვა 1 რადგან ჩვენ მხოლოდ გვინდა 3 ჯგუფად. 468 00:34:24,130 --> 00:34:30,159 ასე შემდეგ, როგორ - არა, რომ მართლაც კარგი მაგალითი, რადგან მაშინ როგორ შეიძლება თქვათ 1? 469 00:34:30,159 --> 00:34:33,370 რა არის შორის ურთიერთობა 4 და 1? 470 00:34:33,370 --> 00:34:36,760 ისე, 4 mod 3 არის 1. 471 00:34:36,760 --> 00:34:41,460 ასე თუ გააგრძელებთ, თქვენ იქნებოდა 2. 472 00:34:41,460 --> 00:34:44,540 ასე რომ, ჩვენ გვაქვს 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 ერთხელ, თქვენ რეალურად მე -5 პირი. იცით ვთქვა 2 ნაცვლად 5? 474 00:34:49,420 --> 00:34:53,760 თქვენ ამბობთ 5 mod 3 არის 2. 475 00:34:53,760 --> 00:34:59,100 მინდა დაინახოს რამდენი ჯგუფების 3 დარჩა მეტი, მაშინ რომელიც იმისათვის am ი 476 00:34:59,100 --> 00:35:02,860 და ასე შემდეგ, თუ ჩვენ განაგრძო გასწვრივ მთელი ოთახი, 477 00:35:02,860 --> 00:35:07,760 მაშინ ჩვენ ვხედავთ, რომ ჩვენ ყოველთვის რეალურად გამოყენებით mod ფუნქციის საკუთარ თავს 478 00:35:07,760 --> 00:35:09,990 to სახის ითვლიან off. 479 00:35:09,990 --> 00:35:14,490 სწორედ მეტი სახის მატერიალური მაგალითია, თუ როგორ შეიძლება გამოვიყენოთ modulo 480 00:35:14,490 --> 00:35:17,960 რადგან დარწმუნებული ვარ, ყველაზე მეტად ჩვენს ალბათ გაიარა, რომ პროცესი 481 00:35:17,960 --> 00:35:19,630 სადაც ჩვენ გვქონდა დათვლა off. 482 00:35:19,630 --> 00:35:21,840 ნებისმიერი შეკითხვა modulo? 483 00:35:21,840 --> 00:35:25,360 ეს იქნება საკმაოდ მნიშვნელოვანია იმის გაგება, კონცეფციები ამ, 484 00:35:25,360 --> 00:35:28,640 ამიტომ მინდა დარწმუნდით ბიჭებს ესმით. 485 00:35:28,640 --> 00:35:34,660 [სტუდენტი] თუ არ არის დარჩენილი, იგი მოგცემთ რეალურ რაოდენობასთან? 486 00:35:34,660 --> 00:35:40,430 თუ ერთერთი პირველი 3 მათგანი გაკეთებული რომ, რომ მას არ მიეცეს მათ, რაც მათ რეალურად იყო, 487 00:35:40,430 --> 00:35:43,310 ან უნდა მისცეს მათ [inaudible] >> სწორედ კარგი კითხვაა. 488 00:35:43,310 --> 00:35:48,750 როდესაც არ არსებობს დარჩენილი ამისთვის modulo - ასე ამბობენ გაქვთ 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 რომ რეალურად იძლევა თქვენი დაბრუნება 0. 490 00:35:53,670 --> 00:35:57,290 ჩვენ ვსაუბრობთ, რომ მოგვიანებით. 491 00:35:58,810 --> 00:36:07,720 Oh yeah, მაგალითად, მე -3 პირი - 3 mod 3 ფაქტიურად 0, მაგრამ მან განაცხადა, 3. 492 00:36:07,720 --> 00:36:14,900 ასე რომ სახის მოსწონს შიდა დაჭერა, მაგალითად, 493 00:36:14,900 --> 00:36:17,620 მოსწონს okay, თუ mod არის 0 მერე მე ვაპირებ იყოს მე -3 პირი. 494 00:36:17,620 --> 00:36:22,740 მაგრამ ჩვენ შეღწევას სახის როგორ ჩვენ დაგვჭირდება გაუმკლავდეთ რა არის 0 მოგვიანებით. 495 00:36:22,740 --> 00:36:32,750 ახლა ჩვენ როგორღაც აქვს გზა ობიექტების Zed მარჯვნივ წერილში. 496 00:36:32,750 --> 00:36:34,920 ახლა ჩვენ გავიარეთ ეს მაგალითები, 497 00:36:34,920 --> 00:36:37,880 ჩვენ სახის ვხედავ როგორ Caesar შესაძლოა მუშაობა. 498 00:36:37,880 --> 00:36:42,640 ხედავთ 2 დამწერლობას და შემდეგ ხედავთ მათ დაიკავეს. 499 00:36:42,640 --> 00:36:44,430 მოდით ვეცადოთ და გამოხატოს, რომ თვალსაზრისით ფორმულა. 500 00:36:44,430 --> 00:36:46,940 ეს ფორმულა ფაქტობრივად გასულ თქვენს Spec, 501 00:36:46,940 --> 00:36:52,070 მაგრამ მოდით სახის გადავხედავთ რა თითოეული ცვლადი ნიშნავს. 502 00:36:52,070 --> 00:36:55,000 ჩვენი საბოლოო ჯამში იქნება ciphertext. 503 00:36:55,000 --> 00:36:58,300 ასე რომ, ეს ნათქვამია, რომ შ ხასიათი ciphertext 504 00:36:58,300 --> 00:37:02,500 აპირებს შეესაბამება შ ხასიათი plaintext. 505 00:37:02,500 --> 00:37:08,130 რომ აზრი იმიტომ, რომ ჩვენ გვინდა ყოველთვის დოლომიტ ეს ყველაფერი მდე. 506 00:37:08,130 --> 00:37:13,480 ასე რომ, ეს იქნება შ ხასიათი ciphertext Plus K, რომელიც ჩვენი გასაღები - 507 00:37:13,480 --> 00:37:17,230 რომ აზრი - და შემდეგ ჩვენ გვაქვს ამ mod 26. 508 00:37:17,230 --> 00:37:19,860 დამახსოვრება უკან, როდესაც ჩვენ გვქონდა Zed 509 00:37:19,860 --> 00:37:24,190 ჩვენ არ გვინდოდა შეღწევას ხასიათი, ამიტომ გვინდოდა mod ეს 510 00:37:24,190 --> 00:37:26,540 და სახის შემაჯამებელი გარშემო ანბანი. 511 00:37:26,540 --> 00:37:33,430 შემდეგ Zed თქვენ წავიდოდა, B, C, D, სანამ შენ მარჯვნივ ნომერი. 512 00:37:33,430 --> 00:37:44,690 ასე რომ, ჩვენ ვიცით, რომ Zed, თუ + 6, რომ მოგვცეს ვ რადგან შემდეგ Zed მოდის, B, C, D, E, F. 513 00:37:44,690 --> 00:37:52,530 ასე რომ გავიხსენოთ, ჩვენ ვიცით, რომ Zed + 6 აპირებს მოგვცეს ვ. 514 00:37:52,530 --> 00:38:03,530 In ASCII ღირებულებები, z არის 122 და F არის 102. 515 00:38:03,530 --> 00:38:10,570 ამიტომ, ჩვენ უნდა მოვძებნოთ რაღაც გზა, რომ ჩვენი Caesar ფორმულა მოგვცეს 102 516 00:38:10,570 --> 00:38:13,590 მიღების შემდეგ წელს 122. 517 00:38:13,590 --> 00:38:19,550 ასე რომ, თუ ჩვენ მხოლოდ გამოიყენოს ეს ფორმულა, ('z' + 6)% 26, რომ რეალურად გაძლევთ 24 518 00:38:19,550 --> 00:38:25,980 რადგან 122 + 6 არის 128, 128% 26 გაძლევთ 24 დარჩენილი. 519 00:38:25,980 --> 00:38:29,140 მაგრამ ეს არ ნიშნავს, ნამდვილად ვ. სწორედ ნამდვილად არ 102. 520 00:38:29,140 --> 00:38:33,590 სწორედ ასევე არ -6 ასო ანბანი. 521 00:38:33,590 --> 00:38:41,550 ამიტომ ბუნებრივია, ჩვენ გვჭირდება გარკვეული გზა tweaking ეს ცოტა. 522 00:38:42,970 --> 00:38:51,340 თვალსაზრისით რეგულარული ანბანი, ჩვენ ვიცით, რომ Z არის 26 წერილი და F არის მე -6. 523 00:38:51,340 --> 00:38:55,460 მაგრამ ჩვენ კომპიუტერულ მეცნიერებაში, ამიტომ ჩვენ ვაპირებთ ინდექსი at 0. 524 00:38:55,460 --> 00:39:00,690 ასეა, მაშინ ნაცვლად z მყოფი ნომერი 26, ჩვენ ვაპირებთ რომ ვთქვათ ნომერი 25 525 00:39:00,690 --> 00:39:02,630 რადგან არის 0. 526 00:39:02,630 --> 00:39:04,770 ახლა მოდით გამოიყენოს ეს ფორმულა. 527 00:39:04,770 --> 00:39:11,710 ჩვენ გვყავს z წარმოდგენილია 25 + 6, რომელიც გაძლევთ 31. 528 00:39:11,710 --> 00:39:15,790 და 31 mod 26 გაძლევთ 5 როგორც ნაშთი. 529 00:39:15,790 --> 00:39:20,500 სწორედ სრულყოფილი, რადგან ჩვენ ვიცით, რომ F არის მე -5 ასო ანბანი. 530 00:39:20,500 --> 00:39:26,400 მაგრამ ეს ჯერ კიდევ არ არის F, არა? ეს ჯერ კიდევ არ არის 102. 531 00:39:26,400 --> 00:39:32,730 ასეა, მაშინ ამ pset, გამოწვევა იქნება ცდილობს გასარკვევად ურთიერთობისათვის 532 00:39:32,730 --> 00:39:36,910 შორის კონვერტირებას შორის ASCII ღირებულებები და ანბანური ინდექსი. 533 00:39:36,910 --> 00:39:40,280 არსებითად, რა თქვენ გსურთ, თქვენ გინდათ რომ დაიწყოს ერთად ASCII ღირებულებების, 534 00:39:40,280 --> 00:39:45,390 მაგრამ შემდეგ გსურთ როგორღაც თარგმნოს რომ შევიდა ანბანური ინდექსი 535 00:39:45,390 --> 00:39:52,610 მაშინ გამოთვლა რა წერილი უნდა იყოს - ძირითადად, რა მისი ანბანური ინდექსი არის 536 00:39:52,610 --> 00:39:57,660 საქართველოს cipher ხასიათი - მაშინ თარგმნოს, რომ თავში ASCII ღირებულებებს. 537 00:39:57,660 --> 00:40:04,870 ასე რომ, თუ თქვენ Whip out თქვენი ASCII მაგიდასთან, მაშინ ცადეთ და იპოვოთ ურთიერთობებს, ვთქვათ, 102 და 5 538 00:40:04,870 --> 00:40:10,440 ან 122 და 25. 539 00:40:12,140 --> 00:40:15,690 ჩვენ მიღებული ჩვენი გასაღები საწყისი ბრძანებათა სტრიქონიდან არგუმენტები, ჩვენ მიღებული plaintext, 540 00:40:15,690 --> 00:40:17,520 ჩვენ enciphered იგი. 541 00:40:17,520 --> 00:40:19,820 ახლა ყველა ჩვენ არ დაუტოვებიათ გააკეთოთ დაბეჭდეთ. 542 00:40:19,820 --> 00:40:22,040 ჩვენ შეგვეძლო ამის გაკეთება რამდენიმე განსხვავებული გზები. 543 00:40:22,040 --> 00:40:24,570 რაც ჩვენ შეეძლო რეალურად ბეჭდვა, როგორც ჩვენ წავიდეთ ერთად. 544 00:40:24,570 --> 00:40:28,250 როგორც ჩვენ iterate მეტი სიმბოლოების ტექსტი, 545 00:40:28,250 --> 00:40:31,660 ჩვენ უბრალოდ უბრალოდ ბეჭდვა უფლება მაშინ, როდესაც ჩვენ გამოვთვალოთ იგი. 546 00:40:31,660 --> 00:40:36,030 გარდა ამისა, თქვენ შეიძლება ასევე ჩაწეროთ იგი array და აქვს მასივი გმირები 547 00:40:36,030 --> 00:40:39,280 და ბოლოს iterate მეტი რომ მთელი მასივი და ამობეჭდოთ. 548 00:40:39,280 --> 00:40:40,980 ასე რომ თქვენ არ რამდენიმე ვარიანტს, რომ. 549 00:40:40,980 --> 00:40:47,280 და მახსოვს, რომ% C იქნება placeholder დასაბეჭდად ხასიათი. 550 00:40:47,280 --> 00:40:50,420 ასე რომ ჩვენ გვაქვს Caesar, და ახლა ჩვენ გადაადგილება, რათა Vigenere, 551 00:40:50,420 --> 00:40:57,580 რომელიც ძალიან გავს Caesar მაგრამ ოდნავ უფრო რთული. 552 00:40:57,580 --> 00:41:03,310 ამიტომ არსებითად ერთად Vigenere არის თქვენ უნდა გადადის სიტყვით. 553 00:41:03,310 --> 00:41:06,510 ასე რომ ნაცვლად ნომერი, თქვენ აპირებს აქვს ტექსტი, 554 00:41:06,510 --> 00:41:09,200 და ისე, რომ აპირებს იმოქმედოს, როგორც თქვენი სიტყვით. 555 00:41:09,200 --> 00:41:14,440 მაშინ, როგორც ყოველთვის, თქვენ აპირებს მიიღოს სწრაფი ამისთვის string საწყისი მომხმარებლის 556 00:41:14,440 --> 00:41:19,050 და შემდეგ encipher და მერე მივცეთ ciphertext უკან. 557 00:41:19,050 --> 00:41:24,650 ასე რომ, როგორც ვთქვი, ეს ძალიან ჰგავს Caesar, გარდა ნაცვლად გადავიდა მიერ გარკვეული რაოდენობა, 558 00:41:24,650 --> 00:41:30,620 პუნქტების რეალურად შეიცვლება ყველა დროის ხასიათის ხასიათი. 559 00:41:30,620 --> 00:41:34,890 წარმოდგენა, რომ რეალურ რაოდენობასთან გადაეტანა, ის წარმოდგენილია კლავიატურის ასოები. 560 00:41:34,890 --> 00:41:43,150 ასე რომ, თუ თქვენ შევა ცვლის, მაგალითად, მაშინ, რომ შეესაბამება ცვლის 0. 561 00:41:43,150 --> 00:41:45,900 ასე რომ კიდევ ერთხელ თავში ანბანური ინდექსი. 562 00:41:45,900 --> 00:41:49,100 რა შეიძლება იყოს სასარგებლო თუ თქვენ ხედავს, რომ ჩვენ რეალურად საქმე ASCII ღირებულებები 563 00:41:49,100 --> 00:41:51,790 ისევე როგორც წერილებს, ასევე ანბანური ინდექსი, 564 00:41:51,790 --> 00:41:58,020 იქნებ მოძებნის ან საკუთარი ASCII მაგიდასთან, რომელიც აჩვენებს ანბანური ინდექსი 0 მეშვეობით 25, 565 00:41:58,020 --> 00:42:03,750 მეშვეობით z, და ASCII ღირებულებებს ისე, რომ თქვენ შეიძლება სახის ვხედავ ურთიერთობისათვის 566 00:42:03,750 --> 00:42:07,020 და ესკიზის გარეთ და ცდილობენ და გამოძებნოს შაბლონებს. 567 00:42:07,020 --> 00:42:11,010 ანალოგიურად, თუ თქვენ გადასვლის დროს გარკვეული ინსტანციის მიერ ვ - 568 00:42:11,010 --> 00:42:21,110 და ეს არის ან ამას ან ზედა F - მაშინ რომ შეესაბამება 5. 569 00:42:21,110 --> 00:42:24,180 ჩვენ კარგი აქამდე? 570 00:42:25,770 --> 00:42:30,050 ფორმულა Vigenere ოდნავ განსხვავებული. 571 00:42:30,050 --> 00:42:32,960 ძირითადად, ხედავთ, რომ ისევე, როგორც კეისარი 572 00:42:32,960 --> 00:42:37,390 გარდა ნაცვლად მხოლოდ K გვაქვს K ინდექსი კ. 573 00:42:37,390 --> 00:42:44,810 გაითვალისწინეთ, რომ ჩვენ არ იყენებს მე რადგან არსებითად, სიგრძით სიტყვით 574 00:42:44,810 --> 00:42:49,850 არ არის აუცილებლად სიგრძე ჩვენი ciphertext. 575 00:42:49,850 --> 00:42:56,130 ეს იქნება ცოტა ნათელი, როდესაც ჩვენ დავინახავთ, რომ მაგალითად მე ცოტა მოგვიანებით. 576 00:42:56,130 --> 00:43:03,160 ძირითადად, თუ თქვენ აწარმოებს თქვენი პროგრამის სიტყვით of ohai, 577 00:43:03,160 --> 00:43:08,560 მაშინ ეს იმას ნიშნავს, რომ ყოველ ჯერზე, ohai იქნება თქვენი ცვლა. 578 00:43:08,560 --> 00:43:11,060 ასე რომ დამოკიდებულია რა პოზიცია, თქვენი სიტყვით, 579 00:43:11,060 --> 00:43:15,800 თქვენ აპირებს გადაეტანა თქვენი გარკვეული ciphertext ხასიათი რომ თანხა. 580 00:43:15,800 --> 00:43:19,630 ისევ, ისევე, როგორც კეისრის, ჩვენ გვინდა დავრწმუნდეთ, რომ ჩვენ შევინარჩუნოთ კაპიტალიზაცია რამ 581 00:43:19,630 --> 00:43:22,900 და ჩვენ მხოლოდ encipher წერილებს, არ გმირები ან სივრცეებს. 582 00:43:22,900 --> 00:43:26,330 ასე გამოიყურება თავში Caesar on ფუნქციებს, რომ თქვენ შეიძლება არ გამოიყენება, 583 00:43:26,330 --> 00:43:32,570 ისე, რომ თქვენ გადაწყვიტეთ როგორ გადაეტანა ნივთები, და ვრცელდება, რომ თქვენი პროგრამა აქ. 584 00:43:32,570 --> 00:43:35,260 მოდით სამოქმედო გეგმა გარეთ. 585 00:43:35,260 --> 00:43:39,680 ჩვენ გვყავს plaintext რომ ჩვენ მიღებული საწყისი მომხმარებლისთვის GetString 586 00:43:39,680 --> 00:43:44,090 ამბობდა, ეს ... არის CS50! 587 00:43:44,090 --> 00:43:47,090 მაშინ ჩვენ გვაქვს სიტყვით of ohai. 588 00:43:47,090 --> 00:43:50,930 პირველი 4 სიმბოლოები საკმაოდ მარტივია. 589 00:43:50,930 --> 00:43:55,580 ჩვენ ვიცით, რომ T აპირებს გადაინაცვლებს მიერ o, 590 00:43:55,580 --> 00:44:01,990 მაშინ თ აპირებს გადაინაცვლებს მიერ H, I აპირებს გადაინაცვლებს მიერ. 591 00:44:01,990 --> 00:44:04,610 აქ თქვენ ხედავთ, რომ წარმოადგენს 0, 592 00:44:04,610 --> 00:44:11,940 ასეა, მაშინ ბოლომდე ღირებულება რეალურად მხოლოდ იმავე წერილში, როგორც ადრე. 593 00:44:11,940 --> 00:44:15,250 მაშინ ჯერ არის გადაინაცვლებს ი. 594 00:44:15,250 --> 00:44:19,370 მაგრამ მაშინ თქვენ ამ პერიოდებში აქ. 595 00:44:19,370 --> 00:44:25,960 ჩვენ არ გვინდა, რომ encipher, ასეა, მაშინ ჩვენ არ შეცვლის მას არაფერი 596 00:44:25,960 --> 00:44:31,280 და უბრალოდ ამობეჭდოთ პერიოდში უცვლელი. 597 00:44:31,280 --> 00:44:38,020 [სტუდენტი] მე არ მესმის, როგორ თქვენ იცით, რომ ეს არის გადაინაცვლებს მიერ - სად - >> ოჰ, უკაცრავად. 598 00:44:38,020 --> 00:44:41,620 ზედა აქ ხედავთ, რომ ბრძანება ხაზი არგუმენტი ohai აქ, 599 00:44:41,620 --> 00:44:43,740 რომ იქნება სიტყვით. 600 00:44:43,740 --> 00:44:49,550 და ა.შ. ძირითადად, თქვენ Cycling მეტი სიმბოლოების სიტყვით. 601 00:44:49,550 --> 00:44:52,020 [სტუდენტი] ასე o იქნება გადასვლის იგივე - 602 00:44:52,020 --> 00:44:56,260 ამიტომ o შეესაბამება გარკვეული რაოდენობის ანბანი. 603 00:44:56,260 --> 00:44:58,400 [სტუდენტი] მარჯვენა. მაგრამ სად უნდა გაიტანოთ CS50 ნაწილი? 604 00:44:58,400 --> 00:45:02,540 Oh. სწორედ იმ GetString აქ თქვენ მოსწონს, "მომეცი string to encode". 605 00:45:02,540 --> 00:45:07,510 [სტუდენტი] ისინი აპირებენ, რომ არგუმენტი გადაეტანა მიერ 606 00:45:07,510 --> 00:45:09,380 და მაშინ თქვენ გთხოვოთ პირველი სიმებიანი. >> Yeah. 607 00:45:09,380 --> 00:45:12,440 ასე რომ, როდესაც ისინი პროგრამის გაშვება, ისინი აპირებენ მოიცავს სიტყვით 608 00:45:12,440 --> 00:45:14,740 მათი ბრძანება ხაზი არგუმენტები, როდესაც ისინი გაუშვით. 609 00:45:14,740 --> 00:45:19,740 მაშინ ერთხელ თქვენ შემოწმდება, რომ ისინი რეალურად მოცემული 1 და არა, არანაკლებ, 610 00:45:19,740 --> 00:45:23,750 მაშინ თქვენ აპირებს უბიძგონ მათ სიმებიანი, ვთქვათ, "მომეცი string." 611 00:45:23,750 --> 00:45:27,630 ასე რომ, სადაც ამ შემთხვევაში ისინი მოცემული, ეს ... არის CS50! 612 00:45:27,630 --> 00:45:32,090 ასეა, მაშინ თქვენ აპირებს გამოიყენოს რომ და გამოიყენოთ ohai და iterate დასრულდა. 613 00:45:32,090 --> 00:45:38,200 გაითვალისწინეთ, რომ აქ ჩვენ გამოტოვებენ მეტი encrypting პერიოდები, 614 00:45:38,200 --> 00:45:51,660 მაგრამ თვალსაზრისით ჩვენი პოზიციის ohai, შემდეგი ერთი გამოვიყენეთ o. 615 00:45:51,660 --> 00:45:54,990 ამ შემთხვევაში ეს ცოტა რთული ვხედავ რადგან ისინი 4, 616 00:45:54,990 --> 00:45:57,710 მოდით გავაგრძელოთ bit. Just გამყარებაში ჩემთან ერთად აქ. 617 00:45:57,710 --> 00:46:02,960 მაშინ მე და s, რომლებიც შემდეგ თარგმნა o და თ შესაბამისად. 618 00:46:02,960 --> 00:46:09,370 მაშინ ჩვენ გვაქვს სივრცეში და ასე შემდეგ ჩვენ ვიცით, რომ ჩვენ არ ვაპირებთ encipher სივრცეებს. 619 00:46:09,370 --> 00:46:18,930 მაგრამ ცნობა ნაცვლად აპირებს ამ ადგილზე სწორედ აქ, 620 00:46:18,930 --> 00:46:28,330 ჩვენ encrypting მიერ - არ ვიცი, თუ თქვენ ხედავთ, რომ - სწორედ აქ. 621 00:46:28,330 --> 00:46:33,710 ამიტომ არ მომწონს თქვენ ნამდვილად წინასწარ, ვთქვათ, o მიდის აქ, თ მიდის აქ, 622 00:46:33,710 --> 00:46:39,200 აქ, მე აქ, o, H,, I, O, თ,, მე. თქვენ არ გაგვაჩნია. 623 00:46:39,200 --> 00:46:43,760 თქვენ მხოლოდ გადაიტანოს თქვენი პოზიცია სიტყვით 624 00:46:43,760 --> 00:46:51,020 როდესაც თქვენ იცით, რომ თქვენ რეალურად იქნება encrypting ფაქტობრივი წერილში. 625 00:46:51,020 --> 00:46:53,920 ამჯამად ასეთი სახის აზრი? 626 00:46:53,920 --> 00:46:55,800 Okay. 627 00:46:56,490 --> 00:46:58,500 ასე რომ რამოდენიმე გადმონაშთებისადმი. 628 00:46:58,500 --> 00:47:03,760 თქვენ გვინდა დავრწმუნდეთ, რომ თქვენ მხოლოდ წინასწარ შემდეგი წერილით თქვენს სიტყვით 629 00:47:03,760 --> 00:47:06,390 თუ ხასიათი თქვენს plaintext არის წერილში. 630 00:47:06,390 --> 00:47:09,120 ასე რომ ვთქვათ, ჩვენ at o. 631 00:47:09,120 --> 00:47:19,310 ჩვენ შეამჩნევთ, რომ შემდეგი სიმბოლო, მე მაჩვენებელი plaintext, არის ნომერი, მაგალითად. 632 00:47:19,310 --> 00:47:31,630 მაშინ ჩვენ არ უწყობს j, ინდექსი ჩვენი სიტყვით, სანამ მივაღწევთ სხვა წერილში. 633 00:47:31,630 --> 00:47:36,230 ერთხელ, თქვენ ასევე გვინდა დავრწმუნდეთ, რომ თქვენ wraparound დასაწყისში სიტყვით 634 00:47:36,230 --> 00:47:37,770 როდესაც თქვენ დასასრულს იგი. 635 00:47:37,770 --> 00:47:42,030 თუ ხედავთ აქ ვართ საათზე მე, შემდეგი ერთი უნდა იყოს პ. 636 00:47:42,030 --> 00:47:47,690 ასე რომ გსურთ გამოძებნოს გზა, რომელსაც აქვს უნარი wraparound დასაწყისში თქვენი სიტყვით 637 00:47:47,690 --> 00:47:49,470 ყოველ ჯერზე, რომ თქვენ მიღწევა ბოლომდე. 638 00:47:49,470 --> 00:47:55,040 და ა.შ. კიდევ ერთხელ, თუ რა სახის ოპერატორი სასარგებლოა, რომ საქმე შესაფუთი გარშემო? 639 00:47:56,630 --> 00:47:59,840 მსგავსად დათვლა off მაგალითად. 640 00:47:59,840 --> 00:48:03,710 [სტუდენტი] პროცენტს ნიშანი. >> Yeah, პროცენტი ნიშანი, რომელიც modulo. 641 00:48:03,710 --> 00:48:11,250 ამიტომ modulo მოვა მოსახერხებელი აქ როდესაც გსურთ გადაიტანოთ მეტი ინდექსი თქვენს ohai. 642 00:48:11,250 --> 00:48:17,700 და მხოლოდ სწრაფი მინიშნება: შეეცადეთ ვფიქრობ შესაფუთი მეტი სიტყვით ცოტა მოსწონს დათვლის off, 643 00:48:17,700 --> 00:48:23,590 აქ თუ იქ 3 ჯგუფები, მე -4 პირი, 644 00:48:23,590 --> 00:48:30,610 მათი რიცხვი, რომ მათი თქმით, 4 mod 3, რომელიც 1. 645 00:48:30,610 --> 00:48:32,880 ასე რომ ცადეთ და ვფიქრობ, რომ გზა. 646 00:48:34,770 --> 00:48:42,740 როგორც თქვენ ნახეთ ფორმულაში, სადაც თქვენ გაქვთ ci და შემდეგ pi მაგრამ შემდეგ kj, 647 00:48:42,740 --> 00:48:44,700 თქვენ გვინდა დავრწმუნდეთ, რომ თქვენ ტრეკზე იმ. 648 00:48:44,700 --> 00:48:47,580 თქვენ არ გჭირდებათ ეძახით მე, თქვენ არ გჭირდებათ ეძახით j, 649 00:48:47,580 --> 00:48:53,270 მაგრამ თქვენ გვინდა დავრწმუნდეთ, რომ თქვენ ტრეკზე პოზიცია, რომ თქვენ დროს თქვენს plaintext 650 00:48:53,270 --> 00:48:55,790 ისევე როგორც პოზიცია, რომ თქვენ დროს თქვენს სიტყვით 651 00:48:55,790 --> 00:48:59,840 რადგან ეს ის აუცილებლად არ იქნება იგივე. 652 00:48:59,840 --> 00:49:06,400 არა მარტო სიტყვით - ეს შეიძლება იყოს სრულიად განსხვავებული სიგრძე, ვიდრე თქვენი plaintext. 653 00:49:06,400 --> 00:49:09,140 ასევე, თქვენი plaintext, არის ციფრები და სიმბოლოები, 654 00:49:09,140 --> 00:49:14,450 ამიტომ არ აპირებს შესანიშნავად ემთხვევა up ერთად. დიახ. 655 00:49:14,450 --> 00:49:19,280 [სტუდენტი] არსებობს ფუნქცია შეცვალოს შემთხვევაში? 656 00:49:19,280 --> 00:49:24,530 შეგიძლიათ შეცვალოთ კაპიტალის? >> ჰო, იქ ნამდვილად არის. 657 00:49:24,530 --> 00:49:27,890 თქვენ შეგიძლიათ შეამოწმოთ out - მჯერა, toupper, ყველა 1 სიტყვა. 658 00:49:30,650 --> 00:49:36,310 მაგრამ როდესაც თქვენ ცდილობთ cipher რამ და შეინარჩუნოს ტექსტი, 659 00:49:36,310 --> 00:49:39,350 ეს საუკეთესო ძირითადად ჰქონდეს ცალკეული შემთხვევები. 660 00:49:39,350 --> 00:49:42,040 თუ ეს ზედა, მაშინ გსურთ გადაიტანოს ამ 661 00:49:42,040 --> 00:49:46,460 რადგან თქვენს ფორმულა, როდესაც თქვენ ვიხსენებთ თუ როგორ უნდა სახის გადასვლა 662 00:49:46,460 --> 00:49:50,900 interchangeably შორის ASCII გზას წარმოადგენს ნომრები 663 00:49:50,900 --> 00:49:55,020 და ფაქტობრივი ანბანური ინდექსი, ჩვენ გვინდა დავრწმუნდეთ 664 00:49:55,020 --> 00:50:01,850 იქ იქნება გარკვეული სახის ნიმუში, რომ თქვენ აპირებს გამოიყენოს. 665 00:50:01,850 --> 00:50:04,580 კიდევ ერთი შენიშვნა ნიმუში, რეალურად. 666 00:50:04,580 --> 00:50:07,250 თქვენ ვაპირებთ აუცილებლად იქნება საქმე ნომრები. 667 00:50:07,250 --> 00:50:11,280 სცადეთ არ გამოიყენოს მაგიური ციფრები, რომელიც მაგალითად სტილის. 668 00:50:11,280 --> 00:50:18,470 ასე ვთქვათ, გსურთ ყოველ ჯერზე ცვლა რაღაც მიერ like - 669 00:50:18,470 --> 00:50:22,400 Okay, ასე მინიშნება, კიდევ ერთი სპოილერი არის, როდესაც თქვენ უნდა გადასვლის რაღაც 670 00:50:22,400 --> 00:50:26,310 მიერ გარკვეული თანხა, ცდილობენ არ წარმოადგენს, რომ რეალურ რაოდენობასთან 671 00:50:26,310 --> 00:50:32,810 არამედ შეეცდება და ვხედავ თუ შეგიძლიათ გამოიყენოთ ASCII ღირებულების, რომელიც სახის უფრო გრძნობა. 672 00:50:32,810 --> 00:50:35,470 კიდევ ერთი შენიშვნა: იმის გამო, რომ ჩვენ საქმე გვაქვს ფორმულები, 673 00:50:35,470 --> 00:50:41,200 მიუხედავად იმისა, რომ თქვენი TF იქნება სახის ვიცით რა ნიმუში თქვენ შეიძლება გამოყენებით, 674 00:50:41,200 --> 00:50:44,430 იმისათვის, რომ თქვენს კომენტარები სახის ახსნას ლოგიკას, ისევე, 675 00:50:44,430 --> 00:50:51,880 "მე გამოყენებისას ნიმუში, რადგან ..." და სახის ახსნას ნიმუში succinctly თქვენს კომენტარები. 676 00:50:54,090 --> 00:50:58,990 [ეს იყო walkthrough 2] თუ არ არსებობს სხვა სახის კითხვებით, მაშინ მე უბრალოდ დარჩენა აქ ცოტა. 677 00:50:58,990 --> 00:51:04,370 წარმატებებს გისურვებთ თქვენი pset 2: Crypto და მადლობა მობრძანებისათვის. 678 00:51:06,070 --> 00:51:08,620 [სტუდენტი] დიდი მადლობა. >> მადლობა. 679 00:51:09,220 --> 00:51:10,800 [მედია შემოსული INTRO]