>> [Predvaja glasba]
DAVID Malan: V redu.
To je CS50, in to je konec 2 tedna.
Žal mi je, da ne bi moglo biti tam z vami danes,
ampak ti si v zelo dobrih rokah.
Dovolite mi, da predstavim CS50 lastno Rob Bowden.
ROB Bowden: In seveda, potem moramo, da bi se norčevali iz dejstva,
da nam je poslal navpično video in pokazati to.
>> [VIDEO PREDVAJANJE]
>> [Predvaja glasba]
>> [Stopinje]
>> -Ta Video ni morali gledati na ta način.
To bi bilo mogoče preprečiti.
Recite ne za vertikalne videoposnetkov.
>> -Vertical Videi se zgodi, ko vas držite fotoaparat v napačno smer.
Video posnetek se bo končala videti kot dreka.
>> - [Grunt]
>> -Ni Več in več ljudi zasvojeni za izdelavo vertikalne video posnetke vsak dan.
To ni tresk ali nič, vendar je še vedno zelo slabo.
Obstajata dve različni vrsti ljudje, ki so žrtve z VVS.
Prva skupina obravnava videi so ustrelili kot slike.
Oni ne pomeni nobene škode.
Oni pač ne razumejo, da medtem ko lahko vključite sliko,
vam ne morem obrniti video.
>> [CRASH]
>> - [OPICA SOUNDS]
>> -V Druga skupina so ljudje ki ne dajejo [Škripati].
>> -Vertical Video sindrom je nevaren.
Filmi imajo je bila vedno v vodoravnem položaju.
Televizorji so vodoravno.
Računalniški zasloni so vodoravno.
Ljudska oči so vodoravno.
Mi niso zgrajene za gledam vertikalne videoposnetkov.
>> -I Ljubezen vertikalne videoposnetkov.
>> -Nobody Briga zate.
>> -če Ta problem je ostalo nenadzorovano, tudi vi
se bo začel prikazovati štiri videe naenkrat samo, da shranite pasovno širino.
>> -Letterboxed Vertikalne videos bi biti velikost poštne znamke.
>> In se bo razširila povsod.
Zasloni Movie imajo je bila vedno v vodoravnem položaju.
Če vertikalni videi postanejo sprejeta, kinodvorane
bo moral biti visok in suh.
>> In vse kinodvorane bi morali priti podrli in obnovili.
In do takrat, ko so jih obnovili, Mila Kunis bo stara in grda.
>> -Birds Bo crash v njih in umre.
>> -We'll Vsi dobili trd vratovi iz looking up.
>> In nihče ne bo sedel v prvi vrsti še kdaj.
>> -George Lucas bo ponovno sprostitev Star Vojne again-- Skinny izdaja.
>> -I Ni bil nikoli zares lahko povem zgodba, ki sem želel povedati.
To je bila odlična priložnost za mene, da poskus z novo tehnologijo.
>> -You're Kreten.
>> -Vsak Čas mobilna naprava se uporablja za snemanje video, skušnjava je tam.
Samo reči ne.
Reči ne George Lucas.
Recite ne za starega Mila Kunis.
Recite ne za vertikalne videoposnetkov.
>> In če vidiš kdo to počne, pravijo, "nisi streljanje ta pravica lutke!"
>> [Predvaja glasba]
>> [END PREDVAJANJE]
>> [Aplavz]
>> [AUDIO OUT]
ROB Bowden: --simple oblika kriptografiji
ki je v bistvu šifriranje in dešifriranje skrivnih sporočil.
Torej, tukaj imamo zelo preprosto igračo.
In ideja je zunanji obroč vrti okoli notranjega obroča.
In lahko vidite, morda, če sem povečavo v, that-- je težko videti.
Vendar, kot je število 1-- dobro, da se preselili.
>> Številka 1 preslika na pismo X, številka 2 Karte za pisma
J. Izjemno težko Ne preskočite naprej.
Pismo 2 preslika v J. Številka 3 preslika do D. Torej
s tem prstanom lahko daš nekdo sporočilo 1, 2, 3.
Iz neznanega razloga vas želijo, da jim povem XJD.
Lahko pa jih dajo nekatere sporočilo številk,
in dokler imajo ta obroč pa mogoče dešifrirati, kaj si hotel povedati.
>> Torej, ste morda videli to Poseben primer kriptografijo
prej, če okoli božiča ki ste jih gledal A Christmas Story.
Če še nikoli niste videli je prej, potem samo
Vklop TBS na dobesedno kadarkoli na božični večer,
ker so samo kažejo na hrbtni strani nazaj nazaj nazaj ves dan.
In ustrezni video je to.
[VIDEO PREDVAJANJE]
-Bodite Je znano vsem in razni da Ralph Parker je s tem
imenovan za člana Mali Orphan Annie Secret Krog
in je upravičen do uživanja vseh časti in koristi z njimi pojavljajo.
Podpisano Mali Orphan Annie.
Sopodpiše Pierre Andre s črnilom!
Priznanja in ugodnosti že pri devetih letih!
>> [Kričati od radia]
-Daj no.
Pojdimo naprej z njim.
Jaz ne potrebujem vse, da jazz o tihotapcih in pirati.
-Poslušaj Jutri zvečer z zaključni pustolovščina
Črnega piratske ladje.
Zdaj je čas za Annie skrivnost sporočilo
za vas člani Secret kroga.
Ne pozabite, otroci, samo člani Annie Secret Circle,
mogoče dekodirati Annie je skrivno sporočilo.
Ne pozabite, Annie je odvisno od vas.
Nastavite zatiči za B2.
Tu je sporočilo.
12.
11.
2.
-Jaz Sem v mojem prvem tajnem sestanku.
>> -25.
14.
11.
18.
16.
>> Oh, Pierre je v veliki glasovno nocoj.
Jaz lahko povem, da nocojšnji Sporočilo je bilo res pomembno.
-3.
25.
To je sporočilo od Annie sama.
Ne pozabite, ne povej nikomur.
>> Pet- sekund kasneje, sem v edini soba v hiši, kjer je fant devet
lahko sedeli v zasebnost in dekodiranje.
Aha!
B!
Šla sem na naslednjo.
E. Prva beseda je "biti."
S. je bil prihod zdaj lažje.
U. 25.
To je R.
Pridi na, Ralphie!
Sem moram iti!
-I'll Biti desno navzdol, Ma!
Gee čarovnik.
T. O. "Bodite prepričani, da" - se prepričajte, da česa?
Kaj je bilo malo Orphan Annie poskuša povedati?
Bodite prepričani, da kaj?
>> -Randy Mora iti!
Bi, prosim, pridi ven?
>> -Vse V redu, mama!
Takoj bom ven!
Bil sem vse bližje zdaj.
Napetost je bilo grozno.
Kaj je bilo to?
Usoda planeta lahko visi na nitki!
>> -Ralphie, Randy je dobil, da gredo!
>> -I'll Takoj ven, za zjokat!
Skoraj tam!
Moji prsti letel.
Moj um je jeklena past.
Vsak por vibrira.
Bilo je skoraj jasno!
Da.
Bodite prepričani, da popij Ovaltine.
Ovaltine?
Crummy komercialna?
Kurbin sin.
>> [END PREDVAJANJE]
>> ROB Bowden: Torej, to je, kako Ovaltine nanaša na kriptografijo.
V bistvu CS50 pravkar objavljeno Ovaltine, tako da smo lahko
biti crummy reklama za Ovaltine.
V redu.
Torej, zdaj dejansko računalništvo.
Ne pozabite, v ponedeljek smo končali potapljanje globlje v nizih.
Tako smo se ukvarjajo z niz "Zamyla."
In smo priznavanju dejstvo, da smo se lahko zdravi
"Zamyla" kot zaporedje znakov.
In ne pozabite, da smo se naučili nosilec zapis.
Torej, če bi bila ta shranjena v nizu "i", nato
Če smo rekli, je nosilec 0, bi, da kažejo kapitalsko Z. črko
In če smo rekli, je nosilec 1, ki bi pomenilo prvi male a,
in tako naprej do ih nosilec 5, ki bi lahko navedli trajala.
>> Zdaj pa ne pozabite, da Dolžina tega niza je 6,
vendar so indeksi v nizu so 0 do 5, Z pomočjo, ki trajajo a.
Torej, zdaj to paše v večjo sliko vašega računalnika pomnilnika, vaš RAM.
Torej nekje program, ki tečete računalnik
potrebuje, da se spomnimo Zamyla nekje v pomnilniku.
Torej imam lahko prostovoljec?
Da, prosim.
In kako ti je ime?
>> DEAN: Dean.
>> ROB Bowden: Dean?
Me veseli, Dean.
Torej, pridi sem, in bomo morali narisati
na naši lepi Izvanredan postavitve pomnilnika.
Zdaj pa mi je všeč, da razmišljajo o pomnilniku kot en dolg trak bajtov,
ampak samo za namene prikaza bomo pač od leve proti desni, zgoraj navzdol.
V REDU?
>> Torej bom pokazati program-- Getstrings.c.
In tako vse je ta program početje je zahtevala štiri strune
od uporabnika s GetString in nato tiskanje
karkoli, ki je prvi niz je vpisano.
Mi smo ignoriranje dva skozi štiri.
V REDU.
Torej, tukaj now-- ko Jaz prva zahteva s1.
Torej ste računalnik.
In ste izvedbenih GetString.
Torej zahtevate niz od me, in jaz rečem, OK, Dean.
Daj niz "Dean."
>> Torej nekje v spominu vas morate zapomniti, "Dean."
Torej, jo napišite v spomin nekje.
Popolna.
V REDU.
Torej, zdaj smo S2.
In s2 se bo zahteva, da GetString.
Torej bom vnesti niz.
Jaz grem za vstop "Hannah".
Torej, vpišite "Hannah" nekje v spominu.
Ja.
A-H.
>> OK, tako da zdaj s3.
In to se dogaja, da je ena zahteva, da GetString.
In tako zdaj enter "Maria".
V redu.
In potem je tu še en zadnji Zahteva za GetString, s4.
Torej, ne vem.
Kako pa gremo z antidisestablishmentarianism.
Tako začne, da v spomin.
Ja.
Tako pač "Rob".
>> V REDU.
Torej, zdaj explain-- zakaj storil pustite te prostore?
Zakaj ste to prazno prostor tukaj, tukaj in tukaj?
Da.
Torej opazili, ko sem šel natisniti s1-- tako da, če bomo
je "Hannah" tek Pravica do zraven "Dean"
Kako vemo, kdaj niz "Dean" konča?
Torej tiskanje niza s1 ima lahko Pravkar natisnjeno "DeanHannahMariaRob"
če nima pojma kdaj "Dean" dejansko konča.
>> V redu.
Torej, v spominu način smo dejansko predstavljajo ta konec niza
je s poševnico nični.
Torej, ta prostor je točno tisto, kar smo želeli.
To bi moralo biti poševnica nazaj nič.
To bo poševnica nič, in to bo poševnica nazaj nič.
In lahko imate čudovito nagrado za to, da popolna prostovoljec.
Bodite stres žogo!
>> V REDU.
Torej je to znak leva poševnica nič, je kako označuje konec niza.
To je, kako, če posamezni program, želi natisniti niz,
je how-- Spomnim se, da smo se naučili funkcija strlen prejšnji teden?
Dolžina niza?
To je, kako je dolžina niza sposoben določiti, kako dolgo niz.
To samo ohranja ponavljanjem preko znake
dokler se ne ugotovi, da je poševnica nazaj nič značaj.
Zato je pomembna stvar za uresničitev o poševnica nazaj ničelno značaja
se je zastopana vse ničle v bitih.
Tako opazili, da je ta razlikuje od ničelne značaja.
Torej nič značaj, če se spomnite v primeru, da je dal konec
predavanja, kjer karto znaki to-- kot zemljevidi kapital od A do 65 let.
Male črke na zemljevide do 97.
Male črke b bi bilo 98.
Torej število 0 zemljevidi to-- jaz ne vedeti, off vrhu moje glave.
44 ali 45.
Nekje v tej regiji.
>> Torej znak 0, je dejansko število.
Ampak poševnica nazaj nič Karte za vse nič bitov.
Torej je treba razlikovati med poševnico ničlo,
ki smo ga pokličem ničelno terminator.
Tam je razlika med poševnica nazaj nič in znak nič.
>> V redu.
Torej govorimo malo več o strune.
Torej vidimo tukaj, to je, kako to bi bilo določeno v pomnilniku.
Tako da je ta ideja strune kot zaporedje od characters-- tako uradni računalnik
sciency izraz za zaporedje je matrika.
Torej bi pravimo niz niz znakov.
In tam so dejansko drugi podatki vrste, ki jih lahko naredite nize iz.
>> Torej, da motivira to, poglej primer.
Imenovali jo bomo ages0.c bom kopiraj in prilepi našo predlogo.
V REDU.
Torej, v tem programu, kar smo želite storiti, je zagrabiti starost
treh študentov v teku.
Torej vemo, int age-- in zdaj bom rekel, 0.
Tako boste morda želeli povedati age1, vendar za namene, bomo videli zelo kmalu,
Jaz bom rekel int age0 enaka GetInt.
Torej isti poziv k GetInt da smo bili z uporabo I
ne zgodi, da se spodbudi rekoč: "Daj mi starost."
Ampak samo zahteva.
>> In age1 enaka GetInt.
In int age2 enaka GetInt.
Torej, še enkrat, trije študenti, vendar končno se variabilni indeksi
so age0 skozi age2.
V REDU.
Tako da bo ta program naredil karkoli želimo z age0, age1 in age2,
vendar je ta program na koncu dela za tri študente.
>> V REDU.
Torej, kaj zdaj, če želim štirje študenti?
No, bom moral iti nazaj v mojo kodo, spremenite komentar,
in zdaj imamo int age3 enaka GetInt.
V REDU.
Torej, kdo vidi problem tukaj?
V čem je problem s to vrsto nastavitev?
Ja.
Tako da smo ustvarjanje spremenljivka za vsakega študenta.
Zdaj pa, da deluje, vendar navsezadnje, kaj, če sem zdaj
rekel: "Hočem, da zgrabite starost osem študentov ali 16 študentov
ali pa mnogi študentje na stotine študentov v CS50
ali tisoče študentov na kampusu ali milijarde ljudi na svetu?
Torej v končni fazi to ni trajnostno.
Vsak čas boste videli sami kopiranje in lepljenje kodo, kot je ta,
bi morali na splošno čutijo da obstaja boljši način.
>> Torej, to je, če uvajamo izjava matrika.
Torej, ko se razglasi matriko, To je tisto, kar splošna oblika
se bo izgledal.
Bomo rekli vrsto.
in potem bomo navedite ime te matrike,
tako kot smo opredeliti dane spremenljivke.
In potem na koncu smo z spet ta nosilec zapis
ampak v drugačnem kontekstu od kako smo ga uporabljali že prej.
>> Torej, tukaj to izgleda kot normalna spremenljivka izjavo, da smo videli.
Tako smo videli int x podpičjem prej.
No, zdaj smo lahko videli nekaj kot int x oklepajih 5.
In dajanje te ideje tudi v novo Program GetInt da smo have--
tako da bomo lahko izvajajo to na enak način.
>> Recimo v CS smo nagnjeni k uporabi n kot število nečesa.
Torej, tukaj bomo shranjevanje štiri študente.
In zdaj lahko rečemo, int starost Konzola ni čisto N- priti yet--
da razglasi niz štirih študentov.
Torej, kako bo to videti v Pomnilnik bo podoben temu.
Počistite to.
In bomo imeli nekje v memory-- bom dal to gor.
>> Torej nekje v pomnilniku.
Ena dva tri štiri.
Imamo štiri cela števila v vrsti za ta niz štirih števil.
Torej, zdaj, kaj je velikost enega od teh poljih?
Ja.
To je štiri bajte.
To je 32 bitov.
Torej, zdaj je to drugačna iz matrike, da smo
videl prej, nabor znakov.
V nizu je vsak okvir le en bajt, ker znak je samo en bajt.
Toda s paleto celih vsaka polje mora biti štiri bajtov naročilo
da se prilega celotno celo število.
Torej, to je tisto, kar niz Štiri Ints bi izgledal.
>> In potem nazaj na kodo.
Sedaj želimo dejansko trgovina cela števila v tej matriki.
Torej, zdaj je to zelo, zelo, zelo pogost vzorec, da bo na neki točki
postala spomin mišic.
Torej int i enak 0.
i manj kot n.
i plus plus.
Starostno obdobje i enaka GetInt.
>> Torej, to zanko, ta format, Moral bi dobiti zelo navajeni.
Torej, to je, na splošno, kako bomo Ponovil čez skoraj vsako vrsto.
Zdaj opazite te vrste pojasnjuje, zakaj od začetka
nismo imeli za zanke gre za int i je enak 1, I manjše ali enako 10.
Razlog je, da izhajajoč iz nič naredi to delo tudi z nizi.
Torej, nizi so nič indeksirajo.
Če je ta array je dolžine 4, indeksi so 0 do 3.
>> Tako skozi prvi ponovitev tega za zanke
bomo za določanje starosti Nosilec 0 enak poziv k GetInt.
Torej, kar se mi je zgodilo vstopiti na tipkovnici.
V drugem priložnost, da smo nastavitev age1 enaka GetInt.
Tretjič napadalca, age2.
Končna podaja age3.
Torej, če je v prvem glavo zanke Vnesem številko 4 na tipkovnici,
potem bomo vstavite 4 tukaj.
Če se na drugem prehodu vnesem 50, bomo dal 50 tukaj.
Na tretjem priložnost bom morda vnesti negativen 1, negativna 1,
in potem, končno, če vnesem 0-- in zdaj spomnim, da je ta indeks tri.
>> Ko smo zanke zadaj, i dogaja se poveča do 4.
i ni več manj kot N, ki je 4.
In smo iztrgajo iz zanke.
Torej, kaj bi bilo narobe s tem?
[Neslišno]?
OBČINSTVO: [neslišno]
>> Da.
Torej matrika ima samo štiri mesta, kar pomeni, kot indekse 0 do 3.
Torej, če bi bilo to res, bi jaz da na vrednost 4 na neki točki.
starostno obdobje 4 bodo določanja karkoli se zgodi, da je tukaj
s tem, kar imam za povedati, vnesite 6.
Da bomo to nastavitev do 6.
>> Vendar ne vemo, kaj je tukaj.
To ni pomnilnik da smo imeli dostop do.
Torej, če se spomnite iz prejšnja predavanje,
je bil tiskanje vrednote Zamyla in na neki točki je zadel ta segmentacije
kriv. Torej, boste verjetno videli številni segmentacija napak, kot si
izvajanje nekaterih problemskih sklopov.
Ampak to je eden od načinov, na katerega lahko naletite na segmentacijo
napaka, ko začnete dostopu spomin na načine, ki jih ne bi smelo biti.
Tako nismo imeli dostopa do to mesto in to je napaka.
>> Torej, to je bolje.
Zdaj je še vedno majhna vprašanje s to kodo.
In to je v bistvu, da smo še vedno zaljubljen v štirih študentov.
Zdaj, če hočem uporabiti osem študentov, OK.
Saj ne, da je velik posel.
Lahko grem v, spremenite pripombe in spremenite n.
Zdaj bo to delo z osmimi študenti.
Če prevedem to in vodijo To bo pokazal me--
da bo zahteva cela za osem študenti in da bo samo delo.
Ampak to je manj kot idealno, da je treba prevedem je program vsak čas
Želim spremeniti število študentov da želim vstopiti starost, za.
>> Torej končno izboljšanje na tem, kot bomo videli here-- smo
dogaja, da zahtevajo število ljudi.
Tu imamo številne ljudi v sobah
ali kateri koli starosti ljudi v sobi.
Ampak gremo zahtevati številko oseb v prostoru, ki ga je uporabnik.
Torej, to je točno isto naredi, medtem ko zanke, ki smo jih videli prej.
To je popolnoma enaka do-while zanko, ki jo
se lahko za izvajanje na problem nizu.
Torej, dokler se to ne bo vstopajo n manj kot 1,
tako da je tam moraš biti ob vsaj ena oseba v sobi.
Dokler oni vstopajo n manj kot 1,
potem bomo obdržati spet vprašal.
Prosimo vpišite številko ljudi v sobi.
Sedaj, ko imamo številko ljudi v room--
tako da sem lahko tam začne, da 200 ljudi v tej sobi.
Potem sem dol bomo prišli in razglasi paleto velikosti 200.
Mi smo razglasitvi paleto, ki je dovolj velika, da imajo 200 starosti.
Spušča, to je za zanko da vas bodo zelo navajeni.
Torej ponavljanjem v tem polju, dodeljevanje vsako lokacijo
s tem, da zaporedje celo število, in potem končno tu smo
ravno zgled ponavljanjem nad to paleto, ne da pripis vrednosti,
vendar za dostop do vrednosti.
>> Torej, tukaj vidimo, da smo pravijo, eno leto od sedaj,
Oseba% i se bo% starih i let, kjer je i i + 1 prvega%.
Torej i ta indeks spremenljiva.
In drugi% i se dogaja, da je vrednost shranjena v starosti paleto plus 1.
Torej, to plus 1 je samo zato, ker smo saying-- to plus 1, starosti i plus 1.
Ta plus 1 je samo zato, ker smo rekoč čez eno leto osebe
bo ta stara.
>> Torej, zakaj je to i plus 1?
Zakaj imamo plus 1 tam?
Ja.
Da.
Torej, ne pozabite nizi se nič indeksirajo.
Torej, če smo to tiskanje za nekdo pravkar prebral izhod,
potem verjetno želijo videti nekaj kot osebo, eno, človek številka ena,
bo star 20 let.
Oseba številka dve bo star 15 let.
Oni raje ne bi videli osebo število nič, je star 15 let.
>> Torej sestavljanje to in šele videli, kaj izgleda like-- ustvariti nekaj prostora.
Naredite AGES pripravlja.
Tek starosti.
Vidimo število ljudi v prostoru.
Tako bom rekel, da so v sobi trije ljudje.
Age of oseba številka ena, recimo, 15, 20, 25.
In zdaj bom rekel čez eno leto Sedaj bodo 16, 21, 26.
Poglejmo, da ta deluje z n, ki ni enak 3.
Torej, če rečem, število ljudi, ki je 5, ena, dva, tri, dva, ena, letno odslej
oni bodo dva, tri, star štiri, tri, dve leti.
Tako sem lahko prav tako zlahka n bilo 10.000.
Zdaj bom sedel tukaj precej nekaj časa vstopa starosti, ampak to deluje.
>> Torej, zdaj v spominu nekje smo imajo paleto velikosti 10.000,
tako da na koncu 40.000 bajte, ker obstajajo
štiri bajte za vsakega od teh števil.
Torej obstaja niz velikost 10,000 kjer smo lahko
shranite v starosti od teh 10.000 ljudi.
V redu.
Vprašanja o vsem tem?
Ja.
Kaj pa, če si dal negativno število?
Poglejmo, kaj se zgodi.
Torej, v tem konkretnem številu case-- ljudi v sobi, negativnega.
Je zavrnil, da ker tu se zgodi
za ravnanje dejstvo, da je n če manj kot eno bomo še enkrat vprašal.
Če boste poskušali razglasiti array negativne velikosti,
na splošno ne deluje.
>> Torej poskusimo.
Oglejmo prezreti karkoli vrednost so vhod za n
in samo reči INT starosti rib negativnem.
Poglejmo, če je še pripravlja.
Nisem prepričan.
No.
Torej je starost razglašena kot matrika z negativnim velikosti.
Torej vnaprej priznava matrika ne more biti negativni velikosti in ga zavrne.
Zdaj pa, če nismo ročaj Ta do-while zanko pravilno,
če nismo bili preverjanje če je n manj kot 1--
Recimo, da samo ni bilo to sploh
in namesto tega smo samo zagrabiti celo število.
Ni važno, kaj to celo je, izjavljamo paleto te velikosti.
>> Tako da prevajalnik ne more morda se pritožujejo sedaj.
Če prevedem this-- tako da se ne more pritoževati,
saj ne morejo vedeti, da sem dogaja, da vnesete negativno število,
ki bi lahko neveljavna.
Za vse to ve, jaz morda vnesite pozitivno število,
ki je popolnoma veljaven.
Torej, jaz si predstavljam, če vnesem negativno 1 ljudi v sobi, segmentacije napako.
>> Torej, v redu.
Torej, kaj je dodati to spet samo obdržati tisto, kar je prvotno bil.
Zato poskrbite starosti.
Zdaj pa, če želim poskusiti negativna age-- tako da je
pravijo, da je pet ljudi v sobi.
Age of oseba številka ena negativna 4, oseba tri
je nič, človek three-- redu.
Torej, tukaj, na leto od sedaj, človek številka bo ena negativna 3 let.
Torej, verjetno nima smisla.
Ampak to je samo zato, ker je videti na kodo vsi delamo
prosi GetInt.
>> Zdaj pa, če sva imela Funkcija GetPositiveInt
ali pa smo preprosto samo to storili nekako isti while tam dol,
potem bi to delovalo popolnoma v redu.
Toda v to posebno primer, samo ne
zgodi, da bo ravnanje negativne vrednosti.
Vsa druga vprašanja o nizi?
V REDU.
>> Tako smo zdaj videli nize.
In bomo morali uporabiti to za argumente v ukazni vrstici.
Torej, problem je določeno dvo Vem, da mnogi od vas
Morda še vedno delajo na problem niz ena, ampak problem nastaviti dva prihaja.
Na problem določiti dva, boste treba se ukvarjajo s strune, nizi,
in argumente ukazne vrstice.
>> Torej, kaj so argumenti ukazne vrstice?
Sedaj lahko vidite dol tu malo teaser za točno to, kar je
dogaja se dogaja.
Vidimo int glavno, INC argc, niz argv oklepajih.
Tako da najprej poskusimo razložiti tisto, kar je hotel povedati.
Sedaj, v redu.
>> Torej, v ukazni vrstici morate biti privajanje na nekatere od teh ukazov
sedaj, in ste verjetno vodijo cd v terminalu poprej.
Torej, če rečemo cd pset1, veste, da naj
se spreminja v imenik pset1.
>> Zdaj opazili, da ste nikoli napisal program, kot je to prej.
Vsak program, ki ste napisali, bi teči, recimo, dot poševnica Mario,
dot poševnica pohlepni, nato pa ga vas lahko pozove za vnos.
Zdaj, to ni tisto, sprememba imenika počne.
Ko zaženete cd, ne pa reči, kateri imenik hočeš, da cd v?
Namesto tega si pravkar rekel, cd pset1, in da gre samo v imenik pset1.
>> Torej podobno imamo druge primere.
da zdravo.
Ko zaženete narediti, ne pa reči, kateri program bi radi, da bi?
Pravkar ste rekli, v spodnjem ukazni vrstici, da zdravo.
>> Poteza je še en primer.
Tole smo se gibljejo mario.c vložiti en imenik navzgor.
Zdaj vemo, s tem primer smo res mimo dva argumenta.
Tam je mario.c kot prvi argument, in dot dot je drugi argument.
In potem, ko poganjam naredite, vas glej, da res dolgo ukaz line--
da res dolgo ukaz natisnjena v ukazni vrstici.
Tako, da dokler command-- to je le kratek del,
ampak zdaj imamo tri argumenti ukazne vrstice.
Dot dash nič, zdravo in hello.c.
>> Torej, to so v ukazni vrstici Argumenti, argumenti
da ste poteka prek ukazni vrstici, tako da je
Ni nujno, da se pozove Ko zaženete program.
To bi bilo nerodno, če, če si tekel Jek je rekel, "OK,
ki program-- ki Datoteka ste zbiranje?
Hello.c.
Kaj bi vi zastavice želeli vstopiti? dash o.
Kaj želite datoteka se imenuje?
zdravo.
Ne, samo teči Jek dash o Hello hello.c.
>> Torej, če se ozremo na to.
Zdaj argc-- argc je grofje argument.
To število ukazno vrstico argumenti vpisana v ukazni vrstici.
No, argv-- tehnično klinasti stojala za vektor,
kar v bistvu pomeni matriko.
Lahko pa prezreti, da je.
Argv-- imamo niz argv, tako niz argv oklepajih.
Torej, to je še ena oblika V oklepajih še niste videli prej.
Tako smo videli bracket Zapis, ko sva rekla,
podobno, niz je enaka Zamyla.
s oklepaj 0 dostopi do Z. znakov
>> Videli smo tudi oklepaju, ko smo rekli, int starost oklepati 5.
To je izjavil paleto velikosti 5.
Torej, tukaj je različica oklepaja še nismo videli.
Tako da je ta vrsta niza argv da bi bila popolnoma seznanjeni
da bi se le da gre za niz.
Zdaj oklepaji kažejo da gre za niz.
Torej niz argv konzole sredstva da argv je niz nizov.
Zdaj tehnično niz je niz znakov.
Torej, to je zdaj matrika od paleto likov.
Ampak to je veliko lažje razmišljati o da je to le niz nizov.
>> Torej, zakaj bi se nosilci prazna?
Like, zakaj ne moremo reči, Nosilec 5, nosilec n?
Ja.
Ne vemo, koliko vhodi tam se bodo.
Torej, če pogledamo na Jek primer, smo rekli Jek pomišljaj o hello hello.c.
V tem konkretnem primeru se zgodi biti trije argumenti ukazne vrstice.
In tako brackets-- bomo videli v drugo ne bi bilo tri.
To bi tehnično bilo štiri.
Toda nosilci, bi mi recimo, obstajajo tri.
Ampak zdaj, če bomo pogledal na poti mario.c dot dot, oklepaji
mi bi želeli postaviti dva v njih.
>> In obstaja veliko ukazov, ki imajo spremenljivo število ukazni vrstici
argumenti.
Torej, kaj je ta različica Nosilec zapis kaže,
je, da je argv niz nizov.
Vendar ne vemo, koliko strune so v tem polju.
In kako bomo potem vedeli, kako veliko strune, so v matriki?
To je bistvo argc.
argc nam pove, kako dolgo argv je.
>> Torej je zadnja stvar, ki vodijo v Um je, da tehnično,
ukaz sam šteje za eno argumenti v ukazni vrstici.
Torej cd pset1, obstajata dve argumenti ukazne vrstice.
Program sam po sebi, cd, nato pa dejanski argument del, pset1.
Vsak program, ki ste jih doslej napisal je imela en ukazni vrstici argument-- dot
poševnica Mario.
To je edini argument v ukazni vrstici.
>> Torej, zdaj je videti na Jek dash o Hello hello.c.
Torej, kaj je argc?
4.
Torej argc je 4.
Jek, tako argv nosilec 0 je Jek.
argv nosilec 1 je dash 0.
argv nosilec 2 je zdravo, in argv nosilec 3 je hello.c.
OK, tako da vprašanja o tem, in potem bomo poglej nekaterih programskih primerov.
>> V REDU.
Torej bomo si oglejte na hello3.c.
Zato bi to moralo biti seznanjeni z eden od prvih primerov c
smo imeli, če bi mi samo reči, zdravo svet, zdaj pa je to bolj splošno.
Torej, tukaj smo pozdravljanja % s poševnica nazaj n argv nosilec 1.
Notice-- tako Do te točke, to je kaj je moj template datoteka izgledala.
Imel sem int main (praznino), in potem bi jaz storiti nekaj v glavno funkcijo.
Sedaj namesto, ko smo začeli obravnavo z argumenti ukazne vrstice,
moramo navesti drugačna oblika glavni.
>> Torej gledaš hello3 Ponovno, glavni bo
da sprejme dva argumenta now-- int argc, število argumentov ukazne vrstice,
in niz argv oklepaju, dejanska Strune vpisana v ukazni vrstici.
Tako da bom to spremeniti Predloga, da odraža to dejstvo.
Zdaj, ko ste napisali program, če ne
morali sprejeti kakršno koli ukazni vrstici argumenti, potem samo uporabiti int main (praznino).
Toda zdaj, ko pišete Programi argument ukazne vrstice, ki
boš, da se delaš za problem nastavite dvo zdaj, da ste tekmovanje v teku
programi, ki jih je potrebno sprejeti argumenti v ukazni vrstici
morate imeti glavno tega obrazca.
>> Torej here-- je to velika poraba argument v ukazni vrstici.
Torej tiskanje argv 1.
OK, tako da je sestavljanje in zaženete ta program.
Naredite hello3.
Pripravlja.
Dot poševnica hello3.
In recimo, "Rob".
Pozdravljeni Rob.
Če rečem, "Hello Maria," Zdravo Marijo.
Pozdravljeni Maria.
Hannah še vedno pravi, "zdravo Maria ", ker nisem
delaš karkoli z našo argv 2.
Argv 2 bi zdaj "Hannah".
Argc bi bilo 3.
Kaj pa, če sem to storil?
Torej zdravo null.
>> On je na kratko dotaknil dejstva da, tehnično, GetString
lahko vrne null, vendar bomo dobili veliko več, v kakšnem null dejansko je.
Ampak ga vzemite kot zadevo Dejstvo, da ni splošno slab.
Smo naredili kaj narobe, če to je tiskanje "zdravo null."
In razlog, da smo storili nekaj narobe is-- dobro,
ko sem tekel dot slash hello3 je argc 1.
Torej to pomeni, da je dolžina argv bilo 1.
Če niz je dolžine 1, edini veljavni indeks je nič.
In zato je tu argv 1 je izven obseg te matrike.
Bilo je podobno kot prej, ko sem se potrudil Shranjevanje 6 zunaj koncu polja.
Zato sem poskušal dostopati do nekaj izven grofov ARGV,
in smo dobili null.
>> Torej boljša različica to izboljšanje,
Izrecno je preverjanje argc.
Torej, če argc enaka 2, kar pomeni, da smo naleteli nekaj podobnega dot poševnica hello3 Robu.
In bo to print "Pozdravljeni Rob."
Če argc ni enako 2, potem je le, da bo
ignorirati, kar si dal na argument v ukazni vrstici
kot argumenti ukazne vrstice.
Ali pa, če ni dal sploh, je le, da bo prezreti, da je in samo reči,
"zdravo vas."
>> Torej sestavljanje to.
Naredite hello4.
In teče hello4.
Je na ta način teče, kaj je treba natisniti?
"Hello vas."
Pozdravljeni ste.
Kaj pa hello4 Rob?
"Hello Rob."
In končno, zdravo Rob Maria je samo "zdravo You" še enkrat,
ker si je res ne vnesete nekaj, kar je bilo pričakovano.
Vnesli ste več imen kot je zmogel,
tako da je samo v neplačilu na Hello ste vedenje.
Torej vprašanja v to?
Ali argumenti ukazne vrstice?
>> OK, tako da pri tem si na nekaj več primerov uporabe
ukazni vrstici arguments-- najprej smo argv dash 1 pika c.
Tako komentarji podarite kaj Ta program je treba narediti.
Ampak obvestilo now-- to za zanke, To se ujema z natančno vzorec
Sem rekel prej.
Pravkar smo se zgodi, da se Namesto z uporabo argc n.
Zdaj argc je res n.
To je dolžina argv array.
Torej so ponavljanjem preko argv Niz printf-ing vsak argv vrednost.
>> Torej, če naredim to.
Naredite argv 1.
To pripravlja.
Dot poševnica argv 1.
Samo vožnjo to, da odtisi dot slash argv 1
saj to je bil edini v ukazni vrstici argument-- ime programa.
Vedno bo na least-- argc ne more biti manjši od ena,
saj še vedno najmanj je ime programa za zagon.
Torej argv 1 Rob bo natisnila argv 1 in nato na novi liniji "Rob".
>> Torej, v prvi iteraciji te zanke, i je 0.
Argv 0 je ime programa.
Dot poševnica argv 1.
In potem argv 1 je moja prva argument v ukazni vrstici, ki je Rob.
Na tej točki smo enak argc.
Mi odmor iz zanke in smo končali.
Torej bo to delo za poljubna število argumentov ukazne vrstice.
Opazite, da natisne argv 0, argv 1, argv 2, argv 3, argv 4.
In ni argv 5.
argc enak 5.
Torej na argc-- na i je enak 5, prekinemo iz zanke.
V REDU.
Torej vprašanja, da preden smo poglej bolj kompleksno primer?
>> Torej argv 2.
V redu.
Torej smo še vedno tiskanje argumente ukazne vrstice.
Ampak zdaj opazili, imamo ugnezdene zanke for.
Torej, kaj se to počne?
Torej prva zanka počne točno to, kar je prej.
Še vedno looping več vsak argument v ukazni vrstici,
zdaj pa ta drugi loop-- smo jih tudi videl kaj takega.
Ko je bil ponavljanjem več Zamyla tiskanje Z-A-m-Y-L-A.
Torej, ta druga zanka za int j enaka 0, n enak strlen argv konzole i.
>> Torej, kaj je najprej misliti the-- Oglejmo si.
Pomislimo, kaj bi računalnik storiti, če sem tekel ta program kot samo dot
poševnica argv pomišljaj 2.
Torej, če sem tekel to kodo, nato pa argc se bo enaka 1.
In godalni argv-- obstaja samo bo eden indeks v argv,
in da se dogaja, da je enak dot poševnica argv 2-- ime programa.
>> OK, tako da zdaj jaz enaka 0, i manj kot 1, i plus plus za int j enak 0,
n enak strlen argv razredu 0, tako da v Prva ponovitev te zanke. argv
Konzola 0 je pika poševnica argv 2.
Torej, kaj je dolžina tega niza?
No, dot poševnica A-R-gramsko V pomišljaj 2.
Torej strlen tega bo 8.
Torej j enak 0, je n enak 8.
Dokler jje manj kot 8, j ++.
In s tem se bomo, da bo tiskanje enoten značaj, ki
je argv nosilec i oklepati j.
>> Tako da je edina i je nič.
Še vedno imamo samo eno argument v ukazni vrstici.
V tej prvi ponovitvi od zanke, smo
bo tisk argv nosilec 0 oklepaj 0.
In potem j se bo prirastek.
In bomo tiskanje argv nosilec 0 nosilec 1.
In potem argv oklepaj 0 nosilec 2.
>> Torej je to naša prva srečanje multi-dimenzionalni nizi.
Ne pozabite, prej, da sem rekel: da argv je tehnično
array nizi znakov.
Torej, tukaj, če sem rekel nekaj podobnega Niz je enaka argv nosilec i,
in potem sem rekel, je držalo j, to bi bilo dokončanje isto stvar.
Zdaj, ko ste videli s pred konzolo j.
To je samo dostop do J-th značaj tega niza.
Torej s tem, smo dobili j-ti značaj argv i-.
>> Torej, kaj naj bi to na koncu izhod?
Naredite argv 2.
To pripravlja.
Dot poševnica argv 2.
"Rob Maria Hannah," in nam daje nekaj prostora.
Tako vidimo, da je ta oddaja pika na svojo lastno linijo in poševnica
na svojo lastno linijo in na svojo lastno linijo.
To je tiskanje vsakega individualne narave
vsakega argumenta ukazne vrstice.
In potem med njimi, zaradi te nove linije
smo tiskanje tukaj, v med njimi bo to natisne novo vrstico.
>> Torej je to podobno predhodno argv dash 1,
ki je natisnjena vsak argument v ukazni vrstici,
zdaj pa smo tiskanje argumente ukazne vrstice
in nato ponavljanjem skozi vsako značaj vsakega argumenta ukazne vrstice
da bi dobili ta rezultat.
V REDU?
Torej vprašanja v to?
>> Ena stvar je tudi omeniti, da je ukazni vrstici arguments--
tako da so ločeni s presledki kot ti bi seveda pričakovali, da jih bo.
Torej niz ima lahko prostore v njej.
To ni super pomembna, vendar, če sem Želeli tretjega argumenta ukazne vrstice
da ima prostor v njej, potem Lahko bi rekli kaj takega.
V REDU?
Tako da je ta zdaj ima še vedno le tri ukazni vrstici arguments-- dobro 4.
Dot poševnica argv dash 2, Rob, Maria in Hannah Bloomberg.
V REDU.
Vprašanja o tem?
>> Nič posebnega o presledek.
To se zgodi le, da se da ukazni vrstici obravnava presledek
kako vi ločite vsak argument.
V redu.
Torej Problem set dvo boš biti
gledaš secret-kriptografiji.
Tako, podobno kot v tem primeru smo videli od A Christmas Story,
boš za izvajanje nekaterih algoritmi, da je dobila sporočilo,
boste mogli šifrirati to sporočilo
da je samo nekdo s to skrivnost Ključ, s tem dekoder obroču
mora biti sposoben dešifrirati.
>> Tako, da je standard izdaja.
Boš izvedbeni dveh različicah.
Če se zgodi, da se zazremo na heker različica sedaj,
bova dala ste niz, kot je ta,
ki predstavlja šifrirano geslo.
Torej je vaš cilj je, da ugotovimo, kaj dešifrirano geslo.
Zdaj je to pravzaprav kako gesla so shranjeni v veliko računalnikov,
in to samo shrani ta naključni niz znakov.
Moraš, da ugotovimo, kako priti od tega naključnega niz znakov
s tem, kar je bilo prvotno geslo.
>> In končno, po tem problem set, morate
biti sposoben razumeti, kaj to pomeni.
Tako se boste naučili, kako dešifrirati to nekako naključno niza.
Podobno je, če se spomnite iz tedna 0, ste morda videli ta URL.
In bi morali imeti možnost, da dešifrirati to sčasoma.
Morda ne bo vesel, ko vas dešifriranje in kliknite na povezavo.
V redu.
To je to za danes.
Torej, se vidimo naslednji teden!
>> [ELECTRONIC MUSIC IGRANJE]