>> ZAMYLA CHAN: Herzlichen Glückwunsch auf die Fertigstellung Ihrer
ersten paar C-Programmen.
Ich weiß, dass Ihr erster Ausflug in C-Syntax kann entmutigend sein.
Aber ich versichere Ihnen, am Ende der Natürlich, werden Sie in der Lage sein, um das Aussehen
ersten paar Aufgaben und füllen Sie in wenigen Minuten.
>> Nun, dass Sie immer mehr vertraut mit Syntax, lasst uns zu Caesar zu bekommen.
In Caesar, wird der Benutzer absenden Ganzzahlschlüssel als Befehlszeile
Argument, dann geben Sie eine Ebene Textnachricht an der Eingabeaufforderung.
Das Programm wird dann verschlüsseln der Text und drucken
ihre chiffrierten.
>> Die Chiffrierung für Caesar ist ganz einfach.
Umschalttaste jeden Buchstaben, in deren Klartext durch den Schlüssel.
Als Ergebnis ist es auch ziemlich unsicher.
Die Implementierung Caesar einführen uns ASCIIMath und Array-Daten
Strukturen.
Wir werden, um komplexere bekommen Chiffren später.
Mit einem Schlüssel Caesar von 2, der Buchstabe A in Nur-Text-dargestellt werden durch
der Buchstabe C in Schlüsseltext, weil C ist nach zwei Buchstaben A. B wäre
vertreten durch D und C von E. Gegen das Ende des Alphabets ist, W
vertreten durch Y, X und Z. Aber Y nicht zwei Buchstaben nach, so
die Chiffren umschlingt das Alphabet.
Y im Klartext dargestellt wird somit durch Ein in verschlüsselten Text und Z von B. Es kann
helfen, die Caesar Cypher wie sehen eine kontinuierliche Alphabet Rad.
>> Um ihren Text, der Benutzer verschlüsseln werden zwei Argumente geben
in der Befehlszeile -
. / Caesar gefolgt von einem Schlüssel.
Wie immer können wir nicht vertrauen die Anwender vollständig zu geben, die Eingabe machen
Sinn für unser Programm.
Also müssen wir ihre Validierung Befehlszeile eingegeben.
>> Anstelle der Verwendung von int main nichtig, wir sind mit int main, int argc, argv String.
Die Integer-Variable argc stellt die Anzahl der übergebenen Argumente in
die Befehlszeile.
Und argv ist ein Array, oder betrachten Sie es als eine Liste der übergebenen Argumente in.
>> Also für Caesar, wie wir validieren die Eingabe des Benutzers?
Nun, sollten sie nur werden Eingabe zwei Kommandozeilen-Argumente -
. / Caesar und ein Schlüssel.
Also, wenn argc ist nicht 2, bedeutet dies, dass sie entweder vergessen einen Schlüssel und nur
eingetragen. / caesar, oder sie mehrere Schlüssel eingegeben.
>> Wenn dies der Fall ist, dann werden Sie wollen Anleitung ausdrucken
und das Programm beenden.
Sie brauchen, um es erneut zu versuchen von der Kommandozeile aus.
Aber selbst wenn argc 2 ist, werden Sie müssen prüfen, ob sie
geben Sie einen gültigen Schlüssel.
Für Caesar, benötigen Sie eine ganze Zahl ist.
Aber argv ist ein Array von Strings.
Wie greifen Sie auf diese Taste?
>> Ein kurzer Blick auf Arrays -
Datenstrukturen, die mehrere halten Werte der gleichen Datentyp.
Einträge sind nullindizierte, was bedeutet, dass das erste Element ist der Index Null
und das letzte Element ist Indexgröße minus 1, wobei Größe ist die Anzahl der
Elemente in dem Array.
>> Wenn ich erklärte eine neue String-Array Mailbox der Länge 3, visuell, es
sieht wie folgt aus.
Drei Container für Streicher , Seite an Seite.
Um ein beliebiges Element zuzugreifen, geben Sie den Namen des Arrays und zeigen dann
der Index in eckigen Klammern.
Hier werde ich einen Wert zuweisen jeder Element, so wie ich es mit jedem tun
anderen String-Variable.
>> Also, unsere Befehlszeilenargumente zugreifen, alles, was wir tun müssen, ist der Zugang
die richtige Element des argv-Array.
Wenn der Benutzer eingetragen. / Blastoff Teams Rakete in das Terminal, würde argv 0
sein. / start.
argv würde Teams zu sein, und arg2 wäre Rakete.
>> Jetzt, wo wir können unsere Schlüssel, müssen wir noch machen
sicher, dass es richtig ist.
Wir müssen es in einen Integer umwandeln.
Aber wir können nicht nur wie gegossen wir haben vorher getan.
Glücklicherweise nimmt der A bis Y Funktion Pflege dies für uns und auch 0 zurück
wenn die Zeichenfolge können nicht konvertiert werden in einen Integer.
Es ist bis zu Ihnen, aber zu sagen, der Benutzer, warum werden Sie nicht
lassen Sie das Programm fort.
Speichern Sie das Ergebnis von A bis Y in ein integer, und dort haben Sie Ihren Schlüssel.
Der nächste Teil ist einfach.
Fordert den Benutzer für ihre Klartext das wird der Datentyp String sein.
Zum Glück für uns alle vom Benutzer eingegeben Strings sind gültig.
>> Nun, wir haben alle notwendigen Eingaben von dem Benutzer, ist es Zeit für uns,
verschlüsseln ihre Botschaft.
Das Konzept ist einfach Caesar genug, um zu verstehen.
Aber wie Sie Ihren Computer wissen, welche Briefe kommen nacheinander?
>> Hier ist, wo die ASCII-Tabelle kommt in.
Jeder Charakter hat eine ganze Nummer zugeordnet.
Kapital A beträgt 65 Jahre.
Kapital B ist 66.
Kleinbuchstaben a 97.
Kleinbuchstaben b ist 98.
Aber Zeichen sind nicht begrenzt nur alphabetisch Zahlen.
Zum Beispiel kann das Zeichen @ ASCII ist Nummer 64.
>> Bevor man sich mit der ganzen Reihe, lasst uns so tun, müssen wir nur verschieben
ein Zeichen.
Nun, wir wollen nur verschieben tatsächlichen Buchstaben im Klartext, nicht
Buchstaben oder Zahlen.
Also das erste, was wir wollen, werden Sie prüfen, ob der Charakter in ist
das Alphabet.
>> Die Funktion isalpha tut dies für uns und gibt einen Boolean -
true, wenn das Zeichen ist ein Buchstabe, andernfalls false.
Zwei weitere nützliche Funktionen sind isupper und islower, mit
selbsterklärend Namen.
Sie true zurück, wenn das angegebene Zeichen ist Groß-und Kleinschreibung,
sind.
Da sie Booleans sind, sind sie nützlich als Bedingungen verwendet werden.
>> Wenn isalpha true zurückgibt, müssen Sie dieses Zeichen durch den Schlüssel verschieben.
Lassen Sie uns also auf ASCIIMath öffnen und einige ASCII math.
Die Benutzung ist sehr ähnlich zu der Nutzung für Caesar und nimmt in einer Schlüsselposition bei der
Befehlszeile.
>> Wenn ich ASCIIMath 5 laufen, scheint es hinzufügen 5 ein und gab mir den Brief f und
Anzeigen der ASCII-Wert.
Werfen wir also einen Blick auf das Programm.
>> Sie fragen sich vielleicht, genau hier, warum Brief ist eine ganze Zahl, wenn es
klar, na ja, ein Brief.
Es stellt sich heraus, dass Zeichen und Zahlen sind austauschbar.
Indem Sie den Buchstaben A in einzelnen Anführungszeichen, kann das ganze speichern
der ASCII-Wert des Kapitals A. Seien Sie aber vorsichtig.
Sie müssen die einzelnen Kleider.
Ohne die einfache Anführungszeichen, das Compiler für eine Variable aussehen
namens A, und nicht der Charakter.
>> Dann füge ich Brief und einen Schlüssel, Speichern der Summe in den int-Variablen Ergebnis.
Obwohl Ergebnis ist vom Datentyp integer, nutzt mein printf Anweisung der
% C Platzhalter für Zeichen.
So druckt das Programm den Charakter verbunden mit dem ganzzahligen Ergebnis.
Und da wir die ganze gedruckt Form als auch mit% d, sehen wir
die Anzahl als auch.
So, jetzt können Sie sehen, dass wir Zeichen und behandeln
Zahlen, und umgekehrt.
>> Lasst Test ASCIIMath wenige mehrere Male unter Verwendung von 25 als Schlüssel.
Wir bekommen den Brief z.
Jetzt versuchen wir, 26.
Wir wollen den Brief eines bekommen, aber stattdessen bekommen wir eine linke Klammer.
So offensichtlich, einfach nur mit der Schlüssel zu dem Brief geht nicht.
Wir müssen herausfinden, eine Formel zu wickeln rund um das Alphabet, wie unsere
Beispiel in der Anfang.
>> Eine Formel für die Cäsars Verschiebung ist wie folgt.
c gleich p zzgl. k modulo 26.
Beachten Sie, dass ein nützliches Modulo ist Betrieb, das gibt uns den Rest
der Division einer Zahl durch die andere.
Wenden wir diese Formel auf der Ebene Text Brief mit einem Schlüssel von 2.
Der ASCII-Wert von y ist 89, die gibt uns 91 modulo 26,
das entspricht 13 -
definitiv nicht der ASCII-Wert von a, die 67.
>> Humor mir jetzt und weg von der ASCII-Werte zu einem alphabetischen Index
wobei A Null ist, und Z 25 ist, was bedeutet, dass Y 24 ist.
24 plus 2, modulo 6, gibt uns 26, Modulo 26, 0, die das ist
alphabetischen Index ein.
Also diese Formel scheint zu gelten die alphabetischen Index des Schreibens und
nicht seine ASCII-Wert.
>> Aber Sie beginnen mit ASCII-Werte.
Und um die Chiffretextzeichen ausdrucken Sie seinen ASCII-Wert als auch benötigen.
Es liegt an Ihnen, dann, um herauszufinden, wie hin-und herschalten.
>> Wenn Sie herausfinden, die richtige Formel für ein Zeichen, müssen alles, was Sie zu tun
wird die gleiche Formel, um jedes anwenden Buchstaben im Klartext -
nur, wenn dieser Brief ist alphabetisch, natürlich.
Und denken Sie daran, dass Sie zu erhalten müssen der Fall ist, oberen oder unteren, das ist, wo
die isupper und IsLower Funktionen erwähnt wird sich als nützlich erweisen.
Vielleicht haben Sie zwei Formeln -
eine für Großbuchstaben und eine für Kleinbuchstaben.
So isupper ein IsLower helfen Ihnen bestimmen, welche Formel anzuwenden.
>> Wie bewerben Sie Ihre Formel jeden einzelnes Zeichen in einem String?
Nun, das ist eine Zeichenkette nur ein Array von Zeichen.
So können Sie auf jedes Zeichen durch Gruppierung über jedes Zeichen in der
String in eine for-Schleife.
Wie für den Zustand Ihrer for-Schleife die Funktion strlen, für Streichorchester
Länge, wird sich als nützlich erweisen.
Es kommt in einer Zeichenfolge als Eingabe und gibt die Länge des Strings.
Achten Sie darauf, die richtige Bibliothek gehören um die Länge der Zeichenfolge Funktion zu nutzen.
>> Und dort haben Sie Ihre Schlüsseltext.
Mein Name ist Zamyla.
Und [SPEAKING CODE].