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