1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Gratulacje na wykończenie twojej 3 00:00:11,270 --> 00:00:13,200 Pierwsze kilka programów w C. 4 00:00:13,200 --> 00:00:16,379 Wiem, że pierwszy wypad do Składnia C może być trudne. 5 00:00:16,379 --> 00:00:20,060 Ale zapewniam was, na koniec Oczywiście, będziesz mógł patrzeć na 6 00:00:20,060 --> 00:00:23,870 Pierwsze kilka zadań i ukończyć je w ciągu kilku minut. 7 00:00:23,870 --> 00:00:27,830 >> Teraz, że jesteś coraz bardziej zaznajomieni ze składnią, przejdźmy do Cezara. 8 00:00:27,830 --> 00:00:31,720 W Cezara, użytkownik przedłoży cyfrowy klucz w linii poleceń 9 00:00:31,720 --> 00:00:35,300 Argument, wpisz plain SMS na polecenia. 10 00:00:35,300 --> 00:00:38,050 Program następnie zaszyfrować tekst i drukuj 11 00:00:38,050 --> 00:00:40,020 ich przesłanie szyfrogram. 12 00:00:40,020 --> 00:00:42,980 >> Szyfrujących dla Cezara jest dość prosta. 13 00:00:42,980 --> 00:00:46,455 Przesunięcie każdy list, w ich zwykły tekst, przez klucz. 14 00:00:46,455 --> 00:00:49,220 W rezultacie, jest to również dość niepewnie. 15 00:00:49,220 --> 00:00:53,850 Ale Cezar wprowadzi wykonawcze nam ASCIIMath i tablicy danych 16 00:00:53,850 --> 00:00:54,460 struktury. 17 00:00:54,460 --> 00:00:57,510 Dojdziemy do bardziej złożonych szyfry później. 18 00:00:57,510 --> 00:01:01,680 Z Cezara kluczem 2, literę w plain text będzie reprezentowana przez 19 00:01:01,680 --> 00:01:07,580 Litera C w zaszyfrowanym tekście, ponieważ C to dwie litery po A. B będzie 20 00:01:07,580 --> 00:01:12,450 reprezentowana przez D i C E. kierunku końca alfabetu, W oznacza 21 00:01:12,450 --> 00:01:18,550 reprezentowane przez Y i X przez Z. Ale Y nie ma dwa listy po tym, więc 22 00:01:18,550 --> 00:01:21,070 szyfry otacza alfabetu. 23 00:01:21,070 --> 00:01:27,190 Y w postaci zwykłego tekstu jest więc reprezentowany przez W szyfrogram i Z przez B. To może 24 00:01:27,190 --> 00:01:32,080 pomocy, aby zobaczyć, jak Caesar Cypher ciągłe koło alfabet. 25 00:01:32,080 --> 00:01:35,760 >> Aby zaszyfrować swój tekst, łatwość wejdą dwa argumenty 26 00:01:35,760 --> 00:01:37,090 w linii komend - 27 00:01:37,090 --> 00:01:40,010 . / Cezar następnie kluczem. 28 00:01:40,010 --> 00:01:44,710 Jak zawsze, nie możemy ufać użytkownika całkowicie wejść wejście, które sprawiają, 29 00:01:44,710 --> 00:01:45,800 sens dla naszego programu. 30 00:01:45,800 --> 00:01:50,670 Więc będziemy musieli potwierdzić swój Wejście linii poleceń. 31 00:01:50,670 --> 00:01:57,285 >> Zamiast używać int main nieważne, jesteśmy za pomocą int main int argc, String argv. 32 00:01:57,285 --> 00:02:01,730 Reprezentuje zmienna całkowita argc liczba argumentów przekazanych do 33 00:02:01,730 --> 00:02:02,880 linii poleceń. 34 00:02:02,880 --> 00:02:09,070 A argv jest tablicą, lub myśleć o tym jak lista, z argumentów przekazany w. 35 00:02:09,070 --> 00:02:12,000 >> Więc dla Cezara, w jaki sposób sprawdzić poprawność wyjścia użytkownika? 36 00:02:12,000 --> 00:02:15,870 Cóż, powinny one być tylko wejście dwa argumenty linii poleceń - 37 00:02:15,870 --> 00:02:18,150 . / Cezar i klucz. 38 00:02:18,150 --> 00:02:22,340 Tak więc, jeśli nie jest argc 2, co oznacza, że to albo zapomniał klucza i tylko 39 00:02:22,340 --> 00:02:27,230 wprowadzone. / Cezar, albo weszła wielu kluczy. 40 00:02:27,230 --> 00:02:29,770 >> Jeśli jest to przypadek, to będziesz chcesz wydrukować instrukcje 41 00:02:29,770 --> 00:02:30,910 i zamknąć program. 42 00:02:30,910 --> 00:02:34,320 Oni muszą spróbować ponownie z linii poleceń. 43 00:02:34,320 --> 00:02:37,430 Ale nawet jeśli argc jest 2, będziesz należy sprawdzić, czy 44 00:02:37,430 --> 00:02:39,100 daje prawidłowy klucz. 45 00:02:39,100 --> 00:02:40,730 Dla Cezara, trzeba liczbę całkowitą. 46 00:02:40,730 --> 00:02:43,260 Ale argv jest tablicą łańcuchów. 47 00:02:43,260 --> 00:02:46,490 Jak uzyskać dostęp do tego klucza? 48 00:02:46,490 --> 00:02:47,850 >> Szybkie spojrzenie na tablicach - 49 00:02:47,850 --> 00:02:51,410 struktury danych, które posiadają wielu Wartości tego samego typu. 50 00:02:51,410 --> 00:02:55,350 Wpisy są indeksowane od zera, co oznacza, że Pierwszy element jest zerowa Index 51 00:02:55,350 --> 00:03:00,260 i ostatni element jest wielkości indeksu minus 1, w którym powierzchnia liczba 52 00:03:00,260 --> 00:03:02,850 elementy w tablicy. 53 00:03:02,850 --> 00:03:07,380 >> Gdybym ogłosił nową skrzynkę pocztową tablicy ciągów o długości 3, wizualnie, to 54 00:03:07,380 --> 00:03:08,570 wygląda tak. 55 00:03:08,570 --> 00:03:11,520 Trzy pojemniki na smyczki , Obok siebie. 56 00:03:11,520 --> 00:03:15,445 Aby uzyskać dostęp do dowolnego elementu, należy wpisać nazwę z matrycy, a następnie podać 57 00:03:15,445 --> 00:03:18,080 indeks w nawiasach kwadratowych. 58 00:03:18,080 --> 00:03:21,610 Tutaj jestem przypisanie wartości do każdego elementem, tak jak to robię z każdym 59 00:03:21,610 --> 00:03:24,310 inna zmienna łańcuchowa. 60 00:03:24,310 --> 00:03:29,020 >> Tak więc, aby uzyskać dostęp do naszych argumentów wiersza poleceń, wszystko co musimy zrobić, to przejść 61 00:03:29,020 --> 00:03:31,690 prawo element tablicy argv. 62 00:03:31,690 --> 00:03:37,360 Jeżeli użytkownik wprowadzi. / Zespół Blastoff Rakieta do terminalu, by argv 0 63 00:03:37,360 --> 00:03:38,950 być. / blastoff. 64 00:03:38,950 --> 00:03:45,010 argv będzie zespół, a arg2 będzie rakieta. 65 00:03:45,010 --> 00:03:47,670 >> Teraz możemy przejść nasz klucz, musimy jeszcze zrobić 66 00:03:47,670 --> 00:03:49,040 upewnić się, że jest on poprawny. 67 00:03:49,040 --> 00:03:51,060 Musimy przekształcić go w całkowitej. 68 00:03:51,060 --> 00:03:54,680 Ale nie możemy rzucać jak zrobiliśmy wcześniej. 69 00:03:54,680 --> 00:03:58,800 Na szczęście, aby funkcja Y dba z tego dla nas, a nawet zwraca 0 70 00:03:58,800 --> 00:04:02,110 jeśli łańcuch nie może być przekształcony do liczby całkowitej. 71 00:04:02,110 --> 00:04:04,450 To do Ciebie, choć powiedzieć Użytkownik, dlaczego nie zrobisz 72 00:04:04,450 --> 00:04:06,220 niech program kontynuować. 73 00:04:06,220 --> 00:04:10,710 Zapisać wynik do Y w całkowita, a nie masz klucza. 74 00:04:10,710 --> 00:04:12,070 Następna część jest prosta. 75 00:04:12,070 --> 00:04:15,940 Pytaj o ich zwykły tekst, który będzie typu string danych. 76 00:04:15,940 --> 00:04:18,339 Na szczęście dla nas, wszystkie wprowadzane użytkownika łańcuchy są ważne. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Teraz, gdy mamy niezbędne podstawy od użytkownika, to jest czas dla nas, aby 79 00:04:24,760 --> 00:04:26,520 zaszyfrować swoje wiadomości. 80 00:04:26,520 --> 00:04:29,200 Koncepcja jest prosta Cezara wystarczy zrozumieć. 81 00:04:29,200 --> 00:04:33,750 Ale w jaki sposób komputer wie co litery pochodzą od siebie? 82 00:04:33,750 --> 00:04:36,100 >> Oto, gdzie jest cala tabela ASCII 83 00:04:36,100 --> 00:04:39,420 Każda postać ma liczbę całkowitą Numer z nią związane. 84 00:04:39,420 --> 00:04:41,380 Capital jest 65. 85 00:04:41,380 --> 00:04:43,310 Capital B jest 66. 86 00:04:43,310 --> 00:04:45,260 Małe jest 97. 87 00:04:45,260 --> 00:04:47,590 Małe litery b jest 98. 88 00:04:47,590 --> 00:04:50,770 Ale znaki nie są ograniczone do zaledwie alfabetycznych numerów. 89 00:04:50,770 --> 00:04:56,020 Na przykład, symbol @ jest ASCII 64 liczba. 90 00:04:56,020 --> 00:04:59,690 >> Zanim do czynienia z całym ciągiem, udawajmy, po prostu musimy przesunąć 91 00:04:59,690 --> 00:05:01,220 jeden znak. 92 00:05:01,220 --> 00:05:04,640 Cóż, my tylko chcemy przesunąć rzeczywiste Litery w postaci zwykłego tekstu, a nie 93 00:05:04,640 --> 00:05:06,020 znaków lub cyfr. 94 00:05:06,020 --> 00:05:09,100 Tak więc pierwszą rzeczą, że będziemy chcieli sprawdzić, czy znak jest w 95 00:05:09,100 --> 00:05:10,430 alfabet. 96 00:05:10,430 --> 00:05:14,460 >> Isalpha robi to funkcja nas i zwraca wartość logiczną - 97 00:05:14,460 --> 00:05:18,570 true, jeśli znaków jest list, false, jeśli inaczej. 98 00:05:18,570 --> 00:05:22,270 Dwie inne funkcje isupper i islower, z 99 00:05:22,270 --> 00:05:23,860 self-noty nazwy. 100 00:05:23,860 --> 00:05:27,370 Wracają true, jeśli dany znak jest wielkie i małe litery, 101 00:05:27,370 --> 00:05:28,740 złotych. 102 00:05:28,740 --> 00:05:33,770 Ponieważ są one Boolean, są przydatne do stosowania jako warunkach. 103 00:05:33,770 --> 00:05:38,310 >> Jeśli isalpha zwraca true, trzeba do zmiany tego znaku przez klucz. 104 00:05:38,310 --> 00:05:43,750 Warto więc otworzyć się ASCIIMath i zrobić ASCII matematyki. 105 00:05:43,750 --> 00:05:48,700 Użycie jest bardzo podobny do użycia dla Cezara i bierze w kluczu na 106 00:05:48,700 --> 00:05:50,870 linii poleceń. 107 00:05:50,870 --> 00:05:59,590 >> Jeśli uruchomić ASCIIMath 5, wydaje się, aby dodać 5 to, co daje mi litera F, oraz 108 00:05:59,590 --> 00:06:01,260 wyświetlania wartość ASCII. 109 00:06:01,260 --> 00:06:04,090 Warto więc zapoznać się z programem. 110 00:06:04,090 --> 00:06:11,820 >> Można się zastanawiać, właśnie tutaj, dlaczego Litera jest liczbą całkowitą, gdy znajduje się w 111 00:06:11,820 --> 00:06:14,330 oczywiście, dobrze, list. 112 00:06:14,330 --> 00:06:17,690 Okazuje się, że znaki i liczbami całkowitymi są wymienne. 113 00:06:17,690 --> 00:06:21,730 Poprzez umieszczenie list w jeden cudzysłów, liczba całkowita może przechowywać 114 00:06:21,730 --> 00:06:25,390 ASCII wartość kapitału A. Należy uważać, choć. 115 00:06:25,390 --> 00:06:27,150 Musisz pojedynczych ubrań. 116 00:06:27,150 --> 00:06:31,260 Bez pojedynczych cudzysłowach, kompilator będzie szukał zmiennej 117 00:06:31,260 --> 00:06:35,510 nazwie, a nie charakter. 118 00:06:35,510 --> 00:06:42,140 >> Następnie dodać list i klucz, przechowywania suma w wyniku int zmiennych. 119 00:06:42,140 --> 00:06:47,740 Mimo, że wynik jest typu danych całkowita, moja printf używa 120 00:06:47,740 --> 00:06:50,370 % C zastępczy znaków. 121 00:06:50,370 --> 00:06:54,530 Tak więc program wypisuje znak związana z całkowitą wyniku. 122 00:06:54,530 --> 00:07:00,400 A ponieważ drukowane liczbę całkowitą również za pomocą formularza% d, widzimy 123 00:07:00,400 --> 00:07:02,110 Numer, jak również. 124 00:07:02,110 --> 00:07:04,450 Więc teraz widać, że traktować znaków i 125 00:07:04,450 --> 00:07:06,980 liczby całkowite, i vice versa. 126 00:07:06,980 --> 00:07:12,205 >> Sprawdźmy kilka z ASCIIMath więcej razy przy użyciu 25 jako klucz. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Dostajemy się z.. 129 00:07:17,090 --> 00:07:19,750 Teraz staramy 26. 130 00:07:19,750 --> 00:07:25,600 Chcemy, aby uzyskać litery, ale zamiast tego dostajemy lewy wspornik. 131 00:07:25,600 --> 00:07:29,490 Tak oczywiście, tylko dodawanie Kluczem do listu nie będzie. 132 00:07:29,490 --> 00:07:32,780 Musimy dowiedzieć się formuły do ​​zapakowania całego alfabetu, jak nasz 133 00:07:32,780 --> 00:07:34,570 Przykładem na początku zrobił. 134 00:07:34,570 --> 00:07:38,520 >> Wzór na Cezara Przesunięcie to w następujący sposób. 135 00:07:38,520 --> 00:07:42,750 c jest równa p plusa k modulo 26. 136 00:07:42,750 --> 00:07:46,040 Pamiętaj, że modulo jest przydatna działanie, które daje nam pozostałą 137 00:07:46,040 --> 00:07:49,880 dzielenia jednej liczby przez drugą. 138 00:07:49,880 --> 00:07:54,870 Chcę zastosować tę formułę do plain List tekst z kluczem 2. 139 00:07:54,870 --> 00:08:01,810 ASCII wartość y jest 89, które daje nam 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 co równa się 13 - 141 00:08:03,690 --> 00:08:08,740 na pewno nie wartość ASCII z, które jest 67. 142 00:08:08,740 --> 00:08:12,810 >> Humor mi się i odejście od Wartości ASCII do indeksu kolejności alfabetycznej 143 00:08:12,810 --> 00:08:18,690 w którym a oznacza zero, a Z oznacza 25, co oznacza, że ​​Y jest 24. 144 00:08:18,690 --> 00:08:25,830 24 plus 2, modulo 6, daje nam 26, modulo 26, 0, który jest 145 00:08:25,830 --> 00:08:28,170 Indeks alfabetyczny. 146 00:08:28,170 --> 00:08:32,980 Tak więc wydaje się, wzór ten stosuje się do indeks alfabetyczny pisma i 147 00:08:32,980 --> 00:08:34,960 nie jego wartość ASCII. 148 00:08:34,960 --> 00:08:37,630 >> Ale zacząć wartości ASCII. 149 00:08:37,630 --> 00:08:41,650 I wydrukować znak szyfrogram, musisz jej wartość ASCII, jak również. 150 00:08:41,650 --> 00:08:46,400 To do Ciebie, to, aby dowiedzieć się, Jak przełączać się. 151 00:08:46,400 --> 00:08:49,850 >> Po dowiedzieć się odpowiednią formułę dla jednego znaku, wszystko co musisz zrobić, 152 00:08:49,850 --> 00:08:53,520 jest stosować tę samą formułę, aby każdy List w zwykły tekst - 153 00:08:53,520 --> 00:08:57,720 tylko w przypadku, że list jest alfabetycznie, oczywiście. 154 00:08:57,720 --> 00:09:02,360 I pamiętaj, że trzeba zachować Sprawa, górnej lub dolnej, to gdzie 155 00:09:02,360 --> 00:09:06,890 isupper i funkcje islower wspomniano wcześniej będzie przydatna. 156 00:09:06,890 --> 00:09:08,830 Możesz mieć dwa wzory - 157 00:09:08,830 --> 00:09:11,680 jeden dla wielkich liter i jeden za małe. 158 00:09:11,680 --> 00:09:18,420 Więc isupper islower pomoże określenia, które stosuje się do wzoru. 159 00:09:18,420 --> 00:09:22,460 >> Jak zastosować wzór do każdego jeden znak w ciągu znaków? 160 00:09:22,460 --> 00:09:25,910 Cóż, to tylko ciąg Tablica znaków. 161 00:09:25,910 --> 00:09:31,150 Tak więc można uzyskać dostęp do każdego znaku przez zgrupowanie na każdym znaku w 162 00:09:31,150 --> 00:09:33,450 ciąg w pętli for. 163 00:09:33,450 --> 00:09:37,550 Jeśli chodzi o stan swojego pętli for, Funkcja strlen, na ciąg 164 00:09:37,550 --> 00:09:39,280 długości, będzie przydatna. 165 00:09:39,280 --> 00:09:44,020 Przyjmuje w ciąg na wejściu i zwraca długość tego ciągu. 166 00:09:44,020 --> 00:09:49,250 Upewnij się, że to prawo biblioteki korzystać z funkcji długości łańcucha. 167 00:09:49,250 --> 00:09:51,790 >> I nie masz szyfrogram. 168 00:09:51,790 --> 00:09:53,260 Nazywam się Zamyla. 169 00:09:53,260 --> 00:09:54,510 I [EGZAMIN CODE]. 170 00:09:54,510 --> 00:10:02,944