[Powered by Google Translate] [Wythnos 2, Parhad] [David J. Malan, Prifysgol Harvard] [Mae hyn yn CS50. - CS50.TV] Mae pob hawl. Mae hyn yn CS50, ac mae hyn yn y diwedd wythnos 2. Os ydych yn disgwyl i fod yn newynog tua'r adeg hon yfory, gwybod ein bod ni'n mynd i gynnull fel grŵp bach yfory, dydd Iau, 1:15 pm. Mae hyn yn URL yma os hoffech i ateb. Gofod yn gyfyngedig, felly os gwelwch yn dda maddau os yw'r ffurflen wedi llenwi erbyn i chi lenwi'r allan. Arall URL, fodd bynnag, a allai fod o ddiddordeb yw hwn. Mewn dim ond ymhen rhyw fis, mae'r cwrs yn mynd i fod ar gael yn fwy cyffredinol drwy EDX, trwy y bydd Folks ar y Rhyngrwyd yn gallu dilyn ar hyd, cymryd rhan yn y cwrs yn eithaf yn weithredol, mewn gwirionedd. Byddant yn defnyddio'r Offer CS50 a CS50 Trafod ac mae'r rhan fwyaf o'r offer meddalwedd amrywiol ein bod eisoes wedi bod yn defnyddio y semester hwn. Ac un o'r mentrau a byddem yn hoffi i gymryd ymlaen fel arbrawf eleni yw gweld yn union faint o gynnwys y gallwn drosi'r i ieithoedd llafar ac ysgrifenedig arall. Felly, os allai fod gennych ddiddordeb mewn cymryd rhan yn y prosiect hwn lle byddwn yn darparu trawsgrifiadau Isdeitlau Saesneg a ar gyfer darlithoedd y cwrs a siorts a seminarau ac adrannau ac yn y blaen, os ydych yn siarad yn rhugl neu ysgrifennu yn rhugl mewn iaith arall, byddem wrth ein bodd i gymryd rhan chi yn y prosiect lle byddwch yn derbyn un neu fwy o'r fideos, eu cyfieithu i iaith eich bod yn gwybod yn eithaf da. I roi syniad i chi o'r rhyngwyneb, mae hwn yn rhyngwyneb defnyddiwr ar y we y byddwn yn defnyddio a fydd yn creu hanfod UI fel hyn. Roedd hyn yn i mi addysgu rhai Calan Gaeaf yn ôl, ac ar yr ochr dde-law yno mewn du nesaf wrth y rhain stampiau amser, byddwch yn gweld y pethau amrywiol ddaeth allan o fy ngheg y diwrnod hwnnw, ac yna islaw iddo byddwch yn gallu cyfieithu i mewn i rai iaith arall union beth y mapio hwn yw rhwng, yn yr achos hwn, Saesneg ac, yn dweud, Sbaeneg. Felly, mewn gwirionedd mae'n iawn hawdd i'w ddefnyddio offeryn. Gallwch ail-ddirwyn ac yn gyflym ymlaen yn rhwydd iawn gyda llwybrau byr bysellfwrdd. Felly os hoffech chi gymryd rhan yn yr arbrawf hwn a chael eich geiriau gweld a darllen trwy o bosibl miloedd o Folks i maes 'na, os gwelwch yn dda mae croeso i chi gymryd rhan. Un gair am y gath fach o ddydd Llun. Rhag rydym wedi anfon neges yn rhy frawychus, yn sylweddoli hynny, fel oriau swyddfa yn awgrymu ac fel adrannau yn awgrymu, cynllun y cwrs yn fawr iawn wedi cydweithio i fyfyrwyr ac yn siarad i weithio drwy setiau problem a phroblemau gyda'i gilydd, ac yn wir y llinell yn unig yn dod i lawr i, eto, dylai'r gwaith yr ydych yn y pen draw gyflwyno eich hun yn unig. Ac felly yn gwbl onest, yn ystod oriau swyddfa mae'n hollol normal, mae'n gwbl i'w ddisgwyl, hyd yn oed, i fod yn sgwrsio gyda rhai ffrind nesaf i chi. Os yw ef neu hi yn cael trafferth gyda rhai pwnc a ydych chi fel, "O, wel, gad i mi roi cipolwg o rai llinell o god a ysgrifennais," mae hynny'n iawn, hynny'n digwydd, ac mae hynny'n fawr iawn ffafriol, yr wyf yn meddwl, gyda'r broses o ddysgu. Pan fydd y llinell yn cael ei chroesi yw pan fydd y pennaeth yn fath o ogwydd dros yma am ychydig eiliadau llawer gormod o neu gofnodion ar gyfer y iawn ein bod wedi bod yr un cyfle dadflocio ar gyfer eich ffrind, ac yn sicr pan fydd pethau'n cael eu cyfnewid drwy e-bost a Dropbox ac yn y blaen, yno hefyd yn y llinell. Felly ar bob cyfrif yn teimlo'n gyfforddus ac yn teimlo eu hannog i sgwrsio gyda ffrindiau a chyd-ddisgyblion am psets a mwy, a dim ond yn sylweddoli bod yr hyn yr ydych yn y pen draw cyflwyno ddylai mewn gwirionedd fod yn gynnyrch dy greadigaeth di, ac nid rhywun arall. Ac felly un o'r problemau parth-benodol ar gyfer pset2, a fydd yn dod allan yn hwyr nos yfory, yw i neidio i fyd cryptograffeg, sef y grefft o amgryptio neu sgrialu gwybodaeth, ac mae hyn yn y pen draw yn berthnasol i'r byd o ddiogelwch. Nawr, diogelwch ar gyfer y rhan fwyaf ohonom yn dod ar ffurf eithaf cyffredin fecanweithiau. Mae pob un ohonom enwau defnyddwyr a chyfrineiriau, ac mae pob un ohonom enwau gwael iawn a chyfrineiriau, yn fwyaf tebygol. Os yw eich cyfrinair yn yr un fath ar wefannau lluosog, nad yw mae'n debyg y syniad gorau, gan y byddwn yn trafod tuag at ddiwedd y semester. Os yw eich cyfrinair yn cael ei ysgrifennu ar nodyn gludiog - dim jôc - ar eich monitor, nad yw gormod o reidrwydd y dyluniad gorau, ond yn dipyn o ffenomenon cyffredin. Ac os nad ydych yn defnyddio cryptograffeg i amgryptio eich cyfrineiriau, maent yn arbennig o agored i niwed. Felly, os ydych yn meddwl eich bod yn cael eu super glyfar drwy gael dogfen Word cudd rhywle ar eich disg caled sydd wedi eich holl passwords ond mae'n mewn ffolder nad oes unrhyw un yn mynd i edrych i mewn, nad yw gormod yn fecanwaith diogel iawn. Ac felly yr hyn y bydd pset2 cyflwyno yn y grefft o cryptograffeg a sgramblo gwybodaeth fel bod pethau fel cyfrineiriau yn oed yn fwy diogel. Y cyd-destun yma yw bod â data ansicr daw cyfle i amgryptio ac i scramble hynny. Ac felly mae hyn, er enghraifft, yn enghraifft o neges wedi ei amgryptio. Mae hyn mewn gwirionedd yn dweud rhywbeth yn Saesneg, ond nid yw'n amlwg yn gwbl amlwg. A byddwn yn dod y cylch llawn heddiw i dynnu ar wahân beth mae hyn yn neges gudd yma. Ond yn y byd go iawn o gyfrifiaduron, nid yw pethau'n hyd yn oed edrych fel y gallent fod yn ymadroddion Saesneg. Er enghraifft, mae hyn yn hyn y gallech ei gael ar Linux safonol neu Mac neu UNIX cyfrifiadur mewn ffeil a oedd unwaith ar y tro a elwir yn y ffeil gyfrinair. Erbyn hyn mae wedi cael ei symud i fannau eraill. Ond os ydych yn edrych yn y lle iawn ar system, byddwch yn gweld nid yn unig eich enw defnyddiwr neu bobl eraill ar y system, ond byddwch yn gweld fersiwn amgryptio eu cyfrinair. Yn wir, y crypt gair yno yn awgrymu bod y pethau canlynol yn amgryptio, ac mae hyn yn gyfres o lythyrau sy'n ymddangos ar hap a chymeriadau a rhifau ac yn y blaen Gellir ei dadgriptio yn unig yn gyffredinol yn gwybod rhywfaint o gyfrinach - gair cudd, mae nifer cyfrinach - ac felly yn wir, y grefft o cryptograffeg yn y pen draw boils i lawr i ymddiried o ryw fath ac yn gwybod rhywbeth nad yw rhywun arall yn ei wneud. Felly, byddwn yn archwilio hyn yn fanwl ychydig mwy o heddiw ac yn y pset i ddod. Ac yn awr gair ar basio / methu. Yn enwedig gan fod rhai ohonoch wedi syrthio i mewn i pset1, y Appliance, a byd newydd iawn i chi eich hun, yn sylweddoli bod rhwystredigaeth a dryswch a dim ond anawsterau technegol yn eithaf i'w ddisgwyl, yn enwedig gyda'r pset cyntaf, lle mae dim ond cymaint newydd, dim ond cael gyfarwydd â ls a cd a holl orchmynion hyn dirgel ac amgylchedd newydd, a dyna wahân i'r deunydd gwirioneddol a rhaglennu ei hun. Felly yn sylweddoli hefyd fod yn sicr mae yna oriau swyddfa sy'n bodoli fel strwythur cymorth. Adrannau yn dechrau dydd Sul hwn i ddod. Ond yn bwysicaf oll, os ydych yn teimlo'n unig nad yw hyn yn y byd i chi, sylweddoli ei bod yn wir yn unig yn cymryd amser. Ac oni bai am y cyfle hwn flynyddoedd yn ôl i mi o gymryd tocyn dosbarth / methu, yn onest, nid wyf erioed y byddai wedi gosod hyd yn oed droed yn yr ystafell ddosbarth. A allwch chi newid hyn nes ar, dyweder, dydd Llun rhan o bump o'r cwrs, felly os ydych chi ar yr ymyl yn awr, yn sylweddoli, yn hytrach na pen i mewn i rai dyfroedd eraill yn gyfan gwbl, yn sicr yn ystyried dim ond newid i basio / methu. Unwaith eto, nid oes gymaint â hyn diwylliant yma yn Harvard o gymryd pethau pasio / methu gan fod pawb yn awyddus iawn i gyflawni neu overachieve, ond dweud y gwir, mae hyn yn ffordd wych o roi cynnig rhywbeth allan Ni allai fod yn gyfarwydd i chi, a byddwch yn y pen draw yn gwneud, yn y rhan fwyaf o achosion, yn eithaf iawn, efallai fawr at eich syndod. Ac mewn termau diriaethol mwy, yr hyn yr wyf yn meddwl pasio / methu yn gyffredinol yn ei wneud, yn enwedig fel y byddech wedi cael profiad gyda pset0, os byddwch yn rhoi 10 awr, 15 awr, 25 awr i rai pset a ydych ond yn taro eich pen yn erbyn y wal ac mae'n mynd yn super yn hwyr yn y nos ond eich bod wedi cymryd y pset 90% o'r ffordd, ac ni allwch ffigwr allan un peth, pasio / methu mewn gwirionedd yn cymryd y ymyl oddi ar y dosbarth fel hyn, lle gallwch chi ddatrys o hapus yn dweud, "Iawn, yr wyf yn gwybod nad yw'n berffaith, ond yr wyf yn gweithio fy ass i ffwrdd ar hyn, rwy'n eithaf hapus gyda lle yn y diwedd, " a fydd yn bodloni disgwyliadau ar gyfer pasio / methu. Felly, yn cadw hynny mewn cof. Mae pob hawl. Felly, y rhai ohonoch sydd wedi cael trafferth i ddefnyddio Brifysgol Harvard Wi-Fi, yn gwybod bod yna SSID CS50, cysylltiad Wi-Fi, fel y bo'r angen o gwmpas y gallai fod gennych well lwc i. Mae'n eironig fawr fod y cyfrinair ar gyfer hyn, os hoffech i geisio cysylltu i hyn ar gyfer cyflymderau gwell - a gadewch i ni wybod os does dim gwell - yn 12,345, yr holl ffordd i fyny at 8 oherwydd 8 yn fwy diogel na 5. Felly, os ydych angen y cyfrinair Wi-Fi, cysylltu â CS50 wirelessly yma, 12,345,678, a swydd ar CS50 Trafod os oes gennych materion cysylltedd ysbeidiol, a byddwn yn gadael i'r pwerau sydd eu gwybod am y gofod. Mae pob hawl. Felly teaser cyflym, yn enwedig i'r rhai ohonoch sydd yn fechgyn neu ferched gefnogwr o bob Apple bethau. Beth ddylwn i ei gloddio i fyny o ychydig flynyddoedd yn ôl roedd y ffeil yma, iUnlock.c, yn unig i fath o wneud yn fwy cadarn ac yn fwy cymhleth rhai o'r rhaglenni mwy sylfaenol C rydym wedi bod yn ysgrifennu. Felly, yr wyf yn agor y ffeil, iUnlock.c. Mae ar gael ar y dudalen Darlithoedd ar gyfer heddiw. Ar yr ochr chwith byddwch yn gweld rhestr hir o swyddogaethau. Felly, y cyd-a ysgrifennodd y ysgrifennodd llawer o swyddogaethau, yn fwy na dim ond y prif. Defnyddiodd criw cyfan o lyfrgelloedd yma, ac os ydym yn dechrau sgrolio drwy, beth hyn mewn gwirionedd yw yn y cyntaf, yr wyf yn credu, crac ar gyfer y iPhone gwreiddiol. Pan fyddwch yn eisiau i jailbreak y iPhone gwreiddiol, sy'n golygu untether rhag AT & T ac mewn gwirionedd yn gosod meddalwedd arbennig arno a gwneud pethau na Apple oedd eisiau i bobl ei wneud, rhywun yn cymryd yr amser i ffigur yn union sut y gallent fanteisio diffygion meddalwedd, camgymeriadau, bygiau, yn Apple meddalwedd, ac felly ei eni iUnlock.c-- os ydych yn luniwyd ar eich cyfrifiadur a gosod ei roi ar iPhone a gafodd ei gysylltu â'ch cyfrifiadur drwy, er enghraifft, mae cebl USB, byddai hyn yn rhoi i chi breintiau gweinyddol neu wraidd ar eich iPhone ac yn gadael i chi wneud 'n bert lawer beth bynnag y dymunwch. Ac felly mae wedi bod y gath ryfeddol a gêm llygoden rhwng Apple a gweddill y byd yn enwedig gan eu bod, fel llawer o gwmnïau, ceisio gloi eu stwff i lawr fel y gallwch ond ei wneud ag ef yr hyn y maent yn bwriadu. Ond diolch i bobl fel hyn a'r ddealltwriaeth o lefel isel manylion - ac yn yr achos C rhaglennu - ac mae llawer o'r lluniadau cyfarwydd ein bod ni wedi dechrau chwarae gyda, byddwch yn gallu mewn gwirionedd trosoledd y caledwedd mewn modd gwelwch yn dda ac nid o reidrwydd rhyw endid corfforaethol. Felly, er enghraifft, nid oes gennyf unrhyw syniad beth hyn i gyd yn ei wneud, ond GetVersion swnio'n eithaf syml, ac mae'n edrych fel hyn yn swyddogaeth fod y person ysgrifennodd. Mae'n cymryd rhyw fath o cyfanrif fel dadl, nid yw'n dychwelyd unrhyw beth, ond mae'n ymddangos ei dolen gyda gyfer dolen yma ac os yw cyflwr, os egwyl cyflwr, a rhywsut yn cyfeirio at niferoedd fersiwn os ydym sgroliwch i lawr, er bod llawer o'r rhain keywords yn mynd i fod yn newydd. Ac mae llawer gyfan o swyddogaethau yma nid ydym erioed wedi gweld ac efallai na byth yn gweld yn ystod y semester. Ar ddiwedd y dydd, mae'n dilyn yr un rheolau a rhesymeg yr ydym wedi bod yn chwarae ag ef hyd yn hyn. Felly, mae hyn yn llawer rhy hen i fynd i'r afael eich iPhone neu 3s 4s neu'n fuan 5 y dyddiau hyn, ond yn gwybod ei fod yn gyd yn fawr iawn yn deillio o'r byd hwn ein bod wedi syrthio i mewn i. Gadewch i ni edrych ar enghraifft ychydig yn fwy syml: hwn, dim ond er mwyn cael cynhesu i fyny gyda rhywfaint o gystrawen a hefyd data fath rhai eraill ein bod ni wedi siarad amdano, ond nid ydynt wedi gweld mewn gwirionedd yn C. Mae hon yn ffeil o'r enw positive1.c, ac am bob y sylwadau ar y brig, hyn dim ond yn mynnu bod defnyddiwr yn rhoi rhif positif. Felly mae'n enghraifft o ddolen do-tra, sydd yn braf ar gyfer rhaglenni defnyddwyr rhyngweithiol lle mae angen i chi ddweud wrth y defnyddiwr i wneud rhywbeth, ac os nad ydynt yn cydweithredu i chi gweiddi arnynt neu wrthod eu mewnbwn. Enghraifft o hyn: yr wyf yn mynd i wneud llinellau 19 trwy 24 ar yr amod nad yw'r defnyddiwr wedi rhoi i mi rhif positif. Mae'r manylion yma ar llinell 18, pam wnes i ddatgan n uwch na hyn dolennu cyfan adeiladu yn hytrach na i'r dde nesaf i llinell 22 lle Fi 'n weithredol gofal i gael n? Yeah. [Myfyrwyr] Scope. >> Yeah, felly mae'r mater o gwmpas. Ac mewn termau lleyg, beth yw cwmpas cyfeirio at? Yeah. A all >> [Anghlywadwy ymateb y myfyrwyr] >> ydych yn siarad ychydig yn uwch? [Myfyrwyr] Ble y gallwch gael y newidyn. >> Perfect. Ble y gallwch gael mynediad i newidyn penodol. Ac yn gyffredinol, y rheol y fawd hyd yn hyn yw bod y cwmpas rhai amrywiol yn cael ei ddiffinio gan y bresys mwyaf diweddar cyrliog eich bod wedi gweld. Ac felly yn yr achos hwn, os wyf yn gwneud y camgymeriad o ddatgan n ar-lein 22, byddai llinell gweithio. Byddwn yn cael int, a byddwn yn ei roi i mewn i'r n amrywiol yn llinell 22, ond a fyddai llinell o god yn awr yn cael unrhyw syniad beth rwy'n siarad amdano? >> [Myfyrwyr] 25. [Malan] 25, ac mae'n troi allan 24 o dda oherwydd yn yr achos hwn yn disgyn y tu allan i'r braces cyrliog. Felly, dim ond ychydig bach o niwsans, ond yn hawdd iawn eu datrys gan syml yn datgan y newidyn y tu allan i'r swyddogaeth ei hun. Byddwn yn gweld yn nes ymlaen heddiw gallwch fynd un cam ymhellach a gallech hyd yn oed yn cael ychydig yn ddiog. Ac nid yw hyn yn cael ei argymell yn gyffredinol, ond gallech hyd yn oed gael ddiog ac yn rhoi amrywiol yn fyd-eang, felly i beidio â siarad, y tu mewn swyddogaeth, nid tu mewn dolen, ond yn y ffeil ei hun, y tu allan i holl swyddogaethau rydych wedi ysgrifennu, fel y gwneuthum yma ar llinell 15. Mae hyn yn gyffredinol yn gwgu arno, ond yn sylweddoli hyn yn ateb weithiau i broblemau eraill, gan y byddwn yn y pen draw weld. Felly, am nawr, byddwn yn ei adael fel hyn, ond gadewch i ni weld os allwn ni ailysgrifennu hyn dim ond i ddechrau mynegi ein hunain ychydig yn wahanol. Mae'r rhaglen hon, dim ond i fod yn glir, yn positive1. Gadewch i mi fynd yn ei flaen yma ac yn fy ffenestr terfynell yn gwneud positive1, Enter. Llunio iawn. Rydw i'n mynd i redeg positive1, daro Chofnoda. I fynnu eich bod yn rhoi i mi gyfanrif positif. Byddaf yn dweud -1. Nad oedd yn gweithio. 0, 99. Mae hynny'n ymddangos i weithio. Efallai nad yw'r prawf mwyaf trwyadl, ond o leiaf mae'n gwiriad bwyll 'n glws ein bod ar y trywydd iawn. Felly nawr gadewch i mi fynd yn ei flaen ac agor fersiwn 2 o hyn, a beth sy'n wahanol yn barod? Mae'n gweithredu yr un peth, ond beth sy'n neidio allan fel yn amlwg yn wahanol y tro hwn? Mae hyn yn bool mewn gwyrdd. Mae'n cael ei amlygu mewn gwyrdd, y gair allweddol a elwir yn bool, sy'n fath data. Nid yw'n dod a adeiladwyd i mewn i pob fersiwn o C. Mae angen i chi gynnwys llyfrgell benodol. Yn ein hachos ni, yr wyf yn cynnwys y llyfrgell CS50 fel bod gennym fynediad i bool. Ond yn llinell 18, rydym yn ymddangos i fod â gwerth Boole yma a elwir yn ddiolchgar. Gallwn fod wedi galw hyn unrhyw beth, ond yr wyf yn ei alw'n ddiolchgar dim ond i fath o gyfleu rhywfaint o ystyr semantig. Felly, i ddechrau ar llinell 18, Dwi ddim yn ymddangos yn ddiolchgar oherwydd bod y gwerth ddiolchgar Boolean yn cael ei ymgychwyn i ffug mewn llinell 18. Ac yna mae'n ymddangos hyn yr wyf wedi ei wneud yma yn y llinellau 21 drwy 23 yn cael ei Rwyf wedi dim ond math o hailysgrifennu fy rhesymeg. Felly dim swyddogaethol gwahanol, ond yn llinell 22 awr yr wyf yn gwirio a yw'r int y defnyddiwr wedi darparu yn fwy na 0, yna yr wyf yn newid y gwerth ddiolchgar i gwir. A pham ydw i'n gwneud hynny? Oherwydd yn llinell 25, mae'n debyg yr wyf i'n mynd i wirio cyflwr. Gwnewch hyn dolen tra ddiolchgar yn ffug. Felly, yr wyf cynnig hwn fel dewis arall yn lle fersiwn 1 oherwydd ei fod yn o leiaf ychydig yn fwy 'n athrylithgar efallai, mae ychydig yn fwy cadarn yn y Saesneg. Felly, yn gwneud y canlynol tra nad ydych chi'n ddiolchgar neu tra ddiolchgar yn ffug. A'r tro hwn wyf yn rhy debyg nad oes gofal i gofio beth y defnyddiwr deipio mewn oherwydd rhybudd does dim n amrywiol, felly mewn gwirionedd, yn gelwydd bach gwyn yno. Swyddogaethol, mae'r rhaglen yn ychydig yn wahanol ar ôl i ni fynd at wraidd ohono oherwydd nid wyf ddim yn cofio beth yw n. Ond yr wyf yn awyddus i ddangos yma hefyd bod hyd yn oed er ein bod wedi gweld GetInt a GetString cael ei ddefnyddio ar yr ochr dde-law o arwydd hafal hyd yn hyn er ein bod yn cofio y gwerth, yn dechnegol, nid yw hynny'n hollol angenrheidiol. Os am ​​ba bynnag reswm nad ydych yn unig yn gofalu i achub y gwerth, 'ch jyst eisiau i wirio gwerth, sylwch y gallwn yn syml ysgrifennu hyn fel GetInt, agored paren, paren agos. Swyddogaeth honno yn mynd i ddychwelyd gwerth, fel yr ydym wedi bod yn ei ddweud. Mae'n mynd i roi i chi yn ôl yn int. Ac felly os ydych yn feddyliol yn meddwl am hyn yn digwydd, pan fyddaf yn teipio mewn 99, GetInt yn dychwelyd y nifer 99, ac felly gysyniadol, mae fel bod fy cod mewn gwirionedd yn hyn. Felly, os 99 yn wir yn fwy na 0, yna ddiolchgar dod yn wir, Yna, llinell 25 sylweddoli www, rydym yn ei wneud am fy mod i'n awr yn ddiolchgar, ac yn unol 26, yr ydym yn syml yn dweud, "Diolch am y cyfanrif positif!" beth bynnag y digwyddodd i fod. Nawr gadewch i ni wneud ychydig o siwgr cystrawennol yma, felly, i siarad. Gadewch i ni weld os allwn lanhau y llinell hon 25 gyda hwn amrywiad trydydd a'r olaf yn positive3. Sylwch ar y wahaniaeth yn unig yn awr yw pa linell o god? >> [Myfyrwyr] 25. >> [Malan] Yeah, 25. Ac nid ydym wedi gweld mewn gwirionedd hon castia eto, ond rydym yn gweld y pwynt ebychnod ar ddydd Llun, sy'n dynodi beth? >> [Myfyrwyr] Heb. Nid >> neu negyddu. Felly, yn cymryd gwerth Boole ac yn troi ei werth. Gwir yn dod yn ffug, ffug yn dod yn wir. Felly, mae hyn, byddwn yn cynnig, hyd yn oed ychydig yn fwy 'n athrylithgar ffordd o ysgrifennu y cod oherwydd fy mod yn dal i ymgychwyn ddiolchgar i ffug, yr wyf yn dal yn gwneud y canlynol, Wyf yn gosod ddiolchgar yn wir pan ddaw'r amser, ond yn awr y gallwch chi mewn gwirionedd dim ond cyfieithu cod hwn ar ôl ar lafar i'r dde, tra (ddiolchgar!); oherwydd bang neu ebychnod yn dynodi pwynt y syniad o beidio, felly tra nad ddiolchgar. Felly, unwaith eto, nid ydym wedi cyflwyno unrhyw gysyniadau newydd fel y cyfryw. Rydym yn siarad am Booleans ôl pan fyddwn yn chwarae gyda Scratch, ond yn sylweddoli nawr gallwn dim ond dechrau ysgrifennu ein cod mewn llawer o ffyrdd gwahanol. Felly, yn enwedig yn pset1 os ydych yn fath o ymdrechu i chyfrif i maes ffordd i ysgrifennu rhai rhaglen, groes yn eich bod yn lwc gan na all fod unrhyw nifer o atebion eich bod yn gallu digwydd arnynt. Er enghraifft, mae hyn yn dim ond 3 i hyd yn oed y symlaf o raglenni. Mae pob hawl. Ac yn awr yn cofio ddydd Llun i ni adael ar y nodyn gyda gwerthoedd dychwelyd. Felly, am y tro cyntaf i ni ysgrifennu rhaglen nad yw'n unig yn brif; mae ganddo hefyd ei swyddogaeth ei hun arferiad i mi ysgrifennu yma. Felly, yn llinell 31 trwy 34 Rwyf wedi gweithredu swyddogaeth ciwb. Dyw hi ddim yn gymhleth. Mae'n dim ond * a * a yn yr achos hwn. Ond yr hyn sy'n bwysig am y peth yw fy mod i'n cymryd mewnbwn yn y ffurf ac rwy'n dychwelyd cynnyrch ar ffurf a * a * a. Felly, yn awr yr wyf yn cael y gallu, yn debyg iawn Roeddwn i'n arfer gyda prinf ei ben ei hun, i alw y swyddogaeth hon drwy ffonio'r swyddogaeth ciwb. Ac mae'r swyddogaeth ciwb cymryd rhywfaint o fewnbwn, a'r swyddogaeth ciwb yn dychwelyd rhywfaint o allbwn. Ar y llaw arall, dim ond printf gwneud rhywbeth. Nid oedd yn dychwelyd unrhyw beth yr ydym yn gofalu am, er fel neilltu yw'n dychwelyd gwerth; chi dim ond yn gyffredinol anwybyddu. Printf dim ond gwneud rhywbeth. Roedd yn sgîl-effaith o argraffu ar y sgrin. Mewn cyferbyniad yma, mae gennym y, swyddogaeth ciwb sydd mewn gwirionedd yn dychwelyd rhywbeth. Felly, ar gyfer rhai sy'n gyfarwydd â hyn, mae'n syniad gweddol syml. Ond ar gyfer rhai sy'n llai cyfarwydd â'r syniad o basio mewn mewnbynnau a mynd yn ôl allbynnau, gadewch i ni geisio syml rywbeth yn unig super. A oes unrhyw un yn gyfforddus yn dod i fyny ar y llwyfan yn fyr? Mae'n rhaid i chi fod yn gyfforddus gyda chamera ar chi yn ogystal. Yeah? Iawn. Beth yw eich enw? >> [Myfyrwyr] Ken. >> Ken. Mae pob hawl. Ken, yn dod ar i fyny. Ken yn mynd i fod yn swyddogaeth o fath yma. Gadewch i ni fynd ymlaen a gwneud hyn. Gadewch i ni gael ychydig o ffansi. Braf i gwrdd â chi. Croeso i ganol y llwyfan. Mae pob hawl. Gadewch i ni daro y botwm yma. Mae pob hawl. Felly dyma oes gennych bwrdd sialc modern, a'r hyn yr wyf yw prif swyddogaeth, er enghraifft, ac nid oes gennyf iPad yn fy llaw. Dwi ddim yn cofio sut i - Wel, ni allaf ddweud hynny. Dwi ddim yn cael llawysgrifen da, ac felly'n rwyf am i chi argraffu rhywbeth ar y sgrin i mi. Yr wyf yn bod y brif raglen, ac yr wyf i'n mynd i gael i chi ddweud hyn drwy ysgrifennu yn fy crafu cyw iâr ac yna basio eich mewnbwn. Felly, er bod gwirion yr ymarfer hwn yw, y syniad o swyddogaethau a galw swyddogaeth a dychwelyd swyddogaeth wir boils i lawr i hyn. Yr wyf yn cyfan, yr wyf wedi ysgrifennu newydd printf, dyfynnwch-unquote rhywbeth ar y sgrin, Yr wyf yn rhedeg y rhaglen, a chyn gynted ag printf yn cael ei alw, mae'n cymryd un ddadl neu un paramedr weithiau rhwng dyfynodau dwbl. Dyma yw y ddadl. Rwy'n ei throsglwyddo i Ken. Mae'n blwch du ysgrifennu rhai nifer o flynyddoedd yn ôl sy'n ymddangos yn unig yn gwybod sut i argraffu pethau ar y sgrin. Felly gweithredu. Dyw hynny ddim yn ddrwg. Da iawn. Felly nawr Ken yn cael ei wneud gweithredu. A oes angen iddo roi unrhyw beth i mi yn ôl? Nid ein bod wedi gweld hyd yn hyn. Unwaith eto, printf mewn gwirionedd yn dychwelyd nifer, ond rydym yn mynd i anwybyddu hynny am y tro oherwydd nid ydym erioed wedi ei ddefnyddio. Felly dyna ni am Ken. Ac felly, yn awr yn cymryd drosodd prif rheolaeth ar y rhaglen eto oherwydd bod llinell o god, printf, yn cael ei wneud gweithredu. Ac rydym yn mynd am ein ffordd, beth bynnag gweithredu llinellau eraill yno. Felly nawr gadewch i ni geisio enghraifft ychydig yn wahanol. Mae'r amser yma yn gyntaf gadewch i glirio'r sgrin, a'r tro hwn byddwn yn gwneud y swyddogaeth cubing, ond y tro hwn, yr wyf yn disgwyl gwerth allbwn. Felly, gadewch i ni fynd ymlaen a gwneud hyn. Nawr mae gennyf linell o god sy'n dweud x yn cael ciwb o x. Mae llinell o god, galw i gof, yn edrych fel hyn: x = ciwb (x); Felly, sut mae hyn yn mynd i weithio? Gadewch i ni fynd yn ei flaen ac yn rhoi sgrin gwyn eto. Yr wyf yn mynd i ysgrifennu i lawr yn awr y gwerth x, sydd ar hyn o bryd yn digwydd bod yn, gadewch i ni ddweud, 2 i gadw'n syml. Yr wyf wedi ysgrifennu i lawr ar ddarn o bapur werth 2, sef fy x gwerth. Rwy'n ei roi i Ken. >> Ac yr wyf yn ysgrifennwch yr ateb? >> Yeah, gadewch i ni dim ond ysgrifennwch yr ateb. Iawn. Ac yn awr mae'n rhaid iddo ddychwelyd i mi rhywbeth. Perfect. Nice segue. Felly nawr ei fod dwylo fi yn ôl y gwerth o 8 yn yr achos hwn, a beth ddylwn i ei wneud ag ef? A dweud y gwir - gadewch i ni weld, gael hyn yn iawn. Beth ydw i'n mynd i wneud â hi? Nawr rwy'n mynd i gymryd y gwerth hwn ac mewn gwirionedd yn ei storio yn y darnau yr un yn y cof. Ond sylwi Rwy'n fath o trafferthion yma. Rwy'n ychydig yn ddryslyd oherwydd lle ydw i'n ysgrifennu mewn gwirionedd y gwerth x, oherwydd yr hyn yr wyf wedi ei wneud yn unig yw Ken gorfforol llaw darn o bapur sy'n cael y gwerth 2, a oedd yn x, ac yn wir, dyna yn union beth ddigwyddodd. Felly, mae'n troi allan bod pan fyddwch yn ffonio y swyddogaeth a byddwch yn mynd heibio mewn dadl fel helo, byd neu byddwch yn mynd heibio mewn dadl fel 2, yn gyffredinol, ydych chi'n digwydd pasio mewn copi o'r ddadl. Ac felly yn union fel ysgrifennais i lawr y rhif 2 yma a'i roi i Ken, y mae'n rhaid golygu fy mod yn dal i gael copi o'r gwerth 2 rhywle oherwydd yn wir, yn awr fy mod i wedi gotten yn ôl y gwerth 8, mae angen i mi fynd yn ôl yn y RAM ac mewn gwirionedd yn ysgrifennu i lawr 8 lle cefais unwaith roedd y rhif 2. Felly, yn weledol, cofiwch syniad hwn o pasio i mewn, yn llythrennol, copi o'r gwerth. Ken yn gwneud ei beth, dwylo i mi rhywbeth yn ôl - yn yr achos hwn gwerth fel 8 - ac yna rhaid i mi wneud rhywbeth gyda gwerth hwnnw os ydw i eisiau ei gadw o gwmpas. Felly bydd hyn oll yn dod yn ôl i fod yn rhy gyfarwydd cyn bo hir. Diolch yn fawr am y demo yma, Ken. [Cymeradwyaeth] Da iawn chi. Gadewch i ni weld sut yn y pen draw yn berthnasol i rai o'r swyddogaeth galw ein bod ni wedi bod yn ei wneud yma. Gadewch i mi fynd yn ei flaen ac yn dod â ni yn ôl at yr enghraifft cubing yma. Sylwch fod, os ydym am i mewn gwirionedd yn dechrau mynd â hyn ymhellach, rydym yn mynd i gael i fod yn ymwybodol o'r ffaith bod y x rhif sy'n cael ei basio i mewn yma yn wahanol i'r hyn mewn gwirionedd yn cael eu pasio i mewn i'r swyddogaeth. Felly, unwaith eto, mae hyn yn pasio drwy copi yn mynd i fod yn eithaf bwys yn mewn dim ond hyn o bryd. Gadewch i ni edrych ar rywbeth nad yw'n llwyr gweithio'n iawn eto. Rydw i'n mynd i fynd yn ei flaen ac agor enghraifft bygi parti, sy'n cael ei ddiffygiol gan natur, ac fe'i gelwir buggy3 a fydd yn gweithredu swyddogaeth cyfnewid. Yma mae gennym swyddogaeth prif sydd wedi x ac y ymgychwyn yn fympwyol i 1 a 2, yn y drefn honno. Gallem ddefnyddio GetInt, ond rydym yn unig angen ymarfer syml, felly mae'n hard-coded fel 1 a 2. Mewn llinellau 21 a 22, gennym, mae'n debyg argraffu x ac y, 1 y llinell. Yna, ar llinell 23, gallaf wneud cais am yr wyf yn cyfnewid gwerthoedd hyn, dot, dot, dot. I bob golwg alw swyddogaeth yn llinell 24 cyfnewid elwir sy'n cymryd 2 dadleuon. Mae'n hollol cyfreithlon ar gyfer swyddogaethau i fynd â 2 dadleuon. Rydym wedi gweld printf wneud yn barod. Felly gyfnewid pob golwg yn cymryd x ac y, ac fel yr awgryma'r enw, Byddwn yn gobeithio ei fod yn mynd i gyfnewid y 2 gwerthoedd. Felly, yna gallaf hawlio ar-lein 25 "cyfnewid!" ac yr wyf ailargraffiad x ac y o dan y rhagdybiaeth eu bod wedi cael eu cyfnewid yn wir. Ond os wyf mewn gwirionedd yn rhedeg y rhaglen - gadewch i mi agor ffenestr terfynell, gadewch i mi wneud buggy3 - fel mae'r enw yn awgrymu, nid yw hyn yn mynd i orffen yn dda oherwydd pan wyf yn taro Mewnbynnu, yn sylwi bod x yn 1, y yw 2, ac eto ar ddiwedd y rhaglen, maent yn dal i fod, mewn gwirionedd, yr un fath. Hynny ar sail yr arddangosiad yn unig yn awr gyda Ken, beth sy'n digwydd mewn gwirionedd? Gadewch i blymio i mewn i hyn swyddogaeth cyfnewid. Mae'n super byr. Dim ond ychydig linellau o god hir. Ond beth yw'r broblem sylfaenol yn seiliedig ar y stori syml dweud i fyny yma gyda Ken? Pam mae cyfnewid torri? [Myfyrwyr] Rydych yn storio i beidio copi, y newidyn. Yn union. Rydym yn storio peidio i gael copi, y newidyn ei hun. Mewn geiriau eraill, cyfnewid pob golwg yn cymryd 2 dadleuon, yn int, ac fe'i gelwir yn fympwyol a b, ac, a hyd yma rwyf wedi pasio yn x ac y, sydd yn y drefn honno 1 a 2, ond dydw i ddim yn llythrennol basio yn x, dydw i ddim yn llythrennol basio yn y, Rwy'n pasio copi o x a chopi o y. Mae'n bron fel petaech copïo a gludo i mewn i gyfnewid gwerthoedd yr ydych am iddo mewn gwirionedd trin. Felly, os yw hynny'n wir, pan fyddaf yn dechrau rhaglen gweithredu llinell 35, yna 36, pan fyddaf yn mynd i linell 37, yn y fan hon yn y stori, beth yw gwerth? Ar y pwynt hwn yn y stori, llinell 37, beth yw gwerth ar y pwynt hwn? >> [Myfyrwyr] 1. [Malan] unig a ddylai fod yn 1, iawn, oherwydd x ei basio i mewn fel y ddadl gyntaf, a swyddogaeth hon dim ond fympwyol yn galw ei ddadl gyntaf. Yn yr un modd yn y ddadl ail, a 'i' jyst fympwyol ffonio'r b ail ddadl. Mae'r ddeuoliaeth mewn gwirionedd yn eithaf hegluro'n syml. Meddyliwch am y peth. Nid oes yr un ohonom wedi cwrdd â'r person a ysgrifennodd printf, felly yn sicr, bydd ef neu ganddi ddim syniad beth yw ein newidynnau 30 mlynedd yn ddiweddarach yn mynd i gael eu galw. Felly, mae'n rhaid cael gwahaniaethu rhwng yr hyn a alwch newidynnau mewn swyddogaethau rydych chi'n ysgrifennu a beth fyddwch yn ffonio newidynnau mewn swyddogaethau ydych yn ffonio neu ddefnyddio. Felly, mewn geiriau eraill, yr wyf wedi ysgrifennu fy newidynnau fel x ac y, ond os yw rhywun arall wedi ysgrifennu y swyddogaeth cyfnewid, bydd ef neu hi na fyddai yn sicr yn gwybod beth yw fy newidynnau yn mynd i gael ei alw, felly yn sylweddoli bod hyn yn pam yr ydych yn cael y ddeuoliaeth o enwau. Yn dechnegol, gallwn wneud hyn drwy gyd-ddigwyddiad, ond byddent yn dal i gael eu trosglwyddo i mewn fel copïau. Byddai yn unig fod yn gyd-ddigwyddiad pur esthetaidd os yw'r person a ysgrifennodd cyfnewid wedi defnyddio'r un enwau. Felly, ar y pwynt hwn yn y stori, llinell 37, a yw 1, b yw 2, ac yn awr fi yn myned rhagof i gyfnewid eu cyfer. Yn gyntaf oll, gadewch i mi mewn gwirionedd yn gwneud hyn yn llawer mwy syml. Nid wyf yn gwybod beth yw'r 3 llinell o god yn ei wneud. Gadewch i mi wneud hyn: b = a; a = b; wneud. Pam mae hyn yn torri, yn rhesymegol? Mae'n fath o beth sythweledol, dde? Felly b yn dod, ac b yn dod yn, ond y broblem yw bod cyn gynted ag y bo llinell 37 executes, beth yw'r gwerth a b a? Mae'r un peth, 1, oherwydd eich bod wedi taro, fel petai, rydych chi wedi newid b yn hafal i a. Felly, unwaith y bydd llinell 37 wedi cyflawni, mae hynny'n wych, bellach mae gennych 2 gopi o'r rhif 1 y tu mewn swyddogaeth hon, felly, yna pan fyddwch yn dweud yn unol 38 a = b, eich bod yn fath o sgriwio oherwydd eich bod yn neilltuo dim ond 1-1. Rydych chi wedi fath o golli y gwerth yr ydych yn gofalu amdano. Felly, yn y fersiwn wreiddiol o hyn, sylwi ar beth wnes i. Yn hytrach, roedd nhrydedd linell o god sy'n edrych fel hyn. Yr wyf yn datgan newidyn dros dro. Tmp yn enw cyffredin iawn ar gyfer newidyn dros dro, ac ei fod yn int oherwydd mae'n rhaid iddo cyfateb i'r hyn yr wyf am wneud copi o. I storio copi o tu mewn tmp, felly unwaith y llinell 37 wedi cyflawni, y gwerth yw - gwiriad pwyll cyflym - 1, y gwerth b yw 2, a gwerth tmp hefyd yn 1. Felly, yn awr yr wyf gweithredu llinell 38. Unwaith y bydd llinell 38 executes, a mynd ar werth b. Ac b yn 2, felly mae yn awr 2. Felly, ar y pwynt hwn yn y stori, a yw 2, b yw 2, ac tmp yw 1, felly yn awr yn rhesymegol, gallwn werthfawrogi dim ond sw n plopian tmp ar i b ac rydym yn ei wneud. Felly, rydym wedi datrys y broblem honno. Yn anffodus, pan fyddaf yn rhedeg y rhaglen ar y ffurflen hon, nid yw'n mewn gwirionedd yn cyfnewid unrhyw werthoedd. Ond i fod yn glir, pam? Wyf yn sefydlog y broblem rhesymegol o ychydig funudau'n ôl, ond unwaith eto, os byddaf yn rhedeg y rhaglen, x ac y yn aros yn ddigyfnewid erbyn diwedd y gweithredu y rhaglen. [Myfyriwr yn Anghlywadwy] >> Nid ydym wedi dychwelyd unrhyw beth, felly mae hynny'n wir. Ond mae'n troi allan mae ychydig o broblem yma oherwydd hyd yn hyn, yr unig beth rydym wedi bod yn gallu dychwelyd yn un peth, ac mae hyn yn cyfyngu ar C. Gallwch ddychwelyd yn wir un gwerth, ac os felly rwy'n math o sownd yma gan y byddwn yn dychwelyd y gwerth newydd x neu gallwn ddychwelyd y gwerth newydd y, ond yr wyf am i yn ôl. Felly nid ddychwelyd yw'r ateb syml yma. Ond y broblem sylfaenol yw pam? Beth ydym ni wedi cyfnewid mewn gwirionedd? [Myfyrwyr] a a b. >> A a b. Ond mae a a b yn copďau o x ac y, sy'n golygu ein bod yn unig oedd hyn i gyd gwaith, rydym yn unig treulio 3 munud yn siarad am y swyddogaeth cyfnewid a pob un o'r 3 o'r newidynnau hyn, ac mae hynny'n wych, yn hollol gywir yn ei ben ei hun, ond a a b yn chwmpas yn unig yn y llinellau hyn yma. Felly, yn union fel ar gyfer ddolen, os ydych yn datgan yn gyfanrif i tu mewn i'r ddolen ar gyfer, yn yr un modd, os ydych yn datgan y tu mewn i ac yn b swyddogaeth yr ydych wedi ysgrifennu, eu bod yn unig y tu mewn dilys y swyddogaeth honno, sy'n golygu cyn gynted ag y cyfnewid yn cael ei wneud cyflawni ac rydym yn mynd o linell 24 i linell 25 oed, ni x ac y wedi cael eu newid o gwbl. Rydych yn unig gwastraffu llawer gyfan o amser yn gyfnewid copïau o newidynnau. Felly, mae'n troi allan fod yr ateb i hyn mewn gwirionedd heb fod yn amlwg. Dyw hi ddim yn hen ddigon i ddychwelyd gwerthoedd oherwydd ni allwn ond dychwelyd 1 gwerth, ac rwyf wir yn awyddus i gyfnewid ddau x ac y ar yr un pryd, felly rydym ni'n mynd i gael i ddod yn ôl i hyn. Ond am nawr, yn sylweddoli bod y mater yn deillio sylfaenol o'r ffaith bod a a b yn gopïau ac maent yn eu cwmpas eu hunain. Gadewch i ni geisio datrys hyn mewn rhyw ffordd. Gadewch i mi mewn gwirionedd yn sgrolio yn ôl yma ac yn agor i fyny, gadewch i ni ddweud, amrywiad pedwerydd hyn, buggy4. Beth am hyn? Mae hon yn broblem debyg ond symlach i edrych ar cyn inni gymryd drywanu yn ei datrys. Mae'r rhaglen hon yn cael ei alw'n cynyddiad, ac mae'n debyg initializes cyfanrif x i 1 yn llinell 18. Yna hawlio x yw 1, yr wyf wedyn hawlio "incrementing ..." Yna, galwaf ar cynyddiad, ond yna mewn llinellau 22 a 23, yr wyf yn ei hawlio wedi bod yn mynd i fyny, Gallaf wneud cais am x yn awr beth bynnag ydyw - 2, yn ôl pob tebyg - ond mae'r rhaglen yn bygi. Beth yw'r broblem? Yeah. >> [Anghlywadwy ymateb y myfyrwyr] >> Yn union. Felly x wedi cael ei ddatgan, yn amlwg, ar-lein 18. Dyna y tu mewn i brif braces cyrliog. Felly, yr ateb syml yma yw, tra bod x yn bodoli yma, Nid yw'n bodoli mewn llinell 32, felly mae'r rhaglen, ni fydd mewn gwirionedd hyd yn oed yn llunio. Mae'r compiler pan fyddaf yn roi cynnig ar lunio'r cod hwn yn mynd i gweiddi arna i am rai dynodwr heb ei ddatgan neu rywbeth i'r perwyl hwnnw. Yn wir, gadewch i ni geisio. Mae hyn yn gwneud buggy4. Mae ydyw. Defnyddio 'x' dynodwr heb ei ddatgan yn llinell 32. Ac mewn gwirionedd, gadewch i ni fod yn fwy eglur yma heddiw fel bod hyn yn ddefnyddiol yn ystod oriau swyddfa ac yn y cartref. Hysbysiad ei fod yn ychydig yn gryptig ysgrifenedig. Ond mae'r ffaith bod Clang wedi yelled ni, gan ddywedyd buggy4.c: 32:5, mewn gwirionedd yn ddefnyddiol. Mae'n golygu bod y gwall ar llinell 32 am 5 safle cymeriad. Felly 1, 2, 3, 4, 5. Dyna, mewn gwirionedd, lle mae'r broblem. A hefyd, hefyd, yn cadw mewn cof yn ystod oriau swyddfa ac yn y cartref, rwy'n lwcus yma. Mae gen i un camgymeriad. Mae'n mynd i fod yn gymharol hawdd i'w datrys. Ond os ydych yn cael sgrîn gyfan lawn o negeseuon gwall llethol, unwaith eto yn sylweddoli y gallai yr un bottommost yn unig yn arwydd o'r un topmost. Felly, bob amser yn mynd ar drywydd i lawr eich bugs o'r brig i lawr oherwydd y gallai dim ond fod yn effaith cadwyn llygad y dydd sy'n cael ei awgrymu oes gennych broblemau ffordd fwy na chi ei wneud mewn gwirionedd. Felly, sut y gallem atgyweiria hon os yw fy nod yw i gynnydd x? >> [Myfyrwyr] Gwneud x byd-eang. Iawn, fel y gallwn wneud x byd-eang. Gadewch i ni gymryd y shortcut fy mod yn rhybuddio amdanynt yn gynharach, ond heck, ni jyst angen ateb cyflym, felly gadewch i 'jyst dweud x int i fyny yma. Mae hynny'n gwneud x byd-eang. Felly nawr brif fynediad ato a cynyddiad wedi cael mynediad iddo, ac felly, gadewch i mi fynd yn ei flaen ac yn llunio hyn yn awr. Gwnewch buggy4, Enter. Ymddangos i lunio awr. Gadewch i ni redeg buggy4. Ac mae'n ymddangos i weithio mewn gwirionedd. Mae hwn yn un o'r pethau hyn sydd wedi gwneud fel y dywedais, nid fel y gwnaf fi, fel yr wyf wedi ei wneud yn unig yma, oherwydd yn gyffredinol, ein rhaglenni yn mynd i gael llawer mwy diddorol a hwy o lawer na hyn, ac os yw eich ateb i broblemau bywyd yn cael ei dim ond rhoi'r holl newidynnau ar frig eich ffeil, yn gyflym iawn mae rhaglenni yn cael dychrynllyd, yn anodd i'w reoli. Mae'n mynd yn anoddach i feddwl am enwau amrywiol newydd, mae'n mynd yn anoddach i ddeall beth newidyn sy'n gwneud beth, ac felly yn gyffredinol, nid yw hyn yn ateb da. Felly, gadewch i ni wneud hyn yn well. Nid ydym am i ddefnyddio newidyn byd-eang yma. Dwi ddim eisiau i gynnydd x, felly gallwn yn amlwg - ar ddiwedd y dydd, mae hyn yn fath o stori wirion oherwydd rydym yn unig yn gwneud hyn - ond os nad oeddwn yn gwybod am y gweithredwr neu nad oeddwn yn gallu ei newid yn yn y prif ei hun, sut y gallai arall y gallaf weithredu Ken dros yma y tro hwn i beidio â ciwb, ond i gynnydd? Sut ydw i'n newid y peth yma? Yeah. [Myfyrwyr] Pass yn x ac yna dychwelyd [Anghlywadwy] >> Iawn, da. Felly pam nad ydw i'n pasio mewn x, ac yna yn hytrach na dychwelyd, pam nad ydw i'n jyst yn dychwelyd x + 1. Bethau Mae ychydig mwy yn gorfod newid yma. Dwi ar y trywydd iawn. Beth arall sydd angen i mi tweak? Rhywun arall. Yeah. [Ymateb y myfyrwyr Anghlywadwy] Angen i mi newid y math dychwelyd i fyny un gynyddran oherwydd nad yw'n ddi-rym. Dim modd Gwag yn cael ei ddychwelyd, ond mae'n amlwg erbyn hyn, mae'n, felly mae angen newid i - >> [myfyrwyr] int. int i fod yn gyson â beth bynnag Im 'mewn gwirionedd yn dychwelyd. Nawr rhywbeth arall yn dal i fod buggy yma. Yeah. [Ymateb y myfyrwyr Anghlywadwy] >> [Malan] Felly, yr wyf angen i gynnydd x? [Ymateb y myfyrwyr Anghlywadwy] >> [Malan] Ah, felly mae angen i basio x. Felly, mae angen i mi wneud hyn yma. >> [Myfyriwr yn Anghlywadwy] [Malan] Felly y prototeip, rhaid i mi newid hyn i fyny yma. Felly, rhaid i hyn fod yn int, mae'n rhaid i hyn fod yn - hmm, yr wyf mewn gwirionedd yn cael bug i lawr yma. Gadewch i ni atgyweiria hon un cyntaf. Beth ddylai hyn mewn gwirionedd fod? Mae'n rhaid i fod yn rhywbeth int. Gallai fod yn x, ond dweud y gwir, os byddwch yn dechrau ffonio eich holl newidynnau x, mae'n mynd i gael llai a llai eglur p'un yw p'un. Felly, gadewch i 'jyst fympwyol ddewis confensiwn enwi gwahanol ar gyfer fy swyddogaethau cynorthwyol, swyddogaethau Rwy'n ysgrifennu. Byddwn yn galw ei fod yn, neu y gellid ei alw - Gadewch i ni alw rhif fod hyd yn oed yn fwy eglur. Felly, yna rhaid i mi ddychwelyd beth bynnag y rhif yw ynghyd ag 1, ac yn awr rhaid i mi newid 1 peth arall i fyny yma ac un peth arall i fyny yma. Beth sydd rhaid i mi newid ar-lein 21 yn gyntaf? >> [Anghlywadwy ymateb y myfyrwyr] [Malan] rhaid i mi neilltuo i x. Ni allaf ond alw cynyddiad (x). Angen i mi gofio yr ateb drwy newid y gwerth x ar yr ochr chwith. A hyd yn oed er bod x yn awr ar y chwith a'r dde, mae hynny'n hollol iawn oherwydd bod yr ochr dde yn cael ei gweithredu yn gyntaf ac yna yn cael ei plopped i mewn i'r peth chwith - x yn yr achos hwn. Ac yna yn olaf, mae hwn yn ateb hawdd nawr. Dylai hyn dim ond cyfateb i'r hyn sydd i lawr isod, rhif int. Felly, mae criw cyfan o newidiadau i swyddogaeth iawn dwp ond mae cynrychiolydd o bethau y byddwn yn fwyfwy awyddus i wneud. Felly gwnewch yn buggy4. Rydw i wedi sgriwio i fyny yn rhywle. O, fy Nuw. Pum camgymeriadau mewn rhaglen 6-lein. Felly beth sydd o'i le ar llinell 18, cymeriad 5? Felly, rhaid i mi ddatgan hynny int,. Gadewch i ni weld. Mae criw cyfan o wallau eraill. O, fy Nuw - 19, 18, 21 - ond eto, gadewch i ni dim ond yn glir y sgrîn, L Rheoli yma, ac ailgynnal Clang. Felly, 5 Problemau mewn gwirionedd dim ond bod 1. Felly nawr gadewch i ni redeg buggy4, Enter. Whew, x wedi cael ei cynyddran yn gywir. Mae pob hawl. Unrhyw gwestiynau am sut i gynnydd rhifau? Yeah. [Gwestiwn myfyrwyr Anghlywadwy] >> Cwestiwn da. Sut mae'n bod y gallaf newid i nifer x a bydd y rhaglen yn gwybod ar unwaith? Unwaith eto, meddyliwch am y peth fel hyn yn tynnu dŵr. Felly, os wyf yn prif Ken yn cynyddiad, a dweud y gwir, nid wyf yn poeni beth Ken galw ei iPad. Nid wyf yn poeni beth y mae'n galw unrhyw beth sydd wedi ei wneud gyda'i weithredu'r swyddogaeth hon. Mae hwn yn gweithredu manylion yr wyf fi, prif, nid oes rhaid i ofalu amdanynt. Ac felly dim ond ei newid yn gyson tu mewn i'r swyddogaeth - rhif yma a rhif yma - cyfan sydd ei angen cyn belled gan fy mod yn ail-grynhoi. Mae'n fath o fel os ydych yn meddwl am lawer ohonom, y rhai ohonoch sydd â thrwyddedau gyrwyr sydd wedi gyrru neu os ydych chi wedi gyrru hyd yn oed mewn car, y rhan fwyaf ohonom ddim syniad sut mae car yn gweithio o dan y cwfl. Ac yn llythrennol, os byddwch yn agor y cwfl, mae'r rhan fwyaf ohonom - gan gynnwys fi - nad ydynt yn mynd i wir yn gwybod beth rydym yn edrych ar, fath o fel efallai y byddwch yn teimlo gyda pethau fel hyn ar hyn o bryd. Ond nid ydym yn wir yn gorfod gofalu sut y mae'r car yn gweithio, Nid oes raid i ni ofalu beth y mae'r holl y wialen a pistons a cheblau tu mewn i'r car yn ei wneud mewn gwirionedd. Felly, rhywbeth fel hyn a alwch nad yw'r piston oes gwahaniaeth yma yn yr achos hwn. Un syniad. Yeah. >> [Gwestiwn myfyrwyr Anghlywadwy] Os oes defnydd mwy o'r hyn o bryd xa amrywiol yn ôl, chi, y rhaglennydd, yn cael eu newid ym mhob man. Neu fe allech chi wneud llythrennol File, Dewislen, ac yna Dod o hyd i, Amnewid - rhywbeth fel 'na - ond yr ydych yn mynd i gael i wneud y newidiadau hynny eich hun. Mae'n rhaid i chi fod yn gyson. >> [Myfyrwyr] Os oes newidynnau lluosog [Anghlywadwy] Mae trefn benodol fel yma, os oedd hyn yn int rhif arall? >> [Myfyrwyr] Cywir. [Malan] Yeah. Gorchymyn yn bwysig pan fyddwch yn galw y swyddogaeth. Felly, os wyf yn galw cynyddiad yma gyda rhywbeth coma rhywbeth, mae 'na mapio uniongyrchol. Y newidyn cyntaf, beth bynnag fe'i gelwir, yn cael ei gwneud copi o'r ddadl gyntaf dros yma. Mae'n ddrwg gennym. Ni ddylai hyn fod yn parenthesis. Mae'r llinellau ail ddadl i fyny gyda'r ail un. Felly gorchymyn, ie, materion. Mae pob hawl. Mae'n ddrwg gennym. Cymerais y ffordd hir i gyrraedd yno. Cwestiynau eraill? Mae pob hawl. Felly, gadewch i ni weld os na allwn beintio darlun o'r hyn sy'n digwydd mewn gwirionedd yma o dan y cwfl, fel petai. Mae hwn yn petryal a allai gynrychioli cof eich cyfrifiadur. Hyd yn oed os nad oes gennych syniad sut y cof yn gweithio neu sut mae RAM, o leiaf yn cymryd yn ganiataol bod gennych sypiau ohono y dyddiau hyn. Rydych chi wedi got megabeit ohono, oes gennych chi gigabeit ohono, a gwyddom o wythnos 0 bod beit yn unig yw hyn? >> [Myfyrwyr] 8 did. 8 did, dde? Hynny 8 sero ac 1. Felly, os yw eich cyfrifiadur yn gig o RAM, 2 gigs o RAM y dyddiau hyn, gennych biliwn neu 2000000000 bytes o cof neu tua 8 biliwn neu 16000000000 ddarnau tu mewn i'ch cyfrifiadur. Yn wahanol i'r enghraifft Willy bach Wooly, nid yw'n gronynnau magnetig fel arfer anymore. Yn gynyddol - mewn gliniaduron o leiaf - mae'n gyrru cyflwr solet, AGCau, mai dim ond yn cael dim rhannau symudol. Mae hyn i gyd electronig. Mae'n holl drydan-seiliedig. Felly meddyliwch am y petryal fel dim ond yn cynrychioli 1 neu 2 gigabeit o gof sydd gennych. Felly mae'n ddarn o gof. Mae byd gwyddoniaeth gyfrifiadurol wedi fath o rhannu oddi darnau o gof i wneud pethau gwahanol. Er enghraifft, os yw hyn yn RAM eich cyfrifiadur, fel yr awgrymwyd gan y petryal yno, mae'n troi allan bod gan gonfensiwn, ar ben eich RAM, fel petai, yn gyffredinol hyn a elwir yn segment testun. Dyna'r 0s a 1s eich bod wedi ei lunio. Felly, pan fyddwn wedi edrych o dan y cwfl ar yr hyn a.out yw, hyn i gyd 0s a 1s, pan fyddwch yn rhedeg rhaglen, rhai 0au ac 1 yn cael eu llwytho oddi wrth eich gyriant caled i mewn i rywbeth a elwir yn RAM, ac yn y RAM maent yn ei roi ar y brig. Yn y cyfamser, mae gennych bethau eraill: ymgychwyn data, uninitialize data. Y 2 ystodau o gof yn cyfeirio at newidynnau byd-eang, nad ydych yn aml yn defnyddio ond weithiau os ydych yn ei wneud, maent yn y pen draw i fyny yno yn ogystal. Yna mae rhai pethau eraill: newidynnau amgylchedd, a ni fyddwn yn treulio llawer o amser ar, ond yna 2 beth pwysig a fydd yn dod yn ôl drwy gydol y semester, simnai a domen. Felly, y rhan fwyaf o gof eich cyfrifiadur yn cael ei gadw wrth redeg rhaglen am rywbeth a elwir yn y pentwr ac yn rhywbeth a elwir yn y domen. Nid ydym yn mynd i siarad am y domen heddiw, ond byddwn yn siarad am y pentwr. Mae'r stac i fod i greu'r gweledol y neuadd fwyta hambyrddau bwyd yn Mather House neu ble bynnag yr ydych yn digwydd bod yn lle y fwyta'r staff neuadd glanhau bob dydd, byddant yn gwneud synnwyr i fyny o'r llawr ar i fyny, ac yn yr un modd, er cof, mae hyn yn syniad o roi rhywbeth ar simnai, rhoi rhywbeth ar pentwr, gan roi rhywbeth ar pentwr. A beth ydyn ni'n ei olygu wrth hyn? Gadewch i ni chwyddo i mewn ar ddim ond hanner isaf y llun, RAM eich cyfrifiadur, i gynnig y canlynol. Mae'n troi allan bod pan fyddwch yn rhedeg rhaglen fel a.out neu helo - beth bynnag y rhaglen yw eich bod wedi ysgrifennu - unwaith eto, y rhai 0au ac 1 yn cael eu llwytho oddi wrth eich gyriant caled, sy'n storio tymor hir, aros yno hyd yn oed pan fyddwch yn tynnu'r plwg, llwytho i mewn RAM. RAM yn gyflymach na 'n anawdd drives - mae'n llai na' n anawdd drives - ond mae'n lle mae rhaglenni byw tra rydych yn eu rhedeg. Felly rydych dwbl cliciwch ar un o'r rhaglen ar Mac neu PC, mae'n lwytho o'r 'n anawdd cathrena i mewn RAM. Cyn gynted ag y mae'n cael ei llwytho i mewn i RAM, y golau 0s a 1s ar y brig ffordd, y segment testun fel y'i gelwir, ond yna cyn gynted ag y bydd eich rhaglen yn cychwyn mewn gwirionedd rhedeg, brif swyddogaeth yn cael ei alw, a phrif, fel yr ydym wedi gweld, yn aml mae newidynnau lleol, ac mae wedi ints a llinynnau a chars ac yn y blaen. Felly, os yw eich rhaglen eich bod wedi ysgrifennu neu'r rhaglen yr ydych wedi clicio dwbl defnyddio rhai newidynnau y tu mewn o brif, maent yn y pen draw ar waelod eich pentwr o gof, fel petai. Mwy concretely, beth mae hyn yn ei olygu mewn gwirionedd? Mae hyn yn unig yn golygu os ydym yn mynd i nifer y bytes o RAM yn eich cyfrifiadur, sylwi y gallai hyn fod yn rhif beit 0, gallai hyn fod yn rhif beit 1, 2, 3, 4, 5, 6, byddai'r holl ffordd i fyny at 2 biliwn ar gael yr holl ffordd i fyny yno ar y brig. Felly, mewn geiriau eraill, pan fyddwn yn siarad am RAM neu gof o ran bytes, 'i jyst yn golygu bod rhywun wedi penderfynu beth i'w rifedi pob un o'r darnau o gof. Felly, pan fydd angen 32 catiau ar gyfer int neu os oes angen 8 did ar gyfer golosg, ble maent yn y pen draw yn y cof? Yn gysyniadol, maent ond yn y pen draw ar waelod y peth hyn a elwir yn y pentwr. Ond beth sy'n ddiddorol yn awr yw pan fydd yn galw brif swyddogaeth - debyg swyddogaeth o'r enw foo, dim ond enw mympwyol - hyn sy'n digwydd yw prif ar waelod y pentwr o gof; foo bellach yn cael ei roi ar ben y brif cof. Felly unrhyw newidynnau lleol sy'n foo wedi dod i ben i fyny math o gysyniadol uwch na'r rhai yn y prif. Os foo yn galw swyddogaeth arall a elwir yn bar, y rhai newidynnau yn y pen draw fan hyn. Os bar yn galw rhywbeth arall, yma, yma, yma. Felly, yr hyn sy'n ddiddorol am redeg rhaglen yw bod wrth i chi alw swyddogaethau ac fel y swyddogaethau hynny galw swyddogaethau ac ynghylch y swyddogaethau hynny galw swyddogaethau, rydych yn adeiladu i fyny y pentwr o swyddogaethau yn y cof. A dim ond unwaith y ffurflenni swyddogaeth yn byddwch yn dechrau cael bod y cof yn ôl. Felly, un o'r ffyrdd hawsaf i redeg allan o gof mewn rhaglen gyfrifiadurol yw ysgrifennu swyddogaethau nad yw byth yn dychwelyd. Felly, er enghraifft, gadewch i ni ddangos gymaint â rhaglen fwriadol bygi. Gadewch i mi fynd yn ei flaen ac nid # cynnwys , int brif (gwag), ac yr wyf i'n mynd i wneud ychydig (2> 1), a oedd yn debyg na fydd byth yn newid arnom ni, a gadewch i mi fynd yn ei flaen yn awr a gwneud printf. A dweud y gwir, mae hynny'n mynd i fod yn llai diddorol yn weledol. Gadewch i ni wneud hyn. Am int i = 0; i> 0 - gadewch i ni wneud camgymeriad hwn - i + +. A gadewch i ni beidio printf yma. Gadewch i ymarfer beth roeddwn yn ei bregethu. Gadewch i ni gael dull yma, corws ddi-rym, a byddwn yn dweud int i, ac yna dw i'n mynd i ddweud printf - na, gadewch i ni wneud hyn yn fwy diddorol. Gadewch i ni mewn gwirionedd yn argraffu unrhyw beth o gwbl. Gadewch i ni dim ond yn gwneud hyn: corws (i). Mae pob hawl. Felly, mae hyn yn buggy oherwydd pam? Rwy'n gwneud hyn i fyny gan fy mod yn mynd am nad yw'r rhaglen yn ei wneud mewn gwirionedd unrhyw beth o ddiddordeb. Ond nid dyna'r nod. Y nod yw i ysgrifennu rhaglen sydd â'r brif swyddogaeth gwneud beth, mae'n debyg? Ffoniwch ei hun. Ac mewn gwirionedd, nid oes angen y ddolen. Gadewch i ni hyd yn oed yn symleiddio'r hyn yn unig er mwyn peidio â cholli golwg ar wir y nam sylfaenol. Galwadau Prif corws i ganu rhai corws, yna yr wyf yn gwneud rhywbeth twp ac roedd gen i corws alwad corws oherwydd fy mod yn cymryd yn ganiataol rhywun arall yn mynd i weithredu efallai, ac yn awr nid yw hyn yn mynd i lunio eto. Angen i mi wneud beth? Fi angen 'r prototeip, cofiwch. Felly, mae angen i mi gael hyd yma corws ddi-rym (int i); Felly, yn awr os byddaf yn mynd i lawr yma - yn wir, gadewch i ni ddefnyddio y ffenestr mwy. Gadewch i ni fynd ymlaen a gwneud corws. Gadewch i ni fynd ymlaen a gwneud corws. Defnyddio dynodwr heb eu datgelu i. O, a oedd yn dwp. Nid oes arnom angen y ddadl. Gadewch i ni dim ond yn gwneud hyn. Yr wyf yn dymuno rydym wedi dechrau fel hyn. Byddai wedi bod yn rhaglen lawer yn haws i ysgrifennu. Mae yna. Nawr gadewch i ni fynd draw i fy ffenestr terfynell, ailgynnal Clang, ac yma yr ydym yn mynd. Dyna oedd yn gyflym iawn. Beth a ddigwyddodd mewn gwirionedd yn unig, er bod? Wel, yn awr byddaf yn ychwanegu y llinell print fel y gallwn weld. Gadewch i mi ddweud printf ("Im 'i mewn yma") - dim newidynnau. Byddwn yn gadael fel hynny. Gadewch i mi ailgynnal wneud. Gadewch i mi ailgynnal corws. Ac ... yn dod ymlaen. Cadwch yn mynd. Fel o'r neilltu, pam nad yw wedi chwalu eto? Mae'r wall yn digwydd yn gyflym super o'r blaen. [Ymateb y myfyrwyr Anghlywadwy] >> Yn union. Felly, mae'n cymryd amser i argraffu, dde? Mae'n cymryd dim ond mwy o waith ar ran y cyfrifiadur. Ac yno y mae hi: Segmentiad fai. Felly sylwi pa mor gyflym rhaglenni rhedeg. Os nad ydych yn argraffu unrhyw beth, yn gyflym super. Ond rydym yn dal i gael y wall oherwydd yr hyn oedd yn digwydd? Os ydych yn meddwl am sut y cof eich cyfrifiadur yn cael ei osod allan, hyn yn digwydd i fod yn brif, ond yma gadewch i 'jyst yn galw hyn yn corws, a gadewch i ni yn galw hyn corws. Ac yn awr os wyf yn gwneud fy estheteg iawn, mae hyn yn unig yn mynd i ddweud corws, corws, corws, corws, corws, corws, corws, nauseum ad, ac yn y pen draw, yr hyn sy'n mynd i ddigwydd? Os yw'r darlun mawr, yn llythrennol, yw hyn, beth yn union sy'n digwydd gysyniadol? Mae'r gor-redeg stac y domen. Neu, yn waeth, eich gor-redeg yn bopeth, gan gynnwys y segment testun, sef y 0au ac 1 sy'n cynrychioli eich rhaglen. Yn fyr, mae hyn yn unig super, super drwg. Mae eich rhaglen wedi sbinio allan o reolaeth. Rydych yn defnyddio cof ffordd fwy na'r bwriad i gyd oherwydd i gamgymeriad gwirion yn yr achos hwn, neu yn yr achos swyddogaeth iawn fwriadol wneud galw ei hun. Yn awr, nid yw hyn yn ddrwg i gyd. Swyddogaethau galw eu hunain mewn gwirionedd wedi bŵer mawr pan fyddwch yn ei ddefnyddio yn gywir. Nid wyf wedi ei ddefnyddio yn gywir yma. Felly, nid yw hyn yn ddrwg i gyd, ond y ffaith nad wyf byth yn rhoi'r gorau i mewn gwirionedd yn galw fy hun yn wendid sylfaenol yma o'r rhaglen hon. Felly, lle rydym yn mynd gyda hyn i gyd? Beth sy'n digwydd mewn gwirionedd? Pan alwaf y swyddogaeth cynyddiad fel yr ydym yn ei wneud yn enghreifftiau hynny, Mae gen i werth fel 1 fy mod yn mynd i mewn Rwy'n pasio mewn copi o rhif 1, felly mae'r canlynol yn digwydd. Gadewch i ni fynd i mewn i'r cynyddiad enghraifft, mae hyn yn guy dde dros yma. Dyma beth sy'n digwydd mewn gwirionedd. Pan fyddaf yn galw ychwanegiad ac yr wyf yn pasio x, ar ffurf lluniau, beth sy'n digwydd yma yw hyn. Os byddaf yn cael y gwerth o 1 storio yma ac yr wyf yn ei galw cynyddiad, a elwir yn awr corws - y iPad yn taflu i ffwrdd i mi yma. Gadewch i ni yn galw hyn cynyddiad, ac nid ydym yn gwybod beth mae hyn swyddogaeth nesaf yn mynd i fod. Felly, beth sy'n digwydd mewn gwirionedd yma yn rhywle yn y brif gen i ddarn o gof sy'n cael ei storio y rhif 1. Pan fyddaf yn galw cynyddiad, rwy'n defnyddio darn arall o gof, ond yn awr yr wyf yn cael y copi o 1. Pan fyddaf yn gynyddran y gwerth, mae hyn yn 2, ond wedyn beth sy'n digwydd cyn gynted ag y ffurflenni cynnydd? Mae'r cof yn unig yn cael eu rhoi yn ôl i'r system weithredu, sy'n golygu bod yr holl eich bod wedi gwneud dim byd defnyddiol. 1 yn a gafodd ei gynnwys yn wreiddiol yn brif yn dal i fod mewn gwirionedd yno. Felly, lle rydym yn mynd â hyn? Mae'n troi allan bod mewn cof gennych y dilyniant gefn-wrth-gefn bytes eich bod yn gallu rhoi pethau i mewn, ac mae'n troi allan bod rydym eisoes wedi gweld rhywbeth sy'n cynnwys rhoi pethau yn ôl i gefn wrth gefn wrth gefn. Beth yw llinyn yn seiliedig ar wythnos 1 ac yn awr yr wythnos 2? Mae'n dim ond casgliad o gymeriadau. Felly, mae'n troi allan yn union fel y gallwch roi rhifau mewn cof, Gall yr un modd i chi roi cymeriadau mewn cof. Ac ar ôl i ni ddechrau cymeriadau rhoi er cof cefn wrth gefn wrth gefn i gefn, mae'n troi allan bod defnyddio y pethau symlaf fel dolen i neu ddolen tra, gallwn ailadrodd o'r chwith i'r dde dros y cymeriadau mewn llinyn ac yn dechrau massaging i mewn i gymeriadau gwahanol yn gyfan gwbl - gallai ddod yn b, gallai ddod yn b c - fel bod y pen draw, gallwn gymryd frawddeg Saesneg sydd mewn gwirionedd yn gwneud synnwyr ac yn trosi pob un o'r 1 llythyr ar y tro trwy gerdded trwy ein cof cyfrifiadur chwith i'r dde i mewn gwirionedd amgryptio. Felly, gadewch i ni gymryd ein pum munud egwyl yma, a phan fyddwn yn dod yn ôl, byddwn yn dechrau y broses hon o sgrialu gwybodaeth. Mae pob hawl. Cyn i ni plymio i mewn i rai crypto ac mae'r rhain yn bethau o'r enw arrays, gadewch i mi oedi ar gyfer unrhyw gwestiynau am fy mod yn teimlo fel Fi 'n sylweddol fath o ddryslyd rhai o'r pynciau. Felly, gadewch i ni atgyweiria awr os gallwn. Rydym yn unig yn sôn am werthoedd dychwelyd, buom yn siarad am dadleuon, a buom yn siarad am y syniad, y byddwn yn dod yn ôl atynt yn yr wythnosau i ddod, o edrych ar cof fel criw cyfan o hyn hambyrddau pentyrru, fel petai, o'r gwaelod i fyny ar, fel bod gan bob hambwrdd sy'n cael ei roi ar y corn yn cynrychioli swyddogaeth sydd wedi cael eu galw ar hyn o bryd. Unrhyw gwestiynau? Gadewch i mi ofyn cwestiwn yma. Gadewch i mi symleiddio'r hyn yn ôl i'r hyn yr oedd cyn i rai o Q ynghynt yr oedd ein & A. Mae'r ffaith bod cynyddiad wedi parenthesis agored, rhif int, ar gau parenthesis - beth mae nifer int ei gynrychioli? [Myfyrwyr] An ddadl. >> Mae dadl. Iawn. Ond beth dadl? [Ymateb y myfyrwyr Anghlywadwy] >> Beth sy'n bod? >> [Myfyrwyr] Rhywbeth eich bod yn llwyddo mewn Iawn, felly rhywbeth y byddwch yn mynd heibio ynddo Ac yn fwy cyffredinol, dim ond y mewnbwn. Os ydych yn ysgrifennu swyddogaeth a diben y swyddogaeth honno mewn bywyd yw gwneud rhywbeth ychydig yn wahanol bob tro y byddwch yn ei ddefnyddio, yna yr unig ffordd i hynny ddigwydd wir yn ymddangos i fod yn ei ddarparu gyda mewnbwn fel y gall wneud rhywbeth gwahanol gyda mewnbwn hwnnw bob tro. Felly, mae angen i chi nodi dau beth pan fydd swyddogaeth yn cymryd mewnbwn. Rhaid i chi benodi enw yr hoffech ei roi i hynny o fewnbwn yn unig ar gyfer eich hwylustod eich hun fel y gallwch gyfeirio ato yn y swyddogaeth yr ydych chi eich hun yn ysgrifennu, fel y gwneuthum yma yn llinell 32. Ond mae angen i chi hefyd nodi ei fath oherwydd bod C yn iaith raglennu mai dim ond ei gwneud yn ofynnol, os ydych am newidyn, rhaid i chi ddweud wrth y cyfrifiadur pa fath o ddata ydyw, i raddau helaeth er mwyn iddo wybod faint o ddarnau i'w dyrannu ar gyfer y newidyn oherwydd gallai fod yn 6 - mae'n ddrwg gennyf, ni fydd yn 6. Gall fod yn 16 oed, gall fod yn 8, gall fod yn 32, hyd yn oed 64, ond y cyfrifiadur angen gwybod. Yn awr, mae'r int ar yr ochr chwith yn cynrychioli beth, ar y llaw arall? [Ymateb y myfyrwyr Anghlywadwy] >> Beth sy'n bod? >> [Myfyrwyr] Math o swyddogaeth. Mae'r math o swyddogaeth ac, yn fwy penodol, y math o allbwn. Hawl. Felly, tra bod y peth yn cromfachau yn cynrychioli ei fewnbwn, os o gwbl, y peth ar y chwith yn cynrychioli ei allbwn. Ac yn yr achos hwn, cynyddiad ymddangos yn dychwelyd yn int, ac felly int yw'r math dychwelyd y swyddogaeth hon. Beth mae'n ei olygu i ddychwelyd? Yn llythrennol, byddwch yn defnyddio'r dychwelyd gair allweddol ac yna os yr hyn yr ydych yn dychwelyd i'r dde y gair allweddol yn gyfanrif, yna mae hynny'n wir yn gyson â'r hyn yr ydym wedi ei addo. Ni allech wneud rhywbeth fel hyn - helo, byd - am fod hynny'n linyn. Yn amlwg, nid yw'n gyfanrif. Felly, yn fyr, mae'r baich yn wirioneddol arnom ni, y rhaglennydd, i fod yn benodol o ran yr hyn rydym yn dychwelyd ac yna mewn gwirionedd yn mynd am ei ddychwelyd. Y cyd-destun yma yn awr yn y cof eich cyfrifiadur yn gigabyte, 2 gigabeit - beth bynnag - efallai ei fod yn fwy, efallai ei bod yn llai, ond y cyfrifiadur yn ystyried ei fod yn cael adrannau gwahanol. Rhywbeth yn mynd i lawr yno, rhywbeth arall yn mynd i fyny yno, pethau gwahanol yn mynd yn y canol, a heddiw rydym yn unig yn dechrau dweud y stori, ond byddwn yn dod yn ôl at hyn dros gyfnod. Am y tro, yr unig ddarn o cof ydym yn wir yn poeni am yn y segment testun oherwydd mai dim ond yn cynrychioli 0s a 1s bod Clang wedi outputted. Felly, pan fyddwch yn rhedeg gorchymyn ar y bysellfwrdd fel a.out neu os ydych cliciwch ddwywaith eicon ar Mac OS neu Windows, eich rhaglen yn cael ei lwytho oddi wrth eich disg galed i mewn i RAM ac mae'n plopped ar frig y RAM eich cyfrifiadur, felly, i siarad. Yn y cyfamser, fel eich rhaglen yn dechrau rhedeg a phrif cael enw yn y rhaglen i chi ysgrifennu neu ysgrifennodd y rhaglen Microsoft neu Apple, unrhyw un o'i newidynnau lleol yn y pen draw i lawr yno ar waelod y cof eich cyfrifiadur. Ond os galwadau prif swyddogaeth arall sydd ei hun wedi newidynnau neu dadleuon, maent yn y pen draw uwch ei ben. Ac os yw'r swyddogaeth honno yn galw rhywbeth, maent yn y pen draw uchod, uwch ei ben, uwch ei ben. A dim ond unwaith y swyddogaeth yn cael ei wneud weithredu yn y pentwr o hambyrddau, fel petai, ddechrau cael is ac yn is. Ac mae hyn yn beth wedyn, yn gryno, yn esbonio pam pan fyddwch yn ffonio ciwb neu os ydych yn ffonio cynyddiad, rydych yn pasio mewn copi o'r gwerth. A beth mae hynny'n ei olygu ddarluniadol yw eich bod yn llythrennol yn ysgrifennu'r rhif 1 mewn rhan arall o'r cof, newid bod 1 i 2 yn achos i fyny un gynyddran neu i gynnydd o 8 yn achos ciwb ac yna taflu bod y cof i ffwrdd cyn gynted ag y cynyddiad neu ffurflenni ciwb swyddogaeth. Cwestiwn. [Myfyrwyr] Ble mae newidynnau byd-eang storio? Newidynnau byd-eang yn cael eu storio yn yr hyn a elwir ar hyn o bryd y data ymgychwyn neu ddata uninitialized, ond y gwahaniaeth yw os oes gennych newidyn fyd-eang ac yr ydych wedi aseinio iddo ar unwaith gwerth gyda'r arwydd hafal, mae'n dod i ben i fyny ar y brig yno, ac os ydych yn unig yn dweud x int; heb unrhyw werth, mae'n dod i ben i fyny ychydig yn is yn RAM dim ond drwy confensiwn. Cwestiynau eraill? Mae pob hawl. Felly, bydd y darlun yn dod yn ôl wrth i ni fynd yn fwy pwerus â'r hyn y gallwn ei wneud gyda'r cyfrifiadur, ond ar hyn o bryd, gadewch i ni gael intro byr i cryptograffeg, fath penodol o cryptograffeg nad yw'n datrys yr holl broblemau y byd ond nid yw'n datrys rhai ohonynt. Yn yr achos yma, mae gennym rywbeth a elwir yn gyfrinach-allweddol cryptograffeg. Secret-allweddol cryptograffeg, fel yr awgryma'r enw, yn deillio ei diogelwch o gyfrinach. Er enghraifft, os oeddech yn ôl yn yr ysgol radd ac roeddech yn pasio llythyr gyfrinach cariad bach i'r bachgen neu ferch rydych yn gwasgu ar, os ydych am i basio y nodyn drwy'r gynulleidfa, mae'n debyg na fyddech yn ysgrifennu nodyn o'r fath yn Saesneg neu beth bynnag yw eich iaith frodorol yn. Yn hytrach, efallai y byddwch yn ei amgryptio neu efallai y byddwch jyst anfon neges destun y dyddiau hyn. Ond efallai y byddwch mewn gwirionedd yn eu trosglwyddo nodyn trwy gydol yr ystafell ddosbarth. Ac i wneud hyn yn ddiogel yn y fath fodd fel bod eich ffrindiau a'r athro ddim yn gwybod beth rydych chi'n ysgrifennu, efallai y byddwch yn dod o hyd i algorithm eithaf syml, ifanc er y gallech fod, i ychydig sgrialu y geiriau. Felly, yn lle ysgrifennu efallai y byddwch yn ysgrifennu b, yn hytrach na b efallai y byddwch yn ysgrifennu c, yn hytrach na c efallai y byddwch yn ysgrifennu d, ac yn y blaen. Neu fe allech chi ddod o hyd i gyfieithiad mwy soffistigedig o lythyrau i lythyrau gwahanol. Ond mae'r dal yn y bachgen neu ferch i bwy rydych chi'n anfon y nodyn hwn angen gwybod rhywbeth, sef yr hyn, yn amlwg? >> [Myfyrwyr] Beth rydych chi'n ei anfon. Beth yw eich cyfrinach yw, fel yr hyn yw bod mapio rhwng a b a c a d's. A yw'n dim ond ychwanegu 1 i bob un o'r llythrennau i fynd o A i B, b i c? A yw'n fwy cymhleth na hynny? Felly, i chi a'ch malwch angen i gael y wybodaeth gyfrinachol, ond mae math o dal-22 yma. Os mai dyma'r tro cyntaf rydych chi'n anfon y llythyr caru trwy'r dosbarth, sut mae hynny'n cael bachgen neu ferch yn mynd i wybod beth yw'r gyfrinach hyd yn oed yn? Felly gyfrinach-allweddol crypto yn datrys yr holl broblemau y byd, ac mae mewn gwirionedd berthynas yma y byddwn yn dod yn ôl i tua diwedd semester. Yn yr un modd peidiwch â rhan fwyaf ohonom yn adnabod rhywun sy'n gweithio, er enghraifft, at Amazon.com, ac eto mae llawer ohonom wedi prynu yn ôl pob tebyg pethau at Amazon.com, ac rydym wedi bod yn dysgu i gymryd yn ganiataol bod y trafodion e-fasnach yn ddiogel. Mae'r URL yn ôl pob tebyg yn dweud https, mae efallai yn eicon clo bach gwirion yn rhywle, mae rhyw fath o cryptograffeg sicrhau eich gwybodaeth cerdyn credyd rhyngoch chi a Amazon.com. Ac eto os cryptograffeg yn golygu gwybod rhywfaint o gyfrinach ac eto nid wyf yn gwybod unrhyw un yn Amazon ac nid wyf wedi trefnu sicr unrhyw fath o gyfrinach gyda rhywun yn Amazon, sut mae fy cyfrifiadur neu fy porwr yn gwneud hyn? Mae'n troi allan mae mathau eraill o cryptograffeg yn gyfan gwbl yn datrys y broblem honno. Ond ar gyfer heddiw, byddwn yn canolbwyntio ar yr un syml lle gallwch drefnu ymlaen llaw i adnabod rhai gyfrinach fel +1 neu rhywfaint o waith mapio rhwng a b yn. Ac mae'r broses o cryptograffeg yn gyffredinol yn cynnwys hyn. Mae gennych rhywfaint o destun plaen, a ddangosir yma ar y chwith, ydych yn rhedeg trwy ryw fath o algorithm neu weithdrefn ar gyfer amgryptio hynny - efallai mai dim ond yn dod b, b yn dod yn c - ac yna byddwch yn darfod i fyny ag ciphertext. Yn y cyfamser, unwaith y bydd eich mathru yn derbyn y nodyn hwn gyfrinach, ganddo ef neu hi wedyn dadgriptio yn gyffredinol yn gwrthdroi'r algorithm er mwyn mynd yn ôl i'r testun plaen. Mae ymgnawdoliadau corfforol o hyn. Er enghraifft, mae hwn yn gylch gyfrinach datgodiwr bach, ac mae hyn yn gylch yn yr ystyr bod yna ddau deialau yma. Ar gyrion y tu allan i'r peth, mae llythrennau A drwy Z, er eu bod mewn trefn ar hap, ac ar y tu mewn, mae mewn gwirionedd rhai rhifau fel bod â'r fodrwy hon, gallwch fath o droi'r tu allan ond nid y tu mewn er i linell i fyny rhifau gyda llythrennau. O ffilm o'r enw Stori Nadolig, byddwch yn gweld bod llawer o Ralphie oedd mor awyddus i chyfrif i maes beth Orphan Annie Little neges gyfrinach oedd iddo oedd wedi eu cyfleu, mi gredaf, yn y ffurf negeseuon rhifol ar focs grawnfwyd ac bu'n rhaid i chi gronni holl gardiau bach a ddaeth yn y blwch grawnfwyd, rhaid i chi bost i mewn, bu'n rhaid i chi fynd yn ôl y cylch cudd datgodiwr fel y gallwch o'r diwedd chyfrif i maes beth y mapio rhwng llythrennau a rhifau neu lythyrau a llythyrau. Sut y gall mewn cyfrifiadur rydym yn mynd ati i weithredu neu cynrychioli pethau fel hyn? Mae angen ffordd o fynegi ein hunain ychydig yn fwy hyblyg na'n newidynnau hyd yn hyn wedi caniatáu. Rydym wedi cael ints, rydym wedi cael chars, rydym wedi cael fflotiau a dyblau a rhai eraill, ond y rhai yn ddarnau unigol o gof nad ydynt yn wir yn ein galluogi i fynegi pethau fel geiriau a brawddegau ac ymadroddion. Yn wir, rydym wedi galw llinynnau pethau o'r fath, ond rydym yn addo bod hyn yn wir dim ond symleiddio yn y llyfrgell CS50 ein bod yn bwriadu bilio yn ôl. Ac felly gadewch i ni ddechrau gwneud hynny yma. Gadewch i mi fynd yn ei flaen ac yn agor i fyny ffeil - pob un o'r ffeiliau hyn ar gael, fel arfer, ar-lein - array.c elwir yn i ddatrys problem nad yw'n gysylltiedig llinynnau ond bod yn rhoi darlun yma o sut y gallem ddefnyddio rhywbeth o'r enw arae. Mae amrywiaeth yn fath data. Mae'n fath o amrywiol o fath sydd fathau o ddata lluosog llai y tu mewn ohono gefn wrth gefn wrth gefn wrth gefn. Felly, er enghraifft, os oeddem am ysgrifennu rhaglen fach sy'n rhoi i chi eich cyfartaledd cwis am gwrs fel 50 sy'n Mae 2 cwisiau, gallech yn ddigon rhwydd ysgrifennu hwn hyd yn oed rhaglen yn seiliedig ar rai o ddeunydd yr wythnos ddiwethaf drwy ddefnyddio GetInt a chwpl o newidynnau: int quiz1, int quiz2. Ac mae'n eithaf syml. Mae'n efallai 10, 20 linellau o god max i weithredu rhaglen sy'n gofyn y defnyddiwr ar gyfer 2 sgoriau cwis ac yna computes eu cyfartaledd drwy eu hychwanegu at ei gilydd, gan rannu â 2, ac yna argraffu'r canlyniadau. Gallem yn ôl pob tebyg yn gwneud hynny 'n bert yn barod yn awr ar ôl rhyw nifer o funudau. Ond y broblem yw bod debyg bod 50 wedi cael 3 neu 4 cwisiau. Tybiwch eich bod am ddefnyddio'r un rhaglen ar gyfer dosbarth a oedd yn wythnosol cwisiau. Meddyliwch am ddosbarth sydd wedi wythnosol cwisiau. Os oes 16 neu felly wythnos mewn semester, nawr eich bod gennym 16 newidyn: int quiz1, int quiz2, int quiz3, int quiz4. Cyn gynted ag y byddwch yn dechrau gweld y diswyddo, mae hyn yn copïo a gludo o god, dylai ddechrau i wneud i chi yn dymuno bod yn ffordd well. Ac diolch byth, oherwydd araeau mae. Felly, gadewch i ni wneud hyn. Yn gyntaf, gadewch i mi gyflwyno yn beth syml iawn nad ydym wedi defnyddio hyd yn hyn, ond byddwch yn gweld ei fod o bryd i'w gilydd mewn cod. Mae hyn yn beth a elwir yn gyffredinol yn gyson. Felly mae'n gyson yn yr ystyr na fydd hyn fyth yn newid gwerth. Mae'r confensiwn dynol wrth greu cyson yw defnyddio pob llythyr cyfalaf yn unig fel ei fod yn wir yn sefyll allan yn eich cod, a'r gair allweddol arbennig yr ydych yn eu defnyddio yn C # yn cael ei ddiffinio. Felly, byddwn yn dweud # diffinio, yna ofod, yna bydd y gair yr ydych eisiau ei ddefnyddio ar gyfer enw'r cyson yn ac yna gwerth y cysonyn. Sylwi ar hyn yn wahanol i neilltuo rhywbeth i newidyn. Does dim hafalnod, does dim hanner colon. Mae hyn yn beth a elwir yn gyffredinol fel cyfarwyddeb Preprocessor, ond mwy am hynny rywbryd arall. Am y tro, mae hyn yn creu gwerth digyfnewid a elwir yn Cwisiau eu gwerth gwirioneddol rhifol yw 2. Felly, yn unrhyw le byddwch yn gweld Cwisiau, posau, cwisiau drwy gydol y ffeil, dim ond y rhif 2. Os byddaf yn edrych ar y prif awr, gadewch i ni weld sut mae hyn yn gweithio. Yn gyntaf mae'n edrych ychydig yn cryptic, ond mae'n holl bethau o wythnos 1. Gofynnwch i'r defnyddiwr ar gyfer graddau. Sut rydym yn gwneud hyn? Yn llinell 22 - mae hyn yn wir y rhan juicy - Yr wyf yn datgan fflôt ond nid dim ond float sengl. Rwy'n datgan, yn hytrach, amrywiaeth o fel y bo'r angen-pwynt gwerthoedd. Y newidyn yn mynd i gael ei alw graddau, fel a awgrymir yma, ond yr unig ddarn o gystrawen newydd, yna mae hyn cromfachau sgwâr. Mae'r ffaith fy mod i wedi dweud graddau arnofio ac yna braced agored ac yna rhif - sylwi os yw hyn yn gyson yn unig yw hwn fel y gwnaethom hyn - mae hyn yn golygu, "Hey gyfrifiadurol, rhowch fi 2 fflotiau a gadewch i ni eu galw gyda'i gilydd graddau." Mae hyn yn cyferbynnu yn broses llawer mwy diflas fel hyn: Gradd 1 arnofio; arnofio Gradd 2, ac yn y blaen. Felly mae amrywiaeth yn ein galluogi i weithredu'r syniad hwn ond yn llawer llai messily, yn y fath fodd y gallwn ysgrifennu 1 llinell o god yn hytrach na, dyweder, 16 am semester o 16 wythnos. Doeddwn i ddim eisiau i galed-god 2 oherwydd os ydych yn meddwl am hyn nawr yn rhesymegol, Mae'n debyg y flwyddyn nesaf CS50 newidiadau i 3 cwisiau yn lle hynny a chefais y rhif 2 yma, cefais y rhif 2 yma, Cefais y rhif 2 yma, mae nifer 2 yma. Mae'n dod yn iawn 'n faith ac yn hawdd iawn i sgriw i fyny ac i newid yn ddamweiniol 1 gwerth i 3 ac yn colli rhywfaint o werth arall o 2. Felly, yr wyf i'n mynd i lle haniaethol hyn i ffwrdd ac yn defnyddio hyn yn gyson, yn byth fel y mae'r enw'n awgrymu, newidiadau. Ac yn awr ni waeth a oes gennym wahanol cwisiau eleni na'r flwyddyn nesaf, Fi jyst rhaid ei newid mewn un lle i fyny yma ar y brig. Felly dyna i gyd yn gyson yn. Yn y cyfamser, y nodwedd cysyniadol newydd yw y bydd o arae. Felly y cromfachau sgwâr yn rhoi fy hyn yn arnofion llawer ac yn gadael i mi ar y cyd eu galw graddau yma. Felly nawr gadewch i ni weld yr hyn yr wyf i'n mynd i wneud. Yma yn llinell 24 yw'r ddechrau gyfer dolen. Mae hyn yn wir ffansi ddim. Mae'n dim ond gan ddefnyddio cwisiau yn hytrach na nifer hard-coded. Ond does dim byd deallusol gwahanol yno ers yr wythnos ddiwethaf. Mae hyn yn unig printf, felly printf ("Cwis d #% d% o:") oherwydd Fi jyst eisiau i argraffu yn rhoi i mi cwis rhif 1 o 2 ac yna 2 o 2. Felly, mae hyn yn beth yn unig esthetig. Ond mae'r rhan ddiddorol yn awr yw yn llinell 27. Er mwyn i chi lenwi un o'r ddau bachau gyda gwerth fel y bo'r angen-pwynt, chi eto yn defnyddio cromfachau sgwâr. Yn yr achos hwn, rwy'n ei ddefnyddio i oherwydd hyn ar gyfer dolen wedi dechrau gyda gyfartal i pa werth, mae'n debyg? [Myfyrwyr] 0. >> [Malan] 0. Felly, ar y fersiwn gyntaf y ddolen, mae fel pe Ysgrifennais hyn mewn cod, ond ar yr ail ailadroddiad y ddolen, mae fel un yn ysgrifennu hyn yn fy cod. Ond mae'r ffaith fy mod i'n defnyddio newidyn yn berffaith oherwydd, fel yr awgryma'r enw, mae'n amrywio ei werth ar bob iteriad, felly rwy'n llenwi'r amrywiaeth un man ar y tro. Beth mae hyn yn amrywiaeth yn edrych? Y rheswm Tynnais y petryal syml super ar y sgrin yma cyn Am y rheswm hwn. Mae amrywiaeth yn unig yw darn o gof ac yna darn arall o gof ddilyn gan talp arall o'r cof ac yn y blaen. Felly, os bydd fy amrywiaeth o faint 2 yn yr achos yma, y ​​cyfan y byddwn yn ei wneud trwy deipio yn fy sgoriau cwis fel sydd yma - Ges i 100 ar yr un yma ac yna fe ges i 99 ar yr un yma - yna efallai na fydd y cof hyd yn oed yn cael ei ddefnyddio oherwydd fy mod wedi gofyn dim ond y cyfrifiadur ar gyfer amrywiaeth o faint 2. Mae'r rhai sgwariau yn dal i fod yno, dde? Byddwch yn dal yn cael 2 gigabeit o RAM hyd yn oed os ydych yn unig yn gofyn am 2 fflotiau. Felly, y syniad y tu ôl i arae yw bod y cyfrifiadur yn unig yn cymryd darn o gof ac yna dosrannu ddarnau llai gefn wrth gefn wrth gefn wrth gefn. Ac felly dyna i gyd arae yn. Mae'n darn cyffiniol o tu mewn cof y gall chi roi pethau. Mae hyn yn digwydd wedyn gwneud dim ond rhai rhifyddeg ddiflas. Os byddaf yn sgrolio i lawr yma, dyma lle byddaf wedyn yn ailadrodd dros y rhesi. Rwy'n dod o hyd y Crynodeb o'r holl werthoedd yn yr amrywiaeth, ac yna yr wyf yn defnyddio'r swyddogaeth rownd yma i mewn gwirionedd wneud y swm wedi'i rannu gan cwisiau. Ond gadewch i mi chwifio fy llaw ar hynny fel math o rifyddeg ddigon am y tro. Ond y cyfan a yn ei wneud i mi yn y pen draw yn cyfrifiadurol ar gyfartaledd. Felly, cwis cyntaf yn ogystal â chwis 2 wedi'i rannu gan 2 ac yna ei brintio fel int. Ond gadewch i ni bellach yn newid i enghraifft wahanol o'r enw string1, sy'n rhoi darlun tebyg ond llinynnau defnyddio. Gadewch i mi fynd yn ei flaen a symleiddio hyn am ychydig funud. Maddau y pant ar hyn o bryd. Hysbysiad llinell 19 o'r enghraifft hon, byddaf yn cael llinyn gan y defnyddiwr. Ond sylwi ar yr hyn yr wyf i'n ei wneud nesaf mewn llinellau 22 ymlaen. Im 'mewn gwirionedd ailadrodd o hyd i i - ac mae hyn yn gamp newydd - strlen, hyd llinyn. Mae hon yn swyddogaeth a ddaw gyda C, os byddwch yn mynd heibio ei fod yn llinyn, mae'n dweud wrthych faint o gymeriadau yn y llinyn. Dyna i gyd. Ac mae'r ffaith ei fod yn strlen yn hytrach na hyd llinyn yn unig oherwydd ei fod yn fwy cryno. Ddeng mlynedd ar hugain yn ôl, pobl yn hoffi ysgrifennu pethau mor gryno ag y bo modd, felly rydym wedi cadw y confensiwn yma. i + + yn unig yn golygu cynnydd i ym mhob fersiwn. Ac yn awr sylwi ar hyn, sydd yn ddiddorol iawn. Yn llinell 24, yr wyf yn dweud, "Computer, yn rhoi i mi cymeriad, 8 did, a galw yn c." Ond beth yw hyn ar yr ochr dde ei ddweud? Yn Saesneg, beth mae hynny'n ei gynrychioli? [Myfyrwyr] Y nod cyntaf yn y rhesi. Yn union. Rhowch i mi y cymeriad cyntaf yn y rhesi. Neu, yn fwy cyffredinol, yn rhoi i mi y cymeriad ith yn y rhesi. Ac yn sylweddoli ei bod yn bwysig nawr bod fel gwyddonwyr cyfrifiadurol, rydym yn mynd ati i gyfrif o 0. Nid oes gennych y disgresiwn yn awr i ddechrau gwneud hyn. Nawr mae'n rhaid i chi ymddwyn yn unol â'r disgwyliadau y cyfrifiadur a chyfrif o 0 oherwydd [0] yn mynd i fod y nod cyntaf mewn llinyn, [1] yn mynd i fod yr ail, [2] yn mynd i fod y trydydd, ac yn y blaen. Felly y rhaglen hon, os byddaf yn llunio ei, mae hyn eto yn string1, felly gwnewch yn string1, ac yn awr yr wyf wedi rhedeg string1 yn fy ffenestr terfynell. Mae'n aros am fewnbwn, felly dwi'n mynd i deipio David, Mewnbynnu, ac yn awr y bydd yn argraffu David gyd ar linellau gwahanol oherwydd rybudd hyn rwy'n ei wneud. Rwy'n argraffu un cymeriad ar y tro. Ni fyddwn yn manylu heddiw ar hyn, ond yr wyf dileu eiliad yn ôl y gwiriad hwn yma. Mae'n troi allan os yw'r defnyddiwr yn camymddwyn,, gwrthwynebus, neu ddryslyd yn unig alli 'n weithredol yn methu â rhoi cyfres o gryn hyd. Os ydych yn taro'r allweddol anghywir ar y bysellfwrdd, efallai y byddwch yn rhoi unrhyw llinyn o gwbl, neu os ydych yn faleisus, efallai y byddwch yn ceisio bastio mewn gwerth gigabyte o traethawd i lenwi'r llinyn, ac os bydd y cyfrifiadur yn rhedeg allan o gof, mae'n troi allan ein bod ni'n mynd i fynd yn ôl y gwerth arbennig o'r enw null. Felly, ar hyn o bryd, dim ond yn gwybod bod yna y gwerth arbennig o'r enw NULL fydd yn ein galluogi i wirio pan fyddwn ni'n allan o gof, ymysg pethau eraill. Ond os wyf yn agor yn awr string2, sylwi ar un gwahaniaeth yma. Sylwi ar un gwahaniaeth yma gyda string2. Gyda string2, hyn ar gyfer dolen yn ychydig yn wahanol. Gadewch i mi ddileu'r NULLs fel y gallwn siarad am y tro arall. Beth sy'n wahanol am y ddolen ar gyfer y tro hwn? Gallaf fynd yn ôl at yr enghraifft flaenorol. Felly, dyna fersiwn 2, mae hyn yn fersiwn 1. 1, 2. 1, 2. Mae'r alwad strlen yw lle? Mae yn y rhan gyntaf y ddolen i. Unrhyw syniadau ynghylch pam yr wyf i'n gwneud hyn? Yeah. [Myfyrwyr] Felly, nad ydych yn galw swyddogaeth bob tro. [Malan] Felly nid ydym yn galw swyddogaeth bob tro. Yn union. Dwyn i gof o ddolenni am eu bod yn syml super unwaith y byddwch math o ddeall bod hyn yn y initialization, cyflwr, ac am y diweddariad. Y broblem yw bod y cyflwr yn digwydd ar bob fersiwn o'r ddolen. Ac felly yn yr enghraifft yma, beth sy'n ddrwg am y ffaith bod hyn yn fy nghyflwr? [Myfyrwyr] Rydych yn ffonio strlen. [Malan] Rydych chi'n ffonio strlen eto ac eto ac eto. Ond unwaith y byddaf wedi teipio yn David, hyd y llinyn yw 5, ac nid yw'n mynd i newid ar bob fersiwn o'r ddolen oherwydd bod y llinyn yn dal i fod D-a-v-i-d. Felly, mae hwn yn awgrym ar yr hyn sy'n mynd i fod yn syniad gynyddol bwysig a elwir yn penderfyniad dylunio lle nid yn unig yn gwneud y cyfrifiadur wneud gwaith diangen. Yn union fel cipolwg o pset2, pset2 yn y rhifyn safonol yn mynd i herio chi i mewn gwirionedd yn gweithredu rhai nifer o seifferau, ryw nifer o algorithmau encryption, fel y gallwch chi'ch dau amgryptio a negeseuon cudd dadgryptio yn debyg iawn i'r Ralphie 1 ddatgodio yno. Yn y rhifyn haciwr o pset2, rydym yn mynd i fynd ychydig ymhellach. Rydym yn mynd i law i chi ffeil o system gyfrifiadurol gwirioneddol sy'n cynnwys criw cyfan o enwau defnyddwyr a chyfrineiriau amgryptio gwirioneddol, a'r her ar gyfer y rhifyn haciwr yn mynd i fod i fynd i'r afael hynny cyfrineiriau a chyfrif i maes beth cryptograffeg neu beth gyfrinach ei ddefnyddio i mewn gwirionedd yn cynhyrchu cyfrineiriau hynny. Ac rydym yn mynd i wneud hyn drwy ddefnyddio nodwedd newydd yma o C y byddaf yn rhoi i chi dim ond demo o adwaenir fel gorchymyn-lein dadleuon. Mae'n troi allan, gan y gall rhai ohonoch wedi gweld yn adran honno neu mewn gwerslyfrau, Nid yw bob amser yn brif rhaid i fod yn ddi-rym mewn cromfachau. Mae'n troi allan y gall prif hefyd yn cael ei ysgrifennu fel hyn, gyda dau dadleuon, argc a argv, lle argc yw nifer y geiriau eich bod yn teipio ar ôl enw'r rhaglen ar eich llinell orchymyn ac argv yn y geiriau eu hunain. Ac fel y cromfachau sgwâr yno yn awgrymu, argv yn ymddangos yn arae. Mae'n mynd i fod yn llinyn ar ôl cyfres ar ôl llinyn yn y cof. Felly, beth ydym yn mynd i fod yn gallu ei wneud gan ddechrau gyda pset 2 yn rhywbeth fel hyn. Os byddaf yn gwneud argv1, sy'n enghraifft byddwn yn dod yn ôl i ddydd Llun, a'i redeg, sylwi nad yw'n ymddangos i wneud unrhyw beth eto. 'I jyst yn argraffu ei enw ei hun. Ond os ydw i'n dweud ffarwel dosbarth, rhybudd bod y rhaglen hon ymddangos yn ailadrodd dros bob un o'r geiriau a deipiwyd wrth yr anogwr. A'r modd y byddwn yn cael mynediad i eiriau fod y defnyddiwr wedi teipio wrth yr anogwr yw drwy newid prif dechrau y penwythnos hwn gan int brif (gwag) i int brif (argc, argv) ac felly bydd yn cael ei eni gorchymyn-lein dadleuon. Ac ar ôl i chi ca 'n sylweddol soffistigedig ar hyn, byddwch yn gallu ysgrifennu rhaglenni gwirioneddol trippy fel yr un yma yma, sy'n mynd y tu hwnt rhai o'r swyddogaethau ydym wedi ei wneud hyd yn hyn, ond i gyd yn eithaf pwerus. Felly, byddwn yn gadael hyn â hyn ar y sgrin, a byddwn yn eich gweld ar ddydd Llun. [CS50.TV]