[ZENE] David J. MALAN: Rendben. Ez CS50 és ez a 2. hét elején. És emlékezzünk csak vissza, hogy több mint Az elmúlt pár hét, vezettünk be a számítógép tudomány és viszont, programozás. És elkezdtük a történetet útján Scratch, hogy grafikus nyelv a MIT Media Lab. Aztán legutóbb, A múlt héten, ahogy mi bevezetni higher-- egy alacsonyabb szintű nyelvi ismert a C, valamit, ami tisztán szöveges. És valóban, utoljára feltárni ebben az összefüggésben számos fogalmat. Ez, visszahívás, volt az első program néztük. És ez a program, egyszerűen, kiírja, "hello, világ". De olyan sok mintha varázslat folyik. Van ez a #include ezekkel hegyes zárójelek. Van int. Van (void). Van zárójelben, kapcsos zárójelek félig kettőspont, és így sokkal több. És így, emlékeztetni arra, hogy bevezettük Scratch így tudtuk, ideális, lásd múlt hogy szintaxis, a dolgokat, hogy tényleg nem minden szellemileg érdekes, de korán van, teljesen, egy kicsit trükkös hogy lezárja az elméd köré. És valóban, az egyik leggyakoribb dolgok elején egy programozási osztály, különösen azok számára, kevésbé kényelmes, az, hogy csalódott és gáncsot bizonyos szintaktikai hibák, nem is beszélve a logikai hibák. És így Céljaink között ma, valójában, majd lehet, hogy felvértezzük Önt néhány problémamegoldó technikák, hogy hogyan hogy jobban megoldani a problémákat maguknak formájában hibakeresés. És akkor felidézni azt is, hogy a környezet, hogy mi vezetett utoljára hívták CS50 IDE. Ez a web-alapú szoftver, amely programozhatja a felhő, hogy úgy mondjam, miközben az összes fájlokat együtt, ahogy ismét a mai napon. És emlékszem, hogy mi felülvizsgálata ezeket a témákat itt, köztük a funkciót, hurkok, változók és logikai kifejezések, és feltételeket. És valójában még néhány, hogy mi lefordítva a világ a semmiből a világ C. De az alapvető épület blokkok, hogy úgy mondjam, valóban még mindig ugyanaz a múlt héten. Sőt, igazán csak volt egy különböző puzzle-darab, ha úgy tetszik. Ahelyett, hogy a lila menteni blokk, akkor helyette volna printf, ami Ezt a funkciót a C, hogy lehetővé teszi, hogy nyomtatni valamit és formázza meg a képernyőn. Bemutattuk a CS50 Könyvtár, ahol Van most az Ön rendelkezésére get_char, és get_int és get_string, és néhány egyéb funkciót, Nos, amelyen keresztül lehet kapni bemenet a felhasználó saját billentyűzettel. És mi is szemügyre vette a dolgokat mint these- bool, és char, és dupla, úszó, int, long_long húr. És van még más adattípusokat C. Más szóval, ha kijelentem, a változó tárolja néhány érték, vagy ha végre egy funkciót hogy visszatér valamilyen érték, megadhatja, hogy mit típusú érték, hogy van. Ez egy string, mint egy karakterek sorozata? Ez több, mint egy egész? Ez egy lebegőpontos érték, vagy hasonlók? Tehát C, ellentétben Scratch, valójában kezdte meg, milyen adatokat voltunk visszatérő vagy használ. De, persze, mi is ütközött néhány alapvető korlátait számítástechnika. És különösen annak ezen a nyelven C, visszahívás hogy vettünk egy pillantást integer túlcsordulás, a valóság hogy ha csak egy véges mennyiségű memóriát vagy, pontosabban, véges számú bitek, akkor csak akkor számíthat ilyen magas. És így nézett ez a példa itt amellyel a számláló egy repülőgép,, valóban, ha fut elég hosszú lenne túlcsordulás és az eredmény egy szoftver tényleges fizikai potenciál hiba. Megnéztük úszó pont pontatlanság, a valóság hogy csak véges számú bitek, legyen az 32 vagy 64, akkor csak azokat annyi szám után egy tizedespont, ami után elkezdi, hogy pontatlan. Így például, egyharmadát a világ itt, a mi emberi világban, tudjuk, hogy ez csak egy végtelen számú 3s tizedesvessző után. De a számítógép nem feltétlenül képviselnek végtelen számú számok ha csak azt teszik lehetővé, hogy néhány véges mennyiségű információt. Tehát nem csak mi felállítja nagyobb teljesítmény szempontjából arra, hogyan lehet kifejezni magát a billentyűzet a programozás, mi is csak mi akkor valóban nem. És valóban, a hibákat és hibák adódnak az ilyen jellegű kérdéseket. És valóban, a témák között ma lesznek témák, mint a hibakeresés és valóban keresi a motorháztető alatt A dolgok kerültek bevezetésre a múlt héten tényleges megvalósítása, úgy, hogy a jobb tisztában vannak mind a képességeit és A korlátozások a nyelv, mint a C. És valóban, mi húzza vissza a rétegek A legegyszerűbb adatszerkezet, egy úgynevezett tömb, amely Scratch történik, hogy hívja a "listán". Ez egy kicsit különböző ebben az összefüggésben. És akkor mi is be az egyik Először a terület-specifikus problémák a CS50, a világ kriptográfia, a művészet rejtjelező vagy rejtjelezés információt, hogy küldhetünk titkos üzeneteket és dekódolja a titkos üzenetek két személy között, az A és B Szóval mielőtt átmenet az, hogy az új világ, próbáljuk, hogy felvértezzük Önt néhány technikákat, amelyek segítségével megszünteti vagy csökkentse legalább néhány A frusztráció hogy már valószínűleg találkozott Az elmúlt héten egyedül. Tény, hogy előttünk van such-- néhány Az első probléma a C. És esély, Ha te, mint én, az első alkalommal megpróbál írja ki a program akkor is, ha úgy gondolja, logikusan A program nagyon egyszerű, Ön is nagyon jól megüt egy fal, és a fordító nem fog együttműködni. Tedd, vagy csenget nem megy hogy ténylegesen az ajánlattételt. És miért lenne az? Nos, vessünk egy pillantást, talán egy egyszerű program. Megyek, hogy menjen előre, és mentse ezt a Fájl szándékosan nevű buggy0.c, mert tudom, hogy kifogásolható előre. De lehet, hogy nem veszik észre, hogy ha ez a az első vagy második vagy harmadik program hogy igazából így magam. Így fogok menni előre, és írja ki, int main (void). Aztán belső én kapcsos zárójelek egy nagyon ismerős ( "hello, world-- backslash, n ") - és egy félig kettőspont. Már mentette a fájlt. Most fogok lemenni az én terminál ablak és adjuk ki a make buggy0, mert megint a fájl nevét ma buggy0.c. Szóval írd be: make buggy0, Enter. És, ó, istenem, előhívni utoljára hogy nincs hibaüzenet egy jó dolog. Tehát nem kimenet egy jó dolog. De itt van világosan Egyes hibák számát. Tehát az első sorban a termelés beírása után teszi buggy0, visszahívás, az csenget a meglehetősen bőbeszédű kimenet. A motorháztető alatt, CS50 IDE van konfigurálva hogy egy csomó opciók ezzel fordító így nem kell gondolkodni róluk. És ez minden, ami első sorban azt jelenti, hogy kezdődik csenget. De azután, hogy a problémák kezdődik, hogy a megjelenésüket. Buggy0.c a 3. sorban, karakter 5, van egy nagy, vörös hiba. Mi az? Burkoltan kijelentette könyvtár funkciója printf típusú int (const char *, ...) [-Werror]. Úgy értem, hogy nagyon gyorsan mindig nagyon misztikus. És természetesen, az első pillantásra, mi nem elvárják, hogy megértsék a teljes egészében az adott üzenetet. És így az egyik tanulság, ma megy hogy próbálja észrevenni minták, vagy hasonló dolgok, hibák lehet, hogy a múltban tapasztalt. Tehát lássuk ugratni egymástól csak ezeket a szavakat, ismerős. A nagy, vörös hiba egyértelműen szimbolikus, hogy valami baj van. hallgatólagosan nyilvánításáról könyvtári függvény a printf. Tehát akkor is, ha nem egészen értem, hogy mit burkoltan kijelentette könyvtár funkciója eszközöket, a probléma biztosan tárgya printf valahogy. És a forrás, hogy a kérdés köze nyilvánította. Nyilvánító funkció megemlíteni, hogy az első alkalommal. És mi használt terminológia a múlt héten deklarálási függvény prototípus, akár csak egy sort a tetején a saját fájlt vagy egy úgynevezett header fájlt. És milyen fájl nem mondunk a múlt héten, hogy a printf az idézet, idézet vége, kijelentette? Milyen fájl prototípus? Tehát, ha emlékeznek rá, a legelső dolog, amit gépelt, szinte minden program utolsó time-- és véletlenül egy pillanattal ezelőtt kezdődött gépelés myself-- volt ez here-- hash-- #include