[Mūzikas atskaņošanai] DAVID Malan: Labi. Tas ir CS50, un šis ir beigu 2. nedēļā. Es esmu tik žēl es nevarēju būt tur ar jums visiem šodien, bet tu esi ļoti labās rokās. Atļaujiet man iepazīstināt CS50 pašas Rob Bowden. ROB Bowden: Un, protams, tad mums ir pasmieties par to, ka viņš mums atsūtīja vertikāla video un parādīt citiem. [Video atskaņošana] [Mūzikas atskaņošanai] [TREPJU PAKĀPIENI] -Šo Video nebija ir jāskatās šādā veidā. Tas būtu bijis iespējams novērst. Say Nē, lai vertikālās video. -Vertical Video notikt, ja jūs Turiet kamera nepareizi. Jūsu video beigsies izskatīties crap. - [GRUNT] -Ir Vairāk un vairāk cilvēku atkarīgi padarīt vertikālās video katru dienu. Tas nav kreka vai neko, bet tas joprojām ir ļoti slikti. Ir divi dažādi cilvēki, kas ir nomocīts ar VVS. Pirmā grupa izturas gan pret video viņi šaut kā bildes. Tie nenozīmē nekādu kaitējumu. Viņi vienkārši nesaprot, ka kamēr jūs varat vērsties attēlu, Jūs nevarat īsti pārvērst video. [CRASH] - [MONKEY SOUNDS] -The Cita grupa ir cilvēki kas nedod [Bleep]. -Vertical Video sindroms ir bīstama. Kinofilma ir vienmēr ir bijis horizontāli. Televizori ir horizontāli. Datoru ekrāni ir horizontāli. Tautas acis ir horizontāli. Mums nav būvēts, lai skatīties vertikālos video. -Es Mīlu vertikālos video. -Nobody Rūpējas par jums. -Ja Šī problēma ir Netiekot, jūs pārāk sāks rādīt četrus videoklipus uzreiz tikai, lai saglabātu joslas platumu. -Letterboxed Vertikālie video būtu būt lielumu pastmarka. -Un Tas izplatīsies visur. Filma ekrāni ir vienmēr ir bijis horizontāli. Ja vertikālās video kļūt pieņemts, kinoteātriem būs garš un izdilis. -Un Visiem kinoteātriem būtu ir, lai saņemtu nojaukta un pārbūvēta. Un, kad tie tika pārbūvēta, Mila Kunis būtu vecs un neglīts. -Birds Būs crash uz tiem un mirst. -We'll Visi iegūt stīvs kakliņi no looking up. -Un Neviens sēdēt priekšējā rindā kādreiz atkal. -George Lucas atkārtoti atbrīvošanas Star Wars again-- izdilis izdevums. -Es Nekad īsti varētu pateikt stāsts, ka es gribēju pateikt. Tas bija lieliska iespēja man eksperimentēt ar jaunu tehnoloģiju. -You're Paraut. -Every Laiks mobilā ierīce tiek lietota, lai ierakstīt video, kārdinājums ir tur. Vienkārši pateikt nē. Pateikt nē George Lucas. Say Nē, lai veco Mila Kunis. Say Nē, lai vertikālās video. -Un Ja jūs redzēt kāds to dara, teiksim, "jūs neesat šaušana šīs tiesības lelli!" [Mūzikas atskaņošanai] [Beigtu atskaņošanu] [Aplausi] [AUDIO OUT] ROB Bowden: --simple forma kriptogrāfiju, kas būtībā ir šifrēšana un atšifrēšana slepeno ziņu. Tātad šeit mums ir ļoti vienkāršs rotaļlietu. Un ideja ir ārējais gredzens rotē ap iekšējo gredzenu. Un jūs varat redzēt, varbūt, ja es tuvinātu in, that-- tas ir grūti redzēt. Bet, piemēram, skaits 1-- labi, ka pārvietots. Skaitlis 1 kartes vēstuli X, skaits 2 kartes uz burta J. Neticami grūti ne izlaist uz priekšu. Vēstule 2 kartes uz J. Number 3 kartes līdz D So ar šo gredzenu jūs varat dot kāds ziņojums 1, 2, 3. Kādu iemeslu dēļ jūs gribu pateikt viņiem XJD. Bet jūs varat dot viņiem daži ziņu par skaitļiem, un tik ilgi, kamēr tie ir šo gredzenu, tie var atšifrēt, ko jūs cenšaties pateikt. Tātad jums var būt redzējis šo Konkrēts piemērs kriptogrāfiju Pirms ja ap Ziemassvētkiem Jūs esat noskatījos Ziemassvētku stāsts. Ja jūs nekad neesmu redzējis tas agrāk, tad vienkārši ieslēgt TBS at burtiski jebkurā laikā Ziemassvētku vakarā, jo viņi vienkārši parādīt to atpakaļ atpakaļ atpakaļ atpakaļ atpakaļ visu dienu. Un attiecīgais video tas ir. [Video atskaņošana] -Be Tas zināms visiem un dažādi ka Ralfs Parker ir šo iecelts Little Orphan Annie Secret Circle un ir tiesības uz visiem apbalvojumus un ieguvumus, kas rodas tiem. Parakstīts Little Orphan Annie. Parakstu Pierre Andre ar tinti! Apbalvojumus un ieguvumi jau deviņu gadu vecumā! [Kliegt no radio] -Nāc šurp. Pieņemsim galā ar to. Man nevajag visu, kas jazz par kontrabandistu un pirātiem. -Listen Rīt naktī ar Secinājumu piedzīvojums Melnās pirāts kuģa. Tagad ir pienācis laiks Annie slepenā ziņa Jo jūs locekļi Secret Circle. Atcerieties, bērni, tikai dalībnieki Annijas Secret Circle var atšifrēt Annie slepeno ziņu. Atcerieties, Annie ir atkarīgs no jums. Iestatiet savu pins uz B2. Šeit ir vēstījums. 12. 11. 2. -Es Esmu manā pirmajā slepenā sanāksmē. -25. 14. 11. 18. 16. OH, Pierre ir liels balss šovakar. Es varētu pateikt, ka šovakar vēstījums bija ļoti svarīgi. -3. 25. Tas ir vēstījums no Annie pati. Atcerieties, ka nav pateikt kāds. -Five Sekundes vēlāk, es esmu vienīgais istabu mājā, kur zēns no deviņiem varētu sēdēt privātumu un atšifrēt. Aha! B! Es devos uz nākamo. E. Pirmais vārds ir "būt." S. Tā nāca vieglāk. U. 25. Tas ir R. -Nāc, Ralphie! Es esmu gotta go! -I'll Būt tiesības uz leju, Ma! Gee sīkšana. T. O. "Noteikti" - pārliecinieties, lai ko? Kas bija Little Orphan Annie cenšas pateikt? Noteikti ko? -Randy Ir ieguvuši iet! Vai jūs, lūdzu, nāk ārā? -Visas Tiesības, mamma! Es būšu taisnība out! Man bija tuvojas tagad. Spriedze bija briesmīga. Kas tas bija? No planētas liktenis var pakārt līdzsvarā! -Ralphie, Randy got iet! -I'll Būt taisnība ārā, lai kliedz skaļi! Gandrīz klāt! Mani pirksti lidoja. Mans prāts bija tērauda lamatas. Katru poru vibrāciju. Tas bija gandrīz skaidrs! Jā. Jā. Jā. Jā. Noteikti dzert savu Ovaltine. Ovaltine? Apaļīgs komerciāla? Dēls kuce. [Beigtu atskaņošanu] ROB Bowden: Tātad tas ir, kā Ovaltine saistīts ar kriptogrāfiju. Būtībā CS50 tikai reklamē Ovaltine, lai mēs varētu būt apaļīgs komerciāls par Ovaltine. Viss kārtībā. Tāpēc tagad aktuālā datorzinātnes. Atcerieties, pirmdien mēs left off niršana dziļāk stīgām. Tātad mums bija darīšana ar virkne "Zamyla." Un mums bija atzīstot tas, ka mēs varam ārstēt "Zamyla" kā rakstzīmju secību. Un atcerieties, ka mēs uzzinājām kronšteins notācija. Tātad, ja tas tika uzglabāti virknē "s", tad ja mēs teicām s kronšteins 0, kas norāda burtu kapitāla Z. Un, ja mēs teicām s kronšteins 1, kas varētu norādīt pirmo mazo burtu A, un tā tālāk līdz -iem grupā 5, kas norāda pēdējā. Tagad atceros, ka garums no šī virkne ir 6, bet indeksi uz virknes ir 0 līdz 5, Z caur ka ilgt. Tātad tagad tas iekļaujas lielāku attēlu no jūsu datora atmiņā, jūsu RAM. Tātad kaut kur programma, kas jūs rādīt jūsu datoru vajag atcerēties Zamyla kaut kur atmiņā. Tātad es varu būt brīvprātīgais? Jā paldies. Un kāds ir tavs vārds? DEAN: Dean. ROB Bowden: Dean? Nice to meet you, dekāns. Lai nāk pār šeit, un mēs esam nāksies zīmējot mūsu jaukā švītīgs izkārtojumu atmiņas. Tagad es vēlētos domāt par atmiņas kā vienu garu strēmeli baitu, bet tikai displeja nolūkos mēs vienkārši no kreisās uz labo, augšas uz leju. LABI? Tāpēc es esmu gatavojas parādīt program-- Getstrings.c. Un tā tas viss programma darot pieprasa četras stīgas no lietotāja ar GetString un tad drukāšana neatkarīgi ka pirmā rinda ievadīta bija. Mēs ignorējot divi caur četriem. LABI. Tātad vairāk nekā šeit now-- kad Es pirmo reizi pieprasījums s1. Tātad jums ir dators. Un jūs īsteno GetString. Tātad jūs pieprasīt virknes no mani, un es saku, OK, dekāns. Dodiet virkni "Dean". Tātad kaut kur atmiņā vajag atcerēties "Dean". Tātad uzrakstiet to atmiņā kaut kur. Perfect. LABI. Tāpēc tagad mēs esam S2. Un s2 būs lūgums GetString. Tāpēc es esmu gatavojas ienākt virkni. Es esmu gatavojas ienākt "Hannah." Tātad ievadiet "Hannah" kaut kur atmiņā. Jā. A-H. Labi, tāpēc tagad s3. Un tas būs vēl viens pieprasīt GetString. Un tāpēc tagad ieiet "Maria". Viss kārtībā. Un tad tur ir viens pēdējais lūgums GetString, S4. Tātad, es nezinu. Kā par mums iet ar antidisestablishmentarianism. Tātad ievadiet ka atmiņā. Jā. Tik vienkārši darīt "Rob." LABI. Tāpēc tagad explain-- kāpēc darīja jūs atstāt šo telpu? Kāpēc jums ir tukšu kosmosa šeit, šeit un šeit? Jā. Tāpēc ievērosiet, kad es iet drukāt s1-- tāpēc, ja mēs bija "Hannah" running līdz pat blakus "Dean" kā mēs zinām, kad string "Dean" beidzas? Tātad drukāšanas virknes s1, var būt tikko iespiests "DeanHannahMariaRob" ja tas nav nekādas jausmas no tā, kad "Dean" faktiski beidzas. Viss kārtībā. Tātad atmiņā kā mēs faktiski pārstāvēt šo galu string ir ar slīpsvītru nulles. Tātad šī telpa ir tieši tas, ko mēs vēlējāmies. Tas būtu slīpsvītru nulle. Tas būs slīpsvītru nulle, un šī būs slīpsvītru nulle. Un jūs varat būt pasakains balvu par to, ka ideāls brīvprātīgais. Veikt stresa bumbu! LABI. Tātad šis raksturs slīpsvītra nulle ir kā mēs norāda beigas virkne. Tas ir kā tad, kad kāds dota programma vēlas izdrukāt virkni, tas how-- Atcerieties, mēs uzzinājām strlen funkciju pagājušajā nedēļā? String garums? Tas ir, kā virknes garums ir spējīgs noteikt, cik ilgi virkne ir. Tas tikai tur atkārtojot pa burtiem līdz tas atrod slīpsvītru nulles raksturs. Tātad svarīga lieta, lai realizētu par slīpsvītru nulles raksturs tas ir pārstāvēta visu nullēm bitos. Tā paziņo, ka tas ir atšķirīgs no nulles raksturs. Tātad nulle raksturs, ja jūs atceraties piemērā, ka viņš deva beigās Lekciju kur varoņi karti kuri paredzēti, piemēram, kapitāla A kartēs 65. Mazie burti uz kartes līdz 97. Mazie b būtu 98. Tātad skaits 0 kartes kuri paredzēti, man nav zināt off augšpusē manu galvu. 44 vai 45. Kaut kur šajā reģionā. Tātad raksturs 0 ir faktiskais skaits. Bet reversā slīpsvītra nulle kartes uz visiem nulles bitiem. Tātad tur ir atšķirība starp slīpsvītru nulles, ko mēs saucam par null terminators. Tur ir atšķirība starp slīpsvītru nulle un raksturs nulle. Viss kārtībā. Tātad runā mazliet vairāk par stīgām. Tātad mēs redzam šeit tas ir, kā tas būtu izklāstīts atmiņā. Tātad šī ideja stīgām kā secību no characters-- tā oficiālā dators sciency termins secība ir masīvs. Tātad mēs to sauktu virkni masīvs rakstzīmes. Un tur ir tiešām citi dati veidi, ka mēs varam veikt masīvus no. Tātad, lai motivētu šo, apskatīt piemēru. Mēs to saucam ages0.c es ņemšu kopēt un ielīmēt mūsu veidni. LABI. Tātad šajā programmā, ko mēs gribu darīt, ir greifers vecumu Trīs studentu kursa. Tātad mēs zinām, int age-- un tagad es esmu gatavojas teikt 0. Lai jūs varētu vēlēties, lai teikt age1, bet mērķiem mēs redzēsim ļoti drīz, Es saku int age0 vienāds GetInt. Tātad pašā aicinājumu uz GetInt ka mēs esam, izmantojot I nav gadās būt pamudinot sakot, "dod man gadu vecumu." Bet tikai to pieprasa. Un age1 vienāds GetInt. Un int age2 vienāds GetInt. Tātad, atkal trīs studenti, bet Galu galā mainīgās indeksi Ir age0 caur age2. LABI. Tātad šī programma darīs visu, mēs gribam ar age0, age1 un age2, bet šī programma galu galā darbojas trīs studenti. LABI. Tāpēc tagad notiks, ja es gribu četri skolēni? Nu, es esmu nāksies doties atpakaļ manā kodu, mainīt komentāru, un tagad mums ir int age3 vienāds GetInt. LABI. Tātad, kas redz problēmu šeit? Kāda ir problēma ar šāda veida setup? Jā. Jā. Tātad mēs esam radot mainīgs katram studentam. Tagad tas darbojas, bet galu galā, ko tad, ja es tagad saka: "Es gribu, lai greifers vecumu astoņi studenti vai 16 studenti vai tomēr daudzi studenti simtiem studentu pilsētā CS50 vai tūkstošiem studentiem par universitātes pilsētiņā vai miljardiem cilvēku pasaulē? Tātad galu galā tas nav ilgtspējīgs. Jebkurā laikā jūs redzat sevi kopēšana un ielīmējot kods, piemēram, tas, Jums vajadzētu vispār justies ka ir labāks veids. Tātad, tas ir, ja mēs ieviest masīvs deklarācija. Tātad, kad jūs deklarēt masīvu, tas ir tas, ko vispārējā formāts gatavojas izskatās. Mēs ejam, lai teikt veidu. un tad mēs ejam uz dot nosaukumu šī masīva, tāpat kā mēs definējam kādu konkrētu mainīgo. Un tad beidzot mēs izmantojam Tas kronšteins notācija vēlreiz bet citā kontekstā no kā mēs to izmantot agrāk. Tātad šeit tas izskatās normāls mainīgais atzīt, ka mēs esam redzējuši. Tāpēc mēs esam redzējuši int x semikolu pirms. Nu tagad mēs varētu redzēt kaut ko piemēram, int x iekavās 5. Un liekot šo ideju pārvērta GetInt programma, ka mēs have-- lai mēs varētu īstenot šis tādā pašā veidā. Teiksim CS mums ir tendence izmantot n kā skaita kaut ko. Tātad šeit mēs ejam uzglabāt četrus skolēnus. Un tagad mēs varam teikt int vecums kronšteins N- nav gluži iegūt yet-- deklarēt masīvu četriem studentiem. Tātad, kā tas izskatīsies atmiņa būs līdzīgs šim. Notīrīt šo. Un mēs esam nāksies kaut kur in memory-- es nolikšu tas tur augšā. Tātad kaut kur atmiņā. Viens divi trīs Četri. Mums ir četri veseli skaitļi pēc kārtas Šim masīva četru veselu skaitļu. Tātad, šobrīd, kāda ir izmērs no viena no šiem kastes? Jā. Tas ir četri baiti. Tas ir 32 biti. Tāpēc tagad tas ir atšķirīgs no masīva, kas mums redzēja Agrāk, masīvs rakstzīmes. Ar virkni katrā kastē bija tikai viens baits, jo raksturs ir tikai viens baits. Bet ar masīvu veselus skaitļus, katrs kaste ir četri baiti, lai lai ietilptu visu skaitli. Tātad, tas ir tas, ko masīvs četri Ints izskatās. Un tad atpakaļ uz kodu. Tagad mēs vēlamies, lai faktiski veikals skaitļu uz šī masīva. Tāpēc tagad tas ir ļoti, ļoti, ļoti kopējs modelis, kas būs kādā brīdī kļūt muskuļu atmiņu. Tātad int i ir vienāds ar 0. i mazāk nekā n. i plus plus. Vecuma grupā i vienāds GetInt. Tātad šis cilpas, šis formāts, Jums vajadzētu saņemt ļoti pieraduši. Tātad tas parasti ir, kā mēs atkārtot pār gandrīz jebkuru masīvs. Tagad paziņojums šāda veida izskaidro, kāpēc no sākuma mums nebija par cilpas iet par int i ir vienāds ar 1, i ir mazāks par vai vienāds ar 10. Iemesls ir tas, ka, sākot no nulle padara šo darbu arī ar masīviem. Tātad masīvi ir nulle indeksētas. Ja šis masīvs ir garums 4, indeksi ir no 0 līdz 3. Tātad ar pirmo atkārtojuma šīs cilpas mēs spēsim tikt nosakot vecuma kronšteins 0 vienāds ar aicinājumu uz GetInt. Tātad, neatkarīgi Man gadījās ienākt pie klaviatūras. Otrajā pass, mēs esam nosakot age1 vienāds ar GetInt. Treškārt pass, age2. Final pass age3. Tātad, ja pirmajā pass no cilpas Es ievadiet numuru 4 pie klaviatūras, tad mēs ievietotu 4 šeit. Ja otrajā pass es ievadu 50, mēs likts 50 šeit. Trešajā caurlaide es varētu ievadiet negatīvs 1, negatīvs 1, un tad beidzot, ja es ieiet 0-- un tagad atceros, ka tas bija rādītājs trīs. Kad mēs cilpa muguras, i ir tiks palielināts līdz 4. i ir vairs nav mazāks par N, kas ir 4. Un mēs izkļūt no cilpas. Tātad, ko varētu būt nepareizi ar šo? [Dzirdams]? Mērķauditorija: [dzirdams] Jā. Tātad masīvs ir tikai četras vietas, kas nozīmē, kā indeksiem no 0 līdz 3. Tātad, ja tas tā būtu, es būtu uzņemties vērtību 4. kādā brīdī. vecuma grupā 4 tiks nosakot neatkarīgi notiek, ir vairāk nekā šeit ar to, kas man jāsaka, ievadiet 6. Ka būšu nosakot to 6. Bet mēs nezinām, kas ir vairāk nekā šeit. Tas nav atmiņa ka mums bija piekļuve. Tātad, ja jūs atceraties no iepriekšējā lekcija, viņš izdrukāšana vērtības Zamyla un kādā brīdī viņš skāra šo segmentāciju vaina. Tātad jums būs iespējams redzēt daudzi segmentācijas kļūdas, kā jūs īstenotu dažus no problēmu kopu. Bet tas ir viens no veidiem, kā Jūs varat saskarties ar segmentāciju vaina, kad jūs sākat piekļūstot atmiņa tādā veidā, ka jums nevajadzētu būt. Tāpēc mums nebija pieejami Šī vieta un tas ir bug. Tātad šis ir labāks. Tagad vēl ir mazs problēma ar šo kodu. Un tas būtībā, ka mēs esam joprojām iestrēdzis pie četriem skolēniem. Tagad, ja es vēlos izmantot astoņus studentus, OK. Tas nav tik liels darījumu. Es varu iet, mainīt komentēt, un mainīt n. Tagad tas darbosies ar astoņiem skolēniem. Ja es sastādīt šo un palaist Tas, tas parādīs me-- tas lūgs veselus skaitļus par astoņiem studenti un tas būs tikai darbs. Bet tas ir mazāk nekā ideāls, lai nepieciešams recompile programmai katru reizi Es vēlos mainīt studentu skaitu ka es gribu, lai ievadītu vecums. Tātad gala uzlabojums Tas, kā mēs redzēsim here-- mēs esam gatavojas lūgt cilvēku skaitu. Šeit mums ir vairākas cilvēku istabām vai jebkuri vecumu cilvēkiem istabā. Bet mēs ejam, lai pieprasītu numuru cilvēku telpā no lietotāja. Tātad šī ir tieši tā pati do-kamēr cilpa, kas mēs esam redzējuši iepriekš. Tas ir tieši tas pats do-kamēr cilpa, kas jums var īstenošanas problēmu kopumu. Tik ilgi, kamēr viņi ievadīšana n ir mazāks par 1, Tātad tur ir nokļuvis būt vismaz viens cilvēks telpā. Tik ilgi, kamēr viņi ievadīšana n ir mazāks par 1, tad mēs spēsim saglabāt jautā vēlreiz. Ievadiet numuru cilvēku telpā. Tagad, kad mums ir numurs no cilvēkiem room-- tāpēc es varētu ienākt, ka tur ir 200 cilvēki šajā telpā. Tad noteikti šeit mēs esam gatavojas nākt un deklarēt masīvu izmēru 200. Mēs esam paziņojot, masīva, kas ir pietiekami liela, lai noturētu 200 vecumu. Braucot uz leju, tas ir cilpa ka jūs saņemsiet ļoti pieraduši. Tātad atkārtojot pār šo masīvu, piešķirot katrai vietai šajā masīvā vesels skaitlis, un tad galu galā šeit mēs esam vienkārši kļūst piemēru atkārtojot pār šo masīvu, nevis piešķirt vērtības, bet, lai piekļūtu vērtības. Tātad, nekā šeit mēs redzam, ka mums saka, gadu no tagad, persona% i būs% i gadi, kur pirmais% i ir i plus 1. Tāpēc es ir šis rādītājs mainīgs. Un otrais% i būs būt vērtība glabājas vecumu masīvā plus 1. Tātad šis plus 1 ir tikai tāpēc, ka mēs esam saying-- šo plus 1, vecumu i plus 1. Šis plus 1 ir tikai tāpēc, ka mēs esam sakot, gadu no tagad personas būs šis vecs. Tātad, kāpēc tas i plus 1? Kāpēc mums ir plus 1 tur? Jā. Jā. Tāpēc atcerieties bloki ir nulle indeksēti. Tātad, ja mēs drukājat šo out kāds vienkārši lasīt produkciju, tad droši vien viņi vēlas redzēt kaut ko piemēram, personai vienā, persona numur viens, būs 20 gadus vecs. Persona numur divi būs 15 gadus vecs. Viņi labprātāk neredz personu skaitlis nulle ir 15 gadus vecs. Tātad apkopojot šo un tikai redzēt to, ko tas izskatās like-- Izveidot dažas vietas. Padarīt AGES apkopo. Running vecumu. Mēs redzam cilvēku skaits telpā. Tāpēc es saku ka ir trīs cilvēki istabā. Vecums persona numur viens, teiksim 15, 20, 25. Un tagad es jums saku gadā no tagad tie būs 16, 21, 26. Let 's redzēt, ka tas strādā ar N, kas nav vienāds ar 3. Tātad, ja es saku cilvēku skaits ir 5, viens, divi, trīs, divi, viens, pēc gada tie būs divi, trīs, Četri, trīs, divus gadus vecs. Tāpēc es varētu tikpat viegli ir n ir 10,000. Tagad es būs sēž šeit diezgan kamēr ievadot vecumu, bet tas darbojas. Tāpēc tagad atmiņā kaut kur mēs ir masīvs izmēru 10000, tā galu galā 40000 baiti, jo ir četri baiti katram no šiem veseli skaitļi. Tātad tur ir masīvs izmērs 10,000 kur mēs varam uzglabāt vecumu tiem 10000 cilvēku. Viss kārtībā. Jautājumi par kādu no šo? Jā. Ko darīt, ja jums deva negatīvu skaitli? Let 's redzēt, kas notiek. Tātad šajā konkrētajā case-- numuru cilvēku telpā, negatīvas. Tā noraidīja, ka, jo šeit mēs notikt lai apstrādes faktu, ka, ja n ir mazāk nekā vienu mēs ejam lūgt vēlreiz. Ja jūs mēģināt deklarēt masīvs negatīvu lielumu, tas parasti nedarbojas. Tātad pamēģināsim. Pieņemsim ignorēt neatkarīgi vērtība tie ieeja n un tikai teikt int vecumā no negatīvas. Let 's redzēt, ja tas vēl apkopo. Es neesmu pārliecināts. Nē. Tātad vecumu tiek deklarēta kā masīvs ar negatīvu lielumu. Tātad sākumā tā atzīst masīvs nevar būt negatīvās lieluma un to noraida. Tagad, ja mēs neesam galā šis do-kamēr cilpa pareizi, ja mēs nebijām pārbaude ja n ir mazāks nekā 1-- teiksim mēs vienkārši nebija tas vispār un tā vietā mēs vienkārši paķert vesels skaitlis. Nav svarīgi, kas tas ir skaitlis, mēs deklarēt masīvu šo lielumu. Tātad kompilators nevar iespējams sūdzēties tagad. Ja es sastādīt this-- tāpēc tas nevar sūdzēties, jo nevar zināt, ka es esmu gatavojas ienākt negatīvu skaitli, kas varētu būt par spēkā neesošu. Attiecībā uz visiem tā zina, ka es varētu ievadiet pozitīvu skaitli, kas ir ļoti lietderīga. Tāpēc es iedomāties, ja es ievadu negatīvs 1 cilvēki istabā, segmentāciju vaina. Tā ok. Tātad pieņemsim pievienot šo atpakaļ tikai saglabāt to, kas tas bija sākotnēji. Tātad, lai vecumu. Tagad, ja es gribu izmēģināt negatīvs age-- tāpēc pieņemsim teikt, ka ir pieci cilvēki istabā. Vecums persona numur viens ir negatīvs 4, persona triju ir nulle, cilvēks three-- OK. Tātad šeit, gadu no tagad, persona skaits viens būs negatīvs 3 gadi. Tātad, iespējams, nav jēgas. Bet tas ir tikai tāpēc, ka meklē pēc koda viss, ko mēs darām pieprasa GetInt. Tagad, ja mēs būtu bijusi GetPositiveInt funkcija vai mums bija vienkārši darījis kārtot pats, bet cilpa tur lejā, tad tas strādā perfekti labi. Bet šajā konkrētajā gadījumā, mēs vienkārši nav gadās būt apstrādes negatīvas vērtības. Jebkādi citi jautājumi par masīvu? LABI. Tāpēc mēs esam tagad redzējuši bloki. Un mēs spēsim nepieciešams izmantot šis komandrindas argumentus. Tātad problēma ir noteikts two-- Es zinu, ka daudzi no jums vēl varētu strādāt uz problēmu kopumu viens, bet problēma noteikti divi nāk uz augšu. Jo problēma noteikti divi, jūs gatavojas nepieciešams nodarbojas ar virknes, masīvi, un komandrindas argumentus. Tātad, kādi ir komandrindas argumentus? Tagad jūs varat redzēt uz leju šeit maz teaser tieši to, ko ir būs realitāte. Mēs redzam int galvenais, INC argc, stīgu argv iekavās. Tātad vispirms pamēģināsim interpretēt ko tas cenšas pateikt. Tagad, OK. Tātad pie komandrindas jums vajadzētu būt kļūst izmantoti, lai dažas no šīm komandām tagad, un jūs, iespējams palaist cd terminālī pirms. Tātad, ja mēs sakām cd pset1, jūs zināt, ka tas būtu mainās uz pset1 direktorijā. Tagad ievēroju, ka jūs nekad uzrakstījis programmu, piemēram, pirms tam. Katra programma, ka jūs esat rakstiski, jūs varētu palaist, teiksim, dot slīpsvītra Mario, dot slīpsvītra mantkārīgs, un pēc tam to varētu parādīs ievadi. Tagad, tas nav tas, ko mainīt direktoriju dara. Palaižot cd, tas nav, tad saka, kas gadagrāmatas jūs vēlaties, lai cd vērā? Tā vietā, jūs vienkārši pateikt, cd pset1, un tas tikai iet uz pset1 direktorijā. Tātad tāpat mums ir citi piemēri. padarīt sveiki. Palaižot darīt, tā nav, tad saka, kura programma jūs vēlētos darīt? Jūs vienkārši teikt, pie komandrindas padarīt Sveiki. Move ir vēl viens piemērs. Tas viens mēs esam pārvietojot mario.c failu veido vienu direktoriju. Tātad tagad mēs zinām, ar šo piemēru mēs tiešām iet divus argumentus. Tur mario.c kā pirmo argumentu, un dot dot ir otrais arguments. Un tad, kad jūs darbināt darīt, jums redzēt, ka tiešām ilgi komandu line-- ka tiešām ilgi komanda izdrukāts komandrindas. Tā, ka ilgi command-- šis ir tikai īss daļa no tā, bet tagad mums ir trīs komandrindas argumentus. Dot domuzīme nulle, hello, un hello.c. Tātad šie ir komandrindas argumenti, argumenti ka jūs iet pie komandrindas tā, ka tas nav piedāvāts palaižot programmu. Būtu nomākta, ja tad, kad jūs ilga šķindēt tā teica, "Labi, kas program-- kas fails jūs apkopojot? Hello.c. Ko karogi would you vēlētos ienākt? domuzīme o. Ko tu gribētu fails, kas sauc? sveiki. Nē, jūs vienkārši palaist šķindēt domuzīme o sveiks hello.c. Tātad atskatoties šo. Tagad argc-- argc ir arguments skaitu. Tas ir skaits, komandrindas argumenti ievadīta pie komandrindas. Nu, argv-- tehniski V apzīmē vektors, kas būtībā nozīmē, masīvs. Bet jūs varat ignorēt to. Argv-- mums ir string argv, tāpēc string argv iekavās. Tātad šī ir cita veida konsoles neesat redzējis. Tāpēc mēs esam redzējuši kronšteins notācija kad mēs esam teica, piemēram, stīgu s vienāds Zamyla. s kronšteins 0 piekļūst rakstzīmju Z. Mēs esam arī redzējuši kronšteini, kad tie mēs teicām int vecumu stiprinājuma 5. Kas deklarēta masīvs izmēru 5. Tātad, šeit ir versija kronšteini mēs neesam redzējuši. Tātad šāda veida stīgu argv ka būtu pilnīgi pazīstams ka tas būtu vienkārši virkne. Tagad iekavās norādīt ka tas ir masīvs. Tātad stīgu argv kronšteini līdzekļi ka argv ir masīvs stīgas. Tagad tehniski virkne ir masīvs rakstzīmes. Tāpēc tagad tas ir masīvs no masīva rakstzīmes. Bet tas ir daudz vieglāk domāt par Tas, kā tikai masīvs stīgas. Tātad, kāpēc varētu iekavas būt tukša? Tāpat, kāpēc mēs nevaram teikt, kronšteins 5, bracket n? Jā. Jā. Mēs nezinām, cik daudz ieejas tur gribam būt. Tātad, ja mēs skatāmies uz šķindēt piemēram, mēs sakām šķindēt domuzīme o sveiki hello.c. Šajā konkrētajā gadījumā, tur gadās būt trīs komandrindas argumentus. Un tā brackets-- mēs redzēsim Kā otru nebūtu trīs. Tas tehniski būtu četri. Bet kronšteini, mēs būtu teiksim, ir trīs. Bet tagad, ja mēs paskatījās kustībā mario.c dot dot, tad kronšteini mēs vēlamies likt divus tiem. Un tur ir daudz komandu, kas ir mainīgu skaitu komandrindas argumenti. Tātad, kas šajā versijā kronšteins notācija norāda ir tas, ka argv ir masīvs stīgas. Bet mēs nezinām, cik daudz stīgas ir šajā masīvā. Un kā mēs zinām, tad kā daudzas stīgas ir masīva? Tas ir viss punkts argc. argc stāsta, cik ilgi argv ir. Tātad pēdējā lieta, kas jāpatur prāts ir tas, ka, tehniski, komanda pati skaitās kā viens no komandrindas argumentus. Tātad cd pset1, ir divi komandrindas argumentus. Programma pati par sevi, cd, un pēc tam faktiskais arguments daļa no tā, pset1. Jebkura programma, kas jūs esat rakstiski līdz šim ir bijusi viena komandrindas argument-- dot slash Mario. Tas ir vienīgais komandrindas arguments. Tāpēc tagad meklē šķindēt domuzīme o sveiks hello.c. Tātad, kas ir argc? 4. Tātad argc ir 4. Šķindēt, tāpēc argv kronšteins 0 ir šķindēt. argv kronšteins 1 ir domuzīme 0. argv kronšteins 2 ir sveiki, un argv kronšteins 3 ir hello.c. Ok, tāpēc jautājumi par šo, un tad mēs apskatīt dažus programmatiski piemērus. LABI. Tātad mēs ņemšu apskatīt hello3.c. Tātad tas būtu jāzina no viens no pirmajiem c piemēriem mums bija, kur mēs vēlētos teikt, sveiki pasaule, bet tagad tas ir vispārīgāks. Tātad šeit mēs sakām sveiki % s slīpsvītru n argv kronšteins 1. Notice-- tik up līdz šim punktam, tas ir kāds ir mans veidnes fails izskatījās. Man bija int galvenais (spēkā neesošs), un tad es darīt kaut ko galvenā funkcija. Tagad tā vietā, kad mēs sākam darīšana ar komandrindas argumentus, mums ir nepieciešams, lai valstī A atšķirīga forma galvenais. Tātad apskatot hello3 atkal, galvenais ir iet ņemt divus argumentus now-- int argc, No komandrindas argumentus numurs, un stīgu argv iekavās, faktiskais virknes ievadīta pie komandrindas. Tāpēc es esmu gatavojas mainīt, ka veidni, lai atspoguļotu šo faktu. Tagad, kad jūs rakstīt programma, ja jums nav jāveic nekādas komandrindas argumenti, tad tikai izmantot int galvenais (spēkā neesošs). Bet tagad, kad jūs esat rakstiski komandrindas arguments programmas, kas jūs gatavojas darīt, lai problēmu noteikt two-- Tāpēc tagad, ka jūs strādājat programmas, kas ir nepieciešams, lai ņemtu komandrindas argumentus, jums ir galvenais šīs veidlapas. Tātad here-- tas ir liels izmantošana no komandrindas argumentu. Tātad drukāšanas argv 1. Labi, tāpēc pieņemsim sastādīt un palaist šo programmu. Padarīt hello3. Apkopo. Dot slash hello3. Un teiksim, "Rob." Sveiki Rob. Ja es saku, "Sveiki Maria" Hello Maria. Sveiki Maria. Hannah joprojām saka "hello Maria ", jo es neesmu darīt kaut ko ar mūsu argv 2. Argv 2 tagad būtu "Hannah." Argc būtu 3. Ko darīt, ja es tomēr šo? Tātad sveiki null. Viņš īsi pieskārās faktu ka, tehniski, GetString varētu atgriezties null, bet mēs iegūtu vairāk par to, ko null partija patiesībā ir. Bet ņemt to kā jautājums Fakts, ka neviens parasti slikti. Mēs kaut ko nepareizi, ja tas ir drukāšanas "hello null." Un iemesls, mēs darījām kaut kas nepareizi is-- labi, kad es skrēja dot slash hello3, argc bija 1. Tātad tas nozīmē, garums argv bija 1. Ja masīvs ir garuma 1, vienīgais derīgs indekss ir nulle. Un tāpēc šeit argv 1 ir ārpus diapazons šī masīva. Tas bija līdzīgs pirms, kad es mēģināju uzglabāt 6 ārpus beigām masīva. Tāpēc es cenšos piekļūt kaut ko Ārpus argv skaitu, un mēs esam nonākuši null. Tāpēc labāks variants Tas, uzlabojums, nepārprotami pārbaudot argc. Tātad, ja argc vienāds ar 2, tas nozīmē, ka mums bija kaut kas līdzīgs dot slash hello3 Rob. Un tas būs drukāt "hello Rob." Ja argc nav vienāds 2, tad tas ir tikai gatavojas ignorēt ko jūs likts pie komandrindas arguments kā komandrindas argumentus. Vai, ja jums nav likts kāds vispār, tas ir tikai gatavojas ignorēt to un tikai teikt, "Sveiks tu." Tātad, apkopojot šo. Padarīt hello4. Un darbojas hello4. Running to šādā veidā, Ko būtu jādrukā? "Sveiks tu." Sveiks tu. Kas par hello4 Rob? "Hello Rob." Un visbeidzot, sveiki Rob Maria ir tikai "sveiki You" atkal, jo jums nav īsti ieiet kaut ka tas gaidāms. Jums ievadīts vairāk vārdu nekā tā varētu rīkoties, tāpēc tas tikai neizpilde uz Hello jums uzvedība. Tātad jautājumiem par šo? Vai komandrindas argumentus? Labi, tāpēc ņemot apskatīt pāris vairāk piemēru, izmantojot komandrindas arguments-- pirmais mēs esam argv domuzīme 1 dot c. Tātad komentāri atdot to, ko Šī programma būtu jādara. Bet paziņojums now-- šis cilpa, tas atbilst precīzu modeli Es jau teicu iepriekš. Mēs vienkārši gadās būt izmantojot argc nevis n. Tagad argc ir patiešām n. Tā garums argv masīva. Tātad tiek atkārtojot pār argv masīvs printf-ing katru argv vērtību. Tātad, ja es drīkstu to. Padarīt argv 1. Tas apkopo. Dot slash argv 1. Tikai rādīt šo, to izdrukas dot slash argv 1 jo tas bija vienīgais komandrindas argument-- programmas nosaukums. Tur vienmēr būs least-- argc nevar būt mazāks par vienu, jo tur būs vienmēr vismaz būt programmas nosaukums, lai palaistu. Tātad argv 1 Rob izdrukās argv 1 un tad par jaunu līniju "Rob." Tātad pirmajā atkārtojuma šīs cilpas, i ir 0. Argv 0 ir programmas nosaukums. Dot slash argv 1. Un tad argv 1 ir mans pirmais komandrindas arguments, kas ir Rob. Šajā brīdī, mēs esam vienādi ar argc. Mēs izkļūt no cilpas, un mēs esam darījuši. Tātad tas strādās patvaļīgs skaits komandrindas argumentus. Ievērojiet, tas drukā argv 0, argv 1, argv 2, argv 3, argv 4. Un nav argv 5. argc ir vienāds ar 5. Tātad argc-- pie i vienāds 5, mēs izkļūt no cilpas. LABI. Tāpēc jautājumiem par ka, pirms mēs apskatīt sarežģītāku piemēru? Tātad argv 2. Viss kārtībā. Tātad mēs joprojām drukāšanas komandrindas argumentus. Bet tagad paziņojums mums Nested cilpas. Tātad, kas ir tas dara? Tātad pirmais cilpa dara ko tieši tas bija agrāk. Mēs joprojām looping vairāk katrs komandrindas arguments, bet tagad šis otrais loop-- mēs esam arī redzējis kaut kas līdzīgs šim agrāk. Kad viņš bija atkārtojot vairāk Zamyla izdrukāšanu Z-A-M-Y-L-A. Tātad šis otrais cilpa int j vienāds 0, n ir vienāds strlen par argv kronšteinu i. Tātad pieņemsim vispirms domāt par the-- pieņemsim iet cauri. Padomāsim, ko dators būtu darīt, ja es skrēja šo programmu, kā tikai dot slash argv Dash 2. Tātad, ja es skrēja šo kodu, tad argc būs vienāds ar 1. Un stīgu argv-- tur ir tikai būs viens indekss argv, un tas būs vienāds ar dot slash argv 2-- programmas nosaukums. Labi, tāpēc tagad man ir 0, i mazāk nekā 1, i plus plus int j ir vienāds ar 0, n ir vienāds strlen par argv kronšteinu 0, tāpēc pirmā atkārtojuma šīs cilpas. argv kronšteins 0 ir dot slīpsvītra argv 2. Tātad, kas ir garums šī string? Nu, dot slash A-R-G-v Dash 2. Tātad strlen no tā būs 8. Tātad j ir vienāds ar 0, n ir vienāds ar 8. Tik ilgi, kamēr j ir mazāks nekā 8, j ++. Un ar to mēs ejam, lai būtu drukājot vienu rakstzīmi, kas ir argv kronšteins i stiprinājuma j. Tātad vienīgais i ir nulle. Mums joprojām ir tikai viens komandrindas arguments. Šajā pirmajā iterācijā no cilpas, mēs esam būs drukāšanas argv kronšteins 0 kronšteins 0. Un tad j gatavojas pieauguma. Un mēs ejam, lai drukāšanu argv kronšteins 0 kronšteins 1. Un tad argv kronšteins 0 grupā 2. Tātad šī ir mūsu pirmā tikšanās multi-dimensiju masīvu. Atcerieties, agrāk, ka es teicu ka argv ir tehniski masīvs bloki rakstzīmes. Tātad šeit, ja es teicu kaut ko līdzīgu string s vienāds argv kronšteinu i, un tad es teicu, s kronšteins j, tas būtu Veicot to pašu. Tagad, kad esat redzējuši s stiprinājuma j pirms. Tas ir vienkārši piekļūt j- varonis šajā virkni. Tātad ar šo, mēs saņemat j-tais raksturs i-argv. Tātad, kas būtu tas galu galā izeja? Padarīt argv 2. Tas apkopo. Dot slash argv 2. "Rob Maria Hannah," un dod mums dažas vietas. Tātad mēs redzam, ka tas ir outputting dot savā rindā un slīpsvītra savā līniju un savā rindā. Tas izdrukāšana katrs individuāls raksturs Katras komandrindas argumentu. Un pēc tam starp tiem, jo šīs jaunās līnijas mēs esam drukāšanas leju šeit, starp viņiem tas būs drukāt jaunu līniju. Tāpēc tas ir līdzīgs iepriekšēja argv domuzīme 1, kas drukāts katrs komandrindas arguments, bet tagad mēs esam drukāšanas komandrindas argumentus un pēc tam atkārtojot caur katru raksturu katra komandrindas arguments lai iegūtu šo produkciju. LABI? Tātad jautājumiem par šo? Viena lieta ir tas, ka komandrindas arguments-- tāpēc tie ir atdalīti ar atstarpēm, kā Jūs, protams, sagaidīt tos. Tātad virkne var būt atstarpes tajā. Tas nav svarīgi, super, bet, ja es gribēja trešo komandrindas argumentu lai būtu telpas tā, tad es Varētu teikt kaut kas līdzīgs šim. LABI? Tātad tagad tas joprojām ir tikai trīs komandrindas arguments-- labi 4. Dot slash argv domuzīme 2, Rob, Maria un Hannah Bloomberg. LABI. Jautājumi par šo? Nav nekas īpašs par tukšumsimbolu. Tā vienkārši notiek, ir, ka komandrindas izturas atstarpes rakstzīmi cik jūs atdaliet argumentu. Viss kārtībā. Tātad Problēma komplekts two-- jūs esat būs Aplūkojot noslēpums atslēgas kriptogrāfiju. Tātad, līdzīgi kā šajā piemērā mēs redzējām no Ziemassvētku stāsts, jūs esat būs īstenot dažus algoritmi, ka, ņemot vērā ziņu, jūs gatavojas, lai varētu šifrēt šo ziņu ka tikai kāds ar šo noslēpumu Galvenais, ar šo dekodera gredzenu, jāspēj atšifrēt. Tā, ka ir standarta izdevums. Jūs esat būs īstenošanai divas dažādas versijas. Ja tev gadās to apskatīt at hakeris Edition tagad, mēs spēsim dot Jums virkne, piemēram, tas, kas veido šifrētu paroli. Tātad jūsu mērķis ir, lai noskaidrotu ko atšifrēti parole. Tagad tas ir patiesībā, cik paroles tiek saglabāti daudz datoriem, un tas tikai saglabā šo izlases rakstzīmju virkne. Jums ir izdomāt, kā nokļūt no šīs izlases rakstzīmju virkne uz ko sākotnējā parole. Un, visbeidzot, pēc tam problēma, kas, jums vajadzētu varētu saprast, ko tas nozīmē. Tātad jūs uzzināsiet, kā atšifrēt šāda veida izlases virkni. Tāpat, ja jūs atceraties no nedēļas 0, jūs varētu būt redzējis šo URL. Un jums būtu jāspēj atšifrēt tas galu galā. Jums varētu būt laimīgs, ja jums atšifrēt to un noklikšķiniet uz saites. Viss kārtībā. Tas ir tas uz šodienu. Tātad redzēt jūs nākamajā nedēļā! [ELECTRONIC mūzikas atskaņošanai]