[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? 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. 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] [Zenelejátszási] 1. Előadó: Milyen a [Hangjelzés] csinálsz? 1. Előadó: Eszem desszertet? Hogyan enni? A kezeddel? [Zenelejátszási]