>> Jason HIRSCHHORN: Maligayang Pagdating sa linggo tatlo, sa lahat.
Mayroon kaming abala ngunit kapana-panabik na seksyon na nauna sa atin.
Kaya una, dahil ginawa namin ang ilan usad sa mga kurso ngunit kami pa rin
na may maraming mga pag-aaral ang natitira upang gawin, ako ay pagpunta upang ipakita sa iyo guys ilang mga mapagkukunan
na dapat patunayan upang maging hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang bilang ikaw lapitan hindi lamang ang iyong mga
Nagtatakda problema, ngunit din digest lahat ng ang materyal bigyan ka namin ng guys sa
aralin at shorts at seksyon.
>> Pagkatapos kami ay pagpunta sa gastusin ang unang 20 sa 25 minuto ng seksyon ng pagpunta sa paglipas ng
GDB, na maaari o hindi maaaring magkaroon ng ginamit sa puntong ito, ngunit ito ay isang
hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang na tool na habilin makatulong sa iyo na i-debug ang iyong mga program.
Ang isang pulutong ng sa iyo ay maaaring ginamit printf sa gitna ng iyong programa upang malaman
kung ano equaled isang variable.
GDB ay mas mahusay kaysa sa printf at ay hindi magtaas ng iyong code dahil ikaw
patakbuhin ito sa isang executable file.
Kaya ipagpapatuloy namin sa ibabaw ng 10 pinaka-kapaki-pakinabang mga utos na kailangan mo para sa GDB, at kami ay
pagpunta sa pumunta sa isang exercise magkasama kaya sa problema itakda ang tatlo at higit pa, mo
Maaaring gamitin ng GDB upang matulungan ang debug ang iyong mga program.
At sa wakas, kami ay pagpunta sa pumunta sa paglipas ng ilang pag-uuri at paghahanap ng mga algorithm
na nakita mo sa lecture, at kami ay pagpunta sa aktwal na code, hindi lang
pseudocode, ngunit code binary paghahanap, uri ng bubble, at uri pagpili.
>> Kaya una sa lahat, gusto kong pumunta sa ibabaw ng mga mapagkukunan.
Ito ay isang malawak na listahan, at ito ay mas maliit na font dahil nagkaroon ako ng maraming upang
magkasya sa dito.
Ngunit ang mga ito ay makatulong hindi lamang sa iyo, muli, na may mga hanay ng problema at
impormasyon digesting mo natutunan, ngunit Talagang, dumating oras pagsusulit, ang mga ito ay
maging hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang.
Kaya unang, isinaad ang panayam.
Kung pupunta ka sa cs50.net/lectures at mag-scroll sa mga tukoy na linggo at araw,
makikita mo na may mga tala para sa bawat magbigay ng panayam, na kung saan ay hindi lamang isang
transcript, ngunit isang edit na bersyon ng ano ang saklaw sa lecture na may code
mga snippet at iba pang mga kapaki-pakinabang na kakanin.
Masidhing kong inirerekumendang ng pagpunta sa paglipas ng mga.
At pagkatapos pati na rin, may source code makukuha mula sa bawat panayam.
At muli, ang mga slide ay magkakaroon din maging magagamit online sa cs50.net/sections
ngayong gabi.
>> Kaya pangalawang ay ang mga shorts bawat linggo na mga paksa na takip, karaniwang 5-15
minuto ang haba.
At yaong sana ay magbibigay sa iyo ng isang mahusay na panimulang aklat sa pagbasa sa iba't ibang mga paksa.
Third -
at ito ay bagong-bagong ito taon - ay study.cs50.net.
Kung hindi ka pa naka-check out ito, ako lubos na inirerekomenda na gagawin mo ito.
Makakuha sa iyo upang pumili ng isang paksa.
Mayroon kaming dose-dosenang mga paksa sa doon.
Kaya halimbawa, kinuha mo ang Mga Pag-andar.
Nagbibigay ito sa iyo ng ilang mga slide at mga tala sa mga pag-andar.
Iyon ang aktwal na ang mga slide na TFs ay hinihikayat na gamitin sa panahon ng aming
mga presentasyon sa seksyon.
Mayroong mga tip at trick para sa pagharap rin may mga pag-andar, at mayroong
mga problema na kasanayan na tutulong sa nagtatrabaho ka sa mga pag-andar.
Bigyan din kami sa iyo ng mga link sa mga maikling sa mga pag-andar at ang mga oras na pag-andar
na makabuo sa panayam.
Bagong ito Kaya study.cs50.net, tatak taon, ang isang hindi kapani-paniwala mapagkukunan.
>> Susunod, mayroon akong tao, na kung saan ay manu-manong ang utos na maaari mong patakbuhin sa
linya ng command.
Kaya kung mayroon kang anumang mga katanungan tungkol sa isang utos, halimbawa, ribete, na namin
Nakaranas huling linggo sa panahon ng seksyon at malamang iyong nakaharap sa
itakda ang iyong problema kapag pagpunta sa pamamagitan ng buuin ang code, ngunit kung nagta-type ka ng tao
ribete, makakakuha ka ng mga pahinang iyon ay nagsasabi sa iyo ang lahat ng tungkol sa ribete.
Binibigyan ka Nag ano na aabutin, ang mga parameter na aabutin, pati na rin ang balik
uri at isang maikling paglalarawan ng na function.
>> Kaya tingnan ang ribete.
Maaari itong maging isang maliit na labis sa mga salita at nakakalito, kaya kung minsan mahanap ko na
lang sa Pag-Google kung ano ang nais kong malaman ay ang pinakamahusay na paraan upang mahanap ang kasagutan.
Kaya pagsasanay sa Google.
Kumuha ng magandang sa Google.
Ito ay ang iyong magiging matalik na kaibigan.
>> Pati na rin ang Google, kung hindi ka maaaring mahanap ito sa Google, cs50.net/discuss, ito ay
ang forum ng talakayan.
Malamang kung may tanong ka, isa ng iyong 700 + mga kapantay din itong na
pinag-uusapan at maaaring nagtanong ito nasa talakayin
mga forum at ito sinasagot.
Kaya kung mayroon kang isang karaniwang tanong o may tanong ka na sa tingin mo
siguro iba pang mga tao ay maaaring magkaroon ng, tingnan ang cs50.net/discuss.
>> Sa wakas, ang huling dalawang, kung nais mong makipag-usap sa isang tunay na tao, opisina
oras Lunes hanggang Biyernes.
Mayroong oras online office din para sa mga mag-aaral extension.
At huling ngunit tiyak na hindi bababa sa, sa akin, exclamation point.
Ikaw ang lahat ng mayroon ang aking impormasyon sa pakikipag-ugnay.
Kung kailangan mo ng anumang bagay, mangyaring hindi kailanman mag-atubiling makipag-ugnay sa akin.
Laging mag-atubili na gawin ito.
Napakaluwag ilan sa ikaw ay nagdagdag sa akin sa Gchat, nang sa gayon ay naging disappointing,
ngunit sana ay na kailangan baguhin sa pagitan ng ito at mga susunod na seksyon.
Ang anumang mga katanungan sa ngayon sa mga mapagkukunan?
Mahusay.
>> Sa wakas, isa pang plug para sa feedback, sayat.me/cs50.
Maaari mong ibigay sa akin ang hindi kilalang feedback sa kung paano ako paggawa.
Iyon ay talagang kapaki-pakinabang na noong nakaraang linggo.
Nakakuha ako ng ilang mga komento mula sa iyo guys karapatan pagkatapos seksyon, plus mula sa
iba pang mga mag-aaral na napanood na ito sa panahon ng linggo, at ito
ay hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang.
Ako ay pagpunta sa subukan at limitahan ang aking paggamit ng ang salitang "matamis," ngunit ipapakita ko sa aking
sigasig at kaguluhan sa ibang mga paraan.
Ngunit mayroong iba pang mga karagdagang pangngalan feedbacks,
parehong mga plus at delta.
Kaya mangyaring, bigyan ako mo guys feedback sa iyong mga hanay ng problema.
Huwag mag-atubiling magbigay sa akin ng feedback sa aking pagtuturo.
Ako dito para sa iyo guys.
>> Mahusay.
Iyon ay ang lahat ng mayroon ako para sa ang unang seksyon.
Kahit sinong mayroon ba anumang mga tanong sa ngayon?
At mayroon akong isang tala para sa ang control center.
Mga mag-aaral ng Extension na messaged sa akin sinasabi na hindi sila nakakakuha ng anumang mga audio,
ngunit iyon ay wala na sa aking kapangyarihan upang ayusin.
Kaya sana, na hindi nakakaabala nalutas sa ilang sandali.
Kung na pinapanood mo sa online, hi, ngunit hindi ka maaaring marinig sa akin.
>> Kaya unang, kami ay pagpunta upang pumunta sa pamamagitan ng GDB.
GDB, bilang hinted ako sa mas maaga, ay isang tool sa pag-debug
magkano ang mas mahusay kaysa sa printf.
Kaya upang makapagsimula sa GDB, mo guys, kung gusto mong buksan up ang iyong appliance
at gawin ang mga file na in-email ako sa iyo mas maaga - ang file na ito ay magkakaroon din maging
magagamit sa online sa isang bit -
at magpatakbo ng GDB. / ang pangalan ng file.
Una, siyempre, kailangan mong mag-compile maghain dahil GDB gumagana lamang sa
mga maipapatupad na file.
>> Ngunit kung gusto mo mang magsimulang GDB, ang unang bagay na ginawa mo,
patakbuhin mo ang GDB. / Caesar.
Kaya iyon ang pangalan ng programa kami pagpunta sa pumunta sa mga ito sa ngayon.
Kaya pupuntahan ko magsulat gumawa Caesar, na ay magbibigay sa akin ng isang executable file
dito-highlight sa berde.
At pagkatapos ay ako pagpunta sa magpatakbo ng GDB. / Cesar.
>> At doon ka pumunta.
Ang makikita mo na mayroon kami ng ilang mga teksto na nagsasabi sa akin tungkol sa mga bersyon ng GDB, na nagbibigay sa akin
ilang impormasyon warranty, at pagkatapos namin magkaroon ng GDP prompt, na kamukha uri
ng tulad ng ating linya prompt na utos, ngunit nakikita mo ito ay bukas
paren, GDB, malapit paren.
Bago kami magpatuloy at i-debug ang file na ito na ipinadala ko sa iyo ang lahat, tingnan natin hayaan
ang ilang mga kapaki-pakinabang na mga utos sa gayon kami ay may isang katuturan ng kung ano kami ay pagpunta upang masakop.
>> Ang mga utos ay nakalista dito sa pagkakasunud-sunod na sa pangkalahatan ay ko bang gamitin ang mga ito.
Kaya ko sisimulan ang aking programa sa pamamagitan ng pagpapatakbo GBD. / Pangalan ng programa,
sa kasong ito, Caesar.
At pagkatapos ay ang unang bagay na gagawin ko 99.9% ng oras ay nangangahulugan na ang uri ng break.
Na nagtatakda ng pahinga punto sa pangunahing.
Mahalaga, kung ano ang ginagawa mo doon ay ang programa ay pagpunta sa itigil sa
pangunahing sa gayon maaari mong simulan ang pagsusuri ng mga ito linya sa pamamagitan ng linya, sa halip na sa pagtakbo ang lahat
ang paraan sa pamamagitan ng.
Maaari mong hatiin sa iba't ibang mga punto sa ang iyong code, ngunit pangunahing ay karaniwang isang
magandang lugar upang magsimula.
>> Ang susunod na command ba akong magpatakbo ay run.
Nagsisimula na ang pagtakbo ng programa, at kung kailangan mong ipasok ang command line
mga argument, patakbuhin ito sa command na.
Patakbuhin sa mga argumento.
Kaya dahil pupunta kami sa isang bersyon ng C, na ang mo guys programa
Sinulat ni para pset dalawang -
ang isang ito, siyempre, ay may ilang mga bug sa loob nito na sana ay gagamitin namin mahanap ang -
kami ay pagpunta upang tumakbo sa run na may ilang mga utos argumento linya dahil Caesar,
bilang alam mo guys sa bawat ang problema itakda ang spec, tumatagal ng ilang
utos argumento linya.
>> Ang susunod na ilang mga command, ang susunod na isa ay aktwal na tinatawag na susunod.
Isa na dadalhin ka linya sa pamamagitan ng linya sa pamamagitan ng iyong programa.
Kaya pagpindot n pagkatapos Enter dadalhin ka sa susunod na linya, e-execute
ang nakaraang mga line.
Tumatagal ng hindi lamang sa iyo Hakbang sa sa susunod na linya, ngunit ito
dadalhin ka sa loob ng function.
Kaya kung kayo ay nagsulat ng isang function na sa ang iyong code o kung nais mong tuklasin ang isang
upang i, halimbawa, maaari mong pindutin s, at sa halip ng pagpunta sa susunod na linya ng
ang file na kayo ay pagpunta sa pamamagitan ng karapatan ngayon, magkakaroon ka talaga lusukin
ito function at makita ang code nito.
>> Ipinapakita sa iyo ng Listahan, sa mga lubhang user friendly na format, mga 10 o kaya mga linya sa paligid
kung saan ka kasalukuyang nasa iyong code sa gayon maaari mong talagang makita ang file
sa halip ng pagkakaroon upang magpalit pabalik at balik sa pagitan ng iba't ibang mga view.
I-print ay tulad ng printf, nagpapahiwatig ng bilang ng pangalan nito.
Iyon ay nagpapakita sa iyo kung ano ang katumbas ng isang variable.
>> Lokal Impormasyon ay talagang kapaki-pakinabang.
Ito ay isang espesyal na bersyon ng naka-print na.
Ipinapakita sa iyo ng mga lokal Impormasyon ng lahat ng mga lokal variable, prints out ang mga ito sa lahat para sa iyo
na magagamit sa kasalukuyan.
Kaya ako sa pangkalahatan, sa halip ng pagkakaroon i-print ang apat na variable na ako
malaman ang tungkol sa kung ako sa isang para sa loop, para sa Halimbawa, isulat ko lang ang mga lokal na impormasyon,
at sasabihin nito ipakita sa akin kung ano ang aking counter i katumbas, pati na rin ang array na ako
nagtatrabaho sa Kapantay.
>> Sa wakas, magpatuloy.
Ang pag-type ng break tumitigil mo sa break na punto.
Pwede kang maglakad sa pamamagitan ng linya sa pamamagitan ng linya sa susunod at hakbang.
Magpatuloy nagpapatakbo ng mga programa sa iyong susunod na masira punto o hanggang sa pagkumpleto ng kung
wala nang mga puntos break.
Huwag paganahin ang nag-aalis ng break sa mga puntos kung ikaw nagpasya ang bakasyon sa pangunahing noon ay
hindi naaangkop, na nais mong itakda ito sa ibang lugar.
At sa wakas q, quit, hindi nakakaabala GDB.
>> Kaya ang program na ito,. / Caesar, kami ay pagpunta upang tumingin sa pamamagitan ng ngayon at kami
pupunta na gamitin GDB upang mahanap ang mga bug sa programang ito.
Pinatatakbo ko ang program na ito nang mas maaga sa Suriin 50, at Nakakuha ako ng isa pagsimangot.
Lahat ito umiral, ito pinagsama-sama, ito pumasa sa isang pulutong ng mga pagsubok, ngunit para sa
sa ilang kadahilanan, hindi ito pumasa sa ikalimang pagsubok, pag-on BARFOO, ang lahat ng caps, sa
E-D-U-ko-R-R, ang lahat ng mga pag-cap, gamit ang tatlong bilang isang susi.
Nakatanggap ako malapit sa katangian.
Nakatanggap ako off sa pamamagitan ng isang liham.
Kaya mayroong ilang maliliit na pagkakamali in dito.
Ako ay tumingin sa pamamagitan ng aking code.
Hindi ko maisip ito.
Sana, ka guys ay maaaring makatulong sa akin malaman kung ano ang bug na ito ay.
>> Kaya iyon ang error Ikinalulungkot namin naghahanap para sa.
Ng ilipat sa GDB Hayaan.
Muli, patakbuhin ko ang GDB. / Caesar, kaya ngayon kami sa GDB.
At kung ano ay ang unang bagay na dapat kong gawin?
Lamang na naipasok ko GDB.
Isang tao ninyo ako ng magandang command upang ipasok.
>> AARAL: Hatiin pangunahing.
>> Jason HIRSCHHORN: Hatiin pangunahing.
Hindi kapani-paniwala.
Ni-type na in Hayaan
Ikaw guys Pwedeng manood hanggang dito o sundin kasama sa iyong mga computer.
Hatiin pangunahing, at makikita mo ang isang break na punto ay naitakda sa -
nagbibigay ito sa akin ang ilang kakaiba memory address, at nagbibigay din ito sa akin ang numero ng linya.
Kung ako ay upang lingunin ang file na ito, Gusto ko mapagtanto na pangunahing
nangyari sa 21 linya.
Ano ang dapat kong patakbuhin ang susunod?
Tumatakbo ba ang aking programa?
Hindi.
Kaya ano ang dapat kong patakbuhin ang susunod?
>> AARAL: Magpatakbo.
>> Jason HIRSCHHORN: Magpatakbo.
Dapat ba akong magpatakbo lamang run, o dapat Nagdagdag ako ng ilang iba pang mga bagay sa?
>> AARAL: Patakbuhin sa mga argumento.
>> Jason HIRSCHHORN: Patakbuhin sa ang mga argumento command.
At dahil ako debugging isang napaka-tukoy na kaso, ang dapat kong ipasok na
argumento command line.
Kaya ko makikita pinatatakbo ng tatlong, na kung saan ay, muli, ang output ang nakuha ko mula sa Suriin ang 50.
Simula sa programa.
Pumunta kami sa pamamagitan ng isang pares ng mga linya.
Makikita mo na ngayong makita na kami sa 21 linya.
Paano ko malalaman na kami sa 21 linya?
Dahil kung tiningnan mo sa kaliwa ng aking mga terminal na window, doon
ito sabi ni 21 linya.
At na nagbibigay sa akin, talaga, ang code na sa 21 linya.
Kaya misspoke ako nang mas maaga.
Main ay hindi tunay na sa 21 linya.
Main ay isang pares ng mga linya sa itaas 21.
Ngunit sa 21 linya, na kung saan kami naka-breaking.
Ang linya ng code ay hindi pa pinaandar.
Iyan ay mahalaga.
Ang linya ng nakikita mo ay hindi pa pinaandar.
Iyan ang susunod na linya ng code ikaw ay tungkol sa upang isakatuparan.
>> Kaya sa susunod na linya, bilang ka guys ay marahil pamilyar sa, ay ito
kondisyon ng pagsuri upang makita kung mayroon akong ipinasok isang argumento command line.
At isang upang i, ano ay ang pangalawang bahagi ng na ginagawa?
Ano ang isang upang i?
>> AARAL: Ang pagbabago ng ito sa isang integer.
>> Jason HIRSCHHORN: Paumanhin?
>> AARAL: Ito ay ang pagbabago ng argumento sa isang integer.
>> Jason HIRSCHHORN: Kaya isang upang i nagbabago ARG v1 mula sa isang string sa isang integer.
At pagkatapos ay kung ano ang ito check?
>> AARAL: Kung mayroong pangalawang linya ng command argumento, bukod
mula sa pagtakbo sa programa.
>> Jason HIRSCHHORN: At ano ang ang ikalawang kalahati ng ito
Check ng Boolean expression?
Ito bahagi sa ibabaw dito, isang upang i?
>> AARAL: Kung ito ay negatibo.
>> Jason HIRSCHHORN: Paggawa ng mga sigurado kung ano?
>> AARAL: Pagtiyak ito ay, sa katunayan, positibo.
>> Jason HIRSCHHORN: Mismong.
Ito ay pagsuri upang makita kung ito ay negatibo, at kung ito ay negatibo, ako
magkaroon ng isang pakiramdam ng susunod na linya baka ay sa akin yelling sa user.
Kaya pindutin ng pagtatapos upang isakatuparan ang line ipaalam.
Hindi namin makita na linya na guys siguro inaasahan upang makita ang yelling sa
ng gumagamit at pagkatapos ay bumabalik, dahil ang linyang ito ay hindi nagsagawa.
Naipasok ko 3.
Kaya ko, sa katunayan, ipasok ang dalawang utos mga argument ng linya, at 3 ay
mas mataas sa zero.
Kaya nakita namin na linya, ipinatupad namin, ngunit hindi namin ginawa hakbang
sa loob ng kung kondisyon.
>> Kaya ngayon, susunod, nakikita ko ako pagtatakda int key ay katumbas ng isang upang ARG i v1.
Kaya na sa akin ang paglikha ng isang variable na key.
Kaya kung i-print ko out key ngayon, dahil na nagbibigay-daan sa iyo upang makita ang
halaga sa loob ng variable, key ay katumbas ng 47.
Iyan ay kakaiba, ngunit siyempre, na dahil mayroon akong hindi
pinaandar na linya pa.
Kaya ngayon kung pindutin ko n, gawin na linya, at gawin sa pag-print sa key, key ay magiging katumbas 3,
na kung saan ay kung ano ang inaasahan namin ito upang pumatas.
>> Kaya muli, sa GDB, ang linya mo tingnan hindi mo pa pinaandar.
Mayroon kang i-hit n o s o isang numero ng iba pang mga command upang aktwal na
isakatuparan na linya.
I-print key.
Key ng sa 3.
Sa ngayon, kaya magandang.
String ay plain text.
Isakatuparan na linya Hayaan.
Nakakuha ako ng isang string mula sa gumagamit.
>> Tingnan sa aking Check 50 Hayaan, ako ipasok BARFOO lahat ng caps, kaya
na kung ano ang makikita kong ipasok.
Kung ngayong mag-print ko plain text.
Makikita mo ito ay katumbas ng isang string.
Nagbibigay ito sa akin ang ilang iba pang mga kakaiba hexadecimal numero, ngunit ginagawa nito sa
katotohanang sinasabi na ang aking string ay BARFOO.
Kung Nais kong makita kung ano ang key equaled sa puntong ito, paano ko ma-check key?
>> AARAL: I-print ang key.
>> Jason HIRSCHHORN: I-print ang key, eksakto.
At talagang, mayroong isang shortcut.
Kung makakuha ka ng pagod ng pag-type ng naka-print, Maaari mo lamang i-type p.
Kaya p key gumagana ang parehong eksaktong bagay.
At muli, makita ko ito ay katumbas ng 3.
>> Kung Nais kong malaman kung ano ang parehong key at BARFOO equaled sa parehong oras
ngunit ako ay pagod ng pag-type ng bawat isa out isa-isa, ako
ma-type lokal na impormasyon.
Iyon ay nagbibigay sa akin ang key ay katumbas ng 3.
Plain text ay katumbas ng BARFOO.
Ay nagbibigay sa akin din ito ng dalawang mga bagay na kakaiba sa tuktok, ito variable i at
variable n ito.
>> Yaong ay talagang umiiral sa aking pangunahing programa.
Hindi pa namin nakatagpo ang mga ito, ngunit bilang isang preview, mga
umiiral sa aking para sa loop.
Kaya ngayon, kasing-halaga ng mga ito ng ilang kakaiba mga numero dahil hindi sila naging
pa nasimulan, ngunit umiiral pa rin sila sa memory, sa gayon ito ay naka-set lamang
sa ilang mga halaga ng basura.
Ngunit namin makita susi sa plain text doon.
>> Kaya pupuntahan ko maisagawa ang linyang ito, 34 linya, ang para sa loop.
Kami ay pagpunta sa tumalon papunta sa para sa loop sa pamamagitan ng pagpindot n.
At kami ay sa loob ng para sa loop.
Humihingi kami sa aming unang tseke.
At muli, ang mga ito ay dapat na uri ng hitsura pamilyar sa iyo dahil ito ay isang
Caesar programa na ay isinulat, ngunit muli, ay may ilang uri ng mga bug.
>> At ngayon kung gagawin ko lokal na impormasyon, dahil ako sa loob na para sa loop, makikita mo ang
na katumbas i zero, bilang inaasahan namin.
Iyon ay kung ano set namin ito sa at nasimulan ito sa sa para sa loop.
n ay katumbas ng 6.
Iyon din saysay dahil itinakda namin ito sa strlen ng plain text.
Kaya gusto kong gawin lokal impormasyon o i-print upang variable madalas upang tiyakin na
lahat ng bagay ay palaging kung ano Inaasahan ko ito upang pumatas.
Sa kasong ito, lahat ng bagay ay kung ano ang aking inaasahan ito upang pumatas.
>> Kaya ni magsimulang umusad sa pamamagitan ipaalam ito para sa loop.
Ang linya ako sa 36 linya, kung plain teksto i ay mas malaki sa isang at plain
teksto i mas mababa sa o katumbas ng z.
Alam ko ang aking problema ay hindi kasama ang aking unang sulat, ito ay sa ikalawang sulat.
Kung titingnan namin pabalik sa Check 50, B ang papunta sa E fine.
Ako paglalaan ng A at nag-iiwan ito bilang isang A, hindi ang pagbabago nito sa D. Kaya
isang bagay ang mali sa ang ikalawang sulat.
Kaya ako pupunta upang ilipat doon sa isang segundo.
>> Ngunit kung ko nais upang suriin kung anong plain teksto equaled ako sa ang partikular na
kaso, sa tingin ko dapat itong maging ano?
Ano ang dapat plain text na kasing-halaga ko sa ito unang pag-ikot sa pamamagitan ng para sa loop?
>> AARAL: Zero?
>> Jason HIRSCHHORN: Plain text ng ko?
Kaya dapat itong maging capital B. ko, siyempre, ay katumbas ng zero, ngunit plain text
bracket zero closed bracket ay katumbas ng B dahil string, bilang nakita natin noong nakaraang linggo,
ay array, kaya namin nakukuha ang unang character mula iyon.
Kaya muli, kung na-print ko out plain text ng Ako, ko, sa katunayan, kumuha ng character
B. At na kapong baka, tama?
Hindi ko talagang magkaroon ng plain text I. Iyon ay hindi isa sa mga variable ba akong magtakda
o nasimulan, ngunit maaari kang mag-print ang isang buong host ng mga bagay
kung nais mong.
>> Ngunit ng ilipat sa pamamagitan ipaalam.
Kung plain text ko ay mas malaki sa A at plain text ko ay mas mababa sa o katumbas ng
Z, na malinaw na ay totoo dahil mayroon kaming may malaking titik B. Pupunta ako upang mapatakbo
ilang mga command na ito.
Nakita namin na ang math noong nakaraang linggo, kaya kami ay dalhin ito para sa ipinagkaloob na ito gumagana
karapatan ayon sa Suriin ang 50.
>> Ang mga kulot tirante, ang unang isa Nagpakita na ako ay exiting ang kung
kondisyon, nagpakita ang pangalawang isa na ako sa paglabas ang para sa loop.
At kaya ngayon kapag pindutin ko Susunod, namin makikita Ikinalulungkot namin pabalik sa para sa loop muli.
Kami ay pagpunta sa pamamagitan ng para sa muli loop.
Ni aktwal lusukin ang pangalawang Hayaan pag-ulit ng para sa loop at uri
info lokal.
>> Kaya kami sa pangalawang pag-ulit sa aming para sa loop.
Ay katumbas ng 1 ko, na inaasahan namin.
N ay katumbas ng 6, na inaasahan namin.
Key ay katumbas ng 3, na inaasahan namin.
At plain text, makikita mo, ay katumbas ng EARFOO ngayon, hindi BARFOO ngayon dahil
sa aming nakaraang iteration, ang B ay pinalitan sa isang kabisera E. Kaya kami tungkol sa
upang makaharap ang problema, kaya ito ay kung saan kami ay pagpunta sa
sumisid sa pag-debug.
Ngunit ang sinuman ay may anumang mga katanungan tungkol sa kung ano ang iyong nagawa namin sa ngayon?
Hindi kapani-paniwala.
>> Kaya hindi namin tungkol sa upang maisagawa ito kung kondisyon, plain text bracket ko sarado
bracket mas malaki kaysa sa A at plain text ko mas mababa sa o katumbas ng Z. Ngunit bago
Pumunta ako sa na, dahil ito ay kung saan Alam ko ang aking error na ito ay, gusto kong ituro
out plain text ng I. Kaya maglagay ng print out ipaalam.
Ito ang kasing-halaga ng character na A, kaya na Mukhang sa ngayon, ang lahat ay mahusay at magandang.
>> Kaya inaasahan ko line na ito per aking logic, Dapat na totoo sa linyang ito.
Ito ay isang malaking titik.
Ngunit kung pindutin ko n, kami mapagtanto na ito linya, sa katunayan, ay hindi nagsagawa.
Ako jumped down sa iba kung.
Bakit mo na mangyayari?
>> AARAL: Dahil mayroon kang ang iyong mga kondisyon ng plain text ay mas malaki
kaysa A, hindi katumbas ng o mas mataas kaysa.
>> Jason HIRSCHHORN: Kaya nagkaroon ko ang aking plain text Ko ay mas malaki sa A, hindi mas malaki
mababa sa o patas sa.
Kaya malinaw, ang kabisera A ginawang hindi magpalitaw ito kung kondisyon, at ginawa namin
hindi lusukin ito, at ginawa namin hindi gawin ang mga kinakailangang shift.
Kaya na ito, talagang.
Naisip ko ang aking bug.
Kaya kong bumalik sa aking source file, baguhin ito, at i-update ito at
patakbuhin ang Suriin 50 ulit.
>> Ngunit masisiyahan kaming makita, para lamang sa sining ng pagtuturo ni alang-alang, kung panatilihing ako pagpunta.
Ang iba kung hindi nagsasagawa ng alinman sa, ngunit ano sa halip ay katumbas ay ang command na
na ay hindi nagbabago.
Kaya ito ay hindi nagbago sa lahat, at kung ako i-print dito plain text, ipapakita namin makita ng pagpunta
sa pamamagitan ng na para sa loop ay hindi, sa katunayan, baguhin na pangalawa ng character sa lahat.
Ito ay pa rin ng isang kabisera A.
>> Kaya muli, debugged namin ang aming error.
Namin natanto na nagkaroon Nawawala ang ilan logic.
At debugged namin ito maagang ng panahon bago talagang e-execute na linya,
ngunit sana ay napansin mo nagkaroon kami lamang pindutin ang Susunod at tumalon sa ibang tao na kung,
Ibig sabihin nito na iyon na kung kundisyon ay hindi totoo.
Kami ay hindi, sa katunayan, kumuha ng ang resulta sa inaasahan namin.
Kaya pagkatapos ay maaari kaming na-prompt, nagkaroon hindi namin naging kaya matalas, upang tumingin sa
na kung kondisyon at suriin kung, sa katunayan, ang aming mga kondisyon ay dapat suriin upang
totoo sa kasalukuyang konteksto.
>> Iyon lang ang pag-debug para sa programang ito.
Kahit sino ay may anumang mga katanungan ba?
Ano command na maaari kong pindutin na umalis GDB?
Q. At pagkatapos ay makikita prompt ko, huminto pa rin?
Oo o hindi.
Makikita pindutin ko oo, at makikita na isinara ko ang GDB.
>> Kaya na noon ay isang mabilis panimulang aklat sa pagbasa sa GDB.
Talaga, sa isang tunay na sitwasyon, Ginawa ko ito sa oras ng opisina.
GDBed ko ito eksaktong programa sa oras ng opisina sa isang mag-aaral.
At kung pumunta kami pabalik sa mga utos Nakita namin bago, ginamit namin break na main, una
bagay ginawa namin.
Ginamit namin run may mga argumento command line, ikalawang bagay ginawa namin.
Ginamit namin sa tabi ng maraming upang ilipat amin sa pamamagitan ng mga linya.
At muli, ang maikling bersyon ng susunod ay n.
Iyan ay sa mga panaklong sa kulay abong sa slide.
>> Hindi namin gamitin ang hakbang na ito, ngunit kami ay hindi kinakailangang kailangang para sa kasong ito.
Ngunit maaari naming gamitin ito sa isang bit mamaya sa ngayon kung dine-debug namin, para sa
kapag binary Halimbawa, binary paghahanap paghahanap ay tinatawag na sa isang hiwalay na
pag-andar ngunit mayroong ang ilang mga error sa mga ito.
Kami ay pagpunta sa nais na lusukin ang tawag sa binary paghahanap at
talagang i-debug ito.
Ilista hindi namin ginawa gamitin ang alinman dahil nagkaroon kami ng mahusay na pakiramdam ng aming code, ngunit kung ako
ay nais na magkaroon ng ideya ng kung ano ang code ko noon ay sa paligid, kaya kong gamitin na lamang ang listahan.
>> I-print namin ginamit, mga lokal info namin gagamitin.
Magpatuloy hindi namin ginawa kailangang gamitin sa na ito kaso, ni ay kailangan naming gamitin
huwag paganahin, ngunit ginawa namin ang paggamit quit.
Muli, ang mga 10 command, pagsasanay sa kanila.
Kung nauunawaan mo ang mga 10 command, dapat kang magtakda para sa pag-debug sa anumang
maglalabas may GDB.
>> Kaya hindi namin tungkol sa upang pumunta sa, muli, upang ang pinakabuod ng seksyon ngayon, pagpunta sa ibabaw
mga pag-uuri at paghahanap algorithm.
Bago namin gawin ito, muli, anumang mga katanungan, mga komento, mga alalahanin para sa GDB?
Kaya Pupunta lahat ng tao upang gamitin ang GDB sa halip na printf?
Kaya lahat ng tao, alang-alang sa habang-buhay ni, lahat ng tao ay nodding kanilang ulo pakanan
ngayon, kaya ako makakakita ka sa oras ng opisina at ang lahat ng mga TFs ay nakikita at
Makikita nila sabihin, ipakita ninyo sa akin kung paano gamitin GDB, at magagawa mong
upang ipakita ang mga ito, i-right?
Uri ng?
Siguro sana.
Cool.
>> Kaya kami ay pagpunta sa ilipat sa pag-uuri at paghahanap.
Makikita mo ang mayroon akong isang listahan na pinagsunod-sunod para sa atin, ngunit iyon ay hindi papunta sa
upang maging palagi ang kaso.
Kaya sa mga problema set pagtutukoy para sa itakda ang problemang tatlong, mayroon kang shorts
na maaari mong panoorin, at ito talaga humihiling sa iyo upang mapanood ang mga shorts.
Gayundin sa panayam noong nakaraang linggo, nagpunta kami sa ibabaw ng maraming mga algorithm, sa gayon ako ay
hindi pagpunta upang patagalin sa klase ng pagpunta higit sa muli mga algorithm o guhit
mga larawan para sa kung paano ang mga algorithm gumagana.
Muli, ang impormasyon na iyon maaari mong muling sa panonood magbigay ng panayam, o na impormasyon
ay nakunan outstandingly sa shorts para sa mga paghahanap na ito, lahat ng
na kung saan ay available sa cs50.net.
>> Kaya sa halip, kung ano kami ay pagpunta sa gawin ay isulat ang mga programang ito.
Mayroon kaming isang katuturan, isang sakit sa modelo, kung paano gumagana ang mga iyon, at kung ano ang kaya namin pagpunta
upang gawin ay ang code ang mga ito para sa real.
Kami ay pagpunta sa i-mental modelo na, na larawan, kung nasain mo, papunta sa
aktwal na code.
At kung ikaw ay isang maliit na nalilito o maaso sa mental modelo, ako lahat-lahat
Nauunawaan.
>> Hindi kami talaga ng pagpunta sa tumalon sa code kagayat.
Kaya habang ang pagsenyas na ito sa slide na ito ay humihingi ng mo sa code ng binary paghahanap, at
talaga, isang umuulit na bersyon ng binary paghahanap, ang unang bagay na ako
gusto talaga mo lang gawin ay sumulat ng ilang pseudocode.
Kaya ikaw ay may sakit sa modelo na ito ng kung paano gumagana ang binary paghahanap.
Ilabas isang sheet ng papel kung mayroon kang isa maluwag sa loob magagamit, o magbukas ng isang
text editor, at Gusto ko lahat ng tao na magsulat.
Dalhin apat na minuto upang isulat ang pseudocode para sa binary paghahanap.
>> Muli, isipin ang tungkol sa sakit sa modelo na iyon.
Kukunin ko dumating sa paligid kung mayroon kang mga katanungan at maaari naming gumuhit ng larawan out.
Ngunit una, bago namin simulan ang programming, Gusto kong isulat ang
pseudocode para sa binary paghahanap kaya kung kailan namin makisalamuha, mayroon kaming ilang mga direksyon tulad
upang kung saan dapat kami magtungo.
>> AARAL: Maari naming ipagpalagay ang hanay ng mga mga halaga makuha namin ay naka-pinagsunod-sunod?
>> Jason HIRSCHHORN: Kaya para sa binary paghahanap upang gumana - mahusay na tanong - sa iyo
kailangang kumuha sa isang pinagsunod-sunod array ng mga halaga.
Kaya ipinapalagay ay ito ay gagana.
Susubukan naming bumalik sa slide na ito.
Makikita mo sa mga lilang ang pag-andar pagpapahayag ay bool binary_search int
halaga, int value, int n.
Ito ay dapat magmukhang pamilyar kung ikaw ay na lumalapit o nakuha ang iyong
mga kamay marumi gamit ang hanay ng problema.
>> Ngunit iyon lamang ang iyong mga pag-andar na pagpapahayag.
Muli, hindi dapat kailangang mag-alala tungkol sa na magkano sa panahon na ito.
Ano gusto ko talagang gawin ay tumagal apat na minuto upang pseudocode binary
maghanap, at pagkatapos ay gagamitin namin pumunta sa ibabaw na bilang isang grupo.
At ako ay dumating sa paligid.
Kung mayroon kang mga katanungan, huwag mag- libreng upang taasan ang iyong kamay.
>> Bakit hindi magdadala sa iyo ng dalawang minuto nang higit pa upang tapusin na ang pseudocode?
Alam ko na ito ay maaaring mukhang katawa-tawa na kami ay gumagastos nang sa gayon karaming oras sa
isang bagay na hindi talaga kahit sa C, ngunit lalo na para sa mga nang higit pa
mapaghamong mga algorithm at problema sets na mayroon kami upang malaman kung,
nagsisimula sa hindi nag-aalala pseudocode tungkol sa syntax, nag-aalala lamang tungkol sa
ang logic, ay hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang.
At na paraan, hindi ka naka-solve ng dalawang hindi mapaniniwalaan o kapani-paniwala na problema nang sabay-sabay.
Lamang tumutuon ka sa logic, at pagkatapos ay ilipat mo sa syntax.
>> OK.
Ni magsimula ng pagpunta sa pamamagitan ng Hayaan ang pseudocode.
Ko na nakasulat up dito, binary paghahanap pseudocode.
Susubukan naming isulat ito sa sasakay magkasama.
O kaya makakakita isulat ko ito at bibigyan mo sa akin ang mga senyas na kailangan ko.
Kaya maaari kahit sino bigyan ang unang akin linya ng pseudocode mo
Sinulat ni para sa binary paghahanap?
Oo, Annie?
>> AARAL: Habang ang haba ng listahan ay mas mataas sa zero.
>> Jason HIRSCHHORN: Habang haba ng ilista mas mataas sa zero.
At muli, makita namin ang ilang C-naghahanap syntactical bagay sa dito.
Ngunit karamihan sa mga ito ay nasa wikang Ingles.
Ba ang sinuman magkaroon ng anumang mga line nila ilagay bago ito sa kanilang palsipikado-code?
>> AARAL: Kumuha ng isang array ng pinagsunod-sunod ng mga numero.
>> Jason HIRSCHHORN: Isinulat ni Ikaw "makakuha ng isang array ng pinagsunod-sunod ng mga numero. "Ayun sa
function na deklarasyon, magpapadala kami ay pagpasa isang array ng pinagsunod-sunod ng mga numero.
>> AARAL: [hindi marinig].
>> Jason HIRSCHHORN: Kaya magkakaroon kami ng iyon.
Ngunit oo, kung kami ay hindi mayroon na, kami kakailanganin upang pagbukud-bukurin ang aming hanay ng mga
mga numero, dahil binary paghahanap Gumagana lamang sa pinagsunod-sunod array.
Kaya habang haba ng listahan ay katumbas ng zero, ako pagpunta sa ilagay sa ilang mga kulot tirante
upang gawin itong hitsura ng kaunti mas katulad C. Ngunit habang, tila upang i-map sa isang
habang loop, kaya sa loob ito habang loop kung ano ang kailangan namin upang
gawin para sa binary paghahanap?
>> May ibang na hindi sa akin ibinigay na isang sagutin pa ngunit sino ay sumulat na ito?
>> AARAL: Pumunta sa gitna ng listahan.
>> Jason HIRSCHHORN: Tom.
Pumunta sa gitna ng listahan.
At ang tanong follow-up, kung ano ang gagawin namin sa sandaling kami ay sa
gitna ng listahan?
>> AARAL: Gagawin ng isang tseke kung na ang numero na iyong hinahanap.
>> Jason HIRSCHHORN: Mahusay.
Pumunta sa gitna ng listahan at suriin kung ang aming halaga ay doon -
hindi kapani-paniwala.
Kahit sinong mayroon ba ng ano pa man na noon ay iba kaysa ito?
Iyan ay akmang-akma.
>> Ang unang bagay na aming ginagawa sa binary paghahanap ay pumunta sa gitna ng listahan at
suriin upang makita kung ang aming halaga ay doon.
Kaya ipinapalagay ko kung ang aming halaga ay doon, anong gagawin namin?
>> AARAL: bumalik kami ng zero [hindi marinig].
>> Jason HIRSCHHORN: Oo, kung ang aming halaga ay doon, natuklasan namin na ito.
Kaya maaari naming sabihin sa ilang mga paraan, gayunpaman ito function ay tinukoy, sabihin namin ang user
natuklasan namin na ito.
Kung ito ay hindi doon, bagaman, na kung saan nakakalito ito ay nakakakuha.
Kaya kung ito ay hindi doon, ibang tao na nag- ay nagtatrabaho sa binary paghahanap o
ay isang ideya na ngayon, anong gagawin namin?
>> AARAL: Tanong.
>> Jason HIRSCHHORN: Oo?
>> AARAL: Ay ang array na pinagsunod-sunod?
>> Jason HIRSCHHORN: Oo, ipinapadala namin sa pag-aakala ang array ay naka-pinagsunod-sunod.
>> AARAL: Kaya pagkatapos ay mayroon kang upang suriin kung ang halaga na iyong nakikita ay mas malaki sa
ang halaga na nais mo, maaari mong ilipat ang sa gitna ng iba pang kalahati.
>> Jason HIRSCHHORN: Kaya kung sa gitna ng ang listahan ay mas malaki kaysa sa kung ano kami ay
hinahanap, pagkatapos ko namin kung ano?
Ilipat namin saan?
>> AARAL: Gusto mong ilipat sa ang kalahati ng listahan na may
mga numero ng mas mababa kaysa sa na.
>> Jason HIRSCHHORN: Kaya kami ay tumawag na sa kaliwa.
Kaya kung gitna ay mas malaki, maaari naming maghanap ang natitira kalahati ng listahan.
At pagkatapos ay sa pamamagitan ng paghahanap, kung ano ang ibig sabihin ko sa pamamagitan ng paghahanap?
>> AARAL: [hindi marinig].
>> Jason HIRSCHHORN: pumunta kami sa gitna.
Talaga namin ulitin ang bagay na ito.
Pumunta namin pabalik sa pamamagitan ng aming habang loop.
Bibigyan kita ng ang huli -
pa man, kung, gitna ay mas mababa sa kung ano ang namin, ano ang gagawin namin dito?
>> AARAL: Pumunta sa kanan.
>> Jason HIRSCHHORN: Paghahanap sa kanan.
Mukhang ito ay mabuti, ngunit mayroon ang kahit sino anumang bagay na maaari naming nawawala o
anumang bagay na inilagay mo sa iyong palsipikado-code?
Kaya ito ay kung ano ang mayroon kami sa ngayon.
Habang ang haba ng listahan ay mas malaki sa zero, kami ay pagpunta sa pumunta
sa gitna ng listahan at suriin kung ang aming halaga ay doon.
>> Kung gitna ay mas malaki, kami ay pagpunta sa maghanap kaliwa, iba kung ang gitna ay
mas kaunti, kami ay pagpunta upang maghanap sa kanan.
Kaya ang lahat ng mayroon kaming ilang lubos na pagkikilala sa ang mga tuntunin na ginagamit namin sa computer science
at ang mga tool na mayroon kami.
Ngunit masisiyahan na napansin mo kami ay nagsasalita sa Ingles, ngunit natagpuan namin ang isang
maraming mga bagay na tila upang i-map sa sa mga tool na mayroon kami sa aming coding tool kit.
Kaya karapatan off ang bat, hindi kami pagpunta sa aktwal pa code.
>> Ano ang nakikita namin dito sa Ingles na mga mapa on sa mga bagay na maaari naming magsulat sa C?
>> AARAL: Habang.
>> Jason HIRSCHHORN: Habang.
Kaya dito mismo ito habang mga mapa sa sa kung ano?
>> AARAL: Ang isang habang loop.
>> Jason HIRSCHHORN: Ang isang habang loop?
O marahil, higit pa sa pangkalahatan, isang loop.
Gusto naming gawin ang isang bagay nang paulit-ulit.
Kaya kami ay pagpunta sa code ng loop.
At namin alam, dahil nagawa mo na kami ito ng ilang beses at hindi na namin
magkaroon ng maraming mga halimbawa out doon, kung paano talaga magsulat ng
ito index para sa isang loop.
Kaya na ay dapat na medyo madali.
Dapat nating magagawang upang makakuha ng na Sinimulan medyo mabilis.
>> Ano pa ang nakikita namin in dito?
Ano ang iba pang mga istraktura syntaxes, mga bagay na kami ay pamilyar sa sa C, ang ginagawa namin
ay mayroon ng isang pakiramdam ng pagkakaroon ng Batay off sa mga salita na ginamit namin?
Oo, Anna?
[Hindi marinig]
lamang kidding.
Anna, sige.
>> AARAL: Kung at iba pa.
>> Jason HIRSCHHORN: Kung at iba pa - dito mismo.
Kaya ano ang mga hitsura?
>> AARAL: Ang isang kung iba statement.
>> Jason HIRSCHHORN: Oo, kundisyon, tama?
Kaya makikita marahil na kailangan namin upang sumulat ng ilang mga kundisyon.
At muli, kahit na siguro ay nakalilito sa una, sa pangkalahatan namin ay mayroon na ngayong isang katuturan
ng kung paano sumulat ng mga kundisyon at ang syntax para sa mga kundisyon.
At kung hindi namin, tingnan lamang namin ang hanggang sa syntax para sa mga kondisyon, cut at i-paste ang
na, dahil alam namin namin kailangan kundisyon dito.
Anumang iba pang mga bagay na nakikita namin na mapa papunta sa mga bagay na maaari kailangan naming gawin sa C?
Oo, Aleha?
>> AARAL: maaaring ito halata, sa pamamagitan lamang ng pagsuri kung ang isang
halaga ay katumbas ng isang bagay.
>> Jason HIRSCHHORN: Kaya paano suriin namin at - upang pumunta sa gitna ng listahan
at suriin kung ang aming halaga ay doon?
Paano ang gagawin namin na sa C?
Ano ang syntax para sa iyon?
>> AARAL: Kapantay, katumbas.
>> Jason HIRSCHHORN: Kapantay, katumbas.
Kaya ang pagsusuring ito ay marahil pagpunta upang maging isang katumbas, ay katumbas ng.
Kaya makikita natin alam kailangan namin na sa isang lugar.
At talagang, lamang sa pagsusulat ng mga ito, nakikita namin ang mga iba pang mga bagay.
Kami ay pagpunta sa may upang gumawa ng ilang operator paghahambing sa doon -
hindi kapani-paniwala.
Kaya talaga ito kamukha, sa pamamagitan ng at malaki, hindi pa namin nagsulat ng isang
salita ng C code pa.
Ngunit nakuha namin ang sakit sa modelo pababa sa pamamagitan ng mga aralin at mga shorts.
>> Sinulat ni namin palsipikado-code bilang isang grupo.
At mayroon, mayroon kaming 80% kung hindi 90% ng kung ano ang kailangan naming gawin.
Ngayon, kailangan lang namin sa code ito, na muli, ay isang
non-walang halaga problema sa paglutas.
Ngunit hindi bababa sa kami ay natigil sa mga logic.
Hindi bababa sa ngayon kapag pumunta kami sa oras ng opisina, Maaari kong sabihin, alam ko kung ano ang kailangan ko
upang gawin, ngunit maaari kang ipaalala sa akin ng syntax?
O kaya kahit na oras ng opisina ay matao, mo Kaya ba ng Google para sa syntax, sa halip
kaysa ini natigil sa logic.
>> At muli, sa halip na sinusubukan mong i-solve ang logic at ang syntax problema lahat
nang sabay-sabay, ito ay madalas na mas mas mahusay na masira ang dalawang matapang na mga problema sa off
dalawang higit na mapapamahalaan mga bago at gawin ang hindi tunay na code muna at pagkatapos ay code sa C.
Kaya sabihin makita kung ano ang aking ginawa para sa hindi tunay na code maagang ng panahon.
>> Habang ang haba ng listahan ay mas malaki sa zero, tingnan sa gitna
ng listahan.
Kung nahanap numero ibinalik totoo, iba kung mas mataas ang numero, paghahanap kaliwa.
Iba Pa kung numero ng mas mababa, paghahanap kanan, bumalik hindi totoo.
Kaya mukhang halos magkapareho kung hindi na halos katulad sa kung ano ang sinulat ni namin.
Talaga, Tom, kung ano ang iyong unang sinabi, breaking sa gitna ng listahan at kung
numero natagpuan sa dalawang mga pahayag ay ang tunay kong ginawa.
>> Pinagsama ko ang mga ito doon.
Dapat ko pa nakinig sa mo sa unang pagkakataon.
Kaya na ay ang palsipikado-code na mayroon kami.
Kung nais mong ngayon, paumanhin, pumunta i-back sa aming paunang problema.
Ni code binary.c Hayaan.
Kaya ipatupad ang isang umuulit na bersyon ng binary paghahanap gamit ang mga sumusunod
function na deklarasyon.
>> At hindi mo kailangang kopyahin ito pababa pa lamang.
Talagang pupuntahan ko buksan up dito mismo binary.c.
Kaya doon ay ang function na pagpapahayag sa gitna ng screen.
At makikita mo kinuha ko ang mga hindi tunay na code mula sa aking mga gilid, ngunit halos magkapareho
sa kung ano ang namin ay sumulat, at ilagay na sa para sa iyo.
Kaya ngayon, sabihin tumagal ng limang minuto sa code na ito function.
>> At muli, kung mayroon kang anumang mga katanungan, itaas ang iyong mga kamay, ipaalam sa akin, idedetalye ko
dumating sa paligid.
>> AARAL: [hindi marinig].
>> Jason HIRSCHHORN: Kaya kinuha ko ang mga binary Kahulugan ng paghahanap sa
tuktok, sa 12 linya.
Iyon ay kung ano Nakatanggap ako para sa aking mga slide.
At pagkatapos ang lahat ng ito palsipikado-code ko lang kopyahin at ilagay sa slide,
hindi tunay na code slide.
Pa rin ako hindi pandinig [hindi marinig].
>> Kaya kung natapos mo na ang iyong pagpapatupad, gusto kong suriin ito.
Nag-email ako sa iyo ang helpers.h file mas maaga sa class na ito.
At ito ang magiging online na magagamit pati na rin para sa pag-download para sa mga taong nanonood
sa pagkakataong ito seksyon maantala.
At ako ginamit lamang ang generic na pamamahagi code mula pset3.
Kaya kinuha ko find.C, gamitin ang aking helpers.h file sa halip na ang helpers.h file
na ibinigay sa code ng pamamahagi.
>> At nagkaroon kong gumawa ng isa sa iba pang mga pagbabago sa find.C sa halip na sa pagtawag nang simple lamang
paghahanap, tumawag binary_search.
Kaya kung nais mong subukan ang iyong code, alam na iyon ay kung paano ito gawin.
Sa katunayan, kapag magpapadala kami ay tumatakbo ang code na ito sa ngayon, kamakailan lamang ako ng isang kopya ng
aking direktoryo pset3, muli, swapped out ang Katulong file at pagkatapos ay ginawa na
baguhin sa find.C na tumawag binary_search sa halip na lamang sa paghahanap.
>> Jason HIRSCHHORN: Oo.
Mayroon kang isang katanungan?
>> AARAL: Hindi bale na.
>> Jason HIRSCHHORN: Huwag mag-alala.
Well, sabihin makapagsimula.
Gagamitin namin ang code na ito bilang isang grupo.
Isa iba pang mga tala.
Muli, ito ay, maaari madaling swapped in para sa Problema Set Tatlong.
Mayroon akong aking helpers.h file na kung saan, sa halip kaysa sa helpers.h kami ay ibinigay,
declares binary paghahanap, bubble -uri-uriin, at uri pagpili.
At sa find.c mapapansin mo sa linya, ano ang na, 68 linya, tinatawag naming binary
maghanap sa halip na paghahanap.
Kaya muli, ang code na magagamit online o ang code na ikaw ay
paglikha ngayon ay madaling swapped in para sa set p 3 upang suriin ito.
>> Ngunit una, code ng binary paghahanap ipaalam.
Ang aming mga pag-andar na pagpapahayag, bumalik kami ng isang bool.
Tumagal kami ng isang integer value na tinatawag.
Isinasaalang-alang namin ang isang hanay ng mga integer na tinatawag na mga halaga, at lubos naming n maging
ang laki ng array.
Sa linya 10, dito mismo, mayroon akong matalim isama stdbool.h.
Kahit sino Alam ba kung bakit iyon doon?
Kaya kung ano ang na linya ng code?
>> AARAL: Pinapayagan ka nitong gumamit ng isang uri bool return.
>> Jason HIRSCHHORN: Mismong.
>> AARAL: O ito ay isang library na nagbibigay-daan gumamit ng isang uri bool return.
>> Jason HIRSCHHORN: Kaya ang matalim isama Binibigyan ako stdbool.h linya ilan
mga kahulugan at mga deklarasyon para sa mga bagay na ako ay pinapayagan na gamitin sa
ito library.
Kaya bukod sa mga ito ay nagsasabi na mayroong ganitong uri na tinatawag na bool, at maaari itong maging
totoo o hindi.
Kaya na kung ano ang ginagawa na linya.
At kung hindi ko kinailangang na linya, nais ko kumuha sa problema para sa pagsusulat ng mga ito
salita dito mismo, bool, mula doon.
Akmang-akma.
Kaya kailangan ko na sa code na ito.
OK.
Kaya ito, muli, ay isang umuulit bersyon, hindi isang isa recursive.
Kaya ipaalam sa amin magsimula.
>> Magsimula tayo sa unang ito Hayaan linya ng palsipikado code.
At sana, kami ay - o hindi sana.
Kami ay pagpunta sa pumunta sa paligid ng kuwarto.
Susubukan naming pumunta linya sa pamamagitan ng linya, at ako ay tulungan mong malaman kung ang linya na kailangan namin
sa unang magsulat.
Kaya habang haba ng listahan ay mas mataas sa zero.
Magsimula tayo sa harap Hayaan.
Ano linya ang dapat kong isulat dito, sa code?
>> AARAL: Habang panaklong n ay mas malaki kaysa sa 0.
>> Jason HIRSCHHORN: Habang n ay mahusay kaysa sa 0.
Kaya n ay ang laki ng isang listahan, at kami ay pagsusuri kung -
>> [INTERPOSING tinig]
>> Jason HIRSCHHORN: - paumanhin?
>> AARAL: Paano ko malalaman namin na n ay ang laki ng mga listahan?
>> Jason HIRSCHHORN: Paumanhin.
Ayun sa pagtutukoy pset, ang paghahanap at uri mga pag-andar na kailangan mo upang sumulat,
n ay ang laki ng mga listahan.
Nakalimutan ko ang upang ipaliwanag na dito.
Ngunit oo. n ay ang laki ng ang listahan, sa kasong ito.
Kaya habang n ay mas malaki kaysa sa 0.
OK.
Na maaaring mapatunayan na medyo may problemang bagaman, kung bagay pumunta sa.
Dahil patuloy naming malaman ang laki ng mga listahan sa buong ito
function, ngunit sinasabi simulan namin off may isang hanay ng mga 5 integer.
At pumunta kami sa pamamagitan ng at hindi namin ngayon narrowed ito pababa sa
isang array ng 2 integer.
Aling 2 integer ay na?
Ang laki ay 2 ngayon na gusto naming tumingin sa, ngunit kung saan 2 ay na?
Ba na magkaroon ng kahulugan, na katanungan?
>> OK.
Kukunin ko hilingin itong muli.
Kaya simulan-off kami na may ganitong array ng 5 integer, at n ay katumbas ng 5, tama?
Susubukan naming patakbuhin sa pamamagitan dito.
ipapakita namin marahil baguhin ang laki, karapatan, bilang mga bagay na pumunta sa.
Alin ang kung ano ang sinasabi namin na gusto naming gawin.
Hindi namin gusto upang maghanap ang buong bagay muli.
Kaya nating palitan namin ito sa 2.
Isinasaalang-alang namin ang kalahati ng mga listahan na kakaiba.
Kaya't piliin ang 2 lamang.
Kaya ngayon n ay katumbas ng 2.
Humihingi ako ng paumanhin para sa mahihirap dry Burahin marker.
Mag-right?
At kami ay naghahanap sa listahan muli gamit ang isang listahan ng mga sukat 2.
Well, ang aming array ay ng laki 5 pa rin.
Sasabihin namin na gusto lamang naming maghanap 2 spot sa loob nito.
Kaya kung aling 2 spot ay ang mga?
>> Ba na magkaroon ng kahulugan?
Sigurado sila sa kaliwa 2 spot?
Sigurado sila karapatan 2 spot?
Sigurado nila sa gitna ng 2 spot?
Sinuway namin ang problema down, ngunit namin talagang hindi alam kung aling mga bahagi ng
ang problema kaming naghahanap pa rin sa, lamang sa pamamagitan ng pagkakaroon ng mga 2 mga variable.
Kaya kailangan namin ng kaunti ang nalalaman pagkatapos, habang n ay mas malaki kaysa sa 0.
Kailangan naming malaman kung saan na n ay nasa aming mga aktwal na array.
>> Kaya ang kahit sino ay may isang baguhin upang ang linyang ito?
Karamihan sa mga linyang ito ay ganap na ganap tama.
Mayroon bang isa pang karagdagan?
Puwede ba kaming magpalit ng isang bagay out para sa n gumawa ng linyang ito ng kaunti mas mahusay?
Mm-Hm?
>> AARAL: Maaari mong simulan ang isang variable tulad ng haba sa n na makikita pagkatapos gamitin
sa ibang pagkakataon sa pag-andar?
>> Jason HIRSCHHORN: Kaya initialize isang variable na haba sa n,
at ginagamit namin na sa ibang pagkakataon?
Ngunit pagkatapos ay i-update lang namin haba at kami tumakbo pa rin sa problemang ito kung saan kami
cut down na ang haba ng aming mga problema, ngunit hindi namin alam kung saan, talaga,
na haba maps papunta.
>> AARAL: Ay hindi na mangyayari mamaya kapag tapos ka na nagsasabi, maghanap kaliwa,
maghanap tama?
Ikaw ay pagpunta sa pumunta sa isang iba't ibang mga lugar ng iyong -
>> Jason HIRSCHHORN: Kami ay pagpunta sa pumunta sa isang lugar, ngunit kung paano ang kilala namin
na kung saan ay upang pumunta sa?
Kung kami ay may array at ito lamang n, paano ko malalaman namin kung saan upang
pumunta sa sa array.
Sa likod, yes?
>> AARAL: Mayroon ka bang, tulad ng, ang isang mas mababang tumalbog at isang pang-itaas nakatali variable o
ang isang bagay tulad na?
>> Jason HIRSCHHORN: OK.
Kaya ito ay isa pang ideya.
Kaysa sa pagpapanatiling lamang track ng laki, panatilihin namin ang track ng mas mababa at
itaas na nakatali variable.
Kaya paano kinakalkula namin ang laki mula sa isang mas mababang nakatali at itaas na may balat?
>> [INTERPOSING tinig]
>> Jason HIRSCHHORN: palabawasan.
At din pagpapanatiling track ng mas mababang nakatali at itaas na nakatali sa ipaalam sa amin,
ay namin ang paghahanap sa dalawang?
Sigurado namin ang paghahanap sa dalawang sa paglipas dito?
Sigurado namin ang paghahanap sa dalawang gitna?
Marahil hindi ito ang dalawang gitnang, dahil ito, sa katunayan, ay binary paghahanap.
Ngunit ngayon magagawa naming upang makuha ang laki, kundi pati na rin ang mga limitasyon ng array.
Sa kakanyahan, kung mayroon kaming ang aming higanteng phone book, rip namin ito sa kalahati.
Namin ngayon alam kung saan na mas maliit libro ng telepono ay.
Ngunit kami ay hindi talagang sa nakagugulat sa aklat ng telepono sa kalahati.
Kailangan pa rin naming malaman kung saan ang bagong hanggahan ng aming mga problema ay.
Kahit sinong mayroon ba kayong mga katanungan tungkol iyon?
Oo?
>> AARAL: Gusto ito gumagana sa pamamagitan ng paglikha ng isang variable, i, na sa iyo pagkatapos lamang shift
ang posisyon ng i kamag-anak sa kanyang kasalukuyang posisyon, at ang haba, n?
>> Jason HIRSCHHORN: At kung ano ay i?
>> AARAL: Tulad ng tulad ng isang uri ng pagiging i -
Tulad ng nais mong i initialize upang maging gitna posisyon ng array.
At pagkatapos ay, kung ang halaga sa posisyon na i in sa gitna ng array sa alamang
mas kaunti kaysa sa halaga na kailangan mo, i ngayon nagiging ang haba ng array, plus
ang halaga ng i hinati sa 2.
Tulad ng, makita, shift mo i -
>> Jason HIRSCHHORN: Mag-right.
>> AARAL: - hanggang sa ang -
>> Jason HIRSCHHORN: Kaya ako ay halos positive na gagana.
Ngunit ang pagkatao punto, kailangan mo ng dalawang piraso ng impormasyon dito.
Maaari mo itong gawin sa simula at dulo, o maaari mo itong gawin sa laki, at pagkatapos ay
ilang marker.
Ngunit mo kailangang dalawang piraso ng impormasyon dito.
Hindi ka maaaring makakuha sa pamamagitan ng gamit ang isa lamang.
Ba na ang may katuturan?
>> Kaya kami ay pagpunta sa pumunta sa pamamagitan ng, at kami ay pagpunta sa gawin [hindi marinig]
at lumikha ng ilang mga marker.
Kaya what'd isulat mo sa iyong code?
>> AARAL: int ko sinabi lang tumalbog isa ay katumbas ng 0.
>> Jason HIRSCHHORN: Sabihin tumawag na int, simula.
>> AARAL: OK.
>> Jason HIRSCHHORN: Tinitiyak Iyon higit pang mga kahulugan para sa akin.
At?
>> AARAL: Sinabi ko, hulaan ko, int nagtatapos.
>> Jason HIRSCHHORN: int nagtatapos.
>> AARAL: hulaan ko, n minus 1, o ang isang bagay tulad na.
Tulad ng, ang huling elemento.
>> Jason HIRSCHHORN: Kaya mo na sinulat, int simula ay katumbas ng 0, tuldok-kuwit, at int
Magtatapos ang katumbas n minus 1, tuldok-kuwit.
Kaya't mahalagang, kung anong ginagawa namin dito, 0 ang unang posisyon.
At bilang alam namin sa array, hindi sila pumunta hanggang sa n, pumunta sila hanggang sa n minus 1.
Kaya mayroon kaming ilang mga hanggahan ng aming array.
At ang mga paunang hangganan mangyari upang maging ang paunang hanggahan ng aming mga problema.
OK.
Kaya na Maganda iyan.
Pagkatapos kung pumunta namin pabalik sa linyang ito, habang haba ng listahan ay mas malaki kaysa sa 0,
ano, sa halip na n, dapat naming ilagay in dito?
>> AARAL: Sumulat na nagtatapos minus simula.
>> Jason HIRSCHHORN: Habang nagtatapos minus nagsisimula ay mas malaki kaysa sa 0?
OK.
At maaari naming, kung gusto naming gumawa na ng kaunti nicer, kung ano
iba pa naming gawin?
Kung gusto naming upang linisin ang code na ito up ng isang bit?
Paano natin mapupuksa ang mga 0?
Ito ay lamang ng isang katanungan ng estilo.
Ito ay tama ngayon.
>> AARAL: Pagtatapos ng hindi katumbas simula?
>> Jason HIRSCHHORN: Maaari naming gawin kung ano?
>> [INTERPOSING tinig]
>> AARAL: Nagtatapos ay mas malaki?
>> Jason HIRSCHHORN: Oo.
Maaari lang namin gawin habang nagtatapos ay mas malaki sa simula.
Mag-right.
Nagdagdag kami na nagsisimula sa kabilang bahagi ng na, at Mayroon kaming mapupuksa ng 0.
Kaya ito lang ang itsura ng Medyo mas malinis.
OK.
Kaya, habang haba ng listahan ay 0, isinulat namin na, habang nagtatapos ay mas malaki
kaysa sa simula.
Kami ay pagpunta sa ilagay sa aming mga kinakailangan kulot tirante, at pagkatapos ay ang unang bagay na
gusto naming gawin ay tumingin sa mga ito sa isang maliit na listahan.
Ikaw?
Maaaring magbigay sa iyo sa akin ang -
>> AARAL: Kung panaklong halaga square bracket -
>> Jason HIRSCHHORN: Kung panaklong halaga square bracket.
>> AARAL: Nagtatapos nang hinati sa 2.
>> Jason HIRSCHHORN: Nagtatapos?
>> AARAL: nakakakita ako ng isang problema sa iyong -
>> Jason HIRSCHHORN: OK.
Well, tingnan sa gitna.
Paano ko malalaman namin kung ano ang gitna ay?
Oo.
Kaya ipaalam sa akin tanggalin ang code na iyon.
Paano ko malalaman namin kung ano ang gitna ay?
Sa anumang bagay, kapag mayroon kang ang simula at sa dulo, paano mo mahanap
sa gitna?
>> AARAL:-average mo.
>> AARAL: idagdag mo ang mga ito sama-sama at pagkatapos -
>> Jason HIRSCHHORN: Idagdag ang mga ito sama-sama at pagkatapos?
>> AARAL: At-average mo.
Hatiin ito sa pamamagitan ng 2.
>> Jason HIRSCHHORN: Idagdag ang mga ito sama-sama at hatiin sa pamamagitan ng 2.
Kaya int gitna katumbas?
Tom, maaari mong ibigay ito sa akin?
>> AARAL: Simula plus na nagtatapos -
>> Jason HIRSCHHORN: Simula plus nagtatapos.
>> AARAL: Lahat, bracket, na hinati sa 2.
>> Jason HIRSCHHORN: Lahat, sa mga panaklong, hinati sa 2.
Kaya na nagbibigay sa akin ang gitna ng anumang bagay, itama?
>> AARAL: Kailangan mo ring tipunin ito.
>> Jason HIRSCHHORN: Ano ang ginagawa mo ibig sabihin, kailangan ko upang tipunin ito?
>> [INTERPOSING tinig]
>> AARAL: Dahil kung Ito ay isang kakaiba numero, pagkatapos ito ay tulad ng -
>> Jason HIRSCHHORN: Well, OK.
Kaya ko ito paglilikom.
Ngunit kung ito ay isang kakaiba numero, 5, maaari ko paglalaan 1 ang layo mula sa gitna.
O kung ito ay isang kahit na numero, sa halip, na ang isang mas mahusay na kaso.
Kung ito ay 4, mayroon lamang namin 4, maaari ba akong kumuha ang unang "gitna", quote, magpanipi o
ang pangalawang "gitna" ng isa.
Alinman gagana para sa isang binary paghahanap, kaya hindi ko talagang kailangan upang isalin ito.
Subalit mayroong isa iba pang mga bagay ako kailangan upang tumingin sa linyang ito.
Maaaring hindi namin ito pa mapagtanto, ngunit gagamitin namin bumalik dito.
Dahil sa linyang ito talaga pa rin Kailangan ng isa sa iba pang mga bagay.
>> Ngunit sa ngayon, na naisulat namin apat na linya ng code.
Mayroon din kaming ang aming simula at pangwakas na mga marker.
Mayroon kaming ang aming habang loop, na maps sa direkta sa aming mga pseudocode.
Naghahanap kami sa gitna na maps direkta papunta sa aming pseudocode.
Gusto ko sabihin na ito ang papunta sa gitna ng listahan, ito linya ng code.
At pagkatapos, sa sandaling pumunta kami sa gitna ng ang listahan, ang susunod na bagay na kailangan namin upang gawin
ay suriin kung ang aming halaga ay doon para sa ang pseudocode na sinulat namin ng mas maaga.
>> Kaya paano ko tingnan namin kung ang aming halaga ay nasa gitna ng listahan?
Ikaw.
Bakit hindi gawin mo ito?
>> AARAL: Kung ang aming halaga ay sa gitna ng ay katumbas sa
kahit anong itinakda namin ang -
Ibig kong sabihin pantay pantay sa -
>> Jason HIRSCHHORN: Nag -
OK.
>> AARAL: Hindi ako sigurado kung ano ang variable na kaming naghahanap ng
para sa bagaman, ay dahil -
>> [INTERPOSING tinig]
>> AARAL: [hindi marinig].
>> Jason HIRSCHHORN: Mismong.
Per ang function ng deklarasyon, kaming naghahanap para sa isang halaga.
Kaya kami ay naghahanap para sa isang halaga sa isang array ng mga halaga.
Kaya ikaw ay akmang-akma sa iyo.
Ikaw ay gagawin, kung halaga bukas paren bracket gitna sarado bracket ay katumbas ng
ay katumbas ng halaga, at sa loob doon ano ang kailangan naming gawin?
Kung ang aming halaga ng doon, kung ano kailangan naming gawin?
>> [INTERPOSING tinig]
>> AARAL: Bumalik sa zero.
>> Jason HIRSCHHORN: Bumalik totoo.
>> AARAL: Bumalik totoo.
>> Jason HIRSCHHORN: Michael, ano ang linyang ito gawin?
>> AARAL: [hindi marinig] ay tumakbo sa programa Siyempre nito, at iyon ay higit sa, at
ikaw ay kung ano ang kailangan mong gawin?
>> Jason HIRSCHHORN: Ang programa o kung ano?
Sa kasong ito?
>> AARAL: Ang pag-andar.
>> Jason HIRSCHHORN: function na ang.
At kaya, upang bumalik sa kahit anong tinatawag na ito at bigyan ito ang halaga, totoo.
Akmang-akma.
Main.
Ano ang uri ng return ng pangunahing, Michael?
>> AARAL: int, integer?
>> Jason HIRSCHHORN: int, eksakto.
Ang isang integer.
Iyon ay isang katanungan lamang upang matiyak na ka guys ay naging sa tuktok ng ito.
Ano ang karaniwang ibalik ito, kung lahat ng bagay ay mahusay na gumagana?
>> AARAL: Zero.
>> Jason HIRSCHHORN: Zero.
Akmang-akma.
>> AARAL: Kung ito lamang ay nagbabalik totoo, walang impormasyon na ibinigay
tungkol sa kung ano ang -
Oh, ito ay lamang na nagsasabi na iyon halaga ang nasa loob ng array.
>> Jason HIRSCHHORN: Mismong.
Ang program na ito ay hindi pagbibigay ng impormasyon ng kung saan eksakto ang halaga ay.
Ang sinasabi lamang nito, oo, nakita namin ito, o hindi, hindi kami nakahanap ito.
Kaya kung nahanap numero, nagbabalik ng tunay.
Well, talagang ginawa namin lamang na talaga mabilis na may isang linya ng code.
Kaya makikita ilipat ko na linya ng pseudocode.
>> AARAL: Huwag kailangan namin upang baguhin ang array?
Dapat itong mga halaga, hindi na halaga, tama?
>> Jason HIRSCHHORN: Paumanhin.
Salamat sa inyo.
>> AARAL: Oo.
>> Jason HIRSCHHORN: linyang ito Dapat na halaga.
Akmang-akma.
OK.
Kaya nagbigay kami ay tumingin sa gitna listahan.
Kung numero nahanap return totoo.
Ang pagpapatuloy sa sa aming pseudocode, kung gitna ay mas malaki, ang natitira paghahanap.
Kaya nagkaroon ako in dito, kung numero mas mataas, ang natitira paghahanap.
Constantine, maaari mong ibigay sa akin ito linya ng code?
>> AARAL: Kung halaga ng gitnang -
>> Jason HIRSCHHORN: Kaya kung halaga -
kung mga halaga bukas paren bracket gitna malapit bracket -
>> AARAL: Ay mas maliit kaysa sa halaga?
>> Jason HIRSCHHORN: Ay mas maliit.
>> AARAL: Mas mababa sa halaga.
>> Jason HIRSCHHORN: Halaga.
Well, talaga, na nais mong suriin kung ang numero ng -
Sorry.
Ito ay isang maliit na nakalilito.
Ngunit iba kung ang numero sa gitna ng listahan ang mas mataas.
>> AARAL: Oh, OK.
>> Jason HIRSCHHORN: ako makakakita baguhin iyon.
Iba Pa kung gitna ay mas mataas, namin gusto upang maghanap kaliwa, OK?
At kung ano ang gagawin sa loob namin ito kung kondisyon?
>> AARAL: Maaari ba akong gumawa ng maliit na pagbabago sa ang kundisyon, baguhin ito sa ibang tao kung?
>> Jason HIRSCHHORN: Iba Pa kung?
OK.
Kaya ay isakatuparan ang code na ito tungkol sa pareho.
Ngunit ang magandang bagay tungkol sa paggamit ng kung, iba kung, iba kung o kung, iba kung, iba
ay nangangahulugan na ang isa lamang sa mga ito ay pagpunta sa naka-check, hindi lahat ng tatlong ng mga ito,
potensyal na.
At na ginagawang mas kaunti nicer sa computer na
tumatakbo ang iyong mga programa.
>> Kaya [? Constantine,?]
Ikinalulungkot namin sa loob linyang ito, iba kung halaga, bracket gitna malapit bracket
ay mas malaki sa halaga.
Ano ang kailangan naming gawin?
Kailangan namin upang maghanap sa kaliwa.
Paano ginagawa namin iyon?
Pupunta ako upang mabigyan ka ng isang panimula.
>> Mayroon kaming dalawang mga bagay na tinatawag na nagsisimula at nagtatapos.
Kaya kung ano ang kailangang mangyari sa simula?
Kung nais mong hanapin sa kaliwa ng listahan, makuha namin ang aming kasalukuyang simula.
Ano ang kailangan naming gawin ito?
>> AARAL: Itinakda namin ang simula sa gitna plus 1.
>> Jason HIRSCHHORN: Kaya, kung hindi kami naghahanap sa kaliwa?
>> AARAL: Paumanhin, gitnang minus -
kaya ang Magtatapos ang magiging gitnang minus 1 at simula -
>> Jason HIRSCHHORN: At kung ano ang mangyayari sa umpisa?
>> AARAL: Ito ay nananatiling pareho.
>> Jason HIRSCHHORN: Kaya ang kahulugan ang nanatiling pareho.
Kung kami ay naghahanap sa kaliwa, kami ay gamit ang parehong simula -
akmang-akma.
At ang nagtatapos?
Paumanhin, ano ang ginagawa ng nagtatapos katumbas muli?
>> AARAL: Gitnang minus 1.
>> Jason HIRSCHHORN: Gitnang minus 1.
Ngayon, bakit minus 1, gitna hindi lang?
>> AARAL: gitna ay wala na sa ang Picture na, dahil nagkaroon kami
naka-check na ito ay out?
>> Jason HIRSCHHORN: Iyon akmang-akma.
Gitna ay wala na sa mga larawan.
Namin na naka-check sa gitna.
Kaya hindi kami gusto "sa gitna," quote magpanipi, upang patuloy na maging sa
array na kaming naghahanap.
Kaya ito ay hindi kapani-paniwala.
>> Iba Pa kung halaga bracket gitna ay mas malaki kaysa sa halaga na nagtatapos Kapantay
gitna minus 1.
Jeff, ano ang tungkol sa huling linya?
>> AARAL: Iba Pa.
Halaga gitna ay mas mababa sa halaga?
>> Jason HIRSCHHORN: idedetalye namin ka pagbibigay sa akin ng iba pa.
Kaya kung hindi mo akong bigyan -
>> AARAL: Kaya pagkatapos ay nagsisimula magiging gitnang plus 1.
>> Jason HIRSCHHORN: Simula Kapantay gitna plus 1, muli, para sa parehong
dahilan na Constantine Ibinigay sa amin ng mas maaga.
At sa dulo, na hindi pa naibigay sa akin ng isang linya ng code pa?
Bumalik false, Aleha, kung ano huwag isulat namin dito?
>> AARAL: Bumalik false.
>> Jason HIRSCHHORN: Bumalik false.
At kailangan namin upang gawin iyon, dahil kung namin huwag mahanap ito, kailangan naming sabihin namin
ay hindi mahanap ito.
At sinabi namin kami ay pagpunta upang magbalik ng bool, kaya siguradong mayroon kaming upang bumalik
isang bool sa isang lugar.
>> Magpatakbo ng ang code na ito Kaya ipaalam.
Talagang pupuntahan ko -
kaya kami sa terminal.
Susubukan naming i-clear ang aming window.
Ni Gawing Ang lahat ng Hayaan.
Natagpuan namin mayroong isang error.
Mayroong isang error sa 15 linya, inaasahan tuldok-kuwit sa dulo ng
deklarasyon.
Kaya kung ano nakalimutan ko?
>> AARAL: tuldok-kuwit.
>> Jason HIRSCHHORN: tuldok-kuwit karapatan up dito.
Sa tingin ko na code kay Pedro.
Kaya Tom, [hindi marinig].
Kidding lang.
Ni huwag Gawing Lahat muli Hayaan.
>> AARAL: Ano direktoryo Dropbox dapat naming maging in para sa ito?
>> Jason HIRSCHHORN: Kaya maaari mong panoorin para lamang sa mga ito bit.
Ngunit muli, kung nais mong ilipat ito code sa inyong direktoryo pset3 upang subukan
ito, na kung ano ang aking ginawa.
Kung mapapansin mo dito - Paumanhin, ang mahusay na tanong.
>> [? LS,?]
Mayroon akong in dito ang find.c code mula sa distro code na ito linggong ito.
Mayroon akong helpers.h.
Mayroon akong Magsagawa ng file na ko talaga na-edit nang kaunti upang isama ang mga bagong
mga file kami ay sumusulat.
Lahat ng na code ay magagamit, hindi code ng pamamahagi, ngunit ang bagong
Gumawa ng file, ang mga bagong helpers.h file habilin magiging available online para sa pag-download.
Muli, kaya doon sa mga dagdag na mga code na mayroon kami.
>> Kaya gawin ang lahat, bawat linyang ito, ginagawang mahanap, binary, pagpili ng bubble - Ginagawang
lahat ng tatlong ng mga ito at compiles sa ito executable code find.
Kaya sa pangkalahatan, hindi namin nais upang diretso sa check50.
Gusto naming tumakbo ang ilang mga pagsubok sa aming sariling.
Ngunit kaya lang maaari naming mapabilis ito ng kaunti, check50 2013 pset3.find ay pumasa
sa helpers.c-- aking masama.
>> Wala akong na ngayon.
Kaya kami ay talagang pagpunta sa patakbuhin ang code para sa real.
Usage.find /, alam mo kung ano ang ibig sabihin nito ay?
>> AARAL: Kailangan mo ng pangalawang command line dito.
>> Jason HIRSCHHORN: Kailangan ko isang pangalawang linya ng command.
At alinsunod sa mga pagtutukoy, Kailangan ko upang ipasok ang kung ano ang aming hinahanap.
Kaya tumingin para sa 42 ipaalam.
Susubukan naming panatilihin ito sa pinagsunod-sunod, dahil kami hindi pa nagsulat ng isang function ng uri -
42, 43, 44.
>> At Control D hindi makatagpo ng karayom ​​sa mandala ng dayami.
Iyan ay masama.
Ito ay talagang doon.
Subukan ang ibang bagay Hayaan.
Siguro ito ay dahil ko bang ilagay ito sa simula.
>> Ni gawin 41, 42, 43 Hayaan.
May pumunta namin.
Napag-alaman na ito.
Maglagay ng ito sa dulo ngayon, lang Hayaan upang maaari naming maging maingat -
40, 41, 42.
Hindi mo nakita ang karayom.
Kaya ko nabanggit ito nang mas maaga.
Sa kasamaang palad, alam ko na ito ay mangyayari.
>> Ngunit para sa mga layuning pang-pedagohiko, ito ay handa na upang galugarin ito.
Hindi ito gumagana.
Para sa ilang mga dahilan, hindi ito maaaring mahanap ito.
Alam namin kung ano ang sa doon, ngunit kami ay hindi sa paghahanap ng mga ito.
Kaya ang isang bagay na maaari kaming gawin ay pumunta sa pamamagitan ng GDB upang hanapin ito, ngunit ang kahit sino,
nang walang pagpunta sa pamamagitan ng GDB, magkaroon ng isang kahulugan ng kung saan screwed namin up?
[? Madu? ?]
>> AARAL: Sa tingin ko ito ay maaaring kapag nagtatapos ay katumbas sa simula, at ito ay
lamang ng isang listahan ng isa-element.
Pagkatapos ay binabalewala lamang ito sa halip ito ng tunay na pag-check nito.
>> Jason HIRSCHHORN: Iyon akmang-akma.
Kapag nagtatapos ay katumbas ng simula, ang ginagawa namin mayroon pa ring isang elemento sa aming listahan?
>> AARAL: Oo.
>> Jason HIRSCHHORN: Oo, sa katunayan, namin magkaroon ng isa at sangkap lamang ng isa.
At iyon ay pinaka-malamang na mangyari kapag, alinsunod sa mga code sinuri namin, hindi namin sa
harap ng mandala ng dayami o sa sa dulo ng mandala ng dayami.
Iyon ay kung saan simula at Magtatapos ay pagpunta sa pantay na
isa, na may mga binary paghahanap.
Kaya sa dalawang mga kaso ng mga hindi ito gumana, dahil nagtatapos noon ay katumbas ng simula.
>> Ngunit kung nagtatapos ay katumbas sa simula, ay isakatuparan ito habang loop?
Ito ay hindi.
At maaari kaming Sinuri na muli sa pamamagitan ng GDB.
Kaya kung paano maaari naming ayusin ang code na ito, dahil kapag habang nagtatapos ay katumbas ng
simula, nais din namin ito habang loop upang tumakbo.
>> Kaya kung ano fix maaari naming gawin sa line 18?
>> AARAL: [hindi marinig] ay mas malaki mababa sa o patas sa.
>> Jason HIRSCHHORN: Eksaktong karapatan.
Habang nagtatapos ay mas malaki sa o patas sa simula.
Kaya ngayon, tiyaking upang makakuha ng na namin sulok kaso sa dulo.
At ni makita ipaalam.
Magpatakbo ng ito nang isa pang beses Hayaan.
>> Ni gawin ang lahat ng Hayaan.
Muli, magkakaroon ka upang lamang sundin kasama dito.
Maghanap ng 41 oras na ito.
Panatilihin lamang ito pare-pareho.
>> Maghanap ng mga 42.
Ilagay ni ito sa simula Hayaan -
42, 43, 44.
Natagpuan namin ito.
Kaya na noon ay sa katunayan ang pagbabago namin na kailangan upang gumawa.
>> Iyon ay isang pulutong ng coding namin May ginawang lamang, binary paghahanap.
Kahit sinong mayroon ba kayong mga katanungan bago Ilipat ko sa sa mga linya namin ay sumulat sa
binary paghahanap o sa kung paano namin may korte kung ano maisip namin ginawa out?
Bago ilipat namin sa, gusto ko rin upang ituro out na sa pamamagitan ng at malalaking, nama-map namin
ang aming hindi tunay na code ng isa upang isa sa aming mga code.
>> Ay namin mayroon na nakakalito bagay para malaman kung may
nagsisimula at nagtatapos.
Ngunit hindi ka si may korte na out, mo sana ay nakasulat halos ang
magkamukha code, i-save para sa ang dalawang nangungunang mga linya.
At pagkatapos sana ay natanto mo kapag na ginawa mo ito sa mga pagsusuri at mga kaso na
kailangan mo ng ibang bagay.
Kaya kahit na pinili mo ay sumunod sa aming linya palsipikado-code sa linya, makikita mo na nai
nakuha lahat maliban sa dalawang linya ng code na iyong kailangan upang magsulat.
>> At gusto ko ay payag kang Taya na kayo guys sana ay lahat may korte na out
medyo mabilis, na iyong kailangan upang ilagay isang uri ng marker sa doon upang malaman
kung saan ikaw ay.
Muli iyon, ay ang kapangyarihan ng paggawa hindi tunay na code maagang ng panahon.
Kaya namin unang gawin ang logic, at pagkatapos ay maaari naming mag-alala tungkol sa syntax.
>> Ay namin nai-lito tungkol sa logic habang sinusubukang isulat ang code na ito sa C,
Gusto namin nakuha ang lahat ng messed up.
At pagkatapos ay nais na nagtatanong namin tanong tungkol sa logic at syntax at meshing
ang lahat ng ito nang sama-sama.
At gusto namin nakuha nawalang sa kung ano ang maaaring mabilis na naging isang
Napakahirap ng problema.
Kaya sabihin ilipat sa ngayon sa uri pagpili.
>> Mayroon kaming 20 minuto ang natitira.
Kaya Mayroon akong isang pakiramdam hindi namin magagawang upang makakuha ng sa pamamagitan ng lahat ng uri seleksyon
at bubble sort.
Ngunit ipaalam sa amin ng hindi bababa sa pagtatangka upang tapusin ang uri pagpili.
Kaya ipatupad ang seleksyon-uri gamit ang sumusunod na pag-andar na pagpapahayag.
>> Muli, ito ay nakuha mula sa set ng detalye ng problema.
Int mga halaga ay bracket, ay isang array ng integer.
At int.n ay ang laki ng na array.
-Uri-uriin ang Pinili ay pagpunta upang ayusin ito ng array.
>> Kaya alinsunod sa aming modelo ng pagpili ng kaisipan -uri-uriin, hilahin namin ang -
una, pumunta kami sa listahan ang unang oras, hanapin ang pinakamaliit na numero,
ilagay ito sa simula, hanapin ang pangalawang pinakamaliliit na numero, ilagay ito sa ang
pangalawang posisyon kung gusto naming -uri-uriin sa pataas na pagkakasunod-sunod.
Hindi ako ng pagpilit mong magsulat hindi tunay na code sa ngayon.
>> Ngunit bago namin gawin ang code bilang isang klase sa limang minuto, kami ay pagpunta sa magsulat
hindi tunay na code sa gayon mayroon kaming ilang mga kahulugan ng kung saan kami ay pagpunta.
Kaya subukan na isulat hindi tunay na code sa inyong sarili.
At pagkatapos ay subukan na i-na hindi tunay na code sa code.
Gagawin namin na bilang isang grupo sa loob ng limang minuto.
>> At syempre, ipaalam sa akin kung mayroon kang anumang mga katanungan.
>> AARAL: Iyon ito?
>> Jason HIRSCHHORN: Tingnan kung gaano kalayo sa iyo maaaring makipag-dalawang higit pang mga minuto.
Nauunawaan kong hindi mo magagawang upang matapos.
Ngunit magpapatuloy kami sa paglipas ng ito bilang isang grupo.
>> Lahat ka sa coding kaya [hindi marinig], kaya ako ay paumanhin i-pause kung ano ang iyong ginagawa.
Ngunit ng pumunta sa pamamagitan ng ito bilang isang pangkat ipaalam.
At muli, binary paghahanap, mo ang lahat ng ibigay sa akin ng isa kung hindi higit pang mga linya ng code.
Salamat sa iyo para sa na.
Kami ay pagpunta sa gawin ang parehong bagay dito, code nang magkasama bilang isang grupo.
>> Kaya uri seleksyon - ni sumulat ipaalam ilang mabilis na palsipikado-code.
Bawat sakit sa modelo, maaari isang tao bigyan ako ang unang linya ng palsipikado-code, mangyaring?
Ano ang gusto kong gawin?
>> AARAL: Habang ang listahan ay wala na sa order.
>> Jason HIRSCHHORN: OK, habang ang listahan ay wala sa pagkakasunod-sunod.
At kung ano ang ibig sabihin sa iyo "out ng order?"
>> AARAL: Habang [hindi marinig]
ay hindi pa nakaayos.
>> Jason HIRSCHHORN: Habang ang listahan Wala na sa pagkakasunud-sunod, ano ang gagawin namin gawin?
Bigyan mo ako ng pangalawang linya, mangyaring, Marcus.
>> AARAL: Kaya mahanap ang susunod na pinakamaliliit na numero.
Na ito ay naka-indent.
>> Jason HIRSCHHORN: Kaya mahanap ang susunod pinakamaliliit na numero.
At pagkatapos ay ibang tao?
Sa sandaling matagpuan namin ang susunod pinakamaliliit numero, anong gagawin namin?
Pupunta ako sa sinasabi mahanap sa pinakamaliliit na numero.
Iyon ay kung ano ang gusto naming gawin.
>> Kaya mahanap ang pinakamaliit na numero.
Pagkatapos, anong gagawin namin?
>> AARAL: [hindi marinig] sa simula.
>> Jason HIRSCHHORN: Paumanhin?
>> AARAL: Ilagay ito sa simula ng listahan.
>> Jason HIRSCHHORN: Kaya ilagay ito sa sa simula ng listahan.
At kung ano ang gagawin namin sa mga bagay na noon ay sa simula
ng listahan, tama?
Kami ay patungan ang isang bagay.
Kaya kung saan ko ilalagay namin iyon?
Oo, Anna?
>> AARAL: Saan na ang pinakamaliit na number ay?
>> Jason HIRSHHORN: Kaya ilagay ang simula ng mga listahan kung saan ang
pinakamaliliit na numero ay.
Kaya habang ang listahan ay wala sa pagkakasunod-sunod, hanapin sa pinakamaliliit na numero, ilagay ito sa
sa simula ng listahan, ilagay ang simula ng listahan kung saan ang
pinakamaliliit na numero ay.
Marcus, maaari mong rephrase ang linyang ito habang ang listahan ay wala na sa order?
>> AARAL: Habang ang mga numero Hindi pa nai-pinagsunod-sunod?
>> Jason HIRSHHORN: OK, kaya upang malaman na ang mga numero ay hindi naging
pinagsunod-sunod, ano ang kailangan namin upang gawin?
Magkano ang kailangan naming i- pumunta sa pamamagitan ng listahan na ito?
>> AARAL: Kaya hulaan ko ang isang para sa loop, o habang, habang ang mga numero ng check Mababa
kaysa sa haba ng listahan?
>> Jason HIRSHHORN: OK, na maganda.
Sa tingin ko misphrased ko aking tanong na hindi maganda.
Lamang ako ay sinusubukan upang makakuha ng sa kami ay pagpunta sa may upang pumunta
sa pamamagitan ng buong listahan.
Kaya habang ang listahan ay wala sa pagkakasunod-sunod, para sa akin, mahirap i-map sa.
Ngunit isa lamang, na kung paano Sa tingin ko ang tungkol dito.
Pumunta sa pamamagitan ng buong listahan, hanapin ang pinakamaliliit na numero, ilagay ito sa
nagsisimula - talaga, handa kanan mo.
Maglagay ng parehong mga ito Hayaan.
>> Kaya habang ang listahan ay wala na sa order, namin kailangan upang pumunta sa pamamagitan ng buong listahan
isang beses, hanapin ang pinakamaliit na numero, lugar ito sa simula ng listahan, ilagay
sa simula ng listahan kung saan ang pinakamaliliit na numero ay, at pagkatapos ay kung ang
listahan ay sira pa rin, hindi namin Nakakuha upang pumunta sa pamamagitan na ito
proseso muli, tama?
Iyon ang dahilan kung bakit uriin seleksyon, Big-O runtime ng uri seleksyon, kahit na sino?
>> AARAL: n nakalapat.
>> Jason HIRSHHORN: n nakalapat.
Dahil tulad lamang natanto Marcus at ako dito, kami ay pagpunta sa may upang
pumunta sa pamamagitan ng listahan listahan bilang ng beses.
Kaya pagpunta sa pamamagitan ng isang bagay ng haba n n dami ng beses
ay sa katunayan n nakalapat.
>> Kaya ito ay ang aming pseudocode.
Mukhang ito napakabuti.
Kahit sinong mayroon ba kayong mga katanungan tungkol sa pseudocode?
Dahil talagang uri seleksyon dapat marahil ay 12:59, code mula sa
pseudocode.
Kaya ang anumang mga katanungan tungkol sa logic ng pseudocode?
Mangyaring hilingin ito ngayon.
>> -Uri-uriin ang Pinili - habang ang listahan ay out ng order, kami ay pagpunta sa pumunta sa pamamagitan nito
at hanapin ang pinakamaliit sa bawat oras at ilagay ito sa harap.
Kaya habang ang listahan ay wala sa pagkakasunod-sunod, maaari isang tao ninyo akong bigyan na linya ng code na nag-
Hindi kayo binigyan ako ng isang linya ng code pa, mangyaring?
Ito tunog tulad ng isang ano?
>> AARAL: Iyan ay isang para sa loop.
>> Jason HIRSHHORN: Ito tunog nais ang isang para sa loop.
OK, maaari mong ibigay sa akin ang para sa loop?
Para sa -
>> AARAL: i Kapantay 0.
>> Jason HIRSHHORN: i o -
ano ay ang mga nawawalang namin?
Ano pumupunta dito mismo?
>> AARAL: int.
>> Jason HIRSHHORN: Mismong.
(Int i = 0; -
>> AARAL: i <n; i + +).
>> Jason HIRSHHORN: ipinako ito, si Jeff.
Kami ay pagpunta sa listahan, i-right?
Nakita namin na ang code bago.
Perpekto.
Kaya maglagay ng aming mga kulot tirante dito ipaalam.
Pupunta ako upang ilagay ang ilang mga kulot tirante dito.
>> Kaya habang ito ay 0, kailangan namin upang pumunta sa pamamagitan ng buong listahan.
Kaya sa bawat oras na pumunta kami sa pamamagitan ng mga listahan, ano ang gusto naming subaybayan ang mga?
>> AARAL: Kung anumang swaps ay ginawa.
>> Jason HIRSHHORN: Hanapin sa pinakamaliliit na numero.
Kaya dapat naming marahil susubaybay sa mga ang pinakamaliit na bilang sa bawat oras.
Kaya linya ko maaaring gawin upang subaybayan ang ng na ang pinakamaliit na numero?
Aleha, paano ko panatilihing track ng isang bagay?
>> AARAL: Magsimula ng isang bagong variable.
>> Jason HIRSHHORN: Magsimula ng isang bagong variable.
Kaya hayaan lumikha ng isang variable.
Anong uri?
>> AARAL: int.
>> Jason HIRSHHORN: int.
Tawagan ng ito sa mga pinakamaliliit na Hayaan.
At ano ang ginagawa nito katumbas kapag lang kami nagsisimula out?
Hindi pa namin nawala sa listahan.
Kami ay sa unang bahagi ng ilista ang aming unang pagkakataon sa pamamagitan ng.
Ano gagawin nito sa pantay, ang pinakamaliliit na numero?
>> AARAL: Halaga i.
>> Jason HIRSHHORN: Halaga i.
Iyan akmang-akma, tama?
Ang pinakamaliit na bilang sa simula ay kung saan tayo.
Kaya ngayon ay mayroon kaming ang aming pinakamaliit, at kailangan namin upang pumunta sa pamamagitan ng buong listahan at
ihambing ito pinakamaliliit sa lahat ng iba pa.
Kaya huwag pumunta kami sa listahan muli?
Michael?
>> AARAL: Kailangan mong gumawa isa pa para sa loop.
>> Jason HIRSHHORN: Isa pang para sa loop.
Gawin ni ito Hayaan.
Bigyan mo ako ng ilang mga code.
>> AARAL: Para sa loop -
para sa pinakamaliliit -
int lang j, maaari mong sabihin?
= 0; tulad na -
>> Jason HIRSHHORN: Well, kung gusto naming upang pumunta sa pamamagitan ng buong listahan -
>> AARAL: j <n, j + +).
>> Jason HIRSHHORN: hindi kapani-paniwala.
Kami ay pagpunta sa pumunta sa pamamagitan ng ang para sa loop sa sandaling muli.
At paano ko mahahanap namin ang pinakamaliliit na numero?
Tom?
Mayroon kaming ang kasalukuyang pinakamaliit na numero, kaya paano ko mahahanap namin ang bagong pinakamaliit?
>> AARAL: Maaari naming suriin kung ang pinakamaliit na numero na mayroon kami ay mas malaki sa
mga halaga, values ​​bracket j.
>> Jason HIRSHHORN: Kaya kung pinakamaliliit ay mas malaki kaysa sa halaga bracket j.
Kaya kung ang aming kasalukuyang mga pinakamaliliit ay mas malaki sa -
Pupunta ako sa ilipat ang mga dalawang linya ng code na magagamit para sa isang segundo.
Dahil bago namin gawin ang anumang pagpapalit, kami kailangan upang pumunta sa pamamagitan ng buong listahan.
Kaya ito pseudocode dapat talaga nasa labas na panloob para sa loop.
Kaya pumunta sa pamamagitan ng buong listahan.
Kung pinakamaliit ay mas malaki sa mga halaga j pagkatapos ano?
>> AARAL: Pagkatapos pinakamaliliit ay katumbas ng halaga j.
>> Jason HIRSHHORN: hindi kapani-paniwala.
Isang mabilis na tanong -
ang unang pagkakataon na pumunta kami sa pamamagitan ng loop, i pupuntahan kasing-halaga ng 0, j pupuntahan
upang pumatas 0 sa sandaling makuha namin in dito.
Kaya kami ay pagpunta sa ay naghahambing isang numero sa sarili nito.
Mahusay na ba iyon?
Hindi, hindi ito talagang mahusay.
Kaya ang kailangang aming j upang pumunta mula 0 hanggang n bawat panahon?
Huwag kami laging kailangan upang suriin sa pamamagitan ng buong listahan?
[Hindi marinig]?
>> AARAL: sa halip Magsimula sa i.
>> Jason HIRSHHORN: j lata magsimula sa kung ano?
>> AARAL: i.
>> Jason HIRSHHORN: j maaaring magsimula sa i.
Kaya ngayon namin ihambing nagsisimula may isa kami sa.
Ngunit kahit na pagkatapos, ay ang bilang mahusay hangga't maaari?
>> AARAL: i + 1.
>> Jason HIRSHHORN: i + 1 Mukhang ang pinaka-mahusay, dahil kami
Mayroon na i.
Kami ay nagsasabi na bilang pinakamaliit sa 15 linya.
Kami ay pagpunta sa magsimula sa Awtomatikong susunod na isa.
Kaya pumunta kami sa pamamagitan ng para sa loop.
Susubukan naming dumaan sa bawat oras.
Susubukan naming pumunta sa pamamagitan ng isang bilang ng beses.
Ngayon ay na nakuha namin sa pamamagitan ng ito panloob para sa loop.
Mayroon kaming sine-save ng pinakamaliit na halaga.
Kailangan namin upang ilagay ito sa simula ng listahan.
Kaya paano ko ilalagay ito sa simula ng listahan?
Ano ang variable na tumutukoy sa simula ng listahan?
Kami ay sa ito sa labas para sa loop, kaya kung ano ay tumutukoy sa
simula ng listahan?
>> AARAL: Halaga i.
>> Jason HIRSHHORN: Eksaktong karapatan.
Halaga i ay ang simula ng -
o ng paumanhin, hindi sa simula.
Iyon ay nakalilito.
Ito ay kung saan kami ay sa simula ng ang unsorted bahagi ng listahan.
Kaya mga halaga i.
At ano ang ginagawa na katumbas?
>> AARAL: Pinakamaliit na.
>> Jason HIRSHHORN: Halaga i katumbas ng kung ano?
>> AARAL: Pinakamaliit na.
>> Jason HIRSHHORN: Pinakamaliit na.
Akmang-akma.
Kaya ka ng paglalagay namin ito sa simula ng listahan, at ngayon ay kailangan naming upang ilagay
sa simula ng listahan kung saan sa pinakamaliliit na numero ay.
Kaya paano ako susulat kung saan ang pinakamaliliit number ay?
Mga Halaga ng kung ano?
>> AARAL: 0.
>> Jason HIRSHHORN: Ang maliit numero Nasa 0?
>> AARAL: Oo.
>> Jason HIRSHHORN: Paano kung ang pinakamaliit na number ay sa dulo ng
ito unsorted listahan?
>> AARAL: Paumanhin, kung ano ang mga katanungan?
>> Jason HIRSHHORN: Saan sa pinakamaliliit na numero?
Kinuha namin ang pinakamaliit at ilagay ito sa simula, may ganitong linya dito mismo.
>> AARAL: Dapat itong magkaroon nai-imbak sa ilang -
>> AARAL: Halaga j.
>> Jason HIRSHHORN: Well, ito ay hindi kinakailangang mga halaga j.
Hindi umiiral kahit na ito sa puntong ito.
>> AARAL: Mayroon kang idedeklara isang variable na mas maaga at
pagkatapos ay italaga ito upang -
kapag nakita ka sa pinakamaliliit na numero, magtalaga sa index ng numerong iyon sa
ilang mga variable o isang bagay tulad na.
>> Jason HIRSHHORN: Kaya maaari sasabihin mo na muli?
>> AARAL: Kaya kung saan mo ipinahayag int pinakamaliliit na, dapat mo ring magpahayag int
pinakamaliliit na index = i, o ang isang bagay tulad na.
>> Jason HIRSHHORN: Kaya kung saan ko int pinakamaliliit na, hindi lamang dapat kong subaybayan ang
ng halaga ngunit ang lokasyon.
int smallest_location = in na ito kaso, bibigyan namin lamang gawin i.
Kailangan naming malaman kung saan ito.
Nakakuha kami sa dulo ng code, at kami napagtanto namin ay may walang ideya kung saan ito ay.
At kaya muli, kami ay pagmamapa ito sa 00:59.
Ikaw guys coding na ito sa iyong sariling kalooban marahil makakuha ng sa parehong problema.
Paano ang ano ba ko mahahanap ito?
At pagkatapos ay natanto, maghintay, ako kailangan upang subaybayan ang mga iyon.
>> Kaya kung pinakamaliliit ay mas malaki kaysa halaga j.
Itinakda namin pinakamaliliit na katumbas sa halaga j.
Ano pa ang kailangan namin upang baguhin?
Constantin, ano pa gawin kailangan namin upang baguhin?
>> AARAL: Ang lokasyon.
>> Jason HIRSHHORN: Mismong.
Kaya ninyo ako na linya sa code.
>> AARAL: smallest_location = j.
>> Jason HIRSHHORN: Mismong.
At pagkatapos ay pababa sa dulo, kung gusto naming ilagay sa unahan ng listahan kung saan
ang pinakamaliit na number ay, kung paano huwag mag-refer namin sa kung saan ang
pinakamaliliit number ay?
Marcus?
>> AARAL: Ang pinakamaliit na number ay Matatagpuan sa pinakamaliliit na lokasyon.
>> Jason HIRSHHORN: Kaya sa mga halaga smallest_location.
At ano ang ilalagay namin doon?
Ang simula ng listahan, ano ang na?
>> AARAL: Well, hindi kami talaga alam ngayon dahil sinulatan papatong namin.
Kaya ito ay isang swapped mga lokasyon ng mga dalawang linya?
Kung lumipat ka sa mga dalawang linya sa paligid.
>> Jason HIRSHHORN: OK, kaya hindi namin ngayon, dahil reset na namin ang linya
bago i mga halaga sa pinakamaliit.
Kaya nawala namin na paunang halaga.
Kaya't sinabi mong swap ang mga dalawang linya.
Kaya ngayon ilagay sa unahan ng listahan kung saan na ang pinakamaliit na numero ay.
Kaya smallest_location ay katumbas ng halaga i.
Iyon gumagalaw ang simula ng ito unsorted bahagi ng listahan sa
pinakamaliliit na lokasyon.
At pagkatapos ay sa mga halaga i ka namin gumagalaw na pinakamaliliit na numero.
>> Gumagana ba na make kahulugan kung bakit namin Nagkaroon upang gumawa magpalitan na?
Gusto namin ang mapapatungan halaga na - isa pang bagay marahil ay magkakaroon
may korte out at natagpuan sa GDP.
Kaya nagsagawa kami ng pag-aalaga ng lahat ng pseudocode.
Mayroon bang anumang bagay kami kailangang isulat dito?
Maaari kahit sino sa tingin ng anumang bagay?
>> AARAL: Paano ko malalaman mo kapag tapos ka na?
>> Jason HIRSHHORN: Paano ginagawa namin alam kapag tapos na kami?
Mahusay na tanong.
Kaya paano ko malalaman namin kapag tapos na kami.
>> AARAL: Lumikha ng isang variable na panatilihin ang bilang ng ng kung mayroong isang magpalitan ginawa o hindi
at pumunta sa pamamagitan ng pass.
>> Jason HIRSHHORN: OK.
Ito ay gumagana sa bubble sort.
Ngunit para sa uri pagpili, kung hindi namin gumawa ng swap, na maaaring lamang maging
dahil sa pinakamaliliit na halaga ay sa ito ng tama ang lokasyon nito.
Maaaring mayroon kami ng isang listahan 1, 2, 4, 3.
Ang ikalawang oras sa pamamagitan ng namin ay hindi magsagawa ng anumang mga swaps.
Babalik kami sa bilang 2, ngunit kami ay kailangan pa rin upang panatilihin ang pagpunta.
Kaya kailangan namin upang masubaybayan kapag tapos na kami, o nais lang namin upang pumunta
hanggang sa ito ay tapos?
>> AARAL: Maaari lang namin pumunta hanggang sa natapos.
>> Jason HIRSHHORN: maaari lang namin pumunta hanggang sa ito ay tapos na.
Sa bubble sort, handa akmang-akma sa iyo, Jeff at Aleha, gamit ang iyong solusyon -
ito ay mahusay na upang masubaybayan kung gaano karaming swaps na ginawa mo, dahil sa bubble
-uri-uriin, kung gagawin mo sa katunayan gumawa walang swaps, tapos ka na at maaari mong i-cut siguro iyong
problema pababa sa isang bit.
Ngunit para sa uri seleksyon, ikaw talaga Nakakuha upang pumunta sa pamamagitan ng sa dulo ng
ilista ang bawat oras sa paligid.
>> Kaya ito ay na iyon.
Mayroon kaming dalawang minuto ang natitira.
Ni gawin ang lahat ng Hayaan.
Hayaan akong lamang bukas Hanapin dito at gumawa ng mga sigurado ako sa katunayan pagtawag up -
Hindi ako pagtawag bubble sort.
Ni baguhin ito upang uriin seleksyon Hayaan.
gumawa ng lahat. / mahanap.
Ng makahanap ng 42 Hayaan.
Ito oras kami ay pagpunta sa pumasa sa isang unsorted listahan, dahil dapat itong uri-uriin
unang, alinsunod sa mga code find - dapat pagbukud-bukurin unang paggamit ng aming function na-uri-uriin at pagkatapos ay
tumingin para sa isang bagay.
Daliri ng matang sa lahat.
>> Oh aking kabutihan.
Whoa, ang aking puso ay matalo.
Kaya na ay tama.
Sa katunayan, kung tumakbo namin ito nang higit pa malawakan, ang code, kasing layo ng makakaya ko
sabihin, ay ganap na ganap tama.
Mayroong ilang mga mungkahi Gusto ko magkaroon ng para sa iyo.
Halimbawa, 15 at 16 na tila medyo kalabisan.
Mukhang tulad ng gagawin mo ay hindi kinakailangang kailangan upang i-save ang parehong mga.
Kung mayroon kang mga pinakamaliliit na lokasyon, mo Maaaring madaling mahanap ang pinakamaliit na halaga sa pamamagitan ng
lamang ng pag-type ang mga halaga ng i.
>> Kaya kung ako ay ma-grading ang iyong code, na ako ay sa katunayan maging, nais ko
marahil tumagal-off ang isang punto kung ikaw Kasama ang parehong mga pag, dahil ikaw
hindi na kailangan ng parehong mga.
Kung mayroon kang mga lokasyon, maaari kang napaka madaling makuha ang halaga.
At ito ay tila medyo kakaiba upang i-imbak ang dalawang iyan.
Siguro hindi kahit na tumagal ng isang punto, ngunit tiyak magkomento na iyon ay siguro
hindi isang pangkakanyahan choice kailangan mong gawin.
Siyempre pa, ang code pa rin ay nagpapatakbo ng ganap na ganap na rin.
>> Kaya sa kasamaang-palad namin ay hindi makapunta sa bubble sort.
Ikinalulungkot kong tungkol iyon.
Ginawa namin ang uri seleksyon tapusin.
Kahit sinong mayroon ba anumang panghuling tanong tungkol sa uri seleksyon?
>> OK, bago magtungo ang out namin, gusto ko sa iyo upang buksan ang iyong browser Chrome.
Paumanhin, na noon ay lamang ng isang maingay plug para sa isang uri ng internet browser.
Maaari mong buksan up ang anumang uri ng browser, ngunit magkakaroon ito marahil maging Chrome.
At pumunta sa sumusunod ito website -
sayat.me/cs50.
Kung hindi ka mag-type sa iyong computer sa ngayon, ikaw ay malinaw na
Hindi ito ginagawa, Tom.
>> At mangyaring gawin ito alinman sa kanan ngayon o sa susunod na oras -
bigyan ako ng ilang puna.
Ito ay para lamang sa dalawang seksyon.
Mayroon kaming maraming iba pang mga magkasama, kaya ko magkaroon ng maraming kuwarto upang mapabuti.
Sana ako ginawa din ang ilang mga bagay na rin.
Kaya maaari mong gawin sa akin pakiramdam sa lahat ng masama, ngunit kung gusto mo ba rin na ninyo ako ng SMILEY
mukha, Gusto ko Pinahahalagahan din iyon.
Punan na in
>> At sa isang minuto ang natitira, na noon ay linggo tatlo.
Magtatagal ako tumayo sa labas para sa isang bit kung mayroon kang anumang mga katanungan.
Ay ko bang makita ka guys sa magbigay ng panayam bukas.