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