1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Õnnitlused viimistlus oma 3 00:00:11,270 --> 00:00:13,200 Esimesed paar C programme. 4 00:00:13,200 --> 00:00:16,379 Ma tean, et sinu esimene Tuhoamisretki C süntaks võib olla heidutav. 5 00:00:16,379 --> 00:00:20,060 Aga ma kinnitan teile, et aasta lõpus Muidugi, sa pead suutma vaadata 6 00:00:20,060 --> 00:00:23,870 Esimesed paar ülesanded ja täitma neid minutit. 7 00:00:23,870 --> 00:00:27,830 >> Nüüd, kui sa oled teinud rohkem kursis süntaksi, lähme Caesar. 8 00:00:27,830 --> 00:00:31,720 In Caesar, kasutaja esitama täisarv võti käsurea 9 00:00:31,720 --> 00:00:35,300 argument, siis sisestage tavaline tekstsõnumi käsureale. 10 00:00:35,300 --> 00:00:38,050 Programm siis encipher tekst ja trükkimine 11 00:00:38,050 --> 00:00:40,020 nende ciphertext sõnum. 12 00:00:40,020 --> 00:00:42,980 >> Enciphering jaoks Caesar on üsna lihtne. 13 00:00:42,980 --> 00:00:46,455 Shift iga täht, nende lihttekstina poolt võtmega. 14 00:00:46,455 --> 00:00:49,220 Selle tulemusena, see on ka üsna ebakindel. 15 00:00:49,220 --> 00:00:53,850 Aga rakendatakse Caesar tutvustab meil ASCIIMath ja array andmed 16 00:00:53,850 --> 00:00:54,460 struktuure. 17 00:00:54,460 --> 00:00:57,510 Me jõuame keerulisem ciphers hiljem. 18 00:00:57,510 --> 00:01:01,680 Mis Caesar võti 2 kirja sisse lihtteksti oleks esindatud 19 00:01:01,680 --> 00:01:07,580 täht C ciphertext sest C on kaks tähte pärast A. B oleks 20 00:01:07,580 --> 00:01:12,450 esindab D ja C E. suunas lõpuks tähestikku, W on 21 00:01:12,450 --> 00:01:18,550 esindab Y ja X Z. Aga Y ei ole kahe tähe peale, nii 22 00:01:18,550 --> 00:01:21,070 ciphers murtakse tähestikku. 23 00:01:21,070 --> 00:01:27,190 Y lihttekstina Seega esindab Aastal ciphertext ja Z B. See võib 24 00:01:27,190 --> 00:01:32,080 aitavad vaadata Caesar Cypher nagu pidev tähestik ratast. 25 00:01:32,080 --> 00:01:35,760 >> Encipher oma teksti, kasutaja alustavad kaks argumenti 26 00:01:35,760 --> 00:01:37,090 käsureale käsu - 27 00:01:37,090 --> 00:01:40,010 . / Caesar järgneb võti. 28 00:01:40,010 --> 00:01:44,710 Nagu alati, me ei saa usaldada kasutaja täiesti sisestada sisend, mis muudavad 29 00:01:44,710 --> 00:01:45,800 mõttes meie programm. 30 00:01:45,800 --> 00:01:50,670 Seega me peame kinnitama oma käsurealt sisestada. 31 00:01:50,670 --> 00:01:57,285 >> Selle asemel, et int main tühine, me oleme kasutades int main, int argc, string argv. 32 00:01:57,285 --> 00:02:01,730 Täisarv muutuja argc esindab argumentide arv läks 33 00:02:01,730 --> 00:02:02,880 käsurealt. 34 00:02:02,880 --> 00:02:09,070 Ja argv on massiiv või mõelda seda nimekirja ning argumentide sisse 35 00:02:09,070 --> 00:02:12,000 >> Nii Caesar, kuidas me kinnitada kasutaja sisend? 36 00:02:12,000 --> 00:02:15,870 Noh, nad peaksid ainult sisenemist kaks käsurea argumente - 37 00:02:15,870 --> 00:02:18,150 . / Caesar ja võti. 38 00:02:18,150 --> 00:02:22,340 Nii et kui argc ei ole 2, mis tähendab, et nad kas unustasid võti ja lihtsalt 39 00:02:22,340 --> 00:02:27,230 sisestatud. / caesar, või nad sisestada mitu võtmed. 40 00:02:27,230 --> 00:02:29,770 >> Kui see on nii, siis saate soovite printida juhiseid 41 00:02:29,770 --> 00:02:30,910 ja sulgege programm. 42 00:02:30,910 --> 00:02:34,320 Nad peavad uuesti proovida käsurealt. 43 00:02:34,320 --> 00:02:37,430 Aga isegi kui argc on 2, saate tuleb kontrollida, kas nad 44 00:02:37,430 --> 00:02:39,100 teile kehtiv võti. 45 00:02:39,100 --> 00:02:40,730 Caesari, peate täisarv. 46 00:02:40,730 --> 00:02:43,260 Aga argv on massiivi stringe. 47 00:02:43,260 --> 00:02:46,490 Kuidas pääseda, et võti? 48 00:02:46,490 --> 00:02:47,850 >> Kiire pilk massiivid - 49 00:02:47,850 --> 00:02:51,410 andmestruktuurid et olla mitmeid väärtusi sama andmetüüp. 50 00:02:51,410 --> 00:02:55,350 Sissekanded on null indekseeritud, mis tähendab, et Esimene element on indeks nulli 51 00:02:55,350 --> 00:03:00,260 ja viimane element on indeks suurus miinus 1, kui suurus on arvu 52 00:03:00,260 --> 00:03:02,850 massiivi elementide. 53 00:03:02,850 --> 00:03:07,380 >> Kui ma kuulutatud uus string array postkast pikkus 3, visuaalselt, see 54 00:03:07,380 --> 00:03:08,570 näeb välja selline. 55 00:03:08,570 --> 00:03:11,520 Kolm konteinerid stringid Kõrvuti. 56 00:03:11,520 --> 00:03:15,445 Et pääseda mis tahes element, siis sisesta nimi on massiiv ja seejärel osuta 57 00:03:15,445 --> 00:03:18,080 indeks nurksulgudes. 58 00:03:18,080 --> 00:03:21,610 Siin ma väärtustamise iga element, nagu ma teeksin ükskõik 59 00:03:21,610 --> 00:03:24,310 muu string muutuja. 60 00:03:24,310 --> 00:03:29,020 >> Nii et juurdepääs meie käsurea argumente, kõik me peame tegema, on juurdepääs 61 00:03:29,020 --> 00:03:31,690 õige element argv massiivi. 62 00:03:31,690 --> 00:03:37,360 Kui kasutaja on sisenenud. / Blastoff Team Rocket terminali, argv 0 oleks 63 00:03:37,360 --> 00:03:38,950 olema. / blastoff. 64 00:03:38,950 --> 00:03:45,010 argv oleks Team, ja arg2 oleks raketi. 65 00:03:45,010 --> 00:03:47,670 >> Nüüd, kui meil on juurdepääs meie võti, meil on vaja veel teha 66 00:03:47,670 --> 00:03:49,040 kindel, et see on õige. 67 00:03:49,040 --> 00:03:51,060 Meil on vaja muuta selle täisarv. 68 00:03:51,060 --> 00:03:54,680 Kuid me ei saa lihtsalt valatud nagu me oleme teinud varem. 69 00:03:54,680 --> 00:03:58,800 Õnneks Y funktsioon hoolitseb Selle eest meid ja isegi tagasi 0 70 00:03:58,800 --> 00:04:02,110 kui string ei saa ümber arvesse täisarv. 71 00:04:02,110 --> 00:04:04,450 See on kuni teile, aga öelda kasutaja miks sa ei 72 00:04:04,450 --> 00:04:06,220 lasta programmi edasi. 73 00:04:06,220 --> 00:04:10,710 Hoida tulemus, et Y täisarv, ja et teil on oma võti. 74 00:04:10,710 --> 00:04:12,070 Järgmine osa on lihtne. 75 00:04:12,070 --> 00:04:15,940 Küsib kasutaja oma lihttekstina mis on andmete tüüpi string. 76 00:04:15,940 --> 00:04:18,339 Õnneks kõik kasutaja sisestanud stringid on kehtivad. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Nüüd, kui meil kõik vajalik sisend kasutaja, see on meil aeg 79 00:04:24,760 --> 00:04:26,520 encipher oma sõnum. 80 00:04:26,520 --> 00:04:29,200 Mõiste Caesar on lihtne piisavalt aru. 81 00:04:29,200 --> 00:04:33,750 Aga kuidas arvuti teada, millised tähed tulevad üksteise järel? 82 00:04:33,750 --> 00:04:36,100 >> Siin, kus ASCII tabelis on sisse 83 00:04:36,100 --> 00:04:39,420 Igal tegelasel on täisarv number on seostatud sellega. 84 00:04:39,420 --> 00:04:41,380 Capital on 65. 85 00:04:41,380 --> 00:04:43,310 Capital B on 66. 86 00:04:43,310 --> 00:04:45,260 Väiketähed on 97. 87 00:04:45,260 --> 00:04:47,590 Väiketähed b on 98. 88 00:04:47,590 --> 00:04:50,770 Aga märgid ei ole piiratud lihtsalt tähestiku numbrid. 89 00:04:50,770 --> 00:04:56,020 Näiteks @ sümbol on ASCII number 64. 90 00:04:56,020 --> 00:04:59,690 >> Enne tegeleb terve rida, oletame, me lihtsalt peame muutma 91 00:04:59,690 --> 00:05:01,220 üks märk. 92 00:05:01,220 --> 00:05:04,640 Noh, me ainult tahame minna tegelik tähed lihttekstina ei 93 00:05:04,640 --> 00:05:06,020 märgid või numbrid. 94 00:05:06,020 --> 00:05:09,100 Nii et esimene asi, mida me tahame vaadata, kas märk on 95 00:05:09,100 --> 00:05:10,430 tähestikku. 96 00:05:10,430 --> 00:05:14,460 >> Funktsioon isalpha teeb seda meile ja tagastab Boolean - 97 00:05:14,460 --> 00:05:18,570 tõsi, kui tegelased on kirjas, false kui teisiti. 98 00:05:18,570 --> 00:05:22,270 Kaks muud kasulikud funktsioonid isupper ja islower koos 99 00:05:22,270 --> 00:05:23,860 iseenesestmõistetavad nimed. 100 00:05:23,860 --> 00:05:27,370 Nad tagasi true, kui antud märk on suur-või väiketähed, 101 00:05:27,370 --> 00:05:28,740 võrra. 102 00:05:28,740 --> 00:05:33,770 Kuna need on tõeväärtused, need on kasulik kasutada nagu tingimustel. 103 00:05:33,770 --> 00:05:38,310 >> Kui isalpha tagastab tõsi, peate nihutada, et märk, mille võti. 104 00:05:38,310 --> 00:05:43,750 Niisiis olgem avatud ASCIIMath ja teha mõned ASCII matemaatikat. 105 00:05:43,750 --> 00:05:48,700 Kasutamine on väga sarnane kasutus jaoks Caesar ja võtab klahvi 106 00:05:48,700 --> 00:05:50,870 käsurida. 107 00:05:50,870 --> 00:05:59,590 >> Kui ma saan ASCIIMath 5, tundub, et lisada 5, mis annab mulle kirja f, ning 108 00:05:59,590 --> 00:06:01,260 väljapanek ASCII väärtus. 109 00:06:01,260 --> 00:06:04,090 Võtame pilk programmi. 110 00:06:04,090 --> 00:06:11,820 >> Sa võiks küsida, siin, miks kirjas on täisarv, kui see on 111 00:06:11,820 --> 00:06:14,330 selgelt, noh, kirja. 112 00:06:14,330 --> 00:06:17,690 Selgub, et märgid ja täisarvud on omavahel vahetatavad. 113 00:06:17,690 --> 00:06:21,730 Pannes kirja ühe jutumärkides täisarv saab salvestada 114 00:06:21,730 --> 00:06:25,390 ASCII kapitali väärtust A. Olge ettevaatlik, kuigi. 115 00:06:25,390 --> 00:06:27,150 Sa pead ühe riided. 116 00:06:27,150 --> 00:06:31,260 Ilma ühtse jutumärkideta, koostaja näeks muutuja 117 00:06:31,260 --> 00:06:35,510 nimega, mitte iseloomu. 118 00:06:35,510 --> 00:06:42,140 >> Siis lisan kirja ja võtme hoidmiseks summa int muutujate tulemus. 119 00:06:42,140 --> 00:06:47,740 Kuigi tulemus on andmete tüüp täisarv, mu printf avaldus kasutab 120 00:06:47,740 --> 00:06:50,370 % C kohatäide tähemärki. 121 00:06:50,370 --> 00:06:54,530 Nii programm prindib iseloomu seotud täisarv tulemus. 122 00:06:54,530 --> 00:07:00,400 Ja kuna me trükitud täisarv kujul kui ka kasutades% d, siis näeme, 123 00:07:00,400 --> 00:07:02,110 number samuti. 124 00:07:02,110 --> 00:07:04,450 Nüüd te näete, et me raviks tähemärki ja 125 00:07:04,450 --> 00:07:06,980 täisarvud, ja vastupidi. 126 00:07:06,980 --> 00:07:12,205 >> Olgem test välja ASCIIMath paar mitu korda, kasutades 25 kui võti. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Me saame kirja z. 129 00:07:17,090 --> 00:07:19,750 Nüüd püüame 26. 130 00:07:19,750 --> 00:07:25,600 Me tahame, et saada kirja, kuid asemel saame vasak sulg. 131 00:07:25,600 --> 00:07:29,490 Nii et ilmselt lihtsalt lisades võti täht ei tee. 132 00:07:29,490 --> 00:07:32,780 Me peame välja mõtlema valemi pakkima ümber tähestikku, nagu meie 133 00:07:32,780 --> 00:07:34,570 Näiteks aasta alguses tegin. 134 00:07:34,570 --> 00:07:38,520 >> Valem Caesari nihe on järgmine. 135 00:07:38,520 --> 00:07:42,750 c võrdub p pluss k moodul 26. 136 00:07:42,750 --> 00:07:46,040 Pea meeles, et moodul on kasulik operatsioon, mis annab meile ülejäänud 137 00:07:46,040 --> 00:07:49,880 jagades üks number teise. 138 00:07:49,880 --> 00:07:54,870 Olgem kohaldatakse seda valemit tavaline teksti tähe klahvi 2. 139 00:07:54,870 --> 00:08:01,810 ASCII väärtus y on 89, mis annab meile 91 moodul 26, 140 00:08:01,810 --> 00:08:03,690 mis võrdub 13 - 141 00:08:03,690 --> 00:08:08,740 kindlasti mitte ASCII väärtus kohta, mis on 67. 142 00:08:08,740 --> 00:08:12,810 >> Huumor mind nüüd ja eemalduda ASCII väärtused tähestikregistris 143 00:08:12,810 --> 00:08:18,690 kus on null ja Z on 25, mis tähendab, et Y on 24. 144 00:08:18,690 --> 00:08:25,830 24 pluss 2, moodul 6, annab meile 26, moodul 26, 0, mis on 145 00:08:25,830 --> 00:08:28,170 tähestikuline register. 146 00:08:28,170 --> 00:08:32,980 Nii et see valem näib kehtivat tähestikregistris kirja ja 147 00:08:32,980 --> 00:08:34,960 ei oma ASCII väärtus. 148 00:08:34,960 --> 00:08:37,630 >> Aga kui hakkate koos ASCII väärtused. 149 00:08:37,630 --> 00:08:41,650 Ja printida ciphertext iseloomu, peate selle ASCII väärtus samuti. 150 00:08:41,650 --> 00:08:46,400 See on kuni teile, siis, et aru saada, kuidas minna edasi ja tagasi. 151 00:08:46,400 --> 00:08:49,850 >> Kui oled nuputada õige valem üks märk, kõik mida sa pead tegema, 152 00:08:49,850 --> 00:08:53,520 on rakendada sama valemit iga kirja lihttekstina - 153 00:08:53,520 --> 00:08:57,720 ainult siis, kui seda kirja tähestikulises, muidugi. 154 00:08:57,720 --> 00:09:02,360 Ja pidage meeles, et teil on vaja säilitada juhul ülemist või alumist, see on kui 155 00:09:02,360 --> 00:09:06,890 isUpper ja isLower funktsioonid varem mainitud tulevad mugav. 156 00:09:06,890 --> 00:09:08,830 Te võib-olla kaks valemid - 157 00:09:08,830 --> 00:09:11,680 üks suurtähti ja üks väiketähti. 158 00:09:11,680 --> 00:09:18,420 Nii isUpper isLower aitab millist valemit kohaldama. 159 00:09:18,420 --> 00:09:22,460 >> Kuidas rakendada oma valemit iga ühe märgi string? 160 00:09:22,460 --> 00:09:25,910 Noh, string on vaid array tähemärki. 161 00:09:25,910 --> 00:09:31,150 Nii pääsete iga märk rühmitades üle iga tegelane 162 00:09:31,150 --> 00:09:33,450 stringi jaoks silmus. 163 00:09:33,450 --> 00:09:37,550 Nagu seisukorras oma jaoks silmus, funktsioon strlen, keelpilliorkestrile 164 00:09:37,550 --> 00:09:39,280 pikkus, mis tulevad mugav. 165 00:09:39,280 --> 00:09:44,020 See võtab stringi sisendiks ja tagastab pikkus, et string. 166 00:09:44,020 --> 00:09:49,250 Veenduge, et lisada õige raamatukogu kasutada stringi pikkus funktsiooni. 167 00:09:49,250 --> 00:09:51,790 >> Ja et teil on oma ciphertext. 168 00:09:51,790 --> 00:09:53,260 Minu nimi on Zamyla. 169 00:09:53,260 --> 00:09:54,510 Ja [räägitakse CODE]. 170 00:09:54,510 --> 00:10:02,944