>> ZAMYLA CHAN: Gratulacje na wykończenie twojej
Pierwsze kilka programów w C.
Wiem, że pierwszy wypad do Składnia C może być trudne.
Ale zapewniam was, na koniec Oczywiście, będziesz mógł patrzeć na
Pierwsze kilka zadań i ukończyć je w ciągu kilku minut.
>> Teraz, że jesteś coraz bardziej zaznajomieni ze składnią, przejdźmy do Cezara.
W Cezara, użytkownik przedłoży cyfrowy klucz w linii poleceń
Argument, wpisz plain SMS na polecenia.
Program następnie zaszyfrować tekst i drukuj
ich przesłanie szyfrogram.
>> Szyfrujących dla Cezara jest dość prosta.
Przesunięcie każdy list, w ich zwykły tekst, przez klucz.
W rezultacie, jest to również dość niepewnie.
Ale Cezar wprowadzi wykonawcze nam ASCIIMath i tablicy danych
struktury.
Dojdziemy do bardziej złożonych szyfry później.
Z Cezara kluczem 2, literę w plain text będzie reprezentowana przez
Litera C w zaszyfrowanym tekście, ponieważ C to dwie litery po A. B będzie
reprezentowana przez D i C E. kierunku końca alfabetu, W oznacza
reprezentowane przez Y i X przez Z. Ale Y nie ma dwa listy po tym, więc
szyfry otacza alfabetu.
Y w postaci zwykłego tekstu jest więc reprezentowany przez W szyfrogram i Z przez B. To może
pomocy, aby zobaczyć, jak Caesar Cypher ciągłe koło alfabet.
>> Aby zaszyfrować swój tekst, łatwość wejdą dwa argumenty
w linii komend -
. / Cezar następnie kluczem.
Jak zawsze, nie możemy ufać użytkownika całkowicie wejść wejście, które sprawiają,
sens dla naszego programu.
Więc będziemy musieli potwierdzić swój Wejście linii poleceń.
>> Zamiast używać int main nieważne, jesteśmy za pomocą int main int argc, String argv.
Reprezentuje zmienna całkowita argc liczba argumentów przekazanych do
linii poleceń.
A argv jest tablicą, lub myśleć o tym jak lista, z argumentów przekazany w.
>> Więc dla Cezara, w jaki sposób sprawdzić poprawność wyjścia użytkownika?
Cóż, powinny one być tylko wejście dwa argumenty linii poleceń -
. / Cezar i klucz.
Tak więc, jeśli nie jest argc 2, co oznacza, że to albo zapomniał klucza i tylko
wprowadzone. / Cezar, albo weszła wielu kluczy.
>> Jeśli jest to przypadek, to będziesz chcesz wydrukować instrukcje
i zamknąć program.
Oni muszą spróbować ponownie z linii poleceń.
Ale nawet jeśli argc jest 2, będziesz należy sprawdzić, czy
daje prawidłowy klucz.
Dla Cezara, trzeba liczbę całkowitą.
Ale argv jest tablicą łańcuchów.
Jak uzyskać dostęp do tego klucza?
>> Szybkie spojrzenie na tablicach -
struktury danych, które posiadają wielu Wartości tego samego typu.
Wpisy są indeksowane od zera, co oznacza, że Pierwszy element jest zerowa Index
i ostatni element jest wielkości indeksu minus 1, w którym powierzchnia liczba
elementy w tablicy.
>> Gdybym ogłosił nową skrzynkę pocztową tablicy ciągów o długości 3, wizualnie, to
wygląda tak.
Trzy pojemniki na smyczki , Obok siebie.
Aby uzyskać dostęp do dowolnego elementu, należy wpisać nazwę z matrycy, a następnie podać
indeks w nawiasach kwadratowych.
Tutaj jestem przypisanie wartości do każdego elementem, tak jak to robię z każdym
inna zmienna łańcuchowa.
>> Tak więc, aby uzyskać dostęp do naszych argumentów wiersza poleceń, wszystko co musimy zrobić, to przejść
prawo element tablicy argv.
Jeżeli użytkownik wprowadzi. / Zespół Blastoff Rakieta do terminalu, by argv 0
być. / blastoff.
argv będzie zespół, a arg2 będzie rakieta.
>> Teraz możemy przejść nasz klucz, musimy jeszcze zrobić
upewnić się, że jest on poprawny.
Musimy przekształcić go w całkowitej.
Ale nie możemy rzucać jak zrobiliśmy wcześniej.
Na szczęście, aby funkcja Y dba z tego dla nas, a nawet zwraca 0
jeśli łańcuch nie może być przekształcony do liczby całkowitej.
To do Ciebie, choć powiedzieć Użytkownik, dlaczego nie zrobisz
niech program kontynuować.
Zapisać wynik do Y w całkowita, a nie masz klucza.
Następna część jest prosta.
Pytaj o ich zwykły tekst, który będzie typu string danych.
Na szczęście dla nas, wszystkie wprowadzane użytkownika łańcuchy są ważne.
>> Teraz, gdy mamy niezbędne podstawy od użytkownika, to jest czas dla nas, aby
zaszyfrować swoje wiadomości.
Koncepcja jest prosta Cezara wystarczy zrozumieć.
Ale w jaki sposób komputer wie co litery pochodzą od siebie?
>> Oto, gdzie jest cala tabela ASCII
Każda postać ma liczbę całkowitą Numer z nią związane.
Capital jest 65.
Capital B jest 66.
Małe jest 97.
Małe litery b jest 98.
Ale znaki nie są ograniczone do zaledwie alfabetycznych numerów.
Na przykład, symbol @ jest ASCII 64 liczba.
>> Zanim do czynienia z całym ciągiem, udawajmy, po prostu musimy przesunąć
jeden znak.
Cóż, my tylko chcemy przesunąć rzeczywiste Litery w postaci zwykłego tekstu, a nie
znaków lub cyfr.
Tak więc pierwszą rzeczą, że będziemy chcieli sprawdzić, czy znak jest w
alfabet.
>> Isalpha robi to funkcja nas i zwraca wartość logiczną -
true, jeśli znaków jest list, false, jeśli inaczej.
Dwie inne funkcje isupper i islower, z
self-noty nazwy.
Wracają true, jeśli dany znak jest wielkie i małe litery,
złotych.
Ponieważ są one Boolean, są przydatne do stosowania jako warunkach.
>> Jeśli isalpha zwraca true, trzeba do zmiany tego znaku przez klucz.
Warto więc otworzyć się ASCIIMath i zrobić ASCII matematyki.
Użycie jest bardzo podobny do użycia dla Cezara i bierze w kluczu na
linii poleceń.
>> Jeśli uruchomić ASCIIMath 5, wydaje się, aby dodać 5 to, co daje mi litera F, oraz
wyświetlania wartość ASCII.
Warto więc zapoznać się z programem.
>> Można się zastanawiać, właśnie tutaj, dlaczego Litera jest liczbą całkowitą, gdy znajduje się w
oczywiście, dobrze, list.
Okazuje się, że znaki i liczbami całkowitymi są wymienne.
Poprzez umieszczenie list w jeden cudzysłów, liczba całkowita może przechowywać
ASCII wartość kapitału A. Należy uważać, choć.
Musisz pojedynczych ubrań.
Bez pojedynczych cudzysłowach, kompilator będzie szukał zmiennej
nazwie, a nie charakter.
>> Następnie dodać list i klucz, przechowywania suma w wyniku int zmiennych.
Mimo, że wynik jest typu danych całkowita, moja printf używa
% C zastępczy znaków.
Tak więc program wypisuje znak związana z całkowitą wyniku.
A ponieważ drukowane liczbę całkowitą również za pomocą formularza% d, widzimy
Numer, jak również.
Więc teraz widać, że traktować znaków i
liczby całkowite, i vice versa.
>> Sprawdźmy kilka z ASCIIMath więcej razy przy użyciu 25 jako klucz.
Dostajemy się z..
Teraz staramy 26.
Chcemy, aby uzyskać litery, ale zamiast tego dostajemy lewy wspornik.
Tak oczywiście, tylko dodawanie Kluczem do listu nie będzie.
Musimy dowiedzieć się formuły do ​​zapakowania całego alfabetu, jak nasz
Przykładem na początku zrobił.
>> Wzór na Cezara Przesunięcie to w następujący sposób.
c jest równa p plusa k modulo 26.
Pamiętaj, że modulo jest przydatna działanie, które daje nam pozostałą
dzielenia jednej liczby przez drugą.
Chcę zastosować tę formułę do plain List tekst z kluczem 2.
ASCII wartość y jest 89, które daje nam 91 modulo 26,
co równa się 13 -
na pewno nie wartość ASCII z, które jest 67.
>> Humor mi się i odejście od Wartości ASCII do indeksu kolejności alfabetycznej
w którym a oznacza zero, a Z oznacza 25, co oznacza, że ​​Y jest 24.
24 plus 2, modulo 6, daje nam 26, modulo 26, 0, który jest
Indeks alfabetyczny.
Tak więc wydaje się, wzór ten stosuje się do indeks alfabetyczny pisma i
nie jego wartość ASCII.
>> Ale zacząć wartości ASCII.
I wydrukować znak szyfrogram, musisz jej wartość ASCII, jak również.
To do Ciebie, to, aby dowiedzieć się, Jak przełączać się.
>> Po dowiedzieć się odpowiednią formułę dla jednego znaku, wszystko co musisz zrobić,
jest stosować tę samą formułę, aby każdy List w zwykły tekst -
tylko w przypadku, że list jest alfabetycznie, oczywiście.
I pamiętaj, że trzeba zachować Sprawa, górnej lub dolnej, to gdzie
isupper i funkcje islower wspomniano wcześniej będzie przydatna.
Możesz mieć dwa wzory -
jeden dla wielkich liter i jeden za małe.
Więc isupper islower pomoże określenia, które stosuje się do wzoru.
>> Jak zastosować wzór do każdego jeden znak w ciągu znaków?
Cóż, to tylko ciąg Tablica znaków.
Tak więc można uzyskać dostęp do każdego znaku przez zgrupowanie na każdym znaku w
ciąg w pętli for.
Jeśli chodzi o stan swojego pętli for, Funkcja strlen, na ciąg
długości, będzie przydatna.
Przyjmuje w ciąg na wejściu i zwraca długość tego ciągu.
Upewnij się, że to prawo biblioteki korzystać z funkcji długości łańcucha.
>> I nie masz szyfrogram.
Nazywam się Zamyla.
I [EGZAMIN CODE].