>> JASON Hirschhorn: Bonvenon al semajno tri, everyone.
Ni havas tre okupita sed ekscita sekcion antaŭ ni.
Do unue, ĉar ni jam faris kelkajn progresojn kun la kurso, sed ni ankoraŭ
esti multe da lernado lasita fari, mi estas montros al vi uloj iuj rimedoj
kiuj devus pruvi al esti nekredeble helpema kiel vi ne nur alproksimigi via
problemo aroj, sed ankaŭ digest ĉiuj la materialo ni donos al vi infanoj en
prelegoj kaj mallongaj kaj sekcion.
>> Tiam ni pasigos la unuajn 20 por 25 minutoj de sekcio iras trans
GDB, kion vi povas aŭ ne havi uzata en ĉi tiu punkto, sed ĝi estas
nekredeble utila ilo kiu volas helpi vin elpurigi viajn programojn.
Multaj el vi eble uzis printf en la meze de via programo por kalkuli
el kio variablo egalas.
GDB estas eĉ pli bona ol printf kaj ne screw up via kodo ĉar vi
kuri sur plenumebla dosiero.
Do ni transiru al la 10 plej helpema ordonas al vi bezonos por GDB, kaj ni estas
tuj iru ekzerco kune tiel en problemo starigis tri kaj tie, vi
povas uzi GDB helpi elpurigi viaj programoj.
Kaj fine, ni tuj iru super iu ordig kaj serĉanta algoritmoj
ke vi vidis en lekcio, kaj ni estas tuj reale kodo, ne nur
_pseudocode_, sed kodo binary search: bobelo varon, kaj selektado varo.
>> Do unue, mi deziras iri super la rimedojn.
Ĉi tio estas vasta listo, kaj ĝi estas malgrandan tiparon ĉar mi havis multon por
adapti ĉi tie.
Sed tiuj ne nur helpas vin, denove, kun la problemo aroj kaj
digesti informojn vi lernis, sed definitive, venu kvizo tempo, ĉi tiuj estos
esti nekredeble utila.
Do unue, la prelego notoj.
Se vi iras al cs50.net/lectures kaj rulumu al la specifa semajno kaj hodiaux,
vi vidos, ke estas notoj por ĉiu prelegi, kiu ne estas simple
transskribo, sed versio eldonita de kio estis kovrita en prelego kun kodo
kodaĵoj kaj aliaj helpemaj tidbits.
Mi forte rekomendas iri super tiuj.
Kaj poste tiel, ekzistas fontkodo disponebla de ĉiu prelego.
Kaj denove, tiuj diapozitivoj ankaŭ estos alirebla rete, je cs50.net/sections
hodiaux vespere.
>> Do dua estas la mallongaj ĉiusemajne ke kovrilo temoj, kutime de 5 al 15
minutojn longa.
Kaj tiuj espereble donos al vi grandan imprimación pri diversaj temoj.
Tria -
kaj tio estas tute nova ĉi jaro - estas study.cs50.net.
Se vi ne kontrolis ĝin, mi forte rekomendas ke vi agu tiel.
Vi atingos pluki temo.
Ni havas dekojn da fadenoj pri tie.
Do ekzemple, vi elektu Funkcioj.
Ĝi donas al vi iom da diapozitivoj kaj notoj pri funkcioj.
Tiuj estas fakte la diapozitivoj kiuj TFS Ni instigas uzi dum niaj
prezentoj en sekcio.
Ekzistas ankaŭ konsilojn kaj trukojn por kontraktanta per funkcioj, kaj tie estas
praktiko problemoj kiuj helpas vi laboras kun funkcioj.
Ni donu al vi ligilojn al la mallonga je funkcioj kaj la tempoj ke funkcioj
elvenas en prelego.
Do study.cs50.net, tutnova ĉi jaro, unu fantazia rimedo.
>> Tuj poste, mi havas homo, kiu estas la manlibro komando, ke vi povas kuri al la
komandlinio.
Do se vi havas demandojn pri komando, ekzemple, rand, kiun ni
renkontis lastan semajnon dum sekcio kaj vi verŝajne renkontis en
via problemo metita kiam irante tra la generas kodon, sed se vi tajpas viro
Rand, vi ricevos la paĝo kiu informas vin pri la rand.
Ĝi donas al vi, kion ĝi faras, la parametroj ĝi portas, tiel kiel reveno
tipo kaj mallongan priskribon de tiu funkcio.
>> Do kontrolu rand.
Ĝi povas esti iom wordy kaj konfuza, tial kelkfoje mi trovas ke
simple Googling kion mi volas scii estas la plej bona maniero por trovi la respondon.
Do ekzerci per Google.
Akiru bona ĉe Google.
Ĝi fariĝos via plej bona amiko.
>> Tiel kiel Google, se vi ne povas trovi ĝin en Google, cs50.net/discuss, ĝi estas
la diskuto forumo.
Estas tre probable ke se vi havas demandon, unu de via 700 + paroj ankaŭ havas tiun
demando kaj eble demandas Jam en la diskuti
forumoj kaj gxi respondis.
Do se vi havas komunan demandon aŭ vi havas demandon, ke vi opinias
eble aliaj homoj eble kolizios, kontrolu cs50.net/discuss.
>> Fine, la du lastaj, se vi volas paroli kun vera homo, oficejo
horoj de lundo al vendredo.
Ekzistas ankaux enreta oficejo horoj por etendo studentoj.
Kaj laste, sed certe ne malplej, Mi, exclamation point.
Vi ĉiuj havas mian kontaktan informon.
Se vi bezonas ion, bonvolu neniam hezitu kontakti min.
Ĉiam bonvolu fari tion.
Tre malmultaj el vi aldonis min je Gchat, tiel ke estis seniluziiga,
sed espereble tio povos ŝanĝi inter tiu kaj venonta sekcio.
Demandojn tiel malproksime sur la rimedoj?
Granda.
>> Fine, alia kuseneto por sugestoj, sayat.me/cs50.
Vi povas doni al mi anoniman sugestoj sur kiel mi faras.
Tio estis vere helpemaj pasintsemajne.
Mi ricevis kelkajn komentojn el vi infanoj tuj post sekcio, plus el
aliaj studentoj, kiuj rigardis ĝin dum la semajno, kaj ĝi
estis nekredeble utila.
Mi tuj provos kaj limigi mian uzon de la vorton "dolĉa", sed mi montros mian
entuziasmo kaj ekscitiĝo en aliaj manieroj.
Sed tie estis aliaj aldonan substantivo reagojn,
ambaŭ pluses kaj delto.
Do bonvolu, mi donos al vi uloj sugestoj sur via problemo aroj.
Bonvolu doni al mi sugestoj pri mia instruado.
Mi estas ĉi tie por vi guys.
>> Granda.
Tio estas ĉio mi havas pro La unua sekcio.
Ĉu iu havas iun demandojn ĝis nun?
Kaj mi havas noton por la kontrolon centro.
Pligrandigo studentoj mesaĝon al mi dirante ili ne ricevas neniun sondosieroj,
sed tio estas el mia povo por ripari.
Do espereble, ke gets malkomponita baldaŭ.
Se vi rigardas en linio, hi, sed vi ne povas aŭdi min.
>> Do unue, ni iras iri tra GDB.
GDB, kiel mi sugestis en pli fruaj, Estas debugging ilo
multe pli bona ol printf.
Do por starti kun GDB, vi infanoj, se vi volas malfermi vian aparaton
kaj prenu la dosieron kiun mi retpoŝtis al vi pli frua - tiu dosiero ankaŭ estos
disponeblaj rete en iom -
kaj kuri GDB. / la nomo de la dosiero.
Unue, kompreneble, vi devas kompili dosieron ĉar GDB nur funkcias sur
plenumeblajn dosierojn.
>> Sed se vi iam volas komenci GDB, la unua afero kiun vi faros,
vi kuros GDB. / Cezaro.
Do tio estas la nomo de la programo ni estas tuj iru kun ĝi ĝuste nun.
Do mi tuj skribos fari Cezaro, kiuj donos al mi ruleblan dosieron
tien reliefigis en verda.
Kaj poste mi iros kuri GDB. / Cesar.
>> Kaj vi iros.
Komprenu, ni havas iu teksto telling me pri la versio de GDB, donante al mi
iu ajn garantio informo, kaj tiam ni havi la GDP prompto, kiu aspektas speco
de kiel nia komandlinia prompto, sed vi vidas estas malferma
paren, GDB, proksime paren.
Antaŭ ni daŭre kaj erarserĉilo ĉi dosieron kiun mi sendis al vi cxiujn, ni rigardu
iuj utilaj komandoj tiel ni havos senco el kio ni iras, por kovri.
>> Ĉi tiuj komandoj estas listigitaj ĉi tie en la ordon, en kiu mi ĝenerale uzi ilin.
Do mi komencas mian programon kurante GBD. / Nomo de la programo,
en ĉi tiu kazo, Cezaro.
Kaj tiam la unua afero, kiun mi faros 99,9% de la tempo estas tipo paŭzo signifas.
Tio starigas ripozon punkto je ĉefa.
Esence, kion vi faras tie estas la programo tuj halti en
ĉefa tiel vi povas komenci ekzameni lin linio per linio, anstataŭ kuri ĉiuj
la vojo tra.
Vi povas rompi al malsamaj punktoj en via kodo, sed ĉefaj estas ĝenerale
bona loko por komenci.
>> La venonta ordono mi kuros estas run.
Tio komenciĝas la programo kuras, kaj se vi bezonas eniri komandlinia
argumentojn, vi kuros, ke komandon.
Rulu la argumentojn.
Do, kiam ni iras trans versio de C, kiu estas la programo vi infanoj
skribis por pset du -
ĉi tiu, kompreneble, havas iujn cimojn en tio ke espereble ni trovos -
Ni tuj kuri run kun iu komando linio argumentoj ĉar Cezaro,
kiel vi knaboj scias por la problemo starigis spec, prenas iun
komandlinia argumentoj.
>> La venonta paro da ordonoj, la sekvantan unu estas efektive nomas proksima.
Ke oni prenas vin linion por linio tra via programo.
Do bati n tiam Entajpu prenas vin al la sekva linio, ekzekutante
la antaŭa linio.
Ŝtupo ne nur prenas vin al la sekva linio, sed
prenas vin ene funkcioj.
Do, se vi jam skribis funkcio en via kodo aux se vi volas esplori
al mi, ekzemple, oni povas bati s, kaj anstataŭ iri al la sekvanta linio de
La dosiero kiun vi iras tra dekstra Nun, vi vere Step Into
tiun funkcion kaj vidi lian kodon.
>> Listo montras al vi, en tre uzanto amika formato, la 10 aŭ tiel linioj ĉirkaŭ
kie vi nun estas en via kodo tial vi povas fakte vidi kiel la dosiero
prefere ol, havante por interŝanĝi dorso kaj reen inter malsamaj opinioj.
Presi estas kiel printf, kiel lia nomo indikas.
Tio montras al vi, kion variablo egalas.
>> Informoj lokanoj estas vere utila.
Tiu estas speciala versio de presitaj.
Informoj lokanoj montras vin ĉiujn el la lokaj variabloj, presas ilin ĉiujn por vi
kiuj estas aktuale havebla.
Do mi ĝenerale, anstataŭ devi presi la kvar variabloj ke mi estas
scivolema pri se mi estas en buklo, por Ekzemple, mi simple skribus info lokanoj,
kaj tio montros al mi, kion mia vendotablo i egalas, same kiel la tabelo, ke mi estas
laborante en egalaj.
>> Fine, daŭrigu.
Tajpado ripozon detenas vin ĉe la rompo punkto.
Vi povas promeni tra linio por linio kun proksima kaj paŝo.
Daŭrigu runs la programon al via venonta rompi punkto aŭ ĝis finaĵon, se
ne estas pli alta punktoj.
Malebligu forigas ripozon punktojn se vi decidis la paŭzo ĉe ĉefa estis
malkonvena, ke vi volas metu gxin aliloke.
Kaj fine q, quit, eliras de GDB.
>> Do tiu programo,. / Cezaro, tuj rigardi tra ĝuste nun ni
uzotan GDB trovi la cimoj en tiu programo.
Mi kuris ĉi programo pli frue kun Kontrolu 50, kaj mi atingis unu sulkigante la frunton.
Ĉio tio ekzistis, kompilis, ĝi pasis multe de la provoj, sed por
ial, ne pasis la kvina provo, turnante BARFOO, ĉiuj kaskedoj, en
E-D-U-I-R-R, ĉiuj kaskedoj, uzante tri kiel ŝlosilo.
Mi ricevis belan proksima.
Mi elbusiĝis per unu litero.
Do tie estas kelkaj malgrandaj eraron en ĉi tie.
Mi rigardis tra mia kodo.
Mi ne povis kompreni ĝin.
Mi esperas, vi uloj povas helpi min eltrovi, kio estas tiu besteto estas.
>> Do tio estas la eraro ni estas serĉi.
Ni movi en GDB.
Denove, mi kuros GDB. / Cezaro, tial nun ni estas en GDB.
Kaj kio estas la unua aferon mi devus fari?
Mi ĵus eniris GDB.
Iu donu al mi bonan komando eniri.
>> Lernanto: Break ĉefa.
>> JASON Hirschhorn: Break ĉefa.
Fantastic.
Ni tajpi ke in
Vi infanoj povas spekti ĉi tien aŭ sekvi longeco sur viaj komputiloj.
Break ĉefa, kaj vi vidos rompo punkto estis fiksita je -
tio donas al mi iom stranga memoro adreson, kaj ĝi ankaŭ donas al mi la linion nombro.
Se mi retrorigardas al ĉi tiu dosiero: Mi rimarkas, ke ĉefa
okazis sur linio 21.
Kion mi devus kuri sekvanta?
Estas mia programo kuras?
N-ro
Do kion devus mi kuros apud?
>> Lernanto: Kuru.
>> JASON Hirschhorn: Kuru.
Chu mi nur kuras kuras, aŭ devus Mi aldonos kelkajn aliajn aferojn en?
>> Lernanto: Rulu la argumento.
>> JASON Hirschhorn: Rulu la komando argumentoj.
Kaj ĉar mi elpurigi tre specifa kazo, mi devas eniri ke
komandlinia argumento.
Do mi devos ja kuras tri, kiuj estas, denove, la eligo mi ricevis de Check 50.
Startanta programo.
Ni iru tra paro da linioj.
Vi nun vidas ke ni estas sur linio 21.
Kiel mi scias, ke ni estas sur linio 21?
Ĉar se vi rigardas maldekstren de miaj terminalfenestro, tie
diras linion 21.
Kaj tio donas al mi, fakte, la kodo, kiu estas ĉe linio 21.
Do mi misspoke antaŭe.
Artikolo ne estas reale en linio 21.
Artikolo estas paro de linioj super 21.
Sed je la linio 21, kiu estas kie ni rompi.
Ĉi linio de kodo havas ankoraŭ ne ekzekutitaj.
Tio estas grava.
La linio vi vidos havas ne estis ekzekutita ankoraŭ.
Tio estas la sekvanta linio de kodo vi estas pri ekzekuti.
>> Do la sekvan linion, kiel vi knaboj verŝajne konanta, estas jena
kondiĉo kontrolanta vidi se mi havas eniris komandlinia argumento.
Kaj al mi, kio estas la dua parton de tiu faras?
Kio estas i?
>> Lernanto: Ŝanĝi ĝin al entjero.
>> JASON Hirschhorn: Pardonu?
>> Lernanto: Oni ŝanĝas la argumento al entjero.
>> JASON Hirschhorn: Do al mi ŝanĝas arg v1 el ŝnuro al entjero.
Kaj poste kio ĝi kontrolanta?
>> Lernanto: Se estas dua komandlinia argumento, flanken
el kuri la programon.
>> JASON Hirschhorn: Kaj kio estas la dua duono de tiu
Bulea esprimo kontrolanta?
Tiu parto super tie, por i?
>> Lernanto: Se estas negativaj.
>> JASON Hirschhorn: Making certas kion?
>> Lernanto: Making certa ke Estas, fakte, pozitiva.
>> JASON Hirschhorn: Ekzakte.
Tio estas kontrolanta vidi se ĝi estas negativa, kaj se ĝi estas negativa, I
antaŭsenti la sekva linio forteco estu al mi kriante al la uzanto.
Do ni trafis finon ekzekuti tiun linion.
Ni ja ne vidas ke linio kiu vi uloj eble anticipis vidi kriante al la
uzanto kaj tiam reveni, ĉar ĉi linio ne ekzekutis.
Mi eniris 3.
Do mi faris, fakte, eniru du komando linio argumentoj, kaj 3 estas
pli granda ol nulo.
Do ni vidis tiun linion, ni ekzekutitaj, sed ni ne tretis
interne de la se kondiĉo.
>> Do nun, tuj, mi vidas ke mi opcio int klavo egalas unu al i arg v1.
Do kiu estas al mi krei variablon ŝlosilo.
Do, se mi presas el ŝlosilon ĝuste nun, ĉar kiu permesas al vi rigardi la
valoron ene de la variablo, klavo egalas 47.
Tio estas stranga, sed kompreneble, tio estas ĉar mi ne havas
ekzekutita tiun linion ankoraŭ.
Do nun, se mi batis n, ekzekuti tiun linion, kaj do print klavo, ŝlosilo egalos 3,
kio estas kion ni atendas por egali.
>> Do denove, en GDB, la linio vi konstatas, ke vi ne ekzekutitaj ankoraŭ.
Vi devas bati n aŭ s aŭ nombro de aliaj komandoj al reale
ekzekuti tiun linion.
Print ŝlosilo.
Ŝlosilo de ĉe 3.
Ĝis nun, tiel bona.
Ŝnuro estas simpla teksto.
Ni faros tiun linion.
Mi prenanta kordo de uzanto.
>> Vidu en mia Check 50, I eniri BARFOO ĉiuj kaskedoj, tiel
tio estas kion mi eniru.
Se mi nun presi plain text.
Vi vidos ĝi egalas ĉenon.
Ĝi donas al mi iom alia bizara deksesuma nombro, sed ĝi faras en
Fakte diri ke miaj ŝnuroj estas BARFOO.
Se mi volis vidi kion klavo egalis je tiu punkto, kiel mi povus kontroli klavo?
>> Lernanto: Presi ŝlosilo.
>> JASON Hirschhorn: Presi klavo, ekzakte.
Kaj efektive, estas simbola ligilo.
Se vi laciĝos tajpi presi, Vi povas simple tajpi p.
Do p klavo faras la saman ĝusta afero.
Kaj cetere, mi vidas ĝin egalas 3.
>> Se mi volis eltrovi, kio ambaŭ ŝlosilon kaj BARFOO egalis al la sama tempo
sed mi estis laca de tajpado ĉiu unu el individue, mi
povis tajpi info lokanoj.
Tio donas al mi ŝlosilon egaluloj 3.
Plata teksto egalas BARFOO.
Ĝi ankaŭ donas al mi tiujn du strangajn aferojn ĉe la supro, ĉi variablo i kaj
ĉi variablo n.
>> Tiuj estas reale ekzistanta en mia ĉefa programo.
Ni ne trovis ilin ankoraŭ, sed kiel antaŭvido, tiuj
ekzistas en mia por buklo.
Do nun, ili egalas kelkajn strangajn numerojn, ĉar ili ne estis
pravalorizita ankoraŭ, sed ili ankoraŭ ekzistas en memoro, tiel ili estas simple aro
iuj rubo valoro.
Sed ni vidos ŝlosilon en stepo teksto rajton tie.
>> Do mi tuj ekzekuti tiun linion, linio 34, la buklo.
Ni tuj saltas en la por buklo batante n.
Kaj ni estas interne la buklo.
Ni estas je nia unua ĉekon.
Kaj denove, tiuj devus ia rigardu familiaraj al vi pro tio estis
Cezaro programo kiu estis skribita, sed denove, havas iun tipon de eraro.
>> Kaj nun se mi faras info lokanoj, ĉar mi estas interne ke por buklo, vi vidos
ke i egalas al nulo, kiel ni atendus.
Tio estas kion ni starigu ĝin kaj pravalorizita ĝin en la buklo.
n egalas 6.
Tio ankaŭ havas sencon ĉar ni aro ĝin al la strlen de simpla teksto.
Do mi ŝatus fari info lokanoj aux presita al variablo ofte certigi ke
ĉio estas ĉiam kion Mi atendas por egali.
En ĉi tiu kazo, ĉiu estas kion mi atendas por egali.
>> Do ni komencu movante tra ĉi por buklo.
La linio Mi on estas linio 36, se ebenaĵo teksto i estas pli granda ol a kaj stepon
teksto i estas malpli ol aŭ egala al z.
Mi scias, mia problemo ne estas cxe mia unua letero, tio estas kun la dua litero.
Se ni retrorigardas al Check 50, B iras al E fajna.
Mi prenas la A kaj lasante ĝin kiel A, ne ŝanĝante ĝin al D. Do
io estas malĝusta kun la dua litero.
Do mi tuj movas tie en sekundo.
>> Sed se mi volas kontroli kion ebenaĵo teksto mi egalis en tiu aparta
kazo, mi kredas ke devus esti kio?
Kio devus plain text mi egalus en ĉi unua ronda tra la buklo?
>> Lernanto: Nulo?
>> JASON Hirschhorn: Plata teksto de mi?
Do ĝi devas esti ĉefurbo B. Mi, kompreneble, egalas nulon, sed simpla teksto
krampo nulo fermita krampo egalas B. ĉar kordoj, kiel ni vidis, la lasta semajno,
estas tabelo, do ni ricevas la unua karaktero de tiu.
Do denove, se mi presas el simpla teksto de Mi, mi, fakte, akiru la karaktero
B. Kaj tio estas neta, right?
Mi ne vere havas plain text I. Tio ne estas unu el la variabloj Mi starigis
aŭ pravalorizita, sed vi povas presi el tuta armeo de la aferoj
se vi ŝatus.
>> Sed ni moviĝas tra.
Se simpla teksto mi estas pli granda ol A kaj plata teksto mi estas malpli ol aŭ egala al
Z, kiu klare estas vera ĉar ni havas majuskla B. Mi tuj kuros
iu komando en ĝi.
Ni vidis ke matematiko lasta semajno, ni do preni estis certa, ke ĝi funkcias
rajton laŭ Kontrolu 50.
>> Tiuj krispa krampoj, la unua montris, ke mi estis eliri de la se
kondiĉo, la duan oni montris ke mi eliri la buklo.
Kaj tiel nun, kiam mi batis Tuj, ni vidos ni estas ree en la buklo denove.
Ni iras tra la por buklo denove.
Ni vere eniri la duan ripeto de la buklo kaj tipon
info lokanoj.
>> Do ni estas en la dua iteracio de nia por buklo.
Mi egalas 1, kion ni atendas.
N egalas 6, kion ni atendas.
Ŝlosilo egalas 3, kion ni atendas.
Kaj plata teksto, vi vidos, egalaj EARFOO nun, ne BARFOO plu ĉar
en niaj antaŭaj ripeta, la B estis ŝanĝiĝis al ĉefurbo E. Do ni estas proksimume
renkonti la problemo, do ĉi Tie estas kie ni iras al
plonĝi en la debugging.
Sed tio neniun havas demandojn pri kio ni jam faris ĝis nun?
Fantastic.
>> Do ni estas proksimume ekzekuti ĉi se kondiĉo, plata teksto krampo Mi fermis
krampo granda ol A kaj plata teksto mi malpli ol aŭ egala al Z. Sed antaŭ
Mi iros en tiun, ĉar tiu estas kie Mi scias, mia eraro estas, mi volas atentigi
el simpla teksto de I. Tiel ni metu print out.
Ĝi faras egali la rolulo A, tiel ke ŝajnas ĝis nun, ĉio estas bone kaj bonaj.
>> Do mi atendas tiun linion por mia logiko, tiu rekto devas esti vera.
Ĝi estas majusklo.
Sed se mi batis n, ni rimarkas, ke tiu linio, fakte, ne ekzekutis.
Mi saltis malsupren al la alia se.
Kial tio okazis?
>> Lernanto: Ĉar vi havas vian kondiĉo de plata teksto, estas pli granda
ol A, ne egala aŭ pli granda ol.
>> JASON Hirschhorn: Do mi havis mian plain text Mi estas pli granda ol A, ne estas pli granda
ol aŭ egala al.
Do klare, la ĉefurbo A ne deĉenigi ĉi se kondiĉo, kaj ni faris
ne per paŝo en gxin, kaj ni faris ne faru la necesajn deĵoro.
Do jen tio, fakte.
Mi eltrovis mian cimon.
Mi povis reiri en mian fontdosieron, ŝanĝi ĝin, kaj ĝisdatigi ĝin kaj
kuri Kontrolu 50 denove.
>> Sed ni vidos, nur por pedagogio de sake, se mi plu iri.
La alia, se ĝi ne faros bone, sed kio anstataŭ egalas estas la komando
ke tio ne ŝanĝiĝos.
Do ĝi ne estas ŝanĝita ĉe ĉiuj, kaj se mi presi plain text tie, ni vidos irante
tra kiuj por buklo ne, fakte, ŝanĝi tion duan karakteron al ĉiuj.
Ĝi estas ankoraŭ majuskla A.
>> Do denove, ni elpurigita nian eraron.
Ni rimarkis, ke ne estis iuj logiko mankas.
Kaj ni elpurigita ŝin antaŭ tempo antaŭ ol reale ekzekuti tiun linion,
sed vi estus rimarkinta ni havis nur batis Venonta kaj salti por ke alie se,
tio signifas, ke tiu, se kondiĉo ne estis vera.
Ni ne, fakte, get la rezulton ni atendis.
Tial do ni povus esti instigis, havis Ni ne estis tiel ruza, rigardi
ke se kondiĉo kaj kontrolu ĉu, fakte, nia kondiĉo devus taksi al
vera en la nuna kunteksto.
>> Tio estas ĉio por elpurigi ĉi programo.
Ĉu iu havas demandojn?
Kio komando mi povus bati eksiĝi GDB?
Q. Kaj tiam mi estos pridemandata, quit ĉiuokaze?
Jes aŭ ne.
Mi batis jes, kaj mi devos forlasi GDB.
>> Do, kiu estis rapida imprimación al GDB.
Efektive, en reala scenaro, Mi faris ĉi tiun ĉe oficejo horoj.
Mi GDBed precize tiu ĉi programo ĉe oficejo horojn kun lernanto.
Kaj se ni reiru al la komandojn ni vidis antaŭe, ni uzis ripozon ĉefa, la unua
afero, kiun ni faris.
Ni uzis run per komandlinia argumentoj, dua afero, kiun ni faris.
Ni uzis sekvanta multe movi ni per linioj.
Kaj cetere, la mallonga versio de la flanko estas n.
Tio estas en la krampoj en griza sur la glito.
>> Ni ne uzu paŝo, sed ni ne nepre bezonas por tiu kazo.
Sed ni povus uzi ĝin en iom poste sur hodiaŭ se ni elpurigi, por
Ekzemple, duuma serĉo kiam duuma search nomiĝas en separata
funkcio sed ekzistas iu eraro kun ĝi.
Ni tuj volas treti sur La alvoko por duuma serĉo kaj
reale elpurigi ĝin.
Listo ni ne uzu ĉu ĉar ni havis bona senco de nia kodon, sed se mi
ne volis akiri senton de tio, kion kodo mi estis ĉirkaŭe, mi povus simple uzi listo.
>> Presi ni uzis, informmaterialo lokanoj ni uzis.
Daŭrigu ni ne bezonas uzi en tiu kazo, nek ni bezonas uzi
malaktivigi, sed ni faris uzon quit.
Denove, tiuj 10 ordonoj, ekzerci ilin.
Se vi komprenas tiujn 10 komandojn, Vi devus esti agordita por elpurigi neniu
ekspedi per GDB.
>> Do ni estas enirontajn plu, denove, al la Crux de sekcio hodiaŭ, irante trans
tiuj ordig kaj serĉado algoritmoj.
Antaŭ ni agos tiel, denove, demandojn, komentoj, koncernoj por GDB?
Do estas ĉiuj tuj uzi GDB anstataŭ printf?
Do ĉiuj, por cxiam, kalkaj, ĉiuj estas kapjesante iliajn kapon dekstren
nun, do mi vidos vin ĉe oficejo horoj kaj ĉiujn TFS vidos vin kaj
Ili diros, montru al mi kiel uzi GDB, kaj vi povos
montri ilin, ĉu ne?
Speco de?
Eble espereble.
Cool.
>> Do ni tuj iros al ordig kaj serĉado.
Vi vidos mi havas liston jam ordo por ni, sed tio ne tuj
esti la kazo ĉiam.
Do la problemo metita specifo por problemo starigis tri, vi havos shorts
ke vi povas spekti, kaj tio efektive petas vin spekti tiujn mallongaj.
Ankaŭ en prelego lastan semajnon, ni veturis trans multon el tiuj algoritmoj, do mi estas
Ne tuj pasigi tempon en klasa irante super tiuj algoritmoj denove aŭ desegno
bildoj por kiel tiuj algoritmoj labori.
Denove, kiuj informoj vi povas re-watch prelego, aŭ tiun informon
estas kaptita elstare sur la mallongaj por tiuj serĉoj, ĉiuj
kio estas disponebla ĉe cs50.net.
>> Do anstataux, kion ni tuj fari estas skribi tiujn programojn.
Ni havas la senton, mensan modelon pri la veno ili laboras, do kion ni iras
fari estas programi ilin por reala.
Ni tuj turni tiun mensan modelon, tiu bildo, se vi volas, en la
reala kodo.
Kaj se vi estis iom konfuza aŭ malprecizaj en la mensa modelo, mi tute
kompreni.
>> Ni fakte ne tuj salti al kodo straightaway.
Do dum ĉi prompto en ĉi slide demandas vin kodigi duuma serĉo, kaj
reale, ripeta versio de duuma serĉo, la unua afero, kiun mi
vere volas vi fari estas skribi iun _pseudocode_.
Do vi havas ĉi mensan modelon de kiel duuma serĉo verkoj.
Prenu el folio de papero, se vi havas unu _readily_ havebla, aŭ malfermi supren
tekstoredaktilo, kaj mi ŝatus ĉiuj skribi.
Prenu kvar minutoj por skribi la _pseudocode_ por duuma serĉo.
>> Denove, pensu pri tia mensa modelo.
Mi venis ĉirkaŭ se vi havas demandojn kaj ni povas desegni la bildo eksteren.
Sed unue, antaŭ ol ni komencos programado, Mi ŝatus skribi la
_pseudocode_ por duuma serĉo do kiam ni plonĝi en, ni havas iu direkto kiel
kie ni devus direkti.
>> Lernanto: Ĉu ni povas supozi la tabelo de valorojn ni preni jam ordo?
>> JASON Hirschhorn: Do por duuma serĉo labori - bonega demando - vi
devas preni en ordo tabelo de valoroj.
Do supozi ĝi funkcios.
Ni reiros al tiu bildo.
Vi vidos en purpuro la funkcio deklaro estas bool binary_search int
valoro, int valoroj, int n.
Tio devus rigardi familiara se vi havas Jam proksimiĝis aŭ alveninta via
manoj malpuraj kun la problemo aro.
>> Sed tio estas via funkcion deklaro.
Denove, ne necesas maltrankviligi ke multe ĉi-momente.
Kion mi vere volas ke vi devas fari estas preni kvar minutoj _pseudocode_ duuma
serĉu, kaj poste ni iros super ke kiel grupo.
Kaj Mi venos ĉirkaŭe.
Se vi havas demandojn, bonvolu libera levi vian manon.
>> Kial vi ne prenas du minutojn pli fini ĝis la _pseudocode_?
Mi konas ĉi eble ŝajnas ridinde ke ni elspezi tiom da tempo en
iu kiu ne estas eĉ reale en C, sed precipe por tiuj pli
defia algoritmoj kaj problem arojn kiujn ni devas eltrovi,
startanta en _pseudocode_ ne maltrankviligi pri la sintakso, nur zorgi pri
la logiko, estas nekredeble utila.
Kaj aliflanken, vi ne estas solvanta du nekredeble malfacilaj problemoj samtempe.
Vi simple centrita sur la logiko, kaj tiam vi movas en la sintakso.
>> OK.
Komencu irante tra la _pseudocode_.
Mi skribis ĉi tien, duuma search _pseudocode_.
Ni skribos tion en la forumaraj kune.
Aŭ mi skribas ĝin kaj vi donos al mi demandas de mi bezonas.
Do povas iu donas al mi la unuajn linio de la _pseudocode_ vin
skribis por duuma serĉo?
Jes, Annie?
>> Lernanto: Dum la longeco de la listo estas pli granda ol nulo.
>> JASON Hirschhorn: Dum longa de listo estas pli granda ol nulo.
Kaj cetere, oni vidas kelkajn C-aspekta sintaksa aferojn pri tie.
Sed plejparte tio estas en la angla.
Ĉu iu havas iun linion oni metis antaŭ ĉi tiu en sia pseŭda-kodo?
>> Lernanto: Get tabelo de ordo numerojn.
>> JASON Hirschhorn: Vi skribis "akiri tabelo de ordo numerojn. "Per la
funkcio deklaro, ni devos esti pasante tabelo de ordo numerojn.
>> Lernanto: [inaudibles].
>> JASON Hirschhorn: Tiel ni havos tion.
Sed jes, se ni ne havas tiun, ni bezonus ordigi nian tabelo de
nombroj, ĉar duuma serĉo nur funkcias en ordo arrays.
Do dum longo de listo egalas nulon, mi estas tuj metos en iuj krispa krampoj
por ke ĝi aspektu iom pli kiel C. Sed dum, ŝajnas mapi sur unu
dum maŝo, do ene ĉi tiu tempo buklo, kion ni bezonas por
faru por duuma serĉo?
>> Iu alia kiu ne donis al mi respondi ankoraŭ sed kiu verkis ĉi tion?
>> Lernanto: Iru al la mezo de la listo.
>> JASON Hirschhorn: Tom.
Iru al la mezo de la listo.
Kaj la sekvadon demando, kion cxu ni faru fojo ni estas ĉe la
meze de la listo?
>> Lernanto: Ĉu ĉekon ĉu tio estas la nombro kiun vi serĉas.
>> JASON Hirschhorn: Bonege.
Eniru la mezo de la listo kaj kontroli se nia valoro estas tie -
fantazia.
Ĉu iu havas ion alian kiu estis malsama ol tio?
Tio estas ekzakte pravas.
>> La unua afero, kiun ni faras en duuma serĉo estas iri al la mezo de la listo kaj
kontroli por vidi se nia valoro estas tie.
Do mi supozas, se nia valoro estas tie, kion ni faros?
>> Lernanto: Ni revenu al nulo [inaudibles].
>> JASON Hirschhorn: Jes, se nia valoro estas tie, ni trovis ĝin.
Do ni povas diri al iu vojo, tamen ĉi funkcio estas difinita, ni diru la uzanto
Ni trovis ŝin.
Se ĝi ne estas tie, tamen, tio estas kie ĉi gets komplika.
Do, se ĝi ne estas tie, iu ajn kiu laboris en duuma serĉo aŭ
havas ideon nun, kion ni faros?
>> Lernanto: Demando.
>> JASON Hirschhorn: Jes?
>> Lernanto: Ĉu la tabelo jam ordo?
>> JASON Hirschhorn: Jes, ni alprenanta La tabelo jam ordo.
>> Lernanto: Do ​​tiam vi devos kontroli se la valoro kiun vi vidas estas pli granda ol
la valoro kiun vi volas, vi povas movi al la mezo de la alia duono.
>> JASON Hirschhorn: Do se la mezo de la listo estas pli granda ol kion ni estas
serĉas, tiam ni ja, kion?
Ni movi kie?
>> Studento: Vi volas movi al la duono de la listo kun
nombroj malsupra ol tio.
>> JASON Hirschhorn: Do ni devos voki, ke la maldekstro.
Do se mezo estas pli granda, ni povas serĉi la maldekstra duono de la listo.
Kaj tiam per serĉo, kion cxu mi celas per serĉo?
>> Lernanto: [inaudibles].
>> JASON Hirschhorn: Ni iru al la mezo.
Ni efektive ripeti tion.
Ni iru returne en niajn dum buklo.
Mi donos al vi la lasta -
alie, se, mezo estas malpli ol kion ni, kion ni faros ĉi tie?
>> Lernanto: Iru dekstren.
>> JASON Hirschhorn: Serĉi dekstre.
Tio aspektas bona, sed tio neniun havas ion por ke ni estu mankas aŭ
io ajn alia ke vi metis en via pseŭda-kodo?
Do jen kion ni havas tiom multe.
Dum la longeco de la listo estas pli granda ol nulo, ni tuj iru
al la mezo de la listo kaj kontrolu se nia valoro estas tie.
>> Se la meza, estas pli granda, ni iras al serĉu forlasis, alie se la mezo estas
malpli, ni iras, por esplorrigardi la dekstra.
Do ni ĉiuj havis kelkajn familiareco kun la terminoj kiujn ni uzas en komputiko
kaj la iloj ni havas.
Sed vi jam rimarkis ni estis parolante en la angla, sed ni trovis
Multon kiu ŝajnis mapi al iloj ni havas en nia kodigo ilo kit.
Do rajton super la vesperton, ni ne estas tuj efektive programi ankoraŭ.
>> Kion ni vidas tie en la angla, ke la mapoj al aferoj kiujn ni povas skribi en C?
>> Lernanto: Dum.
>> JASON Hirschhorn: Dum.
Do tiu tempo ĝuste ĉi tie mapoj sur kio?
>> Lernanto: A dum buklo.
>> JASON Hirschhorn: A dum buklo?
Aŭ eble, pli ĝenerale, ciklo.
Ni deziras fari ion pli kaj pli.
Do ni tuj programi banton.
Kaj ni jam scias, ĉar ni jam faris ĉi paro da fojoj kaj ni
havas multegajn ekzemplojn el tie, kiom reale skribi
ĉi indekso por banton.
Por ke estu sufiĉe facila.
Ni devus povi atingi tiun komenciĝis bela rapide.
>> Kion alian ni vidas en ĉi tien?
Kiuj aliaj strukturoj sintakso, aĵoj kiuj ni estas familiara kun en C, do ni
jam havas senco bazita for de la vortoj ni uzis?
Jes, Anna?
[Inaudibles]
nur ŝercas.
Anna, iru antaŭen.
>> Lernanto: Se kaj alie.
>> JASON Hirschhorn: Se kaj else - right here.
Do kion tiuj aspektas kiel?
>> Lernanto: An se alia aserto.
>> JASON Hirschhorn: Yeah, kondiĉoj, right?
Do ni verŝajne bezonos skribi kelkaj kondiĉoj.
Kaj denove, kvankam eble konfuzante ĉe unue, ni ĝenerale havas senco nun
pri kiel skribi kondiĉoj kaj la sintakson por kondiĉoj.
Kaj se ni ne, ni simple rigardu la sintakso por kondiĉoj, tranĉo kaj pasto
ke, ĉar ni scias ke ni bezonas kondiĉo tie.
Ajna aliaj aferoj ni vidas ke mapon sur tion ni eble bezonas fari en C?
Yeah, Aleha?
>> Studento: Tio povas esti evidenta, por nur kontroli se oni
valoro egalas ion.
>> JASON Hirschhorn: Do kiel fari ni kontrolu kaj - tiom iri al la mezo de la listo
kaj kontrolu ĉu nia valoro estas tie?
Kiel ni faru tion en C?
Kio estas la sintakso por tiu?
>> Lernanto: Egalas, egalaj.
>> JASON Hirschhorn: Egalas, egalaj.
Do tiu ĉeko estas probable irante esti egalaj, egalaj.
Do ni scias ke ni bezonas tiun ie.
Kaj efektive, same en skribi ĝin, Ni vidas tiujn aliajn aferojn.
Ni tuj devas fari iun komparo operatoroj en tie -
fantazia.
Do ĝi reale similas, por kaj granda, ni ne skribis
vorto de C kodo ankoraŭ.
Sed ni havas la mensan modelon malsupren per prelegoj kaj tiuj mallongaj.
>> Ni skribis pseŭda-kodo kiel grupo.
Kaj jam, ni havas 80%, se ne 90% de tio, kion ni devas fari.
Nun, ni nur devas kodigi tio, kio denove, estas
ne-bagatela problemo por solvi.
Sed almenaŭ ni algluis la logiko.
Almenaŭ nun kiam ni iros al la oficejo horoj, Mi povas diri: Mi scias, kion mi bezonas
fari, sed vi povas rememorigi min pri la sintakso?
Aŭ eĉ se oficejo horoj estas plenŝtopita, vi povas Google por la sintakso, prefere
ol esti batita sur la logiko.
>> Kaj cetere, anstataŭ provi solvi la logiko kaj la sintakso problemojn cxiuj
samtempe, ĝi estas ofte multe pli bone rompi tiujn du malmolaj problemoj ekstere en
du pli regebla bonaj kaj faras la pseŭdo-kodo unua kaj tiam kodo en C.
Do ni vidu kion mi faris por la pseudo-kodo antaŭ tempo.
>> Dum la longeco de la listo estas pli granda ol nulo, vidu la mezo
el la listo.
Se nombro trovita revenis vera, alie se numeron pli altan, serĉo maldekstra.
Alie, se nombro malsupra, serĉo dekstra, revenu falsaj.
Do tiu aspektas preskaŭ identaj, se ne preskaŭ identa al kion ni skribis.
Fakte, Tom, kion vi diris unue, rompante la mezo de la listo kaj se
nombro trovita en du deklaroj Estas vere, kion mi faris.
>> Mi kombinis ilin tie.
Mi devis auxskulti vi la unuan fojon.
Do kiu estas la pseŭda-kodo ni havas.
Se vi volas nun, pardonu, iru Reen al nia komenca problemo.
Ni kodo binary.c.
Do apliki ripeta versio duuma serĉo uzante la sekvan
funkcio deklaro.
>> Kaj vi ne bezonas kopii ĝin ĝuste ankoraŭ.
Mi fakte tuj malfermu supren ĝuste ĉi tie binary.c.
Do tie estas la funkcio deklaro en la mezo de la ekrano.
Kaj vi vidos, mi prenis la pseŭdo-kodo de sur miaj flankoj, sed preskaŭ identa
kion ni skribis, kaj klarigi tion por vi.
Do nun, ni prenu kvin minutojn kodigi tiu funkcio.
>> Kaj cetere, se vi havas demandojn, levi vian manon, lasu min scii, mi
veni ĉirkaŭ.
>> Lernanto: [inaudibles].
>> JASON Hirschhorn: Do, mi prenis la duuma serĉante difinon ĉe la
Top, sur linio 12.
Tio estas kion mi ricevis por mia glito.
Kaj tiam ĉiuj ĉi pseŭda-kodo Mi nur kopii kaj batitaj de la glito,
pseŭdo-kodo glito.
Mi ankoraŭ ne auxdante [inaudibles].
>> Do se vi finis vian efektivigo, mi volas kontroli ĝin.
Mi retpoŝtis al vi la helpers.h dosieron pli frue en ĉi tiu kategorio.
Kaj gxi estos alirebla rete tiel elŝuti por la personoj rigardante
ĉi sekcio tempo prokrastis.
Kaj mi nur uzis la ĝenerala distribuo kodo el pset3.
Do mi prenis find.C, uzu mian helpers.h dosieron anstataŭ la helpers.h dosieron
tio estas donita en la dissendo-kodo.
>> Kaj mi devis fari unu alian ŝanĝon en find.C anstataŭ nomi tutsimple
search, voku binary_search.
Do se vi volas testi vian kodon, scias, ke tio estas kiel fari ĝin.
Fakte, kiam ni estos kuranta tiu kodo nun, mi ĵus faris kopion de
mia pset3 dosierujo, denove, interŝanĝis el la helpantoj dosierojn kaj tiam faris tiun
ŝanĝi en find.C nomi binary_search anstataŭ simple la sercxadon.
>> JASON Hirschhorn: Jes.
Vi havas demandon?
>> Lernanto: Nevermind.
>> JASON Hirschhorn: No worries.
Nu, ni komencu.
Ni kodigi tion kiel grupon.
Unu alia noto.
Denove, tio estas, ĝi povas facile esti interŝanĝitaj in por Problemo Ara Tri.
Mi havas mian helpers.h dosiero kiu, prefere ol la helpers.h ni donita,
deklaras duuma serĉo, bobelo speco, kaj selektado varo.
Kaj en find.c vi rimarkos sur linio, sed kio gxi estas, linio 68, ni nomas duuma
serĉu prefere ol serĉo.
Do denove, la kodo kiu estas disponebla linio aŭ la kodo kiun vi estas
krei ĝuste nun eblas facile interŝanĝis in por p starigis 3 kontroli ĝin.
>> Sed unue, ni kodigi duuma serĉo.
Nia funkcio deklaro, ni resendas bool.
Ni prenu entjero nomata valoro.
Ni prenu tabelo de entjeroj nomata valoroj, kaj ni prenu n esti
la grandeco de la tabelo.
Sur la linio 10, ĝuste ĉi tie, mi devas akra inkluzivi stdbool.h.
Ĉu iu scias kial tio estas tie?
Do kion signifas tiu linio de kodo fari?
>> Lernanto: Ĝi permesas vin uzi bool reveno tipo.
>> JASON Hirschhorn: Ekzakte.
>> Lernanto: Aŭ ĝi estas biblioteko kiu permesas uzi bool reveno tipo.
>> JASON Hirschhorn: Do la akra inkluzivi stdbool.h linio donas al mi iom
difinoj kaj deklaroj por aĵoj ke mi rajtas uzi en
tiu biblioteko.
Do inter tiuj estas diranta, ke ekzistas tiu tipo nomita bool, kaj ĝi povas esti
vera aŭ malvera.
Do jen kion tiu linio faras.
Kaj se mi ne havas tiun linion, I would eniri problemoj por skribi ĉi
vorto right here, bool, ĝuste tie.
Ekzakte pravas.
Do mi bezonas ke en tiu kodo.
OK.
Do ĉi, denove, estas ripeta versio, ne rekursia tiu.
Do ni komencu.
>> Ni komencu per tiu unua linio de pseŭda-kodo.
Kaj espereble, ni volas - aŭ ne espereble.
Ni tuj iras ĉirkaŭ la ĉambro.
Ni devos iri linion por linio, kaj Mi helpos vi diveni la linio kiu ni bezonas
skribi unue.
Do dum longo de listo estas pli granda ol nulo.
Komencu en la fronto.
Kio linio mi devus skribi ĉi tie, en la kodo?
>> Lernanto: Dum parentezo n estas pli granda ol 0.
>> JASON Hirschhorn: Dum n estas granda ol 0.
Do n estas la dimensio de listo, kaj ni kontrolanta se -
>> [Intermetante Voĉoj]
>> JASON Hirschhorn: - bedaŭras?
>> Lernanto: Kiel ni scias, ke n estas la grandeco de la listo?
>> JASON Hirschhorn: Pardonu.
Per la pset specifo, la serĉo kaj varo funkciu vi devas skribi,
n estas la grandeco de la listo.
Mi forgesis klarigi, ke ĉi tie.
Sed jes. n estas la grandeco de la listo, en tiu kazo.
Do dum n estas pli granda ol 0.
OK.
Tio provu iom problema kvankam, se la aferoj plu.
Ĉar ni daŭrigos scii la grandeco de la listo en la tuta ĉi
funkcio, sed diras, ke ni dividi kun tabelo de 5 entjeroj.
Kaj ni iros tra kaj ni nun striktas gxin malsupren al
tabelo de 2 entjeroj.
Kiuj 2 entjeroj estas tiu?
La grandeco estas 2 nun ke ni volas rigardi, sed kiuj 2 estas tiu?
Ĉu tio havas sencon, ke demando?
>> OK.
Mi petos lin denove.
Do ni dividas kun ĉi tiu tabelo el 5 entjeroj, kaj n egalas 5, ĉu ne?
Ni kuras tra tie.
ni havos verŝajne ŝanĝi la grandecon, favora, kiel la aferoj daŭras.
Kiu estas kio ni diras, ke ni volas fari.
Ni ne volas serĉi la plena afero denove.
Do diru ni ŝanĝas ĝin al 2.
Ni prenu la duono de la listo ke estas nepara.
Do ĝuste pick 2.
Do nun n egalas 2.
Mi pardonpetas pro la kompatinda seka viŝi markiloj.
Ĝuste?
Kaj ni trasercxante la listo denove kun listo de amplekso 2.
Nu, nia tabelo estas ankoraŭ de amplekso 5.
Ni diras, ke ni nur volas serĉu 2 makuloj en ĝi.
Do kiuj 2 makuloj estas tiuj?
>> Ĉu tio havas sencon?
Ĉu ili estas la maldekstra 2 makulojn?
Ĉu ili la dekstran 2 makulojn?
Ĉu ili estas meze 2 makulojn?
Ni rompis la problemo malsupren, sed ni vere ne scias kiun parton de
la problemo ni ankoraŭ rigardis, nur por havi tiujn 2 variabloj.
Do ni bezonas iom pli poste, dum n estas pli granda ol 0.
Ni bezonas scii kie tio n estas en niaj realaj tabelo.
>> Do tio neniun havas ŝanĝi al ĉi tiu linio?
La plejparto de ĉi tiu linio estas perfekte ĝustaj.
Ĉu ekzistas alian krom?
Ĉu ni interŝanĝu ion por n al fari ĉi linio iom pli bone?
Hmm?
>> Lernanto: Cxu vi povas pravalorizi variablo kiel longo al n kiuj devos tiam esti uzita
poste en la funkcio?
>> JASON Hirschhorn: Do pravalorizi variablo longo al n,
kaj ni uzas tiun poste?
Sed tiam ni ĵus ĝisdatigi longo kaj ni ankoraŭ kuri en tiun problemon, kie ni
tranĉi malsupren la longeco de nia problemo, sed ni neniam sciis kie, fakte,
ke longo mapoj sur.
>> Lernanto: estas ja, ke tuj okazos poste, kiam vi diras, serĉo lasis,
search right?
Vi tuj iros al malsama areo de via -
>> JASON Hirschhorn: Ni iras iri al areo, sed kiel ni scias
kio estas iri?
Se ni nur havas la tabelo kaj tiu n, kiel ni scias kie
iru en la tabelo.
En la dorso, jes?
>> Lernanto: Ĉu vi havas, kiel, suba baro kaj supera baro variablo aŭ
io simila?
>> JASON Hirschhorn: okej.
Do tiu estas alia ideo.
Anstataŭ simple konservanta trako de la grandeco, ni konservi trako de la malsupra kaj
supera baro variablo.
Do kiel fari ni kalkuli la grandecon de suba baro kaj supera baro?
>> [Intermetante Voĉoj]
>> JASON Hirschhorn: Subtraho.
Kaj ankaŭ konservanta trako de la malsupra ligis kaj supra nepre sciigu nin,
ni sercxas tiujn du?
Ĉu ni esploras tiujn du ĉi tie?
Ĉu ni esploras la mezo du?
Probable ne la mezo de du, ĉar tiu, fakte, estas duuma serĉo.
Sed nun ni povos ricevi la grandecon, sed ankaŭ la limojn de la tabelo.
En esenco, se ni havas niajn giganto telefona libro, ni disfendos ĝin en duono.
Ni nun scias, kie tiu pli malgranda telefona libro estas.
Sed ni ne reale ŝiri la telefono libro en duono.
Ni ankoraŭ bezonas scii kie la novajn limojn de nia problemo estas.
Ĉu iu havas demandojn sur tio?
Jes?
>> Lernanto: Ĉu tio funkcias per la kreado de variablo, i, ke vi tiam apenaŭ ŝanĝi
la pozicio de la i relativa al lia Nuna pozicio, kaj la longo, n?
>> JASON Hirschhorn: Kaj kio estas i?
>> Lernanto: Kiel i estante kiel specon de -
Kiel vi farus pravalorizi i esti la meza pozicio de la tabelo.
Kaj tiam, se la valoro je pozicio i en meze de la tabelo en trovita
esti malpli ol la valoro kiun vi bezonas, mi de nun igas la longeco de la tabelo, plus
la valoro de i dividita per 2.
Kiel, vidu, vi ŝanĝos i -
>> JASON Hirschhorn: Ĝuste.
>> Lernanto: - ĝis la -
>> JASON Hirschhorn: Do mi estas preskaŭ pozitiva ke funkcios.
Sed la punkto estaĵo, vi bezonos du pecoj de informo ĉi tie.
Vi povas fari tion kun komenco kaj fino, aux vi povas fari tion per grandeco, kaj poste
iu markilo.
Sed vi ne bezonas du pecoj de informoj ĉi tie.
Vi ne povas preni per kun nur unu.
Ĉu tio sencas?
>> Do ni tuj iru tra, kaj ni tuj faros [inaudibles]
kaj krei iun markiloj.
Do what'd vi skribas en via kodo?
>> Lernanto: Mi ĵus diris int binditaj unu estas egala al 0.
>> JASON Hirschhorn: Ni vokos ke int, komencante.
>> Lernanto: okej.
>> JASON Hirschhorn: Tio faras pli senson por mi.
Kaj?
>> Lernanto: Mi diris: Mi supozas, INT ending.
>> JASON Hirschhorn: int ending.
>> Lernanto: Mi supozas, n minus 1, aŭ io kiel tio.
Kiel, la lasta elemento.
>> JASON Hirschhorn: Do vi skribis, int komencante egaluloj 0, punktokomo kaj int
finaĵo egalas n minus 1, punktokomo.
Do esence, kion ni faras ĉi tie, 0 la unua pozicio.
Kaj kiel ni konas en sensilo, ili ne iros ĝis n, ili supreniras al n minus 1.
Do ni havas iujn limojn de nia tabelo.
Kaj tiuj komencaj baroj hazarde estas la komenca limojn de nia problemo.
OK.
Do tio sonas bone.
Tiam se ni reiru al ĉi tiu linio, dum longeco de listo estas pli granda ol 0,
kion, anstataŭ n, devus ni metu tien?
>> Lernanto: Skribu ending minus komenco.
>> JASON Hirschhorn: Dum ending minus komencante estas pli granda ol 0?
OK.
Kaj ni povus, se ni volis faru, ke iom pli agrabla, kion
alie ni povis fari?
Se ni volis purigi tiun kodon supren iom?
Kiel oni povas forigi la 0?
Tiu estas nur stilo demando.
Ĝi estas korekta nun.
>> Lernanto: Ending ne egala komenco?
>> JASON Hirschhorn: Ni povas fari kion?
>> [Intermetante Voĉoj]
>> Lernanto: Ending estas granda?
>> JASON Hirschhorn: Jes.
Ni povas nur fari dum ending estas pli granda ol antauxe.
Ĝuste.
Ni aldonis komencon al la alia flanko el tio, kaj ni liveris de la 0.
Do tiu simple aspektas iom pli pura.
OK.
Do, dum longo de listo estas 0, ni skribis ke, dum finaĵo estas pli granda
ol komencas.
Ni tuj metos en niajn necesa krispa krampoj, kaj tiam la unua afero
ni volas fari, estas rigardi ilin en eta listo.
Vi?
Ĉu vi povas doni al mi la -
>> Lernanto: Se parentezo valoro kvadrata krampo -
>> JASON Hirschhorn: Se krampoj valoro kvadrata krampo.
>> Lernanto: ending dividite per 2.
>> JASON Hirschhorn: Ending?
>> Lernanto: Mi vidas problemon kun via -
>> JASON Hirschhorn: okej.
Nu, rigardu la mezo.
Kiel ni scias, kion la mezo estas?
Jes.
Do lasu min forigi tiun kodon.
Kiel ni scias, kion la mezo estas?
En ion, kiam vi havas la komenco kaj la fino, kiel trovi
meze?
>> Studento: Vi ricevas mezume.
>> Studento: Vi aldoni ilin kune kaj tiam -
>> JASON Hirschhorn: Aldonu ilin kune kaj tiam?
>> Lernanto: Kaj vi ricevas mezume.
Dividu per 2.
>> JASON Hirschhorn: Aldonu ilin kune kaj dividu per 2.
Do int mezo egalas?
Tom, vi povas doni ĝin al mi?
>> Lernanto: Komencante plus finaĵo -
>> JASON Hirschhorn: Komenco alpago ending.
>> Lernanto: Ĉiuj, krampo, dividita per 2.
>> JASON Hirschhorn: Ĉiuj, en krampoj, dividita per 2.
Do kiu donas al mi la mezo ion, korekti?
>> Studento: Vi ankaux bezonas por rondigi gxin supren.
>> JASON Hirschhorn: Kion do vi signifas, mi bezonas por rondigi gxin supren?
>> [Intermetante Voĉoj]
>> Lernanto: Ĉar se ĝi estas nepara nombro, tiam ĝi estas kiel -
>> JASON Hirschhorn: Nu, bone.
Do mi povus ĉirkaŭi ŝin supren.
Sed se ĝi estas nepara nombro, 5, I can prenante 1 for de la centro.
Aŭ, se ĝi estas para nombro, pli ĝuste, tio estas bona okazo.
Se temas pri 4, ni havas nur 4, mi povas preni La unua "meza", citaĵo, unquote aŭ
la dua "mezo" unu.
Ĉu funkcius por duuma serĉo, do mi ne vere bezonas por rondigi ĝin.
Sed ekzistas unu alia afero mi bezonas rigardi ĉi tiun linion.
Ni eble ne rimarkos gxin ankoraux, sed ni revenos al ĝi.
Ĉar tiu linio fakte ankoraŭ bezonas unu alia afero.
>> Sed ĝis nun, ni jam skribis kvar linioj de kodo.
Ni havas nian komenco kaj finante markiloj.
Ni havas nian agadon buklo, kiu mapas sur rekte al nia _pseudocode_.
Ni rigardis la mezo kiuj mapas rekte sur nia _pseudocode_.
Mi dirus ĉi iras al la mezo el la listo, tiu linio de kodo.
Kaj tiam, iam ni iru al la mezo de la listo, la sekva afero, kiun ni devas fari
estas kontroli, ĉu nia valoro estas tie por la _pseudocode_ ni skribis antaŭe.
>> Do kiel fari ni kontrolu, se nia valoro estas je la mezo de la listo?
Vi.
Kial vi ne faru tion?
>> Lernanto: Se nia valora estas ĉe la mezo estas egala al
kion ajn ni starigis la -
Mi volas diri egalaj egala al -
>> JASON Hirschhorn: It -
OK.
>> Lernanto: Mi ne certas, kion la variablo ni serĉas
cxar kvankam, estas ĉar -
>> [Intermetante Voĉoj]
>> Lernanto: [inaudibles].
>> JASON Hirschhorn: Ekzakte.
Per la funkcio deklaro, Ni serĉas valoron.
Do ni serĉis valoro en tabelo de valoroj.
Do vi estas ekzakte pravas.
Vi devos fari, se malfermita paren valoro krampo mezo fermita krampo egaluloj
egalas valoron, kaj ene tie Kion ni devas fari?
Se nia valoro de tie, kio Kion ni bezonas fari?
>> [Intermetante Voĉoj]
>> Lernanto: Reiru nulo.
>> JASON Hirschhorn: Reiru vera.
>> Lernanto: Reiru vera.
>> JASON Hirschhorn: Mihxael, kion signifas tiu linio fari?
>> Lernanto: [inaudibles] la programo kuras lia direkto, kaj tio estas finita, kaj
vi havas, kion vi devas fari?
>> JASON Hirschhorn: La programo aŭ kion?
En ĉi tiu kazo?
>> Lernanto: La funkcio.
>> JASON Hirschhorn: La funkcio.
Kaj do, por reveni al kiom nomata ĝin kaj doni al ĝi la valoro, vera.
Ekzakte pravas.
Artikolo.
Kio estas la reveno tipo el ĉefaj, Michael?
>> Lernanto: int, entjero?
>> JASON Hirschhorn: int, precize.
Entjero.
Tio estis nur demando por certigi vi uloj estas sur gxian supron.
Kion tio kutime reveni, se cxio funkcias bone?
>> Lernanto: Nulo.
>> JASON Hirschhorn: Nulo.
Ekzakte pravas.
>> Lernanto: Se ĉi ĝuste redonas vera, ekzistas neniu informo transdonitan
pri kio la -
Ho, tiu estas nur diras ke tiu valoro estas ene de la tabelo.
>> JASON Hirschhorn: Ekzakte.
Tiu programo ne donante informojn de kie ĝuste la valoro estas.
Ĝi estas nur por diri, jes, ni trovis ĝin, aŭ ne, ni ne trovis ĝin.
Do, se nombro trovita, revenu vera.
Nu, fakte ni nur faris tion vere rapide kun tiu linio de kodo.
Do mi devos kopii tiun linion el _pseudocode_.
>> Studento: Ĉu ne ni bezonas ŝanĝi la tabelo?
Ĝi devus esti valorojn, ne valoro, rajto?
>> JASON Hirschhorn: Pardonu.
Dankon.
>> Lernanto: Jes.
>> JASON Hirschhorn: Tiu linio devus esti valorojn.
Ekzakte pravas.
OK.
Do ni rigardis la mezo listo.
Se nombro trovita reveno vera.
Daŭrigante pri niaj _pseudocode_, se mezo estas pli granda, serĉo lasis.
Do mi havis en ĉi tie, se nombro pli alta, serĉo lasis.
Konstantin, vi povas doni mi ĉi linio de kodo?
>> Lernanto: Se valoro de meza -
>> JASON Hirschhorn: Do se valoro -
se malfermita paren valoroj krampo mezo proksime krampo -
>> Lernanto: estas pli malgranda ol valoro?
>> JASON Hirschhorn: Cxu malpli ol.
>> Lernanto: Malpli da valoro.
>> JASON Hirschhorn: Valoro.
Nu, fakte, ke vi volas kontroli, ĉu la nombro -
Pardonon.
Ĉi tio estas iom konfuza.
Sed alie, se la nombro en la mezo de listo estas pli granda.
>> Lernanto: Ho, okej.
>> JASON Hirschhorn: Mi ŝanĝos tion.
Alie, se mezo estas pli alta, ni volas sercxi maldekstre, OK?
Kaj kion ni faru interne tiun se kondiĉo?
>> Lernanto: Ĉu mi povas fari malgrandan ŝanĝon al kondiĉe, ŝanĝu ĝin al alia, se?
>> JASON Hirschhorn: Else, se?
OK.
Do tiu kodo estos ekzekuti pri la sama.
Sed la bela afero pri uzanta se, alie se, alie se aŭ se, alie se, alie
signifas, ke nur unu el tiuj, tuj estos kontrolata, ne ĉiuj tri el ili,
potenciale.
Kaj tio faras ĝin iomete pli agrabla al la komputilo ke estas
kurante via programo.
>> Do [? Konstantino,?]
ni estas ene ĉi tiu linio, alie se valoroj, krampo mezo proksime krampo
estas granda, ol valoro.
Kion ni devas fari?
Ni bezonas esplori la maldekstra.
Kiel ni faru tion?
Mi tuj donos al vi eksalto.
>> Ni havas tiujn du aĵojn nomas komencante kaj finante.
Do kio devas okazi al la komenco?
Se vi volas sercxi maldekstre de la listo, ni atingos nian aktualan komenco.
Kion ni bezonas tion?
>> Lernanto: Ni starigu la komenco al duono plus 1.
>> JASON Hirschhorn: Do, se ni estas serĉanta la maldekstra?
>> Lernanto: Pardonu, mezo minus -
do la finaĵo estus mezo minus 1 kaj komenco -
>> JASON Hirschhorn: Kaj kion okazas al la komenco?
>> Lernanto: Ĝi restas la sama.
>> JASON Hirschhorn: Do la signifo restas la sama.
Se ni esploras la maldekstra, ni estas uzante la saman komenco -
ĝuste.
Kaj la finaĵo?
Pardonon, kion faras la ending egala denove?
>> Lernanto: Meza minus 1.
>> JASON Hirschhorn: Meza minus 1.
Nu, kial minus 1, ne nur meza?
>> Lernanto: La meza estas el la bildigi jam, ĉar ni havis
kontrolis ke ĝi estas el?
>> JASON Hirschhorn: Tio estas ĝuste.
La meza estas el la pentraĵon.
Ni jam kontrolis la mezo.
Do ni ne volas, "la mezo," citaĵo unquote, daŭrigi esti en la
tabelo, ke ni serĉas.
Do tiu estas fantazia.
>> Alie, se taksas krampo mezo estas pli granda ol valoro ending egaluloj
mezo minus 1.
Jeff, kio pri ĉi lasta linio?
>> Lernanto: Else.
Valoroj mezo estas malpli ol valoro?
>> JASON Hirschhorn: Ni vi donas al mi alian.
Do se vi ne donas al mi -
>> Lernanto: Do ​​tiam komencante estus duono plus 1.
>> JASON Hirschhorn: Komencante egaluloj mezo plus 1, denove, pro la sama
Tial ke Konstantino donis al ni pli frue.
Kaj fine, kiuj ne donis Min linion de kodo ankoraŭ?
Reiru falsa, Aleha, kion do ni skribus tie?
>> Lernanto: Reiru falsaj.
>> JASON Hirschhorn: Reiru falsaj.
Kaj ni bezonas fari tion, ĉar se ni ne trovi ĝin, ni devas diri, ni
ne trovis ĝin.
Kaj ni diris, ni tuj revenos al bool, do ni certe devos reveni
a bool ie.
>> Do ni kuros ĉi-kodo.
Mi fakte tuj -
tial ni estas en la terminalo.
Ni devos purigi nian fenestron.
Ni Faru Ĉiuj.
Ni trovis tie estas unu eraro.
Estas eraro je linio 15, atendis punktokomo ĉe la fino de la
deklaro.
Do kion mi forgesas?
>> Lernanto: punktokomo.
>> JASON Hirschhorn: punktokomo tuj ĉi tie.
Mi pensas ke estis Tom kodo.
Do Tom, [inaudibles].
Nur ŝercas.
Ni ja Faru Ĉiuj denove.
>> Lernanto: Kio Demetujo dosierujon ni estos en por tio?
>> JASON Hirschhorn: Do vi povas nur spekti por tiu bito.
Sed denove, se oni volis movi ĉi kodigi en viajn pset3 dosierujo por provi
ĝin, tio estas kion mi faris.
Se vi rimarkos tie - bedaŭras, bona demando.
>> [? LS,?]
Mi havas ĉi tie la find.c kodo el tiu ĉi semajno da distro kodo.
Mi havas helpers.h.
Mi havas Make dosiero kiun mi reale redaktis iom inkludi tiujn nova
dosierojn ni skribas.
Ĉiuj de tiu kodo estos disponebla, ne la dissendo kodo, sed la nova
Faru dosiero, la nova helpers.h dosiero estos havebla rete por elŝuti.
Denove, kio tiuj estas la ekstra kodoj ni havas.
>> Do faru cxion, por ĉi tiu linio, faras trovi, duumaj, bobelo selektado - fabrikas
ĉiuj tri el ili kaj kompilanto en ĉi plenumebla kodo trovaĵo.
Do ĝenerale, ni ne volas, por rekte al check50.
Ni volas kuri kelkajn provojn sur nia propra.
Sed ĝuste tial ni povas akceli ĉi iom, check50 2013 pset3.find pasos
en helpers.c-- mia malbona.
>> Mi ne havas tiun rajton nun.
Do ni vere tuj ruli la kodon por reala.
Usage.find /, vi scias kion tio signifas?
>> Studento: Vi bezonos duan komandlinia sur ĝi.
>> JASON Hirschhorn: Mi bezonas duan komandlinio.
Kaj por la specifo, mi bezonas eniri kion ni serĉas.
Do ni serĉi 42.
Ni gardu ĝin en ordo, ĉar ni ne skribis ia funkcio tamen -
42, 43, 44.
>> Kaj Kontrolo D ne trovis la kudrilo en la fojnamaso.
Tio estas malbona.
Estas definitive tie.
Ni provu ion alian.
Eble tio estas ĉar mi metis Ĝi komence.
>> Ni faras 41, 42, 43.
Tie ni iru.
Ĝi trovis ŝin.
Ni metis ĝin ĉe la fino nun, nur tiel ni povas esti ĝisfunda -
40, 41, 42.
Ne trovis la kudrilo.
Do mi menciis ĉi pli frue.
Bedaŭrinde, mi sciis ke tiu tuj okazos.
>> Sed por pedagogiaj celoj, ĝi estas bona por esplori ĝin.
Ĝi ne funkcias.
Ial, ŝi ne povas trovi ĝin.
Ni scias, kio estas tie, sed ni ne trovante gxin.
Do unu afero ni povus fari estas iri tra GDB trovi ĝin, sed faras neniu,
sen pasi tra GDB, havi senco de kie ni ŝraŭbitaj supren?
[? Madu? ?]
>> Lernanto: Mi kredas ke povus esti kiam ending estas egala al komenco, kaj ĝi estas
nur unu-era listo.
Tiam gxi simple ignoras ĝin anstataŭe efektive kontroli ĝin.
>> JASON Hirschhorn: Tio estas ĝuste.
Kiam finaĵo egalas komenco, do ni ankoraŭ havas ero en nia listo?
>> Lernanto: Jes.
>> JASON Hirschhorn: Jes, fakte, ni havas unu kaj nur unu elemento.
Kaj tio estos plej verŝajne okazos kiam, po la kodon ni testitaj, ni trovas en la
antaŭ la fojnamaso aŭ ĉe la finon de la fojnamaso.
Tie estas kie komenco kaj finaĵo tuj egala
unu, kun duuma serĉo.
Do en tiuj du kazoj ĝi ne funkciis, ĉar ending estis egala al komenco.
>> Sed se finaĵo egalas al komenco, Ĉu tio dum buklo ekzekuti?
Ĝi ne.
Kaj ni povis esti kontrolita ke denove tra GDB.
Do kiel ni povas solvi ĉi tiun kodon, ĉar kiam dum finaĵo estas egala al
komencante, ni ankaŭ volas ĉi dum buklo kuri.
>> Do kio fix ni povas fari al linio 18?
>> Lernanto: [inaudibles] estas pli granda ol aŭ egala al.
>> JASON Hirschhorn: Ekzakte pravas.
Dum finaĵo estas pli granda ol aŭ egala al komenco.
Do nun, ni certigu por atingi tiun angulo kazo ĉe la fino.
Kaj ni vidos.
Ni kuros ĉi unu pli longa tempo.
>> Ni faru ĉiuj.
Denove, vi devos nur sekvi kune tie.
Trovu 41 koncerna epoko.
Nur gardu gxin konsekvenca.
>> Trovu 42.
Ni metis ĝin ĉe la komenco -
42, 43, 44.
Ni trovis ŝin.
Do tio estis ja la ŝanĝo Ni bezonas fari.
>> Tio estis multe da kodigo ni nur faris, duuma serĉo.
Ĉu iu havas demandojn antaŭe Mi movos antaŭen en linioj ni skribis en
duuma serĉo aŭ kiel ni figured tion kion ni faris eltrovi?
Antaŭ ol ni pluiru, mi ankaŭ volas atentigi ke per kaj vasta, ni mapita
nia pseŭda-kodo unu al unu sur nia kodo.
>> Ni ne havas tion malfacila afero elkompreni kun la
komencante kaj finante.
Sed estis vi ne kalkulis, ke el vi estus skribinta preskaux la
identa kodo, krom tiuj supro du linioj.
Kaj tiam vi estus rimarkinta kiam Vi faris ĝin en la ĉekoj kaj kazoj kiujn
vi bezonas ion alian.
Do eĉ se vi jam sekvis nian pseŭdo-kodo linio al linio, vi jam
alveninta ĉiuj krom du linioj de kodigi vi bezonis por skribi.
>> Kaj mi estus pretas veti, ke vi uloj estus ĉiuj figured ke el
bela rapide, ke vi bezonas meti ian markilon tien por kompreni
el kie vi estis.
Tio denove estas la potenco de la fari pseudo-kodo antaŭ tempo.
Do ni povas fari la logiko unue, kaj poste ni povas zorgi pri la sintakso.
>> Se ni estas konfuzitaj pri la logiko dum provas skribi ĉi kodo en C,
ni estus alvenintaj ĉiuj paneas.
Kaj tiam ni povas demandi demandojn pri logiko kaj sintakso kaj meshing
ili ĉiuj kune.
Kaj ni estus alvenintaj perditaj en kio ili povas rapide fariĝi
tre malfacila problemo.
Do ni pluiru nun al selektado varo.
>> Ni havas 20 minutojn forlasis.
Do mi havas senton ke ni ne povos trairi ĉiujn selektado speco
kaj bobelo varo.
Sed ni lasu almenaŭ provo fini selektado varo.
Do apliki selektado specon uzante la sekva funkcio deklaro.
>> Denove, tio estas prenita el la problemo starigis specifo.
Mez valoroj estas krampoj, estas tabelo de entjeroj.
Kaj int.n estas la grandeco de tiu tabelo.
Selektado speco tuj ordigi ĉi tabelo.
>> Do por niaj mensa modelo de selektado varon, ni tiris la -
unue, ni iru tra la listo la unuan tempon, trovi la plej malgrandan nombron,
metu gxin en la komenco, trovu la duan malgranda nombro, metis ĝin en la
dua pozicio, se ni volas varo en kreska ordo.
Mi ne devigi vin skribi pseudo-kodo ĝuste nun.
>> Sed antaŭ ol ni faru la kodo kiel klaso en kvin minutoj, ni verkos
pseŭdo-kodo do ni havos iom da senco de kie ni iras.
Do provu skribi pseŭda-kodo sur via propra.
Kaj tiam provu turni tiun pseŭdo-kodon en la kodo.
Ni faros tion kiel grupon en kvin minutoj.
>> Kaj kompreneble, lasu min scii se vi havas iujn demandojn.
>> Studento: Kiu?
>> JASON Hirschhorn: Vidu, kiel multe vi povas ricevi en du minutojn pli.
Mi komprenas vin ne volas povi fini.
Sed ni transiros tiun kiel grupo.
>> Vi ĉiuj estas kodiga tiom [inaudibles], do mi estas bedaŭras paŭzi kion vi faras.
Sed ni iros tra ĉi tiu, kiel grupo.
Kaj denove, duuma serĉo, vi ĉiuj donu mi unu, se ne pli linioj de kodo.
Dankon pro tio.
Ni faros la saman aferon ĉi tie, kodo kune kiel grupo.
>> Do selektado speco - ni skribi iujn rapidajn pseŭda-kodo.
Per mensa modelo, eblas ke iu donas al mi La unua lineo de pseŭdo-kodon, bonvolu?
Kion mi volas fari?
>> Lernanto: Dum la listo Estas paneas.
>> JASON Hirschhorn: OK, dum La listo estas paneas.
Kaj kion vi volas diri "paneas?"
>> Lernanto: Dum [inaudibles]
ne estis ordo.
>> JASON Hirschhorn: Dum la listo Estas paneas, kion ni faros?
Donu al mi la dua linio, bonvolu, Marcus.
>> Lernanto: Do ​​trovu la sekvantan malgranda nombro.
Tio estos marĝeno.
>> JASON Hirschhorn: Do trovu la sekvanta malgranda nombro.
Kaj tiam iu alia?
Iam ni trovos la sekva pli malgranda nombro, kion ni faros?
Mi tuj diros trovi la plej malgranda nombro.
Tio estas kion ni volas fari.
>> Do trovu la plej malgranda nombro.
Do kion ni faru?
>> Lernanto: [inaudibles] al komenco.
>> JASON Hirschhorn: Pardonu?
>> Lernanto: Metu ĝin en la komencante de la listo.
>> JASON Hirschhorn: Do meti ĝin en la komenco de la listo.
Kaj kion ni faru al la afero kiu estis en la komenco
el la listo, ĉu ne?
Ni overwriting ion.
Do kie ni metu tion?
Jes, Anna?
>> Lernanto: Kie la plej malgranda nombro estis?
>> JASON Hirshhorn: Do metu la komenco el la listo, kie la
malgranda nombro estis.
Do dum la listo estas paneas, serĉi la plej malgrandan nombron, meti ĝin en
la komenco de la listo, metu la komencante de la listo, kie la
malgranda nombro estis.
Marko, ĉu vi povas _rephrase_ tiun linion dum la listo estas paneas?
>> Lernanto: Dum la numeroj ne estis ordo?
>> JASON Hirshhorn: OK, do la celo scias ke la numeroj ne estis
ordo, kion ni devas fari?
Kiom ni bezonas iri tra tiu listo?
>> Lernanto: Do ​​mi supozas a por buklo, aŭ dum, dum nombroj kontrolis estas malpli
ol la longo de la listo?
>> JASON Hirshhorn: Bone, tio estas bona.
Mi kredas ke mi misphrased mia demando malbone.
Ĵus mi provas atingi Ni tuj devas iri
tra la tuta listo.
Do dum la listo estas paneas, por mi, estas malfacila por mapi plu.
Sed esence, tiel estas kiel Mi pensas pri ĉi tio.
Iru tra la tutan liston, trovu la malgranda nombro, meti ĝin en la
komencante - fakte, vi pravas.
Ni metis ilin ambaŭ.
>> Do dum la listo estas paneas, oni bezonas iri tra la tutan liston
unufoje, trovu la plej malgranda kvanto, loko gxin en la komenco de la listo, meti
la komenco de la listo, kie la malgranda nombro estis, kaj poste, se la
listo estas ankoraŭ paneas, ni devas iri tra ĉi
procezo denove, ĉu ne?
Tio estas kial selektado varon, Big-Ho ekzekuto de selektado varon, iu ajn?
>> Lernanto: n kvadratoj.
>> JASON Hirshhorn: n kvadratoj.
Ĉar kiel Marcus kaj mi ĵus rimarkis tie, ni tuj devas
iri tra la listo listo nombro da fojoj.
Do irante tra iom da longo n n nombro de fojoj
Estas fakte n kvadratoj.
>> Do tiu estas nia _pseudocode_.
Tio aspektas tre bona.
Ĉu iu havas demandojn pri la _pseudocode_?
Ĉar efektive selektado speco devus verŝajne venas al oni, kodo de
_pseudocode_.
Do ajnajn demandojn pri la logiko de la _pseudocode_?
Bonvolu demandi lin nun.
>> Selektado speco - dum la listo estas ekstere de ordo, ni tuj iru tra gxi
kaj trovu la plej malgranda ĉiu tempo kaj metis gxin en la fronto.
Do dum la listo estas paneas, povas iu donos al mi tiun linion de kodo, kiu
min ne donis sxnuro de kodo, bonvole?
Ĝi sonas kiel kio?
>> Studento: Tio estas por buklo.
>> JASON Hirshhorn: Ĝi sonas like a por buklo.
OK, ĉu vi povas doni al mi la buklo?
Por -
>> Lernanto: i egalas 0.
>> JASON Hirshhorn: i aŭ -
Kion ni mankas?
Kio iras ĝuste ĉi tie?
>> Lernanto: Int.
>> JASON Hirshhorn: Ekzakte.
(Int i = 0; -
>> Lernanto: i <n; i + +).
>> JASON Hirshhorn: Enclavada ĝin, Jeff.
Ni iras tra la listo, ĉu ne?
Ni jam vidis ke la kodo antaŭe.
Perfekta.
Do ni kunigu niajn krispa krampoj tie.
Mi tuj metis iom krispa krampoj tie.
>> Do dum ĝi estas 0, ni devas iri tra la tuta listo.
Do ĉiu tempo ni iru tra la listo, Kion ni volas konservi trako de?
>> Lernanto: Se iu svopoj estas faritaj.
>> JASON Hirshhorn: Trovi la plej malgranda nombro.
Do ni devus verŝajne sekvigi la plej malgranda nombro ĉiufoje.
Do linio mi povas fari por konservi trako de la pli malgranda nombro?
Aleha, kiel mi povas subteni spuro de io?
>> Lernanto: Komencu novan variablon.
>> JASON Hirshhorn: Komencu novan variablon.
Do ni krei variablon.
Kio tipo?
>> Lernanto: Int.
>> JASON Hirshhorn: Int.
Ni nomas ĝin la plej malgranda.
Kaj kion faras egalaj kiam ni ĵus komencas eliri?
Ni ne trapasis la listo ankoraŭ.
Ni estas en la unua parto de la listo nia unua tempo tra.
Kion faras egalaj, la malgranda nombro?
>> Lernanto: Valoroj i.
>> JASON Hirshhorn: Valoroj i.
Tio sonas ekzakte dekstra, rajto?
La plej malgranda nombro komence Tie estas kie ni estas.
Do nun ni havas niajn plej malgrandaj, kaj ni bezonas iri tra la tuta listo kaj
kompari ĉi malgranda por ĉio alia.
Do ni iru tra la listo denove?
Michael?
>> Studento: Vi devas fari alia por buklo.
>> JASON Hirshhorn: Alia por buklo.
Ni faru.
Donu al mi iom da kodo.
>> Lernanto: For loop -
por la plej eta -
nur int j, vi povus diri?
= 0; tia, ke -
>> JASON Hirshhorn: Nu, se ni volas iri tra la tuta listo -
>> Studento: j <n, j + +).
>> JASON Hirshhorn: Fantastic.
Ni tuj iras tra la buklo refoje.
Kaj kiel ni trovos la malgranda nombro?
Tom?
Ni havas la nuna malgranda nombro, tiel kiel ni trovu la nova malgranda?
>> Lernanto: Ni povas kontroli, ĉu la malgranda numeron ni havas, estas pli granda ol
Valoroj krampo j.
>> JASON Hirshhorn: Do se malgranda estas pli granda ol valoroj krampo j.
Do, se nia nuna malgranda estas pli granda ol -
Mi iras al kopii tiujn du liniojn de kodo el tie dum sekundo.
Ĉar antaŭ ol ni faras neniun interŝanĝante, ni bezonas iri tra la tuta listo.
Do tiu _pseudocode_ devus reale esti ekster tiu ena por buklo.
Do iru tra la tuta listo.
Se malgranda estas pli granda ol valorojn j tiam kio?
>> Lernanto: Tiam malgranda egalas valoroj j.
>> JASON Hirshhorn: Fantastic.
Unu rapida demando -
la unua fojo ni iros tra ĉi maŝo, i tuj egalas 0, j okazas
egali 0 iam ni atingos tien.
Do ni tuj povas kompari nombro al sin.
Ĉu tio estas kompetenta?
Ne, ĝi ne estas vere kompetenta.
Do tio nia j bezonas iri de 0 al n ĉiu tempo?
Ĉu ni ĉiam bezonas kontroli tra la tutan liston?
[Inaudibles]?
>> Lernanto: Komencdato kun i anstataŭe.
>> JASON Hirshhorn: J povas komencu per kio?
>> Lernanto: i.
>> JASON Hirshhorn: j povas komenci per i.
Do nun ni komparu startanta kun tiu, kiun ni estas en.
Sed eĉ tiam, estas ke kiel efika kiel eblas?
>> Lernanto: i + 1.
>> JASON Hirshhorn: i + 1 ŝajnas esti la plej efika, ĉar ni
jam havas i.
Ni asertas ke la plej malgranda en linio 15.
Ni tuj komencu per la sekvanta unu aŭtomate.
Do ni iru tra la buklo.
Ni devos iri tra ĉiu tempo.
Ni devos iri tra plurfoje.
Nun ni jam alvenintaj tra ĉi internan por buklo.
Ni havas la plej malgrandan valoron savas.
Ni devas meti ĝin en la komencante de la listo.
Do kiel mi metas ĝin en la komencante de la listo?
Kio estas la variablo, kiu referencas al la komenco de la listo?
Ni estas en ĉi eksteren por buklo, do kio temas pri la
komencante de la listo?
>> Lernanto: Valoroj i.
>> JASON Hirshhorn: Ekzakte pravas.
Valoroj i estas la komenco de la -
aŭ bedaŭras, ne la komenco.
Tio estis konfuziga.
Ĝi estas kie ni estas en la komenco de la Unsorted parton de la listo.
Do ĝi taksas i.
Kaj kion faras tiu egala?
>> Lernanto: La plej malgranda.
>> JASON Hirshhorn: Valoroj i egalas kio?
>> Lernanto: La plej malgranda.
>> JASON Hirshhorn: La plej malgranda.
Ekzakte pravas.
Do ni metante ĝin je la komenco el la listo, kaj nun ni bezonas meti
la komenco de la listo, kie la plej malgranda nombro estis.
Do kiel mi skribu kie la malgranda nombro estis?
Valoroj de kio?
>> Lernanto: 0.
>> JASON Hirshhorn: La malgrandaj nombro estas ĉe 0?
>> Lernanto: Jes.
>> JASON Hirshhorn: Kio, se la pli malgranda nombro estis je la fino de
ĉi Unsorted listo?
>> Lernanto: Pardonu, kio estis la demando?
>> JASON Hirshhorn: Kie estas la plej malgranda nombro?
Ni prenis la plej malgranda kaj metis ĝin ĉe la komencante, kun jena linio ĝuste ĉi tie.
>> Lernanto: Ĝi devus havi estis stokitaj en iu -
>> Lernanto: Valoroj j.
>> JASON Hirshhorn: Nu, ĝi estas Ne nepre valoroj j.
Ĝi eĉ ne ekzistas ĉe tiu punkto.
>> Studento: Vi havas por deklari variablo pli frue kaj
do atribui ĝin al -
kiam vi trovos la plej malgrandan nombron, atribui la indekso de tiu numero
iu variablo aŭ io kiel tio.
>> JASON Hirshhorn: Do povas vi rediri tion?
>> Lernanto: Do ​​kie vi deklaris int malgranda, vi devus ankaŭ deklari int
malgranda indekso = i, aŭ io kiel tio.
>> JASON Hirshhorn: Do kie mi int malgranda, mi ne nur konservi trako
de la valoro, sed la situo.
int smallest_location = en tiu kazo, ni nur faru i.
Ni devas scii, kie ĝi estas.
Ni atingis la finon de la kodo, kaj ni rimarkis ni havis nenian ideon, kie gxi estis.
Kaj tion duan fojon, ni estas surĵeto tio sur unu al unu.
You guys kodigo tion en via propra volo verŝajne atingos la saman problemon.
How the heck mi trovas ĝin?
Kaj tiam vi rimarkos, atendu, mi bezonas konservi spuron de tio.
>> Do, se malgranda, estas pli granda ol valoroj j.
Ni starigis malgranda egalas al valoroj j.
Kion ajn ni bezonas ŝanĝi?
Constantin, kion alian fari Ni bezonas ŝanĝi?
>> Lernanto: La situo.
>> JASON Hirshhorn: Ekzakte.
Do donu al mi tiun linion en kodo.
>> Lernanto: smallest_location = j.
>> JASON Hirshhorn: Ekzakte.
Kaj poste malsupren al la fino, se ni volas metis la komencon de la listo, kie
la plej malgranda nombro estis, kiel cxu ni priparolas, kie la
malgranda nombro estis?
Marcus?
>> Lernanto: La plej malgranda nombro estis lokita ĉe malgranda situo.
>> JASON Hirshhorn: Do, je valoroj smallest_location.
Kaj kion ni metis tie?
La komenco de la listo, kio estas tio?
>> Lernanto: Nu, ni ne vere scias plu ĉar ni overwrote.
Do ĝi estas ŝanĝitaj lokoj de tiuj du linioj?
Se vi ŝanĝos tiuj du linioj ĉirkaŭ.
>> JASON Hirshhorn: Bone, do ni ne faru plu, ĉar ni restartigi la linion
antaux valoroj i al la plej malgranda.
Do ni perdis tiun komencan valoron.
Do vi diris swap tiuj du linioj.
Do nun metis la komencon de la listo kie la malgranda nombro estis.
Do smallest_location egalas valoroj i.
Tio movante la komenco de ĉi tiu Unsorted parton de la listo por la
malgranda situo.
Kaj tiam en valoroj i ni movas ke malgranda nombro.
>> Ĉu tio havas sencon kial ni devis fari ke swap?
Ni estus anstataŭigataj tiun valoron - alia afero vi probable havus
eltrovis kaj trovis en la MEP.
Do ni zorgo ĉiuj _pseudocode_.
Ĉu estas io alia, ni bezonas skribi tie?
Ĉu iu pensas pri io?
>> Lernanto: Kiel vi scias kiam vi faris?
>> JASON Hirshhorn: Kiel ni sciu, kiam ni faris?
Granda demando.
Do kiel ni scias kiam ni faris.
>> Lernanto: Krei variablo teni grafo de, se estas a swap faris aŭ ne
kaj iru tra pasu.
>> JASON Hirshhorn: okej.
Tio funkcius en bobelo varo.
Sed por selektado varon, se ni ne fari swap, kiuj povus esti simple
ĉar la pli malgranda valoro estas en ĝi lia dekstra situo.
Ni havu listo 1, 2, 4, 3.
La duan fojon per ni neniun faros svopoj.
Ni estos je la nombro 2, sed ni ankoraŭ bezonas plu iri.
Do cxu ni bezonas konservi trako de kiam ni faris, aŭ ĉu ni nur volas iri
ĝis ĉi estas finita?
>> Lernanto: Ni povas simple iri ĝis ĝi estos finita.
>> JASON Hirshhorn: Ni povas nur iru ĝis tiu estas finita.
En bobelo varon, vi estas ekzakte pravas, Jeff kaj Aleha, kun via solvo -
estas granda por konservi trako de kiom svopoj vi faris, ĉar en bobelo
varon, se vi faras fakte fari neniun svopoj, vi faris kaj vi povas eble tranĉis vian
problemo malsupren iom.
Sed por selektado varon, vi havas vere devas iri tra la fino de la
listo ĉiufoje ĉirkaŭe.
>> Do tiu estas tiu.
Ni havas du minutoj forlasis.
Ni faru ĉiuj.
Lasu min nur malferma Trovu ĉi tie kaj fari certas ke mi fakte nomi supren -
Mi ne petas bobelo varo.
Ni ŝanĝi ĉi tion al selektado varo.
fari cxiujn. / trovi.
Ni trovu 42.
Tiu tempo ni tuj pasi Unsorted listo, ĉar ĝi devus ordigi
unua, por la trovaĵo kodo - devus ordigi unue uzante nia speco funkcio kaj tiam
serĉas ion.
Fingroj transiris ĉiuj.
>> Ho mia bono.
Haltu, mia koro batis.
Do tio estas korekta.
Fakte, se ni kuris tiu pli vaste, la kodo, tiel for kiel mi povas
diri, estas perfekte ĝustaj.
Ekzistas kelkaj sugestoj Mi havus por vi.
Ekzemple, 15 kaj 16 similis iom redunda.
Ŝajnas kvazaŭ vi ne nepre bezonas savi ambaŭ tiuj.
Se vi havas la plej malgranda loko, vi povas facile trovi la plej malgranda valoro de
nur tajpi valoroj de i.
>> Do se mi estus esti grading via kodo: kiun mi fakte esti: Mi volus
verŝajne demetu punkto se vi inkludis ambaŭ de ĉi tiuj, ĉar vi
ne bezonas ambaŭ el tiuj.
Se vi havas la situo, vi povas tre facile akiri la valoron.
Kaj ŝajnas iomete stranga stoki ilin ambaŭ.
Eble eĉ ne prenu punkton, sed certe diri, ke tio estas eble
ne estas stila elekto vi devas fari.
Kompreneble, la kodo ankoraŭ kuras perfekte.
>> Do, bedaŭrinde ni ne atingi bobelo varo.
Mi bedaŭras pri tio.
Ni faris fini selektado varo.
Ĉu iu havas iun fina demandoj pri selektado speco?
>> OK, antaŭ ol ni estrus ekstere, mi volas ke vi malfermu vian Chrome retumilo.
Pardonu, ke estis nur flagrante kontaktŝtopilo por unu tipo de interreto retumilo.
Vi povas malfermi ajna tipo de foliumilo, sed ĝi verŝajne estos Chrome.
Kaj iru al tiu jena retejo -
sayat.me/cs50.
Se vi ne tajpas en via komputilo nun, vi estas klare
ne fari ĝin, Tom.
>> Kaj bonvolu fari tion aŭ dekstra Nun aŭ en la sekva horo -
donu al mi iom sugestoj.
Ĉi tio estas nur sekcio du.
Ni havas multe pli da kune, do mi havas multe da loko por plibonigi.
Mi espereble ankaŭ faris kelkajn aferojn bone.
Do vi povas min sentas ĉiu malbona, sed se vi ankaux volas doni al mi smiley
vizaĝon, mi aprezus, ke tiel.
Plenigu ke in
>> Kaj kun unu minuto restis, tio estis semajno tri.
Mi staras ekster por iom se vi havas iujn demandojn.
Mi vidos vin infanoj en prelegi morgaŭ.