JavaRush /Java Blog /Random-TK /Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy lek...
Masha
Dereje

Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar)

Toparda çap edildi
cs50 5 we 6-njy leksiýalar üçin tabşyryklar CS50 leksiýalary şu ýerde : https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngcs50.html Bu materialda 3 mesele, olar hakda teoretiki maglumatlar we hereketler üçin gollanma bar.

Maksatlar

• Funksiýalara we kitaphanalara has çuňňur giriň • Kriptografiýa bilen tanyşyň, birnäçe ýönekeý şifrleri durmuşa geçiriň

Goşmaça materiallar

https://reference.cs50.net/ - okuw wagtynda ulanylýan kitaphananyň funksiýalaryny düşündirmek. Iňlisçe. http://computer.howstuffworks.com/c.htm 11 - 14 we 39 sahypalar

Taýýarlyk

update50 Iş ýeriňiz wersiýasynyň täzelenendigine göz ýetirmek üçin cs50.io-a giriň . Terminal penjiresini tötänleýin ýapsaňyz, Görkeziş menýusyna giriň we Konsol elementiniň gapdalynda bellik bardygyny barlaň (ýokdugyny barlaň). Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 1 Terminal penjiresiniň çarçuwasyndaky ýaşyl tegelegiň içinde (+) basyň, Täze Terminal saýlaň . Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 2 Iş bukjasyny dörediň: mkdir bilen ~ / iş meýdançasy / pset2mkdir ~/workspace/pset2 arasynda boşluk bar . Gaýtalamak üçin, root kök katalogyny aňladýar, ~ / iş meýdançasy kök katalogyň içindäki iş meýdany diýilýän bukjadyr, ~ / iş meýdançasy / pset2 ~ / iş ýeriniň içinde pset2 diýilýän katalogdyr . Indi işlediň: täze kataloga üýtgetmek. Buýruk setiri şuňa meňzeýär: Bir zat nädogry bolsa, ädimleri gaýtalaň. Şeýle hem soňky birnäçe buýrugy hronologiki tertipde görmek üçin buýruk çagyryp bilersiňiz . Şeýle hem kursory buýruk setirine ýerleşdirip, iň soňky girizileninden birinjisine çenli ähli buýruklary görmek üçin klawiaturadaky ýokary oky basyp bilersiňiz. Aşak düwmesini ulanyp, yza gaýdyp bilersiňiz. Theeri gelende aýtsak, her gezek şol bir buýruklary ýazmagyň ýerine, eýýäm ýazan buýruklaryňyzy aýlap, Enter basyp täzeden ýerine ýetirip bilersiňiz. Dawudyň leksiýalarynda edil şuny edýändigini gören bolmagyňyz mümkin. Ikinji hepdäniň meseleleri pset2 -de ýatda saklanmalydyr . cd ~/workspace/pset2username:~/workspace/pset2 $history

Taslama 0. Başlamak

Setirlere has içgin seredeliň. Başlangyç.c faýlynda ulanyjynyň adyny soraýan bir programma ýazyň (GetString funksiýasyny ulanyp, adymyzy setir hökmünde alýarys), soňra bolsa adyň (ýa-da atlaryň) we familiýasynyň baş harplaryny boş harplar bilen görkeziň, döwürler ýa-da beýleki simwollar, diňe setir iýmiti bilen ( \ n ). Ulanyjylar diňe harplary (kiçi ýa-da baş harp ýa-da ikisi) we sözleriň arasynda bir boşluk girizýärler diýip çaklaýarys. Jozef Gordon-Lewitt, Konan O'Brien ýa-da Deýwid J. Malan atly ýigitleriň bu programmany ulanmajakdygyny göz öňünde tutuň. Programmanyň dogry işleýşini barlamak üçin check50 jaň ediň: CS50 işgärleri tarapyndan taýýarlanan programmanyň ýerine ýetirilişi bilen oýnamak isleýärsiňizmi? Setiri ýazyň: username:~/workspace/pset2 $ ./initials Zamyla Chan ZC username:~/workspace/pset2 $ ./initials robert thomas bowden RTBcheck50 2015.fall.pset2.initials initials.c~cs50/pset2/initials
Kriptografiýa
Kriptografiýa, maglumatlary şifrlemek we şifrlemek ylmy ... Aslynda şifrlenen habarlar gadymy döwürlerden bäri bar we gizlin habar ibermek üçin goşunlar tarapyndan ulanylýar. Indi, Facebook we beýleki ulgamlardaky parollaryňyz kodlanan görnüşde saklanýar.

