>> [Zenelejátszási]
DAVID MALAN: Rendben.
Ez CS50, és ez a a vége a 2. hét.
Nagyon sajnálom, hogy nem lehettem ott veletek ma,
de te nagyon jó kezekben van.
Engedjék meg, hogy bemutassam CS50 saját Rob Bowden.
Ebből BOWDEN: És persze, akkor van, hogy gúnyolódni a tény,
hogy ő küldött nekünk egy függőleges video- és ezt mutatják.
>> [Videó lejátszás]
>> [Zenelejátszási]
>> [FOOTSTEPS]
>> -Ez Videó nem meg kell nézni ezen a módon.
Ez lehetett volna előzni.
Mondd, hogy nem a függőleges videók.
>> -függőleges Videók megtörténhet, ha tartsa a fényképezőgépet a rossz irányba.
A videó végén néz ki, mint a szar.
>> - [GRUNT]
>> -Vannak Több és több ember rabja ahhoz, hogy a függőleges videók minden nap.
Ez nem crack, vagy semmit, de ez még mindig nagyon rossz.
Két különböző típusú emberek, akik érintettek VVS.
Az első csoport kezeli videók lőnek, mint a képeket.
Nem akart semmi rosszat.
Egyszerűen nem értem, hogy közben viszont egy képet,
nem igazán lehet kapcsolni egy videót.
>> [CRASH]
>> - [MONKEY Hangok]
>> -A Másik csoport az emberek akik nem adnak [hangjelzés].
>> -függőleges Videó szindróma veszélyes.
Mozgóképek van Mindig vízszintes.
Televíziók vízszintesek.
Számítógépes képernyők vízszintes.
Az emberek szeme vízszintes.
Mi nem épült nézni függőleges videók.
>> -Én Szeretem a függőleges videók.
>> -Nobody Törődik veled.
>> -Ha Ez a probléma a avatkozunk be, akkor is
fog megjeleníteni négy videók Egyszerre csak menteni sávszélesség.
>> -Letterboxed Függőleges videók lenne legyen akkora, mint egy postai bélyeg.
>> -És Akkor elterjedt mindenhol.
Film képernyők Mindig vízszintes.
Ha a függőleges videók válnak Elfogadott, mozik
lesz, hogy magas és vékony.
>> -És Az összes mozik lenne van, hogy lebontották és újjáépítették.
És mire épültek újjá, Mila Kunis lenne öreg és csúnya.
>> -Birds Fog ütközni, és meghal.
>> -Majd Minden igen kemény nyak-re keresi fel.
>> -És Senki sem fog ülni Az első sorban soha többé.
>> -George Lucas újra kiadása csillag Háborúk again-- a vékony kiadás.
>> -Én Soha nem volt igazán tudni mondani A történet, amit el akartam mondani.
Ez volt a nagy lehetőség számomra, hogy kísérletezni egy új technológia.
>> -Ön Egy bunkó.
>> -Minden Alkalommal, amikor egy mobil eszközt használnak videó rögzítésére, a kísértés van.
Csak mondj nemet.
Azt nem, hogy George Lucas.
Mondd, hogy nem a régi Mila Kunis.
Mondd, hogy nem a függőleges videók.
>> -És Ha látod, hogy valaki csinálja, azt mondják, "te nem lövés, hogy jobb dummy!"
>> [Zenelejátszási]
>> [Lejátszás vége]
>> [Taps]
>> [AUDIO OUT]
Ebből BOWDEN: --simple forma kriptográfia,
ami alapvetően a titkosítási és dekódolás titkos üzeneteket.
Tehát itt van egy nagyon egyszerű játék.
És az ötlet a külső gyűrű körül forog a belső gyűrű.
És láthatjuk, talán ha zoom a, hogy-- nehéz látni.
De, mint a száma 1-- is, ami mozgott.
>> Az 1-es szám térképek, hogy a levél X, 2-es szám térképek a levél
J. Hihetetlenül nehéz ne ugorjon.
Írni 2 térképek J. 3. szám térképek D. Tehát
Ezzel a gyűrűvel adhatsz valaki üzenetet 1, 2, 3.
Valamilyen okból akarom mondani nekik XJD.
De akkor nekik Néhány üzenet a számok,
és mindaddig, amíg van ez a gyűrű, ők dekódolja, mit akarsz mondani.
>> Szóval lehet, hogy látta ezt különösen például a kriptográfia
előtt, ha az egész karácsonyi szezonban már figyelte A Christmas Story.
Ha még soha nem láttam előtt, akkor csak
kapcsolja be TBS a szó szoros értelmében Bármikor karácsony estéjén,
mert ők csak azt mutatják, hogy háttal hogy vissza háttal az egész nap.
És a vonatkozó videó ez.
[Videó lejátszás]
-be Is ismert, hogy minden rendű és rangú hogy Ralph Parker Ezennel
kinevezett tagja a Kis- Orphan Annie Secret Circle
és joga van a kitüntetéssel és előnyök előforduló hozzá.
Aláírt kis árva Annie.
Ellenjegyzett Pierre Andre tintával!
Elismerések és előnyök Már kilenc évesen!
>> [Kiabálni a Radio]
Gyerünk.
Lássunk hozzá.
Nekem nem kell ez a jazz mintegy csempészek és kalózok.
-Listen Holnap este A záró kaland
A Fekete kalózhajó.
Most, hogy itt az ideje Annie titkos üzenetet
Önnek tagjai a The Secret Circle.
Emlékezz a gyerekek, csak tagok Annie Secret Circle
képes dekódolni Annie titkos üzenetet.
Ne feledje, Annie függ.
Állítsa be a csapok a B2.
Itt van az üzenet.
12.
11.
2.
-Én Vagyok az én első titkos találkozón.
>> -25.
14.
11.
18.
16.
>> -Ó, Pierre van nagy hangja ma este.
Elmondhatom, hogy a ma esti Üzenet igazán fontos volt.
-3.
25.
Ez egy üzenet Annie magát.
Ne feledje, ne mondd el senkinek.
>> -Five Másodperccel később, én vagyok az egyetlen szoba a házban, ahol egy fiú kilenc
ülhetett adatvédelmi és dekódolni.
Aha!
B!
Elmentem a másikra.
E. Az első szó a "lenni."
S. hogy jön könnyebb most.
U. 25.
Ez R.
Gyerünk, Ralphie!
Mennem kell!
-I'll Igaza le, Ma!
Gee zseniális.
T. O. "Mindenképpen" - biztos, hogy mit?
Mi volt kis árva Annie mondani?
Ügyeljen arra, hogy mit?
>> -Randy Mennie kell!
Kérlek, gyere ki?
>> -Rendben, Anyu!
Hamarosan ki!
Kezdtem most közelebb.
A feszültség szörnyű volt.
Mi volt az?
A sorsa a bolygón lefagy a mérleg!
>> -Ralphie, Randy mennie kell!
>> -I'll Igaza ki, az isten szerelmére!
Majdnem ott!
Az ujjaim repült.
A fejemben volt egy acél csapda.
Minden pórus vibrált.
Már majdnem tiszta!
Igen.
Ügyeljen arra, hogy igyon meg Ovaltine.
Ovaltine?
Egy béna kereskedelmi?
A kurva életbe.
>> [Lejátszás vége]
>> Ebből BOWDEN: Szóval így Ovaltine vonatkozik titkosítás.
Alapvetően CS50 csak reklámozott Ovaltine, így sikerült
egy ócska reklám Ovaltine.
Minden rendben.
Tehát most aktuális számítógép-tudomány.
Ne feledje, hétfőn abbahagytuk Mélyebben szálakat.
Szóval van dolgunk a húr "Zamyla."
És mi volt elismerve az a tény, hogy tudjuk kezelni
"Zamyla", mint egy karaktersorozat.
És ne feledjük, hogy megtudtuk A konzol jelölést.
Tehát ha ez tárolták egy string "s", akkor
ha azt mondanánk, s konzol 0, ami jelzik a nagybetű Z.
És ha azt mondanánk, s konzol 1, hogy jelezné az első kisbetűs egy,
és így tovább, egészen s konzol 5, ami azt jelzi, az utolsó egy.
>> Most ne feledjük, hogy a hossza a string 6,
de az indexek a húr van 0 és 5, Z keresztül, hogy az elmúlt.
Szóval ez most elfér egy nagyobb képet A számítógép memóriájából, a RAM.
Tehát valahol a program futsz a számítógép
meg kell emlékezni, Zamyla valahol a memóriában.
Szóval lehet, hogy egy önkéntes?
Igen, kérem.
És mi a neve?
>> Dékán: Dean.
>> Ebből BOWDEN: Dean?
Örülök, hogy találkoztunk, Dean.
Szóval gyere ide, és megyünk, hogy itt dolgozzon
A szép remek elrendezés memória.
Most Szeretném azt hinni, a memória mint egy hosszú csík bájt,
de csak a megjelenítés céljára fogunk Csak balról jobbra, fentről lefelé.
OKÉ?
>> Így fogok mutatni egy program-- Getstrings.c.
És hogy mindez program Ennek kér négy húrt
a felhasználó GetString majd nyomtatás
bármi is legyen az első húr belépett volt.
Mi figyelmen kívül hagyva a két négyig.
OKÉ.
Tehát itt now-- ha Én első kérelem S1.
Szóval te vagy a számítógép.
És akkor hajtják végre getString.
Szóval kérjen stringet engem, és azt mondom, rendben, Dean.
Adja meg a karakterlánc "Dean".
>> Tehát valahol memória kell emlékezni "Dean".
Szóval írd be a memóriába valahol.
Tökéletes.
OKÉ.
Tehát most már S2.
És S2 lesz a kéréssel, hogy getString.
Így fogok belépni egy húr.
Megyek be "Hannah."
Tehát írja be a "Hannah" valahol a memóriába.
Igen.
A-H.
>> OK, így most az S3.
És ez lesz a másik kérheti, hogy getString.
És így most adja "Maria".
Minden rendben.
És akkor ott van még egy utolsó kérés getString, S4.
Szóval, nem tudom.
Mi lenne, ha megy antidisestablishmentarianism.
Így adja, hogy a memóriába.
Igen.
Szóval csak nem "Rob."
>> OKÉ.
Tehát most explain-- miért hagyja ezeket a helyeket?
Miért van ez üres helyet itt, itt, és itt?
Igen.
Tehát észre, amikor megyek nyomtatni s1-- így ha
volt "Hannah" működési egészen mellett a "Dean"
honnan tudjuk, hogy mikor a húr "Dean" vége?
Tehát nyomtatás a húr S1 lehet Csak nyomtatott "DeanHannahMariaRob"
ha nem rendelkezik semmilyen nyom Az, ha a "Dean" ténylegesen véget ér.
>> Minden rendben.
Tehát a memóriában, ahogy mi ténylegesen képviselhetjük a végén egy húr
ez a backslash nulla.
Szóval ez a hely pontosan az, amit szerettünk volna.
Meg kell egy backslash nulla.
Ez lesz a backslash nulla, és ez lesz a backslash nulla.
És akkor egy mesés nyeremény számára, hogy egy tökéletes önkéntes.
Vegyünk egy stressz labdát!
>> OKÉ.
Szóval ez a karakter backslash nulla hogyan jelzi a végén egy húr.
Ez hogyan, mikor adott programban akar nyomtatni egy húr,
ez how-- emlékezzen megtudtuk Az strlen függvény a múlt héten?
String-hossz?
Ez hogyan húr hossza képes meghatározására, milyen hosszú a karakterlánc.
Ez csak folyamatosan ismételve mint a karakterek
amíg meg nem találja a backslash nulla karakter.
Szóval a lényeg az, hogy észre a backslash nulla karakter
A ez képviseli minden nullák bit.
Tehát észre, hogy ez különbözik a nulla karakter.
Tehát a nulla karakter, ha emlékszel A példa, hogy ő adta a végén
Előadás, ahol a karakterek map alábbiakra: mint a fővárosban A térképek és 65.
Kisbetűs egy térképeket 97.
Kisbetűs b lenne 98.
Szóval száma 0 térképek alábbiakra: én nem tudom, ki a fejem tetején.
44 vagy 45.
Valahol ebben a régióban.
>> Tehát a karakter 0 egy valós szám.
De backslash nulla térképek minden nulla bitet.
Szóval van egy különbség között backslash nulla,
amely fogjuk hívni a null terminátor.
Van egy megkülönböztetése backslash nulla és a karakter nulla.
>> Minden rendben.
Így beszél egy kicsit többet szálakat.
Tehát itt látunk ez hogyan lenne lefektetett memória.
Szóval ez a gondolat a húrok sorozataként A jellemek így a hivatalos számítógépes
sciency távú szekvencia egy tömb.
Szóval azt mondanánk egy string egy sor karakter.
És vannak valójában más adat típusok hogy tudjuk, hogy a tömbök ki.
>> Tehát motiválni, nézd meg egy példát.
Hívjuk meg ages0.c Megyek másolja be a sablont.
OKÉ.
Tehát ebben a programban, amit akarok megragad a kora
A három diák során.
Tehát tudjuk, hogy az int age-- és most fogok mondani 0.
Szóval lehet, hogy azt akarom mondani age1, de célokra majd meglátjuk hamarosan,
Azt mondom int age0 egyenlő GetInt.
Tehát ugyanazt a hívást GetInt hogy a korábban használt I
Nem történhet meg kell megkérdezése mondván, "add nekem a korban."
De csak kéri.
>> És age1 egyenlő GetInt.
És int age2 egyenlő GetInt.
Szóval, megint három diák, de végső soron a változó indexek
a age0 keresztül age2.
OKÉ.
Szóval ez a program mindent megteszek akarunk a age0, age1, és age2,
de ez a program végső soron dolgozik három diák.
>> OKÉ.
Szóval most mi van, ha akarom négy diák?
Nos, megyek vissza kell mennie az én kódot, módosítsa a megjegyzést,
és most van egy int age3 egyenlő GetInt.
OKÉ.
Tehát, aki látja a probléma?
Mi a baj ez a fajta beállítás?
Igen.
Szóval létre változó minden tanuló számára.
Most, hogy működik, de végső soron mi van, ha most
azt mondja: "Azt akarom, hogy megragad a kora Nyolc diák vagy 16 diák
vagy akárhány diákok A több száz diák CS50
vagy a több ezer diákok az egyetemen vagy a több milliárd ember a világon?
Így végül ez nem fenntartható.
Bármikor látod magad másolás és beillesztés kód, mint ez,
akkor általában úgy érzi, hogy van egy jobb út.
>> Szóval ez az, ahol bemutatjuk tömb nyilatkozatot.
Tehát, ha egy tömböt, ez az, amit az általános formátum
fog kinézni.
Megyünk, hogy mondjuk a típus.
majd megyünk hogy a neve a tömbben,
mint ahogy mi határozza meg egy adott változó.
És végül mi használ ez a konzol jelölés újra
de eltérő körülmények között hogyan használta azt korábban.
>> Tehát itt ez úgy néz ki, mint egy normál változó deklaráció, amit láttam.
Így láttuk int x pontosvessző előtt.
Hát most talán látni valamit mint int x zárójelben 5.
És, hogy a koncepciót a GetInt program, hogy mi have--
így tudjuk végrehajtani ezt ugyanolyan módon.
>> Mondjuk CS hajlamosak vagyunk használni n ahány valamit.
Tehát itt fogunk tárolni négy diák.
És most azt mondhatjuk, int kor konzol n-- nem egészen értem yet--
egy tömböt négy versenyző.
Szóval ez hogyan fog kinézni memória lesz ehhez hasonló.
Törölje ezt.
És mi lesz, hogy valahol A memory-- teszem ezt odafent.
>> Tehát valahol a memóriában.
Egy kettő három négy.
Van négy egész számot egy sorban Ennek sor négy egész számot.
Tehát, jelenleg, mi a mérete egy ilyen doboz?
Igen.
Ez négy bájt.
Ez 32 bit.
Tehát most ez más a tömb, hogy mi
korábban láttuk, a tömb a karakterek.
Egy karakterlánc minden doboz volt, csak egy byte, mert egy karakter csak egy byte.
De egy sor egészek, minden rovatot kell négy bájt érdekében
hogy illeszkedjen egy teljes egész.
Szóval ez az, amit egy sor Négy ints nézne.
>> És akkor vissza a kódot.
Most szeretnénk ténylegesen áruház egészek be a tömbben.
Tehát most ez egy nagyon, nagyon, nagyon közös vonása, hogy lesz egy bizonyos ponton
válnak az izmok memória.
Tehát int i értéke 0.
i n-nél kisebb.
i plus plus.
Korosztály i értéke GetInt.
>> Szóval ez a for ciklus, ezt a formátumot, akkor kap nagyon használják.
Szóval ez általában hogyan fogunk végighaladni szinte minden tömb.
Most észre ezt a fajta megmagyarázza, hogy miért a kezdetektől
nem volt a hurok megy int i értéke 1, I-nél kisebb vagy egyenlő 10.
Az ok pedig az, hogy kezdődően nulla teszi ezt a munkát jól tömbök.
Tehát tömbök nulla indexelt.
Ha ez a tömb hossza 4, Az indexek 0-tól 3.
>> Tehát át az első iterációjában Ez a for ciklus
mi lesz életkori konzol 0 egyenlő egy hívást GetInt.
Tehát amit én történt adja meg a billentyűzetet.
A második menetben vagyunk beállítás age1 egyenlő GetInt.
Harmadik lépésben, age2.
Utolsó lépés age3.
Tehát, ha az első menetben a hurok Azt írja a 4-es számú, a billentyűzet,
aztán majd illesszen 4 itt.
Ha a második lépésben azt írja 50, feltesszük egy 50 itt.
A harmadik menetben talán adja negatív 1, negatív 1,
és végül, ha belépek 0-- és Most ne feledjük, hogy ez volt-index három.
>> Miután visszanyúlnak, i fog növekedhet a 4.
i már nem kevesebb, mint n, amely 4.
És mi kitörni a hurok.
Szóval mi lenne baj ezzel?
[Hallhatatlan]?
Közönség: [hallható]
>> Igen.
Tehát a tömb csak négy helyen, ami azt jelenti, indexek 0-tól 3.
Tehát, ha ez lenne a helyzet, megtenném hogy a 4-es érték egy bizonyos ponton.
korosztály 4 lesz a beállítás bármi történik, hogy ide
hogy mit kell mondanom, adja 6.
Ez lesz ez a beállítás 6.
>> De nem tudjuk, mi van itt.
Ez nem memória hogy mi volt hozzáférése.
Tehát, ha emlékszel Az előző előadás,
ő kinyomtatja értékeit Zamyla és egy bizonyos ponton ütötte ezt a szegmentáció
hibája. Szóval akkor valószínűleg látni Sok szegmentációs hiba, amit
végre néhány probléma készletek.
De ez az egyik a módszereket, amelyek akkor találkozhat egy szegmentációs
Hiba, ha elkezd hozzáférés memória olyan módon, hogy ne legyen.
Így nem férnek hozzá Ebben a helyzetben és ez hiba.
>> Tehát ez jobb.
Most van mindig egy kis probléma ezzel a kóddal.
És ez alapvetően, hogy mi vagyunk Még mindig beragadt négy diák.
Most, ha akarom használni nyolc tanuló, OK.
Ez nem olyan nagy dolog.
Mehetek, változtassa meg a megjegyzést, és változtatni n.
Most ez fog működni a nyolc tanuló.
Ha tudom lefordítani ezt, és fuss ez azt mutatja me--
hogy felkéri egész nyolc hallgatók és működni fog.
De ez kevesebb, mint ideális, hogy szükség van újrafordítani a programot minden egyes alkalommal
Meg akarom változtatni a diákok száma hogy szeretnék belépni a korosztály számára.
>> Így a végső javulást Ez, mint látni fogjuk here-- vagyunk
fog kérni az embereknek a száma.
Itt van néhány Az emberek a szobában
vagy bármely korosztály ember a szobában.
De megyünk kérni száma Az ember a szobában a felhasználó.
Tehát ez pontosan ugyanaz a do-while hurok, amit eddig láttam.
Ez pontosan ugyanaz a do-while ciklus, amit
megvalósíthat a problémát sor.
Tehát amíg ők belépő egy n kevesebb, mint 1,
így van, hogy a legalább egy személy a szobában.
Mindaddig, amíg ők belépő egy n kevesebb, mint 1,
akkor fogunk tartani kérdezi újra.
Kérjük, írja be a számot Az ember a szobában.
Most, ha megvan a szám Az emberek a room--
úgyhogy lehet, hogy nem adja meg 200 ember ebben a szobában.
Aztán itt lent fogunk jönni és egy tömböt a mérete 200.
Mi nyilvánító tömb, ami belefér 200 korosztály számára.
Jön le, hogy ez a for ciklus hogy kapsz nagyon használják.
Tehát az iterációt ez a tömb, hozzárendelése minden helyre
hogy tömb egy egész szám, és majd végül itt vagyunk
csak arra, hogy egy példát ismételve mint a tömbben, hogy ne engedélyezzenek értékeket,
de elérni értékeket.
>> Tehát itt azt látjuk, hogy azt mondják, egy év múlva,
fő% én lesz% i éves, ahol az első% i i + 1.
Tehát én is ez a mutató változó.
És a második% i lesz a tárolt értéket korosztály tömb plusz 1.
Tehát ez a plusz 1 csak azért, mert mi vagyunk saying-- ezt a plusz 1, korosztály i + 1.
Ez plusz 1 csak azért, mert mi vagyunk mondván, egy év múlva az a személy,
lesz a régi.
>> Akkor miért ez i + 1?
Miért van egy plusz 1 ott?
Igen.
Úgy emlékszem, a tömbök nulla indexelt.
Tehát, ha nyomtat ki ezt a valakit, hogy csak olvasd el a kimeneti,
akkor valószínűleg akarnak látni valamit mint személy egy, személy számú,
lesz 20 éves.
Személyi második számú lesz 15 éves.
Ők nem szeretné látni személy nulla szám 15 éves.
>> Tehát összeállításakor, és csak látta, milyen úgy néz ki, az általam elvártnál létrehozása néhány helyet.
Tedd korosztály összeállítja.
Futás korosztály számára.
Látjuk emberek száma a szobában.
Szóval azt mondom vannak Három ember a szobában.
Age of személyt számú, mondjuk 15, 20, 25.
És most azt mondom egy év most lesz 16, 21, 26.
Lássuk, hogy is működik ez a egy n, amely nem egyenlő 3.
Tehát ha azt mondom emberek száma 5, az egyik, kettő, három, kettő, egy, egy év múlva
akkor lesz kettő, három, négy, három, két éves.
Így tudtam éppoly könnyen lehetett n is 10.000.
Most fogok itt ülni, elég Egy ideig belépő korosztály, de ez működik.
>> Tehát most a memóriában valahova Van egy sor mérete 10.000,
Így végül 40.000 bájt, mert vannak
négy bájt minden egyes ilyen egészek.
Tehát van egy sor mérete 10,000 ahol tudunk
tárolja a korosztály azoknak 10.000 ember.
Minden rendben.
Kérdések bármelyikét ez?
Igen.
Mi van, ha adott egy negatív szám?
Lássuk, mi történik.
Tehát ebben a konkrét case-- száma Az emberek a szobában, negatív.
Úgy elutasította ezt, mert itt történetesen
kell kezelni a tény, hogy ha n értéke kevesebb, mint egy megyünk fel újra.
Ha megpróbálja, hogy állapítsa meg tömb negatív méretű,
ez általában nem működik.
>> Úgyhogy próbáljuk.
Most egyelõre bármi értéküket bemenet n
és csak annyit int korosztály negatív.
Lássuk, hogy még lefordul.
Nem vagyok biztos benne.
Nem.
Tehát korosztály nyilvánították a tömb negatív méretét.
Tehát előre kimutat egy tömb nem lehet negatív mérete és elutasítja azt.
Most, ha nem kezelik ez a do-while ciklus helyesen,
Ha nem lennénk ellenőrzése ha n értéke kisebb, mint 1--
mondjuk mi csak Nem volt ez egyáltalán
és ehelyett csak megragad egy egész szám.
Nem számít, hogy mi integer, mi egy tömböt az ilyen méretű.
>> Így a fordító nem esetleg panaszkodnak most.
Ha fordítsam this-- így nem lehet panaszkodni,
mert nem tudják, hogy én vagyok fog belépni negatív szám,
esetleg érvénytelen.
Minden úgy tudja, talán meg egy pozitív számot,
amely tökéletesen érvényes.
Szóval képzeld el, ha belépek a negatív 1 ember a szobában, szegmentációs hiba.
>> Így ok.
Tehát tegyük hozzá vissza, csak tartsa amit eredetileg.
Úgyhogy győződjön korosztály számára.
Most, ha akarom próbálni egy negatív age-- úgyhogy
azt mondják, van öt ember a szobában.
Age of személyt számú negatív 4, személy három
nulla, személy three-- OK.
Tehát itt, egy év múlva, fő száma Egy negatív lesz 3 éves.
Tehát valószínűleg nincs értelme.
De ez csak azért, mert keres A kód minden, amit csinálsz
kér GetInt.
>> Most, ha meg kellett volna a GetPositiveInt funkció
vagy mi volt csak egyszerűen megtette ezt fajta ugyanazon while ciklus odalent,
akkor ez működne tökéletesen megfelel.
De ebben a konkrét esetben, mi csak nem
történetesen kezelése negatív értékeket.
Bármilyen további kérdése van a tömbök?
OKÉ.
>> Így már most látható tömbök.
És fogunk kell használni ez a parancssori.
Tehát a probléma beállítva two-- Tudom, hogy sokan közületek
talán még mindig dolgozik a probléma szett egy, hanem a probléma meg két Közeleg.
Ezen probléma meg két, fogsz kell foglalkozó húrok, tömbök,
és parancssori.
>> Tehát mi a parancssori paramétereket?
Most láthatjuk itt lent a kis kedvcsináló pontosan mi
fog történni.
Látjuk int main, inc argc, karakterlánc argv zárójelben.
Tehát először próbáljuk értelmezni hogy mit próbál mondani.
Most oké.
>> Tehát a parancssorban kell lennie megszokni néhány ilyen parancsok
Most, és akkor már valószínűleg futni cd a terminál előtt.
Tehát, ha azt mondjuk, cd pset1, tudod, hogy kell
lehet változó a pset1 könyvtárba.
>> Most észre, hogy már soha nem írt egy programot, mint ez előtt.
Minden program, amit írtam, akkor futni, mondjuk pont perjel Mario,
dot perjel kapzsi, és akkor jelenhet meg, a bemenet.
Most, hogy nem ezt Váltson nem.
Amikor futtatja cd, nem akkor azt mondják, melyik könyvtárban akarsz CD-t?
Ehelyett csak annyit, cd pset1, és ez csak azt a pset1 könyvtárba.
>> Tehát hasonlóan vannak más példák.
hogy helló.
Amikor futtatja hogy, hogy nem, akkor azt mondják, melyik programot szeretne tenni?
Csak azt mondom, a parancssori hogy helló.
>> Mozgás egy másik példa.
Ez az egyik haladunk a mario.c fájlt fel egy könyvtárba.
Tehát most már tudjuk, hogy ennek példája mi tényleg elhaladó két érvet.
Van mario.c az első paraméterként, és dot dot A második érv.
És akkor, amikor futtatja hogy Ön látom, hogy nagyon hosszú parancsot line--
hogy nagyon hosszú parancs nyomtatva a parancssorban.
Annak érdekében, hogy hosszú command-- ezt csak egy rövid részét,
de most már három parancssori.
Pont vonal nulla, hello, és hello.c.
>> Tehát ezek parancssori érvek, érvek
hogy te halad a parancssorban úgy, hogy
nem kell kérni ha a program futtatásához.
Nem lenne frusztráló, ha ha Ön futott csenget azt mondta, "OK,
amely program-- amely Fájl Ön összeállítása?
Hello.c.
Mit zászlók ugye szeretne belépni? kötőjel o.
Mit szeretnél A fájl neve?
Helló.
Nem, csak futni csengés dash o Hello hello.c.
>> Így nézett vissza ezt.
Most argc-- argc az az érv számít.
Ez a szám az parancssori érvek beírni a parancssorba.
Nos, argv-- technikailag A v jelentése vektor,
ami lényegében azt jelenti tömb.
De lehet figyelmen kívül.
Argv-- van karakterlánc argv, így karakterlánc argv zárójelben.
Szóval ez egy másik formája tartórudakhoz még nem látott.
Így láttuk konzol jelölést, amikor már azt mondta,
szerű, s karakterlánc egyenlő Zamyla.
s konzol 0 hozzáfér a karakter Z.
>> Mi is láttam zárójelben, ha azt mondta int korosztály zárójelbe 5.
Hogy kijelentette tömb mérete 5.
Tehát itt van egy változata a Zárójelben még nem látott.
Tehát ez a fajta sztring argv, hogy lenne teljesen tisztában
hogy ez csak egy string.
Most a zárójelek hogy ez egy tömb.
Tehát karakterlánc argv konzolok segítségével hogy ARGV tömböt.
Most technikailag egy string van egy sor karakter.
Szóval ez most egy tömböt Egy sor karakter.
De ez sokkal könnyebb gondolkodni ezt csak egy tömböt.
>> Akkor miért lehet a zárójelben lehet üres?
Mint, miért nem tudunk mondani, konzol 5, konzol n?
Igen.
Nem tudjuk, hogy hány bemenetek vannak lesznek.
Tehát, ha megnézzük a csengés például azt mondjuk csenget kötőjel o Hello hello.c.
Ebben a konkrét esetben, ott megtörténjen hogy három parancssori.
És így a brackets-- majd meglátjuk egy második nem lenne három.
Ez technikailag lenne négy.
De a konzolok, mi lenne mondjuk, három.
De most, ha néztük lépés mario.c dot dot, a zárójelben
akarnánk, hogy két bennük.
>> És van egy csomó parancsok Van egy változó számú parancssorban
érveket.
Szóval mi ez a verzió a konzol jelölés azt
az, hogy az ARGV tömböt.
De nem tudjuk, hogy hány húrok közé, hogy tömbben.
És hogyan, akkor tudja, hogyan Sok húrok a tömbben?
Ez a lényege argc.
argc elmondja, milyen hosszú ARGV.
>> Tehát az utolsó dolog, hogy tartsa elme, hogy technikailag,
Maga a parancs számít, mint az egyik A parancssori.
Tehát CD pset1, van két parancssori.
A program önmagában, cd, majd a tényleges érv része, pset1.
Minden olyan program, amit írtam eddig volt egy parancssori argument-- dot
perjel Mario.
Ez az egyetlen parancssori argumentum.
>> Tehát most néztem csengés dash o Hello hello.c.
Tehát mi argc?
4.
Tehát argc 4.
Csengés, így argv konzol 0 csenget.
argv konzol 1 dash 0.
argv konzol 2 hello, és argv konzol 3. hello.c.
OK, így kérdéseket ebben, aztán majd megnézünk néhány programozási példát.
>> OKÉ.
Szóval vessünk egy pillantást hello3.c.
Tehát ezt kell ismerős az egyik első C példák
mi volt, ahol mi csak azt mondjuk, helló világot, de most ez az általánosabb.
Tehát itt vagyunk köszönnek % s backslash n argv konzol 1.
Notice-- így Eddig a pontig, ez amit a sablon fájl nézett ki.
Volt int main (void), és akkor azt tenni valamit a fő funkciója.
Most ahelyett, egyszer elkezdjük foglalkozó A parancssori,
meg kell jelölni a különböző formájú fő.
>> Így nézett hello3 újra, a fő megy
hogy két érv now-- int argc, száma parancssori,
és vonós argv zárójelben, a tényleges húrok beírni a parancssorba.
Így fogok változtatni, hogy sablont, hogy tükrözze ezt a tényt.
Most, amikor írsz egy programot, ha nem
szükség semmilyen parancssori érvek, akkor csak használ int main (void).
De most, amikor írsz parancssori argumentum programok, amelyek
fogsz csinálni a problémát állítsa two-- így most, hogy futsz
programok kell, hogy parancssori,
akkor szükség van a fő ebben a formában.
>> Tehát here-- ez a nagy használati A parancssori argumentum.
Tehát nyomtatás argv 1.
OK úgyhogy fordítsd és futtassa a program.
Győződjön hello3.
Lefordítja.
Dot perjel hello3.
És mondjuk, "Rob."
Szia Rob.
Ha azt mondom, "hello Maria," hello Maria.
Helló Maria.
Hannah még mindig azt mondja, "hello Maria ", mert nem vagyok
csinál semmit a mi argv 2.
Argv 2 lenne most "Hannah."
ArgC lenne 3.
Mi van, ha én tettem?
Szóval helló null.
>> Ő röviden érintette az a tény, hogy technikailag, getString
talán visszatér null, de mi lesz a sokkal több a mi null valójában.
De hogy ez ügyként Tény, hogy nem általában rossz.
Mi volt valami baj, ha ez a nyomtatás "hello null."
És az ok csináltunk Valami baj is-- is,
amikor futottam pont perjel hello3, argc volt 1.
Tehát ez azt jelenti, a hossza argv volt 1.
Ha a tömb hossza 1, az egyetlen érvényes index nulla.
És így van argv 1 kívül tartományban ezt a tömböt.
Hasonló volt a előtt, amikor megpróbáltam tárolására 6 kívül a végén a tömb.
Szóval próbálok elérni valamit kívül a argv számít,
és mi vagyunk egyre null.
>> Tehát egy jobb változata ez egy javulás,
kifejezetten ellenőrzése argc.
Tehát, ha argc = 2, ami azt jelenti, hogy futott valami ilyesmit dot perjel hello3 Rob.
És kiírja a "hello Rob."
Ha argc nem egyenlő 2, akkor csak megy
hogy figyelmen kívül hagyod fel A parancssori argumentum
a parancssori.
Vagy ha nem hozott semmilyen egyáltalán, ez csak úgy, hogy figyelmen kívül hagyja azt, és csak azt mondom,
"Szia te."
>> Szóval összeállításakor.
Győződjön hello4.
És fut hello4.
Futó ezt így, mit kell nyomtatni?
"Szia te."
Szia te.
Mi a helyzet hello4 Rob?
"Hello Rob."
És végül, helló Rob Maria csak "hello you" újra,
mert nem igazán foglalkozni valamit, hogy ez várható.
Beírt több nevet mint hogy lehetne kezelni,
Tehát csak alapertelmezesben A hello you viselkedését.
Tehát kérdéseket ebben?
Vagy parancssori?
>> OK, így egy pillantást vetni a Néhány példa a segítségével
parancssori arguments-- első mi argv kötőjel 1 pont c.
Tehát a hozzászólások odaad, amit ez a program kell tennie.
De észre now-- ez a for ciklus, ez megegyezik a pontos minta
Azt mondtam, mielőtt.
Mi csak történetesen Az ARGC helyett n.
Most argc valóban az n.
Ez a hossza a argv tömb.
Szóval az iterációt argv tömb printf-nek minden argv értéket.
>> Tehát ha én ezt.
Tedd argv 1.
Lefordítja.
Dot perjel argv 1.
Csak futás ez, nyomatok dot perjel argv 1
mivel ez volt az egyetlen parancssori argument-- a program nevét.
Mindig lesznek a least-- argc nem lehet kevesebb, mint egy,
mivel mindig lesz legalább a program neve futni.
Tehát argv 1 Rob kinyomtatja argv 1 majd az új sor "Rob."
>> Tehát az első iterációban E hurok, i értéke 0.
Argv 0 a program nevét.
Dot perjel argv 1.
És akkor argv 1 az első parancssori argumentum, amely Rob.
Ezen a ponton, mi egyenlő argc.
Mi kitörni a hurok, és már készen is vagyunk.
Tehát ez működni fog egy tetszőleges számú parancssori.
Figyeljük meg, hogy a nyomtatás argv 0, argv 1, argv 2, argv 3, 4 argv.
És nincs argv 5.
argc egyenlő 5.
Tehát argc-- meg az i értéke 5, törjük ki a hurok.
OKÉ.
Tehát kérdésre, hogy mielőtt nézd meg egy összetettebb példát?
>> Tehát argv 2.
Minden rendben.
Szóval még nyomtat A parancssori.
De most már észre egy beágyazott hurok.
Tehát mi csinál ez?
Tehát az első kör csinál Pontosan mit tett korábban.
Még mindig loop felett Minden parancssori argumentum,
de most ez a második loop-- voltunk is láttunk ilyet korábban.
Amikor az iterációt Zamyla kinyomtatásával Z-A-M-Y-L-A.
Tehát ez a második körben az int j egyenlő 0, n értéke strlen az argv konzol i.
>> Szóval nézzük először gondolkodni the-- sétáljunk át.
Gondoljuk mi a számítógép is teendő, ha futottam ezt a programot, csak pont
perjel argv kötőjel 2.
Tehát ha futottam ezt a kódot, majd argc lesz egyenlő 1.
És vonós argv-- már csak lesz az egyik index argv,
és hogy lesz egyenlő dot perjel argv 2-- a program nevét.
>> OK, így most az i értéke 0, i-nél kisebb 1, i plus plus for int j értéke 0,
n értéke strlen az argv konzol 0, így Az első iteráció e hurok. argv
konzol 0 pont perjel argv 2.
Tehát mi a hossza, hogy a húr?
Nos, pont perjel A-R-G-V kötőjel 2.
Tehát strlen az, hogy lesz 8.
Tehát j értéke 0, n értéke 8.
Amíg j értéke kevesebb mint 8, J ++.
És, hogy mi lesz nyomtat egyetlen karaktert, amely
az argv konzol i zárójelbe j.
>> Tehát az egyetlen i nulla.
Még mindig csak egy parancssori argumentum.
Ebben az első iterációs A for ciklus vagyunk
lesz a nyomtatás argv tartó konzol 0 0.
És akkor j fog növelni.
És mi lesz a nyomtatás argv tartó konzol 1 0.
És akkor argv konzol 0 konzol 2.
>> Tehát ez az első találkozás A többdimenziós tömböket.
Emlékezz korábban, hogy azt mondtam hogy argv technikailag
egy sor tömbök karakter.
Tehát itt, ha valami olyasmit mondott s sztring egyenlő argv tartó i,
aztán azt mondtam, s konzol j, ez lenne véghez ugyanezt.
Most, hogy már láttam s konzol j előtt.
Ez csak elérni a j-edik jellegű ez a húr.
Tehát ezt, mi egyre a j-edik karaktere az i-edik argv.
>> Szóval mit kell ez végső soron kimenet?
Tedd argv 2.
Lefordítja.
Dot perjel argv 2.
"Rob Maria Hannah" és ad nekünk egy kis helyet.
Tehát azt látjuk, hogy ez a kimenetre dot saját vonal és perjel
saját vonal és egy külön sorba.
Ez kinyomtatásával egyes Az egyéni jelleg
Az egyes parancssori argumentum.
És akkor közéjük, emiatt az új vonal
mi nyomtatás idelent, a köztük ez lesz nyomtatni egy új sort.
>> Szóval ez hasonló Az előzetes argv kötőjel 1,
amely nyomtatott egyes parancssori argumentum,
de most már nyomtat A parancssori
majd iterációjával keresztül minden karakter minden egyes parancssori argumentum
hogy ezt a kimenetet.
OKÉ?
Tehát kérdéseket ebben?
>> Egy dolog megjegyezni, hogy parancssori arguments--
így azok szóközzel elválasztva, mint akkor persze elvárják, hogy legyen.
Tehát egy string lehet szóközök.
Ez nem szuper fontos, de ha én akarta, hogy a harmadik parancssori argumentum
hogy van egy tér benne, akkor én Mondhatnánk valami ilyesmi.
OKÉ?
Szóval ez most még csak három parancssori arguments-- is 4.
Dot perjel argv kötőjel 2, Rob, Maria és Hannah Bloomberg.
OKÉ.
Kérdések erről?
>> Nincs semmi különös a szóköz.
Ez csak előfordul, hogy lehet, hogy a parancssori kezeli a szóköz
mint hogyan elválasztásához érv.
Minden rendben.
Így aztán Probléma szett two-- fogsz lenni
nézett titkos kulcsú titkosítás.
Tehát, hasonló példa láttuk A Christmas Story,
fogsz végrehajtó egyes algoritmusok, hogy mivel egy üzenetet,
fogsz tudni titkosításához, hogy az üzenet
hogy csak valaki, hogy titkos gombot, ezzel a dekóder gyűrű,
képesnek kell lennie arra, hogy dekódolni.
>> Tehát ez a standard változat.
Te leszel végrehajtási két különböző változatban.
Ha történetesen egy pillantást A hacker edition-- most,
fogunk adni Ön egy string, mint ez,
ami egy titkosított jelszót.
Tehát a cél az, hogy kitaláljuk, mi a dekódolt jelszó.
Most tulajdonképpen így jelszó vannak tárolva egy csomó számítógépek,
és ez csak tárolja ezt véletlenszerű karaktersorozatot.
Meg kell kitalálni, hogyan lehet eljutni a véletlenszám karaktersorozatot
hogy mi az eredeti jelszót volt.
>> És végül, miután ez probléma szett, be
képes megérteni, mit jelent ez.
Így megtudhatja, hogyan kell dekódolni ez a fajta véletlen sorozatot.
Hasonlóképpen, ha eszébe jut hétről 0, lehet, hogy láttam ezt az URL.
És meg kell tenni, hogy visszafejteni ez végül.
Lehet, hogy nem lesz boldog, ha visszafejteni, és kattintson a linkre.
Minden rendben.
Ennyi mára.
Így a jövő héten!
>> [Elektronikus zene szól]