>> JASON Hirschhorn: Sveiki į savaitę tris, visi.
Mes turime užimtas, bet įdomu skyrius prieš mus.
Taigi, pirmiausia, nes mes padarėme kai Headway su žinoma, bet mes vis dar
buvo mokymosi daug liko padaryti, aš ketinu parodyti jums, vaikinai, kai išteklius
kad turėtų pasirodyti neįtikėtinai naudinga, nes jūs ne tik kreiptis į savo
problema nustato, bet ir virškinti visus medžiagos, kurias mes jums vaikinai
paskaitos ir šortai ir sekcija.
>> Tada mes ketiname išleisti pirmąjį 20 25 minučių trukmės skyriuje vyksta per
GDB, kurios gali arba negali būti naudojami šiuo metu, bet tai yra
neįtikėtinai naudingas įrankis, kad bus padėti jums derinti savo programas.
Jūsų daug gali naudoti printf į viduryje savo programą išsiaiškinti
, kas sudarė kintamasis.
GDB yra net geriau nei printf ir nėra susukti savo kodą, nes jums
ją paleisti vykdomąjį failą.
Taigi mes pereiti per 10 labiausiai naudinga komandas jums reikia GDB, ir mes
Išvykstate pratybose kartu, į problemą nustatyti tris ir už jos ribų, jums
galima naudoti GDB padėti perprogramuoti jūsų programas.
Ir pagaliau, mes ketiname eiti per kai rūšiavimo ir paieškos algoritmai
kad matei paskaitą, ir mes esame vyksta iš tikrųjų kodas, o ne tik
Pseudocode, bet kodas dvejetainis paieškos, burbulas rūšiuoti ir atranka rūšiuoti.
>> Taigi, pirmiausia, noriu eiti daugiau išteklių.
Tai išsamus sąrašas, ir tai Sumažinti šriftą, nes turėjau daug
tinka čia.
Bet tai bus ne tik padėti jums, vėl su problema rinkinių ir
virškinti informacijos sužinojau, bet tikrai, ateis laikas, viktorina, tai bus
būti neįtikėtinai naudinga.
Taigi, pirmiausia, paskaita pažymi.
Jeigu jūs einate į cs50.net/lectures ir pereikite prie konkrečios savaitės dieną
pamatysite, kad yra raštas kiekvieno paskaitą, kuri yra ne tik
stenograma, bet redagavo versija kas buvo aptarta paskaitos, kurios kodas
fragmentai ir kitos naudingos smulkmenos.
Aš labai rekomenduoju vyksta per juos.
Ir tada taip, ten kodo gauti iš kiekvienos paskaitos.
Ir vėl, šios skaidrės, taip pat bus rasti internete adresu cs50.net/sections
šį vakarą.
>> Taigi antrasis yra šortai kiekvieną savaitę, kad apima tokias temas, paprastai 5 iki 15
minučių ilgio.
Ir tie, tikiuosi jums duos puikus gruntas įvairiomis temomis.
Trečia -
ir tai yra visiškai naujas tai metų - tai study.cs50.net.
Jei neturite patikrinti jį, aš labai rekomenduojame, kad jūs padaryti.
Jūs gaunate pasirinkti temą.
Mes turime daugybę temų ten.
Taigi, pavyzdžiui, galima pasirinkti funkcijas.
Jis suteikia jums keletą skaidres ir atkreipia dėmesį į funkcijų.
Tai yra iš tikrųjų skaidres, kad TFS yra skatinami naudotis per mūsų
pristatymus skyriuje.
Taip pat patarimai ir gudrybės prekyba su funkcijų, ir ten
praktikos problemos, kurios padeda dirbate su funkcijomis.
Mes taip pat suteikti jums nuorodos į trumpas funkcijos ir laikai, kad funkcijos
turi sugalvoti paskaita.
Taigi study.cs50.net, visiškai naujas tai metais, fantastinis išteklių.
>> Be to, aš turiu žmogų, kuris yra vadovas komandą, kurią galima paleisti
komandinės eilutės.
Taigi, jei turite kokių nors klausimų apie komandą, pavyzdžiui, randas, kurį mes
skyriuje metu susidūrė praėjusią savaitę ir jūs tikriausiai susiduriama
jūsų problema nustatyti, kai išgyvena generuoti kodą, bet jei įvesite vyro
randas, gausite puslapį, jums pasakys viską apie randas.
Jis suteikia jums tai, ko reikia, parametrai nedarytų, taip pat grąžinimas
tipas ir trumpas aprašymas tos funkcijos.
>> Taigi patikrinti randas.
Tai gali būti tiek žodinis ir paini, todėl kartais man atrodo, kad
tiesiog "Google" paiešką, ką aš noriu žinoti, Geriausias būdas rasti atsakymą.
Taigi praktiškai su "Google".
Gauti gerai "Google".
Jis taps jūsų geriausias draugas.
>> Taip pat "Google", jei jūs negalite rasti "Google", cs50.net/discuss, tai
diskusijų forumas.
Yra tikimybė, kad jei turite klausimą, savo 700 + bendraamžiais taip pat, kad
klausimas ir gali būti paprašyta tai jau aptarti
forumai ir jį atsakyti.
Taigi, jei turite klausimų ar bendro turite klausimų, kad jūs manote
gal kiti žmonės gali paleisti į, patikrinti cs50.net/discuss.
>> Galiausiai paskutiniai du, jei norite pasikalbėti su tikru žmogumi, biuro
valandos nuo pirmadienio iki penktadienio.
Yra taip pat lankosi darbo valandos Išplėtimo studentams.
Ir paskutinis, bet tikrai ne mažiau, man, šauktukas.
Jūs visi turite savo kontaktinę informaciją.
Jeigu jums reikia ką nors, prašom niekada nedvejodami susisiekite su manimi.
Visada nedvejodami padaryti.
Labai nedaugelis iš jūsų, kurie laiko mane ant gchat, kad buvo nuviliantis,
bet tikiuosi, kad bus pakeisti nuo tai ir kitame skyriuje.
Turite klausimų iki šiol dėl lėšų?
Didysis.
>> Galiausiai, dar vienas kištukas grįžtamasis ryšys, sayat.me/cs50.
Jūs galite man duoti anoniminius atsiliepimus apie tai, kaip aš darau.
Tai buvo tikrai naudinga praėjusią savaitę.
Aš turiu keletą pastabų pora iš jūsų vaikinai iš karto po skyrių, taip pat iš
kiti studentai, kurie jį stebėjo per savaitę, ir tai
buvo neįtikėtinai naudinga.
Aš einu bandyti ir apriboti savo gebėjimą naudotis Žodis "saldus", bet aš jums parodysiu, mano
entuziazmo ir jaudulio kitais būdais.
Bet ten buvo kita papildoma esminiai Atsiliepimai,
pliusus ir delta.
Taigi, prašome, aš duodu jums, vaikinai atsiliepimus savo problemines rinkinių.
Nesivaržykite man atsiliepimus mano mokymo.
Aš čia jums vaikinai.
>> Didysis.
Tai yra viskas, ką aš turėti Pirmame skyriuje.
Ar kas nors turi bet klausimai iki šiol?
Ir turiu pastabą valdymo centras.
Prailginimo studentai messaged man sakydamas, jie negauna jokių garso,
bet tai iš mano galios nustatyti.
Taigi tikiuosi, kad gauna netrukus išspręsta.
Jei jūs žiūrite internete, hi, , bet jūs negalite išgirsti mane.
>> Taigi, pirmiausia, mes ketiname eiti per GDB.
GDB, kaip aš užsiminė anksčiau, yra derinimo priemonė
daug geriau nei printf.
Taigi, norint pradėti dirbti su GDB, vaikinai, jei norite atverti savo prietaisą
ir imtis failą, kad aš jums atsiųstoje anksčiau - tai failas, taip pat bus
galima rasti internete šiek tiek -
ir paleisti GDB. / failo pavadinimas.
Pirmiausia, žinoma, jūs turite surinkti failą nes GDB veikia tik
paleidþiamieji failai.
>> Bet jei kada nors norėsite pradėti GDB, pirmas dalykas, kurį jūs darote,
paleisti GDB. / ciesorių ".
Štai programos Užtenka vardas ketina eiti su juo dabar.
Taigi, aš ruošiuosi rašyti, kad Cezaris, kuris duos man vykdomąjį failą
čia paryškinamas žalia.
Ir tada aš ruošiuosi paleisti GDB. / Cesar.
>> Ir ten jūs einate.
Matote, mes turime kai tekstas sako man apie GDB versija, kad suteikėte man
kai informacija apie garantiją, ir tada mes turi BVP eilutę, kuri atrodo tarsi
panašaus mūsų komandų eilutės eilutę bet matote ji atvira
paren, GDB, artimi skliaustas.
Prieš mes ir toliau derinti šį failą kad aš išsiųstas jums visiems, pažvelkime
keletas naudingų komandų, todėl mes turime jausmą ką mes ketiname padengti.
>> Šios komandos yra išvardyti čia tvarka, pagal kurią aš paprastai juos naudoti.
Taigi aš pradedu savo programą veikia GBD. / Programos pavadinimas,
šiuo atveju, Cezaris.
Ir tada pirmas dalykas, aš 99,9% laiko yra tipo pertraukėlė reiškia.
, Kuris nustato pertraukos tašką pagrindinis.
Iš esmės, ką jūs darote yra yra programa ketina sustoti
pagrindinis, todėl jūs galite pradėti nagrinėti jai liniją kiekvieną eilutę, o ne rodyti visus
kelią.
Jūs galite sulaužyti skirtingu jūsų kodas, bet pagrindinis yra paprastai
gera vieta pradėti.
>> Kitą komandą paleisti yra paleisti.
Kuris prasideda programa veikia, ir jei turite įvesti į komandų eilutę
argumentai, galite naudoti ją, kad komandą.
Pradėti su argumentais.
Taigi, kadangi mes ketiname per versiją C, kuris yra programa vaikinai
rašė pset dviejų -
tai vienas, žinoma, turi keletą klaidų jame, kad tikiuosi rasite -
mes ketiname paleisti paleisti su kai komandą eilutės argumentai, nes Cezaris,
kaip jus vaikinai žino, už problemos nustatyti spec, trunka keletą
komandų eilutės argumentai.
>> Ateinančius porą komandų, kitą viena yra iš tikrųjų vadinamas kitą.
Tai vienas pateksite pagal kiekvieną eilutę per savo programą.
Taigi pataikyti n paspauskite Enter nukelia į kitą eilutę, vykdymas
ankstesnė eilutė.
Žingsnis yra ne tik jums kitą eilutę, bet jis
nukelia viduje funkcijas.
Taigi, jei jūs turite raštu į funkciją Jūsų kodas arba, jei norite ieškoti
I, pavyzdžiui, galite paspausti s ir , o ne eiti į kitą eilutę
failą, kad jūs ketinate per dešinę dabar jūs iš tikrųjų žingsnis į
ši funkcija ir pamatyti savo kodą.
>> Sąrašas rodo jums, kad labai patogi formato, 10 ar panašiai linijos aplink
kur šiuo metu yra Jūsų kodas kad jūs iš tikrųjų galite pamatyti failą
užuot apsikeitimo atgal pirmyn tarp skirtingų nuomonių.
Spausdinti lyg printf, kaip rodo jo pavadinimas.
Tai rodo, ką kintamasis lygus.
>> Info vietiniai yra tikrai naudinga.
Tai speciali versija spausdinti.
Info vietiniai rodo visus vietos kintamieji, spausdina juos visus jums
kad šiuo metu nėra.
Taigi, aš paprastai, užuot atspausdinti keturis kintamuosius, kad aš
įdomu, jei aš už linijos, ir Pavyzdžiui, aš tiesiog parašyti info juodus,
ir jis bus parodyti man, ką mano skaitiklis i lygios, taip pat masyvas, kad aš
dirba lygių.
>> Galiausiai, ir toliau.
Rašyti pertraukos sustoja jums ne pertrauka taško.
Galite pasivaikščioti linijos linija su naujos ir žingsnio.
Toliau eina programos į kitą pertrauka taško arba iki užbaigimo, jei
nėra daugiau pertraukos taškus.
Išjungti pašalina pertraukos taškų, jei jums nusprendė ne pagrindinis pertrauka buvo
netinka, norite jį kažkur kitur.
Ir pagaliau q mesti rūkyti, gauna iš GDB.
>> Taigi ši programa. / Cezario, mes ketiname ieškoti per dabar ir mes
ketinate naudoti GDB rasti Šioje programoje klaidų.
Išbėgau šią programą anksčiau, Patikrinkite 50, ir aš vieną raukytis.
Viskas jis egzistavo, ji parengta, ji išlaikė bandymus daug, bet
tam tikrų priežasčių, jis nepriėmė penktadalį testas, tekinimo BARFOO, visi dangteliai, į
El-D-U-aš-R-R, visi dangteliai, naudojant tris kaip raktas.
Aš turiu gana arti.
Gavau viena raide.
Taigi, čia yra keletas maža klaida čia.
Aš mačiau per savo kodą.
Aš negalėjau suprasti jį.
Tikimės, kad jūs vaikinai gali man padėti išsiaiškinti, kas tai yra klaida.
>> Štai klaida mes ieško.
Pereikime į GDB.
Vėlgi, aš paleisti GDB. / Cezaris todėl dabar mes į GDB.
Ir kas pirmas ką aš turėčiau daryti?
Aš ką tik atvyko GDB.
Kažkas man geras komanda patekti.
>> STUDENTAS: Break pagrindinis.
>> JASON Hirschhorn: Break pagrindinis.
Mobiliesiems telefonams.
Leiskite tipo, kad in
Vaikinai gali žiūrėti čia arba sekite kartu kompiuteriuose.
Break pagrindinis, ir pamatysite, pertrauka taškas buvo nustatytas -
jis suteikia man keistai atminties adresą, ir ji taip pat suteikia man eilutės numerį.
Jei aš būčiau atsigręžti į šį failą, Norėčiau suprasti, kad dažniausiai
atsitiko on line 21.
Ką turėčiau paleisti kitą?
Ar mano programa veikia?
Ne.
Taigi, ką turėčiau veikti toliau?
>> STUDENTAS: Pradėti.
>> JASON Hirschhorn: Pradėti.
Jei aš tiesiog paleisti paleisti, arba turėtų Pridėti keletą kitų dalykų?
>> STUDENTAS: Pradėti su argumentais.
>> JASON Hirschhorn: Pradėti su komandų argumentai.
O kadangi aš derinti labai specifinė atveju, reikia įvesti, kad
komandinės eilutės argumentas.
Taigi aš tai paleisti trys, kurie, vėlgi, išėjimo aš gavau iš Išvykimas 50.
Pradedant programą.
Mes einame per eilučių pora.
Dabar jūs pamatysite, kad mes internete 21.
Kaip man žinoti, kad mes on line 21?
Nes jei jūs žiūrite į kairę mano terminalo lange, ten
ji sako liniją 21.
Ir tai suteikia man, iš tikrųjų, kodas, kuris yra eilutėje 21.
Taigi aš misspoke anksčiau.
Pagrindinis nėra faktiškai eilutėje 21.
Main linijų pora virš 21.
Bet eilutėje 21, tai kur mes trūkinėja.
Šis kodo eilutę turi nėra įvykdytas.
Tai labai svarbu.
Linija matote yra ne buvo įvykdytas dar.
Štai kitą eilutę kodo Jūs ruošiatės vykdyti.
>> Taigi kitą eilutę, kaip jūs vaikinai tikriausiai, susipažinę su, tai yra
sąlyga patikrinti, pamatyti, jei aš turiu Prasidėjo komandų eilutės argumentas.
Ir I, kas antra dalis, kad tai?
Kas yra, kad i?
>> STUDENTAS: Pakeitus jį iki sveikojo skaičiaus.
>> JASON Hirschhorn: Atsiprašome?
>> STUDENTAS: Tai keičiasi argumentas iki sveikojo skaičiaus.
>> JASON Hirschhorn: Taigi, kad aš keičia arg v1 iš eilutės iki sveikojo skaičiaus.
Ir tada kas tai patikrinti?
>> STUDENTAS: Jei yra antra komandinės eilutės argumentas, be
paleisti programą.
>> JASON Hirschhorn: Ir kas antrąjį pusmetį šis
Būlio išraiška tikrinti?
Ši dalis čia, kad i?
>> STUDENTAS: Jei jis neigiamas.
>> JASON Hirschhorn: Užtikrinti, ką?
>> STUDENTAS: Užtikrinti, kad yra, tiesą sakant, teigiamas.
>> JASON Hirschhorn: Būtent.
Tai patikrinti, pamatyti, jei ji neigiamas, o jei ji neigiama, aš
Toks jausmas kitą linija gali būti mane šaukiantį vartotojui.
Taigi leiskite nukentėjo pabaigos vykdyti šią eilutę.
Mes nematome, kad linijos, kad jūs vaikinai gal tikėjosi pamatyti šaukiantį
vartotojo ir tada grįžti, nes ši eilutė nevykdė.
Įvedžiau 3.
Taigi, aš, tiesą sakant, įveskite du komandą eilutės argumentai, o 3 yra
didesnė už nulį.
Taigi mes matėme tą liniją, mes atlikti, bet mes ne žingsnis
viduje, jei būklės.
>> Taigi dabar, šalia, matau aš nustatymo LC raktas Lygu-i arg v1.
Taigi, kad man sukurti kintamą klavišą.
Taigi, jei aš spausdinti klavišą dabar, nes , kuri leidžia jums pamatyti,
vertė viduje kintamasis, raktas lygu 47.
Tai keista, bet, žinoma, tai todėl, kad aš ne
įvykdė tą liniją dar.
Taigi dabar, jei I hit n vykdyti šią liniją, ir padaryti spausdinimo klavišą, raktas bus lygus 3,
o tai, ką mes tikimės, kad ji lygi.
>> Taigi, dar kartą, GDB, linijos jums see you nebuvo įvykdytas dar.
Jūs turite paspausti N arba S arba skaičių Kitų komandų iš tikrųjų
vykdyti šią liniją.
Spausdinti raktas.
Pagrindiniai At 3.
Kol kas viskas gerai.
Styginių yra paprastas tekstas.
Leiskite vykdyti šią liniją.
Gaunu eilutę iš vartotojo.
>> Pažiūrėkime mano Išvykimas 50, aš įveskite BARFOO visas ribas, todėl
kad tai, ką aš įvesti.
Jei aš dabar spausdinti paprastą tekstą.
Pamatysite tai prilygsta eilutę.
Ji suteikia man kitą keistą šešioliktainis skaičius, bet ji tai daro
Tai, kad mano eilutė BARFOO.
Jei aš norėjau pamatyti, kas svarbiausia sudarė ne šis punktas, kaip galėčiau patikrinti raktas?
>> STUDENTAS: Spausdinti raktas.
>> JASON Hirschhorn: Spausdinti raktas, tiksliai.
Ir iš tikrųjų, yra mobilioji nuoroda.
Jei jums nusibodo rašyti spausdinti, Jūs galite tiesiog įveskite psl.
Taigi p raktas nėra tas pats dalykas.
Ir vėl, matau, ji lygi 3.
>> Jei aš norėjau sužinoti, ką abu klavišą ir BARFOO sudarė tuo pačiu metu
bet aš pavargau rašyti kiekvieną vienas iš individualiai, aš
gali įvesti info vietiniai.
Tai suteikia man svarbiausius lygu 3.
Paprastas tekstas Lygu BARFOO.
Ji taip pat suteikia man šiuos du keistus dalykus viršuje, šis kintamasis i ir
Šis kintamasis n.
>> Tie, kurie iš tikrųjų esama mano pagrindinės programos.
Mes dar susiduriama juos, bet kaip peržiūrėti, tie
egzistuoja mano už linijos.
Taigi dabar, jie yra lygūs kažkokiam keistam numerius, nes jie nebuvo
inicijuoti dar, bet jie vis dar egzistuoja atmintyje, todėl jie tiesiog nustatyti
tam tikru šiukšlių vertę.
Bet mes pamatyti raktą paprastas tekstą tiesiai ten.
>> Taigi, aš ruošiuosi atlikti šią eilutę, 34 eilutė, už kilpos.
Mes ketiname pereiti į už linijos pataikyti n.
Ir mes viduje už linijos.
Mes per savo pirmąjį patikrinimą.
Ir vėl, jie turi tarsi atrodo susipažinęs su jumis, nes tai buvo
Cezaris programa, kuri buvo parašyta, bet vėl turi tam tikrą klaidą rūšiuoti.
>> Ir dabar, jei aš info vietiniai, nes aš viduje, kad už linijos, pamatysite
kad i lygi nuliui, kaip mes tikimės.
Štai ką mes nustatome jį ir inicializuoti jį į už linijos.
n yra lygu 6.
Tai taip pat turi prasmę, nes mes nustatome jį paprasto teksto strlen.
Taigi, aš norėčiau padaryti info vietiniai arba spausdinti kintamasis dažnai įsitikinti, kad
viskas visada yra kas Tikiuosi, kad ji lygi.
Šiuo atveju, viskas yra ką aš tikėtis, kad ji lygi.
>> Taigi, pradėkime juda per tai už linijos.
Linijos aš apie tai 36 eilutės, jei paprastas teksto i yra didesnis nei paprasto ir
teksto i yra mažesnė arba lygi z.
Aš žinau, mano problema yra ne su mano pirmasis laiškas, tai su antruoju laišku.
Jei pažvelgsime atgal Išvykimas 50 B eina į E bauda.
Aš vartojate A ir palikti ją , o ne jį pakeisti D. Taigi
kažkas negerai su antras laiškas.
Taigi, aš ruošiuosi pereiti ten per sekundę.
>> Bet jei aš noriu patikrinti ką lyguma tekstas Aš neprilygo tai ypač
atveju, aš manau, kad turėtų būti, ką?
Ką reikėtų paprasto teksto Aš prilygti šioje pirmasis turas per for ciklas?
>> STUDENTAS: nulis?
>> JASON Hirschhorn: Paprastas tekstas I?
Todėl ji turėtų būti kapitalo B. Aš, žinoma, lygi nuliui, bet paprasto teksto
laikiklis nulis uždara laikiklis lygu B nes stygos, kaip matėme praeitą savaitę,
yra masyvas, todėl mes vis Pirmasis simbolis nuo to.
Taigi dar kartą, jei aš atspausdinti paprastą tekstą Aš, aš, tiesą sakant, gauti simbolį
B. Ir tai tvarkingas, tiesa?
Aš ne iš tikrųjų turėti paprastojo teksto I Tai nėra vienas iš kintamųjų Aš nustatytų
arba inicijuoti, bet jūs galite spausdinti iš daugybės dalykų
jei norite.
>> Bet leiskite judėti.
Jei teksto man yra didesnis nei A ir teksto man yra mažesnė arba lygi
Z, kuris aiškiai yra tiesa, nes mes turime kapitalas B. aš ruošiuosi paleisti
kai komanda jį.
Mes matėme, kad matematika praėjusią savaitę, todėl mes laikyti savaime suprantamu dalyku, kad jis veikia
teisė pagal Patikrinkite 50.
>> Šie garbanotas petnešos, pirmasis parodė, kad man buvo išeinant, jei
sąlyga, antrasis parodė kad aš išeinant už linijos.
Ir todėl dabar, kai aš paspauskite Next, matysime mes grįžome ne už linijos dar kartą.
Mes ketiname per už linijos dar kartą.
Leiskite tikrųjų žingsnis į sekundę pasikartojančių už linijos ir tipo
info vietiniai.
>> Taigi mes į antrosios iteracijos mūsų už kilpos.
Aš lygus 1, o mes tikimės.
N lygu 6, kurį mes tikimės.
Pagrindiniai lygu 3, kurį mes tikimės.
Ir teksto, pamatysite lygu EARFOO dabar, o ne BARFOO nebėra, nes
mūsų ankstesnės iteracijos, B buvo pakeistas į kapitalo E. Taigi mes apie
susidurti su problema, todėl ši kur mes ketiname
pasinerti į derinimo.
Bet ar kas nors turi kokių nors klausimų, apie tai, ką mes padarėme iki šiol?
Mobiliesiems telefonams.
>> Taigi mes ruošiamės atlikti tai, jei sąlyga, teksto laikiklis aš uždarytas
laikiklis didesnis nei A ir teksto aš mažesnė arba lygi iki Z. Bet prieš
Aš einu į tą, nes tai yra, kai Aš žinau, mano klaida, aš noriu atkreipti
iš paprasto teksto I Taigi tegul įdėti atsispausdinti.
Ji lygi charakterį, kad atrodo taip toli, kad viskas yra gerai ir gerai.
>> Taigi, aš tikiuosi, kad ši linija per savo logika, ši linija turėtų būti tiesa.
Tai didžioji raidė.
Bet jei aš paspauskite n, mes suprantame, kad tai linija, tiesą sakant, nebuvo įvykdyti.
Aš šoktelėjo žemyn else if.
Kodėl tai atsitiko?
>> STUDENTAS: Kadangi jūs turite savo būklės paprasto teksto yra didesnis
nei, lygus ar didesnis už.
>> JASON Hirschhorn: Taigi, aš turėjau paprastą tekstą I yra didesnis nei, ne daugiau
viršytų arba būtų lygios.
Taigi aišku, kapitalas nebuvo sukelti tai, jei sąlyga, ir mes padarėme
ne žingsnis į ją, ir mes padarėme ne padaryti būtinus pamainą.
Štai jis, iš tikrųjų.
Aš raštuotas, mano klaida.
Galėčiau grįžti į savo šaltinio failo, jį pakeisti, ir ją atnaujinti ir
paleiskite Tikrinti 50 kartą.
>> Bet mes pamatysime, tik pedagogika s sake, jei aš nesustoti.
Else if nevykdo arba, bet kas vietoj Lygu yra komanda
tai nekeičia.
Taigi jis nepasikeitė, ir jei aš spausdinti teksto čia matysime vyksta
per, kad kilpa nebuvo, tiesą sakant, pakeisti, kad antrą simbolį visiems.
Jis vis dar sostinė A.
>> Taigi dar kartą, mes debugowany mūsų klaida.
Mes supratome, kad ten buvo kai logika trūksta.
Ir mes debugowany jį iš anksto prieš Realiai vykdančių ta linija,
bet jūs pastebėjote turėjo mes tiesiog paspauskite Next ir pereiti į, kad kitas, jei
tai reiškia, kad jei sąlyga buvo netiesa.
Mes ne iš tikrųjų gauti rezultatas tikėjomės.
Taigi mes galėjo paraginti, turėjo mes nebuvo toks sumanus, pažvelgti į
kad jei sąlyga ir patikrinti, ar, tiesą sakant, mūsų sąlyga turėtų įvertinti, kad
tiesa, dabartinėmis aplinkybėmis.
>> Štai ir viskas derinti šią programą.
Ar kas nors turi kokių nors klausimų?
Kas komanda galėčiau nukentėjo mesti GDB?
Q. Ir tada aš būsite paraginti, mesti vistiek?
Taip ar ne.
Aš nukentėjo taip, ir aš mečiau GDB.
>> Taigi, tai buvo greitas gruntas GDB.
Tiesą sakant, realioje scenarijų Aš tai ne darbo valandomis.
Aš GDBed būtent šią programą darbo valandos su studentu.
Ir jei mes einame atgal į komandas mes matėme anksčiau, mes naudojome pertraukos Main, pirmasis
dalykas, mes padarėme.
Mes naudojome paleisti su komandinės eilutės argumentai, Antras dalykas, mes padarėme.
Mes naudojome kitą daug judėti mums per linijas.
Ir vėl trumpa versija Kito yra n.
Kad skliausteliuose yra pilkas skaidrę.
>> Mes nesinaudojo žingsnį, tačiau mes ne būtinai reikia šiuo atveju.
Tačiau mes galime jį naudoti šiek tiek vėliau šiandien, jei mes derinimo, dėl
Pavyzdžiui, dvejetainis paieškos, kai dvejetainis paieška vadinama atskira
funkcija, tačiau ten kai su juo klaida.
Mes ketiname norite žingsnis į dvejetainis paieškos skambučių ir
faktiškai derinti jį.
Sąrašas mes nesinaudojo arba, nes mes turėjome geras jausmas mūsų kodą, bet jei aš
dar nori gauti ką kodas I jausmą buvo aplink, galėčiau tiesiog naudoti sąrašą.
>> Spausdinti mes panaudojome, info vietiniai Mes naudojome.
Toliau mes nereikėjo naudoti šį atveju nei jūs, nei mes turime naudoti
išjungti, tačiau mes padarėme naudojimas mesti.
Vėlgi, šie 10 komandos, praktiškai juos.
Jei jūs suprantate, šių 10 komandų, jums turėtų būti nustatyta derinimo bet
išduoti su GDB.
>> Taigi mes ruošiamės eiti, vėl į esmė skyriuje šiandien vyksta per
jų rūšiavimo ir paieškos algoritmai.
Prieš tai padaryti, vėl kokių nors klausimų, komentarai, rūpesčiai dėl GDB?
Taigi yra visi ketinate naudoti GDB, o ne printf?
Taigi visi, amžinai meilės, visi yra linksi savo pagrindinę teisę
dabar, kad aš pamatysiu jus darbo valandomis ir visi TFS pamatys jus ir
jie pasakys, parodyk man, kaip naudoti GDB, ir jūs galėsite
parodyti jiems, tiesa?
Rūšies?
Gal tikiuosi.
Cool.
>> Taigi, mes ketiname perkelti į rūšiavimą ir paiešką.
Pamatysite Turiu sąrašą jau rūšiuojamos mums, bet kad nesiruošia
būti atvejis visada.
Taigi problema nustatyti specifikacija problema nustatyti trys, turite šortai
kad jūs galite žiūrėti, ir ji iš tikrųjų kviečia Jus žiūrėti šiuos šortus.
Taip pat paskaitos, praeitą savaitę, mes nuėjome per Šių algoritmų daug, todėl aš
nesiruošia praleisti laiką klasėje vyksta per šių algoritmų dar kartą arba brėžinys
Paveikslėliai kaip šie algoritmai dirbti.
Vėlgi, kad informacija, kurią gali iš naujo žiūrėti paskaita, arba kad informacija
yra užfiksuotas išskirtinai dėl šortai šie paieškos, visi
kurie yra prieinami cs50.net.
>> Taigi, vietoj to, ką mes ketiname padaryti, tai parašyti šias programas.
Mes turime jausmą, psichikos modelį, kaip jie dirba, ir tt, ką mes ketiname
padaryti, tai koduoti juos reali.
Mes ketiname įjungti, kad psichikos modelį, kad vaizdas, jei norite, į
tikrasis kodas.
Ir jei buvo šiek tiek supainioti, arba miglotos dėl psichikos modelis, aš visiškai
suprasti.
>> Mes iš tikrųjų ketiname peršokti į kodo iš karto.
Taigi, nors tai greitai šioje skaidrėje prašo jums koduoti binarinę paiešką, ir
iš tikrųjų, kartotinis versija Dvejetainė paieška, pirmas dalykas, kurį aš
tikrai noriu padaryti, tai parašyti keletą Pseudocode.
Taigi jūs turite tai psichikos modelį kaip dvejetainis paieškos darbai.
Išimkite popieriaus lapą, jei turite vienas lengvai prieinama, ar atverti
teksto redaktoriumi, ir aš norėčiau visiems rašyti.
Paimkite keturių minučių rašyti Pseudocode už dvejetainėje paiešką.
>> Vėlgi, manau, apie tai, kad psichikos modelį.
Ateisiu aplink, jei turite klausimų, ir mes galime padaryti nuotrauką iš.
Bet pirmiausia, prieš pradedant programavimą, Norėčiau rašyti
Pseudocode naudojant dvejetainį paieškos todėl, kai mes nardyti, mes turime tam tikrą kryptį, kaip
kur turėtume galvą.
>> STUDENTAS: Ar mes galime prisiimti masyvas vertės mes gauname jau rūšiuojamos?
>> JASON Hirschhorn: Taigi dvejetainėje paieškos dirbti - puikų klausimą - jūs
turi imtis surikiuota masyvo reikšmių.
Taigi manyti, kad bus dirbti.
Mes grįžti į šią skaidrę.
Jūs matysite violetinė funkcijos deklaracija yra bool binary_search int
vertė, int reikšmės, int n.
Tai turėtų atrodyti pažįstamas, jei jūs jau kreipėsi arba Dotarłeś savo
rankas purvinas su problemų rinkinį.
>> Bet tai jūsų funkcija deklaracija.
Vėlgi, neturėtų jaudintis kad daug šiuo metu.
Ką aš tikrai noriu padaryti, tai priimti keturias minutes Pseudocode dvejetainis
ieškoti, o tada eisime per tą kaip grupė.
Ir aš ateisiu aplink.
Jei turite klausimų, prašome laisvai pakelkite ranką.
>> Kodėl gi ne jums imtis daugiau dvi minutes baigti iki Pseudocode?
Aš žinau, tai gali atrodyti juokinga, kad mes išleisti tiek daug laiko
kažkas, kad net ne iš tikrųjų C, o ypač jų daugiau
Sudėtinga algoritmai ir problema rinkiniai, kad mes turime išsiaiškinti,
pradedant Pseudocode ne nerimaudamas apie sintaksę, tiesiog nerimauti
logika, yra neįtikėtinai naudinga.
Ir tokiu būdu, jūs ne spręsti du neįtikėtinai sudėtingų problemų vienu metu.
Jūs tik sutelkiant dėmesį į logiką ir tada pereiti į sintaksę.
>> Gerai.
Pradėkime išgyvena Pseudocode.
Parašiau čia, dvejetainis paieška Pseudocode.
Mes rašau tai ant tarybai.
Arba aš rašyti ir jums duosiu man instrukcijas man reikia.
Taigi gali kas nors duoti man pirmas linija Pseudocode jums
rašė dvejetainėje ieškoti?
Taip, Annie?
>> STUDENTAS: Nors ilgis sąrašas yra didesnis už nulį.
>> JASON Hirschhorn: Nors ilgis sąrašo didesnė už nulį.
Ir vėl matome, kai C ieškote sintaksiniai dalykų apie čia.
Bet labiausiai tai anglų kalba.
Ar kas nors turite liniją jie pateikia prieš tai jų pseudo-kodu?
>> STUDENTAS: Gauk masyvą iš rūšiuojami numerius.
>> JASON Hirschhorn: Rašėte "gauti masyvas rūšiuotų numerius. "Per
funkcija deklaracija, mes artimųjų, rūšiuotų skaičių masyvas.
>> STUDENTAS: [nesigirdi].
>> JASON Hirschhorn: Taigi turėsime tai.
Bet taip, jei mes neturėjome, kad mes reikės rūšiuoti mūsų masyvas
numerius, nes dvejetainė paieška veikia tik surūšiuotų matricos.
Taigi, nors ilgis sąrašo lygi nuliui, aš ketina pateikti kai klamrowych
kad ji atrodo šiek tiek daugiau kaip C. Tačiau, nors, atrodo map ant
o kilpos, todėl viduje šio laiko kilpa, ką turime
padaryti dvejetainėje ieškoti?
>> Kažkas, kas nedavė man atsakyti dar bet kuris parašė tai?
>> STUDENTAS: Eiti į sąrašo viduryje.
>> JASON Hirschhorn: Tomas.
Eiti į sąrašo viduryje.
Ir tolesnių klausimas, kas mes darome, kai mes ne
viduryje sąraše?
>> STUDENTAS: Ar čekį ar tai numeris jūs ieškote.
>> JASON Hirschhorn: Puikus.
Eiti vidurį sąrašą ir patikrinkite jei mūsų vertė yra ten -
fantastinis.
Ar kas nors turite ką nors, kad buvo kitoks nei tai?
Būtent dešinėje.
>> Pirmas dalykas, mes dvejetainėje paieškos yra eiti į sąrašo viduryje ir
patikrinkite, ar mūsų vertė yra.
Taigi aš manau, jei mūsų vertė yra ten, ką mes darome?
>> STUDENTAS: Mes grįžti prie nulio [nesigirdi].
>> JASON Hirschhorn: Taip, jei mūsų vertė yra, mes jį rasti.
Taigi, mes galime pasakyti, tam tikru būdu, tačiau tai funkcija yra apibrėžta, mes pasakyti, kad vartotojas
mes jį rasti.
Jei jo ten nėra, nors tai jei tai bus sudėtinga.
Taigi, jei jo ten nėra, kažkas, kas dirbo dvejetainėje paieškos ar
yra idėja, dabar ką mes darome?
>> STUDENTAS: Klausimas.
>> JASON Hirschhorn: Taip?
>> STUDENTAS: Ar masyvas jau rūšiuojami?
>> JASON Hirschhorn: Taip, mes prielaidą, masyvas jau rūšiuojamos.
>> STUDENTAS: Taigi jūs turite patikrinti, ar vertė, kad jūs matote, yra daugiau nei
vertė, kad jūs norite, galite perkelti vidurio, o kita pusė.
>> JASON Hirschhorn: Taigi, jei viduryje sąrašas yra didesnis nei mes
ieškote, tada mes ką?
Vežame kur?
>> STUDENTAS: norite pereiti prie Sąrašo pusė su
numeriai mažesni nei.
>> JASON Hirschhorn: todėl mes skambinti, kad į kairę.
Taigi, jei viduryje yra didesnis, mes galime ieškoti kairę pusę sąrašą.
Ir tada ieškoti, kas turiu galvoje ieškoti?
>> STUDENTAS: [nesigirdi].
>> JASON Hirschhorn: Mes einame į vidurį.
Mes iš tikrųjų pakartoti šį dalyką.
Mes einame atgal per mūsų while cikle.
Aš duosiu jums naujausia -
kitur, jei viduryje yra mažiau nei mes, ką mes čia darome?
>> STUDENTAS: Eikite į dešinę.
>> JASON Hirschhorn: Paieška teisę.
Tai atrodo gerai, bet ar kas nors turi nieko, kad mes gali trūkti arba
ką nors, kad jūs įdėti savo pseudo-kodu?
Taigi tai, ką mes iki šiol.
Nors sąrašo ilgis yra didesnis už nulį, mes ketiname eiti
į sąrašo viduryje ir patikrinti, ar mūsų vertė yra.
>> Jei viduryje yra didesnis, mes ketiname ieškoti į kairę, kitas, jei viduryje yra
mažiau, mes ketiname ieškoti teisę.
Taigi, mes visi turėjo tam tikrą pažinimas terminai mes naudojame informatikos
ir priemones turime.
Bet jūs jau pastebėjote, mes buvome kalbėti anglų kalba, bet mes radome
daug dalykų, kad atrodė, kad žemėlapį į įrankiai mes turime mūsų kodavimo įrankių rinkinys.
Taigi Iškart, mes ne vyksta iš tikrųjų koduoti dar.
>> Ką mes matome čia anglų kalba, kad žemėlapiai prie dalykų, mes galime parašyti C?
>> STUDENTAS: Nors.
>> JASON Hirschhorn: Nors.
Taigi, tai, o čia žemėlapius į tai, ką?
>> STUDENTAS: while cikle.
>> JASON Hirschhorn: while cikle?
O gal apskritai kilpa.
Mes norime padaryti kažką daugiau ir daugiau.
Taigi, mes ketiname kodą kilpą.
Ir mes jau žinome, nes mes padarėme tai porą kartų ir mes
turime daug pavyzdžių iš ten, kaip iš tikrųjų rašyti
šis rodiklis kilpa.
Taigi, kad turėtų būti gana lengva.
Mes galime gauti, kad pradėjo gana greitai.
>> Ką dar mes matome čia?
Kokie kiti statiniai sintaksių, viskas kad esate susipažinę su C, tai mes
jau turiu, pagrįsta jausmą nuo žodžių, kuriuos mes naudojome?
Taip, Ana?
[Nesigirdi]
just kidding.
Ana, eiti į priekį.
>> STUDENTAS: Jei ir kitur.
>> JASON Hirschhorn: Jei ir kita - čia.
Taigi, ką jie atrodytų?
>> STUDENTAS: jei else.
>> JASON Hirschhorn: Taip, sąlygos, tiesa?
Taigi, mes tikriausiai reikia parašyti keletą sąlygų.
Ir vėl, nors gal painu pirma, mes paprastai turi prasmę dabar
kaip parašyti sąlygas ir už sąlygų sintaksė.
Ir jei mes ne, mes tiesiog ieškoti sintaksė sąlygos, iškirpti ir įklijuoti
kad, nes mes žinome, reikia sąlygą čia.
Visi kiti dalykai, mes matome, kad žemėlapį į ką mes gali tekti daryti C?
Taip, Aleha?
>> STUDENTAS: Tai gali būti akivaizdu, tiesiog tikrinti, ar
vertė yra lygi kažką.
>> JASON Hirschhorn: Taigi, kaip mes patikrinti ir - kad eiti į sąrašo viduryje
ir patikrinkite, ar mūsų vertė yra ten?
Kaip mes tai darome, kad C?
Kas už tai sintaksė?
>> STUDENTAS: Lygu lygu.
>> JASON Hirschhorn: Lygu lygu.
Taigi šis patikrinimas tikriausiai bus būti lygu lygu.
Taigi mes žinome, mes turime, kad kažkur.
Ir iš tikrųjų, tik raštu jį, mes matome tuos kitus dalykus.
Mes ketiname daryti kai palyginimo operatoriai ten -
fantastinis.
Taigi ji iš tikrųjų atrodo, iki ir didelis, mes neparašyta
žodis C kodą dar.
Bet mes turime psichikos modelį žemyn per paskaitas ir tų šortai.
>> Mes rašė pseudo kodą kaip grupė.
Ir jau turime 80%, jei 90% to, ką mes turime daryti.
Dabar mes tiesiog reikia koduoti tai, kuri vėl yra
ne trivialus problemą išspręsti.
Bet bent jau mes pakimba ant logikos.
Bent dabar, kai mes einame į darbo valandomis, Galiu pasakyti, aš žinau, ko man reikia
padaryti, bet jūs galite priminti man sintaksė?
Arba net jei darbo laikas yra perkrautas, jums gali google for sintaksė, o
nei įstrigo logika.
>> Ir vėl, o ne bando išspręsti logika ir sintaksės problemas visi
vienu metu, ji dažnai yra daug geriau nutraukti šiuos du kietus problemas ne į
dar dvi valdomų tie ir padaryti pseudo-kodas ir tada kodas C
Taigi pažiūrėkime, ką aš padariau pseudo-kodą iš anksto.
>> Nors sąrašo ilgis yra didesnis už nulį, pažvelgti į vidurį
iš sąrašo.
Jei skaičius, rastas grįžo tiesa, dar jei skaičius didesnis, paiešką kairėje.
Else if skaičius mažesnis, paiešką teisė, return false.
Taigi, kad atrodo beveik identiškas, jei ne beveik identiškas ką parašė.
Tiesą sakant, Tomai, ką jūs pasakėte, pirma, nesilaikantiems sąrašo viduryje ir, jei
skaičius, rastas į dviejų teiginių iš tiesų, ką aš padariau.
>> Aš kartu su jais ten.
Aš turėjo išklausyti Jūs pirmą kartą.
Taigi tai yra pseudo kodas turime.
Jei norite dabar, atsiprašau, eikite atgal į mūsų pradinės problemos.
Leiskite kodas binary.c.
Taigi įgyvendinti pakartoti versiją Dvejetainė paieška naudojant šiuos
funkcija deklaracija.
>> Ir jums nereikia kopijuoti jį žemyn tik dar.
Aš iš tikrųjų ketiname atidaryti iki čia binary.c.
Taigi yra funkcija deklaracija viduryje ekrano.
Ir pamatysite, aš paėmė pseudo kodą iš mano pusės, bet beveik identiški
į tai, ką mes parašėme, ir įdėti, kad už jus.
Taigi dabar galime imtis penkias minutes koduoti šią funkciją.
>> Ir vėl, jei turite kokių nors klausimų, pakelti savo ranką, leiskite man žinoti, aš
ateiti aplink.
>> STUDENTAS: [nesigirdi].
>> JASON Hirschhorn: Taigi, aš paėmė dvejetainis paieška apibrėžties
viršų, on line 12.
Štai ką aš gavau mano skaidrės.
Ir tada visa tai pseudo kodas Aš tiesiog kopijuoti ir įklijuoti iš skaidrės
pseudo kodas skaidrių.
Aš vis dar klausos [nesigirdi].
>> Taigi, jei baigėte savo įgyvendinimas, aš noriu ją patikrinti.
I išsiųstas jums helpers.h failą anksčiau šioje klasėje.
Ir ji bus prieinama internete, taip pat atsisiųsti žmonėms žiūrėti
Šiame skyriuje laikas atidėtas.
Ir aš tik naudojamas bendrinis paskirstymo kodas iš pset3.
Taigi, aš paėmė find.C, naudokite mano helpers.h failą o ne helpers.h failą
tai atsižvelgiant į platinimo kodas.
>> Ir aš turėjo padaryti vieną kitą pakeisti find.C o ne skambina tiesiog
paieška, skambinkite binary_search.
Taigi, jei jūs norite išbandyti savo kodą, žinau, kad tai, kaip tai padaryti.
Iš tiesų, kai mes veikti šį kodą dabar, aš tik padariau kopiją
mano pset3 katalogas, vėl pavertė pagalbininkų failus ir tada paaiškėjo, kad
pakeisti find.C skambinti binary_search o ne tiesiog ieškoti.
>> JASON Hirschhorn: Taip.
Turite klausimų?
>> STUDENTAS: Nevermind.
>> JASON Hirschhorn: Jokių rūpesčių.
Na, galime pradėti.
Mes koduoti tai kaip grupė.
Vienas kitas pastaba.
Vėlgi, tai yra, gali būti lengvai sukeistas už problemą, trys.
Turiu helpers.h bylą, o nei helpers.h mes duota,
pareiškia, dvejetainis paieškos, burbulas rūšiuoti ir atranka rūšiuoti.
Ir find.c jūs pastebėsite, on-line, kas tai yra, linijos 68, mes vadiname dvejetainis
ieškoti, o ne paieška.
Taigi dar kartą, kodas, kuris yra prieinamas internetu arba kodas, kad esate
sukurti dabar gali būti lengvai sukeistas už p nustatytas 3 ją patikrinti.
>> Bet pirmiausia leiskite kodas binarinę paiešką.
Mūsų funkcija deklaracija, mes grįžti bool.
Mes priimame sveikasis skaičius vadinamas vertė.
Mes priimame sveikųjų skaičių masyvas, vadinamas vertės, ir mes, kad n
masyvo dydis.
On line 10 Štai čia turiu aštrūs yra stdbool.h.
Ar kas nors žino, kodėl tai yra?
Taigi, ką tai kodo eilutę daryti?
>> STUDENTAS: Tai leidžia naudoti bool grįžti tipo.
>> JASON Hirschhorn: Būtent.
>> STUDENTAS: Arba tai biblioteka, kuri leidžia naudoti bool grįžti tipo.
>> JASON Hirschhorn: Taigi aštrus yra stdbool.h linija man suteikia kai
apibrėžimai ir pareiškimai dalykų kad man leidžiama naudoti
ši biblioteka.
Taigi, tarp tų, kurie sako, kad ten šis tipas vadinamas bool, ir ji gali būti
true arba false.
Štai ką tai linija veikia.
Ir jei aš neturėjau, kad linijos, norėčiau gauti į bėdą už tai rašau
Žodis čia, bool, teisę ten.
Visiškai teisus.
Taigi man reikia, kad šiame kodekse.
Gerai.
Taigi, tai, vėlgi, yra kartotinis versija, ne rekursywny vienas.
Taigi leiskite mums pradėti.
>> Pradėkime tai pirmasis linija pseudo kodu.
Ir tikiuosi, mes - ar ne, tikiuosi.
Mes ketiname eiti aplink kambarį.
Mes eiti pagal kiekvieną eilutę, ir Aš tau padėsiu jums išsiaiškinti liniją, kad mes turime
rašyti pirma.
Taigi, nors ilgis sąrašo yra didesnis už nulį.
Pradėkime priekyje.
Kas linija turėčiau rašyti čia, kodą?
>> STUDENTAS: Nors skliaustelis n yra didesnis nei 0.
>> JASON Hirschhorn: Nors n yra didelis, nei 0.
Taigi n yra sąrašo dydis, ir mes tikrinti, ar -
>> [Tarpines BALSAI]
>> JASON Hirschhorn: - Atsiprašau?
>> STUDENTAS: Kaip mes žinome, kad n yra sąrašo dydis?
>> JASON Hirschhorn: Atsiprašome.
Vienam pset specifikacijos paieška ir rūšiavimo funkcijos jums reikia parašyti,
n yra sąrašo dydis.
Aš pamiršau paaiškinti, kad čia.
Bet taip. n yra dydis sąrašas, šiuo atveju.
Taigi, nors n yra didesnis nei 0.
Gerai.
Tai gali pasirodyti šiek tiek problemiška nors, jei viskas vyks toliau.
Kadangi mes tęsime žinoti per tai dydis sąrašo
funkcija, bet sako, kad mes pradėti nuo su 5 sveikųjų skaičių masyvo.
Ir mes einame per ir mes dabar sumažėjo jį žemyn į
2 sveikųjų skaičių masyvas.
Kuris 2 sveikieji skaičiai tai?
Dydis yra 2 dabar, kad mes norime pažvelgti, bet kurių 2 yra tai, kad?
Ar tai prasminga, į šį klausimą?
>> Gerai.
Aš paprašyti jį dar kartą.
Taigi, mes pradėti su šiuo 5 masyvas sveikieji skaičiai, ir n lygu 5, tiesa?
Mes paleisti per čia.
mes tikriausiai pakeisti dydį, teisė, kaip viskas vyks toliau.
O tai, ką mes sakome, mes norime padaryti.
Mes nenorime ieškoti Visas dalykas dar kartą.
Taigi sako, kad mes pakeisime jį 2.
Mes pusę sąrašą, kad keista.
Taigi tiesiog pasiimti 2.
Taigi dabar n lygu 2.
Atsiprašau už prastas Sausai valomos žymekliai.
Teisė?
Ir mes ieškome per sąrašą vėl su 2 dydžio sąrašą.
Na, mūsų masyvas yra dar dydžio 5.
Mes sakome, mes tik norime ieškoti 2 buriavietes jį.
Taigi, kuris 2 dėmės yra tie?
>> Ar tai prasminga?
Ar jie liko 2 vietos?
Ar jie teisingi 2 dėmių?
Ar jie vidurį 2 dėmių?
Mes lūžo problema sumažėjo, bet mes tikrai nežinau, kokia dalis
problema mes vis dar žiūri, tik turėdami šiuos 2 kintamuosius.
Taigi mums reikia šiek tiek daugiau tada, o n yra didesnis nei 0.
Mums reikia žinoti, kur, kad n yra mūsų tikrasis masyvo.
>> Taigi, ar kas nors turi pakeisti šią eilutę?
Dauguma šios linijos visiškai teisingai.
Ar yra dar be?
Galime sukeisti kažką už "n" padaryti šią eilutę šiek tiek geriau?
Mm-hm?
>> STUDENTAS: Ar galite inicijuoti kintamąjį kaip ilgio ir n, kad bus tada būti naudojamas
vėliau į funkciją?
>> JASON Hirschhorn: Taigi inicijuoti kintamo ilgio n,
ir mes naudojame, kad vėliau?
Bet tada mes tiesiog atnaujinti ilgio ir mes vis dar paleisti į šią problemą, kur mes
sumažinti mūsų problemos ilgis, bet mes niekada žinoti, kur, iš tikrųjų,
kad ilgis žemėlapiai ant.
>> STUDENTAS: Ar ne tai, kad nutiks vėliau, kai jūs sakote, paiešką kairę,
ieškoti tiesa?
Jūs ketinate eiti į skirtingas plotas jūsų -
>> JASON Hirschhorn: Mes ketiname eiti į rajoną, bet kaip mes žinome,
kurie turi eiti į?
Jei mes turime tik masyvo ir tai n, kaip mes žinome, kur
eiti į masyvą.
Gale, taip?
>> STUDENTAS: Ar turite, pavyzdžiui, mažesnės riba ir viršutinė riba kintamasis arba
kažkas panašaus?
>> JASON Hirschhorn: Gerai.
Taigi, tai yra dar vienas idėja.
Užuot tiesiog sekti dydis, mes sekti mažesnis ir
viršutinė riba nevienoda.
Taigi, kaip mes apskaičiuoti dydį iš apatinė ir viršutinė riba?
>> [Tarpines BALSAI]
>> JASON Hirschhorn: atimtis.
O taip pat sekti mažesnis jungiasi ir viršutinė riba leiskite mums žinoti,
mes ieškome šių dviejų?
Mes ieškome šių dviejų čia?
Mes ieškome viduryje du?
Tikriausiai ne vidutinio du, nes tai, iš tiesų, yra dvejetainis paieška.
Bet dabar mes galėsime gauti dydį, bet ir masyvo ribos.
Iš esmės, jei mes turime milžinas Telefonų knyga, mes nukopijuoti jį per pusę.
Dabar mes žinome, jeigu tai mažesni telefono knyga.
Bet mes ne iš tikrųjų nepaprastas Telefonų knyga pusę.
Mums vis dar reikia žinoti, kur naujos ribos mūsų problemos.
Ar kas nors turi kokių nors klausimų, apie tai?
Taip?
>> STUDENTAS: Ar tai veikia, sukuriant kintamasis, aš, kad jūs tada tiesiog pereiti
I, palyginti su jo pozicija dabartinė padėtis, ir ilgis, n?
>> JASON Hirschhorn: Ir kas aš?
>> STUDENTAS: Kaip aš yra kaip rūšies -
Kaip galėtumėte inicijuoti i būti vidurinė padėtis masyvo.
Ir tada, jei padėtyje vertė i iš masyvo viduryje nustatyta, kad
būti mažesnis nei vertė, jums reikia, aš dabar tampa masyvo ilgis, plius
I vertė padalinta iš 2.
Kaip, matote, jums pereiti i -
>> JASON Hirschhorn: Teisė.
>> STUDENTAS: - iki -
>> JASON Hirschhorn: Taigi, aš esu beveik teigiama, kad veiks.
Bet Esmė yra, jūs turite dvi gabaliukai informacijos rasite čia.
Jūs galite tai padaryti su pradžioje ir pabaigoje, arba galite daryti su dydžiu, ir tada
kai žymeklis.
Bet jūs turite du gabalus informacijos čia.
Jūs negalite išsiversti tik su vienu.
Ar tai prasminga?
>> Taigi, mes ketiname eiti per, ir mes ketiname daryti [nesigirdi]
ir sukurti keletą žymeklių.
Taigi what'd rašote savo kodą?
>> STUDENTAS: Aš ką tik pasakė int riba vienas yra lygi 0.
>> JASON Hirschhorn: Pavadinkime kad int pradžia.
>> STUDENTAS: Gerai.
>> JASON Hirschhorn: Tai leidžia daugiau prasmės man.
Ir?
>> STUDENTAS: sakiau, manau, int baigiasi.
>> JASON Hirschhorn: int baigiasi.
>> STUDENTAS: Manau, n atėmus 1, ar kažkas panašaus.
Kaip, paskutinis elementas.
>> JASON Hirschhorn: Taigi rašė, int pradedant lygi 0, kabliataškiu, ir int
pabaiga Lygu n atėmus 1, kabliataškiu.
Taigi, iš esmės, ką mes darome čia 0 pirmąją poziciją.
Ir kaip mes žinome, masyvuose, jie neturi eiti iki n, jie eiti n atėmus 1.
Taigi, mes turime keletą mūsų masyvo ribų.
Ir šios pradinės ribos atsitiktų būti pradinės ribos mūsų problema.
Gerai.
Taigi, kad gerai skamba.
Tada, jei mes einame atgal į šią eilutę, o ilgis sąraše yra didesnis nei 0,
ką, vietoj n, turėtų mes įdėti čia?
>> STUDENTAS: Rašyti baigiant minuso pradžia.
>> JASON Hirschhorn: Nors baigiant minuso pradžioje yra didesnis negu 0?
Gerai.
Ir mes galime, jei norime padaryti, kad šiek tiek gražiau, ką
dar galėtume padaryti?
Jei mes norėjome valyti šis kodas iki šiek tiek?
Kaip mes galime atsikratyti 0?
Tai tik stiliaus klausimas.
Tai teisinga dabar.
>> STUDENTAS: Ending nėra lygūs pradžia?
>> JASON Hirschhorn: Mes galime ką daryti?
>> [Tarpines BALSAI]
>> STUDENTAS: Paskutinysis yra didesnis?
>> JASON Hirschhorn: Taip.
Galime tik daryti, o baigiant yra didesnis nei pradžioje.
Teisė.
Mes pridėtinės pradeda iš kitos pusės , kad ir mes atsikratė 0.
Taigi, tai tik atrodo šiek tiek švaresnis.
Gerai.
Taigi, nors ilgis sąraše yra 0, mes parašėme kad nors baigiasi yra didesnis
nei pradžioje.
Mes ketiname įdėti į mūsų reikia garbanotas petnešos, tada pirmas dalykas,
mes norime padaryti, tai pažvelgti į jie šiek tiek sąrašą.
Jūs?
Ar galite duoti man -
>> STUDENTAS: Jei skliaustelis vertė aikštė laikiklis -
>> JASON Hirschhorn: Jeigu skliausteliuose vertė aikštė laikiklis.
>> STUDENTAS: nesibaigianti suskirstyti pagal 2.
>> JASON Hirschhorn: nesibaigianti?
>> STUDENTAS: matau su savo problema -
>> JASON Hirschhorn: Gerai.
Na, atrodo ne per vidurį.
Kaip mes žinome, ką viduryje yra?
Taip.
Taigi leiskite man ištrinti tą kodą.
Kaip mes žinome, ką viduryje yra?
Nieko, kai jūs turite pradžią ir pabaiga, kaip jums atrodo
viduryje?
>> STUDENTAS: Jūs vidutiniškai.
>> STUDENTAS: Jūs pridėti juos kartu ir tada -
>> JASON Hirschhorn: Įtraukti juos kartu ir tada?
>> STUDENTAS: Ir jūs vidutiniškai.
Padalinkite jį 2.
>> JASON Hirschhorn: Įtraukti juos kartu ir padalinti iš 2.
Taigi int vidutinio lygu?
Tomas, galite duoti man?
>> STUDENTAS: Pradedant plius baigiasi -
>> JASON Hirschhorn: pradžia plius baigiasi.
>> STUDENTAS: Visi, laikiklis, padalintas iš 2.
>> JASON Hirschhorn: Visi, skliausteliuose, padalintas iš 2.
Taigi, kad suteikia man vidurį nieko ištaisyti?
>> STUDENTAS: Taip pat reikia suapvalinti ją.
>> JASON Hirschhorn: Ką jūs tai, man reikia suapvalinti ją?
>> [Tarpines BALSAI]
>> STUDENTAS: Nes jei Tai keista skaičius, tada tai kaip -
>> JASON Hirschhorn: Na, gerai.
Taigi galėčiau suapvalinti ją.
Bet jei jis nelyginis skaičius, 5, galiu atsižvelgiant 1 nuo viduriu.
Arba jei jis net skaičius, o, tai geriau atvejis.
Jei tai 4, mes turime tik 4, galiu imtis Pirmoji "viduryje", citata, citatos ar
Antrasis "viduryje" vienas.
Arba dirbtų dvejetainis paieškos, kad aš ne iš tikrųjų reikia suapvalinti ją.
Bet yra dar vienas dalykas, aš reikia pažvelgti į šią eilutę.
Mes galime nesupranta dar, bet mes prie jo grįžti.
Kadangi ši eilutė iš tikrųjų vis dar turi vieną kitą dalyką.
>> Tačiau iki šiol, mes raštu keturių eilučių kodo.
Mes turime mūsų pradžią ir baigiant žymeklius.
Mes turime while cikle, kuris žemėlapiai tiesiogiai mūsų Pseudocode.
Mes ieškome viduryje, kad žemėlapiai tiesiai ant mūsų Pseudocode.
Sakyčiau, tai eina į vidurį sąrašo, tai kodo eilutę.
Ir tada, kai mes einame į vidurį sąrašas, kitas dalykas, kurį turime padaryti
yra patikrinti, jei mūsų vertė yra ten Pseudocode rašėme anksčiau.
>> Taigi, kaip mes patikrinti, ar mūsų vertė yra viduryje sąraše?
Jūs.
Kodėl tai darote?
>> STUDENTAS: Jei mūsų vertė s yra viduryje yra lygi
ką mes nustatyti -
Aš turiu galvoje, lygios lygios -
>> JASON Hirschhorn: Tai -
Gerai.
>> STUDENTAS: Aš nesu įsitikinęs, ką kintamasis mes ieškome
nes, nors, nes -
>> [Tarpines BALSAI]
>> STUDENTAS: [nesigirdi].
>> JASON Hirschhorn: Būtent.
Už funkcijų deklaracijos mes ieškome vertė.
Taigi, mes ieškome vertė į vertybių masyvo.
Taigi, jūs esate visiškai teisus.
Jūs darote, jei atviras skliaustas vertė laikiklis viduryje uždarytos laikiklis lygu
Lygu vertę, o viduje yra Ką mes turime daryti?
Jei mūsų vertė aisiais, ką mes turime daryti?
>> [Tarpines BALSAI]
>> STUDENTAS: Grįžti nulį.
>> JASON Hirschhorn: Grįžti tiesa.
>> STUDENTAS: Grįžti tiesa.
>> JASON Hirschhorn: Mykolas, Ką ši eilutė daryti?
>> STUDENTAS: [nesigirdi] programa paleisti jos, žinoma, ir tai yra daugiau, ir
jūs ką reikia daryti?
>> JASON Hirschhorn: programa, ar ką?
Šiuo atveju?
>> STUDENTAS: funkcija.
>> JASON Hirschhorn: funkcija.
Ir taip, kad grįžtumėte į ką vadinamas tai ir suteikia jai reikšmę, tiesa.
Visiškai teisus.
Pagrindinis.
Kas grįžimo tipo iš esmės, Michael?
>> STUDENTAS: int sveikas?
>> JASON Hirschhorn: int, tiksliai.
Sveikasis skaičius.
Tai buvo tik klausimas įsitikinti vaikinai buvo ant jo.
Ką tai paprastai grįžti, jei viskas veikia gerai?
>> STUDENTAS: nulis.
>> JASON Hirschhorn: nulis.
Visiškai teisus.
>> STUDENTAS: Jei tai tiesiog grąžina true, nėra informacijos skiriant
apie tai, kas -
Oh, tai tiesiog pasakyti, kad šis vertė viduje masyvo.
>> JASON Hirschhorn: Būtent.
Ši programa yra ne suteikti informaciją kur tiksliai vertė.
Jis tik sako: taip, mes radome tai ar ne, mes ne jį rasti.
Taigi, jei skaičius, rastas, grąžina true.
Na, iš tikrųjų mes tiesiog padarė, kad tikrai greitai tą vieną eilutę kodo.
Taigi aš judėti, kad Pseudocode liniją.
>> STUDENTAS: Ar ne mes turime pakeisti matrica?
Ji turėtų būti vertės, o ne vertės, tiesa?
>> JASON Hirschhorn: Atsiprašome.
Ačiū.
>> STUDENTAS: Taip.
>> JASON Hirschhorn: Ši eilutė turėtų būti vertės.
Visiškai teisus.
Gerai.
Taigi, mes pažvelgė vidurinės sąrašą.
Jei skaičius, rastas sugrįžimas.
Tęstinis su mūsų Pseudocode, jei viduryje yra didesnis, paiešką kairę.
Taigi turėjau čia, jeigu numeris didesnis, paieška kairę.
Konstantinas, galite duoti man tai kodo eilutę?
>> STUDENTAS: Jei vertė viduryje -
>> JASON Hirschhorn: Taigi, jei vertė -
jei atviras skliaustas vertės laikiklis vidutinio skliaustai uždaromi -
>> STUDENTAS: Ar mažesnis nei vertė?
>> JASON Hirschhorn: Ar mažiau nei.
>> STUDENTAS: Mažiau nei vertės.
>> JASON Hirschhorn: Vertė.
Na, iš tikrųjų, jūs norite patikrinti, ar numeris -
Atsiprašau.
Tai šiek tiek klaidina.
Bet kitur, jei į skaičius viduryje sąraše yra didesnis.
>> STUDENTAS: O, gerai.
>> JASON Hirschhorn: aš pakeisti.
Else if viduryje yra didesnis, mes norite ieškoti kairėje, gerai?
Ir ką mes darome viduje tai jei liga?
>> STUDENTAS: Ar galiu padaryti mažą pakeitimą sąlyga, pakeisti jį į kitas, jei?
>> JASON Hirschhorn: kita, jei?
Gerai.
Taigi, šis kodas bus atlikti apie tą patį.
Bet malonus dalykas, apie naudojant, jei dar jei if arba jei kitas, jei kitas
reiškia, kad tik vienas iš tų, ketina būti tikrinami ne visi trys iš jų,
potencialiai.
Ir tai daro jį šiek tiek gražiau kompiuteryje, kad yra
veikia savo programą.
>> Taigi [? Konstantinas?]
mes viduj šioje eilutėje, kitas, jei vertės, laikiklis vidutinio skliaustai uždaromi
yra didesnis nei vertės.
Ką mes turime daryti?
Mums reikia ieškoti kairėje.
Kaip mes tai darome?
Aš ruošiuosi duoti jums pradėti.
>> Mes turime šiuos du dalykus, vadinamus prasidedanti ir pasibaigianti.
Taigi, kas turi įvykti į pradžią?
Jei norite atlikti paiešką kairę sąrašas, mes gauti mūsų dabartinę pradžia.
Ką mes turime daryti?
>> STUDENTAS: Mes nustatėme pradžią į vidurį plius 1.
>> JASON Hirschhorn: Taigi, jei mes ieškoti kairę?
>> STUDENTAS: Atsiprašome, viduriniosios atėmus -
todėl galūnė būtų viduryje minus 1 ir pradžia -
>> JASON Hirschhorn: Ir kas atsitinka pradžioje?
>> STUDENTAS: Jis lieka tas pats.
>> JASON Hirschhorn: Taigi prasmė lieka ta pati.
Jei mes ieškome į kairę, mes naudojant tą pačią pradžią -
visiškai teisus.
Ir baigiasi?
Atsiprašome, ką baigiant lygūs vėl?
>> STUDENTAS: Vidurio minus 1.
>> JASON Hirschhorn: Vidurio minus 1.
Dabar, kodėl minus 1, ne tik viduryje?
>> STUDENTAS: viduryje yra iš paveikslėlį jau, nes mes turėjome
patikrinti, kad tai atlikti?
>> JASON Hirschhorn: Štai visiškai teisus.
Viduryje yra iš paveikslėlio.
Mes jau patikrinta per vidurį.
Taigi mes nenorime "viduriu", citata citatos, toliau būti
matrica, mes ieškome.
Taigi tai yra fantastinis.
>> Else if vertės laikiklis viduryje yra didesnis nei vertė baigiant lygu
vidutinio atėmus 1.
Jeffas, ką apie šį paskutinę eilutę?
>> STUDENTAS: kita.
Vertybės viduryje yra mažesnis nei vertė?
>> JASON Hirschhorn: mes jūs suteikėte man kitur.
Taigi, jei nenorite duoti man -
>> STUDENTAS: Taigi pradedant būtų viduryje plius 1.
>> JASON Hirschhorn: prasideda lygybės vidutinio plius 1 vėlgi pats
Priežasties, kad Konstantinas davė mums anksčiau.
Ir, galų gale, kas nedavė man kodo eilutę dar?
Return false, Aleha, ką mes rašyti čia?
>> STUDENTAS: Grįžti klaidinga.
>> JASON Hirschhorn: Grįžti klaidinga.
Ir mes turime padaryti, nes jei mes nerandate, mes turime pasakyti, kad mes
nebuvo rasti.
Ir mes pasakėme mes ketiname grįžti bool, kad mes tikrai turime grįžti
bool kažkur.
>> Taigi, galime paleisti šį kodą.
Aš iš tikrųjų ketiname -
todėl mes terminale.
Mes išvalyti mūsų langą.
Padarykime viską.
Mes radome ten viena klaida.
Yra apie 15 eilutėje klaida, tikimasi, kabliataškis prie pabaigos
deklaracija.
Taigi, ką aš pamiršti?
>> STUDENTAS: kabliataškiu.
>> JASON Hirschhorn: kabliataškiu teisė čia.
Manau, kad buvo Tomo kodas.
Taigi, Tomai, [nesigirdi].
Juokauju.
Leiskite padarysiu Visi dar kartą.
>> STUDENTAS: Kas ZMI katalogas mes turėtume būti už tai?
>> JASON Hirschhorn: Taigi jūs galite tiesiog žiūrėti šio bitų.
Bet vėl, jei norite perkelti jį kodą į savo pset3 kataloge pabandyti
jį, kad tai, ką aš padariau.
Jei pastebėsite čia - gaila, geras klausimas.
>> [? LS,?]
Turiu čia find.c kodas nuo šios savaitės Distro kodą.
Turiu helpers.h.
Turiu Make failą, kad aš iš tikrųjų redagavo truputį įtraukti šiuos naujus
bylos mes raštu.
Visi šio kodekso bus galima ne paskirstymo kodas, bet nauja
Padaryti failą, nauja helpers.h failas bus galima internetu atsisiųsti.
Vėl, todėl jie yra extra kodai turime.
>> Taigi padaryti viską, už šios linijos, todėl rasti, dvejetainis, burbulo pasirinkimas - daro
visi trys ir kaupia į tai vykdomąjį kodą rasti.
Taigi, apskritai, mes nenorime į tiesiai į check50.
Mes norime paleisti tam tikrus tyrimus dėl mūsų pačių.
Bet tik, kad galėtume paspartinti šį šiek tiek, check50 2013 pset3.find praeis
į helpers.c-- mano blogas.
>> Aš neturiu, kad dabar.
Taigi mes iš tikrųjų ketiname paleisti nekilnojamojo kodą.
Usage.find /, jūs žinote, ką tai reiškia?
>> STUDENTAS: Jūs turite sekundės komandinės eilutės apie tai.
>> JASON Hirschhorn: turiu antra komandinės eilutės.
Ir už specifikacijos, man reikia įveskite ko mes ieškome.
Taigi pažvelkime į 42.
Mes nuolat jį surūšiuoti, nes mes neparašiau rūšiavimo funkcija dar -
42, 43, 44.
>> Ir kontrolės D nerado adatą šieno kupetoje.
Tai blogai.
Tai tikrai yra.
Leiskite pabandyti kažką kita.
Gal tai todėl, kad aš įdėti tai pradžioje.
>> Darom 41, 42, 43.
Čia mes eiti.
Jis ją radau.
Leiskite jį pabaigoje dabar tik taip mes galime būti kruopščiai -
40, 41, 42.
Nepavyko rasti adatą.
Taigi minėjau tai anksčiau.
Deja, aš žinojau, tai nutiks.
>> Bet pedagoginiams tikslams, tai gerai ją ištirti.
Tai neveikia.
Dėl tam tikrų priežasčių, jis negali rasti.
Mes žinome, kas yra ten, bet mes ne rasti jį.
Taigi, vienas dalykas, mes galime padaryti, tai eiti per GDB jį rasti, bet ar kas nors,
nesikreipiant per GDB, turi jausmas, kai mes įsukus?
[? Madu? ?]
>> STUDENTAS: Aš manau, kad tai gali būti, kai baigiasi yra lygi pradžioje, ir tai
tik vienas elementas, sąrašas.
Tada jis tiesiog ignoruoja, o ne faktiškai patikrinti jį.
>> JASON Hirschhorn: Štai visiškai teisus.
Kai baigiasi Lygu pradžioje, mes dar turime mūsų sąraše elementas?
>> STUDENTAS: Taip.
>> JASON Hirschhorn: Taip, iš tiesų, mes turėti tik vieną elementą.
Ir tai greičiausiai atsitiks, kai, už kodu mes patikrinome, mes esame
priekis šieno kupetoje arba iš šieno kupetoje pabaigoje.
Štai kur pradžia ir pabaiga ketina lygūs
vienas su dvejetainėje paiešką.
Taigi šių dviejų atvejų ji neveikia, nes baigiasi sudarė pradžioje.
>> Bet jei baigiant lygi pradžioje ar tai while cikle vykdyti?
Taip nėra.
Ir mes galėjome patikrinti kad vėl per GDB.
Taigi, kaip mes galime išspręsti šį kodą, nes kai tuo tarpu baigiant lygi
pradžioje, mes taip pat norime, kad tai o kilpa paleisti.
>> Taigi, ką mes galime padaryti nustatyti liniją 18?
>> STUDENTAS: [nesigirdi] yra didesnis viršytų arba būtų lygios.
>> JASON Hirschhorn: Būtent teisus.
Nors pabaiga yra didesnis nei arba lygus pradžioje.
Taigi dabar mes įsitikinkite, kad gauti, kad kampas atvejis pabaigoje.
Ir pažiūrėkime.
Leiskite paleisti šią dar kartą.
>> Padarykime viską.
Vėlgi, jūs turite tik sekti kartu čia.
Ieškoti 41 šiuo metu.
Tiesiog laikyti jį atitinka.
>> Ieškoti 42.
Leiskite jį pradžioje -
42, 43, 44.
Mes jį rasti.
Taigi, kad iš tiesų buvo pakeisti mums reikia padaryti.
>> Tai buvo kodavimo mes daug ką tik padarė, dvejetainis paieškos.
Ar kas nors turite kokių nors klausimų prieš Aš pereiti į eilučių rašėme
Dvejetainė paieška, arba kaip mes sugalvojome , ką mes išsiaiškinti?
Prieš mes judėti į priekį, aš taip pat noriu atkreipti , kad ir didelis, mes apibudino
mūsų pseudo kodas vienas vienas į mūsų kodą.
>> Mes turime, kad keblus dalykas išsiaiškinti su
prasidedanti ir pasibaigianti.
Bet jei būtumėte ne suprato, kad, jums būtų parašyta gana daug
identiškas kodas, išskyrus šios dvi top linijos.
Ir tada jūs suprato, kai jūs padarėte jį patikrinimų bei atvejais, kurie
jums reikia ką nors kita.
Taigi, net jei jūs laikėsi mūsų pseudo kodas eilutės į eilutę, jūs tai jau
Dotarłeś visi, bet dvi eilutės kodą reikia rašyti.
>> Ir aš būčiau pasirengęs bet kad vaikinai būtų visi suprato, kad iš
gana greitai, kad jums reikia įdėti kai žymeklis yra rikiuoti ten išsiaiškinti
iš kur jūs buvote.
Kad vėl yra padaryti galia pseudo-kodą iš anksto.
Taigi, mes galime padaryti, logika, o paskui mes galime nerimauti sintaksė.
>> Jeigu mes buvo supainioti apie logiką Bandant įrašyti šį kodą į C,
mes Dotarłeś visi messed up.
Ir tada mes norime būti užduoti klausimus apie logika ir sintaksė ir sulieti
juos visus kartu.
Ir mes Dotarłeś prarastas , kas gali greitai tapti
labai sudėtinga problema.
Taigi pereikime dabar Parinkimo rūšiuoti.
>> Mes turime 20 minučių liko.
Taigi Turiu jausmas, mes negalės gauti per visus atrankos rūšiuoti
ir burbulas rūšiuoti.
Bet leiskite mums bent bandymas užbaigti atrankos rūšiuoti.
Taigi įgyvendinti pasirinkimą rūšiuoti naudojant Ši funkcija deklaraciją.
>> Vėlgi, tai yra paimta iš problema nustatyta specifikacija.
Int reikšmės yra skliausteliuose, yra sveikųjų skaičių masyvas.
Ir int.n yra tos masyvo dydis.
Atrankos rūšiuoti vyksta rūšiuoti šį masyvo.
>> Taigi, už mūsų psichikos modelio atrankos rūšiuoti, mes traukti -
pirma, mes eiti per sąrašą pirmą kartą laikas, rasti mažiausią skaičių,
padėkite jį pradžioje, rasti antrą mažiausias skaičius, įdėkite jį į
Antroji pozicija, jei norime Rūšiuoti didėjimo tvarka.
Nesu verčia rašyti pseudo-kodą dabar.
>> Tačiau prieš tai kodą kaip klasėje penkias minutes, mes ketiname rašyti
pseudo kodas, todėl mes turime tam tikrą prasmę iš kur mes einame.
Taigi nebandykite rašyti pseudo kodą savo.
Ir tada bandyti pasukti, kad pseudo kodą į kodą.
Mes padarysime, kad kaip grupė per penkias minutes.
>> Ir, žinoma, leiskite man žinoti, jei turite kokių nors klausimų.
>> STUDENTAS: Kad ji?
>> JASON Hirschhorn: pamatyti, kiek jūs galite gauti daugiau dviejų minučių.
Aš suprantu, jūs ne galės baigti.
Bet mes galėsime eiti per šį, kaip grupė.
>> Jūs visi kodavimo taip [nesigirdi], todėl aš atsiprašau sustabdyti, ką jūs darote.
Bet eikime per tai kaip grupė.
Ir vėl, dvejetainis paieškos, jūs visi duoti man viena, jei ne daugiau eilučių kodo.
Ačiū jums už tai.
Mes ketiname padaryti tą patį čia kodas kartu kaip grupei.
>> Taigi pasirinkimas rūšiuoti - tegul rašyti kai greitai pseudo kodas.
Už psichikos modelio, gali kas nors duoti man Pirmoje eilutėje pseudo-kodas, prašome?
Ką norite daryti?
>> STUDENTAS: Nors sąrašas yra ne iš eilės.
>> JASON Hirschhorn: Gerai, o sąrašas iš eilės.
Ir ką reiškia "ne iš eilės?
>> STUDENTAS: Nors [nesigirdi]
nebuvo rūšiuojamos.
>> JASON Hirschhorn: Nors sąrašas yra ne iš eilės, ką mes darome?
Duok man antrą eilutę, prašome Marcus.
>> STUDENTAS: Taigi susirasti kitą mažiausias skaičius.
Tai bus atitrauktas.
>> JASON Hirschhorn: Taigi rasti kitas mažiausias skaičius.
Ir tada kažkas?
Kai randame kitas mažiausias skaičius, ką mes darome?
Aš ruošiuosi pasakyti rasti mažiausias skaičius.
Štai ką mes norime daryti.
>> Taigi, rasti mažiausią skaičių.
Tada ką mes darome?
>> STUDENTAS: [nesigirdi] ir pradžioje.
>> JASON Hirschhorn: Atsiprašome?
>> STUDENTAS: Įdėkite ją į pradžioje sąrašo.
>> JASON Hirschhorn: Taigi įdėkite jį į Sąrašo pradžioje.
Ir ką mes darome dalykas kad pradžioje buvo
Į sąrašą, tiesa?
Mes perrašyti kažką.
Taigi, kur mes įdėti, kad?
Taip, Ana?
>> STUDENTAS: Kur mažiausias skaičius buvo?
>> JASON Hirshhorn: Taigi įdėti pradžią sąrašo, kai
Mažiausiai buvo.
Taigi, nors sąrašas yra ne iš eilės, rasti mažiausias skaičius, įdėkite jį į
Sąrašo pradžioje, įdėti pradžioje, sąrašas, kur
Mažiausiai buvo.
Marcus, galite perfrazuoti šią eilutę o sąrašas yra ne iš eilės?
>> STUDENTAS: Nors skaičiai nebuvo atskirtos?
>> JASON Hirshhorn: Gerai, kad, siekiant žinoti, kad skaičiai nebuvo
rūšiuojami, ką mes turime daryti?
Kiek mes turime eiti per šį sąrašą?
>> STUDENTAS: Taigi, manau, už linijos, arba o, o patikrinta skaičius yra mažiau
nei sąrašo ilgį?
>> JASON Hirshhorn: Gerai, gerai.
Manau, misphrased mano klausimas prastai.
Aš tiesiog bando gauti ne mes ketiname eiti
per visą sąrašą.
Taigi, nors sąrašas yra ne iš eilės, man sunku žemėlapį.
Bet iš esmės, tai kaip Manau apie tai.
Eiti per visą sąrašą, rasti mažiausias skaičius, įdėkite jį į
pradžioje - iš tikrųjų, tu teisus.
Leiskite įdėti juos abu.
>> Taigi, nors sąrašas yra ne iš eilės, mes reikia eiti per visą sąrašą
vieną kartą, rasti mažiausią skaičių, vietą jį į sąrašo pradžią, įdėti
Sąrašo pradžioje, kai mažiausias skaičius buvo ir tada, jei
sąrašas vis dar ne iš eilės, mes turiu eiti per šį
procesas vėl, tiesa?
Štai kodėl pasirinkimas rūšiuoti, Big-O Runtime Atrankos rūšiuoti, bet kas?
>> STUDENTAS: n kvadratu.
>> JASON Hirshhorn: n kvadratu.
Nes kaip Markas ir aš tiesiog suprato, čia mes ketiname turėti
eiti per, sąrašas skaičių kartų.
Taigi išgyvena kažką ilgis n n kartų skaičių
iš tiesų n kvadratu.
>> Taigi, tai yra mūsų Pseudocode.
Tai atrodo labai gerai.
Ar kas nors turi kokių nors klausimų, apie Pseudocode?
Nes iš tikrųjų pasirinkimas yra rikiuoti turėtų tikriausiai ateis 12:59, kodas iš
Pseudocode.
Taigi kokių nors klausimų apie logika Pseudocode?
Paprašykite jį dabar.
>> Atrankos rūšiuoti - o sąrašas yra iš iš eilės, mes ketiname eiti per jį
ir rasti mažiausią kiekvieną kartą ir įdėti jį į priekį.
Taigi, nors sąrašas yra ne iš eilės, gali kas nors, duok man tą kodo eilutę, kuris
nedavė man linija kodo dar, prašome?
Tai skamba kaip kas?
>> STUDENTAS: Štai už linijos.
>> JASON Hirshhorn: Tai skamba norėčiau už linijos.
Gerai, galite duoti man už linijos?
Už -
>> STUDENTAS: i lygu 0.
>> JASON Hirshhorn: aš arba -
ką mes trūksta?
Kas vyksta čia?
>> STUDENTAS: Žiniasklaida.
>> JASON Hirshhorn: Būtent.
(Int i = 0; -
>> STUDENTAS: i <n i + +).
>> JASON Hirshhorn: prikalė jį Jeff.
Mes ketiname per sąrašą, tiesa?
Mes matėme, kad kodą prieš.
Tobula.
Taigi, galime įdėti mūsų vingiuotus skliaustus čia.
Aš ruošiuosi įdėti kai garbanotas petnešos čia.
>> Taigi, nors tai 0, turime eiti visą sąrašą.
Taigi kiekvieną kartą, mes einame per sąrašą, ką mes norime sekti?
>> STUDENTAS: jei sandoriai yra pagaminti.
>> JASON Hirshhorn: Ieškoti mažiausias skaičius.
Taigi, mes tikriausiai turėtų sekti mažiausias skaičius kiekvieną kartą.
Taigi linijos aš galiu padaryti, sekti mažiausio skaičiaus?
Aleha, kaip aš galiu laikyti kelio kažką?
>> STUDENTAS: Pradėkite naują kintamąjį.
>> JASON Hirshhorn: Pradėkite naują kintamąjį.
Taigi, kurkime kintamąjį.
Kokia?
>> STUDENTAS: Žiniasklaida.
>> JASON Hirshhorn: Žiniasklaida.
Tegul ją vadina mažiausių.
Ir ką ji lygi, kai mes tik pradedate?
Mes dar išgyveno sąrašą dar.
Mes ne pirmos dalies per sąrašą mūsų pirmą kartą.
Ką tai lygūs, mažiausias skaičius?
>> STUDENTAS: Vertybės i.
>> JASON Hirshhorn: Vertybės i.
Tai skamba visiškai teisus, tiesa?
Mažiausias skaičius iš pradžių kur mes esame.
Taigi dabar mes turime mažiausias, ir mes turime eiti per visą sąrašą ir
palyginti tai mažiausias visa kita.
Taigi mes eiti per sąrašą dar kartą?
Michael?
>> STUDENTAS: Jums reikia padaryti kita kilpa.
>> JASON Hirshhorn: Kitas kilpą.
Darom.
Duokit kodą.
>> STUDENTAS: Dėl kilpa -
už mažiausias -
tik int j, gal galėtumėte pasakyti?
= 0; toks, kad -
>> JASON Hirshhorn: Na, jei mes norime eiti per visą sąrašą -
>> STUDENTAS: j <n, j + +).
>> JASON Hirshhorn: Fantastiškas.
Mes ketiname eiti per už linijos dar kartą.
Ir kaip mes galime rasti mažiausias skaičius?
Tomas?
Mes turime dabartinę mažiausią skaičių, Taigi, kaip mes galime rasti naują mažiausių?
>> STUDENTAS: Mes galime patikrinti, ar mažiausias skaičius turime, yra didesnė nei
vertės laikiklis j.
>> JASON Hirshhorn: Taigi, jei mažiausias yra didesnis nei vertybių kronšteino j.
Taigi, jei dabartinis mūsų mažiausias yra didesnis nei -
Aš ruošiuosi perkelti šias dvi eilutes kodo ten sekundę.
Nes kol mes padaryti bet Swapping, mes reikia eiti per visą sąrašą.
Taigi tai Pseudocode tiesų turėtų būti ne kad vidinis už linijos.
Tad visą sąrašą.
Jei mažiausias yra didesnis nei vertės j kas tada?
>> STUDENTAS: Tada mažiausias Lygu vertybes j.
>> JASON Hirshhorn: Fantastiškas.
Vienas greitas klausimas -
pirmą kartą, mes einame per šį kilpa, aš ketina 0, j vyksta
iki 0, kai mes gauti čia.
Taigi, mes ketiname būti palyginti skaičius savaime.
Ar tai veiksminga?
Ne, tai tikrai ne efektyvus.
Taigi ar mūsų j reikia eiti nuo 0 iki N kiekvieną kartą?
Mes visada reikia patikrinti visą sąrašą?
[Nesigirdi]?
>> STUDENTAS: Pradėti su i vietoj.
>> JASON Hirshhorn: j skardinė pradėti su ką?
>> STUDENTAS: i.
>> JASON Hirshhorn: j galite pradėti su i.
Taigi dabar mes palyginkite pradedant su vienu mes apie.
Bet net ir tada, yra tai, kad veiksmingai, kaip įmanoma?
>> STUDENTAS: i + 1.
>> JASON Hirshhorn: i + 1, atrodo, efektyviausias, nes mes
jau aš.
Mes kuriame, kad mažiausias 15 eilutėje.
Mes ketiname pradėti šalia vienas automatiškai.
Taigi mes einame per už linijos.
Mes pereiti per kiekvieną kartą.
Mes eiti per keletą kartų.
Dabar mes Dotarłeś per tai vidinis už linijos.
Mes turime mažiausias vertė taupo.
Mums reikia įdėti jį pradžioje sąrašo.
Taigi, kaip aš galiu įdėti jį pradžioje į sąrašą?
Kas yra kintamasis, kuris nurodo į sąrašo pradžioje?
Mes šioje išorėje už linijos, Taigi, ką reiškia
pradžioje į sąrašą?
>> STUDENTAS: Vertybės i.
>> JASON Hirshhorn: Būtent teisus.
Vertybės i iš pradžios -
ar gaila, o ne pradžia.
Tai buvo paini.
Tai kur mes esame pradžioje nerūšiuotus dalis sąrašo.
Taigi vertybės aš.
Ir ką, kad lygūs?
>> STUDENTAS: mažiausias.
>> JASON Hirshhorn: Vertybės i lygu ką?
>> STUDENTAS: mažiausias.
>> JASON Hirshhorn: mažiausias.
Visiškai teisus.
Taigi, mes įdėti jį pradžioje sąrašo, o dabar mes turime įdėti
Sąrašo pradžioje, kai Mažiausiai buvo.
Taigi, kaip aš galiu rašyti, kai Mažiausiai buvo?
Vertybės ką?
>> STUDENTAS: 0.
>> JASON Hirshhorn: mažas skaičius yra ne 0?
>> STUDENTAS: Taip.
>> JASON Hirshhorn: Ką daryti, jei mažiausias skaičius buvo pabaigoje
šis nerūšiuotų sąrašas?
>> STUDENTAS: Atsiprašome, koks buvo klausimas?
>> JASON Hirshhorn: Kur yra mažiausias skaičius?
Mes paėmė mažiausias ir įdėti jį pradžioje, su šia linija čia.
>> STUDENTAS: Tai turėtų būti buvo laikomi kai kurie -
>> STUDENTAS: Vertybės j.
>> JASON Hirshhorn: Na, tai nebūtinai vertina j.
Ji nėra net egzistuoti šiuo metu.
>> STUDENTAS: Jūs turite deklaruoti kintamasis anksčiau ir
tada priskirti jį -
kai jums rasti mažiausią skaičių, Pavesti šio skaičiaus indeksas
kai kintamoji, ar kažkas panašaus.
>> JASON Hirshhorn: Taigi galima jums pasakyti, kad dar kartą?
>> STUDENTAS: Taigi, kur paskelbė int mažiausias, jūs taip pat turėtų paskelbti int
mažiausias rodiklis = i ar kažkas panašaus.
>> JASON Hirshhorn: Taigi, kur aš int mažiausias, aš turėtų saugoti ne tik stebėti
sutarties vertės, tačiau vieta.
int smallest_location = šiame atveju, mes tiesiog padaryti i.
Mums reikia žinoti, kur ji yra.
Mes pateko į kodo pabaigos, o mes supratau mes neturėjome supratimo, kur jis buvo.
Ir taip dar kartą, mes kartografavimo tai apie 00:59.
Vaikinai kodavimo tai savo noru tikriausiai gauti į tą pačią problemą.
Kaip gi man jį rasti?
Ir tada jūs suprasite, palauk, aš reikia sekti, kad.
>> Taigi, jei mažiausias yra didesnis kaip vertybės j.
Mes nustatyti mažiausias prilygsta vertybių j.
Ką dar reikia pakeisti?
Constantin, ką dar daryti mums reikia pakeisti?
>> STUDENTAS: Location.
>> JASON Hirshhorn: Būtent.
Taigi man, kad kodo eilutę.
>> STUDENTAS: smallest_location = j.
>> JASON Hirshhorn: Būtent.
Ir tada žemyn pabaigoje, jei norime įdėti į sąrašo pradžią, kur
mažiausias skaičius buvo kaip mes kreiptis į kur
Mažiausiai buvo?
Marcus?
>> STUDENTAS: mažiausias skaičius buvo įsikūręs mažiausią vietą.
>> JASON Hirshhorn: Taigi ne vertybes smallest_location.
Ir ką mes įdėti ten?
Iš pradžioje sąrašas, kas tai?
>> STUDENTAS: Na, mes tikrai nežinome, nebereikia, nes mes perrašė.
Taigi tai pavertė vietos Šių dviejų linijų?
Jei įjungsite šias dvi eilutes aplink.
>> JASON Hirshhorn: Gerai, kad mes ne nebėra, nes mes iš naujo liniją
prieš vertybes I mažiausių.
Taigi mes praradome, kad pradinės vertės.
Taigi sakei apsikeitimo šios dvi linijos.
Taigi dabar įdėti sąrašo pradžią kur mažiausias skaičius buvo.
Taigi smallest_location Lygu vertybes i.
Kad juda, kad šis pradžią nerūšiuotus dalis į sąrašą
mažiausia vietą.
Ir tada į vertybes i mes judame kad mažiausias skaičius.
>> Ar tai prasminga, kodėl mes turėjo padaryti, kad swap?
Būtume perrašyti tą vertę - dar vienas dalykas, jūs tikriausiai turės
išsiaiškino ir nustatė BVP.
Taigi mes pasirūpinta visi Pseudocode.
Ar dar ką nors mes reikia rašyti čia?
Ar kas nors galvoja apie ką nors?
>> STUDENTAS: Kaip žinote, kai baigsite?
>> JASON Hirshhorn: Kaip mes žinoti, kada baigsime?
Puikus klausimas.
Taigi, kaip mes žinome, kai baigsime.
>> STUDENTAS: Sukurti kintamąjį išlaikyti skaičius informacija, jei ten apsikeitimo, ar ne
ir eiti per perėja.
>> JASON Hirshhorn: Gerai.
Kad dirbtų burbulas rūšiuoti.
Tačiau atrankos rūšiuoti, jei mes ne padaryti apsikeitimo sandoriai, kurie gali būti tik
nes mažiausia vertė yra jame jo tinkamą vietą.
Mes gali turėti 1 2 sąrašas, 4, 3.
Antrą kartą per mes nebus jokių apsikeitimo sandorius.
Mes būsime nuo skaičiaus 2, bet mes vis dar reikia nesustoti.
Taigi mums reikia sekti kada baigsime, ar mes tiesiog norime eiti
tol, kol bus baigtas?
>> STUDENTAS: Mes galime tiesiog eiti kol jis nebaigtas.
>> JASON Hirshhorn: Mes galime tik eiti tol, kol bus baigtas.
Burbulas rūšiuoti, esate visiškai teisus, Jeffas ir Aleha, su jūsų sprendimas -
jis yra puikus sekti, kiek apsikeitimo jūs padarėte, nes burbulas
rūšiuoti, jei jūs iš tikrųjų gali padaryti jokių apsikeitimo sandorius, baigsite, ir jūs galbūt gali sumažinti savo
problema žemyn truputį.
Tačiau atrankos rūšiuoti, jūs tikrai turiu eiti per su tikslu
kiekvieną kartą, kai aplink sąrašą.
>> Taigi tai, kad.
Turime dvi minutes liko.
Padarykime viską.
Leiskite man tiesiog atvira Čia rasite ir padaryti Ar tikrai aš iš tiesų iškvietimas -
Aš ne skambinti burbulas rūšiuoti.
Tegul jį pakeisti atrankos rūšiuoti.
padaryti visiems. / rasti.
Raskime 42.
Šį kartą mes ketiname pereiti nerūšiuotas sąrašas, nes ji turėtų rūšiuoti
pirma, už ieškomo kodas - turėtų surūšiuoti Pirmasis naudojant mūsų rūšiavimo funkciją ir tada
ieškoti kažko.
Kumščius visiems.
>> Dieve mano.
Oho, mano širdis plaka.
Taigi, kad yra teisinga.
Iš tiesų, jei mes bėgo tai daugiau plačiai, kodas, kiek galiu
pasakyti, yra visiškai teisinga.
Yra keletas pasiūlymų Aš turiu jums.
Pavyzdžiui, 15 ir 16 atrodo tiek nereikalingas.
Atrodo, jūs nebūtinai reikia įrašyti ir tuos.
Jei turite mažiausią vietą, Jums galite lengvai rasti mažiausią vertę
tiesiog rašyti vertybes i.
>> Taigi, jei aš turėjo būti klasifikavimo kodą, kurį aš iš tiesų bus, norėčiau
tikriausiai kilimo tašką, jeigu įtraukti abu, nes jums
nereikia abu.
Jei turite vietą, galite labai lengvai gauti vertę.
Ir atrodo truputį keistai laikyti abu.
Gal net ne imtis tašką, tačiau tikrai pastebėjo, kad tai yra gal
ne stilistinė pasirinkimas jūs turite padaryti.
Žinoma, kodas dar veikia puikiai.
>> Taigi, deja, mes ne gauti burbulas rūšiuoti.
Atsiprašau apie tai.
Mes padarėme finišo atrankos rūšiuoti.
Ar kas nors turite kokių nors galutinius klausimus apie atrankos rūšiuoti?
>> Gerai, kol mes galvą, aš noriu, kad jūs atverti savo "Chrome" naršyklę.
Atsiprašome, tai buvo tik grubus kištukas vienos rūšies interneto naršyklėje.
Galite atidaryti bet kokį naršyklės tipą, bet tai tikriausiai bus Chrome.
Ir eiti į šį interneto svetainėje -
sayat.me/cs50.
Jei nesate įvedę savo kompiuteryje dabar, jūs aiškiai
ne tai daryti, Tomai.
>> Ir prašome tai padaryti arba į dešinę dabar arba kitą valandą -
duoti man atsiliepimą.
Tai tik du skyrius.
Mes turime daug daugiau kartu, todėl aš turėti kambarį pagerinti daug.
Aš tikiuosi, taip pat padarė kai kuriuos dalykus gerai.
Taigi jūs galite padaryti mane jaustis taip blogai, bet jei jūs taip pat norite, kad man veiduko
veido, būčiau dėkingas, kad taip pat.
Užpildykite kad in
>> Ir vieną minutę į kairę, kad buvo savaitę trys.
Aš stovėti lauke truputį jei turite kokių nors klausimų.
Aš pamatysiu jus vaikinai paskaita rytoj.