>> SPEAKER 1: Rendben.
Isten hozott.
Ez a második hét a CS50, és mi eddig már a funkcióit, de
nagyrészt őket adni.
Már használt printf, amely a mellékhatása nyomtatás
dolgokat a képernyőn.
Már használt kap-int, hogy lebeg.
>> De mi van, ha tényleg akar létrehozni saját függvényeket, mint néhány
lehet, hogy már megkezdte a tenni probléma az egyiket, de
nem feltétlenül szükséges?
Nos, menjünk előre, és újra, hogy probléma, csak kéri a felhasználót a
nevüket és nyomtatás valamit a képernyőn, de próbáld meg néhány tényező
Az egységesség, hogy már látható a kód eddig.
Tehát az, hogy értem a következőket.
>> Én megyek előre, és hozzon létre Egy új program, csak hívja
azt hello.c a szokásos módon.
Én megyek előre, és magam közé tartoznak a standard io.h a tetején.
Megyek is, hogy magamnak megelőző jellegű a CS50 könyvtárat, hogy a
Nem értem kiabált a fordító.
És most megyek előre és kijelentik, int, a fő, érvénytelen.
>> És akkor itt, ez az, ahol szeretnék kezdeni, hogy kiszervezi funkciókat
más funkció, hogy én magam vagyok fog írni, de ez nem
jelenleg nem létezik.
Például, tegyük fel, hogy szerettem volna írjon egy funkció, amely lehetővé teszi számomra, hogy
kinyomtatni hello, vessző, majd néhány felhasználó neve.
Ahelyett, hogy a folyamat még mindig printf hello,% s, nem lenne jó, ha
még csak egy függvény neve nem printf hanem print név?
>> Más szóval, azt akarom, hogy képes legyen írni egy programot, amely nem egy kis
valami ilyesmi.
Először is, fogom mondani a printf név, ami arra kéri a felhasználót, hogy
adj saját nevét, és akkor én vagyok fogja használni a megszokott karakterlánc s
kinyilvánítására string.
Adj egy változó string típusú, hívják s, és tárolja, hogy a
eredményeképpen a hívás, hogy string.
De most a héten korábban, azt is kissé unalmasan kész hello,% s / n.
>> És más szavakkal, láttuk ezt Például egy csomó idő, és ez egy
triviális például azért, mert csak egy kódsor, így tényleg nem
nagy dolog, hogy ne írja be újra.
De tegyük fel, hogy ez a sor a kód valójában váltak a terhet, és
ez nem egy sort, de ez 10 kódsor egy pár hét múlva,
és csak most fáradt A másolás és beillesztés, vagy
újra beírni, hogy ugyanezt a kódot.
Nem lenne jó, ahelyett, hogy printf hello,% s és így tovább,
Nem lenne jó, ha még csak függvény nevű nyomtató nevét,
vesz egy érv -
más szóval, hogy úgy bemenet -
majd pontosvessző.
Annak érdekében, hogy a funkció, nem igaz jó lenne, ha létezett?
Akkor nem kell aggódnia mi printf, mi% s, és az összes
ezek a bonyolult, amelyek nem olyan érdekes.
Ezek hasznosak.
>> Tehát print név, sajnos, nem volt kitalált mintegy 40 plusz évvel ezelőtt.
Senki sem gondolta, hogy írja meg.
De ez a szépség, amelyek a programozási nyelv, mint a
Scratch lehet egyedi blokkokat, így a C és a legtöbb bármilyen nyelven, ugye
meg a saját funkció, lehet határozná meg a saját funkcióit.
Így még akkor is, hogy a fő automatikusan ingyen, azt mondhatjuk
saját funkciókat.
>> Így fogok tenni néhány szoba itt fel tetején, és megyek, hogy állapítsa meg a
saját funkciója, hogy fog kinézni a kicsit furcsa először, de mi jön
vissza erre nemsokára.
Fogok mondani érvénytelen, így jelezve, ez a funkció nem
valami, van mellékhatása, de a nem tér vissza nekem valamit a
ugyanúgy, hogy int vagy A string maga nem.
És én fogom adni ezt a funkciót a nevét a nyomtatott név, és megyek
meghatározza, hogy ez a fickó fog tartani egy string, és én fogom hívni, hogy
karakterlánc nevét.
Nevezhetném, amit akarok, de azt akarom kódot magától dokumentálása.
Más szóval, ha az egyik meg volt, hogy nyissa meg ezt a fájlt, és olvasd el, akkor
valami arra következtetnek a nevét, hogy a input milyen szerepet kéne játszani.
>> És most elmaradt, fogok nyitni zárójel és zárt kapcsos zárójel,
és így észre én ugyanezt a minta vonalakon négy a hét, mint
Én már a következő egy jó hét + Most, mondjuk, vonalak és kilenc
14 alkotó fő.
Más szóval, nyomtatás név egy másik funkció.
Most, a fordító nem fogja tudni nevezni ezt a dolgot automatikusan
mert szó szerint csak kitalálták, de ez még mindig tudja, hogy hívja fő
automatikusan, és persze a 13. sor, hívom a saját funkciója.
És azért, mert én úgy nyilatkozott, hogy a funkció up on line négy főétkezések előtt,
ez fog tanítani a fordító milyen idézet, idézet vége, "print name"
jelent és mit kell tennie.
Szóval valami, hogy ez egy új egyéni blokk keretében, mondjuk, semmiből.
>> Tehát itt, tudom rakni, hogy nagyon gyakori vagy ismétlődő minta kódot tartok
írásban az osztályban, printf % S hello,% s / n ", -
mit szeretnénk, hogy itt?
S?
Szóval azt akarom, hogy név ebben az összefüggésben.
Így észre egy kis kettősség itt.
Mert én nyilvánította a saját funkciója és én kissé önkényesen hívott
azt nyomtatandó nevet, mert én már meghatározott zárójelben, hogy ez a
függvény egy argumentummal, hogy milyen amely a szöveg -, így ez egy szó
vagy kifejezést, vagy valami ilyesmi - és Hívom ezt az érvet nevemben, hogy
jelenti az egyetlen változó, hogy van a körét, hogy úgy mondjam, nem nevet.
>> S csak azért létezik a között, amit két zárójelek, természetesen?
Hát tényleg, mint egyenes 10 és 14, így, mint én, hétfőn nem használható
S, de mit tehetünk, át S a nyomtatás nevét.
Print név csak azért történik, hogy ez Alias, szinonimája, a becenevet,
nevezni név, és most használja ebben a sorban.
Tehát most hadd mentéséhez, kicsinyítés.
>> Hadd menjek előre, és helló.
Jól néz ki.
Nem köpte ki a hibákat. . / Hello, Enter.
Mi a nevem?
David.
És helló David.
Tehát egyáltalán nem olyan izgalmas, de gondoljunk csak most.
Most már, hogy ugyanazon összetevő mint mi a semmiből
hogy saját funkcióit.
>> De van egy kis megvagy.
Tegyük fel, hogy én még nem gondoltam ezt át, és én tényleg nem
igazán gondolkodtam rajta írta ezt a funkciót le ide.
Olyan tökéletesen ésszerű.
A Scratch nincs fogalom A helyet a szkripteket.
Valaki tehetne egy ide, egy ide, Egy itt, és talán újra
nézni egy kicsit rendetlen, ha nem tedd ki szépen, de nem
számít, ahol fizikailag a szkripteket a képernyőn voltak.
Sajnos C -, és ez nem olyan, mint nyelvek, mint a Java és Python
és mások, hogy lehet, hogy ismerős a - sajnos C, sorrendben nem
számít, mert nézni, mi fog most történni.
>> Az alapértelmezett funkció folyik végrehajtani, természetesen, a fő.
Fő fog hívni print név vonal nyolc, de sajnos, a
fordító nem is tudják, hogy a nyomtatott név létezik, amíg nem lesz a 11. sor,
ami sajnos lesz túl késő.
Tehát lássuk, hogy helló.
És most átkozott, két hiba keletkezik.
Tehát most hadd lépjünk fel a nagyon először, hiszen mindig van, és
észre, hogy kiabál rám, "Implicit nyilatkozat funkció
nyomtatás nevét. "
>> Így láttuk ezt az üzenetet korábban, implicit nyilatkozat funkciót.
Amikor láttuk, hogy az ilyen hiba?
Amikor nem könyvtár.
Ha elfelejtettem cs50.h, és azt, hogy kiabált az, hogy szöveg vagy kap int.
De ebben az esetben, ez a funkció nyomtatási Név nincs benne a könyvtár, nem igaz?
Ez szó szerint ebben a fájlban, így ami igazán a probléma?
>> Hát sajnos a C, ez visz hihetetlenül szó, hogy ha
szeretnék egy függvényt nevű nyomtató nevét létezik, akkor sem kell végrehajtani
ezt a funkciót az egyik legfontosabb a kódot, hogy ez elérhető, hogy alacsonyabb
funkciók, de őszintén szólva, ez lesz hanyag nagyon gyorsan.
Én személy szerint olyan, mintha az első fő mert akkor ez nagyon világos, hogy mi a
program nem első pillantásra.
És plusz, akkor kap a furcsa sarokba esetben, ahol, ha x akarja hívni
y y de nevezhetnénk x, csak fizikailag nem lehet ténylegesen egy
a másik felett.
>> De kiderült C, akkor megoldani ezt a nagyon egyszerű.
Megyek, hogy egy kis helyet itt, és én csak úgy
megelőző jellegű, bár kissé redundáns, majd tanítani a
fordító, hogy létezik egy függvény vagyis a nyomtató nevét, akkor vesz egy string,
és én fogom hívni azt nevet pontosvessző.
>> Szóval ez már sorban négy, amit még nem látott, a nyilatkozat
függvény print nevet, de ez csak egy ígéretet, hogy ez a funkció
végül meg, végül végre kell hajtani.
Ez most már hagyja egyedül, mert most ez a definíció, a
végrehajtása, a fajta az utolsó mérföld végrehajtásának a
adott funkciót.
Tehát őszintén szólva ez hülyeség, ez bosszantó, de ez az út C, és ez
mert ez visz nagyon szó és, mint egy számítógép őszintén kellene,
nemcsak hogy pontosan mit mondani, hogy van, és hogy a rendezés fontos.
>> Így tartsa szem előtt, és ismét elkezdi észre az újabb mintákat.
Esély lesz, ha nem Már kezd találkozni üzenetek
mint ez, hogy első pillantásra úgy tűnik, teljesen rejtélyes, de ha elkezd
keresni ezeket a kulcsszavakat, mint a "Implicit nyilatkozat" megemlíteni a
funkció ebben az esetben - és őszintén szólva, néha kap egy kis zöld
sárgarépa szimbólum, amely megmondja, hogy hol a probléma valószínűleg az -
kezdhetjük a munkát végig még nem látott hibaüzenetek.
Bármilyen kérdése az írásban a saját funkció ilyen módon?
>> Csináljunk valamit, ami a kevés vonzóbb.
Ahelyett, hogy csak tenni valamit, hogy van mellékhatása a nyomtatás, engedj el
előre, és mentse az új fájlt, és mi hívja ezt positive.c, annak ellenére, hogy
lesz egy kicsit más versus utoljára.
És ebben az időben, azt akarom, hogy újra végrehajtani utoljára a positive.C például, amely
az kényszeríti a felhasználót, hogy nekem egy pozitív egész szám.
De meg kellett használni, hogy int utoljára.
Nem lett volna szép, ha nem volt függvény neve kap pozitív int
, hogy én is csak kiszervezik ezt darab funkciót?
Tehát a különbség itt fogjuk végre kap pozitív int, de ellentétben
print név, amely már a mellékhatással - nem tért vissza valamit, hogy nekem, mint
a szám vagy a szöveg -
kap pozitív int, természetesen, majd a vissza, remélhetőleg pozitív int.
>> Szóval erre.
Tartalmazza cs50.h, tartalmazzák a standard io.h.
Int main semmis.
És most itt, én megyek előre és mondjuk int, nevezzük n értéke
kap pozitív int.
És csakúgy, mint kapni int már létezik mert a személyzet írta, én megyek
vállaljon a pillanatban, hogy kap pozitív int létezik, és most megyek
hogy menjen előre, és azt mondja: printf, köszönöm a% i / n ", n.
>> Tehát most, ha úgy fordítani ezt a programot, amit fog történni az én terminál
ablak alján a képernyőn?
Megyek talán kap, hogy a ugyanazt a hibát, mint korábban.
Így próbáljuk meg.
Legyen pozitív.
És ismét, implicit nyilatkozat funkció, hogy a pozitív int.
Így meg tudjuk oldani ezt a egy pár módon.
Fogom tartani, hogy egyszerű, és csak tette a nyilatkozatot, és itt kap
pozitív int.
Szükségem van az úgynevezett aláírás.
Az aláírás csak utal Az esztétikum a
első sorban a program.
Szóval mit kéne pozitív int cserébe?
>> Így egy int.
Úgy értem Ideális esetben visszatér olyasmi, mint a pozitív int, de
nem létezik.
Már nem láttam, hogy többek között az adatok típus, ezért kell foglalkozni a
tény, hogy nagyon kevés adattípusok dolgozni.
De akkor vissza egy int, és csak bízom benne, hogy pozitív lesz.
Ez lesz a címe kap pozitív int.
>> És most mi a helyzet az érveit?
Tart bármilyen adatot?
Vajon szüksége nincs a felhasználók?
Így nem kell tudni előre semmit.
A string nem, hogy nem int.
Printf nem - hogy szüksége van némi input átment - és print név
kellett egy kis bemenet, de most pozitív int nem.
Így fogok kifejezetten mondja a fordító semmis.
Void, hogy nincs semmi másra.
Így érvénytelen módon semmi sem fog benne azok zárójelek pontosvessző.
>> És most az alján a fájl - és megint, én csak, hogy milyen az anális
itt amivel fő a tetején, amely jó gyakorlat, mert így,
amikor csak vagy valaki más megnyitja a fájlt, a
funkció ott van.
Lehet merülni a tér egy.
Szóval most fogom megismételni ezt, kap pozitív int érvénytelen, de nem vagyok
fog ütni a pontosvessző most.
Fogom nyitni zárójelek, és most kölcsön kell kérnem
néhány ötlet a hétfő.
>> Szóval, ahogy emlékszem, csináltunk valamit mint ezt a következő, míg
valami igaz.
És mit tegyek?
Én valami ilyesmit ad nekem egy pozitív egész szám,
kicsit gyors.
Jól jönne olyan szavakat akarok.
És akkor én mit használt?
Int n értéke int kap, nem érveket is.
>> És vegyük észre a különbséget.
Ha hívja a funkció, amikor használja egy funkciót, akkor nem hozott semmis.
Csak csinálni, hogy amikor nyilvánító funkció, a tanítás a fordító milyen
meg kell várni.
Szóval nem kell tenni elvesztésével ott magad.
>> És most mi volt az állapotom?
Nos, n nem egyenlő a pozitív, de ez csak pszeudo-kódot.
Szóval hogyan tudom kifejezni ezt tisztábban?
Tehát kisebb vagy egyenlő nullával.
Tehát még egyszer, észre meg tudod csinálni kisebb vagy egyenlő.
Annak ellenére, hogy két külön szimbólumok, meg tudod csinálni a
a billentyűzet, mint olyat.
>> De van még egy hiba, ami Elcsesztem utoljára is.
Azt be kell jelenteniük -
Pontosan.
Azt be kell jelenteniük n kívül a hurok.
Szóval kell tenni n itt, és én nem szeretnénk, hogy újra nyilvánítja itt
nehogy kapok egy új változó.
Csak azt akarom, hogy értéket rendelni itt.
>> És most nem is történt itt.
Hadd túltenni magam és úgy tenni, mintha én végeztem.
Legyen pozitív, és most van egy új hiba.
A program eléri végén nem-void funkciót.
Így az új hibaüzenet, de ha kedves Az kötekedik mellett minden szóval,
valószínűleg utal, hogy mi a baj.
>> Irányítani.
Szabályozás csak azt jelenti, hogy a rend műveletek a programban.
A számítógép a kontroll és valami elromlott.
Tehát ez eléri a végét egy nem-void funkciót.
Milyen funkció látszólag utalva?
Milyen funkció nem érvénytelen?
Szóval pozitív int, és egy kicsit zavaró, hogy jól,
ez a fajta semmis.
Ez egy specifikációját üres a maga érvek, de a kimenet fog
lehet N típusú.
Tehát a szó a bal oldalon a úgynevezett visszatérő típus.
A szó a belső itt A nulla vagy több érvet
hogy a függvény.
>> Szóval mit kell tennem?
Ezen a ponton az én kódot, line 21 ahol A villogó prompt most, én
pozitív int belül A változó nevű n.
Hogyan adja vissza a főoldalra?
Szó szerint.
Vissza N pontosvessző.
>> Szóval, ahogy Colton visszatért egy darab papírt választ nekem csepegés
hogy a darab papírt a kis fekete dobozt az asztalra, hogy ezt, hogy
kódot, akkor a szó szoros értelmében csak írni, vissza n, és ez mintha Colton volt
átadta nekem valami fizikai vissza.
Ebben az esetben az történik, hogy pozitív int megy visszaszolgáltatni
mi feltehetően pozitív integer kinek?
Hol ez az érték a végén?
Hogy végül ezt a változót, n, és akkor folytassa a vonal kilenc.
>> Tehát más szóval, annak érdekében a műveletek, a program elindul
végrehajtása, valamint a fordító rájön, ó, szeretné, hogy a könyvtár?
Hadd menjek megragad bármi van benne, hogy az.
Ó, akarsz a szokásos IO könyvtár?
Hadd menjek megragad bármi van benne, hogy az.
Mit jelent a fordító mondja magát amikor eléri a négy vonal?
Ó, akkor megígérte, hogy hajtsák végre a nevű függvényt kap pozitív, de
mi lesz vissza, hogy később, valami ilyesmi.
>> Int main üresség csak azt jelenti, itt az a belek a programom.
Vonal hét csak egy zárójel.
Vonal nyolc azt mondja, a bal oldalon, hogy én 32 bit integer, hívják n.
A jobb oldalon, ez mondván, hogy a pozitív int.
Most szünet, hogy a történet, mert most Én nem úgy mozgatja a kurzort.
Saját kurzor most megy le ide, mert most kap pozitív int végrehajtja.
Int n nyilvánítják.
Tegye a következőket.
Printf ad nekem egy pozitív egész szám.
>> Kap egy int a felhasználó, tárolja n és talán ezt újra és újra.
Ez a ciklus azt jelenti, hogy ezt a kódot esetleg végre fel és le, mint ezt újra
és újra, de amikor a felhasználó végül együttműködik, és ad nekem egy pozitív
int, elütöttem line 21, ekkor a szám adják vissza, és melyik
érdemes kiemelni most?
Kilenc.
Ellenőrzés, hogy úgy mondjam, visszatér a sorban kilenc.
Ez az a vonal, amely most a főnök.
>> Szóval ez az, mi történt az összes Ez idő alatt a motorháztető, de
amikor már használt funkciókhoz, mint a printf vagy még csak szöveg, hogy valaki más
írta neked, ellenőrzés volt, hogy átadta ki, hogy valaki másnak a kód sort
a sorban.
Ez egyszerűen nem lehetett látni, és nem igazán ábrázolni ebben a
programot, mert ez valami más fájlt a merevlemezre
tudtán kívül minket.
Szóval tulajdonképpen össze és futtassa ezt most.
>> Legyen pozitív.
Töltsd ki, ez folyamatban van.
. / Pozitív.
Adj egy pozitív egész szám.
Legyünk nehéz.
Negatív 1.
Zero.
Adjunk 50.
Köszönöm a 50, és így ellenőrzése most visszatért.
Bármilyen kérdése van, akkor, hogy?
Igen?
>> [Hallható].
>> Mondd újra.
Oh, jó kérdés.
Szóval lehet, hogy észre a párhuzamot, amely Én vagyok a fajta vágás sarkot.
A 12. sorban, azt mondom, hogy pozitív int vissza egy int, de ugyanez
logika, most értetődik, hogy a soros hathengeres, azt mondom, hogy a fő tér vissza
int, de mi van soha volt valamelyik program?
Soha nem volt említés a ez a kulcsszó vissza.
>> Így kiderül, hogy a C-ben, legalábbis változata az, hogy mi a
1999-ben készült, gyakorlatilag ez történik automatikusan.
Bármikor végre a programot, és végre egy funkciót nevű fő,
hogy a függvény nullát fog visszaadni a alapértelmezés, ha nem mást,
és nulla csak egy konvenció.
A világ visszatér nulla ezáltal azt jelzi, hogy minden rendben van,
hatékonyan így nekünk négymilliárd lehetséges dolog, hogy mehet
rossz, hogy ha visszatérünk az egyik, hogy a talán jelzi a kód azt jelenti, hogy ez a
dolog rosszul sült el.
Tudtuk vissza két, ami azt jelenti, ez a dolog rosszul sült el.
Tudtuk vissza négymilliárd, ami azt jelenti, ez a másik dolog rosszul sült el.
>> És ha most gondolj a saját PC vagy Mac, akkor lehet, hogy emlékeztetni arra, hogy
néha kap rejtélyes hibaüzenetek a szoftver, hogy te
segítségével, és néha van egy ember barátságos leírás, de van
gyakran kód vagy szám a képernyőn?
Ha ez nem jön szóba, csak tartsa a szemét érte.
Ez az, amit ezek a tipikusan kódok utalva.
Ők szerepelnek a Microsoft Word és a más programok, így ha a fájl
hibabejelentést a cég, akkor mondd meg nekik, ó, kaptam hibaszám 45.
És néhány programozó vissza a vállalat nézd, hogy akár a saját
kódot, és azt mondják, ó, ez azért van, mert csináltam ezt a hibát, és ezért a felhasználó
kapta ezt az üzenetet.
>> De őszintén szólva, ez csak egy kis zavaró és egy kicsit unalmas, hogy
következtetni, hogy legalább a mi első néhány programot, így már
már kihagyását.
De ebben az időben mindenki a funkciók fő titokban volt ez
sor automatikusan az Ön által fordító, csak megállapodás szerint a
menteni egy kis időt.
>> [Hallható].
>> Nem kell, hogy tartalmazza azt a fő.
Ez rendben van.
Önnek nem kell, hogy tartalmazza, ha volt, végrehajtó funkció, mint ez.
Ellenkező esetben a funkció lapos ki nem fog működni.
De fő, ez nem szükséges.
Egy-két hét, akkor kezdeni, hogy abba a szokás, ha szeretnénk kezdeni
jelezve hibákat.
Nagyon jó kérdés.
>> Olyan gyorsan verbális szünetet is beszélve, hogy ez a péntek, nem fogunk ebédelni
önmagában, de fogunk vacsorázni néhány diák és a személyzet.
Ha szeretné, hogy csatlakozzon hozzánk, érezd szabadon menni cs50.net/rsvp.
06:00 a péntek.
A tér, mint mindig, korlátozott, de majd továbbra is csinál ezeket közel
heti, ha a tér elfogy ezen a héten.
>> Tehát a Cliffhanger, hogy abbahagyta Hétfő volt, hogy a húrok valóban
indexelt be, ami éppen azt jelenti, hogy lehet kapni az első karakter, a
második karaktert, a harmadik karakter és így tovább, mert akkor
hatékonyan gondolom, egy string, mint a hello, mint ebben az esetben öt
levelek belsejében dobozok.
És lehet kapni minden egyes ilyen doboz, amit szintaxis tettünk
be hétfőn?
Azok a szögletes zárójelek a billentyűzeten.
Ez csak azt jelentette, menj helyre nulla.
>> Kezdjük számláló nulla, így tartó nulla jelenti h, konzol egy
jelenti e, és így tovább.
És így minden alkalommal, amikor már a vonósok és beírni a "hello"
és a "világ", és más dolgok a képernyőn, ez már tárolva
dobozok, mint ez.
És hogy egy kitalálni.
Mit jelent fizikailag minden doboz belsejében a számítógép?
>> [Hallható].
>> Tessék?
>> Karakterek.
>> Tehát egy karakter, természetesen abban az esetben, a vonósok, és a karakter csak
nyolc bit vagy egy byte.
Szóval valószínűleg legalább homályosan ismeri azt a tényt, hogy a
számítógép memóriájában.
Ez két típusú memória, legalább.
Az egyik a merevlemez, ahol menteni dolgok folyamatosan, és ez
általában nagy, így lehet filmeket és a zene, és így tovább.
>> Aztán van egy másik típusú memória néven RAM, R-A-M, Random Access
Memória, és ez a típusú memória használt, ha a számítógép
fut, de ha elveszíti a hatalmat, vagy a akkumulátor meghal, bármit, hogy a tárolt
A RAM eltűnik, ha elveszíti a hatalmat teljesen, mert ez nem
tartós.
Akkor általában, ezekben a napokban, a koncert is, két koncert, talán több.
És a fejjel a RAM, hogy ez sokkal sokkal, sokkal gyorsabban, mint a merevlemezek
vagy akár SSD meghajtók ezekben a napokban, de ez általában drágább, így
akkor kevesebbet.
>> Így a mai beszélgetés igazán utal RAM-ba, hogy a memóriával rendelkezik, amely
már csak, amíg van áram hogy táplálják be a számítógépet.
Tehát, amikor begépeli a H-E-L-L-O, meg az Enter a billentyűzet, a H megy egy
byte RAM, az E megy a egy byte RAM, mint
a többi szó.
Tehát arra, amit sikerült hogy nem utoljára volt ez.
Hadd menjek előre, és megnyitja a fájlt hogy hívják string.c, és felidézni
hogy úgy nézett ki, egy kicsit valami ilyesmi.
Hadd valóban visszatérhet, és változtassa hogy pontosan úgy nézett ki,
húr hossza s.
>> Tehát nézd meg a programot itt.
Mi is a CS50 könyvtár olyan hogy tudjuk használni, hogy string.
Mi is szabványos io.h így tudjuk használni printf.
Miért mi is string.h?
Ez az új, hétfőn.
Így akartuk karakterlánc hosszát.
Str leng.
Az emberek úgy döntött évvel ezelőtt, nézzük csak rövid.
Ahelyett, hogy "string hossza," nevezzük "str leng", és hagyja, hogy a
világ kitalálni, és így ez amit kap hozzáférést a string.h.
>> Ez ismerős.
Ez ismerős.
Ez egy kicsit új.
A vonal 22 - és mi jön vissza erre, de most már tudjuk -
és akkor csak azt tudják, ez attól olvasd el a dokumentációt, vagy
Ön tudta, hogy már C -
A string néha csavart ki.
Ha a felhasználó valóban ellenséges vagy nem együttműködő, és ő csak
nem írjon semmit a billentyűzeten, vagy típus annyira a billentyűzet
hogy elnyomja a számítógép memóriájában, elméletben, hogy szöveg is visszatér
valami más, mint egy karakterlánc.
Ez lehet vissza egy speciális értéket nevezzük NULL minden sapkák, N-U-L-L, és ez az,
csak egy úgynevezett sentinel értéket.
Ez egy különleges értéket jelent valami rossz történt ebben az esetben.
Ez az, hogy nincs a string.
>> Így null én ellenőrzése egyszerűen úgy, hogy, Hosszú történet rövid, str leng és
egyéb funkciók, hogy jön a C, ha a várnak a szöveg, de akkor át őket
hiányában a húr, ha át őket NULL, a számítógép vagy a program
majd csak összeomlik egyenesen.
Fog lógni.
Akkor dobja fel néhány hibaüzenetet.
Rossz dolog fog történni.
Így, bár ez még mindig nem jól definiált -
ez több értelme egy hét vagy két - a 22. sor, ez csak egy
Például a saját védekező hibajavítás csak abban az esetben, egy alkalommal ki
egy millió valami elromlik, a legalábbis az én programomat nem fog összeomlani.
>> Tehát, ha s nem egyenlő valami rossz, Van ez a hurok, és ez volt
ahol volt, hogy más új darab szintaxis.
Van egy for ciklus ismételve a akár nulla a hossza s.
És akkor itt voltam kinyomtatása s konzol i, de miért használom% c minden
hirtelen helyett% s még bár s egy szöveg?
Ez egy karakter, nem igaz?
S egy string, de s konzol valami, s konzol i ahol i nulla
vagy egy-két, az egyéni karaktere, és így
hogy printf tájékoztatni kell, hogy a ez valóban egy karaktert számíthat.
>> Aztán emlékszem, mi volt ez a programot valójában?
>> Kinyomtatta az oszlopok.
>> Igen, pontosan.
Csak nyomtatott szó, hogy írja be egy oszlop, egy karakter soronként.
Nézzük meg még egyszer.
Tehát, hogy string.
Összeállította az OK gombra. . / String.
Hadd írja be H-E-L-L-O, Enter, és Valóban értem, soronként egyet.
>> Hadd tegye optimalizálás itt.
Ha belegondolsz, különösen akkor, ha már beprogramozott, ott van
vitathatatlanul a hatékonyság a sorban 24.
Más szavakkal, ez nem feltétlenül a legjobb design.
Egyszerű, legalább egyszer emlékszem, mit str leng az, de
hogy valami buta potenciálisan.
Mi lehet az?
>> [Hallható].
>> Pontosan.
Ez ellenőrzi a hossza s minden egyes alkalommal, még ha
H-E-L-L-O mindig fog hogy öt karakter.
Minden alkalommal, amikor ezzel a hurok, Az öt nem változik.
Lehet, hogy megnő i, de mi a hossza s minden
iteráció a hurok?
Ez öt, ez az öt, ez az öt, és de én mégis fel ezt a
kérdés újra és újra és újra.
Most őszintén, a számítógép olyan átkozottul gyors, senki nem fogja észrevenni a
különbség ebben az esetben, de az ilyen jellegű A rossz tervezés döntések
elkezd összeadni, ha a fordító maga nem próbálja meg kijavítani ezt az Ön számára, amely
jellemzően nem, a legalábbis a készülékben.
>> Így fogom csinálni.
Megyek, hogy adjunk egy vessző után az első változó, i.
Én adok magamnak egy másik változó, amelyben ez n, csak a
egyezmény a számok, és akkor én vagyok majd rendelni n értékét karakterlánc
hossza s.
És akkor fogok változtatni az állapotom, hogy mit?
Én meg fog változni az állapotom hogy miközben kevesebb, mint n.
>> Tehát most, hogy hányszor vagyok ellenőrzi a hossza s?
Egyszer, de nem baj, hogy ellenőrizze i ellen n újra és újra, mert most ezek a
értékek ténylegesen nem változnak.
Most már, csak tudom, hogy bármikor hívja a függvényt, van egy kis
fölött, nem elég, hogy gátolják meg tényleg a valaha funkciók használatát, de
Természetesen, ha van egy sor kódot szeretem -, és a vonalak lesz
érdekesebb nemsokára -, ahol van egy lehetőség, hogy hiszem, ha
írja ezt a kódot, hogy hány alkalommal fog végre?
Majd elkezd látni az idő múlásával a teljesítménye a programok
Valóban változik.
>> Sőt, az egyik probléma határozza voltunk végzett az elmúlt években jár
végrehajtó, mint te is emlékszel a hét nulla, a helyesírás-ellenőrző, hanem egy
helyesírás-ellenőrző úgy tervezték, hogy támogassa A szótár 150000 plusz
szavakat, hogy adunk nektek.
Meg kellett volna írni a kódot, amely betölti ezeket a szavakat a RAM-ba, így a
dobozok, mint láttuk, a képernyőn egy pillanatra óra, majd amilyen gyorsan csak
lehet, meg kell, hogy képes legyen válaszolni a kérdése a forma, ez a szó
hibásan?
Van ez a szó hibásan?
>> És valami ilyesmi, amit már végzett az elmúlt években is belőle,
bár egy opt-in választható alapon, a verseny a fajta, ahol a
a diákok, akik a kevesebb RAM és kevésbé idő, kevesebb CPU ciklust, a végén
bugyogott fel a tetejére egy kis ranglistán, illetve rangsorolását, hogy fel
a kurzus honlapján, ahogy már végzett az elmúlt években.
Tehát még egyszer, teljesen szabadon választható, de ez a beszél a tervezési lehetőségeket
amelyek előttünk egyszer elkezdjük épület tetején néhány ilyen
alapvető építőkövei.
>> Hadd menjek vissza a diagram csak egy pillanatra, és láthatóvá válik egy kis
valami.
Ez valóban egy string, és vettünk néhány előnye könyvtárak,
szabványos io.h amely -
>> Printf.
>> Printf, többek között.
cs50.h, amely kap int, és kap húr és így tovább, string.h, mely
volt str leng.
De kiderül, van még egy.
Őszintén szólva, van sok-sok header fájlokat kijelentik funkciók
a könyvtárak, de ez az ctype.h valóban lesz kissé
előnyös, mert megyek megy előre, és végre egy
másik program itt.
>> Hadd menjek előre, és nyisd ki valamit Írtam korábban hívott
capitalize.c, és nézzük egy pillantást, hogyan is működik ez.
Figyeljük meg, hogy én vagyok a, ebben a verzióban belőle, három ismerős fájlokat.
Figyeljük meg, hogy a 18. sor, én vagyok kapok egy sort.
Értesítés a sorban 21, én azt állítva, hogy a következő kódot fog
tőkét s, amit a felhasználó beírt be, és hogyan csinálom ezt?
Nos, én viszem -
tanulsága utoljára -
Én kijelentve i és n és iterációjával át a karaktereket a húr.
És akkor mi ez a blokk kódot 24 vezetéken keresztül 27
Ennek a laikus szempontból?
>> Kisbetű vissza.
>> Pontosan.
Ha s konzol i - tehát ha az i-edik jellegét s, ami egy speciális
char a húr, nagyobb, mint egyenlő vagy kisbetűs és a -
Emlékeztetünk arra, hogy dupla-jel jelent, és -
és ugyanaz a karakter, s konzol i, az kevesebb vagy egyenlő, mint kisbetűs z,
ez azt jelenti, hogy az A vagy a B vagy C vagy pont, pont, pont, vagy z, ami azt jelenti,
ez kisbetűs.
Mit akarok csinálni ebben az esetben?
Nos, meg tudom csinálni ezt a kissé rejtélyes, de
nézzük ezt kötekedik egymástól.
>> Fogom hívni printf, kinyomtatja% c mert azt akarom, hogy nyomtassa ki ezt a
karakter a képernyőn.
Én akkor fog tartani s konzol i, a i-edik karaktere s, és akkor miért
csinálom ezt a kis trükk, kisbetűs mínusz tőke A?
Milyen az, hogy fog adni meg, általánosságban?
>> [Hallható].
>> Pontosan.
Nem igazán emlékszem -
volt 65 tőke A. Nem igazán emlékszem, mi a kisbetűk is,
De nem számít.
A számítógép tudja.
Tehát azt mondja, a kisbetűs mínusz A tőke, ez furcsa, hogy
kivonásával egy char másik, de milyen karakter a motorháztető alatt?
Ezek csak számok.
Tehát bármit ezek a számok, hagyja, hogy a számítógép emlékszik rá
nem én, az emberi.
>> Tehát kisbetűs mínusz tőke A jelentése fog adni nekem a különbséget.
Előfordul, hogy 32, és az lenne a helyzet a kisbetűs b és a tőke B
és így tovább.
Marad következetes, szerencsére.
Szóval lényegében azt, hogy a kisbetű, kivonni ki, hogy
szabvány a különbség, és hogy a hatékonyan változásokat s konzol i-től
kisbetű, természetesen, nagybetűs, anélkül, hogy a tényleg, hogy gondolni
szól, vagy ne felejtsd el, mi volt ez a számok beszélgettünk, amikor a nyolc
önkéntes jött a színpadra?
Most eközben az más, ha nem a kisbetű meghatározott
a 24. sor, csak nyomtassa ki.
Én csak azt akarom, hogy érintse meg a karakterek voltak
valójában eredetileg kisbetűs.
>> Nézzük ezt.
Legyen kihasználni.
Összeállította, OK.
. / Kihasználni.
És hadd beírni H-E-L-L-O A kisbetűs, Enter.
És észre, hogy alakul a nagybetűs.
Hadd ezt ismét egy másik szót.
Mi lenne, D-A-V-I-D az első D aktiválásra név általában az?
Enter.
Figyeljük meg, hogy ez még mindig igaz.
Csak kimenetre, hogy az első D változatlan keresztül, hogy más konstrukció.
>> Tehát ne feledje, akkor a pár dolgot.
Egy, ha valaha is szeretne ellenőrizni két feltételek egyszerre, akkor, és őket
együtt, ahogy megjósolta.
Össze lehet hasonlítani karakterek így és hatékonyan kezelni karaktereket
számok, de őszintén szólva, ez annyira rohadt rejtélyes Én soha nem fog emlékezni
hogyan jön ki ez a semmiből indokolás nélkül rajta elég
egy kis időt.
>> Nem lett volna szép, ha valaki ott írt egy függvényt hívott
alacsonyabb, ami választ számomra igaz-e vagy hamis, ez a karakter kisbetűs?
Hát szerencsére, aki írta ctype.h pontosan ezt tette.
Hadd menjek fel ide, és adjunk hozzá ctype C típusú, és most hadd menjek le ide, és
átírni ezt a sort a következő.
>> Tehát ha ez a neve alacsonyabb, azt állítom, s konzol i, akkor fogok törölni
a következő két sort összesen.
Tehát most valaki, remélem, ezt írta függvény nevű kisebb, és
Kiderült, hogy ők, és kijelentette, belsejébe a ctype.h.
És most elmegyek vonal 27 Egyedül fogom hagyni line 31
egyedül, de észre mennyire is szigorították a kódot.
Ez most tisztább.
Ez kevésbé nehéz, hogy nézze át mert most a funkciót, sőt, az
olyan csodálatosan elnevezte csak teszi, amit mond.
>> Szóval most fogom menteni ezt.
Megyek kicsinyítéshez.
És ahogy Scratch akkor lehetett volna Logikai, logikai értékek igaz vagy
hamis, hogy pontosan mi az, alacsonyabb hatékonyan visszatér.
Hadd újrafordítani.
Hadd újra futni.
És most próbáljuk meg újra, H-E-L-L-O, Enter.
Ez elég jó.
És próbáld meg újra, hogy biztos, hogy nem csavarja valamit.
Ezt aktiválásra is.
>> De ez nem elég jó, mert a másik dolog, hogy én soha nem fog
eszébe jut, kivéve dolgozom rajta igazán óvatosan, mondjuk, a papír
ez az átkozott sort.
Nem lenne jó, ha lenne függvény neve a felső?
Nos, kiderült, hogy ott van ctype.h is.
Én megyek előre, és írja be -
hadd hozza, hogy a vonal vissza.
Ahelyett, hogy ez itt, hadd menjek előre és azt mondják, helyettesíti a% c az
eredménye, hogy felhívja ezt a funkciót felső az i-edik jellegét s.
És most észre, hogy egyre egy kis egyensúlyban.
Meg kell nyomon követni, hogy hány zárójelben Már nyitott és zárt.
>> Tehát most még tisztább.
Most ez a program egyre jobb és jobban megtervezett vitathatatlanul, mert
sokkal, de sokkal több olvasható, de ez nem nézzük korrigálni.
Legyen kihasználni.
. / Kihasználni.
H-E-L-L-O. Fussunk újra, D-A-V-I-D. OK, így mi még mindig
elég jó formában.
>> De most a felső.
Azt javaslom, hogy van még egy finomítás tudtuk, hogy lenne
Nagyon szép, hogy tényleg húzza ezt a kódot, és valóban ad nekünk öt
ötből a tervezés, például.
Milyen jó lenne megszabadulni?
Hát, nézd, milyen rohadt hosszú ez a blokk a kód csak nem valami egyszerű.
>> Most, mint egy félre, ahogy lehet, hogy látható szuper részben az elmúlt
hétvégén, akkor nem feltétlenül szükséges a zárójelek, amikor csak egy
kódsor, még akkor is javasolt tartása, hogy ez teszi sokkal
világosabb, mint Scratch U-alakú blokkok, mi van benne a szakmától.
De nem lenne jó, ha a felső, adva a bemeneti, belőle
nagybetűs, ha ez nem, és mit csodálatos ellenkező esetben, ha
ez már nagybetűs?
Csak add át és hagyja békén.
>> Szóval lehet, hogy ezt csinálja.
Tudtam próbálni, és csak remélem, hogy ez, de hadd
be egy másik dolog.
Ahelyett, hogy a beépített terminál ablakot itt emlékeztetni arra, hogy
ezen a téren fekete ikon ad nagyobb terminál ablak, hogy tudok a teljes
képernyőt, ha akarok?
Így kiderül, ők valami furcsán megnevezve, de van ezek a dolgok néven
man oldalak, man oldalak férfi rövid, és én is ezekhez a
gépelés man -
mit akarok, hogy írja?
Az ember a felső.
>> És most észre, ha létezik olyan működik a számítógép belseje, a
Ebben az esetben a készüléket, ami csak Az operációs rendszer Linux, ez lesz
hogy adjon nekem egy kissé rejtélyes sor kimenet, de rájössz, hogy idővel
mindig van formázva nagyjából ugyanaz így kezdi szokni.
Figyeljük meg a tetején a felső, és a látszólag ugyanazt a dokumentációt
az alacsonyabb.
Aki írta volt vágás néhány sarkok és tedd az egészet egy oldalon.
Ezek a dolgok "célja az élet átalakítani egy
levél kis-vagy nagy.
>> Figyeljük meg, hogy az szinopszis, a man oldal tanít, mit fájl van
tartalmazza, hogy ezt a dolgot.
Ez ad nekem az aláírásokat ezen funkciókat, mind a kettőt, sőt
de mi most csak a érdekel egy.
Itt most egy leírást.
A felső átalakítja a levél c nagybetűs lesz, ha lehetséges.
>> Még mindig nem, hogy tanulságos, de hadd Most keresse visszatérési értéke, a dolog
ez adta vissza.
Így a visszaadott érték az, hogy a átalakított levélben vagy c, ha a
konverzió nem volt lehetséges.
Mi az a C?
>> Az eredeti jellegét.
>> Az eredeti jellegét, és tudjuk, hogy az ismét megy fel a
szinopszis, és aki ezt írta funkció csak úgy döntött, hogy a bemeneti
hogy a felső és az alsó csak önkényesen fogják hívni c.
Ők nevezték, leginkább semmit akarnak, de tartotta
egyszerű c.
Szóval már konzultáltak a man oldalt.
Ez a mondat megnyugtat, hogy ha ez nem kisbetű, akkor
megy, csak add vissza a C, ami tökéletes, ami azt jelenti, hogy lehet megszabadulni
a más állapot.
>> Hadd menjek vissza a gedit, és Most hadd tegye ezt.
Fogom másolni a printf nyilatkozatot.
Én megyek előre, és jobb belső A for ciklus nyomtatási, hogy ki, és kap
Dobjuk most ez az egész, ha konstrukció.
Nem volt rossz ötlet volt, és nagyon sok helyes és összhangban
mindent, amit prédikált, de csak nem szükséges.
Amint rájössz, néhány könyvtár funkció létezik, hogy valaki más
írta, vagy talán írta máshol a fájl, akkor azt, és tényleg
elkezdi szigorítani a kódot.
>> És amikor azt mondom, a dolgok, mint a jó stílus, az a tény, hogy ez a személy az úgynevezett
működnek a felső, vagy már korábban is alsó csodálatosan hasznos, mert
ők nagyon leíró jellegű.
Ugye nem akarja, hogy hívja fel a funkciókat x és y és z, amelyek
sokkal, de sokkal kevesebb értelme.
Kérdése az, hogy a sorozatban fejlesztések?
>> Tehát elég annyit mondani, az egyik elvitelre még, mint a saját problémáját
set - talán probléma meg egyet, de bizonyára P meg két és újabb, még
ha ők nem feltétlenül a helyes jelenti azt, hogy tökéletes,
még vagy különösen jól megtervezett.
Ez a másik tengely elkezd gondolkodni.
Tehát ez volt a sor belsejében a számítógép memóriája, de ha van egy
csomó karakter, mint a H-E-L-L-O belső RAM-mal, és tegyük fel,
hogy a programban hívja kap húr többször olyan, hogy
hívja kap húr egyszer, akkor hívja kap karakterlánc újra.
Nos, mi fog történik az idők során?
>> Más szóval, ha van egy sor kód, bár a kontextus, mint a
sztring s lesz -
csináljuk.
String name egyenlő kap string.
Tehát tegyük fel, hogy sor kódot jelent kérni a felhasználótól a nevét.
Ez a következő sort is akartam kérdezni a felhasználó saját iskolában,
a következő sort, és így tovább.
Tegyük fel, hogy folyamatosan azt kérdezi, a felhasználó egy másik, és
újabb és újabb string.
Fognak maradni a memóriában ugyanabban az időben.
Az egyik nem fog a cucc a többi.
Iskola nem írja felül a másikat.
De hol mind végül a memóriában?
>> Nos, ha elkezdjük rajzolni a képernyőre, amit lehet használni ezt a dolgot
itt, mint egy palatábla, ha ez a fekete téglalap a számítógép
memória, fogom kezdeni önkényesen elosztjuk fel a kis négyzetek,
melyek mindegyike egy byte memória.
Őszintén szólva, ha van egy gigabájt RAM ezekben a napokban, van egy milliárd byte
A memória méretét a számítógépében, így egy milliárd ilyen négyzet.
Tehát elég annyit mondani, hogy ez nem igazán a skála.
>> De ne rajz mindezen nyilvánvalóan nem méretarányosan terek, és ez a
együttesen képviseli a számítógép memóriájában.
Most majd csak nem pont, pont, pont.
Más szóval, ha most kéri a felhasználó A string, hogy adjon nekem egy
string, mi történik?
Ha a felhasználó a "hello", hogy véget ér fel H-E-L-L-O. De tegyük fel, a
felhasználó ezután típusok -
valóban, nem kellett volna szia mert kérünk
őket a nevüket.
Szóval menjünk vissza, ha meg tudom csinálni.
>> Tehát, ha azt írja be a D-A-V-I-D a nevem, de emlékeztet arra, hogy a második sor
kódot kap szöveg újabb hogy az iskolában.
Hol van az a szó, hogy a felhasználó típusok fog menni?
Nos, lehet, hogy fog menni H-A-R-V-A-R-D. Így, bár én már
készült, mint két sor, ez csak egy csomó bájt a
számítógép RAM.
Van egy probléma most, mert most, ha én vagyok a RAM ebben a nagyon ésszerű
hanem egyfajta naiv, mit tud nem tűnik megkülönböztetni?
Ahol az ember elkezd, és ahol Egy véget ér, nem igaz?
Ők olyan homályos össze.
>> Így kiderült, hogy a számítógép nem ezt teszi.
Hadd valójában lépjünk vissza az időben a néhány karakter, és ahelyett, hogy a Harvard
majd után a felhasználó nevét, a felhasználó valóban kap mögött
A jelenetek, speciális karakter által beillesztett
számítógép neki.
/ 0, más néven a nul karaktert bosszantóan úgynevezett N-U-L, nem
N-U-L-L, de írni azt / 0.
Ez mind nulla bitet a marker az első szó, a felhasználó
gépelt és a második.
>> Tehát Harvard valójában most végül mivel ez a karaktersorozat
és még egy / 0.
Más szóval, azáltal, hogy ezek a sentinel értékek, nyolc egymást követő nulla
bit, akkor most kezd megkülönböztetni egy karaktert másik.
Tehát egész idő alatt mi volt "hello" a valójában "hello"-val a / 0, és
Közben talán nagyon jól lehet egy kicsit több RAM
a számítógép belsejébe.
>> Hadd tegyek még egy dolog most.
Kiderül, hogy az összes ilyen négyzet voltunk rajz, ők igen,
húrok, hanem általánosságban, ezek a dolgok tömbök.
Egy tömb csak egy darab memória ez háttal a háttal,
és jellemzően egy tömböt útján Ennek szögletes zárójel jelölést.
Így fogjuk, hogy ezek egy kicsit idővel, de hadd menjen előre, és
nyit, nevezzük korosztály számára.
És figyeld meg, mit tehetünk Ugyanezen trükkök, egy kicsit
kicsit szintaxis itt.
>> Így a 17. sorban a program - tényleg, hadd futtassa a program először
így látjuk mi ez a dolog nem.
Hadd hívjam fel, hogy az év fordítani ezt a programot.
. / Év.
Hány ember van a szobában?
Nevezzük három.
Életkora az első ember?
18., 19., és 20..
És most kissé nevetségesen, csak tette a programot, hogy a kor
három ember.
>> Tehát van egyértelmű lehetőség a szórakozni számtani itt.
Szerencsére a matematika helyes.
18 ment 19, 19 ment 20 és így tovább.
De ami igazán azt jelentette, hogy szemléltető itt van, hogy mi tárolás
a három ember korosztály számára.
Hadd nagyítani, mi van folyik itt.
>> Tehát először, ezek az első néhány sor kell hogy kezd nagyon ismerős.
Én csak kéri a felhasználótól a több ember a szobában.
Akkor én a kap int, és nem, míg a Ezt újra és újra és újra.
Láttuk, hogy a mintázat korábban, de vonal 27 új, és valóban nagyon
hasznos, és lesz inkább hasznos.
Figyeljük meg, hogy mi más a sorban 27 az, hogy úgy tűnik, hogy van érvényben, amely
int hívott korosztály, de várj.
Ez nem csak int korosztály számára.
Vannak ezek a szögletes zárójelek, belsejében, amely n.
>> Így a konzol n ebben az összefüggésben, nem belsejében egy printf kifejezést itt, de
ebben az egyetlen sorban 27, ez a sor mondván, adj n ints, amelyek mindegyike
a típusa int.
Tehát ez egy vödör, hogy úgy mondjam, az, ebben az esetben három egész szám vissza
háttal úgy, hogy hatékonyan három változó.
A másik, hogy tiszta, ez lenne.
>> Ha akartam az első tanuló kor, talán ezt.
Ha akartam a második tanuló kor talán ezt.
Ha akartam a harmadik tanuló kor, talán ezt.
És Isten őrizz, szükségünk van mindenki kor ebben a szobában -
Úgy értem, ez egy fene sok példány, be újra és újra és újra.
És plusz egyszer fordítani ezt a programot, ha egy másik diák jár át ki
azon az ajtón, most az én szám változók helytelen.
>> Szóval, mi szép a tömb olyan amint elkezd érzi magát
másolás és beillesztés, esély, hogy ez nem a legjobb megközelítés.
Egy tömb dinamikus potenciálisan.
Nem tudom előre, hogy sok ember lesznek a szobában,
de azt tudom, hogy kell n őket, én pedig kitalálni, n, amikor eljön az ideje.
Ez a vonal a kód már azt jelenti, hogy adj egy darab memória néz ki
ahol a dobozok számát a képernyőn teljes mértékben függ, hogy n
a felhasználó gépelt be
>> Tehát most a többi ezt a program valójában nagyon hasonló ahhoz, amit
csak nem a karakterek.
Figyeljük Van egy for ciklus kezdődő 30. sorban.
Így rögtön kapom a tömb, azt hajtogat az y értéke nulla n-ig.
Csak van egy tanulságos printf üzenetet csak azt mondom, hogy nekem a kor
személy #% i, így első számú, kettes, hármas számú.
És miért tettem ezt?
Őszintén szólva, az emberek inkább számít egy akár míg számítógépes szakemberek,
nullára fel.
számítógépes szakemberek nem fognak ezt a fajta program, így vagyunk
majd csak elkezd számolás az egyik, mint a normális emberek.
>> És most a sorban 33, észre a kissé különböző darab szintaxis.
Az i-edik kor, hogy változó típusú tömb lesz, hogy kap egy int.
És most végül, ez csak számtani ide.
Úgy döntöttem, egy külön hurok igényt bizonyos idő halad, és most ebben a
külön loop, ezeket a sorokat végrehajtani.
>> Egy év múlva, akivel lesz i éves, de észre nem ez a
i változó.
Ez most% i az int.
És figyeljük meg, mint az első helyőrző, azt csatlakoztassa i + 1, ezért számít, mint a
normális ember.
És akkor az értékét az életkor, a i éves, veszek korosztály tartó
i - és miért csinálok plusz egy itt?
Csak éves.
Ez az én hülye választott programok.
Ők csak év egy év.
Én is írja be bármilyen számot Én tényleg szeretnék ott.
>> Tehát mi valójában minden a jelentősége itt?
Nos, hadd valójában lépjünk vissza itt, és festeni egy képet
hogy mi vár ránk.
Amit mi lesz ezzel a mi következő Probléma Set Kettes dabbling a
világában titkosítás.
Tehát ez egy karakterlánc, így a sorozat több karakter, és milyen
mond ez?
Ez nem az online verzió a diák.
>> Szóval azt állítják, hogy ez felel meg ennek a hülye reklámok sok éven
ezelőtt, hogy talán valóban emlékszem egyik eredete.
Tehát ez egy példa a titkosítás vagy titkosítás.
Kiderült, hogy ha azt akarjuk, valóban küld információt vagy részvény
információ valakivel biztonságosan mint egy ilyen üzenetet, akkor
tülekedés a leveleket.
De általában, a szavak nem kódolt véletlenszerűen.
Ők permutálódnak valamilyen módon megváltozott valamilyen módon, hogy - hoppá.
Ez egy szórakoztató spoiler a következő alkalommal.
>> Így megosztása Mi látszólag O B. Vegyük észre, hogy vonalban
kapitalizáció bölcs.
Úgy látszik, r lesz e.
Úgy látszik, F-H-E-R válik S-U-R-E. Így Kiderült, hogy egy leképezés, és
Ebben az esetben van egy elég hülye feltérképezése, ha valaki rájött?
Ez egy úgynevezett Rot 13, Forgatás 13.
Ez a leghülyébb a titkosítás mechanizmusokat, mert szó szerint csak
ad 13 mindenkinek a betűk, hülye abban az értelemben, hogy ha csak
van egy kis szabad ideje van a kezedben és egy ceruzát, vagy csak gondolom, hogy
át a fejedben, akkor próbálja minden lehetséges feltöltött - egy, kettő,
három, pont, pont, pont, 25 csak forgatni az egész ábécét, és
végül, akkor kitalálni mi ez az üzenet.
Tehát, ha nem valami ehhez hasonló iskolában halad üzeneteket a
legjobb barátja, ha az általános iskola tanár csak olvassa el a
üzenetet, és a nyers kényszerítette a megoldás, lehet, hogy ütött
választ, hogy az.
>> Most persze, a valós világban, kriptográfia kifinomultabb.
Ez a részlet a szöveget a számítógépes rendszer, amely felhasználóneveket és
jelszavakat, mivel majdnem minden a miénk nem, és ez az, amit a jelszó is
úgy néz ki mint tárolva a merevlemezen vezetni, de titkosított formában.
Ez nem csak a forgatás a betűk, A jelentése B és B jelentése C. Ez
sokkal kifinomultabb, de használ mi általában az úgynevezett titkos kulcs
titkosítás.
Ez a kép azt a következő történet néhány ikonok.
>> A bal oldalon van, amit hívjuk sima szöveg.
A világ a kriptográfia, sima szöveg csak az eredeti üzenet
írott angol vagy francia nyelven vagy nyelv nélkül.
Ha azt szeretné, hogy titkosítja, majd át ez képileg egy lakat, így
néhány olyan algoritmus, néhány funkció vagy program, hogy valaki azt írta
hogy összekuszálja a betűk remélhetőleg több, mint bonyolultan hozzá 13
hogy mindegyik.
>> Mit kap ki, hogy a folyamat a Középen nevezzük kódolt szövegeket.
Tehát egyfajta szexi szó.
Ez csak azt jelenti, hogy a titkosított változata a sima szöveg.
És csak akkor, ha van, hogy ugyanazt a titkos, 13 vagy mínusz 13, tudsz
dekódolni az üzenetet, mint ezt.
>> Így probléma meg két, a dolgok között akkor nem, ha a hacker
Edition, akkor meg kell írni a kódot kiváló ezeket a jelszavakat, kitalálni
mi volt és hogyan is titkosított, de mi nem kapsz egy kicsit
útmutatás az út mentén.
A Standard Edition, bemutatjuk pár algoritmusok titkosítás
mechanizmusok, az egyik neve Caesar, egy nevezett Vigenère, amelyek még mindig
rotációs ciphers ahol A válik valamit, B lesz valami, de
meg kell csinálni, hogy programozottan mert valóban egy titkos
kulcs szó, amely tipikusan egy szám vagy egy kulcsszó, hogy csak a
feladó és a címzett e üzeneteket kell értenie.
>> Nos, ez valójában inkarnációja a valós világban.
Ez, például, kis árva Annie titkos dekóder gyűrűt, és
ténylegesen végrehajtani ezeket rotációs ciphers -
A lesz valami, B válik valami - egy pár kerék,
az egyik a külső, az egyik a belső úgy, hogy ha forog a kerék vagy a
a gyűrű, akkor valóban sorakoznak a betűk különböző betűk,
kapok egy titkos kód.
És így a Cliffhanger a mai, amit én gondoltam, nem is egy kicsit
primitivizmus, hogy ha bekapcsolja a TV- december 24-én, meg lehet nézni a
film csömörig a 24 óra egy sorban.
De a mai, én nyisd ki itt és nekünk csak két perc a
pedagógiailag releváns Christmas Story egy kis nevű fickó Ralphie.
>> [VIDEÓ LEJÁTSZÁS]
>> -Legyen ismert, minden rendű és rangú, hogy Ralph Parker-t nevezi ki a
tagja a kis árva Annie titkos kör és jogosult minden
A kitüntetés és előnyök előforduló hozzá.
>> Aláírású, kis árva Annie.
Ellenjegyezte, Pierre Andre tintával.
Kitüntetések és előnyök már évesen kilenc.
>> [Kiabált RADIO]
>> Gyerünk, essünk túl rajta.
Nem kell ez a jazz a csempészek és kalózok.
>> -Figyelj holnap este a megkötése kaland a fekete
kalózhajó.
Nos, itt az ideje a Annie titkos Üzenet az Ön tagoknak
a titkos kör.
Ne feledje, a gyerekek.
Csak a tagok Annie Secret Circle tudja dekódolni Annie titkos üzenetet.
Ne feledje, Annie attól függően, hogy.
Állítsa be a csap B2.
Itt van az üzenet.
12, 11, 2 -
>> -Én vagyok az első titkos találkozón.
>> -25, 14, 11, 18, 16 -
>> Pierre-ben nagy hang ma este.
Elmondhatom, hogy a ma esti üzenete nagyon fontos volt.
>> -3, 25.
Ez egy üzenet Annie magát.
Ne feledd, ne mondd el senkinek.
>> -90 Másodperc múlva, én vagyok az egyetlen szoba a házban, ahol a fiú kilenc
lehet ülni a magánélet és dekódolni.
Aha, B. mentem a másikra.
E. Az első szó a "legyen". S. Úgy jött könnyebb most.
U. 25..
Ez R.
>> -Gyerünk, Ralphie.
Mennem kell.
>> -Majd itt lesz, anya.
Hoppá.
>> -T. O. Mindenképpen.
Ügyeljen arra, hogy mit?
Mi volt kis árva Annie mondani?
Ügyeljen arra, hogy mit?
>> -Ralphie, Randy mennem kell.
Lenne szíves jönni?
>> -Jól van, anya.
Mindjárt ki.
>> -Én egyre közelebb van.
A feszültség rettenetes volt.
Mi volt ez?
A sorsa a bolygó lógnak a mérleg.
>> -Ralphie, Randy mennem kell.
>> -Majd lesz jobb ki sír hangosan.
>> -Majdnem ott.
Az ujjaim repült.
Az agyam egy acél csapda.
Minden pórus vibrált.
Már majdnem tiszta.
Igen, igen, igen, igen, igen.
>> -Ügyeljen arra, hogy igyon a Ovaltine.
Ovaltine?
Egy vacak kereskedelmi?
A kurva anyját.
>> [END VIDEÓ LEJÁTSZÁS]
>> 1 hangszóró: Ez CS50, és hogy a lesz probléma Set Two.
Jövő héten találkozunk.
>> SPEAKER 2: A következő CS50, ez történik.
>> SPEAKER 1: Tehát az egyik téma mi nem nézett eddig is
hogy a függvény mutatók.
Most, a függvény mutató csak címének nyilvános
funkciót, de ugyanúgy, mint -
fia -