>> JASON Hirschhorn: Tere nädalasse kolm, kõigile.
Meil on hõivatud, kuid põnev jagu ees.
Nii et esimene, sest me oleme teinud mõningaid pikivahega koos muidugi aga me ikka
on palju õppimist ära teha, ma olen läheb näidata teile poisid mõned vahendid
mis peaks osutuda uskumatult kasulik, kui te ei ole ainult läheneda oma
Probleem komplektid, vaid ka seedima kõik Materjali, mida me teile poisid
loengud ja püksid ja lõik.
>> Siis lähed kulutada esimese 20 25 minuti jagu läheb üle
GDB, mis võib olla või mitte olla kasutatakse selles punktis, kuid see on
uskumatult kasulik vahend, mis aitab aitab programmide silumiseks.
Palju sa võisid kasutada printf sisse keskel oma programmi välja mõtlema
, mida muutuja korranud.
GDB on isegi parem kui printf ja ei kägardama kood, sest sa
kasutada seda käivitatava faili.
Nii et me läheme üle 10 kõige kasulikum käsud, mida vajad GDB ja me oleme
lähen treeningprogrammi koos nii Probleemse seatud kolm ja kaugemale, siis
saab kasutada GDB aidata siluda oma programmides.
Ja lõpuks, me läheme üle mõned sorteerimise ja otsimise algoritmid
mis sa nägid loeng ja oleme läheb tegelikult kood, mitte lihtsalt
pseudokoodi, kuid kood binaarne otsing, mull sorteerida ning valik sort.
>> Nii et esimene, tahan minna vahendite üle.
See on pikk loetelu, ja see on väiksem font, sest mul oli palju
mahub siia.
Kuid need mitte ainult ei aita sind, jälle koos probleem komplekti ja
seedimisega teavet, mida õppida, kuid kindlasti tulevad viktoriini ajal need
uskumatult kasulik.
Nii et esimene, loengumaterjalid.
Kui te lähete cs50.net/lectures ja liikuge konkreetse nädal ja päev
näete, et seal on märkmeid iga loeng, mis ei ole lihtsalt
ärakirja, kuid muutis versioon mis oli kaetud loengu kood
pikad ja muid kasulikke nippe.
Ma väga soovitada läheb üle neid.
Ja siis ka, seal on lähtekoodi saadaval iga loengu.
Ja jälle need slaidid on ka saadaval internetis aadressil cs50.net/sections
täna õhtul.
>> Nii teine ​​on püksid iga nädal, et teemasid, tavaliselt 5-15
minuti pikkust.
Ja need loodetavasti annab teile suur krunt erinevatel teemadel.
Kolmandaks -
ja see on täiesti uus selle aastal - on study.cs50.net.
Kui te ei ole kontrollinud seda, ma väga soovitada, et te seda teete.
Sa saad valida teema.
Meil on kümneid teemasid seal.
Nii näiteks valite funktsioonid.
See annab teile mõned slaidid ning märgib funktsioonidele.
Need on tegelikult slaidid et TF soovitatakse kasutada ajal meie
ettekanded osa.
Seal on ka nõuandeid ja nippe, mis tegeleb mille funktsioonid ja seal
praktikas probleeme, et aidata te töötate koos funktsioone.
Me ka teile linke lühike funktsioonid ja korda, mis töötab
on tulla loeng.
Nii study.cs50.net uhiuue see aastal, fantastiline ressurss.
>> Järgmisena on mul mees, kes on käsitsi käsk, et saate käivitada
käsurida.
Nii et kui teil on küsimusi käsk, näiteks rand, mida me
tekkinud viimase nädala jooksul jagu ja olete tõenäoliselt tekkinud
Teie probleem määrata, millal läbimas genereerida koodi, aga kui sa kirjutad mees
rand, saad lehele, ütleb teile kõike rand.
See annab teile, mida ta võtab, parameetrid, mis kulub, samuti tagasipöördumise
liik ja lühikirjeldus selle funktsiooni.
>> Nii et vaadake rand.
See võib olla veidi paljusõnaline ja segane, nii et mõnikord ma leian, et
lihtsalt Google'i abil, mida ma tahan teada on Parim viis leida vastus.
Nii harjutada Google.
Saa hea Google.
Sellest saab teie parim sõber.
>> Nagu ka Google, kui sa ei leia seda Google'is cs50.net/discuss, see on
arutelufoorum.
Võimalik, kui teil on küsimusi, millest üks oma 700 + partnerit ka, et
küsimus ja võib palunud see juba arutama
foorumeid ja on see vastas.
Nii et kui teil on üldine küsimus või Teil on küsimusi, mis te arvate
äkki teised inimesed võisid joosta, vaadake cs50.net/discuss.
>> Lõpuks, kaks viimast, kui soovite rääkida reaalne inimene, kontor
tundi esmaspäevast reedeni.
Seal on ka online-tööajal Laiendamise õpilastele.
Ja viimane, kuid kindlasti mitte vähem, minu hüüumärk.
Te kõik on minu kontaktandmed.
Kui teil on vaja midagi, siis ei kartke minuga.
Alati võid vabalt teha.
Väga vähesed olete lisanud mind Gchat, nii et on valmistanud pettumuse,
kuid loodetavasti see muutub vahel Selle ja järgmise osa.
Kõik küsimused on seni vahendeid?
Suur.
>> Lõpetuseks veel üks pistik tagasisidet, sayat.me/cs50.
Võite mulle anonüümne tagasiside kuidas ma teen.
See oli tõesti kasulik eelmisel nädalal.
Mul on paar märkust kutid kohe pärast jagu, plus
teiste õpilastega, kes vaatasid seda nädala jooksul, ja see
oli uskumatult abivalmis.
Ma lähen, et proovida ja piirata oma kasutamise sõna "magus", kuid ma näitan mu
entusiasmi ja elevust muul viisil.
Aga seal oli ka muid täiendavaid sisulise tagasiside,
nii plussid ja delta.
Nii et palun, ma annan teile kutid tagasiside Teie probleem komplekti.
Julgelt andke mulle tagasisidet minu õpetusest.
Ma olen siin, kutid.
>> Suur.
See on kõik, mis mul eest Esimene osa.
Kas kellelgi on mingeid küsimusi nii palju?
Ja mul märkuse juhtimiskeskus.
Extension õpilased on messaged mind ütlesid nad ei saa mingit heli,
aga see on mu võim.
Loodetavasti see muutub lahendatakse peagi.
Kui sa vaatad online, hi, kuid sa ei kuule mind.
>> Nii et esimene, me läbima GDB.
GDB, nagu ma vihjanud varem, on silumine vahend
palju parem kui printf.
Nii alustan GDB, kutid, kui soovite avada oma seadme
ja võtma fail, et ma meilitsi varem - see fail ka
saadaval internetis natuke -
ja käivitada GDB. / faili nimi.
Esiteks muidugi, sa pead koguma esitada, sest GDB töötab ainult
täitmisfaili faile.
>> Aga kui sa kunagi tahad hakata GDB, esimene asi, mida teha,
sa jooksed GDB. / Caesar.
Nii et programmi nime oleme lähen seda kohe.
Nii et ma lähen kirjutama teha Caesar, mis annab mulle käivitatava faili
siin rõhutatud roheline.
Ja siis ma lähen jooksma GDB. / Cesar.
>> Ja seal, kuhu lähed.
Näed meil mingi tekst mulle umbes versiooni GDB, annab mulle
mõned garantii kohta, ja siis me on SKP kiire, mis tundub omamoodi
samasuguste meie käsurealt, aga näed see on avatud
paren, GDB lähedal paren.
Enne kui me jätkuvalt ja siluda seda pilti et saatsin teile kõigile, vaatame
mõned kasulikud käsud nii et meil on mõistlik mida me katta.
>> Need käsud on loetletud siin et kus ma tavaliselt neid kasutada.
Nii et ma hakkan minu programm töötab GBD. / Programmi nime,
sel juhul Caesar.
Ja siis esimene asi, mida ma teha 99,9% ajast on tüüp break tähendab.
See seab murdepunkt juures peamine.
Sisuliselt, mida sa teed seal Kas programmi saab peatuda
Peamine, siis võite alustada uurides seda rida realt, mitte töökorras kõik
tee läbi.
Võid murda erinevates punktides oma koodi, kuid peamine on üldiselt
hea koht alustamiseks.
>> Järgmise käsu ma saan töötab.
See algab programm töötab, ja kui teil on vaja sisestada käsurea
argumente, siis on see, et käsk.
Jookse argumendid.
Niisiis, kuna me üle versioon C, mis on programmi kutid
kirjutas pset kaks -
see muidugi on mõned vead see, et loodetavasti me leiame -
me joosta joosta mingi käsu argumente, sest Caesar,
nagu te teate kohta probleem määrata spec, mone
käsurea argumente.
>> Paari käsku, järgmise üks on tegelikult nn kõrval.
Et üks viib teid rea kaupa läbi oma programmi.
Nii lööb n siis Sisesta vie järgmisele reale, täidesaatva
eelmise rea.
Step mitte ainult viib teid Järgmine rida, kuid see
viib teid sees funktsiooni.
Nii et kui teil on kirjutatud funktsiooni koodi või kui soovite, et uurida
i, näiteks saab löögi s ja selle asemel et minna järgmisele reale
faili, et sa lähed läbi õige nüüd, sa tegelikult astuda
See funktsioon ja vaata oma koodi.
>> Nimekiri näitab, et väga kasutajasõbralik formaat, 10 või nii liinid ümber
kus te praegu olete oma koodi nii et saate tegelikult vt pilti
selle asemel, et vahetada ja tagasi edasi erinevate seisukohtade vahel.
Print on nagu printf, nagu nimigi ütleb.
See näitab teile, mida muutuja võrdub.
>> Info kohalikega on tõesti kasulik.
See on eriversioon print.
Info kohalikega näitab kõiki kohalikke muutujad, prindib kõik sinu eest
mis on juba praegu olemas.
Nii et ma üldiselt, selle asemel, et trükkida neli muutujad, et ma olen
uudishimulik, kui ma olen silmus jaoks Näiteks, ma lihtsalt kirjutan info kohalikega,
ja siis see näitab mulle, mis mu counter i võrdne, samuti massiiv, et ma olen
kallal võrdsete.
>> Lõpuks jätkata.
Kirjutamise paus peatab sind at murdepunkt.
Saad minna läbi rida kooskõlas järgmise ja samm.
Jätka jookseb programm oma järgmise murdepunkt või lõpetamiseni, kui
ei ole enam murda punkte.
Keela eemaldab murda punkte kui te otsustas seisul peamine oli
sobimatu, mida soovite määrata seda kusagil mujal.
Ja lõpuks q, quit väljub GDB.
>> Nii selle programmi. / Caesar, me läbi vaatama kohe, ja me
ei kavatse kasutada GDB leida vead selles programmis.
Ma jooksin selle programmi varem Kontrollige 50 ja sain ühe pahaks.
Kõik see on olemas, see on koostatud, siis läbinud palju teste, kuid
Mingil põhjusel see ei liigu viies test, keerates BARFOO, kõik mütsid, arvesse
E-D-U-I-R-R, kõik kaaned kasutades kolme peamise.
Ma sain päris lähedal.
Ma sain maha ühe kirja.
Nii et seal on mõned väikesed viga siin.
Olen tutvunud kaudu oma kood.
Ma ei saanud sellest aru.
Loodetavasti te saate mind aidata aru saada, mis see viga on.
>> Nii et vea oleme otsivad.
Olgem liikuda GDB.
Jällegi, ma olen joosta GDB. / Caesar, nii et nüüd me oleme GDB.
Ja mis on esimene asi, mida ma peaks tegema?
Ma just sisenenud GDB.
Keegi mulle hea käsk siseneda.
>> Üliõpilane: Break peamine.
>> JASON Hirschhorn: Break peamine.
Fantastiline.
Olgem tüüp, et sisse
Te saate vaadata siin või järgida koos oma arvutitega.
Break peamine, ja te näete, murdepunkt oli määratud -
see annab mulle mingi imelik mälu aadressi, ja see annab mulle liin number.
Kui ma vaatan tagasi selle faili, Ma mõistan, et peamine
juhtunud on line 21.
Mida ma peaksin kestab edasi?
Kas minu programm töötab?
Ei.
Nii et mida ma peaks kulgema edasi?
>> Üliõpilane: Run.
>> JASON Hirschhorn: Jooks.
Kas ma peaksin lihtsalt joosta joosta, või peaks Lisan mõned muud asjad?
>> Üliõpilane: Jookse argument.
>> JASON Hirschhorn: Jookse käsureaargumendid.
Ja kuna ma silumine väga konkreetseid juhul ma peaks alustama, et
käsurea argument.
Nii et ma ei joosta kolm, mis on jällegi väljund sain Check 50.
Alustades programmi.
Me läheme läbi paar rida.
Nüüd näete, et me oleme real 21.
Kuidas ma tean, et me oleme real 21?
Sest kui te vaatate vasakule minu terminalis, seal
ta ütleb line 21.
Ja see annab mulle, tegelikult, kood, mis on kooskõlas 21.
Nii et ma väljendasin end valesti varem.
Põhiline ei ole tegelikult real 21.
Põhiline on paar rida eespool 21.
Aga liin 21, mis on kus me oleme murdunud.
See koodirida on ei ole veel täidetud.
See on oluline.
Line näed ei ole täideti veel.
See on järgmise koodirida sa parasjagu täidab.
>> Nii et järgmine rida, kui te olete ilmselt tuttav, on see
tingimus kontrollides, et näha, kas mul on sisestada käsurea argument.
Ja et i, mis on teise osa, mis teed?
Mis on i?
>> Üliõpilane: Muutuvad see täisarv.
>> JASON Hirschhorn: Vabandust?
>> Õpilane: See muutub argument, et täisarv.
>> JASON Hirschhorn: So i muutub arg v1 alates stringi täisarvuni.
Ja siis on see kontroll?
>> Üliõpilane: Kui on olemas teine käsurea argument kõrvale
töötab programm.
>> JASON Hirschhorn: Ja mis on teisel poolel
Loogiline väljend kontroll?
See osa siin, et olen?
>> Üliõpilane: Kui see on negatiivne.
>> JASON Hirschhorn: Making kindel, mida?
>> Üliõpilane: hoolitsedes on tegelikult positiivne.
>> JASON Hirschhorn: Täpselt.
Seda kontrollides, et näha, kas see on negatiivne, ja kui see on negatiivne, I
on tunne, et järgmine rida võiks mina karjuma kasutaja.
Teeme tabanud end teostada seda joont.
Me ei näe, et joon, mis te võibolla oodata karjuma
kasutaja ning pöördub, sest see liin ei käivitunud.
Astusin 3.
Nii ma tegelikult sisesta kaks käsk argumente ja 3 on
nullist suurem.
Me nägime, et liin on meil täidetud, kuid me ei astunud
sees kui seisukorras.
>> Nüüd kõrval näen ma panen int võti võrdub i arg v1.
Nii et mina luua muutuja võti.
Nii et kui ma välja printida võti kohe, sest mis võimaldab näha
väärtuse sees muutuja, võti võrdub 47.
See on imelik, aga loomulikult see on sellepärast, et ma ei ole
täide, et joon veel.
Nüüd, kui ma tabanud n, täita selle rea, ja teha print võti, võti on võrdne 3,
mis on see, mida me ootame, et võrdsed.
>> Nii et taas, GDB, liinilt näha pole täide veel.
Sa pead tabanud n või s või number teiste käske tegelikult
täitma, et liin.
Print key.
Võtme juures 3.
Siiani on kõik hästi.
String on lihttekstina.
Olgem täita, et liin.
Ma saan stringi kasutaja.
>> Vaatame minu Check 50, I sisestage BARFOO kõik mütsid, nii
see on, mida ma sisestada.
Kui ma nüüd trükkida teksti.
Näete see võrdub string.
See annab mulle mingi muu imelik kuueteistkümnendsüsteemis arvu, kuid see toimub
Tegelikult ütlevad, et mu string BARFOO.
Kui ma tahtsin näha, mis võti korranud juures Siinkohal kuidas ma vaadata võti?
>> Üliõpilane: Print key.
>> JASON Hirschhorn: Print key, täpselt.
Ja tegelikult, seal on otsetee.
Kui sa väsinud kirjutades print, võid trükkida p.
Niisiis p võti teeb täpselt sama asja.
Ja veel, ma näen see võrdub 3.
>> Kui ma tahtsin teada saada, mis mõlemad võti ja BARFOO kujunes samal ajal
aga ma olin väsinud kirjutades iga üks läbi eraldi, I
võiks tüüp info kohalikega.
See annab mulle võti võrdsete 3.
Plain text võrdub BARFOO.
Samuti annab mulle need kaks imelikke asju tipus, see muutuja i ja
Selle muutuja n.
>> Need on tegelikult olemasolev minu põhiprogramm.
Me pole kokku puutunud neid veel, aga kui eelvaadet, need
eksisteeri minu jaoks silmus.
Nii et praegu on nad võrdsed mõned imelik numbreid, sest nad ei ole
lähtestatud, aga nad on siiski olemas mällu, nii et nad lihtsalt määrata
mõned prügi väärtus.
Aga me ei näe võti lihtsas teksti seal.
>> Nii et ma lähen täita seda joont, line 34, silmus.
Me hüpata silmus lööb n.
Ja me oleme sees silmus.
Oleme meie esimene kontroll.
Ja veel, need peaks justkui otsima tuttav, sest see oli
Caesar programm, mis oli kirjutatud, kuid jälle on mingi viga.
>> Ja nüüd kui ma seda infot kohalikega, sest ma olen sees, et loop, näete
mis i võrdub nulliga, kui me oodata.
See, mida me seada see ja initsialiseerida see on silmus.
n võrdub 6.
See on ka loogiline, sest seadsime see strlen lihttekstina.
Nii et ma tahaksin teha info kohalikega või print muutujale sageli veenduda, et
kõik on alati see, mida Ma eeldan, et see on võrdne.
Sel juhul on kõik mida ma oodata, et see on võrdne.
>> Alustame liigub läbi Selle jaoks silmus.
Line Ma olen on line 36, kui tavaline tekst i on suurem ja tavaline
Teksti i on väiksem või võrdne z.
Ma tean, et minu probleem ei ole minu esimene kirja, see on teise kirja.
Kui me vaatame tagasi Check 50, B läheb E fine.
Ma viin ja jättes nagu , ei muuda see, et D. Nii
midagi on valesti teine ​​kiri.
Ma lähen, et liikuda seal teine.
>> Aga kui ma ei taha vaadata, mida tavaline tekst ma korranud seda eriti
juhul, ma arvan, et see peaks olema, mida?
Mida peaks lihtteksti I võrdne sellega esimese vooru jaoks loop?
>> Üliõpilane: Zero?
>> JASON Hirschhorn: Plain teksti olen?
Seega peaks olema kapitali B. Mul muidugi võrdub nulliga, vaid ainult tekst
sulg null suletud sulg võrdub B kuna stringid, nagu nägime eelmisel nädalal,
on massiiv, nii et me saame Esimene märk sellest.
Nii et taas, kui ma välja printida tavaline tekst Ma, ma tegelikult saan iseloomu
B. Ja see on puhas, eks?
Ma tegelikult ei ole lihtteksti I. See ei ole üks muutujaid seadsin
või lähtestatud, aga saate printida välja terve hulk asju,
kui soovite.
>> Kuid olgem liikuda.
Kui lihtteksti I on suurem ja lihttekstina I on väiksem või võrdne
Z, et selgelt on tõsi, sest meil kapitali B. Ma lähen sõitma
mingi käsu peale.
Me nägime, et matemaatika eelmisel nädalal, nii et me enesestmõistetavaks, et see töötab
õigus vastavalt Kontrollige 50.
>> Need lokkis traksid, esimene selgus, et olin väljumisel kui
tingimusel, teine ​​näitas et ma väljumise loop.
Ja nüüd, kui ma tabanud Järgmisena näeme, oleme tagasi silmus uuesti.
Me läheme läbi silmus uuesti.
Olgem tegelikult samm teine iteratsiooni loop ja liik
info kohalikega.
>> Nii et me oleme teist iteratsiooni meie jaoks silmus.
Ma võrdub 1, mida me ootame.
N võrdub 6, mida me ootame.
Key võrdub 3, mida me ootame.
Ja tavaline tekst, näete, võrdub EARFOO nüüd, ei BARFOO enam, sest
meie eelmine iteratsiooni B oli muutunud kapitali E. Nii me parasjagu
et tekib probleem, nii et see on koht, kus me
sukelduda silumist.
Aga kas keegi on küsimusi kohta, mida oleme seni teinud?
Fantastiline.
>> Nii me parasjagu täita seda, kui tingimus, lihtteksti sulg I suletud
sulg üle ja lihtteksti I väiksem või võrdne Z. Kuid enne
Ma lähen sinna, sest see on koht, kus Ma tean, et minu viga on, ma tahan juhtida
välja plain tekst I. Nii paneme välja printida.
See ei võrdu märk, et tundub nii kaugele, et kõik on hästi ja hea.
>> Nii ma ootan seda rida iga minu loogika, See peab olema tõeline.
See on suurtäht.
Aga kui ma tabanud n, me mõistame, et see line, et tegelikult ei saa täita.
Ma hüppasin alla else if.
Miks see juhtus?
>> Üliõpilane: Kuna teil on teie seisund lihtteksti on suurem
kui mitte võrdne või suurem.
>> JASON Hirschhorn: Pidin oma lihtteksti I on suurem, ei ole suurem
või võrdne.
Nii selgelt, kapital ei käivitab selle, kui tingimuse ja tegime
ei astu, ja me tegime ei tee vajalikke muudatusi.
Ongi tegelikult.
Ma arvasin, minu viga.
Ma võiks minna tagasi minu lähtefaili muuta, ja ajakohastada seda ning
käivitada Check 50 uuesti.
>> Aga me näeme, lihtsalt pedagoogika on pärast, kui ma edasi.
Muidu kui ei tee nii, aga mis selle asemel võrdub on käsk
see ei muuda.
Nii et see ei ole muutunud üldse, ja kui ma prindi lihtteksti siin me näeme läheb
kaudu, et loop ei, tegelikult muuta, et teine ​​märk üldse.
See on ikka pealinnas A.
>> Nii et taas, me silumisel meie viga.
Saime aru, et seal oli mõned loogika puudub.
Ja me silumisel enne tähtaega enne tegelikult täidesaatva et joon,
aga sa oleks märganud, oli meil ainult hit Next ja hüpata, et muidu, kui
mis tähendab, et kui tingimus ei olnud tõsi.
Me ei tegelikult saada tulemus lootsime.
Siis me oleks võinud paluda, oli me ei olnud nii nutikas, et vaadata
et kui tingimus ja kontrollida, kas tegelikult Meie tingimus peaks hindama, et
tõsi praeguses kontekstis.
>> See on kõik silumine programmi.
Kas kellelgi on küsimusi?
Mis käsk võiks ma tabanud loobuda GDB?
Q. Ja siis ma küsitakse, väljun siiski?
Jah või ei.
Ma löön jah, ja ma ei quit GDB.
>> Nii et oli kiire primer GDB.
Tegelikult on reaalne stsenaarium, Ma tegin seda kell tööajal.
Ma GDBed see täpne programm tööaega õpilane.
Ja kui me tagasi minna käske nägime varem me break peamine esimene
asi, mida me tegime.
Me kasutasime joosta käsurea argumente, Teine asi, mida me tegime.
Meil kasutatakse järgmise palju liikuda meid läbi rida.
Ja jälle lühike variant Järgmise on n.
See on sulgudes hall slide.
>> Me ei kasuta samm, kuid me ei pea sel juhul.
Aga me võiksime kasutada seda veidi hiljem Täna, kui me silumise jaoks
Näiteks binaarne otsing kui binaarne Otsi nimetatakse eraldi
funktsioon, kuid seal mõni viga sellega.
Me tahame astuda üleskutse binaarne otsing ja
tegelikult siluda ta.
Nimekiri me ei kasuta ka, sest meil oli heas mõttes meie koodi, kuid kui ma
Kas tahad saada tunnet, mida kood I oli ümber, ma võiks lihtsalt kasutada nimekirja.
>> Trüki me kasutada info kohalikega me kasutasime.
Jätka meil ei ole vaja kasutada käesoleva juhul ei ole me peame kasutama
lülitada, kuid me tegime kasutamine lõpetan.
Ka need 10 käsud praktikas neid.
Kui sa mõistad neid 10 käsku, sa tuleks silumiseks tahes
küsimus GDB.
>> Nii et me oleme minemas on, jällegi, et Võtmeküsimuseks lõik täna, et läheb üle
nende sorteerimine ja otsimine algoritme.
Enne kui me seda jälle küsimusi, kommentaarid, mure GDB?
Nii on kõik kavatse kasutada GDB mitte printf?
Seega igaüks, tähtajatuse pärast, igaüks noogutab oma pead paremale
nüüd, et ma näen sind tööaega ja kõik TF näed sina ja
nad ütlevad, näita mulle, kuidas kasutada GDB, ja sa pead olema võimeline
näidata neile, eks?
Objekti?
Ehk loodetavasti.
Lahe.
>> Nii et me ei kavatse kolida sorteerimine ja otsimine.
Näete Mul on nimekiri juba järjestatud meid, kuid see ei lähe
et antud juhul alati.
Nii et probleem määrata spetsifikaadi lahendamist kolm, siis on püksid
et saab vaadata, ja see tegelikult palub teil vaadata neid lühikesed püksid.
Ka loeng eelmisel nädalal, me läksime üle palju neid algoritme, nii et ma olen
ei kavatse kulutada aega klassis läheb üle nende algoritmide uuesti või joonistus
pildid, kuidas need algoritmide töö.
Jällegi, et andmed, mida saab uuesti vaadata loeng, või et andmed
pildistatud silmapaistvalt on püksid Nende otsingute kõik
mis on kättesaadavad cs50.net.
>> Nii et selle asemel, mida me teha, on kirjutada neid programme.
Meil on tunne, mentaalne mudel, kuidas nad töötavad, ja mis siis me läheme
vaja on kodeerida neid päris.
Me läheme omakorda, et vaimne mudel, et pilt, kui soovite, arvesse
tegelikku koodi.
Ja kui sa olid natuke segaduses või udune on vaimne mudel, ma täiesti
mõista.
>> Me tegelikult ei kavatse hüpata kood kohe.
Niisiis, kui see kiire slaidide küsib sa koodi binaarne otsing ja
Tegelikult iteratiivne versioon binaarne otsing, esimene asi, mida ma
tõesti tahan, et sa ei kirjutada mõned pseudokoodi.
Nii et teil on see vaimne mudel kuidas binaarne otsing töötab.
Võtke paberileht, kui teil on üks kergesti kättesaadav, või avada
tekstiredaktor, ja ma tahaks igaüks kirjutada.
Võetakse neli minutit, et kirjutada pseudokoodi binaarväljades otsing.
>> Jällegi, mõtle, et vaimne mudel.
Ma tulen ümber, kui teil on küsimusi ja saame teha pilt välja.
Aga kõigepealt, enne kui hakkame programmi, Ma tahaks kirjutada
pseudokoodi binaarväljades otsing nii et kui me sukelduda, meil on mõned suunas
kuhu me läheme.
>> Üliõpilane: Kas me eeldame massiivi väärtused saame juba sorteeritud?
>> JASON Hirschhorn: Nii binaarne otsing tööd - väga hea küsimus - sa
peavad võtma, sorteeritud massiivi väärtusi.
Seega eeldame, et see töötab.
Me läheme tagasi selle slide.
Näete lilla funktsioon deklaratsioon on bool binary_search int
väärtus, int väärtusi, int n.
See peaks välja nägema tuttav, kui oled juba pöördunud või saanud oma
käed määrdunud probleemi komplekt.
>> Aga see on sinu ülesanne deklaratsioon.
Jällegi, ei pea muretsema et palju praegu.
Mida ma tegelikult tahan, et sa ei võta nelja minuti pseudokoodi binaarne
otsida, ja siis me läheme üle, et rühmana.
Ja ma tulen umbes.
Kui teil on küsimusi, võid vaba tõsta oma käsi.
>> Miks sa ei võta veel kaks minutit et lõpetada pseudokoodi?
Tean, et see võib tunduda naeruväärne, et me kulutame nii palju aega
midagi, mis ei ole isegi tegelikult C, kuid eriti neid rohkem
keeruline algoritme ja probleem sätestab, et me peame välja mõtlema,
alates pseudokoodi mitte murettekitav umbes süntaks, just muretsema
loogika on uskumatult kasulik.
Ja nii, et sa ei lahenda kaks uskumatult raske probleeme korraga.
Sa lihtsalt keskendub loogika ja siis liikuda süntaks.
>> OK.
Alustame läbimas pseudokoodi.
Olen kirjutanud siia, binaarne Otsi pseudokoodi.
Me kirjutame seda pardale koos.
Või ma kirjutan selle ja annad mind küsimata vajan.
Nii saab keegi anda mulle esimene rida pseudokoodi te
kirjutas binaarne otsing?
Jah, Annie?
>> ÕPILASELE: Kuigi pikkus nimekiri on suurem kui null.
>> JASON Hirschhorn: Kuigi pikkus of list suurem kui null.
Ja veel, me näeme mõned C ilmega süntaktiline asju siin.
Aga kõige selle kohta on inglise keeles.
Kas keegi on line panid enne seda oma pseudo-kood?
>> Üliõpilane: Saa massiivi on järjestatud numbrid.
>> JASON Hirschhorn: Sa kirjutasid "saada massiiv sorteeritud numbrid. "Per
funktsiooni deklaratsioon, saadame kulgeb massiiv sorteeritud numbrid.
>> Õpilane: [kuuldamatu].
>> JASON Hirschhorn: So meil midagi.
Aga jah, kui me ei ole, et me oleks vaja sorteerida oma valikut
numbrid, sest binaarne otsing töötab ainult järjestatud massiivid.
Niisiis, kui pikkus nimekiri võrdub nulliga, ma olen kavatse panna mõned lokkis traksid
et muuta see välja natuke nagu C. Kuid samas näib map peale
samas silmus, nii sees kui loop, mida me vajame
teha binaarne otsing?
>> Keegi, kes ei ole andnud mulle vastata veel, kuid kes selle kirjutas?
>> Üliõpilane: Mine keskel nimekirja.
>> JASON Hirschhorn: Tom.
Mine keskel nimekirja.
Ja järelmeetmete küsimus, mida me teeme, kui me oleme
keset nimekirja?
>> Üliõpilane: Kas Kontrolli, kas see on number otsite.
>> JASON Hirschhorn: Suurepärane.
Mine keset nimekirja ja kontrollib kui meie raha on olemas -
fantastiline.
Kas kellelgi on midagi muud see oli teine ​​asi kui see?
See on täpselt õige.
>> Esimene asi, mida me teha binaarne otsing on minna keset nimekirja ja
vaadata, kui meie raha on olemas.
Nii et ma oletada, kui meie raha on seal, mida me teeme?
>> Üliõpilane: Me tagasi nulli [kuuldamatu].
>> JASON Hirschhorn: Jah, kui meie väärtus on olemas, me leidsime selle.
Nii et me ei saa öelda kuidagi, aga see funktsioon on defineeritud, siis rääkige kasutaja
Me leidsime selle.
Kui see ei ole seal, kuigi see on kus see saab keeruline.
Nii et kui see ei ole seal, et keegi teine, kes töötas binaarne otsing või
on idee nüüd, mida me teeme?
>> Üliõpilane: Küsimus.
>> JASON Hirschhorn: Jah?
>> Õpilane: massiiv juba sorteeritud?
>> JASON Hirschhorn: Jah, me oleme eeldades massiiv on juba järjestatud.
>> Üliõpilane: Siis sa pead kontrollima, kas väärtus, mida näen, on suurem kui
väärtus, mida soovite, võite Lisa keskel teise poole.
>> JASON Hirschhorn: Nii et kui keset Nimekiri on suurem kui see, mida me oleme
otsin, siis mida teha?
Me liigume, kus?
>> Üliõpilane: Sa tahad kolida poolel nimekiri
numbrid madalam.
>> JASON Hirschhorn: nii me helistada, et vasakule.
Nii et kui keskel on suurem, saame otsida vasak pool nimekirja.
Ja siis otsida, mida ma mõtlen otsing?
>> Õpilane: [kuuldamatu].
>> JASON Hirschhorn: Läheme keskel.
Me tegelikult korrake seda asja.
Me läheme tagasi meie samas silmus.
Ma annan sulle viimane -
muud, kui keskel on vähem kui see, mida me, mida me teeme siin?
>> Üliõpilane: Mine õige.
>> JASON Hirschhorn: Otsi parem.
See näeb hea välja, kuid kas keegi on midagi, et meil võib olla kadunud või
midagi, et paned sinu pseudo-kood?
Nii et see on see, mida me siiani.
Kuigi pikkus loetelus on suurem kui null, me läheme
Lisa keset loetelu ja kontrollida, kas meie raha on olemas.
>> Kui keskel on suurem, me läheme otsi vasakule, teine, kui keskel on
vähem, me otsida õige.
Nii et me kõik oleme olnud mõned tuttavad mõisted, mida me kasutame arvuti teadust
ja tööriistad oleme.
Aga sa juba märganud olime räägib inglise keelt, kuid me leidsime
palju asju, mis tundus, et kaart on tööriistad oleme meie kodeerimine tööriistakomplekt.
Nii õigus ära nahkhiir, me ei ole läheb tegelikult veel koodi.
>> Mida me näeme siin inglise keeles, et kaardid on asju, saame kirjutada C?
>> Üliõpilane: Kuigi.
>> JASON Hirschhorn: Kuigi.
Nii et see, kui siin Kaardid, mida?
>> Üliõpilane: samas silmus.
>> JASON Hirschhorn: samas loop?
Või ehk üldisemalt loop.
Me tahame midagi teha, ikka ja jälle.
Nii et me koodi silmus.
Ja me juba teame, sest me oleme teinud seda paar korda ja me
on palju näiteid, seal, kuidas tegelikult kirjutada
Selle indeksi loop.
Nii et peaks olema üsna lihtne.
Meil peaks olema võimalik saada, et hakkas päris kiiresti.
>> Mida muud me näeme siin?
Mis muud rajatised syntaxes asjad et me oleme tuttavad C, me
juba tunde Based välja sõnad me kasutasime?
Jah, Anna?
[Kuuldamatu]
nalja.
Anna minna.
>> Üliõpilane: Kas ja muud.
>> JASON Hirschhorn: Kas ja teine ​​- siin.
Mida need välja näevad?
>> Üliõpilane: kui teine ​​avaldus.
>> JASON Hirschhorn: Jah tingimustes, eks?
Nii me ilmselt vaja kirjutada mõned tingimused.
Ja veel, kuigi võib-olla segane Esimene, siis üldiselt on mõtet nüüd
kuidas kirjutada tingimused ja süntaks tingimused.
Ja kui me seda ei tee, me lihtsalt otsida süntaks tingimused, lõika ja kleebi
et, kuna me teame, et me vaja seisund siin.
Muid asju, mida me näeme, et kaart peale asjad võiks olla vaja teha C?
Jah, Aleha?
>> Õpilane: See võib olla ilmne, lihtsalt kontrollida, kas
väärtus on midagi.
>> JASON Hirschhorn: Niisiis, kuidas me vaadata ja - nii minna keset nimekirja
ja vaadata, kas meie raha on?
Kuidas me seda teha C?
Mis on süntaks, mis?
>> Üliõpilane: Vastus, võrdub.
>> JASON Hirschhorn: Vastus, võrdub.
Nii, et see kontroll on ilmselt läheb olema vormis, võrdub.
Seega me teame, on meil vaja, et kusagil.
Ja tegelikult, lihtsalt kirjalikult see, me näeme neid muid asju.
Me peame tegema mõned võrdlus ettevõtjad on -
fantastiline.
Nii see tegelikult välja näeb, mida ja suur, et me ei ole kirjutatud
Sõna C kood veel.
Aga meil on vaimne mudel alla kaudu loengud ja need püksid.
>> Me kirjutasime pseudo-kood rühmana.
Ja juba on meil 80%, kui mitte 90% sellest, mida me peame tegema.
Nüüd on vaja ainult koodi see, mis jällegi
mitte-triviaalne probleem lahendada.
Aga vähemalt me ​​ummikus loogika.
Vähemalt nüüd, kui me läheme tööaega Ma ei saa öelda, ma tean, mida ma vajan
teha, kuid võite meelde mulle süntaks?
Või isegi kui tööajal on täis, siis Kas Google süntaksi jaoks pigem
kui on kleebitud loogika.
>> Ja veel, selle asemel, et lahendada loogika ja süntaksi probleemid kõik
korraga, on sageli palju parem murda need kaks kõva probleemid maha võtta
kaks juhitav ones ja teha pseudo-kood ja siis kood C.
Vaatame, mida ma tegin, et pseudo-kood enne tähtaega.
>> Kuigi pikkus loetelus on suurem kui null, pilk keskel
nimekirja.
Kui number leitud tagastatakse true, muidu kui number suurem, otsing vasakule.
Else kui number on madalam otsing Olgu, tagasi false.
Nii et tundub peaaegu sama kui mitte peaaegu identne sellele, mida me kirjutas.
Tegelikult Tom, mida sa ütlesid, esimene, murda keset nimekirja ja kui
number leitud kahte avaldused on tegelikult see, mida ma tegin.
>> Ühendasin neid seal.
Oleksin pidanud kuulanud te esmakordselt.
Nii et on pseudo-kood oleme.
Kui soovite nüüd, sorry, go tagasi meie algse probleemi.
Oletame kood binary.c.
Nii rakendab iteratiivne versioon binaarne otsing ümber järgmiste
funktsiooni deklaratsiooni.
>> Ja sa ei pea kopeerima selle alla veel.
Ma tegelikult läheb avama üles siinsamas binary.c.
Seega on funktsiooni deklaratsioon keset ekraani.
Ja te näete, ma võtsin pseudo-kood alates minu pool, kuid peaaegu identne
et see, mida me kirjutas, ja panen selle sinu jaoks.
Nüüd võtame viis minutit koodi seda funktsiooni.
>> Ja veel, kui teil on küsimusi, tõstke käsi, andke mulle teada, ma tulen
tule ümber.
>> Õpilane: [kuuldamatu].
>> JASON Hirschhorn: Võtsin binaarne otsingu määratlusele
top, real 12.
Seda ma sain oma slide.
Ja siis kõik see pseudo-kood ma kopeerida ja kleepida slaidile
pseudo-kood slide.
Ma ei kuule ikka [kuuldamatu].
>> Nii et kui olete oma rakendamise, ma tahan vaadata seda.
Ma saatsin sulle helpers.h fail varem sellesse klassi.
Ja see on saadaval online samuti allalaadimiseks inimesed vaatavad
Käesoleva paragrahvi viitajaga.
Ja ma lihtsalt kasutada üldise jaotamise koodi pset3.
Nii ma võtsin find.C kasutage minu helpers.h fail mitte helpers.h fail
mis on toodud jaotus kood.
>> Ja ma pidin tegema veel ühe muutuse find.C asemel helistaja lihtsalt lihtsalt
otsing, helista binary_search.
Seega, kui soovite testida oma koodi tean, et see on, kuidas seda teha.
Tegelikult, kui me jookseme selle koodi just nüüd, ma lihtsalt teha koopia
minu pset3 kataloog jälle vahetasid välja abilised faili ja siis teha, et
muutuda find.C helistada binary_search mitte lihtsalt otsida.
>> JASON Hirschhorn: Jah.
Sul on küsimus?
>> Üliõpilane: Nevermind.
>> JASON Hirschhorn: Ära muretse.
Noh, hakkame pihta.
Me kodeerida seda rühma.
Üks teine ​​märkus.
Ka siin võib kergesti vahetatav jaoks Ülesanded kolm.
Mul on helpers.h fail, mis pigem kui helpers.h me antud,
deklareerib binaarne otsing, mull sort ja valik sort.
Ja find.c märkad real, Mis on see, et liin 68 kutsume binaarne
otsida mitte otsida.
Nii et taas, kood, mis on saadaval Internetis või kood, et olete
luua praegu saab kergesti vahetada jaoks p seatud 3 seda kontrollida.
>> Aga esiteks, let kood binaarne otsing.
Meie ülesanne deklaratsioon me tagasi bool.
Võtame täisarv nimetatakse väärtus.
Võtame massiivi täisarvud nimetatakse väärtused ja me võtame n
suurus massiiv.
On line 10, siin on mul terav hulka stdbool.h.
Kas keegi teab, miks see seal on?
Mida see koodirida teha?
>> Õpilane: See võimaldab teil kasutada bool tagastamise tüüp.
>> JASON Hirschhorn: Täpselt.
>> Üliõpilane: Või see on raamatukogu, mis võimaldab kasutada bool tagastamise tüüp.
>> JASON Hirschhorn: Nii terav hulka stdbool.h line annab mulle
mõisted ja deklaratsioonid asjad et ma olen lubatud kasutada
Selle teegi.
Nii nende hulgas, on selge, et seal on Seda tüüpi nimetatakse bool, ja see võib olla
õige või vale.
Nii see on, mida see joon teeb.
Ja kui ma ei ole seda joont, oleksin pahandusi kirjutamiseks selle
sõna siin, bool, seal.
Täpselt nii.
Nii et ma pean, et see kood.
OK.
Seega see jällegi on iteratiivne versioonis ei rekursiivne.
Olgem alustada.
>> Alustame selle esimese rida pseudo kood.
Ja loodetavasti, me - või loodetavasti.
Me läheme mööda tuba ringi.
Me läheme rida-realt ning Aitan sa nuputada line, et me peame
kirjutada esimene.
Niisiis, kui pikkus nimekiri on suurem kui null.
Alustame ees.
Mis liin peaks ma kirjutan siin, kood?
>> Üliõpilane: Kuigi sulgudes n on suurem kui 0.
>> JASON Hirschhorn: Kuigi n on suur kui 0.
Nii n on suurus nimekirja ja me kontrollime, kas -
>> [Astudes VOICES]
>> JASON Hirschhorn - Vabandust?
>> Üliõpilane: Kuidas me teame, et n on suurus nimekirja?
>> JASON Hirschhorn: Vabandust.
Per pset kirjeldusele otsing ja sort funktsioonid, mida on vaja kirjutada,
n on suurus nimekirja.
Ma unustasin, et selgitada, mis siin.
Aga jah. n on suurus nimekiri, antud juhul.
Niisiis, kui n on suurem kui 0.
OK.
See võib olla natuke problemaatiline kuigi, kui asjad lähevad.
Kuna me jätkame teada suurus loetelus kogu käesoleva
funktsioon, kuid ütlen, et me alustame array 5 täisarvud.
Ja me läheme läbi ja me oleme nüüd vähenes see allapoole
massiivi 2 täisarvud.
Milline 2 täisarvud on?
Suurus on 2 nüüd, et me tahame vaadata, kuid mis 2 on?
Kas see loogiline, et küsimus?
>> OK.
Ma küsin uuesti.
Nii et me alustad selle massiivi 5 täisarvud ja n võrdne 5, eks?
Me läbida siit.
me ilmselt muuta suurust, Olgu, kui asjad lähevad.
Mis on see, mida me ütleme, et me tahame teha.
Me ei taha, et otsida täis asi uuesti.
Nii ütleme me seda muuta 2.
Võtame pool nimekirja, mis on kummaline.
Nii lihtsalt valida 2.
Nüüd n võrdub 2.
Vabandan halva kuiva kustutada markereid.
Eks ole?
Ja me läbi otsida nimekiri uuesti nimekirja suurus 2.
Noh, meie massiiv on ikka suurus 5.
Me ütleme, et me tahame ainult otsi 2 kohale ta.
Nii et mis 2 laigud need on?
>> Kas see on mõtet?
Kas nad on jäänud 2 laigud?
Kas nad on õige 2 laigud?
Kas nad on keskel 2 laigud?
Me oleme purustatud probleemi maha, kuid me tegelikult ei tea, milline osa
probleem meil ikka vaatavad, lihtsalt võttes need 2 muutujat.
Seega on meil vaja natuke rohkem siis, samas n on suurem kui 0.
Me peame teadma, kus see n on meie tegelik massiivi.
>> Nii kas keegi on muuta seda joont?
Enamik see liin on täiesti õige.
Kas on veel lisaks?
Kas me saame vahetada midagi välja n teha see rida natuke parem?
Mm-hm?
>> Üliõpilane: Kas sa initsialiseerida muutuv nagu pikkus kuni n, et saad siis kasutada
hiljem funktsioon?
>> JASON Hirschhorn: Nii initsialiseerida Muutuva pikkusega n,
ja me kasutame seda hiljem?
Aga siis me lihtsalt uuendada pikkus ja me ikka tekib see probleem, kui me
kärpima pikkuse meie probleem, kuid me ei tea kunagi, kui tegelikult,
et pikkus kataks.
>> Õpilane: mitte et juhtub hiljem, kui sa ütled, otsida vasakule,
Otsige õige?
Sa lähed minema erinevat valdkonnas oma -
>> JASON Hirschhorn: Me läheme piirkonda, aga kuidas me teame,
mida minna?
Kui meil on ainult massiivi ja see n, kuidas me teame, kust
mine massiiv.
Aasta tagasi, jah?
>> Üliõpilane: Kas teil on, nagu, alumine seotud ja ülemise muutuva või
midagi sellist?
>> JASON Hirschhorn: OK.
Nii et see on veel üks idee.
Selle asemel, et lihtsalt jälgida suurus, jälgime madalam ja
ülemise muutuja.
Niisiis, kuidas me arvutama suurus alampiir ja ülempiir?
>> [Astudes VOICES]
>> JASON Hirschhorn: lahutamine.
Ja ka jälgida madalam siduv ja ülemine kindlasti andke teada,
me otsivad need kaks?
Kas me otsivad need kaks siin?
Kas me otsivad keskel kaks?
Tõenäoliselt mitte keskel kaks, sest see, et tegelikult on binaarne otsing.
Aga nüüd me oleks võimalik saada suurus, aga ka piire massiiv.
Sisuliselt, kui meil on meie hiiglane telefoniraamat, me rip see pooleks.
Me teame nüüd, kui see väiksem telefoniraamat on.
Aga me tegelikult ei kobesta telefoniraamatust pooleks.
Meil on vaja teada, kus uus piirid meie probleem.
Kas kellelgi on küsimusi kohta?
Jah?
>> Õpilane: Kas see töö, luues muutuja i, et sa siis lihtsalt minema
asend i võrreldes tema praegune asukoht ja pikkus, n?
>> JASON Hirschhorn: Ja mis on i?
>> Üliõpilane: Nagu ma oleks nagu omamoodi -
Nagu sa oleks initsialiseerida i olema keskasendis massiivi.
Ja siis, kui väärtus positsioonis i keset massiivi leiti
olla väiksem kui väärtus, mida vaja, ma nüüd muutub pikkusega massiiv, pluss
i väärtus jagatuna 2.
Nagu näha, siis vahetustega i -
>> JASON Hirschhorn: Õigus.
>> Üliõpilane: - kuni -
>> JASON Hirschhorn: Nii et ma olen peaaegu Positiivne on, et töötab.
Aga küsimus on selles, mida vaja kahte infoväljad siin.
Sa suudad seda alguses ja lõpus, või saab seda teha koos suurus ja seejärel
mõned marker.
Aga sa ei pea kaks tükki teabe siin.
Sa ei saa poolt vaid üks.
Kas see on mõistlik?
>> Nii et me läheme läbi ja me teeme [kuuldamatu]
ja luua mõned markerid.
Nii mida sa kirjutad oma koodi?
>> Üliõpilane: ma just ütlesin, int seotud üks on võrdne 0-ga.
>> JASON Hirschhorn: Helistame et int algusega.
>> Üliõpilane: OK.
>> JASON Hirschhorn: See teeb mõttekam mind.
Ja siis?
>> Õpilane: Ma ütlesin, ma arvan, int lõpeb.
>> JASON Hirschhorn: int lõpeb.
>> Õpilane: Ma arvan, et n miinus 1, või midagi sellist.
Nagu viimane element.
>> JASON Hirschhorn: Nii sa kirjutasid, int alustades on 0, semikoolon ja int
lõpp on n miinus 1, semikoolon.
Nii et sisuliselt, mida me teeme Siit 0 esimesel kohal.
Ja nagu me teame, on massiive, nad ei lähe kuni n, nad lähevad kuni n miinus 1.
Nii et meil on mõned piirid meie massiivi.
Ja need esialgsed piirid juhtub olema algne piire meie probleem.
OK.
Nii, et see kõlab hästi.
Siis kui me tagasi minna selle rea, kuid pikkus loetelus on suurem kui 0,
mida asemel n, peaks paneme siin?
>> Üliõpilane: Kirjutage lõpeb minus algusest.
>> JASON Hirschhorn: Kuigi lõppenud miinus alustades on suurem kui 0?
OK.
Ja me võiksime, kui me tahaksime tegema, et veidi kenamaks, mida
võiks veel teha?
Kui me tahame, et puhastada Selle koodi natuke?
Kuidas me saame vabaneda 0?
See on lihtsalt stiili küsimus.
See on õige kohe.
>> Õpilane: lõpeb ei võrdne algus?
>> JASON Hirschhorn: Me ei tee seda, mida?
>> [Astudes VOICES]
>> Üliõpilane: Lõpp on suurem?
>> JASON Hirschhorn: Jah.
Me saame lihtsalt teha, kui lõpeb on suurem kui alguses.
Õige.
Lisasime hakanud teiselpool selle, ja me saime lahti 0.
Nii see lihtsalt tundub natuke puhtamaks.
OK.
Seega, kui pikkus nimekiri on 0, me kirjutasime et kuigi lõpetades on suurem
kui algus.
Me esitame meie vajalik lokkis traksid, ja siis esimene asi,
me tahame teha, on vaadata, neid vähe nimekirja.
You?
Kas sa annad mulle -
>> Üliõpilane: Kui sulgudes väärtus nurksulg -
>> JASON Hirschhorn Kui sulud väärtus square bracket.
>> Õpilane: lõpeb jagatud 2.
>> JASON Hirschhorn: lõpeb?
>> Õpilane: Ma näen probleemi oma -
>> JASON Hirschhorn: OK.
Noh, vaatame keskel.
Kuidas me teame, mis keskel on?
Jah.
Nii et lubage mul kustutada selle koodi.
Kuidas me teame, mis keskel on?
Midagi, kui sul on alguses ja lõpuks, kuidas leida
keskel?
>> Üliõpilane: Te keskmiselt.
>> Üliõpilane: Te lisama neile kokku ja siis -
>> JASON Hirschhorn: Lisa neid kokku ja siis?
>> Õpilane: Ja sa keskmiselt.
Jagage seda 2.
>> JASON Hirschhorn: Lisa neid kokku ja jagage 2.
Nii int keskel võrdub?
Tom, sa ei anna seda mulle?
>> Üliõpilane: Algus pluss lõppenud -
>> JASON Hirschhorn: Algus pluss lõpeb.
>> Üliõpilane: Kõik, sulg, jagatuna 2.
>> JASON Hirschhorn: Kõik, sulgudes, jagatuna 2.
Nii et annab mulle keset midagi, õige?
>> Üliõpilane: Teil on vaja ümardada üles.
>> JASON Hirschhorn: Mida sa Tähendab, ma pean selle ümber toimub?
>> [Astudes VOICES]
>> Üliõpilane: Sest kui see on imelik number, siis see on nagu -
>> JASON Hirschhorn: Noh, OK.
Nii et ma võiks ümardada üles.
Aga kui see on paaritu arv, 5, ma ei võttes 1 eemal keskel.
Või kui see on paarisarv, pigem see on parem nii.
Kui see on 4, meil on ainult 4, võin võtta Esimene "middle" tsiteerida, lõppeb või
teine ​​"middle" üks.
Kas töötaks binaarne otsing, nii et ma tegelikult ei pea ringi ta.
Kuid on üks asi, mida ma vaja vaadata seda joont.
Me ei pruugi sellest veel aru, kuid me tuleme tagasi, talle.
Kuna see rida tegelikult ikka vajab veel üks asi.
>> Aga siiani oleme kirjutanud neli rida koodi.
Saime alguses ja lõpetades markereid.
Meil on samas silmus, mis kaardid on otse meie pseudokoodi.
Otsime keskel, et kaardid otse meie pseudokoodi.
Ütleksin see läheb keskelt nimekirja, see rida koodi.
Ja siis, kui me läheme keskel nimekirja, järgmine asi, mida me peame tegema
on vaadata, kui meie raha on seal pseudokoodi me varem kirjutasin.
>> Niisiis, kuidas me vaadata, kas meie raha on keskel nimekirja?
You.
Miks sa ei võiks seda teha?
>> Üliõpilane: Kui meie raha on on keskel on võrdne
mida me seada -
Ma mõtlen võrdne võrdne -
>> JASON Hirschhorn: It -
OK.
>> Õpilane: Ma ei tea, mida muutuja me otsime
jaoks aga see, sest -
>> [Astudes VOICES]
>> Õpilane: [kuuldamatu].
>> JASON Hirschhorn: Täpselt.
Per funktsiooni deklaratsioon me otsime raha.
Nii et me otsivad raha massiivi väärtusi.
Nii et sa oled täpselt õige.
Sa teed, kui avatud paren väärtus sulg keskel suletud sulg võrdsete
võrdne väärtus, ja seal sees Mida me peame tegema?
Kui meie raha on seal, mida Kas me peame tegema?
>> [Astudes VOICES]
>> Üliõpilane: Tagasi null.
>> JASON Hirschhorn: Tagasi tõsi.
>> Üliõpilane: Tagasi tõsi.
>> JASON Hirschhorn: Michael, Mida see rida teeb?
>> Õpilane: [kuuldamatu] programmi käivitada selle käigus ja see on möödas, ja
olete, mida sa pead tegema?
>> JASON Hirschhorn: programm, või mis?
Sel juhul?
>> Üliõpilane: funktsioon.
>> JASON Hirschhorn: funktsioon.
Ja nii, et naasta ükskõik kuidas seda nimetatakse ta ja annab talle raha, tõsi.
Täpselt nii.
Main.
Mida tagastamise tüüp Peamiste, Michael?
>> Üliõpilane: int, täisarv?
>> JASON Hirschhorn: int, täpselt.
Täisarv.
See oli lihtsalt küsimus veenduda kutid on peal.
Mis see tavaliselt tagasi, kui kõik asjad töötavad hästi?
>> Üliõpilane: Zero.
>> JASON Hirschhorn: Zero.
Täpselt nii.
>> Üliõpilane: Kui see lihtsalt tagastab tõsi, pole teavet antakse
mida -
Oh, see on lihtsalt öelda, et see väärtus on sees massiiv.
>> JASON Hirschhorn: Täpselt.
See programm ei anna teavet kus täpselt on väärtus.
See on ainult öelda, jah, me leidsime see või ei, me ei leia seda.
Nii et kui number leitud, tagastab true.
Noh, tegelikult me ​​tegime, et tegelikult kiiresti, et üks rida koodi.
Nii et ma liigun, et rida pseudokoodi.
>> Üliõpilane: Kas me ei vaja muuta massiivi?
See peaks olema väärtuste, mitte raha, eks?
>> JASON Hirschhorn: Vabandust.
Aitäh.
>> Üliõpilane: Jah.
>> JASON Hirschhorn: See rida peaks olema väärtused.
Täpselt nii.
OK.
Nii et me vaatasime keskel nimekirja.
Kui number leitud tagasi true.
Jätkub meie pseudokoodi, kui keskel on suurem, otsingumootori lahkus.
Pidin siin, kui number kõrgem, otsing vasakule.
Constantine, saate anda mind see rida koodi?
>> Üliõpilane: Kui väärtus keskel -
>> JASON Hirschhorn: Nii et kui väärtus -
kui avatud paren väärtustab sulg keskel sulg -
>> Õpilane: väiksem väärtus?
>> JASON Hirschhorn: Kas alla.
>> Üliõpilane: Vähem kui väärtus.
>> JASON Hirschhorn: Maksumus.
Noh, tegelikult, sa tahad kontrollida, kas number -
Vabandust.
See on natuke segane.
Aga muidu, kui number Keset nimekiri on pikem.
>> Üliõpilane: Oh, OK.
>> JASON Hirschhorn: ma seda muuta.
Else if keskel on kõrgem, siis soovite otsida vasakule, eks ole?
Ja mida me siis teeme sees see, kui tingimus?
>> Üliõpilane: Kas ma saan teha väike muutus tingimus, muuda see teine, kui?
>> JASON Hirschhorn: if?
OK.
Nii et see kood siis täidab ligikaudu sama.
Aga kena asi, kasutades juhul, kui teine kui teine, kui või kui teine, kui teine
tähendab, et ainult üks neist läheb Kontrollitakse, et mitte kõik neist kolmega
potentsiaalselt.
Ja see muudab natuke kenamaks arvuti, mis on
töötab oma programmi.
>> Nii [? Constantine,?]
Me oleme sees seda joont, muidu kui väärtused, sulg keskel sulg
on suurem kui väärtus.
Mida me peame tegema?
Meil on vaja otsida vasakule.
Kuidas me seda teeme?
Ma annan teile algusest peale.
>> Meil on need kaks asja, mida nimetatakse algab ja lõpeb.
Niisiis, mida on vaja juhtuda et algusest peale?
Kui soovite otsida vasakul nimekirja, saame meie praegune alguses.
Mida me peame seda tegema?
>> Üliõpilane: Seame alguses keskastme pluss 1.
>> JASON Hirschhorn: Nii et kui me oleme otsivad vasakule?
>> Üliõpilane: Sorry, keset miinus -
nii lõppemine ei oleks keskel miinus 1 ja alguses -
>> JASON Hirschhorn: Ja mis juhtub alguses?
>> Õpilane: See püsib sama.
>> JASON Hirschhorn: So tähendus jääb samaks.
Kui me otsida vasakule, me oleme kasutades sama alguses -
täpselt õige.
Ja lõpeb?
Vabandust, mida teeb lõpetades võrdse jälle?
>> Üliõpilane: Lähis-miinus 1.
>> JASON Hirschhorn: Lähis-miinus 1.
Nüüd, miks miinus 1, mitte ainult keskel?
>> Üliõpilane: keskel on välja pilt juba, sest meil oli
kontrollida, et see on läbi?
>> JASON Hirschhorn: See on täpselt õige.
Keskel on välja pilt.
Meil on juba kontrollitud keskel.
Nii et me ei taha "keskel", viitega lõppeb, et jätkuvalt on
massiivi me otsime.
Nii et see on fantastiline.
>> Else kui väärtused sulg keskel on suurem kui raha lõpeb võrdsete
keskel miinus 1.
Jeff, mida selle viimase rea?
>> Üliõpilane: muud.
Väärtused keskel on vähem kui väärtus?
>> JASON Hirschhorn: Viime sa annad mulle veel.
Nii et kui sa ei anna mulle -
>> Üliõpilane: Siis algab oleks keskel pluss 1.
>> JASON Hirschhorn: Algus võrdsete keskel pluss 1, jälle sama
Põhjusel, et Constantine andis meile varem.
Ja lõpuks, kes ei ole andnud mulle koodirida veel?
Tagasi false, Aleha, mida me kirjutame siin?
>> Üliõpilane: tagasi false.
>> JASON Hirschhorn: tagasi false.
Ja me peame seda tegema, sest kui me ei leia ta, peame ütlema, et me
ei leia seda.
Ja me vastasime me lähme tagasi bool, nii et me kindlasti tagasi
bool kusagil.
>> Teeme käivitada koodi.
Ma tegelikult läheb -
nii et me oleme terminal.
Me puhtaks meie akna.
Teeme kõik.
Leidsime seal on üks viga.
On viga on line 15, oodatavad semikoolon lõpus
deklaratsioon.
Niisiis, mida ma unustada?
>> Üliõpilane: semikooloniga.
>> JASON Hirschhorn: Semikoolon siin üleval.
Ma arvan, et see oli Tomi kood.
Tom [kuuldamatu].
Lihtsalt nalja.
Teeme teha kõik uuesti.
>> Üliõpilane: Mis Dropbox kataloogi me peaksime olema selle eest?
>> JASON Hirschhorn: nii saate lihtsalt vaadata seda natuke.
Aga samas, kui sa tahtsid seda liigutada kood oma pset3 kataloog proovida
seda, et see, mida ma tegin.
Kui märkad siin - kahju, hea küsimus.
>> [? LS,?]
Mul on siin find.c kood Selle nädala distro kood.
Mul on helpers.h.
Mul on Mark fail, et ma tegelikult muutis veidi lisada nende uute
failid me kirjalikult.
Kõik see kood on olemas, ei ole jaotus koodi, kuid uus
Tee pilti, uus helpers.h fail olema kättesaadavad Internetis allalaadimiseks.
Jällegi, nii et need on pildi koodid meil.
>> Nii et kõik, kohta seda joont, muudab leida, binaarne, mull valik - Teeb
kõik kolm neist ja paneb sisse see täidetavat leid.
Nii üldiselt, me ei taha, et otse check50.
Tahame käivitada mõned testid omapead.
Aga lihtsalt, et me saaksime kiirendada seda natuke, check50 2013 pset3.find möödub
aastal helpers.c-- my bad.
>> Ma ei pea seda praegu.
Nii et me tegelikult toimub joosta kood reaalne.
Usage.find /, sa tead, mida see tähendab?
>> Üliõpilane: Sa pead teise käsurea peal.
>> JASON Hirschhorn: Mul on vaja Teine käsurida.
Ja iga spetsifikatsiooni, ma vajan sisestamiseks, mida me otsime.
Vaatame 42.
Me hoiame seda sorditud, sest me kirjutanud pole mingi funktsioon veel -
42, 43, 44.
>> Ja Kontroll D ei leia nõel heinakuhjas.
See on halb.
See on kindlasti seal.
Proovime midagi muud.
Võib-olla sellepärast panin seda alguses.
>> Teeme 41, 42, 43.
Niimoodi.
Ta leidis, et see.
Paneme ta lõpus nüüd, just nii saame olla põhjalik -
40, 41, 42.
Kas te ei leia, et nõel.
Nii et ma mainisin seda varem.
Kahjuks ma teadsin, et see juhtub.
>> Aga pedagoogilistel eesmärkidel, see on hea, et uurida seda.
See ei tööta.
Mingil põhjusel ta ei suuda seda leida.
Me teame, mis seal on, kuid me ei leia seda.
Nii et üks asi, mida me teha saame, on minna läbi GDB seda leida, kuid kas keegi,
ilma läbimas GDB, on mõttes, kus me silmamunad?
[? Madu? ?]
>> Õpilane: Ma arvan, et see võib olla, kui lõpeb võrdub alguses, ja see on
lihtsalt üks element nimekirja.
Siis ta lihtsalt ignoreerib seda mitte tegelikult seda kontrollimata.
>> JASON Hirschhorn: See on täpselt õige.
Kui lõpp võrdub Alguses me veel element meie nimekirjas?
>> Üliõpilane: Jah.
>> JASON Hirschhorn: Jah, tegelikult me on ainult üks element.
Ja mis kõige tõenäolisemalt juhtub siis, per kood testisime, oleme
ees heinakuhjas või lõpuks heinakuhjas.
See, kui alguses ja lõpp läheb võrdne
üks, kus on binaarne otsing.
Nii et need kaks juhtumit see ei tööta, sest lõpp oli võrdne alguses.
>> Aga kui lõpeb võrdub alguses see samas silmus ellu?
See ei ole.
Ja me oleks võinud kontrollida et uuesti läbi GDB.
Niisiis, kuidas me saame seda parandada koodi, sest kui samal ajal lõpeb võrdub
Alguses me ka tahame seda samas silmus jooksma.
>> Mis siis fix me saame teha, et rida 18?
>> Õpilane: [kuuldamatu] on suurem või võrdne.
>> JASON Hirschhorn: Täpselt nii.
Kuigi lõpp on suurem kui või võrdne alguses.
Nüüd, me veenduge, et saada, et nurga korral lõpus.
Ja vaatame.
Olgem selle käivitada üks kord.
>> Teeme kõik.
Jällegi, sa pead lihtsalt jälgida mööda siin.
Leia 41 seekord.
Lihtsalt hoida seda järjekindlalt.
>> Leia 42.
Paneme ta alguses -
42, 43, 44.
Me leidsime selle.
Nii et tõepoolest muutus meil oli vaja teha.
>> See oli palju kodeerimine me just tegin, binaarne otsing.
Kas kellelgi on mingeid küsimusi enne I liikuda ridade me kirjutas
binaarne otsing või kuidas me arvasin välja, mida me ei nuputada?
Enne kui me edasi liikuda, ma tahan ka juhtida tähelepanu asjaolule, et suures osas on meil kaardistada
meie pseudo-kood üks üks peale meie kood.
>> Me ei ole seda keeruline asi selgitada välja
algab ja lõpeb.
Aga kui te poleks aru saanud, siis oleks kirjutatud päris palju
identne kood, välja arvatud need kaks ülemist rida.
Ja siis oleks aru saanud, kui sa tegid seda kontrolli ja juhul, et
teil on vaja midagi muud.
Nii et isegi kui sa järgisid meie pseudo-kood reale, siis sa
saanud kõik, kuid kaks rida kood, mida on vaja kirjutada.
>> Ja ma oleksin valmis kihla, et te oleks kõik aru saanud
üsna kiiresti, et teil on vaja panna mingisugune marker sinna, et aru
, kus sa olid.
See jälle on võimu teed pseudo-kood enne tähtaega.
Nii saame teha loogika esimene ja seejärel saame muretsema süntaks.
>> Kui meid oleks segane loogika püüdes kirjutada koodi C,
oleksime saanud kõik segamini.
Ja siis me tahaks küsida küsimusi loogika ja süntaks ja hambumist
neid kõiki koos.
Ja me oleks saanud kadunud alal, mis võib kiiresti muutuda
väga raske probleem.
Nii liigume nüüd valiku sort.
>> Meil on 20 minutit aega.
Nii et mul on tunne, et me ei suuda saada läbi kõik valiku sort
ja mull sort.
Kuid olgem vähemalt katse lõpetada valik sort.
Nii rakendab valik omamoodi kasutades Järgmine funktsioon deklaratsiooni.
>> Ka see on võetud lahendamist spetsifikatsioonile.
Int väärtused on sulgudes, on massiivi täisarvud.
Ja int.n on suurus, et massiivi.
Selection sort läheb sorteerida seda massiivi.
>> Nii kohta meie vaimse mudeli valik sort, me tõmmata -
Esiteks, me minna läbi nimekirja esimene aeg Leida väikseim number,
pane see alguses, leida teine väikseim number, pane see
teise asendisse, kui tahame Sorteeri tõusvas järjekorras.
Ma ei sunni sind kirjutama pseudo-kood kohe.
>> Aga enne kui me teeme nii nagu see klass viis minutit, me kirjutada
pseudo-kood nii et meil on mõnes mõttes kohta, kuhu me läheme.
Nii üritavad kirjutada pseudo-kood ise.
Ja siis üritavad omakorda, et pseudo-kood kood.
Me teeme seda, kui grupp viie minutiga.
>> Ja muidugi, andke mulle teada, kui sul on küsimusi.
>> Üliõpilane: see on see?
>> JASON Hirschhorn: Vaadake, kui palju võib saada veel kaks minutit.
Ma saan aru, sa ei saa võimalik lõpetada.
Aga me läheme üle selle rühmana.
>> Sa kõik kodeerimine nii [kuuldamatu], nii et ma olen Vabandust, et pausi, mida sa teed.
Aga lähme kaudu rühmana.
Ja jälle, binaarne otsing, te kõik anda mulle kui mitte rohkem rida koodi.
Tänan teid selle eest.
Me teeme sama asja siin, kood koos rühmana.
>> Seega valik sort - kirjutame mõned kiired pseudo-kood.
Per vaimne mudel, saab keegi mulle anda esimene rida pseudo-kood, palun?
Mida ma tahan teha?
>> Üliõpilane: Kuigi nimekiri on rikkis.
>> JASON Hirschhorn: OK, kui Nimekiri on rikkis.
Ja mida sa mõtled "rikkis?"
>> Üliõpilane: Kuigi [kuuldamatu]
ei ole järjestatud.
>> JASON Hirschhorn Ehkki nimekiri on rikkis, mida me teeme?
Anna mulle teine ​​rida, Palun, Marcus.
>> Üliõpilane: Nii et leida järgmise väikseim number.
Seda liigestatud.
>> JASON Hirschhorn: Nii et leida Järgmise väikseim number.
Ja siis keegi teine?
Kui leiame järgmise väikseim number, mida me teeme?
Ma lähen ütlen leida väikseim number.
See on see, mida me tahame teha.
>> Nii et leida väikseim number.
Mis me siis teeme?
>> Õpilane: [kuuldamatu] algusesse.
>> JASON Hirschhorn: Vabandust?
>> Üliõpilane: Pannakse loetelu alguses.
>> JASON Hirschhorn: Nii pannakse see alguses nimekirja.
Ja mida me teeme, et asi mis oli alguses
nimekirja, eks?
Me kas kirjutada midagi.
Nii et kui me paneme seda?
Jah, Anna?
>> Üliõpilane: Kui kõige väiksemad number oli?
>> JASON Hirshhorni: Nii pannakse alguses ning loendi kus
Kõige vähem oli.
Niisiis, kui nimekirjas ei ole töökorras, leida väikseim number, asetage see
loetelu alguses, pane loetelu alguses, kui
Kõige vähem oli.
Marcus, saab ümber sõnastada see rida samas nimekirjas on rikkis?
>> Üliõpilane: Kuigi numbrid pole järjestatud?
>> JASON Hirshhorni: OK, nii et tean, et numbrid ei ole
sorteeritud, mis me peame tegema?
Kui palju me peame läbi selle nimekirja?
>> Õpilane: Ma arvan, silmus, või samas, samas numbrid kontrollitakse vähem
kui pikkus nimekirja?
>> JASON Hirshhorni: OK, see on hea.
Arvan misphrased minu küsimus halvasti.
Ma tahtsin saada on me peame minema
läbi kogu nimekiri.
Niisiis, kui nimekirjas ei ole töökorras, minu jaoks on raske kaart.
Aga põhimõtteliselt see, kuidas Ma arvan, et selle kohta.
Mine läbi kogu nimekirja, leida väikseim number, asetage see
algab - tegelikult, et sul on õigus.
Paneme nad mõlemad.
>> Niisiis, kui nimekiri on rikkis, siis vaja läbida kogu nimekiri
kord, leida väikseim number, koht seda alguses nimekirja panna
alguses nimekirja, kus Kõige vähem oli, ja siis, kui
Nimekiri on ikka rikkis oleme pean minema läbi selle
protsessi uuesti, eks?
Sellepärast valik sort, Big-O runtime Valiku sort, keegi?
>> Üliõpilane: n ruudus.
>> JASON Hirshhorni: n ruudus.
Sest nagu Marcus ja ma lihtsalt aru, siin, me peame
läbida list arv kordi.
Nii läbimas midagi pikkusega n n arv kordi
on tegelikult n ruudus.
>> Nii et see on meie pseudokoodi.
See tundub väga hea.
Kas kellelgi on küsimusi umbes pseudokoodi?
Sest tegelikult valikut sort peaks Tõenäoliselt tulevad 1-1, kood
pseudokoodi.
Nii tekib küsimusi loogika pseudokoodi?
Palun küsige seda nüüd.
>> Selection sort - kuigi nimekiri on välja tellimuse, me läheme läbi
ja leida väikseima iga kord ja pane see ees.
Niisiis, kui nimekirjas ei ole töökorras, võib keegi mulle seda koodirida kes
ei andnud mulle rida kood veel, palun?
See kõlab nagu mida?
>> Õpilane: See on silmus.
>> JASON Hirshhorni: Kõlab meeldib silmus.
OK, kas sa annad mulle loop?
Sest -
>> Üliõpilane: i on 0.
>> JASON Hirshhorni: i või -
Mida me kadunud?
Mis läheb siin?
>> Üliõpilane: Int.
>> JASON Hirshhorni: Täpselt.
(Int i = 0; -
>> Üliõpilane: i <n, i + +).
>> JASON Hirshhorni: Täpipealt, Jeff.
Me läheme läbi nimekirja, eks?
Me oleme näinud, et kood enne.
Perfect.
Nii paneme meie looksulg siin.
Ma lähen panen looksulg siin.
>> Niisiis, kui see on 0, siis on vaja minna läbi kogu nimekirja.
Seega iga kord kui läheme läbi nimekirja Mida me tahame jälgida?
>> Üliõpilane: Kui vahetustehinguid tehakse.
>> JASON Hirshhorni: Leia väikseim number.
Nii et me peaks ilmselt jälgida väikseim arv iga kord.
Nii line saan teha, et jälgida väiksemaid number?
Aleha, kuidas ma saan peal midagi?
>> Üliõpilane: Alusta uus muutuja.
>> JASON Hirshhorni: Alusta uus muutuja.
Nii loome muutuja.
Mis tüüpi?
>> Üliõpilane: Int.
>> JASON Hirshhorni: Int.
Kutsume see väikseim.
Ja mida see võrdne kui me lihtsalt hakkad?
Me ei ole läbi käinud nimekirja veel.
Me oleme esimene osa nimekiri on meie esimene kord läbi.
Mida see võrdne, väiksem number?
>> Üliõpilane: Väärtused i.
>> JASON Hirshhorni: Väärtused i.
See kõlab täpselt õige, eks?
Kõige vähem alguses on koht, kus me oleme.
Nüüd on meil väikseim ning me vajame läbima kogu nimekirja ja
võrrelda seda väiksem kõik muu.
Nii et me läheme läbi nimekirja jälle?
Michael?
>> Üliõpilane: Teil on vaja teha teine ​​silmus.
>> JASON Hirshhorni: Teine silmus.
Teeme seda.
Anna mulle kood.
>> Üliõpilane: For loop -
jaoks väikseim -
lihtsalt int j, kas te võiksite öelda?
= 0; selline, et -
>> JASON Hirshhorni: Noh, kui me tahame läbima kogu nimekiri -
>> Üliõpilane: j <n, j + +).
>> JASON Hirshhorni: Fantastiline.
Me läheme läbi loop taas.
Ja kuidas me leiame väiksem number?
Tom?
Meil on praegune väikseim number, Niisiis, kuidas me leida uusi väiksemaid?
>> Üliõpilane: saame näha, kui väikseim number meil on suurem kui
väärtustab sulg j.
>> JASON Hirshhorni: Nii et kui väikseim suurem väärtustest osad j.
Nii et kui meie praegune väikseim on suurem kui -
Ma lähen, et suunata need kaks rida koodi seal teine.
Sest enne kui teha mingeid vahetada, me vaja läbida kogu nimekirja.
Nii et see pseudokoodi peaks tegelikult olema väljaspool et sisemine silmus.
Nii lähevad läbi kogu nimekirja.
Kui väikseim on suurem kui väärtused j siis mida?
>> Üliõpilane: Siis väikseim võrdub väärtused j.
>> JASON Hirshhorni: Fantastiline.
Üks kiire küsimus -
Esimene kord kui läheme läbi selle aasa, i läheb võrdne 0, j toimub
võrduma 0 kui me siia sisse.
Nii et me ei kavatse võrrelda number ise.
Kas see on tõhus?
Ei, see ei ole tõesti tõhus.
Nii ei meie j vaja minna 0 kuni N iga kord?
Kas meil on alati vaja kontrollida läbi kogu nimekiri?
[Kuuldamatu]?
>> Üliõpilane: Alusta i asemel.
>> JASON Hirshhorni: j purk alustada mis?
>> Üliõpilane: i.
>> JASON Hirshhorni: j alata i.
Nüüd me võrdleme algus koos üks, et me oleme.
Aga isegi siis, on see, et kui tõhus kui võimalik?
>> Üliõpilane: i +1.
>> JASON Hirshhorni: i + 1 tundub olevat kõige tõhusam, sest me
juba i.
Jälgime selle kohta, et kui väikseim line 15.
Me alustame kõrval üks automaatselt.
Nii et me minna läbi silmus.
Me läheme läbi iga kord.
Me läheme läbi mitu korda.
Nüüd oleme saanud läbi see sisemine silmus.
Meil on väikseim väärtus salvestatakse.
Peame paigutage loetelu alguses.
Niisiis, kuidas ma asetage see loetelu alguses?
Mis on muutuja, mis viitab Lisa alguses nimekirja?
Me oleme selles väljaspool loop, nii et mida tähistab
loetelu alguses?
>> Üliõpilane: Väärtused i.
>> JASON Hirshhorni: Täpselt nii.
Väärtused i alguses -
või kahju, mitte alguses.
See oli segane.
See on koht, kus me oleme algusest sortimata osa nimekirja.
Nii väärtustab i.
Ja see võrdub?
>> Üliõpilane: Väikseim.
>> JASON Hirshhorni: Väärtused i võrdub mis?
>> Üliõpilane: Väikseim.
>> JASON Hirshhorni Väikseim.
Täpselt nii.
Nii et me paneme ta alguses nimekirja, ja nüüd me peame
alguses nimekirja, kus Kõige vähem oli.
Niisiis, kuidas ma kirjutan, kui Kõige vähem oli?
Väärtused, mida?
>> Üliõpilane: 0.
>> JASON Hirshhorni: väike number on 0?
>> Üliõpilane: Jah.
>> JASON Hirshhorni: Mida teha, kui väikseima number oli lõpuni
see sorteerimata nimekirja?
>> Üliõpilane: Vabandust, milline oli küsimus?
>> JASON Hirshhorni: Kus väikseim number?
Võtsime väikseim ja pane seda algab, seda joont siin.
>> Õpilane: See peaks olema hoitud mõned -
>> Üliõpilane: Väärtused j.
>> JASON Hirshhorni: Noh, see on mitte tingimata väärtustab j.
See ei ole üldse selles punktis.
>> Üliõpilane: Sa pead deklareerima muutuja varem ja
siis määrata selle -
kui leiad väikseim number, määrata indeks, mis number
mõned muutuja või midagi sellist.
>> JASON Hirshhorni: Nii saab te ütlete, et jälle?
>> Üliõpilane: Nii et kui teil on deklareeritud int väikseim, siis tuleb ka tunnistada int
väikseim index = i, või midagi sellist.
>> JASON Hirshhorni: Nii et kui ma int väikseim, ma ei peaks mitte ainult jälgida
väärtusest, kuid kohad.
int smallest_location = selles juhul me lihtsalt ma.
Me peame teadma, kus see on.
Saime lõpuks kood ja me avastas, et me ei teadnud, kus ta oli.
Ja jälle oleme kaardistamine seda 1-1.
Te kodeerimine seda oma tahtmist Tõenäoliselt saad sama probleem.
Kuidas kurat ma seda leida?
Ja siis sa mõistad, oota, ma on vaja jälgida, et.
>> Nii et kui väikseim on suurem kui väärtuste j.
Seame väikseim võrdub väärtused j.
Mis meil veel on vaja vahetada?
Constantin, mida veel teha peame muutma?
>> Üliõpilane: Location.
>> JASON Hirshhorni: Täpselt.
Nii et anna mulle, et rida koodi.
>> Üliõpilane: smallest_location = j.
>> JASON Hirshhorni: Täpselt.
Ja siis alla aasta lõpus, kui me tahame panna algul nimekirja kus
Kõige vähem oli, kuidas Kas me räägime, kui
Kõige vähem oli?
Marcus?
>> Üliõpilane: väikseim number oli asub väikseim asukohta.
>> JASON Hirshhorni: Nii et väärtused smallest_location.
Ja mida me sinna pannakse?
Alguses nimekiri, mis see on?
>> Õpilane: Noh, me tõesti ei tea, enam, sest me overwrote.
Nii et see on vahetasid kohad need kaks rida?
Kui te hakkate neid kahte rida ümber.
>> JASON Hirshhorni: OK, nii et me ei enam, sest me oleme nullida line
enne väärtused I väikseim.
Nii et me kaotasime selle esialgsest väärtusest.
Nii sa ütlesid swap need kaks rida.
Nüüd panna algul nimekirja kus väikseim number oli.
Nii smallest_location võrdub väärtused i.
See liigub alguses sortimata osa nimekirja
Väikseim asukohta.
Ja siis väärtuste i me liigume mis kõige vähem.
>> Kas see on loogiline, miks me pidi tegema, et swap?
Oleksime kirjutatakse, et väärtus - teine ​​asi, siis ilmselt oleks
arvasin ja leitud SKPst.
Nii oleme hoolitsenud kõik pseudokoodi.
Kas on midagi, me vaja kirjutada siin?
Kas keegi oskab midagi mõtlema?
>> Üliõpilane: Kuidas sa tead, kui sa oled teinud?
>> JASON Hirshhorni: Kuidas me tead, kui me oleme valmis?
Hea küsimus.
Niisiis, kuidas me teame, kui me oleme valmis.
>> Üliõpilane: Loo muutuja hoida loota ja kui seal on swap tehtud või mitte
ja läbima pass.
>> JASON Hirshhorni: OK.
See teeks mull sort.
Aga valiku sorteerida, kui me seda ei tee teha swap, mis võib olla ainult
sest väikseim väärtus on see oma õiges kohas.
Oleksime nimekiri 1, 2, 4, 3.
Teist korda läbi meie ei tee vahetustehinguid.
Tuleme on number 2, kuid me vaja veel edasi.
Seega on meil vaja, et jälgida, kui me oleme valmis, või me lihtsalt tahame minna
kuni see on valmis?
>> Üliõpilane: Me lihtsalt minema kuni see on valmis.
>> JASON Hirshhorni: me lihtsalt minna kuni see on lõpetatud.
Mull sort, sa oled täpselt õige, Jeff ja Aleha, oma lahenduse -
see on tore, et jälgida, kui palju vahetustehingute tegite, sest mull
sort, kui sa seda tegelikult ei tee vahetuslepingud sa oled teinud ja võite olla lõigata
probleem ette natuke.
Aga valiku sort, olete tõesti pean minema läbi lõppu
nimekirja iga kord ümber.
>> Nii et see on nii.
Meil on kaks minutit jäänud.
Teeme kõik.
Lubage mul lihtsalt avatud Leia siin ja teha kindel, et ma olen tegelikult kutsudes üles -
Ma ei helista mull sort.
Muudame seda valikut sort.
teha kõik. / leida.
Uurime 42.
Seekord läheme edasi sortimata nimekiri, sest see peaks sorteeri
Esiteks kohta find kood - tuleks järjestada Esimene kasutades meie sort funktsioon ja seejärel
otsima midagi.
Pöialt kõigile.
>> Oh mu jumal.
Vau, mu süda peksis.
Nii et on õige.
Tegelikult, kui me jooksime seda rohkem ulatuslikult, kood, niipalju kui suudan
öelda, on täiesti õige.
Seal on mõned soovitused Oleksin teile.
Näiteks, 15 ja 16 tunduvad veidi üleliigne.
Tundub, et Sa ei pruugi tuleb salvestada nii need.
Kui teil on väikseim asukohta, siis võib kergesti leida väikseim väärtus
kirjutades väärtuste i.
>> Nii et kui ma oleks hinnete oma kood, mida ma tegelikult olla, oleksin
ilmselt startida punkti, kui te sisalduvad mõlemad, sest te
ei vaja need mõlemad.
Kui teil on koht, saate väga kergesti saada raha.
Ja tundub veidi imelik salvestada mõlemad.
Võib-olla isegi ei võta hetkel, kuid kindlasti kommenteerida, et see on võib-olla
ei stilistilise valik Teil on vaja teha.
Loomulikult kood veel töötab väga hästi.
>> Nii kahjuks me ei saada mull sort.
Mul on kahju sellest.
Tegime viimistlus valik sort.
Kas keegi on lõplikud küsimused umbes valik sort?
>> OK, enne kui pea välja, ma tahan, et sa avada oma Chrome brauser.
Vabandust, see oli lihtsalt jultunud pistik üht liiki internetibrauseri.
Võite avada mis tahes liiki brauseri, aga see ilmselt Chrome.
Ja minge sellele veebilehel -
sayat.me/cs50.
Kui sa ei ole kirjutades arvuti just nüüd, sa oled selgelt
ei tee seda, Tom.
>> Ja palun seda teha kas parem nüüd või järgmises tunnis -
anna mulle tagasisidet.
See on ainus lõik kaks.
Meil on palju rohkem kokku, nii et ma on palju parandamisruumi.
Ma loodetavasti ka tegin mõned asjad hästi.
Nii saab teha mulle kõik halb, kuid kui soovite ka mulle smiley
nägu, ma sooviks, et hästi.
Täida sisse
>> Ja üks minut vasakule, See oli nädal kolm.
Seisan väljaspool natuke Kui teil on mingeid küsimusi.
Näeme poisid loeng homme.