Wezipe 1. Salam, Sezar!

Nazary maglumatlar
Iň ýönekeý şifrleriň birini - Rim imperatorynyň adyny göterýän Sezar şifrini öwreneris. Bu şifrde, tekstiň her harpy başga bir belgi bilen çalşyrylýar, bu elipbiýde has az harpdyr. Bu kesgitlenen harplara açar diýilýär . Şeýlelik bilen, 1-nji açar latyn C harpyny D harpyna, Z bolsa aýlawdan A harpyna öwürýär. Eger açar 3 bolsa, C harpy F, Z harplary C görnüşine öwrüler Mysallar: Sezar şifrini ulanýarys pişik sözüniň 5-nji açary. c -> h a -> f t -> y Caesar (cat, 5) = hfy Açar = 7, söz = kompýuter c->j o->v m->t p->w u->b t->a e->l r->y Caesar(computer,7) = jvtwbaly Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 3 Sezar şifrini ýönekeý, ýöne gynansak-da, ygtybarly däl (bular biri-biri bilen baglanyşykly zatlar!): Iňlis elipbiýinde bary-ýogy 25 şifrlemek mümkinçiligi bar, ähli opsiýalary kompýuter bolmasa-da geçmek aňsat. Şeýle-de bolsa, Sezar şifrini köplenç Vigenère şifrleýji ýaly beýleki şifrlerde ädim hökmünde ulanylýar (indiki abzasda has giňişleýin). Sezar şifrini "matematika" edeliň. Göni teksti p harpy bilen belläliň, pi - i belgisindäki p tekstindäki harp. Gizlin açar harp k, c şifr teksti diýeliň we i pozisiýasyndaky şifr tekstindäki harpy ci diýip atlandyralyň. Soňra şifriň her harpyny formula ulanyp hasaplap bilersiňiz: ci = (pi + k) % 26 Bu resmileşdirmäge öwrenişiň, bu algoritmi programmirlemäge mümkinçilik berýär we şifriň manysyny takyk we gysga beýan edýär. Eger k = 13 açary we asyl tekst "Ovaltini içmegiňizi hökman unutmaň!" Diýse, bu biziň alýan şifrimizdir: Or fher gb qevax lbhe Binygvar! O (şifrlenen tekstdäki birinji harp) B harpyndan 13 pozisiýa süýşürilendigine üns beriň. asyl tekstdäki birinji harp). R harpy bilen birmeňzeş zat (şifrlemekdäki ikinji harp) e harpyndan 13 harp (asyl ikinji harp). Şifrlemekdäki üçünji harp, f harpdan 13 harp bilen üýtgedilýär (asyl üçünji), bu ýerde z-den a tegelege geçýäris. 13 açary bolan Sezar şifriniň ROT13 aýratyn ady bar . Simmetrik: ony iki gezek ulanyp, asyl tekste gaýdyp gelýäris. Elbetde, ROT26 hem bar, bu adatça aşa ygtybarly, ýöne pikirleriňizi aýdyň beýan etmeseňiz =).
.Agdaý
Caesar.c faýlynda Sezar şifrini ulanyp teksti şifrleýän programma ýazyň. Programma giriş hökmünde bir buýruk setiri argumentini beriň: negatiw däl bitewi san. Ityönekeýlik üçin, k diýeliň. Ulanyjy buýrugy setir argumentleri ýa-da birden köp argument bilen ýerine ýetirýän bolsa, programma arz edip, 1 bahasyny yzyna gaýtarmaly (adatça ýalňyşlyklar şeýle görkezilýär): return 1; Beýleki ähli ýagdaýlarda programma ulanyja teksti teklip edýär şifrlemek, soňra k düwmesi bilen şifrlenen teksti görkezýär (ýagny, aýlawda k pozisiýalaryny saga süýşürýär). Tekstde iňlis elipbiýiniň daşyndaky nyşanlar bar bolsa, programma olary üýtgetmeýär. Şifrlenen teksti çap edensoň, programma çykýar, esasy girdeji 0: Esasyreturn 0; nol aç-açan yzyna gaýtarylmasa , awtomatiki usulda yzyna gaýtarylýar (int aslynda esasy görnüşiň görnüşi, ýöne başga bir döwürde). Konwensiýa laýyklykda (programmirlemegiň oňat görnüşiniň düzgünleri), ýalňyşlygy görkezmek üçin 1-ni aç-açan yzyna gaýtarsaňyz, programmanyň üstünlikli tamamlanmagyna görkeziji hökmünde 0-ny yzyna gaýtarmaly. Iňlis elipbiýinde bary-ýogy 26 harp bar bolsa-da, k 26-dan uly bolup biler. Aslynda, k = 27 açary k = 1 bilen deň netije berer, ýöne ulanyja negatiw däl san girizmegine rugsat bermeli; 2 ^ 31 - 26-dan ýokary (int-e laýyk bolmaly). Şeýle hem, programma kiçi harplaryň kiçi harplar bilen baş harplar bilen baş harplar bilen kodlanýandygyny göz öňünde tutmalydyr. Biz nireden başlarys? Programma argumentiň setirinde k bahasyny gönüden-göni kabul etmeli bolansoň, esasy funksiýamyzyň sözbaşysy şuňa meňzeýär: 6-njy bapdan, argv- iň setirlerdigini bilýärsiňiz . Bu massiw sport zalynda bir topar gulp hökmünde pikir edilip bilner. Olaryň hersiniň belli bir manysy bar. Biziň ýagdaýymyzda, her öýjügiň içinde birinji gulpy açmak üçin argv [0], ikinjisi - argv [1] we ş.m. ýaly argument bar. N gulplarymyz bar bolsa, argv [n - 1] -de durmalydyrys, sebäbi argv [n] indi ýok (ýa-da bar, ýöne başga birine degişlidir, oňa degmesek gowy). Şonuň üçin k argumentine şeýle girip bilersiňiz: int main(int argc, string argv[])stringstring k = argv[1]; Biz hakykatdanam bir zadyň bardygyna ynanýarys! Arguň argvdaky hatar sanyna deň bolan int üýtgeýjidigini ýadyňyzdan çykarmaň. Bu, öýjügi açmaga synanyşmazdan ozal argc-iň bahasyny barlamagyň has gowudygyny aňladýar, sebäbi onuň ýoklugy ýüze çykyp biler. Iň gowusy argc = 2. Näme üçin beýle? Argv [0] içinde adatça programmanyň ady bolýar. .Agny, argc elmydama azyndan 1. isöne programmamyz ulanyja k buýruk setiri argumentini üpjün etmeli, şonuň üçin argc = 2. Elbetde, ulanyjy buýruk setirinde birden köp argument girizse, argc hem ösýär we edip biler 2-den uly bolmaly Ulanyjy bir bitewi bir setire girse, bu girizilen bahanyň awtomatiki usulda int görnüşinde saklanjakdygyny aňlatmaýar. Has takygy, NOTOK. Int ýaly görünse-de, setir bolar! Şonuň üçin setiri özümize öwürmeli. Bagtymyza, bu maksat bilen döredilen atoi atly bir funksiýa bar. Sintaksis: int k = atoi(argv[1]); k-iň int görnüşine degişlidigine üns beriň, şonuň üçin arifmetikany edip bilersiňiz. Bu funksiýa bilen, ulanyjynyň bir bitewi san girýändigi ýa-da foo diýmegi barada alada etmeli däl: bu ýagdaýda atoi 0 gaýdyp geler. Atoi funksiýasy stdlib.h kitaphanasynda yglan edildi , şonuň üçin # programmanyň başynda goşuň. Kod bu bolmasa düzüler, sebäbi bu funksiýany eýýäm cs50.h kitaphanasyna girizdik . Şeýle-de bolsa, ýerli kitaphanalara ynanmak has gowudyr. Şeýlelik bilen k int hökmünde saklandy. Indi tekst girizilmegini soralyň. Birinji hepdäniň tabşyryklaryny ýerine ýetiren bolsaňyz, GetString atly CS50 kitaphana funksiýasy bilen eýýäm tanyş. Ol bize kömek eder. K we başlangyç teksti alanyňyzdan soň, şifrlemäge başlalyň. Gaýtalamak üçin, setiriň ähli nyşanlaryny gaýtalap, aşakdaky aýlaw bilen çap edip bilersiňiz: for (int i = 0, n = strlen(p); i < n; i++) { printf("%c", p[i]); } Başgaça aýdylanda, argv setirleriň hatary ýaly, setir hem bir topar nyşan. Şonuň üçin aýratyn setir elementlerine argv-de aýratyn setirleri almak ýaly inedördül ýaýlary ulanyp bileris. Elbetde, nyşanlaryň hersini çap etmek hakda kriptografik zat ýok. Ora-da tehniki taýdan, k = 0 bolanda, ýöne Sezaryň tekstini şifrlemegine kömek etmeli! Salam, Sezar! Strlen ulanmak üçin başga bir kitaphanany goşmaly . Käbir tassyklama synaglaryny awtomatlaşdyrýandygymyz sebäpli, programma özüni şeýle alyp barmaly: Atoi-username:~/workspace/pset2 $ ./caesar 13 Be sure to drink your Ovaltine! Or fher gb qevax lbhe Binygvar! den başga , ctype.h we stdlib.h kitaphanalarynda başga ajaýyp funksiýalary tapyp bilersiňiz . Munuň üçin baglanyşyga eýeriň we azajyk töweregiňize ýaýraň. Mysal üçin, isdigit gyzykly bir zat =). Z-den A-a (ýa-da z-dan a) baranyňyzda, modul operatory % -ni ýatdan çykarmaňC dilinde. Şeýle hem tablisany öwreniň , diňe harplar üçin däl, ASCII nyşanlaryny görkezýär. Programmanyň check50 bilen dogry işleýändigini barlamak üçin aşakdakylary ýerine ýetiriň: check50 2015.fall.pset2.caesar caesar.c CS50 işgärleri tarapyndan döredilen kod bilen oýnamak isleseňiz, buýrugy ýerine ýetiriň: ~cs50/pset2/caesar byogsa, uggc: //jjj.lbhghor.pbz/jngpu ? i = bUt5FWLEUN0 .
Wezipe derňewi
  1. Açary al
  2. Tekst alyň
  3. Şifrlemek
  4. Şifrlenen habary görkeziň
