>> JASON HIRSCHHORN: Welcome a hét három, mindenkinek.
Van egy elfoglalt, de izgalmas rész előttünk.
Tehát az első, mert tettünk néhány térnyerése a kurzus, de még mindig
sok tanulási maradt meg, én vagyok megmutatom nektek egyes erőforrások
hogy kell bizonyítania, hogy hihetetlenül hasznos, mivel nem csak a megközelítés a
probléma beállítja, hanem megemészteni összes az anyagot adunk srácok
előadások és rövidnadrág és a részt.
>> Ezután fogjuk tölteni az első 20 25 perces szakasz megy át
GDB, amit lehet, vagy nem lehet használnak ezen a ponton, de ez egy
hihetetlenül hasznos eszköz, amely segít hibakeresés a programokat.
Sok lehet, hogy használt printf a közepén a programot kitalálni
hogy mi a változó párja.
GDB még jobb, mint a printf és nem csavarja fel a kódot, mert
futtatni egy futtatható fájl.
Akkor megyünk át a 10 leghasznosabb parancsok, amire szükség van GDB, és mi
fog menni a gyakorlat együtt, így A probléma meg három és azon túl, akkor
Használhatja GDB, hogy segítsen hibakeresés a programokat.
És végül, fogunk menni át néhány rendezési és keresési algoritmusok
hogy látott előadás, és mi fog valójában kód, nem csak
pszeudokódját, de a kód bináris keresés, buborék sort, és a kiválasztás sort.
>> Tehát először akarok menni át a forrásokat.
Ez egy részletes listát, és ez kisebb betűkkel, mert sok volt a
elfér itt.
De ezek nem csak segít, ismét a problémát készletek és
emésztés információkat tanult, de Határozottan, gyere kvíz idő, ezek
hihetetlenül hasznos.
Tehát először a jegyzet.
Ha megy cs50.net/lectures és lapozzunk az adott héten, és nap,
látni fogod, hogy vannak olyan megjegyzésekkel előadás, amely nem csupán egy
átirat, hanem szerkesztett változata mi borította előadás kóddal
töredék és más hasznos nyalánkságokat.
Én nagyon ajánlom megy át azokat.
És akkor is, ott van a forráskód elérhető minden előadást.
És ismét, ezeket a diákat is online elérhető cs50.net/sections
ma este.
>> Tehát a második a nadrág minden héten, hogy olyan témákat, általában 5 és 15
perc hosszúságú.
És ezek remélhetőleg kapsz egy nagy alapozó különböző témákban.
Harmadik -
és ez teljesen új ez a évben - study.cs50.net.
Ha még nem ellenőrizte, hogy ki, azt Javasoljuk, hogy erre.
Kapsz, hogy válasszon egy témát.
Jelenleg több tucat téma ott.
Így például, akkor vedd funkciók.
Ez ad egy kis diák és tudomásul veszi a funkciókat.
Ezek valójában a diák, hogy a TFS arra ösztönzik, hogy közben a
előadások részben.
Van még tippek és trükkök kezelésére funkciókkal, és van
gyakorlat problémák, amelyek segítenek dolgozik funkciókat.
Azt is kapsz linkeket a rövid a funkciók és az idő, hogy a funkciók
jöttek fel az előadás.
Tehát study.cs50.net, új ez a évben egy fantasztikus erőforrás.
>> Ezután már az ember, amely a kézi parancs futtatható a
parancssorban.
Tehát, ha bármilyen kérdése van a parancsot, például a rand, amit
találkozott a múlt héten, a részben és akkor valószínűleg találkozott
A probléma meg, ha megy keresztül a generál kódot, de ha beírja az ember
rand, akkor kap az oldalon, hogy azt mondja, minden a rand.
Ez ad ön mit vesz, a paraméterek tart, valamint a visszatérő
típusa és leírása az ezt a funkciót.
>> Tehát nézd meg rand.
Ez lehet egy kicsit bőbeszédű és zavaros, így néha azt tapasztalom, hogy
Egyszerűen Googling mit akarok tudni, a legjobb módja, hogy megtalálják a választ.
Így a gyakorlatban a Google.
Get jó Google.
Ez lesz a legjobb barátod.
>> Csakúgy, mint a Google, ha nem találja meg a Google, cs50.net/discuss, ez
A vitafórum.
Esélye van, ha van egy kérdés, az egyik a 700 + többiek is, hogy
kérdés, és azt kérték már a megvitatására
fórumok és azt válaszolta.
Tehát, ha van egy közös kérdés, vagy van egy kérdés, hogy úgy gondolja
Lehet, hogy mások esetleg befut, nézd meg cs50.net/discuss.
>> Végül az utolsó két, ha azt szeretnénk, hogy beszélni egy igazi emberi lény, iroda
óra hétfőtől péntekig.
Van még online irodai óra kiterjesztése a diákok.
És végül, de nem utolsósorban, nekem, felkiáltójel.
Mindannyian van a kapcsolat.
Ha bármire szükséged van, kérlek soha habozzon kapcsolatba lépni velem.
Mindig nyugodtan erre.
Nagyon kevés a hozzáadott engem Gchat, így a kiábrándító,
de remélhetőleg ez meg fog változni között ez és a következő fejezetben.
Bármilyen kérdése eddig a forrásokat?
Remek.
>> Végül egy másik dugó visszajelzés, sayat.me/cs50.
Adhat nekem névtelen visszajelzést hogyan csinálok.
Ez nagyon hasznos, a múlt héten.
Kaptam egy pár észrevétel srácok jobb szakasz után, valamint a
másik diák, aki nézte a hét folyamán, és ez
hihetetlenül hasznos.
Én megyek, hogy megpróbálja korlátozni a használatát a "kedves", de megmutatom én
lelkesedéssel és izgalommal más módon.
De voltak más kiegészítő érdemi visszajelzések,
mind pluses és delta.
Ezért kérjük, adok nektek visszajelzést a probléma készletek.
Nyugodtan adj visszajelzést én tanítás.
Itt vagyok srácok.
>> Remek.
Ez minden, amit már a az első részben.
Van valakinek kérdése eddig?
És van egy megjegyzés az irányító központ.
Extension diákok üzenetben nekem mondván, hogy nem kapok semmilyen audio,
de ez az én hatalom rögzíteni.
Így remélhetőleg, hogy lesz oldani hamarosan.
Ha nézed az interneten, hi, de nem hallanak.
>> Tehát először fogunk hogy menjen át GDB.
GDB, ahogy utalt korábban, egy hibakereső eszköz
sokkal jobb, mint a printf.
Szóval, az induláshoz a GDB, srácok, ha meg szeretné nyitni a készülék
és megteszi a fájlt, amit e-mailben elküldjük korábban - ez a fájl is
online elérhető egy kicsit -
és fuss GDB. / a fájl nevét.
Először is, persze, meg kell fordítanod fájlt, mert GDB csak akkor működik,
futtatható fájlokat.
>> De ha valaha is szeretne kezdeni GDB, az első dolog, amit teszel,
fut GDB. / Caesar.
Szóval ez a program neve vagyunk megyek vele most.
Így fogok írni, hogy Caesar, amely ad nekem egy futtatható fájl
Itt a zöld szín jelzi.
És akkor fogok futni GDB. / Cesar.
>> És már megy is.
Látod van néhány szöveget mondja nekem a változat GDB, hogy nekem
Néhány jótállási információk, aztán hogy a GDP gyors, ami úgy néz sort
úgy, mint a parancssorból de látod, ez a nyílt
paren, GDB, közel paren.
Mielőtt folytatnánk és hibakeresés ezt a fájlt , hogy én küldtem neked is, nézzük meg
néhány hasznos parancs így van értelme hogy mit fogunk fedezni.
>> Ezek a parancsok listáját a sorrendben, én általában használja őket.
Tehát elkezdem a programot futás GBD. / Program nevét,
ebben az esetben, Cézár.
És akkor az első dolog, amit 99,9% Az idő típusú szünetet jelentenek.
Ez beállítja a töréspontot a fő.
Lényegében, mit csinálsz ott a program fog megállni
fő, így meg lehet kezdeni vizsgálja meg sorban sorra, és nem fut minden
az utat.
Lehet törni különböző pontjain a kódot, de a fő általában
jó kiindulópont lehet.
>> A következő parancs futok fut.
Ez elindítja a program fut, és ha kell meg parancssorban
érvek futtatod a parancsot.
Fuss az érveket.
Tehát, mivel mi megy át egy változata C, amely a program srácok
írt Pset két -
ez, persze, van néhány hiba benne, hogy remélhetőleg meg fogjuk találni -
fogunk futni távon néhány parancs argumentumok mert Caesar,
mint tudjátok, egy a probléma be spec, némi
parancssori paramétereket.
>> A következő néhány parancs, a következő egy valójában úgynevezett mellett.
Hogy az egyik úgy, soronként keresztül a program.
Így ütő n, majd az Entert visz a következő sorra, végrehajtása
az előző sor.
Lépés nem csak úgy, hogy a következő sorban, de a
elvisz belül funkciókat.
Tehát, ha már írt egy funkciót a kódot, vagy ha szeretné felfedezni a
i, például, akkor nyomja meg s, és nem megy, hogy a következő sorban a
fájl mész keresztül jobb Most, akkor valóban belép
ezt a funkciót, és látni a kódját.
>> List megmutatja, nagyon felhasználóbarát formátumban, a 10 vagy úgy vonalak körül
ahol jelenleg van a kódban így valóban látni a fájl
ahelyett, hogy a swap-vissza között oda különböző nézetek.
Print, mint printf, mint a neve is mutatja.
Ez azt mutatja, hogy milyen egy változó értéke.
>> Info helyiek nagyon hasznos.
Ez egy speciális változata a nyomtatás.
Info helyiek azt mutatja, hogy az összes helyi változó, kiírja őket ki az Ön számára
, amelyek jelenleg rendelkezésre állnak.
Szóval általában, ahelyett, hogy nyomtassa ki a négy változó, hogy én vagyok
kíváncsi, ha én vagyok a for ciklus, a Például, én csak annyit írj információkat helyiek,
és megmutatom, hogy mi a számlálót én értéke, valamint az, hogy a tömb én
dolgozik egyenlők.
>> Végül is.
Gépelési szünet megállít a töréspontot.
Egy séta a vonalon összhangban a következő és lépésről.
Folytatás fut a program, hogy a következő töréspontot vagy befejezéséig, ha
nincs több szünet pont.
Disable eltávolítja szünet pontot, ha úgy döntött, a szünet fő volt,
nem megfelelő, azt szeretné, hogy meg azt valahol máshol.
És végül q, kilép, kiszáll a GDB.
>> Szóval ez a program. / Caesar fogunk , hogy nézze át, és most már
fogják használni GDB találni a hibákat a programban.
Futottam a program korábban Ellenőrizze a 50, és van egy ránc.
Mindent, hogy létezik, akkor össze, azt telt sok a teszt, de
Valamilyen oknál fogva, hogy nem felelt meg az ötödik teszt fordult BARFOO, csupa nagybetűvel, a
E-D-I-U-R, R-, mind sapkák, segítségével három kulcsfontosságú.
Kaptam elég közel.
Kaptam ki egy betű.
Szóval van valami kis hiba itt.
Már néztem a kódomat.
Nem tudtam rájönni.
Remélhetőleg, ha tudtok segíteni rájönni, mi ezt a hibát is.
>> Szóval ez a hiba vagyunk keres.
Mozgás a GDB.
Megint futni GDB. / Caesar, így most vagyunk GDB.
És mi az első dolog, amit meg kell csinálni?
Már csak be GDB.
Valaki adjon nekem egy jó parancsot meg.
>> DIÁK: Szünet fő.
>> JASON HIRSCHHORN: Szünet fő.
Fantasztikus.
Nézzük írja, hogy be
Ti lehet nézni itt vagy kövesse valamint a számítógép.
Szünet fő-, és látni fogod a töréspontot határozták meg -
ez ad nekem valami furcsa memória cím, és ez is ad nekem a sor számát.
Ha én is nézz vissza ezt a fájlt, Azt is észre, hogy fő
történt line 21.
Mit kell futtatni a következő?
Az én futó program?
Nem.
Szóval mit kell futtatni a következő?
>> DIÁK: Run.
>> JASON HIRSCHHORN: Run.
Ha én csak futni futni, vagy kell Én hozzá néhány más dolog?
>> DIÁK: Fuss az érvelés.
>> JASON HIRSCHHORN: Fuss A parancs érveket.
És mivel én vagyok a hibakeresés egy nagyon konkrét esetben azt kell lépnie, hogy az
parancssori argumentum.
Szóval akkor nem fut a három, ami ismét A kimeneti kaptam Check 50.
A program indulásakor.
Átmegyünk egy pár sort.
Akkor most látni, hogy mi vagyunk line 21.
Honnan tudom, hogy mi vagyunk line 21?
Mert ha megnézzük, hogy a bal oldalon én terminál ablak, ott
azt mondja line 21.
És ez ad nekem, tényleg, a kódot, hogy a line 21.
Szóval misspoke korábban.
Főoldal valójában nem a line 21.
Main egy pár sort a fenti 21.
De line 21, ez ahol vagyunk törés.
Ez a vonal a kódot még nem teljesített.
Ez fontos.
A vonal látod még nem kivégezték még.
Ez a következő kódsort fogsz végrehajtani.
>> Így a következő sorban, ahogy vagytok valószínűleg ismeri, ez
feltétel ellenőrzi, hogy ha van Megadott egy parancssori argumentum.
És, hogy én, mi a második része, hogy van?
Mi az, hogy én?
>> DIÁK: Változó, hogy egy egész szám.
>> JASON HIRSCHHORN: Tessék?
>> DIÁK: Ez változó érv, hogy egy egész szám.
>> JASON HIRSCHHORN: Tehát egy i megváltozik arg v1 egy stringet egy egész szám.
És akkor mi is megnézni?
>> DIÁK: Ha van egy második parancssori argumentum, félre
a futó program.
>> JASON HIRSCHHORN: És mi a második felében ez a
Logikai kifejezés ellenőrzés?
Ez a rész itt, egy i?
>> DIÁK: Ha ez a negatív.
>> JASON HIRSCHHORN: gondoskodik arról, mi?
>> DIÁK: Ügyelve arra, hogy van, sőt, pozitív.
>> JASON HIRSCHHORN: Pontosan.
Ez ellenőrzi, hogy ha ez a negatív, és ha ez negatív, azt
van egy olyan érzésem, a következő sor hatalma kell nekem kiabál a felhasználó.
Szóval hit vége, hogy végre ezen a vonalon.
Nem látjuk, hogy a sort, hogy a srácok talán várható, hogy kiabál a
felhasználót, majd visszatért, mert a ez a sor nem lett végrehajtva.
Beléptem 3..
Szóval nem, sőt, meg két parancs paramétereket, és 3
nagyobb, mint nulla.
Így láttuk, hogy sorban, mi végre, de nem lépett
belül, ha a feltétel.
>> Tehát most, a következő, látom én beállítása int kulcs megegyezik egy i arg v1.
Szóval ez nekem létre egy változót gombot.
Tehát, ha azt kinyomtatni legfontosabb most, mert , amely lehetővé teszi, hogy a
érték belül változó, kulcs értéke 47..
Ez furcsa, de természetesen, azért, mert én nem
végre ezt a sort még.
Tehát most, ha elütöttem n, végre ezt a vonalat, és nem print kulcs, kulcs egyenlő lesz 3,
ami az, amit várunk, hogy egyenlő.
>> Tehát még egyszer, a GDB, a vonal lásd még nem teljesített még.
Meg kell, hogy elérje N, S vagy több Más parancsok valóban
végre ezt a sort.
Print gombot.
Key 3.
Eddig jó.
Karakterlánc sima szöveget.
Nézzük végre ezt a vonalat.
Kezdek egy stringet felhasználó.
>> Lássuk az én Check 50, azt meg BARFOO összes sapkát, így
ez az, amit majd be.
Ha már nyers szöveget nyomtatni.
Majd meglátod, hogy egyenlő egy string.
Ez ad nekem egy másik furcsa hexadecimális száma, de ez nem a
tény, azt mondják, hogy a string BARFOO.
Ha akartam, hogy mi fő megegyezett a Ezen a ponton, hogyan tudnám ellenőrizni kulcsot?
>> DIÁK: Print gombot.
>> JASON HIRSCHHORN: Nyomtatás gomb, pontosan.
És valóban, van egy parancsikont.
Ha elfárad a gépelés print, akkor csak írja p.
Tehát p kulcs nem pontosan ugyanolyan dolog.
És ismét, látom, hogy egyenlő 3.
>> Ha akartam, hogy megtudja, mi a két legfontosabb BARFOO megegyezett és ugyanabban az időben
de én fáradt gépelés minden egyet külön-külön, azt
lehetett típusú információkat helyiek.
Ez ad nekem kulcsot egyenlő 3.
Egyszerű szöveg egyenlő BARFOO.
Azt is ad nekem ez a két furcsa dolgokat a tetején, és ez az i változó
ezt a változót n.
>> Azok valóban létező az a fő programban.
Még nem találkoztam velük még, de a preview, azok
létezik a hurok.
Tehát most, akkor egyenlő furcsa számokat, mert nem volt
inicializált még, de ők továbbra is léteznek a memóriában, így ők csak meg
néhány szemetet értéket.
De azt látni kulcs egyszerű szöveg ott.
>> Így fogom végrehajtani ezt a sort, 34. sorban, a for ciklus.
Fogunk ugrani a A loop-et n.
És mi vagyunk benne a for ciklus.
Mi vagyunk az első csekket.
És ismét, ezeket a fajta nézni ismerős, mert ez volt a
Caesar programot írt, de ismét van valamilyen hiba.
>> És most, ha én információkat a helyiek, mert én vagyok belül, hogy a for ciklus, látni fogod,
hogy én nullával egyenlő, ahogy várnánk.
Ez az, amit mi meg azt, és inicializált azt, hogy a for ciklus.
n = 6.
Ez is van értelme, mert mi meg azt a strlen sima szöveget.
Szóval szeretem csinálni információkat helyiek vagy nyomtatási a változó gyakran, hogy megbizonyosodjon arról, hogy az
minden mindig, amit Arra számítok, hogy egyenlő.
Ebben az esetben, minden amit elvárják, hogy egyenlő.
>> Tehát kezdjük halad keresztül Ez a for ciklus.
A vonal vagyok a sorban 36, ha a sima i szöveg nagyobb, mint egy sima
szöveg i kisebb vagy egyenlő, mint z.
Tudom, hogy a probléma nem az első levél, ez a második betű.
Ha visszatekintünk a Check 50, B megy E finom.
Elviszem az A és az onnan azt A, nem változik meg a D. így
Valami baj van A második betű.
Így fogok mozogni ott egy másik.
>> De ha én nem akarom, hogy ellenőrizze, milyen egyszerű text én megegyezett ebben a konkrét
az esetben, azt hiszem, az, amit?
Mit kell sima szöveges Én egyenlő ebben első körben az a hurok?
>> DIÁK: Zero?
>> JASON HIRSCHHORN: Plain text I?
Így kell lennie tőke B. Én, természetesen, nullával egyenlő, de a sima szöveg
konzol nulla zárt konzol egyenlő B mert a húrok, ahogy azt a múlt héten,
a tömb, szóval kezd a első karakterét ettől.
Tehát még egyszer, ha kinyomtatható egyszerű szöveg Én, én, sőt, hogy a karakter
B. És ez szép, nem?
Én valójában nem is egyszerű szöveges I. Ez nem az egyik változót állítottam
vagy inicializált, de kinyomtathatja egy egész sereg dolgot
ha szeretne.
>> De menjünk át.
Ha sima szöveget én nagyobb, mint az A és egyszerű szöveg I-nél kisebb vagy egyenlő
Z, amely egyértelműen igaz, mert van a tőke B. fogok futni
Néhány parancs is.
Láttuk, hogy a matematika a múlt héten, így fogunk magától értetődőnek, hogy ez működik
joga szerint a Check 50.
>> Ezek a kapcsos zárójelek, az első azt mutatták, hogy én kilép a ha
állapot, a második azt mutatta , hogy én vagyok, hogy kilépne a for ciklus.
És most, amikor elütöttem Ezután fogjuk látni vagyunk vissza a for ciklus újra.
Mi megy át a for ciklus újra.
Nézzük valóban belép a második iteráció a for ciklus és típusa
Dátum helyiek.
>> Tehát mi vagyunk a második iterációs mi a hurok.
I értéke 1, amit várnánk.
N = 6, amit várunk.
Key értéke 3, amelyet várunk.
És a sima szöveg, látni fogod, egyenlő EARFOO most, sem BARFOO többé, mert
a korábbi iterációban, a B változott a főváros E. Úgyhogy mindjárt
találkozik a problémát, így ez a ahol fogunk
belevetik magukat a hibakeresés.
De vajon bárki bármilyen kérdése van, arról, hogy mit tettünk eddig?
Fantasztikus.
>> Így vagyunk, hogy végre ezt, ha állapot, egyszerű szöveges konzol Becsuktam
tartó nagyobb, mint az A és egyszerű szöveges én kevesebb vagy egyenlő, mint Z. De mielőtt
Megyek be, mert ez az, ahol Tudom, hogy hiba, szeretnék rámutatni
ki egyszerű szöveges I. Tehát mondjuk kinyomtatni.
Ez nem egyenlő a karakter egy, így a Úgy tűnik, eddig minden szép és jó.
>> Így azt várom ezt a sort én egy logika, ezt a sort, hogy igaz legyen.
Ez egy nagybetűvel.
De ha megüt n, mi észre, hogy ez vonal, valójában nem lett végrehajtva.
Ugrottam le a else if.
Miért történt ez?
>> DIÁK: Mert van az állapota sima szöveg nagyobb
mint az A, nem egyenlő vagy nagyobb, mint.
>> JASON HIRSCHHORN: Szóval volt a sima szöveg I Egy nagyobb, mint a, nem nagyobb
kisebb vagy azzal egyenlő.
Olyan tisztán, a főváros A nem kiválthatja ezt, ha a feltétel, és mi nem
ne lépjen bele, és mi nem nem a szükséges elmozdulás.
Szóval ennyi, tényleg.
Rájöttem a bug.
Mehetek vissza a forrás fájlban, változás, és frissíti azt, és
futtassa Ellenőrizze 50. újra.
>> De majd meglátjuk, csak a pedagógia a kedvéért, ha folyamatosan megy.
Az else if nem hajt végre sem, de mi, hanem egyenlő a parancs
ez nem változtat.
Tehát ez nem változott, és ha nyers szövegek nyomtatására van, majd meglátjuk lesz
ezen keresztül a hurok nem, sőt, változás, hogy a második karaktert egyáltalán.
Ez még mindig a főváros A.
>> Tehát újra, mi hibakeresés a hiba.
Rájöttünk, hogy nem volt némi logika hiányzik.
És mi kijavítottuk azt idő előtt, mielőtt tényleges végrehajtása ezt a vonalat,
de akkor észre kellett már csak hit Tovább gombra, és ugrani, else if,
azt jelenti, hogy, ha a feltétel nem volt igaz.
Nem, sőt, hogy az eredmény is várható.
Tehát akkor lehetett volna kérni, volt hogy nem volt olyan ügyes, hogy nézd meg
hogy ha a feltétel, és ellenőrizze,, sőt, a feltételt kell értékelni, hogy
igaz a jelenlegi helyzetben.
>> Ez minden, hibakereső program.
Van valakinek kérdése?
Milyen parancsot is elütöttem szokni GDB?
Kérdés: És akkor fogok kérni, kilép?
Igen vagy nem.
Én hit igen, és én is kilép GDB.
>> Szóval ez egy gyors alapozó GDB.
Valójában, egy valós forgatókönyv, Én ezt a munkaidőben.
Én GDBed pontosan ezt a programot Munkaidőben a diák.
És ha visszamegyünk a parancsok láttunk korábban használtuk szünetet fő, az első
dolog, amit csináltunk.
Használtunk távon parancssori argumentumok, a második dolog, amit csináltunk.
Használtuk mellett sokat mozogni minket vonalak.
És ismét, a rövid változat A következő n.
Ez a zárójelben szürke a dián.
>> Mi nem használjuk lépés, de nem feltétlenül kell, hogy ebben az esetben.
De lehet használni egy kicsit később ma, ha a hibakeresés, a
Például, bináris keresés során binary Keresés hívják külön
funkciót, de van Néhány hiba vele.
Fogunk szeretnénk belépni A hívás a bináris keresést, és
valójában debug meg.
Sorolja mi nem használjuk vagy azért, mert meg kellett egy jó értelemben vett a kódot, de ha
nem szeretnénk, hogy egy értelemben, hogy mit kód I körül volt, tudtam csak használni listát.
>> Print használtuk, info helyiek használtuk.
Folytatás nem kellett használni ezt a esetben sem volt meg kell használni
letiltja, de nem használja a kilép.
Ismét, ez a 10 parancsokat, gyakorolni.
Ha megérted a 10 parancsok, meg kell határozni az hibakeresési minden
probléma GDB.
>> Így vagyunk arról, hogy menjen, ismét a kritikus szakasz ma megy át
ezek a válogatás és keresés algoritmusok.
Mielőtt ezt ismét, bármilyen kérdése van, megjegyzéseket, aggodalom GDB?
Tehát mindenki fogja használni GDB helyett printf?
Tehát mindenkinek, örökre kedvéért, mindenki bólogat a fejét jobbra
Most, úgyhogy találkozunk munkaidő és az összes TFs fogja látni, és
azt mondják, mutasd meg, hogyan kell használni GDB, és akkor képes lesz arra,
mutatni nekik, nem igaz?
Valami?
Talán reménykedve.
Cool.
>> Így fogunk beköltözni válogatás és a keresést.
Látni fogod, van egy lista már rendezett nekünk, de ez nem megy
hogy a helyzet mindig.
Így a probléma meg specifikáció probléma meg három, akkor rövidnadrág
hogy meg lehet nézni, és ez valóban kéri, hogy vigyázzon ezekre a rövidnadrág.
Szintén előadás a múlt héten, átmentünk sok ilyen algoritmusok, tehát vagyok
nem fog időt osztályban folyik mint ezek az algoritmusok újra, vagy rajz
képek, hogy ezek a algoritmusok működnek.
Ismét, ez az információ akkor újra óra előadás, vagy ezt az információt
elfogták kiemelkedően a rövidnadrág ezek a keresések, az összes
amelyek rendelkezésre állnak cs50.net.
>> Tehát ahelyett, hogy mit fogunk tennie, hogy írjon ezeket a programokat.
Van értelme, a mentális modellje, hogy miként dolgoznak, és akkor mi megyünk
tennie, hogy kódot őket az igazi.
Mi fog fordulni, hogy a mentális modell azt a képet, ha úgy tetszik, a
tényleges kódot.
És ha egy kicsit zavaros, vagy ködös a mentális modell, én teljesen
megérteni.
>> Mi valójában nem fog ugrás kód azonnal.
Tehát míg ez a prompt ezen a slide kéri hogy kódot bináris keresés, és a
tulajdonképpen egy iteratív változata bináris keresés, az első dolog, amit
igazán akar, hogy nem is írni egy pszeudokódja.
Szóval van ez a mentális modell hogy hogyan bináris keresés működik.
Vegye ki a lapot, ha egy könnyen elérhető, vagy nyisson meg egy
szövegszerkesztő, és szeretném, ha mindenkit, hogy írjon.
Vegyünk négy perc alatt megírni a pszeudokódját bináris keresést.
>> Ismét gondolj, hogy a mentális modellt.
Majd magához tér, ha kérdése van és felhívni a kép ki.
De először is, mielőtt elkezdenénk programozás, Szeretnék írni a
pszeudokódját bináris keresést, így amikor merülés, van néhány irányba
ahol kellene mennünk.
>> DIÁK: tudjuk vállalja a sor értékeket kapunk már sorrendje?
>> JASON HIRSCHHORN: Tehát a bináris keresés dolgozni - jó kérdés - akkor
kell, hogy egy rendezett tömb értékeket.
Így feltételezem, hogy ez működni fog.
Majd menj vissza ezt a diát.
Látni fogod a lila funkció nyilatkozat bool binary_search int
érték, int értékeket int n.
Ez ismerős, ha már már megközelítette vagy ütött meg
keze piszkos a probléma meg.
>> De ez a függvény deklaráció.
Még egyszer, nem kell aggódnia hogy sok ebben a pillanatban.
Amit igazán akar, hogy nem az, hogy négy perc alatt pszeudokódja bináris
keresés, aztán megyünk Ez alatt az egy csoportban.
És én magához tér.
Ha kérdése van, úgy érzi, szabad, hogy emelje fel a kezét.
>> Miért nem veszel két perc befejezni a pszeudokód?
Tudom, hogy ez nevetségesnek tűnhet, hogy az költünk olyan sok időt
valamit, ami nem is valójában C, de különösen az ilyen több
kihívást algoritmusok és a probléma meghatározza, hogy mi van, hogy kitaláljuk,
kezdve pszeudokódja nem aggasztó a szintaxis, csak aggódni
A logika, hihetetlenül hasznos.
És így, akkor nem oldja meg a két Hihetetlenül nehéz problémát egyszerre.
Te csak összpontosítva a logika, és a akkor beköltözik a szintaxis.
>> OK.
Kezdjük megy keresztül A pszeudokód.
Írtam itt, bináris keresés pszeudokódja.
Majd írni ezt a fórumon együtt.
Vagy írok, és akkor kapsz nekem az utasításokat amire szükségem van.
Így tud valaki adni nekem az első sorában pszeudokód meg
írt bináris keresés?
Igen, Annie?
>> DIÁK: Míg a hossza a lista nagyobb, mint nulla.
>> JASON HIRSCHHORN: Amíg hossza A lista nullánál nagyobb.
És ismét azt látjuk, néhány C külsejű szintaktikai dolgokat itt.
De ennek nagy része angol nyelvű.
Volt bárki bármilyen vonalon raktak mielőtt ezt a pszeudo-kód?
>> DIÁK: Kap egy tömb A számok sorrendje.
>> JASON HIRSCHHORN: Ön írta: "kap egy tömb rendezett számok. "Per a
függvény deklaráció, akkor halad egy sor sorrendje számokat.
>> DIÁK: [hallható].
>> JASON HIRSCHHORN: Tehát mi lesz, hogy.
De igen, ha nem volt, hogy mi kellene rendezni a tömb
számokat, mert a bináris keresés csak akkor működik, sorrendje tömbök.
Tehát míg a hosszú lista nullával egyenlő, én vagyok megy, hogy néhány kapcsos zárójelek
hogy úgy nézzen ki egy kicsit, mint a C. De közben, úgy tűnik, hogy térkép rá a
while ciklus, így ezen belül, míg loop mit kell
tenni bináris keresés?
>> Valaki, aki nem adott nekem választ még, de ki írta ezt?
>> DIÁK: Menj a közepén a lista.
>> JASON HIRSCHHORN: Tom.
Ugrás a közepén a lista.
És a következő kérdés, hogy mi tegyünk, ha mi vagyunk a
közepén a lista?
>> Tanítvány: A Ellenőrizze, hogy ez A szám, amit keresel.
>> JASON HIRSCHHORN: Kiváló.
Menj a közepén a listát, és ellenőrizze ha a mi értéke van -
fantasztikus.
Volt bárki másra már volt más, mint ez?
Ez pontosan így van.
>> Az első dolog, amit a bináris keresés hogy megy a közepén a listán, és
ellenőrizze, hogy az érték van.
Tehát feltételezem, ha az érték ott, mit tegyünk?
>> DIÁK: Visszatérünk nullát [hallható].
>> JASON HIRSCHHORN: Igen, ha a érték van, megtaláltuk.
Így azt lehet mondani valamilyen módon, de ez a funkció határozza meg, mondjuk a felhasználó
megtaláltuk.
Ha ez nincs, azonban, hogy ez ahol ez lesz bonyolult.
Tehát, ha nincs ott, valaki más, aki dolgozott bináris keresés vagy
van egy ötlete, most mit tegyünk?
>> DIÁK: kérdés.
>> JASON HIRSCHHORN: Igen?
>> DIÁK: A tömb már rendezve?
>> JASON HIRSCHHORN: Igen, mi feltételezzük a tömb már rendezve.
>> DIÁK: igen, akkor kell ellenőrizni, ha az az érték, amit lát, az nagyobb, mint
a kívánt értéket, akkor mozog , hogy a közepén a másik felét.
>> JASON HIRSCHHORN: Tehát, ha a közepén A lista több, mint amit mi
keres, akkor mit csináljon?
Haladunk hol?
>> DIÁK: akarsz költözni a fele a lista
alacsonyabb, mint a számok.
>> JASON HIRSCHHORN: így fogunk hívja fel, hogy a bal oldali.
Tehát, ha középen nagyobb, kereshetünk a bal fele a listán.
És akkor a kereső, amit értek keresést?
>> DIÁK: [hallható].
>> JASON HIRSCHHORN: Mi megy a közepén.
Igazából ismételje meg ezt a dolgot.
Visszamegyünk keresztül while ciklus.
Adok az utolsó -
mást, ha középen kevesebb, mint amit mi, mit csinálunk itt?
>> DIÁK: Menj jobbra.
>> JASON HIRSCHHORN: Keresés jobbra.
Ez jól néz ki, de nem valakinek bármi, amit lehet, hogy hiányzik, vagy
bármi más, amit tesz a pszeudo-kód?
Tehát ez az, amit eddig.
Míg a hossza nagyobb, a lista mint nulla, fogunk menni
a közepén a listán, és ellenőrizze, hogy mi érték van.
>> Ha a középső nagyobb, megyünk keresés balra, még ha a középső
kevesebbet fogunk keresni a jobb.
Így már minden volt némi jártasságot feltételek használjuk a számítástechnikában
és azokat az eszközöket, amink van.
De akkor már észre voltunk beszél angolul, de találtunk egy
Sok dolog, hogy úgy tűnt, hogy a térkép a eszközök már a mi kódolási szerszámkészlet.
Így rögtön a denevér, nem vagyunk majd ténylegesen kódot sem.
>> Mit látunk itt, angolul, hogy térképek az a dolog, amit írni C-ben?
>> DIÁK: Bár a.
>> JASON HIRSCHHORN: Bár.
Tehát ez a míg itt térképeket, hogy mit?
>> DIÁK: A while ciklus.
>> JASON HIRSCHHORN: A while ciklus?
Vagy talán még általánosabban a hurok.
Azt akarjuk, hogy tegyen valamit, újra és újra.
Így fogunk kódot a hurok.
És mi már tudjuk, mert már kész ezt egy párszor, és mi
rengeteg példa, hogyan ténylegesen írni
ez a mutató a hurok.
Annak érdekében, hogy legyen elég egyszerű.
Meg kell lennie arra, hogy, hogy kezdett elég gyorsan.
>> Mi mást látunk itt?
Milyen egyéb építmények szintaxist, a dolgok hogy mi vagyunk tisztában a C-ben mi is
már van egyfajta alapú le a szavakat használt?
Igen, Anna?
[Nem hallható]
csak vicceltem.
Anna, megy előre.
>> DIÁK: Ha és más.
>> JASON HIRSCHHORN: Ha és más - itt.
Szóval, mit ezek néznek ki?
>> DIÁK: Egy, ha más nyilatkozatot.
>> JASON HIRSCHHORN: Igen, körülmények között, nem igaz?
Tehát akkor valószínűleg szükség van, hogy levelet bizonyos feltételek mellett.
És ismét, bár lehet zavaró először, akkor általában van egy értelme most
hogyan kell írni feltételek és A szintaxis feltételeket.
És ha nem, akkor csak nézz fel a szintaxist feltételek, kivágás és beillesztés
hogy azért, mert tudjuk, hogy szükség van egy feltétele van.
Minden más dolog, azt látjuk, hogy térképet rá dolog, amit talán meg kell csinálni a C?
Igen, Aleha?
>> DIÁK: Ez talán nyilvánvaló, mindössze ellenőrzésére, ha a
értéke egyenlő valamit.
>> JASON HIRSCHHORN: Szóval hogyan lehet ellenőrizni és - így megy, hogy a közepén a lista
és ellenőrizze, hogy az érték van?
Hogyan csináljuk, hogy a C?
Mi a szintaxis ez?
>> DIÁK: Egyenlő, egyenlő.
>> JASON HIRSCHHORN: Egyenlő, egyenlő.
Tehát ez az ellenőrzés valószínűleg lesz hogy egy egyenrangú, egyenlő.
Így tudni fogjuk, szükségünk van valahol.
És valóban, csak írásban is, látjuk azokat a más dolog.
Fogunk, hogy némi összehasonlító operátorok ott -
fantasztikus.
Így néznek ki által és nagy, még nem írt a
szó C kódot sem.
De mi van a mentális modell le keresztül előadások és a rövidnadrág.
>> Írtunk pszeudo-kód, mint egy csoport.
És már, hogy van 80%-os, ha nem 90%-a, amit meg kell tennie.
Most már csak meg kell kódot meg, ami megint egy
nem triviális probléma megoldására.
De legalább mi ragadtunk a logika.
Legalábbis most, amikor megyünk munkaidő, Azt lehet mondani, tudom, hogy mire van szükségem
csinálni, de emlékeztetsz nekem a szintaxis?
Vagy akkor is, ha munkaidőn zsúfoltak, akkor akkor a Google a szintaxis, hanem
mint hogy megragadt a logika.
>> És ismét, ahelyett, hogy megoldani A logika és a szintaxis problémák minden
egyszerre, gyakran sokkal jobb, hogy szünet a két nehéz problémák off-ba
két kezelhetőbb is, és ezt a pszeudo-kód, majd az első kódot C.
Akkor lássuk, mit tettem a pszeudó-kódja idő előtt.
>> Míg a hossza nagyobb, a lista mint nulla, nézd meg a középen
a listán.
Ha a szám megtalálható vissza igaz, más Ha a szám nagyobb, keresés balra.
Else Ha a szám kisebb, keresés jobb, return false.
Tehát úgy néz ki, közel azonos, ha nem közel azonos azzal, amit írtam.
Valójában, Tom, mit mondott az első, törés a közepén a listán, és ha a
szám található a két állítás valójában, amit tettem.
>> Én össze őket.
Kellett volna hallgatnom akkor az első alkalommal.
Tehát ez a pszeudo-kód van.
Ha azt szeretné, hogy most, sajnálom, menj vissza a kiinduló problémát.
Nézzük kód binary.c.
Így végre egy iteratív változata bináris keresés a következő
függvény deklaráció.
>> És akkor nem kell másolni le csak még.
Én valóban fog nyitni akár itt binary.c.
Tehát a függvény nyilatkozat a képernyő közepén.
És látni fogod vettem a pszeudo-kód az én oldalon, de közel azonos
ahhoz, amit írtam, és fel, hogy az Ön számára.
Tehát most, vessünk öt perc alatt kódot ezt a funkciót.
>> És ismét, ha bármilyen kérdése van, tegye fel a kezét, hadd tudjam meg, én
magához tér.
>> DIÁK: [hallható].
>> JASON HIRSCHHORN Szóval vettem a bináris Keresés meghatározása a
fel, a 12. sorban.
Ez az, amit én kaptam az én slide.
És akkor ez a pszeudo-kód csak másolás és beillesztett dia,
pszeudo-kód slide.
Én még mindig nem hallotta [hallható].
>> Tehát, ha befejezte a végrehajtás, azt akarom, hogy ellenőrizze azt.
Én e-mailben, hogy a helpers.h fájl korábban ebben az osztályban.
És ez elérhető lesz az interneten is letölthető az ember nézi
Ebben a részben késleltetett.
És én csak használt az általános eloszlás kódot pset3.
Így vettem beolvasása sikertelen, akkor az én helpers.h fájl nem pedig a fájl helpers.h
ez megadta az elosztó kódot.
>> És volt, hogy egy másik változás elérése sikertelen ahelyett, hívja egyszerűen
keresés, hívja binary_search.
Tehát, ha szeretné, hogy tesztelje a kódot, tudjuk, hogy az, hogy hogyan kell csinálni.
Valójában, amikor mi fut a kód most, én csak tett egy példányát
én pset3 könyvtár, újra cserélték ki A segítők fájlokat, majd arról, hogy
változik elérése sikertelen hívni binary_search ahelyett, hogy egyszerűen keresni.
>> JASON HIRSCHHORN: Igen.
Van kérdése?
>> DIÁK: Nevermind.
>> JASON HIRSCHHORN: Semmi gond.
Nos, kezdjük.
Mi fogja ezt a kódot, mint egy csoport.
Még egy megjegyzés.
Ismét, ez van, könnyen cserélhetők in Probléma Set Három.
Ott van a helpers.h fájl, hanem mint a helpers.h vagyunk adni,
kijelenti, bináris keresés, buborék sort, és a kiválasztás sort.
És beolvasása sikertelen, észre fogod venni on-line, mi az, hogy a 68. soráig, nevezzük bináris
keresés helyett keresést.
Tehát újra, a kód, ami elérhető on-line, vagy a kódot, amit a
létre most könnyen cserélhetők in p szett 3, hogy ellenőrizze azt.
>> De először nézzük kódot bináris keresést.
A függvény deklaráció, visszatérünk a bool.
Veszünk egy egész nevű értéket.
Veszünk egy sor egész számok nevezett értékek, és mi n is
a méret a tömb.
On line 10 itt, én éles közé stdbool.h.
Tudja valaki, hogy miért van ott?
Tehát mit kódsort csinálni?
>> DIÁK: Ez lehetővé teszi, hogy egy bool visszatérési típus.
>> JASON HIRSCHHORN: Pontosan.
>> DIÁK: Vagy ez egy könyvtár, amely lehetővé teszi a hogy egy bool visszatérési típus.
>> JASON HIRSCHHORN: Tehát az éles közé stdbool.h vonal ad nekem egy kis
definíciók és nyilatkozatok a dolgok , hogy én vagyok szabad használni
ezt a könyvtárat.
Tehát azok között, azt mondja, hogy van Az ilyen típusú úgynevezett bool, és lehet
igaz vagy hamis.
Szóval ez a vonal nem.
És ha én nem ezt a vonalat, én bajba írom ezt a
szó itt, bool, ott.
Pontosan így van.
Szóval kell, hogy ezt a kódot.
OK.
Szóval ez megint egy iteratív verzió, nem rekurzív egyet.
Így hát az induláshoz.
>> Kezdjük az első sor pszeudo kódot.
És remélhetőleg, mi lesz - vagy sem reménykedve.
Fogunk menni körül a szobában.
Elmegyünk sorról sorra, és én segítek kitalálni a sort, amire szükségünk van
írni az első.
Tehát míg a hosszú lista nagyobb, mint nulla.
Kezdjük az első.
Mit sort írjak itt a kód?
>> DIÁK: Míg a zárójel n értéke 0-nál nagyobb.
>> JASON HIRSCHHORN: Amíg n nagy, mint a 0-ra.
Tehát n akkora, mint egy lista, és mi ellenőrizni kell, -
>> [Közbeiktatásával VOICES]
>> JASON HIRSCHHORN: - Tessék?
>> DIÁK: Honnan tudjuk, hogy n a méret a lista?
>> JASON HIRSCHHORN: Elnézést.
Per a Pset specifikáció, a keresés és rendezés funkciókat kell írni,
n jelentése a méret a listán.
Elfelejtettem elmagyarázni, hogy itt van.
De igen. n a mérete A lista, ebben az esetben.
Tehát, míg n értéke 0-nál nagyobb.
OK.
Ez lehet bizonyítani egy kicsit problémás azonban, ha a dolgok tovább.
Mert továbbra is tudni, hogy az a lista mérete ez alatt
funkciót, de azt mondom, elindul egy sor 5 egész.
És mi megy keresztül, és mi már most már szűkült le, hogy
egy sor 2. egészek.
Ebből 2 egész számok ez?
A méret 2, most, hogy szeretnénk nézd meg, de 2, hogy?
Van ennek értelme, ez a kérdés?
>> OK.
Megkérdezem újra.
Tehát elindul ez a tömb 5 egész, és n értéke 5, ugye?
Fogunk végigmenni itt.
akkor talán változtatni a méretét, van, a dolgok mennek tovább.
Melyik az, amit mondani akarunk csinálni.
Nem akarjuk keresni teljes a dolog újra.
Tehát azt mondom, változtassa meg a 2..
Vesszük a fele a listán, ez furcsa.
Szóval, csak vedd 2..
Tehát most n = 2.
Elnézést kérek a szegények szárazon törölhető markerek.
Nem igaz?
És keresi a listában Ismét egy listát a 2-es méret.
Nos, a sor még az 5-ös.
Azt mondjuk, mi csak azt akarjuk, hogy Keresés 2 foltok is.
Tehát melyik 2. foltok azok?
>> Van ennek értelme?
Ők a bal 2 foltok?
Vajon a jobb 2 foltok?
Vajon a középső 2 foltok?
Mi tört a problémát le, de Igazából nem tudom, melyik része
A probléma, hogy még mindig nézett, csak azáltal, hogy a 2 változó.
Tehát szükségünk van egy kicsit több, mint, míg n értéke 0-nál nagyobb.
Tudnunk kell, hogy ha ez a n a mi tényleges tömbben.
>> Tehát nem valakinek a változik ez a sor?
A legtöbb ilyen sor tökéletesen megfelelő.
Van egy másik mellett?
Tudunk cserélni valamit ki n hogy ez a vonal egy kicsit jobban?
Mm-hm?
>> DIÁK: Tud inicializálni a változót mint a hossza n, hogy lesz ezután használható
később a funkciót?
>> JASON HIRSCHHORN: Tehát inicializálja egy változó hosszúságú n,
és használni, hogy később?
De aztán csak frissíteni hossza és még befut ez a probléma, ahol
vágja le a hossza a probléma, de soha nem tudni, hogy hol, valóban,
ilyen hosszú térképek rá.
>> Tanítvány: Nem fog megtörténni később, amikor azt mondod, keresés balra,
Keresés igaz?
Fogsz menni egy másik terület a -
>> JASON HIRSCHHORN: fogunk menni egy olyan területre, de hogyan tudjuk
amelyek menni?
Ha csak a tömb, és ez n, honnan tudjuk, hogy hol
menj a tömbben.
A hátsó, igen?
>> DIÁK: Van, mint a kisebb kötött, és egy felső korlátot változót vagy
valami ilyesmi?
>> JASON HIRSCHHORN: OK.
Tehát ez egy másik ötlet.
Ahelyett, hogy csak nyomon követése a méret, akkor nyomon követni az alsó és
felső határa változó.
Szóval hogyan lehet kiszámítani a méret egy alsó határ, és a felső határ?
>> [Közbeiktatásával VOICES]
>> JASON HIRSCHHORN: kivonás.
És azt is, hogy nyomon követhetőek az alsó kötött és a felső kötött, hogy tudassa velünk,
vagyunk keresi a két?
Vajon keresi a két itt?
Vagyunk keresni a középső két?
Valószínűleg nem a középső két, mert a ez valójában bináris keresést.
De most már képes lesz arra, hogy a méret, hanem a korlátokat a tömb.
Lényegében, ha van az óriás telefonkönyv, mi rip félbe.
Ma már tudjuk, ha ez a kisebb telefonkönyv.
De valójában nem szakító A telefonkönyv felét.
Meg kell még tudni, hogy hol a új határai a probléma.
Van valakinek kérdése erről?
Igen?
>> DIÁK: Vajon működik létrehozásával változót, i, hogy akkor csak váltani
a helyzetét i képest a aktuális pozíciót, és a hossza, n?
>> JASON HIRSCHHORN: És mi az én?
>> DIÁK: Mint én, hogy mint egyfajta -
Mint akkor inicializálni én, hogy a középső pozícióban a tömb.
És aztán, ha az érték az i-es pozícióban a közepén, a tömb találták
lehet kevesebb, mint az érték van szüksége, most válik, a hossza a tömb, plusz
az i értéke 2 osztva.
Mint látod, műszak i -
>> JASON HIRSCHHORN: Így van.
>> DIÁK: - akár a -
>> JASON HIRSCHHORN: Tehát én vagyok majdnem pozitív, hogy működni fog.
De a lényeg, hogy meg kell két információkat itt.
Meg tudod csinálni a kezdete és vége, vagy meg tudod csinálni a méretet, majd
Néhány marker.
De nem kell két darab információ itt.
Nem lehet kapni az csak egy.
Van ennek értelme?
>> Szóval megyek át, és fogunk csinálni [hallhatatlan]
és hozzon létre egy markerek.
Szóval mit írsz a kódot?
>> DIÁK: Csak annyit mondtam int kötött az egyik a 0-val egyenlő.
>> JASON HIRSCHHORN: Nevezzük hogy int, kezdetét.
>> DIÁK: OK.
>> JASON HIRSCHHORN: Ez teszi több értelme számomra.
És?
>> DIÁK: Azt mondtam, azt hiszem, int véget.
>> JASON HIRSCHHORN: int véget.
>> DIÁK: Azt hiszem, n mínusz 1, vagy valami ilyesmi.
Hasonlóan, az utolsó elem.
>> JASON HIRSCHHORN: Szóval azt írta, int kezdet értéke 0, pontosvessző, és int
vége egyenlő n mínusz 1, pontosvessző.
Tehát lényegében, amit csinálunk itt, 0 az első helyzetbe.
És mint tudjuk, tömbök, nem mennek n-ig mennek fel n mínusz 1.
Tehát van néhány határain a tömb.
És ezek a kezdeti határait történetesen A kezdeti határai a probléma.
OK.
Szóval ez jól hangzik.
Akkor, ha megyünk vissza ezt a sort, míg a lista hossza nagyobb, mint 0,
mit, n helyett, amennyiben teszünk itt?
>> DIÁK: Írja vége mínusz kezdet.
>> JASON HIRSCHHORN: Amíg véget mínusz elején nagyobb, mint 0-ra?
OK.
És mi volna, ha azt akartuk, hogy tenni, hogy egy kicsit szebb, mit
mást tehettünk volna?
Ha akartuk, hogy tiszta ez a kód egy kicsit?
Hogyan lehet megszabadulni a 0-ra?
Ez csak stílus kérdése.
Ez így van most.
>> DIÁK: Ending nem egyenlő elején?
>> JASON HIRSCHHORN: Meg tudjuk csinálni, mi?
>> [Közbeiktatásával VOICES]
>> DIÁK: Ending nagyobb?
>> JASON HIRSCHHORN: Igen.
Mi is csak csinálni, miközben véget nagyobb, mint az elején.
Rendben.
Adtunk kezdik a másik oldalon az, hogy mi megszabadultak a 0-ra.
Tehát ez csak úgy néz ki, a kicsit tisztább.
OK.
Így, míg a hosszú listán 0, írtunk , hogy míg a nagyobb végződő
, mint a kezdet.
Fogunk tenni a szükséges kapcsos zárójelek között, és akkor az első dolog
akarunk tenni, hogy nézd meg őket egy kis lista.
Önnek?
Tudna nekem -
>> DIÁK: Ha a zárójel értéke szögletes zárójel -
>> JASON HIRSCHHORN: Ha a zárójelben érték szögletes zárójel.
>> DIÁK: Ending osztva 2-vel.
>> JASON HIRSCHHORN: vége?
>> DIÁK: Látom, hogy a probléma a -
>> JASON HIRSCHHORN: OK.
Nos, nézd meg a közepén.
Honnan tudjuk, hogy mi a közepén van?
Igen.
Hadd törölje a kódot.
Honnan tudjuk, hogy mi a közepén van?
A semmit, ha már az elején és a végén, hogyan találja
a közepén?
>> Diák: átlag.
>> DIÁK: felveszi őket együtt, és akkor -
>> JASON HIRSCHHORN: Add, együtt, és akkor?
>> DIÁK: És te átlag.
Osszuk meg 2-vel.
>> JASON HIRSCHHORN: Add, együtt, és oszd 2.
Így int közepén egyenlő?
Tom, tudsz adni nekem?
>> DIÁK: Beginning plus végződő -
>> JASON HIRSCHHORN: Beginning plus véget.
>> DIÁK: Minden, konzol, osztva 2-vel.
>> JASON HIRSCHHORN: Minden, zárójelben, 2. osztva.
Ahhoz, hogy ad nekem a középső semmit, igaz?
>> DIÁK: Akkor is meg kell, hogy kerek fel.
>> JASON HIRSCHHORN: Mit azt jelenti, meg kell, hogy kerek fel?
>> [Közbeiktatásával VOICES]
>> DIÁK: mert ha egy furcsa számot, akkor ez olyan, mint -
>> JASON HIRSCHHORN: Nos, rendben.
Így tudtam kerek fel.
De ha ez egy páratlan szám, egy 5, tudok figyelembe 1-re a közepén.
Vagy ha ez egy páros szám, inkább ez jobb esetben.
Ha ez 4, már csak 4, tudok venni Az első "középső", idézet, idézet vége vagy
A második "középső" egy.
Vagy működne a bináris keresés, így valójában nem kell kerekíteni.
De van egy másik dolog, amit kell nézni ezt a sort.
Lehet, hogy nem veszik észre, hogy még, de majd jön vissza rá.
Mivel ez a vonal valójában még szüksége van egy másik dolog.
>> De eddig is írtam négy sornyi kódot.
Megvan a kezdet és vége markerek.
Megvan a while, ami leképezi A közvetlenül a pszeudokódja.
Keressük a középső, hogy a térképeket közvetlenül a pszeudokódja.
Azt mondanám, hogy ez megy a középső A lista, ezt a kódsort.
És akkor, ha már megy a közepén A lista a következő dolog, amit tennie kell
hogy ellenőrizze, ha a érték van a A pszeudokód írtunk korábban.
>> Szóval hogyan lehet ellenőrizni, ha az érték van a közepén a listán?
Önnek.
Miért nem ezt teszed?
>> DIÁK: Ha a mi érték-kór a középső egyenlő
amit mi meg a -
Úgy értem, egyenlő egyenlő -
>> JASON HIRSCHHORN: It -
OK.
>> DIÁK: Nem vagyok biztos benne, mi a változó keresünk
mert bár, mert -
>> [Közbeiktatásával VOICES]
>> DIÁK: [hallható].
>> JASON HIRSCHHORN: Pontosan.
Per a funkciót nyilatkozat keresünk egy értéket.
Így keres egy értéket egy sor értékek.
Szóval pontosan így van.
Azt fogja tenni, ha a nyitott paren érték zárójel közepén zárt konzol egyenlő
egyenlő értékű, és belül van Mit kell tennünk?
Ha az érték ott van, mi nem kell tennünk?
>> [Közbeiktatásával VOICES]
>> DIÁK: vissza nullára.
>> JASON HIRSCHHORN: vissza igaz.
>> DIÁK: vissza igaz.
>> JASON HIRSCHHORN: Michael, mit jelent ez a sor nem?
>> DIÁK: [hallható] a program fut a maga útján, és ez a vége, és
akkor már mit kell csinálni?
>> JASON HIRSCHHORN: A program, vagy mi?
Ebben az esetben?
>> DIÁK: A funkció.
>> JASON HIRSCHHORN: A funkció.
És így, hogy visszatérjen, amit az úgynevezett , és adja meg az értéket, igaz.
Pontosan így van.
Main.
Mi a visszatérési típus fő, Michael?
>> DIÁK: int, integer?
>> JASON HIRSCHHORN: int, pontosan.
Egy egész szám.
Ez csak az a kérdés, hogy megbizonyosodjon arról, srácok már a tetején.
Mit jelent ez általában vissza, ha a minden dolog jól működik?
>> DIÁK: Zero.
>> JASON HIRSCHHORN: Zero.
Pontosan így van.
>> DIÁK: Ha ez csak igazat ad vissza, nincs adatokat kell
arról, hogy mi az -
Ó, ez csak azt mondom, hogy ez érték van benne a tömbben.
>> JASON HIRSCHHORN: Pontosan.
Ez a program nem ad információt Az, hogy pontosan hol az érték.
Ez csak azt mondom, igen, találtunk , vagy nem, azt nem találta meg.
Tehát, ha a szám található, vissza igaz.
Nos, valójában mi csak volt, ami igazán gyorsan, hogy egy sor kódot.
Így fogok mozgatni, hogy a vonal a pszeudokódja.
>> DIÁK: Nem kell változtatni a tömb?
Meg kell értékek nem érték, nem igaz?
>> JASON HIRSCHHORN: Elnézést.
Köszönöm.
>> DIÁK: Igen.
>> JASON HIRSCHHORN: Ez a sor értékeket kell lennie.
Pontosan így van.
OK.
Szóval néztem a középső listából.
Ha a szám megtalálható return true.
Folytatva a mi pszeudokódja, ha középen nagyobb, keresés balra.
Szóval volt itt, ha a szám magasabb, keresés balra.
Constantine, tudsz adni nekem ezt a kódsort?
>> DIÁK: Ha az érték a közép -
>> JASON HIRSCHHORN: Tehát, ha az érték -
ha nyitott paren értékek tartó közepes záró zárójel -
>> DIÁK: kisebb érték?
>> JASON HIRSCHHORN: Kevesebb, mint.
>> DIÁK: Kevesebb, mint érték.
>> JASON HIRSCHHORN: érték.
Nos, valóban, szeretnénk ellenőrizze, hogy a szám -
Bocsánat.
Ez egy kicsit zavaros.
De még ha a szám a lista közepén nagyobb.
>> DIÁK: Oh, OK.
>> JASON HIRSCHHORN: fogom változtatni.
Else if középen magasabb, akkor keresni kívánt balra, OK?
És mit tegyünk benne ezt, ha a feltétel?
>> DIÁK: Lehet, hogy egy kis változás A feltétel a változás, hogy más, ha?
>> JASON HIRSCHHORN: Else, ha?
OK.
Tehát ezt a kódot hajt végre közel azonos.
De a szép dolog használatával, ha más if, else ha vagy, else if, else
azt jelenti, hogy csak az egyik ilyen fog ellenőrizni kell, nem mind a hárman,
potenciálisan.
És ez teszi, hogy egy kicsit szebb a számítógép, hogy a
fut a program.
>> Tehát [? Constantine,?]
bent vagyunk ebben a sorban, még ha az értékek, konzol közepén záró zárójel
érték nagyobb, mint.
Mit kell tennünk?
Meg kell keresni a bal oldalon.
Hogyan csináljuk ezt?
Meg fogom adni neked a kezdet.
>> Van ez a két dolog az úgynevezett kezdetét és végét.
Tehát mi kell történnie az elején?
Ha szeretné keresni a bal oldalon a lista, megkapjuk a jelenlegi elején.
Mit kell csinálni?
>> DIÁK: Mi meg az elején a közepes plusz 1.
>> JASON HIRSCHHORN: Tehát, ha vagyunk keresi a bal?
>> DIÁK: Sajnálom, közép mínusz -
így a vége lenne a közép- mínusz 1 és kezdet -
>> JASON HIRSCHHORN: És mi történik, hogy az elején?
>> DIÁK: Ez ugyanaz marad.
>> JASON HIRSCHHORN: Tehát a jelentése ugyanaz marad.
Ha keresi a bal oldalon vagyunk használja ugyanazt a kezdet -
pontosan így van.
És a vége?
Sajnáljuk, mit jelent a véget egyenlő megint?
>> DIÁK: Közép-mínusz 1.
>> JASON HIRSCHHORN: Közép-mínusz 1.
Nos, miért mínusz 1, nem csak a közepén?
>> DIÁK: A középső ki a kép már, mert nem volt
ellenőrizte, hogy ez ki?
>> JASON HIRSCHHORN: Ez pontosan így van.
A középső ki a kép.
Már ellenőrizte a közepén.
Tehát nem akarjuk "a középső," idézet idézet vége, hogy továbbra is a
tömb, amit keresünk.
Szóval ez fantasztikus.
>> Else if értékek tartó közepén nagyobb mint érték véget egyenlő
közepén mínusz 1.
Jeff, mi van az utolsó sorban?
>> DIÁK: Else.
Értékek közepén kevesebb, mint érték?
>> JASON HIRSCHHORN: Majd ad nekem mást.
Tehát, ha nem ad nekem -
>> DIÁK: Akkor kezdődik lenne közepes plusz 1.
>> JASON HIRSCHHORN: Beginning egyenlő középső plusz 1, ismét, ugyanezen
oka, hogy Konstantin adott nekünk korábban.
És a végén, aki nem adott nekem egy sor kódot még?
Vissza hamis, Aleha, milyen nem írunk itt?
>> DIÁK: return false.
>> JASON HIRSCHHORN: return false.
És meg kell csinálni, mert ha nem találják, meg kell mondani, hogy
nem találtam meg.
És mi azt mondtuk megyünk vissza bool, ezért mindenképpen vissza kell
a bool valahol.
>> Szóval ezt a kódot.
Én valóban fog -
így vagyunk a terminál.
Majd törölje az ablakot.
Csináljunk All.
Találtunk van egy hiba.
Van egy error on line 15 várható pontosvesszővel végén a
nyilatkozat.
Szóval mit elfelejteni?
>> DIÁK: Pontosvessző.
>> JASON HIRSCHHORN: Pontosvessző egészen itt.
Azt hiszem, ez volt Tom kódot.
Tehát Tom, [nem hallható].
Csak vicceltem.
Csináljuk Make újra.
>> Diák: És mi Dropbox könyvtár kellene lennie e?
>> JASON HIRSCHHORN: így csak nézni ezt kicsit.
De ismétlem, ha akart lépni ezen a kódot a pset3 könyvtárba kipróbálni
ki, ez az, amit én tettem.
Ha észre fogod venni, itt - sajnálom, jó kérdés.
>> [? LS,?]
Van itt a kód beolvasása sikertelen e heti disztribúció kódot.
Van helpers.h.
Van olyan, hogy a fájl, hogy én valóban szerkesztett egy kicsit, hogy ezeket az új
fájlok írunk.
Mindez kód lesz elérhető, nem az elosztási kód, de az új
Legyen fájlt, az új helpers.h fájl elérhető online letölthető.
Újra, így ezek a extra kódokat van.
>> Tehát, hogy az összes, egy ezt a sort teszi meg, bináris, buborék választás - teszi
mind a hárman, és elkészíti a ez végrehajtható kódot találni.
Tehát általában, nem akarjuk hogy egyenesen check50.
Azt akarjuk, hogy néhány tesztet a miénk.
De csak így lehet felgyorsítsa ezt egy kicsit, check50 2013 pset3.find fog múlni
A helpers.c-- a rossz.
>> Nem kell, hogy most.
Szóval tényleg lesz futtatja a kódot az igazi.
Usage.find /, tudod, hogy ez mit jelent?
>> DIÁK: Szüksége van egy második parancssorban rajta.
>> JASON HIRSCHHORN: Szükségem van egy második parancssor.
És egy a specifikáció, szükségem adja meg, amit keresünk.
Tehát nézzük 42.
Majd tartsa rendezett, mert még nem írt egy sort funkció még -
42., 43., 44.
>> És Control D nem találja a tűt a szénakazalban.
Ez rossz.
Tuti, hogy ott van.
Próbáljunk valami mást.
Talán azért, mert tettem ez az elején.
>> Csináljuk 41, 42, 43.
Ott vagyunk.
Úgy ítélte meg azt.
Tegyük fel, hogy a végén már csak így lehet alapos -
40, 41, 42.
Nem találja a tűt.
Szóval említette ezt korábban.
Sajnos, tudtam, hogy ez fog történni.
>> De pedagógiai célú ez jó, hogy vizsgálja meg.
Ez nem működik.
Valamilyen oknál fogva, hogy nem találom.
Tudjuk, hogy mi van ott, de mi nem találja.
Tehát az egyik dolog, amit tehetünk, hogy menjen át GDB megtalálni, de nem akárki,
anélkül, hogy a GDB, van egy értelemben, ahol elrontottam?
[? Madu? ?]
>> DIÁK: Azt hiszem, lehet, hogy ha véget egyenlő kezdet, és ez
csak egy elem listából.
Akkor csak figyelmen kívül hagyja azt, hanem A tényleges ellenőrzés is.
>> JASON HIRSCHHORN: Ez pontosan így van.
Amikor vége egyenlő elején, mi is mindig van egy eleme a listán?
>> DIÁK: Igen.
>> JASON HIRSCHHORN: Igen, sőt, azt van egy és csak egy elem.
És ez valószínűleg történni, ha, egy a kódot teszteltük, mi vagyunk a
előtt a szénakazalban, vagy a végén a szénakazalban.
Ez az, ahol kezdetét és vége lesz egyenlő
egy, a bináris keresés.
Tehát ebben a két esetben nem működik, mert véget egyenlő volt kezdet.
>> De ha vége egyenlő kezdet, ez while ciklus végre?
Ez nem.
És mi volna ellenőrizhető hogy újra át GDB.
Szóval hogyan lehet megjavítani ezt a kódot, mert a amikor amíg véget egyenlő
elején, mi is szeretnénk ezt a while ciklus futtatni.
>> Szóval mit fix tehetjük sorban 18 éves?
>> DIÁK: [Nem hallható] nagyobb kisebb vagy azzal egyenlő.
>> JASON HIRSCHHORN: Pontosan így van.
Míg a végződés nagyobb, mint vagy egyenlő elején.
Tehát most, akkor győződjön meg róla, hogy kap, hogy a sarok esetében a végén.
És lássuk.
Fussunk ezt még egyszer.
>> Nézzük, hogy minden.
Ismét, akkor meg kell, hogy csak kövesse végig itt.
Keresd 41. ebben az időben.
Csak tartsa következetes.
>> Keresés 42.
Tegyük fel, hogy az elején -
42., 43., 44.
Megtaláltuk.
Ahhoz, hogy valóban a változás mi szükség van, hogy a.
>> Ez volt a sok kódolás is csináltam, bináris keresés.
Van valakinek bármilyen kérdése van, mielőtt Én lépni sorok írtuk
bináris keresés, vagy hogyan gondoltam ki, mi volt kitalálni?
Mielőtt továbblépnénk, én is szeretnék mutatni arra, hogy nagyjából, feltérképeztük
a pszeudo-kód egy- az egyik fel a kódot.
>> Mi volt, hogy trükkös dolog kitalálni, hogy a
kezdetét és végét.
De még akkor sem gondoltam, hogy ki, akkor írt volna, nagyjából
azonos kódot, kivéve azok a felső két sor.
És akkor lett volna megvalósítani, ha tette, hogy az ellenőrzések és esetekben
ha kell valami mást.
Tehát akkor is, ha követte a pszeudo-kódot sorról sorra, akkor már
ütött minden, de két sor kódot kell írni.
>> És én lennék hajlandó fogadni, hogy a srácok volna, mind rájött, hogy ki
elég gyorsan, hogy meg kell, hogy valamilyen marker ott kitalálni
, hol voltál.
Ez ismét a hatalom csinál pszeudó-kódja idő előtt.
Így meg tudjuk csinálni a logika az első, majd a akkor aggódni a szintaxis.
>> Vajon mi lett zavaros a logika közben írni ezt a kódot C,
mi ütött volna minden összezavarodik.
És akkor mi lenne kérdéseket a logika és a szintaxis és hálózás
őket együtt.
És mi volna, eltévedt milyen hamar
nagyon nehéz probléma.
Akkor lépjünk tovább már kiválasztási sort.
>> Jelenleg 20 perc van hátra.
Szóval van egy olyan érzésem, hogy nem lesz képes a hogy az összes kiválasztás sort
és a buborék sort.
De nézzük legalább kísérlet befejezni kiválasztás sort.
Így végre kiválasztása sort a következő funkció nyilatkozatot.
>> Ismét, ez a ki kell venni a probléma meg specifikáció.
Int értékek zárójelben, az egy sor egész.
És int.n a méret, hogy a tömb.
Selection sort megy rendezni ezt a tömböt.
>> Tehát egy mentális modellje kiválasztás sort, akkor húzza ki a -
Először megyünk végig a listát az első idő, meg a legkisebb számot,
tedd az elején, meg a második legkisebb számot, tedd azt a
második helyen, ha azt akarjuk, hogy Rendezés növekvő sorrendben.
Én nem arra kényszerítve, hogy írni ál-kód most.
>> De mielőtt ezt a kódot, mint egy osztály Öt perc, fogunk írni
pszeudo-kódot, így van némi értelme hová megyünk.
Így próbál írni pszeudo-kód saját.
Majd próbálja meg bekapcsolni, hogy pszeudo-kódot kódot.
Mi fog tenni, hogy egy csoport öt perc alatt.
>> És persze, hadd tudjam meg, ha bármilyen kérdése van.
>> DIÁK: Ennyi?
>> JASON HIRSCHHORN: Látod, milyen messze van kap két percet.
Megértem, hogy nem fog képes befejezni.
De mi megy át ezt a csoportot.
>> Mindannyian kódolási így [hallható], tehát vagyok sajnálom, hogy szünet, amit csinálsz.
De nézzük végig ezt a csoportot.
És ismét, bináris keresés, mindenkinek ad nekem, ha nem több sornyi kódot.
Köszönjük, hogy az.
Fogjuk, hogy nem ugyanaz a dolog Itt code együtt, egy csoportban.
>> Tehát kiválasztása sort - írjunk néhány gyors pszeudo-kódot.
Per mentális modell, tud valaki adjon nekem Az első sorban a pszeudo-kód, kérem?
Mit akarok?
>> DIÁK: Míg a lista meghibásodott.
>> JASON HIRSCHHORN: OK, míg a a lista elromlott.
És mi az, hogy "out of order?"
>> DIÁK: Míg a [Nem hallható]
nem volt rendezve.
>> JASON HIRSCHHORN: Míg a lista meghibásodott, mit tegyünk?
Add nekem a második sorban, Kérlek, Marcus.
>> DIÁK: Így talál a következő a legkisebb szám.
Ez lesz beljebb.
>> JASON HIRSCHHORN: Így talál a következő kisebb szám.
És akkor valaki más?
Ha megtaláljuk a következő kisebb szám, mit tegyünk?
Fogom mondani, meg a legkisebb szám.
Ez az, amit akarok.
>> Így megtalálja a legkisebb szám.
Akkor mit tegyünk?
>> DIÁK: [hallhatatlan] a kezdet.
>> JASON HIRSCHHORN: Tessék?
>> DIÁK: Vidd azt a a lista elejére.
>> JASON HIRSCHHORN: Tehát tegyük az elején a listán.
És mit tegyünk, hogy a dolog ez volt az elején
a lista, nem igaz?
Mi felülírás valamit.
Szóval, ha nem tesszük ezt?
Igen, Anna?
>> DIÁK: Ahol a legkisebb szám volt?
>> JASON Hirshhorn: Szóval fel a kezdet a lista, ahol a
a legkisebb szám volt.
Így, miközben a lista elromlott, meg a legkisebb számot, tedd azt
A lista elején, tedd a a lista elejére, ahol a
a legkisebb szám volt.
Marcus tudja fogalmazzam ezt a sort míg a lista elromlott?
>> DIÁK: Bár a számok nem rendezve?
>> JASON Hirshhorn: OK, így annak érdekében, hogy tudják, hogy a számok nem voltak
sorrendje, mit kell tennünk?
Mennyivel kell végig ez a lista?
>> DIÁK: Szóval azt hiszem, egy for ciklus, vagy közben, míg a számok ellenőrzött kevésbé
mint a hossza a lista?
>> JASON Hirshhorn: OK, ez jó.
Azt hiszem, misphrased a kérdés rosszul.
Én csak próbálok a fogunk menni
az egész listát.
Így, miközben a lista elromlott, Számomra nehéz térkép tovább.
De alapvetően, hogy hogyan Azt hiszem, erről.
Menj át a teljes lista, meg az legkisebb szám, tegyük a
elején - valóban, igazad van.
Tegyük mindkettőt.
>> Így, miközben a lista elromlott, akkor kell, hogy menjen át a teljes lista
egyszer megtalálja a legkisebb számot, helyét már az elején a lista, tedd
az elején a lista, ahol a legkevesebb volt, és ha a
lista még mindig nincs rend, most már van, hogy menjen át a
folyamatot újra, igaz?
Ezért kiválasztás sort, Big-O runtime A kiválasztás sort, valaki?
>> DIÁK: n négyzeten.
>> JASON Hirshhorn: n négyzeten.
Mivel, mint Marcus és én csak rájöttem itt, mi kell majd
menjen végig a list számú alkalommal.
Így megy keresztül valami n hosszúságú n számú alkalommal
van valójában n négyzeten.
>> Szóval ez a mi pszeudokódja.
Ez nagyon jól néz ki.
Van valakinek kérdése a pszeudokód?
Mert tényleg kiválasztás sort kell valószínűleg jön 1-1, kódot
pszeudokódja.
Tehát bármilyen kérdése van a logikája pszeudokód?
Kérje most.
>> Selection sort -, míg a lista ki A rend, fogunk menni rajta
és megtalálni a legkisebb minden alkalommal és tedd az első.
Így, miközben a lista elromlott, lehet valaki adjon nekem, hogy a kódsort, aki
nem adott nekem egy vonal kód mégis, kérem?
Úgy hangzik, mint mi?
>> DIÁK: Ez a hurok.
>> JASON Hirshhorn: Ez úgy hangzik, mint egy for ciklus.
OK, tudsz adni nekem a for ciklus?
For -
>> DIÁK: i értéke 0-ra.
>> JASON Hirshhorn i vagy -
Mit hagytunk ki?
Mi folyik itt?
>> DIÁK: INT.
>> JASON Hirshhorn: Pontosan.
(Int i = 0; -
>> DIÁK: i <n, i + +).
>> JASON Hirshhorn: Felvettek, Jeff.
Megyünk végig a listán, igaz?
Láttuk, hogy a kód előtt.
Tökéletes.
Tehát mondjuk a kapcsos zárójelek itt.
Megyek egy kis kapcsos zárójelek itt.
>> Tehát miközben ez 0, mennünk kell az egész listát.
Így minden alkalommal megyünk végig a listán, mit szeretnénk nyomon követni?
>> DIÁK: Ha cserék alkalmazása esetén.
>> JASON Hirshhorn: Keresés a legkisebb szám.
Így valószínűleg nyomon követni A legkisebb szám minden egyes alkalommal.
Így vonal tehetek, hogy nyomon követhesse A legkisebb szám?
Aleha, hogyan tudom tartani track valamit?
>> DIÁK: Indítson el egy új változót.
>> JASON Hirshhorn: Indítson el egy új változó.
Tehát hozzunk létre egy változót.
Milyen?
>> DIÁK: INT.
>> JASON Hirshhorn: INT.
Nevezzük ezt a legkisebb.
És mit egyenlő, ha mi csak most kezdődik el?
Még nem ment át a listát még.
Vagyunk az első része a lista első alkalommal át.
Mit jelent ez megegyezik, a legkisebb számot?
>> DIÁK: Értékek i.
>> JASON Hirshhorn: Értékek i.
Ez úgy hangzik, pontosan így van, ugye?
A legkisebb szám az elején az, ahol vagyunk.
Tehát most már a legkisebb, és szükségünk van hogy menjen át az egész listát, és
összehasonlítani ezt a legkisebb minden mást.
Tehát nem megyünk végig a listát újra?
Michael?
>> DIÁK: Be kell, hogy a másik a loop.
>> JASON Hirshhorn: Egy másik a loop.
Csináljuk.
Adj egy kis kódot.
>> DIÁK: A loop -
a legkisebb -
csak int j, tudnál mondani?
= 0; oly módon, hogy -
>> JASON Hirshhorn: Nos, ha azt akarjuk, hogy menjen át a teljes lista -
>> DIÁK: j <n, j + +).
>> JASON Hirshhorn: Fantasztikus.
Fogunk átmenni A for ciklus újra.
És hogyan találjuk meg a legkisebb számot?
Tom?
Megvan az aktuális legkisebb számot, így hogyan találjuk meg az új legkisebb?
>> DIÁK: tudjuk ellenőrizni, hogy a legkisebb szám már nagyobb, mint
értékek konzol j.
>> JASON Hirshhorn: Tehát, ha a legkisebb a nagyobb, mint érték konzol j.
Tehát, ha a jelenlegi legkisebb nagyobb, mint -
Fogom mozgatni a két vonal A kód ott egy pillanatra.
Mert mielőtt mi bármilyen csere, akkor kell, hogy menjen át az egész listát.
Tehát ez pszeudokódja ténylegesen kívül, hogy a belső a hurok.
Így megy át az egész listát.
Ha nagyobb, mint a legkisebb értékek j akkor mi van?
>> DIÁK: Akkor a legkisebb egyenlő értékek j.
>> JASON Hirshhorn: Fantasztikus.
Egy gyors kérdés -
Az első alkalom, hogy menjen át a hurok, i fog egyenlő 0, j folyik
egyenlő 0, ha mi vagyunk itt.
Szóval lesz összehasonlítása egy számot is.
Ez hatékony?
Nem, ez nem igazán hatékony.
Tehát nem a j kell menni 0-tól n minden alkalommal?
Nem mindig ellenőrizni kell a teljes lista?
[Nem hallható]?
>> DIÁK: Kezdje i helyett.
>> JASON Hirshhorn: j lehet kezdeni, amit?
>> DIÁK: i.
>> JASON Hirshhorn: j indulhat az i.
Tehát most összehasonlítjuk induló az egy vagyunk.
De még akkor is, az, hogy az a lehető leghatékonyabban?
>> DIÁK: i + 1.
>> JASON Hirshhorn: i + 1 úgy tűnik, hogy a leghatékonyabb, mert mi
már i.
Mi arról, hogy a legkisebb 15. sor.
Fogunk kezdeni a következő alkalommal automatikusan.
Tehát végig a for ciklus.
Majd megy át minden egyes alkalommal.
Elmegyünk, számos alkalommal.
Most már ütött át ez a belső for ciklus.
Megvan a legkisebb érték takarít meg.
Meg kell, hogy azt a a lista elejére.
Szóval, hogyan helyezze a elején a lista?
Mi az a változó, amely utal , hogy az elején a lista?
Vagyunk ezt a külső for ciklus, Tehát mi utal az
elején a lista?
>> DIÁK: Értékek i.
>> JASON Hirshhorn: Pontosan így van.
Értékek i az elején -
vagy bocs, nem az elején.
Ez volt zavaró.
Ez az, ahol vagyunk, az elején a rendezetlen része a lista.
Így értékeli azt.
És mit is egyenlő?
>> DIÁK: legkisebb.
>> JASON Hirshhorn: Értékek i értéke, mi?
>> DIÁK: legkisebb.
>> JASON Hirshhorn: legkisebb.
Pontosan így van.
Szóval helyezi az elején a lista, és most meg kell tenni
az elején a lista, ahol a a legkisebb szám volt.
Szóval hogyan írok, ahol a legkisebb szám volt?
Értékek, mi?
>> DIÁK: 0-ra.
>> JASON Hirshhorn: A kis szám van a 0-ra?
>> DIÁK: Igen.
>> JASON Hirshhorn: Mi lenne, ha a legkisebb szám volt a végén
ez a rendezetlen lista?
>> DIÁK: Bocs, mi volt a kérdés?
>> JASON Hirshhorn: Hol van a legkevesebb?
Mi volt a legkisebb, és tedd a kezdődik, és ez a sor itt.
>> DIÁK: Meg kellett volna tárolták néhány -
>> DIÁK: Értékek j.
>> JASON Hirshhorn: Nos, ez nem feltétlenül értékek j.
Ez nem is létezik ezen a ponton.
>> DIÁK: Meg kell nyilatkozni változó korábban
akkor rendelje hozzá -
, ha megtalálja a legkisebb szám, hozzá az index, hogy a szám
változó, vagy valami ilyesmi.
>> JASON Hirshhorn: Így lehet azt mondod, hogy megint?
>> DIÁK: Szóval, ahol kijelentette, int a legkisebb, akkor is kijelenti int
legkisebb indexet = i, vagy valami ilyesmi.
>> JASON Hirshhorn: Hol tudom int a legkisebb, én nem csak nyomon követni
Az érték, de a hely.
int smallest_location = ebben esetben, akkor csak nem nekem.
Tudnunk kell, hogy hol van.
Megvan, hogy a végén a kódot, és rájött, hogy fogalma sem volt, hol nem volt.
És megint, mi feltérképezése ezt 00:59.
Srácok kódolás ezt a saját akaratát talán kap ugyanaz a probléma.
Hogy a fenébe találom meg?
És akkor rájössz, várj, kell nyomon követni, hogy a.
>> Tehát, ha a legkisebb nagyobb mint értékek j.
Mi meg a legkisebb egyenlő értékek j.
Mi mást meg kell változtatni?
Constantin, mi mást meg kell változtatni?
>> DIÁK: A hely.
>> JASON Hirshhorn: Pontosan.
Így add nekem ezt a sort a kódot.
>> DIÁK: smallest_location = j.
>> JASON Hirshhorn: Pontosan.
És akkor le a végén, ha azt akarjuk, hogy fel az elején a lista, ahol a
a legkevesebb volt, hogy milyen nem utalunk, ahol a
legkisebb szám volt?
Marcus?
>> DIÁK: A legkisebb szám volt található a legkisebb helyen.
>> JASON Hirshhorn: Tehát értékek smallest_location.
És mit tesz oda?
Az elején a lista, mi ez?
>> DIÁK: Nos, nem igazán tudom, többé, mert felülírta.
Tehát ez egy cserélték helyen a két vonal?
Ha bekapcsolja a két vonal körül.
>> JASON Hirshhorn: OK, így nem többé, mert már vissza a vonal
mielőtt értékek i legkisebb.
Így elvesztette a kezdeti értéke.
Szóval azt mondta csere a két vonal.
Tehát most is a lista elején ahol a legkevesebb volt.
Tehát smallest_location egyenlő értékeket i.
Ez mozog az elején ezt rendezetlen része a listát a
legkisebb helyen.
És akkor értékekre i haladunk hogy az a legkisebb szám.
>> Van ennek értelme, hogy miért kellett tenni, hogy a csere?
Mi volna, felülírja ezt az értéket - Egy másik dolog, amit valószínűleg már
rájött, és megállapította, a GDP-ben.
Így már gondoskodott a pszeudokód.
Van-e bármi más, amit kell ide írni?
Tudna valaki valamit?
>> DIÁK: Honnan tudod ha végeztél?
>> JASON Hirshhorn: Hogyan tudni, hogy ha végeztünk?
Nagy kérdés.
Szóval, honnan tudjuk, ha végeztünk.
>> DIÁK: Hozzon létre egy változót, hogy gróf Az, hogy van egy csere történt-e vagy sem
és végig a pass.
>> JASON Hirshhorn: OK.
Ez lenne dolgozni buborék sort.
De kiválasztás sort, ha nem hogy a swap, hogy talán csak
mert a legkisebb érték benne a megfelelő helyen.
Mi lehet, hogy egy 1-lista-, 2, 4, 3.
A második alkalommal a mi nem tesz swap.
Mi lesz a 2-es szám, de majd továbbra is szükség van, hogy folyamatosan megy.
Tehát meg kell nyomon követni, ha kész vagyunk, vagy nem csak azt, hogy menni
amíg ez kész?
>> DIÁK: Mi csak megy amíg ez kész.
>> JASON Hirshhorn: mi csak addig, amíg ez be nem fejeződik.
A buborék sort, akkor pontosan így van, Jeff és Aleha, és a megoldás -
ez jó nyomon követni, hogy hány swap amit tett, mert a buborék
sort, ha nem az a tény, hogy nincs swap, kész, és akkor lehet, csökkenteni a
probléma le egy kicsit.
De kiválasztás sort, akkor már tényleg van, hogy menjen át a végén a
lista minden egyes alkalommal.
>> Tehát az, hogy.
Van két perc van hátra.
Nézzük, hogy minden.
Hadd nyitott talál itt, és Biztos vagyok valójában szólítanak fel -
Nem hívom bubble sort.
Változtassuk meg ezt a kiválasztási fajta.
hogy minden. / itt.
Keressük 42..
Ez alkalommal megyünk át egy rendezetlen lista, mert meg kell rendezni
Először is, egy a lelet kód - meg kell rendezni először használja a szortírozás, majd
keresni valamit.
Ujjak keresztbe mindenkinek.
>> Te jó ég.
Hé, szívem dobog.
Annak érdekében, hogy ez helyes-e.
Sőt, ha mi ezt még széles körben, a kódot, amennyire csak tudok
mondani, tökéletesen helytálló.
Vannak olyan javaslatok Szerettem volna neked.
Például úgy tűnik, 15 és 16. egy kicsit felesleges.
Úgy tűnik, nem feltétlenül kell, hogy mentse azokat.
Ha a legkisebb helyen, könnyen megtalálják a legkisebb értéket
csak gépelés értékei i.
>> Tehát, ha én is osztályozó a kódot, amit majd valójában, én
talán vegye le egy pontot, ha tartalmazza mindkét, mert
Nem kell mindkét.
Ha van hely, akkor nagyon könnyen kap az értéket.
És úgy tűnik, egy kicsit furcsa tárolni mindkettő.
Lehet, hogy nem is egy pont, de bizonyára megjegyzést, hogy ez talán
nem stilisztikai választás meg kell tenni.
Természetesen továbbra is a kód fut tökéletesen.
>> Így sajnos nem hogy a buborék sort.
Sajnálom, hogy az.
Mi volt kivitelben kiválasztás sort.
Van valakinek végső kérdése a kiválasztás sort?
>> OK, mielőtt fejét, azt akarom, , hogy nyissa fel a Chrome böngészőt.
Sajnos, ez csak egy otromba dugót az egyik típusú internet böngésző.
Akkor nyit bármilyen típusú böngésző de akkor valószínűleg Chrome.
És megy ez a következő weboldalon -
sayat.me/cs50.
Ha nem a gépelés a számítógépen Most, akkor egyértelműen
nem csinálom, Tom.
>> És kérjük, tegye meg vagy jobb most vagy a következő órában -
adj egy kis visszajelzést.
Ez csak részben kettő.
Van több együtt, így van egy csomó hely, hogy javítsa.
Én remélhetőleg is volt néhány dolog is.
Így érzem magam olyan rossz, de ha a Ön is szeretné, hogy adjon nekem egy smiley
arc, hálás lennék, hogy is.
Töltse ki, hogy be
>> És egy percig maradt, ez volt a héten három.
Én állok kint egy kicsit Ha bármilyen kérdése van.
Találkozunk srácok előadás holnap.