Jason Hirschhorn: Welcome uz nedēļu trīs, visi. Mums ir aizņemts, bet aizraujoša sadaļā priekšā mums. Tātad, pirmkārt, tāpēc, ka mēs esam veikuši dažus panākumus ar kursu, bet mēs joprojām ir daudz mācīšanās atstāta darīt, es esmu dodas, lai pierādītu, jūs guys daži resursi kas būtu izrādīties neticami noderīga, kā jūs ne tikai pie jūsu Problēma noteikti, bet arī sagremot visu materiāla mēs jums guys lekcijas un šorti un sadaļu. Tad mēs esam gatavojas pavadīt pirmo 20 25 minūtes sadaļa iet pāri GDB, kas jūs var vai nevar būt izmantota šajā brīdī, bet tas ir neticami noderīgs rīks, kas būs palīdzēs jums atkļūdot savas programmas. Daudzi no jums var būt izmantoti printf in vidū savu programmu, lai noskaidrotu , ko mainīgais bija vienāda. GDB ir pat labāk nekā printf un nav screw up savu kodu, jo jums palaist uz izpildāmo failu. Tāpēc mēs iet pār 10 visnoderīgākie komandas jums ir nepieciešams, lai gdb, un mēs esam gatavojas doties uz īstenošanu kopā, lai jo problēma noteikti trīs un tālāk, jūs var izmantot gdb, lai palīdzētu atkļūdot jūsu programmas. Un visbeidzot, mēs esam gatavojas iet pār daži šķirošanas un meklēšanas algoritmi ka redzējāt lekciju, un mēs esam dodas uz faktiski kods, ne tikai pseudocode, bet kodu bināro meklēšanu, burbulis kārtot un atlase kārtot. Tātad, pirmkārt, es gribu iet pār resursiem. Tas ir plašs saraksts, un tas ir mazāku fontu, jo man bija daudz fit šeit. Bet tie būs ne tikai palīdzēt jums, atkal ar problēmu kopas un karsējot informāciju, jūs esat iemācījušies, bet noteikti, nāc viktorīna laiku, tās būs būt neticami noderīgi. Tātad, pirmkārt, lekciju piezīmes. Ja jūs iet uz cs50.net/lectures un pārvietojieties uz konkrēto nedēļu un dienu, jūs redzēsiet, ka tur ir piezīmes par katru lekciju, kas ir ne tikai atšifrējums, bet rediģēt versija , kas bija iekļauti lekciju ar kodu fragmentus un citus noderīgus niekiem. Es ļoti ieteiktu iet pār tiem. Un tad arī, tur ir pirmkodu pieejami no katra lekciju. Un atkal, šie slaidi būs pieejams tiešsaistē cs50.net/sections šovakar. Tātad otrais ir šorti katru nedēļu, ka aptver tādas tēmas, kas parasti 5 līdz 15 minūtes garumā. Un tie, cerams, dos jums lielisks primer par dažādām tēmām. Trešais - un tas ir pavisam jaunu šī gadā - ir study.cs50.net. Ja jums nav pārbaudīt to ārā, es ļoti iesakām jums to darīt. Jums izvēlēties tēmu. Mums ir desmitiem tēmām tur. Tā, piemēram, jūs izvēlaties funkcijas. Tas dod jums dažas slaidi un norāda uz funkcijām. Tie ir faktiski slaidi, kas TFS tiek aicināti izmantot laikā mūsu prezentācijas sadaļā. Tur ir arī padomi un viltības, lai risinātu ar funkcijām, un tur ir prakse problēmas, kas palīdz jūs strādājat ar funkcijām. Mēs arī sniegt jums saites uz īstermiņa funkcijas un laiki, kas darbojas ir jānāk klajā ar lekciju. Tātad study.cs50.net, pavisam jauna šī gadā, fantastisks resurss. Tālāk, man ir cilvēks, kas ir rokasgrāmata Komanda, kas var palaist komandrindas. Tātad, ja jums ir kādi jautājumi par komandu, piemēram, rand, kurā mēs radās pagājušajā nedēļā nodaļā laikā un jums ir iespējams sastapt jūsu problēma noteikt, kad iet cauri ģenerēt kodu, bet, ja jūs tipa cilvēks rand, jūs saņemsiet lapu, stāsta jums visiem par Rand. Tas dod jums to, ko tā veic, parametru, kas nepieciešams, kā arī atgriešanās tips un īss apraksts šī funkcija. Tāpēc izbraukšana Rand. Tas var būt nedaudz izplūdis un neskaidrs, tāpēc dažreiz es uzskatu, ka vienkārši Googling to, ko es gribu zināt, ir Labākais veids, kā atrast atbildi. Tātad praksē ar Google. Iegūt labi Google. Tas kļūs par jūsu labāko draugu. Kā arī Google, ja jūs nevarat atrast to, Google, cs50.net/discuss, tas ir diskusiju forumu. Izredzes ir, ja jums ir jautājums, kas ir viens Jūsu 700 + vienaudžiem arī, ka jautājums, un tā var būt lūgusi tas jau apspriestu forumi un ir tā atbilde. Tātad, ja jums ir kopīgs jautājums, vai Jums ir jautājums, ka jūs domājat varbūt citi cilvēki varētu uzskriet, izbraukšana cs50.net/discuss. Visbeidzot, pēdējie divi, ja jūs vēlaties, lai runāt ar reālu cilvēku, birojs laiks no pirmdienas līdz piektdienai. Pastāv arī tiešsaistes biroja darba laiks Pagarinājuma studentiem. Un pēdējais, bet noteikti ne mazāk, me, izsaukuma zīme. Jums visiem ir savu kontaktinformāciju. Ja jums ir nepieciešams kaut ko, lūdzu, nekad sazinieties ar mani. Vienmēr justies brīvi to darīt. Ļoti maz no jums ir pievienots mani Gchat, tā, ka ir bijis neapmierinošs, bet cerams, ka būs jāmaina starp šajā un nākamajā sadaļā. Kādi jautājumi līdz šim par resursiem? Lieliski. Visbeidzot, vēl viens spraudnis atsauksmes, sayat.me/cs50. Jūs varat dot man anonīmu atsauksmes par to, kā es esmu dara. Tas bija patiešām noderīga pagājušajā nedēļā. Es saņēmu pāris komentārus no jums puiši uzreiz pēc sadaļā, kā arī no citi studenti, kas noskatījos to nedēļas laikā, un tā bija neticami noderīgi. Es esmu gatavojas izmēģināt un ierobežot manu izmantošanu vārds "salds", bet es jums parādīs manu entuziasmu un uztraukums citos veidos. Bet tur bija citas papildu materiālo feedbacks, gan plusi un delta. Tāpēc, lūdzu, es jums puiši atsauksmes par savu problēmu kopas. Justies brīvi, lai dotu man atsauksmes par manu mācību. Es esmu šeit, lai jums puiši. Lieliski. Tas ir viss, kas man ir, lai Pirmajā sadaļā. Vai kāds ir kāda jautājumi līdz šim? Un man ir piezīmi kontroles centrs. Extension studenti messaged mani sakot, viņi nesaņemu audio, bet tas ir no manas pilnvaras noteikt. Tāpēc cerams, ka izpaužas atrisināts tuvākajā laikā. Ja jūs skatīties online, hi, bet jūs nevarat dzirdēt mani. Tātad, pirmkārt, mēs gatavojamies iet cauri gdb. GDB, jo man jau ir minēts iepriekš, ir atkļūdošanas rīks daudz labāk nekā printf. Tātad, lai sāktu ar GDB, jums, puiši, ja jūs vēlaties, lai atvērtu savu ierīci un veic failu, kas man savu e-pastu agrāk - tas fails būs pieejami tiešsaistē mazliet - un palaist gdb. / nosaukumu failu. Pirmkārt, protams, jums ir apkopot failu, jo GDB darbojas tikai izpildāmos failus. Bet, ja jūs kādreiz vēlaties, lai sāktu GDB, pirmā lieta, jums jādara, jūs darbināt gdb. / Cēzars. Tātad tas ir programmas nosaukums, mēs esat , kas iet ar to tieši tagad. Tāpēc es esmu gatavojas rakstīt izdarīt Cēzars, kas dos man izpildāmo failu šeit iezīmēts zaļā krāsā. Un tad es esmu gatavojas palaist GDB. / Cesar. Un tur jums iet. Jūs redzat, mums ir dažas teksta man saki par versiju gdb, dod man dažas garantijas informācija, un tad mēs ir IKP uzvedni, kas izskatās veida un tāpat kā mūsu komandrindas ātri, bet jūs redzēt, tas ir atvērts paren, GDB, tuvu paren. Pirms mēs turpinām un atkļūdot šo failu ka es nosūtīju jums visiem, aplūkosim dažas noderīgas komandas tāpēc mums ir jēga , ko mēs gatavojamies, lai segtu. Šīs komandas ir uzskaitītas šeit kārtību, kādā es parasti tos izmantot. Tāpēc es sāku savu programmu, palaižot GBD. / Programmas nosaukums, Šajā gadījumā, Caesar. Un tad pirmā lieta, ko es daru 99,9% laika tiek tipa pārtraukums nozīmē. , Kas nosaka lūzuma punkts ir galvenais. Būtībā, ko jūs darāt tur ir programma gatavojas apstāties pie Galvenais, lai jūs varat sākt pārbaudot to līniju pa līniju, nevis rādīt visu ceļu caur. Jūs varat pauze dažādos punktos savu kodu, bet galvenais ir parasti laba vieta, kur sākt. Nākamais komanda palaist ir palaist. Kas sākas programma darbojas, un ja jums ir nepieciešams, lai ievadītu komandrindas argumenti, palaižot to, ka komandu. Palaist ar argumentiem. Tāpēc, ka mēs iet pār versiju C, kas ir programma, jūs guys rakstīja PSET diviem - tas viens, protams, ir dažas kļūdas tajā, ka, cerams, mēs atradīsim - mēs esam gatavojas palaist palaist ar kādu komandu argumentus, jo Caesar, kā jūs guys zināt par problēmu noteikt spec, aizņem dažas komandrindas argumentus. Nākamais pāris komandas, nākamais viens ir faktiski aicināja nākamo. Kas ņem jums pozīcijai izmantojot savu programmu. Tātad, trāpot n tad Enter ņem jums uz nākamo līniju, izpildot iepriekšējo līniju. Solis tiek ne tikai jums next line, bet tas ņem jums iekšpusē funkcijas. Tātad, ja jūs esat uzrakstījis funkciju Jūsu kods vai, ja jūs vēlaties, lai izpētītu uz i, piemēram, jūs varat hit s, un nevis iet uz nākamo līniju failu, jūs iet caur labo tagad, jūs faktiski solis šī funkcija un redzēt savu kodu. Sarakstā ir redzams, jo ļoti lietotājam draudzīgi formātā, 10 vai tik līnijas ap kur jūs pašlaik ir jūsu kodu lai jūs patiesībā var redzēt failu nevis ņemot mijmaiņas atpakaļ un atpakaļ starp dažādiem viedokļiem. Print ir kā printf, Kā norāda tās nosaukums. , Kas parāda jums to, ko mainīgais ir vienāds. Info vietējie iedzīvotāji ir ļoti noderīga. Šī ir īpaša versija izdrukāt. Info vietējie parāda jums visas vietējās mainīgie, izdrukā tos visus no jums , kas pašlaik ir pieejami. Tāpēc es vispār, nevis ņemot izdrukāt četrus mainīgos, kas es esmu ziņkārīgs par to, ja es esmu uz cilpas, lai Piemēram, es vienkārši uzrakstīt info vietējie iedzīvotāji, un tas būs parādīt man to, ko mans skaitītājs i vienāds, kā arī masīva ka es esmu strādā par vienlīdzīgiem. Visbeidzot, turpināsies. Ierakstot pārtraukumu apstājas jums pie lūzuma punkts. Jūs varat pastaigāties pa līniju ar līnija ar nākamo un soli. Turpināt iet programmu, lai jūsu nākamais pauze punktu vai līdz pabeigšanai, ja ir ne vairāk break punkti. Atslēgt noņem pārtraukuma punktus, ja jums nolēma pauze galvenais bija nepiemērota, jūs vēlaties, lai noteikt to kaut kur citur. Un visbeidzot q, atmest, saņem no gdb. Tātad šī programma. / Caesar, mēs gatavojamies meklēt, izmantojot tiesības tagad, un mēs gatavojas izmantot GDB, lai atrastu bugs šajā programmā. I ilga šo programmu agrāk, Pārbaudiet 50, un es saņēmu vienu skatiens. Viss tas pastāvēja, tā apkopota, tā pagājis daudz testu, bet kaut kādu iemeslu dēļ, tas neizturēja piekto tests, pagriežot BARFOO, visas cepures, uz E-D-U-I-R-R, visu caps, izmantojot trīs kā atslēgu. Man diezgan tuvu. I got off ar vienu burtu. Tātad tur ir daži neliela kļūda šeit. Es apskatīju caur manu kodu. Es nevarēju saprast it out. Cerams, jūs guys var man palīdzēt skaitlis, ko šī kļūda ir. Tā ka ir kļūda, mēs esam meklē. Pieņemsim pāriet uz gdb. Atkal, es esmu palaist GDB. / Cēzars, tāpēc tagad mēs esam gdb. Un kas ir pirmais lieta, ko man vajadzētu darīt? Esmu tikko ienāca GDB. Kāds man labs komandu, lai ievadītu. STUDENTU: Break galvenais. Jason Hirschhorn: Break galvenais. Fantastiska. Pieņemsim, ierakstiet, ka iekšā Jūs guys var noskatīties šeit vai sekot kopā ar jūsu datoru. Break galvenais, un jūs redzēsiet lūzuma punkts bija noteikts - tas dod man kādu dīvaini atmiņas adresi, un tas arī dod man līniju skaitu. Ja es būtu, lai atskatītos uz šo failu, Es gribētu saprast, ka main notika tiešsaistē 21. Ko man vajadzētu darboties tālāk? Ir mana programma darbojas? Nē. Tātad, ko man vajadzētu darboties tālāk? STUDENTU: Run. Jason Hirschhorn: Run. Man vienkārši palaist palaist, vai būtu Es pievienot dažas citas lietas? STUDENTU: Run ar argumentu. Jason Hirschhorn: palaist ar tad komanda argumentus. Un, tā kā es esmu atkļūdošana ļoti specifiska gadījumā, man būtu jāievada ka komandrindas arguments. Tāpēc es darīšu palaist trīs, kas ir, atkal, izejas es saņēmu no Reģistrēšanās 50. Sākot programma. Mēs ejam cauri pāris līnijas. Jūs tagad redzēt, ka mēs esam uz līnijas 21. Kā es varu zināt, ka mēs esam uz līnijas 21? Jo, ja paskatās pa kreisi mana termināļa loga, tur tā saka līnija 21. Un tas dod man, patiesībā, kodu, kas ir saskaņā 21. Tāpēc es misspoke agrāk. Galvenais ir faktiski nav rindā 21. Galvenais ir pāris līnijas iepriekš 21. Bet rindā 21, kas ir kur mēs esam sadalīšana. Šī līnija kods ir vēl nav izpildīts. Tas ir svarīgi. Līnija jūs redzat, ir ne izpildīts vēl. Tas ir nākamais rindā kodu jūs gatavojaties veikt. Tātad nākamais rindā, kā jūs puiši ir iespējams, ir iepazinušies ar, tas ir nosacījumu pārbaudi, lai redzētu, vai man ir ieraksta komandrindas argumentu. Un uz i, kas ir otrais daļa, kas dara? Kas ir kas i? STUDENTU: Mainot to līdz veselam skaitlim. Jason Hirschhorn: Sorry? STUDENTU: Tas mainās arguments līdz veselam skaitlim. Jason Hirschhorn: Tāpēc, lai i maina ARG v1 no virknes līdz veselam skaitlim. Un kas tad ir tas pārbaudes? Students: Ja ir otrais komandrindas argumentu, malā No darbības programmu. Jason Hirschhorn: Un kas ir otrajā pusē, šajā Būla izteiksme pārbaudes? Šī daļa vairāk nekā šeit, lai i? Students: Ja tas ir negatīvs. Jason Hirschhorn: Pārliecinoties, ko? STUDENTU: Pārliecinoties, ka ir, faktiski, pozitīva. Jason Hirschhorn: Tieši tā. Tas ir pārbaudīt, lai redzētu, vai tas ir negatīvs, un, ja tas ir negatīvs, es ir sajūta, ka nākamajā rindiņā varenību tikt me kliedza lietotājam. Tāpēc pieņemsim hit beigām, lai izpildītu šo līniju. Mēs neredzam, ka līniju, ka jūs guys varbūt cerēju ieraudzīt kliedza lietotāju un pēc tam atgriežas, jo šī pozīcija nav izpildīt. Iegāju 3. Tāpēc man bija, faktiski, ievadiet divas komandas argumentus, un 3 ir ir lielāka par nulli. Tātad, mēs redzējām, ka līnija, mēs izpildīts, bet mēs neesam ne soli iekšpusē, ja stāvoklī. Tāpēc tagad, blakus, es redzu, es esmu, kurā int galvenais ir vienāds ar i arg v1. Tātad tas ir man rada mainīgu atslēgu. Tātad, ja es izdrukāt atslēgu tieši tagad, jo , kas ļauj jums redzēt vērtība iekšpusē mainīgo, Galvenais ir vienāds ar 47. Tas ir dīvaini, bet, protams, tas ir tāpēc, ka man nav izpildīt šīs līnijas vēl. Tāpēc tagad, ja es hit n, izpildīt šo līniju, un darīt drukas taustiņu, galvenais būs vienāda ar 3, kas ir tas, ko mēs sagaidām, ka tas ir vienāds. Tātad atkal, gdb, rindā jūs redzēt jūs vēl neesat izpildīts. Jums ir hit n vai s vai numuru Citu komandu faktiski izpildīt šīs līnijas. Print taustiņu. Galvenie ir pie 3. Līdz šim tik labi. String ir vienkāršs teksts. Pieņemsim izpildīt šīs līnijas. Es saņemu virkni no lietotāja. Let 's redzēt savā pārbaudē 50, es ievadiet BARFOO visas cepures, lai tas ko es ieiet. Ja tagad es drukāt vienkāršu tekstu. Jūs redzēsiet, tas ir vienāds virkni. Tas dod man kādu citu dīvainu heksadecimālo numuru, bet tas ir Fakts, ka mans virkne ir BARFOO. Ja es gribēju redzēt, ko galvenais pielīdzināts pie šis jautājums, kā es varētu pārbaudīt atslēgu? STUDENTU: Print atslēga. Jason Hirschhorn: Print atslēga, tieši tā. Un patiesībā, tur ir īsceļu. Ja jums ir apnicis rakstīt drukāt, Jūs varat vienkārši ierakstiet p. Tāpēc p galvenais dara to pašu precīzu lieta. Un atkal, es redzu, tas ir vienāds ar 3. Ja es gribēju uzzināt, kāda gan taustiņu un BARFOO sastādīja vienlaicīgi bet man bija apnicis rakstīt katras viena individuāli, es varētu ierakstīt info vietējie iedzīvotāji. Tas dod man galvenās ir vienāds ar 3. Vienkāršs teksts ir vienāds BARFOO. Tas arī dod man šīs divas dīvainas lietas augšpusē, šis mainīgais i un šis mainīgais n. Tie ir faktiski pastāvošo manā galvenajā programmā. Mēs neesam saskārušies viņiem vēl, bet kā preview, tiem pastāv manā cilpa. Tātad tagad, tie ir vienādi daži dīvaini skaits, jo viņi nav bijuši inicializēts, tomēr tās joprojām pastāv atmiņā, tāpēc viņi vienkārši noteikt uz kādu atkritumu vērtību. Bet mēs redzēt atslēgu vienkāršā teksta turpat. Tāpēc es esmu gatavojas veikt šo līniju, līnija 34, lai cilpa. Mēs ejam, lai ielēkt cilpa ar hitting n. Un mēs esam iekšā cilpa. Mēs esam pie mūsu pirmo pārbaudi. Un atkal, tie ir sava veida meklēt pazīstams ar jums, jo tas bija Caesar programma, kas bija rakstīts, bet atkal, ir dažas bug veida. Un tagad, ja man info vietējie iedzīvotāji, jo es esmu iekšā, ka cilpa, jūs redzēsiet ka man ir vienāds ar nulli, kā mēs sagaidām. Tas ir tas, ko mēs noteikti to un inicializēts tas lai ir uz cilpas. n ir vienāds ar 6. Tas arī ir jēga, jo mēs noteikti to uz strlen no teksta. Tāpēc es vēlētos darīt info vietējiem vai drukāt uz mainīgo bieži, lai pārliecinātos, ka viss vienmēr ir tas, ko Es ceru, ka tas ir vienāds. Šajā gadījumā, viss ko es ceru, ka tas ir vienāds. Tāpēc sāksim pārvietojas pa šis cilpa. Līnija es esmu par, ir līnija 36, ​​ja plain teksta i ir lielāks par un plain teksta i ir mazāks par vai vienāds ar z. Es zinu, ka mana problēma ir nevis ar savu pirmo burtu, tas ir ar otro burtu. Ja mēs atskatāmies uz Reģistrēšanās 50, B dodas uz E naudas sodu. Es esmu ņemot A un atstājot to kā , nemainot to D. Tātad kaut kas ir nepareizi ar Otru vēstuli. Tāpēc es esmu gatavojas pārvietot tur sekundē. Bet, ja es to vēlos, lai pārbaudītu, kāda līdzenums Teksta Es līdzinājās jo šis konkrētais gadījumā, es domāju, ka tas ir tas, ko? Kas ir teksta man ir vienāds šajā pirmā kārta, izmantojot par cilpu? STUDENTU: Zero? Jason Hirschhorn: Teksta I? Lai tā būtu kapitāls B. Es, protams, ir vienāds ar nulli, bet teksta kronšteins nulles slēgta kronšteins vienāds B jo stīgas, kā mēs redzējām pagājušajā nedēļā, ir masīvs, tāpēc mēs esam nonākuši pirmais simbols no tā. Tātad vēlreiz, ja es izdrukāt teksta par Es, es, patiesībā, iegūtu rakstzīmi B. Un tas ir veikls, labi? Man nav tiešām ir teksta I. Tas nav viens no mainīgajiem, es noteikti vai inicializēts, bet jūs varat izdrukāt no visu uzņēmējas lietas ja vēlaties. Bet pieņemsim pārvietotos. Ja teksta I ir lielāks nekā A un teksta I ir mazāks par vai vienāds ar Z, kas skaidri ir taisnība, jo mēs esam kapitāls B. Es esmu gatavojas palaist daži komandu par to. Mēs redzējām, ka matemātikas pagājušajā nedēļā, tāpēc mēs ņemt to par pašsaprotamu, ka tas darbojas tiesības saskaņā ar Check 50. Šie cirtaini bikšturi, pirmā parādīja, ka man bija aizejošais ja nosacījumu, otrs parādīja ka es esmu iziešanas uz cilpas. Un tāpēc tagad, kad es hit Tālāk, mēs redzēsim mēs esam atpakaļ uz cilpas vēlreiz. Mēs ejam cauri uz cilpas vēlreiz. Pieņemsim faktiski solis otrā atkārtojuma cilpa un veidam informācija vietējie iedzīvotāji. Tātad mēs esam otrajā atkārtojuma Mūsu uz cilpas. Man ir 1, ko mēs sagaidām. N ir vienāds ar 6, ko mēs sagaidām. Galvenais ir vienāds ar 3, ko mēs sagaidām. Un teksta, jūs redzēsiet, ir vienāds EARFOO tagad, nevis BARFOO vairs, jo mūsu iepriekšējās iterācijas, B bija mainīts uz kapitālu E. Tātad mēs esam par sastapties šo problēmu, tāpēc šis ir vieta, kur mēs ejam nirt debugging. Bet vai kāds ir kādi jautājumi par to, ko mēs esam darījuši līdz šim? Fantastiska. Tāpēc mēs esam par to, lai izpildītu to, ja nosacījums, teksta kronšteins Es aizvēru kronšteins pārsniedz A un teksta I ir mazāks par vai vienāds ar Z. bet pirms Es eju uz to, jo tas ir, ja Es zinu, mana kļūda, es vēlos norādīt no teksta I So pieņemsim likts izdrukāt. Tas ir vienāds ar rakstzīmju A, lai Šķiet, līdz šim viss ir labi un labs. Tāpēc es ceru, ka šo līniju vienu manu loģiku, Šī līnija ir taisnība. Tas ir lielais burts. Bet, ja es hit n, mēs saprotam, ka tas līnija, patiesībā, nav izpildīt. Es nolēca uz citam, ja. Kāpēc tā notiek? STUDENTU: Jo jums ir jūsu stāvoklis no teksta ir lielāks nekā, nav vienāds vai lielāks par. Jason Hirschhorn: Tāpēc man bija mana teksta I ir lielāks nekā, kas nav lielāks par vai vienāds ar. Tik skaidri, kapitāls nebija iedarbinātu šo, ja nosacījums, un mēs to darījām nav solis uz to, un mēs to darījām nedara nepieciešamo pāreju. Tātad tas ir tas, patiesībā. Es sapratu, mana kļūda. Es varētu iet atpakaļ manā avota failā, mainīt, un to atjaunina un palaist Pārbaudiet 50 vēlreiz. Bet mēs redzēsim, tikai pedagoģija s dēļ, ja es glabāt turpinās. Cits ja neveic vai nu, bet kāda vietā ir vienāds, ir komanda tas nemaina. Tāpēc tas nav mainījies vispār, un, ja es drukāt vienkāršu tekstu šeit, mēs redzēsim notiek cauri, ka cilpa nav, faktiski, mainītu šo otru raksturu vispār. Tas joprojām kapitāla A. Tātad vēlreiz, mēs debugged mūsu kļūda. Mēs sapratām, ka tur bija daži loģika trūkst. Un mēs atkļūdota to pirms laika pirms faktiski izpildīt šo līniju, bet jums būs pamanījuši, mēs nebijām vienkārši hit Next un lēkt, lai tas cits, ja, tas nozīmē, ka, ja nosacījums nebija taisnība. Mēs neesam, patiesībā, iegūt Rezultātā mēs gaidīts. Tātad, tad mēs varētu būt mudināts, bija mums nav bijis tik gudrs, lai apskatīt ka, ja nosacījums, un pārbaudīt, ja, patiesībā, Mūsu nosacījums ir jānovērtē to taisnība pašreizējā kontekstā. Tas ir viss, debugging šo programmu. Vai kāds ir kādi jautājumi? Kādas komandas es varētu hit atmest GDB? Q. Un tad es būšu piedāvāts, atmest anyway? Jā vai nē. Es hit jā, un es ņemšu atmest GDB. Tāpēc, ka bija ātrs primer uz gdb. Patiesībā, reālā scenārija, I did this par darba laika. Es GDBed šo konkrēto programmu pie darba laiks ar students. Un, ja mēs ejam atpakaļ mēs redzējām komandas Pirms mēs izmantojām pārtraukuma Mainas, vispirms lieta, ko mēs darījām. Mēs izmantojām darboties ar komandrindas argumentus, Otrā lieta, ko mēs darījām. Mēs izmantojām blakus daudz, lai pārvietotos mums pa līnijām. Un atkal, īsais variants Nākamās ir n. Tas ir, kas iekavās pelēkā slaidā. Mēs neizmantoja soli, taču mēs neesam obligāti nepieciešams, lai par šo lietu. Bet mēs varētu izmantot to mazliet vēlāk šodien ja mēs debugging, lai Piemēram, bināro meklēšanu kad binārais meklēšana sauc atsevišķu funkciju, bet tur ir dažas kļūdas ar to. Mēs esam gatavojas vēlaties, lai soli aicinājums bināro meklēšanas un faktiski atkļūdot to. Uzskaitīt mēs neizmantoja nu tāpēc, ka mums bija labu sajūtu mūsu kodu, bet, ja es tomēr vēlas, lai iegūtu sajūtu par to, ko kods es bija apkārt, es varētu vienkārši izmantot sarakstā. Drukāt mēs izmantojām, info vietējie mēs izmantojām. Turpināt mums nav nepieciešams izmantot šajā gadījumā, neviens nebija mums ir nepieciešams, lai izmantotu atslēgt, bet mēs izmantot atmest. Arī šie 10 komandas, praksē tos. Ja jūs saprotat šos 10 komandas, Jums ir jānosaka debugging jebkuru izdot ar gdb. Tāpēc mēs esam par to, lai dotos tālāk, atkal, lai būtība sadaļā šodien iet pa tie šķirošanas un meklēšanas algoritmi. Pirms mēs to darām, atkal, kādi jautājumi, komentāri, bažas par gdb? Tātad ir visi gatavojas izmantot GDB nevis printf? Lai ikviens, lai nepārtrauktību dēļ, visiem ir pavirša savas galvas tiesības tagad, tāpēc es jūs redzēt darba laika un visi TFS redzēs tevi un viņi teiks, parādiet man, kā izmantot GDB, un jūs varēsiet parādīt viņiem, vai ne? Veida? Varbūt cerams. Atdzist. Tāpēc mēs esam gatavojas pārcelties uz šķirošana un meklēšana. Jūs redzēsiet Man ir saraksts jau ir sakārtoti mums, bet tas nav dodas būs vienmēr. Tātad problēma noteikti specifikāciju Problēma noteikti trīs, jums ir šorti ka jūs varat skatīties, un tas faktiski lūdz, lai jūs skatīties šo šorti. Arī lekciju pagājušajā nedēļā, mēs devāmies pāri daudz no šiem algoritmiem, tāpēc es esmu nav gatavojas tērēt laiku klasē iet pār šiem algoritmiem vēlreiz, vai zīmējumu bildes par to, kā šos algoritmi strādā. Atkal, ka informācija, ko jūs varat atkārtoti skatīties lekcija, vai šī informācija ir notverti izcili uz šorti lai šos meklē, visi kas ir pieejami cs50.net. Tā vietā, ko mēs gatavojamies darīt, ir rakstīt šo programmu. Mums ir sajūta, garīgo modeli, par to, kā viņi strādā, un tāpēc tas, ko mēs ejam to darīt, ir kodu tos reāli. Mēs ejam, lai savukārt, ka garīgo modeli, ka attēls, ja vēlaties, uz faktiskais kods. Un, ja tu būtu nedaudz mulsina, vai miglaini par garīgo modeli, es pilnīgi saprast. Mēs faktiski nav gatavojas pāriet uz kodu uzreiz. Tāpēc, kamēr tas ātri šajā slaidā lūdz Jums kodu bināro meklēšanu, un patiesībā, iteratīvs versija bināro meklēšanu, pirmā lieta, ko es tiešām gribu, lai jūs darīt, ir uzrakstīt kādu pseudocode. Tātad jums ir šī garīgās modelis par to, kā bināro meklēšanas darbi. Izņemiet papīra lapas, ja jums ir viens viegli pieejama, vai atvērt teksta redaktoru, un es gribētu visi rakstīt. Ņem četras minūtes, lai rakstītu pseudocode bināro meklēšanu. Atkal, domā par to, ka garīgo modeli. Es atnākšu apkārt, ja jums ir jautājumi un mēs varam izdarīt attēlu out. Bet vispirms, pirms mēs sākam plānošanu, Es gribētu rakstīt pseudocode bināro meklēšanu, lai tad, kad mēs nirt, mēs esam kādu virzienu, kā , kur mums vajadzētu doties. STUDENTU: Vai mēs pieņemam masīvs vērtības, mēs iegūstam jau sakārtots? Jason Hirschhorn: Tātad bināro meklēšanu strādāt - lielisks jautājums - tu ir uzņemt šķiroti masīva vērtībām. Tāpēc pieņemu, tas darbosies. Mēs iesim atpakaļ uz šo slaidu. Jūs redzēsiet purpurā funkciju deklarācija ir bool binary_search int vērtību, int vērtības, int n. Tam vajadzētu izskatīties pazīstami, ja esat jau tuvojās vai gotten savu rokas netīras ar problēmu kopumu. Bet tas ir jūsu uzdevums deklarācija. Atkal, nav jāuztraucas par ka daudz šajā brīdī. Ko es tiešām gribu, lai jūs darīt, ir veikt Četras minūtes līdz pseudocode bināro meklēt, un tad mēs brauksim pāri, kas kā grupa. Un es nāk apkārt. Ja jums ir jautājumi, lūdzu brīvi paaugstināt savu roku. Kāpēc jūs to vēl divas minūtes pabeigt līdz pseudocode? Es zinu, tas var likties smieklīgi, ka mēs esam izdevumu tik daudz laika kaut kas nav pat faktiski C, bet jo īpaši tiem vairāk apstrīdot algoritmi un problēmu komplekti, kas mums ir, lai noskaidrotu, sākot ar pseudocode nav satraucošs par sintaksi, tikai neuztraucoties par loģika, ir neticami noderīgi. Un tādā veidā, jūs neesat atrisināt divas neticami sarežģītas problēmas uzreiz. Jūs tikai koncentrēties uz loģiku, un tad jūs pārvietoties sintaksi. OK. Sāksim iet cauri pseudocode. Es esmu uzrakstījis šeit, bināro meklēšanas pseudocode. Mēs rakstīt šo par kuģa kopā. Vai es ņemšu rakstīt to, un jums došu man liek man ir nepieciešams. Tātad, var kāds sniegt man pirmais līnija pseudocode jūs rakstīja bināro meklēšanu? Jā, Annie? Students: Lai garums saraksts ir lielāka par nulli. Jason Hirschhorn: Kamēr garums saraksta lielāka par nulli. Un atkal mēs redzam dažus C vērstu sintakses lietas šeit. Bet lielākā daļa no tā ir angļu valodā. Vai kāds ir līnija, ko tie īsteno Pirms šo to pseido-kodu? STUDENTU: Get masīvs Šķirotu numurus. Jason Hirschhorn: You rakstīja: "get masīvs Šķirotu skaitļiem. "Per funkcija deklarāciju, mēs būsim iet masīvs sakārtoti numuriem. STUDENTU: [nedzirdama]. Jason Hirschhorn: So mums būs tā. Bet jā, ja mums nebija, ka mēs būtu nepieciešams, lai sakārtotu mūsu masīvs skaitļi, jo bināro meklēšanu darbojas tikai sakārtoti masīvi. Tāpēc, kamēr garums saraksta vienāda ar nulli, es esmu gatavojas īstenot dažas cirtaini lencēm lai tas izskatās mazliet vairāk kā C. Bet, kamēr, šķiet karti uz kamēr cilpa, tāpēc iekšā šo brīdi cilpa, kas mums ir nepieciešams, lai darīt bināro meklēšanu? Kāds cits, kas man nav devis atbildēt vēl, bet kurš rakstīja šo? STUDENTU: Iet uz vidu saraksta. Jason Hirschhorn: Tom. Iet uz vidu sarakstā. Un pēcpārbaudes jautājums, ko mēs darām, kad mēs esam pie vidū sarakstā? STUDENTU: Vai pārbaudīt, vai kas ir numuru jūs meklējat. Jason Hirschhorn: Excellent. Iet vidū sarakstu un pārbaudīt ja mūsu vērtības ir tur - fantastiska. Vai kāds ir kaut kas cits tas bija atšķirīgs par šo? Tas ir tieši labi. Pirmā lieta, ko mēs darām bināro meklēšanu ir iet uz vidu sarakstā un pārbaudiet, lai redzētu, vai mūsu vērtība ir tur. Tāpēc es pieņemu, ja mūsu vērtība ir tur, ko mēs darām? STUDENTU: Mēs atgriežamies nulle [nedzirdama]. Jason Hirschhorn: Jā, ja mūsu vērtība ir tur, mēs atradām. Tātad, mēs varam pateikt, kādā veidā, tomēr tas funkcija ir definēta, mēs pateikt lietotāju mēs atradām. Ja tas nav tur, lai gan, tas ir ja tas izpaužas grūts. Tātad, ja tas nav tur, kāds cits, kurš strādāja par bināro meklēšanu vai ir ideja tagad, ko mēs darām? STUDENTU: Jautājums. Jason Hirschhorn: Jā? STUDENTU: Vai masīva jau ir sakārtoti? Jason Hirschhorn: Jā, mēs esam, pieņemot masīva jau ir sakārtots. STUDENTU: Tātad jums ir, lai pārbaudītu, vai vērtība, ka jūs redzat, ir lielāks nekā vērtība, ka jūs vēlaties, jūs varat pārvietot uz vidu otru pusi. Jason Hirschhorn: Tātad, ja vidū saraksts ir lielāks nekā tas, ko mēs meklē, tad mēs darām? Mēs virzāmies kur? STUDENTU: Jūs vēlaties, lai pārietu uz puse no saraksta ar skaitļi zemākas nekā. Jason Hirschhorn: lai mēs zvans, ka kreisi. Tātad, ja vidū ir lielāks, mēs varam meklēt left puse no saraksta. Un pēc tam meklēt, ko es domāju, ko meklēt? STUDENTU: [nedzirdama]. Jason Hirschhorn: Mēs ejam uz vidu. Mēs faktiski atkārtot šo lietu. Mēs ejam atpakaļ caur mūsu kamēr cilpa. Es došu jums pēdējais - cits, ja, vidū ir mazāks nekā mēs darām, ko mēs darām šeit? STUDENTU: Iet uz labo pusi. Jason Hirschhorn: Meklēt tiesības. Tas izskatās labi, bet vai kāds ir viss, kas mums var nebūt vai kaut kas cits, ka jūs likts Jūsu pseido-kodu? Tātad šis ir tas, ko mēs esam tik tālu. Kaut garums saraksta ir lielāks par nulli, mēs ejam, lai dotos lai saraksta vidū un pārbaudīt, ja mūsu vērtība ir tur. Ja vidū ir lielāks, mēs ejam uz meklēt pa kreisi, cits, ja pa vidu ir mazāk, mēs ejam, lai meklētu tiesības. Tātad mēs visi esam bija daži familiaritāte ar termini mēs izmantojam datorzinātnēs un instrumenti mums ir. Bet jūs jau novērojat mēs bijām runājot angļu valodā, bet mēs atradām par lietām, kas šķiet karti uz daudz instrumenti mums ir mūsu kodēšanas rīku komplektu. Tātad, tiesības pie nūja, mēs neesam gatavojas faktiski kodu vēl. Ko mēs redzam šeit, angļu valodā, ka kartes uz lietām, mēs varam rakstīt C? STUDENTU: Kamēr. Jason Hirschhorn: Kamēr. Tāpēc tas, kamēr šeit kartes uz ko? STUDENTU: kamēr cilpa. Jason Hirschhorn: kamēr cilpa? Vai, iespējams, plašākā nozīmē, cilpa. Mēs vēlamies kaut ko darīt vairāk un vairāk. Tāpēc mēs esam gatavojas kodu cilpu. Un mēs jau zinām, jo ​​mēs esam darījuši tas reizes pāris, un mēs ir daudz piemēru, kas pastāv, kā faktiski rakstīt šis indekss cilpu. Tā, ka būtu diezgan viegli. Mums vajadzētu būt iespējai iegūt, ka sāka diezgan ātri. Ko vēl mēs redzam šeit? Kādi citi struktūras sintakses lietas ka mēs esam iepazinušies ar C, mēs jau ir sajūta Based nost no vārdiem mēs izmantojām? Jā, Anna? [Dzirdams] tikai kidding. Anna, iet uz priekšu. Students: Ja un cits. Jason Hirschhorn: ja un cits - tieši šeit. Tātad, ko tie izskatās? STUDENTU: ja cits paziņojumu. Jason Hirschhorn: Jā, nosacījumiem, vai ne? Tāpēc mēs, iespējams, vajadzēs uzrakstīt dažus nosacījumus. Un atkal, lai gan varbūt mulsinoši pirmkārt, mums parasti ir jēga tagad par to, kā rakstīt nosacījumus un sintakse apstākļiem. Un, ja mums nav, mēs vienkārši uzmeklēt sintakse apstākļiem, izgriezt un ielīmēt ka, jo mēs zinām, mēs nepieciešams nosacījums. Citas lietas, mēs redzam, ka karti uz lietas, kas mums var būt nepieciešams veikt C? Jā, Aleha? STUDENTU: Tas varētu būt skaidrs, , tikai pārbaudot, vai vērtība ir kaut kas. Jason Hirschhorn: Tātad, kā mēs pārbaudām un - lai iet uz vidu saraksta un pārbaudīt, ja mūsu vērtība ir tur? Kā mēs to darām C? Kas ir sintakse, kas? STUDENTU: Vienāds, ir vienāds. Jason Hirschhorn: Vienāds, ir vienāds. Tāpēc šī pārbaude, iespējams, gatavojas jābūt vienādības, ir vienāds. Tāpēc mēs zinām, mums ir nepieciešams, ka kaut kur. Un patiesībā, tikai rakstot to, mēs redzam šīs citas lietas. Mēs esam nāksies veikt dažas salīdzināšanas operatori tur - fantastiska. Tātad, tas tiešām izskatās pēc un liels, mums nav rakstīts Vārds C kodu vēl. Bet mēs saņēmām garīgo modeli uz leju ar lekciju un tiem šorti. Mēs rakstījām pseido-kodu kā grupa. Un jau mums ir 80%, ja ne 90% no tā, kas mums ir jādara. Tagad mums ir nepieciešams, lai kodu tas, kas atkal ir ne-trivial problēmu atrisināt. Bet vismaz mēs esam iestrēdzis uz loģiku. Vismaz tagad, kad mēs ejam uz darba laiks, Es varu teikt, es zinu, ko man vajag to darīt, bet jūs varat atgādināt man par sintaksi? Vai pat, ja darba laiks ir pārpildīti, jums varat Google par sintaksi, nevis nekā ir iestrēdzis uz loģiku. Un atkal, nevis mēģināt atrisināt loģika un sintakses problēmas visiem uzreiz, tas bieži vien ir daudz labāk lauzt šos divus cietos problēmas ietecēt Divi vieglāk vadāmu tiem un darīt pseido-kodu un tad kodu C. Tātad, pieņemsim redzēt, ko es darīju, lai pseido-kodu pirms laika. Kaut garums saraksta ir lielāks par nulli, paskatās pa vidu saraksta. Ja skaitlis konstatēts atgriezās taisnība, cits ja skaitlis lielāks, meklēt pa kreisi. Cits ja skaits ir mazāks, meklēt labi, atgriezties viltus. Tā, kas izskatās gandrīz identiski, ja nav gandrīz identisks tam, ko mēs rakstījām. Faktiski, Tom, ko jūs vispirms teica, laužot vidū sarakstā, un, ja skaits, kas atrastas uz diviem paziņojumiem ir tiešām tas, ko es darīju. Es kombinēt tos tur. Es būtu noklausījies Jūs pirmo reizi. Tāpēc, ka ir pseido-kodu mēs esam. Ja jūs vēlaties, lai tagad, sorry, dodieties atpakaļ uz mūsu sākotnējo problēmu. Pieņemsim kods binary.c. Tāpēc jāīsteno atkārtošanas versiju bināro meklēšanu, izmantojot šādas funkcija deklarācija. Un jums nav nepieciešams, lai kopētu tas nosaka tikai pagaidām. Es tiešām gatavojas atvērt up šeit binary.c. Tāpēc ir funkcija deklarācija vidū ekrāna. Un jūs redzēsiet, es paņēmu pseido kodu No manā pusēm, bet gandrīz identisks lai ko mēs rakstījām, un nodot, ka jums. Tāpēc tagad, pieņemsim piecas minūtes ar kodu šo funkciju. Un atkal, ja jums ir kādi jautājumi, paceliet roku, ļaujiet man zināt, es ņemšu nāk apkārt. STUDENTU: [nedzirdama]. Jason Hirschhorn: Tāpēc es ņēma bināro meklēšana definīciju at augšu, uz līnijas 12. Tas ir tas, ko es saņēmu par manu slaidu. Un tad tas viss pseido kods, es tikko kopēt un ielīmēt no slaida, pseido-koda slide. Es joprojām nav dzirdes [nedzirdama]. Tātad, ja jums ir pabeidzis savu īstenošanu, es gribu, lai pārbaudītu to. Es e-pastu jums helpers.h failu iepriekš šajā klasē. Un tā būs pieejama tiešsaistē, kā arī lejupielādei par cilvēkiem, skatoties šajā sadaļā laiku atlikta. Un es tikai izmantot generic sadalījumu kodu no pset3. Tāpēc es ņēma find.C, izmantot savu helpers.h failu nevis helpers.h failu , kas ir dota sadales kodu. Un man nācās veikt vēl vienu maiņu find.C nevis zvanot vienkārši meklēšanu, zvaniet binary_search. Tātad, ja jūs vēlaties, lai pārbaudītu savu kodu, zinu, ka tas ir, kā to izdarīt. Patiesībā, kad mēs būsim darbojas šo kodu tieši tagad, es tikko kopiju mans pset3 katalogs, atkal, aizstāja talcinieki failus un pēc tam, ka iespēju mainīt find.C zvanīt binary_search nevis vienkārši meklēt. Jason Hirschhorn: Jā. Jums ir jautājums? STUDENTU: Nevermind. Jason Hirschhorn: Neraizējieties. Nu, pieņemsim sāktu. Mēs kodētu tas kā grupa. Viena cita piezīme. Atkal, tas ir, var viegli tikt samainīti in Problēma noteikti trīs. Man ir mana helpers.h fails, kas drīzāk nekā helpers.h mēs dota, paziņo, bināro meklēšanu, burbulis kārtot un atlase kārtot. Un find.c jūs pamanīsiet uz līnijas, kas tas ir, līnija 68, ko mēs saucam par bināro meklēt nevis meklēšanu. Tātad vēlreiz, kods, kas ir pieejama tiešsaistē vai kods, kas jūs esat radot tagad var viegli samainīti in p iestatīts 3, lai pārbaudītu to. Bet vispirms, pieņemsim kodu bināro meklēšanu. Mūsu funkcija deklarāciju, mēs atgriezties bool. Mēs veicam vesels skaitlis sauc vērtību. Mēs ņemam masīvs integers sauc vērtībām, un mēs n ir izmērs masīva. On line 10, tepat, man ir asas ietver stdbool.h. Vai kāds zina, kāpēc tas ir tur? Tātad, ko tas kods līnijas darīt? STUDENTU: Tas ļauj izmantot bool atgriešanās veidu. Jason Hirschhorn: Tieši tā. STUDENTU: Vai tā ir bibliotēka, kas ļauj izmantot bool atgriešanās veidu. Jason Hirschhorn: Tik straujš iekļaut stdbool.h line dod man kādu definīcijas un deklarācijas lietām ka man ir atļauts izmantot Šī bibliotēka. Tātad tiem, saka, ka tur ir Tas, ko sauc par bool, un tas var būt patiesa vai nepatiesa. Tātad tas, ko tas līnija dara. Un, ja man nav šo līniju, es būtu nokļūt nepatikšanās, lai rakstot šo vārdu tieši šeit, bool, tieši tur. Tieši labi. Tāpēc man ir nepieciešams, ka ar šo kodu. OK. Tātad šis atkal ir iteratīvs versija, nevis rekursīvs vienu. Tātad, ļaujiet mums sākt. Sāksim ar to pirmo reizi līnija pseido kodu. Un, cerams, mēs - vai ne, cerams. Mēs ejam, lai iet pa istabu. Mēs iesim pozīcijai, un es jums palīdzēšu jūs izrēķināt līniju, kas mums ir nepieciešams rakstīt pirmās. Tāpēc, kamēr garums saraksta ir lielāka par nulli. Sāksim priekšā. Kas line man vajadzētu rakstīt šeit, kodu? STUDENTU: Kaut iekavas n ir lielāks par 0. Jason Hirschhorn: Kamēr n ir liels par 0. Tātad, n ir lielums saraksta, un mēs pārbaudīt, ja - [interposing BALSIS] Jason Hirschhorn: - žēl? STUDENTU: Kā mēs zinām, ka n ir lielums saraksta? Jason Hirschhorn: Sorry. Vienu PSET specifikācijā meklēšanu un kārtot funkcijas jums ir nepieciešams, lai rakstītu, n ir lielums sarakstā. Es aizmirsu paskaidrot, ka šeit. Bet jā. n ir lielums sarakstu, šajā gadījumā. Tātad, bet n ir lielāks par 0. OK. Tas var izrādīties nedaudz problemātiska tomēr, ja lietas iet tālāk. Tāpēc, ka mēs turpināsim zināt lielums saraksta visā tas funkcija, bet teikt, ka mēs sāktu ar masīvu 5 veselus skaitļus. Un mēs ejam cauri, un mēs esam Tagad samazinājies to uz leju, lai masīvs 2 veseli skaitļi. Kas 2 veseli skaitļi ir tas, ka? Izmērs ir 2 tagad, ka mēs gribam, lai apskatīt, bet kuriem 2 ir tas, ka? Vai tas ir jēga, uz šo jautājumu? OK. Es lūgt to vēlreiz. Lai mēs sāktu ar šo klāstu 5 veseli skaitļi, un n ir vienāds ar 5, vai ne? Mēs palaist cauri šeit. mēs, iespējams, mainīt izmēru, tiesības, kā lietas iet tālāk. Kas ir tas, ko mēs sakām, mēs vēlamies darīt. Mēs nevēlamies, lai meklētu pilna lieta vēlreiz. Tā teikt, mēs mainīt to uz 2. Mēs ņemam pusi sarakstu, kas ir dīvaini. Tik vienkārši paņemt 2. Tāpēc tagad n ir vienāds ar 2. Es atvainojos par nabadzīgajiem Dry Erase marķieri. Tiesības? Un mēs esam meklēt pa sarakstu atkal ar sarakstu lielumu 2. Nu, mūsu masīvs joprojām izmēru 5. Mēs sakām, mēs tikai vēlamies, lai meklēt 2 vietas tajā. Tātad, kas 2 plankumi ir tie? Vai tas ir jēga? Vai tie ir palikuši 2 plankumi? Vai tie ir pareizie 2 plankumi? Vai tie ir vidējie 2 plankumi? Mēs esam sadalīti šo problēmu uz leju, bet mēs tiešām nezinu, kas ir daļa no problēma, mēs joprojām meklē, tikai, kam šie 2 mainīgos. Tāpēc mums ir nepieciešams nedaudz vairāk laika, bet n ir lielāks par 0. Mums ir jāzina, kur tas n ir mūsu faktisko masīvs. Tātad, vai kāds ir mainīt uz šo līniju? Lielākā daļa no šīs pozīcijas ir pilnīgi pareizi. Vai ir vēl papildus? Vai mēs varam mijmaiņas kaut ko par n līdz padara šo līniju mazliet labāk? Mm-hm? STUDENTU: Vai jūs sāktu mainīgo piemēram, garums līdz n, kas būs pēc tam var izmantot vēlāk funkcija? Jason Hirschhorn: So inicializētu dažāda garuma, lai n, un mēs izmantojam, ka vēlāk? Bet tad mēs vienkārši atjaunināt garumu un mēs vēl uzskriet šo problēmu, ja mēs samazināt garumu mūsu problēmas, bet mēs nekad zināt, kur, patiesībā, ka garums kartes uz. STUDENTU: Vai nav, ka nenotiks vēlāk, kad jūs sakāt, meklēt pa kreisi, meklēt labi? Jūs gatavojas doties uz atšķirīgu platību jūsu - Jason Hirschhorn: Mēs ejam, lai dotos uz platību, bet kā mēs zinām, kas iet uz? Ja mēs tikai ir masīvs un tas n, kā mēs zinām, kur iet uz masīvā. Uz muguras, jā? STUDENTU: Vai jums ir, piemēram, zemāka robežu un augšējo robežu mainīgu vai kaut kā tā? Jason Hirschhorn: OK. Tāpēc šī ir vēl viena ideja. Nevis tikai sekotu izmērs, mēs sekot zemāka un augšējā robeža mainīgs. Tātad, kā mēs aprēķinātu lielumu no apakšējo robežu un augšējo robežu? [interposing BALSIS] Jason Hirschhorn: atņemšana. Un arī sekotu zemāks saistoša un augšējā robeža ļaut mums zināt, mēs meklē šīs divas? Vai mēs meklē šos divus nekā šeit? Vai mēs meklējot vidū divas? Droši vien nav vidū divas, jo Tas, patiesībā, ir bināro meklēšanu. Bet tagad mēs varētu saņemt izmēru, bet arī robežas masīva. Būtībā, ja mums ir mūsu gigants tālruņa grāmatu, mēs izvilkt to pusi. Mēs tagad zinām, ja tas ir mazāks tālruņu grāmata ir. Bet mēs faktiski lielisks tālruņa grāmatu pusi. Mums joprojām ir nepieciešams zināt, kur jaunas robežas mūsu problēma ir. Vai kāds ir kādi jautājumi par to? Jā? STUDENTU: Vai tas darbojas, izveidojot mainīgs, es, ka jūs tad tikai pāriet pozīcija i attiecībā pret tās pašreizējo atrašanās vietu, un garums, n? Jason Hirschhorn: Un kas ir man? STUDENTU: Tāpat kā es to, piemēram, sava veida - Tāpat kā jūs sāktu man būt vidējā stāvoklī masīva. Un pēc tam, ja vērtība ir stāvoklī i vidū masīva konstatēts būt mazāka par vērtību, jums ir nepieciešams, i tagad kļūst garums masīva, plus I vērtība dalīta ar 2. , Piemēram, redzat, jūs maiņās i - Jason Hirschhorn: Right. Students: - līdz - Jason Hirschhorn: Tāpēc es esmu gandrīz pozitīvi, ka strādās. Bet jautājums ir, jums ir nepieciešams divi gabalus informācijas šeit. Jūs varat darīt to ar sākumā un beigās, vai jūs varat darīt to ar izmēru, un pēc tam daži marķieris. Bet jums ir nepieciešams divi gabali informācijas šeit. Jūs nevarat iztikt tikai ar vienu. Vai tas ir jēga? Tāpēc mēs esam gatavojas iet cauri, un mēs gatavojamies darīt [dzirdams] un izveidot dažas marķierus. Tātad Ko tu rakstīt savu kodu? STUDENTU: Es tikai teicu int saistošs viens ir vienāds ar 0. Jason Hirschhorn: Sauksim ka int, sākot. STUDENTU: OK. Jason Hirschhorn: Tas padara vairāk sajūtu par mani. Un? STUDENTU: Es teicu, es domāju, int beidzas. Jason Hirschhorn: int beidzas. STUDENTU: Es domāju, n mīnus 1, vai kaut kas tamlīdzīgs. Tāpat, pēdējais elements. Jason Hirschhorn: Tātad jūs rakstījāt, int sākuma ir 0, semikolu, un int beidzas vienāds n mīnus 1, semikolu. Tātad būtībā, ko mēs darām Šeit, 0 pirmo pozīciju. Un kā mēs zinām bloki, tie nav iet līdz n, viņi iet līdz n mīnus 1. Tāpēc mums ir daži robežas mūsu masīvs. Un šīs sākotnējās robežas gadās būt sākotnējās robežas mūsu problēma. OK. Tā, ka skan labi. Tad, ja mēs ejam atpakaļ uz šo līniju, bet garums saraksts ir lielāks par 0, kāda tā vietā, n, būtu mēs ieliekam šeit? STUDENTU: Rakstiet beidzas mīnus sākums. Jason Hirschhorn: Kamēr beidzas mīnus sākas ir lielāks par 0? OK. Un mēs varētu, ja mēs vēlējāmies, lai padarīt šo mazliet nicer, ko vēl mēs varētu darīt? Ja mēs vēlējāmies, lai attīrītu Šis kods up mazliet? Kā mēs varam atbrīvoties no 0? Tas ir tikai stila jautājums. Tas ir pareizi tagad. STUDENTU: Ending nav vienāds sākums? Jason Hirschhorn: mēs varam darīt? [interposing BALSIS] STUDENTU: Ending ir lielāks? Jason Hirschhorn: Jā. Mēs varam tikai darīt, kamēr beidzas ir lielāks par sākuma. Tiesības. Mēs pievienotās sāk uz otru pusi no tā, kā mēs tikām vaļā no 0. Tāpēc tas tikai izskatās mazliet tīrāks. OK. Tātad, kaut garums saraksts ir 0, tapa ka, lai gan beidzot ir lielāks nekā sākums. Mēs gatavojamies īstenot mūsu nepieciešama cirtaini bikšturi, tad pirmā lieta, mēs vēlamies darīt, ir apskatīt tos nedaudz sarakstā. Jums? Vai jūs varētu man - Students: Ja iekavas vērtība kvadrātiekavas - Jason Hirschhorn: Ja apaļās vērtība kvadrātiekavas. STUDENTU: Ending dalīts ar 2. Jason Hirschhorn: Ending? STUDENTU: Es redzu problēmas ar jūsu - Jason Hirschhorn: OK. Nu, paskaties vidū. Kā mēs zinām, kas pa vidu ir? Jā. Tāpēc ļaujiet man izdzēst šo kodu. Kā mēs zinām, kas pa vidu ir? Kaut ko, ja jums ir sākums un beigās, kā jūs atrast vidū? STUDENTU: Tu vidēji. STUDENTU: Jūs pievienot tos kopā un pēc tam - Jason Hirschhorn: Pievienot tos kopā un pēc tam? STUDENTU: Un jūs vidēji. Sadalīt to ar 2. Jason Hirschhorn: Pievienot tos kopā un izdalot ar 2. Tāpēc int vidū ir vienāds? Tom, jūs varat dot to man? STUDENTU: Sākums plus beidzas - Jason Hirschhorn: sākums plus beidzas. STUDENTU: All, bracket, dalīts ar 2. Jason Hirschhorn: All, iekavās, dalīts ar 2. Lai dod man vidū par kaut ko, pareizi? STUDENTU: Jums arī vajadzēs noapaļot to uz augšu. Jason Hirschhorn: Ko jūs domāju, man ir nepieciešams noapaļot to uz augšu? [interposing BALSIS] STUDENTU: Jo, ja tas ir dīvaini numurs, tad tas ir tāpat kā - Jason Hirschhorn: Nu, OK. Lai es varētu noapaļot to uz augšu. Bet, ja tas ir nepāra skaitlis, 5, es varu ņemot 1 prom no vidus. Vai ja tas ir pat numuru, bet, kas ir labāks gadījums. Ja tas ir 4, mums ir tikai 4, es varu pieņemt Pirmais "vidējā", citēju, likt pēdiņas beigās vai otrais "vidējā" vienu. Nu varētu strādāt bināro meklēšanu, tāpēc man nav tiešām ir nepieciešams, lai ap to. Bet ir viena cita lieta, ko es ir nepieciešams, lai apskatīt šo līniju. Mēs, iespējams, nevar saprast tā vēl, bet mēs atgriezīsimies pie tā. Tāpēc, ka šī pozīcija faktiski joprojām nepieciešama viena cita lieta. Bet līdz šim, mēs esam rakstiski četras rindiņas kodu. Mēs esam ieguvuši savu sākumu un beigu marķieri. Mums ir mūsu, kamēr cilpa, kas kartes par tieši mūsu pseudocode. Mēs esam apskatot vidū, kas Maps tieši uz mūsu pseudocode. Es teiktu, ka tas iet uz vidu no saraksta, šī līnija kods. Un tad, kad mēs ejam uz vidu sarakstā, nākamā lieta, kas mums jādara, ir pārbaudīt, ja mūsu vērtība ir tur pseudocode mēs rakstījām iepriekš. Tātad, kā mēs pārbaudām, vai mūsu vērtības ir vidū saraksta? Jums. Kāpēc nav jums darīt? Students: Ja mūsu vērtība s ir vidū ir vienāds ko mēs noteikti - Es domāju vienāds vienāds ar - Jason Hirschhorn: It - OK. STUDENTU: Es neesmu pārliecināts, ko mainīgais mēs meklējam lai gan, ir tāpēc, ka - [interposing BALSIS] STUDENTU: [nedzirdama]. Jason Hirschhorn: Tieši tā. Vienu funkciju deklarācijas mēs meklējam vērtību. Tāpēc mēs esam meklējot vērtības masīva vērtību. Tātad jūs esat tieši labi. Jums būs darīt, ja atvērtā paren vērtība kronšteins vidējā slēgts kronšteinu vienāds ir vienāds ar vērtību, un iekšā tur kas mums jādara? Ja mūsu vērtība ir tur, ko mums ir jādara? [interposing BALSIS] STUDENTU: Atgriešanās nulle. Jason Hirschhorn: Atgriešanās taisnība. STUDENTU: Atgriešanās taisnība. Jason Hirschhorn: Michael, ko tas līnija darīt? STUDENTU: [dzirdams] programma darbojas virziena, un tas ir beigusies, Jūs esat tas, ko jums ir jādara? Jason Hirschhorn: programmu, vai kas? Šādā gadījumā? STUDENTU: funkcija. Jason Hirschhorn: funkcija. Un tā, lai atgrieztos kāds sauc tas un piešķir tai vērtību, taisnība. Tieši labi. Galvenais. Kas ir atgriešanās tips un galvenais, Michael? STUDENTU: int, vesels skaitlis? Jason Hirschhorn: int, tieši tā. Skaitlis. Tas bija tikai jautājums, lai pārliecinātos, ka jums puiši ir uz augšu no tā. Ko tas parasti atgriežas, ja viss strādā labi? STUDENTU: Zero. Jason Hirschhorn: Zero. Tieši labi. Students: Ja tas tikai atgriež patiess, nav informācijas tiek sniegta par to - Ak, tas ir tikai saprotams, ka tas vērtība ir iekšā masīvā. Jason Hirschhorn: Tieši tā. Šī programma nav sniegt informāciju par to, kur tieši vērtība. Tas ir tikai sakot, jā, mēs noskaidrojām tas vai nē, mēs neatradām to. Tātad, ja skaitlis atrasts, atgriezties true. Nu, patiesībā mēs tikko izdarījām, kas patiešām ātri ar šo vienu rindiņu kodu. Tāpēc es pārvietot šo līniju pseudocode. STUDENTU: Vai nav mums vajag lai mainītu masīvu? Tai jābūt vērtībām, nevis vērtība, vai ne? Jason Hirschhorn: Sorry. Paldies. STUDENTU: Jā. Jason Hirschhorn: Šī līnija jābūt vērtībām. Tieši labi. OK. Tātad mēs esam paskatījās vidū sarakstā. Ja skaitlis konstatēts atgriešanās taisnība. Turpinot ar mūsu pseudocode, ja vidū ir lielāks, meklēt pa kreisi. Tāpēc man bija šeit, ja numurs augstāka, meklēt pa kreisi. Konstantīns, jūs varat dot man šo rindiņu kodu? Students: Ja vērtība vidu - Jason Hirschhorn: Tātad, ja vērtība - ja atklāta paren vērtības kronšteinu vidējā close bracket - Students: ir mazāka nekā vērtība? Jason Hirschhorn: Vai mazāk nekā. STUDENTU: Mazāk nekā vērtība. Jason Hirschhorn: vērtība. Nu, patiesībā, jūs vēlaties, lai pārbaudiet, vai numurs - Piedodiet. Tas ir nedaudz mulsinoši. Bet cits, ja numurs vidū saraksts ir lielāks. STUDENTU: Ak, OK. Jason Hirschhorn: Es mainīt. Cits ja vidū ir lielāks, mēs vēlaties meklēt pa kreisi, OK? Un ko mēs darām iekšā to, ja nosacījums? STUDENTU: Vai es varu veikt nelielas izmaiņas nosacījums, mainīt to uz cits, ja? Jason Hirschhorn: cits, ja? OK. Lai šis kods veiks apmēram tāds pats. Bet jauka lieta par izmantojot, ja cits ja, kas cits, ja vai, kas cits, ja cits nozīmē, ka tikai viens no tiem, kas notiek pie jāpārbauda, ​​ne visi trīs no tiem, iespējams. Un kas padara to mazliet nicer uz datoru, kas ir rādīt savu programmu. Tātad [? Konstantīns?] mēs esam šo līniju iekšpusē, kas cits, ja vērtības, kronšteins vidū close kronšteins ir lielāks par vērtību. Kas mums jādara? Mums ir nepieciešams, lai meklētu pa kreisi. Kā mēs to darām? Es esmu gatavojas sniegt jums sākums. Mums ir šīs divas lietas, ko sauc sākas un beidzas. Tātad, kas nepieciešams, lai notiktu sākumā? Ja jūs vēlaties meklēt pa kreisi no sarakstu, mēs mūsu pašreizējo sākums. Ko mums darīt? STUDENTU: Mēs noteikti sākumu līdz vidum plus 1. Jason Hirschhorn: Tātad, ja mēs esam meklējot pa kreisi? STUDENTU: Atvainojiet, vidējā mīnuss - lai beidzot būtu vidū mīnus 1 un sākumā - Jason Hirschhorn: Un ko notiek sākumā? Students: Tā paliek nemainīgs. Jason Hirschhorn: So nozīme nemainās. Ja mēs esam meklējot pa kreisi, mēs esam izmantojot tādu pašu sākumu - tieši labi. Un beidzas? Atvainojiet, ko dara beidzas vienāds atkal? STUDENTU: Middle mīnus 1. Jason Hirschhorn: Middle mīnus 1. Tagad, kāpēc mīnus 1, ne tikai vidū? STUDENTU: vidū ir no attēlu, kas jau, jo mums bija pārbaudījusi, ka tas ir no? Jason Hirschhorn: Tas ir tieši labi. Vidū ir no attēla. Mēs jau pārbaudīts vidū. Tāpēc mēs nevēlamies "pa vidu", citējot likt pēdiņas beigās, lai turpmāk būt masīvs, ka mēs meklējam. Tātad tas ir fantastiski. Cits ja vērtības kronšteinu vidū ir lielāks nekā vērtība beidzas vienāds vidējā mīnus 1. Jeff, ko par šo pēdējā rindā? STUDENTU: Else. Values ​​vidū ir mazāka nekā vērtība? Jason Hirschhorn: Mēs ņemšu jūs dodot man cits. Tātad, ja tu nedod man - STUDENTU: Tātad sākas būtu vidējā plus 1. Jason Hirschhorn: sākums vienāds vidū plus 1, atkal par to pašu iemesla dēļ, ka Constantine deva mums agrāk. Un beigās, kurš nav devis man koda rindu vēl? Atgriezties viltus, Aleha, ko mēs rakstām šeit? STUDENTU: Atgriešanās nepatiesa. Jason Hirschhorn: Atgriešanās nepatiesa. Un mums tas ir jādara, jo, ja mēs nav atrast to, mums ir nepieciešams pateikt, ka mēs neatrada to. Un mēs teicām, mēs ejam, lai atgrieztos bool, tāpēc mums noteikti ir jāatgriežas bool kaut kur. Tā ļauj palaist šo kodu. Es tiešām gatavojas - tāpēc mēs esam terminālī. Mēs notīrītu savu logu. Veidosim visu. Mēs atradām tur ir viena kļūda. Tur ir kļūda līnijas 15, sagaidāms Semikolu beigās deklarācija. Tātad, ko es aizmirstu? STUDENTU: Semikols. Jason Hirschhorn: Semikols pa labi šeit. Es domāju, ka bija Toma kodu. Tātad Tom, [nedzirdama]. Just kidding. Darīsim darīt visu no jauna. STUDENTU: Ko Dropbox katalogs mums būtu par šo? Jason Hirschhorn: Tātad jūs varat vienkārši skatīties šo mazliet. Bet atkal, ja jūs vēlaties, lai pārvietotu to kodu savā pset3 direktorijā, lai mēģinātu it out, tas ir tas, ko es darīju. Ja jūs pamanīsiet šeit - žēl, labs jautājums. [? LS,?] Man šeit find.c kodu No šīs nedēļas distro kodu. Man ir helpers.h. Man ir Make fails, ka es tiešām edited mazliet iekļaut šos jaunos faili mēs esam rakstiski. Visu šo kodeksa būs pieejama, nav sadales kodu, bet jaunā Padara failu, jaunais helpers.h fails tiks būs pieejama internetā lejupielādei. Atkal, tāpēc tie ir papildu kodus mēs esam. Tātad, lai visiem, par šīs līnijas, padara atrast, binārā, burbulis izvēle - markas visi trīs un apkopo par Tas izpildāmā koda atrast. Tātad kopumā, mēs negribam taisni uz check50. Mēs vēlamies, lai palaistu dažas pārbaudes par mūsu pašu. Bet tikai, lai mēs varētu paātrināt šo mazliet, check50 2013 pset3.find pāries in helpers.c-- mana slikti. Man nav, ka tieši tagad. Tātad, mēs esam patiešām gatavojas palaist kodu reāli. Usage.find /, jūs zināt, ko tas nozīmē? STUDENTU: Jums ir nepieciešams otru komandrindas par to. Jason Hirschhorn: Man vajag Otrajā komandrindas. Un vienu specifikāciju, man ir nepieciešams ievadīt, ko mēs meklējam. Tātad, pieņemsim meklēt 42. Mēs turpināsim to šķiroti, jo mēs nerakstīju kārtošanas funkcija vēl - 42, 43, 44. Un kontroles D neatradu adatu siena kaudzē. Tas ir slikti. Tas noteikti ir tur. Pamēģināsim kaut ko citu. Varbūt tas ir tāpēc, ka man tā sākumā. Darīsim 41, 42, 43. Tur mēs ejam. Tas atradis. Palūkosimies uz to beigās, tagad, tikai lai mēs varētu būt pamatīga - 40, 41, 42. Neatrada adatu. Tāpēc es pieminēju šo agrāk. Diemžēl, es zināju, ka tas kas notiks. Bet pedagoģiskajiem mērķiem, tas ir labi, lai to izpētītu. Tas nedarbojas. Kaut kādu iemeslu dēļ, tas nevar atrast. Mēs zinām, kas ir tur, bet mums nav atrast to. Tātad viena lieta, ko mēs varētu darīt, ir iet cauri GDB to atrast, bet vai kāds, bez iet caur gdb, ir sajūtu par to, kur mēs ieskrūvē up? [? Madu? ?] STUDENTU: Es domāju, ka tas varētu būt tad, kad beidzot ir vienāds ar sākuma, un tas ir tikai vienu elementu sarakstu. Tad tas vienkārši ignorē to, nevis faktiski tā pārbaudi. Jason Hirschhorn: Tas ir tieši labi. Kad beidzas vienāds sākumā, mēs vēl ir elements mūsu sarakstā? STUDENTU: Jā. Jason Hirschhorn: Jā, patiesībā, mēs ir viens un tikai viens elements. Un tas, visticamāk, notiks, kad, vienu kodu mēs pārbaudīta, mēs esam priekšējā siena kaudzē vai gals kaudzē. Tas ir, ja sākums un beidzot būs vienāda viens ar bināro meklēšanu. Tātad šajos divos gadījumos, tas nav darbs, jo beidzot bija vienāda sākuma. Bet, ja beidzot ir vienāds ar sākuma, tas savukārt cilpa izpildīt? Tā nav. Un mēs varētu būt jāpārbauda ka atkal caur gdb. Tātad, kā mēs varam noteikt šo kodu, jo ja vienlaikus beidzot ir vienāds sākuma, mēs arī vēlamies, lai šī kamēr cilpa, lai palaistu. Tātad, ko noteikt mēs varam dot 18 rindā? STUDENTU: [dzirdams] ir lielāka par vai vienāds ar. Jason Hirschhorn: Tieši labi. Kamēr beidzot ir lielāks nekā vai vienāds ar sākuma. Tāpēc tagad, mēs pārliecināmies, lai iegūtu, ka stūra case beigās. Un redzēsim. Pieņemsim palaist šo vēl vienu reizi. Veidosim visiem. Atkal, jums ir tikai sekot līdzi šeit. Atrast 41 šoreiz. Tikai glabāt to konsekventi. Atrast 42. Palūkosimies uz to sākumā - 42, 43, 44. Mēs atradām to. Tāpēc, ka patiešām bija izmaiņas mums vajadzēja darīt. Tas bija daudz kodēšanas mēs tikko bija, bināro meklēšanu. Vai kāds ir kādi jautājumi, pirms Es pāriet līnijās mēs wrote bināro meklēšanu vai kā mēs rakstainas , ko mēs neesam izdomāt? Pirms mēs virzāmies tālāk, es arī vēlos norādīt out ka kopumā mēs samērot mūsu pseido-kods viens viens uz mūsu kodu. Mums tomēr ir, ka grūts lieta lai noskaidrotu, ar sākas un beidzas. Bet vēl jums nav izpētījuši, ka no jums būtu rakstīts diezgan daudz identisks kods, izņemot šie top divas līnijas. Un tad jūs būtu sapratuši, ja veicāt to pārbaudes un gadījumos, kas jums ir nepieciešams kaut kas cits. Tātad, pat ja Jums bija pēc mūsu pseido-koda līnija uz līniju, jūs esat gotten visiem, bet divas rindiņas kodu jums nepieciešams rakstīt. Un es gribētu būt gatavs derēt, ka jūs guys būtu viss, sapratu, ka no diezgan ātri, kas jums nepieciešams, lai daži marķieri veida, kas tur, lai noskaidrotu , kur jūs bijāt. Tas atkal ir spēks darīt pseido-kodu pirms laika. Tātad, mēs varam darīt loģiku, pirmkārt, un pēc tam mēs varam jāuztraucas par sintaksi. Bija mums ir sajaukt par loģiku Mēģinot rakstīt šo kodu C, mēs esam gotten visu messed up. Un tad mēs gribētu būt uzdodot jautājumus par loģika un sintakse un meshing tos visus kopā. Un mēs esam gotten zaudējis , ko var ātri kļūt ļoti sarežģīta problēma. Tātad, pieņemsim pāriet tagad uz atlases veida. Mums ir palikušas 20 minūtes. Tāpēc man ir sajūta, ka mēs nebūsim spējīgi izietu cauri visiem atlases veida un burbulis kārtošanas. Bet ļaujiet mums vismaz mēģinājums lai pabeigtu atlases veida. Tāpēc jāīsteno izvēli kārtot, izmantojot šādu funkciju deklarāciju. Again, tas ir ņemts no problēma noteikti specifikāciju. Int vērtības ir iekavās, ir masīvs veseli skaitļi. Un int.n ir lielums šī masīva. Atlases veida notiek kārtot šo masīvu. Tāpēc par mūsu garīgo modeli izvēles kārtot, mēs pull - pirmkārt, mēs iet cauri sarakstam pirmais laiku, atrast mazākais skaits, nodot to sākumā, atrast otro mazākais skaitlis, ielieciet to otro pozīciju, ja mēs gribam, lai Kārtot augošā secībā. Es neesmu piespiežot jums rakstīt pseido-kods tiesības tagad. Bet, pirms mēs to kodu, kā klases piecas minūtes, mēs rakstīt pseido-koda tāpēc mums ir kāda jēga par to, kur mēs ejam. Tāpēc mēģinājums rakstīt pseido kodu par savu. Un tad mēģināt pārvērst, ka pseido-kodu uz kodu. Mēs darīsim, ka grupa piecu minūšu laikā. Un, protams, ļaujiet man zināt, ja Jums ir kādi jautājumi. STUDENTU: Ka tā? Jason Hirschhorn: redzēt, cik tālu jūs var saņemt vairāk divās minūtēs. Es saprotu, jums nav varētu pabeigt. Bet mēs iet pār to kā grupa. Jūs visi kodēšanas tik [dzirdams], tāpēc es esmu žēl, lai apturētu to, ko jūs darāt. Bet iesim cauri to kā grupa. Un atkal, bināro meklēšanu, jums visiem dot man vienu, ja ne vairākas līnijas kodu. Paldies par to. Mēs ejam, lai darīt to pašu Šeit, kods kopā kā grupa. Tātad izvēle kārtot - pieņemsim rakstiet daži ātri pseido-kodu. Per mentālajā modelī, var kāds sniegt man pirmajā rindā pseido-kodu, lūdzu? Ko es gribu darīt? STUDENTU: Kamēr saraksts nedarbosies. Jason Hirschhorn: OK, bet saraksts ir bojātas. Un ko tu domā "ārpus pasūtījuma?" STUDENTU: Kaut [dzirdams] nav sakārtots. Jason Hirschhorn: Kamēr saraksts ir bojātas, ko mēs darām? Dodiet man otrajā rindā, lūdzu, Marcus. STUDENTU: Tāpēc atrast nākamais mazākais skaitlis. Tas tiks atkāpi. Jason Hirschhorn: Tāpēc atrast nākamais mazākais skaitlis. Un tad kāds cits? Pēc tam, kad mēs redzam, nākamais mazākais skaitlis, ko mēs darām? Es esmu gatavojas teikt atrast mazākais skaitlis. Tas ir tas, ko mēs vēlamies darīt. Tāpēc atrast mazāko numuru. Tad ko mēs darām? STUDENTU: [dzirdams] uz sākumu. Jason Hirschhorn: Sorry? STUDENTU: Novietojiet to saraksta sākumā. Jason Hirschhorn: Tātad novietojiet to sākums saraksta. Un ko mēs darām, lai lieta , kas bija sākumā no saraksta, labi? Mēs pārrakstot kaut ko. Tātad, ja mēs uzdodam šo? Jā, Anna? STUDENTU: Kur mazākais skaits bija? Jason Hirshhorn: Tātad nodot sākumu no saraksta, kurā mazākais skaits bija. Tāpēc, kamēr saraksts ir bojātas, atrast mazākais skaitlis, to ievieto sākums saraksta, ielieciet saraksta sākumā, kur mazākais skaits bija. Marcus, jūs varat pārfrāzēt šo līniju kamēr saraksts ir bojātas? STUDENTU: Lai gan skaitļi nav sakārtoti? Jason Hirshhorn: Labi, tāpēc, lai zina, ka skaitļi nav bijuši sakārtoti, kas mums jādara? Cik daudz mums ir nepieciešams, lai iet caur šo sarakstu? STUDENTU: Tāpēc es domāju, cilpa, vai bet, kamēr pārbauda skaits ir mazāks par garumu saraksta? Jason Hirshhorn: OK, tas ir labi. Es domāju, ka es misphrased mans jautājums slikti. Man bija tikai mēģina nokļūt pie Mēs ejam, lai iet cauri visam sarakstam. Tātad, kamēr saraksts ir nedarbojas, man ir grūti karti. Bet būtībā, tas ir kā Es par to domāju. Iet cauri visam sarakstam, atrast mazākais skaitlis, to ievieto sākums - faktiski, tev taisnība. Palūkosimies uz viņiem abiem. Tātad, kamēr saraksts ir bojātas, mēs jāiet cauri visam sarakstam vienreiz atrast mazākais skaits, vieta tā sākumā saraksta, kas iesaiņota sākums saraksta, kurā mazākais skaits ir, un tad, ja sarakstā joprojām nedarbojas, mēs esam got iet caur šo process atkal, vai ne? Tas ir iemesls, kāpēc izvēle kārtot, Big-o Runtime atlases veida, kāds? STUDENTU: n brusas. Jason Hirshhorn: n brusas. Tāpēc, ka, piemēram, Marcus un es tikko sapratu šeit, mēs esam nāksies iet caur sarakstu sarakstu vairākas reizes. Tā iet cauri kaut garums n n reižu skaitu faktiski ir n brusas. Tātad šī ir mūsu pseudocode. Tas izskatās ļoti labi. Vai kāds ir kādi jautājumi par pseudocode? Jo patiesībā atlases veida vajadzētu droši vien nāk viens uz vienu, kodu no pseudocode. Tātad kādi jautājumi par loģika pseudocode? Lūdzu, jautājiet to tagad. Atlase kārtot - kamēr saraksts ir out kārtības, mēs ejam, lai iet caur to un atrast mazāko katru reizi un nodot to priekšā. Tātad, kamēr saraksts ir nedarbojas, var kāds man šo rindiņu kodu, kas man nav devis līnijas kodu vēl, lūdzu? Tas izklausās, ko? STUDENTU: Tas ir cilpa. Jason Hirshhorn: Tas izklausās patīk cilpa. Labi, jūs varat sniegt man par cilpu? Par - STUDENTU: i ir vienāds ar 0. Jason Hirshhorn: i vai - ko mēs trūkst? Kas notiek tieši šeit? STUDENTU: Int. Jason Hirshhorn: Tieši tā. (Int i = 0, - Students: i