>> Ebből: Rendben.
Üdvözöljük az első részben.
Én Rob.
>> JOSEPH: Én vagyok József.
>> ROB: Így fog merülni csak be
Az első dolog, hogy beszélni a készülék.
Így remélhetőleg a legtöbb van letölthető már.
De láthatjuk az utasításokat A cs50.net/appliance.
Ó, Istenem, most én vagyok öntudatos.
Még mindig hallom.
>> JOSEPH: Wow, úgy hangzik, mint ez zavart.
>> Ebből: Tehát egyesek már miután kérdések is, ezért ne várja meg, amíg
Az utolsó pillanatban a probléma meg, hogy próbálja megoldani a készülék és a
megállapította, hogy ez nem működik.
>> JOSEPH: És ha valami nem működik és segítségre van szüksége, akkor megy
cs50.net/discussion ahol van egy fórum, ahol
küldhetnek kérdéseire.
És mi lesz, hogy őket végül.
>> Ebből: Rendben.
Tehát ez az, amit a készülék néz ki.
Ismét, ez csak egy teljesen különálló operációs rendszer fut a
bármilyen operációs rendszert fut a laptop.
És a legfontosabb dolog, amit majd használni a gedit.
Így remélhetőleg ez már vált ismert oldalon.
A terminál.
>> És akkor is fut Chrome a készülék.
Voltak egy-két ember , akik arról számoltak be, internetes
nem működik a készülék.
És néhányan közülük csak feltételezhető hogy nem kellene
internet a készülék.
De igen, állítólag hogy internet.
>> Azt mondom, hogy most, de ez nem igazán jelent semmit.
Ha az internet nem működik, ez az, amit inkább szükség van
futtatni kell megjavítani.
Ha nem internet kérdések, nem emlékszem rá, csak tegye meg a
Beszéljétek meg, és azt fogja mondani, hogy futni.
De az internet kell dolgozni.
>> Így az egyetlen dolog - Igen, semmi más nem igazán fontos.
De én csak szerettem volna rámutatni, hogy -
lásd ebben a jobb alsó sarokban.
Tehát minden a készülékeket kell egy IP-címet.
És később a félévben, az IP cím lesz releváns, ha
dolgozik a weben p-set, mert a Ön képes lesz elérni a
honlapon dolgozunk az Ön helyi Chrome segítségével az IP-címet.
>> De amit szeretek használni az IP-címet az - és nem kell ezt tenni, én
csak azt, hogy pont ez ki -
itt van.
Tehát ez egy terminál ablak Mac-emet, ez nem a
A készülék egyáltalán.
És tudod nézni, milyen ezt a parancsot nem.
De fogok SSH közvetlenül az én Appliance.
Én nem tudom, mi az IP.
>> JOSEPH: 168 -
>> 168.224.1.0.
>> Ebből: Tehát ha kész vagyok ezzel, jelentkezzen be
Most, alapjában véve, ez azonos a terminál ablaka a készülék.
Szóval elég sok soha nem dolgozott belül a készüléken.
Csak mindig is fut a háttérben minimális
és SSHed bele.
>> A probléma ezzel az, hogy nem fog hogy képes legyen könnyen kezelhető gedit
közvetlenül ezt.
De ha azt akarjuk, hogy egy igazi jó hacker, akkor meg kell szokni, hogy a
parancssoros szövegszerkesztő egyébként.
Így Vim és Emacs és a Nano, az összes ilyen különböző alternatívák.
Nano bizonyul a legkönnyebb.
És azt hiszem, hogy nincs szintaxis kiemelve.
Ó, nem, ez teljesen nem.
Tehát akkor a Nano, mert a hogy az ember elég könnyű.
>> Látod ezeket a parancsokat az alján.
Ez a kis sárgarépa szimbóluma.
Ha még nem látta volna, akkor valószínűleg látni sok most.
Ez általában azt jelenti, a vezérlő sárgarépa, mint a bal alsó a billentyűzet
vezérlő karakter.
Tehát itt azt mondja nekem, itt -
ó, ez nem vágja le, ha nagyításhoz
Tehát vezérlés, X jelentése hogyan Megyek a kilépéshez.
És azt mondja, tud ütni Y Igen, megtakarítás, N No.
Szóval ez Nano.
>> Vim és Emacs általában kissé bonyolult és nyomasztó.
De lehet szokni, és akkor majd szeretni.
Tehát ennyi.
>> JOSEPH: Nem kell csinálni.
>> ROB: Igen.
Ön szabadon használhatja gedit a fennmaradó félévben.
Tehát minden készülék kapcsolatos kérdések?
Vagy van olyan gondolatok, hogy mi mást kell beszélt arról,
a készülék?
Igen.
>> SPEAKER 1: Amikor SSHed be a dolog volt, a jelszó Crimson?
>> ROB: Igen.
A jelszó elég sok mindent A készülék folyik
hogy Crimson.
>> SPEAKER 2: Install, mint egy igazi IDE A készülék, fog ez működni?
>> Ebből: Gondolom Eclipse nem egy Fedora változat, amely esetben igen,
meg tudod csinálni ezt.
Ez valószínűleg nem igazán éri meg.
>> SPEAKER 2: OK.
Így talán könnyebb, ha azt akartam, hogy használata Eclipse, csak használja a natív és
majd feltölteni -
>> Ebből: Ó, ez is talán könnyebb.
De lehet, hogy ez működik a készülék.
>> JOSEPH: És a kamera, a kérdés volt, lehet telepíteni egy másik
IDE belsejében a készülék?
>> Ebből: Eclipse, hogy egy példa egy IDE.
Minden más készülék kérdése?
Rendben van.
>> Így most lépni a parancssorban interface kapcsolatos dolgokat, így CLI.
És ismét, én csak fog dolgozni itt, mert ez azonos a
dolgozó egy terminál ablakot a készülék.
Hogy van, hogy a betű néz?
Ez elég nagy?
Rendben van.
>> Tehát van egy csomó parancs, hogy akkor kap elég használni
egész félévben.
A nagy két navigálni a ls, lista fájlok ebben a könyvtárban, és
cd, így váltani.
Szóval lehet változtatni, hogy asztalon, majd nagyon gyakori minta CD-ről
könyvtárba, és azonnal ls Mi van a könyvtárban.
>> Az emberek néha nem veszik észre hogy a Tab befejezése egy dolog.
Szóval, mint a CD, VH, aztán elütöttem Tab.
Én szinte soha nem írja ki az egész dolog.
És ha folyamatosan üti Tab megint, akkor az automatikusan
kezdjük el felsorolni nekem.
Így tudok cd vhostokat, a helyi gazda.
És ez még csak fog -
Abban az esetben, ha nem hallotta a kifejezést előtt, a könyvtár csak egy újabb szó
mappa.
Tehát most, ha látod -
hozzuk, hogy a csúcsra.
>> Tehát most, ha látod zárójelben, akkor lásd a kis tilde, slash, vhost,
perjel, a helyi gazda.
Tehát a tilde, amely utal az én home könyvtár.
Ez egy könyvtárat akkor be, ha SSH be
Ez a könyvtár akkor, amikor akkor nyit egy terminált.
Ez az, ahol elkezd.
És így én vagyok benne az én home könyvtár, és én vagyok benne a vhost
könyvtár belső én könyvtárában.
És akkor biztos vagyok benne, a helyi fogadó könyvtár belsejében ezt.
>> Szóval néhány egyéb hasznos dolgok CD -
vagy jól, általában, így mindig dot utal, hogy az aktuális könyvtárban.
Cd, pont egy nagyon értéktelen parancsot.
De ez változik a aktuális könyvtárban.
A hasznos egy szempontból cd pont, pont, ami
menj fel egy könyvtárba.
>> És jegyezze meg, hogy ezek a -
Azt akarom mondani, álnevek, de ezek szimbólumok, pont, és pont, pont, ezek a munka
elég sok olyan parancs te lesz gondolt fut.
Szóval, mint a cd valószínűleg hol lesz használja a legtöbb, de ezek nem
dolog, hogy csak cd megért.
Ez nagyjából valami az egész parancssori megérti.
Sok program érti pont és pont, pont.
>> Így a többi hasznos is - cd, kötőjel.
Annak érdekében, hogy megy, hogy engem a utolsó könyvtárat, hogy én be
Így néha fogok csinálni valami ilyesmit, oh, dolgozom itt.
És látom, valami hibát valami, és Megyek vizsgálja meg megy,
néhány véletlenszerű könyvtár valahol.
És én nem tudom, hogy lesz hadd ott.
Nem fog.
Így aztán, amit akarok ebben a könyvtárban.
Bla, bla, bla, bla, bla.
És azt gondoltam, rendben, azt akarom, , hogy menjen vissza, ahol voltam.
CD, kötőjel, és ez hozza nekem vissza.
>> Így fogok dobni egy csomó ezek a ma.
Én nem várom el, hogy memorizálni mindet.
Ez a fajta csak tudom, hogy léteznek.
Aztán később, amikor te, mint hmm, azt akarom, hogy menjen vissza a
könyvtár, hogy én éppen, ó, várj, valami ilyesmi létezik.
Nem kell, hogy csak írja be a a teljes katalógusban újra.
>> JOSEPH: És végül majd csak használja őket újra és újra, és
akkor az lesz izom memória.
>> ROB: Igen.
Szóval, hogy én mondtam, hogy a hullámvonal a saját könyvtára.
Így tudok CD-t, hullámvonal.
De nem is kell csinálni, hogy ha én csak -
Megyek vissza a könyvtárba, így ez nem egy értelmetlen példa.
De ha csak ezt a CD, ez is a ugyanaz, mint a, menj a home könyvtár.
Én Command, K.
>> JOSEPH: Azt is írja világos, a szó, és meg kell törölje azt.
>> Ebből: És azt hiszem, még Automatika, L is csinálja.
Tehát sok különböző módon.
Azt hiszem, van néhány különbség, ahol a világos és Ellenőrző L majd csak
tényleg tolja a felső és az Még mindig lépjünk vissza.
Command, K szó elpusztítja mindent, és
nem görgethető vissza.
Legalábbis, ez hogyan működik a iTerm2.
Nem tudom, hogy más dolog -
oh.
>> A SSHing, így ha a Windows, akkor kell majd letölteni PuTTY
annak érdekében, hogy SSH, mivel a Windows nem van, mint a beépített SSH eszköz.
A Mac, akkor csak SSH közvetlenül egy terminál ablakot.
OK.
Kérdése van?
>> Az ls, tehát valami megszokni a legtöbb ilyen parancsok -
Nos, én csak tegye.
Ls, kötőjel, l.
Tehát kötőjel, l, amit mi fogunk hívni egy zászlót ls.
És sok ilyen parancsok zászlók hogy akkor adja át nekik.
Tehát ebben az esetben, kötőjel, l zászló hogy azt mondja, hogy adjon nekem egy teljes
lista az összes információ ezeket a fájlokat.
>> Tehát azt látjuk, hogy itt volt az asztalon módosítása július 30-án 00:54.
Letöltések módosításra került a szeptember 6.
Ezek a jelenlegi mérete és bájt ezeket a könyvtárakat.
Nem kell, hogy megértsük mindezt.
>> Ez a cucc a bal oldalon, ezek a drwx a, , hogy lesz sokkal relevánsabb
később, amikor meg kell foglalkozni -
hogy köze van, aki engedélyekkel hogy nézd meg ezeket a fájlokat.
És ha nem az egyetlen felhasználó a számítógép, akkor képes lenne
mondjuk, OK, legyen az csak egy lehetővé tette, hogy nézd meg ezt a fájlt, vagy én vagyok
majd, hogy mindenki nézni ezt a fájlt.
Tehát valaki a számítógépen nézd meg ezt a fájlt.
Én nem is tudom, mi ez - ez mit csinál?
>> JOSEPH: Nem vagyok benne biztos, valóban.
>> Ebből: Fogalmam sincs.
>> JOSEPH: De ha nem tudod, akkor hasznos parancs, amely segítségével
hogy megmondja, mi a kimenetet jelent.
És ha beírja az ember a parancs előtt -
így az A-M N-. ROB: Man.
Tehát az ember egy másik ami nagyon hasznos.
És az ember, ls.
Tehát az ember oldalakat, ezek mind parancsokat fogsz használni
a parancssorba, és ők is funkciók jelentős lesz
C. Így az ember -
és figyelmen kívül 3..
De az ember 3 printf fog hozni fel a C változat printf.
De ha csak nem férfi printf, ez lesz, hogy ki a parancsot printf
ez történik a parancssorban.
>> Így az ember, ls.
A man oldalak is elég elsöprő.
Itt, bár, látni fogod ezt a hirdetést Az összes ilyen lobogók ls
megérti.
Tehát, ha megy a kötőjel, l, valamint -
Meg fogom dobni ezt rád.
De ahhoz, hogy keressük, azt szeretné, az első találatot a kérdés
védjegy vagy perjel gombot.
Így perjel.
>> Aztán lehet keresni az, amit akarok.
Így fogok perjel a kötőjel, l.
És ott volt.
Tehát egy hosszú lista formátumban.
Ez nem segít nekem kitalálni, mi az adott oszlop jelentette, de
Feltételezem valahol itt ez magyarázza, hogy az.
Így használja a man oldalakat az olyan parancs hogy nem rögtön megérti.
>> Biztos vagyok benne, akkor is az ember, ember.
Az interfész az online kézikönyveket.
Ó, egy utolsó, ami talán kissé lényeges, ls, kötőjel, a.
Tehát észre, ha csak nem ls, Azt, hogy az öt fájlokat.
Ha én ls, kötőjel, a, azt kap egy csomó további fájlokat.
Tehát a dolog közös az összes ezeket a új fájlok a dot előre.
>> Így az egyezmény, hogy a fájl ponttal kezdődik el van rejtve.
Szóval nem akarja látni, hogy a fájl, akkor Nem akarod, hogy rendetlenség
A könyvtár lista.
Ez csak akkor, ha kifejezetten kéri, Rendben, ls, kötőjel, a, mutasd meg.
Az a jelentése az összes fájlt, beleértve a rejtett is.
Tehát más parancsokat.
Ó, kérdés ezen a ponton?
Igen.
>> SPEAKER 3: Ha nem ls, a, mi a pont, pont?
>> ROB: Oh.
Szóval ez az, amit én beszélek.
Ez ugyanaz a dolog, ahol Én is, mint a CD, pont, pont.
Szóval technikailag, pont, pont, pont van fájlok vannak minden egyes
könyvtár, ahol a dot fájl vonatkozik hogy az aktuális könyvtárban.
Tehát, ha cd, pont, én csak megyek hogy maradjon a könyvtárban.
És pont, pont mindig az korábbi könyvtár egy szinttel feljebb.
Tehát, ha bemegy naplók és ls, kötőjel, al, Meglátom, pont, pont. cd a pont, pont
elvezet az előző könyvtárba.
Igen.
OK.
>> Tehát még egy elég fontos parancs rm.
Szóval, ez az, amit mi fogunk használni, hogy távolítsa el.
És hadd valójában egy másik parancs az első.
Tehát mkdir.
Mkdir hogyan lehet könyvtárak létrehozására.
És én létrehoz egy ideiglenes könyvtárba és menj be, hogy az ideiglenes könyvtárba.
És ahogy az várható volt, hogy üres.
De ha én ls, kötőjel, egy, még mindig van pont és pont, pont, pont azért, mert utal
az aktuális könyvtárban.
És pont, pont utal a előző könyvtárhoz.
És ezek mindig létezik nem számít A könyvtárban van be
>> És ez egy teljesen felesleges parancsot, de a kapcsolatot.
Én csak egyszerűen azt, mert egy egyszerű módja annak, hogy hozzon létre fájlokat.
Tehát érintse meg, érintse meg b, érintse meg a C csak majd létre három fájlt nevezzük,
b, c, amelyek teljesen üres.
Tehát a lényeg rólam létre ezeket a első helyen, csak azért, hogy rm
hogyan lehet eltávolítani őket.
Tehát rm, a.
Meg fog kérdezni, távolítsa el szabályos üres fájl a?
És akkor azt mondom igen.
>> Tehát, ha biztosan tudom, hogy szeretnék törli a fájlt, anélkül, hogy
kéri, vegye ki szabályos üres fájl?, akkor rm, kötőjel, f lesz a
zászló, amely azt mondja, erőt a remove nélkül még kéri meg, ó, te
Biztos, hogy törli a fájlt?
Igen, biztos vagyok benne.
Tehát rm, kötőjel, fb majd csak csináld kérdezés nélkül.
>> Szóval, hogy még egy kis könyvtárat.
mkdir, tmp2, cd, tmp2, érintse meg a, érintés b.
OK.
Tehát most azt akarom, hogy távolítsa el tmp2, mint egy könyvtár.
Tehát rm tmp2.
Ha nem tudja eltávolítani tmp2, ez egy könyvtár.
Tehát a kérdés az, hogy rm nem azonnal dolgozni könyvtárak.
Ez csak azt jelentette, fájlokat, mint a nem-könyvtár fájlokat.
>> És mit tehetünk itt van rm, kötőjel, r.
Ez áll a rekurzív, amely minden bizonnyal Nem jelent semmit, hogy van még.
De amikor kapsz rekurzió, akkor az azt jelenti, több.
Tehát rm, kötőjel, r, tmp2 fog rekurzívan bemegy a könyvtárba.
Tehát az írásvédett tmp2?
Igen, menjünk bele.
Akarunk eltávolítani tmp2 / a?
Igen.
Akarunk eltávolítani tmp2 / b?
Igen.
Most akarunk távolítani a könyvtár tmp2?
Igen.
És most a könyvtár és minden belső
része már eltávolították.
>> Van technikailag parancs rmdir hogy tudod használni, hogy távolítsa el
könyvtárakat, de csak akkor működik, üres könyvtárak egyébként.
És látni, hogy, nézzük csak do mkdir, tmp2 újra.
Tmp2, érintse meg a.
OK.
Tehát, ha úgy próbálja meg eltávolítani dirtmp2, akkor az azt mondják, a könyvtár nem üres.
Szóval nagyjából soha nem használja a Remove dir parancs egyébként, mert rm, kötőjel,
r működni fog Üres könyvtárak és nem üres.
>> És azt is, ha nem szeretné, hogy végig, hogy az egész folyamat
csökkenő a könyvtárba, és eltávolítja minden egyes fájlt, rm,
kötőjel, RF, tmp2.
És most, hogy elment.
>> Valami, hogy legyen óvatos arról van szó, rm, kötőjel, rf.
És ez megrémít még írja, mert ha véletlenül
nyomja meg az Enter vagy valami.
Tehát rm, kötőjel, RF, hullámvonal volna, anélkül, hogy kéri meg, az f nem kér
meg, akkor automatikusan eltávolítja én egész home könyvtár és
minden benne.
Szóval, azt gondolhatja, hogy ez egy hülye dolog.
És hát, ez az.
>> De ez megtörténhet nagyon könnyen Baleset esetén, mondjuk, azt akartam, hogy távolítsa el
a perjel, vhost könyvtárat.
És csak a gyors gépelés, Véletlenül ezt.
Ez eltávolítja rekurzívan mind az én home könyvtár és a vhost könyvtár
ebben az adott könyvtárban, hogy csak történetesen nem létezik most.
De ez még mindig távolítsa el az egész home könyvtár.
Legalábbis azzal, hogy nem egy F, ez azonnali velem.
És én, mint, ó, nem, nem akarom csinálni.
De az emberek, slash, köztük én inkább, hogy a
szokás, hogy mindig az RF-Ing.
Még a szabályos fájlokat, hogy én is csak RM, c, én inkább csak rm, kötőjel, RF, c.
Csak vigyázz, amikor RF-Ing.
>> Hangszóró 4: Mit C csinálni?
>> Ebből: C Arról beszélek, hogy a C fájl ebben a könyvtárban, hogy rm, c.
>> JOSEPH: És még veszélyes, ha használja egy csillag arra utal, hogy mindent
a könyvtár.
Szóval, amit én általában inkább nem is fogok bemegy a könyvtárba, és azt akarom, hogy
távolítsa el az összes fájlt is.
Tehát rm, kötőjel, RF, csillag.
>> ROB: Igen.
Rm, kötőjel, RF, csillag.
>> JOSEPH: És ha nem vigyázunk a könyvtár, te -
Nem voltam temp, de én véletlenül a home könyvtáramban,
aztán majd távolítsa el mindent az otthonomban könyvtárban.
És én tényleg csináltam korábban, és a Azt hiszem, már ilyet, vagy
Jay tett ilyet.
>> Ebből: Én véletlenül eltávolították -
így figyelmen kívül hagyja, hogy a parancs egy kicsit.
>> JOSEPH: nem szórakoztató.
>> Ebből: Így a perjel bin könyvtár egy csomó bináris fájlok, ahol leszek
ismerős is, mint csattanással.
Nos, csenget és lényegében az összes ilyen dolog, hogy én vagyok futó parancs
sor ebben a perjel bin könyvtárba.
>> JOSEPH: Mint ls van itt.
>> Ebből: Tehát pont, perjel, ls lenne jeleníti meg ezt a könyvtárat.
>> JOSEPH: Rm is ebben a könyvtárban.
>> Rob: véletlenül rm, RF-ed bin, amely kivette olyan parancs tudtam
esetleg valaha szeretné.
Ami aztán csak újra a új készülék ezen a ponton.
>> JOSEPH Szóval legyen nagyon óvatos, ha ezt a parancsot.
>> Közönség: [Nem hallható]?
>> ROB: Igen.
Ez is egy rossz szokás bekerülni.
Ha azt veszi észre, én vagyok most -
nos, akkor nem veszi észre, de a a zoom-in, talán igen.
Szóval most már root @ készüléket.
Tehát jharvard a felhasználó akarunk hogy mindig használni.
Gyökér az a felhasználó, aki engedélye tenni bármit.
>> Tehát észre, ha én vagyok jharvard, Ha megpróbálom cd -
mi az a könyvtár?
Ó, gyökér egy jó példa.
Tehát cd, gyökér.
Engedély megtagadva.
Mert ha megnézzük ezt a listát -
és újra, akkor nem kell teljesen megérteni ezt.
De ez a három vonal mondanak hogy ne hagyd, hogy minden más
a felhasználó ebbe a könyvtárba.
És a könyvtár történik a tulajdonosa a root felhasználó.
>> Tehát az a tény, hogy én vagyok jharvard, és nem aki nem root számára engedélyezett a
ez a könyvtár, ami azt jelenti, hogy én vagyok lesz, hogy engedély megtagadva, amikor
próbálja lépj bele.
Tehát, ha én vagyok gyökér, van engedélye csinálni bármit, beleértve a
törlése alapvető fájlok A készülék és a
tönkre az egész dolog.
>> Tehát ez egy rossz szokás, hogy a csak kóborol a
operációs rendszer root.
Én egyébként.
Kérdése van?
És én kilép gyökér, maradj, jharvard.
OK.
>> Többet vonatkozó parancsokat.
Szóval, megy vissza a mi temp, a mv parancs áll a lépés.
Tudod mozgatni a.
Most szeretnénk hívni b, így most úgy hívják b.
Vagy talán azt szeretné helyezni b egy könyvtár.
Tehát most ez a könyvtár üres.
Megyek vissza a home könyvtár, és azt látjuk, hogy b van itt, mert a
home könyvtár volt az egyik könyvtárat fel a könyvtár, hogy B-nek is be
>> Van még cp.
Tehát cp másolni szuper rész, dot, szöveget.
Én hívom s, pont, szöveg.
Most már mindketten szuper rész, dot, szöveget és s, pont, szöveg.
Ez is működik a könyvtárakat.
I RF-ed egyetlen fájlban.
Tehát cp -
Nos, először is próbáljuk cp, tmp, tmp2.
Tehát könyvtár kihagyása tmp.
Annyira hasonlít rm, az alapértelmezett viselkedés az, hogy nem működik a könyvtárak.
>> És ismét, hasonlóan RM, az alapértelmezett viselkedés - nos, hogy ez a munka
A könyvtárak egy, kötőjel-r el.
Így másolni rekurzívan a temp könyvtárat tmp2.
És így most már mind a tmp és tmp2, és ez nem az, hogy hasznos, mivel tmp
üres volt az első helyen.
Tmp2.
>> Most másoljuk tmp be tmp2.
És azt látjuk, hogy tmp2 is van a fájl egy, mert a könyvtárat és
mindent benne, hogy a könyvtárba másolta.
És ez lehet kissé hasznos Ha, mondjuk dolgozik
A probléma az egyiket -
vagy valójában, újabb probléma készletek még ennél is fontosabb, mert
lesz egy csomó a fájlok és a dolgok.
>> De csak azt, hogy, egy osztott a második, vagy, mint, rendben vagyok
fog próbálni valami mást.
Hadd másolni az egész pset1 könyvtárat pset1 tartalék, hogy ha
Én a végén csavarja a dolgokat, tudok menj vissza a mentés könyvtárba.
Több megfelelő módon verziókövetését mentés a kódot, de a
ez mindig egy gyors módja annak, csak hogy Biztos van egy példánya valami
hogy te arról, hogy módosítani.
>> Tehát echo is egyszeri parancsot fajta sillily majd csak nyomtatni a
parancssori pontosan mit akartál echo.
Tehát echo hi.
Majd csak nyomtatni hi.
Echo hello world.
Majd nyomtassa hello world.
Hogy jön a használatát, ha kezd ötvözi parancsokat.
>> És ismét, nem várom el, hogy teljesen érti ezt még, de ez
valamit látni.
És ha Googling példákat vagy rájössz, hogy akarod
valamit, akkor hasznos lehet.
Szóval, mint például, így ls, kötőjel, l.
Tehát itt látom a kimenetet Az ls, kötőjel, l.
És én azt mondom, rendben, azt akarom, hogy tárolja, hogy egy fájlba.
Mindez kimenet, azt akarom, , hogy egy külön fájlba.
>> Szóval ez a kis-nál nagyobb szimbólum az, mit fogunk hívni.
Mi átirányítása a kimenetet egy fájlba.
Hívjuk a fájl bla, mert ez amit én inkább mindig hívják.
Most látjuk, hogy van egy fájl bla itt.
És ha nyisd ki, meglátom, hogy ez pontosan a kimenetet a parancs
hogy én csak futott.
És hasonlóképpen, akkor -
ha ez a kimeneti fájl, ez a nem kap bemeneti fájlból.
Mi az a parancs, hogy én -
>> JOSEPH: Azt hiszem, akkor a több vagy kevesebb, talán.
>> Ebből: De mi a helyzet, csak kevesebb blah?
Nem tudom.
Ha ebbe a forgatókönyv, mint a van psets, hogy ez hasznos.
>> JOSEPH: Tudod pipe be visszhang.
Pipe a fájlt echo látni.
>> Ebből: Ez a cső.
>> JOSEPH: Elnézést.
>> Ebből: Rendben.
Tehát ez a kimenet fájlba.
Ez az, hogy a szöveget a fájlban és átadja a programot.
És akkor is látni ezt a fickót.
Tehát ez a fajta egyszerre végzi mindkettőt.
És valóban, én két új parancsok csak azért, hogy használja azt.
>> A történelem egy praktikus parancs csak majd nyomtassa ki a listát
bármi, amit valaha futtatni egy parancsot.
Tehát itt látunk mindent, ami van óta működik ez az egész idő alatt.
Sok ls években.
>> És egy másik hasznos parancs a grep, hogy az a célja, a keresést az
szöveges keres mintákat, nos, keres, amit
akarjuk, hogy keresni.
És így egy praktikus használat itt, mondjuk szeretnénk megragadni a történelem.
És azt akarom, hogy keresse meg a parancsokat ahol - mi a
hasznosnak kell keresni?
>> JOSEPH: [Nem hallható]?
>> Ebből: Vagy nézzük csak meg az összes érinti, bármilyen okból.
Tehát ez az, amit fog kinézni.
És akkor nem kell teljesen érteni.
De az ötlet itt, a történelem ad azonos kimeneti tette itt
ahol ez kinyomtatja az egész története mindent, amit valaha is futni.
Mi majd halad, hogy -
így nyomtatás helyett a képernyőn, szeretnénk átadni, hogy a
parancs grep amely keres minden esetben a szó érintés.
>> És így ezzel együtt a eszközök, a történelem és a grep, látom, OK,
Itt van minden, a parancs, amit valaha fut, és itt egy kicsit a közös egy.
Mi vagyunk az alján.
És ez is, hogy nekem a parancsot Én csak futott, hogy volt a
szó érintés is.
De a cső egy nagyon hasznos dolog A több különböző programokat.
És valóban, ez egy parancsikont let me kimenet történelem fájlba bla, és a
hadd grep a fájl bla mint amit szeretnék, hogy nézd át.
Tehát a cső csak egy parancsikont e két parancs.
Igen.
>> SPEAKER 4: [Nem hallható]?
>> ROB: Igen.
Mi -
Oh.
Próbáljuk.
Tehát, macska, kutya, hal.
Szóval azt akarom, grep.
Dash, r, megint lesz rekurzív, így azt akarom, hogy leereszkedünk
összes könyvtár.
Azt akarom, hogy rekurzívan grep-összes - és hadd átmenetileg kap
ez az útból.
Figyelmen kívül hagyni engem.
OK.
>> Szóval azt akarom, hogy ideiglenesen grep- minden esetben a szó hal.
És itt van, amit én csinálok, az grepping rekurzívan a szót hal.
És a csillag azt jelenti, az összes ilyen Az ebben a könyvtárban.
És ez így kaptam egy Permission Denied, mert nem szabad, hogy olvastam, hogy
adott fájlt.
De találtak a halak a fájlban, teszt.
>> Azt is mondhatnánk, pontosabban, csak meg akarom nézni a fájlban bla, a
ez esetben nem fog találni semmit.
Én csak meg akarom nézni a fájlban, teszt.
Ez meg hal.
Ez egy nagyon hasznos parancs tudni, hogy általában.
Vannak alternatívák grep , amelyek állítólag több
programozó barátságos, de én inkább , hogy még mindig esik vissza grep.
Kérdése van?
OK.
>> Vannak-e más parancsokat?
Oh.
Csak egy egyszeri egyik, hogy mindig meg, hogy szórakoztató Cal.
Tehát észre, ha én vagyok ebben a szép teljes képernyős módban, nincs, mint a felső
eszköztár, vagy ilyesmi.
Tehát cal csak ad nekem egy szép kis naptár van
Most vágva, gondolom.
De szép kis paranccsal.
>> JOSEPH: A [hallható].
Más parancsok, hogy lehet, hogy látott közé csenget, és.
Megyünk át őket részletesebben később.
De ha már dolgozik A Pset, ha kell
ismerik azokat.
>> Ebből: Rendben.
Kérdések a parancssorban a dolgokat?
Rendben van.
Szóval lépni néhány C-kapcsolatos dolgokat.
Változók matek.
OK.
Szóval, ahogy volt matematikai Scratch, akkor is használható matematikai C.
>> Mielőtt nekilátnánk az, hogy teljesen, olyan változókat.
Ne feledje, hogy amikor kijelentik, változó, mint int x, vagy float y, akkor
kell, hogy ez típus előtt a változó neve.
Tehát típusú láttunk eddig int, float, double, hosszú, hosszú, amit
valójában nem tudom, hogy mi már Látható, hogy eddig.
>> Vannak más is.
Már látni char.
Van egy rövid, ami olyan, mint ez a ellentéte a hosszú, hosszú, ahol ez
kisebb, mint egy egész szám.
Azt is láttuk, húr.
Tehát mi a különleges karakterlánc?
Miért mondják, Nem elég, mint int?
>> SPEAKER 4: Ez nem igazán létezik.
>> ROB: Igen.
Tehát az egyetlen ok, amiért van szöveg azért van, mert ha nem
hash tartalmazzák cs50.h.
És majd meglátjuk példát később - ó, ez nem kezeli olyan jól -
ahol cs50.h csinál valamit vonalak mentén típusú
def, char csillag, string.
>> És ez azt mondja, hogy nem is tudja, mi a char csillag még.
De ez azt akarjuk húr.
Bárhol már használja karakterlánc, akkor lehetett volna a char csillag,
ami valójában egy olyan típus, amely létezik a C nyelvet.
De mi lesz az, hogy.
Ja, és megy vissza.
Ügyes.
>> Tehát ugyanaz a dolog bool ahol az igaz és hamis.
Ez nem igazán egy beépített típusú C. Ehelyett, ez csak, van ennek
az érték nulla?
Akkor csak úgy azt, hogy hamis.
Vajon ez az értéke -
Nos, ez bármilyen érték, amely nem nulla?
Akkor úgy vélik, hogy igaz legyen.
Tehát az egyik igaz, a két igaz, semmit nem nulla igaz.
Tehát ezek azok.
Kérdések nyilvánításáról változók és változó típusok és minden?
Igen.
>> SPEAKER 4: A hosszú, hosszú, a könyv, azt mondta, hogy volt, hogy hosszú, hosszú int.
De majd csak hosszú, hosszú működik?
>> Ebből: Tehát az ilyen típusú módosítók.
Így int x.
Így azt is mondhatjuk, unsigned int x.
Azt lehet mondani, a rövid int x.
Azt lehet mondani, hosszú, hosszú int x.
De elég sok minden olyan dolog, amit csak annyit mondott, unsigned int, short int,
long long int, akkor megszabadulni Az int és ez csak feltételezik,
hogy jelentette int.
Tehát unsigned x, ami csak azt jelenti, -
tudod, hogy általában egy int, akkor lehet mondani, x értéke negatív 3?
Egy unsigned int, akkor nem.
>> JOSEPH: És ismét, a kamera, a kérdés az volt, hogy mi a különbség
a hosszú long int és csak a hosszú ideig?
>> ROB: Igen.
Szóval szinte soha nem írni a hosszú long int.
Írok hosszú, hosszú.
>> JOSEPH: További kérdések?
>> ROB: OK.
Tehát ostoba kis emlékeztető, hogy hogyan kijelentjük változó és inicializálása
változó, és állapítsa másik változó és inicializálni
az egészet egy lépésben.
Így a nyilatkozat a változó és Az inicializálás változó nincs
hogy de lehet ugyanabban a sorban.
>> Tehát a szokásos matematikai operátorok hogy van szokva -
plusz, mínusz, szakadék, alkalommal.
Van még modulo, ami majd meglátjuk.
Nincs, legalábbis C, a beépített teljesítmény
hatványozás caret operátor.
Nos, van egy kalap operátor, de ez nem a hatalom.
>> JOSEPH: De ez nem hatványozás, Igen.
>> Ebből: Ne használja a kalap azt feltételezni, hogy az azt jelenti,
mint a szögletes vagy bármi.
Szóval néhány dolog, hogy tartsa törődj részlege.
Fogok állni.
Tehát kijelentette inicializálása választ.
Szóval azt mondja float válasz értéke 1 osztva 10-zel.
Print válasz két tizedesjegy pontossággal.
>> És ez a fajta dolog, amit volna az ember printf kitalálni, hogy
Mi a fene ez%, pont, 2f jelent?
És ez csak azt jelenti, nos, figyelmen kívül hagyva a 0.2.
És%, f, amit használunk nyomtatni lebegni.
A 0,2 azt mondja, hogy a nyomtatási úszó két tizedes jegyig.
Tehát ez a program egy hiba, és lehet, hogy már láttam ilyet néhány
korábbi CS természetesen.
De mi ez a bogár?
>> SPEAKER 5.: Zero.
>> ROB: Igen.
Tehát, amikor azt mondjuk, válasz egyenlő 1 osztva 10, azt akarjuk, hogy a
választ kell 0,1.
De 1 osztva 10, 1 egy egész szám, 10 egy egész szám.
És így, ha nem egy egész szám hányadosa egy egész, megyünk vissza
egy egész szám.
Tehát 1 osztva 10 0,1.
>> Mivel kell nekünk egy egész, ez csak úgy eldobni, hogy
tizedes, és azt mondják, hogy az a válasz: 0-ra.
És így, ha nyomtatni választ itt, ez a nyomdába 0.00.
>> JOSEPH És ahogy egy megjegyzés, valójában eldobja, mi után
tizedes pontossággal.
Tehát, ha ahelyett, már 6 osztva 10, azt gondolhatja, hogy ez Önnek
0,6 és akkor is felhajt 1.
De tényleg, mi történik, ha az írja feladat az, hogy esik, ami
a tizedesvessző után.
Így 0,6 nem lesz 0-ra.
>> ROB: Igen.
Tehát azt mondjuk, csonkítása, hogy.
Tehát, ha a leadott egy int, a tizedes csonka.
Így a fix, hogy - nincs Valójában két.
És én fogom csinálni, hogy a második, mert a ez egy sokkal egyszerűbb fix.
>> Tehát az egyik fix, hogy használja úszók a körzetben.
És tényleg, csak meg kell hogy az egyik közülük egy úszó.
De ez kissé világosabbá csak hogy mind a ketten úszik.
Tehát 1.0 osztva 10.0 elosztjuk két úszók.
Tehát a válasz lesz a vége, hogy úszó, és így lesz
helyesen nyomtatni 0.10 itt.
>> Valami, ami nem működik olyan jól arról, hogy van, jól, persze, nem volt könnyű
elég átalakítani 1 és úszó azáltal, hogy 1.0.
De mi van, ha ehelyett két egész szám mint int x értéke 1 és int y
értéke 10, majd akartunk hogy ne x osztva y?
Tehát ez nem könnyű, hogy csak do x.0 vagy valami.
>> Tehát a javítást, hogy a casting.
Tehát casting egy módja C átalakítására az egyik változót típusról a másikra.
Tehát itt, az 1 egész szám.
És azáltal, hogy ezt úszó előtt , mi casting 1 úszó.
És ez fogja alakítani Az 1 és 1,0.
És ez fogja alakítani A 10 és a 10,0.
>> És akkor a dolgok hasonlóan viselkednek a előző verzióhoz mi csak azt mutatták,
ahol, mint az várható volt, kapunk 0,10 és ez lesz nyomtatni, hogy.
És mi ezt a változók is.
Tehát elmondhatjuk, float x osztva float y.
>> JOSEPH: További kérdések?
>> Ebből: Tehát ugyanúgy, mint a rendszeres matematika, mi üzemeltető elsőbbséget.
Tehát matekórán, akkor nagyobb valószínűséggel hívni műveletek sorrendjét.
Itt a hivatalos kifejezés operátor elsőbbséget.
De az üzemeltető elsőbbséget, vagy a legtöbb szolgáltatók, van, ahogy várnánk.
>> Szóval, mint a matematika, a 2-szer 10 fognak csoportosítani jobban, mint
ez a 10 osztva 2, majd a 2.
Az, hogy a művelet, akkor nem 2 szer 10, 10 osztva a 2, majd
ez lesz 20 plusz 5 plusz 2.
Szóval ez a várakozásoknak, és tudod használni zárójelben a csoporthoz kifejezéseket.
Nem lehet használni szögletes zárójelek csoporthoz kifejezéseket.
Igen?
>> Hangszóró 5: Lehet, hogy tényleg csak menj vissza egy pillanatra?
Tudsz öntött egy int, hogy a húr?
>> Ebből: Tehát a C, akkor a leadott bármit szeretnénk, amit akarsz.
Ez nem jelenti azt, hogy egy jó dolog.
Tehát, ha alakíts egy int, hogy egy sor, azt jelenti, hogy -
és mi lesz ebbe sokkal alaposabban -
>> JOSEPH: Sokkal később.
>> Rob: Nem akartam mondani, sokkal később, így megpróbáltam megváltoztatni a mondatot.
Majd kap sokkal alaposabban Később, amikor igazán, ha van egy
string változó -
így egy sor lehet önkényesen Hosszú, nem igaz?
És mi már azt mondja, hogy az int négy bájt hosszú, hosszú nyolc
byte és egy úszó négy bájt.
Tehát egy sor, mint egy int, csak egy bizonyos számú byte hozzá.
És ez lesz a négy bájt.
>> De egy sor is elég Önkényesen nagy, igaz?
Tehát hello world már, ha ez 10 karakter, vagy bármi, ami már
lesz, hogy több mint 4 bájt Én elfér egy húr.
És hogyan húrok igazán működik az, hogy a vannak, ahol a memóriában karakterlánc
tartják fogva.
>> És itt, amikor azt mondom karakterláncot x egyenlő hello world, belseje x
csak azt mondom, oh, hello world tárolja ebben az adott helyen a memóriában.
Tehát, ha megpróbáljuk öntött egy egész, hogy a karakterlánc, akkor próbáljuk értelmezni
néhány véletlenszerű része a memória mint a húr.
És ez szinte mindig megtöri a dolgokat.
>> JOSEPH: De ha ez összezavarja te, mi lesz, amely azt
mélyebben később.
>> ROB: Igen.
Ez az, ahol mész bejutni mutatók.
És ez egy jelentős darab A két héttel a tanfolyam.
>> SPEAKER 6. Működik hasonló tárgyakat más nyelveken, vagy nem igazán?
>> Ebből: Tehát más nyelveken, a tárgyak lenne leírható mutatók.
Ez nem ugyanaz a dolog, mégis.
Minden gondolat?
>> JOSEPH: Nem.
Nincsenek gondolatok.
>> ROB: OK.
>> JOSEPH: Next.
>> Ebből: Csak menjen vele.
Rendben van.
Így modulo.
Csakúgy, mint mi, plusz, mínusz, osztani és szorozni.
Így modulo az egyik lehet, hogy nem is látott.
És ez csak azt mondja, hogy én a maradék.
Tehát 55% 10..
A fennmaradó csinál 55 megosztott 10 lenne 5.
Tehát 55% 10 5.
3%-5 lenne 3.
8% 8 0 lesz.
16% 15 1 lesz.
>> Joseph: Egy dolog megjegyezni ezzel, is, ez lehet, hogy nem a várt módon működnek
ha egy negatív szám.
Tehát negatív 5% 4, néhány ember azt gondolhatja, hogy ez -
mit gondolsz a negatív 5% 4 lenne?
>> SPEAKER 5:.
>> JOSEPH: Tehát egyesek egy, egyesek negatív.
De mi -
>> Rob: nem is kell mondta az egyik ilyen.
>> JOSEPH: Két, sajnálom.
Vannak, akik azt mondják -
>> ROB: Három.
>> Joseph: Három?
>> ROB: Negatív -
mi volt a - negatív öt -
>> JOSEPH: három, három, három.
Bocsánat.
Mivel modulo általában, ha már láttam máshol, ez általában azt jelenti,
vissza pozitív szám, igaz?
>> Ebből: Tehát amikor azt mondjuk, a matematika, a% 10-es, hajlamosak szeretnénk, hogy ha -
ha mod 10, akkor azt várjuk, hogy kap egy számot 0 és 9 között.
Itt, hogy nem ez a helyzet, hogy lesz negatív számok vissza.
>> JOSEPH: Erős negatív 5% 4 negatív lenne 1.
>> Ebből: De ez ritka, hogy te mod-ing negatív számok kezdeni.
Hagyja ki ezt.
>> JOSEPH: Igen.
>> ROB: Meh.
OK.
Tehát az egyik utolsó dolog rámutatni a úszók, hogy ez egy veszélyes viselkedést,
de úszók nem pontos képviselet.
Így megy vissza byte újra, ne feledje, hogy az int mindig négy bájt, és a
float mindig négy bájt.
Így Lucas példája nagyon jó.
>> Szóval szerintem az 1-3-mal osztva.
Tehát 0,3333333.
Ha csak 32 bites, hogyan lehet Tárolni 0,33333 pontosan?
És talán, bármilyen okból, azt mondod, Rendben, mondjuk
hogy ez a 1011001, nézzük csak annyit, hogy legyen 0,333333.
Nos, már csak véges számú ezeket a biteket, így lehetetlen, hogy
képviseli minden egyes lebegőpontos megadott érték csak 32 bit.
>> Nos, ez lehet, hogy képviselje minden lebegőpontos megadott érték végtelen -
Nos, mivel minden véges bitek száma.
Tehát a kérdés az, hogy jól, amikor használják nyomtatni két tizedesjegy pontossággal,
tettünk helyesen, hogy a válasz 0.10.
De a motorháztető alatt, ez nagyon tárolják a lehető legközelebb kell
0.10 amilyeneket bit képviselhet.
Ez a következő diára?
Vagy nem?
>> JOSEPH: Igen, ez az.
>> Ebből: Blegh, blegh.
>> JOSEPH: Igen, ha csak húzza a jegyzeteket egy kicsit.
>> Rob: Csak megyek a nagyításhoz ben az utolsó, hogy a.
Oh, istenem, ez [nem hallható].
Tehát ez a szám.
Ez az, amit ki lesz nyomtatva ha futtatni a programot.
És észre, hogy ez nem igazán nagy dolog ha mi csak törődve, mint a
2-3 tizedes.
Mintha csak az eredetileg nyomtatott 0,10, és ezért láttunk semmi baj.
De ha egyszer kezdeni, hogy a pontos, pontos számot, hogy ez
képviselő, azt látjuk, hogy nem Pontosan képviselnek 0,1.
>> És a problémák egy része itt, mint, Rendben, rendben, de, nos,
Először is, mi lenne, ha próbáltam csinálni, válasz egyenlő értéke 0,1?
Ez fogja vissza igaz vagy hamis?
És ez így nehéz megmondani.
Azt hiszem, tényleg lehet, hogy vissza igaz.
Will először -
Nem tudom.
A válasz az, ha elkezdi foglalkozó A lebegőpontos értékek, akkor elég
sokat ne használja az egyenlőség mert ez a pontatlanság.
>> És csak hogy tudd, ez a századik tizedes pontossággal, hogy a
lebegőpontos nem volt képes hogy megfelelően kezeli.
És így egyenlőség csak nem is bár a szám - ha lett volna
a pontos számok, a számokat kell már pontosan ugyanaz.
Ez a során, mint a 50 számítások segítségével ezeket a lebegő
pont értékeket, a hiba lehet építeni és fel és fel, és
a dolgok csak elvéteni.
>> JOSEPH: És már nagyon leghíresebb példa, hogy ez történik.
Mint a NASA mérnökei ütött ez rossz, ami rakéták robbant
a levegő után, hogy már indult.
És sok kérdés, mint ezt.
Szóval igen.
>> SPEAKER 6. Amikor azt mondod 0,3 f, nem is csonkolni a többi?
Vagy azt teszik fel vagy le?
>> Ebből: Lesz printf kerek ez?
>> JOSEPH: Azt hiszem printf csonkok.
>> ROB: OK.
Így tudjuk hasonlóan az ellenkező iránya ez, ahol, ebben az esetben,
a legközelebbi is jelenthet 0,1 volt ez a szám.
A legközelebb lehet képes 0.2 képviselik az ellenkező
irány, 0,199999996356 vagy valami.
Tehát, ha ment ebbe az irányba a a dolgokat, akkor a printf 0,3 f visszatér
1.99 helyett 2.00.
>> JOSEPH: És nem vagyok teljesen arról, hogy a.
Lehet, hogy írni egy kis, kicsi programot, hogy csak ellenőrizni ezt.
>> Ebből: Bár, mi biztosak vagyunk abban, hogy a ha megpróbálta leadni, hogy egy
int, és a casting egy int fog hatására, hogy vágjon a tizedes, ha
próbálja, hogy a leadott 1.9999999 egy int, akkor kap 1.
És ezért általában az kerek funkciót a matematikai könyvtárban.
Kérdése van?
OK.
>> JOSEPH: Így mozog feltételek és a logikai kifejezések.
Szóval láttam ezeket korábban.
És tényleg, hadd győződjön meg róla, a számítógép a megfelelő formátumban itt.
Tér.
Sajnos, mi kell majd foglalkozni a kicsit a vágási a széleken.
>> De igen, maguk már láttak mielőtt a Scratch.
Szóval ez itt egy kifejezés amelyet használnak a
a feltételes utasítás.
Így válaszolt nullánál nagyobb lesz mondani, hogy igaz vagy hamis.
És ezek nagyon fontos, mert a lehetővé teszik számunkra, hogy be
logika a kódot.
>> Így például, ez egy olyan program írt Scratch arra kéri a felhasználót
egy egész, és azt mondja nekik, hogy a az egész, hogy kaptál egy
pozitív vagy negatív szám.
És az átalakítás itt látni, először nyomtassa ki a nyilatkozatot,
adj egy egész szám.
És akkor kérje meg őket, egy egész.
>> És akkor feltételes logikát vége ide, hogy ellenőrizze, hogy ez a szám
valójában nagyobb, mint nulla, vagy sem.
Tehát itt van egy logikai kifejezés belsejében egy feltételes if.
Van kérdése?
Vannak-e olyan kérdések, hogy?
OK.
>> Tehát ez több, mint nagyobb, mint, természetesen.
Tudod építeni logikai kifejezések a legtöbb dolgot meg
azt hiszem, az a matematika.
Tehát nagyobb, mint.
Ez kell, hogy legyen kevesebb.
Bocsánat.
És a távolság.
>> Ebből: Isten ments, hogy hagyja.
>> JOSEPH: Rendben.
Tehát nagyobb, kisebb, nagyobb, mint, vagy egyenlő, kevesebb
mint vagy egyenlő.
Használjuk dupla egyenlőségjel, hogy ellenőrizze a egyenlőség, mert egy egyenlő eszközök
feladat, nem igaz?
Igen.
És akkor is, nem felel meg a a felkiáltójel, egyenlő.
>> És ez a felkiáltójel szimbólum is ki kell terjeszteni, hogy ha azt akarjuk,
megfordítása bármilyen logikai kifejezés, meg tudod csinálni ezt.
Tehát ez értékelni fogja, hogy valódi csak akkor, ha a válasz kevesebb
mint, vagy egyenlő nullával.
Kérdése az, hogy?
OK.
>> Így is össze ezeket kifejezések a logikai ÉS és
logikai vagy.
Szóval ez csak a és a szimbólum, amelyet be kell Shift 7.
És ez a cső szimbólum, amely Nem kisbetűs L. Ez az egyetlen
ami fölött a Enter gombot.
Így használja két ilyen szimbolizálja logikus és logikai Or.
>> Tehát ez csak akkor igaz értéket ad vissza, ha válasz egy, kettő, három, vagy négy.
És ez csak akkor igaz értéket ad vissza, ha válasz túl van, hogy mindkét oldalon.
Tehát ez nem egy, kettő, három, vagy négy.
És ahogy akkor használható hogy egy kifejezés -
>> Ebből: vagy nulla, vagy öt.
>> JOSEPH: Zero vagy öt.
Bocsánat.
Igen, igen, igen.
OK.
És itt most, ugyanúgy, ahogy a fogja használni ezt a kifejezést, a kisebb
kifejezése oldalon egy Ha feltételes nyilatkozatot, akkor is használja a
ugyanígy, csak üzembe belsejében zárójelben az if.
Tehát ez a printf csak akkor villan, ha válasz egy, kettő, három, vagy négy.
Bármilyen kérdése ötvözi kifejezések?
>> Tehát van egy másik feltétele, konstrukció nevezünk egy if / else.
Tehát alapvetően ez most azt jelenti, OK, ha valami, amit meg akartam nézni nem volt
igaz, akkor megy a Else és végezni, hogy más intézkedés.
Tehát ebben az esetben, megkérdeztem a felhasználó számára egy egész szám.
A nullánál nagyobb egész?
Igen?
Nos, akkor felvette pozitív szám.
Ha nem, akkor meg kell volt negatív vagy nulla.
Szóval felkapott negatív szám vagy ebben az esetben nullára.
Igen.
Vagy egy nulla.
>> És akkor mi is az if / else, Ha és más.
Tehát ez lehetővé teszi számunkra, végre egy sorozat dolgok, csak akkor, ha az elsők nem.
Tehát ebben az esetben, most tesszük az utolsó felveszi nulla.
Tehát, ha nem vette a pozitív, sem negatív szám, akkor meg kell
választhatott volna nulla.
Így csak megy le a lánc, mint ez.
>> Így egy példa arra, hogy egy Ha eltér -
az if / else eltér csak egy sorozatot az IFS.
És ez egy gyakori kérdés, hogy az emberek azt kérdezik, nos, ha kap, mint egy
95 CS50, mi lesz ennek a programot mondani?
>> SPEAKER 5.: Van egy A.
>> JOSEPH: Igen.
Megvan minden egyes egyike azoknak a jobbra.
Van egy A, van egy B, akkor Van egy C és D, igaz?
Tehát mindezen kap értékelt érdekében.
Tehát, míg a 95 nagyobb, mint 90, ez is nagyobb, mint 80, ez is
nagyobb, mint 70, és ez szintén nagyobb, mint a 60.
Szóval van az összes ilyen fokozat.
És feltételezem, lenne csak szeretné, hogy az A.
>> Az út-hoz erősít, hogy a helyére lép, azokat, Else / Ha 's.
Tehát ebben az esetben, azt látja, hogy 95 nagyobb, mint 90, és akkor nem
Nem értékelik a többi A nyilatkozatok.
Bármilyen kérdése erről?
>> Tehát van egy másik feltétele a fajta szerkezet, hogy mi van itt, amit
hívja a switch utasítás.
Tehát ez lehetővé teszi, hogy alapvetően ellenőrizni mi az értéke egy szám teszel
a switch utasítás.
Tehát ebben az esetben, mi kapcsolási n, és azt mondjuk, ó, ha n
az egyik, majd nyomtassa ki a nyilatkozatot.
Aztán szünet, ami azt jelenti, exit ki a switch.
>> Ha ez nem az, akkor, nos, csak végül ellenőrizni minden ilyen esetben.
És ez így ellenőrzi, hogy egy vagy két vagy három, és kinyomtatja kell.
És mi ez az alapértelmezett kulcsszó itt azt jelenti, hogy ha nem volt meg minden
ilyen, akkor mondd Invalid.
Tehát mondjuk kérek n és a felhasználó ad nekem négy.
Nos, ez megegyezik sem azokat az eseteket, így kiírja, mi van a
default szakasz.
Igen, a kérdés?
>> SPEAKER 5. Lehet használni logikai kifejezések helyett
egy, kettő, vagy három?
>> JOSEPH: Tehát a kérdés lehet használni Logikai kifejezések egy helyett,
kettő, három?
És a C-ben, azt hiszem, Ezt nem teheti.
De más nyelven, amely lehet, hogy találkozás a végén a
félévben, mint a JavaScript, akkor.
Nos, akkor kell, hogy számolja az első ez az érték, majd használja a
kapcsoló nyilatkozatot.
Igen?
>> Ebből: Így része javára kapcsoló kimutatásokban gondolok, ha nem ezt a
mint az if / else, tehát például ha n értéke X egy vagy bármi.
Else / Ha n értéke egyenlő kettő, mindegy.
Else / Ha n értéke egyenlő három.
Így, ahogy a program fut ez lenne egymás után megy le a listát
és ellenőrizze, n egy?
Nem.
N kettő?
Nem.
N három?
Igen.
Tedd ezt.
>> Mivel kapcsolóval kimutatásokat, ez valóban képes fordítani, hogy legyen
nagyon gyorsan.
És amint azt mondja kapcsolóval, azt mondja, minden rendben, n két, az vagyok
azonnal fog ugrani, ahol Én kéne kezdeni végrehajtása.
Nem fogok először ellenőrzi, n az egyik, n kettő?
Ez azonnal kezdeni ezzel mit kéne csinálni.
>> És mivel az, hogy nem tud hogy logikai feltételeket.
Vagy azt kellett volna tennie a szekvenciális, mint rendben, n
nagyobb, mint nulla?
Else n nagyobb, mint 10, vagy bármi.
>> JOSEPH: Ebben az esetben, ha a felhasznált Ha a / más, ha az, akkor a kapcsolót lenne
fuss körülbelül háromszor gyorsabb, mint az If / Else, ha.
Tudjuk szervezni a kapcsoló az ilyen oly módon, hogy nem törik
után minden egyes esetben.
Tehát ebben az esetben, én partíciózását számokat, hogy úgy döntünk, egy-és
kettő nem nagy számban, és három, hogy egy nagy szám.
>> Tehát ebben az esetben, ha n értéke egy vagy kettő, akkor majd nyomja meg az ügyet, és akkor lesz
esik át, mert a nincs szünet.
És ez lesz a vége itt.
Tehát, ha választ egyet, akkor nem a printf majd a szünet, hogy egyetlen
ez végre.
És persze, ha belépnek a három vagy valami más, akkor hagyja
azokat, és nem megy oda, és végrehajtja helyette a
a megfelelő sorban.
Vannak-e olyan kérdések, hogy?
Igen?
>> SPEAKER 4: Szeretne kap egy hiba, ha volt egy szünet után, ha az egyik, de
nem volt valami, hogy ezt?
>> JOSEPH: Tehát a kérdés az lenne, hogy kap Hibát jelent, ha van egy szünet után
Ha az egyik, de nincs mit tenni?
És a válasz: nem.
Ön ténylegesen nem kap egy hiba.
Igen, mm hmm.
>> Szóval mint egyfajta kis változás van, Megyek, hogy egy printf itt.
Hoppá.
Szóval mi lenne ez nyomtatni, ha Tettem egyet bemeneti?
Igen.
Ez azt mondani, hogy nem vette nagy száma kétszer, igaz?
Mert sújtaná, hogy az első esetben, akkor nem törik, és ez csökken
keresztül, hogy a második esetben.
Bármilyen kérdése erről?
>> Ebből: Volt egy másik kérdésed?
>> JOSEPH: OK, nyugi.
Rendben van.
Tehát van még valami, nevezzük a hármas operátor, amely alapvetően egy
alternatív szintaxis csinál Ha majd mást.
És ez lehetővé teszi, hogy mindezt egy sorban.
Tehát ebben a különleges programban, Kérek a felhasználó n.
És ha n nagyobb, mint a 100, azt mondom nekik, hogy felvette a nagy számban.
Különben elmondom nekik, hogy szedett száma alacsony.
>> Így tudjuk használni ezt a nagyon hosszú szintaxis, húr, S, és ellenőrizze, hogy n
nagyobb, mint 100, és hozzá ennek megfelelően.
De lehet, hogy ez sokkal tömörebb ezzel a hármas operátor szintaxis
amely magában foglalja a kérdés jel és a vastagbélben.
Tehát a kérdőjel lényegében feltettem egy kérdést, igaz?
>> Ebből: Lehet nagyítani rajta.
>> JOSEPH: Igen.
Jó kérdés.
Szóval ez a hármas operátor.
Először fel a kérdést, n nagyobb, mint 100?
Ha igen, akkor végrehajtja az első rész előtt a vastagbélben.
Ha nem, akkor végre a második rész után a vastagbélben.
Tehát, ha n értéke nagyobb, mint 100, akkor felveszi a magas, és teszi
hogy a sztring s.
Ha n kisebb, mint 100, akkor az alacsony felveszi majd hozza, hogy a húr s.
Ahhoz, hogy lecsapódik ez a nagy darab le, hogy csak egy sort.
>> SPEAKER 5.: Ez a népszerű?
>> JOSEPH: Igen, ez nagyon népszerű dolgokat, ahol alapvetően szeretnénk
még egy feladat alapú valamilyen feltétel.
És ebben az esetben, akartunk értéket rendelni string s.
Ez nem így van -
Azt hiszem, nem igazán kedvelik más esetekben.
De ez különösen hasznos erre a feladatra.
>> Ebből: Ez egy elég gyakori minta ahol van néhány változó
fogsz mondani, ha valami, meg Ez a változó egy értéket, más, állítsa
Ez a változó egy másik értékkel.
És ez a forgatókönyv ahol egy hármas.
>> JOSEPH: És te megtakarítás rengeteg vonal, igaz?
És ez csak teszi a kódot vitathatatlanul egy kicsit olvashatóbb.
Igen, a kérdés?
>> SPEAKER 6. Egy hármas, tudnál menni, sztring s egyenlők s, kérdőjel?
És akkor lehetett volna, mondjuk, Öt különböző lehetőségeket.
És attól függően, hogy mi a száma n volt, akkor úgy dönt, egy ilyen?
>> JOSEPH: Tehát a kérdés az, van-e egyfajta szintaxis ahol meg tudod csinálni szöveg
s értéke n, majd több mint két lehetőségek után kérdőjel?
És egy egyszerű válasz: nem, ott nem tényleg egy jó módja, hogy ha
beágyazni kívánt több hármas üzemeltetői belsejében egymást.
>> Lehet csinálni, mint n nagyobb, mint 100, kérdőjel, majd egy másik
háromkomponensű üzemeltető-, n nagyobb, mint 50, kérdőjel, és fészket ez így.
De abban az esetben, a kódex hogy milyen olvashatatlan és piszkos,
és lehet, hogy jobb, ha csak megy a az if / else utasítással ezen a ponton.
>> Ebből: És azt is, mint Mellékesen jegyzem meg, PHP helytelenül végrehajtja a hármas
üzemeltető, hogy beágyazott ternaries nem is működik, ahogy kellene.
>> JOSEPH: Igen.
Így lesz egy kicsit zavaró, különösen akkor, ha megy
a különböző nyelvek.
>> Ebből: Ez zavaró elég, nyelvek baj vele.
>> JOSEPH: Tehát tulajdonképpen, csak hogy tisztázzuk, nem mindenki tudja, hogy ez mit
% S nem itt?
Bármilyen kérdése erről?
Azt hiszem, csak a kamera, a% s alapvetően lehetővé teszi számunkra, hogy egy helykitöltő
a húr.
És akkor a végén, azt adja meg, hogy a változót szeretnénk helyezni ezt a
hely tulajdonosa s.
Tehát, hogy alapvetően vesz s és azt mondja itt.
És akkor kiírja, Ön által választott a magas, vagy az Ön által választott száma alacsony.
OK.
>> Tehát hurkok lehetővé teszik, hogy végre a dolgokat körkörös mozdulatokkal, ugye?
Lehet, hogy felmerült ez a Scratch formájában Forever hurkok
vagy ismételjük, amíg az Ismétlés adott számú alkalommal.
Miért jó ez nekünk?
Nos, a C, mondjuk itt van ez dal végre Scratch, hogy
énekel, ez a dal hogy soha nem ér véget.
Csak megy tovább és tovább, és örökké és örökké.
Nos, nem igazán, hogy a programot hogy van egy végtelen számú printf
kimutatások, igaz?
>> Szóval, ebben a konkrét esetben, az egyik módja hogy meg tudná tenni ezt a munkát, és
annak érdekében, hogy nyomtatni örökre, hogy ehelyett egy While ciklus.
Tehát a While ciklus végrehajtja mi a szervezetben a két kapcsos zárójelek,
tartozik, hogy az alapján, amit a feltétel.
Tehát ebben a konkrét példában korábban, ha szeretnénk nyomtatni ezt örökké, milyen
Lehet, hogy mi?
Nos, persze, nem igaz?
>> Tehát ez a fajta ötvözi az ötlet néhány logikai kifejezés
együtt egy hurkot.
És tanultunk logikai kifejezések korábban.
Tehát, ha a feltétel belsejében hogy míg igaz marad, ez a hurok
majd végre, és így tovább.
És ebben az esetben, ha csak a kínálat, valódi, ez okozza a végtelen
hurok, amely kiírja a dal, és a és ahogy szükséges, mielőtt nélkül
miután egy programot, amely végtelen száma printf nyilatkozatok, amely
nem lehetséges.
>> Tehát még feltűnően, bár, akkor használja ezt a
változó és feltétele.
Tehát mondjuk szeretnénk megismételni a kifejezés teljesen ütődött, 10-szer.
Szóval, mit lehet csinálni a while ciklus akkor először inicializálni a számláló
kívül a változó Míg a hurok 10-ig.
És akkor tulajdonképpen, minden alkalommal, amikor keresztül a while ciklus, hogy nyomtassa ki
a nyilatkozat és akkor csökken a számláló változó, amíg a végén,
egy bizonyos ponton, ha egyszer kivonni azt elég alkalommal, 1 I elégszer -
és csak hogy tisztázzuk, én mínusz mínusz azt jelenti, hogy egyenlő én mínusz 1.
>> Ez alapvetően azt hozza le a pont, ahol egyszer elütöttem nulla, ez a
feltétel már nem igaz, és így kilép a körből.
Tehát teljesen ütődött csak kiírja 10-szer.
Bármilyen kérdése van a While ciklus?
OK.
>> Tehát van egy módja, amit tehetünk, amit csak tette tömörebb módon
hívjuk a hurok.
Tehát egy hurok áll egy inicializálás, a feltétel, és
frissítést, mint a miénk volt ebben a While ciklus.
Szóval vessünk egy pillantást.
Ebben a While ciklus, volt egy inicializálás, akkor volt egy
feltétellel, hogy megnéztük.
Aztán volt egy frissítést lépés a tetején.
>> A hurok, ez alapvetően vesz ezt a három dolgot, és lecsapódik azt
le egy sort.
Tehát az első dolog, hogy ez a A hurok az inicializálás.
És akkor te egy pontosvessző, majd te a feltétel, amely azt
nagyobb, mint nulla megy oda, majd a frissítés lépést.
Szóval ez lesz elvégezni a legvégén a ciklus.
Tehát ez a két program lényegében azonos.
>> Bármilyen kérdése?
Tehát mi egy különbséggel a kettő között?
Tud valaki pont ez ki?
Lehet, hogy egy kicsit finomabb.
Ez csak egy nagyon kicsi a különbség.
Igen?
>> SPEAKER 5: Azt nem tudja használni Az I változó kívül a hurok
[Nem hallható]?
>> JOSEPH: Pontosan.
Tehát ez az, amit mi lesz az későbbi nevén változókat.
De alapvetően, ez int i életét kívül ez a While ciklus.
Tehát ha ez while ciklus történik végrehajtása, fogom tudni használni Később
be a programban.
>> Mivel ezzel a hurok, ez int én A távcsöves belsejében ez a for ciklus.
És mert ez a rész belsejében A hurok, hogy indul
A zárójelek és végződik A kapcsos zárójel ott.
Bármi, ami deklarált belsejében Az itt kívül nem használható.
Tehát, ha megpróbálom használni azt azon kívül, akkor az mondd meg, a be nem jelentett szimbólum.
És alapvetően, én nem tudja használni.
>> Ebből: És hát, 10 évvel ezelőtt, a szó szoros értelmében minden esetben, zárójelek
mit meghatározásához használt hatálya változó.
Tehát ott, int i = 10 nyilvánítják belsejében ennek
be a kapcsos zárójelek.
És akkor mindaddig, amíg megpróbálja használni azt mielőtt ez a zárójel, minden rendben.
Lehet látni, ha beírja csinál, akkor lásd kötőjel, kötőjel, std, egyenlő, C99.
>> Szóval ez egy újabb verzióját C, hogy GCC hajtott végre, amely szintén ad
a parancsikon.
Tehát ez használt nem engedélyezettek a C és láthatjuk, hogy miért, mert ez az int
Én kívül ennek a zárójel, de ez még mindig úgy, hogy a
hatálya Ezek kapcsos zárójelek.
De ez egy nagyon kényelmes dolog, és így ez egy jó kiterjesztése.
>> JOSEPH: További kérdések?
OK.
Szóval mi a hasznosabb, hogy néha szeretnénk egyfajta dinamizmus
A loop, nem igaz?
Nem akarod, hogy csak a feltétlenül nyomtatni teljesen ütődött minden alkalommal, akkor
szeretné számolni le 10 vagy valami.
És így használhatja a számláló változót hogy a hurok belsejében is.
És ebben az esetben, ez a program csak visszaszámol 10-től egészen.
És mit nem nyomtat?
Nem nyomtat nulla, jobb, mert amikor -
Igen, ez is nem nyomtat 11.
>> Tehát ez nem nyomtat nulla, mert amikor Én nulla, ne feledd, hogy értékeli
a feltétellel, mielőtt megy végrehajtani a ciklus.
És amikor nulla, ez hamis, így a nem nyomtat ki visszaszámlálás
nulla, csak kiírja számlálás lefelé 10 egészen 1-re.
Ha tényleg azt akarta, hogy nyomtatni nulla, akkor mi lenne véget egyenlőségjel
Ezt követően nagyobb jel.
OK.
>> Tehát az egyik módja annak, hogy beviteli ellenőrzés, amely , amikor kéri, hogy a felhasználó számára nem
valamit, akkor biztos akar lenni abban, hogy kövesse az utasításokat, hogy használja
a while ciklus, nem igaz?
Tehát ebben az esetben, azt kérdezem pozitív számot, majd én
vár bemenet.
>> Aztán megnéztem Míg a bemenet nullánál kisebb, folyamatosan azt kérdezi őket.
Tehát mindaddig, amíg adjon nekem egy számot , ami nem pozitív, folyamatosan azt kérdezi,
folyamatosan azt kérdezi, folyamatosan azt kérdezi.
De mi van valami furcsa ebben?
Vagy mi nem tűnik optimális a Ez a szerkezet itt?
Valaki?
Igen?
>> SPEAKER 6.: Te ismétlődő az utasítást kétszer.
>> JOSEPH: Így van.
Tehát két printf nyilatkozatok itt, ugye?
Tehát van egy módja, tudtuk, hogy ez csak le az egyik, hogy az lenne a
kód könnyebben olvasható, és a kicsit tiszta.
És akkor nem kell is kap kétszer is.
És egyik módja lehet ennek az, segítségével Do-While ciklus.
>> És egy Do-while ciklus alapvetően egy más formában a While ciklus, ahol a
bármi is van a kapcsos zárójelek kerül végrehajtásra, legalább egyszer.
Tehát itt, kijelentem, int input kívül először.
És akkor én csak azt mondom, ezt utasítás míg a bemenet
kisebb, mint nulla.
Így eléri a Do először.
Ez mindig végrehajtja ezt legalább egyszer, így mindig megkérdezi a felhasználót
a bemeneti legalább egyszer.
És akkor úgy értékeli, hogy az input, és megy egy kört.
Igen, a kérdés?
>> SPEAKER 6.: Van úgy, hogy csináld [Hallhatatlan] típusok, mint ha azt mondod,
GetString, és valaki [nem hallható]
van egy módja annak, hogy [nem hallható]
>> JOSEPH: Tehát a kérdés az, van-e módja input érvényesítés, ha a felhasználó
nem tesz a megfelelő típusú változó?
Tehát, ha azt kérdezzük egy int, és nekünk a szöveghez.
És a funkciókat, amit végre az Ön számára, getInt, getString egész
azok a funkciók, valójában már Ehhez a fajta alaptípus bemenet
érvényesítés a motorháztető alatt.
Tehát, ha használja a funkciót, hogy adta meg, akkor nem igazán kell.
>> De ha azt akarjuk, hogy inkább, hogyan akkor valóban csinálni, akkor nézd
a motorháztető alatt, a fájl I/O--
nem fájl, a standard I / O funkciók mint olvasni a standard input és
szabványos kimenet.
És akkor kap egy jobb értelemben arra, hogyan lehet csinálni.
>> ROB: Az egyik kérdés, mégis, kifejezetten azzal a példa
azt mondta, vársz egy string és én meg egy int.
Hogyan megmondani a különbséget között szándékosan akar a
karakterlánc 123 szemben akarják a int 123?
Tehát húr, ez nagyjából nincs érvényesítés, ez csak, amit csak
be fogja értelmezni mint a húr.
>> Int könnyebb, mert nem számít, a input vegye a felhasználó, akkor
mindig vesz egy húr.
És így, hogy a húr lehet majd ellenőrizze, mind ezeknek
valójában numerikus számjegy?
>> JOSEPH: OK.
Bármilyen kérdése van a do-while hurok?
>> Ebből: Ja, és ez is -
megy vissza körét, egy kissé a közös hiba próbálja használni néhány helyi
változót ezen belül Do-közben hurok belsejében ezt a feltételt.
És valóban, ha csak megszabadultak ezt, és azt mondta, int bemenet értéke
GetInt, akkor a fordító kiabálj minket, mert be nem létezik
kívül hatálya alá Ezek kapcsos zárójelek.
>> JOSEPH: És ezért kell ez a felállás itt.
OK.
Így is kitörni a ciklus elején, ha akarsz.
Tehát ez egy másik módja végrehajtásáról, amit most végre.
És használata helyett a feltétel a zárójelben, mi használ egy
Ha az utasítás a belsejében a test A Do-While ciklus.
>> És tulajdonképpen, ha a bemeneti végül nullánál nagyobb, fogunk
kitörni a hurok.
És így megy minden idáig.
És láthatjuk, hogy ez valószínűleg előnyös lehet ebben a
esetben, mert ez egy kicsit bit tisztább és egy kicsit
kicsit könnyebben olvasható.
Mivel ez, a fajta extra vonalak is.
Csak egy kicsit csúnyább, Azt hiszem, bizonyos értelemben.
Igen, a kérdés?
>> SPEAKER 4: megtöri csak kap téged egy készlet fogszabályozó?
>> JOSEPH: Így van.
Tehát a kérdés az lesz szünet csak menjetek ki az egyik hurok?
És a válasz: igen.
Tehát, ha a beágyazott A hurkok, a Például, ha van Mert int i értéke 0
10-ig, és majd int J értéke 0 10-ig, ha kitörni a belső
loop, én is menni a külső hurok.
Így ez lesz tartani végző műveleteket a külső.
Bármilyen kérdése erről?
Igen?
>> SPEAKER 5. De szünet csak akkor működik, A kapcsos zárójelek között, nem más
állításokkal?
[Nem hallható]
>> JOSEPH: Tehát a kérdés megtöri egyetlen funkciója a hurkok, szemben a
Más nyilatkozatok, mint ha?
És igen, ez a helyzet, mert akkor kitört a hurok, jobb,
bizonyos értelemben.
>> ROB: Az esetek túlnyomó többségében, ez ez az a fajta Ha valami,
majd a szünet.
Szóval nem kell törni kell alkalmazni Ha ez a csomagolópapír körül.
És azt is, hogy ez nem sok egy hurok, de ne feledje, hogy a kapcsolók is
tört ki a szünetekkel.
Láttuk szünetek használt kapcsolók előtt.
>> JOSEPH: És azt is használja őket A Míg a hurkok és hurkok.
Bármilyen kérdése?
OK.
Így a következő up funkciókat.
Szóval, lehet, hogy használt egy ilyen BYOB blokkok a Scratch projekt.
És ez alapvetően lehetővé teszi Ön határozza meg a sor
utasításokat kell követni.
>> És mit jelent az, hogy gondolkodjunk vissza a matek, igaz, algebra.
Van, amit úgy hívunk függvényében x, Néhány változó, és mondjuk ezt
függvény f az x értéke x plusz 5.
Szóval lehet gondolni f x, mint a fekete doboz, amely tart 15, majd a
termel 20.
>> Így általában, a funkció valami, ami némi bemenet és
Ezután némi kimenet.
És miért olyan funkciók, jó?
Ők jó több okból.
Tehát nem, hogy valaki szeretné, hogy a stab , milyen szervezet jelent?
Ami a miért funkció hasznos?
Igen?
>> SPEAKER 4: Lehetővé teszi a kód is olvasható.
>> JOSEPH: Így van.
Tehát az egyik dolog, ez teszi a kód is olvasható, igaz?
Ahelyett, hogy például int x értéke x szor x idő x, tudok kocka x,
ami több, olvasható és Érthető, hogy egy olvasó.
>> Szervezet szempontjából is felosztását a kódot könnyen kezelhető
részeket, így ahelyett, hogy végrehajtja-e ezt minden egy hosszú szakasz
A fő, akkor egyfajta osztott fel be, mint, OK, írjunk egy függvényt
Cube valamit, hadd levelet funkció tér valamit.
Így lehet vágd szét apró, kis alkatrészeket, ha meg tudják oldani
szemben próbálják kezelni egy nagy probléma egyszerre.
>> Ebből: Vagy még apró kis részeket Ön és a partnere is kezelni.
>> JOSEPH: Igen.
>> Ebből: Tehát ahelyett, hogy mindkét akarsz implantátum egy
működhet egyidejűleg.
>> JOSEPH: Egyszerűsítés.
Bárki, aki szeretné, hogy egy kitalálni?
Igen?
>> SPEAKER 5: több ismétlés.
>> JOSEPH: Így van.
Tehát az egyik dolog, amit tehetünk egyszerűsítés, hogy ez a fajta a
Hasonlóképpen, mint újra-használhatóság az, hogy a egyszer írok egy kocka funkció tudok
csak használja, hogy újra és újra és újra ismét az én program helyett a gépelés
x-szer x idő x át, és újra és újra.
És az egyszerűsítés itt is csak azt jelenti, hogy teszi a kódot fajta
könnyebb a hibakeresés, ha szét ezt fel a funkciókat.
Mert akkor lehet lokalizálni, ahol problémákra a fajta vagy.
Bármilyen kérdése?
>> Tehát egy másik ötlet is absztrakció, nem igaz?
Ez a fekete doboz.
Mint tudod, mit csinál getInt fogadására input a felhasználó?
Még nem igazán mondtam, ugye?
Minden, amit már elmondtam, getInt nem pontosan mit azt mondja, hogy igen.
Tehát akkor is, ha nem tudom mondani, mennyire működik, akkor is tudod.
>> Tehát ebben a konkrét esetben ez négyszeres funkció, amely nem
különböző dolgokat bemeneti , hogy készítsen egy kimenetet.
És akkor négyszeres a szám szorozni néggyel.
Vagy tudod mit nevezünk bit műszak két.
És fogjuk fedezni ezt Egy kicsit később.
És nem kell tudni, hogy ez funkció tényleg működik, amíg
működik, ahogy.
>> Így a motorháztető alatt, tudtam, hogy mint vissza input alkalommal
nyolc osztva kettővel.
És nem tudom, nem igaz?
Mindössze annyit kell tudni, azt teszi, amit mond.
Szóval ez a hasznos dolog a absztrakció.
>> És még egy dolog, van valami az ötlet A honosítása a kódot egy
adott szakaszt.
Tehát ha van egy probléma, akkor nem kell menni az egész a kódot próbál
kijavítani, ahol a probléma volt.
Tehát ebben az esetben, azt végre CUBE rossz.
Azt hittem, kocka szorozni három.
>> Tehát ebben az esetben, ez egy program hogy csak a szorozva három
mindenhol.
És van egy másik program, amely Faktorált kocka ki a funkciót.
És most, ha azt akarjuk, hogy meghatározza a hibát Itt azt kell rögzíteni minden egyes sort
kód ebben a programban.
Mivel másrészt, ha azt használja a funkció, csak meg kell változtatni
mi volt a baj egy helyen.
>> Így a számítástechnika, akkor hívás bemenetek és kimenetek.
Bemenetek paramétereknek nevezzük, vagy érvek és kimenetek nevezik
vissza értéket.
És látni fogjuk, hogy ez segít a fajta Az meg egy függvényt a második.
Tehát ez egy olyan funkció definíció a kocka.
Tehát vesz egy bemeneti, majd visszatér ez a szám szor
maga háromszor.
Tehát Nézzük ezt meg.
>> Tehát van egy függvény fejléc, amely alapvetően három dolgot.
Tehát a paramétereket, melyek vagy, ahogy már mondtam, a
bemenet be ezt a funkciót.
És akkor hogy a függvény egy nevet.
Ebben az esetben, úgy hívják kocka.
És akkor adja meg, milyen típusú A visszatérési érték.
>> Tehát ebben az esetben, a kocka funkció vesz egy egész szám, és ez is
vissza az egész.
Tehát, ha elmegyek, két, két egész szám, visszatér nyolc nekem, ami
egy egész szám.
Tehát vissza típusnév paramétereket.
Kérdése van ez?
>> És akkor a visszatérési érték valójában meg a végén, mondván visszatérés
, majd a visszatérő bármi tartalmazza a visszatérési érték.
Tehát ebben az esetben, ha helyezzük az egészet együtt, a függvény a
paraméterek, úgy hívják valamit, és ad vissza valamit, az a típus,
hogy azt mondják, hogy volt, lesz.
Bármilyen kérdése?
>> Szóval hogyan használjuk a funkciót?
Nos, írunk egy függvényt, majd a használjuk a programunkban, nem igaz?
Szóval nevezte kocka, és a akkor tudom használni kocka.
>> De ami fontos megjegyezni, az, hogy a rend számít.
Ha van kocka alatt fő, ez majd befut kocka.
És ezen a ponton, nincs semmi az úgynevezett kocka a programban, és ez
csak lesz mint én fogalmam sincs, mi kocka.
>> Így megmondja, implicit nyilatkozat funkciót.
Ez az a hiba, hogy megjelenik.
És így ebben az esetben, kocka alatt van fő, így nem fog
tudni róla.
>> SPEAKER 5: Tehát fő általában az utolsó pont meghatározása?
>> JOSEPH: Tehát a kérdés az, a fő általában az utolsó
dolog, azt határozza meg?
És nem.
Ez azért van, mert azt általában szeretem fő hogy a csúcson, nem igaz?
Mert ez az első dolog, amit szeretné, hogy a programozó megnyitja a
programot látni.
És hogyan oldja meg ezt a kérdést a mi szeretné, fő, hogy a tetején, de a
funkciók, amit akarunk, azt szeretnénk, hogy az alábbi fő még tudja használni
be őket a legfontosabb?
>> Nos, használjuk hívjuk függvény prototípus.
Tehát mi a függvény prototípus lényegében A nem először vesz igénybe, milyen
az aláírás, vagy a funkció fejléc Az, hogy mit akarunk végrehajtani le
itt, és rakjuk a A tetején egy programot.
>> Tehát ebben az esetben, azt mondjuk, hogy, jól, később a programban, megyünk
, hogy egy ígéretet, hogy végrehajtja-e ezt nevű függvényt int kocka, amely úgy
egy egész input.
Tehát most, mert ez a fenti fő, fő, ez fogja mondani, ó, nos,
később a programban, ami lesz ott így is hivatkoznak rá, úgyhogy
csak hagyjuk, hogy menjen át most.
>> Aztán az alján, mi végre kocka.
És akkor fő is csak azt mondom, Nos, ez a fajta kapcsolat
E két szimbólum együtt.
És fogjuk fedezni, hogy mi jelent a későbbiekben.
És ez így tudni fogja, hogy ez a kocka funkció kellene használni.
>> Ebből: A [Nem hallható] a hiányzó Fő az alján vagy a
felső, láttam mindkettőt.
Vannak dolgok, csakúgy, mint , hogy fő az alján.
De ha egyszer a projekt lesz, különösen nagy, általában fő van a
fájl minden saját.
És ezen a ponton, mint a int kocka vonal lenne -
belsejében stdio.h egy csomó sorok csak úgy int
kocka int beviteli sor.
>> És ezek prototípusok dolgot hajlamosak helyezni header fájlok, a
a ponton, ez nem számít.
Nos, ez nem számít.
Azok mindig megy a tetején.
És ha fő nem fájl minden saját, akkor nem kell aggódnia, üzembe
egyéni függvények prototípusai a fájlban.
>> JOSEPH: És mi lesz az, hogy egy kicsit kicsit később, amikor Rob elkezd beszélni
a fordítás.
És van még egy különbség között paramétert és érvelés.
És a paraméter csak mi nevezzük ezeket a bemeneteket, amikor
mi határozza meg a funkciót.
És hívjuk érv, amikor ténylegesen át azt a funkciót.
>> Tehát ebben az esetben ez egy olyan paraméter, ahogy korábban mondtam.
És ha tényleg használni ott, kocka x, akkor x maga
hívjuk érv A funkció kocka.
>> Ebből: Tehát paraméter érvelése -
itt van ez a különbség, nagyon zavarba szinonimaként.
Ezen a ponton, nekem, ez olyan, mint egy azokat a szavakat, hogy amikor látom, hogy ki a
a vad, nem tudok segíteni, de azonnal kérdésre, hogy használja azt a
összefüggésben a helyes, mivel a különbség minimális ahhoz, hogy csak
Mindenki hajlamos -
Én szinte mindig azt mondják, az érvelés függetlenül attól, hogy mire gondolok.
>> JOSEPH: és funkciók is hasznosak az úgynevezett mellékhatásai.
Így a funkció nem tesz bemenet, és ez is termelnek kimenet.
Tehát ebben az esetben, én vagyok meghatározása szubrutin, amelynek nincs
vissza értéket.
És annak érdekében, hogy meghatározza, hogy az általunk használt hívjuk üres itt.
És így a mellékhatása ez a funkció az, hogy ez csak kiírja dolgokat
ki az oldalra.
Ez valójában nem vállal semmilyen bemenet, és ez nem
valójában semmilyen kimenet.
>> De ez hasznos lehet abban az értelemben, ha azt szeretné, hogy, például, hibakeresés
valamit a programban, ha azt szeretnénk, írni egy kis szubrutint, amely
írja ki, mondjuk, a tartalom memória vagy valami.
És így ezek a mellékhatások néha hasznos keretén kívül
csak, mint be-és kimenetek.
Bármilyen kérdése?
>> És a végére az adott szegmensben, Mit is jelent ez a program nem?
Adok nektek egy pár másodperc, hogy olvassa el azt.
Egy nagyon alap szinten, amit akarunk azt mondják, hogy felcseréli x és y, igaz?
>> Szóval, hogy sokan tényleg azt hiszed, ez cserélni x és y?
Emelje fel a kezét.
Senki.
OK.
Aki azt gondolja, hogy majd Nem cserélni x és y?
És az összeg volt nem az egész szobát.
Tehát egyes emberek nem biztos.
OK.
Ez ésszerű.
>> Akkor menjünk át, mi történik, ha ha valóban hívja funkciókat először
Ahhoz, hogy válaszolni erre a kérdésre.
Tehát ez az, amit a memória valami úgy néz ki, mint a.
Ez a fajta, mint egy egyszerűsített modell Az, hogy milyen memória néz ki, ha
futtatja a programot.
Szóval, van valami neve A verem le ide, és
úgynevezett a kupac.
És ezek a nő felé közepén memóriát.
>> Tehát ebben a konkrét esetben, amikor hívja a függvényt, akkor
kerül fel a verem.
És akkor bármi benne van, hogy az funkció marad nevezzük, hogy
függvény stack frame.
És így, hogy egy szép megjelenítését Ennek let's - például, mi volt a
a program fő korábban.
És a belső fő, hívtuk kocka.
Tehát legfontosabb először megy a stack keret, mert ez az első funkció
hogy hívják.
>> És amikor kocka hívják belsejében fő, nem lesz fel a tetején a fő
belső memória.
Tehát mi észre fogod venni, az, hogy kocka megvan a saját paramétereit és annak
saját helyiek.
Tehát, ha valóban át valamit egy funkciót, hogy a paramétereket
lesz másolatai, hogy mi volt telt el a fő.
>> És egyfajta megmagyarázni ezt, nézzük séta a programot.
Tehát a verem, ez csak a stack része.
És mit teszünk először inicializálni x és y egy és kettő.
Tehát ezeket a kis dobozokat.
Ők ülnek a fő a stack keret a verem.
Ezek tartalmaznak egy és kettő.
>> Most hívjuk csere.
Mi történik, átadjuk x és y-ba csere, és swap létrehozza a saját példányát
az azokat a változókat használni benne a verem keret.
Tehát most ott van egy, amely tartalmazza azt az értéket, hogy x volt, és b,
amely tartalmazza azt az értéket, hogy y volt.
Tehát egy, kettő.
>> És észre fogod venni, hogy ez a külön az x és y belsejében fő.
Tehát most létre egy ideiglenes változót tartalmaz.
Mi meg a egyenlő b, ​​tehát változások egy vagy két.
És akkor mi meg b egyenlő a hőmérséklet, ami az egyik.
>> És akkor most lépjen ki A funkció.
Amikor kilép ki a funkciót, a stack frame lesz bukkant ki a verem.
Mi ezt tolja.
Megnyomja a verem keret a verembe és pop, ha ki a verem.
És mi történik, mindent, ami volt, hogy a verem keret fajta csak
megy fel a lángok.
És így, hogy már nem létezik.
>> De mit észre?
Mi soha nem változott a értékei x és y, igaz?
Tehát azok maradtak a helyi a fő.
És múló dolgokat csere, akkor valójában nem változott ezeket az értékeket.
És mit hívjuk ezt?
Hívjuk ezt elhaladó értéket.
>> Tehát a C, mikor át dolgokat funkciót, akkor elmegy, mellettük érték és
másolatot készít nekik funkció használható.
És megtudjuk, úgynevezett elhaladó későbbi, de ez
módon meg lehet oldani ezt a problémát.
De nem kell aggódnia hogy csak később.
>> Ebből: És valóban, ez a kifejezés, múló hivatkozással, tehát C nem is kell
elhaladó hivatkozva.
C kizárólag a elhaladó értéket.
Nem számít, mit teszel, mindig halad egy példányát valamit.
Csak, hogy, mint azt a fajta említettem hogy mielőtt a mutatókat
és ez a szöveg tényleg csak négy bytes mutató valahol a memóriában.
>> Nos, ha van ez a szöveg, és ez azt mondja, hogy az, ahol a húr -
Nos, ha van ez a mutató erre helyezzük a memóriában, akkor én is át a
másolatot a mutató arra a funkcióra, és ez a funkció még mindig tudja, hol a
memória van.
Tehát mindkét mutató mutat ugyanarra a helyre a memóriában, és
hogy hogyan fogjuk tudni hogy módosítsa a dolgokat túl a
aktuális stack frame.
>> JOSEPH: Nem akarsz fordítás?
>> Ebből: Nem, 05:30.
>> JOSEPH: OK.
Ez 05:30.
OK.
Így fogjuk fedezni összeállítása Azt hiszem, A következő rész, vagy az a rész
vezetője, majd ezen a ponton.
És -
>> Ebből: További kérdések?
>> JOSEPH: További kérdések?
Igen?
>> SPEAKER 5: A húrok a CS50, minden funkciókat akarjuk használni
azokat, hogy lesz, mint a C függvények.
CS50 nem ment, és tett kiegészítő.
>> ROB: Helyes.
Bármelyik C, mint [nem hallható], akkor is használja ezeket a mi szálakat.
>> JOSEPH: És egy utolsó dolog, amit szeretnék megemlíteni, hogy van egy stílust útmutató
ebben az osztályban.
>> Ebből: Ó, igen.
>> JOSEPH: Tehát, ha már jön egy programozási háttér előtt, akkor
Lehet, hogy bizonyos egyezményeket, ha írsz kódot, mint amivel
zárójelek ugyanabban a sorban vagy különös módon beljebb
vagy elnevezése a változókat.
Ebben az osztályban, szeretnénk követni a speciális stílust útmutató csak azért,
jól, ha megy, és dolgozik ipar, fogsz várható
hogy kövesse a stílus vezető a társaság, amelynél mész.
>> Mint például, Facebook azt hiszem egy bizonyos fajta elnevezése
egyezmény.
És van különbség a teve burkolat változók és mint
elválasztva őket aláhúzás.
És azt is, azt hiszem, a legfontosabb, mint a például, behúzás, nem igaz?
>> Mi kapcsos zárójelek indul, ahol a a feltétel, és ők
van a következő sorban.
És mi is tesz kapcsos zárójelek a még akkor is, ha ez csak egy vonal.
És sokszor, vannak olyan módon, hogy nem hogy ahol hagyja ezeket a zárójelek
ki, ha ez csak egy vonal a Ha a nyilatkozatot.
De ebben az osztályban, szeretnénk követni a bizonyos stílust útmutató csak így kap
használják az ilyesmit.
>> Ebből: Igen, és a stílus 50 fog érvényesíteni ezt a stílust útmutató, és mi
fogja használni Stílus 50 fokozatúra a kódot.
Így megkönnyíti a dolgokat a számunkra, és remélhetőleg nem kell tenni a dolgokat, hogy
sokkal rosszabb, mivel a egységes stílus nem kell, hogy
irreális.
>> JOSEPH: És végül, hogy megtalálják a stílus útmutató megnyitásához lépjen manual.cs50.net/style.
És igen.
>> SPEAKER 4: Fogsz érvényesíteni minden karakter egy sorban?
>> ROB: Igen.
>> JOSEPH: Bocs, srácok.
>> Ebből: Ez olyan, mintha az egyik az egyetlenek.
Ezen a ponton vagyok, OK 120.
Rendben vagyok, ha azt mondom 120 karakter soronként.
Megértem, hogy néhány korlátozás.
Azt hiszem, 80 olyan kicsi, de mi betartatása.
>> JOSEPH: Személy szerint azt hiszem, C, 80 karakter inkább az OK gombra.
Ha elkezd szerzés más nyelvek, mint a JavaScript és a PHP, nem
így ésszerű, hogy csak korlátozni azt a 80 karakter.
OK.
Nos, ez volt az a szuper részben.
Akar valaki cukorkát?
>> SPEAKER 4: Igen.