1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: გილოცავთ წლის დამთავრების თქვენი 3 00:00:11,270 --> 00:00:13,200 პირველი რამდენიმე C პროგრამებს. 4 00:00:13,200 --> 00:00:16,379 მე ვიცი, რომ თქვენი პირველი foray შევიდა C სინტაქსი შეიძლება daunting. 5 00:00:16,379 --> 00:00:20,060 მაგრამ გარწმუნებთ, წლის ბოლოს რა თქმა უნდა, თქვენ გექნებათ შევხედოთ 6 00:00:20,060 --> 00:00:23,870 პირველი რამდენიმე დავალებები და დაასრულებს მათ წუთებში. 7 00:00:23,870 --> 00:00:27,830 >> ახლა, როდესაც თქვენ მიღების უფრო იცნობს ერთად სინტაქსის, მოდით მისაღებად Caesar. 8 00:00:27,830 --> 00:00:31,720 In კეისრისა შესახებ წარადგენენ მთელი რიცხვი გასაღები როგორც ბრძანების 9 00:00:31,720 --> 00:00:35,300 არგუმენტი, მაშინ შევა ბარის ტექსტური შეტყობინება ბრძანებათა ზოლში. 10 00:00:35,300 --> 00:00:38,050 პროგრამა შემდეგ encipher ტექსტის და ბეჭდვითი 11 00:00:38,050 --> 00:00:40,020 მათი ciphertext გაგზავნა. 12 00:00:40,020 --> 00:00:42,980 >> Enciphering for ცეზარ საკმაოდ მარტივია. 13 00:00:42,980 --> 00:00:46,455 გადაიტანოს ყოველ წერილში, მათ ძირითადი ტექსტი, რომელსაც გასაღები. 14 00:00:46,455 --> 00:00:49,220 შედეგად, ასევე, საკმაოდ არასაიმედო. 15 00:00:49,220 --> 00:00:53,850 მაგრამ განხორციელების ცეზარ გააცნობს გვაძლევს ASCIIMath და მასივი მონაცემები 16 00:00:53,850 --> 00:00:54,460 სტრუქტურებში. 17 00:00:54,460 --> 00:00:57,510 მივიღებთ, რათა უფრო რთული ciphers მოგვიანებით. 18 00:00:57,510 --> 00:01:01,680 ერთად Caesar გასაღები 2, წერილში in ძირითადი ტექსტი იქნება მიერ წარმოდგენილი 19 00:01:01,680 --> 00:01:07,580 ასო C ciphertext რადგან C არის ორი ასო შემდეგ ა B იქნება 20 00:01:07,580 --> 00:01:12,450 რომელიც წარმოდგენილია D და C-ე მიმართ ბოლოს ანბანი, W არის 21 00:01:12,450 --> 00:01:18,550 მიერ წარმოდგენილი Y და X ზ მაგრამ Y ჯერ არ ორი ასო შემდეგ, ასე 22 00:01:18,550 --> 00:01:21,070 ciphers მართავს გარშემო ანბანი. 23 00:01:21,070 --> 00:01:27,190 Y მარტივი ტექსტის ამდენად მიერ წარმოდგენილი ამ ciphertext და Z ბ მას შეუძლია 24 00:01:27,190 --> 00:01:32,080 დაეხმაროს ნახატის ცეზარ Cypher მოსწონს უწყვეტი დამწერლობა საჭე. 25 00:01:32,080 --> 00:01:35,760 >> დან encipher მათი ტექსტი, შესახებ შევა ორი არგუმენტები 26 00:01:35,760 --> 00:01:37,090 შევიდა ბრძანება ხაზი - 27 00:01:37,090 --> 00:01:40,010 . / Caesar მოჰყვა გასაღები. 28 00:01:40,010 --> 00:01:44,710 როგორც ყოველთვის, ჩვენ ვერ ვენდობით შესახებ სრულიად შესვლის შეტანის რომლებიც 29 00:01:44,710 --> 00:01:45,800 აზრი ჩვენი პროგრამა. 30 00:01:45,800 --> 00:01:50,670 ასე რომ, ჩვენ უნდა შეამოწმოს მათი ბრძანების ხაზი შეყვანა. 31 00:01:50,670 --> 00:01:57,285 >> ნაცვლად გამოყენებით int მთავარი ბათილად, ჩვენ გამოყენებით int, მთავარ int argc, სიმებიანი argv. 32 00:01:57,285 --> 00:02:01,730 მთელი ცვლადი argc წარმოადგენს რიგი არგუმენტები შევიდა 33 00:02:01,730 --> 00:02:02,880 ბრძანების მითითებით. 34 00:02:02,880 --> 00:02:09,070 და argv არის მასივი, ან ვფიქრობ, რომ ეს სიაში, რა არგუმენტები გავიდა სისტემაში 35 00:02:09,070 --> 00:02:12,000 >> ასე რომ, ცეზარ, როგორ უნდა შეამოწმოს მომხმარებლის input? 36 00:02:12,000 --> 00:02:15,870 ასევე, ისინი უნდა იყოს მხოლოდ შესვლის ორი ბრძანება ხაზი არგუმენტები - 37 00:02:15,870 --> 00:02:18,150 . / Caesar და გასაღები. 38 00:02:18,150 --> 00:02:22,340 ასე რომ, თუ argc არ არის 2, ეს ნიშნავს, რომ მათ არც დაავიწყდა გასაღები და მხოლოდ 39 00:02:22,340 --> 00:02:27,230 შევიდა. / caesar, ან არ შევიდა მრავალჯერადი გასაღებები. 40 00:02:27,230 --> 00:02:29,770 >> თუ ეს იმ შემთხვევაში, მაშინ თქვენ გვინდა ბეჭდვა ინსტრუქციები 41 00:02:29,770 --> 00:02:30,910 და გასვლა პროგრამა. 42 00:02:30,910 --> 00:02:34,320 ისინი უნდა შევეცადოთ ერთხელ ბრძანების ხაზი. 43 00:02:34,320 --> 00:02:37,430 მაგრამ მაშინაც კი, თუ argc 2, თქვენ უნდა თუ არა ისინი 44 00:02:37,430 --> 00:02:39,100 გაძლევთ სწორი გასაღები. 45 00:02:39,100 --> 00:02:40,730 იყიდება ცეზარ, საჭიროა მთელი რიცხვი. 46 00:02:40,730 --> 00:02:43,260 მაგრამ argv არის მასივი strings. 47 00:02:43,260 --> 00:02:46,490 როგორ ხელმისაწვდომობის, რომ გასაღები? 48 00:02:46,490 --> 00:02:47,850 >> სწრაფი შევხედოთ მასივების - 49 00:02:47,850 --> 00:02:51,410 მონაცემთა სტრუქტურები, რომ გამართავს მრავალჯერადი ღირებულებები იგივე მონაცემების ტიპის. 50 00:02:51,410 --> 00:02:55,350 შესვლის არიან ნულოვანი ინდექსირებულ, რაც იმას ნიშნავს, რომ პირველი ელემენტი ინდექსი ნულოვანი 51 00:02:55,350 --> 00:03:00,260 და ბოლო ელემენტს წარმოადგენს ინდექსი ზომა მინუს 1, სადაც ზომა არის რიგი 52 00:03:00,260 --> 00:03:02,850 ელემენტების მასივი. 53 00:03:02,850 --> 00:03:07,380 >> თუ მე გამოაცხადა ახალი სიმებიანი მასივი საფოსტო ყუთი სიგრძის 3, ვიზუალურად, მას 54 00:03:07,380 --> 00:03:08,570 ასე გამოიყურება. 55 00:03:08,570 --> 00:03:11,520 სამი კონტეინერი სიმებიანი , გვერდით. 56 00:03:11,520 --> 00:03:15,445 წვდომის ნებისმიერი ელემენტის, ამას სახელი საქართველოს მასივი, შემდეგ კი მიუთითებს იმაზე, 57 00:03:15,445 --> 00:03:18,080 ინდექსი კვადრატულ ფრჩხილებში. 58 00:03:18,080 --> 00:03:21,610 აქ, მე მინიჭების ღირებულება ყოველი ელემენტის, ისევე როგორც მე ყველაფერს გააკეთებს ნებისმიერი 59 00:03:21,610 --> 00:03:24,310 სხვა სიმებიანი განსხვავებულია. 60 00:03:24,310 --> 00:03:29,020 >> ასე რომ, რათა შეამოწმონ ჩვენი ბრძანების ხაზი არგუმენტები, რიგში, ჩვენ უნდა გავაკეთოთ არის ხელმისაწვდომობის 61 00:03:29,020 --> 00:03:31,690 მარჯვენა ელემენტს argv მასივი. 62 00:03:31,690 --> 00:03:37,360 თუ მომხმარებლის შევიდა. / Blastoff გუნდი სარაკეტო შევიდა ტერმინალში, argv 0 აკეთებთ 63 00:03:37,360 --> 00:03:38,950 იყოს. / blastoff. 64 00:03:38,950 --> 00:03:45,010 argv იქნება გუნდი და Arg2 იქნებოდა სარაკეტო. 65 00:03:45,010 --> 00:03:47,670 >> ახლა, ჩვენ შეუძლია ჩვენი გასაღები, ჩვენ მაინც უნდა 66 00:03:47,670 --> 00:03:49,040 დარწმუნებული ვარ, რომ ეს სწორი. 67 00:03:49,040 --> 00:03:51,060 ჩვენ უნდა გარდაქმნას იგი მთელი რიცხვი. 68 00:03:51,060 --> 00:03:54,680 მაგრამ ჩვენ შეგვიძლია არა მხოლოდ მიცემული მოსწონს ჩვენ გავაკეთეთ ადრე. 69 00:03:54,680 --> 00:03:58,800 საბედნიეროდ, რომ Y ფუნქციის ზრუნავს ამ ჩვენთვის და კიდევ დააბრუნებს 0 70 00:03:58,800 --> 00:04:02,110 თუ სიმებიანი არ შეიძლება მოაქცია შევიდა რიცხვი. 71 00:04:02,110 --> 00:04:04,450 ეს მდე თქვენ, თუმცა, მართალი გითხრათ შესახებ, თუ რატომ არ 72 00:04:04,450 --> 00:04:06,220 მოდით პროგრამის გაგრძელება. 73 00:04:06,220 --> 00:04:10,710 მაღაზიის შედეგია, რომ Y in მთელი რიცხვი, და იქ თქვენ გაქვთ თქვენი გასაღები. 74 00:04:10,710 --> 00:04:12,070 შემდეგი ნაწილი მარტივია. 75 00:04:12,070 --> 00:04:15,940 მოთხოვნა მათი ძირითადი ტექსტი, რაც იქნება მონაცემთა ტიპის სიმებიანი. 76 00:04:15,940 --> 00:04:18,339 საბედნიეროდ ჩვენთვის, ყველა inputted strings მოქმედებს. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> ახლა, როდესაც ჩვენ გვაქვს ყველა საჭირო შეტანის ეხლა შესახებ, დროა ჩვენთვის 79 00:04:24,760 --> 00:04:26,520 encipher მათი გაგზავნა. 80 00:04:26,520 --> 00:04:29,200 კონცეფცია Caesar მარტივია საკმარისი გასაგებია. 81 00:04:29,200 --> 00:04:33,750 მაგრამ როგორ ჯერ თქვენს კომპიუტერში ვიცი, რომელიც წერილების შედეგად მოსული ერთმანეთს? 82 00:04:33,750 --> 00:04:36,100 >> აქ არის ის, სადაც ASCII მაგიდასთან მოდის შემოსული 83 00:04:36,100 --> 00:04:39,420 ყველა ხასიათი აქვს მთელი რიცხვი ნომერი არის. 84 00:04:39,420 --> 00:04:41,380 Capital არის 65. 85 00:04:41,380 --> 00:04:43,310 Capital B არის 66. 86 00:04:43,310 --> 00:04:45,260 ამას არის 97. 87 00:04:45,260 --> 00:04:47,590 მხედრულ ბ არის 98. 88 00:04:47,590 --> 00:04:50,770 მაგრამ პერსონაჟების არ შემოიფარგლება უბრალოდ ანბანურ ნომრები. 89 00:04:50,770 --> 00:04:56,020 მაგალითად, @ სიმბოლო არის ASCII ნომერი 64. 90 00:04:56,020 --> 00:04:59,690 >> სანამ საქმე მთელი ტექსტი, მოდით თითქოს ჩვენ უბრალოდ უნდა გადაიტანოს 91 00:04:59,690 --> 00:05:01,220 ერთი ხასიათი. 92 00:05:01,220 --> 00:05:04,640 ასევე, ჩვენ მხოლოდ გვინდა გადაიტანოს ფაქტობრივი წერილები ძირითადი ტექსტი, არ 93 00:05:04,640 --> 00:05:06,020 ასო, ან ნომრები. 94 00:05:06,020 --> 00:05:09,100 ასე რომ, პირველი, რაც ჩვენ გვინდა შეამოწმოს არის თუ არა ხასიათი არის 95 00:05:09,100 --> 00:05:10,430 ანბანი. 96 00:05:10,430 --> 00:05:14,460 >> ფუნქციის isalpha აკეთებს ეს ჩვენ და დააბრუნებს ლოგიკური - 97 00:05:14,460 --> 00:05:18,570 ჭეშმარიტი, თუ პერსონაჟი არის წერილი, ცრუ თუ სხვა რამ. 98 00:05:18,570 --> 00:05:22,270 ორი სხვა სასარგებლო ფუნქცია isupper და islower, ერთად 99 00:05:22,270 --> 00:05:23,860 თვითმმართველობის განმარტებითი სახელები. 100 00:05:23,860 --> 00:05:27,370 ისინი TRUE თუ მოცემული ხასიათი არის ზედა ან ამას, 101 00:05:27,370 --> 00:05:28,740 შესაბამისად. 102 00:05:28,740 --> 00:05:33,770 მას შემდეგ, რაც ისინი Booleans, ისინი სასარგებლო გამოიყენოთ როგორც პირობებს. 103 00:05:33,770 --> 00:05:38,310 >> თუ isalpha ბრუნდება ასეა, თქვენ უნდა გადაიტანოს, რომ ხასიათი გასაღები. 104 00:05:38,310 --> 00:05:43,750 მოდით ღიაა ASCIIMath და გავაკეთოთ ზოგიერთი ASCII მათემატიკის. 105 00:05:43,750 --> 00:05:48,700 გამოყენება ძალიან ჰგავს გამოყენება ამისთვის ცეზარ და იღებს გასაღები ზე 106 00:05:48,700 --> 00:05:50,870 ბრძანების მითითებით. 107 00:05:50,870 --> 00:05:59,590 >> თუ მე აწარმოებს ASCIIMath 5, როგორც ჩანს, რომ დაამატოთ 5 და ეს მაძლევს წერილი ვ და 108 00:05:59,590 --> 00:06:01,260 ჩვენებისას ASCII ღირებულება. 109 00:06:01,260 --> 00:06:04,090 მოდით შევხედოთ პროგრამა. 110 00:06:04,090 --> 00:06:11,820 >> ალბათ საინტერესოა, სწორედ აქ, ამიტომ წერილი რიცხვი, როდესაც ეს 111 00:06:11,820 --> 00:06:14,330 აშკარად, ასევე, წერილში. 112 00:06:14,330 --> 00:06:17,690 გამოდის, რომ გმირები და რიცხვებით არის ურთიერთშემცვლელნი. 113 00:06:17,690 --> 00:06:21,730 გამოსული წერილი ერთ ციტატა ნიშნები, მთელი შენახვა შეუძლია 114 00:06:21,730 --> 00:06:25,390 ASCII ღირებულება კაპიტალი ა ფრთხილად, თუმცა. 115 00:06:25,390 --> 00:06:27,150 თქვენ უნდა ერთ ტანსაცმელი. 116 00:06:27,150 --> 00:06:31,260 გარეშე ერთ გაცემა ნიშნების, შემდგენელი რომ ვეძებოთ ცვლადი 117 00:06:31,260 --> 00:06:35,510 დაასახელა და არა ხასიათი. 118 00:06:35,510 --> 00:06:42,140 >> მერე დავამატებთ წერილი და გასაღები, შენახვისა თანხა int ცვლადები შედეგი. 119 00:06:42,140 --> 00:06:47,740 მიუხედავად იმისა, რომ შედეგი არის მონაცემთა ტიპის მთელი რიცხვი, ჩემი printf განაცხადი იყენებს 120 00:06:47,740 --> 00:06:50,370 % C placeholder for სიმბოლოს. 121 00:06:50,370 --> 00:06:54,530 ასე რომ, პროგრამა ბეჭდავს ხასიათი ასოცირდება რიცხვი შედეგი. 122 00:06:54,530 --> 00:07:00,400 და რადგან ჩვენ ნაბეჭდი რიცხვი ფორმა, ასევე გამოყენებით% d, ჩვენ ვხედავთ 123 00:07:00,400 --> 00:07:02,110 ნომერი ასევე. 124 00:07:02,110 --> 00:07:04,450 ასე რომ, ახლა თქვენ ხედავთ, რომ ჩვენ მკურნალობა გმირები და 125 00:07:04,450 --> 00:07:06,980 მთელი რიცხვები, და პირიქით. 126 00:07:06,980 --> 00:07:12,205 >> მოდით ტესტი out ASCIIMath რამდენიმე უფრო გამოყენებით 25 როგორც გასაღები. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 მივიღებთ წერილი z. 129 00:07:17,090 --> 00:07:19,750 ახლა ჩვენ ვცდილობთ 26. 130 00:07:19,750 --> 00:07:25,600 ჩვენ გვინდა ამ წერილს, მაგრამ ნაცვლად მივიღებთ მარცხენა bracket. 131 00:07:25,600 --> 00:07:29,490 ასე რომ, ცხადია, მხოლოდ და დასძინა გასაღები წერილი ამას არ გააკეთებს. 132 00:07:29,490 --> 00:07:32,780 ჩვენ უნდა გაერკვნენ, ფორმულა გადაიტანოთ გარშემო ანბანი, არა ჩვენი 133 00:07:32,780 --> 00:07:34,570 მაგალითად დასაწყისში გააკეთა. 134 00:07:34,570 --> 00:07:38,520 >> ფორმულა კეისრის ცვლის ასეთია. 135 00:07:38,520 --> 00:07:42,750 გ შეადგენს ჟ პლუს ლ modulo 26. 136 00:07:42,750 --> 00:07:46,040 გახსოვდეთ, რომ modulo არის სასარგებლო ოპერაცია, რომელიც გვაძლევს დარჩენილი 137 00:07:46,040 --> 00:07:49,880 გამყოფი ერთი რიცხვი მიერ სხვა. 138 00:07:49,880 --> 00:07:54,870 მოდით გამოიყენოს ეს ფორმულა ბარის ტექსტის წერილი გასაღები 2. 139 00:07:54,870 --> 00:08:01,810 ASCII ღირებულება Y არის 89, რომელიც გვაძლევს 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 რაც უდრის 13 - 141 00:08:03,690 --> 00:08:08,740 ნამდვილად არ ASCII ღირებულება საქართველოს, რაც 67. 142 00:08:08,740 --> 00:08:12,810 >> იუმორის ჩემთვის არის და გადაადგილება დაშორებით ASCII ფასეულობები ანბანურ ინდექსი 143 00:08:12,810 --> 00:08:18,690 სად არის ნულოვანი და Z არის 25, რაც იმას ნიშნავს, რომ Y არის 24. 144 00:08:18,690 --> 00:08:25,830 24 პლუს 2, modulo 6, გვაძლევს 26, modulo 26, 0, რომელიც 145 00:08:25,830 --> 00:08:28,170 ანბანურ მაჩვენებელს. 146 00:08:28,170 --> 00:08:32,980 ასე რომ, ეს ფორმულა, როგორც ჩანს, მიმართოს ანბანურ მაჩვენებელს წერილი და 147 00:08:32,980 --> 00:08:34,960 არა მისი ASCII ღირებულება. 148 00:08:34,960 --> 00:08:37,630 >> მაგრამ თქვენ იწყება ASCII ღირებულებებს. 149 00:08:37,630 --> 00:08:41,650 და ბეჭდვა ciphertext ხასიათი, თქვენ უნდა თავისი ASCII ღირებულება ასევე. 150 00:08:41,650 --> 00:08:46,400 ეს მდე თქვენ, მაშინ, გაერკვნენ როგორ უნდა გადახვიდეთ წინ და უკან. 151 00:08:46,400 --> 00:08:49,850 >> მას შემდეგ გაერკვნენ უფლება ფორმულა ერთი ხასიათი, ყველა უნდა გავაკეთოთ 152 00:08:49,850 --> 00:08:53,520 არის გამოიყენოს იგივე ფორმულას ყველა წერილი ძირითადი ტექსტი - 153 00:08:53,520 --> 00:08:57,720 მხოლოდ იმ შემთხვევაში, რომ წერილი არის ანბანურ, რა თქმა უნდა. 154 00:08:57,720 --> 00:09:02,360 და მახსოვს, რომ თქვენ უნდა შეინარჩუნოს იმ შემთხვევაში, ზედა ან ქვედა, რომ ის, სადაც 155 00:09:02,360 --> 00:09:06,890 isUpper და isLower ფუნქციები ზემოთ აღინიშნა მოვა მოსახერხებელია. 156 00:09:06,890 --> 00:09:08,830 ალბათ ორი ფორმულები - 157 00:09:08,830 --> 00:09:11,680 ერთი ზედა წერილების და ერთი ამას. 158 00:09:11,680 --> 00:09:18,420 ასე რომ isUpper isLower დაგეხმარებათ დადგინდეს, რომელიც ფორმულა მიმართოს. 159 00:09:18,420 --> 00:09:22,460 >> როგორ ვრცელდება თქვენს ფორმულა ყველა ერთ პერსონაჟს სიმებიანი? 160 00:09:22,460 --> 00:09:25,910 ისე, სიმებიანი მხოლოდ მასივი სიმბოლოს. 161 00:09:25,910 --> 00:09:31,150 ასე რომ, შეგიძლიათ თითოეული ხასიათი დაჯგუფება მეტი ყოველ პერსონაჟს 162 00:09:31,150 --> 00:09:33,450 სიმებიანი in for ციკლი. 163 00:09:33,450 --> 00:09:37,550 რაც შეეხება მდგომარეობას თქვენს for მარყუჟის ფუნქციის strlen, სიმებიანი 164 00:09:37,550 --> 00:09:39,280 სიგრძე, მოვა მოსახერხებელია. 165 00:09:39,280 --> 00:09:44,020 იგი იღებს ამ სიმებიანი როგორც შემავალი და დააბრუნებს ხანგრძლივობა, რომ მხოლოდ. 166 00:09:44,020 --> 00:09:49,250 დარწმუნდით, რომ მოიცავს სწორი ბიბლიოთეკა გამოყენება სიმებიანი სიგრძის ფუნქცია. 167 00:09:49,250 --> 00:09:51,790 >> და აი თქვენ გაქვთ თქვენი ciphertext. 168 00:09:51,790 --> 00:09:53,260 ჩემი სახელი Zamyla. 169 00:09:53,260 --> 00:09:54,510 და [ვსაუბრობ CODE]. 170 00:09:54,510 --> 00:10:02,944