>> JASON HIRSCHHORN: Welcome për tre javë, të gjithë.
Ne kemi një të zënë, por emocionuese seksion para nesh.
Pra, së pari, për shkak se ne kemi bërë disa Përparim me kursin, por ne ende
kanë një shumë e të mësuarit mbetur për të bërë, unë jam i duke shkuar për të treguar ju djema disa burime
që duhet të provojë të jetë tepër dobishme si ju jo vetëm qasje tuaj
Problemi vendos, por edhe të tretet të gjithë Materiali ne ju jap djema në
ligjërata dhe pantallona të shkurtra dhe seksion.
>> Pastaj ne do të shpenzojnë 20 e parë për 25 minuta e seksion do mbi
Gdb, të cilat ju mund ose nuk mund të ketë përdorur në këtë pikë, por është një
mjet tepër i dobishëm që do të ndihmojë të korrigjoj programet tuaja.
Një shumë prej jush mund të keni përdorur në printf mes të programit tuaj të kuptoj
se çfarë një variabël barabartë.
Gdb është edhe më mirë se printf dhe nuk vidhos deri kodin tuaj, sepse ju
drejtuar atë në një skedë të ekzekutueshme.
Pra, ne do të shkoj për 10 më të dobishme komandat keni nevojë për gdb, dhe ne jemi
do të shkojnë në një stërvitje së bashku në mënyrë në problemin vendosur tre dhe më gjerë, ju
mund të përdorni gdb për të ndihmuar debug programet tuaja.
Dhe në fund, ne do të shkoj për disa klasifikim dhe kërkoni algoritme
që pe në leksion, dhe ne jemi do të të vërtetë kodin, jo vetëm
pseudokod, por kodi kërko binar, lloj flluskë, dhe përzgjedhja lloj.
>> Pra, së pari, unë dua të shkoj mbi burimet.
Kjo është një listë të gjerë, dhe është e font më të vogël për shkak se unë kam shumë për të
përshtatet në këtu.
Por këto jo vetëm që do të ju ndihmojë, përsëri, me grupe e problemeve dhe
Informacioni tretjen keni mësuar, por patjetër, të vijë koha quiz, këto do të
të jetë tepër e dobishme.
Pra, së pari, shënime leksion.
Nëse ju shkoni në cs50.net/lectures dhe shkoni te javës specifike dhe të ditës,
ju do të shihni se ka shënime për secilin leksion, i cili nuk është thjesht një
transkript, por një version i redaktuar i ajo ishte e mbuluar në leksion me kodin
copra dhe tidbits të tjera të dobishme.
I highly recommend shkuar mbi ato.
Dhe pastaj, si dhe, nuk ka kod burim në dispozicion nga çdo leksion.
Dhe përsëri, këto slides do të jetë në dispozicion online në cs50.net/sections
këtë mbrëmje.
>> Pra dytë janë pantallona të shkurtra çdo javë që Temat e mbuluar, zakonisht 5 deri 15
minuta në gjatësi.
Dhe ata që shpresojmë se do të ju jap një abetare e madhe mbi tema të ndryshme.
E treta -
dhe kjo është krejt e re kjo vit - është study.cs50.net.
Nëse ju nuk e keni kontrolluar atë, unë rekomandoj që ju të bëni këtë.
Ju merrni të marr një temë.
Ne kemi dhjetra e temave mbi atje.
Kështu për shembull, ju të vini Funksionet.
Kjo ju jep disa slides dhe vë në dukje në funksionet.
Ata në të vërtetë janë slides që NGP inkurajohen të përdorin gjatë tonë
Prezantimet në seksionin.
Ka gjithashtu këshilla dhe truket për të që kanë të bëjnë me funksionet, dhe nuk ka
Problemet praktikë që ndihmojnë ju punoni me funksione.
Ne gjithashtu ju jap lidhje të shkurtër në funksionet dhe herë që funksionon
kanë ardhur deri në leksion.
Pra study.cs50.net, krejt të re kjo vit, një burim fantastik.
>> Tjetra, unë kam njeri, i cili është manual komandë që ju mund të kandidojë në
command line.
Pra, nëse ju keni ndonjë pyetje në lidhje me një komandë, për shembull, rand, të cilat ne
hasur në javën e kaluar gjatë seksionit dhe ju keni hasur ngjarë në
problemi juaj të vendosur kur kalon të gjenerojë kodin, por në qoftë se ju shkruani njeri
rand, ju do të merrni faqen që ju tregon të gjitha për rand.
Kjo ju jep atë që duhet, Parametrat që duhet, si dhe kthimi
tip dhe një përshkrim të shkurtër e atë funksion.
>> Pra shikoni rand.
Ajo mund të jetë pak gojor dhe konfuze, kështu që nganjëherë unë të gjeni se
thjesht Googling ajo që unë dua të di është mënyra më e mirë për të gjetur përgjigje.
Pra praktikë me Google.
Get mirë në Google.
Ajo do të bëhet shoku më i mirë.
>> Si dhe Google, në qoftë se ju nuk mund të gjeni atë në Google, cs50.net/discuss, është e
forum diskutimi.
Shanset janë në qoftë se ju keni një pyetje, e e tuaja 700 + kolegët ka gjithashtu që
pyetje dhe mund të ketë kërkuar ajo tashmë në të diskutuar
Forume dhe atë e kanë përgjigjur.
Pra, nëse ju keni një pyetje të përbashkët ose ju keni një pyetje që ju mendoni se
ndoshta njerëzit e tjerë mund të kenë drejtuar në, shikoni cs50.net/discuss.
>> Së fundi, dy të fundit, në qoftë se ju doni të flisni me një të vërtetë qenie njerëzore, zyra
orë hëna deri të premten.
Ka gjithashtu ore ne linje zyra për studentët extension.
Dhe e fundit, por sigurisht jo më pak, mua, pikë thirrje.
Ju të gjithë keni informatat e kontaktit.
Nëse keni nevojë për ndonjë gjë, ju lutem kurrë hezitoni të kontaktoni me mua.
Gjithmonë të ndjehen të lirë për ta bërë këtë.
Shumë pak prej jush e kanë shtuar mua në Gchat, kështu që ka qenë zhgënjyes,
por shpresojmë se kjo do të ndryshojë në mes të këtë dhe Seksioni tjetër.
Çdo pyetje deri më tani mbi burimet?
Great.
>> Së fundi, një tjetër plug për reagime, sayat.me/cs50.
Ju mund të jepni reagime anonim se si unë jam duke bërë.
Kjo ishte me të vërtetë e dobishme javën e kaluar.
I kam disa komente nga ju djema menjëherë pas seksion, plus nga
nxënësit e tjerë të cilët shikuar atë gjatë jave, dhe kjo
ishte tepër e dobishme.
Unë jam do të përpiqen dhe të kufizojnë përdorimin e mi të fjala "ëmbël", por unë do të tregojnë tim
entuziazëm dhe eksitim në mënyra të tjera.
Por ka pasur të tjera shtesë feedbacks substanciale,
të dy pluses dhe delta.
Pra ju lutem, unë jap ju djema reagime në grupe tuaja me probleme.
Të ndjehen të lirë të më japë reagime në fjalën time.
Unë jam këtu për ju djema.
>> Great.
Kjo është e gjitha që kam për Pjesa e parë.
A ka dikush ndonjë pyetje deri më tani?
Dhe unë kam një shënim për qendra e kontrollit.
Nxënësit Extension kanë mesazhi mua duke thënë se ata nuk janë duke marrë ndonjë audio,
por kjo është jashtë pushtetit tim për të rregulluar.
Kështu që shpresojmë, që merr zgjidhet së shpejti.
Nëse jeni duke shikuar në internet, hi, por ju nuk mund të më dëgjojë.
>> Pra, së pari, ne do të kalojnë nëpër gdb.
Gdb, siç e la të kuptohet më parë, është një mjet debugging
shumë më mirë se printf.
Pra, për të marrë filluar me gdb, ju djema, nëse ju doni të hapur pajisjen tuaj
dhe të marrin skedarin që unë emailed për ju më parë - këtë fotografi do të jetë gjithashtu
në dispozicion online në pak -
dhe të drejtuar gdb. / emrin e file.
Së pari, natyrisht, ju duhet të përpiloni paraqesë sepse Gdb vetëm punon në
fotografi ekzekutueshme.
>> Por nëse ndonjëherë doni të filloni Gdb, gjëja e parë që bëni,
ju drejtuar gdb. / Cezarit.
Pra, kjo është emri i programit që jeni duke shkuar për të shkuar me të drejtë tani.
Kështu që unë jam duke shkuar për të shkruar të bërë Cezarit, i cili do të më jepni një skedë të ekzekutueshme
të theksuara në të gjelbër këtu.
Dhe atëherë unë jam duke shkuar për të drejtuar gdb. / Cesar.
>> Dhe ju shkoni atje.
Ju shikoni ne kemi disa tekst thënë mua në lidhje me versionin e gdb, duke i dhënë mua
disa informata garanci, dhe pastaj ne kanë të shpejtë të PBB-së, e cila duket lloj
e si linjës sonë komandën e shpejtë, por e shihni se është e hapur
Paren, gdb, Paren ngushtë.
Para se të vazhdojmë dhe debug këtë fotografi që ju dërgova me të gjithë, le të shohim në
disa komanda të dobishme kështu që ne kemi një kuptim e çfarë ne do të mbulojë.
>> Këto komanda janë renditur këtu në mënyrë në të cilën unë zakonisht përdorin ato.
Kështu që unë të fillojë programin tim duke xhiruar GBD. / Emri i programit,
në këtë rast, Cezari.
Dhe atëherë gjëja e parë që bëj 99,9% e afatit të thotë pushim lloji.
Kjo përcakton një pikë pushim në kryesore.
Në thelb, çfarë jeni duke bërë atje është program do të ndalemi në
kryesore kështu që ju mund të filloni duke shqyrtuar atë linjë pas rreshti, në vend se duke të gjithë
mënyrë përmes.
Ju mund të shpërthejë në pika të ndryshme në kodin tuaj, por kryesore është në përgjithësi një
vend i mirë për të filluar.
>> Komanda e ardhshme kam drejtuar eshte drejtuar.
Që fillon programin drejtimin, dhe në qoftë se keni nevojë për të hyrë në command line
argumente, ju drejtuar atë në këtë komandë.
Run me argumentet.
Kështu që ne jemi duke shkuar mbi një version e C, e cila është programi ju djema
shkroi për pset dy -
kjo, natyrisht, ka disa bugs në atë që shpresojmë se ne do të gjeni -
ne jemi duke shkuar për të drejtuar drejtuar me një komandë Argumentet e linjës sepse Cezari,
si ju djema e di per problemin vendosur spekulim, merr disa
argumente të komandës.
>> Çifti tjetër i komandave, tjetër njëra quhet në të vërtetë tjetër.
Që e merr ju rresht pas rreshti përmes programit tuaj.
Pra goditur n pastaj Shkruani ju merr në rreshtin tjetër, ekzekutimin e
linjë e mëparshme.
Hapi ju merr jo vetëm për të linjë tjetër, por ajo
ju merr funksione brenda.
Pra, nëse ju keni shkruar një funksion në Kodi juaj ose në qoftë se ju doni të shqyrtuar një
për të i, për shembull, ju mund të goditur s, dhe në vend se do të rreshtin tjetër të
fotografi që ju jeni duke kaluar djathta tani, ju do të vërtetë të futemi në
ky funksion dhe shikoni kodin e saj.
>> Lista ju tregon se, në shumë përdorues miqësore format, 10 apo më shumë linja rreth
ku aktualisht jeni në kodin tuaj kështu që ju mund të vërtetë të shihni fotografi
në vend që të bie në ujdi mbrapa dhe radhë dhe në mes pikëpamjeve të ndryshme.
Print është si printf, si emrin e saj nënkupton.
Kjo ju tregon se çfarë është e barabartë me një ndryshore.
>> Vendasit Info është me të vërtetë e dobishme.
Ky është një version të veçantë të shtypura.
Vendasit Info ju tregon të gjitha të lokale variablave, printime nxori jashtë të gjithë për ju
që janë aktualisht në dispozicion.
Kështu që unë në përgjithësi, në vend që të shtypura nga katër variablave qe jam
kurioz se në qoftë se unë jam në një për lak, për shembull, unë vetëm shkruaj vendasit info,
dhe ai do të më se çfarë counter kam im tregojnë barabartë, si dhe grup qe I jam
duke punuar në të barabartëve.
>> Së fundi, të vazhdojë.
Pushim Typing ju ndalon në pikë pushim.
Ju mund të ecin përmes linjës nga Linja me e ardhshme dhe hap.
Vazhdo shkon programit të ardhshëm tuaj pikë të thyer ose deri përfundimin nëse
nuk ka më shumë pikë pushim.
Disable heq pika pushim në qoftë se ju vendosi në pushim kryesor ishte
papërshtatshme, ju doni të vendosur atë diku tjetër.
Dhe së fundi q, lë, merr nga të gdb.
>> Pra ky program,. / Cezari, ne do të shoh nga tani dhe ne
do të përdorni gdb për të gjetur mete në këtë program.
Unë u zhvillua këtë program më parë me Kontrolloni 50, dhe kam marrë një vrenjt.
Çdo gjë ka ekzistuar, ajo hartuar, ajo kaluar një shumë të testeve, por për
disa arsye, ajo nuk e kaloi pesta Testi, duke e kthyer BARFOO, të gjitha shkronja kapitale, në
E-D-U-I-R-R, gjitha kapele, duke përdorur tre si një çelës.
I kam shumë afër.
Zbrita nga një letër.
Pra, ka një gabim i vogël në këtu.
Unë e kam shikuar nëpër kodin tim.
Unë nuk mund ta kuptoj atë.
Shpresojmë, ju djema mund të më ndihmoni kuptoj se çfarë është ky bug.
>> Pra, kjo është gabim ne jemi kërkoni për.
Le të shkojë në gdb.
Përsëri, unë kam drejtuar gdb. / Cezarit, kështu që tani ne jemi në gdb.
Dhe ajo që është e para gjë që unë duhet të bëj?
Unë kam hyrë vetëm gdb.
Dikush më jep një të mirë Komanda për të hyrë.
>> STUDENT: Pushim kryesore.
>> JASON HIRSCHHORN: Pushim kryesore.
Sporte.
Le të tipit se in
Ju djema mund të shikojnë këtu ose të ndjekin së bashku në kompjuterat tuaj.
Pushim kryesore, dhe ju do të shihni një pikë pushim ishte vendosur në -
kjo më jep një adresë e pazakontë e kujtesës, dhe ajo gjithashtu më jep numrin e linjës.
Nëse unë do të shikojnë prapa në këtë dosje, Unë do të kuptojë se Main
ndodhi on line 21.
Çfarë duhet të kandidojë e ardhshme?
A është programi im running?
Jo.
Pra, çfarë duhet të kandidojë e ardhshme?
>> STUDENT: Run.
>> JASON HIRSCHHORN: Run.
A duhet të vetëm të drejtuar drejtuar, ose duhet Të shtoj disa gjëra të tjera në të?
>> STUDENT: Run me argumentin.
>> JASON HIRSCHHORN: Run me argumentet komandës.
Dhe pasi që unë jam debugging një shumë të veçantë rast, unë duhet të futeni në atë
command line argumenti.
Kështu që unë do të do të kandidojë tre, e cila është, përsëri, Prodhimi kam marrë nga Kontrollo 50.
Duke filluar programin.
Ne kalojnë nëpër një çift të linjave.
Ju tani do të shihni se ne jemi on line 21.
Si mund ta di se ne jemi on line 21?
Sepse në qoftë se ju shikoni në të majtë e dritares sime terminalit, ekziston
ai thotë linjë 21.
Dhe kjo i jep më, në të vërtetë, kodin që është në përputhje 21.
Kështu që unë misspoke më parë.
Kryesor nuk është në të vërtetë në linjë 21.
Kryesor është një çift i linjave më lart 21.
Por në linjë 21, kjo është ku ne jemi thyer.
Kjo linjë e kodit ka nuk ekzekutuar ende.
Kjo është e rëndësishme.
Linja e shihni nuk ka është ekzekutuar ende.
Kjo është vija e ardhshme e kodit ju jeni gati për të ekzekutuar.
>> Kështu linjë tjetër, si ju djema janë ndoshta të njohur me të, është ky
kusht i kontrolluar për të parë nëse unë kam hyri në një argument të command line.
Dhe një për të i, çfarë është e dytë pjese e se duke bërë?
Çfarë është për të i?
>> STUDENT: Ndryshimi atë në një numër të plotë.
>> JASON HIRSCHHORN: Na vjen keq?
>> STUDENT: Është ndryshuar argumenti që një numër të plotë.
>> JASON HIRSCHHORN: Pra, a të i ndryshon arg v1 nga një varg në një numër të plotë.
Dhe pastaj çfarë është ajo kontrolluar?
>> STUDENT: Nëse ka një të dytë Argumenti command line, mënjanë
nga drejtimin e programit.
>> JASON HIRSCHHORN: Dhe çfarë është gjysma e dytë e këtij
Shprehje boolean kontrolluar?
Kjo pjesë mbi këtu, një për të i?
>> STUDENT: Nëse kjo është negative.
>> JASON HIRSCHHORN: Marrja e sigurt se çfarë?
>> STUDENT: Duke u siguruar se është, në fakt, pozitive.
>> JASON HIRSCHHORN: Pikërisht.
Kjo është e kontrolluar për të parë nëse është e negative, dhe nëse ajo është negative, unë
kanë një ndjenjë fuqinë e ardhshme linjë të yelling në mua të përdoruesit.
Pra, le të goditur fund për të ekzekutuar këtë linjë.
Ne nuk e shohim atë linjë që ju djema ndoshta pritet për të parë yelling në
përdoruesit dhe pastaj të kthehen, sepse kjo linjë nuk ka ekzekutuar.
Unë hyra 3.
Kështu që unë kam, në fakt, të hyjë në komandën dy Argumentet e linjës, dhe 3 është
madh se zero.
Pra, ne pamë këtë linjë, ne kemi ekzekutuar, por ne nuk e hap
brenda nëse kusht.
>> Deri tani, të ardhshëm, unë shoh unë jam vendosjen e kryesore int barabartë me një të i Arg V1.
Kështu që unë krijuar një kyç të ndryshueshme.
Pra, nëse unë të shtypura nga çelësin tani, sepse që ju lejon të shihni
vlera brenda variabël, Çelësi është e barabartë me 47.
Kjo është e pazakontë, por natyrisht, kjo është për shkak se unë nuk kanë
ekzekutuar këtë linjë ende.
Deri tani, nëse unë goditi n, ekzekutuar këtë linjë, dhe të bëjë kyç të shtypura, kyç do të barabarta 3,
e cila është ajo që ne presim që ajo të barabartë.
>> Pra, përsëri, në gdb, vijën ju të parë ju nuk e keni ekzekutuar ende.
Ju duhet të goditur n ose s ose një numër e komandave të tjera në të vërtetë
ekzekutuar këtë linjë.
Print kyç.
-Të kryesore në 3.
Deri më tani, në mënyrë të mirë.
String është tekst i thjeshtë.
Le të ekzekutuar këtë linjë.
Unë jam duke marrë një varg nga përdoruesit.
>> Le të shohim in Check time 50, kam hyjnë BARFOO të gjitha shkronja kapitale, kështu
kjo është ajo që unë do të hyjë.
Nëse unë tani të shtypura tekst të thjeshtë.
Ju do të shihni se është e barabartë me një varg.
Kjo më jep një hexadecimal tjetër pazakontë numër, por ajo ka në
Fakti thonë se string im është BARFOO.
Nëse unë të kërkuar për të parë se çfarë kyç barabartë në këtë pikë, si mund të kontrolloni kyç?
>> STUDENT: Printo kyç.
>> JASON HIRSCHHORN: Printo kyç, saktësisht.
Dhe në të vërtetë, ka një shkurtore.
Nëse ju merrni lodhur të shtypni të shtypura, ju thjesht mund të shtypni p.
Pra p kyç e bën të njëjtën gjë e saktë.
Dhe përsëri, unë shoh se është e barabartë me 3.
>> Nëse unë të kërkuar për të gjetur se çfarë të dy çelës dhe BARFOO barabartë në të njëjtën kohë
por unë isha i lodhur nga shtypja e çdo një në mënyrë individuale, kam
mund të tipit vendasit info.
Kjo më jep të barabartëve kryesore 3.
Tekst i thjeshtë është e barabartë BARFOO.
Ajo gjithashtu jep këto dy gjëra të çuditshme në krye, ky i variable dhe
kjo n variabël.
>> Ata në të vërtetë janë ekzistuese në programin tim kryesor.
Ne nuk e kemi hasur ato ende, por si një vrojtim, ata
ekzistojnë në tim për lak.
Deri tani, ata të barabartë disa pazakontë Numrat për shkak se ata nuk kanë qenë të
initialized, por ata nuk ekzistojnë ende në kujtesën, kështu që ata janë të vendosur vetëm
për disa vlera e plehrave.
Por ne e shohim kyç në plain tekst të drejtë atje.
>> Kështu që unë jam duke shkuar për të ekzekutuar këtë linjë, Linja 34, për loop.
Ne jemi do të hidhen në për lak nga goditur n.
Dhe ne jemi brenda për lak.
Ne jemi në kontroll tonë të parë.
Dhe përsëri, këto duhet të lloj të duken të njohura për ju, sepse kjo ishte një
Program Caesar që është shkruar, por përsëri, ka disa lloj bug.
>> Dhe tani, nëse unë bëj vendasit info, sepse unë jam i brenda se për lak, ju do të shihni
se i barabartë me zero, si ne presim.
Kjo është ajo që ne kemi vendosur atë për të dhe të initialized atë për të në për lak.
n është e barabartë me 6.
Kjo gjithashtu ka kuptim, sepse ne kemi vendosur atë në strlen e tekst të thjeshtë.
Kështu që unë doja të bëjë vendasit info ose të shtypura për variablin shpesh për të siguruar që
çdo gjë është gjithmonë ajo që Unë pres që ajo të barabartë.
Në këtë rast, çdo gjë është e ajo që unë pres që ajo të barabartë.
>> Pra, le të fillojnë të lëvizin përmes kjo për lak.
Linja Unë jam në është linjë 36, nëse thjeshtë Teksti i është më i madh se një dhe të thjeshtë
tekst i është më pak se ose e barabartë me Z.
Unë e di se problemi im nuk eshte me im i parë letër, kjo është me shkronjën e dytë.
Nëse shikojmë mbrapa në Kontrollo 50, B shkon E gjobë.
Unë jam duke marrë A dhe duke e lënë atë si një A, nuk e ndryshon atë në D. Pra
diçka është e gabuar me letra e dytë.
Kështu që unë jam duke shkuar për të lëvizur atje në një të dytë.
>> Por në qoftë se unë kam dashur të shikoni se çfarë të qartë Teksti I barabartë në këtë të veçantë
rast, unë mendoj se duhet të jetë ajo?
Çfarë duhet tekst të thjeshtë të krahasoj në këtë Raundi i parë përmes për lak?
>> STUDENT: Zero?
>> JASON HIRSCHHORN: Tekst i thjeshtë i I?
Kështu që ajo duhet të jetë kryeqyteti B. Unë, natyrisht, është e barabartë me zero, por teksti të thjeshtë
kllapa zero kllapa e mbyllur është e barabartë me B sepse vargjet, siç e pamë javën e kaluar,
janë grup, kështu që ne jemi duke marrë karakteri i parë nga ajo.
Pra, përsëri, në qoftë se unë të shtypura nga plain text e Unë, unë, në fakt, të marrë karakterin
B. Dhe kjo është zoti, e drejtë?
Unë në fakt nuk kanë tekst të thjeshtë I. Kjo nuk është një nga variablat I përcaktuara
ose initialized, por ju mund të shtypura nga një mori e tërë e gjërave
në qoftë se ju dëshironi të.
>> Por le të lëvizë nëpër.
Nëse teksti të thjeshtë unë është më e madhe se A dhe tekst i thjeshtë unë është më pak se ose e barabartë me
Z, që në mënyrë të qartë është e vërtetë, sepse ne kemi një B. Kapitali unë jam duke shkuar për të drejtuar
disa komanda mbi të.
Ne pamë se matematikë javën e kaluar, kështu që ne do të të marrë atë për të dhënë se ajo punon
drejtë sipas Kontrollo 50.
>> Këto formatimin e teksteve kaçurrel, i pari tregoi se isha daljes nëse
kusht, e dyta tregoi që unë jam daljes për lak.
Dhe kështu që tani kur goditi Tjetra, ne do të shohim ne jemi kthyer në për lak përsëri.
Ne jemi duke shkuar nëpër për lak përsëri.
Le të vërtetë hap në të dytin përsëritje e për lak dhe lloji
vendasit info.
>> Pra, ne jemi në përsëritje të dytë e lak tonë për.
I është e barabartë me 1, të cilat ne presim.
N e barabartë me 6, të cilat ne presim.
Key është e barabartë me 3, të cilat ne presim.
Dhe teksti të thjeshtë, që ju do të shihni, është e barabartë me EARFOO tani, nuk BARFOO më, sepse
në përsëritje tona të mëparshme, B ishte ndryshuar me një kapital E. Pra, ne jemi gati
të ndeshen me problemin, kështu që kjo është ajo ku ne jemi duke shkuar për të
të zhyten në debugging.
Por a ka dikush ndonjë pyetje në lidhje me atë që ne kemi bërë deri më tani?
Sporte.
>> Pra, ne jemi gati për të ekzekutuar këtë nëse kusht, kllapa Tekst i thjeshtë I mbyllur
simboli më i madh se A dhe tekst të thjeshtë unë më pak se ose e barabartë me Z. Por, para se të
Unë shkoj në atë, sepse ky është vendi ku Unë e di se gabimi im është, unë dua të theksoj
nga tekst të thjeshtë e I. Pra, le të vënë të shtypura jashtë.
Ai e bën të barabartë me karakter A, në mënyrë që duket deri më tani, të gjitha është e mirë dhe të mirë.
>> Kështu që unë pres këtë linjë për logjikën time, kjo linjë duhet të jetë e vërtetë.
Kjo është një letër e kapitalit.
Por në qoftë se unë goditi n, ne e kuptojnë se kjo line, në fakt, nuk ka ekzekutuar.
Unë u hodh poshtë në tjetër në qoftë se.
Pse ka që të ndodhë?
>> STUDENT: Për shkak se ju keni gjendja juaj e tekst të thjeshtë është më i madh
se A, jo i barabartë ose më e madhe se.
>> JASON HIRSCHHORN: Pra, unë kam tekstin tim të thjeshtë I është më i madh se A nuk, madhe
se ose e barabartë me.
Pra, në mënyrë të qartë, kapitali A nuk e bëri shkaktojnë këtë në qoftë se kusht, dhe ne e bëmë
mos hap në të, dhe ne e bëmë nuk e bëjmë ndryshimin e nevojshëm.
Pra, kjo është ajo, në të vërtetë.
Unë me motive nga bug time.
Unë mund të kthehem në dosjen time burim, ndryshuar atë, dhe update it dhe
drejtuar Kontrolloni përsëri 50.
>> Por ne do të shohim, vetëm për pedagogji-së hir, në qoftë se unë do të mbajë.
Tjetër në qoftë se nuk zbaton as, por në vend të kësaj ajo është e barabartë është komanda
që nuk ndryshon.
Pra, kjo nuk është ndryshuar në të gjitha, dhe në qoftë se unë të shtypur tekst të thjeshtë këtu, ne do të shohim do
përmes se për lak nuk ka, në fakt, ndryshojë këtë karakter të dytë në të gjitha.
Kjo është ende një kapital A.
>> Pra, përsëri, ne debugged gabim tonë.
Ne kemi kuptuar se ka pasur disa logjikë të humbur.
Dhe ne debugged atë para kohe para se në fakt ekzekutimin atë linjë,
por ju do të keni vënë re që sapo kishte goditur Next dhe hidhen në se tjetër në qoftë se,
që nënkupton se që nëse kusht nuk ishte e vërtetë.
Ne nuk e, në fakt, të marrë Rezultati ne prisnim.
Pra, atëherë ne do të mund të nxitet, kishte ne nuk qenë aq i zgjuar, për të parë në
se nëse gjendja dhe kontrolloni nëse, në fakt, gjendja jonë duhet të vlerësojë të
e vërtetë në kontekstin aktual.
>> Kjo është e gjitha për debugging këtë program.
A ka dikush ndonjë pyetje?
Çfarë komandë mund të i goditi të lë gdb?
Pyetje: Dhe pastaj unë do të nxitet, lë anyway?
Po ose jo.
Unë do të goditur po, dhe unë do të kanë lënë gdb.
>> Kështu që ishte një abetare të shpejtë për të gdb.
Në fakt, në një skenar të vërtetë, Unë e bëri këtë në orarit të punës.
Unë GDBed këtë program të saktë në orarit të punës me një student.
Dhe në qoftë se ne të kthehemi në komandat pamë para, ne kemi përdorur break kryesore, së pari
gjë ne e bëmë.
Ne kemi përdorur të drejtuar me argumente command line, Gjëja e dytë që ne e bëmë.
Ne kemi përdorur një shumë tjetër për të lëvizur Na përmes linjave.
Dhe përsëri, short version i ardhshëm është n.
Kjo është në kllapa në gri në rrëshqitje.
>> Ne nuk e përdorim hap, por ne nuk e bëri domosdoshmërisht duhet të për këtë rast.
Por ne mund të përdorin atë në pak më vonë më sot, nëse ne jemi të debugging, për
shembull, kërko binar kur binar kërko është quajtur në një të veçantë
funksion por ka disa gabim me të.
Ne do të duan të futemi në thirrje për kërkim binar dhe
në fakt korrigjoj atë.
Lista e ne nuk e përdorim ose për shkak se kemi pasur një sens të mirë të kodit tonë, por në qoftë se unë
ka dashur të marrë një kuptim të asaj që unë Kodi ishte rreth, unë mund të përdorni thjesht liste.
>> Print kemi përdorur, vendasit info ne përdorur.
Vazhdo ne nuk kemi nevojë për të përdorur në këtë rast, as nuk kemi nevojë për të përdorur
disable, por ne e bëmë përdorimi lë.
Përsëri, këto 10 komanda, i kryejnë.
Po t'i dini këto 10 komanda, ju duhet të jetë vendosur për debugging çdo
nxjerrë me gdb.
>> Pra, ne jemi gati për të shkuar në, përsëri, për të Thelbi i nenit sot, duke shkuar mbi
këto klasifikim dhe kërkim algoritme.
Para se të bëni këtë, sërish, ndonjë pyetje, komente, shqetësimet për gdb?
Pra, është e të gjithë do të përdorin Gdb vend se printf?
Kështu që të gjithë, për hir të së përjetësi, të gjithë është nodding të drejtën e tyre kokë
tani, kështu që unë do të të shoh në orarit të punës dhe të gjitha NGP do t'ju shoh dhe
ata do të thonë, më tregoni se si të përdorin Gdb, dhe ju do keni të drejtë
për të treguar atyre, apo jo?
Lloji i?
Ndoshta me shpresë.
Ftohtë.
>> Pra, ne jemi duke shkuar për të lëvizur në klasifikim dhe në kërkim.
Ju do të shihni se unë kam një listë tashmë të renditura për ne, por që nuk do
të jetë rasti gjithmonë.
Pra, në këtë problem të vendosur specifikime për Problemi vendosur tre, ju keni pantallona të shkurtra
që ju mund të shikojnë, dhe ai në fakt ju pyet për të parë ato pantallona të shkurtra.
Gjithashtu në leksion javën e kaluar, kemi shkuar mbi një shumë prej këtyre algoritmeve, kështu që unë jam
nuk do të kalojnë kohë në klasë do mbi këto algoritme përsëri apo vizatim
fotot për mënyrën se si këto algoritme të punojnë.
Përsëri, që informacioni që ju mund të ri-shikojnë leksion, apo që informacioni
është kapur outstandingly në pantallona të shkurtra për këto kërkime, të gjitha të
të cilat janë në dispozicion në cs50.net.
>> Pra në vend të kësaj, ajo që ne jemi duke shkuar për bëni është të shkruani këto programe.
Ne kemi një kuptim, një model mendore, se si ata punojnë, dhe kështu që ajo që ne jemi duke shkuar
të bëni është kodin e tyre për të vërtetë.
Ne jemi duke shkuar për ta kthyer atë model mendor, se foto, në qoftë se ju do të, në
Kodi aktual.
Dhe në qoftë se keni qenë pak i hutuar apo i mjegullt në modelin mendor, unë plotësisht
kuptojnë.
>> Ne nuk jemi të vërtetë do të hidhen në kodin vijë të drejtë.
Kështu, ndërsa kjo të shpejtë në këtë rrëshqitje pyet ju të kodit kërko binar, dhe
në të vërtetë, një version përsëritës i kërko binar, gjëja e parë që
me të vërtetë dua që ju të bëni është të shkruani disa pseudokod.
Pra, ju keni këtë model mendor se si binar punon kërkimit.
Merrni nga një fletë letre, nëse ju keni një të gatshme në dispozicion, ose të hapur një
editor teksti, dhe unë do të doja të gjithë për të shkruar.
Merrni katër minuta për të shkruar pseudokod për kërkimin binar.
>> Përsëri, mendoj se për atë model mendore.
Unë do të vijnë rreth në qoftë se keni pyetje dhe ne mund të vizatohet figura e jashtë.
Por së pari, para se të fillojmë programimin, Unë do të doja të shkruaj
pseudokod për kërkimin binar kështu kur ne pikiatë në, ne kemi disa drejtim si
për ku duhet të shkojnë.
>> STUDENT: A mund të marrë sërë Vlerat që ne të merrni të zgjidhet tashmë?
>> JASON HIRSCHHORN: Pra, për kërkimin binar për të punuar - pyetje të shkëlqyer - ju
duhet të marrë në një renditura Grup i vlerave.
Pra, supozojmë se do të punojë.
Ne do të kthehemi në këtë rrëshqitje.
Ju do të shihni në ngjyrë vjollcë funksion Deklarata është bool binary_search int
vlerë, vlerat int, int n.
Kjo duhet të duket e njohur në qoftë se ju keni tashmë iu afrua ose të marrë tuaj
duart e pista me grupin e problemeve.
>> Por kjo është deklarata juaj funksion.
Përsëri, nuk duhet të duhet të shqetësohen për se shumë në këtë moment.
Ajo që unë me të vërtetë dua që ju të bëni është të marrë katër minuta në binar pseudokod
kërko, dhe pastaj ne do të shkojnë mbi se si një grup.
Dhe unë do të vijnë rreth.
Nëse keni pyetje, të ndjehen të lirë për të ngritur dorën.
>> Pse nuk ju merrni dy minuta më shumë për të përfunduar deri pseudokod?
Unë e di kjo mund të duket qesharake që ne jemi duke kaluar aq shumë kohë në
diçka që nuk është edhe në të vërtetë në C, por sidomos për këto më shumë
algoritme sfiduese dhe problemi vendos që ne duhet të kuptoj se,
duke filluar në pseudokod jo shqetësuese në lidhje me sintaksë, vetëm shqetësuese në lidhje me
logjika, është tepër e dobishme.
Dhe në këtë mënyrë, ju nuk jeni zgjidhjen e dy probleme tepër të vështira në të njëjtën kohë.
Ju jeni vetëm duke u fokusuar në logjikën, dhe atëherë ju hyni në sintaksë.
>> OK.
Le të fillojmë duke kaluar pseudokod.
Unë kam shkruar deri këtu, binar kërko pseudokod.
Ne do të shkruaj këtë në bordit së bashku.
Ose unë do të shkruaj atë dhe ju do të jepni më bën kam nevojë.
Pra, mund dikush të më jepni parë Linja e pseudokod ju
shkroi për kërkimin binar?
Po, Annie?
>> STUDENT: Ndërsa gjatësia e Lista është më i madh se zero.
>> JASON HIRSCHHORN: Ndërsa gjatësia nga lista më i madh se zero.
Dhe përsëri, ne shohim disa C-në kërkim gjëra sintaksore në këtu.
Por shumica e kjo është në gjuhën angleze.
A ka dikush ndonjë linjë të vënë para kësaj në pseudo-kodin e tyre?
>> STUDENT: Merrni një rrjet të renditura numra.
>> JASON HIRSCHHORN: Ju ka shkruar "të marrë një grup i numrave të renditura. "Per
Deklarata funksion, ne do të jemi duke kaluar një grup i numrave të renditura.
>> STUDENT: [padëgjueshme].
>> JASON HIRSCHHORN: Pra, ne do të kemi atë.
Por po, në qoftë se ne nuk e kemi këtë, ne do të duhet të lloj grup tonë të
Numrat, sepse kërko binar punon vetëm në vargjeve të renditura.
Kështu, ndërsa gjatësia e listës është e barabartë me zero, unë jam i do të vënë në disa formatimin e teksteve kaçurrel
për ta bërë atë të duket pak më shumë si C. Por, ndërkohë, duket se mbi një hartë
ndërsa lak, kështu që brenda kësaj kohë loop çfarë nuk kemi nevojë për të
të bëjë për kërkimin binar?
>> Dikush tjetër që nuk e ka dhënë një përgjigjur ende, por i cili ka shkruar këtë?
>> STUDENT: Shko në mes të listës.
>> JASON HIRSCHHORN: Tom.
Shko në mes të listës.
Dhe pyetja e follow-up, çfarë do të bëjmë një herë ne jemi në
mes të listës?
>> STUDENT: A një kontroll qoftë që është e numri ju po kërkoni.
>> JASON HIRSCHHORN: Excellent.
Shko pjesën qëndrore të listës dhe të kontrolloni në qoftë se vlera jonë është atje -
fantastike.
A ka dikush ndonjë gjë tjetër që ishte e ndryshme se sa kjo?
Kjo është saktësisht e drejtë.
>> Gjëja e parë që ne bëjmë në kërkim binar është të shkoni në mes të listës dhe
kontrolloni për të parë nëse vlera jonë është atje.
Kështu që unë të marrë në qoftë se vlera jonë është e atje, çfarë bëjmë ne?
>> STUDENT: Ne kthim zero [padëgjueshme].
>> JASON HIRSCHHORN: Po, në qoftë tonë vlerë është atje, kemi gjetur atë.
Pra, ne mund të them disa mënyra, megjithatë kjo funksion është i përcaktuar, themi përdoruesin
kemi gjetur atë.
Nëse nuk është atje, edhe pse, kjo është ku kjo merr ndërlikuar.
Pra, në qoftë se ajo nuk është aty, dikush tjetër i cili ishte duke punuar në kërkim binar ose
ka një ide tani, çfarë bëjmë ne?
>> STUDENT: Pyetje.
>> JASON HIRSCHHORN: Po?
>> STUDENT: A është array renditura tashmë?
>> JASON HIRSCHHORN: Po, ne jemi duke supozuar array është renditur tashmë.
>> STUDENT: Pra, atëherë ju duhet të kontrolloni nëse vlera që ju shikoni është më i madh se
vlera që ju dëshironi, ju mund të lëvizin në mes të gjysmës tjetër.
>> JASON HIRSCHHORN: Pra, nëse në mes të lista është më e madhe se ajo që ne jemi
kërkoni, atëherë ne bëjmë atë?
Ne shkojmë ku?
>> STUDENT: Ju doni të hyni në gjysma lista me
Numrat më të ulëta se kaq.
>> JASON HIRSCHHORN: Pra, ne do të telefononi se e majta.
Pra, në qoftë se e mesme është më e madhe, ne mund të kërkoni gjysma e majtë të listës.
Dhe pastaj nga kërkimi, çfarë mund të thotë nga kerkimi?
>> STUDENT: [padëgjueshme].
>> JASON HIRSCHHORN: Ne do të shkojmë në mes.
Ne fakt përsëris këtë gjë.
Ne do të shkojmë prapa përmes lak tonë ndërsa.
Unë do të ju jap një të fundit -
tjetër, në qoftë se, e mesme është më pak se ajo që ne bëjmë, çfarë bëjmë ne këtu?
>> STUDENT: Shko në të djathtë.
>> JASON HIRSCHHORN: Kërkoni të drejtën.
Kjo duket e mirë, por dikush ndonjë gjë që ne mund të mungojnë ose
çdo gjë tjetër që ju të vendosni në pseudo-kodin tuaj?
Pra, kjo është ajo që ne kemi deri më tani.
Ndërsa gjatësia e listës është më i madh se zero, ne jemi duke shkuar për të shkuar
në mes të listës dhe kontrolloni nëse vlera jonë është atje.
>> Në qoftë se e mesme është më e madhe, ne do të kërko majtë, tjetër në qoftë se e mesme është
më pak, ne jemi duke shkuar për të kërkuar të drejtën.
Pra, ne kemi pasur të gjithë janë familiarizuar me termat që përdorim në shkenca kompjuterike
dhe mjetet ne kemi.
Por ju do të vini re tashmë ishim duke folur në anglisht, por kemi gjetur një
shumë gjëra që dukej për të hartë për të mjetet që kemi në tonë coding kit mjet.
Pra të drejtë të fjalës, ne nuk jemi do të të vërtetë kodin ende.
>> Çfarë ne shohim këtu në anglisht që hartat mbi të gjërat që ne mund të shkruani në C?
>> STUDENT: Përderisa.
>> JASON HIRSCHHORN: Përderisa.
Pra, kjo, ndërsa të drejtë këtu harta për të çfarë?
>> STUDENT: A loop ndërsa.
>> JASON HIRSCHHORN: Një lak ndërsa?
Ose ndoshta, më në përgjithësi, një lak.
Ne duam të bëjmë diçka pa pushim.
Pra, ne jemi duke shkuar për të kodit një lak.
Dhe ne tashmë e dimë, sepse ne kemi bërë këtë disa herë dhe ne
kemi mjaft shembuj atje, se si në të vërtetë për të shkruar
ky indeks për një lak.
Kështu që duhet të jetë goxha e lehtë.
Ne duhet të jetë në gjendje për të marrë atë filloi shumë shpejt.
>> Çfarë tjetër do të shohim në këtu?
Çfarë tjetër strukturat syntaxes, gjërat se ne jemi të njohur me të në C, bëjmë ne
tashmë kanë një ndjenjë të Bazuar off nga fjalët që ne të përdorura?
Po, Anna?
[Padëgjueshme]
just kidding.
Anna, të shkojnë përpara.
>> STUDENT: Nëse dhe tjetër.
>> JASON HIRSCHHORN: Nëse dhe tjetër - të drejtë këtu.
Pra, çfarë ato duken si?
>> STUDENT: Një, nëse deklaratë tjetër.
>> JASON HIRSCHHORN: Po, kushtet, e drejtë?
Pra, ne ndoshta do të duhet të shkruani disa kushte.
Dhe përsëri, edhe pse ndoshta konfuze në së pari, ne përgjithësi kanë një kuptim tani
se si të shkruaj kushtet dhe sintaksë për kushtet.
Dhe nëse ne nuk e bëjmë, ne vetëm të kërkoni Sintaksa për kushtet, prerë dhe ngjitur
se, sepse ne e dimë ne duhet një kusht këtu.
Çdo gjë tjetër që shohim atë hartë mbi gjërat që ne mund të kenë nevojë për të bërë në C?
Po, Aleha?
>> STUDENT: Kjo mund të jetë e qartë, nga vetëm kontrolluar nëse një
vlera e barabartë me diçka.
>> JASON HIRSCHHORN: Deri sa nuk kemi kontrolluar dhe - kështu që të shkojnë në mes të listës
dhe kontrolloni nëse vlera jonë është atje?
Si mund ta bëjë këtë në C?
Çfarë është sintaksë për këtë?
>> STUDENT: barabartë, është e barabartë.
>> JASON HIRSCHHORN: barabartë, është e barabartë.
Pra, ky kontroll është ndoshta do të jetë një të barabartë, është e barabartë.
Pra, ne do të dimë ne kemi nevojë për atë diku.
Dhe në të vërtetë, vetëm me shkrim atë, ne shohim ato gjëra të tjera.
Ne do të duhet të bëjë disa operatorët krahasim në atje -
fantastike.
Pra, ai në fakt duket si, dhe nga një i madh, ne nuk e kemi shkruar
Fjala e kodit C ende.
Por kemi marrë modelin mendor poshtë nëpërmjet leksioneve dhe ato pantallona të shkurtra.
>> Ne shkroi pseudo-kod si grup.
Dhe tashmë, ne kemi 80% nëse nuk 90% e asaj që ne duhet të bëjmë.
Tani, ne vetëm duhet të kodit ajo, që përsëri, është një
Problemi i jo-parëndësishëm për të zgjidhur.
Por të paktën ne jemi të mbërthyer në logjikën.
Të paktën tani kur të shkojmë për të orarit të punës, Unë mund të them, unë e di se çfarë kam nevojë
për të bërë, por mund të ju kujtoj më i sintaksës?
Ose edhe nëse orarit të punës janë të mbushur me njerëz, ju mund të Google për të sintaksës, në vend
se sa të mbërthyer në logjikën.
>> Dhe përsëri, në vend se duke u përpjekur për të zgjidhur logjika dhe problemet sintaksore të gjitha
në të njëjtën kohë, ajo është shpesh shumë më mirë për të thyer këto dy probleme të vështira jashtë në
Dy ato më të dëgjueshëm dhe të bëjë pseudo-kod të parë dhe pastaj kodi në C.
Pra, le të shohim se çfarë kam bërë për pseudo-kod para kohe.
>> Ndërsa gjatësia e listës është më i madh se zero, shikoni në mes
lista.
Nëse numri i gjeti kthehet e vërtetë, tjetër në qoftë se numri më i lartë, kërko majtë.
Tjetër në qoftë se numri i ulët, kërko drejtë, kthimit të rreme.
Kështu që duket pothuajse të njëjta, nëse nuk pothuajse identike me atë që kemi shkruar.
Në fakt, Tom, ajo që keni thënë për herë të parë, thyer në mes të listës dhe nëse
Numri i gjetur në dy deklarata është në të vërtetë ajo që kam bërë.
>> I kombinuar ato atje.
Unë duhet të ketë dëgjuar ju hera e parë.
Kështu që është pseudo-kod ne kemi.
Nëse ju doni të tani, sorry, shko mbështetur për problemin tonë fillestar.
Le kodin binary.c.
Pra, të zbatuar një version përsëritës të kërko binar duke përdorur sa më poshtë
deklaratë funksion.
>> Dhe ju nuk keni nevojë për kopje ajo vetëm ende poshtë.
Unë në fakt jam duke shkuar për të hapur deri këtu binary.c.
Pra, ka deklarata funksioni në mes të ekranit.
Dhe ju do të shihni mora pseudo-kod nga në anët e mia, por pothuajse identike
për çfarë kemi shkruar, dhe vënë atë në për ju.
Deri tani, le të marrin pesë minuta të kodit këtë funksion.
>> Dhe përsëri, në qoftë se ju keni ndonjë pyetje, ngrini dorën, let me know, unë do
vijnë rreth.
>> STUDENT: [padëgjueshme].
>> JASON HIRSCHHORN: Pastaj e mora binare kërko përkufizim në
krye, on line 12.
Kjo është ajo që kam marrë për rrëshqitje tim.
Dhe pastaj të gjithë pseudo-kod këtë unë vetëm kopjoni dhe të ngjit nga rrëshqitje,
pseudo-kod rrëshqitje.
Unë jam ende nuk e dëgjimit [padëgjueshme].
>> Pra, nëse ju keni përfunduar tuaj zbatimi, unë dua të kontrolloni atë.
Unë ju emailed file helpers.h më herët në këtë klasë.
Dhe kjo do të jetë në dispozicion online, si dhe për shkarkim për njerëzit shikuar
këtë herë seksion vonuar.
Dhe unë vetëm përdorur shpërndarjen gjenerike Kodi nga pset3.
Kështu që unë u find.C, përdorni dosjen time helpers.h në vend se dosjes helpers.h
që është dhënë në kodin e shpërndarjes.
>> Dhe unë kam për të bërë një ndryshim tjetër në find.C në vend se duke e quajtur thjesht
kërko, telefononi binary_search.
Pra, nëse ju doni të testuar kodin tuaj, e di se kjo është se si të bëhet kjo.
Në fakt, kur ne do të konkurrojnë këtë kod tani, unë vetëm e bëri një kopje të
Lista ime pset3, përsëri, swapped nga dosjet ndihmëtarë dhe pastaj e bëri që
ndryshojë në find.C për të thirrur binary_search në vend se thjesht kërkoni.
>> JASON HIRSCHHORN: Po.
Ju keni një pyetje?
>> STUDENT: Nevermind.
>> JASON HIRSCHHORN: Nuk ka shqetësime.
E pra, le të ketë filluar.
Ne do të kodojnë këtë si një grup.
Në një lajm tjetër.
Përsëri, kjo është, lehtë mund të shkëmbehen në për Problem Set Tre.
Unë kam dosjen time helpers.h e cila, në vend se helpers.h ne jemi duke i dhënë,
deklaron kërkimit binar, flluskë lloj, dhe përzgjedhja lloj.
Dhe në find.c ju do të vëreni on line, çfarë është se, linjë 68, ne e quajmë binare
kërko në vend të kërkimit.
Pra, përsëri, kodin që është në dispozicion online ose kodin që jeni
krijuar tani mund të shkëmbehen lehtë në për të vendosur p me 3 për të kontrolluar atë.
>> Por së pari, le të kodit binar kërkim.
Deklarata ynë funksion, kthehemi një bool.
Ne kemi marrë një numër të plotë të quajtur vlera.
Ne kemi marrë një rrjet të integers quajtur vlerat, dhe kemi marrë n të jetë
madhësia e array.
Best 10, të drejtë këtu, unë kam mprehtë përfshijnë stdbool.h.
A e dini pse kjo është atje?
Pra, çfarë do të vijë e kodit të bëni?
>> STUDENT: Kjo ju lejon për të përdorin një lloj të kthimit bool.
>> JASON HIRSCHHORN: Pikërisht.
>> STUDENT: Ose kjo është një bibliotekë që lejon për të përdorur një lloj të kthimit bool.
>> JASON HIRSCHHORN: Pra mprehtë përfshijnë Linja stdbool.h më jep disa
përkufizime dhe deklaratat për gjëra të se unë jam i lejohet të përdorë në
këtë bibliotekë.
Pra, në mesin e atyre është thënë se nuk ka ky lloj i quajtur bool, dhe kjo mund të jetë
vërtetë apo e rreme.
Pra, kjo është ajo që e bën këtë linjë.
Dhe në qoftë se unë nuk e kanë atë linjë, unë do të merrni në vështirësi për të shkruar këtë
fjalë të drejtë këtu, bool, e drejtë atje.
Saktësisht e drejtë.
Kështu që unë duhet që në këtë kod.
OK.
Pra kjo, përsëri, është një përsëritës version, jo një recursive.
Pra, le të ketë filluar.
>> Le të fillojmë me këtë të parë linjë e pseudo kodi.
Dhe shpresojmë se, ne do të - apo jo me shpresë.
Ne jemi duke shkuar për të shkuar nëpër dhomë.
Ne do të shkojnë rresht pas rreshti, dhe unë do të ndihmojë ju gjej linjë që ne kemi nevojë
për të shkruar së pari.
Kështu, ndërsa gjatësia e listës është më e madhe se zero.
Le të fillojë në para.
Çfarë duhet të vijë unë shkruaj këtu, në kodin?
>> STUDENT: Përderisa kllapë n është më i madh se 0.
>> JASON HIRSCHHORN: Përderisa n është e madhe se 0.
Kështu n është madhësia e një liste, dhe ne jemi duke kontrolluar nëse -
>> [VOICES Mbivendosje]
>> JASON HIRSCHHORN: - keq?
>> STUDENT: Si e dimë se n është madhësia e listës?
>> JASON HIRSCHHORN: Na vjen keq.
Per specifikimet pset, kërko dhe lloj funksionet që ju duhet për të shkruar,
n është madhësia e listës.
Kam harruar për të shpjeguar se këtu.
Por po. n është madhësia e lista, në këtë rast.
Kështu duke n është më i madh se 0.
OK.
Kjo mund të provojë pak problematike pse, nëse gjërat shkojnë në.
Sepse ne do të vazhdojmë të dini Madhësia e listës gjatë gjithë kësaj
funksion, por thonë se ne nisem me një grup të 5 numra të plotë.
Dhe ne do të shkojmë nëpër dhe ne kemi tani ngushtuar atë poshtë për
një grup i 2 integers.
Cila 2 integers është se?
Madhësia është 2 tani që ne duam të shikoni në, por që 2 është se?
A do të kishte kuptim, kësaj pyetje?
>> OK.
Unë do të kërkoj atë përsëri.
Pra, ne nisem me këtë grup prej 5 integers, dhe n është e barabartë me 5, apo jo?
Ne do të vazhdojë deri këtu.
ne ndoshta do të ndryshojë madhësinë, e drejtë, si gjërat shkojnë në.
Cila është ajo që ne themi që duam të bëjmë.
Ne nuk duam të kërkoni gjë plotë përsëri.
Pra, thonë se ne të ndryshuar atë në 2.
Ne kemi marrë gjysmën e listës që është i rastësishëm.
Pra, vetëm të vini 2.
Deri tani n është e barabartë me 2.
Unë kërkoj falje për të varfërit shënuesit thatë shuaj.
E drejtë?
Dhe ne jemi duke kërkuar nëpër lista përsëri me një listë të madhësisë 2.
E pra, koleksion tona është ende i madhësisë 5.
Ne themi ne vetëm duam të kërko 2 spote në të.
Pra cilat 2 spote janë ato?
>> A ka kjo kuptim?
A janë ata lanë 2 spote të?
A janë ata të drejtë 2 spote të?
A janë ata të mesëm 2 spote të?
Ne kemi thyer problemin poshtë, por ne në të vërtetë nuk e di se cila pjesë e
problemi ne jemi ende në kërkim në, vetëm duke pasur këto 2 variablave.
Pra, ne kemi nevojë për pak më shumë se, ndërsa n është më i madh se 0.
Ne duhet të dimë se ku se n është në rrjet tonë aktuale.
>> Pra ka dikush të ketë një ndryshojë në këtë linjë?
Shumica e kësaj linje është të përkryer të sakta.
A ka një tjetër shtesë?
A mund të bie në ujdi diçka nga n për të e bëjnë këtë linjë pak më mirë?
Mm-hm?
>> STUDENT: A mund të nisja një ndryshore si gjatësi të n që më pas do të përdoren
më vonë në funksion?
>> JASON HIRSCHHORN: Pra, nisja një gjatësi variabile për n,
dhe ne i përdorim që më vonë?
Por atëherë ne vetëm update gjatësi dhe ne ende ndesh me një problem ku ne
shkurtuar gjatësinë e problemit tonë, por kurrë nuk e dimë se ku, në fakt,
se gjatësia harta mbi.
>> STUDENT: A nuk është se do të ndodhë më vonë, kur ju jeni duke thënë, kërko majtë,
kërko drejtë?
Ju jeni do të shkojë në një tjetër Zona nga tuaj -
>> JASON HIRSCHHORN: Ne jemi duke shkuar për të shkuar në një zonë, por si mund ta dimë
të cilat janë për të shkuar për të?
Nëse ne vetëm kemi array dhe kjo n, si mund ta dimë se ku të
shkoni në në rrjet.
Në pjesën e pasme, po?
>> STUDENT: A keni, si, një më të ulët lidhur dhe një variabël sipërme të lidhur ose
diçka e tillë?
>> JASON HIRSCHHORN: OK.
Pra, kjo është një tjetër ide.
Në vend se vetëm mbajtja e Madhësia, ne mbajnë gjurmët e më të ulët dhe të
ndryshueshme sipërme të lidhur.
Deri sa nuk kemi llogaritur madhësinë nga një ulët i detyruar dhe të sipërme të lidhur?
>> [VOICES Mbivendosje]
>> JASON HIRSCHHORN: Zbritja.
Dhe edhe mbajtja e ulët i lidhur dhe i detyruar sipërme të na tregoni,
janë ne kërkim këto dy?
A jemi në kërkim këto dy këtu?
A jemi në kërkim të dy e mesme?
Ndoshta jo dy të mesme, sepse këtë, në fakt, është kërkimi binar.
Por tani ne do të jetë në gjendje për të marrë madhësinë, por edhe kufijtë e vektorit.
Në thelb, në qoftë se ne kemi gjigand tonë librin e telefonit, ne shqyej atë në gjysmë.
Ne tani e dimë se ku më të vogla Libri i telefonit është.
Por ne nuk jemi në të vërtetë i shkëlqyer librin e telefonit në gjysmë.
Ne ende duhet të dini se ku caqeve të reja të problemit tonë është.
A ka dikush ndonjë pyetje për këtë?
Po?
>> STUDENT: A do të punojnë duke krijuar një ndryshueshme, unë, që ju atëherë vetëm zhvendoset
pozicioni i i kundrejt të saj pozicioni aktual, dhe gjatësi, n?
>> JASON HIRSCHHORN: Dhe çfarë është i?
>> STUDENT: Ashtu si i qenë si lloj -
Ashtu si ju do të nisja të jetë i Pozita e mesme e array.
Dhe pastaj, në qoftë se vlera ne pozicionin i në mes të grup në për të gjetur
të jetë më pak se vlera që ju duhet, unë tani bëhet gjatësia e vektorit, plus
vlerës së i ndarë nga 2.
Ashtu si, shikoni, ju ndryshim i -
>> JASON HIRSCHHORN: E drejta.
>> STUDENT: - deri në -
>> JASON HIRSCHHORN: Kështu që unë jam gati pozitive që do të punojnë.
Por pika qenia, ju duhet dy pjesë të informacionit këtu.
Ju mund ta bëni atë me fillim dhe në fund, ose ju mund ta bëjë këtë me madhësi, dhe pastaj
disa shënues.
Por ju keni nevojë për dy copa e informacionit këtu.
Ju nuk mund të merrni nga me vetëm një.
A do ka kuptim?
>> Pra, ne jemi duke shkuar për të shkuar nëpërmjet, dhe ne jemi duke shkuar për të bërë [padëgjueshme]
dhe për të krijuar disa shënuesve.
Pra what'd ju shkruani në kodin tuaj?
>> STUDENT: Unë vetëm tha int lidhur një është e barabartë me 0.
>> JASON HIRSCHHORN: Le të thërrasë se int, duke filluar.
>> STUDENT: OK.
>> JASON HIRSCHHORN: Kjo e bën më shumë kuptim për mua.
Dhe?
>> STUDENT: Unë i thashë, unë mendoj, int i dhënë fund.
>> JASON HIRSCHHORN: int i dhënë fund.
>> STUDENT: I ​​guess, n minus 1, ose diçka të tillë.
Si, elementi i fundit.
>> JASON HIRSCHHORN: Pra, ju ka shkruajtur, int filluar të barabartëve 0, pikëpresje, dhe int
Përfundimi është e barabartë me n minus 1, pikëpresje.
Pra, në thelb, ajo që ne jemi duke bërë këtu, 0 pozitën e parë.
Dhe siç e dimë në vargjeve, ata nuk shkojnë deri n, ata të shkojnë deri në n minus 1.
Pra, ne kemi disa kufijtë e array tonë.
Dhe këto caqeve fillestare të ndodhë që të jetë e caqeve fillestare të problemit tonë.
OK.
Kështu që tingëllon mirë.
Pastaj në qoftë se ne të kthehemi në këtë linjë, ndërkohë që gjatësia e lista është më i madh se 0,
çfarë, në vend të n, duhet të ne kemi vënë në këtu?
>> STUDENT: Shkruani dhënë fund minus fillim.
>> JASON HIRSCHHORN: Duke i dhënë fund minus fillimi është më i madh se 0?
OK.
Dhe ne mund të, në qoftë se kemi dashur të bëjnë që pak nicer, çfarë
tjetër mund të bëjmë?
Nëse ne të kërkuar për të pastruar ky kod up pak?
Si mund të shpëtoj nga 0?
Kjo është vetëm një pyetje stil.
Është e saktë tani.
>> STUDENT: Përfundimit nuk fillimi të barabartë?
>> JASON HIRSCHHORN: Ne mund të bëjmë çfarë?
>> [VOICES Mbivendosje]
>> STUDENT: Përfundimi është më i madh?
>> JASON HIRSCHHORN: Po.
Ne mund të bëjmë vetëm duke i dhënë fund është më e madhe se fillimit.
E drejta.
Ne shtoi filluar në anën tjetër e që, dhe ne u shpëtoj të 0.
Pra, kjo thjesht duket një pak të pastër bit.
OK.
Kështu, ndërsa gjatësia e listës është 0, kemi shkruar që, ndërkohë që përfundon është më e madhe
se duke filluar.
Ne jemi duke shkuar për të vënë në nevojshme tonë formatimin e teksteve kaçurrel, dhe pastaj gjëja e parë
ne duam të bëjmë është të shikojmë në ato në një listë të vogël.
Ju?
Mund të më jepni -
>> STUDENT: Nëse kllapa Vlera katrore kllapa -
>> JASON HIRSCHHORN: Nëse kllapa Vlera katrore kllapa.
>> STUDENT: duke i dhënë fund ndahet nga 2.
>> JASON HIRSCHHORN: Ending?
>> STUDENT: Unë shoh një problem me tuaj -
>> JASON HIRSCHHORN: OK.
E pra, shikoni në mes.
Si e dimë ne se çfarë është e mesme?
Po.
Pra më lejoni të fshini atë kod.
Si e dimë ne se çfarë është e mesme?
Në çdo gjë, kur ju keni fillimin dhe në fund, si do ti gjeni
mesme?
>> STUDENT: Ju mesatare.
>> STUDENT: Ju shtoni ato së bashku dhe më pas -
>> JASON HIRSCHHORN: Add ato së bashku dhe më pas?
>> STUDENT: Dhe ju mesatare.
Ndajnë atë nga 2.
>> JASON HIRSCHHORN: Add ato së bashku dhe të ndajnë me 2.
Pra mesme int barabartë?
Tom, ju mund t'i jepte për mua?
>> STUDENT: Duke filluar plus duke i dhënë fund -
>> JASON HIRSCHHORN: Fillimi plus duke i dhënë fund.
>> STUDENT: Të gjitha, kllapa, ndarë nga 2.
>> JASON HIRSCHHORN: Të gjitha, në kllapa, pjesëtuar me 2.
Kështu që më jep në qendër për ndonjë gjë, korrigjuar?
>> STUDENT: Ju gjithashtu duhet të mbledh atë.
>> JASON HIRSCHHORN: Çfarë bëni ju do të thotë, unë duhet të rrumbullakët atë?
>> [VOICES Mbivendosje]
>> STUDENT: Sepse në qoftë se Kjo është një çuditshme numër, atëherë kjo është si -
>> JASON HIRSCHHORN: E pra, OK.
Kështu që unë mund të rrumbullakët atë deri.
Por në qoftë se është një numër i rastësishëm, një 5, unë mund duke marrë 1 larg nga qëndra.
Ose në qoftë se është një numër edhe më, në vend, kjo është një rast më të mirë.
Nëse është e 4, ne vetëm kemi 4, unë mund të marrë e parë "e mesme", të japin kuotën, ose mbyll thonjëzat
e dytë e "mesme".
Ose do të punojë për një kërkim binar, kështu që unë nuk mund të vërtetë nevojë për të rrumbullakët atë.
Por ka një tjetër gjë unë duhet të shohim në këtë linjë.
Ne mund të mos e kuptojnë atë ende, por ne do të kthehen në të.
Për shkak se kjo linjë të vërtetë ende ka nevojë për një gjë tjetër.
>> Por deri tani, ne kemi shkruar katër rreshta të kodit.
Ne kemi marrë fillimin tonë dhe duke i dhënë fund shënuesit.
Ne kemi loop tonë ndërsa, e cila harta më direkt në pseudokod tonë.
Ne jemi duke kërkuar në mes që harta direkt mbi pseudokod tonë.
Unë do të thonë se kjo shkon në mes i listës, kjo linjë e kodit.
Dhe pastaj, një herë ne do të shkojmë në mes të lista, gjë tjetër që ne duhet të bëjmë
është të kontrolloni nëse vlera jonë është atje për pseudokod kemi shkruar më herët.
>> Deri sa nuk kemi të kontrolloni nëse vlera tona është në mes lista?
Ju.
Pse nuk e bëni këtë?
>> STUDENT: Nëse vlera tonë është në mes është e barabartë tek
çdo gjë që ne kemi vendosur -
Unë do të thotë të barabartë e barabartë me -
>> JASON HIRSCHHORN: Ajo -
OK.
>> STUDENT: Unë nuk jam i sigurt se çfarë variabli ne jemi duke kërkuar
për megjithatë, është për shkak se -
>> [VOICES Mbivendosje]
>> STUDENT: [padëgjueshme].
>> JASON HIRSCHHORN: Pikërisht.
Per deklaratës funksion, ne jemi duke kërkuar për një vlerë.
Pra, ne jemi në kërkim për një vlerë në një grup të vlerave.
Pra, ju jeni saktësisht e drejtë.
Ju do të bëni, nëse kllapa vlera Paren e hapur mesme e mbyllur është e barabartë me kllapa
është e barabartë me vlerën, dhe brenda ka çfarë ne duhet të bëjmë?
Nëse vlera e jonë atje, çfarë nuk kemi nevojë të bëjmë?
>> [VOICES Mbivendosje]
>> STUDENT: Kthehu zero.
>> JASON HIRSCHHORN: Kthimi i vërtetë.
>> STUDENT: Kthimi i vërtetë.
>> JASON HIRSCHHORN: Michael, çfarë e bën këtë linjë të bëni?
>> STUDENT: [padëgjueshme] programi i ka drejtuar kursin e saj, dhe se është e gjatë, dhe
ju keni atë që ju duhet të bëni?
>> JASON HIRSCHHORN: Programi apo çfarë?
Në këtë rast?
>> STUDENT: Funksioni.
>> JASON HIRSCHHORN: Funksioni.
Dhe kështu, të kthehet në çdo gjë që quhet ajo dhe t'i jepte vlerën, e vërtetë.
Saktësisht e drejtë.
Kryesor.
Çfarë është lloji i kthimit e kryesore, Michael?
>> STUDENT: int, numër i plotë?
>> JASON HIRSCHHORN: int, saktësisht.
Një numër të plotë.
Kjo ishte vetëm një pyetje për t'u siguruar ju djema kanë qenë në krye të saj.
Çfarë do të zakonisht kthehen, nëse të gjitha gjërat janë duke punuar mirë?
>> STUDENT: Zero.
>> JASON HIRSCHHORN: Zero.
Saktësisht e drejtë.
>> STUDENT: Nëse kjo vetëm jep true, nuk ka asnjë informacion duke u dhënë
për atë -
Oh, kjo është vetëm duke thënë se që Vlera është brenda array.
>> JASON HIRSCHHORN: Pikërisht.
Ky program nuk është duke i dhënë informacion e ku pikërisht vlera është.
Është vetëm duke thënë: po, kemi gjetur ajo, apo jo, ne nuk e gjeti atë.
Pra, nëse numri i gjetur, kthim i vërtetë.
E pra, në të vërtetë ne vetëm e bëri atë të vërtetë shpejt me se një linjë e kodit.
Kështu që unë do të lëvizin atë linjë të pseudokod.
>> STUDENT: A nuk kemi nevojë për të ndryshuar rrjet?
Ajo duhet të jetë vlera jo, vlera, e drejtë?
>> JASON HIRSCHHORN: Na vjen keq.
Falemnderit.
>> STUDENT: Po.
>> JASON HIRSCHHORN: Kjo linjë duhet të jetë vlera.
Saktësisht e drejtë.
OK.
Pra, ne kemi shikuar në listën e mesme.
Nëse numri gjetur kthimi i vërtetë.
Duke vazhduar më me pseudokod tonë, në qoftë se mesme është më e madhe, kërko majtë.
Kështu që unë kam këtu, në qoftë se numri i më e lartë, kërko majtë.
Constantine, mund të jepni me këtë linjë e kodit?
>> STUDENT: Nëse vlera e mesme -
>> JASON HIRSCHHORN: Pra, nëse vlera -
nëse Paren hapur vlerat parantezë kllapa e mesme të ngushtë -
>> STUDENT: A është më e vogël se vlera?
>> JASON HIRSCHHORN: A është më pak se.
>> STUDENT: Më pak se vlera.
>> JASON HIRSCHHORN: Vlera.
E pra, në fakt, ju doni të kontrolloni nëse numri -
Më vjen keq.
Kjo është pak konfuze.
Por tjetër në qoftë se numri në mes të listës është më e madhe.
>> STUDENT: Oh, OK.
>> JASON HIRSCHHORN: Unë do të ndryshojë këtë.
Tjetër në qoftë se e mesme është më i lartë, ne dëshironi të kërkoni majtë, OK?
Dhe çfarë bëjmë ne brenda kjo nëse gjendja?
>> STUDENT: A mund të bëjë një ndryshim të vogël në kusht, të ndryshuar atë për të tjetër nëse?
>> JASON HIRSCHHORN: Else nëse?
OK.
Pra, ky kod do të kryej rreth njëjtë.
Por gjëja e mirë në lidhje me përdorimin në qoftë se, tjetër në qoftë se, tjetër në qoftë ose në qoftë se, tjetër në qoftë se, tjetër
do të thotë se vetëm një nga ata që do të të kontrollohet, jo të gjitha tre prej tyre,
potencialisht.
Dhe kjo e bën atë pak nicer në kompjuter që është
running programin tuaj.
>> Pra, [? Constantine,?]
ne jemi brenda këtë linjë, tjetër në qoftë se vlerat, kllapa e mesme kllapa afër
është më e madhe se vlera.
Çfarë duhet të bëjmë?
Ne kemi nevojë për të kërkuar të majtën.
Si e bëjmë këtë?
Unë do të ju jap një fillim.
>> Ne kemi këto dy gjëra të quajtur filluar dhe duke përfunduar.
Pra, çfarë duhet të ndodhë në fillim?
Nëse ju doni të kërkoni në të majtë të listë, kemi fillimin tonë aktuale.
Ajo që nuk kemi nevojë për të bërë atë?
>> STUDENT: Ne kemi vendosur fillimin në mes plus 1.
>> JASON HIRSCHHORN: Pra, nëse ne jemi në kërkim të majtë?
>> STUDENT: Na vjen keq, minus mesme -
kështu që përfundimi do të ishte e mesme minus 1 dhe fillimi -
>> JASON HIRSCHHORN: Dhe çfarë ndodh në fillim?
>> STUDENT: Ajo qëndron e njëjtë.
>> JASON HIRSCHHORN: Pra, kuptimi qëndron e njëjtë.
Nëse ne jemi në kërkim të majtë, ne jemi duke përdorur të njëjtën fillimin -
saktësisht e drejtë.
Dhe duke i dhënë fund?
Na vjen keq, ajo që e bën duke i dhënë fund të barabartë përsëri?
>> STUDENT: minus Mesme 1.
>> JASON HIRSCHHORN: minus Mesme 1.
Tani, pse minus 1, jo vetëm e mesme?
>> STUDENT: mesme është jashtë foto tashmë, sepse kemi pasur
kontrolluar se kjo është jashtë?
>> JASON HIRSCHHORN: Kjo është saktësisht e drejtë.
Mesme është nga foto.
Ne tashmë e kontrolluar në qendër.
Pra, ne nuk duam "e mesme", të japin kuotën e mbyll thonjëzat, që të vazhdojnë të jenë në
array se ne jemi duke kërkuar.
Pra, kjo është fantastike.
>> Tjetër në qoftë se vlerat kllapa e mesme është më e madhe se vlera duke i dhënë fund është e barabartë me
minus mesme 1.
Jeff, ajo që për këtë linjë të fundit?
>> STUDENT: Else.
Vlerat e mesme është më e vogël se vlera?
>> JASON HIRSCHHORN: Ne do të ju jeni duke i dhënë mua tjetër.
Pra, nëse ju nuk i japin mua -
>> STUDENT: Kështu, pra duke filluar do të ishte plus mesme 1.
>> Jason Hirschhorn: Duke filluar barabartë plus mesme 1, përsëri, për të njëjtën
Arsyeja që Constantine na dha më herët.
Dhe në fund, që nuk ka dhënë mua një linjë e kodit akoma?
Kthehu rreme, Aleha, çfarë e kemi shkruar këtu?
>> STUDENT: Kthimi false.
>> JASON HIRSCHHORN: Kthehu false.
Dhe ne kemi nevojë për të bërë këtë, sepse në qoftë se ne nuk e gjeni atë, ne duhet të themi ne
nuk e gjeni atë.
Dhe ne i thamë ne do të kthehen një bool, kështu që ne patjetër duhet të kthehen
a diku bool.
>> Pra, le të drejtuar këtë kod.
Unë jam në të vërtetë do të -
kështu që ne jemi në terminal.
Ne do të pastruar dritare tonë.
Le të bëjë të gjitha.
Ne kemi gjetur se ka një gabim.
Ka një gabim në linjë 15, pritet pikëpresje në fund të
deklaratë.
Pra, çfarë bëri harroj?
>> STUDENT: pikëpresje.
>> JASON HIRSCHHORN: pikëpresje drejtë deri këtu.
Unë mendoj se ishte kodi Tomit.
Pra Tom, [e padëgjueshme].
Just kidding.
Le të mos të bëjë të gjitha përsëri.
>> STUDENT: Çfarë directory Dropbox duhet të jenë në për këtë?
>> JASON HIRSCHHORN: Pra, ju mund të vetëm shikojnë për këtë pak.
Por, përsëri, në qoftë se ju të kërkuar për të lëvizur këtë kodin në directory tuaj pset3 të provoni
atë jashtë, kjo është ajo që kam bërë.
Nëse ju do të vini re këtu - vjen keq, pyetje e mirë.
>> [? LS,?]
Unë kam këtu kodin find.c nga kodi distro të kësaj jave.
Unë kam helpers.h.
Unë kam një fotografi Bëni që unë në fakt redaktuar pak për të përfshirë këto të reja
fotografi ne jemi të shkruar.
Të gjitha atë kod do të jetë në dispozicion, nuk kodin e shpërndarjes, por i ri
Bëni fotografi, fotografi e re do helpers.h të jetë në dispozicion në internet për shkarkim.
Përsëri, kështu që ato janë Kodet ekstra ne kemi.
>> Kështu bëjnë të gjithë, në këtë linjë, e bën gjeni, binar, zgjedhja flluskë - bën
të tre prej tyre dhe harton në ky gjeni i ekzekutueshëm kod.
Pra, në përgjithësi, ne nuk duam të drejtë për të check50.
Ne duam të drejtuar disa analiza në tonë.
Por vetëm kështu që ne mund të përshpejtojë këtë pak, check50 2013 pset3.find do të kalojë
në helpers.c-- keq im.
>> Unë nuk e kanë këtë të drejtë tani.
Pra, ne jemi të vërtetë do të të drejtuar kodin për të vërtetë.
Usage.find /, ju e dini çka do të thotë?
>> STUDENT: Ju duhet një të dytë command line në të.
>> JASON HIRSCHHORN: Unë kam nevojë për një linjë të dytë të komandës.
Dhe per specifikimet, kam nevojë për të hyrë në atë që ne jemi duke kërkuar për.
Pra, le të shohim për 42.
Ne do të mbajë atë në renditura, sepse ne nuk kam shkruar një funksion renditjeje ende -
42, 43, 44.
>> Dhe Kontrollit D nuk e gjeti gjilpërë në kashtë.
Kjo është e keqe.
Është patjetër aty.
Le të provoni diçka tjetër.
Ndoshta kjo sepse kam vënë ajo në fillim.
>> Le të bëjmë 41, 42, 43.
Nuk shkojmë.
Ajo e gjeti atë.
Le të vënë atë në fund tani, vetëm kështu që ne mund të jenë të plota -
40, 41, 42.
A nuk e gjejnë gjilpërën.
Kështu që unë përmendur këtë më parë.
Për fat të keq, unë e dija këtë do të ndodhte.
>> Por për qëllime pedagogjike, është e mirë për të shqyrtuar atë.
Ajo nuk punon.
Për disa arsye, ajo nuk mund ta gjeni atë.
Ne e dimë se çfarë është në atje, por ne nuk po e gjejnë atë.
Pra, një gjë që mund të bëni është të shkoni nëpër Gdb për të gjetur atë, por e bën dikush,
pa kaluar nëpër gdb, kanë një ndjenjë e ku ne i dehur?
[? Madu? ?]
>> STUDENT: Unë mendoj se kjo mund të jetë kur i dhënë fund është e barabartë me fillim, dhe është e
vetëm një listë, një element.
Pastaj ai thjesht e injoron atë në vend e në fakt kontrolluar atë.
>> JASON HIRSCHHORN: Kjo është saktësisht e drejtë.
Kur i dhënë fund është e barabartë fillim, nuk kemi ende kanë një element në listën tonë?
>> STUDENT: Po.
>> JASON HIRSCHHORN: Po, në fakt, ne kanë një dhe vetëm një element.
Dhe kjo ka shumë të ngjarë të ndodhë kur, sipas kodit të kemi testuar, ne jemi në
e përparme e kashtë ose në fundi i kashtë.
Kjo është ku fillimi dhe Përfundimi do të barabartë
një, me kërkimin binar.
Pra, në këto dy raste ajo nuk ka punë, sepse duke i dhënë fund ishte e barabartë me fillim.
>> Por në qoftë se duke i dhënë fund është e barabartë me fillim, ka ekzekutuar këtë loop ndërsa?
Ajo nuk ka.
Dhe ne mund të kemi kontrolluar që përsëri përmes gdb.
Pra, si mund ta rregullojmë këtë kod, sepse ndërsa, kur mbaron është e barabartë tek
filluar, ne gjithashtu duam që ky ndërsa loop për të kandiduar.
>> Pra, çfarë fix mund të bëjmë që të vijë 18?
>> STUDENT: [padëgjueshme] është më i madh se ose e barabartë me.
>> JASON HIRSCHHORN: Pikërisht drejtë.
Ndërsa duke i dhënë fund është më i madh se ose e barabartë me fillim.
Deri tani, jemi të sigurt për të marrë atë Rasti qoshe në fund.
Dhe le të shohim.
Le të drejtuar këtë edhe një herë.
>> Le të bëjë të gjitha.
Përsëri, ju do keni të drejtë të ndjekin së bashku këtu.
Gjej të 41 këtë kohë.
Vetëm ta mbani atë të qëndrueshme.
>> Gjej të 42.
Le të vënë atë në fillim -
42, 43, 44.
Ne kemi gjetur atë.
Kështu që ishte me të vërtetë ndryshimi ne kemi nevojë për të bërë.
>> Kjo ishte një shumë e coding ne vetëm e bëri, kërko binar.
A ka dikush ndonjë pyetje para se të Unë të lëvizin për në linjat e kemi shkruar në
kërko binar apo se si ne motive nga ajo që ne e gjej?
Para se të shkojë përpara, edhe unë dua të theksoj nga që në përgjithësi, ne mapped
tonë pseudo-kod një për një mbi kodin tonë.
>> Ne e kemi atë gjë ndërlikuar të gjej me
filluar dhe duke përfunduar.
Por sikur të mos ju artistikisht se nga, ju do të kishte shkruar shumë e shumë
Kodi identike, përveç këto dy linja kryesore.
Dhe pastaj ju do të realizohet kur ju e bëri atë në kontrollet dhe rastet që
keni nevojë për diçka tjetër.
Pra, edhe në qoftë se ju kishte ndjekur tonë Linja pseudo-kod të vijë, ju do të keni
marrë të gjitha, por dy linja e kodojnë ju nevojitet për të shkruar.
>> Dhe unë do të jenë të gatshëm për bast se ju djema do të kishte realizuar artistikisht se nga të gjitha
shumë shpejt, që ju nevojitet për të vënë një lloj shënues në atje të kuptoj
se ku keni qenë.
Kjo përsëri, është fuqia e bërë pseudo-kod para kohe.
Pra, ne mund të bëjmë logjikën e parë, dhe më pas ne mund të shqetësohen për sintaksë.
>> Po të ishim të hutuar në lidhje me logjikën ndërsa duke u përpjekur për të shkruar këtë kod në C,
ne do të kemi marrë të gjitha messed up.
Dhe pastaj ne do të jetë i kërkuar pyetje rreth logjikë dhe sintaksë dhe meshing
ata të gjithë së bashku.
Dhe ne do të marrë humbur në atë që mund të shpejt të bëhet një
problem shumë i vështirë.
Pra, le të lëvizë tani të përzgjedhjes lloj.
>> Ne kemi 20 minuta të mbetura.
Kështu që unë kam një ndjenjë që ne nuk do të mund të të marrë me të gjitha të përzgjedhjes lloj
dhe flluskë lloj.
Por le të paktën përpjekje për të përfunduar të përzgjedhjes lloj.
Pra zbatojë përzgjedhje e renditjes duke përdorur pas shpalljes funksion.
>> Përsëri, kjo është marrë nga Problemi vendosur specifikim.
Vlerat Int është kllapa, është një grup i integers.
Dhe int.n është madhësia e atij grup.
Përzgjedhja lloj do për të zgjidhur këtë rrjet.
>> Pra, për modelin tonë mendor e përzgjedhjes lloj, ne të tërheqë -
së pari, ne do të shkojmë nëpër lista parë kohë, të gjeni numrin më të vogël,
vënë atë në fillim, gjeni dytë numri më i vogël, e vënë atë në
Pozita e dytë në qoftë se ne duam të lloj në ngjitje qëllim.
Unë nuk jam duke e detyruar që të shkruaj pseudo-kod tani.
>> Por, para se të bëjmë kodin si një klasë në pesë minuta, ne do të shkruani
pseudo-kod kështu që ne kemi një kuptim e ku ne jemi duke shkuar.
Pra, të përpiqen për të shkruar pseudo-kod në tuaj.
Dhe pastaj të përpiqet për ta kthyer atë pseudo-kod në kod.
Ne do të bëjmë këtë si një grup në pesë minuta.
>> Dhe sigurisht, let me know, nëse keni ndonjë pyetje.
>> STUDENT: Se kjo?
>> JASON HIRSCHHORN: Shih se si ju mund të merrni në dy minuta më shumë.
Unë e kuptoj që ju nuk do të të jetë në gjendje të përfundojë.
Por ne do të shkoj për këtë si një grup.
>> Ju jeni të gjithë coding kështu [padëgjueshme], kështu që unë jam vjen keq për pushim çfarë jeni duke bërë.
Por le të kalojnë nëpër këtë si një grup.
Dhe përsëri, kërko binar, ju të gjithë e japin më e nëse jo më shumë rreshta të kodit.
Faleminderit për këtë.
Ne jemi duke shkuar për të bërë të njëjtën gjë këtu, kodi së bashku si një grup.
>> Pra, zgjedhja lloj - le të shkruajë disa të shpejtë pseudo-kod.
Per modelit mendor, mund dikush të më jepni vija e parë e pseudo-kod, ju lutem?
Çfarë doni të bëni?
>> STUDENT: Përderisa lista është jashtë funksionit.
>> JASON HIRSCHHORN: OK, ndërsa lista është jashtë funksionit.
Dhe çfarë do të thotë "jashtë funksionit?"
>> STUDENT: Përderisa [padëgjueshme]
nuk ka qenë e renditura.
>> JASON HIRSCHHORN: Përderisa lista është jashtë funksionit, çfarë bëjmë ne?
Më jepni rreshtin e dytë, ju lutem, Marcus.
>> STUDENT: Pra, gjeni ardhshëm numri më i vogël.
Kjo do të jetë prerë.
>> JASON HIRSCHHORN: Pra gjeni ardhshëm numri më i vogël.
Dhe pastaj dikush tjetër?
Pasi ne gjejmë tjetër më të vogël Numri, çfarë bëjmë ne?
Unë jam duke shkuar për të thënë të gjetur numri më i vogël.
Kjo është ajo që ne duam të bëjmë.
>> Pra, gjeni numrin më të vogël.
Atëherë çfarë bëjmë ne?
>> STUDENT: [padëgjueshme] në fillim.
>> JASON HIRSCHHORN: Na vjen keq?
>> STUDENT: Vendi atë në fillim të listës.
>> JASON HIRSCHHORN: Pra, vendin e saj në në fillim të listës.
Dhe çfarë bëjmë ne në gjë që ishte në fillim
i listës, apo jo?
Ne jemi overwriting diçka.
Pra, ku nuk kemi vënë atë?
Po, Anna?
>> STUDENT: Ku vogël numër ishte?
>> JASON HIRSHHORN: ti pra, fillimin nga lista ku
numri më i vogël ishte.
Kështu, ndërsa lista është jashtë funksionit, të gjejnë numri më i vogël, vendin e saj në
fillimi i listës, të vënë fillimi i lista ku
numri më i vogël ishte.
Marcus, ju mund të perifrazoj këtë linjë ndërsa lista është jashtë funksionit?
>> STUDENT: Ndërsa numrat nuk janë të renditura?
>> JASON HIRSHHORN: OK, kështu që në mënyrë që të e dini se numrat nuk kanë qenë
renditura, çfarë ne duhet të bëjmë?
Sa kemi nevojë për të kalojnë nëpër këtë listë?
>> STUDENT: Kështu që unë mendoj për një lak, ose ndërsa, ndërsa numrat e kontrolluar është më pak
se gjatësia e lista?
>> JASON HIRSHHORN: OK, kjo është e mirë.
Unë mendoj se unë misphrased pyetja ime dobët.
Unë kam qenë vetëm duke u përpjekur për të marrë në ne do të duhet të shkoni
nëpërmjet gjithë lista.
Kështu, ndërsa lista është jashtë funksionit, për mua, është e vështirë për të hartë në.
Por në thelb, kjo është se si Unë mendoj për këtë.
Kalojnë nëpër të gjithë listën, gjeni numri më i vogël, vendin e saj në
duke filluar - në të vërtetë, ju jeni të drejtë.
Le të vënë ata të dy.
>> Kështu, ndërsa lista është jashtë funksionit, ne duhet të kalojnë nëpër të gjithë listën
një herë, të gjeni më të vogël numrin, vendin ajo në fillim të lista, vihet
në fillim të listës, ku Numri i vogël është, dhe pastaj nese
Lista është ende jashtë funksionit, ne kemi mori të kalojnë nëpër këtë
Procesi përsëri, apo jo?
Kjo është arsyeja pse zgjedhja lloj, Big-O Runtime e përzgjedhjes lloj, dikush?
>> STUDENT: n katror.
>> JASON HIRSHHORN: katror n.
Sepse si Marcus dhe unë vetëm kuptova këtu, ne do të duhet të
shkoni nëpër lista listës disa herë.
Pra, duke kaluar diçka të Gjatësia n disa herë n
është në të vërtetë katror n.
>> Pra, kjo është pseudokod tonë.
Kjo duket shumë e mirë.
A ka dikush ndonjë pyetje për pseudokod?
Sepse në të vërtetë Zgjedhja e renditjes duhet ndoshta vijnë 1-1, kodit nga
pseudokod.
Kështu që çdo pyetje në lidhje me Logjika e pseudokod?
Ju lutem, pyesni atë tani.
>> Përzgjedhja lloj - ndërsa lista është jashtë e rendit, ne jemi duke shkuar për të shkuar nëpërmjet saj
dhe për të gjetur më të vogël çdo herë dhe e vuri atë në para.
Kështu, ndërsa lista është jashtë funksionit, mund të dikush më jep këtë linjë të kodit që
nuk ka dhënë mua një linjë e kodit ende, ju lutem?
Kjo tingëllon si një çfarë?
>> STUDENT: Kjo është një për lak.
>> JASON HIRSHHORN: Kjo tingëllon doja një për lak.
OK, mund të më jepni për lak?
Për -
>> STUDENT: i barabartë 0.
>> JASON HIRSHHORN: i ose -
çfarë jemi të humbur?
Çfarë shkon këtu?
>> STUDENT: Int.
>> JASON HIRSHHORN: Pikërisht.
(Int i = 0; -
>> STUDENT: i <n; i + +).
>> JASON HIRSHHORN: gozhdohem atë, Jeff.
Ne jemi duke shkuar nëpër lista, e drejtë?
Ne kemi parë se kodi parë.
Perfect.
Pra, le të vënë formatimin e teksteve kaçurrel tona këtu.
Unë jam duke shkuar për të vënë disa formatimin e teksteve kaçurrel këtu.
>> Kështu, ndërsa është 0, ne kemi nevojë për të shkuar nëpërmjet gjithë lista.
Pra, çdo herë që ne shkojmë nëpër lista, çfarë ne duam të mbajnë gjurmët e?
>> STUDENT: Nëse ndonjë Swap-et janë bërë.
>> JASON HIRSHHORN: Gjeni numri më i vogël.
Pra, ne ndoshta duhet të mbajnë gjurmët e numri më i vogël çdo herë.
Kështu linjë mund të bëj për të mbajtur nën të numrit më të vogël?
Aleha, si mund të mbajë udhë për diçka?
>> STUDENT: Fillo një ndryshore të ri.
>> JASON HIRSHHORN: Fillo një ndryshore të ri.
Pra, le të krijojë një ndryshore.
Çfarë lloj?
>> STUDENT: Int.
>> JASON HIRSHHORN: Int.
Le të thërrasë atë të vogël.
Dhe ajo që e bën atë të barabartë kur ne jemi vetëm duke filluar nga?
Ne nuk kanë shkuar nëpër lista ende.
Ne jemi në pjesën e parë të lista kohën tonë të parë përmes.
Çfarë e bën atë të barabartë, numri më i vogël?
>> STUDENT: Vlerat i.
>> JASON HIRSHHORN: Vlerat i.
Kjo tingëllon saktësisht e drejtë, apo jo?
Numri vogël në fillim është ku jemi.
Deri tani ne kemi më të vogël tonë, dhe ne kemi nevojë të kalojnë nëpër të gjithë listën dhe
krahasoni këtë më të vogël për çdo gjë tjetër.
Pra, do të shkojmë nëpër lista përsëri?
Michael?
>> STUDENT: Ju duhet të bëni një tjetër për lak.
>> JASON HIRSHHORN: Një tjetër për lak.
Le të bëjmë atë.
Më jepni një kod.
>> STUDENT: Për loop -
për më të vogël -
vetëm int j, a mund të thoni?
= 0; tillë që -
>> JASON HIRSHHORN: E pra, në qoftë se ne duam të kalojnë nëpër të gjithë listën -
>> STUDENT: j <n, j + +).
>> JASON HIRSHHORN: Sporte.
Ne jemi duke shkuar për të shkuar nëpër për lak edhe një herë.
Dhe si nuk kemi gjetur numri më i vogël?
Tom?
Ne kemi numrin e tanishëm më të vogël, kështu si nuk kemi gjetur më të vogël të ri?
>> STUDENT: Ne mund të kontrolloni nëse të vogël Numri ne është më e madhe se
vlerat kllapa j.
>> JASON HIRSHHORN: Pra, nëse më e vogla është më e madhe se vlera kllapa j.
Pra, nëse i tanishëm i vogël ynë është më e madhe se sa -
Unë jam duke shkuar për të lëvizur këto dy linja e kodit atje për një të dytë.
Sepse para se të bëjmë ndonjë shkëmbejnë, ne duhet të kalojnë nëpër të gjithë listën.
Pra, kjo pseudokod duhet të vërtetë të jetë jashtë se brendshme për lak.
Kështu që të shkojnë nëpër gjithë listën.
Nëse vogël është më e madhe se Vlerat j atëherë çfarë?
>> STUDENT: Pastaj vogël është e barabartë me vlerat j.
>> JASON HIRSHHORN: Sporte.
Një pyetje të shpejtë -
hera e parë që ne të kalojnë nëpër këtë lak, Unë do të jetë e barabartë me 0, j po ndodh
të barabartë 0 herë marrim në këtu.
Pra, ne jemi duke shkuar për të krahasuar një numër në vetvete.
Është se të efektshme?
Jo, ajo nuk është me të vërtetë të efektshme.
Pra ka j ynë nevojë për të shkuar nga 0 deri n çdo herë?
A kemi gjithmonë duhet të kontrolloni nëpërmjet gjithë lista?
[Padëgjueshme]?
>> STUDENT: Filloni me i vend.
>> JASON HIRSHHORN: j Can të fillojë me çfarë?
>> STUDENT: i.
>> JASON HIRSHHORN: j mund të fillojë me i.
Deri tani ne krahasojmë duke filluar me atë që jeni on.
Por edhe atëherë, është se si efikas të jetë e mundur?
>> STUDENT: i + 1.
>> JASON HIRSHHORN: i + 1 duket të jetë më efikas, sepse ne
tashmë kanë i.
Ne jemi duke deklaruar se si më i vogël në linjë 15.
Ne jemi duke shkuar për të filluar me një tjetër automatikisht.
Pra, ne do të shkojmë nëpër për lak.
Ne do të shkojnë nëpër çdo kohë.
Ne do të kalojnë nëpër disa herë.
Tani ne kemi marrë përmes kjo brendshme për lak.
Ne kemi vlera më e vogël kursen.
Ne kemi nevojë për të vënë atë në fillim të listës.
Pra, si mund ta vendosni atë në fillimi i listës?
Çfarë është e ndryshueshme që i referohet në fillim të lista?
Ne jemi në këtë jashtë për lak, kështu që ajo që i referohet
fillimi i listës?
>> STUDENT: Vlerat i.
>> JASON HIRSHHORN: Pikërisht drejtë.
Vlerat i është fillimi i -
apo vjen keq, jo fillimi.
Kjo ishte konfuze.
Kjo është ku ne jemi në fillim të pjesa unsorted i listës.
Pra, vlerat i.
Dhe ajo që e bën këtë të barabartë?
>> STUDENT: vogël.
>> JASON HIRSHHORN: Vlerat i barabartë me çfarë?
>> STUDENT: vogël.
>> JASON HIRSHHORN: më e vogël.
Saktësisht e drejtë.
Pra, ne jemi duke e vendosur atë në fillim i listës, dhe tani ne kemi nevojë për të vënë
fillimi i listës, ku numri më i vogël ishte.
Pra, si mund ta shkruaj ku numri më i vogël ishte?
Vlerat e çfarë?
>> STUDENT: 0.
>> JASON HIRSHHORN: e vogël Numri është në 0?
>> STUDENT: Po.
>> JASON HIRSHHORN: Çfarë ndodh nëse më e vogla Numri qenë në fund të
kjo listë unsorted?
>> STUDENT: Na vjen keq, çfarë ishte pyetja?
>> JASON HIRSHHORN: Ku është numri më i vogël?
Ne mori të vogël dhe e vuri në duke filluar, me këtë linjë të drejtë këtu.
>> STUDENT: Ajo duhet të ketë qenë e ruajtur në disa -
>> STUDENT: Vlerat j.
>> JASON HIRSHHORN: E pra, kjo është jo domosdoshmërisht vlerat j.
Ajo nuk ekziston as në këtë pikë.
>> STUDENT: Ju duhet të deklarojë një variabël më parë dhe
pastaj të caktojë atë për të -
kur ju të gjeni numrin më të vogël, caktojë indeksin e atij numri të
disa ndryshore ose diçka të tillë.
>> JASON HIRSHHORN: Pra, mund të ju thoni se përsëri?
>> STUDENT: Pra, ku jeni deklaruar int më i vogël, ju duhet gjithashtu të deklarojë int
Indeksi i vogël = i, ose diçka të tillë.
>> JASON HIRSHHORN: Deri ku unë int më i vogël, unë nuk duhet vetëm të mbajnë gjurmët
të vlerës, por vendndodhjen.
në këtë int smallest_location = rast, ne do vetëm të bëjë i.
Ne duhet të dimë se ku është.
Ne mori në fund të kodit, dhe ne realizuar ne nuk kishte asnjë ide se ku ishte.
Dhe një herë tjetër, ne jemi të hartës kjo në një me një.
Ju djema coding këtë në mënyrë që të pëlqehet ndoshta merrni për të njëjtin problem.
Si dreq mund ta gjej atë?
Dhe atëherë ti e kupton, prisni, unë duhet të mbajnë gjurmët e asaj.
>> Pra, nëse më i vogël është më i madh se vlerat j.
Ne kemi vendosur të vogël është e barabartë për të vlerave j.
Çfarë tjetër nuk kemi nevojë për të ndryshuar?
Constantin, çfarë tjetër të bëjë ne kemi nevojë për të ndryshuar?
>> STUDENT: vend.
>> JASON HIRSHHORN: Pikërisht.
Pra, më jep këtë linjë në kodin.
>> STUDENT: smallest_location = j.
>> JASON HIRSHHORN: Pikërisht.
Dhe pastaj poshtë në fund, në qoftë se ne duam të vënë fillimin e listës, ku
numri më i vogël ishte, se si nuk kemi referohen ku
numri më i vogël ishte?
Marcus?
>> STUDENT: numri më i vogël ishte vendosur në vend më të vogël.
>> JASON HIRSHHORN: Pra, në vlerat smallest_location.
Dhe çfarë të kemi vënë atje?
Fillimi i listë, çfarë është kjo?
>> STUDENT: E pra, ne vërtetë nuk e di më sepse ne mbikaloi.
Pra, është një vende swapped nga këto dy linja?
Nëse ju kaloni këto dy linja përreth.
>> JASON HIRSHHORN: OK, kështu që ne nuk bëjmë më, sepse ne kemi rivendosur linjë
para se vlerat i të vogël.
Pra, kemi humbur atë vlerën fillestare.
Pra, ju tha swap këto dy linja.
Deri tani vënë fillimin e listës ku numri i vogël është.
Pra smallest_location barabartë vlerat i.
Dhe kjo ka filluar në fillim të këtij pjesë unsorted e listës
vend më të vogël.
Dhe më pas në vlera i ne jemi duke lëvizur që numri më i vogël.
>> A ka kuptim se pse ne kishte për të bërë këtë shkëmbim?
Ne do të overwritten se vlera - një tjetër gjë që ju ndoshta do të duhet
motive nga dhe gjeti në PBB.
Pra, ne kemi marrë kujdesin e të gjithë pseudokod.
A ka diçka tjetër ne duhet të shkruani këtu?
A mund të mendoj dikush për ndonjë gjë?
>> STUDENT: Si mund të dini kur ju jeni bërë?
>> JASON HIRSHHORN: Si e e di se kur ne jemi duke bërë?
Pyetje e madhe.
Pra, si e dimë ne kur ne jemi duke bërë.
>> STUDENT: Krijo një ndryshore për të mbajtur numërimin e në qoftë se ka një swap i bërë ose jo
dhe kalojnë nëpër një të kaluar.
>> JASON HIRSHHORN: OK.
Kjo do të punojnë në flluskë lloj.
Por, për të përzgjedhjes lloj, nëse nuk e bëjmë të bëjë një shkëmbim, që mund të jetë vetëm
sepse vlera është më e vogël në të vendndodhjen e saj të drejtë.
Ne mund të kemi një listë 1, 2, 4, 3.
Herën e dytë me ne nuk do të bëjë ndonjë këmbime.
Ne do të jetë në numrin 2, por ne do të ende nevojë për të do të mbajë.
Kështu që nuk kemi nevojë për të mbajtur gjurmët e kur ne jemi duke bërë, ose nuk kemi thjesht duan të shkojnë
deri sa kjo është e përfunduar?
>> STUDENT: Ne vetëm mund të shkojnë deri në përfundimin.
>> JASON HIRSHHORN: Ne mund vetëm të shkoni deri sa kjo është e përfunduar.
Në lloj flluskë, ju jeni saktësisht e drejtë, Jeff dhe Aleha, me zgjidhjen tuaj -
ajo është e madhe për të mbajtur gjurmët e sa këmbime të keni bërë, sepse në flluskë
lloj, nëse ju bëni në të vërtetë bërë asnjë këmbime, ju jeni bërë dhe ju mund të shkurtojë ndoshta tuaj
Problemi poshtë pak.
Por për përzgjedhjes lloj, ju keni të vërtetë mori të shkojnë deri në fund të
lista çdo herë rreth.
>> Pra, kjo është se.
Ne kemi dy minuta të mbetura.
Le të bëjë të gjitha.
Më lejoni vetëm të hapur gjej këtu dhe të bëjnë i sigurt se unë jam në të vërtetë duke e quajtur up -
Unë nuk jam duke e quajtur flluskë lloj.
Le të ndryshojë këtë të përzgjedhjes lloj.
të bëjë të gjitha. / gjejnë.
Le të gjeni 42.
Këtë herë ne jemi duke shkuar për të kaluar një Lista unsorted, sepse ajo duhet të lloj
parë, sipas kodit të gjejnë - duhet të lloj e parë duke përdorur funksionin tonë renditjeje dhe pastaj
shikoni për diçka.
Gishtat e kaluar të gjithë.
>> Oh mirësinë time.
Whoa, zemra ime rrihte.
Kështu që është e saktë.
Në fakt, në qoftë se ne u kjo më gjerësisht, kodi, aq sa unë mund të
them, është krejtësisht e saktë.
Ka disa sugjerime Unë do të duhet për ju.
Për shembull, 15 dhe 16 duket një tepërta pak.
Duket sikur ju nuk e bëni domosdoshmërisht nevojë për të shpëtuar të dy ata.
Nëse ju keni vendin më të vogël, të lehtë mund të gjeni vlerën më të vogël nga
vetëm të shtypni vlerat e i.
>> Pra, nëse unë do të të notimit kodin tuaj, të cilat unë do të jetë në fakt, unë do të
ndoshta të marrë jashtë një pikë në qoftë se ju përfshihen të dyja këto, sepse ju
nuk kanë nevojë për të dyja këto.
Nëse keni vendndodhjen, ju mund të shumë lehtë të marrë vlerën.
Dhe kjo duket pak i çuditshëm për të ruajtur dy prej tyre.
Ndoshta jo edhe të marrë një pikë, por sigurisht të komentuar se kjo është ndoshta
jo një zgjedhje stilistike ju duhet të bëni.
Sigurisht, kodi ende shkon shumë mirë.
>> Pra, për fat të keq ne nuk kemi të marrë në flluskë lloji.
Më vjen keq për këtë.
Ne e bëmë finishit përzgjedhjes lloj.
A ka dikush ndonjë pyetje përfundimtare rreth përzgjedhjes lloj?
>> OK, para se kreu jashtë, unë dua t'ju për të hapur shfletuesin tuaj Chrome.
Na vjen keq, kjo ishte vetëm një plug hapur për një lloj të shfletuesit të internetit.
Ju mund të hapur çdo lloj shfletuesit, por kjo ndoshta do të jetë Chrome.
Dhe shkoni në këtë website vijim -
sayat.me/cs50.
Nëse ju nuk jeni të shtypni në kompjuterin tuaj tani, ju jeni në mënyrë të qartë
nuk e bëjmë këtë, Tom.
>> Dhe ju lutem të bëjë atë të drejtë ose tani apo në orën e ardhshme -
më jepni disa reagime.
Ky seksion është vetëm dy.
Ne kemi shumë më tepër së bashku, kështu që unë kanë shumë hapësirë ​​për të përmirësuar.
Unë shpresoj gjithashtu bëri disa gjëra të mirë.
Kështu që ju mund të bëni të ndihem e gjitha e keqe, por nëse ju gjithashtu duan të më jepni një smiley
fytyrë, unë do të vlerësoj se si.
Plotësoni se in
>> Dhe me një minutë e majtë, që ishte tre javë.
Unë do të qëndrojë jashtë për një grimë nëse keni ndonjë pyetje.
Unë do të shoh ju djema në leksion nesër.