[Powered by Google Translate] [Iedaļas 3] [mazāk apmierināti]
>> [Nate Hardison] [Hārvarda]
>> [Tas ir CS50.] [CS50.TV]
>> Labi, pieņemsim sāktu.
Laipni lūdzam uz CS50 4 nedēļas.
Ja jūs puiši atvērt interneta pārlūku un atvērt PSET 3,
Motokross ar CS50, mēs esam gatavojas sākt iet
izmantojot sadaļā jautājumus tur.
Tāpat kā pagājušajā nedēļā, mēs būsim strādā CS50 Spaces,
ja jūs arī vilkt ka uz augšu, kā arī,
un, ja jūs iet uz priekšu un apmeklēt šo saiti, kas man šeit augšā.
Ir pienācis laiks, lai sāktu.
Mēs esam ieguvuši mūsu maz hi programma šeit. Nekas traks.
Viena no pirmajām lietām, ko es gribu darīt ar jums, puiši šodien iet pār daži risinājumi
līdz Problem Set 1 veida risinājumu piemērus,
tikai, lai jūs varētu saņemt justies par to, kāda veida no koda darbinieki ir rakstiski,
kādi kodu, studentiem ir rakstiski,
un tu to apskatīt to, jo es zinu, tas ir dīvaini
kad jūs iesniegt risinājumu problēmai komplektu un saņemt komentārus
uz savu versiju, bet dažreiz tas ir noderīgi, lai redzētu, kā citi cilvēki to darīja,
īpaši tie, kas ir jauka meklē.
Par lielāko daļu, es biju patiesi pārsteigts par risinājumiem, kas jums puiši ražoti.
Man vēl nav sākuši meklē jūsu problēma Set 2S, bet, ja viņi kaut kā pirmais,
tas nozīmē, ka nekas, bet labas lietas.
>> Ja paskatās manu pārskatīšanu, sāksim visu ceļu uz leju pie 1 redakcijas,
un mēs esam gatavojas pieņemt ātri apskatīt Mario risinājumu.
Ja jūs pull šo augšu, šīs programmas, ka mēs ejam iepazīstināt ir pareizi.
Tur nebija pareizības jautājumus ar šīm problēmām, bet gan,
Mēs vēlamies runāt mazliet par dažādām dizaina jautājumiem
kas tika izmantoti šeit.
Viena no lietām, kas bija interesanti par risinājumu
ir tas, ka tā izmanto šo jauno konstrukciju sauc sterliņu noteikt,
dažkārt dēvē arī hash definēt.
Ļaujiet man tuvinātu to šeit.
# Define ļauj iedot nosaukumus šiem jūsu programmā numuriem.
Šajā gadījumā maksimālais augstums piramīdas Mario
bija 23 un nevis liekot 23 manā kods-
mēs atsaukties uz šo kā cieto 23 kodēšanu -
vietā tas dod vārdu MAX_HEIGHT uz šo numuru,
lai noteikti šeit manā do-kamēr cilpa
Jūs faktiski var atsaukties uz MAX_HEIGHT
vietā liekot skaitu 23 collas
[Studentu] Kāda ir to izdarīt, priekšrocības?
Tas ir liels jautājums.
Viens no tiem ir lasāmību.
Izmantot šo # define priekšrocība ir lasāmību.
Kad es lasu šo kodu, es redzu, kas notiek.
>> Es redzu šo nosacījumu, ka mēs esam testēšanas
par augstumu ir <0, kas mēs varētu būt arī definēti
būt minimālais augstums vai min augstums.
Otra priekšrocība ir tā, ka es pēc tam var izlasīt pārējo līniju, lai redzētu
ka mēs esam arī pārbaudes, lai pārliecinātos, ka augstums ir ne lielāks par max augstumu,
jo mēs esam gatavojas turpināt, kamēr augstums ir lielāks nekā maksimālā augstumā.
Otra priekšrocība ir, ja es attālinātu mazliet šeit-
ja man palaist šo programmu, un es palaist to, teiksim, ar 23 tagad,
tas būs izdrukāt visas 23 rindas tieši tāpat.
Bet saku es gribēju mainīt max augstumu,
un tagad es gribu, lai ierobežotu maksimālo augstumu piramīdas
būs tikai teikt-cilvēks, kas bija bailīgs.
# Ietvert , # define MAX_HEIGHT,
un pieņemsim, ka mēs vēlējāmies, lai uzstādītu to vienāds ar 10.
Tagad šajā brīdī, visi man bija darīt bija mainīt šajā vienā vietā.
Es varu recompile kodu, un tagad, ja es mēģinātu rakstīt 12,
tas liks man atkal.
Šajā gadījumā, mēs esam tikai izmantojot MAX_HEIGHT vienreiz.
Tas nav tik liels apgrūtinājumus iet
un mainīt to kamēr cilpa, ja jums nepieciešams.
Bet programmām, kur jūs atsauču pašu burvju numuru
atkal un atkal, tas # define mehānisms ir ļoti parocīgs
jo jūs vienkārši mainīt to vienu reizi augšā failu-tas parasti, ja jūs viņus-
un izmaiņas percolates caur pārējiem dokumentiem.
>> Citas lietas, es gribēju atzīmēt šo cesiju, ka es domāju, izskatījās patiešām jauki,
viens bija nosaucot par mainīgajiem.
Tu redzi, ka mēs esam ieguvuši skaitlim mainīgie sauc rindas un sauc augstumu.
Telpām, hashes, tas palīdz padarīt kodu nedaudz vairāk lasāms,
padara to nedaudz saprotamāku to, kas patiesībā notiek.
Tas ir pretstatā izmantojot, teiksim, nejaušus burtus
vai vienkārši gobbledygook pavisam.
Pēdējā lieta es ņemšu norādīt, ka uz cilpas,
bieži vien šie iterator mainīgie, šie skaitītāji, kas jums izmantot jūsu uz cilpas,
tas ir standarta un parasto sākt tos ar vai nu es, un tad J un pēc tam k
un iet no turienes, ja jums nepieciešams vairāk mainīgie,
un tas ir tikai konvencija.
Ir daudz konvenciju.
Tas ir atkarīgs no programmēšanas valodu jūs izmantojat.
Bet C, mēs parasti sākas ar i.
Tas nav jēgas lietot, teiksim, vai b
atkarībā no situācijas.
Tas ir tas par šo vienu.
Ja jūs tagad uzvilkt Revision 2, jūs redzēsiet citu Mario,
un tas viens ir līdzīgs uz otru, ka mēs tikko redzējām,
bet tas kaut kāda veida atdzist.
Ja mēs skatāmies uz šo sadaļu šeit iekšā iekšējais uz cilpas,
viņi izmanto daži crazy meklē sintaksi tiesības šajā rindā.
To sauc trīskāršo operators.
Tas ir, ja cits paziņojums ietilpināt vienā rindā.
Nosacījums ir šī daļa iekavās.
Tas ir līdzvērtīgi sakot, ja j <augstuma - I - 1.
Un tad ko tad tas saturs, ja bloks būtu esam telpa
un tad no kāda cits būtu saturs ir tas #.
Tas būtībā piešķirot telpu šim mainīgajam.
Tas liekot telpu no bloka mainīgo saturu,
ja šis nosacījums ir izpildīts, un ja nosacījums netiek izpildīts,
tad bloks mainīgais izpaužas šī #.
Un tad, protams, tā vietā veidojot veselu virkni
un drukāšanas viss, beigās šis risinājums izdrukas to veic vienu rakstzīmi laikā.
Diezgan atdzist.
>> Vēl pāris lietas, lai paskatās. Mēs pāriet uz mantkārīgs.
Tagad, ja mēs skatāmies uz mantkārīgs, šis pirmais risinājums
izmanto šos # definē diezgan daudz.
Mēs esam ieguvuši viens nemainīgs attiecībā uz katru no dažādiem numuriem šajā programmā.
Mēs esam ieguvuši vienu centiem uz vienu dolāru, viens ceturtdaļas, dimes, nickels un pennies,
un tagad, ja mēs uz leju un lasīt kodu,
mēs varam redzēt standarta do-kamēr cilpa drukāšanas viss out.
Veida būtība šīs problēmas tika saprotot, ka
Jums nepieciešams, lai pārvērstu pludiņu ka jums lasīt no lietotāja līdz veselam skaitlim
precīzi darīt to math, un tas ir tāpēc,
ar peldošo punktu skaitu, tāpat kā mēs runājām par lekciju īsi,
tas nav iespējams precīzi atspoguļo katru vērtību uz numuru rindā
jo ir bezgala daudz vērtības starp 3 un, teiksim, 3.1 pat.
Jūs varat būt 3.01 un 3,001 un 3,0001, un jūs varat glabāt notiek.
Izrādās, kad jūs strādājat ar naudu, jūs bieži vēlas, lai pārvērstu to
uz veselu formātā, lai jūs nav zaudēt pennies un ka stuff veida.
Izdarīt, un noapaļošanu bija galvenais.
Šis risinājums izmanto perfekti vienkāršs, liels algoritmu,
kas decremented skaitu centiem atlikušo vispirms pa ceturkšņiem,
pēc tam dimes, pēc tam nickels, tad ar pennies,
un pievienojot monētu skaits katru reizi.
>> Vēl viens risinājums, ka mēs redzēsim, kā es to attālināt un pārejiet uz 4 Revision,
bija ļoti līdzīga sākuma, bet tā vietā izmanto div un mod
Tiesības nekā šeit, lai aprēķinātu skaitu centiem.
Tas, ka ceturtdaļas skaits ir vienāds ar skaitu centiem dalīts ar 25,
un iemesls tas darbojas, ir tāpēc, ka mēs darām veselu nodaļu,
tāpēc tas ir izmetot kādu atlikums.
[Studentu] Vai mums komentēt meklēšanu?
Tas patiešām ir atkarīgs.
[Studentu] Jūs komentējot vairāk nav minēts šeit.
Jā, un tāpēc ir ķekars dažādas filozofijas par šo.
Mana personīgā filozofija ir tāda, ka Jūsu kods ir patiešām patiesība,
piemēram, jūsu kods ir kas patiesībā izpildot uz datora,
un tāpēc jūsu kodam vajadzētu būt lasāma kā iespējams, nav pamats tik daudz komentāriem.
Ka teica, ja jūs darāt lietas, kas ir sava veida grūts matemātiski
vai algoritmiski, tas ir labi, lai komentēt tos tā, ka jūs varat
pievienot papildu dimensiju, papildu slānis, lai kurš ir lasījumā savu kodu.
Šajos risinājumos, bieži tās tiek komentēts smagāki tikai tāpēc,
Mēs gribam, lai varētu izplatīt, un tiem ir cilvēki paņemt tos
un lasīt tos diezgan viegli.
Bet noteikti, es piekrītu, ka tas ir smags.
[Studentu] Bet, ja rodas šaubas, iet smagāks?
Ja šaubāties, iet smagāks.
Daži cilvēki reizēm saka atgriešanās 0 vai kaut kas tamlīdzīgs.
Es domāju, ka ir smieklīgs komentārs.
Skaidri, ka tas, kas notiek.
Man nav nepieciešams angļu man pateikt, ka.
Dažreiz cilvēki rakstīt sīkumi, piemēram, "kthxbai!"
Tas ir sava veida gudrs, bet arī ne-
kas nav padarīt starpību starp komentēšanas punktiem vai ne.
Šie komentāri veidi ir tikai ha, ha.
Atdzist.
>> Šajā brīdī, sāksim strādāt par problēma Set 3 sadaļā jautājumiem.
Ja jūs puiši pull šo atkal,
kā ar iepriekšējo nedēļu, mēs nebrauksim, lai noskatītos šorti šajā sadaļā.
Mēs jūs puiši darīt par savu laiku un runāt par jautājumiem.
Bet tagad šajā sadaļā mēs esam gatavojas pavadīt mazliet vairāk laika
runājam par mazāk kodēšanas pamati
tāpat mēs pagājušajā nedēļā, un tā vietā, mēs esam gatavojas koncentrēties vairāk uz
mazliet vairāk par teoriju, tāpēc runāt par bināro meklēšanu un pēc tam šķirošana.
No tiem no jums, kas ir pēc kopā ar lekciju,
var kāds man Atgādinājums par kāda atšķirība ir
starp bināro meklēšanas un lineāru meklēt?
Kas notiek? Pārliecināts.
Linear meklēšanas meklējumi caur katra elementa sakārtotās sarakstā
pa vienam pa vienam ar pa vienam,
un bināro meklēšanu sadala sarakstu 2 grupās,
pārbaudes ja atslēgas vērtība, kas jūs meklējat, ir lielāks vai mazāks nekā viduspunktā vērtība
ka jūs vienkārši atrast, un, ja tas ir mazāk nekā, tā iet ar zemāku sarakstu
un tad dala, ka atkal tas pats funkciju
galam, līdz tā atrod viduspunktā ir vienāds ar vērtību pati.
Tiesības.
>> Kāpēc mēs rūpējamies?
Kāpēc mēs runājam par bināro meklēšanu, salīdzinot lineāru meklēt?
Yeah.
Binārā ir daudz ātrāk, tādēļ, ja jūs dubultā problēmas apjomu
tas aizņem vēl vienu soli, nevis divreiz vairāk.
Tieši tā.
Tas ir lielisks risinājums.
Lineārā meklēšana ir ļoti pārbaudot vienu elementu laikā,
un kā mēs redzējām ļoti pirmajā dienā lekcijā
Dāvids gāja caur viņa tālruņa grāmatu Piemēram
un izvilkts vienu lapu no tālruņu grāmatas laikā
un tur dara, ka atkal un atkal un atkal,
tas notiek, lai viņam ļoti ilgu laiku, lai atrastu kādu, kas tālruņu grāmatā,
ja vien, protams, viņš meklē kādu pašā sākumā alfabēta.
Ar bināro meklēšanu, jūs varat iet daudz ātrāk,
un tas nav tikai divreiz ātrāk vai 3 reizes ātrāk vai 4 reizes ātrāk.
Bet problēma kļūst mazākas un mazākas un mazākas daudz ātrāk.
Lai to ilustrētu, mēs sākam runāt par to, kas notiek
kad mēs rakstīt bināro meklēšanu.
Pie rokas problēma ir tā, ka, ja man ir masīvs numuru,
saka, 1, 2, 3, 5, 7, 23, 45, 78, 12.323,
un tad 9 ar ton 0S pēc tā,
Mēs vēlamies, lai varētu izdomāt tiešām ātri to, kas ir
Šis masīvs numuriem.
Es zinu, tas šķiet mazliet muļķīgi un mazliet izdomāts,
jo šobrīd tā ir.
Mums ir masīva, kurā nav ļoti daudz elementu tajā,
un, ja es aicinu kādu no jums, lai noskaidrotu, vai nav
23 ir masīvā, jūs varat darīt, ka diezgan ātri
vienkārši glancing šo un stāsta man jā vai nē.
Analogās uz jāapsver, ir iedomāties, ja tas tā būtu, teiksim,
Excel izklājlapu ar 10000 rindām, 20000 rindas.
Protams, jūs varat darīt komandu F vai kontroles F un meklēt kaut augšu.
Jūs varat arī izmantot filtrus un meklēšanas sīkumi,
bet, ja jums bija meklēt caur šo failu pozīcijai pa līniju,
tas tevi ilgs laiks, lai atrastu to.
Tas ir veids, piemēram, tālruņa grāmatu, piemēram, pārāk, ja
neviens izskatās caur telefona grāmatu vienā lappusē laikā.
Raksturīgi, viņi atver to vidū,
vai gadījumā, daudz telefona grāmatas un vārdnīcas kur
jums tiešām ir tā keyed uz pirmo burtu,
Jūs uzsist uz šo pirmo burtu un atvērt un sākt iet cauri tur.
>> Atgādināt man par savu vārdu vēlreiz. >> Sam.
Sam.
Tāpat kā Sam teica, ka lineārs meklēšanas process būs ļoti lēns,
un tā vietā ar bināro meklēšanu, kā tas darbojas, ir, ka
Katru reizi, kad mēs iet caur atkārtojuma mūsu meklēšanas algoritmu,
mēs spēsim sadalīt sarakstu uz pusēm, būtībā,
divos mazākos sarakstos.
Un tad nākamajā atkārtojuma no cilpas, mēs sadalīt to vēlreiz
citās mazākās sarakstos.
Kā jūs varat redzēt, ka problēma tur kļūst mazākas un mazākas
jo mēs turam izmetot pusi no saraksta katru reizi.
Kā tas jāizlej darbojas?
Tāpat kā atgādinājums, ko mēs gatavojamies darīt, ja mēs datoru
un mums bija, teiksim, meklējot numuru 5 šajā sarakstā
ir tas, ka mēs varētu izvēlēties numuru vidū.
Vidū šajā sarakstā, jo ir 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 numuri,
mēs gribētu izvēlēties numuru vai nu pēc gada 4 pozīcijā vai ar 5 pozīciju,
un mēs gribētu aicināt šo vidū mūsu sarakstā.
Pick numuru vidū.
Tad, tāpat kā Sems teica, mēs pārbaudīt, lai redzētu, ja šis skaits ir vienāds
uz numuru ka mēs vēlamies, lai iegūtu vai mūsu vēlamo numuru.
Ja tas ir vienāds, tad mēs esam noskaidrojuši to. Mēs win.
Ja tas nav vienāds, tad ir pāris gadījumu.
Abas lietas ir vai nu skaits ir lielāks nekā skaits, mēs esam meklē,
vai tas ir mazāk nekā.
Ja tas ir lielāks, mēs virzāmies uz labo pusi.
Un, ja tas ir mazāk, mēs virzāmies uz kreiso pusi.
Un tad mēs atkārtot visu procesu no jauna
vai nu labajā pusē vai kreisajā pusē sarakstā.
>> Pirmā problēma šodienas sadaļā ir izdomāt
kā mēs faktiski var sākt izteikt šo C kodu.
Mēs esam ieguvuši pseudocode šeit.
Ko mēs sāktu darīt, ir es uzvilkt pavisam jaunu telpu,
saglabājiet šo pārskatīšanu, lai mums ir šīs piezīmes vēlāk,
mēs izdzēstu visu, un tad nokopēt un ielīmēt no problēmas komplekta
Šī mūsu telpās informāciju, un cerams, ka tas nav pārtraukumu.
Perfekta.
Ja jūs puiši visu darīt, kopēt un ielīmēt šo kodu savā jaunajā telpā,
tukšu vienu.
Mēģināsim Daniel. Ja jūs sastādīt un palaist šo programmu, tas darbojas?
Nē. >> Ko tas saka?
Tajā teikts vadības sasniedz beigu bez spēkā neesošu funkciju.
Yeah, tāpēc ļaujiet man mēģināt rādīt to.
Vai jums puiši redzējis šo pirms? Vai jūs zināt, ko tas nozīmē?
Labi, pieņemsim preparēt šo mazliet.
Tas ir saprotams pie file.c uz līniju 9 slejas 1 Mums ir kļūda, tāpat kā jūs teicāt,
un tā saka, ka tas izriet no kļūdu brīdinājuma un atgriešanās tipa brīdinājumu.
Izskatās, ka kaut kas notiek ar atgriešanās veidam, kas ir jēga.
Mēs esam ieguvuši ārpus neesošu funkciju, kas nozīmē, ka mēs esam ieguvuši funkcijas
ka neatgriežas tukšumu.
Anulēts funkcija ir viens, kas izskatās šādi:
anulēts foo (), un tas ir spēkā, jo atgriešanās tips nav spēkā,
kas nozīmē, ka, ja mums būtu kaut kas šeit
piemēram, 1 atpakaļ, mēs gribētu saņemt kompilatora kļūdu par šo.
Tomēr, mums ir ne-void funkcija.
Mūsu non-neesošu funkcija šajā gadījumā ir mūsu meklēšanas funkcija
jo tā ir atgriešanās veidu bool.
Kad tas ir saprotams, ka kontroles sasniedz beigām bez spēkā neesošu funkciju,
tas ir tāpēc, ka meklēšana nav atgriešanās paziņojumu.
Tas neatgriezīsies neko tipa bool.
>> Mēs varam noteikt, ka, un ko jūs guys domā
meklēšana būtu atgriezties pēc noklusējuma?
Kāda būtu noklusējuma atgriešanās vērtību meklējumos?
Jo tas, ko mēs varam likt beigās.
Šarlote, vai jums ir kāds,?
Patiess vai nepatiess >> Patiess vai nepatiess?.
Kurš?
Nepatiesa. Es nezinu.
Nepatiess? Mēģināsim to.
Kāpēc jūs teikt atgriezties viltus? Tas ir lieliski intuīcija.
[Šarlote] Es nezinu.
Mēs ejam, lai atgriezties viltus šajā gadījumā, jo tas būs mūsu noklusējuma
ja kāda iemesla dēļ saraksts ir tukšs vai adatu
ka mēs meklējam neeksistē.
Tad pašās beigās, ja mēs atgrieztos taisnība agrāk šo funkciju,
mēs vienmēr zinām, ka šī funkcija teiks nē, tas nav masīvā.
Tas nav siena kaudzē.
Tagad, ja mēs apkopotu un palaist to, ļaujiet man saglabāt to, lai mēs varētu vilkt to uz augšu.
Tagad, ja mēs apkopotu un palaist savu programmu, tas uzkrājas.
Mēs mūsu maz uzvedni.
Ja es hit 4-UH-oh.
Tā nav izdrukāt neko. Izskatās viss beidzās labi.
Mēs esam ieguvuši, lai aizpildītu šo collas
Mēs runājām par algoritms pseudocode mazliet atpakaļ.
Ļaujiet man redzēt, izņemot to,
un es ņemšu pull, ka algoritms atpakaļ atkal.
Pieņemsim skārusi šo puisis. Nope.
Tur tas ir.
Kā mēs to darām?
Kāda būtu laba stratēģija, sākot off šo kodu?
Jums ir izvēlēties skaitli vidū.
Kā mēs izvēlēties numuru vidū masīva?
Kādi ieteikumi?
[Studentu] strlen dalīts ar 2.
Strlen dalīts ar 2. Tas ir liels vienu.
Strlen strādā ar īpašām veidu blokus.
Kādas masīviem?
Stīgu masīvi, raksturs masīvi.
Tas ir tas pats veida koncepciju, ka mēs vēlamies piemērot,
bet mēs nevaram izmantot strlen jo mums nav masīvs rakstzīmes.
Mums ir masīvs Ints.
Bet ko strlen saņemt par mums?
Vai jūs zināt, ko tas izpaužas mums?
[Studentu] strlen izpaužas mums garumu.
Tieši tā, tas izpaužas mums garumu.
Strlen izpaužas garums masīva mums.
>> Kā mēs varam iegūt, ka mūsu binārās meklēšanas programmu?
Kā jūs saņemsiet garumu masīva?
[Studentu] strlen?
Jūs varat saņemt garumu pareizi formatēta C stīgu masīva ar strlen.
Problēma, lai gan, ir tas, ka mums nav virknes masīvs.
Ja mēs atskatāmies uz šo kodu, mums ir šis veselais masīvs.
Kā mēs zinām, cik ilgi tas ir?
[Studentu] Vai ir līdzvērtīgs viena parametra, piemēram, int l vai kaut ko?
Izrādās, ka patiesībā nav, un tāpēc tādā veidā, tas ir
viena no tām lietām, kas ir tikai labi zināt par C,
ka nav veids, kā iegūt garumu masīva
ja viss, ko es dot jums ir masīvs.
Iemesls tas darbojas ar stīgām, iemesls strlen darbi,
ir tāpēc, ja virkne ir pareizi formatēts,
tas ir, ka īpaša \ 0 raksturu pašās beigās.
>> Jūs varat arī iedomāties, ja jums ir nepareizi formatēts virkni
un tur nav \ 0 raksturs tur, tad viss nedarbojas.
[Studentu] Vai jūs pievienot \ 0?
Mēs varētu šajā gadījumā.
Mēs varētu pievienot dažas veida 0 \
vai daži no nozīmētu raksturu un pēc tam kārtot izmantot.
Bet tas nav gluži iet uz darbu
jo \ 0 ir par char tipa,
un šeit mēs esam ieguvuši Ints.
Otra lieta ir, ja mēs izmantot īpašu vērtību
piemēram -1 līdz atzīmētu beigām masīva
tad mēs varētu nekad glabāt -1 mūsu skaitlim masīvi.
Mēs gribētu būt iestrēdzis.
Izrādās, ka vienīgais veids, kā iegūt garumu
gada masīva C ir faktiski atcerēties
kad jūs to uz augšu un pēc tam nodot to apkārt ar masīva
tāpēc, ka, ja man ir funkcija, kas gatavojas darīt kādu darbu
uz vairākām integers vai pludiņiem vai dubultspēlē vai ko jūs,
Man arī vajadzētu dot funkcija Array garuma,
un tas ir tieši tas, ko mēs esam darījuši šeit meklēšanas funkciju.
Ja paskatās, ko mēs esam darījuši, kad mēs iet mūsu masīvs šeit,
mēs arī iet garumā, izmērs.
Tā vienkārši gadās, ka mēs esam nosaukuši šo mainīgo šeit,
Šis parametrs vai arguments.
To sauc funkciju arguments sarakstu vai parametru sarakstā,
un tie ir arī sauc argumentus vai parametri.
Cilvēki izmanto dažādus terminus dažādos laikos.
Es dažreiz mijas viņiem sevi.
Tas tikai tā notiek, ka šis mainīgais šeit ir nosaukta līdzīgi
līdz šī # definēt šeit.
Bet viņi nav tas pats.
Kapitalizācijas nav jautājums.
>> Ja paskatās, kas notiek šeit, mēs paziņojam
Mūsu int masīvs, ko mēs esam sauc numuriem.
Mēs esam izdarījusi mūsu izmēra, kas atbilst mūsu # definēt augšā.
Tas būs 8.
Un tad, kad mēs tam saucam mūsu meklēšanas funkciju zemāk,
mums iet skaita mēs vēlamies, lai meklētu, ko mēs esam tiek prasīts,
gotten no lietotāja.
Mums iet masīvā, šo skaitu,
un tad mums ir arī iziet ar izmēru masīva,
un tad 8 izmēra vērtība izpaužas uzglabā
vai nodots šim skaitlim mainīgo sauc lielumu.
Mums ir ārpus masīva.
Tagad, ja mēs ejam atpakaļ uz to, ko mēs runājām par agrāk,
Es domāju, Missy audzināti domu, ka to, ko mums vajadzēja darīt, ir iegūt garums masīva
un sadalīt to ar 2, un kas dos mums viduspunktā.
Pieņemsim redzēt.
Vai man ir kāds rakstīt šo un saglabājiet to savā telpā?
Kā par Leila?
Vai man ir rakstīt šis?
Uzrakstiet pirmo līniju, kur jūs lietojat garums masīva un saņemt viduspunktā
un uzglabāt to jaunā mainīgā.
Es jums pāris sekundes. Vai esat gatavi?
[Studentu dzirdams]
Protams, es varētu būt jums aprēķināt viduspunktā
no siena kaudzē masīvs iekšpusē meklēšanas funkciju
izmantojot garumu siena kaudzē masīvs, kas ir lielums mainīgs?
Nekas grūts šeit.
[Leila] Tikai izmērs / 2 un tikko
Un saglabājiet to, un hit pogas Saglabāt šeit augšā,
un mēs velciet to uz augšu.
Perfekta.
Tur mums iet. Awesome.
>> Kā ir, vai tas sastāda?
[Leila] Nē, tas ir lielāks.
[Nate] Jā, lai to, ko mums vajag darīt?
[Leila] Tāpat int viduspunktā vai kaut ko.
Awesome. Jā, pieņemsim darīt, int viduspunktā = lielums.
Vai tas apkopotu?
Pieņemsim dzēst šo komentāru, un saņemt to no ceļu.
Kas netiek sastādīt par šo?
Mēs nedarām neko ar skaitlim,
tāpēc mums ir nepieciešams, lai izdrukāt vai kaut kas tamlīdzīgs.
Jā, tieši tā.
Mēs saņemt neizmantoto mainīgo.
Kas vēl nav dodas uz darbu par šo?
Es domāju, ka jūs kaut ko teica, Sam. Semikoliem.
Jā, es esmu trūkst šos semikoliem.
Tas būs nemainīga lieta gaitā termiņa.
Pēdējā lieta es darīšu, ir Es nolikšu daži atstarpēm abās pusēs
Šīs operators šeit, jo tas parasti kā mēs to darām
saskaņā ar mūsu style guide.
Mēs esam ieguvuši viduspunktā mūsu masīvs.
Tagad, ja mēs atceramies atpakaļ uz mūsu algoritma,
kāda bija otrais solis, kas mums bija jādara, kad mums ir viduspunkts?
[Studentu] Ja tas ir lielāks [nedzirdama].
Yeah, tāpēc mums ir jādara kaut kādas salīdzināšanas, un ko mēs salīdzinot šeit?
Jūs teicāt, ja tā ir lielāka nekā. Kas tas ir, šajā teikumā atsaucoties uz?
Numuru, kas nāk uz augšu, ja tas ir lielāks par viduspunktu, tad aiziet līdz masīva?
Tieši, to skaits, kas nāk uz augšu, ja mēs-
Adata, tāpēc mēs esam, salīdzinot ar adatu,
un ko mēs salīdzinātu pret adatas?
Jo adata ir tas, ko mēs meklējam.
Mēs esam salīdzinot to nokļūt līdz viduspunktā.
>> Bet vai ir jēga pārbaudīt, lai redzētu
ja adata = viduspunkts?
Vai ir jēga?
Vai kāds nepiekrīt?
Pieņemsim pamēģināt, ja (adata == viduspunktā).
[Studentu] Vai printf jums atrast to.
[Nate] printf ("Mēs atklājām to \ n!");
Citādi-I'm gatavojas sākt darīt kaut ko citu šeit.
Es esmu gatavojas sākt liekot breketes apkārt, ja paziņojumus visu laiku
tikai tāpēc, ja mēs pievienot vairāk stuff, tad
mums nav iegūt kompilatoru.
Yeah, Sam. Tev taisnība.
Problēma ir tā, ka viduspunktā pārstāv pozīciju masīvā,
bet jūs varat saņemt to pārstāvēt vērtību šādā stāvoklī masīva.
Tas ir liels jautājums.
Vai ikviens dzirdēt Sems teica?
Viņš teica, ka viduspunkts kā ir
atspoguļo tikai pozīciju masīvā, bet tas nav faktisko elementu masīvā.
Ja jūs domājat par kodu kā tas rakstīts tieši tagad,
ja mēs skatāmies uz šo masīvs šeit lejā, kas ir 8 elementi tajā,
kāda ir viduspunkts būs šo funkciju vērtība?
[Studentu] 4.
[Nate] 4.
Ja mēs skatāmies uz numuru 4 -
un mēs varam tikai palaist šo kodu un nodot nedaudz skumjš sejas šeit
jo mēs neatradām to-ja mēs palaist šo kodu
kā ir šobrīd, augšupielādējot to, ēka, ļaujiet man ritiniet uz leju,
un ja mēs skatāmies uz numuru 4,
mēs atradām, bet mums nav iegūt šo printf jā.
Viens no iemesliem ir, ka mēs neatgriezās taisnība,
bet vai mēs patiešām atrast numuru 4?
Un Sam saka nē.
Ko mēs redzam?
Mēs tiešām konstatēja viduspunktā, kas, ja mēs skatāmies no masīva leju šeit,
tas būs elements ir 4 indeksa ka mēs meklējam,
kas ir 23.
>> Kā mēs faktiski iegūtu šo elementu viduspunktā
un ne tikai viduspunkts pati?
[Studentu] Mēs stāsies char vai kaut ko?
Kas būtu, ka darīt, tikai no zinātkāri?
Vai jūs varat izstrādāt mazliet vairāk?
Jums ir pārveidot pozīciju vērā skaitu,
lai jums veikt dažas savienojuma Es domāju, ka tas palija, bet tā varētu būt.
Jā, tas ir labs punkts.
Mēs esam bijuši dara daudz šo konvertējošā pozīciju vērā chars, šīs zīmes,
pirmajās divās problēmu kopas.
Izrādās, ka šeit tas ir gandrīz līdzīgs
piekļūstot kārtējam raksturu laikā virknē, ja tas ir jēga.
Šeit mēs gribam, lai piekļūtu viduspunktu elementu.
Kā mēs to darām?
Kevin, vai jums ir kādi ierosinājumi, kā mēs varētu darīt?
Jūs varētu darīt siena kaudzē, atvērta kronšteinu, vidū, slēgta kronšteinu.
Vai jūs varat rakstīt, ka mums?
Saglabājiet to šeit, un mēs pull, ka uz augšu.
Mēs esam meklē šajā līnijā 9,
un mēs esam saprotot, ka mēs negribam salīdzināt adatu viduspunktu,
bet tā vietā, mēs vēlamies, lai salīdzinātu adatu
līdz elementā pozīciju viduspunktā laikā mūsu siena kaudzē masīvs.
Atdzist.
Tur mums iet.
Yeah, ka izskatās diezgan labi, ja (adata == Haystack [viduspunktā]).
Mēs atradis.
Tagad, ja mēs palaist kodu we'll atpakaļ uz augšu mazliet,
tas apkopo, tā darbojas, un tagad, ja mēs skatāmies uz 4,
Mēs neatradām, jo ​​tagad mēs esam faktiski kļūst numuru 23.
Mēs esam kļūst vērtība 23, un tas, ko mēs esam, salīdzinot ar mūsu adatu.
Bet tas ir labi. Tas ir solis pareizajā virzienā.
>> Ka tas, ko mēs cenšamies darīt.
Mēs nemēģinām salīdzināt adatu pret pozīcijām masīva
bet gan pret faktiskajiem elementiem masīvs.
Ja mēs atskatāmies atkal tagad nākamo soli mūsu algoritms,
kāda ir nākamais solis?
Leila jau minēts tas īsumā.
[Studentu] Pārbaudiet, vai tas ir lielāks vai mazāks nekā un tad izlemt, uz kuru pusi virzīties.
[Nate] Jā, tā kā būtu mēs darīt?
Vai jūs varat ievietot kādā-I'll saglabāt šo pārskatīšanu,
un tad, ja jūs nodot dažas līnijas, kas būs jādara.
Jā, Šarlote >> man ir jautājums..
Nevajadzētu tā būt viduspunktam - 1, jo pirmā lieta ir
tas 0 indeksētas, tāpēc, ja mēs ieliekam 4, tas nav faktiski raksturs mēs meklējam?
Jā, un otra problēma, kas ir-
tas liels nozvejas, jo to, kas notiek, lai galu galā notiek, iespējams
ja mēs pastāvīgi pārvietojas un mēs kādreiz pielāgot sākotnēji?
Es domāju, ko mēs varētu galu galā dara mēģina piekļūt
elementa pie 8. pozīciju masīva,
kas šajā gadījumā nepastāv.
Mēs vēlamies darīt kaut kādas uzskaites faktu
ka mums ir dažas nulles indeksācija.
[Šarlote] Atvainojiet, es gribēju viduspunktā - 1 kvadrātiekavās.
Mēs varam darīt.
Mēs atgriezīsimies pie šī jautājuma, tikai mazliet.
Tiklīdz mēs sākam to faktisko looping,
tas ir, kad mēs patiešām redzam stājas play.
Pagaidām, mēs varam darīt, bet tu esi pilnīgi taisnība.
Ka nulles indeksācija būs ietekme, kas mums ir nepieciešams, lai uzskaitītu.
Pieņemsim redzēt.
>> Cik ir lielāks un mazāks nekā?
[Studentu] man kā to izdarīt lielāks un mazāks nekā daļu.
Es vienkārši nebiju pārliecināts, ko drukāt, ja jūs konstatējat, ka tas ir mazāk nekā siena kaudzē viduspunktā vai lielāka.
Šeit es varētu saglabāt to, ko I've-
[Nate] Jā, ja jūs saglabāt to, ko jūs esat ieguvuši, un mēs velciet to uz augšu.
Tur mums iet.
[Studentu] Un man jautājuma zīmes par to, ko es nezināju.
[Nate] Tas izskatās lieliski.
Šeit mēs esam ieguvuši jautājuma zīmes, jo mēs vēl nezinām
ko mēs gatavojamies gluži darīt vēl.
Ko mēs vēlamies darīt-Ups, mēs esam ieguvuši dažas lencēm visiem bailīgs uz mums.
Mēs labot šos lencēm.
Tur mums iet.
Un, lai ko mēs vēlamies darīt, saskaņā ar mūsu algoritma,
ja mēs nevaram atrast adatu?
Say gadījumā ka adata ir mazāks nekā tas, ko mēs meklējam, ir. Kevin.
Tikai apskatīt kreisajā pusē.
Labi, tāpēc mēs likts komentāru šeit, kas saka "apskatīt kreisajā pusē."
Un, ja adata ir lielāks nekā siena kaudzē pie viduspunktā, ko mēs vēlamies darīt?
[Studentu] Tad jums apskatīt labajā pusē.
Paskaties labajā pusē, "apskatīt labajā pusē."
Ne pārāk nobružāts.
Labi, tāpēc šajā brīdī, lietas, meklē diezgan laba.
Ar kodu, kā rakstveida problēma ir tas, ko?
[Studentu] Jums nav mērķa kritērijus pusītes.
Labi, mums nav mērķa kritērijus pusītes.
Mēs arī tikai gatavojas iet caur šo vienu reizi.
Mēs esam tikai gatavojas apskatīt vienu viduspunktā.
Nu elements ir tur, vai arī tas nav.
Lai pabeigtu, mums būs nepieciešams veikt dažas veida atkārtošanās.
Mums ir nepieciešams, lai saglabātu atkārtojot, līdz mēs redzam, ka
nu elements ir tur, jo mēs esam sašaurināts leju un beidzot atradis,
vai tas nav tur, jo mēs esam paskatījās cauri visām lietām
attiecīgajās pusītes masīva un konstatēja, ka nekas nav tur.
>> Ikreiz, kad mēs esam ieguvuši šo atkārtošanās notiek, ko mēs gatavojamies izmantot?
[Studentu] cilpa.
Kaut kādas cilpas. Jā.
[Studentu] Vai mēs do-kamēr cilpa, un ir to darīt un tad, kamēr
adata nav vienāds-I'm nav pārliecināts, kur man bija iet ar to.
Bet kaut kas līdzīgs darīt, kamēr tā nav vienāda vērtība, lietotāja ievadi.
Yeah, tāpēc pieņemsim redzēt, kā tas varētu uzrakstīt pati?
Jūs teicāt pieņemsim izmantot do-kamēr cilpa.
Kur tas jādara sākt?
[Studentu] Uzreiz pēc izmēra / 2.
[Nate] Labi, un ko mēs gatavojamies darīt?
Mēs aizpildiet brītiņa vēlāk.
Ko mēs darīsim?
[Studentu] Vai nav mēs vēlamies darīt visu stuff mums ir IF daļu?
[Nate] Vai visu šo stuff, lieliski.
Kopēt un ielīmēt.
Ak, cilvēks.
Redzēsim, vai tas darbojas, ja mēs varam tab šo pāri.
Skaisti.
Labi, un mēs saglabājam šo, lai jūs puiši ir tā.
Labi, un mēs gatavojamies darīt, bet-
kāda bija, kamēr nosacījums bijāt pēc?
[Studentu] Kaut adata nav vienāda, tāpēc, piemēram, izsaukuma zīme.
Bet es neesmu pārliecināts, ko tieši tas ir vēl.
[Nate] Jā, tas ir viens no veidiem, kā to darīt.
Sam, jums ir komentārs?
[Sems] Es atcerējos, kad es paskatījos video,
Paņēmu screenshot viens no-piemēram, kad mēs to darīja pseudocode par to,
pastāv saistība starp max un min attiecības.
Es domāju, ka tas bija kaut kas līdzīgs, ja max ir arvien mazāk nekā min.
Dabūja to.
[Sems] Vai patīk, ja max ir ne mazāka nekā min vai kaut kas tamlīdzīgs,
jo tas nozīmētu, ka esat meklējis visu.
>> Jā, lai to, ko tas izklausās max un min tika atsaucoties uz?
[Sam] Vērtības, ka-integers, kas gatavojas mainīt
relatīvs, kur mēs ieliekam viduspunktā.
Tieši tā.
[Sems] Tajā brīdī, tas notiek, lai [dzirdams] aprēķināt max un min.
Viduspunktā tas max un min ideja.
Vai tas ir jēga, lai ļaudīm?
Ja mēs sākt meklēt, kā mēs gatavojamies darīt atkārtojuma,
tu esi pilnīgi pareizi, ka mēs vēlamies izmantot kādu no do-kamēr cilpa.
Bet es domāju, ja mēs atceramies to, kas notiek pie vietas šī masīva
un to, kas patiesībā notiek, I'm gatavojas rakstīt nekā šeit-
pie pašas pirmās atkārtojuma bināro meklēšanu, mums ir-
Es esmu gatavojas izmantot B un E, lai apzīmētu sākumā.
Un tad beigas mūsu masīvs.
Mēs zinām, ka sākums ir 4 labi nekā šeit,
un mēs zinām, ka gals ir pie 108.
Saka, ka mēs esam meklējot numuru 15.
Pirmo reizi mēs to darām, kā mēs redzējām agrāk,
viduspunktā ir vai nu būs būt 16 vai 23
atkarībā no tā, kā mēs aprēķinām lietas.
Tā vienmērīgi sadalot pa vidu dotu mums šo vietu
no 16 līdz 23, mēs nevaram vienmērīgi sadalīt to
vai sadalīt to un saņemt pie patiess viduspunktā.
Mēs apskatīt 16.
Mēs saprotam "Hei, 16> 15, ka mēs meklējam."
Lai pēc tam apskatīt kreisajā pusē masīva
ko mēs galu galā darīt ir izmetot
Tas viss augšējā daļa
un saka: "Labi, tagad mūsu rezultāts būs šeit."
Nākamais evolūcijas mūsu cilpas, mēs šobrīd meklē šī masīva,
efektīvi, kas izmet šo daļu, jo tagad
ja mēs esam ņemot viduspunktā kā starpība starp sākuma un beigu,
mēs atrast mūsu viduspunktā ir 8,
ko tad mēs varam pārbaudīt 8 lai redzētu, kur tas atrodas attiecībā pret skaitu mēs meklējam,
15, atrast, ka 15 ir lielāks,
tāpēc mums ir jāvirzās uz labo daļu sarakstā,
ko mēs zinām, jo ​​mēs esam cilvēki, un mēs varam redzēt to.
Mēs zinām, ka tiesības daļa būs, kur mēs atrast,
bet dators nezina, ka, lai to, ko mēs darīsim, ir mēs tiešām
ir tas iet uz augšu, un tagad sākums un beigas
ir tajā pašā vietā, tāpēc viduspunktā kļūst par vienīgo numuru sarakstā šajā brīdī,
kas ir 15, un mēs esam noskaidrojuši to.
Vai tas nelielu ieskatu par to, kur tas viss max un min notāciju notiek,
sekotu no masīva galapunktiem, lai noskaidrotu
kā sašaurināt lietas leju?
>> Kas notiktu, ja tas tā nav vienāda ar 15 tagad?
Ko darīt, ja mēs meklējam 15 un tā vietā, šis skaitlis arī bija 16?
Mēs gribētu teikt: "Ak, tas ir lielāks.
Mēs gribam doties atpakaļ uz kreiso. "
Un mēs gribētu pārcelties mūsu e pa labi,
kurā brīdī mums ir vērtētais kas būtu pretrunīgi.
Tas nevarētu meklēt kādu vairāk elementiem
jo tagad mums ir mūsu vērtētais un mūsu sākuma punktu,
Mūsu max un mūsu min, tagad Pagriezts.
Mēs meklēt pa visu masīvs. Mēs nevaram atrast neko.
Tas ir brīdis, kad mēs gribētu gribu teikt: "Labi, mēs ejam, lai apturētu šo algoritmu.
Mēs esam nav atrasts neko. Mēs zinām, tas nav šeit. "
Kā tas notiek?
[Studentu] Kā tieši tas dators pāriet beigām?
Kā beigu beigās pirms sākuma?
Gals beidzas pirms sākuma
jo matemātiku ka mēs gatavojamies darīt katru reizi, kad mēs to izdarītu.
Veids, kā mēs swap ir, ja paskatās ļoti pirmo reizi mēs šo swap
kur mums ir pie 4 sākumu un beigas
viss uz leju pie 108 ceļu un mūsu viduspunktā, teiksim, 16 gadu vecumā -
Es esmu gatavojas, lai atjaunotu šo atpakaļ uz 15, ja mēs meklējam 15 dalībvalstu,
Mēs zinājām, ka to, ko mēs darījām, kad mēs pārbauda 16 un redzēja, ka tā bija lielāka
un vēlējās atbrīvoties visu labo daļu sarakstā,
Mēs redzējām, ka tas, ko mēs vēlējāmies darīt, ir pārvietot šo e šeit.
Faktiski, e got pārcēlās pirms viduspunktā vienu.
Tāpat, ja mēs šo iterāciju algoritma
un viduspunktā bija 8,
mēs noskaidrojām, ka 8 <15, tāpēc mēs vēlējāmies, lai pārvietotu b
1 garām viduspunktā.
Tagad, sākums un gals ir gan kopā 15 šīs.
>> Ja mēs gribētu noticis meklēt kādu citu vērtību, nevis 15,
vai, ja šis 15 ir nevis bijis 16,
mēs būtu konstatēts, ka e mēs vēlamies, lai pārvietotu vienu pirms viduspunktā.
Tagad e būtu tur Pagriezts mazāks nekā b.
Apskatīsim, kā mēs tiešām galu galā kodēšanas šo algoritmu.
Mēs zinām, ka mēs vēlamies, lai šī viduspunktā aprēķinu.
Mēs zinām arī to, ka mēs vēlamies, lai izsekotu sākumu un masīva beigām
Mūsu pašreizējo masīvs, lai mēs varētu izrēķināt
ja tas kreiso pusi no saraksta ir un kur labajā pusē no saraksta ir.
Mēs darīt ar nu sākas un beidzas,
vai mēs varam viņiem piezvanīt min un maks.
Es izmantot sākas un beidzas šo laiku.
Kad mēs sāktu, ja mēs atskatāmies uz mūsu piemērā šeit lejā,
Mūsu sākums tika noteikts paša sākuma masīvs, kā dabas.
Kas indekss bija tas? Kas būtu mūsu jāsāk būtu?
Daniel.
[Daniels] Haystack [0].
[Nate] Jā, lai mēs to varētu vienāda ar siena kaudzē [0].
Problēma, lai gan, ir, ka tas dod mums nav nostāju pirmā elementa.
Tas dod mums indekss pirmā elementa vai faktisko vērtību tajā pirmajā pozīcijā.
[Studentu] Tas būs konvertēt uz 0,20?
[Nate] Ko tas būs jādara, ir-labi, tas nav darīt jebkuru konvertēšanu.
Ko tas būs jādara, ir tas veikals ar 4 no sākuma,
un tad tas būs grūti, lai salīdzinātu pret sākas
jo sakt rīkos vērtību 4,
kas ir sākums mūsu masīvs,
bet mēs vēlamies, lai izsekotu indeksus masīvā
nevis vērtībām.
Mēs faktiski izmantot 0, tāpat.
Gada beigās masīva-Šarlote cēla šo up mazliet agrāk.
Tas ir, ja mēs ņemtu vērā nulles indeksācija.
>> Šarlote, kas ir beigu masīva?
Kas ir beigu rādītājs?
[Šarlote] Size - 1.
Yeah, un kuras izmērs mums vajadzētu izmantot?
Mums vajadzētu izmantot kapitāla lielumu vai mazos izmēru?
Kapitāla lielumu.
Šajā gadījumā, mēs varētu izmantot kapitāla lielumu.
Ja mēs vēlējāmies šī funkcija būtu pārnēsājamas
un izmantot šo funkciju citās programmās,
mēs faktiski var izmantot mazajam izmēram.
Tas ir labi too.
Bet Šarlote ir pilnīgi pareizi, ka mēs vēlamies, lai būtu izmērs - 1.
Šajā brīdī,
[Studentu] Kā tas ir, ka jūs varat izmantot lielo izmēru?
Kā tas ir, ka mēs varētu izmantot lielo izmēru?
Izrādās, ka šie # definē ir tiešām,
ar kapuci, dokumentu kā atrast un aizstāt, ja tas ir jēga.
Kad jūs sastādīt savu kodu, preprocessing posms
no kompilatora iet caur failu,
un tā meklē visur, ka jūs esat rakstiski kapitāla lielumu,
un tas tiek aizstāts ar šo tekstu burtiski ar 8, tieši tāpat.
Šajā ziņā, tas ir ļoti atšķiras no mainīgā.
Tas nav sākt kādu telpu atmiņā.
Tas ir vienkāršs teksta aizstāšana triks.
Šajā gadījumā mēs spēsim izmantot izmēru.
No šejienes mēs vēlamies darīt kaut kādas atkārtošanās,
un mēs esam uz pareizā ceļa ar mūsu do-kamēr cilpa.
Mēs vēlamies kaut ko darīt, kamēr stāvoklis nav tur vairs,
un kā mēs redzējām iepriekš, mēs redzējām, ka šis nosacījums
bija tāds, ka mēs negribam beigas
būt mazāks nekā sākt.
>> Tas ir mūsu apstāšanās nosacījums.
Ja tā notiek, mēs vēlamies apstāties un atzīt, piemēram, "Hei, mēs esam nav atrasts neko."
Izteikt to, mēs vēlamies izmantot kādu no cilpas.
Šajā gadījumā tas būtu do-kamēr cilpa, lai cilpa, kamēr cilpa?
Mums ir do-kamēr cilpa šeit.
Vai jūs puiši kā šo pieeju?
Vai jūs domājat, mums vajadzētu mēģināt citu pieeju?
Kevin, kādas domas?
Mēs varētu būt, kamēr cilpa, jo mēs zinām, ne
, būtu lielāka nekā min sākumā anyways.
Yeah, tāpēc tur nav inicializācijas ka nepieciešams notikt.
Šie do-kamēr cilpas ir liels, kad jums ir, lai sāktu kaut ko
pirms tam pārbaudot, bet šeit
mēs zinām, ka mēs nebrauksim, lai saglabātu reinitializing gan sākas un beidzas
katru kārtu no cilpas.
Mēs zinām, ka mēs vēlamies, lai sāktu tos, tad pārbaudiet mūsu stāvokli.
Šajā gadījumā, es tiešām iet ar vienkāršu kamēr cilpa.
Izrādās, ka do-kamēr tiek pielietotas cilpas diezgan reti.
Vietu daudz nav pat iemācīt darīt, kamēr cilpas.
Viņi labi darbam lietotāja ievadi, tāpēc mēs esam redzējuši daudz no viņiem līdz šim.
Bet normāli, un, kamēr cilpas ir daudz kopīga.
Izrādās, ka šis nosacījums kā rakstīts
nav īsti darīt mums daudz laba, un kāpēc tā?
Es atvainojos, es nezinu savu vārdu.
Es esmu Džerijs. >> Atvainojiet?
Tas ir B-O-R-U-es.
Ak, labi.
Es neredzu tevi manā sarakstā.
Ak, tas ir tāpēc, ak, ka ir jēga.
Vai jums ir ideja par to, kāpēc šis kamēr cilpa varētu nedarboties, kā paredzēts,
kā rakstīts ar nosacījumu?
[Džerijs] Tu domā tāpat kā jūs vēlaties visi sīkumi pēc to uz-?
Jā, tā tas ir viens.
Mums varētu būt likt visu šo stuff kamēr cilpa, kas ir pilnīgi taisnība.
Otra lieta, kas ir nedaudz vairāk problemātiska, gan, ir tas, ka šis nosacījums nedarbojas.
[Studentu] Jūs nepieciešams, lai uzsist to.
Labi, tāpēc šis nosacījums nav kādreiz būs taisnība sākotnēji kā mēs runājām par to.
Mēs vēlamies kaut ko darīt līdz gada beigām <sākas,
bet mēs gribam kaut ko darīt, kamēr
sākas ≤ galu.
>> Tur, ka par loģiku maiņa tur.
Es esmu vainīgs padarīt tās kļūdas visu laiku.
[Studentu] Kāpēc tas ir mazāks nekā vai vienāds ar?
Jo jūs atceraties šo lietu, ka mēs saņēmām
kur bija tikai viens elements, un mēs bijām uz leju,
un mēs meklē tikai ar 15 mūsu masīvā?
Un mūsu sākums un mūsu gals bija pats elements.
Mēs vēlamies, lai pārliecinātos, ka mēs risinām šo lietu.
Ja mēs taisni mazāk nekā,
mēs tikai varētu nokļūt uz leju, lai 2-elementu masīvu.
Kad mēs saņēmām līdz šī pēdējā elementa, ja tā būtu mūsu elements, mēs nekad to atrast.
Tagad šeit, mēs varam darīt tieši tāpat jūs sakot.
Mēs varam sākt plopping sīkumi labi vidū mūsu kamēr cilpa.
Mēs varam plunkšķis mūsu viduspunktā.
Mēs varam veikt visus šos ja apgalvojumi,
izvelciet tos no šīs do-kamēr cilpa,
plunkšķis tos,
tīrīt lietas pat mazliet,
un es iešu uz priekšu un saglabājiet šo pārskatīšanu.
Un šajā brīdī, mēs esam iegūt diezgan tuvu.
Sam.
Es domāju, ka jums ir arī ir int viduspunktu = izmērs - 1/2.
Sanāca tā, izmērs - 1/2.
Vai ir kaut kas cits mums ir nepieciešams mainīt par šo līniju?
Tas bija labs loms.
>> Kāda izmēra darīt? Vai mēs kādreiz mainās izmēru?
Lai saglabātu līnijas, piemēram, mums ir, lai mainītu izmēru.
Mums ir, lai mainītu izmēru katru reizi, kad ejam ap cilpa.
Bet atceros, kad mēs piedzīvojam mūsu piemērs tikai mazliet agrāk,
un mums bija sākumā pie 4
un beigās visi ceļu pār pie 108?
Kā mēs aprēķināt viduspunktā?
Ja mēs, izmantojot izmēru?
Vai mēs izmantojām sākas un beidzas vietā?
Tā ir atšķirība starp gada beigām un sākumu.
Tieši tā, un kā tieši man vajadzētu rakstīt, ka, Šarloti?
Tikai beigās - sākas.
Jums nav nepieciešams darīt - 1
jo - 1 ir iekļauts beigās un sākt jau.
[Nate] Great, tu esi pilnīgi taisnība.
Mums nav jādara - 1, jo tas - 1 ir iekļauts
un veidoja kad mēs sāktu beigu mainīgo.
>> Vai ir kaut kas cits man jādara sintaktiski lai šī līnija ir jēga?
[Studentu] Plus sākt >> Plus. Sākt?
[Studentu] beigās.
Jo tas ir tikai aprēķina pusi garuma.
Jums ir nepieciešams, lai pievienotu sākt.
[Nate] Kas varētu šo aprēķināt mums?
Ja mēs domājam par mērķi uz šo pirmo atkārtojuma no cilpas,
gals būs pozīcijā indeksā 7.
Sāktu ir pozīcijā 0.
Atcerieties, mēs meklējam nu
pozīciju 3 vai pozīcija 4.
Ja mēs skatāmies uz šo matemātiku, tikai, lai padarītu to mazliet vairāk taustāms,
nodot dažus numurus šeit, mums ir 7, 0,
tā 7-0, un tad / 2
ir 3 skaitlim sadalīšanas, kas ir.
Tad mums vajag tad pievienot atpakaļ mūsu sākt?
Mums nav šajā gadījumā.
Par ļoti pirmajā iterācijā, tas būs labi, jo sakt ir 0.
Bet, kā mēs progress, mēs tiešām visi vienkārši vajag
beigas - sākas / 2.
Ir viena cita triks šeit, un tas ir proti, viena no prioritātes.
[Studentu] Vai mums vajag iekavas?
[Nate] Tieši tā, un tas ir tāpēc, ja mums nav likt šos iekavas,
tad šī pozīcija tiks interpretēts vietā
kā (beigas) - (sākt / 2), ko mēs noteikti nevēlamies.
Noskatīties ārpus tiem prioritātes noteikumi.
[Studentu] Kāpēc tas nav galu + sākt?
Kāpēc tas nav galu + sākt?
[Studentu] Kāpēc tas nav tik?
Kāpēc tas būtu +?
Es domāju, ka tev taisnība.
[Studentu] Jo tas ir vidējais?
[Nate] End + sākas, tu esi pilnīgi taisnība.
Wow, es pilnīgi goofed. Tev taisnība.
Ja mēs darām uz mīnusa, mēs vēlamies, lai pievienotu sāktu atkal iekšā
Šajā gadījumā, jūs esat ļoti labi, ka mēs vēlamies, lai ņemtu vidējo diviem,
tāpēc mēs vēlamies, lai pievienotu tos, nevis atņemtu tiem.
[Studentu] Tas arī strādāt, ja jūs galu - sākas / 2 + sākas.
Tas būtu, ja mēs-es uzskatu tā.
>> Piemēram, ja mēs apskatot sākas,
un mēs pārvietoti to vairāk šeit
līdz 15 no.
Tagad sāk ir stāvoklī 2.
Gals ir 7 pozīcijā.
Ja mēs atņemtu tiem, mēs 5.
Dalīt to ar 2, mēs nokļūt 2.
Un tad mēs pievieno 2 atpakaļ,
un kas izpaužas mums uz 4 pozīciju,
kas ir tepat, kas ir viduspunkts.
[Studentu] Vai mums ir nepieciešams rūpēties par iesaiņojuma?
Kādā jēga mums ir nepieciešams rūpēties par iesaiņojuma?
Ja summa vai starpība starp
atkarībā no tā, kā mēs to darām, nav pat numuru.
Tad dators izpaužas sajaukt vai, ja tas ir 2,5;
Jūs pārvietot pa kreisi vai pa labi, lai noteiktu, kas ir viduspunkts?
Dabūja to.
Izrādās, ka ar veselu sadalījumu,
mums nav kādreiz saņemt šos peldošā komata skaitļus.
Mēs nekad iegūt decimālo.
Tas ir pilnīgi jāiznīcina.
Ja jums ir dators dalīt 2 int mainīgie,
un viens ir 7, un otrs ir 2,
Jums nav iegūt 3,5, kā rezultātā.
Tas būs iegūt 3.
Atlikums tiks izmesti, tāpēc tas ir efektīvi noapaļošanas
nevis apaļa, bet gan grīdas, ja jūs puiši ir pazīstami ar to math,
kur tu pilnībā atbrīvoties decimal,
un tā jūs būtībā truncating to uz leju līdz tuvākajam
Visa pozīciju, līdz tuvākajam veselajam skaitlim.
[Studentu] Bet tad tas ir problemātiski, jo, ja jums ir masīvs 7 elementi
tad automātiski veic 3. elements no viduspunktā, nevis uz 4th.
Kā mēs varam tikt galā ar šo?
Tas ir problemātiski, jo, ja mums bija masīva 7,
tas varētu paņemt The 3rd, nevis uz 4th.
Vai jūs varētu paskaidrot mazliet vairāk?
[Studentu] Jo, ja jums ir 7 elementi, tad ar 4 elements
būtu viduspunkts, vai ne?
Atceros savu komentāru par to nulles indeksēti, lai gan.
[Studentu] Jā, tā 3 stāvoklī. Tas būtu viduspunktā.
Yeah.
Ak, labi. Es redzu, ko tu domā.
Tas ir sava veida dīvaini, jo mēs pierastu pie visa šī jēdziena
atbrīvojoties no decimāldaļām.
Tas ir liels jautājums.
Pieņemsim pabeigt šo augšu.
Mēs esam aprēķina mūsu viduspunktā.
>> Mēs esam testēšanu, lai redzētu, vai mūsu adata ir vienāds ar vidējo vērtību.
Mēs esam drukāšanas ka mēs atradām, bet tiešām, ko mēs vēlamies darīt šajā situācijā?
Mēs esam noskaidrojuši, tāpēc mēs vēlamies, lai zvanītājs zina, ka mēs atradām.
Mēs esam ieguvuši funkciju, kas ir Būla drukāti funkcija.
Veids, kā mēs signalizēt zvanītāju mūsu funkciju, ka mēs esam gatavi iet
ir mums saka: "Hei, tā ir taisnība."
Kā mēs darīt, Kevins?
Tu esi pavirša galvu. >> [Kevins] Pievienot atgriešanās taisnība.
[Nate] Tieši tā, atgriešanās patiess.
Tagad, ja tas nav vienādi, kā būtu mēs apskatīt kreisajā pusē?
Jebkuras idejas?
Stella, jebkuras idejas?
Jums ir nepieciešams noteikt jaunu pozīciju beigām.
Yeah.
Tāpēc mums ir jādara pozīciju viduspunktā - beigas.
Lieliski.
Mums ir nepieciešams noteikt jaunu nostāju beigās
paskatīties uz kreiso pusi.
Tas bija tas, ko mēs runājām pirms kur
Es turpinu iet atpakaļ uz šo piemēru.
Man ir sākt šeit, un tad man ir beigas visiem ceļu pār šeit.
>> Atkal, ja mēs meklējam 15, un mūsu viduspunktā ir 16,
un mēs saprotam, "Ups, 16 ir lielāks.
Mēs vēlamies, lai pārietu uz kreiso pusi. "
Tad mēs varētu pārvietot galu jau 15,
un mēs ka, veicot kādu prom no viduspunktā
un nosakot, ka mūsu jaunā gada beigām.
Tāpat, ja mēs gribam skatīties uz labo pusi, kā būtu mēs darīt?
Vai jums ir ideja?
[Studentu] Jūs vienkārši iestatīt sākt viduspunkts + 1.
[Nate] Lielā.
Un tagad, ja, ka mēs nevaram atrast neko,
tas, ka saņemt rūpēsies par mums?
Daniel, vai tas get rūpēsies par mums?
[Daniels] Nē
[Nate] Ja mēs to visa masīva un mēs nevaram atrast neko,
kur tad tas ir jāņem aprūpi, vai mums vajadzētu rūpēties par to?
[Daniels], kamēr nosacījums.
[Nate] Jā, bet nosacījums, tieši tā.
Tas būs rūpēties par iet cauri visam blokam, ja mēs nevaram atrast neko.
Tas savukārt cilpa beigsies.
Mēs nekad ir saskārušās ar šo nosacījumu,
un mēs varam atgriezties viltus.
Mēs varam arī atstāt šo, ja šeit, piemēram, tas
jo, ja tas, ja apgalvojums ir patiess,
un mūsu funkcija atgriezīsies,
un tāpēc mēs būtībā pārtraukt šī funkcija šajā brīdī
kad mēs atgrieztos taisnība.
Bet kas notiek ar šo struktūru šeit?
Tas darbosies pilnībā, vai pastāv dažas loģiski plaisāt tur?
>> Ir daži loģiski plaisāt tur, ar to, kā tā ir izveidota.
Kas tas varētu būt?
[Studentu] Kāpēc jums ir nepieciešams - un + 1s?
Kas nosaka mūsu masīvs līdz būt mūsu jauno kreiso pusi un labo pusi.
[Studentu] Bet kāpēc nevarētu jūs to darīt bez - 1s un + 1s?
[Nate] Mēs to varētu vienādi ar viduspunktu?
Kāda varētu būt problemātiski par to?
[Studentu] Es domāju, tas ir neefektīvi, jo jūs pārbaudīt vērtību, kas jau ir pārbaudīta.
[Nate] Tieši tā, tāpēc Sam ir pilnīgi pareizi.
Ja jūs noteikti galu un sāk vienāds ar viduspunktu
vietā - 1 un + 1 domīgi,
kādā brīdī nākotnē mēs galu galā pārbaudīt viduspunktā vēlreiz.
[Studentu] Es sāku PSET, un tad man bija kaut kas līdzīgs, ka
kur es aizmirsu + 1, un tas got iestrēdzis bezgalīga cilpa.
Labi, jo kādā brīdī jūs nekad gatavojas saņemt sākas un beidzas
faktiski pārklājas.
Atdzist.
Tur ir vēl viena loģiskā trūkums, un tas, ka šis noteikti vajadzētu būt
cits ja.
Kāpēc varētu būt?
>> Iemesls ir, ja tas nav cits, ja, vai jūs redzat to, Kevins?
[Kevins] Jā, jo jūs mainās beigu punktu.
[Nate] Tieši tā.
Mēs esam mainot vērtētais,
un ja tas ir rakstīts šādi-we'll veikt atstarpes starp-
tā pārbauda šo gadījumu.
Šajā gadījumā, ja tas izdodas, tiks apturēta no funkcijas.
Tad tas būs pārbaudīt šo nākamo lietu,
un ja tas izdodas, tas būs pielāgot vērtētais,
un tad tas tiks turpināts un pārbaudīt šo lietu.
Bet šajā brīdī, mēs negribam, lai turpinātu pārbaudes.
Par laimi, mums nav reset viduspunktā šeit,
un mēs zinām, ka šī lieta neizdosies.
Bet mēs noteikti vēlamies likt cits ja tur
kaut kas varētu-šajā gadījumā
jo mēs esam ne pielāgojot viduspunktā, tas var kaut ko mainīt?
Nē, jo šie gadījumi ir visi ekskluzīvas.
Atkal, mans slikti.
Mums nav, es domāju, ir nepieciešams šo cits ja.
Mēs varam arī tā izmēģināt un palaist to un redzēt, kas notiek.
Ēka, kļūda.
Tas ir iespējams tāpēc, ka es pa kreisi šie b s un e s šeit.
Vai man ir vairāk par tiem augšā?
Tas nav izskatās tā.
Mēs zoom out, veidot,
tur tā iet, tāpēc tagad, ja mēs meklētu 15,
Jā.
Ļaujiet man pietuvinātu objektu
15, jā. Mēs varam palaist vēlreiz.
Augšupielādējot pirmkodu, celtniecības, darbojas.
Mēs varam meklēt kaut ko līdzīgu 13,
un mums nav iegūt kaut ko izdrukāt, tāpēc tas nav atrast, kas par mums.
Tas ir lieliski, jo tas nav mūsu sarakstā.
>> Mēs esam tagad no laika.
Kas notiek, lai tas būtu par šo nedēļu.
Paldies par pievienošanos, un uz redzēšanos.
>> [CS50.TV]