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