DAVID Malan: pob hawl. Felly mae hyn yn CS50, ac mae hyn yn bellach yn dechrau'r wythnos tri. Felly, hyd yn hyn, rydym wedi bod yn ysgrifennu rhaglenni yn C sy'n edrych ychydig yn rhywbeth fel hyn yma. Felly, mae gennym ni un neu ddau o miniog yn cynnwys ar y brig. Mae gennym int, prif, yn ddi-rym, a Yna, rhywbeth i'w wneud yn y canol, rhyw ychydig o cod yn y tu mewn o'r swyddogaeth honno. Ond allweddol oedd y ffaith fod rydym wedi bod yn ei ddweud yn ddi-rym yma. Felly ddi-rym, i gyd y tro hwn, yn pennu bod y rhaglen hon, pan fydd yn rhedeg, dim ond yn cael ei redeg trwy ei enw. Ni allwch deipio unrhyw eiriau eraill neu rhifau ar ôl enw'r rhaglen pan redeg. Felly, er enghraifft, pe bai'r rhaglen yn grynhoi mewn ffeil o'r enw helo, gallech ei wneud ./hello, ond dyna ni. Yr unig ffordd i chi a allai rhoi mewnbwn i'r rhaglen hon yw drwy ffonio swyddogaeth. Er enghraifft, pa swyddogaeth rydym wedi bod yn defnyddio hyd yn hyn i gael mewnbwn gan y defnyddiwr? CYNULLEIDFA: Get llinyn. DAVID Malan: Er mwyn cael llinyn, neu cael int, neu os ydych wedi gweld pobl eraill, hyd yn oed os nad ydych wedi eu defnyddio eto, hoffi cael hir, hir ac yn y blaen. Ond mae'n debyg ein bod yn gwirionedd am ddechrau ysgrifennu rhaglenni sy'n ychydig yn fwy amryddawn, ac, a dweud y gwir, ychydig yn fwy fel y gorchmynion yr ydych wedi bod yn cael, gobeithio, ychydig yn gyfarwydd â. Fel Dropbox gofod cd. Mae hyn, wrth gwrs, newidiadau eich cyfeiriadur, gan dybio ydych chi mewn cartref John Harvard cyfeiriadur, at eich ffolder Dropbox. Yn y cyfamser, mae gorchymyn fel hyn creu cyfeiriadur newydd o'r enw pset2, eisoes fel y gallai fod gennych neu Bydd yn fuan ar gyfer problem gosod dau. Gwnewch Helo, wrth gwrs, yn gorchymyn sy'n adeiladu rhaglen o'r enw helo o ffeil o'r enw helo dot c. Ac ym mhob un o'r rhain achosion, erbyn hyn, rydym wedi cael rhoi dadl ar yr hyn a elwir yn llinell orchymyn, mae'r brydlon amrantu, fel bod yn gwneud yn gwybod beth i'w adeiladu, ac yn y blaen bod yn gwybod pa mkdir folder i greu, ac fel y cd yn gwybod lle rydych eisiau mynd. Ond hyd yn hyn, yr ydym yn dal i ddweud mai prif, eich swyddogaeth ddiofyn, Mae mynegiant ddi-rym tu mewn cromfachau hynny, sy'n golygu ei fod yn Ni ellir cymryd unrhyw ddadleuon. Felly cychwyn heddiw, yr hyn rydym yn mynd i'w wneud yw, rydym yn mynd i ddechrau cefnogi pethau fel hyn hyd yn oed. Yn wir, yn yr achos hwn, yr ydych yn nid ydynt fel arfer llaw deipio, Gwnewch wedi bod yn gwneud hyn i ni, nid oes un ond un, dau, tri ychwanegol llinynnau ar ôl y rhaglen a enwir chlang. Felly sut rydym yn cyflawni hyn? Wel, gan ddechrau heddiw, mewn achosion lle yr ydym am i roi mewnbwn drwy'r llinell gorchymyn fel y'u gelwir, rydyn ni'n mynd i ddechrau ychwanegu dyma beth sydd yn yellow-- ddi-rym disodli gyda atalnod argc int argv llinyn braced braced agored agos. Yn awr mae hyn yn ddiddorol am ychydig o resymau. Un, mae'n mynd i adael i ni ysgrifennu rhaglenni sy'n ychydig yn fwy deinamig. Ond, yn fwy nerthol, mae'n mynd i agor bellach sgwrs ynghylch hyn y gall araeau mewn gwirionedd cael eu defnyddio, ar gyfer yr hyn llinyn mewn gwirionedd o dan y cwfl, tan yr wythnos nesaf, pan fyddwn yn dechrau deifio yn hyd yn oed yn ddyfnach ynghylch sut mae'r peiriant yn gan wneud hyn oll waith stwff. Ond am nawr, gadewch i ni tynnu, efallai, llun. Pan fyddwch yn ysgrifennu rhaglen gyda phrif datgan yn y modd hwn, fel bod prif yn cymryd dwy ddadl, mae int ac-- pa fath ddata yw'r ail ddadl? CYNULLEIDFA: Array. DAVID Malan: Array. Felly, mae'n edrych ar yr olwg gyntaf fel ei fod yn llinyn, ond yn sylwi ar y cromfachau sgwâr. Dwyn i gof y tro diwethaf i ni gyflwyno y syniad o amrywiaeth. Ac araeau yn defnyddio cromfachau sgwâr mewn un neu ddau o gyd-destunau. Efallai y byddwch yn defnyddio'r sgwâr cromfachau i fynd i mewn i arae a chael elfen benodol, fel braced 0 neu fraced 1 neu fraced 2. Ond rydym yn gweld, os yn fyr, yr wythnos diwethaf eich bod hefyd defnyddio'r rhain cromfachau sgwâr i ddatgan faint o fyrdd, os ydych yn gwybod ymlaen llaw faint o ints na faint o linynnau neu beth bynnag yr ydych mewn gwirionedd eisiau. Felly, mae'n troi allan yno yn trydydd cyd-destun yma sydd heb unrhyw rif y tu mewn y cromfachau sgwâr. Pan fyddwch yn nodi, fel yr wyf wedi yma, enw rhywbeth fel argv, sydd ychydig yn ffordd ffansi o gan ddweud fector ddadl, a oedd yn ffordd ffansi arall o gan ddweud amrywiaeth o ddadleuon, braced braced agored agos yn unig yn golygu nad ydych yn ei wneud o reidrwydd gwybod ymlaen llaw pa mor fawr yr amrywiaeth yn mynd i fod, ond eich bod yn gwybod ei fod yn mynd i fod yn arae. Felly os nad ydych yn gwybod y Nid yw nifer yn ei roi i mewn 'na, gyfer braced agored braced cau yn golygu nad yw argv yn llinyn, ond mae amrywiaeth o dannau. Felly syntactically, os ydych yn meddwl yn ôl yr wythnos diwethaf, mae'n debyg iawn i ddweud rhywbeth fel int oedrannau braced agored, ac yna rhywbeth ar ôl hynny. Felly beth mae hyn yn edrych? Gadewch i ni mewn gwirionedd yn tynnu llun. Felly pan fyddwch yn rhedeg y rhaglen hon gyda Main ar ôl dau dadleuon a ddiffinnir y tu mewn y cromfachau hynny, byddwch yn yn y bôn gael o leiaf ddau ddarnau o gof rhoi i chi o dan y cwfl. Un, fel y 'n annhymerus' yn tynnu fel petryal hwn, yn mynd i gael ei alw argc. Ac yn union fel ailadrodd cyflym, beth yw'r math data o argc? Felly, ei fod yn int. Felly, mae nifer yn mynd i fynd yn eu tro argc-- sylw at y ffaith yn sefyll am cyfrif ddadl. Yn y cyfamser, rwyf wedi tynnu argv fel arae. Ac nid wyf yn wir yn gwybod pa mor hir y mae'n mynd i fod, felly at ddibenion heddiw dot dot dot. Efallai ei fod yn ei gael o ryw hyd. Ond dw i wedi y llun yma o leiaf pedwar petryal. Felly argv darn o gof y storfeydd llinyn llinyn llinyn dot dot dot, ac argc Dim ond un darn o gof ar gyfer cyfanrif. Felly nawr, gadewch i ni fod ychydig yn fwy manwl gywir. Os, pan fyddaf yn cael llinynnau yn y arae hwn, a elwir yn argv, yr wyf am gael gafael arnynt yn unigol, yn union fel yr wythnos diwethaf, rydym yn mynd i ddefnyddio nodiant fel braced argv 0 i gael y peth cyntaf arae. Argv braced 1 i gael y ail beth, ac yn y blaen. Yr hyn sy'n allweddol yma yw ein bod yn dal i fod yn 0 indexed-- rydym yn dal i gyfrif o 0. Felly nawr gadewch i ni mewn gwirionedd roi rhywbeth yn hyn. Pe bawn yn llunio rhaglen o'r enw helo o ffeil o'r enw helo dot c, ac yna yr wyf yn rhedeg y rhaglen gyda dot slaes helo, beth mae fy nghyfrifiadur, fy laptop, edrych fel o dan y cwfl hyn o bryd Rwy'n rhedeg dot slaes helo a daro Chofnoda? Wel, mae hyn yn bosibl beth y gallem ei ddisgrifio gan gynnwys eich cyfrifiadur cof, neu RAM-- Cof Mynediad ar hap. Mewn geiriau eraill, y cyfrifiadur, rywsut i chi hudol, rhoi'r rhif 1 yn argc, AKA argcount, ac mae'n rhoi llythrennol y llinyn ./hello mewn braced argv 0. Does gen i ddim syniad, a dweud y gwir, beth sydd mewn braced argv 1 neu 2 neu 3, oherwydd os nad yw'r defnyddiwr wedi deipio unrhyw beth ar wahân ./hello, rydym yn mynd i gymryd yn ganiataol bod y rhain yn werthoedd garbage fwyaf tebygol, fel petai. Mae'r rhai darnau o gof bodoli, ond nid mae i fyny i ni i edrych arnynt, oherwydd y argcount dim ond un. Yn awr, yn y cyfamser, os wyf ysgrifennu redeg rhaglen arall, cd, sy'n fwy priodol gorchymyn, yn eich amrantu gofod cd prompt-- Dropbox-- pan fyddaf yn rhedeg hynny, i bob pwrpas, pan fydd y rhaglen yn cael ei rhedeg cd, argc, tu mewn cof fy cyfrifiadur, ar gyfer y byrraf ail fwyaf y rhif 2. Ac yna argv braced o wedi cd, argv braced 1 Mae Dropbox, ac yna, wrth gwrs y gorchymyn cwblhau, felly i gyd o gof hwn ei hanfod yn mynd i ffwrdd ac ei ddefnyddio ar gyfer rhywbeth arall. A dyna pam yr wyf yn dweud dim ond hanner eiliad. Yn y cyfamser, os ydym yn ei wneud pset2 mkdir, y llun yn edrych bron yr un fath, ond gyda gwahanol dannau y tu mewn argv. Os byddaf yn gwneud dash chlang helo un syniad, dot helo c. Mae mwy o stwff yn cael ei lenwi i mewn ar gyfer argv, a argc, wrth gwrs, yw 4. Felly, mewn geiriau eraill, er bod amrywiaeth hwn gellid ei dot dot dot, o rai hyd newidiol, fel petai, byddwch bob amser yn gwybod ble y diwedd yw, oherwydd bod argc yn mynd i ddweud wrthych ar ba bwynt yn rhaid i chi roi'r gorau i edrych ar elfennau yn argv. Gallwch ond edrych ar bedwar yn y cyfanswm yn yr achos hwn. Felly, gadewch i ni yn awr yn edrych ar, efallai, rhaglen syml. Un sydd dim ond yn dweud helo i rywun fel Zamyla. Felly, yr wyf yn honni fy mod i'n mynd i ysgrifennu rhaglen mewn dim ond eiliad drwy lle gallwn i ei wneud ./hello gofod Zamyla, ac yna yr wyf am fy rhaglen i argraffu rhywbeth super-syml fel "helo, Zamyla." Nawr yn y gorffennol rydym wedi defnyddio getstring. Felly, yn y gorffennol, hyd yn oed os ydych yn newydd i raglennu, groes yn y gallech chwip i fyny a rhaglen sy'n defnyddio getstring ac wedyn yn defnyddio printf i ddweud helo i Zamyla. Ond gadewch i ni ddefnyddio getstring y tro hwn. Gadewch i mi yn lle mynd i mewn i'r Appliant ac yn cynnwys safonol Rwy'n O dot h. Gadewch i mi hefyd yn cynnwys CS50 dot h. Nawr int prif, ac erbyn hyn rwy'n ddim yn mynd i wneud yn ddi-rym heddiw. Yn lle hynny, yr wyf i'n mynd i wneud argc int argv llinyn braced braced agored agos, Nid yw pennu rhif. Ac yn awr dyma yw fy hyn a elwir yn ei wneud. Yr hyn yr wyf i'n mynd i wneud yn awr yw, rwy'n mynd i wneud yn dipyn o naid o ffydd, Rydw i'n mynd i gymryd yn ganiataol bod y defnyddiwr mynd i ddefnyddio rhaglen hon yn gywir, ac rwy'n yn syml yn mynd i gwneud printf helo,% sn. Felly dim byd newydd yno. Ond yr wyf am roi yn awr beth bynnag air y Mathau o ddefnyddiwr ar ôl enw'r rhaglen. Felly, os wyf yn gwneud ./hello gofod Zamyla, yr wyf yn eisiau rhywsut programmatically mynediad unquote dyfynnu "Zamyla." felly yr wyf yn yn gallu mynd i mewn i fy fector ddadl, fy amrywiaeth o linynnau, ac os bydd y gorchymyn, unwaith eto, roedd ./hello gofod Zamyla, pa rif ydw i'n ei eisiau i roi mewn argv yma? CYNULLEIDFA: 1. DAVID Malan: 1, oherwydd braced 0 troi allan yn mynd i fod y enw'r rhaglen, fel y gwelsom. Felly braced 1 fod ar ddechrau'r fy mod i, y defnyddiwr, wedi eu teipio. Rydw i'n mynd i fynd yn ei flaen ac arbed hyn. Rydw i'n mynd i fynd i mewn i fy ffolder lle rwyf i wedi eu rhoi y ffeil. Dw i'n mynd i wneud gwneud helo 3. OK IO yn comp. ./hello Zamyla Enter. Beth wnes i ei wneud o'i le? Yr wyf yn ei ddal gan syndod fy hun am ychydig funudau'n yno. Beth wnes i ei wneud o'i le? CYNULLEIDFA: Enw. DAVID Malan: Mae'r ffeil yn Gelwir hello3.c mewn gwirionedd. Ac yr wyf yn gwneud hynny yn unig ar gyfer cysondeb, gan ein bod i wedi Roedd gan hello.c yn y gorffennol yn y cod ar-lein. Felly gadewch i ni atgyweiria ./hello hwn braced llinell doriad 3 Zamyla. Enter. Ac yn awr mae gennym helo, Zamyla. Yn y cyfamser, gallaf newid hyn i fydd Rob, neu'n wir unrhyw air arall. Ond gadewch i ni ystyried achos cornel. Beth y byddech yn disgwyl fydd yn digwydd os Dydw i ddim deipio enw unrhyw un o gwbl? CYNULLEIDFA: Gwall. DAVID Malan: gwall o ryw fath, efallai. Gadewch i ni weld. Enter. Null. Felly printf mewn gwirionedd yn cael ei ychydig yn amddiffynnol ohonom yma, ac yn llythrennol argraffu paren agored null, ond gall pethau hyd yn oed yn waeth yn digwydd. A dim ond i ddangos rhywbeth yr ydych yn hollol Ni ddylid ei wneud, gadewch i ni fynd yn yma a dechrau procio o gwmpas. Hawl? Os wyf yn gwybod bod y darlun yn cof yn ei hanfod hyn, argv braced 1 Mae gan Zamyla, argv braced 0 Mae ./hello, neu ./hello-3. Beth sydd yn braced 2? Felly gallaf ateb hynny cwestiynu fy hun, dde? Gall Fi jyst newid y 1 i 2. Gallaf yn awr ail-grynhoi helo 3, ./hello3 Gadewch i chwyddo i mewn a daro Chofnoda. Wps. Dim dyfyniad marc. Diddorol. Felly dyna fath o oer i weld beth arall sydd yn fan hyn. Felly, beth arall sydd tu mewn fy ngliniadur? Gadewch i ni ei chadw gyda braced 3. Gwneud hello3, ./hello-3. Chwilfrydig. Ac yn awr gadewch i ni gael 'n sylweddol bold-- 50. Felly dyna wir yn deifio dwfn i mewn i gof fy cyfrifiadur. 50 mynegeion yn. Felly gwnewch helo 3 ./hello-3. Chwilfrydig. Mae pob hawl, yn awr Im 'jyst mynd i gael di-hid. Gadewch i ni fynd i 5,000. Mae pob hawl. Felly, gadewch i mi ail-grynhoi. Gwneud hello3, ./hello-3. OK. Nawr mae rhai ohonoch chi, efallai bod fod yn bwlb golau yn mynd i ffwrdd. Faint ohonoch chi wedi gweld y neges hon o'r blaen? OK. Felly, pam? Odds yw-- ac mae gwahanol bethau a all achosi hyn, ac yn amlwg eich bod yn dda company-- gennym glir achosi hyn a elwir nam segmentu. A stori fer hir ar gyfer heddiw, yr wyf yn wedi cyffwrdd segment o gof na ddylai gen i. Pan fo segment yn unig yn golygu darn o gof na ddylwn gael. Nawr bod y cyfrifiadur yn gwarantu bod os byddaf yn rhedeg ./helloZamyla y gallaf gyffwrdd argv fod braced 0 a argv braced 1. Ond argc yw gwerth 2, mae hynny'n golygu fy mod Dim ond allowed-- mae'n fath o anrhydedd system, i gyffwrdd braced 0 a braced 1. Os byddaf yn mynd unrhyw farther, mae gwbl yn mynd i fod yn gof yno. Mae fy RAM yn bodoli yn gorfforol yn y cyfrifiadur. Ond pwy a ŵyr beth sydd yno? Yn wir, rwy'n rhedeg lluosog rhaglenni ar un adeg. Efallai fy mod wedi seen-- pe na byddwn yn gwneud hyn ar y Appliant ond ar fy Mac neu PC-- allai fod gennyf gweld cynnwys e-bost. Efallai fy mod wedi gweld ar unwaith neges Rwyf wedi anfon yn ddiweddar. Mae unrhyw beth a allai fod yn lingering o gwmpas er cof gellid bod wedi defnyddio gan ffordd o hwn nodiant braced sgwâr mympwyol. Neu, yn waeth hyd yn hyn, efallai y bydd gennych hyd i un o fy cyfrineiriau y byddwn i'n teipio yn ddiweddar, y byddai rhaglen wedi ei storio mewn cof er i ddilysu mi, a yna dim ond fath o adael ei mewn RAM nes i mi roi'r gorau iddi y rhaglen honno. Ac yn wir, mae hyn yn un o y perygl ac un pwerau o ddefnyddio iaith fel C. Mae gennych fynediad dilyffethair i holl gynnwys o gof rhaglen yn, a gall yr hyn y guys ddrwg hyd yn oed yn ei wneud yn y cases-- y rhai yn enwedig pan fyddwn yn cyrraedd rhaglennu ar y we tuag at ddiwedd y semester, rydym annhymerus ailedrych topic-- hwn yn cael ei brocio o gwmpas, o bosibl, rhywun yn cyfrifiadur cof ac yn dod o hyd i bethau rhyfedd o'r fath fel y gwelsom yno. Neu hyd yn oed yn waeth eto, cyfrineiriau ei fod neu gall hi wedyn yn eu defnyddio i wneud pethau drwg. Felly, mae'n amlwg na ddylwn i wedi gwneud hyn, gan fod pethau rhyfedd yn dechrau digwydd. Yn wir, mae hon yn rhaglen chwilfriwio. Byddai hyn yn cyfateb o Mac OS neu mewn Ffenestri rhaglen ffenestri yn unig diflannu. Mae gwall annisgwyl wedi digwydd. Yn yr amgylchedd gorchymyn-lein rydym yn gweld rhywbeth fel hyn. Ond dyna pam, yn yr wyf yn syml i'n cyffwrdd cof nad yw'n perthyn i mi. Felly gadewch i amddiffyn yn erbyn hwn ychydig bach mewn ffordd wahanol drwy edrych ar y rhaglen hon yma. Felly, unwaith eto, y sgerbwd a welsom earlier-- ac rwyf wedi tynnu sylw at yr amser int. A holl brif amser mae hyn yn ei yn wir dychwelyd gwerth. Er bod yn y rhan fwyaf o'n darlith enghreifftiau nid ydym erioed wedi eu defnyddio unwaith dychwelyd unrhyw beth yn y prif. Rydym yn unig yn ysgrifennu printf agos Brace cyrliog a dyna ni. Ond ar gyfer rhad ac am ddim, yr hyn y mae'r compiler bod yn ei wneud ar eich rhan, effeithiol, yn dychwelyd 0 ar eich cyfer chi. Troi out-- ac mae ychydig yn counterintuitive-- bod 0 yn dda. Nid yw'n golygu ffug fel y cyfryw. 0 yn dda, ac unrhyw di-0 gwerth, mae'r byd wedi penderfynu, Gall arwydd gwall. Felly, os ydych wedi llanast erioed rhywbeth i fyny ar eich cyfrifiadur, neu raglen yn unig wedi marw ar chi a eich bod wedi gotten rhywfaint o ffenestr gwallus ar eich sgrin, gan ddweud gwall negyddol 49 neu wall 23-- rhywfaint value-- ymddangos yn fympwyol dyna oherwydd bod rhaglennydd wedi-godio galed gwerth fel negyddol 49 neu gadarnhaol 23 i gynrychioli unrhyw rif, mentraf ddweud, o 4000000000 bethau posibl a allai fynd o'i le mewn rhaglen. Felly, sut y gallwn eu cymryd manteisio ar hyn fy hun? Wel, gadewch i mi agor rhaglen i mi ysgrifennu o flaen llaw, a poke o gwmpas elwir lein helo 4. Ac mae'n bron yn union yr un fath, ac eithrio bod ei got ychydig o wall-gwirio. Yn yr achos hwn, rwyf wedi datgan eto prif â chymryd dau dadleuon, ond y tro hwn, ar linell 17, rhybudd Dwi'n gwneud ychydig o wiriad bwyll. Fy mod yn gwneud yn siŵr bod argc yn dychwelyd yn dychwelyd 2. Oherwydd os yw, bod golygu fy mod yn gallu ddiogel gyffwrdd nid yn unig yn braced 0, ond braced 1. Ac yr wyf yn mynd yn ei flaen ac argraffu, yn yr achos hwn, Zamyla neu Rob neu beth bynnag air i mi deipio allan. Ac yn awr dim ond i gael ychydig yn fwy priodol, Rydw i'n mynd i ddychwelyd yn benodol 0 i ddynodi popeth yn iawn. Nid oes dim wedi digwydd yn ddrwg. Ond erbyn confensiwn, yr wyf i'n mynd i dychwelyd 1, neu'n dweud y gwir unrhyw-0 heb fod yn werth, os aeth rhywbeth o'i le. Nawr, nid yw'r defnyddiwr yn mynd i wir yn sylwi ar beth sy'n mynd ymlaen. Yn wir, os byddaf yn mynd i mewn i cyfeiriadur, rydym yn chwyddo i mewn ac yn gwneud helo 4, ./hello-4 Zamyla yn ymddwyn fel yr wyf yn ei ddisgwyl. Ond os wyf nid yn lle hynny ddim yn teipio unrhyw beth, nid oes dim yn ymddangos i ddigwydd, ond nid yw'n damwain. Ac os wyf yn gwneud rhywbeth yn lle hynny fel Rob yn proctor yn rhannu Thayer-- Gwybodaeth mympwyol. Ond rhybudd, argv 1, 2, 3, 4, a Dylai 5 bodoli erbyn hyn yn y cof. Hynny, hefyd, nid yr hyn yw fy rhaglen yn disgwyl, am fy mod i wedi gwirio a yw argc hafal hafal 2 ai peidio. Felly rwy'n awr yn amddiffyn yn erbyn hyn. Yn awr, wrth fynd heibio, yr ydym yn y programmer-- neu yn hytrach yr ydym yn y users-- byth yn gweld bod 0 neu 1, ond gan ddefnyddio offeryn o'r enw Dadfygiwr, neu offer eraill, fel y byddwn yn gweld cyn hir, byddwch yn y rhaglennydd Gall mewn gwirionedd yn gweld yr hyn a allai fod yn mynd o'i le tu mewn i'ch rhaglen. Felly, unrhyw gwestiynau ar argc? Yeah. CYNULLEIDFA: Rwyf wedi gweld lle maent yn Nid yw wedi cael y cymeriad, [Anghlywadwy] newydd ei ddweud seren llinyn d, fel atalnod cymeriad seren. A ydynt yn cyfateb yma? DAVID Malan: Maent yn. Felly, y cwestiwn yw, mae gennych rhaglenni a welir o bryd i'w gilydd fel hyn nad ydynt dweud braced argv llinyn ond yn lle dweud rhywbeth fel torgoch braced argv seren. Ac mae hyd yn oed eraill amrywiadau y gallech eu gweld. Maent yn wir cyfwerth. Ar gyfer hyn, mae gennym y rhain math o olwynion hyfforddiant ar ffurf llinyn yn yr CS50 llyfrgell, ond mewn ychydig dros wythnos neu felly rydym yn mynd i gael gwared ar y rhwystr yn gyfan gwbl ac mewn gwirionedd yn edrych ar yr hyn y torgoch a'r seren yw, a sut mae'r rhai berthnasol i gof cynrychiolaeth yn fwy cyffredinol. Felly, byddwn yn dod yn ôl at hynny. Cwestiynau eraill ar ein argv neu argc? Yeah. CYNULLEIDFA: Pam ei bod yn dychwelyd gwall [Anghlywadwy]? DAVID Malan: Pam gwneud hynny dychwelyd gwall only-- oh! Yn yr achos blaenorol, pan fyddwn yn Roedd futzing gwmpas gyda'r cof, pam wnaeth dim ond yn dychwelyd gwall pan Fi 'n sylweddol deipio nifer fawr? Yr ateb byr yw, rydym yn unig got 'n ffodus. A siarad yn gyffredinol, cyfrifiadur dyrannu cof yn ddarnau, a rhoddodd ddigon darn mawr mi fod Ges i ffwrdd, heb gael sylwi, o gyffwrdd braced 2, braced 3, braced 50, ond cyn gynted ag yr wyf yn gwthio fy lwc, yr wyf yn mynd y tu hwnt i'r ffiniau'r darn o gof y system weithredu wedi rhoi i mi. A dyna pryd y mae'n glampio i lawr a dweud, dim. Gwall segmentu. Yeah. CYNULLEIDFA: Sut mae'r cyfrifiadur gwybod gwerth argc? DAVID Malan: Sut mae'r cyfrifiadur yn gwybod gwerth argc? Pan fyddwch yn rhedeg rhaglen, y rhaglen, yn ôl natur y brydlon amrantu, yn cael ei rhoi yr amrywiaeth o geiriau a gafodd eu teipio wrth yr anogwr, a oedd yn teipio wrth yr anogwr. Ac felly mae'n eich gweithredu system sydd yn ei hanfod poblogi'r dadleuon prif ar eich cyfer chi. Felly dyna un o'r gwasanaethau eich bod yn cael, math o gyfrinachol o dan y cwfl o system weithredu. Cwestiynau eraill? Yeah. CYNULLEIDFA: Beth mae tomen craidd yn ei olygu? DAVID Malan: Beth mae tomen craidd yn ei olygu? Felly dyna gwestiwn da. A gadewch i mi fynd yn ôl i mewn i cyfeiriadur hwn yma. A byddwch yn sylwi bod Mae gen i ffeil newydd yno. Mae'n wir ei alw craidd, ac mae'n mewn gwirionedd yn nodweddiadol ffeil gweddus o faint. Yn ei hanfod, yn giplun o cynnwys y cof fy rhaglen yn neu RAM pan chwalodd. A bydd hyn yn ddefnyddiol, o bosibl, ddiagnostig, unwaith y byddwn yn siarad mewn darlith yn y dyfodol ac adran am debugging, oherwydd gallwch ei wneud mewn gwirionedd y cyfateb i awtopsi digidol ar y ffeil er mwyn helpu i chyfrif i maes beth wnaethoch chi o'i le yn eich rhaglen. Yeah. CYNULLEIDFA: Ydy argc gorchymyn yn ei hun, neu gallwch chi enwi ei unrhyw beth? DAVID Malan: Cwestiwn da. Yw argc gorchymyn yn ei hun, neu gallwch ei enw unrhyw beth? Nid yw'n bendant yn gorchymyn. Mae'n syml newidyn yn enwi neu enw dadl yn, ac felly yr ydym yn gwbl Gallai galw foo hwn, gallem alw bar hwn, sy'n tueddu i fod yn y golau-i eiriau y cyfrifiadur gwyddonydd yn mynd i. Ond erbyn confensiwn, rydym yn defnyddio argc a argv. Ond dim ond yn ddynol confensiwn, dim byd mwy. Mae pob hawl. Felly troi allan, dwi wedi bod dweud yn dipyn o lie-- gwyn a dweud y gwir, yn y dyfodol, byddwch yn gweld rydym wedi bod yn dweud celwydd gwyn arall. Ond am y tro, rydym yn mynd i blicio gefn un o'r rhain. Yn yr achos yma pan oeddwn yn flaenorol rhedeg rhaglen fel ./hello neu ./hello-3 Zamyla, cawsom cynnwys fy cof cyfrifiadur yn edrych yn fras fel hyn. Ond yn cofio beth yw llinyn yn. Beth wnaethon ni ei ddweud wythnos yn ôl yr hyn y mae llinyn mewn gwirionedd o dan y cwfl? CYNULLEIDFA: Array o chars. DAVID Malan: Mae'n amrywiaeth o chars, dde? Felly, efallai y byddwn yn cael amrywiaeth o llinynnau, ond, yn ei dro, llinyn yn amrywiaeth o gymeriadau. Felly os wyf wir eisiau bod yn rhefrol pan fyddaf yn tynnu y llun, Dylid Fi 'n sylweddol yn cael eu tynnu mae'n ychydig yn fwy fel hyn, lle ym mhob un o'r rhain mynegeion o fy array argv, mae hun yn llinyn cyfan bod ei hun mewn arae. Ac yn awr y gorwedd gwyn rydym yn dweud heddiw yw nad yw'r darlun yn edrych yn eithaf fel hyn. Yn wir, mae'r sgwariau bach yn fel arfer y tu allan i'r petryalau mawr yno. Ond byddwn yn dod yn ôl at hynny cyn bo hir. Ond mae hyn yn ./hello slaes 0, fod bod cymeriad arbennig y tynnu llinell rhwng pen llinyn, ac rydym wedi cael un arall ar ôl Zamyla yn enw. Felly beth mae hyn yn ei olygu? Wel, gadewch i mi fynd yn ei flaen a agor dwy enghraifft arall sydd ar gael ar-lein. Cael ei alw'n un argv1.c ac mae'r llall yn argv2. Mae'n rhaglen super-syml sy'n yn wahanol i raglenni yn y gorffennol yn hynny nawr rwy'n defnyddio argc a argv i fyny yma. Ac yn awr yr wyf i'n integreiddio gyda gyfer dolen yn unol 18, gan i = 0 ar hyd at argc. A beth ydw i'n mynd i wneud gyda llinell hon o god yma? Yn Saesneg. Mae hyn yn amlwg yn dangos defnydd o argc. Ond yn Saesneg, beth mae ei wneud os wyf yn rhedeg y rhaglen hon? Yeah? CYNULLEIDFA: Mae'n mynd i argraffu eich sgrinio gymaint o weithiau ag y dymunwch. DAVID Malan: Yn union. Felly, beth bynnag eiriau yr wyf yn teipiwch wrth yr anogwr, 'i' mynd y mae ailadrodd nhw ar mi un i bob llinell. Felly, gadewch i ni fynd yn ei flaen ac yn gwneud hyn. Gadewch i mi fynd i mewn i fy cyfeiriadur ac yn gwneud ./argv1 argv1. Ac yn awr, gadewch i ni gadw'n syml. Gadewch i ni wneud dim byd ar y dechrau. Oedd yn argraffu un peth, ac dyna wir enw'r rhaglen, oherwydd dyna yn y braced 0. Os wyf yn awr yn dweud foo, mae'n mynd i wneud dau hynny, ac os wyf yn dweud bar foo, mae'n mynd i ddweud y tri pheth. Nawr bod yn braidd yn ddiddorol, efallai. Ond yn dwyn i gof bod argv yn amrywiaeth o dannau, ond mae llinyn yn amrywiaeth o chars, fel y gallwn gymryd pethau i fyny hollt a chymhwyso hynny sylfaenol rhesymeg a gwneud cod sy'n yn edrych ychydig yn fwy cryptig, rhaid cyfaddef. Ond drwy gael nythu dolen, rhywbeth tebyg i hyn y gallech ei gofio o Mario, er enghraifft, os ydych yn gwneud hynny fel hyn. Felly nawr yn sylwi ar linell 19, rwy'n eto yn ailadrodd dros fy dadleuon, o 0 ar hyd at argc. Ac yn awr yn unol 21-- rwy'n benthyca tric gan week-- diwethaf Yr wyf yn gwirio beth yw'r hyd y braced argv i. Im 'yn storio yr ateb hwnnw yn n. Ac yna i ddim yn integreiddio o j ar hyd at n, lle mae j ei ymgychwyn i 0. Felly, confensiwn ar gyfer cyfrif. Unwaith y byddwch wedi ei ddefnyddio i, os oes gennych dolen nythol, ni allwch ei ddefnyddio i eto, fel arall byddwch yn trosysgrifo'r, o bosibl, gwerth y tu allan i'r ddolen mewnol. Felly, Im 'yn arfer j yn ôl confensiwn. Efallai y byddwn yn defnyddio k. Os oes gennych fwy nag k, rydych yn ôl pob tebyg cael gormod nythu, fel arfer. Ond yn awr, yn sylwi fy printf llinell yn ychydig yn wahanol. Dydw i ddim yn argraffu% s, rwy'n argraffu% c, sydd, wrth gwrs, yn dalfan ar gyfer torgoch. Ac yn awr yn sylwi cystrawen hwn. Newydd. Nid ydym wedi ei weld o'r blaen. Ond yn rhesymegol, mae hyn yn unig yn golygu cael y llinyn ith yn argv a chael y jth beth? CYNULLEIDFA: Cymeriad. DAVID Malan: Cymeriad yn y llinyn. Felly, trwy ddefnyddio cromfachau sgwâr ddilyn gan bachau petryal, mae hyn yn deifio cyntaf i mewn i llinynnau argv yn, ac yna yr ail cromfachau sgwâr gyda j yn plymio i mewn i'r cymeriadau o y llinyn penodol mewn argv. Ac yna, yn unig ar gyfer mesur da, Rydw i'n argraffu llinell newydd yma. Felly nawr gadewch i mi fynd yn ei flaen ac yn agor i fyny ychydig yn fwy ffenestr fel y gallwn weld hyn ar waith. Gadewch i mi fynd i mewn i'r ffolder. Ac yn awr yn gwneud argv-2-- whoops-- gwneud argv-2, ./argv 2. Enter. Ac mae'n ychydig yn anodd i ddarllen yn fertigol, ond mae hynny'n wir enw'r rhaglen, wedi'i ddilyn gan y llinell wag. Nawr gadewch i mi fynd yn ei flaen ac yn gwneud foo. Yn yr un modd anodd darllen, ond mae'n yn wir argraffu un cymeriad bob llinell. Ac os wyf yn gwneud bar, 'i' nawr argraffu rhai fesul llinell. Felly, nid yw'r cludfwyd yma yn gymaint hynny, wow, edrychwch ar y tric newydd daclus lle gallwch gael yn y cynnwys o gymeriadau penodol arae yn, ond yn hytrach sut rydym yn cymryd y rhain sylfaenol syniadau fel mynegeio i mewn arae, ac yna'n mynegeio i mewn i amrywiaeth a oedd yn y arae, a dim ond yn gwneud cais yr un syniadau i enghreifftiau ychydig yn fwy soffistigedig. Ond y pethau sylfaenol yn ddim wir wedi newid, hyd yn oed ers yr wythnos diwethaf. Yn awr mae hyn yn fath o yn amserol, yn hynny, yn galw i gof, yn wythnos sero rydym yn chwarae gyda llyfr ffôn fel hyn. Ac er bod hyn yn amlwg yn darnau ffisegol o bapur, gallwch chi fath o feddwl am llyfr ffôn fel arae. Yn sicr, pe baech yn reimplement mae hyn darnau darnau hyn o bapur mewn cyfrifiadur, yn ôl pob tebyg byddech yn defnyddio rhywbeth fel arae i storio pob un o'r rheini enwau a rhifau o A y ffordd i gyd drwy Z. Felly, mae hyn yn braf, oherwydd mae'n caniatáu cyfle inni, efallai, er mwyn ystyried sut y gallech chi mewn gwirionedd yn gweithredu rhywbeth fel 'na. Fel gyda chyfres o ddrysau yma. Felly os wyf could-- arnom angen un wirfoddoli i ddod ar i fyny. Gadewch i ni weld. Mae wyneb anghyfarwydd efallai, wyneb anghyfarwydd efallai. Beth am yn oren? Yma. Crys oren, yn dod ar i fyny. Gadewch i ni fynd yn ei flaen yn awr ac yn symud y drysau hyn drosodd i'r ochr, symud y rhain allan o'r ffordd am eiliad. Beth yw eich enw? Ajay: DAVID Malan: Ajay. Dafydd. Neis i gwrdd â chi. Mae pob hawl. Felly mae gennym y tu ôl y chwe drysau yn ddigidol ar y screen-- neu, yn hytrach, saith drysau ar y screen-- criw cyfan o rifau. Ac yr wyf wedi dweud wrthych beth yn advance-- gytunwyd? Ajay: Nid oes dim o flaen llaw. DAVID Malan: Y cyfan yr wyf am i chi ei wneud yn awr yw dod o hyd i mi, ac i ni, mewn gwirionedd, mae'r rhif 50, un cam ar y tro. Ajay: Rhif 50? DAVID Malan: Y rhif 50. A gallwch ddatgelu beth sydd y tu ôl i bob un o'r drysau hyn syml drwy gyffwrdd 'i ag a bys. Damia. [Chwerthin] [Cymeradwyaeth] Gwneud yn dda iawn. OK. Mae gennym anrheg hyfryd gwobr i chi yma. Eich dewis o ffilmiau yr ydym drafodwyd yr wythnos diwethaf. Ajay: O, dyn. O, nid wyf erioed wedi gweld Spaceballs. DAVID Malan: Spaceballs. Mae pob hawl. Felly dal ar ddim ond un eiliad. How-- gadewch i ni wneud hyn a moment-- teachable sut yr aethoch chi ati i ddod o hyd i'r rhif 50? Ajay: Dewisais hap. DAVID Malan: Felly yr ydych yn dewis ar hap a got 'n ffodus. Ajay: Ydw. DAVID Malan: Iawn. Ardderchog. Felly nawr, nid oedd gennych gotten lwcus, beth arall allai fod wedi digwydd tu ôl i ddrysau hyn? Felly, os wyf yn mynd yn ei flaen a datgelu rhifau hyn yma, maent mewn gwirionedd mewn trefn ar hap. A'r gorau y gallech gael wneud, a dweud y gwir, yn ôl, yn y pen draw, yn yr achos gwaethaf, i gyd gwirio. Felly, rydych got super-ffodus, a oedd yn Nid yw hyn y byddem yn galw algorithm. Oes, congrats. Ond yn awr let's-- hiwmor i mi, os ydych yn gallu. Gadewch i ni fynd i'r tab hwn yma. A dyma yw'r rhifau yn amlwg yr hyn sy'n ymddangos i fod yn unrhyw drefn, ac yr oeddent yn. Ond yn awr, os wyf yn lle hynny hawliad y tu ôl i ddrysau hyn niferoedd sy'n cael eu didoli. Y nod nawr yw hefyd ddod o hyd i ni y rhif 50. Ond yn ei wneud algorithmically, ac dywedwch wrthym sut rydych chi'n mynd am y peth. Ac os ydych yn ei chael yn, eich bod yn cadw y ffilm. Nid ydych yn ei chael yn, byddwch yn ei roi yn ôl. Ajay: Felly, yr wyf i'n mynd i edrych ar y ddau ben yn gyntaf, i bennu os there's-- [Chwerthin a chymeradwyaeth] DAVID Malan: Yma byddwch yn mynd. Gadewch i ni edrych ar un o ragflaenwyr Ajay yn, Sean, nad oedd cweit mor lwcus. Iawn, felly mae eich tasg yma, Sean, yw'r canlynol. Yr wyf wedi cuddio tu ôl i'r rhain drysau y rhif saith, ond cuddio yn rhai o'r drysau hyn yn ogystal niferoedd nad ydynt yn negyddol eraill. A bod eich nod yw i feddwl am hyn rhes uchaf o rifau fel dim ond arae. Rydym yn unig dilyniant o ddarnau o bapur gyda rhifau y tu ôl iddynt. Ac mae eich nod yw, dim ond yn defnyddio'r top amrywiaeth yma, yn dod o hyd i mi y rhif saith. Ac rydym yn wedyn yn mynd i feirniadu sut yr ydych yn mynd ati i wneud hynny. Dewch o hyd i ni y rhif saith, os gwelwch yn dda. Rhif 5, 19, 13. Nid yw'n gwestiwn tric. 1. Ar y pwynt hwn nad yw eich sgôr yn iawn dda, felly efallai y byddwch yn ogystal yn dal i fynd. 3. Ewch amdani. A siarad yn blaen, ni allaf helpu ond meddwl hyn yr ydych yn hyd yn oed yn meddwl am. SEAN: Yr wyf yn gallu cymryd o dim ond y rhes uchaf. DAVID Malan: Dim ond y rhes uchaf. Felly, mae gennych dri chwith. Felly dod o hyd i mi 7. [CYNULLEIDFA gweiddi AWGRYMIADAU] Felly, y ddau o'r rhai oedd yn anhygoel am resymau gwahanol iawn. Felly, dyma lle yr ydym yn chwith oddi funud yn ôl, ac mae'r mewnwelediad allweddol yma Cafodd y drysau hyn rhifau y tu ôl iddynt a gafodd eu didoli, mae'r delfrydol bwyd parod ar eu cyfer fel y gallech ei wneud sylfaenol yn well yn yr ail example-- ac, yn wir, yr oedd Sean yn ymgais gyntaf gyda rhifau ar hap un mor before-- ond cyn gynted gan fod y niferoedd hyn yn cael eu datrys, yn debyg iawn i'r llyfr ffôn, beth allwch chi ei wneud yn amlwg? Neu sut y gallwch trosoledd wybodaeth honno? Yeah. CYNULLEIDFA: Rydych yn mynd hanner ffordd [Anghlywadwy]. DAVID Malan: Yeah. Yn union. Felly greddf gyntaf Ajay oedd i wirio y ddau ben, fel yr wyf yn cofio, ac yna rydym yn fath o gorffenedig yr enghraifft yn gyflym. Ond pe baem yn dechrau i wneud hyn yn fwy drefnus ar y llinellau hynny, ond yn dechrau efallai yn y canol, oherwydd eu bod yn didoli, cyn gynted ag y byddwn yn datgelu'r rhif 16, yr ydym felly know-- a gadewch i ni wneud yn union that-- i ni Felly, yn gwybod bod 50, rhag ofn heddiw, wedi mynd i fod ar y dde. Felly, yn union fel yn wythnos sero pan rydym rhwygodd y llyfr ffôn yn ei hanner ac yn taflu hanner y broblem i ffwrdd, un syniad yma. Gallwn daflu hanner hwn o'r broblem i ffwrdd. Ac mae'n debyg yr hyn yr ydych Gallai wneud algorithmically, unwaith y byddwch yn gwybod bod yn rhaid i 50 fod ar y dde, os yw'n unrhyw le, yn ceisio yno, yn y canol y drysau ar ôl. Wrth gwrs, 50 yn uwch na 42, felly gallwn taflu hyn sy'n weddill chwarter o'r broblem i ffwrdd, ac, yn olaf, yn nodi rhywbeth fel 50. Ond, yn union fel gyda'r llyfr ffôn, rhifau hyn eu rhoi i ni eisoes mewn drefn ddidoli, sy'n gadael i ni gyda'r cwestiwn, sut ydych chi'n gael pethau mewn trefn sortio? Ac, a dweud y gwir, ar ba gost? Mae'n un peth i fod yn rhoi y llyfr ffôn ac yna argraff ar eich ffrindiau drwy ddod o hyd rhif ffôn yn gyflym iawn, dde? Rhwygo 32 tudalen allan i ddod o hyd i person allan o 4000000000 dudalennau, dywedasom yn un enghraifft eithafol. Ond faint o amser oedd yn ei gymryd Verizon i ddatrys y llyfr ffôn? Faint o amser gymerodd hi mynd â ni didoli rhain saith rhifau? Dyna gwestiwn a rydym wedi felly hanwybyddu yn hyn yn gyfan gwbl. Felly gadewch i ni ateb y cwestiwn hwn yn awr. Ac rydym ni i gyd allan o ffilmiau nawr, ond mae gennym rai peli straen. Os, yn dweud, wyth o wirfoddolwyr Ni fyddai ots ymuno â ni i fyny yma? Gadewch i ni fynd yn ei flaen ac yn ei wneud, beth am y pedwar ohonoch, tri o chi fan hyn? Cael rhai wynebau newydd. A phedwar o chi yno? Ac now-- gadewch i ni beidio rhagfarn Yma-- a rhif wyth dros yma ar y diwedd. Dewch ar i fyny. Mae pob hawl. Felly, yr hyn sydd gennym yma am ddau ohonoch yn rhif. Os byddech chi'n hoffi mynd yn ei flaen, yn cymryd y nifer hwn. Beth yw eich enw? Artie: Artie. DAVID Malan: Artie, iawn. Rydych yn rhif 1. Amin: Amin. DAVID Malan: Amin. Dafydd. Rydych yn rhif 2. Ac yn mynd yn ei flaen, gan fy mod yn llaw chi y dalen o bapur, llinell eich hunain i fyny o flaen y gerddoriaeth yn sefyll yn yr un drefn ag i fyny yno. ANDY: Hi, Andy. DAVID Malan: Andy, mae'n braf eich gweld chi. Rhif 3. JACOB: Jacob. DAVID Malan: Jacob, rhif 4. Croeso ar fwrdd. GRANT: Grant. DAVID Malan: Grant. Rhif 5. Alanna: Alanna. DAVID Malan: Alanna, rhif 6. FRANCES: Frances. DAVID Malan: Frances, rhif 7. A? RACHEL: Rachel. DAVID Malan: Rachel, rhif 8. Mae pob hawl. Mynd yn ei flaen ac yn cael eich hun yn y drefn hon. Gadewch i mi roi un sy'n weddill cerddoriaeth yn sefyll yn eu lle. Ble ydych chi angen stondin? OK. Mynd yn ei flaen a dim ond rhowch eich rhifau lle gall y gynulleidfa weld nhw ar, mae'r gerddoriaeth yn sefyll yn wynebu tuag allan. A, gobeithio, ein cyntaf gwiriad pwyll Yma-- 4, 2, 6. Oh-oh. Arhoswch funud. Nid oes gennym 8. Angen i mi i'ch troi allan yr enghraifft rywsut. Rhif Na, mae hynny'n iawn. Gadewch i ni weld. Gallwn wneud hyn. Sefyll yn ôl. Dyna ni. Cywir. Mae pob hawl. Felly, erbyn hyn mae gennym 8, 1, 3 7, 5. OK. Ardderchog. Felly, y cwestiwn dan sylw yw, ar beth yw'r gost, a thrwy ba ddull, allwn ni mewn gwirionedd yn didoli rhifau hyn yma fel y gallwn fath o gweithio tuag yn ôl, yn y pen draw, ac decide-- mae 'n sylweddol drawiadol, mae 'n sylweddol yn effeithlon, y gallaf rannu a goncro llyfr ffôn? A yw'n wir yn effeithlon sy'n Gallaf rannu a gorchfygu darnau digidol y rhai o bapur ar y bwrdd, os efallai mae'n mynd i gostio i ni ffortiwn mewn amser neu feiciau ynni neu CPU i gael ein data mewn gwirionedd yn i mewn i rai drefn ddidoli? Felly, gadewch i ni ofyn y cwestiwn hwnnw. Off Felly cyntaf, rhifau hyn yn yn 'n bert lawer unrhyw drefn, ac yr wyf i'n mynd i gynnig un algorithm, neu broses y gallwn ddatrys Folks hyn. Rydw i'n mynd i fynd at mae hyn yn eithaf ddiniwed. Ac yr wyf i'n mynd i gydnabod ei fod yn fath o lawer i mi i lapio fy meddwl o amgylch y gosod data cyfan ar unwaith. Ond eich bod yn gwybod beth? Dw i'n mynd i wneud rhai atebion ymylol syml iawn. 4 a 2 yn allan o drefn, os bydd y nod yw i fynd o 1 ar hyd at 8. Felly, rydych yn gwybod beth? Rydw i'n mynd i gael i chi guys cyfnewid, os byddwch yn newid gorfforol swyddi a eich darnau o bapur. Nawr 4 a 6, mae'r rhain mewn trefn. Rydw i'n mynd i adael hynny fod. 6 ac 8, y rhai mewn trefn. Mynd i adael iddyn nhw fod. 8 and1, allan o drefn. Os ydych na fyddai dau meddwl cyfnewid. Nawr 8 a 3, os gallech chi guys gyfnewid. 8 a 7, pe baech guys gyfnewid. Ac 8 a 5, pe baech guys gyfnewid. Yn awr, ydw i'n ei wneud? Na, yn amlwg nid. Ond yr wyf wedi gwneud y sefyllfa yn well, dde? Beth oedd eich enw eto, rhif 8? RACHEL: Rachel. DAVID Malan: Felly Rachel Mae gan bubbled i fyny 'n bert yn effeithiol yn hyn, yr holl ffordd hyd at ddiwedd fy amrywiaeth o rifau yma. Ac felly y broblem honno yn fath o datrys. Yn awr, yn amlwg, 2 sydd angen symud ychydig, a 4 a 6 a 1. Ond yr wyf yn ymddangos i fod wedi gotten ychydig yn agosach at yr ateb. Felly, gadewch i ni wneud cais yr un hewristig naïf eto. 2 a 4, OK. 4 a 6, OK. 6 a 1, mm-mm. Gadewch i gyfnewid. 6 a 3, mm-mm. Gadewch i gyfnewid. 6 a 7 yn iawn. 7 a 5, Na. Gadewch i gyfnewid. Ac yn awr 7 ac 8. A beth yw eich enw eto? FRANCES: Frances. DAVID Malan: Frances. Felly nawr Frances yn hyd yn oed gwell sefyllfa, oherwydd erbyn hyn 7 a 8 yn cael eu bubbled yn gywir hyd at y brig. Felly, 2 a 4, OK. 4 a 1, gadewch i ffeirio. 4 a 3, gadewch i ffeirio. 4 a 6, eich bod yn iawn. 6 a 5, gadewch i ffeirio. Ac yn awr y rhai guys yn dda. Rydym yn bron yno. 2 ac 1, allan o drefn, felly cyfnewid. Ac yn awr gadewch i mi wneud gwiriad pwyll. 2 a 3, 3 a 4, 4 a 5, 5 a 6, 6 a 7, 8. Iawn, felly rydym yn ei wneud. Ond ar ba gost a wnaeth i mi didoli rhifau hyn yma? Wel, faint o gamau y gwnaeth i mi o bosibl cymryd wrth ddidoli Folks hyn? Wel, byddwn yn dod yn ôl at y cwestiwn hwnnw. Ond, a dweud y gwir, os ydych yn cael ychydig yn diflasu, dyna fath o ddatgelu yn y nad oedd hyn yn efallai yr algorithm mwyaf effeithlon. Ac yn wir, dweud y gwir, dw i'n chwysu oed yn fwy gerdded yn ôl ac ymlaen. Nad oedd yn teimlo'n arbennig o effeithlon. Felly gadewch i ni roi cynnig ar rywbeth arall. Pe gallech guys ailosod eich hunain i'r rhain wyth werthoedd. Gwaith da. Gadewch i ni edrych yn ddigidol, am ddim ond eiliad cyn i ni roi cynnig ar rywbeth arall, ar beth yn union a ddigwyddodd. Hyd yma, rydych chi ar fin i weld delweddu o'r rhain wyth bobl lle glas a choch bariau yn cynrychioli rhifau. Mae'r talach y bar, po fwyaf y rhif. Mae'r byrrach y bar, y lleiaf yw'r rhif. A beth rydych chi'n mynd i weld yn trefn ar hap yn fwy nag wyth ohonynt. Rydych yn mynd i weld bariau hyn cael trefnu yn ôl yr un algorithm, neu set o gyfarwyddiadau, sy'n byddwn yn galw hyn allan fath swigen. Felly sylwi, pob eiliad neu hynny, dau far yn goleuo i fyny mewn coch, yn cael eu cymharu gan y cyfrifiadur. Ac yna os bydd y bar mawr a'r Ychydig bar yn allan o drefn, maent yn cael eu cyfnewid i mi. Yn awr mae hyn yn hynod ddiflas i wylio hyn, yn sicr, am hir iawn, ond yn sylwi ar y takeaway-- bariau mawr symud i'r dde, bariau bach yn symud i'r chwith. Gadewch i erthylu broses hon a chyflymu hyn i fyny i fod yn llawer cyflymach, felly gallwn cael ymdeimlad lefel-uchel o'r hyn, yn wir, didoli swigen yn ei wneud. Yn wir, mae'n byrlymu i fyny at y ochr dde'r y rhestr, neu yr amrywiaeth, y bariau mwy. Ac i'r gwrthwyneb, mae'r bariau bach yn byrlymu eu ffordd i lawr i'r chwith, er ar gyflymder gyflymach nag a wnaethom o'r blaen. Felly, yn fwy anodd i weld â phobl, ond ar eu golwg dyna wir beth oedd yn digwydd. Ond gadewch i ni roi cynnig ar sylfaenol agwedd wahanol yn awr. Gadewch i ni roi cynnig ar wahanol algorithm lle rydym yn rhaid i chi guys yn dechrau yn y gwreiddiol swyddi, a oedd y gorchymyn yma. A gadewch i ni fynd yn ei flaen yn awr. Ac yr wyf i'n mynd i wneud rhywbeth hyd yn oed yn symlach, dde? Wrth edrych yn ôl, cyfnewid pairwise eto ac unwaith eto, mae bron ychydig yn glyfar. Gadewch i ni wneud pethau hyd yn oed yn fwy ddiniwed, lle os ydw i am roi trefn Folks hyn, gadewch i mi jyst cadw chwilio gyfer yr elfen lleiaf. Felly ar hyn o bryd, 4 yw'r nifer lleiaf Rwyf wedi gweld. Rydw i'n mynd i gofio hynny. Na, 2 yn well, a chofiwch fod. 1 yn oed yn llai. 3, 7, 5. OK. One-- beth yw eich enw eto? Artie: Artie. DAVID Malan: Artie. Felly, Artie, mynd yn ei flaen. Rydw i'n mynd i dynnu chi allan o'r llinell. Pe gallech ddod yn ôl yma. Ac mae angen i mi wneud lle ar gyfer iddo. Mae gennym bwynt penderfyniad yma. Sut y gallem wneud lle ar gyfer Artie yma ar y dechrau lle mae rhif 1 yn perthyn? CYNULLEIDFA: Shift. DAVID Malan: Iawn, rydym yn Gallai symud pawb. Ond yn cynnig optimization. Mae hynny'n teimlo ychydig yn blino i mi i ofyn i bedwar o bobl i symud yr holl ffordd i lawr. Beth arall allwn i ei wneud? CYNULLEIDFA: Switch nhw. DAVID Malan: eu Switch. A beth yw eich enw eto? JACOB: Jacob. DAVID Malan: Jacob, yn symud. Llawer mwy effeithlon yn unig i gael Lleoliadau cyfnewid Jacob gyda Artie, yn hytrach na gorfodi pob un o'r pedwar o'r Folks hyn, diolch yn fawr iawn, at eu sefyllfa gywir. Beth sy'n braf am Artie yn awr, ei fod yn ei safle cywir. Gadewch i ni wneud hyn eto. 2, dyna y nifer lleiaf dwi wedi gweld. 3, 7, 5. OK. 2 yn bendant y lleiaf. Nid oes rhaid i wneud unrhyw waith. Gadewch i ni wneud hynny eto. 6. Lleiaf? 8. Na. 4? Ooh. Gadewch i mi gofio 4. 3. Gadewch i mi gofio 3. 7, 5. Rhif lleiaf Rwyf wedi gweld ar tocyn hwn yw 3. Os byddech chi'n dod ar allan. Ble ydyn ni'n mynd i roi i chi? A beth yw eich enw? Alanna: Alanna. DAVID Malan: Alanna, rydym yn mynd i gael eich troi chi allan. Ond mae hynny'n fwy effeithlon, i ychydig gyfnewid dau o bobl, na chael pobl lluosog mewn gwirionedd yn ochrgamu'r drosodd. Nawr, gadewch i ni wneud hyn eto. Rydw i'n mynd i ddewis 4, felly dewch ar allan. A phwy sy'n mynd i symud? Rhif 8, wrth gwrs. Os byddaf yn dod o hyd yn awr rhif 5, dewch allan. Rhif 8 sy'n mynd i gael eich troi allan eto. Rwyf nawr yn mynd i ddod o hyd i rif 6 ar waith. 7 yn ei le. 8 yn ei le. Yr hyn yr ydym yn unig oedd yn awr yw rhywbeth o'r enw math dethol, ac os ydym yn ddychmygu'r hyn, mae'n mynd i deimlo ychydig yn wahanol. Gadewch i ni fynd yn ei flaen ac o hyn ddewislen yma, visualization-- hwn gadewch i ni newid hyn canlynol-- dod ar, Firefox. Gadewch i ni newid hyn i'r fath dethol. A gadewch i ni gyflymu pethau fel o'r blaen, a dechrau y delweddu nawr. Ac mae algorithm hwn wedi teimlad gwahanol iddo. Ar bob iteriad, dweud y gwir, mae hyd yn oed yn symlach. Im 'jyst yn dewis yr elfen lleiaf. Yn awr, a dweud y gwir, yr wyf yn got ychydig yn lwcus bod amser, gan ei fod yn datrys hynod o gyflym. Yr elfennau yn hap. Dyw hi ddim, gan ein bod yn y pen draw annhymerus gweld, yn y bôn yn gyflymach. Ond gadewch i ni weld trydydd a therfynol cysylltu yma ynghylch yr hyn sy'n digwydd. Felly, gadewch i ni fynd yn ei flaen ac yn ailosod chi guys un tro olaf i fod yn y drefn yma. Ac yn awr, yr wyf i'n mynd i fod ychydig yn fwy clyfar, dim ond i rownd allan ein algorithmau. Rydw i'n mynd i wneud hyn. Rydw i'n mynd i beidio â mynd yn ôl ac ymlaen cymaint. Dweud y gwir, Dw i wedi blino o gyd tramwyo hwn. Im 'jyst yn mynd i gymryd yr hyn yr wyf i'n a roddwyd ar ddechrau'r rhestr, ac yr wyf i'n mynd i ddidoli hynny fan a'r lle. Felly dyma ni. Rhif 4. Rydw i'n mynd i fewnosod rif 4 i mewn i restr datrys. Done. Allaf hawlio nawr, a dim ond er mwyn gwneud hyn yn fwy glir, y rhan hon o fy rhestr yn cael ei datrys. Mae'n fath o hawliad dwp, ond yn wir 4 yn cael ei ddidoli mewn rhestr o faint un. Yn awr, yr wyf i'n mynd i fynd ar rif 2. Rhif 2 Yn awr rwy'n mynd i mewnosod i mewn i'r lle iawn. Felly, lle mae 2 yn perthyn? Yn amlwg, dros yma. Felly, mynd yn ei flaen ac yn symud yn ôl, os ydych yn gallu. A pham ydych nad ydych guys yn unig yn cymryd sefyll eich cerddoriaeth gyda chi y tro hwn. A gadewch i ni rymus mewnosod chi i mewn i ddechrau'r rhestr. Felly, ychydig mwy o waith. Roedd rhaid i mi symud o gwmpas Jacob, a beth yw eich enw? Amin: Amin. DAVID Malan: Amin. Ond o leiaf doeddwn i ddim yn mynd yn ôl ac ymlaen. Im 'jyst yn cymryd pethau fel yr wyf yn mynd. Im 'jyst yn eu mewnosod yn y lle iawn. 6, mae hyn yn eithaf hawdd mewn gwirionedd. Gadewch i chi mewnosoder dros yno, os ydych yn dim ond eisiau symud drosodd ychydig. Rhif 8, hefyd yn eithaf hawdd. Hawl dros yno. Damia. Rhif 1 na allwn yn unig cyfnewid gyda Amin yma, oherwydd mae hynny'n mynd i llanast i fyny y gorchymyn. Felly mae'n rhaid i ni fod ychydig yn fwy clyfar. Felly, Artie, os gallech yn ôl i fyny am funud. Gadewch i ni fynd yn ei flaen ac yn symud yn awr, yn wahanol ein algorithmau blaenorol, i wneud lle i Artie i'r dde yma ar y dechrau. Felly, ar ddiwedd y dydd, rwy'n fath o gwneud yr hyn yr oeddwn am i osgoi blaen. Ac felly mae fy algorithm yn fath o wrthdroi, yn ddeallusol, i'r hyn oedd yn wreiddiol. Im 'jyst yn gwneud y newidiol ar bwynt gwahanol. Nawr fy mod yn 3. O, damn. Mae'n rhaid i ni wneud mwy o waith eto. Felly gadewch i ni gwthio chi allan. Gadewch i ni symud 8, 6, 4-- oh oh-- a 3 yn mynd i fynd yn iawn yno. Felly, ar ychydig arbedion o leiaf y tro hwn. 7, dim gormod o waith i'w wneud. Felly os ydych am i pop yn ôl, gadewch i chi fewnosod. Ac yn olaf, 5, os ydych yn awyddus i pop yn ôl, rydym yn angen i symud i chi, i chi, chi, tan bump yn ei le. Felly nawr i weld hyn ar lefel uchel ar ffurf graff, gadewch i ni wneud algorithm hwn delweddu un amser ychwanegol. Felly, byddwn yn galw hyn yn fath gosod. Byddwn yn rhedeg yn union fel y gyflym, a dechrau yma. Ac mae'n, hefyd, mae 'na olwg gwahanol. Mae'n fath o yn gwella ac yn well, ond nid yw byth yn berffaith nes i mi fynd i mewn ac yn llyfn yn y bylchau hynny. Oherwydd, unwaith eto, rwy'n dim ond yn cymryd yr hyn Im 'yn cael ei roi o'r chwith i'r dde. Felly doeddwn i ddim yn mynd mor lwcus bod popeth yn berffaith. Dyna pam yr oedd gennym y rhain ychydig mispositions ein bod yn sefydlog dros amser. Felly yr holl o'r algorithmau hyn yn ymddangos i rhedeg ar ychydig yn wahanol gyflymdra. Yn wir, a fyddech chi'n ei ddweud yw y gorau neu'r cyflymaf hyd yn hyn? Didoli Bubble, y cyntaf? Didoli Dethol, yr ail? Didoli Mewnosod, y trydydd? Yr wyf yn clywed rhai mathau dethol. Sylwadau eraill? Felly, mae'n ymddangos bod pob un o'r algorithmau hyn yn eu hanfod yr un mor effeithlon â pob other-- neu, i'r gwrthwyneb, yn union fel aneffeithlon â'i gilydd, oherwydd y gallwn ei wneud yn sylfaenol well na bob un o'r tri o algorithmau hyn. A dyna dipyn o gorwedd gwyn, hefyd. wrth ddweud mor effeithlon neu fel aneffeithlon, dyna o leiaf ar gyfer gwerthoedd super-mawr o n. Pan fyddwn wedi dim ond wyth o bobl yma, neu efallai 50 neu lai bariau ar y sgrin, byddwch chi'n hollol sylwi gwahaniaethau ymhlith y rhain tri algorithmau. Ond fel n, mae nifer y bobl, neu nifer o rifau, neu nifer y bobl yn y ffôn llyfr, neu nifer o dudalennau gwe yn y gronfa ddata Google mynd yn fwy ac yn fwy, byddwn yn gweld bod pob un o'r tri o'r rhain algorithmau yn eithaf gwael mewn gwirionedd. A gallwn wneud yn sylfaenol yn well na hynny. Gadewch i gymryd golwg, yn olaf, ar yr hyn y gallai'r algorithmau hyn swnio fel yn y cyd-destun ychydig o rai eraill yn ogystal drwy hyn delweddu yma fydd yn ein cyflwyno i nifer o algorithmau. Gadewch i ni fynd yn ei flaen ac yn llongyfarch ein cyfranogwyr yma, pob un ohonynt didoli eu hunain yn dda iawn. Os hoffech gymryd anrheg Parting. Gallwch chi gadw eich rhifau hefyd. A beth byddwch yn gweld, neu yn hytrach yn clywed, yn awr, yw bod wrth i ni roi synau i bob un o'r bariau hyn ac yn ei gysylltu â'r meddalwedd, wahanol amledd y sain, gallwch lapio eich meddwl mwy audioly gwmpas hyn y mae pob un o'r pethau hyn edrych fel. Y cyntaf o'r rhain yw gosod fath [Tones] Mae hyn yn fath swigen. [Tones] Didoli dethol. [Tones] Rywbeth o'r enw math uno. [Tones] Didoli Gnome. [Tones] Dyna ni am CS50. Byddwn yn eich gweld ar ddydd Mercher. Adroddwr: Ac yn awr, "Deep Meddyliau, "gan Daven Farnham. Pam ei fod yn i dolen? Beth am wneud yn well? Byddwn yn gwneud pum dolen. [Chwerthin]