1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Čestitamo na zaključujete 3 00:00:11,270 --> 00:00:13,200 Prvi par programov C. 4 00:00:13,200 --> 00:00:16,379 Vem, da je tvoj prvi plenilec v Sintaksa C lahko zastrašujoče. 5 00:00:16,379 --> 00:00:20,060 Vendar vam zagotavljam, ob koncu leta tečaj, boste lahko na pogled 6 00:00:20,060 --> 00:00:23,870 Prvih nekaj nalog in njihovo dokončanje v nekaj minutah. 7 00:00:23,870 --> 00:00:27,830 >> Sedaj, ko ste dobili bolj seznanjeni s sintakso, pojdimo k cesarju. 8 00:00:27,830 --> 00:00:31,720 V Cezarja, bo uporabnik predloži celo ključna kot ukazno vrstico 9 00:00:31,720 --> 00:00:35,300 Trditev, vnesite navaden SMS na poziv. 10 00:00:35,300 --> 00:00:38,050 Program bo nato encipher besedilo in tiskanje 11 00:00:38,050 --> 00:00:40,020 njihova šifropisom sporočilo. 12 00:00:40,020 --> 00:00:42,980 >> Šifriranje za Cezarja je dokaj preprost. 13 00:00:42,980 --> 00:00:46,455 Shift vsako pismo, v svojih golo besedilo, s ključem. 14 00:00:46,455 --> 00:00:49,220 Zaradi tega je tudi precej negotov. 15 00:00:49,220 --> 00:00:53,850 Vendar bo o izvajanju Caesar uvesti nam ASCIIMath in nabor podatkov 16 00:00:53,850 --> 00:00:54,460 struktur. 17 00:00:54,460 --> 00:00:57,510 Bomo prišli do bolj zapleten šifre kasneje. 18 00:00:57,510 --> 00:01:01,680 S cesarjem ključu 2, črka v golo besedilo bi jo zastopa 19 00:01:01,680 --> 00:01:07,580 črka C v Zakrivena ker C je dve črki, po A. B bi 20 00:01:07,580 --> 00:01:12,450 z D in C zastopa E. naproti konec abecede, W 21 00:01:12,450 --> 00:01:18,550 z Y in X zastopala Z. Toda Y nima dve črki po tem, da 22 00:01:18,550 --> 00:01:21,070 so šifre ovije okoli abecede. 23 00:01:21,070 --> 00:01:27,190 Y v golo besedilo je torej zastopnik V Zakrivena, in Z, ki ga B. To je lahko 24 00:01:27,190 --> 00:01:32,080 pomaga, da si ogledate Caesar Cypher kot neprekinjeno abeceda kolo. 25 00:01:32,080 --> 00:01:35,760 >> Da encipher svoje besedilo, uporabniški bo začela dva argumenta 26 00:01:35,760 --> 00:01:37,090 v ukazni vrstici - 27 00:01:37,090 --> 00:01:40,010 /. Cesar sledi ključem. 28 00:01:40,010 --> 00:01:44,710 Kot vedno, ne moremo zaupati uporabnika popolnoma vstopiti vhod, da bi 29 00:01:44,710 --> 00:01:45,800 Občutek za naš program. 30 00:01:45,800 --> 00:01:50,670 Torej bomo morali za potrditev njihovih vnosa ukaza. 31 00:01:50,670 --> 00:01:57,285 >> Namesto z uporabo int main praznino, smo z int main, int argc, argv niz. 32 00:01:57,285 --> 00:02:01,730 Celo spremenljivka argc predstavlja število argumentov opravili v 33 00:02:01,730 --> 00:02:02,880 ukazni vrstici. 34 00:02:02,880 --> 00:02:09,070 In argv je matrika, ali pa pomislite, da je Seznam, od argumentov opravili noter 35 00:02:09,070 --> 00:02:12,000 >> Torej za Cezarja, kako preveriti vhod uporabnikov? 36 00:02:12,000 --> 00:02:15,870 No, jih je treba vstopajo le dve vrstici argumenti v ukazni - 37 00:02:15,870 --> 00:02:18,150 /. Cezar in ključ. 38 00:02:18,150 --> 00:02:22,340 Torej, če argc ne 2, kar pomeni, da bodisi pozabil ključ in samo 39 00:02:22,340 --> 00:02:27,230 vpisana. / cesar, ali pa vnese več ključev. 40 00:02:27,230 --> 00:02:29,770 >> Če je temu tako, potem boste želite natisniti navodila 41 00:02:29,770 --> 00:02:30,910 in zaprete program. 42 00:02:30,910 --> 00:02:34,320 Te bomo morali poskusiti znova v ukazni vrstici. 43 00:02:34,320 --> 00:02:37,430 Toda tudi če argc je 2, boste je treba preveriti, ali so 44 00:02:37,430 --> 00:02:39,100 vam veljaven ključ. 45 00:02:39,100 --> 00:02:40,730 Za Cezarja, morate celo število. 46 00:02:40,730 --> 00:02:43,260 Ampak argv je array nizov. 47 00:02:43,260 --> 00:02:46,490 Kako lahko dostopate ta ključ? 48 00:02:46,490 --> 00:02:47,850 >> Hiter pogled na polja - 49 00:02:47,850 --> 00:02:51,410 podatkovne strukture, ki imajo več Vrednosti isto vrsto podatkov. 50 00:02:51,410 --> 00:02:55,350 Vnosi nič indeksirane, kar pomeni, da Prvi element je indeks nič 51 00:02:55,350 --> 00:03:00,260 in zadnji element na velikost indeksa minus 1, pri čemer znaša število 52 00:03:00,260 --> 00:03:02,850 elementi v matriki. 53 00:03:02,850 --> 00:03:07,380 >> Če bi razglasila novo matrično nabiralnik niz dolžine 3, vizualno pa 54 00:03:07,380 --> 00:03:08,570 izgleda takole. 55 00:03:08,570 --> 00:03:11,520 Trije zabojniki za godala , Z ramo ob rami. 56 00:03:11,520 --> 00:03:15,445 Za dostop do katerega koli elementa, vnesete ime v niz in nato kažejo 57 00:03:15,445 --> 00:03:18,080 indeks v oglatih oklepajih. 58 00:03:18,080 --> 00:03:21,610 Tukaj sem dodeljevanju vrednost vsakega element, tako kot jaz bi naredil z vsemi 59 00:03:21,610 --> 00:03:24,310 drugi niz spremenljivka. 60 00:03:24,310 --> 00:03:29,020 >> Torej za dostop do naše argumente v ukazni vrstici, vse, kar moramo storiti, je dostop 61 00:03:29,020 --> 00:03:31,690 Pravica element argv matrike. 62 00:03:31,690 --> 00:03:37,360 Če uporabnik vnese. / Blastoff Team Raketa v terminal, bi argv 0 63 00:03:37,360 --> 00:03:38,950 biti. / blastoff. 64 00:03:38,950 --> 00:03:45,010 argv bi bilo Team, in arg2 bi bila raketa. 65 00:03:45,010 --> 00:03:47,670 >> Zdaj, ko smo lahko dostopajo do naše tipko, še vedno potrebujemo, da bi 66 00:03:47,670 --> 00:03:49,040 prepričajte, da je pravilno. 67 00:03:49,040 --> 00:03:51,060 Ga moramo pretvoriti v celo število. 68 00:03:51,060 --> 00:03:54,680 Vendar ne moremo samo odda kot smo že storili. 69 00:03:54,680 --> 00:03:58,800 Na srečo, da funkcija Y skrbi to za nas in celo vrne 0. 70 00:03:58,800 --> 00:04:02,110 če niz ni mogoče pretvoriti v celo število. 71 00:04:02,110 --> 00:04:04,450 To je do vas, čeprav povedati Uporabnik zakaj si ne bo 72 00:04:04,450 --> 00:04:06,220 naj program nadaljuje. 73 00:04:06,220 --> 00:04:10,710 Shranite rezultat Y v celo število, in tam imate svoj ključ. 74 00:04:10,710 --> 00:04:12,070 Naslednji del je preprost. 75 00:04:12,070 --> 00:04:15,940 Poziv uporabniku za svojo golo besedilo, ki bo tipa podatkovni niz. 76 00:04:15,940 --> 00:04:18,339 K sreči za nas, vse si vnesene strune so veljavna. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Zdaj, ko imamo vse potrebne podatke od uporabnika, da je čas za nas 79 00:04:24,760 --> 00:04:26,520 encipher svoje sporočilo. 80 00:04:26,520 --> 00:04:29,200 Koncept je preprost Cezarja dovolj, da bi razumel. 81 00:04:29,200 --> 00:04:33,750 Toda kako računalnik vedo, kateri Črke pridejo po drug drugemu? 82 00:04:33,750 --> 00:04:36,100 >> Tu tabela ASCII pride noter 83 00:04:36,100 --> 00:04:39,420 Vsak lik ima celo Številka je z njo povezana. 84 00:04:39,420 --> 00:04:41,380 Kapital je 65. 85 00:04:41,380 --> 00:04:43,310 Kapital B je 66. 86 00:04:43,310 --> 00:04:45,260 Male črke je 97. 87 00:04:45,260 --> 00:04:47,590 Male črke b je 98. 88 00:04:47,590 --> 00:04:50,770 Vendar znakov ni omejeno na samo abecede številk. 89 00:04:50,770 --> 00:04:56,020 Na primer, simbol @ je ASCII številka 64. 90 00:04:56,020 --> 00:04:59,690 >> Pred obravnavo celotnega niza, kaj je pretvarjal bomo morali preusmeriti 91 00:04:59,690 --> 00:05:01,220 en znak. 92 00:05:01,220 --> 00:05:04,640 No, smo le želeli preusmeriti dejansko Črke v navadnem besedilu, ne 93 00:05:04,640 --> 00:05:06,020 znakov ali številk. 94 00:05:06,020 --> 00:05:09,100 Torej prva stvar, ki jo boste želeli preveriti, ali je znak v 95 00:05:09,100 --> 00:05:10,430 abeceda. 96 00:05:10,430 --> 00:05:14,460 >> Funkcija isalpha počne za nas in vrne Boolean - 97 00:05:14,460 --> 00:05:18,570 res, če likov je pismo, false če je drugače. 98 00:05:18,570 --> 00:05:22,270 Dva druge uporabne funkcije isupper in islower, s 99 00:05:22,270 --> 00:05:23,860 samoumevna imena. 100 00:05:23,860 --> 00:05:27,370 Vrnejo res, če zaradi narave je velikimi ali malimi črkami, 101 00:05:27,370 --> 00:05:28,740 respectively. 102 00:05:28,740 --> 00:05:33,770 Ker so Booleans, oni koristno uporabiti kot pogoji. 103 00:05:33,770 --> 00:05:38,310 >> Če isalpha vrne true, boste morali preusmeriti, da je znak, ki ga tipko. 104 00:05:38,310 --> 00:05:43,750 Torej, kaj je odprta za ASCIIMath in še nekaj math ASCII. 105 00:05:43,750 --> 00:05:48,700 Uporaba je zelo podobna uporabi za cesarja in se v ključu pri 106 00:05:48,700 --> 00:05:50,870 ukazni vrstici. 107 00:05:50,870 --> 00:05:59,590 >> Če sem teči ASCIIMath 5, se zdi, da dodate 5. da, da mi je dal črko f, in 108 00:05:59,590 --> 00:06:01,260 prikazuje vrednost ASCII. 109 00:06:01,260 --> 00:06:04,090 Tako da je lahko pogled na program. 110 00:06:04,090 --> 00:06:11,820 >> Morda se sprašujete, tukaj, zakaj Pismo je celo, ko je 111 00:06:11,820 --> 00:06:14,330 jasno, no, pismo. 112 00:06:14,330 --> 00:06:17,690 Izkazalo se je, da se znaki in cela sta medsebojno zamenljiva. 113 00:06:17,690 --> 00:06:21,730 S tem da je pismo v eno narekovaji, lahko celo shranite 114 00:06:21,730 --> 00:06:25,390 ASCII vrednost kapitala A. Bodite previdni, čeprav. 115 00:06:25,390 --> 00:06:27,150 Potrebujete eno obleko. 116 00:06:27,150 --> 00:06:31,260 Brez narekovajev, prevajalnik bi si za spremenljivko 117 00:06:31,260 --> 00:06:35,510 imenovan, in ne znak. 118 00:06:35,510 --> 00:06:42,140 >> Potem dodam dopis in ključ, shranjevanje Vsota v int spremenljivke rezultat. 119 00:06:42,140 --> 00:06:47,740 Čeprav rezultat tipa podatkov celo, moja printf izjavo uporablja 120 00:06:47,740 --> 00:06:50,370 % C ograda za znake. 121 00:06:50,370 --> 00:06:54,530 Torej program natisne značaja povezana s celo rezultata. 122 00:06:54,530 --> 00:07:00,400 In ker smo natisnili celo Obrazec kakor tudi z% d, bomo videli 123 00:07:00,400 --> 00:07:02,110 številko, kot dobro. 124 00:07:02,110 --> 00:07:04,450 Sedaj lahko vidite, da smo zdravljenje znakov in 125 00:07:04,450 --> 00:07:06,980 cela, in obratno. 126 00:07:06,980 --> 00:07:12,205 >> Oglejmo preizkus iz ASCIIMath nekaj večkrat uporablja 25 kot ključ. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Smo dobili pismo z. 129 00:07:17,090 --> 00:07:19,750 Zdaj skušamo 26. 130 00:07:19,750 --> 00:07:25,600 Želimo, da bi dobili pismo je, vendar namesto tega smo dobili levi nosilec. 131 00:07:25,600 --> 00:07:29,490 Torej je očitno, samo dodal Ključ do dopisa ne bo naredil. 132 00:07:29,490 --> 00:07:32,780 Moramo ugotoviti formulo za zavijanje po abecedi, kot naši 133 00:07:32,780 --> 00:07:34,570 Primer je v začetku naredil. 134 00:07:34,570 --> 00:07:38,520 >> Formula za Cezarjevega Premik je, kot sledi. 135 00:07:38,520 --> 00:07:42,750 c enak p plus k, modulo 26. 136 00:07:42,750 --> 00:07:46,040 Ne pozabite, da je modulo koristno operacija, ki nam daje preostanek 137 00:07:46,040 --> 00:07:49,880 delitve eno številko s seboj. 138 00:07:49,880 --> 00:07:54,870 Oglejmo uporablja to formulo za navaden Besedilo črke s ključem 2. 139 00:07:54,870 --> 00:08:01,810 ASCII vrednost y je 89, ki nam daje 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 kar je enako 13 - 141 00:08:03,690 --> 00:08:08,740 zagotovo ne vrednost ASCII o, kar je 67. 142 00:08:08,740 --> 00:08:12,810 >> Humor me zdaj in se oddaljiti od Vrednosti ASCII znakov v indeksu abecednem 143 00:08:12,810 --> 00:08:18,690 kjer je nič in je Z 25. kar pomeni, da je Y 24. 144 00:08:18,690 --> 00:08:25,830 24 plus 2, modulu 6, nam daje 26, modulu 26, 0, ki je 145 00:08:25,830 --> 00:08:28,170 Indeks abecedni o. 146 00:08:28,170 --> 00:08:32,980 Tako se zdi ta formula uporablja za Indeks abecedni pisma in 147 00:08:32,980 --> 00:08:34,960 ni njena vrednost ASCII. 148 00:08:34,960 --> 00:08:37,630 >> Ampak začnete z vrednostmi ASCII. 149 00:08:37,630 --> 00:08:41,650 In natisniti Zakrivena značaja, boste morali svojo vrednost ASCII, kot dobro. 150 00:08:41,650 --> 00:08:46,400 To je do vas, potem pa, da ugotovimo kako preklapljate. 151 00:08:46,400 --> 00:08:49,850 >> Ko boš ugotovil pravo formulo za en znak, vse, kar morate storiti 152 00:08:49,850 --> 00:08:53,520 se uporablja isto formulo za vsak črka v golo besedilo - 153 00:08:53,520 --> 00:08:57,720 samo, če je to pismo je abecedni, Seveda. 154 00:08:57,720 --> 00:09:02,360 In ne pozabite, da morate ohraniti tako, zgornji ali spodnji, tam 155 00:09:02,360 --> 00:09:06,890 isUpper in isLower funkcije že omenjeno bo prišel prav. 156 00:09:06,890 --> 00:09:08,830 Morda imate dve formule - 157 00:09:08,830 --> 00:09:11,680 ena za velikimi črkami in ena za male. 158 00:09:11,680 --> 00:09:18,420 Torej isUpper bo isLower vam pomaga določiti, katere formula uporablja. 159 00:09:18,420 --> 00:09:22,460 >> Kako si uporabljajo svojo formulo za vsak posamezen znak v nizu? 160 00:09:22,460 --> 00:09:25,910 No, niz je samo nabor znakov. 161 00:09:25,910 --> 00:09:31,150 Tako da lahko dostopate vsak znak združevanje nad vsakim znakom v 162 00:09:31,150 --> 00:09:33,450 niz v for zanko. 163 00:09:33,450 --> 00:09:37,550 Kot je za stanje vaših za zanke, funkcija strlen za vrvico 164 00:09:37,550 --> 00:09:39,280 dolžina, bo prišel prav. 165 00:09:39,280 --> 00:09:44,020 To traja v nizu kot vhodni in vrne dolžino tega niza. 166 00:09:44,020 --> 00:09:49,250 Poskrbite, da se vključi pravo knjižnico uporabo funkcije dolžina niza. 167 00:09:49,250 --> 00:09:51,790 >> In tu imate šifropisom. 168 00:09:51,790 --> 00:09:53,260 Moje ime je Zamyla. 169 00:09:53,260 --> 00:09:54,510 In [GOVOREŒA KODA]. 170 00:09:54,510 --> 00:10:02,944