>> [Zenelejátszási]
>> 1. Előadó: Ez CS50 és ez az a hét elején két.
Nos, nézzük merülés jobbra valamit hogy bugos, hogy úgy mondjam.
Szóval, itt van CS50 IDE és én már húzta fel előre ebben a rohadt screen--
azt.
Spoiler figyelmeztetés.
Minden rendben.
Már húzta fel a képernyőn van, amely egy nagyon egyszerű program.
Ha lépjünk le, a legtöbb Az ez csak megjegyzések,
de itt vonalak 13 keresztül 17 van egy program.
>> Ez egy szintaktikailag helyes, ami azt jelenti, ha Fordítsam le, akkor összeállításához és futtatásához,
de ez hibás.
Ez a program azt állítja, a megjegyzések fel tetején, hogy meg kell nyomtatni 10 csillag,
de ez nem.
És tapasztalatai alapján, vagy hamarosan tapasztalat C,
tud logikusan megkülönböztetni miért van ez, sőt, hibás?
Igen?
Közönség: Magától nulláról 10.
Ez 11 ismétléseket.
1. Előadó: Igen.
Szóval, ez lesz a nulláról fel révén és egyenlő 10,
ami persze 11 ismétléseket.
Szóval, ez lesz a print, sőt, 11 csillag.
Szóval, a számítógép-tudomány egyezmény A legtöbb programozási nyelv
Valóban, csak azért, hogy számolás kezdése nulla,
de számítanak fel, de nem a értékkel, amit tényleg érdekel.
>> Nos, ez az egyik dolog, vesz egy kicsit szokni kell
és még Scratch, célja, mint ez A nem programozók vagy nem számítógépes
tudósok és gyerekeknek nagyrészt, úgy tervezték, hogy van
elkezdi számítva általában egy.
És ez rendben van.
Tudod egyáltalán elkezd számolás egy, ha ez kényelmesebb.
És számítanak fel, és a 10, de rájössz, különösen ezen a héten
és azon túl, hogy csak azért, Sok dolgot programozási
feltételezzük, hogy 0 az első jegyű, amivel számolni,
hogy fogsz találni könnyebben csak azért, hogy ebbe a szokása, hogy kezdő
nullától számítva értékig törődsz most a
hogy menjen.
>> Szóval, hogy fix, hogy.
Mi változott a kisebb vagy megegyezik, csak kevesebb, mint.
Vessünk egy pillantást Egy másik példa van.
>> Szóval, ez a program is arra hivatkozik, annak megjegyzések fel tetején, hogy meg kell nyomtatni
tíz csillagok, de nem.
Mi a hiba itt?
>> Szóval, what-- és sajnálom, legyen világos.
10 csillag.
Soronként, de nem.
Szóval, sőt, hadd menjen előre, és fordítsd ez, mert ez egy kicsit kevésbé
törölje alapján ez a leírás.
Hadd menjek át a forrás könyvtárába.
Tedd buggy egy pont perjel, buggy egy.
OK, látom 11 csillag, amely még mindig problematikus,
de ők is az egész egy sorban.
Mi itt a kérdés?
Igen.
Közönség: [hallható].
1. Előadó: Igen.
Tehát ez egy finomság, hogy esetleg emlékszem nekem így rövid említést.
Annak ellenére, hogy minden úgy néz ki szép, és ez szépen tagolt,
és ez a fajta néz ki, mint a Scratch- abban a sorban 16. és 17.,
Valóban, tagolt alatt, hogy a hurok.
Ez lényegtelen.
A számítógép nem tudja, vagy látni fehér térben.
Fehér térben csak az mi, emberek, stilisztikailag.
A számítógép nem tudja, mikor van kapcsoszárójele, ami valóban,
megoldhatja a problémát.
>> Tehát, ha valóban elment, és kifejezetten meg ezeket a kapcsos zárójelek
amely megoldhatja a problémát egyértelművé téve, hogy a fordító
hogy én valóban szeretnénk dolgozni két sornyi kódot újra,
és újra, és újra.
De mi az alapvető magyarázata?
Jobb?
Nem feltétlenül kell kapcsoszárójele minden alkalommal,
annak ellenére, hogy talán a legjobb, gyakorlatot bejutni, hogy szokás egyébként
annak ellenére, hogy hozzáteszi két karakter a kódban. miért?
>> Közönség: [hallható]?
1. Előadó: Igen, így ez Egy másik megoldás teljesen.
Jobb?
Különösen, ha első pillantásra nem Nagyra értékelem, hogy mi folyik.
Nos, biztosan tudnánk Csak két dolgot egyszerre
és csak elkerülni a problémát teljesen.
És ez rendben van, de most, A mai célra, milyen
a magyarázat a hiba?
Miért voltak azok a csillagok egy sorban?
Igen?
>> Közönség: Úgy tűnik, hogy ha Van egy sor kód,
meg tudod csinálni anélkül, hogy azok.
1. Előadó: Pontosan.
Ez csak egy emberi egyezmény.
Az emberek rájönnek, hogy ez egy kicsit bosszantó vagy unalmas
hogy ki kell rakni kapcsoszárójele összes az idő, ha minden, amit akarok
van végre egy sor kód.
Szóval, az emberek úgy döntött, néhány ideje, hogy ez rendben van.
Ha azt szeretnénk, hogy az összes hurok az csak az egyik ilyen sort,
hogy rendben van az egységes pontosvessző végén.
De csak akkor lehet csinálni egy ilyen vonal nélkül zárójelek segítségével.
>> Tehát, ha CS50 stílus útmutató mivel pont akkor kell,
látni fogod, hogy általában ez jó szokás
bejutni ezt, amíg te elég kényelmes eltévelyedésünk
Ezekből féle egyezmények és ezzel a saját dolog.
Szóval amíg te a saját következetes.
És fogunk beszélni többet stílus egy kicsit később ma.
>> Szóval, hadd nyit egy másik programot.
Természetesen, mi kell rögzíteni, hogy a 10 is.
Hadd menjen előre, és levelet igazi gyors program, amely hívom,
mondjuk, loop pont C. Tehát, loop pont C. És hurok dot C megyek is,
közé tartoznak a standard I / O dot H int main semmis.
És most nézzük csak csinálni, sőt, egy hurok.
Szóval, 4 int én lesz nulla.
Én kevesebb, mint, mondjuk, 50.
Én plusz, plusz.
És akkor itt nézzük megy előre, és ne nyomtassa F.
És akkor szeretnék nyomtatni I és egy új vonalat, pontosvessző.
>> És ez kinyomtatja a szám nullától akár 50?
Néhány fej bólint.
Néhány nos.
Mi a hiba már?
Mi a könnyű hibát csináltam?
Igen.
>> Közönség: [hallható].
1. Előadó: Igen.
Így, bár úgy néz ki, mint ez az, amit kíván,
Emlékeztetünk arra, hogy én is Csak egy ASCII karaktert.
>> Tehát, ha azt mondom, print "I."
Ez szó szerint megy nyomtatni I. Tehát, ha én
szeretné plug-in helyőrzőjeként érték Igazából van szükség erre,
majd plug-in a I értéke dinamikusan.
Különben én csak fog kap 50 Én azon a képernyőn.
>> Szóval, hadd menjen előre, és hogy a hurok, futtatni,
és valóban, már az összes Az utat egészen 49.
És ha én lépjünk vissza az időben látom a szám nulla az elején.
>> Nos, mi lenne, ha valahogy csavart ki?
Mi van, ha ezt csinálom?
Csak azért, mert én nem gondoltam.
Mi ez a program.
Miután újra össze, és fuss, fog tenni logikusan?
>> Közönség: Semmi.
>> 1. Előadó: Semmi.
Miert van az?
>> Közönség: Én tervezték nulla.
Szóval, a feltétel hamis.
1. Előadó: Igen, pontosan.
Minden a kód helyes, nyelvtanilag.
Ez lefordítja, ez kód fog futni, de ez nem
fog tenni valami hasznosat mert alaphelyzetbe én nulla.
Ezután ellenőrizze, hogy én több, mint 50?
Nyilvánvaló, hogy nem, ez nem az.
Tehát a hurok soha végrehajtja egyáltalán.
>> Mi van, ha nem teszünk valamit egy kicsit felelőtlen?
Szóval, mi van, ha mi, mint int én lesz nulla.
És most hadd használja a közben hurok, amely egy újabb feltételt.
És amíg én mondom, én pedig nagyobb, mint vagy egyenlő nullával, majd itt I.
megy előre, és mentse a fájlt, hogy hurkot.
És én azon vagyok, hogy futtatni.
Mit fogok látni ezt alkalommal egy while ciklus?
Igen.
>> Közönség: végtelen ciklust?
>> 1. Előadó: egy végtelen ciklus?
Igen, és miért?
Közönség: Mert mindig nulla.
1. Előadó: Igen.
Szóval, én inicializáljuk nulla.
Persze, mindig nagyobb vagy egyenlő mint 0 eredményeként.
Szóval, én csak megy lásd ezt a végtelenségig.
És most ez jön ki egyszer vagy kétszer során fejében.
Mi történik, ha Van egy végtelen ciklus?
>> Közönség: Ellenőrző C.
1. Előadó: Igen.
Szóval kontroll C-utóbb válaszolni.
Sajnos, most már kinyomtatható millió és millió nullák már
és így a számítógép fajta van előttem.
Szóval, ez lesz figyelmen kívül hagyni nekem egy kicsit.
De ha csak nyomd meg a Ctrl C pár alkalommal a Mac vagy PC billentyűzet,
Végül meg kell, sőt, megszüntetni.
És ha nem, mi megmutatjuk, néhány technikák nemsokára ahol
valójában erőszakkal ölni programok, ugyanúgy, mint a Windows és a Mac OS,
ha kell.
De próbáljunk valami mást.
Nézzük ténylegesen növelni I. Van ennek még lesz végtelen?
Hadd futtatásához.
És most akkor milyen mi is történik.
Ez is egy végtelen ciklusba.
De ez egy kicsit trükkös kérdés.
Vajon ez a nyomdába adás számok örökre?
>> Közönség: Nem.
1. Előadó: Nem
Miért?
Hallottam néhány nos itt.
Someone-- Igen.
Közönség: Nem volt elég bitek, hogy valóban tartani fog.
1. Előadó: Rendben.
Szóval nem elég bit tartani fog.
Szóval, mi fog történni?
Ez csak fog megállni?
>> Közönség: Valamikor fog állni the--
1. Előadó: Ez lesz zárva A hurok le, de miért?
Mi fog történni a legvégén határait?
Igen?
Közönség: Nem fog ciklusban vissza a negatív számok.
1. Előadó: A negatív számok, vagy ha mi csak kezelésére pozitív,
nulla legalább.
Szóval igen, feltétlenül.
Emlékezzünk vissza, hogy láttuk utoljára, hogy ha növekmény a bitek egy túl sokszor,
és ott mellső túlfolyó a kapacitás a int
vagy bármi az adattípus, akkor megy a kerületi, valószínűleg,
két negatív szám.
Vagy ha már meghatározza, hogy a tartományban kell csak pozitív,
amit tehetünk, de mi már nem láttam, hogy még,
lehet, hogy végül legalább vissza nullára.
Bár, tulajdonképpen igen.
Ebben az esetben, a negatív szám, amely esetben
A hurok fog megszüntetni mert nem, sőt,
nagyobb vagy egyenlő, mint nulla, ha ez negatív.
>> Így sajnos hogyan Hosszú lenne várnunk?
Most vagyunk-ig mi, 2.000.000-szerű?
Olyanok vagyunk, mint 2 milliárd, fogunk várni kell
amíg nem tudjuk valójában lát ez a tünet.
De látjuk, hogy egy kicsit gyorsabb, maybe-- lássuk, ha tudjuk megszakítani.
Gyerünk.
Még a menük jelennek meg lassan.
Minden rendben.
Szóval, mi jön vissza, hogy nemsokára.
Ez egy jó time-- verje meg, kölykök.
>> Ez egy jó ideje néhány bejelentéseket.
Szóval, ha lehet, mint hogy vegyenek részt YHack,
amely egy olyan esemény, hogy szponzorált barátaink a Yale-en.
És valóban, néhány tanfolyam TF Yale van szó ebben.
YHack egy nemzetközi hack-a-Thon házigazdája tartott
a Yale, összefogva 1500 hasonló gondolkodású hackerek és hirdetések minden
szerte a világon.
Ha ez az érdeklődés, vess egy pillantást ide.
Ha ez túl röviden a képernyőn, vessen egy pillantást a mai diák
Az URL-jét yhack.org.
Szóval, még néhány gyors bejelentések.
Szóval, hivatalosan szakaszok indul Jövő héten itt és New Haven.
Tartsa szem előtt, akkor is kap egy e-mail később ezen a hétvégén a legvalószínűbb.
Ez hosszú időt vesz igénybe A CS50 szakasz,
mivel az egész nép a osztály és mindenki körül mozog.
És minden Tanítási Fellows menetrendek is még megszilárdulása,
de stay tuned egy e-mailt, és ha szükséges kell, akkor újra a részben van után.
>> Study.cs50.net.
Tehát, még ha egy állandó résztvevő A szakaszok, rájönnek, hogy szinte minden
A forrásokat használunk szekciókban nyilvánosan elérhető CS50
Tanulmányozza át ezt az URL itt.
Tehát, ha valaha is szeretne újra felülvizsgálat anyag részben vagy olvassa el előttünk,
vagy nem tudja, hogy ez néhány héten, észre, hogy a minta diák,
és problémákat, és meghatározások, és még sok minden ott is.
>> Munkaidőben folytatódik ma, és holnap, és szerdán,
és csütörtökön ellenőrizze a pálya weboldalon a menetrend.
>> És azt is, most indít ma CS50 Beszéljétek.
Tehát, ha és amikor kérdése van az egymással, illetve a tanfolyam személyzete,
és általában dolgozik néhány problémát sor,
rájönnek, hogy nem feltétlenül kell fordulni, az emberi következő te.
Ha ott senki, akkor eljussanak hozzánk és osztálytársai
keresztül online CS50 Beszéljétek.
Szóval, ez a vita fórumon a kurzus,
és rájönnek, hogy ez talán a legjobb
kiindulópont, ha van kérdés, ha a munkaidô
különösen.
>> Ebéd elindul ezen a héten is.
A Tűz és jég [Hallhatatlan] New Havenben.
Vessen egy pillantást a pálya honlapot annak érdekében, hogy válaszolj.
Érkezési sorrendben szolgálják, hogy.
Ha nem kap ezen a héten fogjuk csinálni ezeket a legtöbbet minden pénteken
a futamidő alatt.
>> OK, és most egy szót osztályozás.
Különösen, amikor belépünk probléma meg egyet, ami ezen a héten,
és a probléma meg két és azt követően.
Hogyan megyünk kiértékeléséhez P sorozat és értékeli a minőségi erről?
Szóval, ez négy tengely, hogy az általunk használt CS50, és ők a négy itt.
>> Hatályát, amely rögzíti a numerikus alapján, hogy mennyi a P halmaz
tudtad kezelni.
Ez nagyjából megfelel a erőfeszítést, és ez a mi módon elfog
Próbáltad fele P állítva, az összes P készlet.
Ez egy könnyű, hogy tökéletes pontszámok ha nem, sőt,
próbálja minden szempontból a P halmaz.
Szóval, hogy tartsa szem előtt.
>> Korrektség, hogy pontosan.
Vajon a kódot munka, mint a specifikáció és a vezérkar "mintaoldattal
arra utalnak, hogy a kódot kell, sőt, működik.
Ellenőrizze 50, ha még nem találkoztam vele Még van P beállítani egy specifikáció
és általában Önnek igen / nem választ
a tekintetben, hogy a kód helyes.
Legalábbis annyiban, amennyiben megyünk értékelni, hogy a tesztek alapján
hogy mi fut az adott programon belül.
>> Design sokkal szubjektívebb.
Így jól megírt van a kód.
És ez a valami, kapsz jobb idővel,
és ez a valami, hogy mi lesz hogy több minőségi visszajelzést.
És a programok kialakítása talán jelenti előtt hosszú ideig
Csábító lehet valamilyen P állítva, hogy tegyen valamit loopingly,
hanem, hogy talán három, vagy négy, vagy Öt beágyazott előtérbe hurkok vagy beágyazott közben
hurkok.
Hogy általában kell kezdeni, hogy ha megalázkodik
és általában is tekinthető rossz tervezés.
És akkor elkezd látni az osztályban, és ki az osztály jó módja a dolgok,
Rossz módon a dolgok, hogy Lehet minden helyes, de nem
feltétlenül jól megtervezett.
Mint az írás egy esszét.
Lehet, hogy képes a szavakat egy oldalon, amely nyelvtanilag helyes,
de az esszé vagy a dolgozat ők csak
teljesen következetlen vagy unpersuasive.
És így, hogy lehet az analóg az írásos világa rossz vagy jó design.
>> És a stílus is, meglehetősen szubjektív.
De legalább azt várjuk összhang.
Így szép az a kód.
Vannak dolgok, szépen tagolt?
Vannak a változók is elemzi / Az összes a zárójelek és kapcsos zárójelek
igazodik, mint ahogy kellene?
Van egy CS50 stílusban útmutatót, A probléma set fog mutatni neked.
Azok kényelmesebb is Üdvözöljük elkóborolt, hogy
mindaddig, amíg saját magának következetes.
És ez is egy tanulság fogjuk erősíteni szakaszban.
Tehát, ha az összes ez egy kicsit gyors, észre a P halmaz és szakaszok
bemegy mélyebben nemsokára.
>> De általában van Nagyon kevés kanalak CS50.
Pontszámok általában skálán a 1-3, vagy 1-5.
Mi vagyunk literally-- és nem tudok mondani, Ehhez elegendő az első héten.
Három jó.
Így, bár igen, háromban Öt rendesen, matematikailag,
Lehet, hogy egy 60 százalékos vagy, mint a D mínusz.
Három van, sőt, jó.
És valóban, azt várjuk, a legtöbb diák az osztályban
hogy elindul a távon körül kettesével, hármasával, négyesével, és.
Valószínűleg nem sok ötös.
Nem túl sok is.
De általában indul hogy sweet spot a görbe
úgy, hogy az idő előrehaladtával, van valójában szoba,
és lehetőségek a felső progresszió.
Szóval, kérlek, ne egyenlőségjelet tesznek a három 60%.
Ez sokkal elvontabb annál.
A képlet, amellyel számítani fokozat van súlyozva az alábbiak szerint.
Korrektség érdemes a leginkább.
Tervezés érdemes egy kicsit kevésbé.
Stílus érdemes egy kicsit kevésbé.
És ez általában rögzíti az időt
hogy megy a szerzés egyes A tengelyek csak jobb.
A stílus szuper könnyű, legyen szuper gyors,
de ez egy egyszerű szokást hogy lusta kb.
Helyességét eltarthat Ön a legtöbb időt.
Kergeti néhány felfedezett hibát figyelembe, hogy a plusz órát vagy többet,
és igen, a pontozási végül rögzíti, hogy.
És így, most egy komolyabb szót.
Mivel CS50 van különbséget, a jobb
vagy ami még rosszabb, hogy a talán jobban megismerjék
A kérdések az egyetemi őszinteség, mint a legtöbb más szakok.
És valóban, ez a tudásom, hogy küldünk több diák, sajnos,
fegyelmi eljárás lefolytatása céljából Minden évben eredményeként. Na,
az az érdeke, teljes nyilvánosságra hozatala, beszéljünk röviden
arról, hogy mi folyik a CS50, és mit tehet, és mit lehet ilyenkor.
>> Szóval, itt 2007 óta, amikor Örököltem a kurzus,
az a szám, Hírdetőtábla esetekben.
Ad Board Harvard fegyelmi szerv, vagy most a Honor jogtanácsos,
amelyhez ügyeket, amikor hallgatók tenni valamit, hogy a pálya
tananyag tartja ésszerűtlennek.
Nincs igazi minta Itt, azt mondanám.
Ez ingadozik a év, de általában
ez az a szám, esetekben, amelyek említett.
A hallgatók száma amelyek részt?
Ez is változik.
Jellemzően tavaly Például, 29 diák a Harvard
voltak Ad bordás, hogy úgy mondjam.
29 közülük jelenlegi diákok, ketten előzetes diákok,
kik segítettek Néhány kellemetlen módon.
És akkor tekintve a százalékos, ez általában körülbelül 3%
az osztály, hogy sajnos teszi az ilyen jellegű döntéseket.
>> Szóval, tavaly ez 3,5% A CS50 a hallgatói szervezet
ez volt Ad bordás, hogy úgy mondjam.
>> Szóval, mit jelent mindez jelent?
És mit valójában?
>> Szóval, a teljes nyilvánosságra hozatala, mi Teljesen, mint számítógépes szakemberek,
Van szoftver rendelkezésünkre álló eszközök és ez nagyon könnyű számunkra, a méltányosság,
hogy más osztálytársai, akik nem átkelés ezeket a sorokat átkelni összehasonlítani
minden olyan előterjesztést, idén ellen minden benyújtása az elmúlt nyolc évben.
Szoftver ez.
És végül ez emberi szem, hogy úgy dönt,
e vagy sem, hogy utalja néhány mindegy további elbírálására,
de a szoftver biztosan segít.
És ez, őszintén szólva, ezért úgy gondolom, hogy van egy ilyen nagy számban CS50.
Ez nem azért CS50 hallgatók vagy CS diákok több
általában kevésbé becsületes mint bármely más diákok,
ez csak akkor van eszközök és technikák
amellyel ezt az első menetben.
>> De mi tartsa szemmel mindezen dolgok
valamint ismét az érdeke elismerve azt a munkát, amit most tesz
még egy-egy szuper többsége az osztály.
És a tanfolyam politikája a tudományos tisztesség,
annak ellenére, hogy egy csomó bekezdések Hosszú egy csomó golyók
amelyek remélhetőleg egészen olvasható, hogy Tényleg nem szűkülnek le ésszerűnek.
És a legjobb ökölszabály, hogy kínálunk fel a tananyag
ez a lényeg minden munkát, amit
benyújtja a tanfolyam kell lennie a saját.
És valóban, szinte az összes ilyen pontjában említett esetekben a fegyelmi eljárás
ez azért volt, mert néhány diák egy késő éjszaka jellemzően fordult saját kódját
több mint egyenesen egy osztálytársa, aki ezt követően fogadta el azt
teljes egészében vagy jelentősen cikke.
>> De tényleg, ez rendben van.
És valóban, az irodában órát, a cédulákat
akkor már átadta ha jött iroda órán múlt héten arra ösztönzi annyi.
Tökéletesen bátorítják és szívesen
hogy megvitassák a problémát készletek osztálytársaival.
Hogy segítsünk egymásnak, amikor megbotlott.
De általában az ökölszabály kell legyen ez a "ha segítséget kérsz,
akkor mutatják be a kódot, hogy mások, de lehet, hogy nem megtekinteni az övék. "
Tehát, más szóval, ha én küzd valamilyen Pset
és én csak ülök ott a étkezőben, vagy a könyvtárban,
vagy az osztályteremben próbálnak találni hibát,
Én természetesen azt mutatják, kódomat én képernyőn
annak a személynek mellett ülő nekem, természetesen a személyzet,
hanem egy osztálytársa.
De ha a megoldás, hogy osztálytársam kínált, ó,
Itt csak hogy egy pillantást, amit Tettem, hogy átlépi a vonalat.
>> És azt merem mondani, hogy ez általában ésszerű dolog a legtöbb ember számára
hogy nagyon könnyen helyszínen a vonal.
És így, hogy a tananyag részletesebben.
És most az egyik több ellentmondásos vonatkozásai
A CS50 tananyag, hogy azt hittem, szólani végezetül itt
az ún sajnálom záradékot.
Szóval, itt minden apró betűs.
De általában láttuk Az elmúlt 8 évnél
hogy valóban, szinte minden CS50 által esetekben az egyetemi becstelenség
volna az eredmény csak rossz döntéshozatali késő este.
Az eredmény a stressz, az eredmény A hiányzó táplálkozás, alváshiány,
Túl sok P-készletek, túl sok határidőket, túl sok kötelezettségvállalások.
Stressz kiépítése egy 2:00, 03:00 AM, 04:00, a határidő fenyeget.
A legtöbb diák ezekben az esetekben Épp most hozott rossz döntések
hogy esetleg nagyon jól bánni a Másnap reggel, ha nem perccel később,
de míg tavaly nem volt szeleppel, hogy ezek a diákok
valóban nyit, hogy valóban foglalkozzon a problémával a félelem nélkül
elindult a főiskolán összesen.
>> És valóban, mi vezetett ezt sajnálom záradékot tavaly,
amely azt mondja, hogy ha belül 72 óra, három nap,
Az átkelés néhány sort előírt tananyag
jössz elő, hogy az egyik természetesen a fejek, és mi lesz a chat róla.
Vannak még bizonyos kimenetele, ellentétben azzal, amit az
Beszámoltak az ellenkezőjére.
Van még néhány eredmény, hogy perelhető a kurzus,
Általában a nullázás egy Pset vagy vesz egy másik akció,
de mi, sőt, kezelni magunkat, és nem
utalja magasabb volt az eredmény Lehet, hogy sokkal súlyosabb.
És valóban, hogy megosszák, mi történt tavaly, a nyolc év, és most
Kilenc év tanítás a tanfolyam és kipofozva különböző gombok,
fordult különböző tárcsázza az elmúlt több éve akadémiai őszinteség,
és látva egy az adatok nem látható hatása, sőt a beszédek, mint ez,
ez volt a kezét a legjobb dolog, vezettünk be pedagógiailag
Nyolc évvel mentén ezeket a sorokat CS50.
>> 19 tanuló jelentkezett a jelen szakaszban az elmúlt évben.
Mi nem tett semmit a Hét azon hallgatók,
meghatározására, hogy ők feleslegesen aggódik.
Ők nem, sőt, átlépte a vonalat, de ez
volt egy jó beszélgetésre, hogy mégis.
Mi nullázni 11. pontszámok hogy nem nyújtottak be.
És egy esetben kértük a diák, hogy csinál egy problémát beállítani.
De vonzóbb, Őszintén, ezekkel 19 csevegések,
ami sokkal több volt, mint én várható, hogy mindegyikük
10 perc és talán egy órás is hozta
fényt számos kérdést illetően családi problémák, kérdések barátja,
mentális egészségügyi problémák hogy mi aztán részt,
a hallgató áldás, rezidens dékán, vagy barátok, vagy bármely más számot
A támogatási források.
Tehát, hogy ez volt messze az egyik A legjobb felhasználása korunk
és az egyik legjobb beavatkozások.
>> Ezzel azt mondta, nem volt bemenet a felderítési arányának
akadémiai becstelenség általában.
És merem állítani, ez részhalmaza A diákok a tavalyi
volt, hogy a demográfiai korábban soha nem azonosított előtt
és soha nem kapcsolódik előtt.
És igen, ezek voltak Csodálatos sikertörténetek
annak ellenére sem, napvilágra az optimálisnál rosszabb körülmények között.
Szóval, ezt tartsd szem előtt mint te, hogy talán,
Néhány rossz döntés magát késő este,
hogy van igénybevétele olyan hosszú a tanuló az adott helyzetben
saját fel, és terjesszen elő, hogy tudjuk hogy ez a fajta beszélgetés, és foglalkozni vele
olyan módon, hogy ez az oktatási, majd akkor tedd mögöttünk a következő napon.
>> Tehát minden további nélkül, hogy a élét erre a beszélgetésre,
az ok a kölykök felfelé van csak azért, hogy megtörjön a jég egy pillanatra.
És sajnos, ők mind az alvás, de mit kellett volna történnie itt
volt, mindenki kellett volna a félelem és az a fajta kikapcsolódásra
azt követően, hogy nagyon nehéz beszélgetés.
De úgy tűnik, tettem A kölykök aludni.
De ha elmész CS50 a honlap perjel kölykök,
meg lehet nézni őket egész nap.
Különösen talán 2:00, vagy 03:00, vagy 04:00 éjszaka
hogy egy kicsit a stressz enyhítésére van.
Szóval ez perjel kölykök.
Minden rendben.
Nem volt olyan szórakoztató?
OKÉ.
Szóval, vissza néhány számítógépes a tudomány, ha lehet.
>> Szóval, emlékeztetni arra, hogy utoljára kezdtük akik nem csak a fő, amely
volt az alapértelmezett funkció, a mikor zöld zászló kattintott egyenértékű,
de mi is indult röviden írásban néhány saját funkcióit.
És eddig ezek egyike sem funkciók volt különösen nagy vagy húsos.
Kapsz azokba nagyobb funkciók valószínűleg, P készlet 2, P készlet 3,
Határozottan P szett 4 kezdve.
Most a legtöbb program, ha nem mindegyik, minden bizonnyal a P
szett 1 lehet tenni teljesen fő.
Ha a program csak öt sor, 10 sor,
akár 20 sor hosszú, tökéletesen ésszerű írni, hogy
Az összes fő- és nehogy túl komplikált a kódot, de mit csinálunk ma
és tovább próbálkozik a szintén bemutatni néhány jó tervezési technikák
így például a kódot kap több bonyolult és azokat a problémákat
szeretné megoldani nehezebb és érdekesebb van, valami,
A szerszámokat a eszköztárat, amellyel tervezni jó megoldás azoknak.
>> Tehát, vessünk egy gyors pillantást vissza A program az utolsó héten, ami
volt funkciók nulla pont C. És észre, hogy egészen egyszerűen
úgy néz ki, mint ez a két funkciók, a fő és a nyomtatási nevét.
És visszagondolva, vagy talán reverse engineering ma,
mi volt a motiváció bevezetésére függvényében a sorban 28 nevű,
print név?
Vagy mi volt ez egy példa a szempontjából elv, vagy elvihető,
ha úgy tetszik.
Néhány mormogás.
Mi?
>> Ja igen funkcionális dekompozíció ez a fajta a képzelet módja mondván,
lebomlanak a programot alkotórészeire
majd azokat a részeket, összeállítani egy egész.
Szóval, ez is csak egyfajta Egy falatot már,
de ez talán még egy jobb példa valamit
most hívott absztrakció.
Jobb?
Absztrakció lesz egy A visszatérő témák CS50
és számítástechnika általánosabban mivel ez
olyan technika, amellyel meg lehet oldani problémákat hatékonyabban, mert
írhat megoldások több ösztönösen és olyan módon, hogy mérlegek
és érthető mások.
Mit értek ez alatt?
>> Szóval, vitathatatlanul sokkal olvashatóbb nézni egy ilyen programban,
szuper rövid bár ez.
Amikor meglátja a 22. sorban, hogy van olyan függvény, nyomtatás nevét.
Ez a név önmagában azt mondja, hogy mit csinál.
Ez a funkció tűnik úgy input közötti zárójelben,
és látszólag csinál valamit, feltehetően kiírja a nevét.
És igen, még akkor is, Teljesen volna
megtette, amit csináltunk egy hete volt, ami csak hogy ez a tényleges kódsort,
hogy eltűnjön ez, és kap eltűnjön ez mind együtt,
Ezt egy kissé szórakozott el fogalmát nyomtatás egy nevet.
Nem érdekel, ha használja a nyomtatási def.
Nem érdekel, ha van egy százalékkal S és egy rep N. Ezek
hihetetlenül misztikus részleteket.
Amit érdekel, mint a programozó nyomtat egy nevet.
És igen, mi jobb módja, hogy mint az egy funkció, print név?
És igen, ez volt az egyik motivációja csinál valamit, mint ez.
Így a kód olvashatóbbá több újrahasznosítható, és szintén magától leíró jellegű.
Most, vessünk egy pillantást egy másik példát,
amely funkciókat egy, amit kellett ide.
>> Szóval, ez talán még kényszerítő mert ebben az esetben,
Nem akarom, hogy csak kap egy int.
Azt szeretnénk, hogy egy pozitív int.
És kiderül, hogy pozitív int meg kell csinálni egy csomó rohangálás.
Jobb?
Ez nem egy egyszerű online hívja mint a nyomtatott neve volt,
ami bevallom, kevésbé meggyőző.
>> Ahhoz, hogy a pozitív int, logically-- hadd lépjünk vissza elrejteni ezt.
Mit kell csinálnod?
Mint minden eszközhöz, abban a pillanatban van
dolgok, mint a nyomtatási def a Standard Könyvtár és szintén CS50 könyvtár
már kap Int, és szerezz Float, Get Long Long, A string,
de az csak egy, a germán, most az Get Int.
Tehát, ha az egyetlen eszköz van a szerszámos doboz Get Int,
hogyan megy a végrehajtási hogy kap pozitív int?
>> Közönség: Hozzon létre egy naplót, és ellenőrizze arról, hogy a bemeneti, hogy adtak
pozitív volt, vagy sem.
>> 1. Előadó: Tökéletes.
Pontosan.
Egy másik eszköz van a mi eszköztár egy vagy két hete
csak a hurok konstrukciót.
És igen, igen, ha az általunk használt egy ideig hurok, vagy a do while ciklus, vagy egy fore
loop tudtuk valószínűleg megússza bármely e valamilyen formában.
Mi lehet végrehajtani fogalma get Pozitív int csak használ Get Int,
és aztán csak folyamatosan hív, hogy újra és tartsa nyaggat a felhasználó
amíg ő valójában ad nekünk, amit akarunk.
>> És így most ez a absztrakció a folyamat
kapok egy pozitív int egy függvény nevű
Get Pozitív Int egy kicsit kézenfekvő, mivel ezt nézd meg.
Ezek olyanok, mint 10 plus kódsor
részt vesznek abban, hogy pozitív int, és én nem igazán érdekel, hogyan csinálja.
Csak az érdekel, hogy te meg tudja csinálni, és így már
rejtve ezeket a részleteket mögött nevezett funkció Get Pozitív int, hogy
Valóban, van ez a do while ciklus.
>> És látni a múlt héten a szintaxis ott, de ez csak kijelenti N,
és nem írja ki a utasítást, hogy a felhasználó számára.
Arra kéri Get Int, majd ellenőrzi, ez a feltétel újra, és újra,
és újra, amíg a felhasználó együttműködik.
>> Tehát most, néhány alapvető ellenőrzést.
Azok számára talán ismerős egy kis programozással,
miért N kijelentette, hogy miért hozhatok N kívül a do while ciklus?
Miért van az, on-line 29, és nem on, mint 33, például.
>> Közönség: Mert amikor Kijelentem, hogy azon kívül, hogy milyen
több, a nagyobb scope--
>> 1. Előadó: Jó.
>> Közönség: --and ha kijelentem ez a cikluson belül, [hallhatatlan]
mert nem tud róla.
1. Előadó: Pontosan.
Ha tudok simplify-- ez egy kérdés a hatálya alá.
És hatálya vonatkozik arra az összefüggésre, amely a változó létezik, vagy felhasználható.
És a szép ökölszabály az, hogy Általában, ha kijelentjük, vagy hozzon létre
változó csak akkor tudjuk használni belülről A legközelebb átölelő zárójelek segítségével.
Szóval mit is jelent ez?
Ha én, ahelyett, visszacsinálni, és menjen el valamit, úgy érzi, egy kicsit egyszerűbb.
Jobb?
>> 32. sor csak úgy néz ki tisztább most nekem.
Csinálok mindkét dolog Egyszer majd hozzárendeljük
A jobb kezét a bal kezét.
A probléma most alapuló hogy feladat-meghatározása
van, hogy az N lehet használni a vonalak 31. és 32. belsejében ez a hurok,
de ahol az említett meghatározás lehet, hogy nem lehet használni?
Összhangban mi?
Igen.
>> Közönség: 35.
>> 1. Előadó: 35.
Határozottan nem 35.
És azt is, hol máshol?
Közönség: 34.
1. Előadó: Még 34 problémás, mert
kívül a zárójelek segítségével.
És így valójában lássuk, mi történik.
Jobb?
Ez úgy tűnik, egy kicsit intuitív, vagy lehet, hogy nem,
de lássuk, mi a fordítóprogram mondani, ha
bemegy a mai forrás könyvtárába.
Tedd funkció egy.
Istenem.
Nos, én végül elkészült hogy az úton.
Minden rendben.
És mi a kérdés?
Nagyon misztikus nézni.
De itt van, amit typed-- hogy a funkció egy.
Itt van, mit csinál okozta, ami valójában
használja a fordító csengés néhány ilyen zászlók
hogy majd meglátjuk előtt ismét hosszú.
És ismét, mindig meg Az első hiba,
mert lehet, hogy csak egy lépcsőzetes értelmetlen hatása a többi vonalon.
>> Szóval ez mit jelent az, hogy a probléma függvényében 1.c.
Ez a vonal 32.
És ez oszlop, vagy a karakter, 13.
Tehát, amikor a szövegszerkesztő, amely segít azonosítani, ahol a kérdés.
Szóval ha felfelé, mi a 32. sor?
Ez valóban ez ami már kiemelte
jobb here-- nem használt változó n.
De ez nem használt.
Én használ ez.
De a fordító zavarodott, mert csak belül létezik ennek hatálya alá.
És így nem tudom használni itt.
Nem tudom használni itt.
És a fordító, ezért nem is érdekel, hogy én próbálom.
Úgy tűnik, hogy a fel nem használt tartozó tényleges körét.
>> Így tudjuk kiterjeszteni a by doing Pontosan, amit elkezdtünk with-- int n.
És bár ez nem úgy néz ki, elegáns, talán,
és elvisszük egy plusz sort Itt, most már hatályát mindenhol.
Így próbáljuk meg újra.
Tehát, hogy a funkció az egyik.
Szép.
És most, ha én, ha futok funkció Egy, adjunk meg negatív 10,
negatív 1, 0, 1, és ez valóban működik.
>> Szóval van egy másik megoldást.
Tudod mit?
Mi van, ha igazán vagyok birkózik ez?
Nem tudom, hol a n kéne menni.
Tudod mit?
Én csak megy, hogy minden ahogy a tetején fájlom van.
Milyen lenne ez egyáltalán, mit gondolsz?
Igen?
>> Közönség: [hallható].
1. Előadó: Igen.
Úgyhogy tette globális, hogy úgy mondjam.
Ha van egy változó, amely már kívül az összes funkciót, amely lehetővé tette,
és a lefordítható, és n most elérhetővé nemcsak get
pozitív int, hanem main-- amely egy kicsit aggasztó, mert van
Már egy n a fő, így több a hogy csak egy moment--
de ez tekinthető rossz tervezés.
Minden rendben.
Ha kénytelenek valami ilyesmi, ó, én
Csak tedd fel itt, mert A kódot úgy tűnik összeállításához
általában nem a legjobb gyakorlatot.
Inkább azt szeretnénk, hogy válasszon lehetséges legszűkebb körre
a változók, ami azt jelentené, megy a mi eredeti terve, amely
itt van.
>> Most Mellesleg, ha egyáltalán van Egy a névvel változó itt,
az út c volna kezelni this-- bár ez nem fog megtörténni túl often--
az, hogy ez még mindig tökéletesen be itt.
De ez a meghatározás n sorban 22 fog árnyékot vessen a globális.
Szóval ez fog működni fő, és a globális egyik
ténylegesen alkalmazni, ha éppen kap pozitív int De erről bővebben
Egy másik alkalommal, de csak azoknak kíváncsi.
>> Tehát röviden, mi erősít ez itt.
Most kötekedik kívül két másik mielőtt megnézzük egy utolsó kódsort
Ebben a programban.
Get pozitív int.
A bal oldali A szó a szó int.
Mit jelent, hogy jelzi gondolsz?
Eddig mi már többnyire látható semmis.
Igen?
>> Közönség: Ez a fajta változó, hogy te kérdezel.
>> 1. Előadó: Igen Ez a fajta, hadd Nem mondom változó, de az a fajta érték
hogy amit kérek vissza.
És valóban, ez intuitív itt is, hátha.
Jobb?
Ha azt szeretnénk, hogy egy Pozitív int, mi az, amit
szeretné, hogy a function--, mint mi önkéntesek a múlt héten
hogy kézzel vissza egy darab A papírok int rajta?
És így már meghatározta, hogy a úgynevezett visszatérési típus ezt a funkciót
van, hogy pozitív int.
Ha nem akarjuk, hogy vissza semmit, azt mondod, semmis.
Ha azt akarjuk, hogy visszatérjen egy string, azt mondod húr.
Ha azt akarjuk, hogy visszatérjen úszó, azt mondod úszó.
De az egyetlen, amely érvényes itt logikusan, mert én vagyok a get int,
Bár én vagyok korlátozza azt, hogy pozitív értékek, az, hogy visszatérjen egy int.
>> Így viszont, mit jelent hogy van egy űrt zárójelben?
Mit jelentenek a zárójelben általánosságban meghatározzák?
Igen?
>> Közönség: Ez az a funkció, a valójában nem kapok meg.
>> 1. Előadó: Ez az a funkció, a valójában nem kapja meg, amit?
>> Közönség: Egy bemenet.
>> 1. Előadó: An bemenet, nincs.
Tehát valóban, ha zárójel Itt adja semmis,
ez csak azt jelenti nem akarok semmiféle adatot.
Majd a probléma kezelésére magam.
És valóban, akkor nem kell mondd, hogy pozitív int semmit.
Csak azt mondom, hogy a pozitív int, és hogy funkciót kialszik, és ezt a dolgot.
>> De ott volt egy kis trükk voltam már játszott itt egész idő
hogy megbizonyosodjon arról, ezt a kódot állít össze.
Figyeljük meg, hogy int-- kap pozitív int void-- van a vonalban 27.
De valamilyen látszólag furcsa okból ez is itt a 16. sorban.
És csak a jó intézkedés megismétlem ez így tökéletesen egyforma.
És mondtam prototípus egy kis egysoros megjegyzést.
Mi történik, ha törlöm ezt, és Most ismételni, hogy a funkció 1, írja.
Hoppá.
Várj egy percet.
Hol van a lapon?
Huh?
Készenlét.
Tedd funkció 1.
Ott vagyunk.
OKÉ.
Hát nem mentette meg rendesen.
Szóval, azt hiszem, van egy kis bug itt, ahol én nem vagyok
látva a lap nevét az adott pillanatban.
Szóval mi folyik itt?
Implicit nyilatkozatot funkció kap pozitív int érvénytelen C99.
Szóval zavaros újra.
Szóval mi ez jelzi?
Nos, kiderült, hogy C elég hülye.
Nos, ez a programozási nyelvet, vagy inkább a fordító.
Csak azt tudja, hogy mit kell tanított meg, és ez csak
tudni fogja, hogy valami ha tanított, mielőtt.
Más szóval, Fő abban a pillanatban, én vagyok
próbálják meg a funkció nevű kap pozitív int.
De a fordító nem megy észrevenni, hogy kap pozitív int
létezik, amíg a 26.
És akkor mi a fordító nem csak hibák, amint ez lesz a sorban a 17.,
mondván implicit nyilatkozat Az, hogy a pozitív int, amely
csak egy divatos szóval, én nem hogy mit kap pozitív int még.
>> Más nyelvek, mint a Java és Python és Ruby lehet előre nézni.
C nem.
És így, ahogy mi erősít ez az egyik két módon.
Vagy az egyik, ha a probléma az, hogy kap Pozitív int még nem látott,
Nos, hadd vigye a tetején.
Ez lenne a probléma megoldása.
De általában, ez tekinthető a jobb technika
hogy tegye a fő funkciója a nagyon tetején úgy, hogy egy emberi olvasó a kódot
tudja, a program mit csinál, mert fő nem temették összes
ahogy az alján vagy a közepén.
Ez az egyik legfontosabb.
Tehát, hogy nem érzi ideális.
És akkor valóban kap a helyzetekben, amikor
Ha egy funkció hívások Egy másik, amely felhívja a másik,
akkor kap egy kérdés, ahol nem lehet menni a másik felett, logikusan.
Ez egyszerűen nem lehetséges.
>> És így a munkába körül ez az, hogy csak vegye
A funkció aláírása, így a speak-- Az első sorban, ahol ez declared--
és csak másolja, illessze a top, de nem göndör braces--
Csak egy pontosvessző.
Ez olyan, mint egy kis emlékeztető A mi jön.
És valóban, az összes ebben az időben, amikor láttak dolgokat, mint a szokásos io.h
és cs50.h hasonlóan, azokban a dot h fájlok vannak más prototípusok.
És majd meglátjuk, hogy nemsokára.
>> Tehát röviden, ha van egy program, Egy fájl több funkciót
Különben fő, akkor szinte Mindig akar nyilatkozni őket
csak útján az első vonal, majd egy pontosvessző,
legtetején a fájl.
Ez volt a sok egyszerre.
Bármi kérdés?
Minden rendben.
>> Tehát menjünk tovább, majd hogy valami ilyesmit köhögés.
Ó.
Hogyan illeszkedik.
Minden rendben.
Köhögés.
Tehát itt van egy c program végrehajtásáról
megcsináltuk a minap Scratch, hogy nagyon egyszerűen csak
mondja köhögés, köhögés, köhögés.
Minden rendben.
És valaki azt mondta, néhány nappal ezelőtt, hogy van
egy módja a tisztítás ezt a kódot már fel.
Minden rendben?
Amint másolja és beillesztés valószínűleg rossz tervezés.
Legalább egyszer eljutunk négy vagy öt vagy 20 köhögés, úgy érzi, rossz gyakorlat.
Mi csak tartani példányt, beillesztés.
Mi a kézenfekvő megoldás a takarítás ez a program fel?
>> Közönség: Hurok.
>> 1. Előadó: Igen.
Így használja a hurok.
És tudjuk használni a for-ciklusban, egy darabig hurok, tetszőleges számú megközelítések.
És valóban, ez az, amit teszünk verzió itt.
Már helyett újraírt meg verziójában egyik cough.c
hogy csak a köhögés belül a hurok.
Rendben, de van egy lehetőséget teremteni, hogy milyen kezdete
tervezni ezt egy kicsit több, mint A lecke, amit tanított egy perce
amely this-- tegyük fel, hogy én akartam, hogy hozzon létre egy függvényt nevű köhögés,
nézzük meg egy pillanatra mit fog kinézni.
Tehát, ha akarok valamit köhögni, csak meg kell
használható nyomtatási f belül a funkciót.
És valóban én vagyok.
És valóban, mindez ideje, bármikor te
nyomtatás valamit A képernyőn egy programozó
nevezném, hogy a mellékhatása.
Nem én átadta vissza valakit egy értéket.
Ez nekem vesz néhány fellépés hogy lehet szemmel látható.
De ez a funkció köhögés, nem is tér vissza semmit alapján az első sorban?
Nem, mert visszatérési típus semmis, ami csak annyit jelent,
ez nem átadta nekem semmit vissza.
Lehet, hogy csinál valamit vizuálisan, de ez nem átadta nekem
vissza egy darab papír, mint a múlt héten.
>> Nem is kell semmilyen bemeneti?
Nem.
És így semmisnek itt is.
Szóval ez is egyfajta több mint Mérnöki ezt a problémát.
Jobb?
Csináltam a program több komplex, több sornyi kódot,
Én még nem tette semmilyen több funkciós, de ez a
lenne egy lépcsőfok, talán egy szélesebb
összefüggésben bonyolultabb kódot.
De mi a helyzet ezzel?
Mi közöm done-- csak rápillantott ez nem nézett a comment
legtetején a file-- mi van Én alapvetően itt történik az én köhögés
végrehajtása, hogy ez más?
Igen, vissza?
>> Közönség: Tedd azt, így Van egy karakter kikapcsolni.
1. Előadó: Igen.
Szóval ez úgy érzi, milyen szép.
Jobb?
Ez olyan, mint hozzá egy funkciót a program vagy a funkciót, ebben az esetben.
Még mindig vissza mást.
Lehet, hogy egy vizuális mellékhatása, mert keresi a nyomtatási f.
De most már parametrizálhatók A funkció, amely
azt jelenti, hogy megadta venni bemeneti int típusú és hívjuk n,
de nem tudtam nevezni, amit csak akarok.
Valójában, ez lehet, hogy csak szor, hogy még konkrétabb.
És akkor én is csak ezen változtatni itt.
De a lényeg az, hogy ez hogyan hozzon létre egy függvényt, amely veszi bemenet.
És ha visszaemlékeztek essek révén talán egy internetes
A séta-átvezetéseket, a negyedik és egyben utolsó köhögés például
észre fogod venni, itt voltam generalizált kódomat further-- fajta absztrahált
tovább.
Mint a köhögés és tüsszentés, mindkettő kb mintha azt mondanánk valamit, vagy hogy
valamilyen hangot.
Mentése lenne a megfelelő Scratch blokk.
És így mit csináltam ebben a verzióban, ahol tudunk csak pillantást,
köhögés olyan, mint mondja, [Köhögés], köhögés, és eközben a tüsszögés
mintha azt mondanánk, [ACHOO].
És így már általánossá amelyek végrehajtásáról
Mostanra végrehajtási Ez az általános funkciót,
azt mondják, ami azért érdekes, a mai célra
Csak azért, mert még mindig Nincsenek visszatérő típus.
De hány bemenet van rajta?
Közönség: Két.
1. Előadó: Két.
És ezért ha azt szeretnénk, hogy hogy a két érv,
Csak el őket vesszővel.
És ha azt szeretnénk, hogy majd hívja ezt a funkciót,
észre, hogy csak hívja mondjuk, idézet, idézet vége,
Az első érv, közös n, a második érv.
Tehát újra, csak ki most a építőkövei, hogy mi is valójában
végre néhány saját funkcióit.
Minden rendben.
Bármilyen kérdése a következő?
>> Tehát most hadd húzza vissza egy réteg, ha így van.
És a cél, végső soron, Jövő héten problémája szett
lesz a cryptogrophy-- a művészet rejtjelező információkat.
És kifejezetten, az információt lesz akkor kódolására vagy dekódolására
lesz a szöveg.
És így ez a fajta meghívók A kérdés ma, mint jól,
mi folyik a motorháztető alatt szöveges túl ASCII hétről nulla,
És hogyan lehet ténylegesen elkezd manipulálni?
Tehát itt van Zamyla nevét.
És a szövegben, hogy lehet bevinni be, mint az A string funkciót.
És most kezdődik, amikor megjelenik egy húr mint this-- Z-A-M-Y-L-egy--
kezdeni gondolkodni róla, mintha minden e karakterek van egy doboz a
saját.
És valóban, egy hét múlva már ideje, minden egyes ilyen dobozok
képviselnek majd nagyon specifikusan egy blokk memory-- egy falatot a memóriát.
Tehát minden ilyen leveleket, végül, képviseli majd a 8 bitet.
És mi lesz valóban látja, mi folyik A a motorháztető alatt a gépemen.
>> De nem elegendő Csak nézni Zamyla
szemüvegén keresztül, amelynek alapján az egyes E betűk saját mezőbe.
És szépen elég C tudjuk eléréséhez minden ilyen dobozok közvetlenül.
Tehát, ha azt akarjuk, hogy az első betű a nevét, szuper könnyű C.
Ha azt szeretnénk, hogy az utolsó levél, szuper könnyű is
egy darab új szintaxis.
>> Így fogok menni előre be CS50 IDE és megnyitja a húr nulla pont C.
És ebben a példában itt, vannak egy pár új dolog történik.
Tehát első a sorban a 19. volt, most már Látta ezt before-- A string.
Ahogyan tehát egy gyors józanság ellenőrzés, ha valaki tudna ajánlani akár verbálisan
Egy laikus magyarázata mi folyik a sorban 19.
Mint most ezt lefordítani Angol hogy a szobatársa nem CS50
talán megértené.
Igen.
>> Közönség: Van a felhasználói input húr, és tárolja egy változóban s.
1. Előadó: Jó.
Kérje meg a felhasználót egy szöveggel és tárolja egy változóban s.
Az remek.
Tehát a jobb oldali oldalán, hívjuk A string.
Hogy visszaad egy értéket hogy nem rendelték
ettől jobb oldalról a bal oldali oldalán egy változó nevű s ez
célja, hogy tárolja a húr.
Pontosan.
>> Tehát most a 22. sorban per A megjegyzés a sorban 21,
Nyilvánvalóan ezt a szöveget nyomtatja egy karakter soronként.
De hogyan?
Tehát először is, Inicializáljuk I. 0.
És akkor hogyan jutunk el vége Zamyla nevét?
Nos, a végén Zamyla nevét, tudtam
kézzel írja be az utolsó karaktert a neve valahogy, vagy számát is.
Jobb?
Ha visszamegyünk here-- Z-A-M-L-- Y-L-egy-- így tudtam írja be.
Mi az index Zamyla utolsó levele?
Ha ez 0-- szólva, mint egy programmer-- 0, 1, 2, 3, 4, 5,
Én heard-- így valóban, az utolsó betű A Zamyla neve a hatodik,
de ha azt nézzük, 0, ez lesz az 5. számú.
Így tartsa szem előtt van.
>> Kiderül, van egy funkció C nevű strlen, és vissza a nap
és a mai napig is, Sok programozó
dönt, hogy szinkronizálja neveket a funkciók hangzik, mintha a szavakat
ők próbálnak mondani.
Tehát strlen string hosszát.
És akkor mi lenne karakterlánc hosszát S tért vissza, amikor Zamyla az input?
>> Közönség: Öt.
>> 1 hangszóró: Z-A-M-Y-L. Hat.
Jobb?
Mi a hossza Zamyla nevét?
Jobb?
És csak a valóságban, hat betű.
Jobb?
És így mit jelent ez a mi hurok?
Fogunk menni 0 legfeljebb hat, amely
fog adni nekünk öt ismétléseket.
Mit csinálunk minden bejárást?
Nos, százalékban C, valaki kitalálta a minap,
azt jelenti, helyőrzőjeként mi?
>> Közönség: Char.
1. Előadó: Csak egy char.
Tehát egyetlen character-- nem több karakter, mint egy húr.
És akkor itt van az új vonal hogy megvan a nyomtatást.
És akkor itt van az új szintaxist.
Ha azt szeretnénk, hogy nyomtassa ki az i-edik karakterhez S, hogy úgy mondjam,
akkor egyszerűen azt mondják, a Nevét a húr S,
majd nyissa szögletes zárójel, és majd bezárta szögletes zárójel, egy i
a közép.
És ez a fajta szép, hogy ez a fajta néz ki, mint egy négyzet
csakúgy, mint a terek, ahol a Zamyla karakterek vannak azon a képen van.
>> Tehát, ha én valóban futtatni ezt Most nézzük meg, mi történik.
String 0 pont perjel karakterlánc 0, és akkor én vagyok
majd írja be Zamyla nevét.
Nincs azonnali, mert nem használja nyomtatási f, de ez rendben van.
Én csak tudom, mit tegyek.
És valóban, a kinyomtatott Zamyla nevét, soronként egyet.
>> Most egy kicsit meggondolatlan.
Tegyük fel, hogy nem tudtam, mintegy strlen és gondoltam,
Minden rendben, senki nem megy, hogy egy Íme nagyobb, mint 50 karakter.
Menjünk előre, és újrafordítani ezt és futtassa újra azt, majd írja be Zamyla
újra.
Logikus, hogy mi van a programot megpróbálom kinyomtatni?
Z-A-M-Y-L-A, akkor, mint a 45 ismeretlen bájt memóriát.
És valóban, mi jön vissza hogy ez a gondolat a memóriát.
De csak logikailag, ha Zamyla neve ennek a hosszú,
mint egy a kép Itt, amit mondunk
A további nyomtatást, további nyomtatást, tartsa nyomtatás, további nyomtatást, további nyomtatást,
egészen a 50. karakter, amely ki tudja, mi fog történni.
Úgyhogy tulajdonképpen egy pillantást.
Nézzük írja Zamyla.
Érdekes.
Szerencsénk volt.
Csak egy csomó fehér térben.
Ó.
Van egy funky karaktert.
Úgy néz ki, olyan, mint egy furcsa kérdés Mark mellett, de van Zamyla nevét.
Menjünk igazán vakmerő.
Mi lenne, ha ki kell nyomtatni 500 blokkolja az ismeretlenbe?
Menjünk előre, és ezt a valamint majd újra futni.
És hadd teljes képernyős, mert látnunk kell több hely.
Zamyla.
Szerencsém újra.
>> Mer akkor egyre több vakmerő?
Menjünk tovább vakmerő.
50.000 karakter.
Ez egészen biztosan nem jó ötlet.
Minden rendben.
String 0.
Ez lesz az utolsó demo.
Zamyla.
Huh.
OKÉ.
Szóval a memória valóban üres most, amely tulajdonképpen egyfajta kényelmes.
Amit én próbálok alábbiakra: minden rendben.
És most én csak megyek, hogy vakmerő.
500.000.
Make-- nézzük teljes képernyős azt.
Belép.
Zamyla.
Ott vagyunk.
Fogalmam sincs, hogy mi van, de ez rosszul hangzik.
Minden rendben.
És valóban, hamarosan, ha között A szerencsés kevesek munkaidőn
és a probléma meg egyet, akkor Lehet, nagyon jól ez a találkozás.
Szegmentációs hiba valójában nem Van egy jól meghatározott jelentéssel.
Ez azt jelenti, valami tévedés kapcsolatos egy szegmens a memória.
És a laikus szempontból, ez azt jelenti, hogy megérintette
memory-- szoktuk RAM a gépemben hogy nem kellett volna hozzáférést.
És ez az, ami mind erős és veszélyes is
a C, hogy tulajdonképpen nem léphetnek be szabadon
A teljes egészében a program memória vagy bájt vagy RAM, pontosabban.
>> Így, bár Zamyla neve csak hat karakter hosszú,
Még mindig megy sehova memóriában akarok.
És ahogy Mellesleg, ha már Olvastad néhány cikket
az évek néhány szerver vagy egy program
szerzés repedt vagy feltört ez kihasználták valamit
úgynevezett puffer túlcsordulás kihasználni, hogy mi lesz a ténylegesen
beszélni néhány hét alatt, ami Általában hivatkozva valahogy becsapó
A számítógépet jól megy határain túlra memória
hogy legyen, és találni valami szaftos
abban memory-- egy jelszót, talán egy utat
megkerülésének néhány sorszám ellenőrizze, vagy csak általában képesek
becsapni a számítógép végrehajtó kód, amely nem volt célja.
De térjünk vissza a valóságban csak egy pillanatra
ahol ez a program megvalósított strlen,
és vezessen be egy dolgot itt.
Mi az újdonság ezek között első három sor?
>> Tehát húr dot h.
Kiderül, itt van ez a könyvtár úgynevezett Húr Dot H, vagy String Könyvtár,
akinek header fájlt, hogy úgy mondjam, string dot h ez ad nekem
hozzáférést ehhez strlen funkciót.
Ha én kihagyja, hogy a fordító fog kiabálni velem valamilyen formában.
De tudod mit?
Most térjünk igazán árnyalt.
Összhangban 22, van valami fajta A inefficient-- rosszul tervezett,
arguably-- erről kódsort.
Gondolj vissza, hogy A hurok végrehajtják
és milyen lépéseket fog újra megtörténni, és újra és again-- az inicializálás,
a feltétellel, hogy a kód lesz végrehajtva, akkor a növekmény
vagy a változás, akkor a feltétel, akkor a kód, akkor a változás, akkor
a feltétel, akkor a kód, majd a változás, és így tovább.
Szóval mi lehet egy kicsit aggasztó, vagy rosszul végzett itt?
Igen, a kék.
Közönség: STRLEN van úgynevezett sok-sok alkalommal.
1. Előadó: Igen.
Tehát strlen hívják sokszor, de mi van
hossza Zamyla nevét a első alkalommal a ciklus végrehajtja?
>> Közönség: Hat.
>> 1. Előadó: Hat.
Nos, mi a hossza a nevét A második alkalommal a kódot hajt végre?
>> Közönség: Hat.
>> 1. Előadó: Rendben.
Ez még mindig hat.
Jobb?
Zarla nevét még nem változott, még akkor is, ha keresem
A csak egy része a betűk az ő nevét.
És így az a tény, hogy én vagyok hatékonyan kérdezi ezt a kérdést, mi
hossza Zamyla, mi a hossza A Zamyla, mi a hossza Zamyla,
Hat különböző alkalommal, vagy hét még, csak hülye,
mert ez változatlan a válasz.
És így, amit tudtam ténylegesen tennie, this-- a karakterlánc egy
Nekem van egy kissé jobb verzió itt.
There-- whoops-- húr két Nekem van marginálisan jobb változata, amelyben
Én this-- helyett csak inicializálása i 0, én is egy vessző
Kijelentem, egy második nevű változó n-- Nem kell mondanom int újra.
Nem kellene, sőt.
De én azt mondom n.
És akkor alaphelyzetbe n a strlen n, úgy, hogy most
Hányszor strlen kivégeznek összesen?
Csak egyszer.
És így ez mit értünk korábban a jobb tervezés.
Igazából egyszer a kód helyes, megy vissza, és végiggondolja,
vagyok így a lehető legkevesebb memória vagy néhány másodperc
vagy milliszekundum számítógép idő a lehetséges, hogy végre néhány probléma?
És fogok görgetni fel, és csak annyit,
hogy itt van ez említés null ez a verzió,
de majd jön vissza, hogy nemsokára.
Mert most, vessünk egy pillantást A ez hova vezet minket.
Tehát az egyik, kiderül, hogy Most, hogy megvan a képessége,
nézni az egyes karakterek, kihasználhatjuk valamit
hétről 0, ami nagyon titokzatos, fajta érdektelen idején.
De most, és különösen akkor, ha eljutni kriptográfia egy hét,
ez lesz elég erős.
Kiderült, hogy néhány adatok types-- ints és úszók
és karakter és vonósokra és egyéb things-- néhány közülük
lehet nagyon könnyen átalakítható a másikba.
>> Például, amikor beszéltünk Az ASCII egy ideig ago-- itt
A nagybetű keresztül M, pont, pont,
dot-- azt mondta, hogy van egy leképezés ezek között a betűket és számokat.
És valóban, ez igaz A kisbetűk is.
Kisbetűs egy 97, a tőke a 65.
És van egy számot ASCII, amely csak ez a leképezés
rendszer az összes többi ilyen leveleket.
Szóval mit is jelent ez?
Nos, én megyek előre, és nyitott A valódi gyorsan egy úgynevezett
ASCII 0, amelynek legnagyobb részét a hozzászólás.
És ismét online lehet mindig pillanat alatt át a megjegyzéseket.
>> És nézd meg, mit ezt fogja csinálni.
Szóval ez van a fő funkciója.
Már kódolva a számok csak a Most, mert tudom, hogy mit csinálok.
Tudom, hogy mit akarok itt látni.
És én már inicializált I. 65.
És én számítok fel a 26 betű összesen.
És mit fogok én kinyomtathat egy sorral
ha lehet értelmezni ez a kiemelt sor?
Mi lett nyomtatva?
Igen.
>> Közönség: Fogsz kinyomtatni a levelet, hogy
megfelel a térképet a levél érték és egész érték?
1. Előadó: Pontosan.
Megyek nyomtatni a levél megfelelő egész érték,
és fordítva, az alábbiak szerint.
Hát ez az, hogy valaki azt mondta korábban, csak egy helykitöltő egy char.
Még mindig.
Ez, persze, egy helykitöltő Egy int-- nem egy új sort.
És most észre, az első érték, Én dugulás számára, hogy helyfoglaló
nem csak az I. mondok, A zárójelben, char én,
amely a zárójeles char mondja a fordító, kezelésére I
nem olyan, mi az, ami egy szám.
Kezeljük úgy, mint egy valódi karakter.
Míg a második érték Én dugulás in-- én-- kéne lennie egy számot.
>> Tehát, ha tudom lefordítani ezt a program-- így ez teszi ASCII 0,
dot perjel ASCII 0-- én csak kap Ez a praktikus kis grafikon, amely
megmutatja az összes lehetséges leképezés anélkül, hogy szerintem
keresztül, vagy kitalálni a saját.
És én is nyomtat ki, észre a kisbetűk,
mert pár sorral később, én is ki kell nyomtatni a leképezést
is, amely csak a azt mondják, hogy ha egyszer megérted
mi folyik alatta A motorháztető, igaz
automatikusan konvertálja oda-vissza.
És valóban, ha valakinek valaha ez az általános iskolában
vagy hallott valaki mitikusan vesz egy megjegyzés
és átadta volna a vagy barátja az osztályban,
de megzavarta a betűket, mint az A B válik,
és B válik C, vagy valami bonyolultabb annál, nos,
hogyan megy körülbelül végrehajtó, mint egy gyerek?
Nos, csak milyen tudni Egy válik B, B válik a C,
de matematikailag Mi volt az a gyerek csinál?
Mit hozzátéve, hogy minden betű?
Hatékonyan, 1.
>> Tehát, ha változtatni B-be, ez olyan, mint a változó 65-66,
amely matematikailag pontosan azt jelenti, adjunk hozzá 1.
És így ha kellett végrehajtani hogy kicsit megtévesztő technika
a tanár kódot, Lehet csinálni, hogy pontosan csak
hozzáadásával egyetlen betűvel együtt.
Szóval nemsokára, mi vagyunk lesz látni, hogyan
kihasználhatják, hogy a ténylegesen valóban tülekedés és megfejt
információkat.
Közben tudom, hogy már megkezdődött hogy vezessenek be egy pár más könyvtárak
here-- a húr egy ma.
És egy nagyon hasznos oldal remélhetőleg talál
nevezik reference.cs50.net, amely A tanári kar már össze,
így ha azt szeretnénk, hogy felnéz, hogyan strlen munkák,
akkor elkezd gépelni A függvény nevét,
kattintson strlen ott, majd Egy kevésbé kényelmes magyarázat
fog megjelenni.
Vagy ha szeretné, hogy a hivatalos Linux-alapú magyarázata,
akkor kattintson több süppedő a jobb felső sarokban, és ez
bemutatja ugyanazt az információt, de a bonyolultabb kifejezéseket.
Ez hasznos forrás a valójában mit csinál mindent.
>> Legközelebb megyünk vessünk egy pillantást Ovaltine
és több, és bemutatkozni a világ a kriptográfia.
Ezt megelőzően, majd meglátjuk Később ezen a héten.
És most, Colton Ogden.
Találkozunk szerdán.
>> [Zenelejátszási]
>> 1. Előadó: Milyen a [Hangjelzés] csinálsz?
>> 1. Előadó: Eszem desszertet?
Hogyan enni?
A kezeddel?
>> [Zenelejátszási]