[Muusika mängib] DAVID Humala: Okei. See on CS50 ja see on nädala lõpuks 2. Mul on nii kahju ma ei saa seal sinuga kõik täna aga sa oled väga heades kätes. Lubage mul tutvustada CS50 enda Rob Bowden. ROB BOWDEN: Ja muidugi, siis meil nalja asjaolu et ta saatis meile vertikaalne video ja näidata. [Video taasesitus] [Muusika mängib] [Jälgedes] -See Video ei pead vaatama nii. See oleks saanud ära hoida. Ütle ei vertikaalse videos. -Vertical Videod juhtuda siis, kui Hoidke kaamerat valesti. Teie video lõpeb otsin nagu jama. - [Grunt] Eksisteerivad üha rohkem inimesi sõltuvuses muuta vertikaalne videod iga päev. See ei pragune ega midagi, kuid see on ikka tõesti halb. On kaks erinevat liiki inimesed, kes põevad VVS. Esimene rühm kohtleb videos nad tulistada, nagu pildid. Nad ei tähenda midagi halba. Nad lihtsalt ei saa aru, et samas võid pildi, te ei saa tõesti omakorda video. [CRASH] - [Ahv SOUNDS] -The Teine grupp on inimesed kes ei anna [piipar]. -Vertical Video sündroom on ohtlik. Resolutsiooni pildid on alati horisontaalselt. Telerid on horisontaalne. Arvutiekraani on horisontaalne. Inimeste silmad on horisontaalne. Me ei ehitatud vaata vertikaalne videos. -Ma Armastan vertikaalne videos. -Nobody Hoolib sinust. -Kui See probleem on jätta märkimata, siis ka algab näitab neli videod korraga lihtsalt säästa ribalaiust. -Letterboxed Vertikaalne videos oleks olla suurus postmark. -Ja See levib kõikjal. Kinolinal on alati horisontaalselt. Kui vertikaalne videos saada aktsepteeritud, kinos peab olema pikk ja kõhn. -Ja Kõik kinod oleks on katki läinud ja uuesti üles ehitatud. Ja selleks ajaks, kui nad olid ümberehitatud, Mila Kunis oleks vana ja kole. -Birds Krahhi neisse ja surevad. -Me Oleme kõik saavad jäik kaela alates soojaks. -Ja Keegi ei istu esireas kunagi. -George Lucas uuesti vabastamise Star Sõjad again-- kõhn väljaanne. -Ma Olin kunagi võimalik öelda lugu, mida ma tahtsin öelda. See oli suurepärane võimalus, et ma katsetada uut tehnoloogiat. -Sa Oled jobu. -Iga Aega mobiilseadme kasutatakse videosalvestus, kiusatus on olemas. Lihtsalt ei öelda. Ütle ei George Lucas. Ütle ei vana Mila Kunis. Ütle ei vertikaalse videos. -Ja Kui näed kedagi, tehes seda öelda, "sa ei ole tulistamist, et õige näiv!" [Muusika mängib] [Taasesituse lõpetamiseks] [APPLAUSE] [AUDIO OUT] ROB BOWDEN: --simple kujul krüptograafia, mis on põhimõtteliselt krüpteerimist ja dekodeerimiseks salajasi sõnumeid. Nii et siin on meil väga lihtne mänguasi. Ja idee on välimine ring pöörab ümber sisemise ringi. Ja näed, võibolla kui ma suurendamiseks aastal, selle-- on raske näha. Aga, nagu arv 1-- hästi, et liigutada. Number 1 kaardistab kirja X, number 2 kaartide kirja J. uskumatult raske ei jäta edasi. Kiri 2 kaardistatud J. Number 3 kaardistatud D. Nii Selle ring saab anda keegi sõnumi 1, 2, 3. Mingil põhjusel sa tahad öelda neile XJD. Aga sa võid anda neile mõned sõnum numbrid, ja niikaua kui neil kõnealune ring, nad saab lahti, mida sa tahad öelda. Nii olete näinud seda eriti näiteks krüptograafia enne kui ümber jõulud vaatasite A Christmas Story. Kui olete kunagi näinud enne, siis lihtsalt lülita TBS on sõna otseses mõttes igal ajal jõululaupäeval, sest nad lihtsalt näidata seda seljad tagasi üles seljad terve päeva. Ja asjakohase video on see. [Video taasesitus] -Ole Ta teada, et igaüht et Ralph Parker Käesolevaga määratud liige Little Harva Annie Secret Circle ja õigus kõigi auavaldustega ja kasu esinevad nendega. Allkirjastatud Little harva Annie. Allkirjaga Pierre Andre tindiga! Tunnustus kasu juba üheksa-aastaselt! [Karjuma Radio] -Ole nüüd. Lähme edasi. Ma ei pea kõik, mis jazz umbes salakaubavedajate ja piraadid. Saate kuulata homme õhtul kokkuvõtvad seiklus Musta Pirate Ship. Nüüd on aeg Annie salajane sõnum Teile liikmete Secret Circle. Pea meeles, lapsed, vaid liikmed Annie Secret Circle saab dekodeerida Annie salajane sõnum. Pea meeles, Annie on sõltuvalt teile. Määra oma sõrmed B2. Siin on sõnum. 12. 11. 2. -Ma Olen oma esimese salajase kohtumise. -25. 14. 11. 18. 16. Oh, Pierre on suur hääl täna. Ma võiksin öelda, et tänase sõnum oli väga oluline. -3. 25. See on sõnum Annie ise. Pea meeles, et ei ütle kellelegi. -Viis Sekundit hiljem, ma olen ainus tuba majast, kus poiss üheksa võiks istuda privaatsust ja dekodeerida. Ahaa! B! Läksin järgmine. E. esimene sõna on "olla." S. See oli tulemas lihtsam nüüd. U. 25. See on R. -Tule, Ralphie! Olen pean minema! -Ma Kohe maha, Ma! Gee viuhti. T. O. "Kindlasti" - kindlasti see, mida? Mis oli Little harva Annie üritab öelda? Kindlasti mida? -Randy On minema! Kas sa siis tulla? -Heaküll, Ema! Ma tulen kohe välja! Olin läheneme. Pinge oli kohutav. Mis see oli? Saatus planeedi võib vaekausil! -Ralphie, Randy minema! -Ma Oleks kohe, nutt valjusti! Peaaegu kohal! Minu sõrmed lendas. Minu meelest oli terase lõksu. Iga pooride vibreerima. See oli peaaegu selge! Jah. Jah. Jah. Jah. Kindlasti juua oma Ovaltine. Ovaltine? Trullakas kaubandusliku? Litsipurikas. [Taasesituse lõpetamiseks] ROB BOWDEN: Nii see on, kuidas Ovaltine seotud krüptoeelistused. Põhimõtteliselt CS50 lihtsalt reklaamitakse Ovaltine, et me saaksime olla vastik kaubik eest Ovaltine. Hästi. Nüüd tegelik arvutiteadus. Mäleta esmaspäeval pooleli jäime sukeldumine sügavamale stringid. Nii me tegelesime string "Zamyla." Ja me olime tunnistades asjaolu, et saame ravida "Zamyla" jadana tähemärki. Ja pidage meeles, et me õppisime sulg märke. Nii et kui see hoiti string "s", siis Kui me ütlesime s sulg 0, mis näitab kirja kapitali Z. Ja kui me ütlesime s sulg 1, et viitaks esimese väiketähed a, ja nii edasi kuni s klambri 5, mis näitavad viimase a. Nüüd pidage meeles, et pikkus string 6, kuid indeksid string on 0 kuni 5, Z kuni see kestab. Nii et see nüüd mahub suurem pilt arvuti mällu oma RAM. Nii kusagil programmi, mis näed arvuti peab meeles pidama, Zamyla kusagil mälu. Nii võib mul vabatahtlikuna? Jah palun. Ja milline on teie nimi? DEAN: Dean. ROB BOWDEN: Dean? Nice to meet you, Dean. Nii et tulge siia, ja me lähed on teil juhtida meie tore vahva kujundus mälu. Nüüd Mulle meeldib mõelda mälu nagu üks pikk riba baiti, aga lihtsalt kuvamise eesmärgil jagame lihtsalt ei vasakult paremale, ülevalt alla. OKEI? Nii et ma lähen näitama program-- Getstrings.c. Ja nii kõik see programm on teeme taotleb neli stringid alates kasutajale GetString ning seejärel printimise mida iganes, et esimene string sisestatakse oli. Me ignoreerides kaks kuni neli. OKEI. Nii siin now-- kui Ma esimesel nõudmisel s1. Nii olete arvuti. Ja sa rakendavad getString. Nii et sa küsida stringi mulle, ja ma ütlen, OK, Dean. Andke string "Dean." Nii kusagil mälust tuleb meeles pidada, "Dean." Nii kirjutada mällu kusagil. Perfect. OKEI. Nüüd oleme S2. Ja s2 saab olema taotluse getString. Nii et ma lähen sisestada stringi. Ma lähen sisestage "Hannah." Nii kirjutab "Hannah" kusagil mällu. Jah. A-H. OK, nii et nüüd s3. Ja see saab olema teise nõuda getString. Ja nii nüüd sisestada "Maria". Hästi. Ja siis on üks viimase Taotluse getString, s4. Niisiis, ma ei tea. Kuidas me läheme antidisestablishmentarianism. Nii sisestada, et mällu. Jah. Nii lihtsalt ei "Rob". OKEI. Nüüd explain-- miks tegid jätad need ruumid? Miks sa pead selle tühjaks ruumi siin, siin ja siin? Jah. Nii märkate, kui ma lähen prindi s1-- nii et kui me oli "Hannah" töötab õigus kuni kõrval "Dean," kuidas me teame, kui string "Dean" lõpeb? Nii printida string s1 võib olla lihtsalt trükitud "DeanHannahMariaRob" kui see ei ole aimugi ja kui "Dean" tegelikult lõpeb. Hästi. Nii mälus, kuidas me tegelikult esindavad Selleks string on koos kurakriips null. Nii et see ruum on täpselt see, mida me tahtsime. See peaks olema längkriipsuga null. See on längkriipsuga null, ja see on längkriipsuga null. Ja sul võib olla vapustav auhinna jaoks on täiuslik vabatahtlikuna. Võtke stressi pall! OKEI. Nii et see tegelane kurakriips null on kuidas näidata lõpus stringi. See, kuidas, kui iga konkreetse programmi tahab printida string, see how-- Jäta õppisime strlen funktsiooni eelmisel nädalal? String pikkusega? See, kuidas string pikkusega suudab määrata, kui kaua string on. See lihtsalt hoiab iterating üle tähemärki kuni leiab kurakriips null iseloomu. Nii tähtsam realiseerida umbes längkriipsu null iseloomu on see esindatud kõik nullid bitti. Nii märkate, et see on selge nullist iseloomu. Nii null iseloomu, kui sa mäletad näitel, et ta andis lõpus loeng, kus tegelased map mina-- nagu kapitali Mapsi 65. Väiketähed Mapsi 97. Väiketähed b oleks 98. Nii et number 0 kaardid mina-- ma ei tean maha mu peas. 44 või 45. Kusagil selles piirkonnas. Nii iseloomu 0 on tegelik number. Aga kurakriips null Kaardid kõigile nullbitid. Nii et vahet vahel kurakriips null, mis me nimetame null terminaator. Seal on vahet kurakriips null ja iseloomu null. Hästi. Nii räägib natuke rohkem stringe. Siis näeme siin see on, kuidas oleks sätestatud mälu. Nii et see idee stringid jadana of characters-- nii ametlikuks arvuti sciency tähtaeg jada on massiiv. Nii et me kutsuksime string array tähemärki. Ja seal on tegelikult muud andmed tüübid, mida me saame teha massiivid välja. Nii et motiveerida seda, vaata näiteks. Me nimetame seda ages0.c ma tulen kopeeri ja kleebi meie malli. OKEI. Nii see programm, mida me tahame teha, on haarata vanuses Kolme õpilased käigus. Saame teada, et int age-- ja nüüd ma lähen ütlen 0. Nii võiksite öelda age1, kuid eesmärkidel me näeme varsti, Ma ütlen, int age0 võrdub GetInt. Nii sama kõne GetInt et me oleme kasutanud ma ei juhtu olema ajendades öeldes: "Anna mulle eas." Aga seda nõuab. Ja age1 võrdub GetInt. Ja int east2 võrdub GetInt. Niisiis, jälle kolm üliõpilastele, kuid lõpuks muutuja indeksid on age0 läbi east2. OKEI. Nii et see programm teha mida iganes tahame koos age0, age1 ja east2, kuid see programm lõpuks töötab kolm üliõpilast. OKEI. Nüüd kui ma tahan nelja õpilased? Noh, ma lähen minema tagasi minu koodi muuta kommentaar, ja nüüd on meil int east3 võrdub GetInt. OKEI. Seega, kes näeb siin probleem? Milles on probleem Selle omamoodi setup? Jah. Jah. Nii me luua muutuja igale õpilasele. Nüüd töötab, kuid lõpuks kui ma nüüd öelda: "Ma tahan haarata aastaselt Kaheksa õpilased või 16 õpilast või aga paljud üliõpilased sadu õpilasi CS50 või tuhanded tudengid loengusse või miljardeid inimesi maailmas? Nii lõppkokkuvõttes see ei ole jätkusuutlik. Iga kord, kui näed ennast kopeerida ja kleepimine kood, nagu see, sa peaksid üldiselt tunda et seal on parem. Nii et see on koht, kus tutvustame massiivi deklaratsiooni. Nii et kui teil kuulutada massiivi, see on see, mida üldiselt formaadis läheb nägema. Me läheme öelda tüübist. ja siis me läheme anda nime, mis massiivi, nagu me defineerime tahes muutuja. Ja siis lõpuks me kasutame see sulg märke uuesti kuid mis erinevad oluliselt kuidas me seda kasutada varem. Nii et siin see näeb välja nagu tavaline muutuja deklaratsiooni, et me oleme näinud. Nii oleme näinud int x semikoolon enne. Noh nüüd me võime näha midagi nagu int x sulgudes 5. Ja paneb seda ideed GetInt programm, mis me have-- et saaksime rakendada Selle samamoodi. Oletame, et CS kaldume kasutama n, kui mitu midagi. Nii et siin me läheme salvestada neli õpilastele. Ja nüüd saame öelda, int vanus sulg n-- ole päris saada seda yet-- kuulutada massiivi neli õpilastele. Niisiis, kuidas see välja näeb Mälu on sarnane sellele. Selge see. Ja me ei kavatse olla kuskil in memory-- panen sinna üles. Nii kusagil mälu. Üks kaks kolm neli. Meil on neli täisarvud järjest selle massiivi neli täisarvud. Nii, praegu, milline on suurus üks neist lahtrid? Jah. See on neli baiti. See on 32 bitti. Nüüd on see erinev massiivist, et me nägime, massiivi tähemärki. String iga kast oli ainult üks bait, sest iseloom on ainult üks bait. Aga array täisarvud, iga kast peab olema neli baiti, et sobib kogu täisarv. Nii et see on see, mida massiivi Nelja ints näeks. Ja siis jälle koodi. Nüüd tahame tegelikult poest täisarvud arvesse, et massiivi. Nüüd on see väga, väga, väga ühine joon, mis mingil hetkel saada lihaste mälu. Nii int i võrdub 0. i vähem kui n. i pluss pluss. Vanuseklassi i võrdub GetInt. Nii et see silmus, sellisel kujul, Sa peaksid saama väga harjunud. Nii et see on üldiselt kuidas me Käi peaaegu iga massiivi. Nüüd märkate sellist selgitab, miks algusest meil ei olnud, silmad lähen int i võrdub 1, i on väiksem või võrdne 10. Põhjus on selles, et alates null teeb seda tööd hästi massiivid. Nii massiivid on null indekseeritud. Kui see massiiv on pikkusega 4, indeksid on 0 kuni 3. Nii läbi esimese iteratsiooni see silmus me ei kavatse olla milles vanuses sulg 0 võrdne kõne GetInt. Mida iganes ma juhtunud sisestada klaviatuuri. Teises pass, me oleme milles age1 võrdne GetInt. Kolmas pass, east2. Lõplik pass east3. Nii et kui esimeses pass silmuse Ma sisestage number 4 klaviatuuri, siis me lisada 4 siin. Kui teisel pass ma sisestan 50, me paneme 50 siin. Kolmandal pass võin sisestage negatiivne 1, negatiivne 1, ja siis lõpuks, kui ma sisestan 0-- ja Nüüd pidage meeles, et see oli indeks kolm. Pärast me loop tagasi, i läheb suurendatakse kuni 4. i ei ole enam alla n, mis on 4. Ja me murda läbi silmuse. Mis siis oleks viga on? [Kuuldamatu]? Sihtrühm: [kuuldamatu] Jah. Nii massiivi ainult neljas kohas mis tähendab näitajatena 0 kuni 3. Nii et kui see nii oleks, oleksin võtma väärtus 4 mingil hetkel. vanuseklassi 4 hakatakse milles mis iganes juhtub olema siin mida ma pean ütlema, sisestage 6. See oleks selle määramine kuni 6. Aga me ei tea, mis on siin. See ei ole mälu et meil oli juurdepääs. Nii et kui sa mäletad Eelmise loengu ta prindib väärtused Zamyla ja mingil hetkel ta tabas killustatuse süü. Nii siis ilmselt näeme palju killustatust vigu kui rakendada mõningaid probleemi komplekti. Aga see on üks viise, kuidas Võid sattuda segmenteerimine süü, kui hakkate juurdepääsu mälu võimalusi, mida ei tohiks olla. Nii et me ei ole juurdepääsu Selle asukoht ja see on viga. Nii et see on parem. Nüüd on veel väike küsimus selle koodiga. Ja see on põhimõtteliselt, et me oleme ikka ummikus neli õpilastele. Nüüd, kui ma tahan kasutada kaheksa üliõpilased, OK. See ei ole nii suur asi. Ma ei lähe, muuta kommentaarid, muuta n. Nüüd töötab kaheksa õpilastele. Kui ma koostada selle ja joosta see, et see näitab mind-- ta palub täisarvud kaheksa õpilased ja siis lihtsalt tööd. Aga see on vähem kui ideaalne vaja kompileerida programmi iga kord Ma tahan, et muuta õpilaste arv et ma tahan siseneda vanuses. Nii et lõplik paranemine see, kui me näeme siin-- me oleme läheb taotleda inimeste arv. Siin on mitmeid inimesi tuba või vanuses inimesi ruumis. Aga me ei kavatse taotleda number inimesed ruumis kasutaja. Nii et see on täpselt sama do-ajal loop, et me oleme näinud. See on täpselt sama do-samas silmus, et sa võib rakendada probleemi komplekti. Nii niikaua nad sisestamisest n väiksem kui 1, nii et ju olema Vähemalt üks inimene toas. Niikaua kui nad on sisestamisest n väiksem kui 1, siis me ei kavatse hoida küsib uuesti. Palun sisestage number inimesed ruumis. Nüüd, kui meil on mitmeid inimesi room-- nii et ma võiks sisestage et on 200 inimest selles ruumis. Siis siin me läheme tulla ja kuulutada massiivi suurus 200. Me kuulutatakse massiiv, mis on piisavalt suur, et hoidke 200 vanuses. Tulevad alla, see on silmus et sa saad väga harjunud. Nii iterating üle selle massiiv, määrates igas kohas et massiivi täisarv, ja siis lõpuks siin me oleme lihtsalt saada näide iterating üle, mis rida, ei määrata väärtused, kuid juurdepääsu väärtusi. Nii siin me näeme, et me ütlevad, aasta pärast, isik% i on% i-aastane, kus esimene% i on i pluss 1. Nii et ma see indeks muutuja. Ja teine% i läheb olla salvestatud väärtuse vanuses massiivi pluss 1. Nii et see pluss 1 on lihtsalt sellepärast, et me oleme saying-- see pluss 1, vanuses i pluss 1. See pluss 1 on lihtsalt sellepärast, et me oleme öeldes, aasta pärast isiku on see vana. Miks see i pluss 1? Miks meil on pluss 1 on? Jah. Jah. Seega pidage meeles massiivid on null indekseeritud. Nii et kui me trükkimiseks välja keegi lihtsalt lugeda väljund, siis ilmselt nad tahavad näha midagi nagu inimese üks, isik number üks, on 20 aastat vana. Isik number kaks on 15 aastat vana. Nad ei soovi näha inimene number null on 15 aastat vana. Nii koostades ja lihtsalt vaadata mida tundub like-- Loo ruumi. Tee vanuses koostab. Jooks vanuses. Me näeme inimeste arv toas. Nii et ma ütlen on kolm inimest toas. Age of isik number üks, oletame 15, 20, 25. Ja nüüd ma ütlen aastas alates nüüd nad on 16, 21, 26. Vaatame, mis see töötab n, mis ei ole võrdne 3. Nii et kui ma ütlen inimeste arv on 5, üks, kaks, kolm, kaks, üks, aasta pärast nad olla kaks, kolm, nelja, kolme, kahe aasta vanused. Nii et ma võiks sama lihtsalt on n 10000. Nüüd ma siis istun siin üsna Mõne aja sisestamise vanuses, kuid see toimib. Nüüd mälu kusagil me on massiivi suurus 10000, nii lõpuks 40000 baiti, sest seal on neljabaidilist neis täisarvud. Nii et massiivi suurus 10000 kus saame talletada vanuses need 10.000 inimest. Hästi. Küsimused kõik see? Jah. Mis siis, kui sa andsid negatiivse numbriga? Vaatame, mis juhtub. Nii selles case-- number inimeste toas, negatiivne. See jättis, sest siin me juhtuda tuleb käitlemise asjaolu, et kui n on vähem kui üks läheme küsita. Kui püüad tunnistada massiivi negatiivne suurus, see tavaliselt ei tööta. Nii proovime. Ignoreerime iganes väärtust nad sisend n ja just öelda, int vanuses negatiivne. Vaatame, kas ta ka koostab. Ma pole kindel. Ei. Nii vanuses on deklareeritud kui massiivi negatiivne suurus. Nii algul ta tunnistab massiivi ei saa olla negatiivne suurus ja lükkab selle tagasi. Nüüd, kui me ei saa hakkama Selle do-samas silmus õigesti, kui me ei kontrolliks kui n on väiksem kui 1-- oletame me lihtsalt ei ole see üldse ja selle asemel, me lihtsalt haarata täisarv. Ükskõik, milline see täisarv on, Me kinnitame massiivi, mis suurus. Nii koostaja ei saa võimalik kurdavad nüüd. Kui ma koostada see-- nii et see ei saa kurta, sest see ei tea, et ma olen läheb sisestage negatiivne arv, mis võib olla vigane. Sest kõik see teab, ma võin sisestage positiivne number, mis on täiesti kehtiv. Nii et ma kujutan ette, kui ma sisestan negatiivne 1 inimesed toas, segmenteerimine süü. Nii, OK. Lisame selle taga lihtsalt hoida seda, mida ta algselt oli. Nii et aegade. Nüüd, kui ma tahan proovida negatiivne age-- nii et vaatame öelda on viis inimest toas. Age of isik number üks on negatiivne 4 inimesele kolm on null, inimene three-- OK. Nii et siin, aasta pärast, isik number üks on negatiivne 3 aastat vana. Nii ilmselt ei ole mõtet. Aga see on lihtsalt sellepärast, et otsin kell kood kõik me teeme taotleb GetInt. Nüüd, kui meil oleks olnud GetPositiveInt funktsiooni või olime lihtsalt lihtsalt seda teinud omamoodi sama samas silmus sinna, siis see töötaks täiesti korras. Aga sellel konkreetsel Juhul, me lihtsalt ei ole juhtub olema käitlemise negatiivseid väärtusi. Muid küsimusi massiivid? OKEI. Nii et me oleme nüüd näinud massiivid. Ja me ei kavatse vaja kasutada seda käsurea argumente. Nii probleem seatud two-- Ma tean, et paljud teist võiks siiski töötab probleem komplekt üks, kuid probleem seatud kaks on tulemas. In probleem seatud kaks, sa lähed tuleb tegemist stringid, massiivid, ja käsurea argumente. Millised on käsurea argumente? Nüüd näete maha siin väike teaser, millised täpselt on saab olema juhtub. Me näeme int main, inc Argc, string argv sulgudes. Nii et kõigepealt proovime tõlgendada mida see üritab öelda. Nüüd OK. Nii käsurea siis peaks olema harjuda mõned neist käskudest nüüd, ja sa oled ilmselt joosta cd terminali ees. Nii et kui me ütleme, cd pset1, sa tead, et see peaks olla muutuvas arvesse pset1 kataloogi. Nüüd märkate, et olete kunagi kirjutatud programmi nagu see varem. Iga programm, et olete kirjutanud, sa läheks, ütleme, dot kaldkriips Mario, dot kaldkriips ahne, ja siis võib teilt sisendit. Nüüd, see pole see, mida muutus kataloog teeb. Kui sa jooksed cd, see ei ole siis öelda, mis kataloog sa tahad cd? Selle asemel, sa lihtsalt öelda, cd pset1 ja see lihtsalt läheb pset1 kataloogi. Nii sarnaselt meil on ka teisi näiteid. teha tere. Kui sa jooksed teha, see ei ole siis öelda, mis programmi sa tahaksid teha? Sa lihtsalt öelda, on käsurea teha tere. Move on teine ​​näide. See üks me liigutades mario.c esitada kuni ühe kataloogi. Nüüd me teame seda näiteks me tõesti kulgeb kaks argumenti. Seal mario.c esimese argumendina, ja dot dot on teine ​​argument. Ja siis, kui sa jooksed teha, siis näha, et tõesti pikk käsk LINE et tõesti pikk käsk trükitud käsurea. Nii et pikka command-- seda on vaid lühikese osa sellest, kuid nüüd on meil kolm käsurea argumente. Dot kriips null, hello, ja hello.c. Nii et need on käsurea argumente, argumendid et sa möödaminnes juures käsurida, nii et see ei pea küsitakse kui sa käivitada programmi. Oleks masendav, kui siis, kui sa jooksid kolisevad ta ütles: "OK, mis program-- mis file sa koostamisel? Hello.c. Mis lipud eks nagu siseneda? kriips o. Mida sa tahaksid fail, mida nimetatakse? tere. Ei, sa lihtsalt kulgema rõkkama kriips o hello hello.c. Nii tagasi vaadates seda. Nüüd argc-- Argc on argument loeb. See arv käsurea argumendid sisestatud käsurea. Noh, argv-- tehniliselt V tähistab vektor, mis sisuliselt tähendab massiivi. Aga sa võid ignoreerida seda. Argv-- meil string argv, nii string argv sulgudes. Nii et see on teises vormis Sulgudes sa ei ole näinud. Nii oleme näinud sulg märke, kui me oleme öelnud, nagu, string s võrdub Zamyla. s sulg 0 pöördub iseloomu Z. Me oleme näinud ka sulgudes, kui me ütlesime int vanuses ümbritsevad 5. See kuulutati massiivi suurus 5. Nii et siin on versioon Sulgudes me ei ole näinud. Nii selline string argv et Oleks täiesti tuttav et see oleks lihtsalt string. Nüüd sulgudes näitavad et see on maatriks. Nii string argv sulgudes vahendid et argv on massiivi stringe. Nüüd tehniliselt string On hulgaliselt tähemärke. Nii et see on nüüd massiivi massiivi tähemärki. Aga see on palju lihtsam mõelda see lihtsalt massiivi stringe. Miks võiks sulgudes olla tühi? Nagu, miks ei saa me öelda, sulg 5, sulg n? Jah. Jah. Me ei tea, kui palju sisendite seal ei kavatse olla. Nii et kui me vaatame rõkkama näiteks Me ütleme kolisevad kriips o hello hello.c. Sel juhul ei juhtu olema kolm käsurea argumente. Ja nii brackets-- me näeme teises ei oleks kolm. See on tehniliselt oleks neli. Aga sulgudes, oleksime ütleme, on kolm. Aga nüüd, kui me vaatasime liikuda mario.c dot dot, sulgudes me tahaks panna kaks neist. Ja seal on palju käske, on muutuv arv käsurea argumente. Mida see versiooni sulg tähistus näitab, on see, et argv on massiivi stringe. Aga me ei tea, kui palju stringid on selles massiivi. Ja kuidas me siis teame, kuidas palju string on massiiv? See mõte Argc. Argc ütleb meile, kui kaua argv on. Nii et viimane asi, mida meeles pidada, et tehniliselt käsk ise moodustab ühe on käsurea argumente. Nii cd pset1 on kaks käsurea argumente. Programm iseenesest, cd, ja seejärel tegelik argument osa sellest, pset1. Iga programm, mis olete kirjutanud seni on olnud üks käsurea argument-- dot kaldkriips Mario. See on ainus käsurea argument. Nüüd vaadates rõkkama kriips o hello hello.c. Mis on Argc? 4. Nii Argc on 4. Rõkkama, et argv sulg 0 on rõkkama. argv sulg 1 on kriips 0. argv sulg 2 on hello, ja argv sulg 3 on hello.c. OK, nii et küsimustele selle, ja siis me mõningaid programmilisi näiteid. OKEI. Nii et me võtame pilk hello3.c. Nii et see peaks olema tuttav üks esimesi c näited meil oli, kus me lihtsalt öelda, hello maailma, kuid nüüd on see üldisem. Nii et siin me öelda tere % s kurakriips n argv sulg 1. Notice-- nii Siiamaani on see mida mu template faili paistis. Mul oli int main (void), ja siis ma midagi põhiülesanne. Nüüd selle asemel, kui hakkame tegelevad koos käsurea argumente, vajame täpsustada tagatud erinevat vormi peamine. Nii vaadates hello3 Jällegi läheb võtma kaks argumenti now-- int Argc, arvu käsurea argumente, ja string argv sulgudes tegeliku stringe kanda käsurea. Nii et ma lähen muuta, et malli, et kajastada asjaolu. Nüüd, kui sa kirjutad programm, kui sa seda ei tee vaja võtta käsurea argumente, siis lihtsalt kasutada int main (void). Aga nüüd, kui olete kirjalikult käsurea argument programme, mis sa lähed tegema probleemide määrata two-- Nüüd, et sa kasutad programme, mis on vaja võtta käsurea argumente, sa pead olema peamine seda vormi. Nii siin-- see on suur kasutamine on käsurea argument. Nii printimisel argv 1. OK, nii olgem koostada ja programmi käivitada. Tee hello3. Koostab. Dot kaldkriips hello3. Ja oletame, "Rob". Tere Rob. Kui ma ütlen, "Tere Maria," tere Maria. Tere Maria. Hannah ikka ütleb, "tere Maria, "sest ma ei ole tee midagi meie argv 2. Argv 2 nüüd oleks "Hannah." Argc oleks 3. Mis siis, kui ma tegin seda? Nii tere null. Ta lühidalt käsitlenud asjaolu et tehniliselt getString võib naasta null, kuid me saada palju sellest, mida null tegelikult on. Aga tehke seda asja Asjaolu, et ükski on üldiselt halb. Me tegime midagi valesti, kui see trükkimiseks "hello null." Ja põhjus, miks me tegime midagi valesti on-- hästi, kui ma jooksin dot kaldkriipsuga hello3, Argc oli 1. Nii et see tähendab pikkuse argv oli 1. Kui massiiv on pikkusega 1, ainus kehtiv indeks on null. Ja nii siin argv 1 on väljaspool vahemikus selle massiivi. See oli sarnane enne kui ma proovisin salvestada 6 väljaspool lõpuks massiiv. Nii et ma üritan juurde midagi väljaspool argv loeb, ja me lähme null. Nii parem versioon Selle paranemist, selgesõnaliselt kontrollida Argc. Nii et kui Argc võrdub 2, see tähendab, et meil vedas midagi dot kaldkriipsuga hello3 Rob. Ja see print "tere Rob." Kui Argc ei võrdu 2, siis on see lihtsalt läheb ignoreerida iganes sa panna kell käsurea argument käsurea argumente. Või kui te ei pane üldse, et see on lihtsalt läheb eirama ja lihtsalt öelda, "tere teile." Nii koostamiseni. Tee hello4. Ja töötab hello4. Jooks seda nii, mida tuleks trükkida? "Tere teile." Tere teile. Aga hello4 Rob? "Tere Rob." Ja lõpuks, hello Rob Maria on lihtsalt "tere You" uuesti, sest sa tegelikult ei sisesta midagi, mis seda oodata. Sa sisestasid rohkem nimed kui see võiks käsitleda, nii see lihtsalt täitmata kuni tere teile käitumist. Nii küsimustele on? Või käsurea argumente? OK, nii võttes pilk veel paar näidet kasutades käsurea arguments-- esimene oleme argv kriips 1 dot c. Nii kommentaarid kinkida, mida Selle programmi peaks tegema. Aga märkate now-- see silmus, see sobib täpselt muster Ütlesin enne. Me lihtsalt juhtub olema kasutades Argc asemel n. Nüüd Argc on tõesti n. See on pikkuse argv massiivi. Nii on iterating üle argv massiivi printf-se iga argv väärtus. Nii et kui ma teen seda. Tee argv 1. See koostab. Dot kaldkriips argv 1. Just töötab see, et pildid dot kaldkriipsuga argv 1 kuna see oli ainus käsurea argument-- programmi nimi. Alati on juures least-- Argc ei saa olla väiksem kui üks, sest alati leidub vähemalt olla programmi nimi joosta. Nii argv 1 Rob prinditakse argv 1 ja siis uus liin "Rob". Nii esimese iteratsiooni Selle loop, i on 0. Argv 0 on programmi nimi. Dot kaldkriips argv 1. Ja siis argv 1 on minu esimene käsurea argument, mis on Rob. Sel hetkel, me oleme võrdsed Argc. Me murda läbi silmuse ja ongi kõik. Nii et see töötab suvalise arvu käsurea argumente. Pange tähele, ta prindib argv 0, argv 1 argv 2, argv 3, argv 4. Ja ei ole argv 5. Argc on võrdne 5. Nii et argc-- kell i võrdub 5, murrame läbi silmuse. OKEI. Nii küsimustele, et enne kui me vaata keerulisem näiteks? Nii argv 2. Hästi. Nii et me ikka trükkimine käsurea argumente. Aga nüüd märkate meil nested silmus. Mis on selle teinud? Nii et esimene silmus teeb täpselt, mida ta tegi enne. Me veel silmukoiminen üle iga käsurea argument, aga nüüd see teine ​​loop-- me oleme Samuti näinud midagi sellist varem. Kui ta oli iterating üle Zamyla väljatrükk Z-A-M-Y-L-A. Nii et see teine ​​ahel int j võrdub 0, n on võrdne strlen of argv sulg i. Nii et esimene arvan the-- Läbigem. Mõtleme, mida arvuti oleks kui ma jooksin seda programmi ainult dot kaldkriips argv kriips 2. Nii et kui ma jooksin seda koodi, siis Argc saab olema võrdne 1. Ja string argv-- seal on ainult saab olema üks indeks argv, ja mis saab olema võrdne dot kaldkriips argv 2-- programmi nimi. OK, nii et nüüd ma võrdub 0, i alla 1, i pluss pluss int j võrdub 0, n võrdub strlen of argv sulg 0, nii et mille esimene iteratsioon see ahel. argv sulg 0 on dot kaldkriipsuga argv 2. Mis on pikkus, et string? Noh, dot kaldkriips A-R-G-V kriips 2. Nii strlen kohta, mis on 8. Nii j võrdub 0, n võrdub 8. Niikaua kui j on väiksem kui 8, j ++. Ja et me ei kavatse olla printimist ühe märgi, mis on argv sulg i sulg j. Nii et ainus i on null. Meil on ikka ainult üks käsurea argument. Selles esimene esitus on silmus, me oleme läheb trükkimine argv sulg 0 sulg 0. Ja siis j läheb juurdekasvu. Ja me ei kavatse trükkimine argv sulg 0 sulg 1. Ja siis argv sulg 0 sulg 2. Nii et see on meie esimene kohtumine mitmemõõtmeline massiivid. Mäleta varem, et ma ütlesin et argv on tehniliselt massiivi massiive tähemärki. Nii et siin, kui ma ütlesin midagi string s võrdub argv sulg i, ja siis ma ütlesin, s sulg j, seda oleks Täites sama asi. Nüüd, kui olete näinud s sulg j varem. See on lihtsalt pääseda j-nda iseloomu see string. Nii see meil ei saada j-nda iseloomu i-nda argv. Mida see peaks lõppkokkuvõttes väljund? Tee argv 2. See koostab. Dot kaldkriips argv 2. "Rob Maria Hannah," ja anna meile tuba. Nii näeme, et see on väljastamist dot oma rida ja kaldkriips oma rida ja oma rida. See prindib iga eripärasuse iga käsurea argument. Ja siis nende vahel, kuna selle uue liini me trükkimiseks alla siin, nende vahel siis saad printida uus liin. Nii et see on sarnane eelneva argv kriips 1 mis trükitakse iga käsurea argument, kuid nüüd oleme trükkimine käsurea argumendid ja siis iterating läbi iga märgi iga käsurea argument saada see väljund. OKEI? Nii küsimustele on? Üks asi on tähele panna, et käsurea arguments-- et nad on eraldatud ruumid siis oleks muidugi ootame neilt. Nii string võib olla tühikuid. See ei ole super oluline, aga kui ma tahtsin kolmanda käsurea argument olema ruumi, siis ma Võiks öelda midagi sellist. OKEI? Nii et see nüüd ikka vaid kolm käsurea arguments-- ka 4. Dot kaldkriips argv kriips 2, Rob, Maria ja Hannah Bloomberg. OKEI. Küsimused seda? Ei ole midagi erilist umbes tühik. See lihtsalt juhtub olema, et käsurea kohtleb tühik kuidas sa eraldi iga argument. Hästi. Siis Ülesanded two-- sa lähed olema Vaadates salajase võtme krüptograafia. Niisiis, mis on sarnane näiteks nägime A Christmas Story, sa lähed tuleb rakendada mõned algoritme, et antud teade, sa lähed, et oleks võimalik krüptida, et sõnum et ainult keegi, et saladus võti, selle dekooder ring, peaks suutma dekrüpteerida. Nii et on standard edition. Sa lähed tuleb rakendada kahes erinevas versioonis. Kui juhtub, et heita kell häkker Edition nüüd, me ei kavatse anda Teile string niimoodi, mis kujutab endast krüpteeritud parool. Nii et teie eesmärk on välja selgitada, mida dekrüpteeritakse salasõna on. Nüüd on see tegelikult, kuidas paroole talletatakse palju arvuteid, ja see lihtsalt talletab selle juhuslik tähekombinatsioon. Sa pead mõtlema, kuidas saada Sellest juhuslik tähekombinatsioon mida algne parool oli. Ja lõpuks, pärast seda Ülesanded, sa peaksid saaks aru, mida see tähendab. Nii õpid kuidas lahti selline juhuslik jada. Samamoodi, kui sa mäletad nädal 0, siis oleks näinud seda URL. Ja siis peaks olema võimalik dekrüpteerida seda lõpuks. Sa ei pruugi olla õnnelik, kui sa dekrüpteerida ja vajuta linki. Hästi. Ongi täna. Nii näeme järgmisel nädalal! [ELECTRONIC muusika mängib]