[Powered by Google Translate] [Adran 3] [Llai cyfforddus] [Nate Hardison] [Harvard University] [Mae hyn yn CS50.] [CS50.TV] Mae pob hawl, gadewch i ni ddechrau arni. Croeso i Wythnos 4 o CS50. Os ydych yn guys agor porwr gwe ac yn agor i fyny pset 3, Sgramblo gyda CS50, rydyn ni'n mynd i ddechrau mynd drwy'r adran o'r cwestiynau yno. Yn union fel yr wythnos diwethaf, byddwn yn gweithio mewn CS50 Spaces, os byddwch hefyd yn tynnu ar hynny hefyd, ac os ydych yn mynd yn ei flaen ac yn ymweld â'r ddolen bod gen i fyny yma ar y brig. Mae'n amser i ddechrau arni. Rydym wedi cael ein rhaglen hi bach yma. Dim byd crazy. Un o'r pethau cyntaf rwyf am ei wneud gyda chi guys heddiw yw mynd dros atebion ychydig i 1, Set Problem math o atebion er enghraifft, dim ond er mwyn i chi gael blas ar yr hyn y mathau o staff cod yn ysgrifennu, pa fath o fyfyrwyr cod eraill yn ysgrifennu, ac a ydych wedi edrych arno am fy mod yn gwybod ei fod yn rhyfedd pan fyddwch yn cyflwyno ateb i broblem a osodwyd a chael sylwadau ar eich fersiwn eich hun, ond weithiau mae'n ddefnyddiol i weld sut mae pobl eraill yn gwneud hynny, yn enwedig rhai sy'n 'n glws edrych. Ar gyfer y rhan fwyaf, cefais argraff dda iawn o'r atebion yr ydych yn guys a gynhyrchir. Nid wyf wedi dechrau eto yn edrych ar eich 2s Problem Set, ond os ydynt yn unrhyw beth fel y cyntaf, nid yw'n golygu dim ond pethau da. Os ydych yn edrych ar fy diwygiadau, gadewch i ni ddechrau yr holl ffordd i lawr ar Revision 1, ac rydym yn mynd i edrych yn gyflym ar ateb Mario. Os ydych yn tynnu hyn i fyny, mae'r rhaglenni hyn ein bod ni'n mynd i gyflwyno yn gywir. Nid oedd materion cywirdeb â'r problemau hyn, ond yn hytrach, rydym eisiau siarad ychydig am y materion dylunio gwahanol a oedd yn cael ei ddefnyddio yma. Un o'r pethau a oedd yn ddiddorol am yr ateb yw ei fod yn defnyddio'r lluniad newydd o'r enw punt diffinio, weithiau y cyfeirir atynt hefyd fel hash ddiffinio. Gadewch i mi chwyddo i mewn arno yma. Mae # diffinio yn eich galluogi i roi enwau i'r rhifau hyn yn eich rhaglen. Yn yr achos hwn, mae'r uchafswm uchder o pyramid yn Mario Roedd 23 ac yn hytrach na rhoi 23 yn fy cod- y byddem yn cyfeirio at hynny fel godio caled 23 - yn lle hynny mae hyn yn rhoi MAX_HEIGHT enw i'r rhif hwnnw, er mwyn i lawr yma yn fy do-tra dolen alli 'n weithredol gyfeirio at MAX_HEIGHT yn hytrach na rhoi y rhif 23 i mewn [Myfyrwyr] Beth yw mantais o wneud hynny? Dyna gwestiwn mawr. Mae un yn darllenadwyedd. Un fantais o ddefnyddio'r # diffinio yn darllenadwyedd. Pan oeddwn i'n darllen y cod hwn, gallaf weld beth sy'n mynd ymlaen. Gallaf weld yn y cyflwr hwn yma ein bod yn profi ar gyfer y uchder fod yn <0, a gallem fod wedi diffinio hefyd i fod yn isafswm uchder neu uchder min. Y fantais arall yw y gallaf wedyn yn darllen y gweddill y llinell i weld ein bod hefyd yn gwirio i wneud yn siŵr nad yw uchder yn fwy na'r uchder max, oherwydd ein bod ni'n mynd i barhau tra bydd yr uchder yn fwy na'r uchder max. Y fantais arall yw-os byddaf yn chwyddo allan ychydig yma- os byddaf yn rhedeg y rhaglen, ac rwy'n rhedeg, dyweder, gyda 23 ar hyn o bryd, bydd yn argraffu pob un o'r 23 rhes yn union fel 'na. Ond dweud fy mod i eisiau newid yr uchder max, ac yn awr yr wyf am gyfyngu uchafswm uchder o pyramidiau i fod yn unig dweud-ddyn, a oedd yn ffynci. # Cynnwys , # diffinio MAX_HEIGHT, a gadewch i ni ddweud ein bod yn awyddus i osod fod yn gyfartal i 10. Nawr ar y pwynt hwn, y cyfan bu'n rhaid i mi ei wneud oedd newid yn y lleoliad hwn un. Gallaf ail-grynhoi y cod, ac yn awr os wyf yn ceisio deipio mewn 12, Bydd hyn ysgogi i mi eto. Yn yr achos hwn, rydym yn unig gan ddefnyddio MAX_HEIGHT unwaith. Dyw hi ddim bod fawr o drafferth i fynd i mewn a'i newid yn y ddolen tra os oes angen. Ond mewn rhaglenni lle rydych chi'n cyfeirio at y rhif hud un drosodd a throsodd, mae hyn yn # diffinio mecanwaith yn wirioneddol ddefnyddiol oherwydd eich bod dim ond ei newid un adeg ar ben y ffeil-mae'n nodweddiadol lle rydych yn eu rhoi- a'r newid trylifo i drwy weddill y ffeil. Pethau eraill Roeddwn i eisiau nodi yn yr aseiniad hwn fy mod yn meddwl yn edrych yn neis iawn, roedd un yn enwi'r newidynnau. Byddwch yn gweld yma ein bod wedi cael newidynnau cyfanrif a elwir yn rhes a elwir uchder. Mannau, hashes, mae'n helpu i wneud y cod ychydig yn fwy darllenadwy, yn ei gwneud yn ychydig yn fwy dealladwy beth sy'n digwydd mewn gwirionedd. Mae hyn mewn cyferbyniad â defnyddio, dyweder, llythyrau ar hap neu dim ond gobbledygook yn gyfan gwbl. Mae peth olaf 'n annhymerus' yn nodi yw bod mewn ar gyfer dolenni, yn aml mae'r newidynnau iterator, mae'r cownteri a ddefnyddiwch yn eich gyfer dolenni, mae'n safonol a chonfensiynol i ddechrau gyda naill ai i ac yna j ac yna k ac yn mynd ymlaen o hynny os oes arnoch angen mwy o newidynnau, ac mae hyn yn unig yw confensiwn. Mae llawer o gonfensiynau. Mae'n dibynnu ar yr iaith raglennu rydych yn ei ddefnyddio. Ond yn C, rydym fel arfer yn dechrau gyda i. Nid yw'n gwneud synnwyr i ddefnyddio, dyweder, neu b dibynnu ar y sefyllfa. Dyna ni am yr un yma. Os ydych chi nawr tynnu i fyny Diwygiad 2, byddwch yn gweld un arall Mario, ac mae'r un yn debyg i'r un arall yr ydym yn jyst yn gweld, ond mae'n rhywbeth caredig o oer. Os ydym yn edrych ar yr adran hon iawn yma y tu mewn i'r ddolen mewnol ar gyfer, maent yn defnyddio rhai gystrawen crazy edrych yma i'r dde yn y llinell hon. Gelwir hyn yn weithredwr teiran. Mae'n datganiad os arall a cywasgu i un llinell. Mae'r cyflwr yn y rhan hon mewn cromfachau. Mae'n cyfateb i ddweud os yw uchder j <- i - 1. Ac yna beth yw'r cynnwys, os byddai bloc yn yn y gofod ac yna cynnwys yr hyn fyddai'r arall fod yn hyn #. Mae'n hanfod neilltuo lle i newidyn hwn. Mae'n rhoi gofod yn cynnwys y newidyn bloc, os yr amod hwn yn cael ei fodloni, ac os nad yw'r cyflwr yn cael ei fodloni, yna bydd y newidyn bloc yn cael hyn yn #. Ac yna, wrth gwrs, yn hytrach na cronni llinyn cyfan ac argraffu popeth allan ar y diwedd ateb hwn yn argraffu allan un cymeriad ar y tro. 'N bert oera. Arall cwpl o bethau i edrych arnynt. Byddwn yn symud ymlaen i farus. Nawr, os ydym yn edrych ar barus, mae hyn yn ateb cyntaf defnyddio'r rhain yn diffinio # gryn dipyn. Rydym wedi cael un gyson diffinio ar gyfer pob un o'r rhifau gwahanol yn y rhaglen hon. Mae gennym un ar gyfer cents y ddoler, un ar gyfer chwarteri, dimes, Nickels, a cheiniogau, ac yn awr os ydym sgroliwch i lawr a darllen y cod, gallwn weld popeth safonol ddolen do-wrth argraffu allan. Math o graidd y broblem hon yn sylweddoli bod angen i chi drosi'r fflôt eich bod yn darllen i mewn o'r defnyddiwr i'r cyfanrif yn gywir yn gwneud y math, ac mae hyn oherwydd gyda rhifau pwynt arnawf, fel yr ydym yn siarad amdanynt yn fyr darlith, nid yw'n bosibl yn gywir cynrychioli pob un gwerth ar y llinell rif oherwydd bod llawer o werthoedd anfeidraidd rhwng 3 a, dyweder, 3.1 hyd yn oed. Gallwch gael 3.01 a 3.001 ac 3.0001, a gallwch gadw i fynd. Mae'n troi allan pryd bynnag y byddwch chi'n gweithio gydag arian, byddwch yn aml am ei drosi i fformat cyfanrif fel nad ydych yn colli ceiniogau a'r math yna o bethau. Gwneud hynny a thalgrynnu yn allweddol. Mae hyn yn ateb yn defnyddio berffaith syml, algorithm mawr, sy'n decremented y nifer o cents sy'n weddill, yn gyntaf gan chwarter, wedyn gan dimes, yna gan Nickels, yna yn ôl ceiniogau, ac ychwanegu at y nifer o ddarnau arian bob tro. Ateb arall y byddwn yn gweld, gan fy mod yn chwyddo allan neu'n mynd i'r Diwygiad 4, Roedd dechrau yn debyg iawn ond div a ddefnyddir yn lle hynny ac mod dde dros yma i gyfrifo nifer y cents. Mae hyn, mae nifer y chwarter yn hafal i nifer y cents wedi'i rannu â 25, a'r rheswm mae hyn yn gweithio oherwydd ein bod yn ei wneud is-adran cyfanrif, felly mae'n taflu unrhyw weddill. [Myfyrwyr] A oes rhaid i sylwadau y chwiliad? Mae'n dibynnu'n hollol. [Myfyrwyr] Rydych yn gwneud sylwadau mwy nag cod iawn yma. Yeah, ac felly mae criw o wahanol athroniaethau ar hyn. Fy athroniaeth bersonol yw bod eich cod sydd mewn gwirionedd yn y gwir, fel eich cod yw'r hyn mewn gwirionedd yn gweithredu ar y cyfrifiadur, ac felly dylai eich cod fod mor ddarllenadwy â phosibl i heb fod angen fel llawer o sylwadau. Wedi dweud hynny, pan fyddwch yn gwneud pethau sydd yn fath o anodd fathemategol neu algorithmically, mae'n dda i roi sylwadau rhai fel y gallwch ychwanegu dimensiwn ychwanegol, haen ychwanegol i bwy bynnag sy'n darllen eich cod. Yn yr atebion hyn, yn aml maent yn cael eu sylwadau drymach dim ond oherwydd rydym am fod yn gallu dosbarthu nhw a chael pobl yn eu codi ac yn eu darllen yn eithaf hawdd. Ond yn sicr, byddwn yn cytuno bod hyn yn drwm. [Myfyrwyr] Ond pan mewn amheuaeth, ewch drymach? Pan fyddwch mewn amheuaeth, ewch drymach. Bydd rhai pobl weithiau'n dweud 0 dychwelyd neu rywbeth fel 'na. Rwy'n credu bod sylw chwerthinllyd. Yn amlwg dyna beth sy'n digwydd. Nid oes angen Saesneg i ddweud wrthyf fod. Weithiau bydd pobl yn ysgrifennu pethau fel "kthxbai!" Dyna fath o 'n giwt, ond hefyd nid- nid yw hynny'n gwneud y gwahaniaeth rhwng pwyntiau sylwadau neu beidio. Mae'r mathau hynny o sylwadau yn unig ha, ha. Cool. Ar y pwynt hwn, gadewch i ni ddechrau gweithio ar y broblem Set 3 adran o gwestiynau. Os ydych yn guys dynnu hyn i fyny eto, fel gyda yr wythnos diwethaf, nid ydym yn mynd i wylio'r shorts yn yr adran hon. Byddwn yn gadael i chi guys wneud hynny ar eich amser eich hun a siarad am y cwestiynau. Ond yn awr yn yr adran hon rydym yn mynd i dreulio ychydig mwy o amser siarad am lai o'r pethau sylfaenol codio fel y gwnaethom yr wythnos diwethaf, ac yn hytrach, rydym yn mynd i ganolbwyntio mwy ar ychydig yn fwy o theori, felly gall siarad am chwiliad deuaidd ac yna didoli. O'r rhai hynny ohonoch sydd wedi bod yn dilyn ynghyd â'r ddarlith, Gall rhywun roi i mi ailadrodd yr hyn y mae'r gwahaniaeth yn rhwng chwiliad deuaidd a chwiliad llinol? Beth sy'n digwydd? Cadarn. Chwiliadau chwiliad llinol trwy bob elfen yn y rhestr datrys o un i un gan un i un gan un, a chwilio deuaidd yn rhannu'r rhestr yn 2 grŵp, sieciau os yw'r gwerth allweddi eich bod yn chwilio am yn fwy na neu'n llai na gwerth pwynt canol eich bod yn dod o hyd yn unig, ac os yw'n llai na, mae'n mynd â'r rhestr isaf ac yna rhannu hynny eto, gwneud yr un swyddogaeth yr holl ffordd i lawr nes ei fod yn dod o hyd i'r man canol i fod yn hafal i werth ei hun. Hawl. Pam rydym yn poeni? Pam rydym yn siarad am chwiliad deuaidd yn erbyn chwiliad llinol? Yeah. Binary yn llawer cyflymach, felly os ydych yn dyblu maint y broblem mae'n cymryd un cam yn fwy yn hytrach na dwywaith cymaint. Yn union. Mae hynny'n ateb gwych. Chwiliad llinol yn fawr edrych ar un elfen ar y tro, ac fel a welsom ar y diwrnod cyntaf o ddarlith pan oedd Dafydd yn mynd trwy ei llyfr ffôn enghraifft , a'i rhwygo allan un dudalen o'r llyfr ffôn ar adeg ac yn cadw gwneud hynny drosodd a drosodd a throsodd, mae'n mynd i gymryd iddo amser hir iawn i ddod o hyd i unrhyw un yn y llyfr ffôn, oni bai, wrth gwrs, fod yn chwilio am rywun ar y cychwyn cyntaf y wyddor. Gyda chwiliad deuaidd, gallwch fynd yn llawer cyflymach, ac nid dim ond ddwywaith mor gyflym neu 3 gwaith mor gyflym neu 4 gwaith yn gyflym. Ond y broblem yn cael llai ac yn llai a llai yn gynt o lawer. I ddangos hyn, byddwn yn dechrau siarad am yr hyn sy'n mynd ymlaen pan fyddwn yn ysgrifennu chwiliad deuaidd. Y broblem wrth law yw os wyf yn cael amrywiaeth o rifau, dweud, 1, 2, 3, 5, 7, 23, 45, 78, 12,323, ac yna 9 gyda tunnell o 0au ar ei ôl, rydym am fod yn gallu chyfrif i maes yn gyflym iawn beth sydd yn hwn amrywiaeth o rifau. Rwy'n gwybod hyn yn ymddangos yn wirion ychydig ac ychydig yn ddyfeisgar, oherwydd ar hyn o bryd y mae. Mae gennym amrywiaeth nad oes llawer iawn o elfennau ynddo, ac os byddaf yn gofyn i un i chi chyfrif i maes ai peidio 23 yw yn yr amrywiaeth, gallwch wneud hynny yn weddol gyflym dim ond drwy fwrw golwg ar hyn ac yn dweud wrthyf ie neu na. Mae'r analog i ystyried ei ddychmygu pe bai hyn, dyweder, daenlen Excel gyda 10,000 o resi, 20,000 o rhesi. Wrth gwrs, gallwch wneud y gorchymyn F neu F rheoli ac yn edrych rhywbeth i fyny. Gallwch hefyd ddefnyddio'r hidlyddion a pethau chwilio, ond os bu'n rhaid i chi edrych drwy'r llinell honno ffeil gan linell wrth linell, byddai'n cymryd amser hir i chi ddod o hyd iddo. Mae'n fath o fel yn y llyfr ffôn enghraifft, hefyd, lle oes neb yn edrych drwy'r dudalen un llyfr ffôn ar y tro. Yn nodweddiadol, maent yn agor i'r canol, neu yn achos o lawer o lyfrau ffôn a geiriaduron lle ydych mewn gwirionedd wedi ei deipio ar y llythyr cyntaf, ydych yn troi at y llythyr cyntaf ac agor a dechrau mynd trwy yno. Fy atgoffa o'ch enw eto. >> Sam. Sam. Fel Sam ddweud, y broses chwiliad llinol yn mynd i fod yn araf iawn, ac yn hytrach na gyda chwiliad deuaidd, y ffordd y mae hyn yn gweithio yw bod bob tro y byddwn yn mynd drwy fersiwn o'n algorithm chwilio, ydym yn mynd i rannu'r rhestr yn ei hanner, yn ei hanfod, i mewn i ddwy restr llai. Ac yna ar y fersiwn nesaf y ddolen, byddwn yn ei rannu eto mewn rhestrau llai eraill. Fel y gwelwch, mae'r broblem yn cadw mynd yn llai ac yn llai oherwydd ein bod yn cadw gwaredu hanner y rhestr bob tro. Sut mae hyn yn gweithio taflu? Yn union fel nodyn atgoffa, beth ydym yn mynd i'w wneud os ydym yn cyfrifiadur ac roeddem yn, dyweder, chwilio am y rhif 5 yn y rhestr hon yw y byddem yn dewis rhif yn y canol. Yng nghanol y rhestr hon, oherwydd mae yna 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 rhif, byddem yn dewis y nifer naill ai yn y 4ydd safle neu ar y sefyllfa 5ed, a byddem yn galw bod canol ein rhestr. Dewiswch rhif yn y canol. Yna, yn union fel y dywedodd Sam, byddwn yn profi i weld a os bydd y nifer yn gyfartal at y nifer yr ydym am ei gael neu ein nifer a ddymunir. Os yw'n gyfartal, yna rydym wedi dod o hyd iddo. Rydym yn ennill. Os nad yw'n gyfartal, yna mae un neu ddau o achosion. Mae'r ddau achos naill ai'n mae'r nifer wedi i fod yn fwy na'r nifer rydym yn edrych ar, neu ei fod yn llai na. Os yw'n fwy, rydym yn symud i'r dde. Ac os yw'n llai, byddwn yn symud i'r chwith. Ac yna rydym yn ailadrodd y broses gyfan eto naill ai ar yr hanner dde neu'r chwith hanner y rhestr. Y broblem gyntaf yn adran heddiw yw chyfrif i maes sut y gallwn mewn gwirionedd yn dechrau i fynegi hyn yn C cod. Rydym wedi cael y pseudocode yma. Beth byddwn yn dechrau ei wneud yn 'n annhymerus' tynnu i fyny newydd sbon o le, arbed diwygiad hwn er mwyn inni gael y nodiadau hyn ar gyfer yn ddiweddarach, byddwn yn dileu hyn i gyd, ac yna gopïo a phastio o'r set problem wybodaeth hon yn ein mannau, a, gobeithio, nid yw hyn yn torri. Perfect. Os ydych yn guys gyd yn gwneud hynny, copïo a phastio hwn i mewn i'ch cod gofod newydd, i mewn i un wag. Gadewch i ni geisio Daniel. Os ydych yn llunio ac yn rhedeg y rhaglen, a yw'n gweithio? Rhif >> Beth mae'n ei ddweud? Mae'n dweud y rheolaeth yn cyrraedd diwedd heb fod yn ddi-rym swyddogaeth. Yeah, felly gadewch i mi roi cynnig ar redeg. Ydych chi wedi guys gweld hyn o'r blaen? Ydych chi'n gwybod beth yw ystyr hyn? Iawn, gadewch i ni ddyrannu darn yma ychydig. Mae'n dweud yn file.c on line 9, colofn 1, rydym yn cael gwall, yn union fel y dywedasoch, ac mae'n dweud ei fod yn deillio oddi wrth y rhybudd gwall a dychwelyd rhybudd fath. Mae'n edrych fel rhywbeth yn digwydd gyda'r, math dychwelyd sy'n gwneud synnwyr. Mae gennym swyddogaeth heb fod yn ddi-rym, sy'n golygu ein bod wedi cael swyddogaeth nad yw'n dychwelyd ddi-rym. Mae swyddogaeth ddi-rym yn un sy'n edrych fel hyn: ddi-rym foo (), ac mae'n ddi-rym oherwydd bod y math o ddychwelyd yn ddi-rym, sy'n golygu bod os oedd gennym rywbeth i mewn yma fel dychwelyd 1, byddem yn cael gwall compiler ar gyfer hyn. Fodd bynnag, mae gennym swyddogaeth heb fod yn ddi-rym. Ein rhif di-ddi-rym swyddogaeth yn yr achos hwn yw ein swyddogaeth chwilio oherwydd ei fod wedi dychwelyd fath o bool. Pan mae'n dweud bod y rheolaeth yn cyrraedd diwedd swyddogaeth heb fod yn ddi-rym, 'i' oherwydd nad oes gan chwilio datganiad dychwelyd. Nid yw'n dychwelyd unrhyw beth o bool fath. Gallwn atgyweiria hynny, a beth ydych chi'n feddwl guys Dylid chwilio ddychwelyd yn ddiofyn? Beth ddylai fod yn y diofyn gwerth dychwelyd chwilio? Oherwydd dyna beth y gallwn ei roi ar y diwedd. Charlotte, a oes gennych unrhyw-? Gwir neu anwir? >> Gwir neu ffug. Pa un? Anghywir. Nid wyf yn gwybod. Anwir? Gadewch i ni roi cynnig arni. Pam y byddech yn dweud ffurflen dreth anwir? Dyna greddf mawr. [Charlotte] Nid wyf yn gwybod. Rydym yn mynd i ddychwelyd ffug yn yr achos hwn oherwydd bydd hyn yn ein ddiofyn os am ryw reswm y rhestr yn wag neu y nodwydd ein bod yn chwilio am nad yw'n bodoli. Yna ar y diwedd un, os nad ydym yn dychwelyd yn wir yn gynharach yn y swyddogaeth hon, rydym bob amser yn gwybod y bydd y swyddogaeth yn dweud Na, nid yw'n yn y rhesi. Dyw hi ddim yn y tas wair. Nawr, os ydym yn llunio ac yn rhedeg-gadewch i mi gadw hyn fel y gallwn dynnu i fyny. Nawr, os ydym yn llunio ac yn cynnal ein rhaglen, mae'n adeiladu. Rydym yn cael ein brydlon bach. Os byddaf yn taro 4-uh-oh. Nid oedd yn argraffu unrhyw beth. Mae'n edrych fel popeth a ddaeth i ben yn iawn. Mae gennym i lenwi'r i mewn Rydym yn sôn am y algorithm mewn pseudocode ychydig yn ôl. Gad i mi weld, arbed hyn, a byddaf yn tynnu y algorithm yn ôl i fyny eto. Gadewch i ni daro y boi. Nope. Mae ydyw. Sut rydym yn gwneud hyn? Beth fyddai strategaeth dda ar gyfer cychwyn oddi ar y cod hwn? Mae'n rhaid i chi ddewis rhif yn y canol. Sut ydym yn dewis rhif yn y canol o amrywiaeth? Unrhyw awgrymiadau? [Myfyrwyr] Strlen rannu â 2. Strlen rannu â 2. Dyna un gwych. Strlen gweithio gyda mathau arbennig o araeau. Pa fath o araeau? Araeau Llinynnol, araeau cymeriad. Mae'n bod un math o gysyniad yr ydym am ei wneud cais, ond ni allwn ddefnyddio strlen oherwydd nad oes gennym amrywiaeth o gymeriadau. Mae gennym amrywiaeth o ints. Ond beth mae strlen gael i ni? Ydych chi'n gwybod beth mae'n ei gael i ni? [Myfyrwyr] Strlen yn cael i ni hyd. Yn union, mae'n mynd i ni hyd. Strlen yn cael hyd y rhesi i ni. Sut ydym yn cael hynny yn ein chwiliad deuaidd rhaglen? Sut fyddech chi'n hyd arae? [Myfyrwyr] Strlen? Gallwch gael hyd i fformatio priodol amrywiaeth llinyn C gyda strlen. Y broblem, fodd bynnag, yw nad oes gennym amrywiaeth llinyn. Os ydym yn edrych yn ôl ar y cod hwn, y mae gennym y casgliad cyfanrif. Sut ydym yn gwybod pa mor hir y mae? [Myfyrwyr] A oes un cyfatebol ar gyfer endpoint, fel l int neu rywbeth? Mae'n troi allan yno mewn gwirionedd yw, a hynny mewn ffordd, mae hyn yn un o'r pethau hynny sy'n unig yn dda i wybod am C, nad oes unrhyw ffordd i gael hyd arae os bydd yr holl wyf yn rhoi i chi yn y rhesi. Y rheswm y mae'n gweithio gyda llinynnau, y rheswm strlen gwaith, oherwydd os llinyn yn cael ei fformatio yn gywir, y bydd hynny'n arbennig \ 0 chymeriad ar y diwedd un. Gallwch hefyd ddychmygu os oes gennych linyn amhriodol fformatio ac nid oes \ 0 gymeriad yno, yna nid yw'r holl beth yn gweithio. [Myfyrwyr] Allwch chi ychwanegu y \ 0? Gallem yn yr achos hwn. Gallem ychwanegu rhyw fath o \ 0 neu ryw fath o ddynodi cymeriad ac yna defnyddio hynny. Ond nid yw hynny'n hollol yn mynd i weithio oherwydd bod y 0 \ ar gyfer math torgoch, ac yma rydym wedi cael ints. Y peth arall yw os ydym yn defnyddio gwerth arbennig fel -1 i nodi diwedd y llu yna ni allem storio -1 yn ein araeau cyfanrif. Byddem yn gaeth. Mae'n troi allan mai'r unig ffordd i gael hyd o amrywiaeth yn C yw mewn gwirionedd yn ei gofio pan fyddwch yn ei osod i fyny ac yna basio o gwmpas ag arae fel bod pryd bynnag y byddaf yn cael swyddogaeth sy'n mynd i wneud ychydig o waith ar amrywiaeth o gyfanrifau neu fflotiau neu dyblu neu beth ydych chi, Rwyf hefyd angen i chi roi swyddogaeth hyd y casgliad, gan a dyna'n union beth rydym wedi ei wneud yma yn y swyddogaeth chwilio. Os ydych yn edrych, beth ydym wedi ei wneud pan fyddwn yn pasio yn ein amrywiaeth yma, rydym hefyd yn pasio ar hyd y darn, y maint. 'I jyst yn digwydd bod ydym wedi galw y newidyn yma, paramedr hwn neu ddadl. Gelwir hyn yn rhestr ddadl swyddogaeth neu restr paramedr, ac mae'r rhain yn cael eu galw'n ddadleuon neu baramedrau. Mae pobl yn defnyddio termau gwahanol ar adegau gwahanol. Weithiau byddaf yn cyfnewid nhw fy hun. Fel mae'n digwydd bod y newidyn yma yn cael ei enwi yn yr un modd i hyn # ddiffinio hyd yma. Ond dydyn nhw ddim yr un peth. Mae'r cyfalafu yn bwysig. Os edrychwch ar yr hyn sy'n digwydd yma, rydym yn datgan ein amrywiaeth int, yr ydym wedi galw rhifau. Rydyn ni wedi rhoi ei ein maint, sy'n cyfateb i'n # diffinio i fyny ar y brig. Mae'n mynd i fod yn 8. Ac yna pan fyddwn yn galw ein swyddogaeth chwilio i lawr isod, rydym yn pasio yn y nifer rydym am i chwilio am, yr ydym wedi annog, gotten gan y defnyddiwr. Rydym yn pasio yn yr amrywiaeth, mae hyn yn rhifau, ac yna rhaid i ni hefyd basio ym maint y rhesi, ac yna gwerth faint 8 yn cael ei storio neu ei drosglwyddo at y maint yma cyfanrif a elwir yn amrywiol. Mae gennym y maint y rhesi. Nawr, os ydym yn mynd yn ôl at yr hyn yr oeddem yn sôn amdanynt yn gynharach, Rwy'n credu Missy magu y pwynt bod yr hyn roedd angen i ni ei wneud yw cael hyd y rhesi ac yn ei rannu â 2, a bydd hynny'n rhoi i ni y man canol. Gadewch i ni weld. A allaf gael rhywun ysgrifennu hwn a'i gadw yn eu lle? Beth am Leila? A allaf gael i chi ysgrifennu hyn yn? Ysgrifennwch y llinell gyntaf pan fyddwch yn cymryd hyd y rhesi a chael y man canol ac yn ei storio mewn newidyn newydd. 'N annhymerus' yn rhoi i chi eiliadau cwpl. Ydych chi'n barod? [Anghlywadwy Myfyrwyr] Cadarn, a allwn ydych chi wedi cyfrifo y man canol y rhesi tas wair y tu mewn i'r swyddogaeth chwilio ddefnyddio hyd y rhesi tas wair, sef y newidyn faint? Dim byd anodd yma. [Leila] Just maint / 2 a dim ond- A'i gadw, a tharo y botwm Save i fyny yma ar y brig, a byddwn yn tynnu i fyny. Perfect. Dyna ni. Awesome. Fel y mae, a fydd hyn yn llunio? [Leila] Na, mae angen iddo fod yn uwch. [Nate] Yeah, felly beth sydd angen i ni ei wneud? [Leila] Fel canolbwynt int neu rywbeth. Awesome. Yeah, gadewch i ni wneud hynny, int canolbwynt = maint. A fydd hyn yn llunio? Gadewch i ni ddileu'r sylw hwn ac yn ei gael allan o'r ffordd. Beth na fydd llunio am hyn? Nid ydym yn gwneud unrhyw beth gyda cyfanrif, felly mae angen ei argraffu neu rywbeth fel 'na. Yeah, yn union. Byddwn yn cael newidyn heb ei ddefnyddio. Nid Beth arall sy'n mynd i weithio am hyn? Credaf ichi ddweud rhywbeth, Sam. Hanner colon. Yeah, rwy'n goll hynny hanner colon. Mae'n mynd i fod yn beth cyson drwy gydol y cwrs y tymor. Y peth olaf 'n annhymerus' ei wneud yw byddaf yn rhoi ychydig o le gwyn ar y naill ochr y gweithredwr yma, ers hynny mae fel arfer sut rydym yn ei wneud yn ôl ein canllaw arddull. Rydym wedi cael y canolbwynt ein amrywiaeth. Nawr, os ydym yn cofio yn ôl at ein algorithm, beth oedd y ail gam y bu'n rhaid i wneud ar ôl i ni gael y man canol? [Myfyrwyr] Os yw'n fwy [Anghlywadwy]. Yeah, felly mae'n rhaid i wneud rhyw fath o gymhariaeth, a beth yr ydym yn cymharu yma? Yr oeddech yn dweud os yw'n fwy na. Beth yw hynny yn y frawddeg yn cyfeirio? Mae'r nifer sy'n dod i fyny, os yw hynny'n fwy na'r man canol, yna ewch i fyny at y casgliad? Yn union, felly mae'r nifer sy'n dod i fyny pan fyddwn yn- Mae'r nodwydd, felly rydym yn cymharu i'r nodwydd, a beth ydym yn cymharu yn erbyn y nodwydd? Oherwydd bod y nodwydd yn yr hyn rydym yn chwilio amdano. Rydym yn cymharu i gyrraedd y man canol. Ond mae'n gwneud synnwyr i edrych i weld os pwynt canol nodwydd =? Ydy hynny'n gwneud synnwyr? A oes unrhyw un yn anghytuno? Gadewch i ni roi cynnig arni, os yw (nodwydd == pwynt canol). [Myfyrwyr] Ydych printf daethoch o hyd iddo. [Nate] printf ("Rydym yn ei chael hi'n \ n!"); Fel arall-I'm mynd i ddechrau gwneud rhywbeth gwahanol yma. Rydw i'n mynd i ddechrau rhoi braces o gwmpas os datganiadau drwy'r amser dim ond oherwydd os byddwn yn ychwanegu mwy o bethau, yna nid ydym yn cael y detholwyr. Yeah, Sam. Rydych chi wedi cael pwynt. Y broblem yw bod pwynt canol yn cynrychioli sefyllfa yn yr amrywiaeth, ond gallwch ei gael i gynrychioli gwerth yn y sefyllfa honno o'r rhesi. Dyna bwynt da. A oedd pawb yn clywed yr hyn a ddywedodd Sam? Dywedodd fod canolbwynt fel y mae yn cynrychioli dim ond sefyllfa yn yr amrywiaeth, ond nid yw'n elfen gwirioneddol yn y rhesi. Os ydych yn meddwl am y cod fel y'i hysgrifennwyd ar hyn o bryd, os ydym yn edrych ar y casgliad i lawr yma, sydd 8 elfen hon ynddo, beth yw gwerth y pwynt canol yn mynd i fod yn y swyddogaeth hon? [Myfyrwyr] 4. [Nate] 4. Os ydym yn edrych am y rhif 4 - a gallwn dim ond rhedeg y cod a rhoi wyneb trist ychydig i mewn yma oherwydd nad ydym yn ei chael yn-os ydym yn rhedeg y cod hwn fel y mae ar hyn o bryd, llwytho i fyny, mae adeiladu, gadewch i mi sgrolio i lawr, ac os ydym yn edrych am y rhif 4, ni eu canfod, ond ni chawsom hyn i printf ie. Un rheswm yw nad ydym yn dychwelyd yn wir, ond nid oedd rydym yn wir yn dod o hyd i'r rhif 4? Ac mae Sam yn dweud na. Beth wnaethom ni ddod o hyd i? Rydym yn wir yn dod o hyd i'r man canol, ac os ydym yn edrych ar yr amrywiaeth i lawr yma, mae'n mynd i fod yn elfen yn y mynegai 4 sy'n rydym yn edrych ar, sy'n 23. Sut ydym yn mewn gwirionedd yn cael yr elfen honno yn y man canol ac nid dim ond y man canol ei hun? [Myfyrwyr] Byddem yn mynd i mewn torgoch neu rywbeth? Beth fyddech yn ei wneud hynny, yn unig allan o chwilfrydedd? Allwch chi ymhelaethu ychydig yn fwy? Mae'n rhaid i chi drawsnewid y sefyllfa yn y nifer, felly mae'n rhaid i chi wneud rhywfaint o gysylltiad-Rwy'n credu ei fod torgoch, ond efallai na fydd. Yeah, mae hynny'n bwynt da. Rydym wedi bod yn gwneud llawer o hyn swyddi trosi i mewn i chars, mae'r cymeriadau, yn y setiau broblem yn gyntaf dau. Mae'n troi allan bod yma, mae hyn bron yn debyg i mynediad at y cymeriad ith o fewn llinyn, os yw hynny'n gwneud synnwyr. Yma rydym am i gael mynediad i'r elfen pwynt canol. Sut rydym yn gwneud hynny? Kevin, a oes gennych unrhyw awgrymiadau ar sut y gallem wneud hynny? Gallech wneud tas wair, braced agored, canol, ar gau braced. Allwch chi ysgrifennu hynny i ni? Achub yn fan hyn, a byddwn yn tynnu hynny. Rydym yn edrych ar y llinell hon 9, ac rydym yn sylweddoli nad ydym am i gymharu y nodwydd i'r man canol, ond yn hytrach, yr ydym am gymharu y nodwydd i'r elfen yn y man canol sefyllfa o fewn ein amrywiaeth tas wair. Cool. Dyna ni. Yeah, sy'n edrych yn eithaf da, os (nodwydd == tas wair [pwynt canol]). Rydym yn ei chael yn. Nawr, os ydym yn rhedeg y cefn cod-we'll fyny ychydig bit- mae'n llunio, mae'n rhedeg, ac yn awr os edrychwn ar gyfer 4, Nid ydym yn ei chael yn awr rydym oherwydd bod mewn gwirionedd yn cael y rhif 23. Rydym yn cael y gwerth 23, a dyna beth rydym yn cymharu ein nodwydd. Ond mae hynny'n dda. Dyna gam yn y cyfeiriad cywir. Dyna beth yr ydym yn ceisio ei wneud. Nid ydym yn ceisio cymharu y nodwydd yn erbyn swyddi yn yr amrywiaeth ond yn hytrach yn erbyn yr elfennau gwirioneddol yn y rhesi. Os ydym yn edrych yn ôl eto yn awr ar y cam nesaf yn ein algorithm, beth yw'r cam nesaf? Leila eisoes wedi sôn amdano yn fyr. [Myfyrwyr] Edrychwch i weld os yw'n fwy na neu'n llai na ac yna penderfynu pa ffordd i symud. [Nate] Yeah, byddai felly sut rydym yn ei wneud hynny? Allwch chi roi mewn rhai I'll-arbed diwygiad hwn, ac yna os ydych yn rhoi mewn rhai llinellau a fydd yn gwneud hynny. Yeah, Charlotte. >> Mae gen i gwestiwn. Os na fydd canolbwynt - 1 oherwydd y peth cyntaf yw mae'n 0 mynegeio, felly os ydym yn rhoi 4, nad yw mewn gwirionedd cymeriad rydym yn chwilio amdano? Ie, ac mae'r broblem arall gyda hynny yw- mae hynny'n dal fawr, oherwydd mae'r hyn sy'n mynd i roi diwedd ar i fyny yn digwydd o bosibl os ydym yn dal i symud, ac nid ydym byth yn addasu i ddechrau? Amcana beth y gallem ei wneud yn y pen draw yn ceisio cael mynediad yr elfen ar y sefyllfa 8fed o'r array, sydd nid yn yr achos hwn yn bodoli. Byddwn yn awyddus i wneud rhyw fath o roi cyfrif am y ffaith bod gennym rywfaint o mynegeio sero. [Charlotte] Mae'n ddrwg gennyf, yn golygu pwynt canol - 1 yn y cromfachau sgwâr. Gallwn wneud hynny. Byddwn yn dod yn ôl at y mater hwn mewn dim ond ychydig. Unwaith y byddwn yn dechrau i gyrraedd y dolennu gwirioneddol, dyna pryd y byddwn yn wir yn gweld hyn yn dod i chwarae. Am y tro, gallwn wneud hyn, ond eich bod yn hollol gywir. Bydd mynegeio sero yn cael effaith y mae angen i gyfrif am. Gadewch i ni weld. Sut mae'r fwy na a llai na-? [Myfyrwyr] I gael sut i wneud y fwy na a llai na rhan. Rwy'n nid yn unig yn siwr beth i'w argraffu pe baech yn darganfod ei fod yn llai na'r man canol tas wair neu'n fwy na. Yma y gallaf ei gynilo beth I've- [Nate] Yeah, os byddwch yn arbed yr hyn sydd gennych, a byddwn yn tynnu i fyny. Dyna ni. [Myfyrwyr] Ac yr wyf yn rhoi marciau cwestiwn am yr hyn nad oeddwn yn gwybod. [Nate] Mae hynny'n edrych yn wych. Yma, rydym wedi cael marciau cwestiwn oherwydd ein bod yn dal ddim yn gwybod beth ydym yn mynd i eithaf ei wneud eto. Byddai hyn yr ydym am ei wneud-wps, rydym wedi cael rhai bresys i gyd ffynci arnom ni. Byddwn yn cywiro hyn braces. Dyna ni. Ac felly beth ydyn ni am ei wneud, yn ôl ein algorithm, os nad ydym yn dod o hyd i'r nodwydd? Dywedwch yn yr achos bod y nodwydd yn llai na'r hyn yr ydym yn edrych ar. Kevin. Dim ond edrych ar yr hanner chwith. Iawn, felly byddwn yn rhoi sylw yma sy'n dweud "edrych ar hanner chwith." Ac os bydd y nodwydd yn fwy na'r tas wair yn y man canol, beth ydym ni eisiau ei wneud? [Myfyrwyr] Yna byddwch yn edrych ar yr hanner cywir. Edrychwch ar yr hanner iawn, "yn edrych am hanner iawn." Ddim yn rhy anniben. Iawn, felly ar y pwynt hwn, mae pethau'n edrych yn eithaf da. Y broblem â'r cod fel y'i hysgrifennwyd yw beth? [Myfyrwyr] Nid oes yn rhaid ateb yr alwad i am yr haneri. Iawn, nid oes gennym ateb yr alwad i am yr haneri. Rydym hefyd yn unig yn mynd i fynd drwy hyn unwaith. Rydym yn unig yn mynd i edrych ar un pwynt canol. Naill ai yr elfen yno, neu nid yw'n. Er mwyn cwblhau hyn, bydd angen i ni wneud rhyw fath o ailadrodd. Mae angen i ni gadw ailadrodd hyd nes y byddwn yn gweld bod naill ai'r elfen yw yno oherwydd ein bod wedi culhau i lawr ac yn olaf o hyd iddo, neu nid yw'n yno oherwydd ein bod wedi edrych drwy'r holl bethau yn yr haneri priodol y rhesi a dod o hyd nad oes dim i mewn 'na. Pryd bynnag rydym wedi got hwn yn ailadrodd digwydd, beth ydym yn mynd i'w ddefnyddio? [Myfyrwyr] Mae dolen. Rhyw fath o ddolen. Ydw. [Myfyrwyr] Allwn ni wneud dolen do-gyfnod a chael gwneud hynny ac yna er bod nid yw'r nodwydd nid yw'n gyfartal-I'm siŵr ble roeddwn yn mynd â hynny. Ond math o fel gwneud hynny ar yr amod nad yw'n gyfartal y gwerth y mae'r mewnbwn defnyddwyr. Yeah, felly gadewch i ni weld, sut gallai hyn ysgrifennu ei hun? Yr oeddech yn dweud gadewch i ni ddefnyddio dolen do-gyfnod. Ble mae'r wneud dechrau? [Myfyrwyr] Dde ar ôl y maint / 2. [Nate] Iawn, a beth ydyn ni'n mynd i'w wneud? Byddwn yn llenwi'r yn ddiweddarach. Beth rydym ni'n mynd i'w wneud? [Myfyrwyr] Peidiwch â rydym am wneud yr holl bethau sydd gennym yn y gyfran os? [Nate] A yw pob pethau hyn, gwych. Adysgrifia a bastio. Oh, dyn. Gawn ni weld os yw hyn yn gweithio, os gallwn tab hwn drosodd. Beautiful. Iawn, ac rydym yn arbed hyn er mwyn i chi guys gael. Mae pob hawl, ac rydym yn mynd i wneud hyn tra- beth oedd y cyflwr pan oeddech yn ôl? [Myfyrwyr] Er nad yw'r nodwydd yn gyfartal, felly fel y pwynt ebychnod. Ond dydw i ddim yn siŵr beth yn union sydd eto. [Nate] Yeah, mae hwn yn un ffordd i wneud hynny. Sam, a oes gennych sylw? [Sam] Rwy'n cofio pan fyddaf yn edrych ar y fideos, Yr wyf yn cymryd screenshot un o'r debyg i pan wnaethom y pseudocode ar ei gyfer, roedd rhywfaint o berthynas rhwng max a min. Rwy'n credu ei fod yn rhywbeth fel pe max byth yn llai na munud. Got iddo. [Sam] Neu os nad max yn llai na munud neu rywbeth fel 'na, oherwydd byddai hynny'n golygu eich bod wedi chwilio popeth. Yeah, felly beth mae'n ei swnio fel eu max a min cyfeirio? [Sam] Gwerthoedd y-cyfanrifau sydd yn mynd i newid gymharu â ble y rhoddwn y man canol. Yn union. [Sam] Ar y pwynt hwnnw, mae'n mynd i [Anghlywadwy] cyfrifo uchafswm a min. Canolbwynt yw hyn max a syniad min. A yw hynny'n gwneud synnwyr i Folks? Pe baem yn dechrau edrych ar sut yr ydym yn mynd i wneud hyn iteriad, eich bod yn hollol iawn ein bod yn awyddus i ddefnyddio rhyw fath o wneud-tra dolen. Ond yr wyf yn dyfalu os ydym yn cofio beth sy'n digwydd yn y fan a'r lle y arae a beth sy'n digwydd mewn gwirionedd-I'm mynd i ysgrifennu dros yma- ar y fersiwn cyntaf o'r chwiliad deuaidd, rydym wedi- Rydw i'n mynd i ddefnyddio e b a i ddynodi dechrau. Ac yna y diwedd ein amrywiaeth. Rydym yn gwybod bod y dechrau yw yn 4 dde dros yma, ac rydym yn gwybod bod y diwedd yn yn 108. Dweud rydym yn chwilio am y rhif 15. Y tro cyntaf i ni wneud hyn, fel y gwelsom yn gynharach, y man canol yn naill ai'n mynd i fod yn 16 neu 23 yn dibynnu ar sut rydym yn cyfrifo pethau allan. Gan y byddai gyfartal rannu yn y canol yn rhoi i ni y gofod hwn rhwng 16 a 23, ni allwn wastad ei rannu neu ei rannu ac yn cael ar bwynt canol gwir. Byddwn yn edrych yn 16 oed. Byddwn yn sylweddoli "Hey, 16> 15 yr ydym yn chwilio amdano." I wedyn yn edrych ar hanner chwith y rhesi yr hyn y byddwn yn y pen draw yn gwneud yn taflu hwn yn rhan uchaf gyfan a dweud, "Iawn, yn awr ein endpoint yn mynd i fod yma." Mae'r fersiwn nesaf ein dolen, rydym yn awr yn edrych ar y array, yn effeithiol ar ôl taflu y rhan hon oherwydd yn awr os ydym yn cymryd y canolbwynt i fod y gwahaniaeth rhwng y dechrau a'r diwedd, rydym yn dod o hyd ein canolbwynt i fod yn 8, y gallwn yna ei brofi 8 i weld ble mae mewn perthynas â'r nifer rydym yn chwilio amdano, 15, dod o hyd bod 15 yn fwy, felly mae'n rhaid i ni symud i ochr dde y rhestr, yr ydym yn gwybod oherwydd ein bod bodau dynol, a gallwn ei weld. Rydym yn gwybod bod y gyfran gywir yn mynd i fod lle'r ydym o hyd iddo, ond nad yw'r cyfrifiadur yn gwybod hynny, felly beth byddwn yn ei wneud yw mewn gwirionedd gallwn eich wedi hyn yn mynd i fyny, ac yn awr y dechrau a'r diwedd yn y fan a'r lle un, felly y man canol yn dod yn rhif yn unig yn y rhestr ar y pwynt hwnnw, sydd yn 15, ac rydym wedi dod o hyd iddo. A yw hyn yn taflu rhywfaint o oleuni ar ble y max cyfan a nodiant min yn mynd, cadw golwg ar y pwyntiau terfyn y rhesi er mwyn chyfrif i maes sut i gyfyngu pethau i lawr? Beth fyddai'n digwydd pe na bai hyn yn hafal i 15 awr? Beth os ydym yn chwilio am 15 a, yn hytrach, y nifer hwn hefyd yn 16? Byddem yn dweud, "O, mae'n fwy. Rydym yn awyddus i fynd yn ôl i'r chwith. " A byddem yn symud ein e i'r dde, ar y pwynt gennym endpoint a fyddai'n gwrthdaro. Ni fyddai'n gallu chwilio ar gyfer elfennau unrhyw mwy oherwydd erbyn hyn mae gennym ein endpoint a'n pwynt dechrau, ein max ac mae ein min, bellach yn flipped. Rydym yn chwilio drwy'r casgliad cyfan. Ni allwn ddod o hyd i unrhyw beth. Dyna pryd y byddem yn awyddus i ddweud, "Iawn, rydym yn mynd i atal hyn rhag algorithm. Nid ydym wedi gweld unrhyw beth. Rydym yn gwybod nad yw'n yma. " Sut mae hyn yn mynd? [Myfyrwyr] Sut yn union y mae'r cyfrifiadur yn newid y diwedd? Sut mae'r pen yn y pen draw cyn dechrau? Mae diwedd yn dod i ben i fyny cyn dechrau'r oherwydd y math ein bod ni'n mynd i wneud bob tro y byddwn yn gwneud hyn. Mae'r ffordd yr ydym yn gyfnewid yw os ydych yn edrych ar yr union adeg cyntaf i ni wneud hyn cyfnewid lle mae gennym y dechrau yn 4 a diwedd yr holl ffordd i lawr yn 108 ac mae ein pwynt canol, dyweder, yn 16 oed - Rydw i'n mynd i ailosod hwn yn ôl i 15-os ydym yn chwilio am y 15, roeddem yn gwybod bod yr hyn y gwnaethom pan yn edrych ar y 16 a gwelodd ei bod yn fwy ac yn awyddus i daflu y gyfran gywir cyfan y rhestr, gwelsom fod hyn yr ydym eisiau ei wneud yw symud y neges e iawn yma. I bob pwrpas, yr e got symud i un cyn y man canol. Yn yr un modd, pan fyddwn yn gwneud hyn fersiwn o'r algorithm ac mae'r man canol oedd yn 8, canfuom fod 8 <15, felly rydym yn awyddus i symud y b wedi un y man canol. Yn awr, y dechrau a'r diwedd yn y ddau gyda'i gilydd ar hyn 15. Os byddai'n ni wedi bod yn digwydd i chwilio am ryw werth arall, nad yw 15, neu os yw hyn yn 15 wedi bod yn lle hynny a 16, byddem wedi canfod bod e ydym am symud un cyn y man canol. Nawr fyddai'r e fod yno flipped llai na'r b. Gadewch i ni gerdded drwy sut yr ydym mewn gwirionedd yn y pen draw codio y algorithm. Rydym yn gwybod ein bod am gael y cyfrifiad pwynt canol. Rydym yn gwybod hefyd ein bod yn awyddus i olrhain y dechrau a diwedd y rhesi ein amrywiaeth presennol er mwyn i ni chyfrif i maes lle yr hanner chwith y rhestr yn a lle hanner dde o'r rhestr yn. Rydym yn gwneud hynny naill ai yn dechrau ac yn gorffen, neu gallwn eu ffonio min a max. Byddaf yn defnyddio dechrau ac yn gorffen y tro hwn. Pan fyddwn yn dechrau, os ydym yn edrych yn ôl ar ein henghraifft i lawr yma, ein dechrau oedd i fod i ddechrau yn y rhesi, mor naturiol. Pa fynegai oedd hyn? Beth ddylai ein ddechrau fod? Daniel. [Daniel] Haystack [0]. [Nate] Yeah, er mwyn i ni ei osod yn gyfartal i tas wair [0]. Y broblem, fodd bynnag, yw nad yw hyn yn rhoi i ni sefyllfa yr elfen gyntaf. Mae'n rhoi mynegai o elfen gyntaf neu werth gwirioneddol yn y sefyllfa honno yn gyntaf. [Myfyrwyr] Bydd hynny'n newid i 0.20? [Nate] Beth fydd hyn yn ei wneud yw-yn dda, ni fydd yn gwneud unrhyw trawsnewid. Beth fydd yn ei wneud yw y bydd yn storio 4 mewn dechrau, ac yna bydd yn anodd i wneud cymariaethau erbyn dechrau oherwydd y bydd yn dechrau yn cynnal y gwerth o 4, sef y dechrau ein amrywiaeth, ond rydym am i olrhain y mynegeion yn yr amrywiaeth yn hytrach na'r gwerthoedd. Byddwn mewn gwirionedd yn defnyddio 0, fel 'na. Ar gyfer diwedd y rhesi-Charlotte dwyn hyn i fyny ychydig yn gynharach. Dyma lle y byddwn yn cymryd i ystyriaeth y mynegeio sero. Charlotte, beth yw'r ddiwedd y rhesi? Beth yw mynegai y diwedd? [Charlotte] Maint - 1. Yeah, ac a ddylai maint rydym yn eu defnyddio? Os ydym yn defnyddio cyfalaf maint neu faint llythrennau bach? Maint Cyfalaf. Yn yr achos hwn, gallem ddefnyddio maint cyfalaf. Os ydym am swyddogaeth hon i fod yn symudol a defnyddio'r swyddogaeth hon mewn rhaglenni eraill, gallwn mewn gwirionedd yn defnyddio maint llythrennau bach. Mae'n iawn hefyd. Ond mae Charlotte yn gwbl iawn ein bod yn awyddus i gael maint - 1. Ar hyn o bwynt [Myfyrwyr] Sut mae'n cael ei y gallwch ei ddefnyddio priflythyren faint? Sut mae'n bod gallem ddefnyddio priflythyren faint? Mae'n troi allan bod y rhain yn diffinio # yn wir, o dan y cwfl, mae testun fel canfod a newid, os yw hynny'n gwneud synnwyr. Pan fyddwch yn llunio eich cod, y cyfnod preprocessing y casglwr yn mynd trwy'r ffeil, ac mae'n edrych i ym mhobman eich bod wedi ysgrifennu maint y cyfalaf, ac mae'n disodli'r testun llythrennol gydag 8, yn union fel 'na. Yn yr ystyr hwnnw, mae hyn yn wahanol iawn newidyn. Nid yw'n cymryd i fyny unrhyw le yn y cof. Mae'n gamp testun disodli syml. Yn yr achos hwn, rydym yn mynd i ddefnyddio maint. O'r fan yma byddwn yn awyddus i wneud rhyw fath o ailadrodd, ac rydym ar y trywydd iawn gyda'n do-tra dolen. Rydym yn awyddus i wneud rhywbeth hyd nes nad yw amod yn dal anymore, ac fel y gwelsom yn gynharach, rydym yn gweld bod yr amod hwnnw oedd yn wir nad ydym am i'r diwedd i fod yn llai na'r dechrau. Mae hyn yn ein cyflwr stopio. Os bydd hyn yn digwydd, rydym eisiau rhoi'r gorau iddi ac yn datgan fel, "Hey, nid ydym wedi gweld unrhyw beth." I fynegi hyn, rydym yn awyddus i ddefnyddio rhyw fath o ddolen. Yn yr achos hwn, fod yn ddolen do-tra, a dros ddolen, dolen tra? Mae gennym ddolen do-tra yma. Ydych chi'n guys fel y dull? Ydych chi'n meddwl y dylem geisio dull gwahanol? Kevin, unrhyw syniadau? Gallem gael dolen tra oherwydd ein bod yn gwybod y mwyaf yn fwy na'r munud ar y anyways dechrau. Yeah, felly does dim initialization sydd angen i ddigwydd. Mae'r rhai dolenni yn ei wneud-tra yn wych pan fyddwch yn rhaid i ymgychwyn rhywbeth cyn hynny profi, tra yma rydym yn gwybod nad ydym yn mynd i gadw reinitializing yn dechrau ac yn gorffen pob rownd y ddolen. Rydym yn gwybod ein bod am i ymgychwyn nhw, yna edrychwch ar ein cyflwr. Yn yr achos hwn, 'n annhymerus' mewn gwirionedd yn mynd gyda dolen tra syml. Mae'n troi allan bod yn ei wneud-tra dolenni yn cael eu defnyddio yn bur anaml. Nid yw llawer o leoedd yn hyd yn oed ddysgu yn tra dolenni. Maent yn dda ar gyfer trin mewnbwn defnyddwyr, felly rydym wedi gweld lot ohonyn nhw hyd yn hyn. Ond arferol ar gyfer ac er dolenni yn llawer mwy cyffredin. Mae'n troi allan bod y cyflwr hwn ysgrifenedig fel ni fydd yn wir yn llawer wrthym yn dda, a pam hynny? Mae'n ddrwg gen i, nid wyf yn gwybod eich enw. Rwy'n Jerry. >> Mae'n ddrwg gennym? Mae'n B-O-R-U-I. O, iawn. Nid wyf yn gweld chi ar fy rhestr. O, mae'n oherwydd-oh, sy'n gwneud synnwyr. A oes gennych chi syniad o pam nad yw hyn dolen tra yn gweithio fel y bwriadwyd, ysgrifenedig fel yn achos y cyflwr? [Jerry] Rydych yn golygu fel chi am yr holl bethau ar ôl i mewn i'r-? Yeah, felly dyna un. Efallai y bydd yn rhaid i ni roi'r holl bethau hyn i mewn i'r ddolen tra sydd yn gwbl wir. Y peth arall sy'n ychydig yn fwy o broblem, fodd bynnag, yw nad yw cyflwr hwn yn gweithio. [Myfyrwyr] Mae angen i chi fflipio. Iawn, felly ni fydd yr amod hwn byth yn wir i ddechrau y ffordd yr ydym yn sôn am y peth. Rydym yn awyddus i wneud rhywbeth tan > Plus yn dechrau? [Myfyrwyr] Ar y diwedd. Oherwydd ei fod gyfrifo dim ond hanner y hyd. Mae angen i chi ychwanegu'r dechrau. [Nate] Beth fyddai hyn yn cyfrifo i ni? Os ydym yn meddwl am ddiwedd ar y fersiwn cyntaf y ddolen, diwedd yn mynd i fod mewn 7 mynegai sefyllfa. Dechrau mewn sefyllfa 0. Cofiwch, rydym yn chwilio am naill ai safle 3 neu safle 4. Os ydym yn edrych ar y math, dim ond er mwyn ei wneud yn ychydig yn fwy diriaethol, roi rhai rhifau yma, mae gennym 7, 0, hynny 7 - 0, ac yna / 2 yw 3 yn is-adran cyfanrif, hynny yw. Yna, mae angen i ni yna ychwanegu yn ôl ein dechrau? Nid ydym yn gwneud yn yr achos hwn. Ar y iteriad cyntaf, bydd yn iawn oherwydd ddechrau yw 0. Ond wrth i ni ddatblygu, rydym yn gwneud gwir i gyd, ond mae angen diwedd - dechrau / 2. Mae un tric arall yma, a dyna sef un o flaenoriaeth. [Myfyrwyr] A oes angen cromfachau? [Nate] Yn union, ac mae hynny oherwydd os nad ydym yn gosod y rhain cromfachau, yna bydd y llinell hon yn cael ei dehongli yn hytrach na fel (diwedd) - (dechrau / 2), yr ydym yn bendant yn dymuno. Gwyliwch allan am y rheolau blaenoriaeth. [Myfyrwyr] Pam nad yw'n dod i ben + yn dechrau? Pam nad yw'n dod i ben + yn dechrau? [Myfyrwyr] Pam nad yw hynny? Pam byddai hi'n +? Rwy'n credu eich bod yn gywir. [Myfyrwyr] Am ei fod gyfartaledd? [Nate] End + yn dechrau, rydych yn hollol gywir. Wow, yr wyf yn llwyr goofed. Rydych chi'n iawn. Pe baem yn gwneud y minws, byddem eisiau ychwanegu'r ddechrau yn ôl i mewn Yn yr achos hwn, rydych chi'n iawn, iawn ein bod yn awyddus i gymryd cyfartaledd y ddau, felly rydym yn awyddus i ychwanegu nhw, yn hytrach na tynnu nhw. [Myfyrwyr] Byddai hefyd yn gweithio os gwnaethoch diwedd - dechrau / 2 + yn dechrau. Byddai'n os ydym yn ei wneud-yr wyf yn credu hynny. Er enghraifft, os ydym yn edrych ar ddechrau, ac rydym yn symud drosodd yma i'r 15. Nawr yn dechrau ar safle 2. End yn safle 7. Os byddwn yn tynnu nhw, rydym yn cael 5. Rhannwch, erbyn 2, rydym yn cael 2. Ac yna rydym yn ychwanegu 2 yn ôl i mewn, ac sy'n cael ni i'r 4ydd safle, sydd ar gael yma, sef y pwynt canol. [Myfyrwyr] A oes angen i gymryd gofal o lapio? Ym mha ystyr y mae angen i gymryd gofal o lapio? Os yw'r swm neu y gwahaniaeth rhwng Nid yw dibynnu ar sut rydym yn ei wneud yn eilrif. Yna y cyfrifiadur yn cael ei drysu a pan mae'n 2.5; ydych chi'n symud i'r chwith neu i'r dde i benderfynu pa yw'r pwynt canol? Got iddo. Mae'n troi allan bod gyda is-adran cyfanrif, Nid ydym byth yn cael y rhifau pwynt arnawf. Rydym byth yn cael y degol. Mae'n taflu yn llwyr. Os oes gennych gyfrifiadur rhannu ddau newidyn int, ac un yn 7, a'r llall yw 2, Ni fyddwch yn cael 3.5 o ganlyniad. Bydd yn cael 3. Bydd y gweddill yn cael eu taflu, felly mae'n effeithiol talgrynnu- Nid rownd ond yn hytrach y llawr, os ydych guys yn gyfarwydd â'r mewn mathemateg, lle rydych yn llwyr taflu y degol, ac felly rydych yn ei hanfod yn truncating i lawr at y agosaf sefyllfa gyfan, i'r nifer cyfan agosaf. [Myfyrwyr] Ond mae hynny'n broblem oherwydd os oes gennych amrywiaeth o 7 elfen yna yn awtomatig yr elfen 3ydd allan o'r man canol yn hytrach na'r 4ydd. Sut rydym yn delio â hynny? Mae'n broblem oherwydd os ydym wedi cael amrywiaeth o 7, byddai'n ddewis y 3ydd yn hytrach na'r 4ydd. Allech chi esbonio ychydig yn fwy? [Myfyrwyr] Oherwydd os oes gennym 7 elfennau hynny roedd yr elfen 4 fyddai'r man canol, dde? Cofiwch eich sylwadau am fod yn sero mynegeio, er. [Myfyrwyr] Yeah, felly yn safle 3. Dyna fyddai'r man canol. Yeah. O, iawn. Rwy'n gweld beth ydych yn ei olygu. Mae'n fath o 'n annaearol, fel yr ydym yn dod i arfer â'r holl syniad o cael gwared o ddegolion. Dyna bwynt da. Gadewch i ni orffen hyn i fyny. Rydym wedi cyfrifo ein pwynt canol. Rydym yn profi i weld a yw ein nodwydd yn hafal i'r gwerth canol. Rydym yn argraffu ein bod yn ei chael yn, ond mewn gwirionedd, beth ydym eisiau ei wneud yn y sefyllfa hon? Rydym wedi dod o hyd iddo, felly rydym yn awyddus i adael y galwr yn gwybod ein bod yn ei chael yn. Rydym wedi cael swyddogaeth sy'n swyddogaeth deipio boolean. Mae'r ffordd yr ydym yn dangos i'r galwr am ein swyddogaeth ein bod yn barod i fynd yn yr ydym yn dweud, "Hey, mae hyn yn wir." Sut y byddem yn gwneud hynny, Kevin? Rydych yn nodio eich pen. >> [Kevin] Ychwanegu elw gwirioneddol. [Nate] Yn union, yn dychwelyd yn wir. Yn awr, os nad yw'n gyfartal, sut y byddem yn edrych ar yr hanner ar y chwith? Unrhyw syniadau? Stella, unrhyw syniadau? Mae angen i chi osod swydd newydd ar gyfer diwedd. Yeah. Felly, mae'n rhaid i ni wneud swydd pwynt canol - y diwedd. Great. Mae angen i ni osod swydd newydd ar gyfer y diwedd i edrych ar yr hanner chwith. Roedd hyn yn hyn yr ydym yn siarad amdano cyn ble Rwy'n dal i fynd yn ôl at yr enghraifft hon. Rwyf wedi y dechrau yma, ac yna yr wyf yn cael y diwedd yr holl ffordd dros yma. Unwaith eto, os ydym yn chwilio am 15, ac mae ein canolbwynt ar 16, ac rydym yn sylweddoli, "Wps, 16 yn fwy. Rydym yn awyddus i symud i hanner chwith. " Byddem wedyn yn symud y diwedd ar y 15, ac rydym yn gwneud hynny trwy gymryd un i ffwrdd oddi wrth y man canol a gosod, fel ein pen newydd. Yn yr un modd, os ydym am edrych ar yr hanner dde, sut y byddem yn gwneud hynny? A oes gennych syniad? [Myfyrwyr] Rydych yn unig yn gosod dechrau canolbwynt + 1. [Nate] Fawr. Ac yn awr yn yr achos nad ydym yn dod o hyd i unrhyw beth, mae hynny'n cael gofal a gymerwyd o i ni? Daniel, a yw hynny'n cael eu cymryd gofal i ni? [Daniel] Rhif [Nate] Os byddwn yn gwneud hynny drwy'r amrywiaeth gyfan ac nid ydym yn dod o hyd i unrhyw beth, lle byddai cael eu cymryd gofal, neu a ddylem gymryd gofal ohono? [Daniel] Mae cyflwr tra. [Nate] Yeah, y cyflwr tra, yn union. Bydd yn cymryd gofalu am fynd drwy'r casgliad cyfan os na fyddwn yn dod o hyd i unrhyw beth. Bydd y ddolen tra'n dod i ben. Ni fyddwn byth yn wedi dod ar draws y cyflwr hwn, a gallwn ddychwelyd ffug. Gallwn hefyd adael hyn os mewn yma fel hyn oherwydd os hyn os datganiad yn wir, a bydd ein swyddogaeth yn dychwelyd, ac felly gallwn eich hanfod erthylu y swyddogaeth hon ar y pwynt hwn pan fyddwn yn dychwelyd yn wir. Ond beth sy'n digwydd gyda'r strwythur yma? A fydd hyn yn gweithio yn gyfan gwbl, neu a oes rhyw nam rhesymegol i mewn 'na? Mae rhywfaint o nam rhesymegol i mewn 'na, gyda'r ffordd y mae'n sefydlu. Beth allai fod? [Myfyrwyr] Pam fod angen y - a + 1s? Mae hynny'n gosod ein amrywiaeth i fyny i fod yn 1/2 newydd i'r chwith a hanner i'r dde. [Myfyrwyr] Ond ni allai pam yr ydych yn ei wneud heb y - 1s a + 1s? [Nate] Gallem ei osod yn gyfartal i'r man canol? Beth allai fod yn broblemus am hynny? [Myfyrwyr] Amcana ei fod yn aneffeithlon oherwydd eich bod yn gwirio gwerth sydd eisoes wedi gwirio. [Nate] Yn union, felly Sam yn gwbl gywir. Os byddwch yn gosod y diwedd a dechrau yr hafal i'r man canol yn hytrach na - 1 a + 1 fyfyriol, ar ryw adeg yn y dyfodol byddwn yn y pen draw edrych ar y man canol eto. [Myfyrwyr] Dechreuais y pset, ac yna gen i rywbeth fel 'na lle yr wyf yn anghofio y 1 +, ac mae'n mynd yn sownd mewn cylch diddiwedd. Iawn, oherwydd ar ryw adeg nad ydych chi'n mynd i gael dechrau ac yn gorffen i mewn gwirionedd yn gorgyffwrdd. Cool. Mae un yn fwy nam rhesymegol, a dyna y dylai hyn fod yn bendant yn arall os. Pam y gallai hynny fod? Y rheswm yw, os nad yw'n 'an arall os-wnaethoch chi ei weld, Kevin? [Kevin] Yeah, oherwydd eich bod yn newid y pwynt diwedd. [Nate] Yn union. Rydym yn newid y endpoint, ac os caiff ei ysgrifennu fel hyn we'll-wneud mannau rhwng- bydd yn edrych ar yr achos hwn. Mae'r achos hwn, os bydd yn llwyddo, yn atal, allan o'r swyddogaeth. Yna bydd yn edrych ar yr achos nesaf, ac os bydd hyn yn llwyddo, bydd yn newid y endpoint, ac yna bydd yn parhau ar ac yn gwirio yr achos hwn. Ond ar hyn o bryd, nid ydym am iddo barhau gwirio. Yn ffodus, nid ydym wedi ailosod y man canol yma, ac rydym yn gwybod na fydd yr achos yn llwyddo. Ond rydym yn bendant am roi'r arall os oes hyd yn oed er y gallai-yn yr achos hwn gan nad ydym yn addasu'r man canol, a fyddai hynny'n gwneud gwahaniaeth? Na, oherwydd yr achosion hyn i gyd yn unigryw. Unwaith eto, fy ddrwg. Nid ydym, yr wyf yn meddwl, angen y arall os. Gallwn roi cynnig arni a rhedeg arni a gweld beth sy'n digwydd. Adeiladu, mae gwall wedi digwydd. Mae'n debyg oherwydd fy mod yn gadael y b a e yn fan hyn. A oes gennyf unrhyw mwy o'r rhai ar y top? Nid yw'n edrych fel ei. Rydym yn chwyddo allan, adeiladu, yno y mae'n mynd, felly, yn awr os ydym yn chwilio am 15, ie. Gadewch i mi chwyddo i mewn 15, ie. Gallwn gynnal eto. Llwytho i fyny cod ffynhonnell, adeiladu, rhedeg. Gallwn chwilio am rywbeth fel 13, ac nid ydym yn cael unrhyw beth argraffu allan, felly nid yw'n dod o hyd i hynny ar ein rhan. Mae hynny'n wych, gan nad yw'n yn ein rhestr. Rydym yn bellach wedi mynd allan o amser. Mae hynny'n mynd i fod ar gyfer yr wythnos hon. Diolch am ymuno, a gweld chi yn nes ymlaen. [CS50.TV]