>> JASON HIRSCHHORN: Tervetuloa viikolle kolme, kaikille.
Meillä on kiireinen, mutta jännittävä kohta edessämme.
Joten ensin, koska olemme tehneet joitakin Edetään tietenkin, mutta meillä on vielä
on paljon oppimista vielä tekemättä, olen aikoo näyttää teille joitakin resursseja
että osoittautuu uskomattoman hyödyllinen, koska et vain lähestyä
ongelma asettaa, vaan myös sulattaa kaikki materiaali annamme sinulle kaverit
luentoja ja shortsit sekä kohta.
>> Sitten aiomme viettää ensimmäisen 20 25 minuuttia jaksossa menee yli
GDB, joka voi tai ei ehkä ole käytetään tässä vaiheessa, mutta se on
uskomattoman hyödyllinen työkalu, jonka avulla auttaa sinua debug-ohjelmia.
Paljon olet saattanut käyttää printf vuonna keskellä teidän ohjelma selvittää
mitä muuttuja vastasi.
GDB on jopa parempi kuin printf ja ei pilata koodia, koska olet
suorittaa sen suoritettavaa tiedostoa.
Niin me menemme yli 10 eniten hyötyä komennot mitä tarvitset GDB, ja olemme
menossa mennä harjoituksen yhteen niin ongelmatilanteissa asettaa kolme ja sen jälkeen voit
voi käyttää GDB auttaa debug ohjelmat.
Ja lopuksi, me aiomme mennä yli joitakin lajittelu ja etsivät algoritmit
että näit luento, ja olemme menee itse asiassa koodi, ei vain
pseudokoodina, mutta koodi binäärihaku, kupla lajitella ja valinta lajitella.
>> Joten ensin haluan mennä yli varojen.
Tämä on laaja luettelo, ja se on pienemmällä fontilla koska minulla oli paljon
mahdu tänne.
Mutta nämä eivät ole vain auttaa sinua, uudelleen siten, että ongelma sarjaa ja
sulattamaan tietoa olet oppinut, mutta ehdottomasti, tule tietokilpailu aikaa, nämä
olla uskomattoman hyödyllinen.
Joten ensin, luento toteaa.
Jos menet cs50.net/lectures ja selaa erityisiä viikko ja päivä,
näet, että on olemassa muistiinpanojasi luento, joka ei ole pelkästään
transkriptio, mutta muokattu versio mitä peittyi luento koodilla
katkelmia ja muita hyödyllisiä makupaloja.
Suosittelen menossa näinä.
Ja sitten samoin, siellä lähdekoodi saatavilla kunkin luennon.
Ja taas näitä dioja myös saatavilla verkossa osoitteessa cs50.net/sections
tänä iltana.
>> Joten toinen ovat shortsit viikoittain, että kansi aiheita, yleensä 5-15
minuutin pituisia.
Ja ne toivottavasti antaa sinulle suuri pohjamaali eri aiheista.
Kolmas -
ja tämä on aivan uusi tässä vuosi - on study.cs50.net.
Jos et ole tarkistanut sen, minä Suosittelen että teet niin.
Saat valita aihe.
Meillä on kymmeniä aiheita siellä.
Joten esimerkiksi nostat toiminnot.
Se antaa sinulle joitakin dioja ja toteaa toiminnoista.
Nuo ovat todella diat TF: iä kannustetaan käyttämään aikana meidän
esityksiä jaksossa.
Mukana on myös vinkkejä ja niksejä käsitellä toiminnoilla, ja siellä on
Käytännössä ongelmia, jotka auttavat käytät toimintoja.
Saat myös linkkejä lyhyttä toimintoja ja ajat, että toiminnot
ovat nousseet esille luento.
Joten study.cs50.net, upouusi tämä vuosi, loistava voimavara.
>> Seuraavaksi minulla on mies, joka on manuaalinen komento, voit ajaa
komentoriviltä.
Joten jos sinulla on kysyttävää komento, esimerkiksi rand, joka me
kohtasi viime viikolla osiosta ja olet todennäköisesti kohdannut
ongelman asettaa kun menee läpi luoda koodin, mutta jos kirjoitat mies
Rand, saat sivun, joka kertoo kaiken randia.
Se antaa sinulle, mitä se tekee, parametrit se vie, sekä palata
tyyppi ja lyhyt kuvaus mainittu toiminto.
>> Joten tutustu randia.
Se voi olla hieman monisanainen ja sekava, joten joskus huomaan, että
yksinkertaisesti Googling mitä haluan tietää on paras tapa löytää vastauksen.
Joten käytännössä Google.
Saada hyvä Google.
Se tulee paras ystäväsi.
>> Sekä Google, jos et löydä sitä Google, cs50.net/discuss, se on
keskustelufoorumi.
Mahdollisuudet ovat, jos sinulla on kysymys, yksi teidän 700 + ikäisensä on myös, että
kysymys ja ehkä kysynyt se jo keskustella
foorumeilla ja on se vastasi.
Joten jos sinulla on yleinen kysymys tai sinulla on kysymys, että luulet
ehkä muut ihmiset ovat saattaneet törmätä, tutustu cs50.net/discuss.
>> Lopuksi, kaksi viimeistä, jos haluat puhua todellinen ihminen, toimisto
tuntia maanantaista perjantaihin.
Mukana on myös online-virka Laajennuksen opiskelijoille.
Ja viimeisenä mutta ei vähäisimpänä, Minulle huutomerkki.
Teillä kaikilla on omat yhteystiedot.
Jos tarvitset jotain, ota koskaan epäröi ottaa minuun yhteyttä.
Aina voit vapaasti tehdä niin.
Hyvin harvat olet lisännyt minut Gchat, niin, että on ollut pettymys,
mutta toivottavasti se tulee vaihtaa Tässä ja seuraavassa jaksossa.
Kaikki kysymykset toistaiseksi resursseja?
Suuri.
>> Vielä yksi liitin palautetta, sayat.me/cs50.
Voit antaa minulle palautetta anonyymisti miten teen.
Se oli todella hyödyllinen viime viikolla.
Sain pari kommentteja te heti kohta, plus alkaen
muut opiskelijat, jotka katselivat sitä viikolla, ja se
oli uskomattoman hyödyllinen.
Aion yrittää rajoittaa minun käyttöä sana "makea", mutta minä näytän minun
innostusta ja jännitystä muilla tavoin.
Mutta oli muita ylimääräisiä aineellisen palautteita,
sekä plussia ja delta.
Joten, annan teille palautetta teidän ongelma sarjaa.
Voit vapaasti antaa minulle palautetta minun opetusta.
Olen täällä teitä.
>> Suuri.
Se on kaikki, mitä minulla varten ensimmäisen osan kanssa.
Onko kellään mitään kysymystä toistaiseksi?
Ja minulla on merkinnän ohjauskeskuksesta.
Laajennus opiskelijat ovat messaged minut sanoen he eivät saa mitään ääntä,
mutta se on pois minun valta vahvistaa.
Joten toivottavasti, että saa ratkaistaan ​​pian.
Jos katselet verkossa, hi, mutta et kuule minua.
>> Ensin aiomme käydä läpi GDB.
GDB, kuten olen vihjannut aiemmin, on testausvälineen
paljon parempi kuin printf.
Joten päästä alkuun GDB, kaverit, jos haluat avata laitteesi
ja ottaa tiedoston, että olen lähetetään sinulle aiemmin - tämä tiedosto on myös
saatavilla verkossa vähän -
ja ajaa GDB. / tiedoston nimi.
Ensimmäinen, tietenkin, sinun täytyy koota tiedostoa, koska GDB toimii vain
ohjelmatiedostoja.
>> Mutta jos joskus haluat aloittaa GDB, ensimmäinen asia, et,
juokset GDB. / Caesar.
Niin, että ohjelman nimi olemme aio mennä sen kanssa juuri nyt.
Joten aion kirjoittaa tehdä Caesar, joka antaa minulle suoritettava tiedosto
täällä merkitty vihreällä.
Ja sitten aion ajaa GDB. / Cesar.
>> Ja siellä mennään.
Näet meillä on teksti kertoo minulle noin version GDB, antaa minulle
Joissakin takuutiedot, ja sitten me on BKT kuiskata, joka näyttää tavallaan
ja kuten meidän komentoriville, mutta näette se on auki
kantatuote, GDB, lähellä paren.
Ennen kuin jatkamme ja debug tätä kuvaa että olen lähettänyt teille kaikille, katsotaanpa
joitakin hyödyllisiä komentoja joten meillä on mielessä mitä aiomme kattaa.
>> Nämä komennot on lueteltu täällä järjestystä, jossa en yleensä käytä niitä.
Joten aloitan ohjelman käynnissä GBD. / Ohjelman nimi,
tässä tapauksessa, Caesar.
Ja sitten ensimmäinen asia, en 99,9% ajasta on tyypin break tarkoittaa.
Joka asettaa taitekohta kohdallaan.
Pohjimmiltaan, mitä teet siellä on ohjelma tulee pysähtyä
Tärkein joten voit alkaa tutkia sitä linjaa riviltä, ​​sen sijaan käynnissä koko
läpi.
Voit rikkoa eri kohdissa koodia, mutta tärkein on yleensä
hyvä paikka aloittaa.
>> Seuraava käsky Juoksen on ajaa.
Joka alkaa ohjelma käynnissä, ja jos haluat syöttää komentoriville
argumentteja, voit suorittaa sen komennon.
Juokse argumentteja.
Joten koska olemme menossa yli versio C, joka on ohjelman te
kirjoitti PSET kaksi -
tämä tietenkin on joitakin bugeja siinä, että toivottavasti löydämme -
aiomme ajaa ajaa joitain komentoja argumentteja koska Caesar,
kuten te tiedätte per ongelma asettaa spec, vie jonkin
komentoriviargumentteja.
>> Seuraavien parin komentoja, seuraava yksi on todella kutsutaan seuraavaksi.
Tuo vie rivi riviltä joko ohjelman.
Joten lyömällä n paina Enter vie seuraavalle riville, täytäntöönpanosta
edellisen rivin.
Vaihe ei vain vie seuraavalle riville, mutta se
vie sinut sisälle toimintoja.
Joten jos olet kirjoittanut toiminto koodi tai jos haluat tutustua
i, esimerkiksi voit lyödä s, ja sijaan menee seuraavalle riville
tiedosto, että olet menossa läpi juuri nyt sinun todella astua
tämä toiminto ja nähdä sen koodin.
>> Lista näyttää, erittäin käyttäjäystävällinen muodossa, 10 tai niin ympärille viivat
jolla parhaillaan olet koodissa joten voit itse nähdä tiedosto
eikä tarvitse vaihtaa takaisin ja esiin eri näkemyksiä.
Tulosta on kuin printf, kuten sen nimikin kertoo.
Joka näyttää mitä muuttuja vastaa.
>> Info paikalliset on todella hyödyllinen.
Tämä on erityinen versio tulosta.
Info paikalliset näyttää kaikki paikalliset muuttujia, tulostaa ne kaikki pois sinulle
, jotka ovat tällä hetkellä saatavilla.
Joten en yleensä, eikä tarvitse tulostaa neljä muuttujaa, että olen
utelias jos olen silmukka varten Esimerkiksi minä vain kirjoitan info paikalliset,
ja se tulee näyttämään minulle, mitä minun counter i vastaa sekä array että olen
työskentelevät tasavertaisina.
>> Lopuksi, jatka.
Kirjoitustauko pysäyttää sinut klo taitekohta.
Voit käydä läpi rivi mukaisesti seuraava ja askel.
Jatka kulkee ohjelman seuraavan rikkoa piste tai loppuun saakka, jos
ei ole enää taitepisteissä.
Poista poistaa tauko pistettä, jos päätti tauko tärkein oli
sopimatonta, haluatko asettaa sen jonnekin muualle.
Ja lopuksi q, lopettaa, joutuu pois GDB.
>> Joten tämä ohjelma,. / Caesar, aiomme käydä läpi juuri nyt, ja me
aiot käyttää GDB löytää vikoja tässä ohjelmassa.
Juoksin tämän ohjelman aikaisemmin Tarkista 50, ja sain yhden paheksua.
Kaikki se oli olemassa, se kootaan, se kulunut paljon testejä, mutta
Jostain syystä se ei läpäissyt viides testi, kääntämällä BARFOO, kaikki lippikset, osaksi
E-D-U-I-R-R, isoilla kirjaimilla, käyttämällä kolmea keskeisenä.
Sain melko lähellä.
Sain pois yhden kirjaimen.
Joten on joitakin pieni virhe täällä.
Olen käynyt läpi minun koodi.
En voinut tajuta se.
Toivottavasti te auttaa minua selvittää, mitä tämä bugi on.
>> Niin, että virhe olemme etsivät.
Katsotaanpa siirtyä GDB.
Jälleen olen ajaa GDB. / Caesar, joten nyt olemme GDB.
Ja mikä on ensimmäinen asia, joka minun pitäisi tehdä?
Olen juuri tullut GDB.
Joku antaa minulle hyvän komento syöttää.
>> Opiskelija: Tauko tärkein.
>> JASON HIRSCHHORN: Tauko tärkein.
Fantastic.
Katsotaanpa kirjoittamiseksi sisään
Te voi katsella täällä tai seurata pitkin tietokoneisiin.
Rikkoa tärkein, ja näet taitekohta oli asetettu -
se antaa minulle outoja muisti osoite, ja se myös antaa minulle rivinumero.
Jos minun pitäisi muistella tämän tiedoston, Haluaisin ymmärtää, että tärkeimmät
tapahtui linja 21.
Mitä minun pitäisi ajaa seuraavaksi?
Onko minun ohjelma käynnissä?
Ei.
Joten mitä minun pitäisi ajaa seuraavaksi?
>> Opiskelija: Run.
>> JASON HIRSCHHORN: Run.
Pitäisikö minun vain ajaa ajaa, vai pitäisikö Lisään joitakin muita asioita?
>> Opiskelija: Juokse väitettä.
>> JASON HIRSCHHORN: Juokse komennon argumentteja.
Ja koska olen virheenkorjaus hyvin erityinen tapauksessa minun pitäisi tulla, että
komentorivillä.
Niin minä loppuvat kolme, joka on jälleen lähtö sain Tarkista 50.
Alkaen ohjelma.
Käymme läpi pari riviä.
Sinun nyt nähdä, että olemme verkossa 21.
Mistä tiedän, että olemme linja 21?
Koska jos katsotte vasemmalle minun pääteikkunaa siellä
se sanoo linja 21.
Ja se antaa minulle, itse asiassa, koodi, joka on linjalla 21.
Joten en misspoke aiemmin.
Tärkein ei oikeastaan ​​rivillä 21.
Tärkein on pari riviä edellä 21.
Mutta linja 21, joka on minne olemme rikkomatta.
Tämä rivi koodia on ei ole vielä toteutettu.
Se on tärkeää.
Line näet ei ole toteutettu vielä.
Se on seuraava rivi koodia olet aikeissa toteuttaa.
>> Joten seuraavalle riville, sillä te olette varmasti tuttuja, on tämä
ehto tarkistaa, onko minulla tuli komentorivillä.
Ja i, mikä on toiseksi osa sitä tekee?
Mikä on i?
>> Opiskelija: muuttaminen sen kokonaisluku.
>> JASON HIRSCHHORN: Anteeksi?
>> Opiskelija: Se muuttuu argumentti kokonaisluku.
>> JASON HIRSCHHORN: So i muuttuu arg V1 alkaen merkkijono kokonaisluku.
Ja sitten mitä se tarkistaa?
>> Opiskelija: Jos on toinen Komentoriviargumentti, syrjään
alkaen ohjelman ajamista.
>> JASON HIRSCHHORN: Ja mitä toinen puoli tämän
Boolen lauseke tarkistaa?
Tämä osa tänne, i?
>> Opiskelija: Jos se on negatiivinen.
>> JASON HIRSCHHORN: Making varma mitä?
>> Opiskelija: Making varma, että se on itse asiassa positiivinen.
>> JASON HIRSCHHORN: Aivan.
Tämä on tarkistaa, jos se on negatiivinen, ja jos se on negatiivinen, I
on tunne seuraavalle riville mahti saa minut huutaa käyttäjä.
Joten osuma loppuun suorittamaan tätä linjaa.
Emme näe, että linja, että te ehkä odottivat näkevänsä huutaa
käyttäjän ja palaavat sitten, koska tämä linja ei suorita.
Olen tullut 3.
Joten en itse asiassa syöttää kaksi komento argumentteja, ja 3 on
suurempi kuin nolla.
Joten näimme, että linja, toteutimme, mutta emme astu
sisällä jos ehto.
>> Joten nyt seuraavaksi, näen Asetan int avain vastaa i arg v1.
Tämä on siis minun luo muuttujan näppäintä.
Jos siis tulostaa avaimen juuri nyt, koska jonka avulla voit nähdä
arvo sisällä muuttuja, avain vastaa 47.
Outoa, mutta tietenkin, että koska en ole
toteuttaisi linja vielä.
Joten nyt jos osuin n, suorita, että linja, ja tehdä tulosta avain, avain on sama 3,
joka on mitä odotamme sen equal.
>> Joten jälleen, vuonna GDB, rivin Nähdään ole toteutettu vielä.
Sinun täytyy lyödä n tai s tai numero muita komentoja tosiasiallisesti
suorittaa että linja.
Tulosta näppäintä.
Key: n 3.
Toistaiseksi niin hyvä.
Merkkijono on pelkkää tekstiä.
Katsotaanpa suorittaa että linja.
Saan merkkijonon käyttäjä.
>> Katsotaanpa minun Tarkista 50, I Kirjoita BARFOO kaikki korkit, joten
sitähän minä kirjoita.
Jos minä nyt tulostaa tekstimuodossa.
Näet se vastaa merkkijono.
Se antaa minulle joitakin muita outoja heksadesimaali numero, mutta se tekee
Itse asiassa sanoa, että merkkijono on BARFOO.
Jos halusin nähdä, mitä näppäintä vastasi kello Tässä vaiheessa, miten voisin tarkistaa avain?
>> Opiskelija: Print-näppäintä.
>> JASON HIRSCHHORN: tulostus-näppäin, tarkalleen.
Ja oikeastaan ​​siellä on oikotie.
Jos kyllästyt kirjoittamisen tulosta, voit vain kirjoittaa s..
Joten p-näppäintä tekee täsmälleen sama asia.
Ja vielä, näen se vastaa 3.
>> Jos halusin selvittää, mitä molemmat keskeisiä ja BARFOO vastasi samalla
mutta olin väsynyt kirjoittamalla kunkin yksi yksin, minä
voisi komennoilla info paikallisia.
Joka antaa minulle avain tasavertaisten 3.
Pelkkä teksti on yhtä BARFOO.
Se antaa myös minulle nämä kaksi outoja asioita yläosassa, tämän muuttujan i ja
Tämän muuttujan n.
>> Nämä ovat todella olemassa olevia minun pääohjelma.
Emme ole kohdanneet niitä vielä, mutta esikatselu, nämä
olemassa minun silmukka.
Joten nyt, nämä olla outoja numerot, koska ne eivät ole olleet
alustettu vielä, mutta ne ovat edelleen olemassa muistiin, joten he vain asettaa
Joidenkin roskat arvoa.
Mutta emme näe avain tavallinen tekstiksi oikeassa.
>> Joten aion toteuttaa tätä linjaa, linja 34, silmukka.
Aiomme hypätä silmukka lyömällä n.
Ja me olemme sisällä silmukka.
Olemme meidän ensimmäinen tarkastus.
Ja vielä, nämä pitäisi tavallaan näyttää tutulta, koska tämä oli
Caesar-ohjelma, joka oli kirjoitettu, mutta uudelleen, on jonkinlainen vika.
>> Ja nyt jos en tee info paikalliset, koska olen sisällä että silmukka, näet
että i on nolla, koska odotamme.
Sitähän me asettaa sen ja alustaa se on silmukka.
n on 6.
Tämä on myös järkevää, koska asetimme se strlen tekstimuodossa.
Joten haluan tehdä info paikalliset tai tulostaa muuttujaan usein varmistaa, että
kaikki on aina mitä Odotan sen equal.
Tässä tapauksessa kaikki on mitä odotan sen equal.
>> Joten aloitetaan liikkuvat läpi Tämän silmukan.
Line Olen on line 36, jos tavallinen teksti i suurempi kuin ja tavallinen
teksti i on pienempi tai yhtä suuri kuin z.
Tiedän ongelma ei ole minun ensimmäinen kirjeellä, että se on mukana toinen kirjain.
Jos me katsomme taaksepäin Tarkista 50, B menee E hieno.
Otan ja jättää sen , ei muuta sitä D. So
jotain vikaa toinen kirjain.
Joten aion siirtyä siellä toisessa.
>> Mutta jos en halua tarkistaa, mitä tavallinen teksti I vastasi tässä nimenomaisessa
tapauksessa mielestäni sen pitäisi olla mitä?
Mitä pitäisi tekstimuodossa rinnallesi tässä ensimmäisellä kierroksella läpi silmukka?
>> Opiskelija: Zero?
>> JASON HIRSCHHORN: Pelkkä teksti I?
Niin se olisi pääoman B. I, tietenkin, nolla, mutta tekstimuodossa
kiinnike nolla suljettu kiinnike vastaa B koska jouset, kuten näimme viime viikolla,
ovat array, joten olemme pääsemässä Ensimmäinen merkki tästä.
Joten jälleen, jos olen tulostaa tekstimuodossa Minä en itse asiassa saada merkin
B. Ja se on siisti, eikö?
Minulla ei oikeastaan ​​ole pelkkää tekstiä I. Se ei ole yksi muuttujista otan
tai alustettu, mutta voit tulostaa ulos koko joukko asioita
jos haluat.
>> Mutta katsotaanpa liikkua.
Jos tavallinen teksti I on suurempi kuin ja plain text I on pienempi tai yhtä suuri kuin
Z, joka selvästi on totta, koska meillä on pääoma B. aion juosta
joitain komentoja sitä.
Näimme, että matematiikka viime viikolla, niin me itsestään selvänä, että se toimii
oikeus mukaan Check 50.
>> Nämä aaltosulkeita, ensimmäinen osoitti, että olin jännittävää, jos
kunnossa, toinen näytti että olen poistuminen silmukka.
Ja nyt kun lyön Seuraavaksi näemme olemme takaisin silmukka uudelleen.
Menemme läpi silmukka uudelleen.
Katsotaanpa todella astua toisen iterointia silmukan ja tyyppi
info paikallisia.
>> Joten olemme toisen iteroinnin meidän silmukan.
I on 1, jota odotamme.
N on yhtä kuin 6, jota odotamme.
Key vastaa 3, jota odotamme.
Ja pelkkää tekstiä, näet, vastaa EARFOO nyt ei BARFOO enää, koska
edellisessä iteraation B oli muuttui pääoman E. Joten aiomme
kohdata ongelma, joten tämä on, jos aiomme
sukeltaa virheenkorjaus.
Mutta ei kukaan ole kysyttävää siitä, mitä olemme tehneet tähän mennessä?
Fantastic.
>> Joten olemme aikeissa toteuttaa tätä, jos ehto, tavallinen teksti kiinnike suljin
kiinnike yli ja teksti I pienempi kuin tai yhtä suuri kuin Z. Mutta ennen
Menen tuohon, koska siellä Tiedän virhe on, haluan huomauttaa
ulos tekstimuodossa I. So laitetaan tulostaa.
Se tekee yhtä suuri hahmo, jotta tuntuu Toistaiseksi kaikki on hyvin ja hyvä.
>> Odotan tätä linjaa kohti minun logiikkaa, tämä linja olisi totta.
Se on iso kirjain.
Mutta jos osuin n, ymmärrämme, että tämä line, itse asiassa, ei suorita.
Hyppäsin alas if.
Miksi näin kävi?
>> Opiskelija: Koska sinulla on kunnossa pelkkää tekstiä on suurempi
kuin, ole sama tai suurempi kuin.
>> JASON HIRSCHHORN: Joten minulla oli pelkkää tekstiä I on suurempi kuin A, joka ei ole suurempi
tai yhtä suuri kuin.
Niin selvästi, pääoma ei laukaista jos ehto, ja teimme
astua sitä, ja teimme ei tehdä tarvittavat muutos.
Joten se siitä, itse asiassa.
En tajunnut minun vika.
Voisin mennä takaisin minun lähdetiedoston muuttaa sitä, ja päivittää sitä ja
tarkista Tarkista 50 uudelleen.
>> Mutta saa nähdä, vain pedagogiikan n vuoksi, jos en jatka.
If ei suorita myöskään, mutta mikä sen sijaan on sama on komento
, joka ei muutu.
Joten se ei ole muuttunut lainkaan, ja jos minä tulostaa pelkkää tekstiä täällä, näemme menossa
kautta, että silmukka ei, itse asiassa, muuttaa, että toinen merkki ollenkaan.
Se on edelleen pääoman A.
>> Joten jälleen olemme debugged meidän virhe.
Huomasimme, että oli jotain logiikkaa puuttuu.
Ja me debugged etuajassa ennen tosiasiassa ajetaan että linja,
mutta sinun olisi huomannut, jos olisimme vain osuma Seuraava ja hyppää että if,
se tarkoittaa, että jos ehto ei ollut totta.
Emme itse asiassa saada tulos odotimme.
Joten meidän on voinut olla, oli meillä ei ollut niin viisas, katsomaan
että jos ehto, ja tarkistaa, onko itse asiassa tilamme olisi arvioitava,
totta nykyisessä tilanteessa.
>> Siinä kaikki virheenkorjaus tätä ohjelmaa.
Onko kellään mitään kysyttävää?
Mitä komento voi osuin lopettaa GDB?
Q. Ja sitten minä kysytään, lopeta joka tapauksessa?
Kyllä tai ei.
Lyön kyllä, ja minä on lopettanut GDB.
>> Joten se oli nopea pohjamaali GDB.
Oikeastaan, todellinen skenaario, Tein tämän toimistossa tuntia.
Olen GDBed juuri tämän ohjelman virka opiskelijan kanssa.
Ja jos palaamme komentoja näimme ennen, käytimme tauko tärkein, ensimmäinen
asia teimme.
Käytimme ajaa komentoriviargumentteja, Toinen asia teimme.
Käytimme vieressä paljon liikkua meidät läpi linjojen.
Ja vielä, lyhyt versio Seuraavan on n.
Se on suluissa harmaalla liukumäki.
>> Emme käyttäneet vaiheessa, mutta emme välttämättä tarvitse tässä tapauksessa.
Mutta voisimme käyttää sitä hieman myöhemmin tänään jos me virheenkorjaus varten
Esimerkiksi binäärihaku kun binary haku kutsutaan erilliseen
toiminto mutta on jokin virhe sen kanssa.
Aiomme halua astua puhelun binäärihaku ja
todella debug sitä.
Listaa emme käyttäneet joko siksi meillä oli hyvä tunne meidän koodi, mutta jos
ei haluat saada tunteen siitä, mitä code oli noin, voisin vain käyttää luetteloa.
>> Tulosta käytimme, info paikalliset käytimme.
Jatka emme tarvitse käyttää tässä tapauksessa ei ollut meidän täytyy käyttää
poistaa, mutta teimme käytön lopettaa.
Nämäkin 10 komentoja, käytännössä niitä.
Jos et ymmärrä näitä 10 komentoja, sinun tulisi asettaa debug tahansa
ongelma GDB.
>> Joten olemme lähdössä, jälleen, ydin jakso tänään, menee yli
Näiden lajittelu ja etsiminen algoritmeja.
Ennen kuin teemme niin, taas kysyttävää, kommentteja, huolenaiheita GDB?
Niin on jokainen aio käyttää GDB sijaan printf?
Joten kaikille, sillä ikuisesti tähden, jokainen nyökkää päätään oikealle
nyt, joten minä näen teidät toimistossa tuntia ja kaikki TF: iä näkevät sinut ja
he sanovat, näytä minulle, kuinka käyttää GDB, ja voit
näyttää heille, eikö?
Tavallaan?
Ehkä toivottavasti.
Cool.
>> Joten aiomme siirtyä lajittelu ja etsiminen.
Näet Minulla on lista jo lajiteltu meille, mutta joka ei aio
olevan näin aina.
Joten ongelma asettaa eritelmän ongelma asettaa kolme, sinulla on shortsit
että voit katsella, ja se todella pyytää sinua katsomaan näitä shortsit.
Myös luento viime viikolla, menimme paljon näitä algoritmeja, joten olen
aio viettää aikaa luokassa menossa yli nämä algoritmit uudelleen tai piirustus
kuvia, miten nämä algoritmit.
Tämäkin tieto voit uudelleen katsella luento, tai että tiedot
vangitaan erinomaisesti päälle shortsit Nämä haut, kaikki
jotka ovat saatavilla cs50.net.
>> Joten sen sijaan, mitä aiomme vain kirjoittaa näitä ohjelmia.
Meillä on tunne, mentaalinen malli, miten ne toimivat, ja niin mitä aiomme
vain koodata niitä todellisia.
Aiomme tehdä tästä mentaalinen malli, että kuva, jos tulee, tulee
Varsinainen koodi.
Ja jos olisit hieman sekava tai utuinen on mielikuvaan, olen täysin
ymmärtää.
>> Emme aio tehdä sitä hypätä koodin heti.
Joten vaikka tämä kehote tässä slide kysyy voit koodata binäärihaku, ja
Oikeastaan ​​iteratiivinen versio binäärihaku, ensimmäinen asia,
todella haluavat sinun tekevän on kirjoittaa joitakin pseudokoodina.
Joten sinulla on tämä mentaalinen malli miten binäärihaku toimii.
Ota paperiarkki, jos sinulla on yksi helposti saatavilla, tai avata
tekstieditori, ja haluaisin kaikki voivat kirjoittaa.
Kestää neljä minuuttia kirjoittaa pseudokoodi binäärihaku.
>> Jälleen ajatella, että mentaalinen malli.
Tulen noin, jos sinulla on kysyttävää ja voimme tehdä kuvan ulos.
Mutta ensin, ennen kuin aloitamme ohjelmointi, Haluaisin kirjoittaa
pseudokoodi binäärihaku niin kun me sukeltaa, meillä on joitakin suuntaan
missä meidän pitäisi suunnata.
>> Opiskelija: Voimmeko olettaa joukko arvot saamme jo järjestetty?
>> JASON HIRSCHHORN: Joten binäärihaku töihin - erinomainen kysymys - olet
on ryhdyttävä lajitellun arvomatriisin.
Joten olettaa se toimii.
Menemme takaisin tämän dian.
Näet violetti toiminto ilmoitus on bool binary_search int
arvo, int arvot, int n.
Tämä pitäisi näyttää tutulta, jos olet jo lähestynyt tai saanut oman
kädet likainen ongelma asetettu.
>> Mutta se on teidän toiminnon ilmoituksen.
Jälleen, ei pitäisi tarvita pelätä että paljon tällä hetkellä.
Mitä todella haluan sinun tekevän on otettava neljä minuuttia pseudokoodina binary
etsiä, ja sitten menemme yli, että ryhmänä.
Ja minä tulen ympärille.
Jos sinulla on kysyttävää, ota vapaasti nostamaan käden.
>> Miksi et ota kaksi minuuttia loppuun asti pseudokoodina?
Tiedän, että tämä saattaa tuntua naurettavalta, että vietämme niin paljon aikaa
jotain, joka ei ole edes oikeastaan C, mutta erityisesti tähän lisää
haastava algoritmit ja ongelma asetetaan, että meidän täytyy selvittää,
alkaen pseudokoodilla ei huolta noin syntaksi, vain murehtia
logiikka, on uskomattoman hyödyllinen.
Ja näin, et ole ratkaista kahden uskomattoman vaikeaa ongelmat kerralla.
Olet vain keskittymällä logiikkaa, ja niin voit siirtyä syntaksin.
>> OK.
Aloitetaan läpi pseudokoodina.
Olen kirjoittanut tänne, binary haku pseudokoodina.
Me kirjoittaa tämä hallintoneuvostolle yhdessä.
Tai minä kirjoitan sen ja annat minulle ohjeita tarvitsen.
Joten voi joku antaa minulle ensimmäinen rivi pseudokoodina sinua
kirjoitti binäärihaku?
Kyllä, Annie?
>> Opiskelija: Vaikka pituus luettelo on suurempi kuin nolla.
>> JASON HIRSCHHORN: Vaikka pituus List suurempi kuin nolla.
Ja vielä, näemme C-näköinen syntaktisia asioita täällä.
Mutta suurin osa tästä on Englanti.
Oliko kellään mitään linjaa he laittoivat ennen tätä heidän pseudo-koodi?
>> Opiskelija: Hanki array on lajiteltu numeroita.
>> JASON HIRSCHHORN: Kirjoitit "saada joukko Lajiteltujen numeroita. "Per
toiminto ilmoituksen, me voidaan ohimennen joukko lajiteltu numeroita.
>> Opiskelija: [kuultavissa].
>> JASON HIRSCHHORN: So meillä on, että.
Mutta kyllä, jos meillä ei ole, että me olisi lajitella meidän valikoimaan
numeroita, koska binäärihaku toimii vain lajiteltu taulukot.
Joten vaikka pituus lista on nolla, olen aikoo laittaa joissakin aaltosulkeita
jotta se näyttää hieman enemmän kuin C. Mutta kun näyttää kuvautuvat
while-silmukka, joten sisälle taas loop mitä meidän
tehdä binäärihaku?
>> Joku muu, joka ei ole antanut minulle vastata vielä, mutta joka kirjoitti tämän?
>> Opiskelija: Mene listan keskeltä.
>> JASON HIRSCHHORN: Tom.
Mene listan keskeltä.
Ja jatkokysymys, mitä teemme, kun me olemme
listan keskeltä?
>> Opiskelija: Älä tarkista onko se numero etsit.
>> JASON HIRSCHHORN: Erinomainen.
Mene keskelle ja tarkista jos meidän arvo on siellä -
fantastinen.
Oliko kellään mitään muuta joka oli erilainen kuin tämä?
Se on aivan oikein.
>> Ensimmäinen asia teemme binäärihaku on mennä keskelle luettelosta ja
tarkista, onko meidän arvo on siellä.
Joten oletan, jos meidän arvo on siellä, mitä me teemme?
>> Opiskelija: Palaamme nolla [kuultavissa].
>> JASON HIRSCHHORN: Joo, jos meidän arvo on olemassa, löysimme sen.
Joten voimme kertoa jonkin verran, mutta tämä toiminto on määritelty, kerromme käyttäjä
löysimme sen.
Jos se ei ole siellä, vaikka, se on jos tämä saa mutkikkaampi.
Joten jos se ei ole siellä, joku muu, joka työskenteli binäärihaku tai
on idea nyt, mitä me teemme?
>> Opiskelija: Kysymys.
>> JASON HIRSCHHORN: Niin?
>> Opiskelija: Onko array jo järjestetty?
>> JASON HIRSCHHORN: Kyllä, oletamme array on jo järjestetty.
>> Opiskelija: Joten sitten sinun täytyy tarkistaa, jos arvo, jonka näet on suurempi kuin
arvo, jonka haluat, voit siirtää keskelle toinen puoli.
>> JASON HIRSCHHORN: Eli jos keskellä lista on suurempi kuin mitä olemme
etsit, niin me teemme mitä?
Siirrymme missä?
>> Opiskelija: Haluat siirtyä puoliskon kanssa
alemmat kuin.
>> JASON HIRSCHHORN: niin me soittaa että vasemmalle.
Joten jos keskimmäinen on suurempi, voimme etsiä vasen puoli luettelosta.
Ja sitten etsiä, mitä minä tarkoitan haku?
>> Opiskelija: [kuultavissa].
>> JASON HIRSCHHORN: Menemme keskelle.
Me itse asiassa toista tämä asia.
Palaamme kautta kun silmukka.
Annan sinulle viimeinen -
muuta, jos keskimmäinen on vähemmän kuin mitä teemme, mitä me teemme täällä?
>> Opiskelija: Mene oikealle.
>> JASON HIRSCHHORN: Etsi oikea.
Tämä näyttää hyvältä, mutta ei kukaan ole mitään, että meillä saattaa puuttua tai
mitään muuta, että laitat teidän pseudo-koodi?
Joten tämä on mitä meillä on tähän mennessä.
Kun taas listan pituus on suurempi kuin nolla, aiomme mennä
keskelle luettelosta ja tarkistaa, jos meidän arvo on siellä.
>> Jos keskimmäinen on suurempi, aiomme etsi vasemmalle, muuta, jos keskellä on
vähemmän, aiomme etsiä oikea.
Joten olemme kaikki oli jonkin verran perehtyneisyyttä termejä käytämme tietotekniikassa
ja työkaluja meillä.
Mutta voit jo huomata olimme puhuu Englanti, mutta löysimme
paljon asioita, jotka näyttivät kartta kiinni työkaluja meillä on koodaus työkalusarja.
Joten suoralta kädeltä, emme ole menossa todella koodia vielä.
>> Mitä näemme täällä Englanti, että kartat edelleen asioita, joita voimme kirjoittaa C?
>> Opiskelija: Vaikka.
>> JASON HIRSCHHORN: Vaikka.
Joten tämä taas täällä karttoja mitä?
>> Opiskelija: kun silmukka.
>> JASON HIRSCHHORN: kun silmukka?
Tai luultavasti yleisemmin silmukka.
Haluamme tehdä jotain uudestaan ​​ja uudestaan.
Menemme siis koodata silmukka.
Ja tiedämme jo, koska olemme tehneet tämä pari kertaa, ja me
on runsaasti esimerkkejä siellä, miten itse kirjoittaa
tämä indeksi silmukka.
Niin että pitäisi olla aika helppoa.
Meidän pitäisi pystyä saamaan, että alkoi melko nopeasti.
>> Mitä muuta me näemme täällä?
Mitä muita rakenteita syntaxes asiat että olemme tuttuja C, me
jo tunne Based pois sanoja käytimme?
Kyllä, Anna?
[Äänetön]
vain leikkiä.
Anna, mennä eteenpäin.
>> Opiskelija: Jos ja muuta.
>> JASON HIRSCHHORN: Jos ja muu - täällä.
Niin mitä nuo näyttää?
>> Opiskelija: jos muu selvitys.
>> JASON HIRSCHHORN: Joo, olosuhteet, eikö?
Joten meidän täytyy luultavasti kirjoittaa joitakin ehtoja.
Ja vielä, vaikka ehkä sekava Ensimmäinen, meillä on yleensä mielessä nyt
miten kirjoittaa edellytyksiä ja syntaksi olosuhteissa.
Ja jos emme, me vain etsiä syntaksi olosuhteissa, leikkaa ja liimaa
että, koska tiedämme tarvitsevat kunnossa täällä.
Muita asioita, näemme, että kartta päälle asioita ehkä tehdä C?
Joo, Aleha?
>> Opiskelija: Tämä voi olla itsestään selvää, vain tarkistaa, jos
arvo on jotain.
>> JASON HIRSCHHORN: Miten siis tarkistaa ja - niin mene listan keskeltä
ja katso jos meidän arvo on siellä?
Miten me sen teemme C?
Mikä syntaksin?
>> Opiskelija: Yhtä, tasavertaisina.
>> JASON HIRSCHHORN: Yhtä, tasavertaisina.
Joten tämä tarkastus on todennäköisesti menossa olla tasavertaisia, vastaa.
Joten me tiedämme, me tarvitsemme jonnekin.
Ja oikeastaan ​​vain kirjallisesti sitä, näemme nämä muut asiat.
Aiomme täytyy tehdä joitakin vertailuoperaattoreita siellä -
fantastinen.
Joten se todella näyttää, ja heitä suuri, emme ole kirjoitettu
sana C-koodia vielä.
Mutta saimme mielikuvaan alas kautta luentoja ja näiden shortsit.
>> Kirjoitimme pseudo-koodi ryhmänä.
Ja jo, meillä on 80%, jos ei 90% siitä, mitä meidän täytyy tehdä.
Nyt meidän täytyy vain koodata se, mikä taas on
ei-triviaali ongelma ratkaista.
Mutta ainakin olemme jumissa logiikkaa.
Ainakin nyt kun menemme virka, Voin sanoa, tiedän mitä tarvitsen
tehdä, mutta voitko muistuttaa minua syntaksin?
Tai vaikka virka ovat täynnä, voit Voiko Google for syntaksin pikemminkin
kuin olla jumissa logiikkaa.
>> Ja vielä, eikä yrittää ratkaista logiikan ja syntaksin ongelmia kaikki
kerralla, se on usein paljon parempi rikkoa näiden kahden kovia ongelmia pois osaksi
kaksi helpommin hallittavissa niitä ja tehdä pseudo-koodi ensin ja sitten koodi C.
Joten katsotaanpas mitä tein pseudo-koodi etuajassa.
>> Kun taas listan pituus on suurempi kuin nolla, katso keskellä
luettelon.
Jos numero löytyi palasi totta, muuta jos numero on suurempi, haku vasemmalle.
If määrä pienemmäksi, haku oikea, return false.
Niin että näyttää lähes sama, jos ei lähes identtinen mitä kirjoitti.
Oikeastaan, Tom, mitä sanoitte ensin, rikkomatta listan keskeltä, ja jos
numero löytyi kahteen lausuntoja on oikeastaan ​​mitä tein.
>> Yhdistin niitä siellä.
Minun olisi pitänyt kuunnella olet ensimmäistä kertaa.
Niin, että on pseudo-koodi meillä on.
Jos haluat nyt, anteeksi, mene Takaisin meidän alkuperäiseen ongelmaan.
Katsotaanpa koodi binary.c.
Joten toteuttaa iteratiivinen versio binäärihaku käyttäen seuraavia
toiminto julkilausumaan.
>> Ja sinun ei tarvitse kopioida se alas vielä.
Olen todella aikoo avata jopa täällä binary.c.
Joten siellä on toiminto ilmoitus keskellä näyttöä.
Ja näet otin pseudo-koodi alkaen minun puolelta, mutta lähes sama
mitä me kirjoitti, ja laittaa että sinulle.
Joten nyt, sallikaa viisi minuuttia koodata tätä toimintoa.
>> Ja vielä, jos sinulla on kysyttävää, nostamaan käden, haluaisin tietää, minä
tullut noin.
>> Opiskelija: [kuultavissa].
>> JASON HIRSCHHORN: Otin binary haku määritelmä
alkuun, on line 12.
Se mitä sain minun liukumäki.
Ja sitten kaikki tämä pseudo-koodi Sain kopioida ja liittää liukumäki,
pseudo-koodi liukumäki.
En ole vielä kuulo [kuultavissa].
>> Joten jos olet lopettanut täytäntöönpanoa, haluan tarkistaa.
Olen lähettänyt sinulle helpers.h tiedosto aiemmin tässä luokassa.
Ja se on saatavilla verkossa samoin ladattavissa ihmisiä katsellen
Tässä jaksossa aikaviivästetyt.
Ja minä vain käyttää yleisiä jakelu koodi pset3.
Joten otin find.C, käytän helpers.h tiedosto sijaan helpers.h tiedosto
joka on annettu jakeluun koodin.
>> Ja jouduin tekemään yhden muita muutoksia find.C sijaan soittaa vain yksinkertaisesti
haku, soita binary_search.
Joten jos haluat testata koodia, tietää, että tämä on, miten tehdä se.
Itse asiassa, kun me voidaan käynnissä tämän koodin juuri nyt, olen juuri tehnyt kopion
minun pset3 hakemistoon, taas, vaihdoin auttajia tiedostot ja sitten tehdään, että
muuttaa find.C soittaa binary_search eikä vain etsiä.
>> JASON HIRSCHHORN: Kyllä.
Sinulla on kysymys?
>> Opiskelija: Nevermind.
>> JASON HIRSCHHORN: Ei hätää.
No, katsotaanpa päästä alkuun.
Me koodata tätä ryhmää.
Yksi muu huomautus.
Tämäkin on, voidaan helposti vaihtaa in Ongelma asettaa kolme.
Minulla on helpers.h tiedosto, joka pikemminkin kuin helpers.h meille on annettu,
julistaa binäärihaku, kupla lajitella ja valinta lajitella.
Ja find.c huomaat verkossa, mitä se on, linja 68, kutsumme binary
etsi sijasta hakua.
Joten jälleen, koodi, joka on käytettävissä verkossa tai koodia, että olet
nyt luomassa voidaan helposti vaihtaa in p asetettu 3 tarkistaa sen.
>> Mutta ensin koodi binäärihaku.
Meidän tehtävämme ilmoitus, palaamme bool.
Otamme kokonaisluku nimeltään arvoa.
Otamme joukko kokonaislukujen kutsutaan arvot, ja otamme n olla
taulukon koko.
Rivillä 10, täällä, minulla on terävä kuuluu stdbool.h.
Tietääkö kukaan, miksi se on olemassa?
Joten mitä Koodirivin tehdä?
>> Opiskelija: Sen avulla voit käyttää bool palautuva.
>> JASON HIRSCHHORN: Aivan.
>> Opiskelija: Tai se kirjasto, jonka avulla käyttää bool palautuva.
>> JASON HIRSCHHORN: Niin terävä kuuluu stdbool.h line antaa minulle
määritelmiä ja ilmoitusten asioita että minulla on oikeus käyttää
tätä kirjastoa.
Joten joukossa on selvää, että siellä on Tämän tyyppinen kutsutaan bool, ja se voi olla
tosi tai epätosi.
Niin, että mitä se linja ei.
Ja jos en ole, että linja, olisin joutua vaikeuksiin kirjoitan tätä
sana täällä, bool, tuolla.
Aivan oikein.
Joten minun on, että tätä koodia.
OK.
Joten tämä taas on iteratiivinen versio, ei rekursiivinen.
Olkaamme siis päästä alkuun.
>> Aloitetaan tämän ensimmäisen line pseudokoodiesityksen.
Ja toivottavasti me - tai ei toivottavasti.
Aiomme mennä ympäri huonetta.
Menemme rivi riviltä, ​​ja minä autan voit selvittää linja, että me tarvitsemme
kirjoittaa ensin.
Joten vaikka pituus lista on suurempi kuin nolla.
Aloitetaan edessä.
Mitä line minun pitäisi kirjoittaa täällä, koodi?
>> Opiskelija: Vaikka suluissa n on suurempi kuin 0.
>> JASON HIRSCHHORN: Vaikka n on suuri kuin 0.
Joten n on koko lista, ja me tarkastamme, jos -
>> [Interposing ÄÄNTÄ]
>> JASON HIRSCHHORN: - Anteeksi?
>> Opiskelija: Mistä tiedämme, että n on koko listan?
>> JASON HIRSCHHORN: Anteeksi.
Per PSET erittely, haku ja järjestämistoimintojen sinun täytyy kirjoittaa,
n on koko listan.
Unohdin selittää, että täällä.
Mutta kyllä. n on koko lista, tässä tapauksessa.
Joten kun n on suurempi kuin 0.
OK.
Jotka saattavat osoittautua hieman ongelmallista kuitenkin, jos asiat menevät päälle.
Koska jatkamme tietää Koko luettelon koko tämän
toiminto, mutta sanovat lähdetään jossa joukko 5 kokonaislukuja.
Ja käymme läpi ja olemme nyt rajoittanut sen
joukko 2 kokonaislukuja.
Joka 2 kokonaislukuja on?
Koko on 2 nyt, että haluamme katsoa, ​​mutta joka 2 on?
Onko järkeä, että kysymys?
>> OK.
Kysyn uudestaan.
Joten lähdetään tällä joukko 5 kokonaislukuja, ja n on 5, eikö?
Me läpi täällä.
me luultavasti muuttaa kokoa, oikea, koska asiat mennä.
Joka on mitä me sanomme me haluamme tehdä.
Emme halua etsiä koko juttu uudestaan.
Joten sanoa muutamme sitä 2.
Otamme puoli luettelo, joka on outoa.
Joten vain poimia 2.
Joten nyt n = 2.
Pahoittelen huono kuiva poistaa markkereita.
Oikea?
Ja me hakuja lista jälleen listan koko 2.
No, meidän joukko on edelleen koko 5.
Sanomme vain haluamme etsi 2 paikkoja siinä.
Joten mikä 2 täplät ovat ne?
>> Onko järkeä?
Ovatko ne jäljellä 2 paikkoja?
Ovatko he oikeassa 2 paikkoja?
Ovatko ne keskellä 2 paikkoja?
Olemme jakaneet ongelma alas, mutta emme oikeastaan ​​tiedä, mikä osa
ongelma olemme yhä katsot, vain ottaa nämä 2 muuttujia.
Joten tarvitsemme hieman enemmän sitten, kun n on suurempi kuin 0.
Meidän täytyy tietää, jos tämä n on meidän todellinen array.
>> Joten ei kukaan ole muuttaa tätä linjaa?
Suurin osa linja on täysin oikeassa.
Onko toinen lisäksi?
Voimmeko vaihtaa jotain ulos n- tekevät tätä linjaa vähän paremmin?
Mm-hm?
>> Opiskelija: Voitko alustaa muuttujan kuten pituus n, joka tulee sitten käyttää
myöhemmin toiminto?
>> JASON HIRSCHHORN: So alustaa vaihteleva pituus on n,
ja käytämme myöhemmin?
Mutta sitten me vain päivittää pituus ja me silti törmätä tähän ongelmaan, jos me
leikata alas pituus meidän ongelmamme, mutta emme koskaan tiedä, missä oikeastaan
että pituus kuvautuu.
>> Opiskelija: Eikö se tule tapahtumaan myöhemmin, kun sanot, etsi vasemmalle,
etsi oikea?
Aiot mennä eri alueen oman -
>> JASON HIRSCHHORN: Aiomme mennä alueelle, mutta mistä tiedämme
jotka ovat mennä?
Jos meillä on vain joukko ja tämän n, mistä tiedämme, mistä
Siirry jono.
Takana, kyllä?
>> Opiskelija: Onko sinulla, kuten, alempi sidottu ja yläraja muuttuja tai
jotain sellaista?
>> JASON HIRSCHHORN: OK.
Joten tämä on toinen ajatus.
Sen sijaan vain pitää seurata koko, me seurata ala-ja
yläraja muuttuja.
Miten siis laskea koko maasta alaraja ja yläraja?
>> [Interposing ÄÄNTÄ]
>> JASON HIRSCHHORN: vähennyslaskua.
Ja myös pitää kirjaa alemman sidottu ja yläraja kertoa meille,
me etsivät nämä kaksi?
Olemmeko etsivät nämä kaksi tänne?
Olemmeko etsivät keskellä kaksi?
Todennäköisesti ei keskellä kaksi, koska tämä itse asiassa on binäärihaku.
Mutta nyt me voi saada kokoon, mutta myös rajat jono.
Pohjimmiltaan, jos meillä on jättiläinen puhelinluettelosta, me repiä se kahtia.
Tiedämme nyt, jos tämä pienempi puhelinluettelo on.
Mutta emme ole itse repimässä puhelinluettelon kahtia.
Tarvitsemme vielä tietää, missä uudet rajat meidän ongelma on.
Onko kellään mitään kysyttävää siitä?
Kyllä?
>> Opiskelija: Olisiko se toimii luomalla muuttuja, i, että olet sitten vain siirtää
asemaa i suhteessa sen nykyinen sijainti ja pituus, n?
>> JASON HIRSCHHORN: Ja mitä on i?
>> Opiskelija: Like i on kuin eräänlainen -
Kuin olisit alustaa i olla keski-sijainnissa.
Ja sitten, jos arvo asemassa i keskellä array todettu
olla pienempi kuin tarvittava arvo, i nyt tulee pituus array, plus
i: n arvo jaettuna 2.
Kuten, katso, vaihdat i -
>> JASON HIRSCHHORN: Oikea.
>> Opiskelija: - jopa -
>> JASON HIRSCHHORN: Olen siis melkein myönteistä, että toimii.
Mutta kohta olento, tarvitset kaksi paloja tietoa täältä.
Voit tehdä sen alkuun ja loppuun, tai voit tehdä sen koko ja
Joissakin merkki.
Mutta sinun täytyy kaksi kappaletta Tietojen täällä.
Et voi tulla toimeen vain yksi.
Tarkoittaako tämä järkevää?
>> Joten aiomme mennä läpi, ja aiomme tehdä [kuultavissa]
ja luoda jonkinlaista markkereita.
No mitä kirjoitat koodin?
>> Opiskelija: Sanoin vain int sidottua yksi on yhtä suuri kuin 0.
>> JASON HIRSCHHORN: Soitetaan että int alkaen.
>> Opiskelija: OK.
>> JASON HIRSCHHORN: Se tekee järkevämpää minulle.
Ja?
>> Opiskelija: Sanoin, luulisin, int päättyy.
>> JASON HIRSCHHORN: int päättyy.
>> Opiskelija: Luulen, n miinus 1, tai jotain sellaista.
Kuten, viimeinen osa.
>> JASON HIRSCHHORN: Niin kirjoitit, int alussa on 0, puolipiste, ja int
päättymisaika on sama n miinus 1, puolipiste.
Niin olennaisesti, mitä teemme Täältä 0 ensimmäisessä asennossa.
Ja kuten tiedämme paneelit, ne eivät mene jopa n, he menevät jopa n. miinus 1.
Joten meillä on joitakin rajoja meidän array.
Ja nämä ensimmäiset rajat sattuvat olemaan alkuperäisen rajat meidän ongelmamme.
OK.
Niin että kuulostaa hyvältä.
Sitten jos palaamme tähän linjaan, kun taas pituus lista on suurempi kuin 0,
mitä sijasta n, tulisi me laittaa tänne?
>> Opiskelija: Kirjoita päättyy miinus alussa.
>> JASON HIRSCHHORN: Vaikka päättyy miinus alussa on suurempi kuin 0?
OK.
Ja voisimme, jos haluaisimme tehdä, että vähän mukavampaa, mitä
muuta voisimme tehdä?
Jos halusimme puhdistaa Tämän koodin jopa vähän?
Miten voimme päästä eroon 0?
Tämä on vain tyyli kysymys.
Se on oikea juuri nyt.
>> Opiskelija: Ending ei yhtä alusta?
>> JASON HIRSCHHORN: Voimme tehdä mitä?
>> [Interposing ÄÄNTÄ]
>> Opiskelija: Lopettaminen on suurempi?
>> JASON HIRSCHHORN: Joo.
Voimme vain tehdä, kun päättyy on suurempi kuin alussa.
Oikea.
Lisäsimme alkaa toisella puolella siitä, ja pääsimme eroon 0.
Joten tämä vain näyttää hieman puhtaampaa.
OK.
Joten, kun pituus lista on 0, kirjoitimme että vaikka loppu on suurempi
kuin alussa.
Aiomme laittaa meidän tarpeen aaltosulkeita, ja sitten ensimmäinen asia
haluamme tehdä, on katsoa ne pikku luettelossa.
You?
Voitko antaa minulle -
>> Opiskelija: Jos suluissa arvo hakasulkeen -
>> JASON HIRSCHHORN: Jos suluissa arvo hakasulkeen.
>> Opiskelija: Ending jaettuna 2.
>> JASON HIRSCHHORN: Ending?
>> Opiskelija: Näen ongelma -
>> JASON HIRSCHHORN: OK.
No, katsokaa keskellä.
Mistä tiedämme, mitä keskellä on?
Joo.
Haluan siis poistaa kyseisen koodin.
Mistä tiedämme, mitä keskellä on?
Mihinkään, kun sinulla on alussa ja lopulta, miten löytää
keskellä?
>> Opiskelija: Sinä keskimäärin.
>> Opiskelija: lisäät ne yhteen ja sitten -
>> JASON HIRSCHHORN: Lisää ne yhteen ja sitten?
>> Opiskelija: Ja sinä keskimäärin.
Jaa se 2.
>> JASON HIRSCHHORN: Lisää ne yhdessä ja jakaa 2.
Joten int keski vastaa?
Tom, voit antaa sen minulle?
>> Opiskelija: Alku plus päättyy -
>> JASON HIRSCHHORN: Beginning plus päättyy.
>> Opiskelija: Kaikki, kiinnike, jaettuna 2.
>> JASON HIRSCHHORN: Kaikki, suluissa, jaettuna 2.
Niin että antaa minulle keskellä mitään, korjaa?
>> Opiskelija: Tarvitset myös pyöristää sen.
>> JASON HIRSCHHORN: Mitä Tarkoitan, minun täytyy pyöristää sen?
>> [Interposing ÄÄNTÄ]
>> Opiskelija: Koska jos se on outoa numero, niin se on kuin -
>> JASON HIRSCHHORN: No okei.
Niin voisin pyöristää sen.
Mutta jos se on pariton luku, 5, voin ottaen 1 pois keskeltä.
Tai jos se on parillinen määrä, vaan se on parempi asia.
Jos se on 4, meillä on vain 4, voin ottaa ensimmäinen "keskellä", lainaus, lainaus tai
Toinen "middle" yksi.
Joko toimisi binäärihaku, joten en oikeastaan ​​tarvitse pyöristää sitä.
Mutta on toinenkin asia I täytyy tarkastella tätä linjaa.
Emme ehkä ymmärrä sitä vielä, mutta palaamme siihen.
Koska tämä linja oikeastaan ​​vielä tarvitsee yhden asian.
>> Mutta toistaiseksi olemme kirjoitettu neljä riviä koodia.
Meillä meidän alusta ja päättyy markkereita.
Meillä on while-silmukka, joka kartoittaa on suoraan meidän pseudokoodina.
Etsimme keskeltä kartat suoraan meidän pseudokoodina.
Sanoisin tähän menee keskelle luettelon, tämä rivi koodia.
Ja sitten, kun menemme keskelle lista, seuraava asia, meidän täytyy tehdä
on tarkistaa, jos meidän arvo on siellä pseudokoodina kirjoitimme aikaisemmin.
>> Miten siis tarkistaa, jos meidän arvo on keskellä listan?
You.
Miksi et tee tätä?
>> Opiskelija: Jos arvomme n on keskellä on yhtä suuri kuin
mitä asetamme -
Siis yhtä sama -
>> JASON HIRSCHHORN: Se -
OK.
>> Opiskelija: En ole varma, mitä muuttuja etsimme
sillä vaikka, johtuu siitä, -
>> [Interposing ÄÄNTÄ]
>> Opiskelija: [kuultavissa].
>> JASON HIRSCHHORN: Aivan.
Per toiminto ilmoituksen, Etsimme arvo.
Joten olemme etsivät arvo riviksi arvoja.
Joten olet aivan oikeassa.
Te teette, jos se on auki paren arvo kiinnike keskimmäinen suljettu kiinnike tasavertaisina
vastaa arvoa, ja sisällä on mitä meidän täytyy tehdä?
Jos meidän arvo on siellä, mitä meidän täytyy tehdä?
>> [Interposing ÄÄNTÄ]
>> Opiskelija: Return nolla.
>> JASON HIRSCHHORN: Paluu totta.
>> Opiskelija: Return totta.
>> JASON HIRSCHHORN: Michael, mitä tämä linja tehdä?
>> Opiskelija: [kuultavissa] ohjelma on juossut sen kurssin, ja se on ohi, ja
olet mitä sinun tarvitsee tehdä?
>> JASON HIRSCHHORN: ohjelma vai mitä?
Tässä tapauksessa?
>> Opiskelija: toiminto.
>> JASON HIRSCHHORN: toiminto.
Ja niin, palata mitä kutsutaan sitä ja antaa sille arvoa, totta.
Aivan oikein.
Main.
Mikä on palautuva tärkeimpien, Michael?
>> Opiskelija: int, kokonaisluku?
>> JASON HIRSCHHORN: int, tarkalleen.
Kokonaisluku.
Se oli vain kysymys varmistaa te kaverit ovat olleet sen päälle.
Mitä se yleensä palaa, jos kaikki asiat toimivat hyvin?
>> Opiskelija: Zero.
>> JASON HIRSCHHORN: Zero.
Aivan oikein.
>> Opiskelija: Jos tämä palaa aivan totta, ei ole mitään tietoja anneta
mitä -
Voi, tämä on vain sanomalla, että arvo on sisällä array.
>> JASON HIRSCHHORN: Aivan.
Tämä ohjelma ei ole antaa tietoa missä tarkalleen arvo on.
Se vain sanoi, kyllä, löysimme sitä tai ei, emme löytäneet sitä.
Joten jos numero löytyy, palauta totta.
No, itse asiassa me vain teimme todella nopeasti, että yhtä riviä koodia.
Joten Muutan että linja pseudokoodina.
>> Opiskelija: Emmekö tarvitse muuttaa array?
Sen pitäisi olla arvoja, ei arvoa, eikö?
>> JASON HIRSCHHORN: Anteeksi.
Kiitos.
>> Opiskelija: Joo.
>> JASON HIRSCHHORN: Tämä linja pitäisi olla arvot.
Aivan oikein.
OK.
Joten teimme keskellä luettelosta.
Jos numero löytyi return true.
Jatketaan meidän pseudokoodina, jos Keskellä on suurempi, haku jäljellä.
Joten jouduin tänne, jos numero korkeampi, haku jäljellä.
Constantine, voit antaa Minulle tämä rivi koodia?
>> Opiskelija: Jos arvo keski -
>> JASON HIRSCHHORN: Joten jos arvo -
jos se on auki paren arvot kiinnike keski loppusulkumerkki -
>> OPISKELIJAN: On pienempi kuin arvo?
>> JASON HIRSCHHORN: Onko alle.
>> OPISKELIJAN: Alle arvo.
>> JASON HIRSCHHORN: Arvo.
No, itse asiassa, haluatko tarkista numero -
Anteeksi.
Tämä on hieman sekava.
Mutta muuten jos numero Keskellä lista on suurempi.
>> Opiskelija: Oh, OK.
>> JASON HIRSCHHORN: Muutan että.
Muuta, jos keskellä on korkeampi, me haluat etsiä vasemmalle, OK?
Ja mitä me teemme sisällä Tämä jos ehto?
>> Opiskelija: Voinko tehdä pieni muutos kunnossa, vaihda se if?
>> JASON HIRSCHHORN: Entä onko?
OK.
Joten tämä koodi tulee suorittaa suunnilleen sama.
Mutta Kiva juttu käyttämällä if, else jos, if tai jos muuten if, else
tarkoittaa, että vain yksi niistä on menossa tarkistetaan, ei kaikki kolme,
mahdollisesti.
Ja se tekee hieman mukavampaa tietokoneella, joka on
suorittaa ohjelma.
>> Joten [? Constantine,?]
olemme sisällä tätä linjaa, if arvot, kiinnike keskellä loppusulkumerkki
on suurempi kuin arvo.
Mitä meidän pitää tehdä?
Meidän täytyy etsiä vasemmalle.
Miten me sen teemme?
Aion antaa sinulle alku.
>> Meillä on nämä kaksi asiaa kutsutaan alkaa ja päättyy.
Niin mitä täytyy tapahtua alkuun?
Jos haluat etsiä vasemmalla lista, saamme nykyisen alussa.
Mitä meidän täytyy tehdä se?
>> Opiskelija: Asetimme alussa keski plus 1.
>> JASON HIRSCHHORN: Joten jos olemme etsimällä vasen?
>> Opiskelija: Anteeksi, keski miinus -
niin loppu olisi keskellä miinus 1 ja alusta -
>> JASON HIRSCHHORN: Ja mitä tapahtuu alussa?
>> Opiskelija: Se pysyy samana.
>> JASON HIRSCHHORN: So merkitys pysyy samana.
Jos me etsit vasemmalle, olemme käyttäen samaa alusta -
Aivan oikein.
Ja päättyy?
Anteeksi, mitä päättyy yhtä uudelleen?
>> Opiskelija: Middle miinus 1.
>> JASON HIRSCHHORN: Lähi miinus 1.
Nyt, miksi miinus 1, ei vain keskellä?
>> Opiskelija: keskellä on poissa kuva jo, koska meillä oli
tarkistanut, että se on pois?
>> JASON HIRSCHHORN: Tuo Aivan oikein.
Keskellä on pois kuvasta.
Olemme jo tarkistanut keskellä.
Joten emme halua "keskellä", lainaus unquote, jatkuvan vuonna
array, että etsimme.
Joten tämä on fantastinen.
>> If arvot kiinnike keskellä on suurempi kuin arvo päättyy tasavertaisina
keski miinus 1.
Jeff, mitä tästä viimeisellä rivillä?
>> Opiskelija: Else.
Arvojen keskellä on pienempi kuin arvo?
>> JASON HIRSCHHORN: me annat minulle muuta.
Joten jos et anna minulle -
>> Opiskelija: Joten sitten alkaa olisi keskellä plus 1.
>> JASON HIRSCHHORN: Beginning tasavertaisina keskimmäinen plus 1, jälleen, samaan
syystä Constantine antoi meille aikaisemmin.
Ja lopussa, joka ei ole antanut minulle koodiriviä vielä?
Palauttaa false, Aleha, mitä kirjoitamme täällä?
>> Opiskelija: return false.
>> JASON HIRSCHHORN: return false.
Ja meidän täytyy tehdä niin, koska jos me eivät löydä sitä, meidän täytyy sanoa, että meidän
ei löydä sitä.
Ja me sanoimme aiomme palata bool, joten varmasti on palattava
bool jonnekin.
>> Joten suorittaa tämän koodin.
Olen oikeastaan ​​menossa -
joten olemme terminaalissa.
Me selvästi meidän ikkunasta.
Tehdään kaikki.
Löysimme olemassa yksi virhe.
On virhe rivillä 15, odotetaan puolipiste lopussa
julkilausumaan.
Joten mitä minä unohda?
>> Opiskelija: Semicolon.
>> JASON HIRSCHHORN: Semicolon asti täällä.
Mielestäni oli Tomin koodi.
Joten Tom, [äänetön].
Vain leikkiä.
Tehdään tehdä kaikki uudestaan.
>> Opiskelija: Mitä Dropbox-hakemistossa meidän pitäisi olla tähän?
>> JASON HIRSCHHORN: Voit siis vain katsella tätä vähän.
Mutta jälleen kerran, jos halusi siirtää tämän koodi pset3 hakemistoon kokeilla
sitä, että mitä tein.
Jos huomaat täällä - pahoillani, hyvä kysymys.
>> [? LS,?]
Minulla on täällä find.c koodi Tämän viikon distro koodi.
Minulla on helpers.h.
Minulla on tehdä tiedosto, että olen itse muokattu hieman sisällyttää nämä uudet
tiedostoja olemme kirjallisesti.
Kaikki tämä koodi on käytettävissä, ei jakelu-koodi, mutta uusi
Tee tiedosto, uusi helpers.h tiedosto on käytettävissä verkossa latauksena.
Taas, joten ne ovat extra koodit meillä on.
>> Joten tehdä kaikki, kohti tätä linjaa, tekee löytää, binary, kupla valinta - merkkeihin
kaikki kolme ja kokoaa osaksi Tämän koodia löytää.
Joten yleensä, emme halua to suoraan check50.
Haluamme ajaa joitakin testejä omillamme.
Mutta vain niin voimme nopeuttaa tätä hieman, check50 2013 pset3.find välitän
in helpers.c-- my bad.
>> Minulla ei ole juuri nyt.
Joten olemme todella tulee suorittaa koodia oikeasti.
Usage.find /, tiedät mitä se tarkoittaa?
>> Opiskelija: Tarvitset toisen komentoriviltä sitä.
>> JASON HIRSCHHORN: Tarvitsen Toinen komentoriviltä.
Ja kohti erittely, tarvitsen syöttää mitä etsimme.
Joten katsotaanpa 42.
Me pitää se lajitellaan, koska me ole kirjoittanut lajittelu vielä -
42, 43, 44.
>> Ja ohjaus D ei löytänyt neulaa heinäsuovasta.
Se on huono.
Se on ehdottomasti siellä.
Kokeillaan jotain muuta.
Ehkä se johtuu siitä, laitoin se alussa.
>> Tehdään 41, 42, 43.
Siellä mennään.
Se löysi sen.
Laitetaan se lopussa nyt vain jotta voimme olla perusteellinen -
40, 41, 42.
Ei löytänyt neulaa.
Joten Mainitsin tämän aikaisemmin.
Valitettavasti, tiesin, että tämä oli tapahtumassa.
>> Mutta opetuksellisia tarkoituksia varten, se on hyvä tutkia sitä.
Se ei toimi.
Jostain syystä se ei löydä sitä.
Tiedämme, mitä siellä, mutta emme ole löytää se.
Joten mitä voimme tehdä, on mennä läpi GDB löytää sen, mutta ei kukaan,
ilman läpi GDB, on tunnetta siitä, missä olemme mokasi?
[? Madu? ?]
>> Opiskelija: Mielestäni se voisi olla, kun päättyy on yhtä suuri kuin alussa, ja se on
vain yhden elementin listana.
Sitten se vain ohittaa sen sijaan todella tarkistaa sen.
>> JASON HIRSCHHORN: Tuo Aivan oikein.
Kun loppu on sama alusta, me edelleen osa meidän listalta?
>> Opiskelija: Joo.
>> JASON HIRSCHHORN: Kyllä, itse asiassa me oltava yksi ja vain yksi elementti.
Ja että todennäköisesti tapahtuu, kun, per koodi testasimme, olemme
edessä heinäsuovasta tai loppuun heinäpaali.
Siellä alussa ja loppu tulee yhtä
yksi, jossa binäärihaku.
Joten näissä kahdessa tapauksessa se ei toimi, koska päättyy vastasi alussa.
>> Mutta jos päättyy on yhtä suuri kuin alussa, tämä kun silmukka suorittaa?
Näin ei ole.
Ja olisimme voineet tarkastaa että jälleen läpi GDB.
Joten kuinka voimme korjata tämän koodin, koska kun taas loppu on yhtä suuri
alkaa, haluamme myös tämän while-silmukka ajaa.
>> Niin mitä korjata voimme tehdä riville 18?
>> Opiskelija: [kuultavissa] on suurempi tai yhtä suuri kuin.
>> JASON HIRSCHHORN: Aivan oikein.
Vaikka loppu on suurempi kuin tai yhtä suuri kuin alussa.
Joten nyt me varmista, että saat että nurkkaan tapauksessa lopussa.
Ja katsotaanpa.
Juostaan ​​tämä vielä kerran.
>> Tehdään kaikki.
Uudelleen, sinun täytyy vain seurata sitä täällä.
Etsi 41 tällä kertaa.
Vain pitää se johdonmukainen.
>> Etsi 42.
Laitetaan se alussa -
42, 43, 44.
Löysimme sen.
Joten se oli todellakin muutos meidän piti tehdä.
>> Se oli paljon koodaus me vain teimme, binäärihaku.
Onko kellään mitään kysyttävää ennen Jatkan riveihin kirjoitimme
binäärihaku tai miten Ajattelimme mitä emme selvittää?
Ennen kuin siirrymme, haluan myös huomauttaa , että yleensä, kartoitimme
Meidän pseudo-koodia yhdestä yksi päälle meidän koodi.
>> Meillä ei ole, että hankala asia selvittää kanssa
alkaa ja päättyy.
Mutta ellet olisi tajunnut, että ulos, olisi kirjoittanut aika paljon
identtiset § lukuun ottamatta nämä kaksi ylintä riviä.
Ja sitten olisi huomannut, kun teit sen tarkastusten ja tapauksissa, että
tarvitset jotain muuta.
Joten vaikka olisit seurannut pseudo-koodi riviltä, ​​olisit
saanut kaikki paitsi kaksi riviä koodata sinun piti kirjoittaa.
>> Ja olisin valmis lyömään vetoa, että te olisi kaikki sen selville
melko nopeasti, että sinun piti laittaa jonkinlainen merkki siellä selvittää
missä olit.
Tämä taas on valta tehdä pseudo-koodi etuajassa.
Jotta voimme tehdä logiikka ensin ja sitten voimme huolehtia syntaksin.
>> Oliko meillä ollut hämmentynyt logiikka kun yrittää kirjoittaa tämän koodin C,
olisimme saaneet kaikki sekaisin.
Ja sitten olisimme kyselleet logiikan ja syntaksin ja hammastusvirheet
ne kaikki yhdessä.
Ja olisimme eksyneet mitä voi nopeasti tulla
hyvin vaikea ongelma.
Joten siirtyä nyt valintaan lajitella.
>> Meillä on 20 minuuttia jäljellä.
Joten minulla on tunne, emme pysty läpi kaikki valintahetkellä sort
ja kupla lajitella.
Mutta älkäämme edes pyrkiä loppuun valinta lajitella.
Joten toteuttaa valinta lajitella käyttäen seuraava toiminto julkilausumaan.
>> Jälleen kerran, tämä on otettu Harjoitus erittely.
Int arvot on suluissa, on joukko kokonaislukuja.
Ja int.n on koko, joka array.
Selection sort on menossa lajitella tähän array.
>> Joten kohti meidän mentaalinen malli valinta lajitella, osaamme -
Ensimmäinen, käymme läpi listan ensimmäinen aikaa, löytää pienin määrä,
laita se alussa, löytää toisen pienin määrä, laita se
toiseen asentoon jos haluamme lajitella nousevassa järjestyksessä.
En pakota sinua kirjoittamaan pseudo-koodi juuri nyt.
>> Mutta ennen kuin teemme koodin luokan viisi minuuttia, aiomme kirjoittaa
pseudo-koodi, jotta meillä on jossain mielessä siitä, missä olemme menossa.
Joten yritä kirjoittaa pseudo-koodi itse.
Ja sitten yritä kääntää, että pseudo-koodi koodi.
Teemme että ryhmänä viidessä minuutissa.
>> Ja tietenkin, haluaisin tietää, jos sinulla on kysyttävää.
>> Opiskelija: Että se?
>> JASON HIRSCHHORN: Katso kuinka pitkälle voi saada kaksi minuuttia.
Ymmärrän sinä et voi lopettaa.
Mutta me menemme yli tämän ryhmänä.
>> Te kaikki koodaus niin [kuultavissa], joten olen pahoillani keskeyttää mitä olet tekemässä.
Mutta mennään läpi tätä ryhmää.
Ja vielä, binäärihaku, te kaikki antavat minulle yksi jos ei enemmän riviä koodia.
Kiitos siitä.
Aiomme tehdä sama asia Täältä koodi yhdessä ryhmänä.
>> Joten valinta sort - Kirjoitetaan Nopea pseudo-koodi.
Per henkinen malli, voi joku antaa minulle ensimmäinen rivi pseudo-koodi, kiitos?
Mitä haluan tehdä?
>> Opiskelija: Vaikka lista on epäkunnossa.
>> JASON HIRSCHHORN: OK, kun taas lista on epäkunnossa.
Ja mitä tarkoitat "epäkunnossa?"
>> Opiskelija: Vaikka [kuultavissa]
ei ole järjestetty.
>> JASON HIRSCHHORN: Vaikka lista on epäkunnossa, mitä me teemme?
Anna minulle toinen rivi, please, Marcus.
>> Opiskelija: Joten löytää seuraavan pienin määrä.
Tämä sisennetään.
>> JASON HIRSCHHORN: niin löytää seuraavaksi pienin numero.
Ja sitten joku muu?
Kun löydämme seuraavaksi pienin numero, mitä me teemme?
Aion sanoa löytää pienin määrä.
Sitähän me haluamme tehdä.
>> Niin löytää pienin numero.
Mitä sitten teemme?
>> Opiskelija: [kuultavissa] alkuun.
>> JASON HIRSCHHORN: Anteeksi?
>> Opiskelija: Aseta se alussa luettelon.
>> JASON HIRSCHHORN: Niin aseta se listan alussa.
Ja mitä me teemme asia että oli alussa
luettelon, eikö?
Olemme päälle jotain.
Joten mistä laitamme sen?
Joo, Anna?
>> Opiskelija: Silloin kun pienimmät numero oli?
>> JASON Hirshhorn: Joten laita alussa luettelon, jossa
Pienin luku oli.
Joten, kun lista on epäkunnossa, löytää pienin määrä, aseta se
listan alkuun, laita alussa listan, johon
Pienin luku oli.
Marcus, voit muotoilla tätä linjaa kun lista on epäkunnossa?
>> Opiskelija: Vaikka numerot ei ole lajiteltu?
>> JASON Hirshhorn: OK, niin jotta tietää, että numerot eivät ole olleet
lajitellaan, mitä meidän täytyy tehdä?
Kuinka paljon meidän täytyy läpi tämän listan?
>> Opiskelija: Joten kai silmukka, tai samalla, kun numerot tarkistetaan on vähemmän
kuin listan pituus?
>> JASON Hirshhorn: OK, se on hyvä.
Luulen misphrased kysymykseni huonosti.
Yritin vain saada aikaa aiomme mennä
kautta koko lista.
Joten, kun lista on epäkunnossa, Minulle on vaikea kartta.
Mutta pohjimmiltaan se, miten Mielestäni tästä.
Käy läpi koko luettelon, löytää pienin määrä, aseta se
alussa - itse asiassa, olet oikeassa.
Laitetaan molemmat.
>> Joten, kun lista on epäkunnossa, me tarvitse käydä läpi koko lista
kerran, löytää pienin määrä, paikka sen listan alkuun, laita
listan alkuun, jossa Pienin luku oli, ja sitten jos
lista on edelleen epäkunnossa, olemme Täytyy mennä läpi tämän
prosessin uudelleen, eikö?
Siksi valinta lajitella, Big-O runtime valinta lajitella, anyone?
>> Opiskelija: n potenssiin.
>> JASON Hirshhorn: n neliö.
Koska kuten Marcus ja minä vain ymmärtänyt täällä, me aiomme pitää
käydä listan läpi lista useita kertoja.
Niin menee läpi jotain pituus n n monta kertaa
on itse asiassa n potenssiin.
>> Joten tämä on meidän pseudokoodina.
Tämä näyttää erittäin hyvältä.
Onko kellään mitään kysyttävää noin pseudokoodina?
Koska todellisuudessa valinta tavallaan olisi luultavasti nyt tullut yhtä, koodi
pseudokoodina.
Joten kysyttävää logiikka pseudokoodina?
Kysy se nyt.
>> Selection sort -, kun lista on pois järjestyksen, aiomme käydä läpi
ja löytää pienin joka kerta ja laita se edessä.
Joten, kun lista on epäkunnossa, voi joku antaa minulle Koodirivin jotka
ei ole antanut minulle linja koodia vielä, kiitos?
Se kuulostaa mitä?
>> Opiskelija: Tuo silmukka.
>> JASON Hirshhorn: Kuulostaa pidä silmukka.
OK, voit antaa minulle silmukka?
For -
>> Opiskelija: I on 0.
>> JASON Hirshhorn: i tai -
Mitä me puuttuu?
Mikä menee täällä?
>> Opiskelija: Int.
>> JASON Hirshhorn: Aivan.
(Int i = 0; -
>> Opiskelija: i <n; i + +).
>> JASON Hirshhorn: Naulan kantaan, Jeff.
Menemme läpi listan, eikö?
Olemme nähneet, että koodin ennen.
Täydellinen.
Joten laitoimme aaltosulkeita täällä.
Aion laittaa aaltosulkeita täällä.
>> Joten vaikka se on 0, meidän täytyy mennä koko listaa läpi.
Joten joka kerta käymme läpi listan, mitä me haluamme seurata?
>> Opiskelija: Jos vaihtosopimukset tehdään.
>> JASON Hirshhorn: Etsi pienin määrä.
Joten meidän pitäisi luultavasti seurata pienin määrä joka kerta.
Joten line voin seurata pienimmän numeron?
Aleha, miten voin pitää seurata jotain?
>> Opiskelija: Aloita uusi muuttuja.
>> JASON Hirshhorn: Aloita uusi muuttuja.
Joten luoda muuttujan.
Minkälaista?
>> Opiskelija: Int.
>> JASON Hirshhorn: Int.
Kutsukaamme sitä pienin.
Ja mitä se samaksi olemme lähtemässä pois?
Emme ole käyneet läpi listan vielä.
Me olemme ensimmäinen osa listata meidän ensimmäinen kerta kautta.
Mitä se yhtä, pienin luku?
>> Opiskelija: Arvot i.
>> JASON Hirshhorn: Arvot i.
Tämä kuulostaa täsmälleen oikea, oikea?
Pienin luku alussa on missä olemme.
Joten nyt meillä on pienin, ja me tarvitsemme käydä läpi koko lista ja
verrata tätä pienin kaikkeen muuhun.
Joten me käydä listan läpi uudelleen?
Michael?
>> Opiskelija: Sinun täytyy tehdä toinen silmukka.
>> JASON Hirshhorn: Toinen silmukka.
Tehdään se.
Anna minulle koodi.
>> Opiskelija: For loop -
pienimmille -
vain int j, voit sanoa?
= 0, siten, että -
>> JASON Hirshhorn: No, jos haluamme käydä läpi koko lista -
>> Opiskelija: j <n, j + +).
>> JASON Hirshhorn: Fantastic.
Aiomme käydä läpi silmukka jälleen.
Ja miten löydämme pienin luku?
Tom?
Meillä on nykyisen pienin määrä, niin miten löydämme uusia pienin?
>> Opiskelija: Voimme tarkistaa, jos pienimmän numero meillä on suurempi kuin
arvot kiinnike j.
>> JASON Hirshhorn: Joten jos pienin on suurempi kuin arvot kiinnike j.
Joten jos nykyinen pienin on suurempi kuin -
Aion siirtää nämä kaksi riviä koodia siellä toista.
Koska ennen kuin teemme mitään vaihtava, me tarvitse käydä läpi koko lista.
Joten tämä pseudokoodina pitäisi oikeastaan ulkopuolella, että sisempi silmukka.
Joten mene läpi koko luettelon.
Jos pienin on suurempi kuin arvot j mitä sitten?
>> Opiskelija: Sitten pienin vastaa arvoja j.
>> JASON Hirshhorn: Fantastic.
Yksi nopea kysymys -
ensimmäistä kertaa käymme läpi tämän silmukan, i tulee 0, j menee
olisi yhtä suuri 0 kun saamme tänne.
Menemme siis olisi vertailla numeron itse.
Onko se tehokas?
Ei, se ei ole todella tehokas.
Joten ei meidän j tarvitse mennä 0-n joka kerta?
Pitääkö meidän aina täytyy tarkistaa koko listaa läpi?
[Äänetön]?
>> Opiskelija: Aloita i sijaan.
>> JASON Hirshhorn: j CAN aloita siitä, mitä?
>> Opiskelija: i.
>> JASON Hirshhorn: j voi aloittaa i.
Joten nyt vertaamme alkaa kanssa yksi olemme.
Mutta silloinkin, on se, että tehokas kuin mahdollista?
>> Opiskelija: i + 1.
>> JASON Hirshhorn: i + 1 näyttää olevan tehokkain, koska me
jo i.
Olemme siitä, että kun pienin linjassa 15.
Aiomme aloittaa seuraava automaattisesti.
Joten käymme läpi silmukka.
Menemme läpi joka kerta.
Menemme läpi useita kertoja.
Nyt olemme saaneet läpi tämä sisäinen silmukka.
Meillä on pienin arvo säästää.
Meidän täytyy laittaa sen alussa luettelon.
Joten miten voin sijoittaa sen alussa listan?
Mikä on muuttuja, joka viittaa alkuun listan?
Olemme tässä ulkopuolella silmukka, niin mitä tarkoittaa
alussa listan?
>> Opiskelija: Arvot i.
>> JASON Hirshhorn: Aivan oikein.
Arvot i on alku -
tai pahoillani, ei alussa.
Se oli hämmentävää.
Se missä olemme alussa lajittelemattoman osan luetteloon.
Niin arvot i.
Ja mitä se tasa-arvoisia?
>> Opiskelija: Pienin.
>> JASON Hirshhorn: Arvot I on mitä?
>> Opiskelija: Pienin.
>> JASON Hirshhorn: Pienin.
Aivan oikein.
Olemme siis saattaa se alussa luettelon, ja nyt meidän täytyy laittaa
alussa listan, johon Pienin luku oli.
Joten miten voin kirjoittaa missä Pienin luku oli?
Arvot mitä?
>> Opiskelija: 0.
>> JASON Hirshhorn: pieni numero on 0?
>> Opiskelija: Joo.
>> JASON Hirshhorn: Mitä jos pienimmän numero oli lopussa
Tämän lajittelemattoman lista?
>> Opiskelija: Anteeksi, mikä oli kysymys?
>> JASON Hirshhorn: Missä on pienin määrä?
Otimme pienin ja laita se alkaa, tämän linjan täällä.
>> Opiskelija: Sen pitäisi olla on varastoitu joissakin -
>> Opiskelija: Arvot j.
>> JASON Hirshhorn: No, se on ei välttämättä arvot j.
Se ei ole edes olemassa tässä vaiheessa.
>> Opiskelija: Sinun täytyy julistaa muuttuja aikaisemmin ja
sitten määrittää sen -
kun löydät pienin määrä, määrittää indeksi tätä numeroa
Joissakin muuttuja tai jotain.
>> JASON Hirshhorn: Joten voi sanot uudestaan?
>> Opiskelija: Minne olet julistettu int pienin, sinun pitäisi myös ilmoittaa int
pienin indeksi = i tai jotain sellaista.
>> JASON Hirshhorn: Missä En int pienin, minun ei pitäisi vain seurata
arvosta, mutta paikka.
int smallest_location = tässä tapauksessa, me vain voin.
Meidän täytyy tietää, missä se on.
Saimme loppuun koodin, ja me tajusi meillä ei ollut aavistustakaan, missä se oli.
Ja niin taas, olemme kartoitus tämä on yksi yhteen.
Te koodaus tämän itse tahdosta luultavasti saada samaan ongelmaan.
Miten hitossa löydän sen?
Ja sitten tajuat, odota, minä täytyy seurata sitä.
>> Joten jos pienin on suurempi kuin arvot j.
Asetimme pienin vastaa arvoihin j.
Mitä muuta meidän täytyy muuttaa?
Constantin, mitä muuta meidän täytyy muuttaa?
>> Opiskelija: sijainti.
>> JASON Hirshhorn: Aivan.
Joten antaa minulle, että rivi koodia.
>> Opiskelija: smallest_location = j.
>> JASON Hirshhorn: Aivan.
Ja sitten alas lopussa, jos haluamme laittaa listan alkuun, jossa
Pienin luku oli, miten Emme katso missä
Pienin luku oli?
Marcus?
>> Opiskelija: Pienin luku oli sijaitsevat pienin paikkaan.
>> JASON Hirshhorn: Joten arvot smallest_location.
Ja mitä me laittaa sinne?
Alku lista, mikä tuo on?
>> Opiskelija: No, emme oikeastaan ​​tiedä enää, koska me korvasi.
Joten se on vaihdettu paikoissa näistä kaksi riviä?
Jos vaihdat nämä kaksi riviä ympäri.
>> JASON Hirshhorn: OK, joten emme enää, koska olemme nollata linja
ennen arvot i pienimpään.
Joten menetimme että alkuperäisestä arvosta.
Sanoit swap nämä kaksi riviä.
Joten nyt laittaa listan alkuun jossa pienin numero oli.
Joten smallest_location on yhtä suuri kuin arvot i.
Että liikkuu alussa lajittelemattoman osa luettelon
pienin sijainti.
Ja sitten arvot i liikumme että pienin numero.
>> Onko järkeä, miksi me piti tehdä, että swap?
Olisimme päälle, että arvo - toinen asia, sinun luultavasti olisi
tajunnut ja löysi BKT.
Niinpä olemme ottaneet huolta kaikki pseudokoodina.
Onko mikään muu täytyy kirjoittaa täällä?
Voiko joku ajatella mitään?
>> Opiskelija: Mistä tiedät kun olet valmis?
>> JASON Hirshhorn: Miten me tietää, kun olemme tehneet?
Suuri kysymys.
Joten mistä me tiedämme kun olemme tehneet.
>> Opiskelija: Luo muuttuja pitää luottaa ja jos on swap tehty vai ei
ja käydä läpi pass.
>> JASON Hirshhorn: OK.
Joka toimisi kupla tavallaan.
Mutta valinta lajitella, jos emme tehdä swap, joka voi olla juuri
koska pienin arvo on siinä sen oikeaan paikkaan.
Saisimme listan 1, 2, 4, 3.
Toisen kerran läpi me ei tee mitään swap.
Me olla numero 2, mutta me vielä jatkaa.
Joten meidän täytyy seurata, kun olemme tehneet, vai emmekö vain halua mennä
kunnes tämä on valmis?
>> Opiskelija: Voimme vain mennä kunnes se on valmis.
>> JASON Hirshhorn: Voimme vain mennä, kunnes se on valmis.
Kupla lajitella, olet aivan oikeassa, Jeff ja Aleha, jossa sinun ratkaisu -
se on hienoa seurata, kuinka monta swap teit, koska kupla
lajitella, jos et itse tee mitään koronvaihtosopimukset, olet valmis ja voit ehkä leikata
ongelma alas hieman.
Mutta valinta lajitella, olet todella täytyy mennä läpi loppuun
luettelo jokaisen kerralla.
>> Tämä on siis, että.
Meillä on kaksi minuuttia jäljellä.
Tehdään kaikki.
Haluan vain avoin Etsi tänne ja varma, että en itse asiassa soittaen -
En kutsu kupla lajitella.
Katsotaanpa vaihtaa tämän valinnan lajitella.
tehdä kaikki. / löytää.
Etsitään 42.
Tällä kertaa aiomme kulkea lajittelemattoman lista, koska se olisi lajitella
Ensimmäinen, per löydä koodia, - pitäisi lajitella Ensimmäinen käyttämällä lajittelu ja sitten
etsiä jotain.
Peukkuja kaikille.
>> Hyvänen aika.
Hei, sydämeni sykki.
Niin, että on oikea.
Itse asiassa, jos me juoksimme tämä lisää laajasti, koodi, niin pitkälle kuin voin
kertoa, on täysin oikeassa.
On joitakin ehdotuksia Olisin sinulle.
Esimerkiksi 15 ja 16 näyttävät hieman tarpeeton.
Tuntuu siltä, ​​et välttämättä täytyy säästää sekä niitä.
Jos sinulla on pienin sijaintia, voit voi helposti löytää pienin arvo
vain kirjoittamalla arvot i.
>> Joten jos olisin tarkoitus luokittelu koodia, jonka aion itse asiassa olla, olisin
luultavasti ottaa pois kohta, jos sisältyvät molemmat, koska olet
ei tarvitse molempia muutetaan.
Jos sinulla on sijainti, voit hyvin helposti saada arvoa.
Ja se tuntuu hieman oudolta tallentaa molemmat.
Ehkä ei edes ota piste, mutta varmasti kommentti, että se on ehkä
ei tyylillinen valinta sinun täytyy tehdä.
Tietenkin, koodi vielä toimii erittäin hyvin.
>> Joten valitettavasti emme päästä kupla lajitella.
Olen pahoillani siitä.
Teimme loppuun valinta tavallaan.
Onko kellään mitään viimeistä kysymystä noin valinta lajitella?
>> OK, ennen kuin pää pois, haluan sinun avatkaa Chrome-selain.
Anteeksi, että oli vain räikeä plug yhdenlaista internet-selain.
Voit avata minkä tahansa selaimen, mutta se tulee todennäköisesti Chrome.
Ja mennä tähän seuraavilta verkkosivuilta -
sayat.me/cs50.
Jos et kirjoittamalla tietokoneen juuri nyt, olet selvästi
ei tee sitä, Tom.
>> Ja tee se joko oikealle nyt tai seuraavan tunnin -
antaa minulle palautetta.
Tämä on vain osassa kaksi.
Meillä on paljon enemmän yhdessä, niin minä on paljon varaa parantaa.
Olen toivottavasti teki myös joitakin asioita hyvin.
Joten voit tehdä minut tuntemaan kaikki paha, mutta jos haluat myös antaa minulle hymiö
kasvot, olisin kiitollinen, että samoin.
Täytä että sisään
>> Ja yksi minuutti jäljellä, että oli viikolla kolme.
Minä seistä ulkona vähän jos sinulla on kysyttävää.
Nähdään kaverit luento huomenna.