[Muzikos grojimo] DAVID Malan: Visos dešinę. Tai yra CS50, ir tai yra 2 savaitės pabaigoje. Aš atsiprašau Aš negalėjo būti ten su jumis šiandien bet esate labai geras rankas. Leiskite man pristatyti CS50 savo Robas Bowden. ROB BOWDEN: Ir, žinoma, tada turime pasijuokti iš to, kad jis atsiuntė mums vertikalus Vaizdo ir parodyti tai. [Vaizdo įrašų atkūrimas] [Muzikos grojimo] [Pėdomis] -Šis Vaizdo nebuvo turi atrodyti šitaip. Tai galėjo būti užkirstas kelias. Pasakykite "ne vertikalių vaizdo įrašus. -Vertical Video atsitikti, kai jūs palaikykite jūsų kamera neteisingą kelią. Jūsų vaizdo baigsis iki atrodo kaip šūdas. - [GRUNT] -Yra Vis daugiau ir daugiau žmonių priklausomi priimant vertikalias video kasdien. Tai ne crack arba nieko, bet tai dar tikrai neblogai. Yra du skirtingų rūšių žmonių, kurie kenčia su VVS. Pirmoji grupė traktuoja video jie šaudyti kaip nuotraukose. Jie nereiškia jokios žalos. Jie tiesiog nesupranta, kad o jūs galite paversti vaizdą, Jūs tikrai negali pasukti vaizdo. [CRASH] - [MONKEY SOUNDS] -The Kita grupė yra žmonės kurie neturi duoti [Bleep]. -Vertical Vaizdo sindromas yra pavojingas. Filmuota medžiaga turi visada buvo horizontaliai. Televizoriai yra horizontali. Kompiuterių ekranai yra horizontali. Žmonių akyse horizontaliai. Mes ne pastatytas žiūrėti vertikalias vaizdo įrašus. -Aš Myliu vertikalias vaizdo įrašus. -Nobody Rūpinasi jumis. -Jei Ši problema s liks neišspręstos, jūs taip pat pradės rodyti keturias vaizdo vienu metu tik sutaupyti pralaidumą. -Letterboxed Vertikalios video būtų būti pašto ženklo dydžio. -O Ji išplito visur. Kino ekranai turi visada buvo horizontaliai. Jei vertikalieji video tapti Priimta, kino teatrai turės būti aukštas ir liesas. -O Visi kino teatrai būtų turi gauti nugriauta ir perstatyta. Ir iki to laiko jie buvo atstatytas, Mila Kunis būtų sena ir negraži. -Birds Bus katastrofos į juos ir mirti. -We'll Visi gauti kieta kakleliai iš looking up. -O Niekas sėdės eilėje dar kartą. -George Lucas vėl atpalaidavimo žvaigždutėmis Karai again-- liesas leidimas. -Aš Niekada nebuvo tikrai galėtų pasakyti istorija, kad aš norėjau pasakyti. Tai buvo puiki proga man eksperimentuoti su nauja technologija. -You're Trūkčioti. -Every Kartą, kai mobilusis įrenginys yra naudojamas įrašyti vaizdo, pagunda yra. Tiesiog pasakyti "ne". Pasakykite "ne" George Lucas. Pasakykite "ne" senas Mila Kunis. Pasakykite "ne vertikalių vaizdo įrašus. -O Jei matote ką nors daro, sako, "Jūs neprisijungęs šaudymo Ši teisė manekenu!" [Muzikos grojimo] [PABAIGA PLAYBACK] [Plojimai] [AUDIO OUT] ROB BOWDEN: --simple forma kriptografija, kuris iš esmės yra šifravimas ir iššifravimui slaptų pranešimų. Taigi čia mes turime labai paprastą žaislą. Ir idėja yra išorinis žiedas sukasi aplink vidinio žiedo. Ir jūs galite pamatyti, gal jei aš padidinti į, that-- sunku pamatyti. Bet, kaip ir šis skaičius 1-- gerai, kad persikėlė. Skaičius 1 žemėlapiai į laišką X, numeris 2 žemėlapiai į laišką J. neįtikėtinai sunku ne praleisti į priekį. Laiškas 2 žemėlapiai J. Numeris 3 žemėlapių D Taigi su šiuo žiedu galite duoti kažkas žinutė 1, 2, 3. Dėl kažkokių priežasčių jūs noriu pasakyti jiems XJD. Bet jūs galite suteikti jiems kai numerius pranešimą, ir tol, kol jie turi šią žiedą, jie gali iššifruoti, ką jūs bandote pasakyti. Taigi jums gali matėme tai Konkretus pavyzdys kriptografija Prieš jeigu aplink Kalėdų sezoną jūs stebėjo Kalėdų istorija. Jei Jūs niekada matė tai anksčiau, tada tiesiog įjungti TBS ne pažodžiui bet kuriuo metu per Kūčias, nes jie tiesiog parodyti jį atgal atgal atgal į atgal atgal visą dieną. Ir atitinkama vaizdo tai. [Vaizdo įrašų atkūrimas] -Be Tai žinoma visiems ir kiekvienas kad Ralph Parkeris yra iš dalies paskirtas Little narys Našlaitė Annie paslaptis Draugų ir ji turi teisę į visų pagyrimu ir nauda pasireiškia tuo. Pasirašyta Mažasis Našlaitė Annie. Parašu Pierre Andre rašalu! Garbės ir nauda jau devynerių! [Šaukiantį nuo radijo] -Nagi. Leiskite gauti su juo. Man nereikia visą tą džiazą apie kontrabandininkus ir piratai. -Listen Rytoj vakare su baigiamasis nuotykių Juodosios piratų laivas. Dabar atėjo laikas Annie paslaptis žinutė Jums nariai Secret Circle. Įsiminti vaikams, tik nariai Annie Secret Circle gali dekoduoti Annie slaptą žinutę. Atminkite, Annie priklauso nuo jūsų. Nustatykite savo smeigtukai B2. Čia yra žinia. 12. 11. 2. -Aš Esu savo pirmąją slaptą susitikimą. -25. 14. 11. 18. 16. -OH, Pierre yra labai balso vakarą. Galėčiau pasakyti, kad vakaro žinutė buvo tikrai svarbus. -3. 25. Kad tai iš Annie pati žinutė. Atminkite, kad nereikia niekam. Vėliau -Five sekundžių, aš tik kambarys namuose, kur iš devynių berniukas gali sėdėti privatumo ir atkoduoti. Aha! B! Nuėjau į kitą. E. pirmas žodis yra "būti". S. Tai artėjo lengviau dabar. U. 25. Štai R. -Come Įjungtas, Ralphie! Aš turiu eiti! -I'll Būti nustatančio teisę Ma! Gee nusišvilpti. T. O. "Būtinai", - būtinai ką? Kas buvo mažai Retųjų Annie bando pasakyti? Būtinai ką? -Randy Gavo eiti! Ar galite išeiti? -Visos Teisus, mama! Aš būsiu teisus ne! Man buvo vis arčiau dabar. Įtampa buvo baisi. Kas tai buvo? Iš planetos likimas gali pakabinti ant plauko! -Ralphie, Randy gavo eiti! -I'll Būti tiesiai iš, šaukė garsiai! Beveik čia! Mano pirštai skrido. Mano protas buvo plieno spąstus. Kiekvienas porų vibruoja. Tai buvo beveik aišku! Taip. Taip. Taip. Taip. Būtinai gerti savo Ovaltine. Ovaltine? Prastas komercinis? Šunsnukis. [PABAIGA PLAYBACK] ROB BOWDEN: Štai kaip Ovaltine susijęs su kriptografijos. Iš esmės CS50 tik reklamuojami Ovaltine kad galėtume būti prastas komercinis už Ovaltine. Gerai. Taigi dabar tikrasis kompiuterių mokslas. Įsiminti pirmadienį mes baigėte Nardymas giliau į eilutes. Taigi mes susiduriame su eilutė "Zamyla". Ir mes buvome pripažinti tai, kad mes galime gydyti "Zamyla", kaip simbolių seka. Ir atminkite, kad mes sužinojome laikiklis notacija. Taigi, jei tai buvo saugomi string'e "S", tada jei mes sakėme -ai laikiklis 0, kad būtų rodo raidė kapitalo Z. Ir jei mes sakėme -ai laikiklis 1, kad rodytų pirmą mažosiomis raidėmis A, ir taip toliau iki -ų kronšteino 5, o tai rodo, kad paskutinis. Dabar prisiminti, kad ilgis šio eilutę yra 6, bet į eilutę indeksai 0 iki 5, Z per tą trukti. Taigi tai dabar telpa į bendresnį vaizdą jūsų kompiuterio atmintyje, jūsų RAM. Taigi kažkur programa, kuri vykdote savo kompiuterį reikia prisiminti Zamyla kur nors atmintyje. Taigi aš galiu turėti savanoriu? Taip Prašau. Ir koks tavo vardas? DEAN: dekanas. ROB BOWDEN: Dekanas? Nice to meet you, dekanas. Taigi atėjo per čia, ir mes ketiname turėti piešiama Mūsų gražus madingas išdėstymą atmintyje. Dabar man patinka galvoti atminties kaip vieną ilgą juostelės baitų, bet tik ekrane tikslais mes tiesiog iš kairės į dešinę, iš viršaus į apačią. GERAI? Taigi, aš ruošiuosi parodyti program-- Getstrings.c. Ir taip visa tai programa daro prašo keturias stygas nuo naudotojo su GetString ir tada spausdinimas kokia ta pirmoji eilutė įrašyta buvo. Mes ignoruojant du per keturis. GERAI. Taigi per čia now-- kai Aš pirmasis prašymas S1. Taigi jūs esate kompiuteris. Ir jūs įgyvendinant GetString. Taigi jūs prašote iš eilutę man, ir aš sakau, gerai, dekanas. Padovanoti eilutę "Dean". Taigi kažkur atmintyje galite reikia prisiminti "Dean". Taigi rašyti į atmintį kažkur. Tobula. GERAI. Taigi dabar mes turime S2. Ir S2 bus prašymas GetString. Taigi, aš ruošiuosi įvesti eilutę. Aš ruošiuosi įvesti "Hannah". Taigi įvesti "Hannah" kažkur į atmintį. Taip. A-H. Gerai, kad dabar S3. Ir tai bus dar vienas prašyti GetString. Ir todėl dabar įvesti "Maria". Gerai. Ir tada ten paskutinis prašymas GetString, S4. Taigi, aš nežinau. Kaip apie einame su antidisestablishmentarianism. Taigi įvesti kad į atmintį. Taip. Taigi tiesiog daryti "Rob". GERAI. Taigi dabar explain-- kodėl padarė jūs paliekate šias erdves? Kodėl jūs turite šį lauką tuščią erdvė čia čia ir čia? Taip. Taigi pastebėti, kai aš einu spausdinti s1-- todėl, jei mes turėjo "Ona" Running teisę iki šalia "Dean" kaip mes žinome, kai eilutė "Dean" baigiasi? Taigi spausdinant string s1 gali turėti tik spausdintas "DeanHannahMariaRob" jei jis neturi clue kada "Dean" faktiškai baigiasi. Gerai. Taigi atmintyje kaip mes iš tikrųjų atstovauti šią eilutę pabaigą yra su backslash nulio. Taigi ši erdvė yra būtent tai, ko mes norėjome. Ji turėtų būti Backslash nulis. Tai bus Backslash nulis, ir tai bus Backslash nulis. Ir jūs galite turėti nuostabų prizą už tai, kad puikiai savanoris. Paimkite streso kamuolys! GERAI. Taigi, šis personažas Backslash nulis kaip mes rodo eilutę pabaigą. Tai kaip tada, kai konkrečioje programoje nori spausdinti eilutę, tai how-- prisiminti mes sužinojome strlen funkcija praėjusią savaitę? Styginių ilgis? Tai kaip eilutės ilgis gali nustatyti, kiek laiko eilutė yra. Jis tiesiog išlaiko Iteracja per simbolius kol jis randa backslash nulinį simbolį. Taigi svarbiausia suvokti, apie Backslash nulio charakterio yra tai atstovavo visų bitais nuliais. Taigi, pastebėti, kad tai yra atskira nuo nulinio pobūdžio. Taigi nulinis simbolis, jei žinote pavyzdyje, kad jis davė pabaigoje paskaitų, kur map simbolių to-- kaip kapitalas A žemėlapius iki 65. Raides į žemėlapius iki 97. Mažosios raidės b būtų 98. Taigi skaičius 0 žemėlapiai to-- aš ne žinau, nuo mano galvos viršaus. 44 arba 45. Kažkur tame regione. Taigi simbolis 0 yra tikrasis skaičius. Bet Backslash nulis žemėlapiai į visus nulinės bitai. Taigi ten skirtumo tarp backslash nulis, kuri mes vadiname null terminatorius. Yra skirtumas tarp Backslash nulis ir simbolis lygus nuliui. Gerai. Taigi kalbėti šiek tiek daugiau apie stygos. Taigi čia matome tai kaip ji būtų išdėstyti atmintyje. Taigi šis stygos kaip seka idėja iš characters-- todėl oficialus kompiuteris sciency terminas seka yra masyvas. Taigi, mes vadinčiau eilutę AN simbolių masyvas. Ir ten iš tikrųjų yra kiti duomenys tipai, mes galime padaryti masyvus iš. Taigi, norint motyvuoti tai, pažvelgti pavyzdys. Mes jį vadiname ages0.c aš nukopijuokite ir įklijuokite mūsų šabloną. GERAI. Taigi šioje programoje, ką mes noriu padaryti, tai paimti amžius trys studentai į paskaitas. Taigi mes žinome, INT age-- ir dabar aš ruošiuosi pasakyti 0. Taigi jūs galbūt norėsite pasakyti age1, bet tikslais matysime netrukus, Pasakysiu int age0 lygus GetInt. Taigi tuo pačiu kvietimas GetInt kad mes jau naudojate I tai neįvyks būti raginimo sakydamas: "duok man amžių." Bet tik prašo ją. Ir age1 lygus GetInt. Ir int age2 lygus GetInt. Taigi, vėl trys studentai, bet galiausiai kintamos indeksai yra age0 per age2. GERAI. Taigi ši programa darys viską norime su age0, age1 ir age2, bet ši programa galiausiai dirba trys studentai. GERAI. Taigi, ką daryti, jei noriu keturi studentai? Na, aš ruošiuosi grįžti į mano kodas, pakeisti komentarą, ir dabar mes turime int age3 lygus GetInt. GERAI. Taigi, kas mato problemą čia? Kokia problema su šia konfigūracija rūšiuoti? Taip. Taip. Taigi mes kuriant kintamasis kiekvienam studentui. Dabar, kad veikia, bet galiausiai Ką daryti, jei dabar pasakyti: "Aš noriu patraukti amžius aštuoni studentai ar mokiniai 16 arba Tačiau daugelis studentų iš kad studentų šimtams CS50 arba studentų miesteliu tūkstančiai arba milijardams žmonių pasaulyje? Taigi galiausiai tai nėra tvarus. Bet kuriuo metu jūs matote save kopijavimo ir klijavimas kodas, kaip šis, Jūs paprastai turėtų jaustis kad yra geresnis būdas. Taigi, tai yra ten, kur mes pristatome masyvas deklaracija. Taigi, kai jūs deklaruoti masyvą, Tai yra tai, ką apskritai formatas ketina atrodyti. Mes ketiname pasakyti tipą. ir tada mes ketiname suteikti pavadinimą tos masyvas, kaip mes apibrėžiame kurią nors konkrečią kintamąjį. Ir galiausiai mes naudojame Šis laikiklis žymėjimas vėl bet kitame kontekste iš kaip mes jį naudoti anksčiau. Taigi čia tai atrodo normalus kintamasis pareiškimas, kad mes matėme. Taigi mes matėme int x kabliataškį anksčiau. Na, dabar mes galime pamatyti kažką kaip int x skliaustuose 5. Ir išleisti šią idėją į GetInt programa, kad mes have-- todėl mes galime įgyvendinti tai tuo pačiu būdu. Leiskite pasakyti CS mes linkę naudoti n, kaip kažką numeriu. Taigi čia mes ketiname laikyti keturis studentus. Ir dabar mes galime pasakyti, int amžius laikiklis n-- ne visai jį gauti yet-- deklaruoti savo keturių studentų masyvo. Taigi, kaip tai atrodys atminties bus panašus į tai. Išvalyti tai. Ir mes ketiname turėti kažkur į memory-- aš įdėti šią ten. Taigi, kur nors atmintyje. Vienas du trys Keturi. Turime keturis sveikuosius skaičius iš eilės Šio keturių skaičių masyvą. Taigi, šiuo metu, kas yra dydis vienos iš šių dėžės? Taip. Tai keturių baitų. Tai 32 bitų. Taigi, dabar tai skiriasi iš masyvo, kad mes mačiau anksčiau, simbolių masyvas. Į eilutę kiekvienoje dėžėje buvo tik vienas baitas, nes charakteris yra tik vienas baitas. Bet su skaičiais masyvo, kiekvienas dėžutė turi būti keturių baitų, siekiant kad tilptų visą sveikasis skaičius. Taigi tai, kas yra iš masyvo keturi ints atrodys. Ir tada atgal į kodą. Dabar mes norime iš tikrųjų parduotuvė sveikieji į tą masyvą. Taigi, dabar tai yra labai, labai, labai bendra tendencija, kad tam tikru metu tapti raumenų atmintis. Taigi int i lygus 0. Aš mažiau nei n. Aš plius pliusas. Amžiaus grupėje I lygus GetInt. Taigi tai už kilpos, šis formatas, Jūs turėtumėte gauti labai naudojamas. Taigi tai paprastai, kaip mes pakartoti per beveik bet masyvo. Dabar pastebėsite šį rūšiuoti paaiškina, kodėl nuo pat pradžių mes neturėjome už kilpos vyksta int i yra lygus 1, i yra mažesnis arba lygus 10. Priežastis yra ta, kad nuo nulis daro šį darbą gerai su matricomis. Taigi matricos yra nulis indeksuojami. Jei tai masyvas yra Ilgio 4 indeksai yra 0 iki 3. Taigi, per pirmas iteracijos tai už kilpos mes ketiname būti nustatyti amžių laikiklis 0 lygus skambučio į GetInt. Taigi ką aš atsitiko įvesti į klaviatūrą. Antroje perdavimą, mes nustatant age1 lygus GetInt. Trečia perdavimą, age2. Galutinis smūgis age3. Taigi, jei pirmoje perdavimo linijos Aš įveskite numeris 4 į klaviatūrą, tada mes įterpti 4 čia. Jei antrą perdavimą įvesti 50, mes įdėti 50 čia. Trečią perdavimo galėčiau įvesti neigiamus 1, neigiama 1, ir galiausiai, jei aš įvesti 0-- ir dabar prisimenu, kad tai buvo trys indeksas. Kai mes kilpa atgal, i bus didinamas iki 4. i yra ne ilgiau mažiau nei N, kuris yra 4. Ir mes išeiti iš kilpos. Taigi, ką būtų negerai su tai? [Nesigirdi]? Auditorija: [nesigirdi] Taip. Taigi masyvas turi tik keturias vietas, o tai reiškia, kaip indeksai 0 iki 3. Taigi jei tai buvo atvejis, aš norėčiau imtis vertės 4 tikru momentu. amžiaus grupė 4 bus nustatyti kas beatsitiktų, kad daugiau nei čia ką aš turiu pasakyti, įveskite 6 d. Tai bus nustatyti tai 6. Bet mes nežinome, kas yra čia. Tai nėra atminties kad mes turėjome prieigą prie. Taigi, jei jūs prisimenate iš ankstesnis paskaita, jis buvo spausdinti vertybes Zamyla ir tam tikru momentu jis pasiektų šią segmentaciją kaltės. Taigi jums tikriausiai bus matyti daug segmentavimo gedimai, kaip jūs įgyvendinti kai kuriuos probleminius rinkinių. Tačiau tai yra vienas iš būdų, kuris galite susidurti segmentaciją kaltė, kai pradėsite gauti atminties būdų, kad jums neturėtų būti. Taigi mes ne turėti prieigą prie Ši vieta ir tai yra klaida. Taigi tai yra geriau. Dabar vis dar yra maža problema su šiuo kodu. Ir tai iš esmės, kad mes vis dar įstrigo keturių studentų. Dabar, jei aš noriu naudoti aštuonių studentų, Gerai. Tai nereiškia, kad didelis spręsti. Galiu eiti, keisti Komentuoti ir keisti n. Dabar tai bus dirbti su aštuonių studentų. Jei aš surinkti tai ir paleisti tai, parodys me-- ji prašys sveikieji aštuoniems studentai ir jis bus tiesiog dirbti. Bet tai mažiau nei idealus reikia perkompiliuoti programos kiekvieną kartą Noriu pakeisti studentų skaičių kad aš noriu įvesti amžiaus cenzą. Taigi galutinis patobulinimas tai, kaip matysime here-- mes ketina prašyti žmonių skaičių. Čia mes turime skaičių Žmonių kambariuose arba bet kokį žmonių į kambarį amžiaus. Tačiau mes ketiname prašyti skaičių žmonių kambario iš vartotojo. Taigi, tai yra tą patį do-o kilpa, kad mes matėme anksčiau. Tai lygiai toks pats do-while cikle, kad jūs gali būti įgyvendinti dėl problemų rinkinys. Taigi tol, kol jie surinkdamas n mažiau negu 1, todėl turiu būti ne bent vienas asmuo kambaryje. Tol, kol jie surinkdamas n mažiau negu 1, tada mes ketiname nuolat klausia vėl. Prašome įvesti numerį žmonių kambarį. Dabar, kai mes turime skaičių žmonių į room-- todėl aš gali įvesti, kad Yra 200 žmonių šiame kambaryje. Tada žemyn čia mes ketiname ateiti ir paskelbti apie dydžio 200 masyvo. Mes deklaruojant masyvo, kad yra pakankamai didelis, kad turėti 200 amžių. Coming Down, tai už kilpos kad gausite labai naudojamas. Taigi Iteracja per šį masyvą, priskiriant kiekvienai vietovei toje masyvo sveikasis skaičius, ir Tada galiausiai čia mes tiesiog gauti žinutę iš Iteracja pavyzdį per tą masyvą, o ne priskirti vertybes, bet patekti į vertybes. Taigi per čia matome, kad mes sako, per metus nuo dabar, Asmuo% būsiu% i metai, kur pirmasis% i yra i plius 1. Taigi aš tai indekso kintamasis. Ir antra% i ketina būti vertė saugomi amžius masyvo plius 1 d. Taigi, tai plius 1 yra tik todėl, kad mes saying-- šį plius 1, amžių i plius 1. Tai plius 1 yra tik todėl, kad mes sakydamas, per metus nuo dabar asmeniui bus tai senas. Taigi kodėl tai man plius 1? Kodėl mes turime ir 1 ten? Taip. Taip. Taigi nepamirškite matricos yra nulis indeksuojami. Taigi, jei mes spausdinate tai dėmesį kažkas tiesiog skaityti produkcija, tada tikriausiai jie nori pamatyti kažką kaip asmuo viename, asmens numeris vienas, bus 20 metai. Asmuo numeris du bus 15 metai. Jie mieliau nematote asmenį skaičius nulis yra 15 metai. Taigi rengiant šį ir tik pamatyti, ką atrodo like-- Sukurti šiek tiek erdvės. Padaryti kurių amžius kaupia. Veikia amžių. Mes matome skaičių žmonių į kambarį. Taigi aš sakau yra trys žmonės kambaryje. Amžius asmuo numeris vienas, tarkim 15, 20, 25. O dabar pasakysiu per metus nuo dabar jie bus 16, 21, 26. Leiskite pamatyti, kad tai dirba su N, kad yra ne lygus 3. Taigi, jei aš sakau, žmonių skaičius yra 5, viena, du, tris, du, vienas, per metus nuo dabar jie bus du, trys, keturi, trys, du metai. Taigi galėjau tik kaip lengvai jau n būti 10.000. Dabar aš būsiu sėdi čia gana kartu, įvesdami amžių, bet tai veikia. Taigi dabar atmintyje kažkur mes turėti tai, dydis 10,000 masyvą, taip galiausiai 40000 baitų, nes yra keturių baitų kiekvienam iš šių skaičių. Taigi ten yra iš masyvo dydis 10,000 kur mes galime saugoti tų 10000 žmonių amžių. Gerai. Turite klausimų apie bet apie tai? Taip. Ką daryti, jei jums davė neigiamą skaičių? Pažiūrėkime, kas atsitiks. Taigi, šio konkretaus case-- skaičius žmonių į kambarį, neigiamas. Jis atmetė, kad nes čia mes atsitikti būti kėlimo į tai, kad, jei n yra mažiau nei vieną mes ketiname vėl paklausti. Jei bandysite paskelbti masyvas neigiamas dydis, jis paprastai neveikia. Taigi pabandykime. Leiskite ignoruoti kokia vertę, kurią jos indėlis n ir tiesiog pasakyti, int amžiai neigiama. Leiskite pamatyti, jei ji net kaupia. Aš nesu tikras. Ne. Taigi amžius yra paskelbta kaip masyvas su neigiamu dydžiu. Taigi iš anksto ji pripažįsta masyvas negali būti neigiamas dydis ir jį atmeta. Dabar, jei mes ne rankena tai do-while cikle teisingai, Jei nebūtume tikrinti jei n yra mažiau nei 1-- tarkim mes tiesiog neturėjo tai ne visi ir vietoj to mes tiesiog patraukti sveikasis skaičius. Nesvarbu, kas tai sveikas yra, mes paskelbti apie šio dydžio masyvo. Taigi sudarytojas negali galbūt skundžiasi dabar. Jei aš kaupia this-- todėl negaliu skųstis, nes jis negali žinoti, kad aš ketina įvesti neigiamą skaičių, kuris gali būti neteisingas. Nes visi žino, galėčiau įvesti teigiamą skaičių, kuris yra visiškai neteisingas. Taigi aš įsivaizduoju, jei aš įvesti neigiamus 1 žmonių kambaryje, segmentavimas gedimą. Taigi, Gerai. Taigi leiskite pridėti atgal tik laikyti jį, ką jis iš pradžių buvo. Todėl įsitikinkite, amžių. Dabar, jei aš noriu pabandyti neigiamas age-- tad sako, kad yra penki žmonės į kambarį. Amžius asmuo numeris vienas yra neigiamas 4, žmogus tris yra lygus nuliui, asmuo three-- Gerai. Taigi čia, per metus nuo dabar, asmens numeris vienas bus neigiamas 3 metai. Taigi tikriausiai nėra prasmės. Bet tai tik todėl, kad ieško tuo kodu visi mes darome prašo GetInt. Dabar, jei mes būtume turėjo GetPositiveInt funkcija arba mes tiesiog padarė Rūšiuoti to paties, o kilpa ten, tada tai veiks puikiai baudą. Bet šiuo konkrečiu atveju, mes tiesiog ne atsitiktų būti tvarkyti neigiamas reikšmes. Visi kiti klausimai apie matricas? GERAI. Taigi dabar mes matėme masyvus. Ir mes ketiname reikia naudoti Šis komandų eilutės argumentus. Taigi problema nustatyti two-- Aš žinau, kad daugelis iš jūsų vis dar gali būti darbo problemą, rinkinį vienas, bet problema nustatyti du artėja. Be problema nustatyti du, jūs ketinate reikia bendraujant su stygos, matricos, ir komandinės eilutės argumentai. Taigi, kas yra komandinės eilutės argumentai? Dabar, jūs galite pamatyti žemyn Čia mažai kibinimas už ką yra bus vyksta. Matome int main, INC argc, styginių argv skliausteliuose. Taigi, pirmiausia pabandykime suprasti ką tai bando pasakyti. Dabar Gerai. Taigi komandų eilutėje jums turėtų būti priprasti prie kai kurių iš šių komandų dabar, ir jūs tikriausiai paleisti CD terminale anksčiau. Taigi, jei mes sakome, cd pset1, jūs žinote, kad turėtų būti pakeisti į pset1 kataloge. Dabar pastebėsite, kad jūs niekada parašyta kaip ši programa iki šiol. Kiekviena programa, kad jūs parašiau, Jums būtų paleisti, tarkim, dot velniop Mario, dot velniop gobšus, ir tada ją gali paskatinti jus įėjimo. Dabar, tai ne tai, ką Pakeisti katalogas daro. Paleidus cd, ji neturi sakykite, kuri katalogas norite cd į? Vietoj to, jūs tiesiog pasakyti, CD pset1 ir jis tiesiog eina į pset1 kataloge. Taigi panašiai mes turime kitų pavyzdžių. padaryti labas. Paleidus padaryti, ji neturi sakykite, kuri programa norėtumėte padaryti? Jūs tiesiog pasakyti, ne komandinės eilutės padaryti labas. Perkelti yra dar vienas pavyzdys. Tai vienas mes perstumiant mario.c failą sudaro vieną katalogą. Taigi, dabar mes žinome, su šiame pavyzdyje mes tikrai artimųjų du argumentus. Yra mario.c kaip pirmojo argumento, ir taškas taškas yra antras argumentas. Ir tada, kai paleidžiate padaryti, jums matyti, kad tikrai ilgai komandą line-- kad tikrai ilgai komandą spausdinamos komandų eilutę. Taigi, kad ilgai tai command-- yra tik trumpas jo dalis, bet dabar mes turime tris komandų eilutės argumentai. Dot Dash nulis, labas, ir hello.c. Taigi tai yra komandų eilutės argumentus, argumentai kad jūs artimųjų ne komandinės eilutės taip, kad jis nebūtinai turi būti užklausia kai paleidžiate programą. Būtų varginantis, jei kai jūs paleidote klingsėti jis sakė: "Gerai, kuri program-- kuris failo jūs sudarymo? Hello.c. Kas vėliavos prašau patinka įvesti? brūkšnys o. Ką norėtumėte failas turi būti vadinama? Labas. Ne, jūs tiesiog paleisti klingsėti brūkšnys O sveikinasi hello.c. Taigi Prisiminus tai. Dabar argc-- argc yra argumentas skaičius. Tai iš komandų eilutės numeris argumentai įvesta į komandų eilutę. Na, argv-- techniškai V reiškia vektorių, kuris iš esmės reiškia masyvo. Bet jūs galite ignoruoti tai. Argv-- turime string argv, todėl eilutė argv skliausteliuose. Taigi, tai yra dar vienas forma skliausteliuose jūs dar nematėte anksčiau. Taigi mes matėme laikiklis žymėjimas, kai mes jau sakiau, kaip, styginių -ai lygus Zamyla. ai laikiklis 0 pasiekia simbolių Z. Mes taip pat matėme skliaustų sakėme int amžiaus laikiklis 5. Tai paskelbė apie dydis 5 masyvo. Taigi čia yra versija skliausteliuose mes nematėme anksčiau. Taigi šis styginių argv rūšiuoti, kad būtų visiškai susipažinę kad ji būtų tiesiog eilutė. Dabar skliausteliai rodo , kad tai yra matrica. Taigi styginių argv laikikliai priemonės kad argv yra eilučių masyvas. Dabar techniškai eilutė yra simbolių masyvas. Taigi tai dabar masyvas kurio simbolių masyvo. Bet tai daug lengviau galvoti apie tai kaip tik eilučių masyvas. Tad kodėl gali skliausteliuose būti tuščias? Kaip, kodėl gi ne mes galime pasakyti, laikiklis 5, laikiklis n? Taip. Taip. Mes nežinome, kiek ten įėjimai bus. Taigi, jei pažvelgsime į klingsėti pavyzdžiui, tarkim klingsėti brūkšnys O Hello hello.c. Šiuo konkrečiu atveju, yra atsitikti būti trys komandinės eilutės argumentai. Ir taip brackets-- matysime per sekundę nebūtų trys. Tai techniškai būtų keturi. Bet skliausteliuose, mes norėtume tarkim, yra trys. Bet dabar, jei mes pažvelgė kelyje mario.c dot dot, laikikliai mes norime įdėti du jų. Ir yra daug komandų daug, kad turėti kintamąjį skaičių komandų eilutės argumentus. Taigi, ką tai versija laikiklis notacija rodo yra tai, kad argv yra eilučių masyvas. Bet mes nežinome, kiek įsipareigojimų yra toje masyvo. Ir kaip mes tada žinote, kaip daug įsipareigojimų yra masyve? Štai visa esmė argc. argc pasakoja mums, kaip ilgai argv yra. Taigi paskutinis dalykas, išlaikyti omenyje tai, kad techniškai, pati komanda skaičiuoja kaip vieną iš komandinės eilutės argumentai. Taigi cd pset1, yra du komandų eilutės argumentai. Pats programa, CD, tada faktinis argumentas dalis, pset1. Bet programa, kuri jums parašiau šiol turėjo vieną komandinės eilutės argument-- tašką slash Mario. Tai yra vienintelis komandinės eilutės argumentas. Taigi dabar žiūri klingsėti brūkšnys O sveikinasi hello.c. Taigi, kas yra argc? 4. Taigi argc yra 4. Klingsėti, todėl argv laikiklis 0 yra žvangėjimas. argv laikiklis 1 yra brūkšnys 0. argv laikiklis 2 yra labas, ir argv laikiklis 3 yra hello.c. Gerai, kad klausimai dėl šio, tada mes pažvelgti į kai programin pavyzdžių. GERAI. Taigi, mes priimsime hello3.c išvaizdą. Taigi tai turėtų būti susipažinę nuo vienas iš pirmųjų c pavyzdžių mes turėjome kur mes tiesiog pasakyti, labas pasaulis, bet dabar tai yra bendresnio pobūdžio. Taigi čia mes saying hello % s Backslash N argv laikiklis 1. Notice-- todėl Iki šio taško, tai yra ką mano šablonas failas atrodė. Turėjau int main (void), ir tada aš padaryti kažką pagrindinės funkcijos. Dabar vietoj to, kai mes pradėsime spręsti su komandų eilutės argumentus, turime narė A skirtingos formos pagrindinis. Taigi žiūri hello3 Vėlgi, pagrindinis vyksta imtis du argumentus now-- int argc, iš komandinės eilutės argumentai numeris ir styginių argv skliausteliuose, faktinis įsipareigojimų įvesta į komandų eilutę. Taigi, aš ruošiuosi pakeisti, kad Šablonas atspindėti šį faktą. Dabar, kai rašote programa, jei jūs neturite reikia imtis kokių nors komandų eilutės argumentai, tada tiesiog naudokite int main (void). Bet dabar, kai rašote komandų eilutės argumentas programas, kurios jūs ketinate daryti dėl problemos nustatyti two-- Taigi dabar, kad jūs naudojate programos, kad reikia imtis komandų eilutės argumentai, Jums reikia turėti Pagrindinis šios formos. Taigi here-- tai yra didelis naudojimas iš komandinės eilutės argumentas. Taigi spausdinant argv 1. Gerai, kad tegul kaupia ir paleisti šią programą. Padaryti hello3. Kaupia. Dot velniop hello3. Ir tarkim, "Rob". Sveiki Robas. Jei aš sakau, "Labas Maria," Labas Maria. Sveiki Marija. Hannah vis sako: "labas Marija ", nes aš nesu ką nors su mūsų argv 2. Argv 2 dabar būtų "Ona". Argc būtų 3. Ką daryti, jei aš tai padariau? Taigi Sveiki null. Jis trumpai užsiminė apie tai, kad techniškai, GetString gali grįžti niekinis, bet mes gauti daug daugiau į tai, kas null iš tikrųjų yra. Bet jį kaip materijos Tai, kad paprastai yra blogai. Mes padarėme kažką blogo, jei tai spausdinant "labas null." Ir priežastis, kodėl mes padarėme kažkas negerai is-- gerai, kai išbėgau dot velniop hello3, argc buvo 1. Taigi tai reiškia, kad iš argv ilgis buvo 1. Jei masyvas yra Ilgio 1 vienintelis galioja indeksas yra lygus nuliui. Ir todėl čia argv 1 yra už šio masyvo asortimentas. Jis buvo panašus į anksčiau, kai aš bandžiau saugoti 6 ribų masyvo pabaigos. Taigi aš bandau pasiekti kažką ne iš argv skaičiaus, ir mes vis niekinis. Taigi geriau versija tai, pagerėjimas, aiškiai tikrinti argc. Taigi, jei argc lygus 2, tai reiškia, kad mes bėgo kažkas panašaus taškų velniop hello3 Rob. Ir tai bus print "Sveikas Rob". Jei argc nėra lygi 2, tada ji tiesiog vyksta ignoruoti, ką jūs įtraukėte komandinės eilutės argumentas kaip komandų eilutės argumentus. Arba, jei tu negali įdėti bet ne visi, tai tik ketina ignoruoti, kad ir tiesiog pasakyti, "Labas." Taigi sudarant tai. Padaryti hello4. Ir veikia hello4. Veikia jis tokiu būdu, Ką reikia atspausdinti? "Labas." Labas. Ką apie hello4 Rob? "Labas Rob". Ir, pagaliau, Hello Robas Marija yra tik "labas Jūs" vėl nes tu tikrai ne įvesti kažkas, kad jis buvo tikėtasi. Jūs įvedėte daugiau pavadinimų nei jis galėtų dirbti, todėl tiesiog nenurodžius Hello jums elgesį. Taigi klausimų apie tai? Arba komandų eilutės argumentai? Gerai, kad atsižvelgiant ne išvaizdą pora daugiau pavyzdžių, naudojant komandų eilutės arguments-- pirmas mes argv brūkšnys 1 dot C. Taigi komentarai atiduoti tai, ką Ši programa turėtų daryti. Tačiau pastebėti now-- tai už kilpos, ši tiksliai atitinka modelį Sakiau anksčiau. Mes tiesiog atsitikti, kad naudojant argc vietoj n. Dabar argc yra tikrai n. Tai iš argv masyvo ilgį. Taigi yra Iteracja per argv masyvas printf-mas kiekvieną argv vertę. Taigi, jei aš padaryti tai. Padaryti argv 1. Jis kaupia. Dot velniop argv 1. Tiesiog veikia tai, spausdina dot velniop argv 1 nes tai buvo vienintelis komandų eilutės argument-- programos pavadinimą. Visada bus least-- argc negali būti mažesnis už vieną, nes visada bus bent būti programos pavadinimas paleisti. Taigi argv 1 Robas bus atspausdinti argv 1 ir tada ant naujos linijos "Rob". Taigi, pirmoje iteracijos Šios kilpos, i 0. Argv 0 yra programos pavadinimas. Dot velniop argv 1. Ir tada argv 1 yra mano pirmasis komandinės eilutės argumentas, kuris yra Robas. Šiuo metu, mes lygus argc. Mes išeiti iš kilpos ir baigsime. Taigi tai bus dirbti savavališkai skaičius komandų eilutės argumentus. Atkreipkite dėmesį, jis spausdina argv 0, argv 1, argv 2, argv 3, argv 4. Ir nėra argv 5. argc yra lygus 5. Tad argc-- ne i lygus 5, laužome iš kilpos. GERAI. Taigi klausimus, kad kol mes ieškoti sudėtingesnio pavyzdžiui? Taigi argv 2. Gerai. Taigi mes vis dar spausdinti komandų eilutės argumentai. Bet dabar mes turime pastebėti, įdėtos į kilpą. Taigi, kas tai daro? Taigi pirmas kilpa daro ką ji darė anksčiau. Mes vis dar kilpų per kiekviena komandų eilutės argumentas, bet dabar šis antrasis loop-- mes Taip pat matė kažką panašaus anksčiau. Kai jis buvo Iteracja per Zamyla spausdinti Z-A-M-Y-L-A. Taigi, tai antroji kilpa int j lygi 0, n lygus strlen iš argv laikiklio i. Tad pirmasis galvoti the-- tegul pasivaikščioti. Pagalvokime, ką kompiuteris būtų daryti, jei išbėgau šią programą, kaip tik dot slash argv Dash 2. Taigi, jei išbėgau šį kodą, tada argc bus lygus 1. Ir styginių argv-- yra tik bus vienas indeksas argv, ir tai bus lygus dot slash argv 2-- programos pavadinimą. Gerai, kad dabar aš lygus 0, I mažiau nei 1, i plius plius int j lygus 0, n yra lygus strlen iš argv laikiklio 0, todėl pirmasis iteracijos šio kilpa. argv laikiklis 0 yra taškas velniop argv 2. Taigi, kas yra tos eilutės ilgis? Na, dot velniop A-R-G-V Dash 2. Taigi strlen to bus 8. Taigi j lygus 0, n lygus 8. Tol, kol j yra mažiau nei 8, J ++. Ir kad mes ketiname būti spausdinti vieną simbolį, kuris yra argv laikiklis i laikiklis j. Taigi vienintelis i yra lygus nuliui. Mes vis dar turime tik vieną komandinės eilutės argumentas. Tokiu pirmajam iteracijos iš už kilpos, mes bus spausdinimas argv laikiklis 0 laikiklis 0. Ir tada j ketina prieaugio. Ir mes ketiname spausdinti argv laikiklis 0 laikiklis 1. Ir tada argv laikiklis 0 laikiklio 2. Taigi tai yra mūsų pirmasis susitikimas multi-dimensional matricos. Prisiminti anksčiau, kad pasakiau kad argv yra techniškai AN masyvų simbolių masyvas. Taigi čia, jei aš sakė kažkas panašaus styginių -ai lygus argv kronšteiną i, ir tada aš pasakiau, S laikiklis j, tai būtų įvykdyti tą patį. Dabar, jūs matęs -ai laikiklis j. Tai tiesiog prisijungti prie j-osios šio pobūdžio eilutę. Taigi su tuo, mes gaunate j-osios pobūdis i-ojo argv. Taigi, kas turėtų tai galiausiai produkcijos? Padaryti argv 2. Jis kaupia. Dot velniop argv 2. "Robas Marija Ona", ir duoti mums šiek tiek kambarį. Taigi matome, kad tai išvedė dot savo linijos ir velniop savo linijos ir ant savo linija. Tai spausdinti kiekvieną individualių savybių Kiekvieno komandinės eilutės argumentas. Ir tada tarp jų, dėl šios naujos linijos mes spausdinti žemyn čia, tarp jų jis bus išspausdinti naują eilutę. Taigi, šis yra panašus į išankstinis argv brūkšnys 1, kuris spausdinamas kiekvieno komandinės eilutės argumentas, bet dabar mes spausdinti komandų eilutės argumentai ir tada Iteracja per kiekvieną charakteris kiekvieno komandinės eilutės argumentas gauti šią produkciją. GERAI? Taigi klausimų apie tai? Vienas dalykas, reikia pažymėti, kad komandų eilutės arguments-- todėl jie yra atskirti tarpais, kaip Jums natūraliai tikėtis, kad jie būtų. Taigi eilutė gali turėti tarpų. Tai nėra itin svarbus, bet jei aš norėjau trečiąją komandinės eilutės argumentas turėti erdvę į jį, tada aš Galima sakyti kažką panašaus į tai. GERAI? Taigi, tai dabar dar tik trys komandų eilutės arguments-- gerai 4. Dot velniop argv Dash 2, Robas, Marija ir Ona "Bloomberg". GERAI. Klausimai apie tai? Nėra nieko ypatinga apie kosmoso pobūdžio. Tai tik atsitinka būti, kad komandų eilutės gydo tarpo simbolį kaip, kaip jūs atskirkite argumentą. Gerai. Taigi, problemą, two-- jūs ketinate būti žiūri paslaptis rakto kriptografija. Taigi, panašus į tą, pavyzdžiui mes matėme nuo A Christmas Story, jūs ketinate būti įgyvendinti kai kuriuos algoritmai, kad atsižvelgiant pranešimą, jūs ketinate būti suteikta galimybė šifruoti tą pranešimą kad tik kas nors su tuo paslaptimi raktas, su tuo dekoderio žiedas, turėtų būti suteikta galimybė iššifruoti. Taip, kad yra standartinis leidimas. Jūs ketinate būti įgyvendinti dvi skirtingos versijos. Jei atsitiktų, kad pažvelgti ne hakeris "versija dabar mes ketiname suteikti esi kaip tai eilutė, kuri atstovauja šifruotą slaptažodį. Taigi jūsų tikslas yra išsiaiškinti kas iššifruojama slaptažodis. Dabar tai yra iš tikrųjų how slaptažodžiai yra saugomi kompiuterių daug, ir tai tik parduotuvėse šį Atsitiktinės eilutė simbolių. Jūs turite išsiaiškinti, kaip gauti iš šio atsitiktinių eilutę simbolių ką originalus slaptažodis. Ir, galiausiai, po to, kai šis Problema rinkinys, jūs turėtumėte galėtų suprasti, ką tai reiškia. Taigi jūs išmoksite kaip iššifruoti šis atsitiktinių eilutę rūšiuoti. Panašiai, jei jūs prisimenate iš savaitę 0, galbūt mačiau šį URL. Ir jums turėtų būti suteikta galimybė iššifruoti tai, galų gale. Jums gali būti nepatenkintas, kai jūs iššifruoti jį ir paspauskite ant nuorodos. Gerai. Štai jį šiandien. Taigi jus pamatyti kitą savaitę! [Elektroninės muzikos žaisti]