[Zenelejátszási] ANDI Peng: Ez CS50, és Üdvözöljük a héten két szakasz. Ez tulajdonképpen míg hét két mi class-- ténylegesen, Az első héten már volt részén. Kézfelemeléssel, hogy sokan közületek minden jött szuper részén a múlt héten? OK, ez rendben van. Rendben. Hányan figyelte szuper részén a múlt héten? OKÉ. És ti nem is volt gond A probléma meg egyet? Így fogok venni azt, hogy van egy csomó nagyon intelligens gyerekek ebben az osztályban, és a dolgok rendben lesz. OKÉ. Tehát first-- Először is, mi csak fog röviden megy át a napirendet ma. Megbeszéljük természetesen logisztika. Sok akkor valószínűleg kérdései merülnek fel hogyan mennek a dolgok ezen a kurzuson. Majd válaszolni rájuk. Fogunk röviden megy át hurkok esetén bármely srácok nem fogadott szuper részén. Megbeszéljük ASCII feltérképezése. Megbeszéljük tömbök, funkciók, a parancssori paramétereket. És végül, amit a srácok valószínűleg az összes Tényleg itt akarok lenni, hogy megtudjuk, az Ön pset2. Majd néhány szép trükkök és tippeket, hogyan kell csinálni. OKÉ. Továbbá, másrészt van sok édességet itt. Aki szereti a cukorkát, csak gyere fel ide. Megragad egy. Van egy csomó. Van egy csomó az irodában. Én nem igazán akar enni édességet minden nap. Srácok kell enni az édességet, mert hoztam ide nektek. Csak enni édességet. Lesznek édességet minden részén. Tehát az első, ki vagyok én? A nevem Andi Peng. Én vagyok a vezetője a TA a CS50 itt a Yale-en. És amellett, hogy hogy én is be-- ha bárki is az általam elvártnál a futási haver, a vállad sírni. Ha az előző este a PSET esedékes, Önnek fogalma sincs, mi folyik itt, ütött ki. Majd sajnálkozik együtt, satöbbi. Csak tudom, hogy itt vagyok, mint egy forrás az Ön számára, mint az első sorban abban srácok kitalálni, hogyan a problémák megoldása érdekében CS50 és azon túl. Én e-mail andi.peng@yale.edu. Én is küld ki az egyén E-mailbe a telefonszámom benne úgy, hogy nem mindenki a Internet láthatja a telefonszámot. Nyugodtan hívjon bármikor. Komolyan, a telefon általában csatolt a kezem. Lehet, hogy nem reagálnak egy pár percig. Lehet, hogy nem válaszolnak egy pár órát. De én garantálom neked, ha Ön e-mailt nekem, ha hívnak, szöveget nekem, én 24 órán belül válaszolnak. Gyakran fogok válaszolni, mielőtt hogy mivel megértem hogy mindenki van néhány probléma, és azt szeretné, hogy választ meg kell válaszolni nagyon gyorsan. Azonban, ha a hívás nekem 30 perc múlva hogy a darab, ami miatt csütörtök night-- lenni, mint, Andi, segítsen nekem, Még nem started-- adjak hogy olyan váll sírni. De lehet, hogy ideje gondolkodni hogyan nem teheti meg legközelebb. OKÉ. Hoppá. Hogyan megy vissza? Ott vagyunk. Tehát ebben természetesen van egy tonna támogatást mindenkinek. Amellett, hogy csak szakaszok itt, amelyeket Minden héten kap költeni 90 Csodálatos perc velem, mi is munkaidőben. Hányan vagytok srácok már volt, hogy munkaidőben segítségért? Nagy. Ez nagyon jó látni, mert Van a személyzet több mint 45 TA és CA erre kiképzett persze, hogy itt hogy segít nektek az Ön psets. Hétfőn ők tartják a TEAL osztályban 17 Hill House itt a Yale. Kedden és csütörtökön, ők tartottak a közös. 8:00-11:00 elég sok minden hétköznap. Gyere, gyere ki. Bármilyen probléma, nincs problem-- Csak gyere be, majd mi segítünk ki azzal. Másodszor, amellett, hogy irodai óra és szakaszok, mi is rövidnadrág. Egyáltalán látott már valaki egy pár a rövidnadrág, vagy walkthroughs a videók A honlapon? OKÉ. Tehát ők nagyon, nagyon hasznos. Kedves Harvard termelés csapat odaát, hogy az iskolai Északon, az általuk filmre és gyártott ezeket a hihetetlen walkthrough videók. Elviszik lépésről lépésre hogyan megy a probléma megoldására. Gyakran, ha zavaros egy egyszerű fogalom, egyedülálló koncepció, vessünk egy pillantást, mert valószínűleg Rövid rajta valahol a honlapunkon. És ez általában egy nagy forrás kell keresni, ha te vagy az első elvesztette, hogyan kell kezelni a problémát. Harmadszor, mi is van study50 és reference50. Szóval tanulmányozd 50 a honlap csak egy link. Ez, azt hiszem, study.cs50.net vagy valami ilyesmi. Csak a Google is. Rengeteg diák készített. Rengeteg a nadrág és walkthroughs-- dolgokat minden összeállított nagyon szép és ügyes srácok minden böngészhet a lát semmilyen fogalmak hogy te zavaros. Ez azt valószínűleg fedezik odaát study50. Reference50-- hasonló. Van egy csomó különböző jegyzetek könnyen elérhető az Ön rendelkezésére. És végül, van mi nevű CS50 Beszéljétek, egy olyan fórum, amely, ha az este csinálsz a problémákra, mondjuk, Kérdése van. Jelentkezzen be az CS50 Beszéljétek. Tegye fel kérdését. És akkor az egyik hundreds-- talán thousands-- társaik szedni ezt osztályú online fog jelentkezni. És talán valaki tud a választ, mielőtt a TA. Ez lényegében csak egy Online fórum, hogy mindannyian használja, hogy megvitassák a problémákat. Ez szupi. OKÉ. Szóval probléma határozza. Azon vagyunk, közvetlenül a vastag a problémát meg két. Sokan már átvergôdtünk problémát meg egyet. Azt már tudjuk, hogy talán vár A tegnap este, hogy nem a PSET nem a legokosabb dolog a CS50. Tippek és tanácsok alapvetően siker olvassa el a teljes specifikációt. Hányan vagytok már olvasd el a spec PSET 2? OKÉ. Ez egy szilárd összeget. Tudom, hogy ti valószínűleg felismerte Mostanra a szemüveg nagyon hosszú. Ők nagyon, nagyon hosszú. Nagyon nehéz olvasni minden sort Az, hogy alaposan szó szerint. Azt akarod, hogy csak sovány, ahol azt mondja, hogy tegyünk valamit. Én garantálom neked, ne csináld ezt. Ha ezt teszed, akkor valószínűleg Hiányozni fog valahol ahol azt mondja, hogyan kell kezdeni a problémát vagy azt mondja, hogy mit nevet a problémát, vagy azt mondja, ez valószínűleg a legjobb út kezdeni ezzel a problémával. És akkor majd elveszik. Amikor megpróbálja olvasni a spec felénél, sok a fontos information-- az, hogy te nem lesz képes igazán hozzáférést. Szóval olvassa el a teljes specifikációt. Próbálja elolvasni az egész spec mielőtt jön a rész, mert akkor, amikor beszélni a PSET, mindannyian van egy ötletem A mi folyik. Másodszor, ez egy olyan koncepció hogy szeretni fogom a referencia sok egésze folyamán félévben. De alapvetően, elénk félúton, nem igaz? Nekem, mint a TA és Jason persze menedzser és Scaz, mint a professzor és David, mint a tanár és az összes A másik szép Tas ezt az utat, asszisztensek ebben course-- mi mindent megteszünk, hogy te meg Akár sikerül ezt a folyamatot. Tartunk részt. Tartunk munkaidőben. Mi válaszolunk a telefon hívásokat, válaszoljon az e-maileket, mindent megteszünk, hogy arról a kérdésre adott válasz. Azonban, segíts nekünk is. Találkozzunk félúton. Ha jön a hivatali órák Nem miután elment, hogy részben, és nem látta az előadásokat, amelyeknek nincs ötlete, mi folyik itt, mint, segítsen nekem. Én leszek, mint, nos, sajnálom. Lehet, hogy ideje hitelezni hogy a váll sírni, mert nem vagyok benne biztos mit tehetek, hogy segítsen ha nem próbálja meg legalább segít magad egy kicsit az elején. Találkozzunk félúton. Tudja, kérem, jöjjön kész válaszolni, és kap készen arra, hogy vegyenek részt az anyagot. Ez teszi a dolgokat annyira könnyebb mindenkinek részt. Igen, ez nagyjából azt. Osztályozás. Így a tananyag, ez elég mélyreható kapcsolatban, hogyan fokozat. De alapvetően, a bontás ebben 50% -a a fokozat lesz a psets, amely szép, mert ez az, ahol te kiadások túlnyomó többsége a kurzus ideje. Tesztek 40%, és a A projekt végső lesz 10%. Lesz két vetélkedők egész Ennek során a félév. Azt hiszem, az idők és dátumok is szerepel a tananyag. Az is, hogy mi lesz osztályozásra a psets az, hogy lényegében négy értékeket rendelünk az egyes fokozat. Van egy értéket körét, helyességét, design, és a stílus. Szóval, mint látod, ez a fajta a mi képlet psets. Három adunk a legtöbb súlya a korrektség, mert nyilván az edző kell teszteli az esetek hogy azt akarjuk, hogy teszteljék. Srácok mind check50 az Ön rendelkezésére. Ez egy nagyon hasznos funkció hogy a srácok mind töltse fel a kódot, hogy a szerverek, ahol ellenőrizni fogjuk az Ön számára. És láttad azokat frowny arcok, mosolygó arcok. Ők nagyon, nagyon hasznos. Kérem, ne legyen a diák, hogy tetszik próbálkozás hogy Bedrótozhatsz minden a választ rájuk. Azt már biztosan látott PSET, ahol Valaki látta az értékek check50 és ők csak bedrótozott in-- ha ez a szám, nyomtassa ki ezt a számot. Ha ezt a számot, nyomtassa ki ezt a számot. Ne csináld ezt. Annak ellenére, hogy technikailag check50 helyes, Ön módon oldja meg a probléma nem helyes. Szóval csak használja check50 takarékosan. Hanem győződjön meg arról, hogy megérteni, hogyan is működik, a program működik továbbá a check50, mert nem tudjuk tesztelni minden lehetséges esetén check50. Majd tesztelni néhány közülük. Tervezés lényegében, hogyan jól megtervezett van a kódot? Ha a fájl létrehozásával több kódsor sok-sok alkalommal. Lehet, hogy nincs elég A legjobb design a kódban. Talán itt az ideje, hogy adjunk, hogy hurok. Lényegében itt ez csak az összes mintegy próbál tenni a kódot, próbál írni a kódot leghatékonyabban lehetséges, hogy a program fut a lehető leggyorsabban. Végül, van stílusa. Tehát stílus fajta egy önkényes, szubjektív távon. Tudom, hogy hivatalosan is stílus 50 útmutató CS50, ahol azt mondja, ó, te kell egy hely van. Meg kell valamilyen formában A kód így. Meg kell neveznie a dolgokat ilyen módon. Nem igazán érdekel, önmagában, hogyan választhat stílust a kódot, Csak amíg te maradj következetes. Például, ha úgy tetszik, hagyjon után négy mielőtt a négy hurok, csak csináld, hogy minden alkalommal. Ne fajta csinálni. Ne csináld máskor. Ha szeretné megtartani göndör nadrágtartó tér egy bizonyos módon, Csak mindig így. Ne fajta csinálni valahol Itt és valahol nincs ott. Amikor mi osztályozás, ez nagyon nehéz ha fogalmam sincs, hogyan te formázás a kódot, dolgok szokatlan és a helyén. Ha csak tartsa következetes, ez sokkal könnyebb számomra, mint a nagyobb hogy képes legyen olvasni a kódot. Ez sokkal könnyebb, mint egy diák hogy képes, hogy nézze át a kódot és nézd meg, mi a baj ez perjel miért van kérdésekkel. A stílus egyik legegyszerűbb dolgok srácok tehetünk, hogy teljes pontszámot. Lényegében, ha csak érdekel, ha akkor fizet, ha öt perccel a figyelem a kód minden héten, akkor kell lennie kezd megtelni stílust pontot. Végül, van az úgynevezett A szorzó körét. Scope-- Tudom, hogy ez egy nagy szó, különösen ebben az osztályban. De hatálya, Mindez azt jelenti, az, hogy maga mindent megpróbál A psets a legjobb képességét. Ha bekapcsolja háromban a négy problémát és nem is próbálja az utolsó, akkor valószínűleg fog elveszíti néhány pontot a hatálya alá. Akkor is, ha csak elkezd a problémát, nem a legjobb, járni rajta. Még ha ez nem működik, kapcsolja be, mert ez azt mutatja, és azt bizonyítja, nekünk, hogy akarsz, hogy próbált a probléma beállítva A legjobb képességét. És akkor mi adhat teljes pontot hatálya alá. Scope is nagyon fontos, amikor beszélni a legalacsonyabb PSET pontszám csepp. Tehát során a félévben, a srácok kilenc psets. És mi fog ténylegesen csökken A legalacsonyabb pontszámot ki a kilenc, de csak akkor, ha teljes körű pont. Tehát, ha viszont hiányosan PSET, Sajnos, nem tudjuk csökken, hogy az egyik, mert a hatálya pontokat nem fejeződött be. Tehát akkor is, ha a szörnyű héten ahol haldoklik, és te beteg vagy a kutya meghal, a macska meghal, és te túlterhelt házi feladatot, Csak próbálja a PSET. Csináld a legjobb képességét. Ha ez nem működik, akkor nem számít. Csak kapcsolja be. Legalább tudjuk adni Ön kiemeli a fáradságot. A vonatkozó erőfeszítéseket ebben az osztályban. Legalább legalacsonyabb pontszámot csepp a fáradságot. Szóval igen. Ez nagyjából azt. Van valakinek kérdése, így messzire hogyan évfolyamon az osztály? Vagy ezek bármelyike? Bármelyik ezen így far-- szakaszok, munkaidőben? Hűvös. OKÉ. Tehát ez egy olyan téma, hogy nem Egy igazán szeret beszélni. Nem igazán szeretnék beszélni róla. Srácok nem igazán akar hallani, hogy beszéljek róla. De sajnos, mindannyian meg kell beszélni róla. David töltött 20 perc előadás beszél róla. És ez a téma akadémiai őszinteség. Tehát mindannyian itt valószínűleg írásos egy esszét valamikor a Yale karrierjét. Mi már valószínűleg ütött egy beszélgetés, ahol voltunk azt mondták, hogy nem plagizál mi esszé, mert ez a munka nem a miénk. Számítástechnika, van ugyanazt a fogalmat. Minden munka, amit nyújt be, az összes kódot, hogy írsz legyen kódot, amit írtak. Amennyiben nem kódot, hogy már másolt valahol máshol. Amennyiben nem kód, amely amit googled és lehuppant a és nem igazán tudom, hogy működik. Ön milyen van értelme a hogy mit csinál, de nem igazán. Ha kétségei vannak, lényegében, ez csak ésszerűnek. A tananyag, van egy egész listát azokról a dolgokról látjuk indokoltnak versus nem elfogadható. Például, ésszerű az ön és a barátja megvitatása, mi a legjobb módja annak, hogy menjen mintegy logikusan egy probléma megoldására. Ez meglehetősen ésszerű. Mi nem lenne ésszerű az, ha srácok együtt, gépelt ugyanazt a kódot, és megfordult ugyanazt a kódot. Ez nem elfogadható. Ugyanaz, milyen egy esszét. Ha azt szeretnénk, hogy megvitassák a barátod, hé, ez az, amit akarok írni. Ezek azok a lépések akarok figyelembe, hogy írjak róla, nagyszerű. Ez csodálatos. Kérjük, együttműködnek egymással. Ha a srácok kezdeni írásban ugyanaz a dolog, kapcsolja ugyanabban esszé, ez kevesebb az OK gombra. Tehát, ha bizonytalan vagy, csak ne csináld. Itt mi a CS50, van szkriptek hogy futni automatizálni tesztelésére nem csak a helyességét a kódot, hanem az egyediségét a kódot. Ezért kérjük, ne tegye nekünk abban a helyzetben kelljen utalni az ügyet, hogy EXCOMM. Kérlek, mindenkinek, nézzük csak hogy ez egy csodálatos élmény. Mindenki megtanulja jobban, mindannyian boldogabbak, és mindannyian létre sikerül ezt a folyamatot. Valami, ami nagyon egyedi erről osztály hogy azt hiszem, mindenkinek meg kell igazán figyelni, hogy van nevezzük a sajnálkozás záradék a tananyag. Tehát lényegében 72 órán belül, ha úgy gondolja, hogy csinálunk valamit te nem igazán biztos volt megfelelő, kérem, jöjjön velünk. Azt megígérhetem, hogy 72 órán belül fogjuk kezelni az ügyet magunkat hivatkozás nélkül magasabb hatóságnak a közigazgatásban. Tehát, ha jön hozzám, és azt mondják, Andi, hé, nagyon sajnálom, de azt hiszem, van egy pár sort az én kód tegnap este, hogy valahogy googled, leszállt a Stack Túlcsordulás, másolja a vágólapra, és én nagyon, nagyon sajnálom arról, tudassa velem. Kérjük, ne csak hagyjuk, hogy elmérgesedni és csak remélem, hogy én is fogja. Mi lesz elkapni. Csak gyere velem. Hadd tudja, 72 órán belül. Majd kitalálni a megoldást. És ígérjük, hogy mi nem fogunk kitérni egyetemi hatóságok lényegében. Szóval ez az Ön érdeke hogy csak őszinte legyek mindenkivel részt vesz a tanfolyamot. OKÉ. OKÉ. Tehát most, gyorsan, mielőtt Mozgok, csinál akárki kérdései merülnek logisztikai hogyan tanfolyamok fogunk futni, hogyan szakaszok mennek futtatni, ezzel? OKÉ. Igen. Közönség: [hallható]? ANDI Peng: Igen. Szóval quizzes-- hányan vagytok a hétfő / szerda rész? Hányan vannak A kedd / csütörtök? OK, így ez egy szilárd osztott itt. Tehát az is, hogy mi fut ez a Yale-en, hogy mi megy, hogy két különböző quizzes-- egyet minden section-- hogy fogják venni az órákon. Azt hiszem, ez október, október végén, valami ilyesmi, mint heti egy A kvíz. Igen, most jött az osztályba. Azon a hétfő vagy a szerda akkor viszem a teszt. Azon a kedden vagy csütörtökön akkor viszem egy másik kvíz. De ugyanaz az anyag fogják fedezni. Igen. Jó kérdés. Igen. Közönség: Hol vagyunk menni, hogy ellenőrizze a fokozat? ANDI Peng: Igen. Szóval lesz küld-e e-mail, amit minden héten ha vetélkedők a graded-- vagy, Sajnálom, ha psets osztályozzák. Psets általában fordult A délig vagy pénteken. Szóval megígérem, hogy fogok meg kell kérni őket vissza hozzád A délben a következő pénteken. Valahányszor kategóriás PSET Küldök ki egy értesítést évfolyam könyv hogy megmondja, hogy a pontszám lehet itt megnézni. Szóval jobb ezen a héten, miután befejezni osztályozás múlt heti psets, srácok kap egy e-mailt értesítést mondom, hé ez az, ahol megy a megtekintéséhez a fokozatok. És láthatjuk minden bontásban a fokozatok. Láthatjuk hozzászólás. Ó, gyors dolog is. A megjegyzés rovatba a nagy könyv, ahol én valószínűleg töltik a legtöbb időmet osztályozás. Tehát az egyik dolog, ami Nagyon fontos, ha srácok nézi A fokozat a psets nem csak keres a fizikai pontszám hanem hogy időt Tényleg olvasta a megjegyzéseket. Gyakran mely visszajelzést ad, hogyan te egy probléma megoldására. Ha meg kell csinálni valami egy kicsit jobb, konstruktív kritikát általában legjobb tájékoztatókat az említett hozzászólások részben. Ezért kérjük, kérem, én megyek hogy időt írásban észrevételeket. Kérjük, azt nagyon értékelem ha a srácok azt olvastam ezeket a megjegyzéseket. OKÉ. Hűvös. Minden rendben. Így fogunk kezdeni beszélni és pusztán a gyors néhány az anyag heti nulla csak hogy a jobb oldalon e hét elején problémáit. Tehát a while ciklus egyik A három típus hurkok korábban tárgyalt ebben az osztályban. A while ciklus lényegében van írva a szintaxis ahol, míg egy bizonyos feltétel, Ehhez többször, ugye? Gondolj arra, hogy ezen a grafikai itt. Fogsz kezdeni egy bizonyos ponton a kódban. Fogsz be a hurok feltétel if-- Nem tudom-- x kisebb, mint egy. Ha ez igaz, akkor lesz hogy végre a ciklus törzse. És te fogsz tartani csinálsz hogy újra, meg újra, meg újra, újra és over-- ezért ez egy loop-- amíg az Ön állapota válik hamis. Tehát ily módon, egy darabig hurok az egyik egyszerűbb módon hogy írjon bármilyen feltétellel, hogy meg kell ismételnie újra és újra és újra. Csak vigyázz, ha írsz semmiféle hurok hogy van egy kilépési feltételt valamint egy frissítést amibe annyira, hogy a ciklus nem csupán elgázolta és több mint végtelenül. Mindenesetre, fogsz hogy szeretne meggyőződni arról, hogy te megváltoztatják néhány aspektusa a kódot, vagy a végén a hurok csak hogy megbizonyosodjon arról, hogy van egy módja felé való elmozdulás a feltétellel, hogy szeretne találkozni a végéig. Van ennek értelme mindenki? Csak nem akar lenni felzárkóztak a spirál, ahol megyünk körbe-körbe, és nincs mód, hogy megtörjük a hurok. És minden hurok lényegében van egy módja csinálja. OKÉ. Másodszor, sokan közületek a Mario psets Valószínűleg kellett alkalmaznia az ilyen típusú hurok. Úgy hívják a do while ciklus. Először is, valaki meg tudja mondani nekem, mi a különbség egy do while ciklus és a while ciklus? Igen. Közönség: A do while ciklus fut az első [hallhatatlan]. ANDI Peng: Igen, pontosan. Tehát a do while ciklus mindig azt teszi, amit belül van a do, a zárójelben és teszi ezt a feltételt Az ellenőrzés előtt a the-- sajnálom, ez azt kód előtt ellenőrzi a feltételt. És ez különösen fontos számunkra Itt ebben az osztályban, mert a legtöbb alkalommal fogunk akar kérni a felhasználó számára valamilyen bemenet. És akkor, attól függően, A bemeneti adnak nekünk, akkor tudjuk értékelni, ó, nem meg kell kérni őket újra? Így Mario, ha a felhasználó adta meg negatív magasság, például, fogsz első prompt és tedd, amit belül van. Akkor fogsz ellenőrizni közben. Tudja, negatív 1, az, hogy egy pozitív szám? Ha nem, én megyek vissza, és ismételje meg a Do és ismételje és ismételje és ismételjük, amíg azok Végül kapsz egy számot, amit szeretsz, hogy mindannyian foglalkoztat a mi kódot. Nagyon fontos lenne a lényegében semmilyen felhasználói beavatkozásra. Én garantálom, hogy bármely időt egy PSET, ahol kérünk benneteket, hogy input bármilyen kódot vagyunk Valószínűleg fog adni próbájának, amelyben vagyunk fog adni valami rossz ez megy, hogy megpróbálja megtörni a kódot. Ha megpróbáljuk kérni, hogy adja meg az egész, mi is csak kapsz egy húr és nézze meg, hogyan fog kezelni. Ha azt kérjük, hogy foglalkoztat egy olyan korban, mi is kapsz egy negatív szám hogy hogyan kellene kezelni. Csak győződjön meg róla, hogy a srácok vizsgálatoknak esetek, amikor nem a legjobb bemenet, mondjuk úgy. És a do while ciklus ez sokszor a legjobb módja annak, hogy tervezze meg a kódot, így hogy megfelel az irányelv hatálya. OKÉ. OKÉ. Tehát valószínűleg ez a leginkább komplex kifelé a három hogy átnéztük eddig. És úgy tűnik, nagyon ijesztő elején. De azt garantálom, hogy, ha egyszer srácok beletanul, hogyan kell használni a for ciklus, ez az egyik leghasznosabb dolog, leghasznosabb eszközei arzenál előre lehet ebben az osztályban. Így például, a Scratch, mi volt ez a nagyon egyszerű blokk hogy csak azt mondta, ismételje meg ezt a bizonyos mondatok bizonyos számú alkalommal. By the way, SAJ-- ez Scaz Andi Jason. Mi sokszor írjon e-mailt SAJ. Ha azt mondjuk, Saj, nem szabad összekeverni. Ez csak nekünk. Tehát a karcolással, tudtuk, hogy a egy blokk, hogy azt mondta, ismételje szeretem SAJ! 10-szer. Nagyon egyszerű. A logikája, hogy egy Nagyon, nagyon egyszerű, ugye? Azt akarom, hogy először végig az első időt és nézze meg, hogy a második alkalommal és látni, hogy harmadik alkalommal, így tovább és így tovább, amíg el nem éred a 10. És ahogy mi azt jelentené, hogy a kód csak egy egyszerű hurok. Tehát, fogsz, hogy állapítsa a változó itt, ebben az esetben, egy int. Fogunk nevezd meg i. Megyünk inicializálása 0-ra. És a megállási kiadás lesz i kisebb, mint 10. És a frissítés lesz i ++. És a hurkon belül, ez lesz a végrehajtás, amíg végül is eltalálja a végén a condition-- amelyben esetben meg fog szakadni a hurok. Ott kell lennie a cucc, amit srácok mindenféle látott és meg kellett tennie a probléma meg egyet. Van valakinek bármilyen kérdése tekintetében a hurkok most? OKÉ. Nagy. OKÉ. Tehát azoknak, akik olvasd el a PSET spec erre a hétre tudom, hogy mi megy, hogy foglalkoztatni úgynevezett ASCII és ASCII tábla. Így Dávid előadás ment át röviden számítógépek hogyan essentially-- mindent van kódolva egy számítógép bináris, a nullák. És az is, hogy a számítógépek képesek különbözo értékek tárolására mellett a nullák vagyunk a leképezés ezek a számok, hogy képviselje a többi számjegy vagy lényegében más karakter. Tehát ebben az esetben, egy ASCII table-- minden, hogy nem a térképen karakter, vagy karakter, a számok. Tehát a forráskód fájl Ön computer-- látja, hé, egy csomó nullák, nullák, nullák. Ez az, amit tárolt tényleges memória a számítógép. De amikor az ember akar kommunikálni a számítógéppel, mi want-- mondjuk, például, ha akarom, a nagybetűs Egy, Megyek kell valamilyen módon , amely a számítógépet, ó, mikor írja nagybetűs Egy, úgy értem ez a képviselet bináris. És így, ahogy mi, hogy van dobott egy önkényes dolog, úgynevezett ASCII tábla, ahol mi, emberek, a programozók, néhány évvel ezelőtt, önkényesen úgy döntött, hogy akartál rendelni ezeket száma értékeket ezeket a karaktereket. Szóval ti google online. Azt hiszem, van egy link, hogy a pset-- csak egy ASCII térképen asztal, ASCII asztalra. Csak fordítja bináris számokat karakter. És ez lesz nagyon hasznos a probléma szett amikor csak akar számítani valamit, vagy ha a megjeleníteni kívánt egyes karakterek vagy egészek vagy módosíthatnak bizonyos karaktereket. Ez lesz nagyon Fontos, hogy minden tudja, hogyan kell navigálni egy ASCII táblát. Így például, a nagybetűs A képviselteti száma 65. És a kisbetűs egy képviseli 97. Ezért fontos, hogy tudja, hogy a különbség a két érték 32. Gyakran, ha kell átalakítani a az egyik a másik, a különbség a 32. És ne aggódj, ha te ilyen A zavaros ez az első. Megyünk át, hogyan is kellene alkalmazzák ezt a tényleges kódot. OKÉ. Tehát azoknak, a laptopok ki, nyugodtan húzza fel az ASCII tábla, mert ezek valószínűleg igényelnek srácok referencia amit a karakterek. OKÉ. Így tudta, hogy bizonyos karakterek map bizonyos számok, ha én is futtatni csak az első sorában, hogy code-- a printf egy, kisbetűs egy, mínusz A nagybetűs A. Tudja valaki Van egy kitalálni, hogy mi lenne, nyomtatás ki a képernyőn most? Tehát először is, mit jelent kisbetűs egy képviselnek? Mi a szám, hogy rangsoroltak ASCII tábla. Bocsánat? Közönség: 97? ANDI Peng: 97, nagyszerű. És mi a nagybetűs Egy? Közönség: 65. ANDI Peng: Szóval mi van a 97 mínusz 65? Közönség: 32. ANDI Peng: OK. Szóval mit gondol srácok fog történni, ha bemeneti, hogy kódsort a számítógépemen? Közönség: [hallható]. ANDI Peng: Sajnálom, szóljon. Semmi gond. Ez egy nagyon biztonságos környezetben, mínusz a kamerát. Mindannyian lesz az alábbiakra: nincs gond. Csak mi mind meg fogunk úgy tenni, mintha ez csak nekünk hűtés ebben a szobában. Semmi gond. Nem kérdés túl hülye. Nincs válasz egy hülye válasz. Én talán lesz hibázni során a tanításomat. Komolyan, srácok, csak fecseg ki. Légy magabiztos magadban, tudod? Szóval mi volt ez? Ki mondta, hogy az utolsó válasz? OKÉ. Kiabálni, hogy szép és tiszta. Közönség: 32? ANDI Peng: 32. Oké, ezt a kódot, és hátha ez történik. OKÉ. Tehát ahogy ti is egyfajta lásd, a tipikus jelölésre I 've felállított ide, hogyan is kellene foglalkoztatni bármilyen programot a számítógépre. Megvan a fő funkciója a mi fő funkciója. Csak megyek másolni és be ezt a kódsort. Ügyeljen arra is, ha a srácok a másolás és beillesztés kódot. Néha bizonyos gazdasági szereplők Nem beillesztés át rendesen. Ebben az esetben, a mínusz jele volt, valójában egy kötőjel. És így a számítógép nem érte. Szóval vissza kellett mennem, és fizikailag be újra ezt. Csak légy óvatos, ha srácok csinálnak, hogy. OKÉ. Fogunk futtatni ezt itt. Így fogunk CD-t a Section2. Hívtam a program asciimath. Jól jegyezd meg, amikor fut semmilyen programot, azt akarjuk, hogy az első, hogy elkészítse átvezetve a make. És akkor azt akarjuk, hogy a ténylegesen megtett A program során dot-per. Szóval megyünk ./asciimath. Jobb, ott megyünk. És azt látjuk, 32. Szép munka. Megérdemled egy darab cukorkát. Candy az Ön számára. Bocsánat. Minden rendben. OKÉ. Szóval mehetünk vissza a példának. Ááá, nem. Ááá. OKÉ. Én csak fog tartani, mint ezt. OKÉ. OKÉ. Tehát ahogy ti is látni, amit tehetünk, Sok nagyon érdekes dolog, egy csomó nagyon jó dolog, sok nagyon bonyolult dolog bevonásával ASCII karaktereket és számokat. Ha most az ötös vonalon, ez a sok, hogy kövesse végig. Nem fogunk menni a szakaszt. Nyugodtan, ha tudsz, érvelni, hogy ki papíron először, hogy mit kell történik, amikor Ön beavatkozás, mint egy sor értékek. Például, az, hogy az utolsó sorban, van z-- ami bizonyos number-- egy-- amely szintén jelentése Bizonyos number-- plusz 1 Modulos 26 plusz kisbetűs egy. Ha a srácok olvass ezeken keresztül, akkor Lehet látni a mintát előjön hogyan vagyunk manipulálni a kódot. Én nagyon, nagyon javaslom szakasz után mindannyian srácok megy előre, és bemenet azoknak minden a számítógép és látni, hogy milyen számok jönnek ki és az érvelés révén miért ezek történik, mert a psets ez lesz igazán fontos , hogy megértsük, Ezért bizonyos dolgok történnek. Mindezek a diák lesz online. Így nem aggódik próbál fizikailag másolja le jegyzeteket. Minden online. Ez a rész önmagában lesz online. Minden az én forráskódját, hogy Én futás lesz online. Igen. Volt még egy kérdésem? Közönség: Mi Modulos? ANDI Peng: OK. Így modulo egy olyan üzemben, hogy fog elég fontos, hogy a srácok a PSET itt. Tehát az utat, hogy az üzemeltetők C és programozási munka az, hogy van, mi az úgynevezett divízió szimbólum és a modulus szimbólum, amely olyan, mint a százalék jel. Így a C-ben, ha nem egy egész szám osztva az egész egy perjel, C hajlamos akar vágni le a tizedes pont, mert egy egész szám akar átalakítani, hogy egy egész szám. Ez nem akarnak majd egy dupla egy csomó tizedessel minden után. Tehát, ha én 3 osztva 2, ez lesz hogy elvágja a 0,5 és csak ad 1. Szóval ez valami legyen nagyon óvatos, ha éppen Ennek bármiféle matematikai programozás, az, hogy a számokat kapsz nem lehet a számok hogy gondoltál, ezért kerekítés a Utolsó PSET annyira fontos. Modulo megadja neked a maradékot. Így például, ha mégis 3 modulo 2-- így 3 százalék jel 2-- ez megadja a fennmaradó ezt. Tehát 3 osztva 2 1.5. Ez 1 fennmaradó 1. Ez adná meg 1, amelyek a fennmaradó, hogy. Tehát, ha a srácok mozog az ASCII tábla, modulo lesz a végén, hogy valamit, ami nagyon fontos, és megbeszéljük, hogy a későbbiekben. OKÉ. Tehát valami, ami szép, szép új és csinos egyedülálló hogy már tárgyalt ezen a héten a koncepció, hogy mi egy tömb. Tehát tömb első típusú adatstruktúra hogy megyünk találkozás ebben az osztályban. Minden adat szerkezete van valamiféle önkényes, Szó szerint a dolgok, mint a szerkezet hogy a programozók által létrehozott, hogy már fel a mi kódot, tartalmazhat más darab kódot. Tehát ebben az értelemben az array-- gondol rá, mint egy iratszekrény, ahol, ha nyitott a különböző polcok a file kabinet, érheti különböző dolog. Emlékére, egy tömbben csak csinál ugyanezt a számítógépen. Te is más és más blocks-- vagyunk hívjuk őket indices-- egy tömb. Olyan, mint egy blokk, a polcon a memória hogy hoztuk létre az Ön számítógép, akkor bemeneti Bizonyos dolgokat különböző helyeken. Tehát egy sor, akkor Mindig meg kell specify-- meg kell adnod nyilvánító tömb a következő formátumban. Fogsz első adja meg az adatokat típus hogy a létrehozni kívánt a tömb. Ha azt akarom, egy sor egészek, Azt fogja fel int ott. Ha Szeretnék egy tömböt, Azt fogom tenni húrok vannak, a neve a tömbben, majd fogsz szögletes zárójelben. És a szögletes zárójelek között, akkor megy, hogy a mérete a tömb. Valami, ami nagyon fontos, hogy szem előtt tartani, amikor létrehozza tömbök hogy ha létrehoz egy tömb, hogy a méret nem módosítható. Tehát, ha tudod, hogy most Van egy sor 10-es méret, tudod, hogy én megyek is 10 sejtek belüli, illetve 10 indexek ebben a tömbben, és ez sosem fog bővíteni vagy csökkenteni nem számít, hogy mit, és hogy van Jelenleg mindössze 10 háztömbnyire a tér elosztani a memória, amely képes tárolni 10 dolog, amit csak amit tesz. Tehát ily módon, egy tömb adattípus, az adatszerkezet, amely egy tömb nagyon eltér mások fogunk lehet, amely később ezen a kurzuson. Igen. Például, ha akart hozzon létre egy sor mérete 3, hogy tartalmazott változók integer-- Ó, bocsánat, a temperature-- és a hőmérséklet, a Természetesen, egy egész szám. Szóval mi lenne létrehozni int, amely a adatok típusát, hogy mit akarunk tárolni. Fogunk hívja ezt a hőmérsékletet kedvéért a nómenklatúra az elnevezési valami, mindannyian megértjük. És mi lesz, hogy szögletes zárójelek. És azt akarjuk, három számot. Mi is így fogjuk fel Három belsejébe. Valami, ami igazán Fontos szem előtt tartani, az, hogy a tömbök nulla indexelt. Mindez azt jelenti, hogy meg kezdeni az index 0, és futtatja fel a a tömb méretét mínusz 1. Így például itt, Van egy sor mérete 3. Ez lesz képes hogy tartsa a három értéket. De a számok themselves--, hogy számú, a tömb, az indexnek, A tömb, a 0 és 2. Szóval srácok, nagyon, nagyon óvatos, amikor mész keresztül a problémákra beállítva és megteremti bármilyen tömb, mert sok az idők ez Nagyon, nagyon könnyű elfelejteni, hogy. Igazából nincs index 3, hogy én jelenleg csak van az index 2. És ha megpróbálod léphet a harmadik index, ez lesz mi az úgynevezett null terminátor. Ez nem fog ténylegesen létezzen a tömbben. És a számítógép Nem fog tetszeni. Ezért legyünk óvatosak, amikor Ön által elérni dolgokat csak hogy emlékszel hogy az elrendezések nulla indexelt. OKÉ. Tehát az első példa csak Egy módja a tömb. A második példa van Az alábbiakban csak egy külön utat létrehozásának ami ugyanaz adatok szerkezet, amit épp most lettek megadva. Tehát ahelyett, hogy fizikailag aktív keresztül, üzembe helyezése hőmérséklet 0 megegyezik bármely, a hőmérséklet 1 egyenlő bármi, hőmérséklet 2 egyenlők bármi, amit éppen az csak közvetlenül hozza létre az egész egy sorban a hőmérséklet szögletes zárójelben egyenlő. És észre ebben az esetben nem kell adni, hogy milyen nagy a tömb, mert a számítógép fog megy keresztül, és látni, hogy van három elem azokban zárójelek segítségével. És ez meg fog tudni, OK, Szükségem van egy sor mérete 3. Ugye nem lesz szüksége, hogy bemeneti ez a következő módon. És azt is, igen, ez így. Van valakinek kérdése vonatkozóan, hogyan tesszük tömbök vagy hogy a szerkezet egy tömb működik? Igen. Közönség: [hallható]? ANDI Peng: Igen, pontosan. Tehát, ha úgy döntesz, hogy állapítsa meg és kezdeti egy tömb, a következő módszer, amely a második út, hagyhatod azokat. És a számítógép automatikusan tudja, hogy kell számolni, hogy hány elem vannak azokban zárójelekkel, elválasztva vesszővel. Tehát itt látnak 65, 87, 30. Így a gép tudja, ó, van három egész szám. Tudom, hogy hozzon létre egy tömb neve hőmérséklet három elem kerül bele. Jó kérdés. Igen. Közönség: Nem lehet létrehozni egy tömböt különböző típusú adatokat hogy lehet beírni bele? Például, egészek [nem hallható]? ANDI Peng: az alkalmazásában Az ebbe az osztályba, nem, most. Amikor létrehoz egy adat strukturálják mint egy tömb, mondasz a számítógép, hé, szükségem van rád kiosztani a sok memória az én merevlemezt, ahol minden egyes cellát egy bizonyos számú bit. Emlékezz megtudtuk héten nulla, hogy a különböző adatok típusok különböző méretűek? Így például, egy string egy másik összeget a tér, mint egy char, amely egy másik, mekkora hely egy egész szám. És így, ha nem adja meg, és keverheted milyen változók van, a számítógép lesz nagyon zavaros. És ez nem fog tudni hogy mennyi memóriát kapsz. Tehát céljából jog Most, számítógépek csak felismerni egy típusú tömb. Jó kérdés. OKÉ. Így természetesen a második kérdés van van, nos, most, hogy már létrehozott egy tömb és ezért már fel mindezeket a dolgokat a tömbben, hogy vagyunk lesz képes hozzáférni? Tehát a tipikus szerkezete, hogy mindig hozzáférhet a tömb kedves hurok. Megígérem nektek, hogy mi lesz láttam sok ez a fickó itt. Lényegében, amikor csak akar a beviteli értékek egy tömbben vagy el szeretné érni őket, az legjobb módja ennek, ha egy ciklusban, mivel egy for ciklus, akkor tudom, hányszor te szeretne majd végigmenni a tömb, mert van egy megálló kiadás, ugye? És minden alkalommal, amikor fut keresztül, akkor a hozzáférés egy másik eleme a tömb. És azt is, hogy ez egy ok, amiért általában kezdjük meg a hurok a 0 értéket, mert ha ellátogat tömbök, akkor érheti el a nulla index. És ez így párhuzamok nagyon szépen. Srácok esetleg akartak írok int i értéke 1. i kisebb vagy egyenlő, mint 3. De ez nem működik annyira Hát itt, mert csak van elemei 0, 1, és 2. És így ha kellett kezdeni az i at elem 1, 2, és 3, fogsz végén fut ki a határokat a tömb, és rossz dolgok fognak történni. Szóval remélem nektek lásd a Segue hogy miért a korábbi osztályok mi azt tanították nektek, hogyan kell közlekedni, és formázni a hurok az is, hogy mi volt. Ez azért van, mert most mi már átváltott tömbök, láthatjuk, hogy miért a 0 kölcsönöz Maga nagyon szépen való hozzáférés. Szóval, ahogy mi ez hogy-- vagyok csak a nyomtatást, hogy ki itt a kedvéért A nyomtatás ki. De ott van a helykitöltő, vessző. És a tényleges elérése része történik. A név a tömb hívták hőmérséklet. Szóval ez a hőmérséklet és a i-edik elem a tömbben. Így például a for ciklus végigfut, ez lesz a 0-val kezdődnek. Meg fog kinyomtatni a 0. indexe ebben a tömbben. Akkor ez meg fog nyomtatni ki az első elemet. Akkor ez meg fog nyomtatni ki a második. És akkor fogunk törni. Mindenki tisztában hogyan történik? Nagy. Minden rendben. Tehát itt van egy módja mondván, ha nem akarnánk a kemény kódot in-- nekem, mint a programozó. Nem akartam, hogy fizikailag tedd minden egyes eleméhez Ennek a tömbnek. Ha akartam helyett van a felhasználó által megadott értékek, mi a legjobb módja, hogy? Nos, itt hoztam létre ez a szép a funkciót, ahol tudok egy tömböt. Tehát int scores-- nézzük csak annyit akarunk lenni tömb, hogy tartotta a fokozat mind a 18 A diákok itt, ebben a szakaszban. Azt hiszem, van egy kicsit Több mint 18 mai gyerekek. De például szerelmére, nézzük csak feltételezni kellett 18. Én hozna létre a tömb neve pontszámok int típusú, mert pontszámokat, természetesen, szám. És én megyek is 18 szögletes zárójelben, mert ez az, hogy hány diák I. akarjuk, hogy képes tárolni több tucat. És, ahogy én azt benépesítő a tömb, hogy én futtatni egy ciklusban, a Természetesen, ahol a 0 az én 0. index. És akkor 18 vagy az én megállás kiadás, mert van 18 elem a tömbben. És akkor fogok csinálni printf, Enter gólt student-- blabla blabla. Tud valaki mondja meg, miért itt vagyok nyomtatás i + 1, és nem én? Ez a fajta trükk kérdés, nem igazán. Ez valójában nem fizikailag befolyásolja a futás a kódot. Igen. Közönség: [hallható] 0? ANDI Peng: Igen, pontosan. Ez egy kicsit kínos azt mondani, hé, te vagy a 0. hallgató ebben az osztályban. Ez egy kicsit furcsa. Tehát nekünk, embereknek, nem nagyon szeretem gondolni, hogy számítógépek hiszem. Így aztán, bár a számítógép, ez értékek tárolására a 0-ik index, ha mi emberek, mi nem igazán előszeretettel hivatkoznak magunkat, mint nulla. Tehát, amikor én csak nyomtatni, hogy Megyek nyomtatni, és adjunk hozzá 1 csak az egyértelműség kedvéért. Tehát, amikor nyomtatni, én leszek képes nyomtatni diákok 1-től 18. Ez valójában nem befolyásolja A futás a kódot bármilyen módon, ahogy tudok nyomtatni. De legyen óvatos, ha éppen ténylegesen elérni a tömb. Ha a pontszámok i, észre itt vagyok valójában hozzáférés a 0. index és Nem az 1 plusz 0-- vagy 1 plusz 1, Ebben az esetben, index így hogy ez valóban egyértelmű. Mindenki egyfajta OK- hogy ez hogyan fut keresztül és minden index vagyok amivel egy értéket a tömb és megteremti egy tömböt 18 szám hogy a felhasználó fog input? OKÉ. Hűvös. OKÉ. Most továbblépünk valami, ami elég releváns erre darabos készlet is. Tudom, előadótermekben, David-- Sajnáljuk, de volt egy kérdés? Közönség: Tud nagyításhoz? ANDI Peng: Igen, így megpróbáltam. De azt nem tudom. Valamilyen oknál fogva, ez a PowerPoint-verzióban valóban nem működik valamint a kijelző. Szóval csak úgy tartani, mint ez. Mindezek kerülnek feltöltésre az interneten. Bocs, srácok. Igen. OKÉ. Szóval mi is van szálakat. Tehát, ha a srácok tényleg notice-- I tudom, Rob ment át ezt az előadást, hogy hogy did-- egy string valójában Csak egy sor karakterek, Ha belegondolsz, nem igaz? A string egy név, vagy egy mondat vagy egy szó, ugye? Ha én lennék, hogy hozzon létre egy string nevű Andi-- csak a nevem, A-N-D-én. Azt hiszed, hogy mivel csak egy változót. De valójában ez bontásban a csak egy sor karakter. Szóval ez van karaktere Egy tömb tárolja értéket. Van rajta egy karaktert n tárolt második index, és így tovább, és így tovább. Tehát olyan módon, mi valójában ez a fajta A struktúra meghatározott helyezze a mi szálakat. Tehát itt, ha én lennék az input a szó "enni" - így húr szó megegyezik A string. Ha én lennék a bemeneti szó "enni", hogy fizikailag az utat, hogy a számítógép tárol, hogy a húr az emlékezetemben. És ha akartam végigmenni, hogy és a nyomtatási, hogy out-- így a i nullával egyenlő, emlékszem, előadás, mi fedezett valamit, hívják strlen, vagy a string hossza. Mert én nem ténylegesen tudom, milyen nagy a tömb bármilyen a felhasználó inputting-- Én például bevitt A szó "enni", és tudom, ez a három karakter hosszú, igaz? Így tudtam valósult meg a három ott és minden rendben lesz. De ha a felhasználói valamit ez egy másik értékek száma, fogsz nem lesz képes igazán tudom, hogy ha programozza a kódot. Tehát az is, hogy kezeljük teszt esetek ilyesmi, hogy van valami, nevű strlen, amely csak egy függvény amely megmondja, hogy milyen hosszú a karakterlánc. Tehát strlen szó. Szavam enni. n értéke strlen a szót. Tud valaki mondja meg, hogy mi értéke valóban ott van? Mit n képviselő joga Most, ebben a példában, ha tudtam volna enni? Közönség: 3. ANDI Peng: 3, pontosan. Tehát van az int i értéke nulla, n értéke 3, lényegében. És azt fogja futtatni amíg ez kevesebb, mint a 3i ++. És ez meg fog alapvetően menni keresztül, és ugyanezt csinálja. Meg fog kinyomtatni Minden érték és kapsz E-A-T. Ez csak jelölő másfajta írás is. Ez lesz nagyon hasznos. Igen. Közönség: Mi a haszna üzembe Az n értéke strlen szót belül, hogy A hurok [hallhatatlan]? ANDI Peng: Igen. Tehát, ha én lennék az alábbiakra: mondják például, ha én is csinálni, hogy majd do-- oop--, hogy a kód, akkor valójában csinál mint ugyanaz a dolog. Azonban az is, hogy Dávid kifejtette közben előadás, ha valakinek a srácok emlékszem, az volt, hogy emberekben, mint a programozók, Valóban próbál beprogramozni a kódot, így a számítógép dolgozni a lehető legkisebb legyen, tehát hogy a kód nagyon hatékony. Tehát ha tudtam volna, hogy ott, mit történne az én hurok az, hogy én az első nyilvánítja változó nevű i lesz 0. Én megyek, hogy ellenőrizze, ó, mi a strlen szó? Ó, az strlen 3. Szóval én kevesebb, mint három? Igen, az. Megyek futni. Majd a második alkalommal hátsó körül a hurok, megyek növekmény i. i lesz az egyik. És én fog ellenőrizni, ó, de mi a strlen szó? Ó, ez a három. És nem, hogy úgy tűnik, a fajta pazarló, Minden alkalommal, amikor fut át ​​a hurkon, hogy ellenőrzik a funkciót, bár a strlen szó sosem változik? Szóval ez extra teljesítmény a számítógép. Amikor elkezd beszélni a dolgokat amelyek milliárd és milliárd és több milliárd helyek Hosszú, elképzelni a számítógépen , hogy fizikailag megy keresztül, és ellenőrizze az összes, hogy minden egyes alkalommal. Ezért van az, hogy csak A hatékonyság érdekében, hajlamosak vagyunk csak ezt, mert így mi csak A funkció meghívása egyszer az elején, és hogy minden alkalommal, amikor megy keresztül ez megy az érték tárolásához 3 ott, hogy te nem hogy folyamatosan ellenőrizze minden alkalommal. Igen. Közönség: Sajnálom. Csak [hallható]. Tehetted int n értéke strlen, és tegye hogy a fenti kívül a for ciklus is? ANDI Peng: Igen. Megteheted, hogy egyáltalán. Az ok van azt itt mert ahogy a for ciklus munkák az, hogy úgy hívják helyi változó abban az értelemben, hogy mindent te megteremtése belül a for ciklus csak belül létezik a for ciklus. Tehát az i változó csak Létezik e sávok. És itt a változók n is csak létezik e sávok. Tehát, ha úgy döntesz, hogy használja strlen a szót többször lent, feltétlenül a legjobb módja, hogy az lenne, hogy állapítsa meg a legfelső így nem kell, hogy ezt egyszer. Igen. Közönség: Miért van egy új vonal után százaléka látta, ha azt szeretné, hogy az összes A betűk mellette külön? ANDI Peng: Ó, én akartam nyomtatni őket minden vonalon. Nem számít. Igen, ez egy formázást. Ez egy jó kérdés, mégis. Igen, ha akartam nyomtatni Mindent csak egyetlen tétel, Nem szeretném, ha a kötőjel. OKÉ. Mindenki jó? OKÉ. Hűvös. Szóval azt hiszem, én beszéltem elég. Srácok a sor, hogy végigmenni a kódot, és mondd el, mi a baj itt. Hol a hiba? Szóval amint látod, én már nyilvánították új tömb string típusú nevű osztályt. És én már bevitt Sam, Jess, és Kim bele. És én próbál kinyomtatni minden elemét a tömb. Tud valaki mondja meg, miért ez a fog adni nekem problémát? Adok nektek 10 másodperc gondolni ezt. OKÉ. Igen? Közönség: A balközép egyenlő 3 vagy [hallhatatlan]? ANDI Peng: Jobb. Szóval, hányszor van ez valójában fog végigmenni ezen a hurok? Közönség: Négy. ANDI Peng: Pontosan. Ez lesz négyig alkalommal. Meg fog végigmenni 0, 1, 2, és 3, mert az elem i kisebb, mint vagy egyenlő 3. Ez nem fog megállni, ha ez 2. Meg fog tartani megy, amíg eléri 3. És mint tudjuk, már csak három elemek a mi tényleges tömb. Ha megpróbáljuk elérni a negyedik elem vagy az index a 3, fogsz ütni valahol a memóriában, hogy nem létezik. Ezt hívják a null terminátor. Semmi sem lesz ott. A számítógép nem fog hogy nagyon boldog veled. Igen. Van valakinek kérdése miért, ami történt? Ez egy közös terület elkerülése. Igen. Közönség: Vajon nem az első csúsztassa is van egy sor 2? ANDI Peng: Nem. Tehát lényegében, ha még van egy tömbben, hogy konzol jobb ott, hogy minden number-- Azt mondja neked, hogy hogyan sok eleme van. Valójában nem mond nekem az indexek semmit. Tehát ebben az esetben, tudom, akarok hogy írjon három helyen, A három fizikai helyek tartsa amit akarok tartani. Tehát ezért a hármas szám van. Azonban, ha azt akartam, hogy ténylegesen hozzáférni, ha azt akartam mondani, printf osztály konzol számát, majd fogsz ténylegesen A fizikai index van. Igen, jó kérdés. Közönség: Tehát a fizikai index állítólag [hallhatatlan]? ANDI Peng: Sajnálom. Tud beszélni egy kicsit? Közönség: Tehát a fizikai-index [Hallhatatlan] Minden egyes doboz? [Hallhatatlan]? ANDI Peng: Igen. Így fogok visszamenni itt. Gondoljunk itt. Van egy sor mérete 3. Van három helyen, mint, fizikai helyőrzői itt. De ők nevezték 0, 1 és 2. Tehát, ha akartam érni őket, az is, hogy tudom elérni őket a printf bármilyen akartam itt. Meg kellett volna nyomtatni ki annak nevét, mert akkor a számítógép tudja, ó, meg kell nézni ebben a tömbben a 0. index. Igen. De a méret a nem változtatja. A mérete 3, függetlenül Az, hogy hogyan jelzésére. OKÉ. Mindenki jó? Közönség: Tehát minden alkalommal, amikor [hallhatatlan]? ANDI Peng: OK. Tehát ebben az esetben, nem igazán bejutni, most folyamán. De tudjuk, hogy egy string-- mint én mondtam, egy string lényegében egy sor karakter. Szóval, ha létrehozunk egy tömböt A húrok, valahogy Van egy sor tömb A karakterek, ugye? Tehát ebben az esetben, mert Van egy tömböt, Ha úgy döntesz, hogy adjon meg egy nagyon hosszú szó, hogy még vesz fel egyetlen hely, mert ez az egyetlen húr. De ha arra gondolni, a karakterek a tömb, akkor ez megkezdéséről sokkal több karaktereket, mint bármely más szavakkal vannak. Nem igazán fontos most. De ez csak általánosságban hogyan is működik. OKÉ. Szóval ez az, amit én engedi meg, Sok során a félév. Szükségem van a pihenésre a hangom. Srácok kell, hogy ösztönözze magatokat. Sok akkor valószínűleg aludni most. Én megadásával véletlenszerű problémák ahol, mint egy osztály, vagy egy partner mellett fogsz hogy kiad egy pár percig megvitatása hogyan megyünk a megoldását vagy létrehozása ilyen program. Tehát most, szeretnénk hogy hozzon létre egy program-- fogunk nevezni upper.c--, hogy megtértek egy kisbetűs szó egy előkelő string-- nagybetűs, sajnálom. Szót húrok, bocs, egyet. Megyek megváltoztatni őket hogy ugyanazt jelenti. Igen. Vegyünk egy pár percig. Nem kell, hogy bármilyen nyelven. Csak a pszeudokódja kódot vagy logikusan, hogyan is kellene még kezdjen csinálja ilyen probléma. Igen. [OLDAL BESZÉLGETÉS] Azt is észrevettem, hogy a srácok can-- Valahogy látni már a program. Azt hiszem, én nem a műsorvezető mód egy probléma. De ez rendben van. [OLDAL BESZÉLGETÉS] Ja, kérem, srácok. Gyere édességet. Gyere édességet. Közönség: Igen! [OLDAL BESZÉLGETÉS] ANDI Peng: Szintén igen, Elkezdem dobott édességet az emberek, akik nem válaszolni a kérdésekre. Szóval kell minden kérdések. Vagy Gondolom, akik ne válaszoljon a kérdésekre. Igen, éppen fordítva. [OLDAL BESZÉLGETÉS] Közönség: [hallható] ANDI Peng: Igen. Igen. [OLDAL BESZÉLGETÉS] Jól van, srácok. Vegyük, mondjuk, 10 másodperc. [OLDAL BESZÉLGETÉS] OK, srácok. Szóval mielőtt elkezdjük próbál fizikailag kódot írni, egy jó szokás, hogy dolgozzon, hogy azt akarjuk, hogy az első ilyen ok logikusan, hogyan is kellene csinálni. Azt akarod, hogy megbizonyosodjon arról, Mielőtt fizikailag kezdeni próbál kódolni Mario, amit csinál Biztos, hogy a pszeudokódja. Amely figyelembe végig mit kell létrehozni úgy, hogy ha fizikailag Készítsünk programot később, Ön jobban tud fogni hibák a kódot, és hasonló dolgok. Így fogunk csak elkezd by-- angol, pszeudokód, Tudja valaki akar adni nekem egy általános magyarázat hogyan megyünk, hogy mindezt? Igen. Közönség: [hallható]. ANDI Peng: Persze, nem gond. Közönség: Tudsz kérdezni, hogy vagy kérdezze hogy valaki húr 1-- igen, húr, és akkor-- ANDI Peng: Igen, így ez egy jó kezdet. Elkezdem beírni, sajnálom, ahogy beszél. Na-- Közönség: --A kisbetűs számok magasabbak, ugye? Vagy a kisbetűk nagyszámban? ANDI Peng: Pontosan. Közönség: Szóval akkor vonjuk 32-re, amit [hallhatatlan]. ANDI Peng: Nagy. Szóval ilyen van egy általános értelemben vett hogyan működik a problémáról. Tudván, hogy már ilyen megtudta A fizikai módon húrok A memóriában tárolt, Mit már tudom, hogy fogsz valószínűleg Meg kell írni a kódot annak érdekében, hogy mozoghat a húr? Közönség: A loop. ANDI Peng: Egy for ciklus, pontosan. Nagy. Szóval ilyen van egy általános pszeudokódja írt le ez a fajta ad Ön tudomásul veszi, hogy hogyan lenne mozogni a probléma megoldásának. Most, hogy van ez, hivatkozhat későbbre mikor akarsz valójában írni a kódot. Szóval mi is valójában megy itt. És van olyan függvény upper.c-- ott is-- csak egy üres sablon Most, hogy a srácok mennek segítsen nekem kitalálni, hogyan kell írni ez a sor a code-- nem kódsort. Ez lesz több sornyi kódot. Indításakor semmiféle Az üres PSET, mi Az első dolog, amire szükségem emlékezni kell csinálni? Közönség: [hallható]. ANDI Peng: Nagy Ja. Tartalmazzák. stdio.h. Gyakran ez az egyik A legegyszerűbb hiba az emberek, teszi, ha ők írásban, hogy fognak felejtsd el, hogy tartalmaz egy Fontos könyvtár, amelyekre szükségük van. Tehát ha ez munkaidőn és azt mondod, Nem tudom, miért az én-kód nem működik. Meg tudja mondani, hogy miért nem működik? Fogunk mondani ugye #include? Meg kell #include meg. OKÉ. Tehát van a standard I / O itt. Ez az egyetlen könyvtár fogunk szüksége van? Mi mást fogunk csinálni? Bocsánat. Valaki csak üvölteni ki? Közönség: [hallható]. ANDI Peng: Tessék. OKÉ. És hogyan megy a kezdő bármiféle A funkció bármilyen fő funkciója belül a programunk? Int main. OKÉ. Mit betenni ide? Mi az első dolog, amit akarok? Ha azt akarjuk, hogy egy karakterlánc a felhasználó, mit fogunk van tenni ezen első sorban? Sajnáljuk, de a srácok csak úgy érzi, szabadon beszélni, és hangos. Csak kiáltani bármi. Közönség: Kérje meg a felhasználót? ANDI Peng: Hogyan csináljuk ezt? Ask-- fogok írja "kérni a felhasználó"? Közönség: printf. ANDI Peng: OK. Printf. Mit akarok printf? Közönség: Írja be valamit. ANDI Peng: ilyen? Srácok, úgy tenni, mintha én vagyok egy számítógép. Fizikailag mondd minden lépésnél hogy szükségem van, hogy írja be ide? Én csinálok valamit rosszul? Meg kellett volna gépelt valamit? Közönség: Be kell idézetek. ANDI Peng: Szükségem idézetek? OKÉ. OKÉ. Közönség: És akkor új sorban. Pontosvessző. ANDI Peng: pontosvessző? OKÉ. Jó. Közönség: És talán adja hogy azt szeretné, hogy a kisbetűs? ANDI Peng: Nagy. Srácok nevetnek rajtam elfelejtve, hogy egy pontosvessző. Én garantálom, hogy valahol során ebben az osztályban, akkor felejtse el, hogy pontosvessző, és ez elviszi a három órát, hogy kitaláljuk hogy miért a kód nem működik. Ez történt mindannyiunk számára. Ez valószínűleg történni veled. Kap egy jó szokása, hogy a pontosvessző. OKÉ. Közönség: Szeretnél hogy nem a backslash? ANDI Peng: Persze. Szeretné, hogy nem a backslash? Közönség: Igen. ANDI Peng: Nagy. OKÉ. Mit csináljak? Közönség: A string. ANDI Peng: A string. Szóval mit írjon? Valaki? Közönség: string s. ANDI Peng: string s. Közönség: getString. ANDI Peng: Valaki, meg tudja mondani, hol Ez a funkció getString jön? Közönség: string.h. ANDI Peng: string.h? Azt hiszed, ettől string.h? Közönség: [hallható]. ANDI Peng: Tessék. Ez származó CS50.h. Ha mindig zavaros, hogy hol a könyvtár fájl vagy egy fejlécet fájl, google szó string.h, és megmondom mik az összes funkciót hogy vannak string.h. OKÉ. Most, hogy már létrehozott egy húr és én már figyelmezteti a felhasználót érte, Már tárolt egy változóban nevű s, mit kell tennem most? Közönség: Ellenőrizze, hogy kisbetűvel. ANDI Peng: Sajnáljuk? Közönség: Ellenőrizze, hogy kisbetűvel. ANDI Peng: Rendben, csináljuk meg. Hogyan tudom ezt megtenni? Igazából, arra a célra Az osztály most, mi csak fog Feltételezem, hogy mindent hogy mi bemenet már kisbetűvel. Ha akarta, hogy ellenőrizze, akkor csak adj egy feltételes állítás hogy ellenőrizni, hogy végigfutott Minden egyes tömb elem és ellenőrizni, ha ez között bizonyos értékeket. Emlékszem, mi a száma értékeinek kisbetűs. Akkor keresse ki a ASCII tábla. De igen, ez egy nagyon jó pont. De most, mi csak fog Feltételezzük, hogy a szálakat mi bemenet vannak kisbetűs. OKÉ. Szóval hogyan megyek kb A probléma a következő lépés? Közönség: A loop. ANDI Peng: A loop? OKÉ. Mondd meg, mit kell megadnia. Közönség: Az int i értéke 0. ANDI Peng: OK. Közönség: Ó, valóban, akkor nem egy vessző, és nem N egyenlő strlen. ANDI Peng: Szóval lényeg hogy azt hiszem, ő észrevette itt az, hogy mi nem kell, hogy mondjam int n a második alkalom, hogy ezt tette. Csak tudom, hogy egy számára hurok, amikor kijelentette, hogy tényleg nem kell a int a A második alkalommal, amikor nem változtatható. Azt lehet mondani, n strlen. Közönség: S. ANDI Peng: s. OKÉ. Közönség: Akkor pontosvessző. ANDI Peng: Persze. Közönség: És akkor [hallhatatlan] n. Aztán i ++. ANDI Peng: Nagy. Minden rendben. Mit akarunk belül E for ciklus most? Ne feledje, ha fogunk végigmenni egy string és fuss át egy tömb, azt akarjuk, hogy ellenőrizze a dolgokat benne. Mit fogunk szüksége? Ez a fajta a kutya elásva most. Bárki, aki egy kitalálni? OKÉ. Tehát az első, hogyan hozzáférhetnek? Honnan tudjuk, még az első csekket vagy hozzáférni egy elemet a tömb? Hogyan csináljuk ezt? Mi a jelölést használjuk ezt csinálni? Mi a neve ennek a nevű tömböt? Úgy hívják s, ugye? Ne feledje, minden szöveg mindig egy tömbben. Szóval s konzol i, ugye? Mert ez a jelenlegi érték vagy az index értéke bejelentkeznénk. És mi lesz beállítva, hogy egyenlő alábbiakra: szeretnénk egy kisbetűs értéket, ugye? Azt akarjuk, hogy kapcsolja be, hogy lower-- Sajnálom, szeretnénk egy nagybetű. Azt akarjuk, hogy kapcsolja be a kisbetűs értéke egy nagybetűs. És így az általam elvártnál sajnálom, mi a neved? Közönség: Heidi. ANDI Peng: Sajnáljuk? Közönség: Heidi. ANDI Peng: Heidi. Mint mondta Heidi Kezdetben, akkor alighanem Szükségünk lesz the-- vagyunk Valószínűleg kell majd kivonni 32 akármilyen charc ez, ugye? Mert egy ASCII táblázat, a különbség között kisbetű és nagybetű 32. Tehát amikor csináljuk ezt, akkor alighanem szeretne majd kivonni 32, ugye? Mi is így fogjuk csinálni s i. Mindenki érti, miért csináltam ezt? Mert most, a tömbben, bejelentkeznénk a 0. index, igaz? És a 0. indexe húr, ez az első karakter. És ez a karakter megyünk feltételezni, hogy ez a kisbetűs. Ha azt akarjuk, hogy ez a nagybetűs, mi kell kivonni 32-re az értékét, mert a mi ASCII asztal, ez hogyan szerezzük meg A következő megfelelő értéket, ami azt nagybetűs. Mindenki érti ezt? Igen. KÖZÖNSÉG: Meg tudná is ne kisbetűs egy minus-- ANDI Peng: Igen, ez az, tényleg nagyon jó. Megyek, hogy jöjjön vissza, hogy kérdés után tesszük ezt. Igen. És akkor, ha azt akarom, hogy mi folyik itt, Én valószínűleg meg is nyomtatni kívánt, ugye? Valaki mondja meg, mi Azt szeretné kinyomtatni itt. Közönség: printf százalék c backslash [hallhatatlan]. Ez az érték a [hallhatatlan] s i. ANDI Peng: s i, sajnálom? Közönség: [hallható]. ANDI Peng: Nem tudom. Mit gondolsz? Közönség: Nos, én wouldn't-- Azt hiszem, nem bring-- Azt vedd ki a benne, mert [hallhatatlan]. ANDI Peng: Ó, akkor megtette volna ezt? Közönség: Igen. ANDI Peng: Hagyjuk meg az utat ez, és leírom, miért később. Ne feledje, még akkor is, Van egy hely, el kívánja helyezni zárójelben körül. Minden rendben. Szóval ez egy szilárd funkciót itt. Fussunk, és nézd meg, hogy lefordul. Győződjön felső. UH Oh. Ez nem néz ki túl jól. Miért történik ez? Mint minden hibát, akarsz menni vissza, és kezdődik az első, mert általában egy hiba oka Sok más hibák után. Itt látjuk upper.c: 18: 25, amely azt mondja, nekem ez a program elemzi upper.c, on line 18, hiba implicit nyilvánításáról könyvtári funkciók strlen típusú unassigned-- bla, nem tudom, mi folyik után. Minden úgy mondja, most van hogy valami folyik a strlen. És a számítógép van zavarodva, mert Ez olyan, mint én nem tudom, mi strlen van? Mit jelent, hogy valószínűleg mondani, te hiányzik? Közönség: Te hiányzol [hallhatatlan]. ANDI Peng: Igazad van. Pontosan. Szóval ez az, ahol ez Fontos meggyőződni arról, hogy minden funkciót használja a kód, amely a megfelelő fejléc fájlt a könyvtár, vagy pedig fogsz kapni, sok hibát és a kód nem megy tudni, hogy mi folyik itt. Mi is így fogjuk felvenni string.h itt. Most, amikor megpróbáljuk összeállítani felső. Fordíttatni megfelelően. Nézzük a program futtatásához. Tehát írja valami kisbetűvel. Ti mit szeretne gépelni? Kiáltani valamit. Rendben, Charly most sétált be. Majd írja Charly nevét. Charly kisbetűvel. És remélhetőleg, remélhetőleg, ez fog kiáltani és kiköp Charly nagybetűs. Hurrá! nem mindenki érti, hogyan Elmentem a megoldását, hogy? Az hogy tudok manipulálni segítségével egészek megoldani valamit, Azt akarom, hogy a húrok, mert a karakterek és egészek hivatkozni lehet az azonos módon, mert ASCII feltérképezése. Szóval, hogy térjen vissza a pont, ha akarta tenni itt, ahelyett, 32 A nagybetűs mínusz kisbetűs egy akárcsak hogy, hogy működne ugyanolyan jól, mert ez egyszerűen csak az különbség a két érték. Ha azt akarom, hogy ez again-- Charly. Oh ne. Azt hiszem mentünk rossz irányba, igaz? Közönség: [hallható] kisbetűs egy. ANDI Peng: Tessék. Ja. És ki kiköpi Charly. Ezért legyünk óvatosak te kivonva értékek emlékezni melyik nagyobb, mint a másik. Például itt elfelejtettem hogy kisbetűs egy valóban nagyobb, mint a nagybetűs A. Tehát amikor azt megpróbálta kivonni őket a másik irányba körül, kaptam negatív 32. És a számítógép volt, mint, Nem tudom, mi az. Ez a valószínűsége mindössze néhány véletlenszerű érték, amely nem túl jó. És ezért győződjön meg arról, hogy te kivonva a megfelelő hosszúságú megtalálni a kívánt karaktert. OKÉ. Ha valaki világos, hogy mi vagyunk ment az írásról ezt a funkciót? OKÉ. Tehát tulajdonképpen egy funkciót már létezik a könyvtárban nevű ctype.h. A könyvtár úgynevezett ctype.h. Ez a funkció valójában Már írt az Ön számára. Úgy hívják, hogy a felső. És így céljára ez PSET, fogsz találni, amit igazán akar használni sok a funkciók tartalmazott a ctype könyvtárban. A felső, alacsonyabb, a felső, a lower-- ezek összes funkció hogy képes lesz használni nagyon, nagyon gyorsan saját kódját, hogy pontosan mit is csinál ez. Írtunk, hogyan kell átalakítani egy string nagybetűs. De ez valójában a kódot arra, hogy valaki írt és hogy el tudja érni keresztül egy másik funkció. Igen? Közönség: Szóval csak másolja A odabent van és csinálni minden egyes levél? ANDI Peng: Igen, mert nem érdekel értékeit. Csak érdekel, hogy a különbség köztük 32, ugye? A különbség a kisbetűs b és nagybetűs B is 32. És a különbség a C és nagybetűs C mindig 32. Én csak azt kell törődnek a különbség a kettő között, mert minden betűjét ugyanezt a mintát követi, igaz? Ha van különbség között az egyiket, Tudom, mi a különbség ezek között van. Jó kérdés. Igen. Mindenki jó? OKÉ. OOP. OKÉ. Tehát egy másik koncepció, hogy az lesz nagyon hasznos, mint te továbbra is kialakulhatnak Ön kódja ezt az elképzelést létrehozásának funkciók vagy absztrakció. Tehát most, most már minden megtett algebra. Az algebra, akkor tanítják, hogy van ezt a csodálatos dolgot nevezett funkció gép, ahol, ha bemeneti egyféle száma, végigfut a csodálatos funkció és ki durran egy másik kimenetet, ugye? Ebben kódot, ugyanez történik bármiféle funkciót. Így tudtam fizikailag írj a testem az én-kód A fő állítását, hogy valójában nem amit a szervezet a kódot csinál. De azon kívül, hogy én is levelet Számos funkcióval hogy nem sok különböző dolog. Például, mi már kezdték el használni néhányat. Printf-- hogy egy funkciót, hogy valaki más már írt, hogy nevezhetjük a mi kódot. Ahhoz upper-- ebben az esetben, upper-- egy másik függvény is írtam, hogy mi hívhatják a mi kódot. És így azt hiszem, miért mi is kell funkciók? Miért nem csak puff is mind ugyanabban a sorban a kódot? Ez megkönnyíti mindenki számára. Nos, az érvelés mögött, hogy van, először is, szervezet. Ez igazán bosszantó lesz keresztül valaki kód és egy funkció, mint a printf. Ha a srácok tényleg tudta, hogy mi a funkciót printf járó írni, ez, mint, 1000 sornyi kódot. Ha minden alkalommal meg akartam printf valamit, Meg kellett írni 1000 sornyi kódot, hogy lenne igazán bosszantó, hogy olvassa el, ugye? Ezért most már csak létrehozta ezt absztrakt függvény hogy már valaki mást írt valahol máshol. És minden alkalommal meg kell használni a kódunkat, már csak azt kell mondani printf. És ez tudja használni a funkciót valaki írt a mi kódot. Könnyebbé teszi szervezetileg olvasni kódot. Másodszor, ez az egyszerűsítés. Ez egyszerűsíti a lépéseket meg kell hogy lehet megoldani a problémát. Printf, funkciók, mint a printf, úgy működik, mint a felső mind olyan dolgok, amelyek lehetővé teszik számunkra, hogy leegyszerűsödött a programkód le, így könnyebb. És az utolsó dolog újrafelhasználhatóságot. Tehát az a tény, hogy van olyan függvény a printf hogy nyugodtan nevezhetjük különböző szor, és lehetővé teszi, hogy legyen újrafelhasználható. Ha én levelet printf, Én csak írni egyszer. Csak azért létezik, hogy egy helyen. Ha akartam csinálni újra, én Van, hogy másolja be az összes, hogy az én második sor kódot. Ezért, ha létrehozunk egy függvényt , ha az nem a mi fő, mi csak felszólíthatja ez még egyszer használni, amikor van szükségünk, hogy ez egy sokkal könnyebb számunkra, programokat írni. Tehát az is, hogy mi lenne valójában írni A funkció nagyon hasonlít, ugye? Ez a fajta az első például amit majd lásd a funkciót vesz egy stílus más, mint a mi int main semmis. Ebben az esetben, ha akartam levelet nevezett funkció q, ugye? És az int érték itt az egész mondja nekem, mit is akarok ebben függvény visszatérési nekem? Ha azt akarom, hogy kocka egy egész szám, Megyek szeretne beírni. Ezek a paraméterek. Megyek bemenetek értéke int típusú. És fogok visszatérni Egy másik típusú értéke int. És itt, mint Láthatjuk, minden, amit csinálok a kocka, amit én bemenet mint az én kimenő és visszaengedik. Szóval az egész függvény is vesz valamilyen egész szám. Ez megszorozza magát kétszer úgy, hogy kockák érvényben. Majd visszatér bármi legyen kimenet. Tehát ebben az esetben ez a két sornyi kód, amit kellett írni extra. De ha azt akartuk hívni erre többször, ez sokkal könnyebb írja, hogy az egyik vonal itt ez a kocka, mint át kell esniük többször. Tehát az is, hogy lényegében bármilyen formázást bármilyen funkciót fog létezni, mint itt. Tehát van a függvény neve. Ebben az esetben, úgy hívják kocka. És nevezd meg kocka, mert ez könnyű megjegyezni. Akkor nevezd meg tértől és akkor valójában CubeD. Nem számít. Csak egy nevet, hogy te sorolására funkciót. Ez itt, int, a A paraméter típusát amire szüksége van. Mit is jelent ez a funkció szüksége ahhoz, hogy működni? Nos, szüksége van egy input. Én elnevezte bemenet. Akkor nevezd meg, amit akarsz. De szükségem van valami int típusú. Ez lesz ténylegesen végre bármi belsejében van itt, A test a funkciót. És akkor a visszatérési típus Itt, ebben a int-- minden tőle mondja, van Ez a funkció vissza fog térni hozzám int. Szóval ez fog tartani egy int, és ez megy, hogy ismét egy int. Mindenki érti, hogy a formázás az ilyen jellegű munkák? Hűvös. OKÉ. Tehát ne legyen aggódik, ha ez úgy tűnik, egy kicsit elvont most. Ez olyasmi, amit fogunk beszélni. Majd merülni mélyebb később a kurzus. Az hogy bármilyen magasabb szintű absztrakció ezeket a dolgokat munka az, hogy a memóriában, a A számítógép, mindent tároljuk az ilyen típusú verem, szóljak. Tehát ott a tetején. Nem tudom, ha srácok láthatjuk, hogy jól. Megpróbálom a nagyításhoz. Itt a tetején, mi Van fizikai szöveget amit a számítógép interpreting-- minden nullák és egyesek, hogy léteznek számítógépünk. És akkor mi van a inicializált adatok és inicializált adat, nevezzük globális változók. Tehát változók léteznek az összes programon és az egész az egész, lényegében kódot. Nem gond, ha a srácok fajta tisztázott ezen. Ez nem igazán számít most. És akkor mi van, mi van nevezett halom egy verem. Gondolj egy halom szó szerint mint egy rakás dolgot, egy halom más dolgokat tolnak tetejére egymástól, hogy tárolja a különböző változók és szerkezetei akár a kódot. És akkor itt legalul, mi van a környezeti változók hogy mit végrehajtó belül Csak a kis kódsort. És mi csak megy a nagyításhoz ben a tényleges köteg részét. Tehát itt, ha mi voltunk a nagyításhoz gyerek csak ezen a területen a verem, ez az, amit úgy néz ki. És ez valóban nagyon fontos, ha a srácok beszélni funkciók, mert észre, hogy a a számítógép memóriájában tárol, a változók és a funkciók és a paraméterei mind a funkciót, és a fő változók különböző helyeken. Tehát most, a fő az, a tényleges funkció hogy te végrehajtó egy kódot. Még annak paramétereit itt tárolt és annak helyi változók tárolják itt. Lokális változó csak azt jelenti, bármely változó hogy léteznek csak az adott funkciót. És a tetején, akkor ezt külön funkció az úgynevezett kocka. Van, hogy a paramétereit valamint azokat, helyiek. És az ok tudsz lásd itt az, hogy mi történik, amikor kockát vesz egy értéket a fő funkciója az, hogy valójában ez a másolás, hogy vége. Tehát, ha akartam kocka 2 és vissza 8, hogy a 2 ténylegesen bevitt paraméterként és ez másolt át úgy, hogy ez a meglévő két különböző helyen a memóriában. És van, hogy legyen nagyon óvatos A emlékezve, amely egyike azoknak te tényleg manipulálni. És egy példa, hogy mi történt lenne nagyon, nagyon rossz létezik itt. Tehát itt, kaptam, elméletileg Program itt, a fő funkciója hogy én nyilvánította egy int x = 1. Én nyilvánító másik int y = 2. És akkor rohanok is ezzel a funkcióval úgynevezett swap ahol azt feltételezem, hogy ez kicserélni a két érték. És akkor fogok nyomtassa ki őket, ugye? Ez az, amit akarok ezt a programot csinálni. Úgyhogy jöjjön le, és nézd meg. Tehát, ha én valóban levelet különféle funkciót, mint látható, Megvan a fő funkciója van. És akkor mi van a második funkció itt. Érvénytelen csere. Érvénytelen csak azt jelenti, hogy ez az Nem fog vissza semmit. A függvény neve: úgynevezett swap és ez fog bevitel két változó, int a és int b, az Ön [hallhatatlan] funkciót. Tehát lényegében itt vagyunk elhaladó x és y be ezt a funkciót. És ha mi voltunk hozzon létre this-- ezért szeretnénk hogy létrehoz egy ideiglenes értéket, ugye? Fogunk rendelni, hogy egy. És akkor egy fog teremteni az egyenlő b. És b lesz vissza ahol a hőmérséklet értéke, amely egy, mert amikor szeretné cserélni a dolgokat, nem lehet csak úgy tetszik cserélni őket. Meg kell tartani egyet Itt úgy, hogy emlékszik mi ez, mert egyszer A csere az egyik, akkor felejtsd el mi az eredeti érték volt, ugye? Tehát elméletileg ez a program működnie kell, ugye? Ha akartam cserélni a két, meg kell cserélni. Szóval futni, és nézd meg, hogy működik. Tehát ahogy ti is látni, x Volt egyszer 1 és y volt egyszer 2. És ha én nyomtassa ki, x jelentése még mindig 1, és Y jelentése 2. Hmm, ez a program nem úgy tűnik, hogy dolgozik, ahogy én akarom, hogy működjön. Akar valaki vidd el találgatás miért történik mindez? Ez arról szól, hogy az utat hogy a különböző dolgok különböző helyeken tárolják a memóriában. OKÉ. Szóval srácok nem kell aggódnia túl sokat erről most. De tudom, hogy kocka helyi változók voltak a és b, mert itt a funkciót, mi már kijelentette, a és b mivel a változók léteznek belül kocka, hogy a funkció. De mint látható, a paraméterek, túl sok időt vesz a miatt tárolják itt. De valójában nem voltak visszatérő semmit. Nem voltunk ténylegesen változik az x és y. Mi csak a változó a és b. Mi már másolt x és y figyelembe egy úgynevezett és b. De soha nem manipulált x és y magukat. Vagytok látni hogyan történik? Az, hogy van, egyszerűen lemásolta vége, de valójában nem tartják követni, hogy hol voltak a memóriában. És így most a számítógép keres, ó, én már futtatni ezt a dolgot át ez a szép a funkciót. De x és y még mindig x és y. Semmi sem történt őket mert az a tény hogy ezek a paraméterek és a helyi változók tárolása egy eltérő helyezze a memóriában. És ez egy magasabb szintű fogalmát, hogy mi lesz elkezdi látni később során. De csak tudom, hogy ez Egy előforduló probléma, hogy és hogy majd kitaláljuk módjait kezelni ezt később a kurzus. OKÉ. Minden rendben. Tehát az utolsó fogalom vagyunk nagyon fog fedezni hogy lesz hasznos A PSET ezen a héten vannak úgynevezett parancssori paramétereket. Szóval Rob előadásában ment keresztül fajta röviden, hogyan működnek ezek. Lényegében tudják, hogy amikor írsz mint egy fő funkciója, amikor írta funkciók előtt a múltban, mi volt int main semmis. És az ok volt void van volt, mert a programok nem kell adnia értékek futni, nem igaz? Amikor futottam Mario, nekem nem kell hogy valójában csak írja be valamit amikor futottam Mario. Nem tudtam figyelmezteti a felhasználót a későbbiekben. De ez nem lesz mindig így. Például, ebben a heti probléma határozza, fogsz kérni, hogy Amellett, hogy fut a program fogsz szeretne beírni Bizonyos dolgokat egyenes, amikor A programok futtatásához. Szóval, ahogy mi, hogy az úgynevezett parancssori argumentum, amely olyan, mint egy érv megadhatja közvetlenül ahogy próbál futtatni a programot. Tehát az írásmód, ez elég bonyolult külsejű, de ez tényleg nem az, hogy nehéz. Tehát int main-- ez csak a fő funkciója. Into argc vesszővel karakterlánc argv zárójelben. Tehát minden, ami azt mondja, hogy ez a int argc-- minden, ami mondom az, hogy ezek száma érvek a számítógépet kell várni. Tehát az egyik dolog, ami igazán Fontos, hogy nyomon követhesse a fizikai program nevét számít egy ilyen érveket. Tehát, ha azt akartam, hogy a programom fuss plusz egy további parancssori érv, én valójában megy, hogy kettő. ArgC tulajdonképpen lesz kettő. És akkor karakterlánc argv bracket-- minden, ami csinál, ez ad nekem egy tömböt, ami fog csak megjeleníti és tárolja, mi Mindezen parancssori érvek. Így például, ha akartam, hogy ezt programot, ./copy bemeneti fájl kimeneti fájl, ugye? Ez csak egy tipikus Linux parancsot. Hogy valójában mi is argc? Hány parancssori paramétereket vannak valójában ebben? Mindez nem az, hogy egy másolatot Egy infile a neve az egyik fájl és azt bemásolja a Egy másik fájl, ugye? Ez minden ezt csinálja. Mint látható, csinálom egy sorban anélkül, hogy ténylegesen szüksége a programot. Mi a mi argc ebben az esetben? Hány érvek van? Közönség: Három? ANDI Peng: Van három, pontosan. Ezért nagyon intuitív csak gondolom, hogy ez csak A infile és a outfile. De tudjuk, hogy a fizikai nevét programot futtat számít egy. Tehát ebben az esetben, argc valójában három. Mit szólnál, mi az argv 0? Ne feledje, az összes parancssori paramétereket tárolták egy tömböt. Tehát ha megpróbálom elérni azt, hogy mi lenne argv konzol 0 adni? Közönség: [hallható]. ANDI Peng: Pontosan. Ez ad nekem a pont perjel példányt, mert ez az, A 0. elem, a első eleme az én tömb. Mi a helyzet argv 1? Közönség: INFILE. ANDI Peng: INFILE, pontosan. Mi a helyzet argv 2? Közönség: kifájl. ANDI Peng: outfile. Ez egy kicsit trükkös teremteni. Mit gondoltok srácok argv 3 lesz, hogy nekem ha megpróbálnám nyomtatni, hogy ki? Közönség: [hallható]? ANDI Peng: Volt egy kéz fel? Igen. Közönség: Egy alternatíva. ANDI Peng: Pontosan. Úgy emlékszem, az előadás, hogy mi Van a végén egy verseny valamit úgynevezett null terminátor? Veszünk ebbe is tovább az osztályban. De tudjuk, hogy a jelöléssel, ahogy a számítógép tudja, hogy ez a vége a tömb az, hogy helyezi egy úgynevezett null terminátor vagy gondolatjel nulla. Tehát, ha megpróbálja elérni argv 3, fogsz elérni ezt a kötőjel 0. Ez annál is inkább egy trükkös kérdés. Mi a helyzet argv 4? Szóval ez már null terminátor, már a határait a tömbben. Mit gondolsz, mi fog történhet meg, ha megpróbáljuk ezt? Közönség: [hallható]? ANDI Peng: Sajnáljuk? Azt mondják, hogy egy kicsit hangosabban? Közönség: [hallható]. ANDI Peng: Igen. Ez a neve a területen akkor nagy valószínűséggel kap. De tudom, hogy argv 4-- amely lehetővé teszi, hogy hozzáférést helyen a számítógép memória, hogy valóban nem kell megható, mert most tudod, mi az ARGV. Tudja, hogy ez egy sor mérete 3 amely pont másolatát, infile és outfile. Ha megpróbálja odáig azon túl, hogy hogy te már a null terminátor, A számítógép valószínűleg tárolt valamit argv 4. És akkor tényleg nem kellene belépésük engedélyezése argv 4, mert van egy fájl szekrény és te csak hozzáférhessen a három polcokon. De ha megpróbálja elérni módon túl polcon, ahol megengedett, fogsz kezdeni Messiás Más dolog a számítógép memóriájában. Hogy lesz nagyon, nagyon rossz. Tehát csak tudtam. Legyen nagyon óvatos, hogy Nem csak véletlenszerűen indul betekintés egy tömb elemeit, hogy nem voltak abban, amit akart létrehozni. Ja. OKÉ. Mi is így fogjuk csinálni egy másik terminális példának. OKÉ. Szóval Rob gyorsan előadás A minap ment keresztül ebben a példában, ahol Volt int main int argc karakterlánc argv konzolok, amely azt mondja, hogy én vagyok megy, hogy a parancssori paramétereket. Ő, ha argc egyenlő egyenlő 2-- emlékszem, egyenlő az egyenlők összehasonlítást jelenti. Ha az egyenlő 2, akkor én vagyok nyomdába kerülés hello, amit az első eleme a tömb. Else print, hello world. Mit fog ez történni lényegében? Tud valaki csak elmagyarázni Angol, mi ez a program csinál? Igen. Közönség: Ha valaki beírt egy parancsot és azt mondta, az első és az utolsó név, akkor nem csak nyomtatni a első, és azt mondják, hello, bármi is a keresztneve. ANDI Peng: Oké, futtatni. Így például, ha én lennék, hogy ezt a fájlt, hogy helló helló alábbiakra: alábbiakra: mit akarsz, hogy adja? Közönség: Első és utolsó név. ANDI Peng: Első és utolsó név? Terek? Közönség: Igen. ANDI Peng: Tud valaki mondani nekem most, mi az argc? Csak ott? Hoppá, bocs. Hadd menjek vissza. Hány parancssori paramétereket are-- srácok nem igazán látni. De megpróbálom nagyítani. Megpróbálom. Igen, van három, ugye? Ez pont perjel hello, ez Andi, és ez Peng. Szóval mit gondol srácok ezt program fog nyomtatni ki? Ó. Oh bocsánat. Hibás név. Ez kinyomtatásával, hello world. Akar valaki magyarázni hogy miért történik? Igen? Közönség: [hallható]. ANDI Peng: Pontosan. Tehát itt, a feltételes Azaz, ha argc egyenlő értéke 2. Tehát csak abban az esetben, hogy van Két parancssori paramétereket. Aztán megyek nyomtatni, hello, bármi is legyen az. De mást, megyek kinyomtathatja, hello world. Tehát nem valaki akar hogy adjon nekem egy példát hogyan lennék képes ténylegesen Get It, kiírja argv 1? Mit is kell bevinnie itt? Csak egy dolog, ugye? Mivel a dot hello már számít az első érv. Csak még egy. Tehát pont helló, ha csak nem Andi. Szia, Andi. Mindenki érti hogy miért történik? Igen. Közönség: Tehát a tér között, a parancs line-- ez [hallhatatlan]? ANDI Peng: Nem. Így a tér egy parancssori érv, x, hogy elmondja a számítógép hogy ez a kezdete egy új karakterlánc. Tehát karakterlánc argv here-- tárolja a parancsod argumentum a szálakat. És így a hely a parancssorban argument-- minden, hogy nem is mondom, ez a végén egy húr és itt az ideje, hogy lépni a másik. Igen. Ez nagyon fontos, Ön PSET, mert te fog tesztelni ezeket. Szóval nem akárki volna bármilyen kérdése van ennek? OK, hűvös. Igen? Közönség: Tehát a ok akkor tedd egész érv Calc helyett Az [hallhatatlan] lenne, ha azt szeretné, hogy írja kiegészítő információ [Hallhatatlan]? ANDI Peng: Igen, pontosan. Néhány program megköveteli, adjon meg egy parancssori argumentum hogy bemenő és az, hogy használja ezt. Igen. Közönség: mi van, ha [hallhatatlan]? ANDI Peng: Nos, mi nem tudom megváltoztatni majd a programot? Közönség: Csak 3. ANDI Peng: Miért van, hogy történik, nem gondolod? Közönség: Mivel a [hallhatatlan]. Közönség: Te volna, hogy változtassa meg a 2 [hallhatatlan]. Közönség: 1 és 2. ANDI Peng: az 1. és 2., pontosan. Tehát ebben az esetben, akkor valószínűleg szeretnénk, hogy a két printf statements-- az egyik, hogy a nyomtatott argv 1 és Az egyik, hogy a nyomtatott argv 2. Itt. Én valóban tenni, hogy gyorsan. Nesze. Ó. Nem találja, amit akart. De ha a fiúk szórakozni A formázás, akkor ki fog jönni. Igen. Hűvös. Tudom, hogy egy kicsit rövid az idő. De én csak gyorsan fogja eltölteni Pár perc megy keresztül helpful-- Közönség: Van két perc alatt. ANDI Peng: Van két perc alatt? Köszönöm. Néhány gyors PSET tippeket. Tehát ez a PSET, én nagyon ajánlom, mint mondtam, mindenki olvassa a specifikációt. Nem lesz írásban három programs-- egy nevű initials.c, az egyik az úgynevezett caesar.c, az egyik az úgynevezett vigenere.c. Néhány fontos tipp, srácok igazán akar tartani mind-- így itt van ez a funkció nevű atoi-- ahogy én szeretném mondani, a trois. Nem tisztázott, hogy ez valójában hogyan mondják. De minden csinál, ez bevitelére. Segítségével egy húr egy int. Így a jelentése ASCII i egész. Ez csak konvertáló ASCII értékek egész értékek. Úgy emlékszem, argv, tömb üzletek a parancsod sorban arguments-- tárolja őket a húrok. És ezért ha azt szeretnénk, hogy képes legyen van egyikük válik egy egész szám, fogsz is ezt az értéket kell itt. Modulo, mint mi vonatkozik korábbi ma az órán, lehetővé teszi, hogy a fennmaradó bármit is. Tehát ha van igazán, igazán nagy számban Caesar, mi van, ha már a vége Egy sor Vigenère? Hogyan fogsz tudni kap, hogy a kerületi? Ha elütöttem z és azt akarom, hogy menjen vissza a, hogyan fogom, hogy hogy a kerületi? Talán szeretnénk használni modulo valahol. Másodszor, böngészhet a könyvtár. ctype.h. Ez egy új könyvtár van. Talál egy csomó nagyon, nagyon Hasznos functions-- isupper, islower, toupper, tolower, isalpha, satöbbi. Minden funkció, hogy nagyon hasznos lesz ha éppen próbál rájönni, van ez a karakter kisbetű? Hogyan alakítsuk ezt karakterlánc egy nagybetűs? Mindezek a dolgok nagyon, nagyon hasznos az Ön PSET. OKÉ. Munkaidőn ma este 8:00 11:00 TEAL osztályban holnap valamint szerdán és csütörtökön este. Hivatali órák vannak a közös. Nagyon javaslom srácok Minden induláshoz azonnal, mert nem akarja, hogy lehet, hogy gyerek, aki csütörtök este problémái küldje el PSET és tetszik, nem tudom, mit tegyek. Elkezdtem, befejeztem, beadtam. Próbálja meg beadni magának egy kis helyet, mert kódot problémák mindig következik be. Azt akarod, hogy győződjön meg arról, hogy adsz magadnak Sok időt, hogy képes befejezni a psets. Hűvös. Majd kószál itt. Közönség: Ez az online már? ANDI Peng: Én nem tudom, hogy ez Online már, de ez lesz. Majd kószál itt, ha valaki van bármilyen kérdése már. Köszönöm, hogy eljöttek.