[Powered by Google Translate] [Bisita gidatua - Arazoa Set 2] [Zamyla Chan - Harvard Unibertsitatea] [Hau CS50 da. CS50.TV] Guztiak eskubidea. Kaixo, guztioi, eta gidatua 2 ongietorria. Lehenik eta behin,, akabera pset 1 zoriondu nahi dut. Izan dela pixka bat gogorra izan da batzuk ezagutzen dut, izan zitekeen zure lehen programa informatiko idatzi duzula, baina gogoratu honen amaieran, atzera begiratu seihilekoan amaieran, pset 1 bilatuko duzu, eta esaten duzu, "Hey, egin nuen 5 minutu". Beraz, ezagutu eta konfiantza honen amaieran behin betiko duzu pset 1 aurkitu nahiko errazak. Baina, oraingoz lorpen handi bat da, eta ohitu ere egin zorionak. Orain ere, ohar bat azkar Bisita gidatua, haragi iritsi aurretik. Azkar ohar bat egin nahi dut, batzuetan, ez du behar adina denbora arazoa multzoa egiteko modu bakarra guztien bidez joan walkthroughs zehar eta ez bakarrik agian inplementazio mota 1 edo 2 ardatz bide hori egin dezake. Baina hori ez da egiteko beste modu bat, debekatuta duzula esateko. Daude askotan, informatika bezala, gauzak egiteko modu ugari, eta, beraz, behin betiko sentitzen free I aurkeztu baino agian irtenbide mota erabili. [2 pset: zifratze - Zamyla Chan - zamyla@cs50.net] [Pset2 - 0. A Galdera artikulua - 1. Caesar - 2. Vigenere] Guztiak eskubidea. Arazoa ezarri Beraz, 2: zifratze fun bat da. Again, pset behin galdera atal bat hasi duzu den zure ataletan egindako irakaskuntza esleitutako fellow. Ez gara hauen bitartez gidatua zehar, baina pset osatzeko zalantzarik gabe lagunduko du. Beraz, arazoa multzoa Caesar lehen zatia da. Eta horrela Caesar norbaiten igaroko zenbaki oso bat gako bat, eta testu-kate bat ematen dute enkriptatzeko izango duzu emateko eta atzera enkriptatutako gauza bat. Edonork ikusi Gabonetako Story A bada, ez dago ez dagoela adibide bat. Ondoren, bigarren zatia da arazoa multzoa Vigenere enkriptatze teknika aurreratuak. Eta, beraz, testu-zati bat encipher goaz, ordez, besterik gabe, zenbaki bakar bat izan ezik, benetan ari gara kodetzeko keyword erabiltzaileak emango digu. Ongi da, eta, beraz, lehen laukia gaur egun tresna benetan aparatuaren eguneratzeko. Gauzak ikusten genuke eztabaida taula gainean, hala nola "Zergatik ez du lan hau?" "Zergatik ez Submit 50 lan?" eta, askotan, irtenbide besterik ez da benetan zure tresna eguneratzeko. Eta, beraz, besterik ez duzu zure tresnaren sudo Yum-y leiho terminal batean exekutatu bada - Ez bai esaten da, eguneratu guztia - update, orduan zure-tresnaren beharra izanez gero eguneratu egingo dira. Eta jada ez du minik duzu tresnaren bertsio berriena badira. Ondoren, besterik ez da esan berria eguneratzeak ez dago erabilgarri eta batera lan egiten jarrai dezakezu. Baina hori ona da, nahiz eta denbora-tresna irekitzen duzun bakoitzean exekutatu Oraindik dugu oraindik asko - aparatuaren konpontzen batzuetan bug batean iritsiko gara gero. Beraz, ziurtatu tresnaren azken bertsioa duzula eta exekutatu eguneratzeko dagoela. Guztiak eskubidea. Beraz, geroztik letrekin ari gara eta aurre aldatuz, gauzak enciphering benetan gure taula ASCII lagun onena bihurtu nahi dugu. Ugari daude: batzuk online, aurkitzen baduzu. Agian egin zeure. Funtsean, gutun behin eta zenbaki bakoitzeko eta pertsonaia bakoitzak haiekin lotutako zenbaki bat da, eta, beraz, oso ona da bere ASCII balioak ikusteko benetako gutun batera. Hori izango da, zalantzarik gabe lagunduko duzu arazoa multzoa. One gauza benetan lagundu dit arazoa multzo hau izan zen benetan inprimatu nintzen bidez joan, benetan nuke gainean marrazteko, idatzi, "hau joaten bada, orduan ..." Kind of marraztu eta markatu, zure taula ASCII lagun bihurtu da. Gero, beste tresna batzuk ditugu gure eskura. Oraingoan, ordez beren sarrera guztiak benetan erabiltzaileari galdetu konbinazio bat egin dugu. Sarrera batzuen gonbita ari gara, baina ari gara, halaber, komando-lerroko argumentuak erabili. Beraz, bere programa exekutatzen dute, normalean. Diozu / hello, esate baterako, zure programa izan zen hello.c bada. Baina une honetan besterik ez da esaten ordez, hitzak, argudioak jarri ahal izango dute gero. Eta horrela erabili dugu, edozein izanda ere pasatzen digu beren sarrera baita, beraz, besterik ez osokoa galdetu haratago mugitzen, baina, halaber, komando lerroko argumentuak erabiliz. Eta, ondoren, array-ak eta kateak, asko erabili beharko dugu baita dugu. Hona hemen 1 ASCII taula mini adibide bat besterik ez da. Esan dudan bezala, gutun bakoitzak zenbaki bat dagokio, eta, beraz, ezagutzea zeure burua horretan. Handy izango da. Eta geroago ASCIIMath batzuk zenbakiak aurre egiten hasten gara gehituz, horiek kenduz gero, behin betiko ona taula hau aipatzeko. Zerbait jokatu duzu - Beraz hemen Zesarrek zifratze bat adibide. Gurpil bat besterik ez da. Funtsean, ez dago kanpoko alfabeto bat da, eta, ondoren, dago barne alfabeto bat da. Beraz, hementxe Caesar Zifraketa baina 0 gako bat adibide bat da. Funtsean, A A lerrokatuta, B B lerrokatuta, guztiak modu Z. Baina gero esan 3 gako bat nahi dugu, esate baterako. Ondoren, barruko gurpila biratu genuke, beraz, A, D, etab aligns Eta, beraz, hau da, funtsean, zer egin behar dugu. Ez dugu gurpila, baina zer egin behar dugu gure programa egin da mota mugitu alfabetoaren gurekin batera zenbaki-kopuru jakin bat. Beraz, aurretik esan dut, komando-lerroko argumentu aurre goaz baita zenbaki oso bat lortzeko. Beraz, erabiltzaile bat zure Caesar programa exekutatzen esaten da. / Caesar eta, ondoren, zenbaki bat sartuz, ondoren. Eta zenbaki hori gakoa, aldaketa bat adierazten du, zenbat aldiz Zesarrek zifratze barne gurpila biratzen ari zaren. Eta, beraz, hemen adibide bat ikusiko duzu. A L letrak sartu dugu gure Zesarrek zifratze ondoren, sarrera D O 3 aldiz baino gehiago desplazatzen gutun bakoitzak delako litzateke, erakutsi dizut gurpila adibide bezala. Orduan sartu baduzu, esate baterako, hau CS50 da! ondoren ere mugitu letrak. Eta hori Caesar eta Vigenere gauza garrantzitsu bat ari garen ez-letrak edozein saltatzeko. Edozein espazio, pertsonaiak, eta abar, zenbakiak, beraz, horiek bera mantendu dugu. Bakarrik ari gara letrak filmea, kasu honetan gertatzen. Beraz, ikus gurpilean, letrak bakarrik izan dugu gurekin, beraz, nahi dugu hizkiak mugitzeko eta letrak enkriptatzeko. Beraz, lehenengo gauza egin, ikusi duzu Caesar erabilera arazo ezarri 2 Caesar exekutatu da, eta, ondoren, zenbaki bat sartu exekutatu terminalean. Beraz, zer egin behar dugu, nolabait, tekla eta sartzeko. Eta horrela, nolabait, ikusi komando-lerroko argumentu bigarren izango da joan nahi dugu. Lehen da. / Caesar izango da, eta hurrengo gako-kopurua izango da. Beraz, aurretik int main (void) izan genuen gure C programak hasteko. Apur bat itzuli azala geruza bat ari gara eta benetan ikusi void gure funtzio nagusia pasatzerakoan ordez benetan ari gara 2 parametro aurre. Izeneko int argc bat izan genuen, eta, ondoren, kateen array izeneko argv. Beraz argc oso bat da, eta zure programa onartutako argumentuen kopurua adierazten du. Eta gero, argv benetan zerrendan gainditu argudioak. Argumentuak guztiak kateak dira, eta beraz, argv array bat, zerrenda bat, kateak adierazten du. Dezagun array apur bat buruz hitz egin. Arrayak funtsean, datu berriak egitura dira. Ints ditugu, bikoiztu egin dugu, kateak behar dugu, eta, gaur egun, array dugu. Arrayak datuen egitura mota bereko hainbat balore mantendu ahal izango dira, beraz, funtsean, edozein izanda ere mota nahi duzun zerrenda. Funtsean, nahi duzun 1 aldagai zenbaki osoen zerrenda bat bada, ondoren, aldagai mota int array berri bat sortu nahi duzun. Beraz, array dira zero-indexatuetan, array elementu lehenengo indizea 0 zentzua. Array luzera 4, adibide honetan bezala bada, orduan zure azken elementuaren indizea 3 izango da, 1 - 4. Beraz, array sortzeko, honen antzeko zerbait egin nahi duzu. Esan double array bat nahi duzu. Datu-mota edozein doa, baina. Beraz, esan double array bat nahi duzu. Esan du postontzira deitzeko nahi duzun. Just bezalako beste bikoitza edozein hasieratu nahi duzun, esan bikoitza eta, ondoren, nahi duzun izena, baina oraingo honetan dugu karratu parentesi artean jarri, eta, ondoren, zenbaki array luzera izango da. Kontuan array dela ezin dugu inoiz aldatu luzera, beraz, beti zenbat kutxak eta definitzeko aukera zenbat balio array zain. Beraz, zure array balio desberdinak ezartzeko, ondoko sintaxia hau erabili ahal izateko ari zaren, diapositiba ikusten duzun bezala. Duzu postontzi indizea 0 1,2 izango da, postontzi indizea 1 2,4 jaurtiketa, etab. Beraz, gaur egun ditudan berrikusi array pixka bat, goazen atzera argc eta argv. Argv kateak array bat dela jakin dugu. Beraz, erabiltzaileak bat pasatzen diote programa bat exekutatzen ari dira diote / kaixo David Malan zer programa dagoeneko da benetan zatoz gora egingo argc eta argv dira. Beraz, ez duzu kezkatu beharrik. Kasu honetan Argc 3 izango litzateke, ikusten da 3 desberdin zuriunez bereizita hitz dituelako. Eta, beraz, ondoren, kasu honetan array, lehen indizea. Izango litzateke / hello, hurrengoa David, hurrengo Malan. Does Edozeinek berehala ikusten zer argv arteko harremana,  array, eta argc da? Bai. Horretan dugu args.c. adibide bat Ikus dezagun abantaila hartzen badugu arteko erlazioa 2. Hemen aurkitu dezakezu aparatuaren aplikazio lehenetsirik c fitxategiak ireki da batzuetan Emacs. Baina gedit aurre egiteko nahi dugu, zer egin dezakezu eskuineko klik egin dezakezu zure C fitxategia da, beraz, Properties joan, ireki, eta, ondoren, gedit, Ezarri lehenetsi gisa aukeratzeko, eta orain zure programa behar gedit ordez Emacs ireki. Perfect. Komando-lerroko argumentu bakoitza inprimatu nahi dut hemen programa bat daukat. Edozein erabiltzaileak input Beraz, funtsean itzuliko da berriro lerro berri bat nahi dut. Beraz, zer da egitura bat baino gehiago batetik bestera joateko, zerbait erabili ahal izango da, zerbait seguruenik 1 pset erabili? Gauza zenbaki bat ezarri bidez joan nahi duzu bada? >> [Ikasleak] loop For. Loop. Hain zuzen ere. Hargatik loop for hasteko. Int i = 0 dugu. Dezagun estandar bat Hasieratzea aldakorreko hasteko. Baldintza multzo bat utzi eta, ondoren, esan + + i, gauzak egin egingo dut. Guztiak eskubidea. Beraz, atzera pentsatzen argv, argv pasa den programa argumentuak zerrenda eta argc argumentu kopurua programa da, Orduan, esan nahi du argc funtsean argv luzera, eskubidea da, daude argc balio bezala argumentu asko direlako. Beraz, bada, baino gehiago, elementu bakoitzaren argv batetik bestera joateko nahi dugu, aldi bakoitzean sartzeko argv aldagai emandako indizea nahi dugu. Hori irudika daitezke, ezta? Aldagai hau hemen katea kasu honetan, bereziki, adierazten du delako kate array bat eman indizea kate jakin. Zer egin nahi dugu, kasu honetan inprimatu nahi dugu, eta, beraz, demagun printf. Eta orain, argv kate bat da, beraz, biltegian bertan jarri nahi dugu. Lerro berri bat da, besterik gabe, itxura ona izan dadin nahi dugu. Beraz, hemen begizta bat behar dugu. Ez dugu oraindik baldintza. Beraz hasten 0 i, eta, ondoren, aldi bakoitzean emandako katea inprimatu array, bereziki indizea hartan. Beraz, noiz array elementuak inprimatzeko geldiarazi nahi dugu? Amaitutakoan dugu, ezta? Dugu array amaiera iritsi denean. Beraz, ez dugu nahi array luzera iragana gainditu, eta badakigu ez dugu behar benetan aktiboki jakin zer argv luzera delako gurekin, eta zer da hori? Argc. Hain zuzen ere. Beraz, hau prozesu argc zenbat aldiz egin nahi dugu. Ez dut eskuineko direktorioa. Guztiak eskubidea. Egin dezagun argumentuak. Akatsik ez, handia da. Hargatik aski da argumentuak. Zer da hau? Gurekin itzultzeko? Besterik ez da inprimatu. "Argumentuak sartu duzu programa horretan; emateko itzuli egingo naiz." Hargatik esaten argumentuak gero, foo bar esan nahi dugu. Orduan bistaratzen da gurekin. Guztiak eskubidea? Beraz, argc eta argv nola erabili ahal izango duzu adibide bat da argc hori ezagutu argv luzera adierazten du. Ziurtatu ez duzula inoiz array sarbide bat array luzera haratago C-k behin betiko egingo duzulako at oihukatzeko. Zerbait segmentaziuo hutsegitea izeneko jasoko dituzu, eta ez da inoiz fun, funtsean zerbait sartzeko saiatzen ari zaren esaten hori ez da existitzen, ez da zurea. Beraz, ziurtatu, eta, batez ere, zero-indexatzeko, ez dugu nahi - Adibidez bezala, dugu luzera 4 array bat izanez gero, hori array indizea 4 ez da existitzen 0 hasten delako, zero indizea. Bigarren izaera bihurtu izango da besterik ez loops bezala noiz hasten 0 dugu. Beraz, mantentzeko kontuan hartu behar duten. Ez duzu nahi zure eskura haratago array indizea inoiz sartzeko. Beraz, ikus dezakegu nola sarbide mota komando-lerroko argumentuak diren gainditu sartu Baina ikusi duzu katea, argv kate multzo bat da, benetan. Beraz, benetan da ez da zenbaki oso bat oraindik, baina Caesar osoko zenbakien aurre egiteko nahi dugu. Zorionez, ez funtzioa Gurekin benetan bihurtzeko kate bat zenbaki oso bat sortu da. Era berean, hemen ez dira erabiltzailearen sarrera non ari garen galdetu aurre sarrera hemen gakoa, eta, beraz, ezin dugu benetan reprompt eta esan, "Oh, eman dit osokoa beste, esan, ez bada baliozkoa." Baina oraindik ez dugu erabilera zuzena egiaztatu behar da. Caesar soilik onartzen dira zenbaki 1 pasatzeko, eta, beraz exekutatu. / Caesar dute eta, ondoren, zenbaki bat eman dute. Beraz argc kopuru jakin bat izango du. Zein zenbaki izango litzateke gainditu behar dute. / Zesarrek eta gero gako bat bada? Zer da argc? >> [Ikasleak] 2. >> Bi. Hain zuzen ere. Beraz, ziur argc dela 2 egin nahi duzu. Bestela uko egin, funtsean, programa exekutatu. Nagusian int nagusiak esaten duen funtzio bat da, dugu beti bueltan praktika onen programa arrakastatsua amaieran 0. Beraz, esan, bada, ematen dute 3 komando-lerroko argumentuak ordez 2 emango dizu edo 1, esate baterako, eta gero zer egin ahal izango duzu dela egiaztatu nahi duzu eta, ondoren, itzuli 1, esaten ez, ezin dut programa honekin jarraitzeko. [Ikasleak] egon daiteke ez da zure testua espazio bat izango da. >> Pardon me? [Ikasleak] ezin enkriptatzeko saiatzen ari zaren testua espazio bat izango da. Ah! Enkriptatzeko saiatzen ari garen testua dagokionez, benetan geroago dator testua ematen dugu. Beraz, oraintxe bertan, besterik gabe ari gara komando argumentuak gisa benetako kopurua, onartu Caesar enkriptatze shift benetako. [Ikasleak] Zergatik behar duzu. 2 1 argc aurrean? Oraindik ez da behin betiko zenbaki 1. Eskuin. Zergatik 2 behar dugu argc ordez 1 programa bat exekutatu eta esan delako. / Zesarren edo / hello, komando lerroko argumentu gisa benetan zenbatzen. Orduan jada hartzen du 1 eta beraz, ondoren, 1 extra inputting ari gara. Beraz, benetan ari zaren inputting komando-lerroko argumentu katea. Zer egin nahi duzu, César osoko batekin aurre egin nahi dugu, beraz, atoi funtzio hau erabili ahal izango duzu. Eta, batez ere, kate batean pasatzen duzu eta, ondoren, itzuliko da berriro osokoa katea osatzen duten zenbaki oso bat da, ahal izanez gero. Orain gogoratzen printf edo GetString, gauzak horrela aurre ari gara, diren liburutegiak gurekin espezifikoak ditugu. Beraz, hasiera-hasieratik hasten tag hash standard I / O, h, horrelako zerbait dugu. Beno, atoi ez da liburutegi horien barruan, beraz, zer egin behar dugu horretarako eskuineko liburutegia ditugu. Beraz, gogora ekarri itzuli Bisita gidatua 1 eskuzko funtzioa non eztabaidatu dut. Man zure terminal idatzi duzu eta, ondoren, funtzio baten izena. Eta beraz, ekarriko ditu bere erabilera zerrenda osoa, baina baita ekarri duen liburutegia dela dagokion. Beraz, hori utziko dut atoi eskuzko funtzio erabili eta irudikatu zein liburutegian atoi funtzioa erabiltzeko gai izan behar duzu, besteak beste. Beraz, gakoa lortu dugu eta, orain, testu arrunta lortzean, eta, beraz, benetan erabiltzailearen sarrera non zuri galdetuko du. Tratatzen, GetInt eta GetFloat egiten dugu, eta, beraz, Ildo beretik GetString dira aurre dugu. Baina kasu honetan ez dugu behar do edozein egiteko edo, berriz, loops egiaztatu bitartean. GetString behin betiko ematen diguten kate bat, eta, edozein erabiltzaileari ematen digu enkriptatzeko goaz. Horiek erabiltzaileak idatzitako kateak denak ondo daudela, beraz dezakezu. Great. Orduan behin got duzun gakoa, eta behin lortu duzun testua zer utzi testu arrunteko encipher behar da duzu. Just azkar Lingo baino gehiago estaltzeko, testu arrunteko da zer ematen dio erabiltzaileari, eta ciphertext da zer itzuli dituzu. Kateak Beraz, benetan gutun bidez joan ahal izateko, eskutitz baten bidez dugu gutun behin filmea delako, kateak ulertzen dugu, bada mota back geruza zuritu, Oraindik dutela benetan karaktere zerrenda bat ikusiko dugu. Dator bat bestearen atzetik. Eta beraz, array gisa kateak tratatu ahal izango dugu karaktere array dira delako. Beraz, esan izeneko testu-kate bat behar duzu, eta testu hori aldakorra barruan gordetzen dira, hau da CS50. Ondoren, indizea 0 testua hiriburua T bat izango litzateke, indizea 1 izango litzateke h, eta abar. Eta, ondoren, array, argc Adibidez args.c izan dugun batetik bestera joateko array bat ikusi genuen. eta, beraz, i = 0 batetik bestera joateko sortu da i luzera baino gutxiago arte izan genuen. Beraz, kalkulatzen zer da gure katea luzera nolabait behar dugu badugu gainean batetik bestera joateko. Zorionez, berriz, ez dago funtzio bat orai da, geroago, nahiz eta on CS50 behin betiko ahal izango duzu zure funtzioa egin eta martxan jarri ahal izateko kate baten luzera kalkula dezakegu. Baina orain, kate-luzera, beraz, strlen erabili dugu. Kate bat pasatzen duzu, eta, ondoren, itzuliko dizu zure katea luzera adierazten duen int. Dezagun nola ahal izango dugu, eta pertsonaia bakoitzari kate bat baino gehiago batetik bestera joateko dezaketen adibide bat begiratu eta zerbait egiten duten. Zer egin nahi dugun da kate batetik bestera joateko baino gehiago, eta pertsonaia bakoitzari, eta zer egin nahi dugun itzuli inprimatu da, eta pertsonaia bakoitzari 1 1 gehitzen badiogu zerbait da hurrengo izan ezik. Hargatik loop for hasteko. Int i = 0. Tartea utzi behar baldintza dugu. Batetik bestera joateko nahi dugu katearen bukaera arte iritsiko gara, ezta? Orduan, zer funtzio ematen digu katearen luzera? [Inaudible ikaslearen erantzuna] Komando-lerroko argumentuak luzera. Baina kate bat funtzio bat ematen digu katearen luzera erabili nahi dugu. Beraz, katea luzera. Eta, beraz, gero kate bat pasatzeko aukera izango duzu. Katea luzera kalkulatu behar da jakin behar du. Orduan, kasu honetan, katea s aurre ari gara. Great. Orduan, zer egin nahi dugu, dezagun printf. Orain, pertsonaia aurre egiteko nahi dugu. Pertsonaia bakoitzak banakako inprimatu nahi dugu. Mugikor bat inprimatu nahi baduzu,% f bezalako biltegian erabili nahi duzun. Int batekin% d erabili nahi duzun. Eta, beraz, era berean, pertsonaia batekin% c erabiltzen duzun karaktere bat inprimatzeko dut esan nahi den aldagai baten barruan gordeta. Beraz, hau dugu, eta dezagun aldi bat eta espazio bat gehitu. Zein pertsonaia erabiltzen ari gara? Erabiltzen ari den edozein izanda ere karaktere-katea dugu goaz. Orduan erabiliz zerbait katea goaz, baina sartzeko zenbait pertsonaia nahi dugu. Beraz, kate bat besterik ez da array bat bada, eta gero nola ez array elementuak sartu dugu? Karratu parentesi artean horiek ditugu, eta, ondoren, indizearen jarri ditugu. Beraz, koadro parentesi artean dugu. Gure kasu honetan, indizea bakarrik erabili ahal izango dugu i. Hain zuzen ere. Beraz, hemen inprimatzeko karaktere ondoren puntu bat eta espazio bat dugu, esaten ari gara, eta izaera hori gure kate s gutun Ith izango da. Besterik ez dut gorde. Ongi da. Orain katea luzera exekutatu dut. Beraz, OMG izeneko kate bat izan genuen, eta gaur egun azpimarratu are gehiago. Era berean, dezagun benetan esan nahi dugu kate bat erabiltzaileak. Nola egiten dugu hori? Aurretik, nola ez int bat lortzen dugu? GetInt, ezta esan dugu? Baina hau ez da int, eta, beraz dezagun GetString. Egin dezagun katea luzera. Hemen ez dugu idatzi jakin gonbitean. Beraz, ez dakit. Hemen nire izena jarri dut eta, beraz, ondoren, gauza horiek bat egin dezake I non gutun behin edo horrelako zerbait hitz bat esleitzeko. Cool. Beraz, katea luzera. Beraz, hemen gara berriro Caesar. Nola batetik bestera joateko kate bat baino gehiago gara tresna batzuk ditugu, banakako elementu bakoitza nola sartu dugu. Beraz, gaur egun gara dezake programa. Aurretik, ASCII taulan, zure lagunik onena, aipatu bezala , gutun bakoitzean lotutako diren zenbakiak ikusteko duzu. Beraz, hemen esan da gure testu arrunteko zorabioak naiz! Ondoren, karaktere horietako bakoitzak zenbaki bat eta ASCII balioa lotutako are apostrophe, nahiz eta espazioa, nahiz eta harridura marka beraz, nahi hori mantentzeko kontuan hartu beharko duzu. Komando-lerroko argumentu sartuta bere erabiltzaile Beraz, esan gure gakoa dela 6. Gutun lehen, hau da, I, 73 by irudikatzen esan nahi du, itzultzeko 73 + 6 ASCII balioa edozein dela ere gutun irudikatzen nahi duzun. Kasu honetan, 79 izango litzateke. Orain du hurrengo karakterea joan nahi dugu. Arrunteko-indizea 1 Beraz, hurrengo apostrophe izango litzateke. Baina gogoratu nahi dugu, letrak encipher. Beraz, ziur apostrophe benetan egonaldiak gauza bera egin nahi dugu, ez dugu 39 hemendik 45 aldatu da. , Apostrophe gisa mantentzeko nahi dugu. Beraz, letrak soilik encipher gogoratu nahi dugu nahi dugulako beste sinbolo guztiak, gure programa ez da aldatuko. Nahi dugun beste gauza bat da, kapitalizazio zaintzeko. Beraz, maiuskulaz letra bat baduzu, maiuskulaz bat behar du lo. Lowercases behar, minuskulaz gisa jarraituko du. Beraz, funtzio erabilgarria batzuk bakarrik enciphering letrak aurre egiteko gai izan behar du eta mantentzeko gauza kapitalizazioa mantentzea isalpha, isupper, islower funtzioak. Eta, beraz, hauek funtzio boolearrak balio bat itzuli dira. Funtsean, egia edo gezurra. Maiuskulaz bat? Alfazenbakizkoak da hau? Gutun bat, hau da, funtsean. Hortaz, hona hemen 3 funtzio hori nola erabili nahi duzun adibide dira. Funtsean, probatzeko balio duen ala ez du funtzio hori ezin da egia edo gezurra sarrera horretan oinarritzen da. Edo do ez encipher zerbait edo zifratze edo ziurtatu dela, maiuskulaz, eta abar. [Ikasleak] Ezin azaldu besterik ez duzu horiek pixka bat gehiago eta nola erabiltzen duzu? >> Bai, ziur. Beraz, atzera begiratu dugu, hemen kapital I dugu, ezta? Beraz, doan dut O + 6 I delako O. badakigu Baina ziur O hiriburua O. izango egin nahi dugu Beraz, funtsean, gure sarrera aldatzeko mota da. Beraz ala ez maiuskulaz da edo ez mota aldatu duten dugu. Orduan, indize jakin isupper funtzioa erabiltzen badugu, beraz isupper ("I"), gurekin true itzultzen du, eta, beraz, hori goiko dakigu. Orduan horretan oinarritzen da, eta geroago, formula bat izan dugu joan duzula erabiltzen dugu gauzak mugitzeko Caesar, beraz, ondoren, funtsean, ez da hainbat formula apur bat izan behar da maiuskulaz bada aurrean minuskula. Zentzurik? Bai. Kezkak No. Pixka bat hitz egin dut 6 gehitzen gutun bat, eta horrek ez du nahiko zentzurik ulertzen mota izan ezik pertsonaia horiek Osoko zenbaki batekin truka mota dira. Zer egiten dugu mota erabilera casting inplizitua. Galdaketa sartu dugu pixka bat geroago, non balio bat hartu duzu eta piztu, mota jatorriz baino. Baina pset honekin mota interchangeably erabili karaktere gai gara eta dagozkien balio zenbaki oso. Beraz, bada, besterik gabe, encase pertsonaia bat single quotes, ondoren ahal izango du berarekin lan egin zenbaki osoko, osoko gisa aurre duzu. Beraz, kapital-C 67. F minuskula 102 erlazionatzen. Berriz ere, nahi baduzu, balio hauek jakin nahi izanez gero, zure taula ASCII begiratu. Hargatik nola kendu eta gehitzeko ahal izango duzu agian adibide batzuk sartzen joan, nola benetan dezakezu karaktere horiek benetan lan egin, erabili itzazu interchangeably. Diot ASCIIMath hori pertsonaia baten gain osokoa kalkulatzeko eta, ondoren, emaitzak, baita pertsonaia emaitzak ASCII balioa bistaratzen du. Eta beraz, hemen nago esaten - zati hau asko we'll geroago baina, funtsean, erabiltzaileari exekutatu ASCIIMath gako bat batera esan beharko dut esaten, eta gako hori da zenbakia izango naiz esaten dituen pertsonaia hau gehitzeko goaz. Hortaz, hona hemen nabarituko dut gako bat zorrotzak geroztik, naiz ari direla me emanez 1 gauza zorrotzak geroztik, Nahi dut soilik. / Asciimath eta tekla bat onartzeko. Beraz argc 2 berdina eskatzen dut. Ez bada, orduan itzuli 1 eta programatik irten egingo naiz. Beraz, gakoa ez da komando-lerroko argumentu lehen izango esaten dut, bigarren izan da, eta ikusten duzu hemen, Hori aktibatzeko zenbaki oso bat sartu dut. Ondoren, pertsonaia bat ezarri r izan dut. Oharra aldakorreko CHR mota zenbaki oso bat da, benetan. Single quotes hauekin encasing naiz r osoko gisa erabili dut. Beraz, gure printf adierazpena atzera non pertsonaia bat biltegia dugu eta gero, zenbaki oso bat biltegia, pertsonaia CHR bidez irudikatzen da, eta zenbaki gakoa da. Eta, beraz, ondoren, emaitza gehitu 2 elkarrekin goaz. Beraz, r gehitzeko goaz + edozein gakoa, eta, ondoren, horren emaitza inprimatzeko goaz. Hargatik asciimath. Sortu da orain arte, eta, beraz dezagun aski da asciimath. Oh, baina, ez du ezer egiten genuen, ez delako benetan eman gako bat. Beraz, itzuli besterik ez da 1, gure funtzio nagusia, itzuli besterik ez da berriro gurekin. Orduan utzi gako bat pasatzeko. Norbaitek eman dit zenbaki bat. >> [Ikasleak] 4. 4. Ongi da. Beraz, r 4 digute v, 118 ASCII balioa dagokio hazi. Orduan egiten mota Ildo horretan Egia esan, eskatzen dut, zer r ASCII balioa r + 4 118 bada uste duzu? Ondoren, yeah, r 114. ASCII taula hala badagokio bilatzen baduzu, orduan, nahikoa ziur, ikus r hori 114 irudikatzen duzu. Beraz, gaur egun ezagutzen dugun osoko zenbakien gehitu ahal izango dugun pertsonaia, badirudi nahiko erraza da. Ari gara kate bat baino gehiago batetik bestera joateko aurretik adibide bat ikusi dugu bezala. Gutun bat egiaztatu dugu. Bada, orduan filmea dugu edozein gakoa da. Pretty simple, nahi duzu izan ezik, z, 122 by irudikatzen, gero emango luke beste pertsonaia bat ikusiko duzu. Benetan nahi dugu gure alfabetoa barruan mantendu beharko da, ezta? Beraz, inguruan biltzeko mota nolabait irudikatu behar dugu. Noiz Zed helduko zara eta kopuru jakin bat handitu nahi baduzu, alfabetoaren ASCII haratago joan nahi ez duzun; atzera biltzeko modu guztiak A. nahi duzun Baina kontuan mantentzeko jarraitzen ari zaren kasuan mantentzea. Beraz, letrak hori ezagutu ezin sinbolo bihurtu bezalako sinboloak besterik ez dira, ez dira aldatzen, baita joan. Azken pset zuen behin betiko ez duzu behar, baina aukera bat izan zen zure Greedy pset ezartzeko Moduloen funtzioa erabiliz. Baina orain benetan ari gara Kalkulagailua erabili behar da, beraz hau apur baino gehiago joan. Funtsean, x modulo y, y-k banatzen x gainerako ematen dizu duzu. Hona hemen adibide batzuk hemen. % 27 15. Funtsean, 15 kendu 27 ahalik eta adina aldiz, negatiboak oztopatu gabe ondoren 12 Ezkerraldean baino gehiago lortzen duzu. Beraz, hori da mota math testuinguruan bezala, baina nola erabili ahal izango dugu? Gure wrapover erabilgarria izan da. Horretarako, dezagun, besterik gabe esan duzun galdetu nion 3 taldetan zatitzea. Batzuetan Horretarako, talde eta horrelako zerbait. Esan, esan nion: "Ados, nahi dut 3 hartu beharreko banatzen da." Nola egin dezakezu hori? [Inaudible ikaslearen erantzuna] Bai, zehatz-mehatz. Zenbatu off. Ongi da. Dezagun benetan egiten duten. Abiarazi nahi al duzu? [Ikasle] 1, 2, 3, 4 off kontatuta. Baina gogoratu ... >> [Ikasleak] Oh, barkatu. Hori puntu bat oso ona da. 4 esan duzu, baina benetan nahi dugu esan nahi 1 3 talde baino ez dugu nahi duelako. Orduan, nola - Ez, oso adibide ona da gero nola liteke delako 1 esan duzu? Zer da, 4 eta 1 arteko harremana? Beno, 4 mod 3 1. Beraz, jarraitzen badu, 2 izango litzateke. Beraz, 1, 2, 3, 1, 2. Berriz ere, egia esan Oraindik 5 pertsona. Nola 2 ordez 5 esan al dakizu? 5 mod 3 2 esaten duzu. Zenbat 3 talde gelditzen dira, ikusi nahi dut, eta gero, zein ordena I. am Eta, beraz, gero gela osoan zehar jarraitu izanez gero, ondoren ikus ari gara beti benetan mod funtzioa aplikatuz geure genuke mota zenbatu off. Hori nola modulo erabil dezakezu adibide ukigarriak mota gehiago nago ziur delako gurekin gehienak ziurrenik prozesu horren bidez, joan non izan dugu off zenbatzeko. Modulo edozein galdera? Nahiko garrantzitsua izango da hau kontzeptuak ulertzeko, beraz, ziurtatu duzu guys ulertzen egin nahi dut. [Ikasleak] hondarra ez bada, ez dizu benetako kopurua? Haien lehenengo 3 bat egin izan bada, ez litzateke eman ditu ziren benetan dute, edo eman ditu [inaudible] >> Hori galdera bat ona da. Modulo, hondarra ez da, beraz, esan duzu 6 mod 3 - benetan ematen dizu atzera 0. Pixka bat beranduago buruz hitz egin dugu. Oh yeah, esate baterako, 3 pertsona - 3 mod 3 da, benetan 0 baina 3 esan zuen. Beraz, mota barne harrapaketa bat bezalakoa da, esate baterako, ados bezala, mod 0 bada, ondoren, 3 pertsona izan dut. Baina, nola aurre egin nahi zer da 0 geroago agian mota sartu dugu lortu. Beraz, gaur egun, nolabait, Zed kartografiatzeko eskuinera gutun modu bat. Beraz, gaur egun dugu adibide hauen bitartez joan mota dugu nola Caesar lan egin dezake. 2 alfabetoen ikusten duzu, eta gero aldatzearen ikusiko duzu. Hargatik saiatu eta adierazteko formula dagokionez. Formula hori benetan zehaztutako baina let itxura mota aldagai bakoitza esan nahi bidez. Gure azken emaitza ciphertext izango du. Beraz, hau dio ciphertext, izaera Ith zifratu gabeko, izaera Ith dagozkio. Horregatik, zentzu nahi dugu beti gauza horiek Hornigaia sortu duelako. Beraz, izaera Ith ciphertext plus k, eta hori da gure gakoa izango da - zentzua eta gero mod honetan 26 ditugu. Gogoratu itzuli Zed izan genuen ez dugu nahi pertsonaia sartu, beraz, mod nahi dugu eta itzulbiratu mota alfabetoaren inguruan. Zed ondoren bat joan nahi duzun, b, c, d, eskuinera kopurua lortu arte. Beraz, Zed + 6, gurekin bada luke Zed f ondoren dator, a, b, c, d, e, f badakigu Hargatik gogoratzen ziur ezagutzen dugu Zed + 6 hori ezagutzera emango f. ASCII balioak, z 122 da, eta f da 102. Beraz, gure Caesar formula egiteko modu bat aurkitu behar dugu ematen diguten 102 122 en hartu ondoren. Beraz, bada eskatu besterik ez dugu formula honetan, ('z' + 6)% 26, benetan ematen dizu 24 122 + 6 128 delako;% 128 26 24 gainerako ematen dizu. Baina hori ez da benetan esan nahi du f. Hau ez da behin betiko 102. Hori ere ez alfabetoaren letra 6an. Beraz, jakina, nolabait tweaking hau pixka bat izan behar dugu. Ohiko alfabeto dagokionez, badakigu z 26 letra eta f 6tik. Baina informatika Oraindik dugu, beraz, indizea ari gara 0. Orduan ordez z 26 zenbakia, zenbakia 25 esan nahi dugu 0 delako. Beraz, gaur egun dezagun formula hau aplikatu. Z 25 + 6 irudikatzen ematen dizu 31 ditugu. Eta 31 mod 26 ematen dizu gainontzekoak bezala 5. Hori oso ondo ezagutzen dugu f, alfabetoaren letra 5ean da delako. Baina, hala ere, ez f, ezta? Oraindik ez da 102. Beraz ondoren pset honetan, erronka bat saiatzen harremana jakiteko balio horiek ASCII eta aurkibide alfabetikoa arteko bihurtzeko artean. Funtsean, zer nahi duzu, ASCII balioak hasteko nahi duzun, baina gero hori nolabait itzuli nahi duzun indize bat sartu alfabetikoan ondoren kalkulatzeko zer letra izango da, funtsean, zer da bere aurkibide alfabetikoa Zifraketa pertsonaia orduan itzultzeko back hori ASCII balioak. Beraz, Látigo duzu zure ASCII taula, ondoren saiatu eta harremanen arteko aurkitu, esan, 102 eta 5 edo 122 eta 25. Komando-lerroko argumentuak ahaztuak dugu gure gakoa, ahaztuak dugu testu arrunteko enciphered dugu. Orain guztiak utzi ditugu egin da inprimatu. Hau egin genezake pare bat modu ezberdinetan. Zer egin izan dugu benetan inprimatu joaten gara. Batetik bestera joateko dugu karaktere katea, nahikoa izan dugu besterik ez inprimatzeko eskubidea orduan kalkulatu dugu. Bestela ere, izan duzu gordetzeko array bat eta karaktere array bat izan eta amaieran hori osoa array zehar batetik bestera joateko eta inprimatu. Beraz, horretarako aukera pare bat izan duzu. Eta gogoratu% c karaktere bat inprimatzeko biltegian izango da. Beraz, Caesar dugu, eta gaur egun on dugu Vigenere mugitzeko, oso Caesar antzekoa da, baina apur bat konplexuagoa da. Beraz, funtsean Vigenere keyword batean pasatzen duzu. Beraz, zenbaki bat ordez, kate bat izan zaren, eta, beraz, hori zure keyword gisa jarduteko. Ondoren, ohikoa den bezala, gonbita kate erabiltzailearen ari zaren joan eta, ondoren, encipher eta gero emateko ciphertext atzealdean. Beraz, esan dut, oso Caesar antzekoa da, kopuru jakin batek aldatzearen beharrean izan ezik, zenbakia da benetan karakterea karaktere aldi bakoitzean aldatu egingo da. Benetako kopuru hori irudikatu nahi du mugitzeko, teklatua hizkiak irudikatzen du. Beraz, bada sartu shift bat, esate baterako, orduan 0 shift dagozkio. Beraz, berriro aurkibide alfabetikoa atzera. Zer erabilgarria izan daiteke ari zaren benetan ari garen balioak ASCII aurre bada ikusten baita letrak, baita indize alfabetikoan gisa, agian aurkitu edo zure ASCII taula 0 indizea 25 bidez alfabetikoan erakusten du, z bidez, eta ASCII balioak, beraz, mota honetako ikus dezakezu harremana eta zirriborroa eta saiatu eta eredu batzuk aurkitu. Era berean, zenbait instantzia f by aldatzearen eta hau da, bai minuskulaz edo maiuskulaz f - Orduan, 5 dagozkio. Onak urrun gaude? Vigenere formula da, eta pixka bat desberdinak. Funtsean, Caesar bezala besterik ez dela ikusten duzu, ordez izan ezik, besterik ez k ​​j k indizea dugu. Ohartu ez ari garela i erabiliz funtsean delako, gako-luzera ez dago gure ciphertext luzera izan behar du. Bit argiagoa izango da adibide bat izan dut pixka bat beranduago ikusiko dugu. Funtsean, exekutatu duzu zure programa ohai gako-hitza, Orduan, esan nahi du, aldi bakoitzean, ohai zure txanda izango da. Zer posizio zure keyword arabera Beraz, zenbait pertsonaia ciphertext Zenbateko hori mugitzeko duzu. Berriz ere, Zesarrek bezala, ziur zaintzeko dugun gauza kapitalizazioa egin nahi dugu eta guk bakarrik encipher letrak, eta ez karaktere edo espazioen. Beraz, atzera begiratu Caesar funtzioak erabiltzen duzu, erabaki gauzak nola mugitzeko, eta aplikatzeko zure programa hemen. Hargatik mapa hau. Testu arrunteko ditudan erabiltzaileak ahaztuak GetString from ditugu honek esaten ... CS50 da! Ondoren, ohai keyword bat behar dugu. Lehenengo 4 karaktere nahiko sinpleak dira. T o behar desplazatzen hori ezagutzen dugu, ondoren h h desplazatzen, batek desplazatzen da i. Hemen adierazten 0 ikusiko duzu, beraz, gero amaierako balioa da, benetan baino zertxobait lehenago letra bera. Ondoren, s i by desplazatzen. Baina orduan epeak hauek duzu hemen. Ez dugu nahi, beraz, ondoren ez dugu aldatu da ezer encipher eta inprimatu epea aldatu gabe. [Ikasleen] ez dut ulertzen nola badakizu hori by desplazatzen - Non egin duzu - >> Oh, barkatu. Hemen goian, komando-lerroko argumentu ohai hemen ikusten duzu, den hitzarekin izango. Eta beraz, funtsean, hitzarekin karaktere baino gehiago ari zaren bizikletaz. [Ikasleen] Beraz, o dira aldatzearen berean joan Beraz, o alfabetoaren kopuru jakin bat dagokio. [Ikasleak] Eskuin. Baina non ez CS50 parte lortuko duzu? Oh. Oraindik, hala nola non GetString da "Give me kate bat kodetu." [Ikasleen] argumentu eman duten filmea ari dira. eta, ondoren, zure katea lehen galdetu duzu. >> Bai. Beraz, programa, gako-ari dira beren komando-lerroko argumentuak exekutatu dute. Ondoren, behin egiaztatuta duzun Nik ez dutela benetan emandako 1 eta ez gehiago, ez gutxiago, gero galdetuko kate bat ari zaren, adibidez, "Give me kate bat." Beraz, kasu honetan ematen haiekin honek ... CS50 da! Orduan hori erabili eta ohai erabili eta batetik bestera joateko baino gehiago ari zaren. Iragarki hemen saltatu epeak enkriptatzeko baino gehiago dugu, baina, gure posizioa baldintzak ohai, hurrengo o erabili dugu. Kasu honetan, pixka bat zailagoa da hori 4 delako, beraz, dezagun pixka bat jarraitu. Just me makila hemen. Ondoren, i eta s, o eta h itzuli dira ondoren, hurrenez hurren egin behar dugu. Ondoren, espazio bat dugu, eta, beraz, ondoren ez dugun espazioak encipher dakigu. Baina oharra Leku honetan egingo hementxe ordez, bat ari gara enkriptatzeko - Ez dakit hori ikus daiteke hemen. Beraz, ez da aldez aurretik zehaztutako benetan, esan, o doa hemen, h doa hemen, bat doa hemen, hemen doa i, o, h, i, o, h, i. Ez duzu hori egiteko. Mugitzeko besterik ez duzu zure posizioa hitzarekin denean benetan ari zaren enkriptatzeko benetako gutun bat ezagutzen duzu. Mota hori ez du zentzurik? Ongi da. Beraz, gogorarazleak batzuk. Ziurtatu bakarrik duzula zure keyword gutun hurrengo aurrera egin nahi duzu , zure testu arrunteko pertsonaia gutun bat bada. Beraz, esan Oraindik o dugu. Hurrengo karakterea, testu arrunteko-indizea i, zenbaki bat da, esate baterako, nabarituko dugu. Orduan ez dugu aurrera j, gure keyword indizea, beste gutun bat iritsiko gara arte. Berriz ere, nahi duzun ziur wraparound duzun gako-hitza hasieran egiteko Oraindik bukaeran. Hemen ikusten duzun Oraindik i badugu, hurrengo o izan behar du. Beraz, hasieran zure keyword to wraparound ahal izateko modu batzuk aurkitu nahi duzun aldi bakoitzean iritsi duzun bukaera. Eta, beraz, berriro ere, zer operadorea mota inguruan itzulbiratzeko Kasu horretan, erabilgarria da? Adibidez off zenbaketa bezala. [Ikasleak] ehuneko zeinua. >> Bai, ehuneko ikurra, hau da, modulo. Beraz, modulo egingo handy etortzen indizearen zure ohai baino gehiago biltzea nahi duzun. Eta besterik ez, azkar aholku bat: Saiatu keyword gainean apur bat off kontatuta bezala itzulbiratzeko pentsatzea, non bada ez da 3 talde, 4 pertsona, beren esan dute 4 mod 3, hain zuzen, 1. Beraz, saiatu eta, era horretan pentsatu. Formula, ikusi duzun bezala, edozein lekutan ci eta, ondoren, pi duzu, baina gero KJ, Ziurtatu mantentzen baduzu pista horiek egin nahi duzu. Ez duzu behar deitzeko i, ez duzu behar du j deitu, baina ziur gorde duzun pista ari zaren posizioa zure testu arrunteko at egin nahi duzun posizio gisa baita zure keyword zaudela horiek ez delako nahitaez berdina izango. Ez bakarrik keyword du zifratu gabeko baino luzera erabat desberdina izango da. Horrez gain, zure testu arrunteko daude, zenbakiak eta pertsonaiak, beraz, ez da primeran dator elkarrekin. Bai. [Ikasleen] Ba al dago funtzio kasu aldatzeko? Ezin bat aldatzeko kapital A? >> Bai, behin betiko da. Egiaztatu ahal izango duzu - bere toupper, 1 word guztiak uste dut. Baina gauzak Zifraketa eta testu kontserbatzen saiatzen ari zaren, onena, batez ere, aparteko kasuetan izan. Maiuskulaz bat izanez gero, gero hau, mugitu nahi duzun zure formula, atzera begiratu duelako nola go-mota dugu zenbakiak irudikatzeko ASCII arteko interchangeably eta oraingo aurkibide alfabetikoa, ziurtatu nahi dugu batzuk ereduaren mota erabili behar zarela ez da izango. Another ereduarekin ohar, benetan. Behin betiko izango zenbakiak aurre ari zara. Saiatu magia zenbakiak ez erabiltzeko, estilo adibide bat da. Beraz, esan nahi behin denbora shift nahi by zerbait Ados, aholkua, beraz, spoiler bat da izango aldatzearen zerbait ari zaren joan kopuru jakin bat, saiatu ez ordezkatzen dituzten benetako kopuruaren arabera baizik eta saiatu ikusi eta ASCII balioa, hau da, mota gehiago egin zentzu erabiltzen baduzu. Ohar bat: formula aurre dugulako, nahiz eta zure TF mota dakit zer eredua erabili nahi izan dezakezu, onena zure iruzkinak mota logika, azaldu, "Eredu hau erabiltzen dut ... delako" eta mota azaltzeko eredua succinctly Zure iruzkinak. [Bisita gidatua 2] daude ez bada, beste edozein galdera baldin eta, ondoren, besterik ez dut lo pixka bat. Zorte ona zifratze eta esker etortzeagatik: zure pset 2. [Ikasleak] Eskerrik asko. >> Eskerrik asko. [Media Offline intro]