1. Ulanyjy buýruk setirindäki açary girizip, açaryň dogrulygyny barlamak üçin esasy funksiýany düzýäris. int main(int argc, string argv[]) argc: • int • buýruk setirine girizilen argumentleriň sany • argc = 2 bolsa hemme zat gowy. Notok bolsa, görkezmäni çap ediň we programmany ýapyň. • argc = 2 bolsa, açaryň bitewi bir barlygyny barlaýarys • Argv setirler toplumy, oňa girizilen argumentler sanawy Array, dürli öýjüklerde şol bir görnüşdäki dürli maglumatlary öz içine alýan maglumat gurluşydyr. Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 4 Mysal üçin, ulanyjy “Blastoff Team Team Rocket” setirine girdi, soňra: Garward CS50: 2-nji hepde tabşyryklar (5 we 6-njy leksiýalar) - 5 “atoi ()” funksiýasyny ulanyp, emele gelen belgini bitewi sanlara öwürýäris. Bu mümkin bolmasa, funksiýa 0-a gaýdyp geler. Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 6 2. Ulanyjyny tekst üçin haýyş ediň. Bu ýönekeý: ulanyjynyň girýän zatlarynyň hemmesi setir. 3. Şifrlemek. Algoritm ýönekeý, ýöne haýsy harplaryň yzly-yzyna gelýändigini kompýutere nädip düşündirip bilersiňiz? ASCII tablisasyny ýada salmagyň wagty geldi! Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 7 Şeýle-de bolsa, setirde diňe harplar bolup biler ... Üýtgeýän setirlere geçmezden ozal diňe bir nyşan üýtgetmelidigini göz öňüne getiriň. Belgi ýa-da san däl-de, başdaky tekstdäki harplary üýtgetmek isleýäris. Näme etmeli? Ilki bilen bu harpyň elipbiýdedigini ýa-da ýokdugyny barlamaly. Bu isalpha () funksiýasyny ulanyp amala aşyrylyp bilner . Nyşan elipbiýde bolsa, bu funksiýa başgaça dogry we ýalňyş gaýdyp gelýär. Moreene iki peýdaly funksiýa - isupper () we islower () harp degişlilikde baş harp ýa-da kiçi harp bolsa hakyky bolýar. Şeýlelik bilen: Isalpha(‘Z’) -> true Isalpha(‘;’) -> false Isupper(‘Z’) ->true Isupper(‘z’) -> false Islower(‘Z’) -> false Islower(‘z’)->true isalpha hakykata gaýdyp gelse, açary ulanyp bu belgini üýtgetmeli. Geliň, CS50 kömekçisi Zamiliniň programmasyna mysal hökmünde seredeliň we analiz edeliň. A harpy aç-açan bolanda näme üçin “A” bitewi san diýip pikir edip bilersiňiz. Nyşanlaryň we bitewi sanlaryň çalşylýandygy ýüze çykýar. A harpyny bir sitata goýup, ASCII koduny int-de alyp bilersiňiz. Seresap boluň: size ýekeje sitata gerek, olar bolmasa düzüji nyşan däl-de, A atly üýtgeýjini gözlär. Soňra nobatda hatyň ASCII koduna esasy bahany goşýarys we bitewi üýtgeýjide saklaýarys. Netije int bolsa-da, printf jümlesi nyşanlar üçin% c ýer eýesini ulanýar. Şeýlelik bilen programma bitewi netije bilen baglanyşykly nyşanlary çap edýär. Ikinji ýagdaýda,% d ýer eýesini ulanyp, belgini görkezýäris. Bu kody cs50 IDE girizip, onuň bilen oýnap bilersiňiz. “Asciimath” -yň dürli düwmeler üçin nähili işleýändigini barlap göreliň. 25 bahasyny alalyň, aşakdaky suraty göreris: Indi açar 26 bolsun: A [harpy däl, aldyk. Z.-den soň indiki ASCII nyşan. Şonuň üçin açary goşmak aňsat bolmaz işlemek. Harplar gutaran badyna elipbiýiň başyna gaýdyp gelmek üçin şifr formulasyny ulanmalydyrys. Aboveadyňyzdan çykarmaň, ýokarda ýazypdyk: /* * asciimath.c * by Zamyla Chan * * Calculates the addition of a char and an integer, * and displays both the resultant character and its * ASCII value. * * Usage: ./asciimath key [char] * */ #include #include #include int main(int argc, string argv[]) { if (argc != 2) { printf("print the key next time \n"); return 1; } // key is the second command line argument int key = atoi(argv[1]); //преобразование строки в int int letter = 'A'; printf("\nCalculating '%c' + %d...\n", letter, key); int result = (letter + key); printf("The ASCII value of %c is %d.\n\n", result, result); return 0; } int result = (letter + key);Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 8Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 9ci = (pi + k) % 26 Ci şifrlenen tekstde i harp belgisi bolan ýerde, pi harp tekstinde i harp belgisi, k açar,% 26 bolsa 26-a bölünmegiň galan bölegi (ýa-da “26-njy modul”). Geliň, bu formulany Y. harpyna ulanalyň k = 2 alyň. ('Y' + 2)% 26 'Y' harpynyň ASCII koduny hasaplaň )% 26 = 91% 26 = 13 thisöne bu bize gerek A harpynyň ASCII bahasy däl, 65-e deňdir. Indi elipbiýiň her harpyny tertip boýunça 0-25 aralygynda baha bereliň. Bu ýagdaýda Y = 24. (24 + 2)% 26 = 0 A harpynyň diňe şeýle görkezijisi bar. Şeýlelik bilen, bu formula ASCII bahalaryna däl-de, harplaryň elipbiý indeksine degişlidir. Şifrlenen nyşany çap etmek üçin size ASCII bahasy gerek bolar. ASCII bahasy bilen elipbiýdäki san arasynda nädip geçmelidigini kesgitläň. Bir simwolyň formulasyna göz ýetirenimizden soň, ony klawiaturadan girizilen setirdäki her harp bilen ulanmalydyrys. Onlyöne diňe bu harplar bolsa! Baş harplar we kiçi harplar dürli manylary talap edýändigini ýadyňyzdan çykarmaň. Ynha, izupper we izlower funksiýalary amatly bolýar. Iki sany formula bolup biler, biri baş harplar üçin, beýlekisi kiçi harplar, funksiýalar haýsysyny ulanmalydygyňyzy saýlamaga kömek eder. Setirdäki her bir nyşan üçin formulany nädip ulanmaly? Setiriň diňe simwollar toplumydygyny ýadyňyzdan çykarmaň. Strlen funksiýasy (setiriň uzynlygy) aýlawda gaýtalanma sanyny kesgitlemäge kömek eder .Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 10

Wezipe 2. Parlez-vous français?

Nazaryýet
“Vigenère” şifrini Sezar şifrinden birneme ygtybarly: söz açar hökmünde ulanýar we diňe ýygylyk derňewini ýa-da zalym güýç ulanyp el bilen döwmek kyn. Düwmäniň her harpy san döredýär we netijede harplary üýtgetmek üçin birnäçe açar alýarys. Mysal: p = Meet me in the park at eleven am В качестве ключевого слова возьмем k = bacon Длина messages p = 25 В то время How длина k = 5 Поэтому его нужно повторять 5 раз. Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 11 Habardaky harplaryň sany açar bilen bölünmeýän bolsa, açaryň soňky ulanylyşynda diňe bir bölegini ulanýarys: Ofsetiň Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 12 bahasyny tapmak üçin, açar düwmesiniň her harpynyň ýerini ulanýarys elipbiýde (a-dan z) Hakyky programmistler ýaly noldan hasaplaýarys. Asyl tekstdäki her harp, Sezaryň şifrinde bolşy ýaly, belli bir san bilen üýtgedilýär, zerur bolsa Z-den soň elipbiýiň başyna gaýdýar. Şeýlelik bilen M 1 bilen hereket eder, birinji e asla gymyldamaz, ikinjisi 2 pozisiýa bilen hereket eder. Aşakda asyl habary, ýazylan açary we ulanylyşynyň netijesini görýärsiňiz. Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 13 “Vigenère” şifri, elbetde has güýçlidir, ýöne açaryň uzynlygyny bilýän bolsaňyz, döwmek gaty aňsat. Ony nädip tanamaly? Asyl tekst uzyn bolsa, käbir sözler onda birnäçe gezek peýda bolsa, käbir gaýtalanmalary görersiňiz: Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 14 Zalym güýç hem ulanyp bilersiňiz, ýöne köp wariant bar: 26 ^ n - 1 bu ýerde n näbelli açaryň uzynlygydyr . Emma köplenç bu köp. Dogry, bu kompýuter üçin mesele däl. Indi şifriň matematikasy: p tekst bolsun, k açar söz bolsun, kj açaryň j harpy bolsun, pi asyl tekstdäki i harpy bolsun, şifrlemekde i harpy belgisi bolsun . Soň: ci = (pi + kj) % 26
Maşk
Itionagdaý Vigenere şifrini ulanyp habary şifrleýän vigenere.c programma ýazyň. Programma girişine bir buýruk setiri argumentini berýäris: iňlis elipbiýiniň harplaryndan ybarat k açar söz. Programma birden köp argument bilen ýa-da elipbiýde ýok argument bilen işe girizilen bolsa, säwlik maglumatlary görkezmeli we programmany ýatyrmaly. Mainagny, esasy 1 gaýdyp geler - bu ýagdaýda awtomatiki synaglarymyz bu ýerde hemme zadyň gowydygyna düşüner we bu şert göz öňünde tutulýar. Allhli zat gowy bolsa, programma ýokarda alnan k açary bilen şifrlenen p tekst tekstini talap etmeli, netijäni çap etmeli we 0 bahasyny yzyna gaýtaryp programmany tamamlamaly. Düşündiriş Düwmede hökman göz ýetirmeli k A we a nyşanlary 0, B we b harplary 1, ..., Z we z 25 hökmünde bellendi. Programma Vigenère şifrini diňe p harplaryna ulanmalydyr. Galan nyşanlar (sanlar, dyngy belgileri, boşluklar) üýtgemezden çykmaly. Eger algoritm k jth harpyny elipbiýde bolmadyk p harpyna ulanjak bolsa , şol jth açar nyşanyny tekstdäki indiki elipbiý nyşanyna ulanyň; ony taşlap, k-de başga bir belgä geçip bilmersiňiz. Netijede, programma her harpyň ýagdaýyny p .
Nireden başlamalydygyny bilenokmy?
Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 15
Ine, CS50 kurs kömekçisi Zamilýanyň käbir maslahatlary
Bagtymyza, programma Sezar şifrine gaty meňzeýär, diňe açar bitewi san däl-de, setirdir. Rim hökümdarynyň adynyň şifrini üstünlikli durmuşa geçiren bolsaňyz, ikinji mesele üçin ajaýyp başlangyç bolup biler. Bir harp açary bolan Vigenère şifriniň Sezar şifrine meňzeýändigini eýýäm düşündiňiz. “Vigenère” algoritmi Sezar ýaly ädimleri ulanýar:
  1. Açary al
    • kod kody ikinji buýruk setiri argumenti argv [1]
    • elipbiýde bolmaly: isalpha funksiýasy
  2. Tekst alyň
  3. Şifrlemek
  4. Şifr tekstini çap et
Şeýlelik bilen, ikinji buýruk setiri argumenti argv [1] -ni elipbiý nyşanlaryna degişlidigini barlap göreliň. Muny eýýäm tanyş isalpany ulanyp edýäris . Eger açar dogry bolsa, ulanyjydan bir setir alýarys we şifrlemäge başlaýarys. “Vigenère” şifr formulasy Sezar şifr formulasyna meňzeýär. Harpy nädip degişli şifr ofsetine öwrüp bilersiňiz? ASCII tablisasyny ulanyp bahalary deňeşdirip görüň. Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 16 Tablisadaky yzygiderliligi ulanyp, harplar bilen elipbiý görkezijileriniň arasynda nagyş tapyp bilersiňiz. Islenýän netijäni almak üçin bir harpy başga harpdan nädip aýyrmalydygyna göz ýetirdiňizmi? Baş harplar we kiçi harplar üçin birmeňzeş, şonuň üçin kiçi harplaryň ofsetini we baş harplar üçin aýratyn kesgitlemek üçin iki meňzeş formulany kesgitlemeli bolarsyňyz. Şeýle hem, tekst aýlawynyň iňlis däl nyşanlary äsgermezlik etmelidigini ýadyňyzdan çykarmaň. Hat harplaryny saklamagy ýatdan çykarmaň. Şifr formulasyna seretseňiz: ci = (pi + kj) % 26 i we j iki indeks üýtgeýjisini görersiňiz. Biri pozisiýany çeşme tekstinde, beýlekisi açarda saklaýar. Tekstiňiz açardan has uzyn bolsa, açardaky indeks açaryň ujundan başyna geçýär. Muny nädip etmeli? Modul bölmek amalyny ulanmak! Amalyň netijesi, iki san bölünişiniň galan bölegi. Programmirlemekde bu amalyň amaly peýdalary gaty uludyr! Adamlaryň uly toparyny üç topara bölmelidigini göz öňüne getiriň. Muny etmegiň bir usuly, birinji, ikinji, üçünji üçin pul tölemegini haýyş etmekdir. Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 17 .Agny, birinji adam birinji topara, ikinjisine ikinji, üçünji topara üçünji, dördünji topara birinji we ş.m. degişlidir. Şol bir amaly ýerine ýetirmek üçin modulo bölümini ulanyp bilersiňiz. Geliň, şol bir üç topara noldan sanalyň. Muny nädip etmeli: Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 18 Indeks alyp, iň ýokary baha moduluny bölseňiz, netije hiç haçan şol bahadan uly ýa-da deň bolmaz. Açar sözüň başyna gaýdyp gelmegi üçin bu ýörelgäni synap görüň! Diňe topar boýunça tertipleşdirmegiň ýerine açar sözüň görkezijisi gerek, şonuň üçin açar uzynlykdan geçmän dogry harpy öçürip bilersiňiz. Koduňyzyň käbir synaglaryny awtomatlaşdyrýandygymyz sebäpli, programma aşakda görkezilişi ýaly hereket etmeli: jharvard@appliance (~/Dropbox/pset2): ./vigenere bacon Meet me at the park at eleven am Negh zf av huf pcfx bt gzrwep oz Şifr tekstini el bilen hasaplamakdan başga programmany nädip synap bilersiňiz? Mähirli: munuň üçin devigenere programmasyny ýazdyk . Bu diňe bir buýruk setiriniň argumentini (açar söz) talap edýär we onuň işi şifr tekstini giriş hökmünde kabul etmek we ýönekeý teksti yzyna gaýtarmak. Işlediň: ~cs50/pset2/devigenere k k açar söz. Check50 ulanyp, programmaňyzyň dogrulygyny barlamak isleseňiz, işlediň: check50 2014.fall.pset2.vigenere vigenere.c We wigenere durmuşa geçirilişimize baha bermek isleseňiz ýazyň: ~cs50/pset2/vigenere

Koduňyzy nädip tassyklamaly we bellikleri almaly

Üns beriň! Diňe meseleleriň dogrulygyny barlamak möhüm bolsa, cs50check ulanyň. Edx platformasynda baha almak isleseňiz, aşakda görkezilen prosedurany ýerine ýetiriň. Procedureadyňyzdan çykarmaň, bu amal işleri barlamak üçin şol bir cs50 barlagy ulanýar. Onlyeke-täk tapawut, netijeleri ýada salýar we umumy baly hasaplaýar.
  1. CS50 IDE giriň
  2. Faýl brauzeriniň ýerleşýän ýerinde (terminal penjiresinde däl) CS50 IDE- iň ýokarky çep burçunda , pset2 katalogynda ýerleşýän başlangyç.c faýlyňyza sag basyň we Göçürip basyň . Brauzeriň baş harplaryny ýükländigini görmeli .
  3. Sezar.c üçin gaýtalaň .
  4. Vigenere.c üçin gaýtalaň .
  5. Aýry penjirede ýa-da goýmada CS50 Submit -e giriň
  6. Ekranyň ýokarky çep burçundaky “Submit” nyşanyna basyň .Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 19
  7. Çep tarapdaky bukjalaryň sanawynda “Problem Set 2” katalogyna basyň we “Täze iberiş ýüklemek” düwmesine basyň . Sagda. Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 20
  8. Peýda bolan ekranda faýl goşmak ... düwmesine basyň. Kompýuteriňizden faýl saýlamak üçin penjire açylar. Garward CS50: 2-nji hepde tabşyryklar (5-nji we 6-njy leksiýalar) - 21
  9. Başlangyçlary saklaýan bukjanyňyza geçiň . Downloadüklemeler bukjasynda ýa-da brauzeriňiz faýllary nirede goýsa, şoňa meňzeýär . Başlangyçlary tapanyňyzda , ony saýlamak üçin bir gezek basyň, soňra Açyň.
  10. Faýl goşmak düwmesine basyň .
  11. Caesar.c tapyň we açyň.
  12. Vigenere.c faýly üçin hem şony ediň .
  13. Startüklemäge basyň. Faýllaryňyz CS50 serwerlerine ýüklener .
  14. Peýda bolan ekranda “File File Select” penjiresini görmeli . Syçan kursoryňyzy çepe geçirseňiz, göçürilen faýllaryň sanawyny görersiňiz. Tassyklamak üçin, olaryň hersine basyň. Bir zada ynamyňyz ýok bolsa, şol ädimleri gaýtalap faýllary täzeden ýükläp bilersiňiz. Muny 2016-njy ýylyň ahyryna çenli islän wagtyňyz edip bilersiňiz.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION