1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Herzlichen Glückwunsch auf die Fertigstellung Ihrer 3 00:00:11,270 --> 00:00:13,200 ersten paar C-Programmen. 4 00:00:13,200 --> 00:00:16,379 Ich weiß, dass Ihr erster Ausflug in C-Syntax kann entmutigend sein. 5 00:00:16,379 --> 00:00:20,060 Aber ich versichere Ihnen, am Ende der Natürlich, werden Sie in der Lage sein, um das Aussehen 6 00:00:20,060 --> 00:00:23,870 ersten paar Aufgaben und füllen Sie in wenigen Minuten. 7 00:00:23,870 --> 00:00:27,830 >> Nun, dass Sie immer mehr vertraut mit Syntax, lasst uns zu Caesar zu bekommen. 8 00:00:27,830 --> 00:00:31,720 In Caesar, wird der Benutzer absenden Ganzzahlschlüssel als Befehlszeile 9 00:00:31,720 --> 00:00:35,300 Argument, dann geben Sie eine Ebene Textnachricht an der Eingabeaufforderung. 10 00:00:35,300 --> 00:00:38,050 Das Programm wird dann verschlüsseln der Text und drucken 11 00:00:38,050 --> 00:00:40,020 ihre chiffrierten. 12 00:00:40,020 --> 00:00:42,980 >> Die Chiffrierung für Caesar ist ganz einfach. 13 00:00:42,980 --> 00:00:46,455 Umschalttaste jeden Buchstaben, in deren Klartext durch den Schlüssel. 14 00:00:46,455 --> 00:00:49,220 Als Ergebnis ist es auch ziemlich unsicher. 15 00:00:49,220 --> 00:00:53,850 Die Implementierung Caesar einführen uns ASCIIMath und Array-Daten 16 00:00:53,850 --> 00:00:54,460 Strukturen. 17 00:00:54,460 --> 00:00:57,510 Wir werden, um komplexere bekommen Chiffren später. 18 00:00:57,510 --> 00:01:01,680 Mit einem Schlüssel Caesar von 2, der Buchstabe A in Nur-Text-dargestellt werden durch 19 00:01:01,680 --> 00:01:07,580 der Buchstabe C in Schlüsseltext, weil C ist nach zwei Buchstaben A. B wäre 20 00:01:07,580 --> 00:01:12,450 vertreten durch D und C von E. Gegen das Ende des Alphabets ist, W 21 00:01:12,450 --> 00:01:18,550 vertreten durch Y, X und Z. Aber Y nicht zwei Buchstaben nach, so 22 00:01:18,550 --> 00:01:21,070 die Chiffren umschlingt das Alphabet. 23 00:01:21,070 --> 00:01:27,190 Y im Klartext dargestellt wird somit durch Ein in verschlüsselten Text und Z von B. Es kann 24 00:01:27,190 --> 00:01:32,080 helfen, die Caesar Cypher wie sehen eine kontinuierliche Alphabet Rad. 25 00:01:32,080 --> 00:01:35,760 >> Um ihren Text, der Benutzer verschlüsseln werden zwei Argumente geben 26 00:01:35,760 --> 00:01:37,090 in der Befehlszeile - 27 00:01:37,090 --> 00:01:40,010 . / Caesar gefolgt von einem Schlüssel. 28 00:01:40,010 --> 00:01:44,710 Wie immer können wir nicht vertrauen die Anwender vollständig zu geben, die Eingabe machen 29 00:01:44,710 --> 00:01:45,800 Sinn für unser Programm. 30 00:01:45,800 --> 00:01:50,670 Also müssen wir ihre Validierung Befehlszeile eingegeben. 31 00:01:50,670 --> 00:01:57,285 >> Anstelle der Verwendung von int main nichtig, wir sind mit int main, int argc, argv String. 32 00:01:57,285 --> 00:02:01,730 Die Integer-Variable argc stellt die Anzahl der übergebenen Argumente in 33 00:02:01,730 --> 00:02:02,880 die Befehlszeile. 34 00:02:02,880 --> 00:02:09,070 Und argv ist ein Array, oder betrachten Sie es als eine Liste der übergebenen Argumente in. 35 00:02:09,070 --> 00:02:12,000 >> Also für Caesar, wie wir validieren die Eingabe des Benutzers? 36 00:02:12,000 --> 00:02:15,870 Nun, sollten sie nur werden Eingabe zwei Kommandozeilen-Argumente - 37 00:02:15,870 --> 00:02:18,150 . / Caesar und ein Schlüssel. 38 00:02:18,150 --> 00:02:22,340 Also, wenn argc ist nicht 2, bedeutet dies, dass sie entweder vergessen einen Schlüssel und nur 39 00:02:22,340 --> 00:02:27,230 eingetragen. / caesar, oder sie mehrere Schlüssel eingegeben. 40 00:02:27,230 --> 00:02:29,770 >> Wenn dies der Fall ist, dann werden Sie wollen Anleitung ausdrucken 41 00:02:29,770 --> 00:02:30,910 und das Programm beenden. 42 00:02:30,910 --> 00:02:34,320 Sie brauchen, um es erneut zu versuchen von der Kommandozeile aus. 43 00:02:34,320 --> 00:02:37,430 Aber selbst wenn argc 2 ist, werden Sie müssen prüfen, ob sie 44 00:02:37,430 --> 00:02:39,100 geben Sie einen gültigen Schlüssel. 45 00:02:39,100 --> 00:02:40,730 Für Caesar, benötigen Sie eine ganze Zahl ist. 46 00:02:40,730 --> 00:02:43,260 Aber argv ist ein Array von Strings. 47 00:02:43,260 --> 00:02:46,490 Wie greifen Sie auf diese Taste? 48 00:02:46,490 --> 00:02:47,850 >> Ein kurzer Blick auf Arrays - 49 00:02:47,850 --> 00:02:51,410 Datenstrukturen, die mehrere halten Werte der gleichen Datentyp. 50 00:02:51,410 --> 00:02:55,350 Einträge sind nullindizierte, was bedeutet, dass das erste Element ist der Index Null 51 00:02:55,350 --> 00:03:00,260 und das letzte Element ist Indexgröße minus 1, wobei Größe ist die Anzahl der 52 00:03:00,260 --> 00:03:02,850 Elemente in dem Array. 53 00:03:02,850 --> 00:03:07,380 >> Wenn ich erklärte eine neue String-Array Mailbox der Länge 3, visuell, es 54 00:03:07,380 --> 00:03:08,570 sieht wie folgt aus. 55 00:03:08,570 --> 00:03:11,520 Drei Container für Streicher , Seite an Seite. 56 00:03:11,520 --> 00:03:15,445 Um ein beliebiges Element zuzugreifen, geben Sie den Namen des Arrays und zeigen dann 57 00:03:15,445 --> 00:03:18,080 der Index in eckigen Klammern. 58 00:03:18,080 --> 00:03:21,610 Hier werde ich einen Wert zuweisen jeder Element, so wie ich es mit jedem tun 59 00:03:21,610 --> 00:03:24,310 anderen String-Variable. 60 00:03:24,310 --> 00:03:29,020 >> Also, unsere Befehlszeilenargumente zugreifen, alles, was wir tun müssen, ist der Zugang 61 00:03:29,020 --> 00:03:31,690 die richtige Element des argv-Array. 62 00:03:31,690 --> 00:03:37,360 Wenn der Benutzer eingetragen. / Blastoff Teams Rakete in das Terminal, würde argv 0 63 00:03:37,360 --> 00:03:38,950 sein. / start. 64 00:03:38,950 --> 00:03:45,010 argv würde Teams zu sein, und arg2 wäre Rakete. 65 00:03:45,010 --> 00:03:47,670 >> Jetzt, wo wir können unsere Schlüssel, müssen wir noch machen 66 00:03:47,670 --> 00:03:49,040 sicher, dass es richtig ist. 67 00:03:49,040 --> 00:03:51,060 Wir müssen es in einen Integer umwandeln. 68 00:03:51,060 --> 00:03:54,680 Aber wir können nicht nur wie gegossen wir haben vorher getan. 69 00:03:54,680 --> 00:03:58,800 Glücklicherweise nimmt der A bis Y Funktion Pflege dies für uns und auch 0 zurück 70 00:03:58,800 --> 00:04:02,110 wenn die Zeichenfolge können nicht konvertiert werden in einen Integer. 71 00:04:02,110 --> 00:04:04,450 Es ist bis zu Ihnen, aber zu sagen, der Benutzer, warum werden Sie nicht 72 00:04:04,450 --> 00:04:06,220 lassen Sie das Programm fort. 73 00:04:06,220 --> 00:04:10,710 Speichern Sie das Ergebnis von A bis Y in ein integer, und dort haben Sie Ihren Schlüssel. 74 00:04:10,710 --> 00:04:12,070 Der nächste Teil ist einfach. 75 00:04:12,070 --> 00:04:15,940 Fordert den Benutzer für ihre Klartext das wird der Datentyp String sein. 76 00:04:15,940 --> 00:04:18,339 Zum Glück für uns alle vom Benutzer eingegeben Strings sind gültig. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Nun, wir haben alle notwendigen Eingaben von dem Benutzer, ist es Zeit für uns, 79 00:04:24,760 --> 00:04:26,520 verschlüsseln ihre Botschaft. 80 00:04:26,520 --> 00:04:29,200 Das Konzept ist einfach Caesar genug, um zu verstehen. 81 00:04:29,200 --> 00:04:33,750 Aber wie Sie Ihren Computer wissen, welche Briefe kommen nacheinander? 82 00:04:33,750 --> 00:04:36,100 >> Hier ist, wo die ASCII-Tabelle kommt in. 83 00:04:36,100 --> 00:04:39,420 Jeder Charakter hat eine ganze Nummer zugeordnet. 84 00:04:39,420 --> 00:04:41,380 Kapital A beträgt 65 Jahre. 85 00:04:41,380 --> 00:04:43,310 Kapital B ist 66. 86 00:04:43,310 --> 00:04:45,260 Kleinbuchstaben a 97. 87 00:04:45,260 --> 00:04:47,590 Kleinbuchstaben b ist 98. 88 00:04:47,590 --> 00:04:50,770 Aber Zeichen sind nicht begrenzt nur alphabetisch Zahlen. 89 00:04:50,770 --> 00:04:56,020 Zum Beispiel kann das Zeichen @ ASCII ist Nummer 64. 90 00:04:56,020 --> 00:04:59,690 >> Bevor man sich mit der ganzen Reihe, lasst uns so tun, müssen wir nur verschieben 91 00:04:59,690 --> 00:05:01,220 ein Zeichen. 92 00:05:01,220 --> 00:05:04,640 Nun, wir wollen nur verschieben tatsächlichen Buchstaben im Klartext, nicht 93 00:05:04,640 --> 00:05:06,020 Buchstaben oder Zahlen. 94 00:05:06,020 --> 00:05:09,100 Also das erste, was wir wollen, werden Sie prüfen, ob der Charakter in ist 95 00:05:09,100 --> 00:05:10,430 das Alphabet. 96 00:05:10,430 --> 00:05:14,460 >> Die Funktion isalpha tut dies für uns und gibt einen Boolean - 97 00:05:14,460 --> 00:05:18,570 true, wenn das Zeichen ist ein Buchstabe, andernfalls false. 98 00:05:18,570 --> 00:05:22,270 Zwei weitere nützliche Funktionen sind isupper und islower, mit 99 00:05:22,270 --> 00:05:23,860 selbsterklärend Namen. 100 00:05:23,860 --> 00:05:27,370 Sie true zurück, wenn das angegebene Zeichen ist Groß-und Kleinschreibung, 101 00:05:27,370 --> 00:05:28,740 sind. 102 00:05:28,740 --> 00:05:33,770 Da sie Booleans sind, sind sie nützlich als Bedingungen verwendet werden. 103 00:05:33,770 --> 00:05:38,310 >> Wenn isalpha true zurückgibt, müssen Sie dieses Zeichen durch den Schlüssel verschieben. 104 00:05:38,310 --> 00:05:43,750 Lassen Sie uns also auf ASCIIMath öffnen und einige ASCII math. 105 00:05:43,750 --> 00:05:48,700 Die Benutzung ist sehr ähnlich zu der Nutzung für Caesar und nimmt in einer Schlüsselposition bei der 106 00:05:48,700 --> 00:05:50,870 Befehlszeile. 107 00:05:50,870 --> 00:05:59,590 >> Wenn ich ASCIIMath 5 laufen, scheint es hinzufügen 5 ein und gab mir den Brief f und 108 00:05:59,590 --> 00:06:01,260 Anzeigen der ASCII-Wert. 109 00:06:01,260 --> 00:06:04,090 Werfen wir also einen Blick auf das Programm. 110 00:06:04,090 --> 00:06:11,820 >> Sie fragen sich vielleicht, genau hier, warum Brief ist eine ganze Zahl, wenn es 111 00:06:11,820 --> 00:06:14,330 klar, na ja, ein Brief. 112 00:06:14,330 --> 00:06:17,690 Es stellt sich heraus, dass Zeichen und Zahlen sind austauschbar. 113 00:06:17,690 --> 00:06:21,730 Indem Sie den Buchstaben A in einzelnen Anführungszeichen, kann das ganze speichern 114 00:06:21,730 --> 00:06:25,390 der ASCII-Wert des Kapitals A. Seien Sie aber vorsichtig. 115 00:06:25,390 --> 00:06:27,150 Sie müssen die einzelnen Kleider. 116 00:06:27,150 --> 00:06:31,260 Ohne die einfache Anführungszeichen, das Compiler für eine Variable aussehen 117 00:06:31,260 --> 00:06:35,510 namens A, und nicht der Charakter. 118 00:06:35,510 --> 00:06:42,140 >> Dann füge ich Brief und einen Schlüssel, Speichern der Summe in den int-Variablen Ergebnis. 119 00:06:42,140 --> 00:06:47,740 Obwohl Ergebnis ist vom Datentyp integer, nutzt mein printf Anweisung der 120 00:06:47,740 --> 00:06:50,370 % C Platzhalter für Zeichen. 121 00:06:50,370 --> 00:06:54,530 So druckt das Programm den Charakter verbunden mit dem ganzzahligen Ergebnis. 122 00:06:54,530 --> 00:07:00,400 Und da wir die ganze gedruckt Form als auch mit% d, sehen wir 123 00:07:00,400 --> 00:07:02,110 die Anzahl als auch. 124 00:07:02,110 --> 00:07:04,450 So, jetzt können Sie sehen, dass wir Zeichen und behandeln 125 00:07:04,450 --> 00:07:06,980 Zahlen, und umgekehrt. 126 00:07:06,980 --> 00:07:12,205 >> Lasst Test ASCIIMath wenige mehrere Male unter Verwendung von 25 als Schlüssel. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Wir bekommen den Brief z. 129 00:07:17,090 --> 00:07:19,750 Jetzt versuchen wir, 26. 130 00:07:19,750 --> 00:07:25,600 Wir wollen den Brief eines bekommen, aber stattdessen bekommen wir eine linke Klammer. 131 00:07:25,600 --> 00:07:29,490 So offensichtlich, einfach nur mit der Schlüssel zu dem Brief geht nicht. 132 00:07:29,490 --> 00:07:32,780 Wir müssen herausfinden, eine Formel zu wickeln rund um das Alphabet, wie unsere 133 00:07:32,780 --> 00:07:34,570 Beispiel in der Anfang. 134 00:07:34,570 --> 00:07:38,520 >> Eine Formel für die Cäsars Verschiebung ist wie folgt. 135 00:07:38,520 --> 00:07:42,750 c gleich p zzgl. k modulo 26. 136 00:07:42,750 --> 00:07:46,040 Beachten Sie, dass ein nützliches Modulo ist Betrieb, das gibt uns den Rest 137 00:07:46,040 --> 00:07:49,880 der Division einer Zahl durch die andere. 138 00:07:49,880 --> 00:07:54,870 Wenden wir diese Formel auf der Ebene Text Brief mit einem Schlüssel von 2. 139 00:07:54,870 --> 00:08:01,810 Der ASCII-Wert von y ist 89, die gibt uns 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 das entspricht 13 - 141 00:08:03,690 --> 00:08:08,740 definitiv nicht der ASCII-Wert von a, die 67. 142 00:08:08,740 --> 00:08:12,810 >> Humor mir jetzt und weg von der ASCII-Werte zu einem alphabetischen Index 143 00:08:12,810 --> 00:08:18,690 wobei A Null ist, und Z 25 ist, was bedeutet, dass Y 24 ist. 144 00:08:18,690 --> 00:08:25,830 24 plus 2, modulo 6, gibt uns 26, Modulo 26, 0, die das ist 145 00:08:25,830 --> 00:08:28,170 alphabetischen Index ein. 146 00:08:28,170 --> 00:08:32,980 Also diese Formel scheint zu gelten die alphabetischen Index des Schreibens und 147 00:08:32,980 --> 00:08:34,960 nicht seine ASCII-Wert. 148 00:08:34,960 --> 00:08:37,630 >> Aber Sie beginnen mit ASCII-Werte. 149 00:08:37,630 --> 00:08:41,650 Und um die Chiffretextzeichen ausdrucken Sie seinen ASCII-Wert als auch benötigen. 150 00:08:41,650 --> 00:08:46,400 Es liegt an Ihnen, dann, um herauszufinden, wie hin-und herschalten. 151 00:08:46,400 --> 00:08:49,850 >> Wenn Sie herausfinden, die richtige Formel für ein Zeichen, müssen alles, was Sie zu tun 152 00:08:49,850 --> 00:08:53,520 wird die gleiche Formel, um jedes anwenden Buchstaben im Klartext - 153 00:08:53,520 --> 00:08:57,720 nur, wenn dieser Brief ist alphabetisch, natürlich. 154 00:08:57,720 --> 00:09:02,360 Und denken Sie daran, dass Sie zu erhalten müssen der Fall ist, oberen oder unteren, das ist, wo 155 00:09:02,360 --> 00:09:06,890 die isupper und IsLower Funktionen erwähnt wird sich als nützlich erweisen. 156 00:09:06,890 --> 00:09:08,830 Vielleicht haben Sie zwei Formeln - 157 00:09:08,830 --> 00:09:11,680 eine für Großbuchstaben und eine für Kleinbuchstaben. 158 00:09:11,680 --> 00:09:18,420 So isupper ein IsLower helfen Ihnen bestimmen, welche Formel anzuwenden. 159 00:09:18,420 --> 00:09:22,460 >> Wie bewerben Sie Ihre Formel jeden einzelnes Zeichen in einem String? 160 00:09:22,460 --> 00:09:25,910 Nun, das ist eine Zeichenkette nur ein Array von Zeichen. 161 00:09:25,910 --> 00:09:31,150 So können Sie auf jedes Zeichen durch Gruppierung über jedes Zeichen in der 162 00:09:31,150 --> 00:09:33,450 String in eine for-Schleife. 163 00:09:33,450 --> 00:09:37,550 Wie für den Zustand Ihrer for-Schleife die Funktion strlen, für Streichorchester 164 00:09:37,550 --> 00:09:39,280 Länge, wird sich als nützlich erweisen. 165 00:09:39,280 --> 00:09:44,020 Es kommt in einer Zeichenfolge als Eingabe und gibt die Länge des Strings. 166 00:09:44,020 --> 00:09:49,250 Achten Sie darauf, die richtige Bibliothek gehören um die Länge der Zeichenfolge Funktion zu nutzen. 167 00:09:49,250 --> 00:09:51,790 >> Und dort haben Sie Ihre Schlüsseltext. 168 00:09:51,790 --> 00:09:53,260 Mein Name ist Zamyla. 169 00:09:53,260 --> 00:09:54,510 Und [SPEAKING CODE]. 170 00:09:54,510 --> 00:10:02,944